@font-face{font-family:Larovie;src:url(/assets/fonts/Larovie-Regular.woff2) format("woff2"),url(/assets/fonts/Larovie-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Marion;src:url(/assets/fonts/Marion.ttc) format("collection"),url(/assets/fonts/Marion-Italic.woff2) format("woff2");font-style:italic;font-weight:400;font-display:swap}@font-face{font-family:HighSpirited;src:url(/assets/fonts/HighSpirited.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Against;src:url(/assets/fonts/AgainstRegular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--sky:#B5D1DF;--maroon:#8B1A1A;--maroon-bright:#A81917;--night-top:#3B4660;--night-mid:#4E597A;--cream:#F6EBDD;--gold:#E8A745;--gold-lite:#EEBC53;--sand:#EAD9CE;--ease:cubic-bezier(.7,0,.2,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--sand);background-image:radial-gradient(120% 80% at 50% 30%,#f1e4d8,#ead9ce 55%,#dcc7b8);display:flex;align-items:center;justify-content:center;overflow:hidden;font-family:Larovie,serif;-webkit-tap-highlight-color:transparent;color:var(--cream)}.stage{position:relative;height:min(100svh,calc(100vw * 16 / 9));width:auto;aspect-ratio:9 / 16;max-width:100vw;overflow:hidden;background:var(--sky);box-shadow:0 30px 80px #46281447,0 4px 18px #4628142e;isolation:isolate;cursor:pointer}.scene{position:absolute;inset:0;opacity:0;pointer-events:none;will-change:transform,opacity}.scene.active{opacity:1;pointer-events:auto}.layer{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.mute-btn{position:absolute;top:1.4%;right:2.2%;width:clamp(34px,8vmin,46px);height:clamp(34px,8vmin,46px);padding:clamp(7px,1.8vmin,10px);border:none;border-radius:50%;background:#0000006b;color:#fff;cursor:pointer;z-index:9;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);box-shadow:0 2px 6px #00000040;transition:background .2s ease,transform .15s ease}.mute-btn:hover{background:#0000008c}.mute-btn:active{transform:scale(.9)}.mute-btn svg{display:block;width:100%;height:100%}.mute-btn .mute-on,.mute-btn[aria-pressed=true] .mute-off{display:none}.mute-btn[aria-pressed=true] .mute-on{display:block}.brand-mark{position:absolute;left:50%;bottom:.4%;transform:translate(-50%);width:clamp(120px,30vmin,180px);height:auto;z-index:8;opacity:0;clip-path:inset(0 100% 0 0);pointer-events:none;transition:opacity .35s ease,clip-path 2.6s cubic-bezier(.6,0,.2,1);filter:drop-shadow(0 1px 1px rgba(0,0,0,.75)) drop-shadow(0 0 6px rgba(0,0,0,.55))}.brand-mark.shown{opacity:.95;clip-path:inset(0 0 0 0)}#scene1{background:var(--sky)}.polaroid-window{position:absolute;left:34%;top:9%;width:37%;height:26.5%;overflow:hidden;background:#fff;z-index:4}.polaroid-video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block;background:#fff}#s1-polaroid{z-index:3}#s1-camera{z-index:4}.polaroid-group{position:absolute;inset:0;z-index:2;will-change:transform,opacity}.polaroid-group.is-hidden{opacity:0;transform:translateY(35%)}.s1-cta{position:absolute;left:0;right:0;bottom:8%;text-align:center;z-index:5;font-family:Against,serif;color:var(--maroon);text-transform:uppercase;font-size:clamp(18px,4.6vmin,26px);font-weight:700;letter-spacing:-.04em;line-height:1.05;text-shadow:0 1px 0 rgba(255,255,255,.55),0 0 10px rgba(255,255,255,.4);transition:opacity .5s ease}.s1-cta.gone{animation:none;opacity:0;pointer-events:none}.heart-btn{position:absolute;left:33.5%;top:51%;transform:translate(-50%,-50%);width:clamp(26px,6vmin,36px);height:clamp(26px,6vmin,36px);padding:clamp(6px,1.4vmin,9px);border:none;border-radius:50%;background:radial-gradient(circle at 35% 30%,#F0C46A,var(--gold) 60%,#B97D2E 100%);color:var(--maroon);cursor:pointer;z-index:5;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px #824b1959,0 2px 4px #00000026,inset 0 1.5px #fff9,inset 0 -2px 4px #783c1440;animation:heartBtnPulse 1.5s ease-in-out infinite;transition:opacity .45s ease,transform .45s ease}.heart-btn:hover{filter:brightness(1.06)}.heart-btn:active{transform:translate(-50%,-50%) scale(.94)}.heart-btn svg{display:block;width:100%;height:100%}.heart-btn.gone{opacity:0;pointer-events:none;animation:none;transform:translate(-50%,-50%) scale(.6)}@keyframes heartBtnPulse{0%,to{transform:translate(-50%,-50%) scale(1);box-shadow:0 8px 18px #824b1959,0 0 #e8a74573,inset 0 1.5px #fff9,inset 0 -2px 4px #783c1440}50%{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 10px 22px #824b1966,0 0 0 16px #e8a74500,inset 0 1.5px #ffffffb3,inset 0 -2px 4px #783c144d}}.s1-cta .pulse{display:inline-block;animation:ctaPulse 1.6s ease-in-out infinite}@keyframes ctaPulse{0%,to{opacity:.55}50%{opacity:1}}.flash{position:absolute;inset:0;z-index:6;pointer-events:none;background:radial-gradient(34% 18% at 43% 40%,#fffffffa,#fff0 75%);opacity:0}.flash.fire{animation:flashFire .45s ease-out}@keyframes flashFire{0%{opacity:0}18%{opacity:1}to{opacity:0}}@keyframes riseCamera{0%{transform:translateY(8%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes ejectPolaroid{0%{transform:translateY(35%);opacity:0}30%{opacity:1}72%{transform:translateY(-1.5%);opacity:1}to{transform:translateY(0);opacity:1}}.anim-cta{animation:fadeIn .6s ease-out 1.15s both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.s2-cta{position:absolute;left:0;right:0;bottom:8%;text-align:center;z-index:4;font-family:Against,serif;color:var(--maroon);text-transform:uppercase;font-size:clamp(18px,4.6vmin,26px);font-weight:700;letter-spacing:-.04em;line-height:1.05;text-shadow:0 1px 0 rgba(255,255,255,.5),0 0 10px rgba(255,255,255,.4)}.s2-cta .pulse{display:inline-block;animation:ctaPulse 1.6s ease-in-out infinite}#scene3{background:var(--night-mid)}.twinkle{position:absolute;inset:0;pointer-events:none;opacity:0;mix-blend-mode:screen;background:radial-gradient(2px 2px at 22% 64%,rgba(255,225,150,.9),transparent 60%),radial-gradient(2px 2px at 64% 58%,rgba(255,225,150,.9),transparent 60%),radial-gradient(2px 2px at 88% 50%,rgba(255,225,150,.9),transparent 60%),radial-gradient(2px 2px at 12% 78%,rgba(255,225,150,.9),transparent 60%),radial-gradient(2px 2px at 78% 70%,rgba(255,225,150,.9),transparent 60%);animation:twinkle 3.4s ease-in-out infinite}@keyframes twinkle{0%,to{opacity:.15}50%{opacity:.7}}.fireworks{position:absolute;inset:0;pointer-events:none;display:none}.fw{position:absolute;mix-blend-mode:screen;opacity:.95;-o-object-fit:contain;object-fit:contain;will-change:opacity;background:transparent}.fw.f1{left:-14%;top:-6%;width:46%}.fw.f2{right:-14%;top:-2%;width:46%}.fw.f3{left:-12%;top:12%;width:44%;transform:none}.fireworks.boost .fw{opacity:1}.s3-text{position:absolute;left:0;right:0;top:5%;z-index:6;text-align:center;padding:0 4%;text-shadow:0 1px 3px rgba(0,0,0,.85),0 0 10px rgba(0,0,0,.65),0 2px 22px rgba(0,0,0,.45);transition:opacity .6s ease,transform .6s var(--ease)}.headline{display:block;width:clamp(180px,56%,380px);height:auto;margin:0 auto;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;-webkit-user-drag:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.65)) drop-shadow(0 0 6px rgba(0,0,0,.4))}.scratch-line{font-family:Larovie,serif;text-transform:uppercase;letter-spacing:.06em;font-size:clamp(15px,4.2vmin,21px);color:#fff6e6;margin-top:1.1em;line-height:1.22;text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 8px rgba(0,0,0,.7),0 2px 14px rgba(0,0,0,.5);transition:opacity .5s ease}.formal-line{font-family:Marion,cursive;font-style:italic;color:#fff6e6;font-size:clamp(13px,3.6vmin,18px);margin-top:.9em;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 8px rgba(0,0,0,.7),0 2px 14px rgba(0,0,0,.5);transition:opacity .5s ease}.reveal-area{display:grid;grid-template-columns:1fr;place-items:center;margin-top:.25em;min-height:clamp(30px,6.4vmin,44px)}.reveal-pre,.countdown{grid-row:1;grid-column:1}.reveal-pre{transition:opacity .35s ease}.countdown{opacity:0;pointer-events:none;transition:opacity .45s ease .4s}.s3-text.revealed .reveal-pre{opacity:0;pointer-events:none}.s3-text.revealed .countdown{opacity:1;pointer-events:auto}.scratch-zone{position:relative;width:40%;max-width:240px;margin:1vmin auto 0;aspect-ratio:3 / 1}.hidden-date{position:absolute;inset:0;pointer-events:none}.seg,.sep{position:absolute;top:50%;transform:translate(-50%,-50%) scale(.88);font-family:Larovie,serif;letter-spacing:.04em;color:var(--cream);white-space:nowrap;font-size:clamp(28px,7.2vmin,40px);text-shadow:0 0 22px rgba(232,167,69,.7),0 0 6px rgba(232,167,69,.45),0 2px 10px rgba(0,0,0,.55);opacity:0;transition:opacity .55s ease,transform .65s var(--ease)}.seg.s1{left:17%}.seg.s2{left:50%}.seg.s3{left:83%}.sep{font-size:clamp(22px,5.4vmin,30px);color:var(--gold-lite);font-weight:600;text-shadow:0 0 8px rgba(232,167,69,.55),0 2px 6px rgba(0,0,0,.4);opacity:0}.sep.sep1{left:33.5%}.sep.sep2{left:66.5%}.seg.show,.sep.show{opacity:1;transform:translate(-50%,-50%) scale(1)}#scratchCanvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none}#scratchCanvas:active{cursor:grabbing}#scratchCanvas.gone{opacity:0;transition:opacity .6s ease;pointer-events:none}.scratch-hint{position:absolute;left:0;right:0;top:108%;text-align:center;font-family:HighSpirited,cursive;color:var(--cream);font-size:clamp(12px,2.8vmin,16px);opacity:.7;transition:opacity .4s ease}.tap-reveal{position:absolute;inset:0;display:none;align-items:center;justify-content:center;border:none;background:linear-gradient(150deg,var(--gold-lite),var(--gold));color:#5a2410;font-family:Larovie,serif;text-transform:uppercase;letter-spacing:.18em;font-size:clamp(15px,4vmin,24px);border-radius:14px;cursor:pointer;box-shadow:0 6px 18px #b46e1e73,inset 0 1px #ffffff80}body.fallback .tap-reveal{display:flex}body.fallback #scratchCanvas{display:none}.sparkle{position:absolute;z-index:7;width:6px;height:6px;border-radius:50%;background:radial-gradient(circle,#fff,var(--gold-lite) 50%,transparent 70%);pointer-events:none;opacity:0}.cd-row{display:flex;justify-content:center;align-items:baseline;gap:clamp(6px,2vmin,14px);font-family:Larovie,serif;color:var(--cream)}.cd-unit{display:flex;align-items:baseline;gap:.15em}.cd-num{font-size:clamp(28px,7vmin,40px);line-height:1;letter-spacing:.04em;font-variant-numeric:tabular-nums}.cd-lab{text-transform:uppercase;letter-spacing:.18em;font-size:clamp(13px,2.8vmin,15px);opacity:.85}.cd-sep{color:var(--gold-lite);opacity:.7;font-size:clamp(18px,4.2vmin,24px);margin:0 .1em}#scene3.active .headline{animation:none;clip-path:inset(0 100% 0 0)}#scene3.active.entered .headline{transition:clip-path 2s cubic-bezier(.22,.61,.36,1);clip-path:inset(0 0 0 0)}#scene3.active .reveal-area{animation:none;opacity:1;transform:none}#scene3.active .scratch-line{animation:none;opacity:0;transform:none}#scene3.active.entered .scratch-line{transition:opacity .6s ease-out 2s;opacity:1}#scene3.active .scratch-zone{animation:none;opacity:0}#scene3.active.entered .scratch-zone{transition:opacity .6s ease-out 2.6s;opacity:1}#scene3.active .formal-line{animation:none;opacity:0}#scene3.active.entered .formal-line{transition:opacity .6s ease-out 3.2s;opacity:1;animation:formalBreathe 5.5s ease-in-out 6s infinite}.s3-text.revealed .scratch-line{opacity:0!important;transition:opacity .35s ease}@keyframes s3FadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes s3MarriedIn{0%{opacity:0;transform:scale(.86);letter-spacing:.06em}60%{opacity:1;transform:scale(1.05);letter-spacing:0}to{opacity:1;transform:scale(1);letter-spacing:0}}@keyframes marriedShimmer{0%,to{filter:drop-shadow(0 0 0 rgba(255,235,180,0))}50%{filter:drop-shadow(0 0 14px rgba(255,235,180,.55)) drop-shadow(0 0 4px rgba(232,167,69,.35))}}@keyframes formalBreathe{0%,to{opacity:.95;transform:translateY(0)}50%{opacity:.78;transform:translateY(-1px)}}#scratchCanvas:not(.gone){animation:heartFloat 3.6s ease-in-out infinite}@keyframes heartFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3%)}}.anim-camera{animation:riseCamera .75s var(--ease) both,cameraBob 5s ease-in-out 1s infinite}.anim-polaroid{animation:ejectPolaroid .95s var(--ease) both,polaroidSway 5.5s ease-in-out 1.6s infinite}@keyframes cameraBob{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-1.2%) rotate(.6deg)}}@keyframes polaroidSway{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-1%) rotate(-.7deg)}}@media (prefers-reduced-motion:reduce){.anim-camera,.anim-polaroid,.anim-cta,.s1-cta .pulse,.s2-cta .pulse,.twinkle{animation:none!important}#scene3.active .headline,#scene3.active.entered .headline{transition:none!important;clip-path:none!important}#scene3.active .scratch-line,#scene3.active .scratch-zone,#scene3.active .formal-line,#scene3.active.entered .scratch-line,#scene3.active.entered .scratch-zone,#scene3.active.entered .formal-line{transition:none!important;opacity:1!important}#scene3.active .reveal-area,#scratchCanvas{animation:none!important}.scene{transition:opacity .25s ease!important}}
