.scene__header{text-align:center;flex-direction:column;align-items:center;gap:clamp(.5rem,.3rem + 1vw,1rem);max-width:60rem;margin-inline:auto;display:flex}.scene__header[data-align=start]{text-align:left;align-items:flex-start;margin-inline:0}.scene__header[data-align=start] .eyebrow:before{width:1.2rem}.scene__header .lede{max-width:46rem}.scene__header .display,.scene__header .h1{margin-block:.1em}.ribbon{filter:drop-shadow(0 10px 20px -12px #140614e6);justify-content:center;display:inline-flex}.ribbon__body{z-index:0;background:linear-gradient(180deg, #ffffff6b, #fff0 52%), linear-gradient(135deg, color-mix(in srgb, var(--c-gold) 94%, white), var(--c-gold));color:#4a2413;letter-spacing:.24em;text-transform:uppercase;text-align:center;white-space:nowrap;border-radius:.35rem;padding:.5em 1.5em;font-size:clamp(.58rem,.5rem + .4vw,.78rem);font-weight:700;position:relative;box-shadow:inset 0 1px #fff9}.ribbon__body:before,.ribbon__body:after{content:"";z-index:-1;background:linear-gradient(135deg, color-mix(in srgb, var(--c-rose) 88%, var(--c-burgundy)), var(--c-burgundy));width:clamp(1.1rem,.6rem + 2vw,2.4rem);position:absolute;top:0;bottom:0}.ribbon__body:before{clip-path:polygon(0 50%,100% 0,100% 100%);right:100%}.ribbon__body:after{clip-path:polygon(0 0,100% 50%,0 100%);left:100%}.ribbon--rose .ribbon__body{background:linear-gradient(180deg, #ffffff47, #fff0 52%), linear-gradient(135deg, var(--c-rose), var(--c-burgundy));color:var(--c-ivory)}.ribbon--rose .ribbon__body:before,.ribbon--rose .ribbon__body:after{background:linear-gradient(135deg, color-mix(in srgb, var(--c-gold) 60%, var(--c-burgundy)), color-mix(in srgb, var(--c-gold) 45%, var(--c-burgundy)))}.scene__ornament{justify-content:center;align-items:center;gap:var(--space-3);color:color-mix(in srgb, var(--c-gold) 60%, transparent);display:flex}.scene__actions{justify-content:center;align-items:center;gap:var(--space-3);flex-wrap:wrap;width:100%;display:flex}.scene__aside{font-size:var(--fs-small);color:var(--c-text-faint);text-align:center;max-width:34rem}.on-paper .scene__aside{color:color-mix(in srgb, var(--c-ink) 58%, transparent)}.stat{border-radius:var(--r-md);border:1px solid var(--c-line-soft);background:color-mix(in srgb, var(--c-ivory) 5%, transparent);flex-direction:column;align-items:center;gap:.15rem;padding:.7rem 1.1rem;display:flex}.stat__value{font-family:var(--font-display);color:var(--c-ivory);font-size:clamp(1.2rem,1rem + 1vw,1.9rem);font-weight:600;line-height:1.1}.stat__label{font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--c-text-faint)}.on-paper .stat{border-color:color-mix(in srgb, var(--c-burgundy) 16%, transparent);background:#fff9}.on-paper .stat__value{color:var(--c-ink)}.on-paper .stat__label{color:color-mix(in srgb, var(--c-ink) 55%, transparent)}.invitation{justify-content:center}.invitation__envelope{width:clamp(13rem,8rem + 26vw,22rem);animation:float-soft 7.5s var(--ease-soft) infinite;filter:drop-shadow(0 26px 40px #0c05108c);margin-inline:auto;position:relative}.invitation__glow{aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--c-rose) 45%, transparent), transparent 66%);width:clamp(16rem,8rem + 40vw,32rem);animation:glow-breathe 7s var(--ease-soft) infinite;z-index:-1;border-radius:50%;position:absolute;top:50%;left:50%;translate:-50% -50%}.count__caption{font-size:var(--fs-micro);letter-spacing:.24em;text-transform:uppercase;color:color-mix(in srgb, var(--c-gold) 78%, transparent);text-align:center}.count{border-radius:var(--r-lg);border:1px solid color-mix(in srgb, var(--c-gold) 24%, transparent);background:radial-gradient(120% 140% at 50% 0%, color-mix(in srgb, var(--c-rose) 22%, transparent), transparent 68%), color-mix(in srgb, var(--c-plum) 58%, transparent);box-shadow:inset 0 1px 0 #ffffff14, var(--shadow-lift);justify-content:center;align-items:flex-start;gap:clamp(.15rem,1.4vw - .2rem,.85rem);padding:clamp(.7rem,.4rem + 1.6vw,1.4rem) clamp(.6rem,.2rem + 3vw,2rem);display:flex}.count__group{flex-direction:column;align-items:center;gap:.15rem;min-width:clamp(2.4rem,1.2rem + 6vw,4.6rem);display:flex}.count__value{font-family:var(--font-display);font-size:var(--fs-count);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--c-ivory);text-shadow:0 0 22px color-mix(in srgb, var(--c-rose) 65%, transparent);perspective:520px;justify-content:center;font-weight:700;line-height:1;display:flex;position:relative}.count__value span{text-align:center;background:linear-gradient(180deg, #fff 0%, color-mix(in srgb, var(--c-gold) 90%, white) 46%, color-mix(in srgb, var(--c-rose) 88%, white) 100%);color:#0000;transform-origin:50% 100%;-webkit-background-clip:text;background-clip:text;min-width:1.55ch;display:block}.count__label{font-size:var(--fs-micro);letter-spacing:.2em;text-transform:uppercase;color:var(--c-text-faint)}.count__sep{font-family:var(--font-display);color:color-mix(in srgb, var(--c-gold) 55%, transparent);align-self:flex-start;margin-top:clamp(.2rem,.05rem + .8vw,.6rem);font-size:clamp(1.1rem,.4rem + 4vw,2.6rem);line-height:1;animation:2s step-end infinite caret-blink}.count[data-finished=true]{border-color:color-mix(in srgb, var(--c-gold) 55%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--c-gold) 30%, transparent), 0 0 60px -18px color-mix(in srgb, var(--c-gold) 70%, transparent)}.envelope-stage{perspective:1400px;width:100%;position:relative}.envelope{aspect-ratio:3/2;width:100%;transform-style:preserve-3d;position:relative}.envelope__back{background:linear-gradient(168deg, color-mix(in srgb, var(--c-blush) 88%, white), color-mix(in srgb, var(--c-rose) 72%, var(--c-ivory)));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--c-burgundy) 22%, transparent);border-radius:10px;position:absolute;inset:0}.envelope__paper{background:linear-gradient(180deg, #fffdf8, var(--c-ivory));transform-origin:bottom;z-index:1;border-radius:6px;height:86%;position:absolute;top:8%;left:5%;right:5%;box-shadow:0 -6px 18px -10px #3c182c80,inset 0 0 0 1px #7e29481f}.envelope__front{z-index:2;background:linear-gradient(168deg, color-mix(in srgb, var(--c-blush) 92%, white) 0%, color-mix(in srgb, var(--c-rose) 82%, var(--c-ivory)) 100%);clip-path:polygon(0 0,50% 42%,100% 0,100% 100%,0 100%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--c-burgundy) 18%, transparent);border-radius:10px;position:absolute;inset:0}.envelope__front:after{content:"";opacity:.7;background:linear-gradient(#0000 34%,#ffffff47 46%,#0000 60%);position:absolute;inset:0}.envelope__flap{z-index:3;transform-origin:top;height:62%;transform-style:preserve-3d;backface-visibility:hidden;background:linear-gradient(180deg, color-mix(in srgb, var(--c-rose) 88%, var(--c-ivory)), color-mix(in srgb, var(--c-burgundy) 34%, var(--c-rose)));clip-path:polygon(0 0,100% 0,50% 100%);transition:transform .9s var(--ease-out), z-index 0s linear .42s;border-radius:10px 10px 0 0;position:absolute;top:0;left:0;right:0}.envelope[data-open=true] .envelope__flap{z-index:0;transition:transform .9s var(--ease-out), z-index 0s linear .46s;transform:rotateX(-176deg)}.envelope__seal{z-index:4;filter:drop-shadow(0 6px 12px #280c1e80);animation:seal-pulse 3.2s var(--ease-soft) infinite;transition:opacity .32s var(--ease-out), transform .32s var(--ease-out);position:absolute;top:52%;left:50%;translate:-50% -50%}.envelope[data-open=true] .envelope__seal{opacity:0;transform:translate(-50%,-50%)scale(.6)rotate(-24deg)}.envelope__address{z-index:3;text-align:center;width:78%;font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 88%, #000);font-size:clamp(.9rem,.7rem + 1.1vw,1.35rem);line-height:1.35;position:absolute;bottom:12%;left:50%;translate:-50%}.envelope__address strong{font-weight:700}.envelope__beam{aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--c-gold) 55%, transparent), transparent 62%);opacity:0;z-index:0;pointer-events:none;border-radius:50%;width:min(150%,100vw - 1.5rem);position:absolute;top:46%;left:50%;translate:-50% -50%}.envelope[data-open=true] .envelope__beam{animation:glow-breathe 2.6s var(--ease-soft) 2}.gift-scene{justify-content:center}.gift-scene__stage{flex-direction:column;align-items:center;gap:clamp(1rem,.6rem + 1.8vw,1.9rem);width:100%;display:flex;position:relative}.gift-scene__warmth{z-index:-1;pointer-events:none;background:radial-gradient(60% 50% at 50% 46%, color-mix(in srgb, var(--c-gold) 52%, transparent), transparent 70%), radial-gradient(80% 70% at 50% 60%, color-mix(in srgb, var(--c-rose) 32%, transparent), transparent 76%);position:fixed;inset:0}.gift{aspect-ratio:1/.94;perspective:1100px;perspective-origin:50% 34%;cursor:pointer;width:clamp(14rem,8rem + 30vw,21rem);transition:transform var(--dur-mid) var(--ease-out);background:0 0;border:0;padding:0;display:block;position:relative}.gift[disabled]{cursor:default}.gift__glow{aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--c-rose) 42%, transparent), transparent 64%);width:150%;animation:glow-breathe 5.6s var(--ease-soft) infinite;z-index:0;border-radius:50%;position:absolute;top:46%;left:50%;translate:-50% -50%}.gift__body{background:linear-gradient(180deg, #ffffff2e, #00000038), linear-gradient(135deg, color-mix(in srgb, var(--c-burgundy) 88%, var(--c-rose)) 0%, var(--c-burgundy) 62%, color-mix(in srgb, var(--c-burgundy) 70%, #34102a) 100%);height:58%;transform-style:preserve-3d;border-radius:10px;position:absolute;bottom:6%;left:0;right:0;overflow:hidden;box-shadow:inset 0 1px #ffffff38,inset 0 -18px 30px -18px #0000008c,0 26px 46px -22px #0a040cbf}.gift__ribbon-v{background:linear-gradient(90deg, color-mix(in srgb, var(--c-gold) 62%, var(--c-burgundy)) 0%, var(--c-gold) 46%, color-mix(in srgb, var(--c-gold) 70%, var(--c-burgundy)) 100%);width:16%;position:absolute;top:0;bottom:0;left:50%;translate:-50%;box-shadow:inset 0 0 0 1px #ffffff2e}.gift__ribbon-h{background:linear-gradient(180deg, color-mix(in srgb, var(--c-gold) 66%, var(--c-burgundy)) 0%, var(--c-gold) 50%, color-mix(in srgb, var(--c-gold) 68%, var(--c-burgundy)) 100%);height:17%;position:absolute;top:50%;left:0;right:0;translate:0 -50%;box-shadow:inset 0 0 0 1px #ffffff29}.gift__ribbon-v,.gift__ribbon-h,.gift__bow{transition:transform .9s var(--ease-out), opacity .62s var(--ease-out)}.gift[data-phase=untie] .gift__ribbon-v,.gift[data-phase=open] .gift__ribbon-v,.gift[data-phase=burst] .gift__ribbon-v,.gift[data-phase=done] .gift__ribbon-v{opacity:0;transform:translate(-50%,130%)rotate(6deg)}.gift[data-phase=untie] .gift__ribbon-h,.gift[data-phase=open] .gift__ribbon-h,.gift[data-phase=burst] .gift__ribbon-h,.gift[data-phase=done] .gift__ribbon-h{opacity:0;transform:translate(118%,-50%)rotate(4deg)}.gift__lid{transform-origin:50% 100%;height:21%;transform-style:preserve-3d;background:linear-gradient(180deg, #ffffff4d, #fff0 52%), linear-gradient(135deg, color-mix(in srgb, var(--c-rose) 82%, var(--c-burgundy)) 0%, color-mix(in srgb, var(--c-burgundy) 84%, var(--c-rose)) 100%);transition:transform .98s cubic-bezier(.3, .9, .2, 1), box-shadow .6s var(--ease-out);z-index:3;border-radius:9px;position:absolute;top:30%;left:-4%;right:-4%;box-shadow:inset 0 1px #fff6,0 14px 24px -14px #0a040cb3}.gift__lid:after{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--c-gold) 60%, var(--c-burgundy)) 0%, var(--c-gold) 48%, color-mix(in srgb, var(--c-gold) 68%, var(--c-burgundy)) 100%);border-radius:2px;width:16%;position:absolute;top:0;bottom:0;left:50%;translate:-50%}.gift[data-phase=open] .gift__lid,.gift[data-phase=burst] .gift__lid,.gift[data-phase=done] .gift__lid{transform:rotateX(-124deg)translateY(-4%);box-shadow:0 -18px 34px -18px #0009}.gift__bow{aspect-ratio:1.5;z-index:4;width:46%;position:absolute;top:30%;left:50%;translate:-50% -62%}.gift__bow-loop{background:radial-gradient(circle at 32% 30%, #ffffff8c, transparent 52%), linear-gradient(135deg, color-mix(in srgb, var(--c-gold) 92%, white), var(--c-gold) 58%, color-mix(in srgb, var(--c-gold) 70%, var(--c-burgundy)));border-radius:60% 40% 55% 45%;width:46%;height:74%;position:absolute;top:18%;box-shadow:inset 0 0 0 1px #ffffff3d,0 8px 16px -10px #0a040cb3}.gift__bow-loop[data-side=left]{left:2%;rotate:-14deg}.gift__bow-loop[data-side=right]{right:2%;rotate:14deg}.gift__bow-knot{aspect-ratio:1;background:radial-gradient(circle at 34% 30%, #fff8e8, var(--c-gold) 60%, color-mix(in srgb, var(--c-gold) 65%, var(--c-burgundy)));border-radius:50%;width:30%;position:absolute;top:46%;left:50%;translate:-50% -50%;box-shadow:0 4px 10px -4px #0a040ccc}.gift[data-phase=untie] .gift__bow,.gift[data-phase=open] .gift__bow,.gift[data-phase=burst] .gift__bow,.gift[data-phase=done] .gift__bow{opacity:0;transform:translate(-50%,-160%)rotate(-16deg)}.gift__light{background:radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--c-gold) 88%, white), color-mix(in srgb, var(--c-rose) 60%, transparent) 44%, transparent 72%);opacity:0;filter:blur(6px);z-index:2;width:92%;height:62%;transition:opacity .7s var(--ease-out);border-radius:50% 50% 42% 42%;position:absolute;top:32%;left:50%;translate:-50%}.gift[data-phase=open] .gift__light,.gift[data-phase=burst] .gift__light,.gift[data-phase=done] .gift__light{opacity:.9;animation:glow-breathe 2.4s var(--ease-soft) infinite}.gift__orbits{z-index:5;position:absolute;inset:-12%}.gift__orbit-dot{background:var(--c-gold);width:6px;height:6px;box-shadow:0 0 10px 2px color-mix(in srgb, var(--c-gold) 65%, transparent);animation:float-soft var(--dur,6s) var(--ease-soft) infinite;animation-delay:var(--delay,0s);border-radius:50%;position:absolute}.gift__shadow{filter:blur(2px);background:radial-gradient(closest-side,#08030c8c,#0000);border-radius:50%;width:72%;height:22px;margin-top:-6px}.gift[data-phase=shake]{animation:shake-soft .62s var(--ease-out) 1}.gift[data-phase=idle],.gift[data-phase=shake],.gift[data-phase=untie]{animation:float-soft 6.4s var(--ease-soft) infinite}.gift-scene__steps{min-height:1.5em;font-size:var(--fs-small);letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--c-gold) 82%, transparent);text-align:center}.gift-scene__burst{text-align:center;flex-direction:column;gap:.35rem;display:flex}.gift-scene__burst-line{font-family:var(--font-display);letter-spacing:-.01em;font-size:clamp(1.4rem,1rem + 2.6vw,2.6rem);font-weight:700;line-height:1.16}.gift-scene__messages{text-align:center;gap:.35rem;max-width:30rem;display:grid}.gift-scene__message{font-family:var(--font-hand);font-size:var(--fs-hand);color:color-mix(in srgb, var(--c-ivory) 92%, transparent);line-height:1.4}.gift-scene__hint{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-ivory) 82%, transparent);align-items:center;gap:.5em;font-size:clamp(1.05rem,.95rem + .6vw,1.4rem);display:inline-flex}.gift-scene__hint svg{animation:bounce-y 2.2s var(--ease-soft) infinite}.celebration{justify-content:center}.celebration__cake{flex-direction:column;align-items:center;gap:.4rem;display:flex;position:relative}.celebration__cake-halo{aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--c-gold) 34%, transparent), transparent 66%);width:clamp(16rem,8rem + 34vw,26rem);animation:glow-breathe 6.5s var(--ease-soft) infinite;z-index:-1;border-radius:50%;position:absolute;top:46%;left:50%;translate:-50% -50%}.celebration__wish{text-align:center;max-width:30rem;min-height:2.6em;font-family:var(--font-hand);font-size:var(--fs-hand);color:color-mix(in srgb, var(--c-ivory) 92%, transparent);line-height:1.45}.celebration__wish[data-state=blown]{color:color-mix(in srgb, var(--c-gold) 88%, white)}.celebration__smoke{border-radius:var(--r-pill);filter:blur(3px);opacity:0;background:linear-gradient(#ffffff80,#0000);width:4px;height:40px;position:absolute;top:0;left:50%;translate:-50%}.celebration__cake[data-blown=true] .celebration__smoke{animation:smoke-rise 2.4s var(--ease-out) 1}.celebration__to{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-blush) 92%, white);text-align:center;font-size:clamp(1.3rem,1rem + 1.6vw,2rem);line-height:1.4}.celebration__flourish{color:color-mix(in srgb, var(--c-rose) 78%, white);align-items:center;gap:clamp(.5rem,.2rem + 1.4vw,1rem);display:flex}.celebration__flourish-group{transform-origin:bottom;align-items:flex-end;gap:clamp(.4rem,.2rem + 1vw,.9rem);display:flex}.celebration__moments{text-align:center;gap:.5rem;max-width:46rem;display:grid}.celebration__moments p{font-size:var(--fs-body);color:var(--c-text-dim)}.letter-scene{justify-content:center}.letter-scene__envelope{width:min(100%,26rem);transition:opacity .62s var(--ease-out), transform .62s var(--ease-out);margin-inline:auto;position:relative}.letter-scene__envelope[data-hidden=true]{opacity:0;pointer-events:none;position:absolute;inset-inline:0;transform:scale(.9)translateY(-14px)}.letter-scene__sparkles{z-index:5;width:8rem;height:8rem;position:absolute;top:44%;left:50%;translate:-50% -50%}.letter__paper{border-radius:var(--r-md);width:100%;color:var(--c-ink);background:repeating-linear-gradient(180deg, transparent 0, transparent calc(1.95em - 1px), color-mix(in srgb, var(--c-lavender) 55%, transparent) calc(1.95em - 1px), color-mix(in srgb, var(--c-lavender) 55%, transparent) 1.95em), linear-gradient(174deg, #fffdf9 0%, var(--c-ivory) 52%, color-mix(in srgb, var(--c-blush) 34%, #fff) 100%);box-shadow:var(--shadow-paper), inset 0 0 0 1px #7e29481a;transform-origin:50% 0;background-position:0 0,0 0;padding:clamp(1.15rem,.8rem + 2.4vw,2.4rem) clamp(1rem,.7rem + 2.4vw,2.6rem);position:relative}.letter__paper:before{content:"";background:color-mix(in srgb, var(--c-rose) 45%, transparent);width:1px;position:absolute;top:0;bottom:0;left:clamp(.5rem,.3rem + 1.1vw,1.15rem)}.letter__date{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 80%, #000);margin-bottom:.6rem;font-size:clamp(1rem,.9rem + .5vw,1.3rem)}.letter__text-wrap{position:relative}.letter__body{font-family:var(--font-hand);letter-spacing:.005em;color:color-mix(in srgb, var(--c-burgundy) 92%, #1d0812);white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;font-size:clamp(1.16rem,.95rem + .85vw,1.6rem);line-height:1.95}.letter__body--reserve{visibility:hidden}.letter__text-wrap[data-done=true] .letter__body--reserve{visibility:visible}.letter__body--typed{transition:opacity .22s var(--ease-out);position:absolute;inset:0}.letter__text-wrap[data-done=true] .letter__body--typed{opacity:0}.letter__pen{pointer-events:none;will-change:transform;width:2.6rem;height:2.6rem;transition:transform .11s linear, opacity .32s var(--ease-out);filter:drop-shadow(0 6px 10px #3c182c59);margin-top:-.95rem;margin-left:-.35rem;position:absolute;top:0;left:0;transform:translate(0,0)}.letter__pen svg{transform:rotate(-16deg)}.letter__text-wrap[data-done=true] .letter__pen{opacity:0}.letter__signature{text-align:right;font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 90%, #000);margin-top:clamp(1rem,.6rem + 1.6vw,2rem);font-size:clamp(1.2rem,1rem + .9vw,1.7rem)}.letter__progress{font-size:var(--fs-small);color:var(--c-text-faint);align-items:center;gap:.7rem;display:flex}.letter__progress-bar{border-radius:var(--r-pill);background:color-mix(in srgb, var(--c-ivory) 16%, transparent);width:clamp(6rem,20vw,12rem);height:3px;position:relative;overflow:hidden}.letter__progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--c-rose), var(--c-gold));transform-origin:0;position:absolute;inset:0 auto 0 0}.letter__paper[data-unfolding=true]{transform:rotateX(14deg)rotate(-1.2deg)scale(.96)}.gallery{width:100%}.gallery__modes{border-radius:var(--r-pill);border:1px solid color-mix(in srgb, var(--c-burgundy) 16%, transparent);box-shadow:var(--shadow-paper);background:#ffffff9e;gap:.25rem;padding:.28rem;display:inline-flex}.gallery__mode{border-radius:var(--r-pill);min-height:40px;font-size:var(--fs-small);color:color-mix(in srgb, var(--c-ink) 68%, transparent);transition:background-color var(--dur-mid) var(--ease-out), color var(--dur-mid) var(--ease-out);padding:.45em 1.1em;font-weight:600}.gallery__mode:hover{color:var(--c-ink)}.gallery__mode[aria-pressed=true]{color:var(--c-ivory);background:linear-gradient(135deg, var(--c-rose), var(--c-burgundy));box-shadow:0 10px 22px -14px #7e2948e6}.gallery__grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:clamp(1.2rem,.8rem + 2.4vw,2.4rem);width:100%;padding:clamp(.5rem,.2rem + 1.4vw,1.4rem) 0;display:grid}@media (min-width:1000px){.gallery__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:3rem 2.4rem;padding-block:1.8rem}}@media (min-width:620px) and (max-width:999px){.gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.polaroid{background:linear-gradient(178deg, #fffefb, color-mix(in srgb, var(--c-ivory) 92%, #fff));rotate:calc(var(--tilt,0deg) * var(--tilt-scale,1));transform-origin:50% 12%;transition:rotate var(--dur-mid) var(--ease-out), box-shadow var(--dur-mid) var(--ease-out), transform var(--dur-mid) var(--ease-out);text-align:left;border-radius:4px;flex-direction:column;gap:.6rem;padding:.85rem .85rem 1.1rem;display:flex;position:relative;box-shadow:0 18px 34px -20px #3c182c9e,0 2px 6px -2px #3c182c42}.polaroid:hover,.polaroid:focus-visible{z-index:2;transform:translateY(-6px);box-shadow:0 30px 52px -22px #3c182cb3,0 4px 10px -3px #3c182c4d}.polaroid__tape{width:5.4rem;height:1.5rem;translate:-50%;rotate:var(--tape-rotate,-4deg);opacity:.9;background:linear-gradient(#ffffff80,#e8c98c8c);border-left:1px solid #fff6;border-right:1px solid #fff6;position:absolute;top:-.55rem;left:50%;box-shadow:0 3px 7px -4px #3c182c80}.polaroid__frame{aspect-ratio:4/5;background:linear-gradient(150deg, color-mix(in srgb, var(--c-blush) 70%, #fff), color-mix(in srgb, var(--c-lavender) 70%, #fff));border-radius:2px;width:100%;position:relative;overflow:hidden}.polaroid__img,.smart-image__img{object-fit:cover;width:100%;height:100%;transition:opacity .42s var(--ease-out), transform .62s var(--ease-out);display:block}.polaroid:hover .polaroid__img{transform:scale(1.04)}.smart-image__img[data-loaded=false]{opacity:0}.smart-image__placeholder{text-align:center;background:radial-gradient(70% 60% at 30% 25%, color-mix(in srgb, var(--c-blush) 90%, #fff), transparent 70%), linear-gradient(150deg, color-mix(in srgb, var(--c-lavender) 80%, #fff), color-mix(in srgb, var(--c-rose) 45%, #fff));color:color-mix(in srgb, var(--c-burgundy) 78%, transparent);flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:1rem;display:flex;position:absolute;inset:0}.smart-image__placeholder svg{opacity:.75}.smart-image__placeholder strong{font-size:var(--fs-small);font-weight:600}.smart-image__placeholder span{font-size:var(--fs-micro);opacity:.8}.smart-image__skeleton{background:linear-gradient(100deg, color-mix(in srgb, var(--c-lavender) 55%, #fff) 0%, color-mix(in srgb, var(--c-blush) 70%, #fff) 50%, color-mix(in srgb, var(--c-lavender) 55%, #fff) 100%);animation:shimmer 3.2s var(--ease-soft) infinite;background-size:220% 100%;position:absolute;inset:0}.polaroid__caption{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 90%, #000);font-size:clamp(1rem,.9rem + .4vw,1.24rem);line-height:1.3}.polaroid__date{font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb, var(--c-burgundy) 55%, transparent)}.polaroid__zoom{border-radius:var(--r-pill);color:var(--c-ivory);font-size:var(--fs-micro);letter-spacing:.08em;opacity:0;transition:opacity var(--dur-mid) var(--ease-out);background:#28182f9e;align-items:center;gap:.3em;padding:.3em .7em;display:inline-flex;position:absolute;bottom:.7rem;right:.7rem}.polaroid:hover .polaroid__zoom,.polaroid:focus-visible .polaroid__zoom{opacity:1}.gallery__slideshow{width:min(100%,30rem);margin-inline:auto;position:relative}.gallery__slide{position:relative}.gallery__slide .polaroid{rotate:0deg}.gallery__slide-nav{justify-content:center;align-items:center;gap:var(--space-3);margin-top:1.3rem;display:flex}.gallery__dots{align-items:center;gap:.45rem;display:flex}.gallery__dot{border-radius:50%;place-items:center;width:26px;height:26px;display:grid}.gallery__dot i{background:color-mix(in srgb, var(--c-burgundy) 28%, transparent);width:8px;height:8px;transition:transform var(--dur-mid) var(--ease-out), background-color var(--dur-mid) var(--ease-out);border-radius:50%;display:block}.gallery__dot[aria-current=true] i{background:var(--c-burgundy);transform:scale(1.35)}.lightbox{z-index:var(--z-modal);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#100714db;place-items:center;padding:clamp(.9rem,.5rem + 3vw,2.5rem);display:grid;position:fixed;inset:0}.lightbox__inner{overscroll-behavior:contain;border-radius:var(--r-md);background:linear-gradient(178deg, #fffefb, var(--c-ivory));flex-direction:column;gap:.9rem;width:min(100%,46rem);max-height:88dvh;padding:clamp(.9rem,.6rem + 1.6vw,1.4rem);display:flex;position:relative;overflow:auto;box-shadow:0 40px 90px -40px #000000e6}.lightbox__figure{border-radius:var(--r-sm);background:color-mix(in srgb, var(--c-lavender) 60%, #fff);aspect-ratio:4/5;width:100%;position:relative;overflow:hidden}@media (min-width:700px){.lightbox__figure{aspect-ratio:4/3}}.lightbox__caption{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 90%, #000);font-size:clamp(1.05rem,.95rem + .6vw,1.4rem)}.lightbox__meta{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.lightbox__close{z-index:2;width:42px;height:42px;color:var(--c-ivory);background:#28182fb8;border:1px solid #ffffff2e;border-radius:50%;place-items:center;display:grid;position:absolute;top:.6rem;right:.6rem}.lightbox__close:hover{background:#28182fe6}.lightbox__nav{gap:.5rem;display:flex}@media (max-width:480px){.gallery__grid{--tilt-scale:.5;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.55rem 1.1rem;padding-inline:1.1rem}.polaroid{padding:.6rem .6rem .85rem}.letter__body{font-size:clamp(1.06rem,.9rem + .9vw,1.26rem);line-height:1.8}.letter__paper{padding:1.05rem .95rem 1.2rem}}.garden{border-radius:var(--r-lg);flex-direction:column;gap:clamp(.5rem,.3rem + 1vw,1rem);width:100%;min-height:clamp(26rem,19rem + 26vw,34rem);display:flex;position:relative;overflow:hidden}.garden__sun{aspect-ratio:2;background:radial-gradient(closest-side, color-mix(in srgb, var(--c-gold) 40%, transparent), transparent 72%);width:min(120vw,60rem);animation:glow-breathe 9s var(--ease-soft) infinite;pointer-events:none;border-radius:50%;position:absolute;bottom:-14%;left:50%;translate:-50%}.garden__ground{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--c-plum-deep) 78%, transparent) 64%, #120a18);pointer-events:none;height:28%;position:absolute;bottom:0;left:0;right:0}.garden__fireflies{pointer-events:none;position:absolute;inset:0}.garden__firefly{background:color-mix(in srgb, var(--c-gold) 92%, white);width:5px;height:5px;box-shadow:0 0 10px 3px color-mix(in srgb, var(--c-gold) 55%, transparent);animation:float-soft var(--dur,7s) var(--ease-soft) infinite, twinkle var(--twinkle-dur,3s) var(--ease-soft) infinite;animation-delay:var(--delay,0s);border-radius:50%;position:absolute}.garden__upper{z-index:3;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:clamp(.6rem,.4rem + 1vw,1rem);padding:clamp(.75rem,.4rem + 1.6vw,1.5rem) clamp(.5rem,.2rem + 1.6vw,1.25rem) 0;display:flex;position:relative}.garden__card{width:min(100%,32rem);margin-inline:auto;position:relative}.garden__card-inner{text-align:center;flex-direction:column;align-items:center;gap:.75rem;display:flex}.garden__card-message{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-ivory) 94%, transparent);font-size:clamp(1.28rem,1.1rem + 1vw,1.85rem);line-height:1.45}.garden__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.garden__counter{font-size:var(--fs-small);color:var(--c-text-faint);text-align:center}.garden__intro{text-align:center;max-width:32rem;color:var(--c-text-dim);font-size:var(--fs-body)}.garden__bed{z-index:2;transform-origin:bottom;height:clamp(8.5rem,6rem + 9vw,11rem);scale:var(--bed-scale,1);flex:none;justify-content:space-between;align-items:flex-end;gap:.25rem;padding-inline:clamp(.35rem,.1rem + 1.6vw,1.5rem);display:flex;position:relative}.garden__flower{cursor:pointer;transform-origin:bottom;min-width:0;height:100%;transition:translate var(--dur-mid) var(--ease-out), filter var(--dur-mid) var(--ease-out);filter:drop-shadow(0 12px 18px #0a040e80);background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:flex-end;align-items:center;gap:0;padding:0;display:flex;position:relative}.garden__flower:hover,.garden__flower:focus-visible{filter:drop-shadow(0 18px 26px #0a040e99)brightness(1.06);translate:0 -7px}.garden__flower[data-picked=true] .garden__bloom{animation:bloom-pick .9s var(--ease-out) 1}@keyframes bloom-pick{0%{transform:scale(1)}35%{transform:scale(1.18)rotate(-2.5deg)}70%{transform:scale(.97)rotate(1.2deg)}to{transform:scale(1)}}.garden__bloom{z-index:2;flex:none;justify-content:center;margin-bottom:-.4rem;display:flex;position:relative}.garden__stem{z-index:1;flex:auto;justify-content:center;align-items:flex-end;min-height:0;display:flex;position:relative}.garden__stem svg{width:auto;height:100%}.garden__flower-label{font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb, var(--c-ivory) 55%, transparent);white-space:nowrap;opacity:0;transition:opacity var(--dur-mid) var(--ease-out);position:absolute;bottom:-1.5rem;left:50%;translate:-50%}.garden__flower:hover .garden__flower-label,.garden__flower:focus-visible .garden__flower-label{opacity:1}@media (max-width:380px){.garden__bed{--bed-scale:.9}}.poems{flex-direction:column;align-items:center;gap:clamp(1rem,.7rem + 1.4vw,1.7rem);width:min(100%,44rem);margin-inline:auto;display:flex}.poem-card{perspective:1700px;cursor:pointer;background:0 0;border:0;width:100%;height:clamp(20rem,14rem + 22vw,26rem);padding:0;display:block;position:relative}.poem-card__inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .76s var(--ease-out);display:block;position:relative}.poem-card[data-flipped=true] .poem-card__inner{transform:rotateY(180deg)}.poem-card__face{border-radius:var(--r-lg);backface-visibility:hidden;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(.7rem,.4rem + 1.4vw,1.3rem);padding:clamp(1.1rem,.8rem + 2.4vw,2.2rem);display:flex;position:absolute;inset:0;overflow:hidden}.poem-card__face--front{border:1px solid color-mix(in srgb, var(--c-gold) 26%, transparent);background:radial-gradient(80% 70% at 50% 12%, color-mix(in srgb, var(--c-rose) 20%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--c-ivory) 9%, transparent), color-mix(in srgb, var(--c-ivory) 3%, transparent)), color-mix(in srgb, var(--c-plum) 66%, transparent);box-shadow:var(--shadow-lift);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.poem-card__face--back{border:1px solid color-mix(in srgb, var(--c-burgundy) 18%, transparent);background:linear-gradient(178deg, #fffdf9 0%, var(--c-ivory) 48%, color-mix(in srgb, var(--c-blush) 40%, #fff) 100%);box-shadow:var(--shadow-paper);color:var(--c-ink);transform:rotateY(180deg)}.poem-card__number{border:1px solid color-mix(in srgb, var(--c-gold) 46%, transparent);background:color-mix(in srgb, var(--c-plum) 46%, transparent);width:2.6rem;height:2.6rem;font-family:var(--font-display);color:var(--c-gold);border-radius:50%;justify-content:center;align-items:center;font-size:1.05rem;font-weight:700;display:inline-flex}.poem-card__title{font-family:var(--font-display);font-size:var(--fs-h2);color:var(--c-ivory);font-weight:600}.poem-card__flip-hint{font-size:var(--fs-small);letter-spacing:.04em;color:var(--c-text-faint);align-items:center;gap:.45em;display:inline-flex}.poem-card__illustration{justify-content:center;align-items:flex-end;gap:.6rem;min-height:clamp(6rem,4rem + 8vw,8.5rem);display:flex}.poem-lines{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 92%, #000);gap:.28em;font-size:clamp(1.15rem,.95rem + .9vw,1.62rem);line-height:1.62;display:grid}.poem-punchline{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-burgundy) 96%, #000);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--c-rose) 70%, transparent);text-decoration-color:color-mix(in srgb, var(--c-rose) 70%, transparent);text-underline-offset:5px;margin-top:.55rem;font-size:clamp(1.2rem,1rem + 1vw,1.75rem);font-weight:700;text-decoration-thickness:3px}.poem-reaction{border-radius:var(--r-pill);background:color-mix(in srgb, var(--c-blush) 60%, #fff);border:1px solid color-mix(in srgb, var(--c-rose) 40%, transparent);font-size:var(--fs-small);color:color-mix(in srgb, var(--c-burgundy) 88%, #000);text-align:left;align-items:center;gap:.5em;margin-top:.9rem;padding:.4em .9em;display:inline-flex}.poems__nav{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.poems__dots{align-items:center;gap:.4rem;display:flex}.poems__dot{border-radius:50%;place-items:center;width:24px;height:24px;display:grid}.poems__dot i{background:color-mix(in srgb, var(--c-ivory) 26%, transparent);width:7px;height:7px;transition:transform var(--dur-mid) var(--ease-out), background-color var(--dur-mid) var(--ease-out);border-radius:50%;display:block}.poems__dot[aria-current=true] i{background:var(--c-gold);transform:scale(1.4)}.poems__dot[data-favourite=true] i{background:var(--c-rose)}.poems__favourite{z-index:3;border:1px solid color-mix(in srgb, var(--c-gold) 34%, transparent);background:color-mix(in srgb, var(--c-plum) 70%, transparent);width:42px;height:42px;color:color-mix(in srgb, var(--c-ivory) 78%, transparent);transition:color var(--dur-mid) var(--ease-out), border-color var(--dur-mid) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;display:grid;position:absolute;top:.8rem;right:.8rem}.poems__favourite:hover{transform:translateY(-2px)}.poems__favourite[aria-pressed=true]{color:var(--c-gold);border-color:color-mix(in srgb, var(--c-gold) 70%, transparent)}.poems__counter{font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-faint)}@media (max-width:520px){.poem-card{height:clamp(21rem,16rem + 26vw,24rem)}}.wishes{flex-direction:column;align-items:center;gap:clamp(1rem,.7rem + 1.4vw,1.7rem);width:min(100%,48rem);margin-inline:auto;display:flex;position:relative}.wishes__moon{aspect-ratio:1;background:radial-gradient(circle at 40% 34%, #fffdf5 0%, #f7eeda 46%, color-mix(in srgb, var(--c-gold) 45%, transparent) 66%, transparent 74%);width:clamp(5rem,3rem + 12vw,9rem);box-shadow:0 0 70px 20px color-mix(in srgb, var(--c-gold) 22%, transparent);animation:glow-breathe 9s var(--ease-soft) infinite;pointer-events:none;opacity:.9;border-radius:50%;position:absolute;top:-2.4rem;right:clamp(-1rem,-3vw,1rem)}.wishes__flowers{pointer-events:none;filter:drop-shadow(0 10px 18px #08030c99);justify-content:center;align-items:flex-end;gap:clamp(.6rem,.3rem + 2vw,1.6rem);width:100%;display:flex}.wishes__card{text-align:left;flex-direction:column;gap:clamp(.8rem,.5rem + 1.2vw,1.35rem);display:flex}.wishes__paragraph{font-size:clamp(1rem,.94rem + .4vw,1.16rem);line-height:var(--lh-body);color:color-mix(in srgb, var(--c-ivory) 90%, transparent);text-wrap:pretty}.wishes__paragraph--closing{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-gold) 90%, white);font-size:clamp(1.2rem,1rem + 1vw,1.7rem)}.wishes__reveal-dots{align-items:center;gap:.35rem;display:flex}.wishes__reveal-dot{background:color-mix(in srgb, var(--c-ivory) 22%, transparent);width:6px;height:6px;transition:background-color var(--dur-mid) var(--ease-out), transform var(--dur-mid) var(--ease-out);border-radius:50%}.wishes__reveal-dot[data-on=true]{background:var(--c-gold);transform:scale(1.3)}.wishes__moon-label{font-size:var(--fs-small);color:color-mix(in srgb, var(--c-lavender) 78%, white);align-items:center;gap:.45em;display:inline-flex}.wishes__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.hope{border-radius:var(--r-lg);border:1px solid color-mix(in srgb, var(--c-gold) 30%, transparent);background:radial-gradient(80% 70% at 50% 0%, color-mix(in srgb, var(--c-rose) 16%, transparent), transparent 70%), color-mix(in srgb, var(--c-plum) 58%, transparent);width:100%;box-shadow:var(--shadow-lift);text-align:center;flex-direction:column;align-items:center;gap:.6rem;padding:clamp(1.1rem,.8rem + 2vw,2rem);display:flex}.hope__eyebrow{font-size:var(--fs-micro);letter-spacing:.2em;text-transform:uppercase;color:color-mix(in srgb, var(--c-gold) 88%, white);align-items:center;gap:.45em;display:inline-flex}.hope__title{font-family:var(--font-display);color:var(--c-ivory);font-size:clamp(1.2rem,1rem + 1.4vw,1.8rem);font-weight:600;line-height:1.25}.hope__subtitle{font-size:var(--fs-small);color:var(--c-text-dim);max-width:34rem;line-height:1.65}.hope__form,.hope__result{flex-direction:column;align-items:center;gap:.85rem;width:100%;margin-top:.4rem;display:flex;position:relative}.hope__field{text-align:left;flex-direction:column;gap:.4rem;width:100%;display:flex}.hope__label{font-size:var(--fs-small);letter-spacing:.06em;color:var(--c-text-dim);font-weight:500}.hope__input{border-radius:var(--r-md);border:1px solid var(--c-line-soft);background:color-mix(in srgb, var(--c-plum) 55%, transparent);width:100%;color:var(--c-ivory);font-family:var(--font-sans);font-size:var(--fs-body);resize:vertical;min-height:6.5rem;transition:border-color var(--dur-mid) var(--ease-out), box-shadow var(--dur-mid) var(--ease-out);padding:.85rem 1rem;line-height:1.6}.hope__input::placeholder{color:color-mix(in srgb, var(--c-ivory) 38%, transparent)}.hope__input:focus-visible{border-color:color-mix(in srgb, var(--c-gold) 70%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--c-gold) 26%, transparent);outline:none}.hope__hint{font-size:var(--fs-small);color:color-mix(in srgb, var(--c-gold) 88%, white)}.hope__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.hope__stored{font-size:var(--fs-micro);letter-spacing:.08em;color:var(--c-text-faint);text-align:left;max-width:22rem}.hope__score{aspect-ratio:1;background:conic-gradient(from -90deg, color-mix(in srgb, var(--c-gold) 96%, white) 0deg, var(--c-rose) calc(var(--score,0%) * 3.6), color-mix(in srgb, var(--c-ivory) 14%, transparent) calc(var(--score,0%) * 3.6));border-radius:50%;place-items:center;width:clamp(8rem,6rem + 9vw,11rem);transition:background .12s linear;display:grid;position:relative}.hope__score:before{content:"";background:color-mix(in srgb, var(--c-plum) 88%, #000);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--c-gold) 22%, transparent);border-radius:50%;position:absolute;inset:7px}.hope__score-inner{z-index:1;place-items:center;display:grid;position:relative}.hope__score-value{font-family:var(--font-display);color:var(--c-ivory);text-shadow:0 0 18px color-mix(in srgb, var(--c-gold) 55%, transparent);font-size:clamp(1.5rem,1.2rem + 2vw,2.3rem);font-weight:700;line-height:1}.hope__score-label{font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-faint);text-align:center}.hope__spinner{color:var(--c-gold);animation:1.6s linear infinite spin-slow}.hope__saving{font-size:var(--fs-small);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--c-gold) 88%, white)}.hope__saved-title{font-family:var(--font-display);font-size:var(--fs-h3);color:var(--c-ivory);font-weight:600}.hope__quote{border-radius:var(--r-md);border:1px dashed color-mix(in srgb, var(--c-gold) 34%, transparent);background:color-mix(in srgb, var(--c-gold) 8%, transparent);max-width:34rem;font-family:var(--font-hand);color:color-mix(in srgb, var(--c-ivory) 94%, transparent);padding:.85rem 1.1rem;font-size:clamp(1.15rem,1rem + .9vw,1.6rem);line-height:1.5}.hope__message{max-width:34rem;font-size:var(--fs-body);line-height:var(--lh-body);color:color-mix(in srgb, var(--c-ivory) 88%, transparent)}@media (max-width:480px){.hope__stored{text-align:center}}.finale{flex-direction:column;align-items:center;gap:clamp(1rem,.7rem + 1.4vw,1.7rem);width:min(100%,50rem);margin-inline:auto;display:flex;position:relative}.finale__stage{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(.8rem,.5rem + 1.2vw,1.4rem);width:100%;min-height:clamp(20rem,14rem + 22vw,26rem);display:flex;position:relative}.finale__heart{color:color-mix(in srgb, var(--c-rose) 92%, white);filter:drop-shadow(0 0 30px color-mix(in srgb, var(--c-rose) 60%, transparent));place-items:center;display:grid;position:relative}.finale__heart-glow{background:radial-gradient(circle, color-mix(in srgb, var(--c-rose) 42%, transparent), transparent 66%);animation:glow-breathe 5s var(--ease-soft) infinite;pointer-events:none;border-radius:50%;position:absolute;inset:-60%}.finale__wish{flex-direction:column;gap:.85rem;max-width:40rem;display:flex}.finale__wish p{font-size:clamp(1rem,.94rem + .4vw,1.16rem);line-height:var(--lh-body);color:color-mix(in srgb, var(--c-ivory) 90%, transparent)}.finale__closing{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-gold) 92%, white);font-size:clamp(1.3rem,1.05rem + 1.2vw,1.95rem)}.finale__polaroids{z-index:0;pointer-events:none;position:absolute;inset:0}.finale>:not(.finale__polaroids){z-index:1;position:relative}.finale__polaroid{aspect-ratio:4/5;background:linear-gradient(178deg, #fffefb, color-mix(in srgb, var(--c-ivory) 92%, #fff));width:clamp(3.8rem,2.6rem + 5vw,6.2rem);rotate:var(--rotate,0deg);opacity:.9;border-radius:3px;padding:.3rem .3rem .95rem;position:absolute;overflow:hidden;box-shadow:0 16px 30px -18px #08030cd9}.finale__polaroid img{object-fit:cover;border-radius:2px;width:100%;height:100%}.finale__flowers{pointer-events:none;filter:drop-shadow(0 10px 20px #08030ca6);justify-content:center;align-items:flex-end;gap:clamp(.5rem,.2rem + 2vw,1.4rem);width:100%;display:flex}.finale__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.7rem;display:flex}.finale__ribbon{margin-bottom:.3rem}.hug{z-index:var(--z-modal);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.hug__veil{background:radial-gradient(circle,#18081adb,#060209f7);position:absolute;inset:0}.hug__glow{aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--c-rose) 40%, transparent), transparent 62%);pointer-events:none;border-radius:50%;width:min(150vw,70rem);position:absolute;top:50%;left:50%;translate:-50% -50%}.hug__content{z-index:2;text-align:center;flex-direction:column;align-items:center;gap:clamp(.9rem,.6rem + 1.6vw,1.6rem);width:min(100%,40rem);padding:clamp(1.2rem,.8rem + 3vw,2.6rem);display:flex;position:relative}.hug__zoomer{color:color-mix(in srgb, var(--c-rose) 88%, white);pointer-events:none;position:absolute;top:50%;left:50%;translate:-50% -50%}.hug__embrace{place-items:center;width:clamp(12rem,8rem + 20vw,18rem);height:clamp(7rem,5rem + 10vw,10rem);display:grid;position:relative}.hug__heart{filter:drop-shadow(0 0 22px color-mix(in srgb, var(--c-rose) 55%, transparent));position:absolute;top:50%;translate:0 -50%}.hug__heart[data-side=left]{color:var(--c-rose);left:0}.hug__heart[data-side=right]{color:var(--c-gold);right:0}.hug__spark{color:color-mix(in srgb, var(--c-gold) 92%, white);position:absolute;top:50%;left:50%;translate:-50% -50%}.hug__line{font-family:var(--font-display);letter-spacing:-.01em;color:var(--c-ivory);text-shadow:0 0 26px color-mix(in srgb, var(--c-rose) 60%, transparent);font-size:clamp(1.4rem,1.1rem + 2.2vw,2.6rem);font-weight:600;line-height:1.24}.hug__closing{font-family:var(--font-hand);color:color-mix(in srgb, var(--c-blush) 92%, white);max-width:30rem;font-size:clamp(1.25rem,1.05rem + 1.1vw,1.85rem);line-height:1.45}.hug__note{font-size:var(--fs-small);color:var(--c-text-faint);max-width:28rem}@media (max-width:620px){.finale__polaroid[data-edge=far]{display:none}}.decor-layer{z-index:var(--z-decor);pointer-events:none;position:fixed;inset:0;overflow:hidden}.decor-layer__item{will-change:transform, opacity;position:absolute}.decor-star{width:var(--size,3px);height:var(--size,3px);background:var(--c-ivory);box-shadow:0 0 6px 1px color-mix(in srgb, var(--c-ivory) 70%, transparent);animation:twinkle var(--twinkle-dur,3.6s) var(--ease-soft) infinite;animation-delay:var(--delay,0s);border-radius:50%}.decor-star--gold{background:var(--c-gold);box-shadow:0 0 8px 2px color-mix(in srgb, var(--c-gold) 70%, transparent)}.decor-sparkle{color:color-mix(in srgb, var(--c-gold) 92%, white);animation:sparkle-out var(--twinkle-dur,4.2s) var(--ease-soft) infinite;animation-delay:var(--delay,0s)}.decor-heart{color:var(--color,var(--c-rose));opacity:0;animation:drift-up var(--dur,12s) linear infinite;animation-delay:var(--delay,0s);filter:drop-shadow(0 4px 10px color-mix(in srgb, var(--c-rose) 40%, transparent))}.decor-heart--soft{opacity:.32;filter:none}.decor-petal{opacity:0;animation:petal-fall var(--dur,14s) linear infinite;animation-delay:var(--delay,0s)}.decor-particle{width:var(--size,4px);height:var(--size,4px);background:radial-gradient(circle, color-mix(in srgb, var(--c-gold) 95%, white), transparent 68%);opacity:0;animation:particle-drift var(--dur,9s) linear infinite;animation-delay:var(--delay,0s);border-radius:50%}.decor-bokeh{background:radial-gradient(circle at 50% 50%, var(--color,color-mix(in srgb, var(--c-rose) 40%, transparent)), transparent 70%);filter:blur(10px);opacity:var(--opacity,.28);animation:float-soft var(--dur,16s) var(--ease-soft) infinite;animation-delay:var(--delay,0s);border-radius:50%}.decor-ray{background:linear-gradient(180deg, color-mix(in srgb, var(--c-gold) 22%, transparent), transparent 78%);filter:blur(6px);transform-origin:top;animation:sway var(--dur,12s) var(--ease-soft) infinite;animation-delay:var(--delay,0s)}.confetti-layer{z-index:var(--z-overlay);pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti{will-change:transform, opacity;position:absolute}.confetti--fall{width:var(--w,8px);height:var(--h,14px);border-radius:var(--r,2px);background:var(--color);opacity:0;animation:confetti-fall var(--dur,4.4s) linear var(--delay,0s) forwards;top:0}.confetti--burst{width:var(--w,9px);height:var(--h,9px);border-radius:var(--r,50%);background:var(--color);opacity:0;animation:confetti-burst var(--dur,2.2s) var(--ease-out) var(--delay,0s) forwards}.confetti--petal{background:var(--color);opacity:0;width:10px;height:14px;animation:confetti-fall var(--dur,5.2s) linear var(--delay,0s) forwards;border-radius:60% 0}.rising-heart{color:var(--color,var(--c-rose));pointer-events:none;opacity:0;animation:drift-up var(--dur,8s) linear var(--delay,0s) infinite;position:fixed;bottom:-6vh}.balloon-layer{z-index:var(--z-overlay);pointer-events:none;position:fixed;inset:0;overflow:hidden}.balloon{opacity:0;animation:balloon-rise var(--dur,11s) linear var(--delay,0s) forwards;position:absolute;bottom:-26vh}.balloon__body{transform-origin:bottom;display:block}.balloon__body svg{filter:drop-shadow(0 10px 18px #0a040e6b);display:block}@keyframes balloon-rise{0%{opacity:0;transform:translate(0,0)rotate(-3deg)scale(.92)}6%{opacity:1}92%{opacity:1}to{opacity:0;transform:translate3d(var(--drift-x,30px), -128vh, 0) rotate(4deg) scale(1)}}.corner-floral{width:clamp(5rem,3rem + 9vw,11rem);height:auto;color:color-mix(in srgb, var(--c-rose) 72%, transparent);opacity:.5;pointer-events:none;position:fixed}.corner-floral[data-corner=tl]{top:0;left:0}.corner-floral[data-corner=tr]{top:0;right:0;transform:scaleX(-1)}.corner-floral[data-corner=bl]{bottom:0;left:0;transform:scaleY(-1)}.corner-floral[data-corner=br]{bottom:0;right:0;transform:scale(-1)}@media (max-width:480px){.corner-floral[data-corner=bl],.corner-floral[data-corner=br]{display:none}}.hud{z-index:var(--z-hud);pointer-events:none;position:fixed;inset:0}.hud>*{pointer-events:auto}.hud__top{top:max(var(--hud-inset), env(safe-area-inset-top));left:var(--hud-inset);right:var(--hud-inset);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex;position:absolute}.hud__actions{align-items:center;gap:var(--space-2);display:flex}.hud .icon-btn{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.hud__sound{display:inline-flex}.chapters{left:50%;bottom:max(var(--hud-inset), env(safe-area-inset-bottom));border-radius:var(--r-pill);border:1px solid var(--c-line-soft);background:color-mix(in srgb, var(--c-plum) 68%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-soft);max-width:calc(100vw - 2 * var(--hud-inset));transition:transform .34s var(--ease-out), opacity .34s var(--ease-out);align-items:center;gap:clamp(.5rem,.3rem + .7vw,.9rem);padding:.42rem .85rem;display:flex;position:absolute;transform:translate(-50%)}.chapters[data-hidden=true]{opacity:0;pointer-events:none;transform:translate(-50%,calc(100% + 3rem))}.chapters__label{font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-dim);white-space:nowrap;display:none}@media (min-width:820px){.chapters__label{display:block}}@media (max-width:620px){.chapters{bottom:calc(max(var(--hud-inset), env(safe-area-inset-bottom)) + 58px)}}.chapters__list{align-items:center;gap:0;display:flex}.chapters__item{width:22px;height:22px;color:inherit;border-radius:50%;place-items:center;display:grid}.chapters__dot{border:1px solid color-mix(in srgb, var(--c-gold) 45%, transparent);width:7px;height:7px;transition:background-color var(--dur-mid) var(--ease-out), transform var(--dur-mid) var(--ease-out);background:0 0;border-radius:50%}.chapters__item:hover .chapters__dot{background:color-mix(in srgb, var(--c-gold) 45%, transparent)}.chapters__item[aria-current=step] .chapters__dot{background:linear-gradient(135deg, var(--c-gold), var(--c-rose));border-color:#0000;transform:scale(1.42)}.chapters__item[data-visited=true] .chapters__dot{background:color-mix(in srgb, var(--c-rose) 62%, transparent)}.app[data-light=true] .scene__header{color:var(--c-ink)}.app[data-light=true] .scene__header .lede{color:color-mix(in srgb, var(--c-ink) 76%, transparent)}.app[data-light=true] .scene__header .eyebrow{color:color-mix(in srgb, var(--c-burgundy) 86%, #000)}.app[data-light=true] .scene__aside{color:color-mix(in srgb, var(--c-ink) 58%, transparent)}.app[data-light=true] .display,.app[data-light=true] .h1,.app[data-light=true] .h2,.app[data-light=true] .h3{color:color-mix(in srgb, var(--c-ink) 96%, transparent)}.app[data-light=true] .btn--ghost{color:var(--c-ink);border-color:color-mix(in srgb, var(--c-burgundy) 26%, transparent);background:#ffffffad}.app[data-light=true] .btn--ghost:hover{border-color:color-mix(in srgb, var(--c-burgundy) 45%, transparent);background:#ffffffeb}.app[data-light=true] .tag{border-color:color-mix(in srgb, var(--c-burgundy) 18%, transparent);color:color-mix(in srgb, var(--c-ink) 72%, transparent);background:#ffffffb8}.app[data-light=true] .note{border-color:color-mix(in srgb, var(--c-burgundy) 22%, transparent);background:color-mix(in srgb, var(--c-gold) 20%, #fff);color:color-mix(in srgb, var(--c-ink) 80%, transparent)}.app[data-light=true] .note__icon{color:color-mix(in srgb, var(--c-burgundy) 62%, transparent)}.app[data-light=true] .divider{color:color-mix(in srgb, var(--c-burgundy) 42%, transparent)}.app[data-light=true] .stat{border-color:color-mix(in srgb, var(--c-burgundy) 16%, transparent);background:#ffffffa8}.app[data-light=true] .stat__value{color:var(--c-ink)}.app[data-light=true] .stat__label{color:color-mix(in srgb, var(--c-ink) 55%, transparent)}.app[data-light=true] .chapters{border-color:color-mix(in srgb, var(--c-burgundy) 18%, transparent);background:#ffffffbd}.app[data-light=true] .chapters__label{color:color-mix(in srgb, var(--c-ink) 62%, transparent)}.app[data-light=true] .chapters__dot{border-color:color-mix(in srgb, var(--c-burgundy) 35%, transparent)}.app[data-light=true] .chapters__item:hover .chapters__dot{background:color-mix(in srgb, var(--c-burgundy) 30%, transparent)}.app[data-light=true] .chapters__item[data-visited=true] .chapters__dot{background:color-mix(in srgb, var(--c-rose) 78%, transparent)}.app[data-light=true] .icon-btn{color:var(--c-ink);border-color:color-mix(in srgb, var(--c-burgundy) 20%, transparent);background:#ffffffc2}.app[data-light=true] .icon-btn:hover{border-color:color-mix(in srgb, var(--c-burgundy) 40%, transparent);background:#fffffff2}.app[data-light=true] .music-player__toggle{color:var(--c-ink);border-color:color-mix(in srgb, var(--c-burgundy) 22%, transparent);background:#fffc}.app[data-light=true] .music-player__panel{border-color:color-mix(in srgb, var(--c-burgundy) 16%, transparent);background:linear-gradient(178deg, #fffdf9, var(--c-ivory));box-shadow:var(--shadow-paper)}.app[data-light=true] .music-player__title{color:var(--c-ink)}.app[data-light=true] .music-player__artist,.app[data-light=true] .music-player__note{color:color-mix(in srgb, var(--c-ink) 62%, transparent)}.app[data-light=true] .music-player__state{color:color-mix(in srgb, var(--c-burgundy) 82%, transparent)}.app[data-light=true] .viz__bar{background:linear-gradient(180deg, var(--c-rose), var(--c-burgundy))}:root{--c-blush:#f8dce5;--c-rose:#e99aaf;--c-burgundy:#7e2948;--c-gold:#e8c98c;--c-ivory:#fff8f0;--c-lavender:#e8e1f5;--c-plum:#28182f;--c-plum-deep:color-mix(in srgb, var(--c-plum) 78%, #000);--c-plum-soft:color-mix(in srgb, var(--c-plum) 72%, var(--c-burgundy));--c-rose-deep:color-mix(in srgb, var(--c-rose) 62%, var(--c-burgundy));--c-ink:#3b2130;--c-text:var(--c-ivory);--c-text-dim:color-mix(in srgb, var(--c-ivory) 68%, transparent);--c-text-faint:color-mix(in srgb, var(--c-ivory) 45%, transparent);--c-line:color-mix(in srgb, var(--c-gold) 34%, transparent);--c-line-soft:color-mix(in srgb, var(--c-gold) 18%, transparent);--font-display:"Playfair Display", Georgia, "Times New Roman", serif;--font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-hand:"Caveat", "Segoe Script", "Bradley Hand", cursive;--fs-display:clamp(2.05rem, 1.15rem + 4.4vw, 4.5rem);--fs-h1:clamp(1.65rem, 1.1rem + 3vw, 3.1rem);--fs-h2:clamp(1.3rem, 1.05rem + 1.5vw, 2.05rem);--fs-h3:clamp(1.1rem, 1rem + .7vw, 1.4rem);--fs-body:clamp(.95rem, .9rem + .28vw, 1.08rem);--fs-small:clamp(.78rem, .75rem + .16vw, .875rem);--fs-micro:.7rem;--fs-hand:clamp(1.15rem, 1rem + 1.05vw, 1.62rem);--fs-count:clamp(2.6rem, 1rem + 11vw, 6.5rem);--lh-tight:1.12;--lh-snug:1.32;--lh-body:1.72;--lh-letter:1.95;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--r-xs:8px;--r-sm:12px;--r-md:18px;--r-lg:26px;--r-xl:38px;--r-pill:999px;--shadow-soft:0 12px 30px -18px #170a16d9;--shadow-lift:0 26px 60px -28px #170a16e6, 0 4px 14px -6px #170a1680;--shadow-paper:0 18px 40px -22px #3c182c8c, 0 2px 6px -2px #3c182c40;--glow-rose:0 0 0 1px color-mix(in srgb, var(--c-rose) 35%, transparent), 0 18px 45px -18px color-mix(in srgb, var(--c-rose) 75%, transparent);--glow-gold:0 0 0 1px color-mix(in srgb, var(--c-gold) 45%, transparent), 0 20px 50px -20px color-mix(in srgb, var(--c-gold) 55%, transparent);--content-min:300px;--content-max:72rem;--content-narrow:42rem;--hud-inset:clamp(.75rem, .4rem + 1.4vw, 1.75rem);--ease-out:cubic-bezier(.22, .9, .28, 1);--ease-soft:cubic-bezier(.4, .1, .2, 1);--dur-fast:.16s;--dur-mid:.28s;--dur-slow:.62s;--z-decor:1;--z-content:5;--z-hud:40;--z-overlay:60;--z-modal:80}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}html,body,#root{min-height:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--c-text);background-color:var(--c-plum);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;overscroll-behavior-y:none;overflow-x:hidden}img,svg,video,canvas{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}a{color:var(--c-gold);text-underline-offset:.22em}a:hover{color:var(--c-blush)}ul,ol{list-style:none}:focus-visible{outline:3px solid color-mix(in srgb, var(--c-gold) 90%, white);outline-offset:3px;border-radius:var(--r-xs)}::selection{background:color-mix(in srgb, var(--c-rose) 55%, transparent);color:var(--c-ivory)}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--c-rose) 45%, transparent) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--c-rose) 45%, transparent);border-radius:var(--r-pill)}.noscript-fallback{place-content:center;gap:var(--space-4);min-height:100vh;padding:var(--space-6);text-align:center;color:var(--c-ivory);font-family:var(--font-sans);display:grid}.app{isolation:isolate;flex-direction:column;min-height:100dvh;display:flex;position:relative}.backdrop{z-index:-2;background:var(--c-plum);position:fixed;inset:0;overflow:hidden}.backdrop__layer{opacity:0;will-change:opacity;position:absolute;inset:-10%}.backdrop__layer[data-tone=night]{background:radial-gradient(58% 48% at 50% 8%, color-mix(in srgb, var(--c-burgundy) 62%, transparent), transparent 70%), radial-gradient(46% 40% at 12% 78%, color-mix(in srgb, var(--c-rose) 30%, transparent), transparent 72%), radial-gradient(52% 42% at 88% 64%, color-mix(in srgb, var(--c-lavender) 22%, transparent), transparent 74%), linear-gradient(168deg, var(--c-plum) 0%, var(--c-plum-deep) 62%, #170c1c 100%)}.backdrop__layer[data-tone=paper]{background:radial-gradient(44% 38% at 22% 18%, color-mix(in srgb, var(--c-gold) 34%, transparent), transparent 72%), radial-gradient(56% 44% at 78% 84%, color-mix(in srgb, var(--c-blush) 46%, transparent), transparent 74%), linear-gradient(172deg, #fff6ec 0%, color-mix(in srgb, var(--c-blush) 62%, #fff) 52%, color-mix(in srgb, var(--c-lavender) 58%, #fff) 100%)}.backdrop__layer[data-tone=scrapbook]{background:radial-gradient(48% 40% at 16% 12%, color-mix(in srgb, var(--c-blush) 66%, transparent), transparent 72%), radial-gradient(52% 44% at 86% 26%, color-mix(in srgb, var(--c-lavender) 60%, transparent), transparent 74%), radial-gradient(60% 46% at 50% 96%, color-mix(in srgb, var(--c-gold) 34%, transparent), transparent 76%), linear-gradient(176deg, #fffaf5 0%, color-mix(in srgb, var(--c-blush) 40%, #fff) 60%, color-mix(in srgb, var(--c-lavender) 34%, #fff) 100%)}.backdrop__layer[data-tone=dawn]{background:radial-gradient(50% 44% at 50% 0%, color-mix(in srgb, var(--c-gold) 46%, transparent), transparent 70%), radial-gradient(46% 40% at 10% 88%, color-mix(in srgb, var(--c-rose) 44%, transparent), transparent 74%), radial-gradient(50% 42% at 92% 72%, color-mix(in srgb, var(--c-lavender) 34%, transparent), transparent 76%), linear-gradient(170deg, color-mix(in srgb, var(--c-burgundy) 72%, #2a1226) 0%, var(--c-plum) 55%, #1b0f22 100%)}.backdrop__layer[data-tone=garden]{background:radial-gradient(56% 40% at 50% 100%, color-mix(in srgb, var(--c-gold) 40%, transparent), transparent 72%), radial-gradient(44% 38% at 18% 16%, color-mix(in srgb, var(--c-lavender) 30%, transparent), transparent 74%), radial-gradient(50% 44% at 84% 30%, color-mix(in srgb, var(--c-rose) 40%, transparent), transparent 76%), linear-gradient(172deg, color-mix(in srgb, var(--c-burgundy) 54%, #241426) 0%, var(--c-plum) 58%, #170d1e 100%)}.backdrop__layer[data-tone=moon]{background:radial-gradient(28% 26% at 74% 14%, color-mix(in srgb, var(--c-ivory) 46%, transparent), transparent 70%), radial-gradient(52% 44% at 50% 108%, color-mix(in srgb, var(--c-burgundy) 52%, transparent), transparent 72%), linear-gradient(180deg, #150c1d 0%, color-mix(in srgb, var(--c-plum) 88%, #0b0716) 58%, #12091b 100%)}.backdrop__layer[data-tone=finale]{background:radial-gradient(44% 38% at 50% 34%, color-mix(in srgb, var(--c-rose) 44%, transparent), transparent 72%), radial-gradient(38% 32% at 50% 96%, color-mix(in srgb, var(--c-gold) 42%, transparent), transparent 74%), radial-gradient(60% 50% at 50% 50%, color-mix(in srgb, var(--c-burgundy) 40%, transparent), transparent 76%), linear-gradient(180deg, #120a19 0%, var(--c-plum) 52%, #1d0f20 100%)}.backdrop__grain{z-index:-1;pointer-events:none;opacity:.5;mix-blend-mode:normal;background-image:radial-gradient(120% 100%,#0000 42%,#0c050e8c 100%),repeating-conic-gradient(#ffffff06 0deg .5deg,#0000 .5deg 1.6deg);position:fixed;inset:0}.app__stage{z-index:var(--z-content);padding:clamp(3.4rem, 2rem + 5vw, 5.5rem) var(--space-5) clamp(4.5rem, 3rem + 6vw, 6.5rem);flex-direction:column;flex:1;display:flex;position:relative}.scene{flex:1;justify-content:center;width:100%;display:flex}.scene__inner{width:100%;max-width:var(--content-max);flex-direction:column;align-items:center;gap:clamp(1.5rem,1rem + 2vw,2.75rem);margin:0 auto;display:flex}.scene__inner--narrow{max-width:var(--content-narrow)}.scene__footer{justify-content:center;align-items:center;gap:var(--space-3);flex-wrap:wrap;width:100%;display:flex}.stack{gap:var(--space-4);flex-direction:column;display:flex}.stack--tight{gap:var(--space-2)}.eyebrow{align-items:center;gap:var(--space-3);font-size:var(--fs-small);letter-spacing:.3em;text-transform:uppercase;color:color-mix(in srgb, var(--c-gold) 92%, white);text-align:center;font-weight:500;display:inline-flex}.eyebrow:before,.eyebrow:after{content:"";background:linear-gradient(90deg, transparent, var(--c-line), transparent);width:clamp(1.4rem,1rem + 3vw,3.4rem);height:1px}.eyebrow[data-align=center]{justify-content:center}.display{font-family:var(--font-display);font-size:var(--fs-display);font-weight:600;line-height:var(--lh-tight);letter-spacing:-.015em;text-wrap:balance}.h1{font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.012em;text-wrap:balance;font-weight:600;line-height:1.2}.h2{font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.008em;text-wrap:balance;font-weight:600;line-height:1.26}.h3{font-family:var(--font-display);font-size:var(--fs-h3);font-weight:600;line-height:1.34}.lede{color:var(--c-text-dim);text-wrap:pretty;font-size:clamp(1rem,.95rem + .35vw,1.18rem);line-height:1.78}.muted{color:var(--c-text-dim)}.faint{color:var(--c-text-faint)}.hand{font-family:var(--font-hand);font-size:var(--fs-hand);font-weight:500;line-height:1.45}.small{font-size:var(--fs-small)}.micro{font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase}.gilded{background:linear-gradient(96deg, color-mix(in srgb, var(--c-gold) 96%, white) 0%, var(--c-blush) 42%, color-mix(in srgb, var(--c-rose) 88%, white) 78%, color-mix(in srgb, var(--c-gold) 92%, white) 100%);color:#0000;animation:shimmer 9s var(--ease-soft) infinite;background-size:220% 100%;-webkit-background-clip:text;background-clip:text}.on-paper{color:var(--c-ink)}.on-paper .lede,.on-paper .muted{color:color-mix(in srgb, var(--c-ink) 76%, transparent)}.on-paper .faint{color:color-mix(in srgb, var(--c-ink) 55%, transparent)}.on-paper .eyebrow{color:color-mix(in srgb, var(--c-burgundy) 88%, #000)}.on-paper .eyebrow:before,.on-paper .eyebrow:after{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--c-burgundy) 40%, transparent), transparent)}.btn{border-radius:var(--r-pill);min-height:48px;font-family:var(--font-sans);letter-spacing:.02em;text-align:center;text-wrap:balance;color:var(--c-ivory);transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-mid) var(--ease-out), background-color var(--dur-mid) var(--ease-out), border-color var(--dur-mid) var(--ease-out), filter var(--dur-mid) var(--ease-out);will-change:transform;border:1px solid #0000;justify-content:center;align-items:center;gap:.6em;padding:.72em 1.5em;font-size:clamp(.9rem,.86rem + .2vw,1rem);font-weight:600;text-decoration:none;display:inline-flex;position:relative}.btn:active{transform:translateY(1px)scale(.995)}.btn[disabled],.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn--primary{background:linear-gradient(180deg, #ffffff38, #fff0 46%), linear-gradient(135deg, var(--c-rose) 0%, var(--c-burgundy) 100%);box-shadow:var(--glow-rose), inset 0 1px 0 #ffffff47}.btn--primary:hover{filter:brightness(1.07)saturate(1.05);box-shadow:var(--glow-rose), 0 26px 50px -22px color-mix(in srgb, var(--c-rose) 80%, transparent), inset 0 1px 0 #ffffff52;transform:translateY(-2px)}.btn--gold{background:linear-gradient(180deg, #fff6, #fff0 46%), linear-gradient(135deg, color-mix(in srgb, var(--c-gold) 92%, white) 0%, var(--c-gold) 100%);color:#4a2413;box-shadow:var(--glow-gold), inset 0 1px 0 #ffffff8c}.btn--gold:hover{filter:brightness(1.05);transform:translateY(-2px)}.btn--ghost{border-color:var(--c-line);background:color-mix(in srgb, var(--c-ivory) 6%, transparent);color:var(--c-text);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.btn--ghost:hover{border-color:color-mix(in srgb, var(--c-gold) 62%, transparent);background:color-mix(in srgb, var(--c-ivory) 11%, transparent);transform:translateY(-2px)}.on-paper .btn--ghost{color:var(--c-ink);border-color:color-mix(in srgb, var(--c-burgundy) 28%, transparent);background:#fff9}.on-paper .btn--ghost:hover{border-color:color-mix(in srgb, var(--c-burgundy) 45%, transparent);background:#ffffffe6}.btn--quiet{min-height:40px;font-size:var(--fs-small);color:var(--c-text-dim);border-color:var(--c-line-soft);background:color-mix(in srgb, var(--c-ivory) 4%, transparent);padding:.45em .95em;font-weight:500}.btn--quiet:hover{color:var(--c-text);border-color:var(--c-line)}.on-paper .btn--quiet{color:color-mix(in srgb, var(--c-ink) 72%, transparent);border-color:color-mix(in srgb, var(--c-burgundy) 20%, transparent)}.btn--block{width:100%}.btn--lg{letter-spacing:.04em;min-height:56px;padding:.85em 2em;font-size:clamp(.95rem,.9rem + .3vw,1.08rem)}.btn__pulse{border-radius:inherit;border:1px solid color-mix(in srgb, var(--c-gold) 50%, transparent);opacity:0;pointer-events:none;position:absolute;inset:-3px}.btn--primary .btn__pulse,.btn--gold .btn__pulse{animation:pulse-ring 3.4s var(--ease-out) infinite}.panel{border-radius:var(--r-lg);border:1px solid var(--c-line-soft);background:linear-gradient(180deg, color-mix(in srgb, var(--c-ivory) 8%, transparent), color-mix(in srgb, var(--c-ivory) 3%, transparent)), color-mix(in srgb, var(--c-plum) 62%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);width:100%;box-shadow:var(--shadow-lift);padding:clamp(1.35rem,1rem + 2.6vw,2.9rem);position:relative}.panel--glass{border-color:color-mix(in srgb, var(--c-gold) 26%, transparent);background:linear-gradient(180deg, #ffffff29, #ffffff0d), color-mix(in srgb, var(--c-plum) 40%, transparent)}.panel--paper{border-color:color-mix(in srgb, var(--c-burgundy) 14%, transparent);background:linear-gradient(174deg, #fffdf9 0%, var(--c-ivory) 46%, color-mix(in srgb, var(--c-blush) 42%, #fff) 100%);box-shadow:var(--shadow-paper);-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--c-ink)}.panel--soft{border-color:color-mix(in srgb, var(--c-gold) 18%, transparent);background:color-mix(in srgb, var(--c-ivory) 5%, transparent);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.panel__corner{width:clamp(1.6rem,1rem + 2.4vw,2.9rem);height:clamp(1.6rem,1rem + 2.4vw,2.9rem);color:color-mix(in srgb, var(--c-gold) 62%, transparent);pointer-events:none;position:absolute}.panel__corner[data-corner=tl]{top:.55rem;left:.55rem}.panel__corner[data-corner=tr]{top:.55rem;right:.55rem;transform:scaleX(-1)}.panel__corner[data-corner=bl]{bottom:.55rem;left:.55rem;transform:scaleY(-1)}.panel__corner[data-corner=br]{bottom:.55rem;right:.55rem;transform:scale(-1)}.on-paper .panel__corner,.panel--paper .panel__corner{color:color-mix(in srgb, var(--c-burgundy) 38%, transparent)}.divider{justify-content:center;align-items:center;gap:var(--space-3);width:100%;color:color-mix(in srgb, var(--c-gold) 55%, transparent);display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(90deg,#0000,currentColor,#0000);flex:1;max-width:8rem;height:1px}.tag{border-radius:var(--r-pill);border:1px solid var(--c-line-soft);background:color-mix(in srgb, var(--c-ivory) 6%, transparent);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--c-text-dim);align-items:center;gap:.4em;padding:.3em .8em;font-weight:500;display:inline-flex}.on-paper .tag{border-color:color-mix(in srgb, var(--c-burgundy) 18%, transparent);color:color-mix(in srgb, var(--c-ink) 72%, transparent);background:#ffffffb3}.note{border-radius:var(--r-sm);border:1px dashed color-mix(in srgb, var(--c-gold) 32%, transparent);background:color-mix(in srgb, var(--c-gold) 7%, transparent);font-size:var(--fs-small);color:var(--c-text-dim);text-align:left;align-items:flex-start;gap:.6em;padding:.7em 1em;line-height:1.6;display:flex}.on-paper .note{border-color:color-mix(in srgb, var(--c-burgundy) 22%, transparent);background:color-mix(in srgb, var(--c-gold) 18%, #fff);color:color-mix(in srgb, var(--c-ink) 78%, transparent)}.note__icon{color:color-mix(in srgb, var(--c-gold) 80%, transparent);flex:none;margin-top:.15em}.on-paper .note__icon{color:color-mix(in srgb, var(--c-burgundy) 62%, transparent)}.field{text-align:left;flex-direction:column;gap:.5em;width:100%;display:flex}.field__label{font-size:var(--fs-small);letter-spacing:.06em;color:var(--c-text-dim);font-weight:500}.on-paper .field__label{color:color-mix(in srgb, var(--c-ink) 70%, transparent)}input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:26px}input[type=range]::-webkit-slider-runnable-track{border-radius:var(--r-pill);background:linear-gradient(90deg, color-mix(in srgb, var(--c-rose) 80%, transparent), color-mix(in srgb, var(--c-gold) 80%, transparent));height:6px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--c-ivory);border:2px solid var(--c-burgundy);border-radius:50%;width:18px;height:18px;margin-top:-6px;box-shadow:0 2px 8px -2px #0009}input[type=range]::-moz-range-track{border-radius:var(--r-pill);background:linear-gradient(90deg, var(--c-rose), var(--c-gold));height:6px}input[type=range]::-moz-range-thumb{background:var(--c-ivory);border:2px solid var(--c-burgundy);border-radius:50%;width:16px;height:16px}.icon-btn{border:1px solid var(--c-line-soft);background:color-mix(in srgb, var(--c-plum) 55%, transparent);width:44px;height:44px;color:var(--c-text);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;gap:.45em;display:inline-flex}.icon-btn:hover{border-color:color-mix(in srgb, var(--c-gold) 55%, transparent);background:color-mix(in srgb, var(--c-plum) 72%, transparent);transform:translateY(-2px)}.icon-btn[aria-pressed=true]{border-color:color-mix(in srgb, var(--c-gold) 70%, transparent);background:color-mix(in srgb, var(--c-rose) 34%, transparent)}.icon-btn--wide{border-radius:var(--r-pill);width:auto;padding:0 1em}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:var(--z-modal);border-radius:var(--r-pill);background:var(--c-gold);color:#40200f;transition:top var(--dur-mid) var(--ease-out);padding:.7em 1.4em;font-weight:600;position:absolute;top:-100px;left:50%;transform:translate(-50%)}.skip-link:focus-visible{top:.8rem}.decor,.decor *{pointer-events:none!important}@keyframes shimmer{0%,to{background-position:0%}50%{background-position:100%}}@keyframes pulse-ring{0%{opacity:0;transform:scale(.97)}35%{opacity:.85}to{opacity:0;transform:scale(1.06)}}@keyframes twinkle{0%,to{opacity:.18;transform:scale(.82)}50%{opacity:.95;transform:scale(1.12)}}@keyframes drift-up{0%{opacity:0;transform:translate(0,0)scale(.7)rotate(0)}12%{opacity:.85}70%{opacity:.6}to{opacity:0;transform:translate3d(var(--drift-x,20px), calc(-1 * var(--travel,70vh)), 0) scale(1.05) rotate(var(--spin,24deg))}}@keyframes petal-fall{0%{opacity:0;transform:translateY(-8vh)rotate(0)scale(.9)}10%{opacity:1}85%{opacity:.9}to{opacity:0;transform:translate3d(var(--drift-x,30px), 96vh, 0) rotate(var(--spin,420deg)) scale(1)}}@keyframes particle-drift{0%{opacity:0;transform:translate(0,0)}20%{opacity:.8}80%{opacity:.35}to{opacity:0;transform:translate3d(var(--drift-x,14px), calc(-1 * var(--travel,40vh)), 0)}}@keyframes float-soft{0%,to{transform:translate3d(0, 0, 0) rotate(var(--tilt,0deg))}50%{transform:translate3d(0, var(--float-y,-12px), 0) rotate(calc(var(--tilt,0deg) + 1.5deg))}}@keyframes sway{0%,to{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}@keyframes sway-soft{0%,to{transform:rotate(-.8deg)translateY(0)}50%{transform:rotate(.8deg)translateY(-3px)}}@keyframes flame-flicker{0%,to{opacity:1;transform:scale(1)translateY(0)}35%{opacity:.86;transform:scale(.94,1.08)translateY(-1px)}70%{opacity:.96;transform:scale(1.05,.95)translateY(.5px)}}@keyframes glow-breathe{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.95;transform:scale(1.06)}}@keyframes shake-soft{0%,to{transform:translate(0)rotate(0)}15%{transform:translate(-7px)rotate(-.7deg)}32%{transform:translate(6px)rotate(.6deg)}48%{transform:translate(-4px)rotate(-.4deg)}66%{transform:translate(3px)rotate(.3deg)}84%{transform:translate(-1.5px)rotate(-.1deg)}}@keyframes pop-in{0%{opacity:0;transform:scale(.72)}60%{opacity:1;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes heartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.14)}28%{transform:scale(1)}42%{transform:scale(1.09)}56%{transform:scale(1)}}@keyframes bounce-y{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes wiggle{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-12vh)rotate(0)}8%{opacity:1}to{opacity:0;transform:translate3d(var(--drift-x,40px), 104vh, 0) rotate(var(--spin,540deg))}}@keyframes confetti-burst{0%{opacity:0;transform:translate(0,0)scale(.4)rotate(0)}18%{opacity:1}to{opacity:0;transform:translate3d(var(--burst-x,0px), var(--burst-y,-160px), 0) scale(1) rotate(var(--spin,420deg))}}@keyframes rise-fade{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translate(0,0)}}@keyframes sparkle-out{0%{opacity:0;transform:scale(.3)rotate(0)}30%{opacity:1;transform:scale(1.15)rotate(40deg)}to{opacity:0;transform:scale(.5)rotate(140deg)}}@keyframes caret-blink{0%,45%{opacity:1}55%,to{opacity:0}}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes wheel-turn{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes sheen-sweep{0%{opacity:0;transform:translate(-130%)skew(-18deg)}40%{opacity:.75}to{opacity:0;transform:translate(130%)skew(-18deg)}}@keyframes seal-pulse{0%,to{filter:drop-shadow(0 0 #0000);transform:scale(1)}50%{filter:drop-shadow(0 0 12px color-mix(in srgb, var(--c-rose) 70%, transparent));transform:scale(1.08)}}@keyframes grain-shift{0%,to{transform:translate(0,0)}50%{transform:translate(-1.5%,1.5%)}}@keyframes rise-bloom{0%{opacity:0;transform:translateY(40px)scale(.6)}65%{opacity:1;transform:translateY(-6px)scale(1.03)}to{opacity:1;transform:translate(0,0)scale(1)}}@keyframes smoke-rise{0%{opacity:0;transform:translate(-50%)scaleY(.5)}25%{opacity:.55}to{opacity:0;transform:translate(-50%,-34px)scaleY(1.6)}}.anim-float{animation:float-soft var(--float-dur,7s) var(--ease-soft) infinite}.anim-sway{animation:sway var(--sway-dur,5.5s) var(--ease-soft) infinite;transform-origin:bottom}.anim-sway-soft{animation:sway-soft var(--sway-dur,6.5s) var(--ease-soft) infinite;transform-origin:bottom}.anim-breathe{animation:glow-breathe var(--breathe-dur,6s) var(--ease-soft) infinite}.anim-heartbeat{animation:heartbeat var(--beat-dur,2.4s) var(--ease-out) infinite}.anim-bounce{animation:bounce-y var(--bounce-dur,2.6s) var(--ease-soft) infinite}.anim-wiggle{animation:wiggle 1.6s var(--ease-soft) infinite;transform-origin:bottom}.anim-shake{animation:shake-soft .52s var(--ease-out) 1}.anim-pop{animation:pop-in .42s var(--ease-out) both}.anim-rise{animation:rise-fade .62s var(--ease-out) both}.anim-bloom{animation:rise-bloom 1.1s var(--ease-out) both}.anim-spin-slow{animation:18s linear infinite spin-slow}.anim-flicker{animation:flame-flicker 2.2s var(--ease-soft) infinite;transform-origin:bottom}.anim-twinkle{animation:twinkle var(--twinkle-dur,3.4s) var(--ease-soft) infinite}.is-paused-decor,.is-paused-decor *{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.decor--motion-only{display:none}.gilded{background-position:50%}}@media (max-width:900px){.panel{-webkit-backdrop-filter:blur(10px)saturate(1.05);backdrop-filter:blur(10px)saturate(1.05)}}@media (max-width:480px){:root{--hud-inset:.55rem;--r-lg:22px;--r-xl:30px}.app__stage{padding-left:var(--space-4);padding-right:var(--space-4);padding-top:3.6rem;padding-bottom:7rem}.panel{-webkit-backdrop-filter:none;backdrop-filter:none;background:color-mix(in srgb, var(--c-plum) 82%, transparent)}.panel--glass{background:color-mix(in srgb, var(--c-plum) 80%, transparent)}.panel--paper{background:linear-gradient(174deg, #fffdf9 0%, var(--c-ivory) 46%, color-mix(in srgb, var(--c-blush) 42%, #fff) 100%)}.icon-btn{-webkit-backdrop-filter:none;backdrop-filter:none;background:color-mix(in srgb, var(--c-plum) 82%, transparent)}.backdrop__grain{opacity:.36}.scene__footer{flex-direction:column;align-items:stretch}.scene__footer>.btn{width:100%}}@media (max-height:560px) and (orientation:landscape){.app__stage{padding-top:3.2rem;padding-bottom:3.4rem}.panel{padding-block:clamp(.9rem,2vw,1.6rem)}}@media (max-width:620px){.app__stage{padding-top:3.6rem;padding-bottom:7rem}}@media (min-width:1500px){:root{--content-max:78rem}}@media (min-width:2100px){:root{--content-max:86rem}}@media (hover:none) and (pointer:coarse){.btn:hover{transform:none}.btn:active{transform:scale(.985)}.icon-btn:hover{transform:none}}@media print{.backdrop,.backdrop__grain,.hud,.music-player,.decor-layer,.confetti-layer{display:none!important}body{color:#000;background:#fff}}
