:root{--paper: #f4f0e8;--ink: #766c62;--line: #b9aa9a;--warm: #d9cec0;--dark: #635a51;font-family:Georgia,Times New Roman,serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--paper);overflow-x:hidden}button,input{font:inherit}.page{min-height:100svh;position:relative;display:flex;align-items:center;justify-content:center;padding:70px 22px}.page:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 30% 10%,rgba(255,255,255,.55),transparent 30%),linear-gradient(90deg,rgba(90,70,50,.03) 1px,transparent 1px);background-size:auto,6px 6px;mix-blend-mode:multiply;opacity:.35}.hero{padding-top:54px;overflow:hidden}.names{position:absolute;top:42px;left:0;right:0;z-index:3;text-align:center;font-family:Didot,"Bodoni 72",Georgia,serif;font-size:clamp(42px,11vw,76px);font-style:italic;letter-spacing:-2px;color:#786f66}.subhead{position:absolute;top:125px;left:0;right:0;z-index:3;text-align:center;font-size:12px;letter-spacing:2.8px;text-transform:uppercase}.tray{width:min(78vw,390px);aspect-ratio:1.02;border-radius:48% 52% 46% 54%/51% 49% 52% 48%;position:relative;margin-top:35px;background:radial-gradient(ellipse at 48% 42%,#eee8dd 0,#eee8dd 56%,#d9d0c1,#d9d0c1 60%,#f8f4ec 61%,#f8f4ec 64%,#a99e90,#a99e90 66%,#e6dfd4 68%,#e6dfd4 71%,#b6aa9c,#b6aa9c 73%,#f7f4ed 75%);box-shadow:inset 0 0 25px #4d3e2d1f,0 18px 45px #46382a14;transform:rotate(-5deg)}.tray:before{content:"";position:absolute;top:7%;right:7%;bottom:7%;left:7%;border:1px solid rgba(120,108,91,.55);border-radius:inherit;box-shadow:0 0 0 3px #ffffff80 inset,0 0 0 5px #7e6f5e2e inset}.strip{position:absolute;right:11%;top:17%;z-index:2;width:26%;padding:5px;background:#eee7dc;box-shadow:0 5px 14px #32281e2e;transform:rotate(2deg)}.strip img,.strip-splash img{display:block;width:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);margin-bottom:4px}.strip img{aspect-ratio:1.22}.strip img:last-child,.strip-splash img:last-child{margin-bottom:0}.scrollcue{position:absolute;bottom:32px;text-align:center;font-size:10px;letter-spacing:2px;text-transform:uppercase}.scrollcue:after{content:"↓";display:block;margin-top:7px;font-size:18px}.save{padding:0;display:grid;place-items:center}.save-card{width:min(88vw,430px);aspect-ratio:.72;position:relative;display:flex;align-items:center;justify-content:center;padding:44px 28px;text-align:center;background:#f5f1e9;border:1px solid #c9bcab;box-shadow:0 18px 40px #50443614}.save-card:before,.save-card:after{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border:1px solid rgba(145,128,106,.5);border-radius:46% 54% 48% 52%/43% 47% 53% 57%;transform:rotate(2deg)}.save-card:after{top:25px;right:25px;bottom:25px;left:25px;transform:rotate(-2deg);opacity:.55}.save-main{position:relative;z-index:2}.save-title{font-family:Didot,"Bodoni 72",Georgia,serif;font-style:italic;font-size:clamp(54px,16vw,85px);line-height:.82;color:#6b6158}.save-date{margin-top:20px;font-size:20px;letter-spacing:2px}.details{display:block;padding:70px 26px 60px;text-align:center}.eyebrow{margin-bottom:13px;font-size:12px;letter-spacing:2px;text-transform:uppercase}.venue{font-family:Didot,"Bodoni 72",Georgia,serif;font-style:italic;font-size:clamp(38px,10vw,58px);line-height:.95;color:#776d64}.date-line{margin:11px 0 24px;font-size:18px}.car{width:120px;height:68px;position:relative;margin:10px auto 24px}.car:before{content:"";position:absolute;left:16px;right:15px;top:22px;height:26px;border:2px solid #84786d;border-radius:42% 50% 28% 25%;transform:skew(-10deg)}.car:after{content:"♡";position:absolute;left:42px;top:7px;font-size:48px;color:#84786d;transform:rotate(-8deg)}.wheel{position:absolute;bottom:8px;width:14px;height:14px;border:2px solid #84786d;border-radius:50%}.wheel.a{left:24px}.wheel.b{right:23px}.script{font-family:Didot,"Bodoni 72",Georgia,serif;font-style:italic;font-size:30px}.small{font-size:14px}.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-top:7px;padding:12px 24px;border:0;border-radius:18px;background:#e5ddd2;color:#74695f;font-size:12px;letter-spacing:1px;text-transform:uppercase;cursor:pointer}.button:hover{filter:brightness(.97)}.button:focus-visible,.submit:focus-visible,.splash:focus-visible{outline:2px solid #74695f;outline-offset:4px}.countdown{display:flex;gap:14px;justify-content:center;margin-top:22px}.countdown div{min-width:58px}.countdown b{font-family:Didot,Georgia,serif;font-size:30px;font-weight:400;color:#6e6258}.countdown span{display:block;margin-top:3px;font-size:9px;letter-spacing:1px;text-transform:uppercase}.before-label{margin-top:5px;letter-spacing:1px;text-transform:uppercase}.form-page{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:45px 24px}.form{width:min(92vw,520px);text-align:center}.monogram{width:56px;height:56px;display:grid;place-items:center;margin:0 auto 20px;border:1px solid #948678;border-radius:50%;font-family:Didot,Georgia,serif;font-style:italic;font-size:21px}.form h2{font-size:19px;font-weight:400;letter-spacing:2px;text-transform:uppercase}.form p{max-width:430px;margin:10px auto 22px;font-size:13px;line-height:1.5}.field{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.field.one{grid-template-columns:1fr}.form input{width:100%;padding:13px 2px;border:0;border-bottom:1px solid #b9ada0;border-radius:0;outline:none;background:transparent;color:#62594f;font-size:15px}.form input:focus{border-bottom-color:#6f655b}.form input::placeholder{color:#9d9184}.submit{margin-top:25px;padding:11px 34px;border:1px solid #9e9183;border-radius:0;background:transparent;color:#6f655b;letter-spacing:2px;text-transform:uppercase;cursor:pointer}.toast{position:fixed;left:50%;bottom:20px;z-index:1000;padding:10px 16px;border-radius:20px;background:#6f655b;color:#fff;font-size:12px;opacity:0;transform:translate(-50%) translateY(30px);transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.hero .names,.hero .subhead,.hero .tray,.hero .scrollcue{will-change:transform,opacity}.hero .names{opacity:0;transform:translateY(-16px)}.hero .subhead{opacity:0;transform:translateY(-8px)}.hero .tray{opacity:0;transform:rotate(-7deg) scale(.93) translateY(18px)}.hero .strip{clip-path:inset(0 0 100% 0);transform:rotate(2deg) translateY(-28px)}.hero .scrollcue{opacity:0;transform:translateY(8px)}.hero .scrollcue:after{animation:cueBounce 1.45s ease-in-out 2.45s infinite}@keyframes introTitle{to{opacity:1;transform:none}}@keyframes introFade{to{opacity:1;transform:none}}@keyframes introTray{to{opacity:1;transform:rotate(-5deg) scale(1) translateY(0)}}@keyframes stripDrop{to{clip-path:inset(0);transform:rotate(2deg) translateY(0)}}@keyframes cueBounce{50%{transform:translateY(5px)}}.reveal{opacity:0;transform:translateY(36px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform 1s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:none}.save-card.reveal{transform:translateY(55px) rotate(-1.7deg) scale(.965);transition-duration:1.05s}.save-card.reveal.in{transform:translateY(0) rotate(0) scale(1)}.details .reveal:nth-child(2){transition-delay:.08s}.details .reveal:nth-child(3){transition-delay:.15s}.details .reveal:nth-child(4){transition-delay:.22s}.details .reveal:nth-child(5){transition-delay:.29s}.details .reveal:nth-child(6){transition-delay:.34s}.details .reveal:nth-child(7){transition-delay:.39s}.details .reveal:nth-child(8){transition-delay:.44s}.details .reveal:nth-child(9){transition-delay:.48s}.form.reveal{transform:translateY(28px);transition-duration:.8s}.form.reveal.in{transform:none}html.splash-lock,html.splash-lock body{overflow:hidden}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:grid;place-items:center;background:#f7f3ec;color:#736960;cursor:pointer}.splash-inner{width:min(92vw,430px);padding:34px 22px 26px;text-align:center}.sent{margin-bottom:2px;font-size:10px;letter-spacing:1.4px;text-transform:uppercase}.splash-names{margin-bottom:26px;font-family:"Bodoni 72",Didot,Times New Roman,serif;font-style:italic;font-size:clamp(46px,13vw,68px);line-height:.82;color:#766d65}.book-stage{display:grid;place-items:center;perspective:1100px}.book{width:min(86vw,350px);aspect-ratio:1.08;position:relative;padding:10px;border:1px solid #9e9181;background:linear-gradient(145deg,#e9e1d5,#cfc3b4 48%,#ece6dc 50%,#b8ab9d);box-shadow:0 18px 42px #382d2224,inset 0 0 0 2px #ffffff8c}.book:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid rgba(111,96,79,.65);box-shadow:inset 0 0 0 3px #f5f0e873;pointer-events:none}.book:after{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border:1px solid rgba(128,112,92,.5);pointer-events:none}.left-bay,.right-bay{position:absolute;top:27px;bottom:27px;background:#d9d0c4;border:1px solid rgba(111,95,79,.55)}.left-bay{left:27px;width:45%;padding:10px}.right-bay{right:27px;width:37%;overflow:hidden}.invite-cover{position:absolute;top:10px;right:10px;bottom:10px;left:10px;z-index:4;display:grid;place-items:center;padding:12px;border:1px solid #b7aa9a;background:#f7f3eb;box-shadow:0 5px 10px #32271e17;transform-origin:left center;transform-style:preserve-3d;backface-visibility:hidden}.invite-cover:before{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border:1px solid #c3b6a7}.cover-copy{position:relative;z-index:2;font-size:12px;letter-spacing:1px;line-height:1.4;text-align:center;text-transform:uppercase}.orn{display:block;margin:6px 0;color:#958878;font-size:15px;letter-spacing:0}.knob{width:28px;height:28px;margin:18px auto 0;border:1px solid #8e8275;border-radius:50%;background:radial-gradient(circle at 37% 35%,#f4efe6 0,#f4efe6 10%,#a89b8b 18%,#eee8de 35%,#8d8173 48%,#d9d1c6 62%,#82776b 68%,#e9e3da 78%);box-shadow:0 2px 3px #00000026}.strip-splash{position:absolute;top:-330px;left:17%;z-index:3;width:66%;padding:5px;visibility:hidden;opacity:0;background:#eee7dc;box-shadow:0 6px 10px #2a221c29}.strip-splash img{aspect-ratio:1.15}.tap-label{margin-top:20px;font-size:10px;letter-spacing:2px;text-transform:uppercase;opacity:.78}.tap-label:after{content:"";display:inline-block;width:5px;height:5px;margin-left:7px;border-radius:50%;background:currentColor;animation:tapPulse 1.3s ease-in-out infinite}@keyframes tapPulse{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:.8;transform:scale(1.15)}}.splash.opening .strip-splash{visibility:visible;animation:splashStrip .62s cubic-bezier(.2,.8,.25,1) forwards}.splash.opening .invite-cover{animation:openCover .95s cubic-bezier(.18,.74,.2,1) .18s forwards}.splash.opening .book{animation:bookExit .8s cubic-bezier(.2,.7,.2,1) .82s forwards}.splash.opening .splash-names,.splash.opening .sent,.splash.opening .tap-label{animation:copyFade .38s ease forwards}@keyframes splashStrip{8%{opacity:1}to{opacity:1;transform:translateY(340px)}}@keyframes openCover{58%{transform:rotateY(-58deg) translate(-5px)}to{transform:rotateY(-82deg) translate(-10px);opacity:.12}}@keyframes bookExit{to{opacity:0;transform:translateY(-18px) scale(1.045)}}@keyframes copyFade{to{opacity:0;transform:translateY(-6px)}}.site.main-entered .hero .names{animation:introTitle .9s cubic-bezier(.22,.7,.25,1) .08s forwards}.site.main-entered .hero .subhead{animation:introFade .65s ease .45s forwards}.site.main-entered .hero .tray{animation:introTray 1.05s cubic-bezier(.2,.78,.24,1) .25s forwards}.site.main-entered .hero .strip{animation:stripDrop 1.05s cubic-bezier(.2,.75,.2,1) .82s forwards}.site.main-entered .hero .scrollcue{animation:introFade .65s ease 1.45s forwards}@media(min-width:700px){body{background:#ddd5c9}.site{width:430px;margin:auto;background:var(--paper);box-shadow:0 0 50px #0000002e}.page,.form-page{min-height:820px}.hero{min-height:860px}.splash{background:#ddd5c9}.splash-inner{min-height:820px;display:flex;flex-direction:column;justify-content:center;background:#f7f3ec}}@media(max-width:420px){.countdown{gap:6px}.countdown div{min-width:51px}.countdown b{font-size:27px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.hero .names,.hero .subhead,.hero .tray,.hero .strip,.hero .scrollcue,.reveal{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;clip-path:none!important}}
