:root{--bg:#060309;--ink:#fbeff2;--ink-dim:#fbeff28f;--ink-faint:#fbeff224;--rose:#ff8fb1;--hot:#ff3d7f;--champagne:#f6d6b0;--violet:#9b7bff;--serif:"Fraunces", "Times New Roman", serif;--sans:"Manrope", system-ui, sans-serif;--script:"Mrs Saint Delafield", cursive;--ease:cubic-bezier(.22, 1, .36, 1);--gutter:clamp(16px, 3vw, 40px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:clip}body{background:var(--bg);font-family:var(--sans);cursor:none;font-weight:400;overflow-x:clip}@media (hover:none){body{cursor:auto}}::selection{background:var(--hot);color:#fff}button{font:inherit;color:inherit;cursor:none;background:0 0;border:0}@media (hover:none){button{cursor:pointer}}a{color:inherit;cursor:none;text-decoration:none}em{font-style:italic}.mono{font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);font-size:11px;font-weight:500}.big{font-family:var(--serif);letter-spacing:-.035em;font-variation-settings:"SOFT" 100, "opsz" 144;font-size:clamp(48px,9vw,150px);font-weight:300;line-height:.92}.big>span{display:block}.big em{color:var(--rose);font-weight:200}#webgl{z-index:0;width:100vw;height:100vh;display:block;position:fixed;inset:0}#confetti{z-index:60;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.flash{z-index:90;opacity:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(circle,#fff,#ffd0de 30%,#ff3d7f00 70%);position:fixed;inset:0}main{z-index:2;position:relative}.loader{z-index:80;background:radial-gradient(ellipse at 50% 50%, #06030933 0%, #060309e6 55%, var(--bg) 85%);place-items:center;display:grid;position:fixed;inset:0}.loader__top,.loader__bottom{left:var(--gutter);right:var(--gutter);justify-content:space-between;gap:16px;display:flex;position:absolute}.loader__top{top:var(--gutter)}.loader__bottom{bottom:var(--gutter)}.loader__status:after{content:"…";vertical-align:bottom;width:1.2em;animation:1.4s steps(4,end) infinite dots;display:inline-block;overflow:hidden}@keyframes dots{0%{width:0}to{width:1.2em}}.loader__count{left:var(--gutter);bottom:calc(var(--gutter) + 28px);font-family:var(--serif);letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-variation-settings:"SOFT" 100, "opsz" 144;font-size:clamp(80px,18vw,260px);font-weight:200;line-height:.8;position:absolute}.loader__count sup{vertical-align:top;color:var(--rose);margin-left:.1em;font-size:.25em}.loader__pulse{opacity:.55;width:100%;height:80px;position:absolute;top:50%;left:0;overflow:visible;transform:translateY(-50%)}.loader__pulse path{fill:none;stroke:var(--rose);stroke-width:1.2px;vector-effect:non-scaling-stroke;stroke-dasharray:90 900;filter:drop-shadow(0 0 6px var(--hot));animation:1.6s linear infinite pulse}@keyframes pulse{0%{stroke-dashoffset:990px}to{stroke-dashoffset:0}}.enter{opacity:0;pointer-events:none;border-radius:50%;place-items:center;width:200px;height:200px;display:grid;position:relative;transform:scale(.6)}.enter.is-ready{pointer-events:auto}.enter__ring{width:100%;height:100%;animation:16s linear infinite spin;position:absolute;inset:0}.enter__ring text{font-family:var(--sans);letter-spacing:.32em;text-transform:uppercase;fill:var(--ink);font-size:12.5px}@keyframes spin{to{transform:rotate(360deg)}}.enter__heart{background:radial-gradient(circle at 35% 30%, #ffc2d4, var(--hot) 60%, #a3134a);width:88px;height:88px;transition:transform .6s var(--ease);border-radius:50%;place-items:center;display:grid;box-shadow:0 0 60px #ff3d7f99,inset 0 0 20px #ffffff59}.enter__heart svg{fill:#fff;width:30px;animation:beat 1.2s var(--ease) infinite}.enter:hover .enter__heart{transform:scale(1.15)}@keyframes beat{0%,to{transform:scale(1)}14%{transform:scale(1.25)}28%{transform:scale(1)}42%{transform:scale(1.18)}70%{transform:scale(1)}}.hud{z-index:50;pointer-events:none;opacity:0;position:fixed;inset:0}.hud>*{pointer-events:auto}.hud__logo{top:var(--gutter);left:var(--gutter);font-family:var(--serif);align-items:center;gap:10px;font-size:20px;font-style:italic;display:flex;position:absolute}.hud__logo svg{width:18px;fill:var(--hot);filter:drop-shadow(0 0 8px var(--hot));animation:beat 1.2s var(--ease) infinite}.hud__chapter{left:var(--gutter);bottom:var(--gutter);color:var(--ink);align-items:center;gap:12px;display:flex;position:absolute}.hud__num{color:var(--rose)}.hud__sep{background:var(--ink-faint);width:40px;height:1px}.hud__sound{top:var(--gutter);right:var(--gutter);align-items:center;gap:10px;padding:8px 0 8px 8px;display:flex;position:absolute}.bars{align-items:center;gap:2px;height:14px;display:flex}.bars i{background:var(--ink);transform-origin:50%;border-radius:2px;width:2px;height:100%;animation:1s ease-in-out infinite bar}.bars i:nth-child(2){animation-delay:-.2s}.bars i:nth-child(3){animation-delay:-.5s}.bars i:nth-child(4){animation-delay:-.3s}.bars i:nth-child(5){animation-delay:-.7s}.is-muted .bars i{animation:none;transform:scaleY(.15)}@keyframes bar{0%,to{transform:scaleY(.25)}50%{transform:scaleY(1)}}.hud__progress{right:var(--gutter);background:var(--ink-faint);width:1px;height:26vh;position:absolute;top:50%;transform:translateY(-50%)}.hud__progress i{background:linear-gradient(var(--champagne), var(--hot));transform-origin:top;box-shadow:0 0 10px var(--hot);position:absolute;inset:0;transform:scaleY(0)}.cursor{z-index:100;pointer-events:none;position:fixed;inset:0}.cursor__dot,.cursor__ring{will-change:transform;border-radius:50%;position:absolute;top:0;left:0}.cursor__dot{width:6px;height:6px;box-shadow:0 0 12px var(--hot);background:#fff;margin:-3px 0 0 -3px}.cursor__ring{width:44px;height:44px;transition:width .5s var(--ease), height .5s var(--ease), margin .5s var(--ease), background .4s, border-color .4s;border:1px solid #ffffff73;place-items:center;margin:-22px 0 0 -22px;display:grid}.cursor__label{letter-spacing:.2em;text-transform:uppercase;opacity:0;color:var(--bg);font-size:9px;font-weight:600;transition:opacity .3s}.cursor.is-hover .cursor__ring{background:var(--ink);border-color:#0000;width:84px;height:84px;margin:-42px 0 0 -42px}.cursor.is-hover .cursor__label{opacity:1}.cursor.is-down .cursor__ring{width:30px;height:30px;margin:-15px 0 0 -15px}.spark{z-index:99;pointer-events:none;width:10px;height:10px;color:var(--rose);text-align:center;margin:-5px 0 0 -5px;font-size:10px;line-height:10px;position:fixed;top:0;left:0}@media (hover:none){.cursor{display:none}}section{position:relative}.sticky{height:100vh;height:100svh;position:sticky;top:0;overflow:hidden}.s-hero{height:100vh;height:100svh;padding:calc(var(--gutter) + 70px) var(--gutter) calc(var(--gutter) + 40px);text-align:center;pointer-events:none;flex-direction:column;justify-content:space-between;align-items:center;display:flex}.hero__kicker{align-items:center;gap:14px;display:flex}.hero__kicker .line{background:var(--ink-faint);width:60px;height:1px}.hero__title{font-family:var(--serif);letter-spacing:-.04em;font-variation-settings:"SOFT" 100, "opsz" 144;perspective:800px;align-items:baseline;gap:.25em;margin-top:2vh;font-size:clamp(54px,10.5vw,170px);font-weight:200;line-height:.85;display:flex}.hero__line{display:inline-block}.hero__line--a{color:var(--rose);font-style:italic}.hero__line--b{-webkit-text-stroke:1px #fbeff2d9;color:#0000}.hero__sub{font-family:var(--serif);color:var(--ink-dim);margin-top:auto;margin-bottom:18px;font-size:clamp(17px,1.6vw,22px);font-weight:300}.hero__sub em{color:var(--ink)}.hero__scroll{flex-direction:column;align-items:center;gap:12px;display:flex}.hero__scroll i{background:linear-gradient(var(--ink), transparent);transform-origin:top;width:1px;height:54px;animation:drip 2.2s var(--ease) infinite}@keyframes drip{0%{opacity:1;transform:scaleY(0)}60%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.hero__hint{right:var(--gutter);bottom:calc(var(--gutter) + 40px);writing-mode:vertical-rl;display:none;position:absolute}@media (min-width:800px){.hero__hint{display:block}}.s-hero>*{opacity:0}.s-origin{height:420vh}.origin__line{inset:auto var(--gutter) 13vh;text-align:center;opacity:0;position:absolute}.origin__line p{font-family:var(--serif);letter-spacing:-.02em;font-variation-settings:"SOFT" 100;text-wrap:balance;max-width:20ch;margin:0 auto;font-size:clamp(26px,3.6vw,56px);font-weight:300;line-height:1.08}.origin__line em{color:var(--rose)}.origin__line--age{inset:auto var(--gutter) 9vh}.origin__line--age p{max-width:24ch;font-size:clamp(22px,2.8vw,42px)}.origin__line--age b{color:var(--champagne);font-style:italic;font-weight:300}.s-memories{height:900vh}.mem__intro{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:24px;display:flex;position:absolute;inset:0}.mem__caption{left:var(--gutter);bottom:calc(var(--gutter) + 50px);opacity:0;max-width:min(520px,80vw);position:absolute}.mem__idx b{color:var(--rose);font-weight:500}.mem__text{font-family:var(--serif);letter-spacing:-.02em;font-variation-settings:"SOFT" 100;margin:14px 0 12px;font-size:clamp(28px,3.4vw,52px);font-weight:300;line-height:1.02}.mem__speed{right:calc(var(--gutter) + 30px);bottom:calc(var(--gutter) + 50px);opacity:0;align-items:center;gap:12px;display:flex;position:absolute}.mem__speed i{background:var(--ink-faint);width:90px;height:1px;display:block;position:relative;overflow:hidden}.mem__speed i:after{content:"";background:var(--hot);transform-origin:0;transform:scaleX(var(--v,0));box-shadow:0 0 8px var(--hot);position:absolute;inset:0}.s-reasons{--rh:clamp(34px, min(6vw, 9vh), 96px);--card-max:calc((100vh - 8vh - var(--gutter) - 128px - var(--rh) * 1.84) * 7 / 9);--card-w:min(clamp(240px, 24vw, 360px), var(--card-max));--mq-top:calc(var(--gutter) + 70px);--mq-left:calc(var(--gutter) + var(--rh) * 7.4);--mq-h:calc(100vh - 8vh - var(--card-w) * 9 / 7 - var(--mq-top) - 12px);height:500vh}.marquee{top:var(--mq-top);left:var(--mq-left);height:var(--mq-h);pointer-events:none;opacity:.9;flex-direction:column;justify-content:center;display:flex;position:absolute;right:0;overflow:hidden}.marquee__row{white-space:nowrap;font-family:var(--serif);font-style:italic;font-weight:200;font-size:calc(var(--mq-h) / 2.3);letter-spacing:-.04em;color:#0000;-webkit-text-stroke:1px #ff8fb12e;line-height:1.05}.marquee__row span{padding-right:.3em;display:inline-block}.marquee__row--rev{-webkit-text-stroke:1px #f6d6b01f;font-style:normal}.reasons__head{top:calc(var(--gutter) + 70px);left:var(--gutter);position:absolute}.reasons__head .big{font-size:var(--rh);margin-top:14px}.reasons__track{padding:0 var(--gutter) 0 max(var(--gutter), 42vw);will-change:transform;perspective:1200px;gap:clamp(20px,3vw,48px);display:flex;position:absolute;bottom:8vh;left:0}.card{width:var(--card-w);transform-style:preserve-3d;will-change:transform;flex:none;position:relative}.card__media{aspect-ratio:7/9;background:#1a0e16;border-radius:18px;position:relative;overflow:hidden;box-shadow:0 30px 80px -30px #ff3d7f73}.card__media img{object-fit:cover;will-change:transform;filter:saturate(.9)contrast(1.05);width:136%;height:120%;position:absolute;inset:-10% -18%}.card__media:after{content:"";background:linear-gradient(#06030900 40%,#060309d9);position:absolute;inset:0}.card__glare{background:radial-gradient(circle at var(--gx,50%) var(--gy,0%), #ffffff47, transparent 45%);mix-blend-mode:overlay;pointer-events:none;z-index:2;border-radius:18px;position:absolute;inset:0}.card__num{z-index:3;font-family:var(--serif);color:var(--champagne);font-size:22px;font-style:italic;position:absolute;top:16px;left:18px}.card__body{z-index:3;position:absolute;bottom:20px;left:20px;right:20px;transform:translateZ(40px)}.card__body h3{font-family:var(--serif);letter-spacing:-.02em;margin-bottom:10px;font-size:clamp(28px,2.4vw,38px);font-weight:300;line-height:1}.card__body p{color:var(--ink-dim);font-size:14px;line-height:1.5}@media (max-height:720px) and (min-width:701px){.card__body{bottom:14px;left:16px;right:16px}.card__body h3{margin-bottom:6px;font-size:clamp(20px,3.8vh,28px)}.card__body p{font-size:12.5px;line-height:1.4}.card__media:after{background:linear-gradient(#06030900 45%,#060309eb 80%)}}.s-numbers{min-height:100vh;padding:20vh var(--gutter);place-items:center;display:grid}.numbers__inner{text-align:center}.numbers__grid{grid-template-columns:repeat(3,1fr);gap:clamp(20px,5vw,80px);margin:6vh 0 4vh;display:grid}.num b{font-family:var(--serif);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-variation-settings:"SOFT" 100, "opsz" 144;background:linear-gradient(180deg, #fff, var(--rose));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:clamp(40px,7vw,120px);font-weight:200;line-height:1;display:block}.num span{font-family:var(--serif);color:var(--ink-dim);margin-top:12px;font-size:clamp(14px,1.3vw,18px);font-style:italic;display:block}.numbers__note{color:var(--ink-dim);font-size:13px}@media (max-width:700px){.numbers__grid{grid-template-columns:1fr}}.s-moment{height:380vh}.moment__mask{--s:.12;--r:0deg;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 29'%3E%3Cpath d='M16 28.6S0 18.8 0 8.6C0 3.9 3.7 0 8.3 0c3.2 0 6 1.8 7.7 4.4C17.7 1.8 20.5 0 23.7 0 28.3 0 32 3.9 32 8.6c0 10.2-16 20-16 20z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 29'%3E%3Cpath d='M16 28.6S0 18.8 0 8.6C0 3.9 3.7 0 8.3 0c3.2 0 6 1.8 7.7 4.4C17.7 1.8 20.5 0 23.7 0 28.3 0 32 3.9 32 8.6c0 10.2-16 20-16 20z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--s) * 100vmax) auto;-webkit-mask-size:calc(var(--s) * 100vmax) auto;mask-size:calc(var(--s) * 100vmax) auto;transform:rotate(var(--r));position:absolute;inset:0}.moment__mask video{object-fit:cover;background:#1a0e16;width:110%;height:110%;position:absolute;inset:-5%}.moment__shade{background:radial-gradient(circle,#0000 30%,#060309b3);position:absolute;inset:0}.moment__text{text-align:center;font-family:var(--serif);letter-spacing:-.04em;pointer-events:none;z-index:2;font-variation-settings:"SOFT" 100, "opsz" 144;font-size:clamp(44px,8vw,140px);font-weight:200;line-height:1;position:absolute;left:0;right:0}.moment__text--a{top:18vh}.moment__text--b{bottom:18vh}.moment__text em{color:var(--rose)}.moment__cap{left:50%;bottom:calc(var(--gutter) + 40px);z-index:2;opacity:0;white-space:nowrap;cursor:pointer;position:absolute;transform:translate(-50%)}.s-approach{height:120vh}.s-wish{height:100vh;height:100svh}.wish__ui{text-align:center;padding:calc(var(--gutter) + 60px) var(--gutter) calc(var(--gutter) + 50px);flex-direction:column;justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.wish__head .big{margin:10px 0 14px;font-size:clamp(40px,6vw,96px)}.wish__sub{font-family:var(--serif);color:var(--ink-dim);max-width:46ch;margin:0 auto;font-size:clamp(15px,1.3vw,19px);font-weight:300}.wish__controls{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.btn{letter-spacing:.2em;text-transform:uppercase;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:100px;height:56px;padding:0 30px;font-size:12px;font-weight:600;position:relative;overflow:hidden}.btn--hold{background:var(--ink);color:var(--bg)}.btn--ghost{border:1px solid #fbeff24d}.btn--ghost.is-on{border-color:var(--hot);color:var(--hot)}.btn__fill{background:linear-gradient(90deg, var(--champagne), var(--hot));transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.btn__label{position:relative}.wish__bottom{flex-direction:column;align-items:center;display:flex}.wish__meter{background:var(--ink-faint);border-radius:2px;width:160px;height:2px;margin-top:18px;overflow:hidden}.wish__meter i{background:var(--hot);transform-origin:0;height:100%;box-shadow:0 0 10px var(--hot);display:block;transform:scaleX(0)}.wish__done{pointer-events:none;flex-direction:column;justify-content:flex-start;align-items:center;gap:20px;padding-top:12vh;display:flex;position:absolute;inset:0}.wish__done>*{opacity:0}.huge{font-family:var(--serif);letter-spacing:-.04em;font-variation-settings:"SOFT" 100, "opsz" 144;font-weight:200;line-height:.9}.huge span{display:block}.huge .hb{font-size:clamp(46px,8.5vw,150px)}.huge .nm{color:var(--rose);text-shadow:0 0 60px #ff3d7f99;font-size:clamp(56px,11vw,190px);font-style:italic}.s-letter{padding:40vh var(--gutter) 0;background:linear-gradient(#06030900,#060309e0 30vh,#060309f0)}.letter{max-width:900px;margin:0 auto}.letter__dear{font-family:var(--serif);letter-spacing:-.04em;font-variation-settings:"SOFT" 100, "opsz" 144;margin:20px 0 6vh;font-size:clamp(48px,7vw,110px);font-weight:200}.letter__dear em{color:var(--rose)}.letter__body p{font-family:var(--serif);letter-spacing:-.015em;font-variation-settings:"SOFT" 100;margin-bottom:1.1em;font-size:clamp(22px,2.6vw,40px);font-weight:300;line-height:1.28}.letter__body .w{opacity:.12}.letter__sign{flex-direction:column;align-items:flex-end;gap:22px;margin-top:8vh;display:flex}.signature{font-family:var(--script);color:var(--champagne);clip-path:inset(0 100% 0 0);padding:0 .2em;font-size:clamp(70px,10vw,150px);line-height:1}.footer{padding:26vh 0 calc(var(--gutter) + 50px);flex-direction:column;align-items:center;gap:30px;display:flex}.replay{font-family:var(--serif);letter-spacing:-.02em;align-items:center;gap:18px;padding:10px 20px;font-size:clamp(30px,4vw,60px);font-style:italic;font-weight:300;display:flex}.replay i{border:1px solid var(--ink-faint);width:1.3em;height:1.3em;transition:transform .8s var(--ease), background .4s;border-radius:50%;place-items:center;font-size:.6em;font-style:normal;display:inline-grid}.replay:hover i{background:var(--hot);border-color:var(--hot);transform:rotate(-360deg)}.char,.word{will-change:transform;display:inline-block}.line-mask{margin-bottom:-.08em;padding-bottom:.08em;display:block;overflow:clip}.big>span>div,.big>span>em>div{overflow:visible clip!important}.letter__dear>div,.letter__dear>em>div,.wish__title>span>div,.wish__title>span>em>div{margin-block:-.3em;padding-block:.3em;overflow:visible clip!important}@media (max-width:700px){.hud__chapter .hud__sep{width:20px}.hud__progress{display:none}.hero__title{flex-direction:column;align-items:center;gap:0;font-size:19vw}.hero__kicker{flex-direction:column;gap:8px}.hero__kicker .line{width:1px;height:18px}.reasons__track{padding-left:var(--gutter);bottom:6vh}.s-reasons{--card-w:min(72vw, var(--card-max));--mq-top:calc(var(--gutter) + 128px + var(--rh) * 1.84);--mq-left:0px;--mq-h:calc(100vh - 6vh - var(--card-w) * 9 / 7 - var(--mq-top) - 8px)}.mem__speed{display:none}}@media (prefers-reduced-motion:reduce){.enter__ring,.hero__scroll i,.bars i{animation:none}}
