:root{--paper: #3f0713;--glow: rgba(130, 25, 45, .3);--cream: #efe4d2;--ink: var(--cream);--ink-soft: #d9cbb4;--script: var(--cream);--gold-ink: #cdbd9f;--champagne: #cdbd9f;--sage: #b2c194;--sage-deep: #7f8b66;--espresso: #3b2518;--serif: "Cormorant Garamond", "Times New Roman", serif;--display: "Playfair Display", "Didot", "Bodoni 72", serif;--calligraphy: "Pinyon Script", "Snell Roundhand", cursive;--ease-silk: cubic-bezier(.22, .61, .21, 1);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body.intro{overflow:hidden;height:100dvh}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}img{display:block}.script{font-family:var(--calligraphy);font-weight:400;color:var(--script)}.paper{background:radial-gradient(120% 70% at 50% 30%,var(--glow, rgba(120, 82, 58, .32)),transparent 65%),radial-gradient(90% 60% at 50% 115%,rgba(0,0,0,.35),transparent 70%),repeating-linear-gradient(135deg,rgba(255,235,210,.018) 0 1px,transparent 1px 4px),repeating-linear-gradient(45deg,rgba(0,0,0,.06) 0 1px,transparent 1px 6px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .75 0 0 0 0 .62 0 0 0 0 .5 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),var(--paper)}body>.paper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}.small-caps,.eyebrow{font-family:var(--serif);font-weight:500;text-transform:uppercase;letter-spacing:.24em;color:var(--sage)}.booth-page{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(4px,1.4dvh,16px);padding:max(env(safe-area-inset-top),14px) 16px max(env(safe-area-inset-bottom),12px);overflow:hidden;opacity:0;transition:opacity 1.3s var(--ease-silk)}.booth-page.ready{opacity:1}.booth-page.leaving{opacity:0;pointer-events:none;transition-duration:1.4s}.booth-top{text-align:center;transition:transform 1.4s var(--ease-silk)}.booth-page.leaving .booth-top{transform:translateY(-14px)}.eyebrow{margin:0;font-size:clamp(10px,min(2.9vw,1.7dvh),14px);letter-spacing:.2em;color:var(--ink)}.names{margin:.08em 0 0;font-size:clamp(38px,min(12vw,8.4dvh),84px);line-height:1.15;white-space:nowrap}.names .amp,.signature .amp{margin:0 .08em;font-family:var(--serif);font-style:italic;font-weight:400;font-size:.72em;vertical-align:.06em}.booth{position:relative;height:min(62dvh,136vw);aspect-ratio:300 / 730;flex:none;margin-top:calc(min(62dvh,136vw)/-50)}.booth-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.booth-frame{filter:drop-shadow(0 12px 18px rgba(0,0,0,.45)) drop-shadow(0 2px 3px rgba(0,0,0,.4))}.booth .lamp{opacity:0;transition:opacity .6s ease}.booth.alive .lamp{opacity:1;animation:lamp-breathe 1.6s ease-in-out infinite}.booth .plate{transform-box:view-box}.booth.printing .plate{animation:hum .11s steps(2) infinite}@keyframes lamp-breathe{50%{opacity:.55}}@keyframes hum{0%{transform:translate(0)}50%{transform:translate(.18px,-.12px)}}.strip-clip{position:absolute;left:0;right:0;bottom:0;top:calc(223 / 730 * 100%);clip-path:inset(0 -60% -60% -60%)}.strip-clip:before{content:"";position:absolute;z-index:2;left:28%;right:28%;top:0;height:.9%;background:linear-gradient(#0a08058c,#0a080500);pointer-events:none}.strip-lift{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform 1.4s var(--ease-silk)}.booth-page.leaving .strip-lift{transform:translateY(-5%)}.strip{display:block;position:absolute;top:0;left:50%;width:calc(128 / 300 * 100%);margin-left:calc(-64 / 300 * 100%);aspect-ratio:128 / 344;transform:translateY(-100%);will-change:transform}.strip:focus-visible{outline:none}.strip:focus-visible .strip-paper{outline:1px solid var(--gold-ink);outline-offset:3px}.strip-sway{display:block;width:100%;height:100%;transform-origin:50% 0;transform:rotate(-.4deg)}.strip-paper{container-type:inline-size;display:flex;flex-direction:column;width:100%;height:100%;position:relative;padding:6.25% 6.25% 0;background:linear-gradient(#fdfcf9,#f6f3ed);box-shadow:0 1px 1.5px #0000004d,0 6px 14px -2px #0000004d}.strip-paper img+img{margin-top:4.7%}.strip-paper img{width:100%;aspect-ratio:112 / 96;object-fit:cover;filter:grayscale(1) brightness(1.08) contrast(1.06)}.strip-caption{flex:1;display:flex;align-items:center;justify-content:center;font-size:9.6cqw;line-height:1;color:var(--ink);white-space:nowrap;padding-bottom:1cqw;color:var(--espresso)}.booth.done .strip,.booth.done .booth-frame{cursor:pointer}.enter-wrap{display:flex;flex-direction:column;align-items:center;gap:clamp(2px,.8dvh,10px);min-height:64px}.enter,.replay{opacity:0;visibility:hidden;transition:opacity 1.4s var(--ease-silk),transform 1.4s var(--ease-silk),visibility 0s 1.4s}.enter{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 14px;font-weight:500;font-size:clamp(11px,min(3.3vw,1.9dvh),15px);letter-spacing:.3em;text-transform:uppercase;color:var(--ink);transform:translateY(6px)}.enter svg{width:46px;height:16px;color:var(--sage)}.enter:hover svg{animation:nudge 1.4s ease-in-out infinite}@keyframes nudge{50%{transform:translateY(3px)}}.replay{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);padding:4px 8px}.booth-page.done .enter,.booth-page.done .replay{visibility:visible;transition-delay:0s}.booth-page.done .enter{opacity:1;transform:none}.booth-page.done .replay{opacity:.55;transition-delay:.6s}.replay:hover{opacity:.9!important}.sound-toggle{position:absolute;top:max(env(safe-area-inset-top),10px);right:12px;width:36px;height:36px;display:grid;place-items:center;color:var(--ink-soft);opacity:.6;z-index:3}.sound-toggle svg{width:20px;height:20px}.sound-toggle .sound-waves{display:none}.sound-toggle[aria-pressed=true] .sound-waves{display:inline}.sound-toggle[aria-pressed=true] .sound-mute{display:none}.site{position:relative;z-index:1;width:min(100%,580px);margin:0 auto;padding:0 16px max(env(safe-area-inset-bottom),32px)}body.intro .site{visibility:hidden}body.entering .site,body.entered .site{visibility:visible}.hero{position:relative;container-type:inline-size;aspect-ratio:400 / 460;margin:calc(max(env(safe-area-inset-top),12px) + min(9vw,52px)) -16px 0;overflow-x:clip}.h-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.h-bouquet{position:absolute;left:-5%;top:50%;width:46%;transform:rotate(-10deg);transform-origin:50% 30%;-webkit-mask:linear-gradient(#000,#000) left / 63% 100% no-repeat,linear-gradient(#000 43%,transparent 51%) right / 37.2% 100% no-repeat;mask:linear-gradient(#000,#000) left / 63% 100% no-repeat,linear-gradient(#000 43%,transparent 51%) right / 37.2% 100% no-repeat;filter:drop-shadow(0 6px 10px rgba(0,0,0,.45));pointer-events:none}.h-text{position:absolute;left:37.5%;top:calc(132 / 460 * 100%);width:50%;transform:translate(-50%,-50%);text-align:center}.h-text .script,.h-text .std-num{color:var(--espresso)}.std{margin:0;line-height:.8}.std>span{display:block}.std-save{font-size:17cqw}.std-line{display:flex;align-items:baseline;justify-content:center;margin-top:-1cqw}.std-the{font-size:7.6cqw;margin-right:.6cqw}.std-date{font-size:17cqw}.std-num{margin:4cqw 0 0;font-family:var(--display);font-weight:400;font-size:7.2cqw;letter-spacing:.06em;color:var(--ink)}.h-strip{position:absolute;left:61%;top:4%;width:25%;rotate:2deg}.strip--hero{position:relative;left:auto;margin:0;width:100%;transform:none;aspect-ratio:90 / 238}.strip--hero .strip-paper{padding:6.5% 6.5% 0;box-shadow:0 1px 2px #0000004d,0 12px 22px -6px #00000073}.strip--hero .strip-paper img+img{margin-top:5%}.strip--hero .strip-paper img{aspect-ratio:76 / 66}.wax-seal{position:absolute;z-index:2;left:50%;top:0;width:50%;transform:translate(-50%,-86%) rotate(-6deg);overflow:visible;filter:drop-shadow(0 2px 2px rgba(60,45,20,.3)) drop-shadow(0 5px 8px rgba(60,45,20,.18))}.wax-seal .seal-initials{font-family:var(--calligraphy);font-size:27px}.locket-initial{font-family:var(--calligraphy);font-size:30px;fill:var(--espresso)}.hero>*{opacity:0}body.entered .hero>*{animation:rise 1.6s var(--ease-silk) both}body.entered .hero .h-plate{animation-delay:.1s}body.entered .hero .h-bouquet{animation-delay:.5s}body.entered .hero .h-lace{animation-delay:.8s}body.entered .hero .h-text{animation-delay:.35s}body.entered .hero .h-strip{animation:settle 1.9s var(--ease-silk) .5s both}body.entered .hero .h-locket{animation-delay:1.1s}@keyframes rise{0%{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}@keyframes settle{0%{opacity:0;translate:0 -22px}55%{opacity:1;translate:0 3px}78%{translate:0 -1px}to{opacity:1;translate:0 0}}[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity 1.4s var(--ease-silk),transform 1.4s var(--ease-silk)}[data-reveal].in{opacity:1;transform:none}.countdown{text-align:center;padding-top:clamp(64px,13vh,120px)}.cd-heading{margin:0 0 14px;font-size:clamp(12px,3.4vw,15px);letter-spacing:.26em}.cd-grid{display:inline-flex;align-items:flex-start;justify-content:center}.cd-unit{display:flex;flex-direction:column;align-items:center;gap:8px}.cd-num{font-family:var(--display);font-weight:400;font-size:clamp(40px,12vw,72px);line-height:1;letter-spacing:-.01em;color:var(--ink);font-variant-numeric:lining-nums tabular-nums}.cd-sep{font-family:var(--display);font-size:clamp(34px,10vw,60px);line-height:1;color:var(--ink);margin:0 clamp(2px,1.2vw,10px)}.cd-label{font-weight:500;font-size:clamp(10px,3vw,13px);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.cd-today{margin:0;font-size:clamp(52px,15vw,84px)}.lucky{padding-top:clamp(64px,12vh,110px)}.play-card{position:relative;container-type:inline-size;width:min(80%,360px);aspect-ratio:5 / 7.4;margin:0 auto;border-radius:5.5%/3.7%;transform:rotate(-2.5deg);background:radial-gradient(120% 90% at 50% 45%,transparent 62%,rgba(150,115,60,.16)),radial-gradient(14% 6% at 88% 82%,rgba(160,120,60,.1),transparent),radial-gradient(10% 5% at 12% 30%,rgba(160,120,60,.08),transparent),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .42 0 0 0 0 .3 0 0 0 .08 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E"),linear-gradient(160deg,#faf5ec,#f1e8d8);box-shadow:inset 0 0 0 1px #785f372e,0 2px 3px #281e0f2e,0 18px 34px -10px #32230f59}.pc-photo{position:absolute;left:15%;right:15%;top:17%;bottom:17%;width:70%;height:66%;object-fit:cover;object-position:50% 45%;border-radius:4cqw;filter:grayscale(1) brightness(1.08) contrast(1.06)}.pc-index{position:absolute;display:flex;flex-direction:column;align-items:center;gap:1.5cqw;color:var(--espresso)}.pc-index--top{left:5.5%;top:4.5%}.pc-index--bottom{right:5.5%;bottom:4.5%;transform:rotate(180deg)}.pc-rank{font-family:var(--display);font-size:13cqw;line-height:.8}.pc-suit{width:10cqw;height:10cqw;fill:currentColor}.pc-script{position:absolute;z-index:1;right:7%;top:6%;margin:0;font-size:12.5cqw;line-height:.95;text-align:right;transform:rotate(-7deg);color:var(--espresso);text-shadow:0 0 6px #f8f2e6,0 0 2px #f8f2e6}.pc-script span{display:block;padding-right:3cqw}.cupids{display:block;width:min(78%,360px);margin:clamp(64px,12vh,110px) auto 0;color:var(--champagne)}.invite-next{margin-top:clamp(40px,8vh,72px);text-align:center}.formal{margin:0;font-size:clamp(34px,10vw,52px);line-height:1.1}.address-btn{display:inline-block;margin-top:26px;padding:14px 34px;border:1px solid var(--cream);color:var(--cream);text-decoration:none;font-weight:500;font-size:12px;letter-spacing:.28em;text-transform:uppercase;transition:background .3s}.address-btn:hover{background:#efe4d21a}.lace-script{font-family:var(--calligraphy);font-size:17px;fill:var(--cream)}.details{padding-top:clamp(110px,22vh,180px);text-align:center;scroll-margin-top:24px}.details-title{margin:0;font-size:clamp(64px,19vw,104px);line-height:.92}.lede{max-width:34ch;margin:1.1em auto 0;font-family:var(--display);font-size:clamp(14px,4vw,17px);line-height:1.55;color:var(--ink)}.details-form{margin:clamp(48px,9vh,72px) auto 0;max-width:460px;text-align:left}.hp{position:absolute;left:-9999px}.field{display:block;margin-bottom:26px}.field span{display:block;margin-bottom:8px;font-family:var(--display);font-size:14px;line-height:1.45;color:var(--ink)}.field textarea{display:block;width:100%;resize:vertical;min-height:58px;padding:12px 14px;font:17px/1.45 var(--serif);color:var(--ink);background:#fff0dc0a;border:1px solid rgba(239,228,210,.3);border-radius:2px;box-shadow:inset 0 1px 2px #0003;transition:border-color .3s,background .3s}.field textarea:focus{outline:none;border-color:var(--sage);background:#fff0dc14}.submit{display:block;width:100%;margin-top:8px;padding:14px 20px;border:1px solid var(--cream);border-radius:0;background:transparent;color:var(--cream);font-family:var(--serif);font-weight:500;font-size:13px;letter-spacing:.28em;text-transform:uppercase;transition:background .3s,transform .2s}.submit:hover{background:#efe4d21a}.submit:active{transform:translateY(1px)}.submit:disabled{opacity:.7;cursor:default}.form-status{min-height:1.4em;margin:14px 0 0;text-align:center;font-size:15px;font-style:italic;color:var(--ink-soft)}.details-form.sent .field,.details-form.sent .submit{display:none}.details-form.sent .form-status{font-family:var(--calligraphy);font-style:normal;font-size:40px;color:var(--script)}.sincerely{margin:clamp(80px,16vh,130px) 0 0;font-size:12px;letter-spacing:.3em}.signature{margin:.15em 0 clamp(48px,10vh,90px);font-size:clamp(50px,14vw,78px);line-height:1.1}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}[data-reveal]{opacity:1;transform:none;transition:none}body.entered .hero>*{animation-duration:.01s;animation-delay:0s!important}.booth .lamp{animation:none}}
