:root{--navy-950: #071830;--navy-900: #0A2340;--navy-800: #123565;--blue: #20549E;--paper: #FAF7F0;--paper-2: #F5F1E6;--gold: #B3914F;--f-d: "Playfair Display", "Times New Roman", Times, serif;--f-b: "Be Vietnam Pro", -apple-system, BlinkMacSystemFont, sans-serif;--f-s: "Dancing Script", cursive}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--f-b);font-size:15px;line-height:1.65;font-variant-numeric:lining-nums;background:var(--navy-950);color:#0c2b52;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.caps{text-transform:uppercase}#grain{position:fixed;top:-2%;right:-2%;bottom:-2%;left:-2%;z-index:900;pointer-events:none;opacity:.06;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.7'/%3E%3C/svg%3E");transition:filter .5s,opacity .5s}#grain.inv{filter:invert(1);mix-blend-mode:screen;opacity:.05}#confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;pointer-events:none}#toast{position:fixed;left:50%;bottom:118px;z-index:650;display:flex;align-items:center;gap:10px;background:var(--navy-800);color:#f2edde;padding:13px 24px;border-radius:999px;font-size:13.5px;font-weight:500;letter-spacing:.02em;box-shadow:0 18px 44px -12px #08193280;opacity:0;transform:translate(-50%,16px);pointer-events:none;transition:opacity .45s cubic-bezier(.2,.9,.3,1),transform .45s cubic-bezier(.2,.9,.3,1)}#toast.show{opacity:1;transform:translate(-50%)}#toast svg{width:16px;height:16px;stroke:var(--gold);flex:none}#envScreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;overflow:hidden;background:var(--navy-950);display:flex;align-items:center;justify-content:center;transition:opacity .4s ease .1s}#envScreen:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;background:radial-gradient(120% 95% at 50% 44%,transparent 32%,rgba(4,12,26,.7) 100%)}.env-lang{position:absolute;top:24px;right:28px;z-index:520;display:flex;align-items:center;gap:8px}.env-lang span{color:#d6b47266}.env-wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px}.env-kicker{display:flex;align-items:center;gap:16px;font-size:11.5px;font-weight:600;letter-spacing:.5em;text-transform:uppercase;color:#d6b472;text-indent:.5em;animation:envIn 1s cubic-bezier(.22,1,.36,1) .25s both}.env-kicker:before,.env-kicker:after{content:"";width:46px;height:1px;background:linear-gradient(90deg,transparent,rgba(214,180,114,.8) 50%,transparent)}.env-stage{perspective:1500px;margin:44px 0 38px;animation:envIn 1.1s cubic-bezier(.22,1,.36,1) .12s both}.env-hint{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:500;letter-spacing:.34em;text-transform:uppercase;color:#e6ecf68c;text-indent:.34em;animation:envIn .9s cubic-bezier(.22,1,.36,1) .55s both;transition:opacity .4s}.env-hint:before{content:"";width:7px;height:7px;border-radius:50%;flex:none;background:var(--gold);animation:pulse 2.2s ease-in-out infinite}#envScreen.opening .env-kicker,#envScreen.opening .env-hint{opacity:0;animation:none}@keyframes envIn{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes pulse{50%{opacity:.25;transform:scale(.7)}}.env-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;pointer-events:none;background-image:radial-gradient(rgba(214,180,114,.05) 1px,transparent 1px);background-size:26px 26px}.env-aurora{position:absolute;top:-22%;right:-22%;bottom:-22%;left:-22%;background:radial-gradient(36% 42% at 22% 24%,rgba(58,116,190,.38),transparent 70%),radial-gradient(40% 44% at 82% 28%,rgba(179,145,79,.24),transparent 72%),radial-gradient(48% 52% at 52% 94%,rgba(30,74,132,.44),transparent 72%);filter:blur(26px);opacity:.85;animation:auroraDrift 20s ease-in-out infinite alternate}@keyframes auroraDrift{0%{transform:translate(-2%,-1%) scale(1)}to{transform:translate(2%,2%) scale(1.09)}}.env-rays{position:absolute;left:50%;top:50%;width:min(94vw,1000px);aspect-ratio:1;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(214,180,114,.2) 0%,rgba(214,180,114,.06) 40%,transparent 66%);animation:raysBreathe 7s ease-in-out infinite}@keyframes raysBreathe{50%{opacity:.6;transform:translate(-50%,-50%) scale(1.06)}}.env-mandala{position:absolute;left:50%;top:50%;width:min(80vw,720px);aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid rgba(214,180,114,.16);border-radius:50%;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 54px,rgba(214,180,114,.12) 54px 55px);-webkit-mask:radial-gradient(circle,transparent 20%,#000 34%,#000 100%);mask:radial-gradient(circle,transparent 20%,#000 34%,#000 100%);animation:mandalaBreathe 9s ease-in-out infinite}@keyframes mandalaBreathe{50%{opacity:.5}}.env-twinkle{position:absolute;top:0;right:0;bottom:0;left:0}.env-twinkle i{position:absolute;left:var(--x);top:var(--y);width:var(--s, 3px);height:var(--s, 3px);border-radius:50%;background:radial-gradient(circle,#fff7e2,#e9ce8b8c 45%,#e9ce8b00 72%);opacity:0;transform:scale(.4);animation:twinkle var(--t, 4s) ease-in-out var(--d, 0s) infinite}@keyframes twinkle{0%,to{opacity:0;transform:scale(.4)}50%{opacity:.95;transform:scale(1)}}.env-dust{position:absolute;top:0;right:0;bottom:0;left:0}.env-dust i{position:absolute;left:var(--x);bottom:-14px;width:var(--s, 3px);height:var(--s, 3px);border-radius:50%;background:radial-gradient(circle,#f3e1ab,#e9ce8b80 45%,#e9ce8b00 72%);opacity:0;animation:dustRise var(--t, 12s) linear var(--d, 0s) infinite}@keyframes dustRise{0%{opacity:0;transform:translateY(0) scale(.6)}12%{opacity:.85}82%{opacity:.45}to{opacity:0;transform:translateY(-92vh) scale(1)}}.envelope{position:relative;width:380px;height:250px;perspective:1400px;border-radius:14px;transform:var(--env-scale, none);animation:envFloat 5.5s ease-in-out infinite}@keyframes envFloat{0%,to{transform:translateY(0) var(--env-scale, scale(1))}50%{transform:translateY(-6px) var(--env-scale, scale(1))}}.env-back{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:repeating-linear-gradient(115deg,rgba(16,42,74,.028) 0 1px,transparent 1px 4px),repeating-linear-gradient(25deg,rgba(16,42,74,.022) 0 1px,transparent 1px 5px),linear-gradient(180deg,#e6dec9,#f4efe3 35%,#f4efe3);border:1px solid rgba(16,42,74,.25);border-radius:14px;box-shadow:inset 0 20px 40px #102a4a14,0 34px 80px -18px #030e1ebf,0 8px 22px #030e1e73}.card{position:absolute;left:20px;top:22px;width:340px;height:206px;z-index:2;border-radius:10px;background:#faf7f0;transform-origin:center center;box-shadow:0 10px 30px -10px #0a193059;will-change:transform,opacity}.card-inner{position:absolute;top:0;right:0;bottom:0;left:0;background:#fdfcf9;border:1px solid rgba(16,42,74,.2);border-radius:10px;box-shadow:0 16px 36px -14px #030e1e66;transition:opacity .35s ease}.mini{position:absolute;top:14px;right:14px;bottom:14px;left:14px;border:1px solid rgba(179,145,79,.65);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.mini-logo{width:36px;height:auto;object-fit:contain;display:block;margin-bottom:2px;filter:none;opacity:.88}.mini .m1{font-size:8px;letter-spacing:.44em;text-indent:.44em;font-weight:600;color:var(--gold);text-transform:uppercase}.mini svg{width:8px;height:8px;fill:var(--gold)}.mini .m2{font-family:var(--f-d);font-weight:600;font-size:15px;letter-spacing:.12em;text-indent:.12em;color:#0c2b52;text-transform:uppercase}.mini .m_name{font-family:var(--f-d);font-weight:700;font-size:13.5px;letter-spacing:.08em;color:#10315c;margin:1px 0}.mini .m3{font-size:9px;letter-spacing:.3em;text-indent:.3em;color:#0c2b5299}.env-front{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 -3px 8px rgba(16,42,74,.08))}.env-flap{position:absolute;left:0;top:0;width:100%;height:135px;z-index:4;transform-origin:50% 0;pointer-events:none}.env-flap svg,.env-front{display:block}.pf{stroke:#b3914f73;stroke-width:1.2;stroke-linejoin:round}.pf.side{fill:#f2ecdf}.pf.low{fill:#ede7d8}.pf.flapface{fill:#eae2d0}.env-monogram{position:absolute;top:22px;left:50%;transform:translate(-50%);font-family:var(--f-d);font-weight:600;font-size:19px;letter-spacing:.42em;text-indent:.42em;background:linear-gradient(180deg,#f3e1ab,#c9a65b 55%,#9e7c3a);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 rgba(255,255,255,.45)) drop-shadow(0 2px 3px rgba(16,42,74,.3));pointer-events:none}.env-frame{position:absolute;top:9px;right:9px;bottom:9px;left:9px;z-index:3;border:1px solid rgba(179,145,79,.5);border-top:0;border-radius:0 0 8px 8px;pointer-events:none}.env-frame:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid rgba(179,145,79,.25);border-top:0;border-radius:0 0 6px 6px}.ec{position:absolute;width:15px;height:15px}.ec.bl{bottom:-1px;left:-1px;border-bottom:2px solid var(--gold);border-left:2px solid var(--gold);border-bottom-left-radius:5px}.ec.br{bottom:-1px;right:-1px;border-bottom:2px solid var(--gold);border-right:2px solid var(--gold);border-bottom-right-radius:5px}.seal-ribbon{position:absolute;left:50%;top:150px;z-index:5;width:0;height:0;pointer-events:none}.seal-ribbon:before,.seal-ribbon:after{content:"";position:absolute;top:0;width:17px;height:74px;background:linear-gradient(180deg,#c9a65b,#b3914f 45%,#8c6f37);box-shadow:inset 1px 0 #ffffff40,inset -1px 0 #0000002e,0 6px 10px -4px #030e1e73;clip-path:polygon(0 0,100% 0,100% 100%,50% 78%,0 100%)}.seal-ribbon:before{left:-40px;transform:rotate(20deg)}.seal-ribbon:after{left:23px;transform:rotate(-20deg)}#envScreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;overflow:hidden;background:var(--navy-950);display:flex;align-items:center;justify-content:center;transition:opacity .4s ease}#envScreen.done{opacity:0;pointer-events:none}#envScreen.opening .env-flap{z-index:1;transform:rotateX(-180deg);transition:transform .75s cubic-bezier(.35,0,.2,1)}#envScreen.opening .card{transform:translateY(-190px);transition:transform .75s cubic-bezier(.25,1,.5,1) .35s;box-shadow:0 26px 65px -12px #030e1e99}#envScreen.opening .seal{opacity:0;transform:translate(-50%,-10px) scale(.2) rotate(40deg);transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .35s ease;pointer-events:none}#envScreen.zoom .card{z-index:50!important;transform:translateY(-190px) translate(var(--zx, 0px),var(--zy, 0px)) scale(var(--zs, 1))!important;transition:transform .88s cubic-bezier(.65,0,.22,1)!important;box-shadow:0 30px 90px #00000073!important}#envScreen.zoom .card-inner{opacity:0;transition:opacity .4s ease .25s}#envScreen.zoom .env-back,#envScreen.zoom .env-front,#envScreen.zoom .env-flap{opacity:0;transform:scale(.92);transition:opacity .45s ease .05s,transform .55s ease .05s}#envScreen.zoom .env-kicker,#envScreen.zoom .env-hint{opacity:0;transition:opacity .3s ease}.seal{position:absolute;left:50%;top:80px;z-index:6;width:82px;height:82px;transform:translate(-50%);transition:transform .3s cubic-bezier(.22,1,.36,1),filter .3s}.seal:hover{transform:translate(-50%) scale(1.06) rotate(-3deg);filter:drop-shadow(0 10px 22px rgba(16,42,74,.5))}.seal:active{transform:translate(-50%) scale(.95)}.seal svg{display:block;width:100%;height:100%;filter:drop-shadow(0 6px 14px rgba(3,14,30,.4))}.env-sparkles{position:absolute;left:50%;top:121px;z-index:7;width:0;height:0;pointer-events:none}.env-sparkles i{position:absolute;left:0;top:0;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:radial-gradient(circle,#fff7e2,#e9ce8b 45%,#e9ce8b00 72%);opacity:0}#envScreen.opening .env-sparkles i{animation:sparkOut .95s cubic-bezier(.2,.7,.3,1) .5s both}@keyframes sparkOut{0%{opacity:0;transform:rotate(var(--a)) translateY(-6px) scale(.4)}25%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateY(-105px) scale(1.05)}}#envScreen.opening .envelope,#envScreen.zoom .envelope{animation:none;transform:var(--env-scale, none)}@media (prefers-reduced-motion: reduce){.env-aurora,.env-rays,.env-mandala,.envelope{animation:none!important}.env-dust,.env-twinkle,.env-sparkles{display:none!important}}.thank-quote{font-size:clamp(20px,2.7vw,29px);line-height:1.65;color:var(--fg);margin-top:14px}.thank-wish{font-size:15px;line-height:1.7;color:var(--goldv);margin-top:18px;max-width:680px}.thank-actions{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap}.btn-replay,.btn-celebrate{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;transition:all .3s cubic-bezier(.22,1,.36,1);cursor:pointer}.btn-replay{border:1px solid rgba(242,237,222,.3);color:#f2edde;background:#ffffff0d}.btn-replay:hover{background:#ffffff26;border-color:#f2edde;transform:translateY(-2px)}.btn-celebrate{background:var(--goldv);color:var(--navy-950);border:1px solid var(--goldv);box-shadow:0 8px 24px -6px #d6b47273}.btn-celebrate:hover{background:#e5c788;transform:translateY(-2px);box-shadow:0 12px 28px -6px #d6b47299}#app{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;--c: #0C2B52;--cs: rgba(12, 43, 82, .5);--goldc: var(--gold);background:#faf7f0;transition:background .45s ease}#app.dark{--c: #F2EDDE;--cs: rgba(242, 237, 222, .5);--goldc: #D6B472;background:var(--navy-900)}.progress{position:absolute;top:0;left:0;right:0;height:2px;z-index:82}.progress i{display:block;height:100%;width:20%;background:var(--goldc);transition:width .8s cubic-bezier(.65,0,.35,1)}.brand{font-size:10.5px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--c);transition:color .5s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lang,.env-lang{display:flex;align-items:center;gap:2px}.lang span,.env-lang span{color:var(--cs);font-size:11px}.lbtn{font-size:11px;font-weight:600;letter-spacing:.16em;padding:7px 10px;color:var(--cs);border-bottom:2px solid transparent;transition:color .3s,border-color .3s}.env-lang .lbtn{color:#f2edde6b}.env-lang .lbtn.on{color:#d6b472}.lbtn.on{color:var(--goldc);border-bottom-color:var(--goldc)}.lbtn:hover{color:var(--c)}.env-lang .lbtn:hover{color:#f2edde}.nav{position:absolute;left:0;right:0;bottom:16px;z-index:80;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(18px,3vw,34px);pointer-events:none;transition:bottom .35s cubic-bezier(.22,1,.36,1)}.nav>*{pointer-events:auto}.nav>.counter{grid-column:1;justify-self:start}.nav>.dots{grid-column:2;justify-self:center}.nav>.navbtns{grid-column:3;justify-self:end}.nav.has-marquee{bottom:48px}.nav.no-marquee{bottom:16px}.counter{display:flex;align-items:baseline;gap:7px}.counter b{font-family:var(--f-d);font-weight:600;font-size:21px;color:var(--c);transition:color .5s}.counter b.pop{animation:cpop .45s cubic-bezier(.22,1,.36,1)}.counter span{font-size:11px;letter-spacing:.22em;color:var(--cs);transition:color .5s}.dots{display:flex;gap:6px}.dots button{padding:10px 4px}.dots button i{display:block;width:20px;height:2px;border-radius:2px;background:var(--cs);transition:width .45s cubic-bezier(.65,0,.35,1),background .45s}.dots button:hover i{background:var(--c)}.dots button.on i{width:42px;background:var(--goldc)}.navbtns{display:flex;gap:10px}.nbtn{width:40px;height:40px;border:0;border-radius:0;color:var(--c);display:flex;align-items:center;justify-content:center;transition:color .35s,opacity .35s,transform .2s}.nbtn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.nbtn:hover{color:var(--goldc)}.nbtn:active{transform:scale(.92)}.nbtn.off{opacity:.22;pointer-events:none}.appheader{position:relative;flex:none;z-index:80;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,34px)}.appheader .brand{flex:0 1 auto;min-width:0;text-align:left}.appheader .lang{flex:0 0 auto;justify-content:flex-end;margin-left:auto}.hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:81;font-size:10px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--cs);transition:color .5s,background .4s,border-color .4s;white-space:nowrap;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.hint .coarse{display:none}@media (pointer: coarse){.hint .fine{display:none}.hint .coarse{display:inline}}.wipe{position:absolute;top:0;right:0;bottom:0;left:0;z-index:200;pointer-events:none;visibility:hidden;overflow:hidden}.wipe.to-next,.wipe.to-prev{visibility:visible}.wipe .p{position:absolute;top:-12%;bottom:-12%;width:150%;left:-25%;transform:translate(130%) skew(-14deg)}.wipe .p1{background:#f5f1e6}.wipe .p2{background:var(--navy-900)}.wipe.to-next .p1{animation:wNext 1.05s cubic-bezier(.72,0,.28,1) both}.wipe.to-next .p2{animation:wNext 1.05s cubic-bezier(.72,0,.28,1) .07s both}.wipe.to-prev .p1{animation:wPrev 1.05s cubic-bezier(.72,0,.28,1) both}.wipe.to-prev .p2{animation:wPrev 1.05s cubic-bezier(.72,0,.28,1) .07s both}@keyframes wNext{0%{transform:translate(-130%) skew(-14deg)}44%,54%{transform:translate(0) skew(-14deg)}to{transform:translate(130%) skew(-14deg)}}@keyframes wPrev{0%{transform:translate(130%) skew(-14deg)}44%,54%{transform:translate(0) skew(-14deg)}to{transform:translate(-130%) skew(-14deg)}}#stage{position:relative;flex:1 1 auto;min-height:0}.slide{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;visibility:hidden;--fg: #0C2B52;--fg-soft: rgba(12, 43, 82, .62);--fg-faint: rgba(12, 43, 82, .4);--line: rgba(12, 43, 82, .16);--paper: #FAF7F0;--goldv: var(--gold);background:var(--paper)}.slide[data-theme=dark]{--fg: #F2EDDE;--fg-soft: rgba(242, 237, 222, .6);--fg-faint: rgba(242, 237, 222, .38);--line: rgba(255, 255, 255, .15);--paper: var(--navy-900);--goldv: #D6B472}.slide.active{visibility:visible;z-index:2}.slide.leaving{visibility:visible;z-index:1;animation:slideOut .55s cubic-bezier(.7,0,.84,.2) both}.slide.active.anim{animation:slideIn 1s cubic-bezier(.77,0,.18,1) both}@keyframes slideIn{0%{opacity:.35;transform:translateY(74px)}to{opacity:1;transform:none}}@keyframes slideOut{to{opacity:0;transform:translateY(-56px)}}.frame{position:absolute;top:4px;right:11px;bottom:12px;left:11px;z-index:3;border:1px solid var(--line);pointer-events:none}.frame i{position:absolute!important;width:24px;height:24px;border:0 solid var(--goldv);margin:0!important;pointer-events:none}.frame i.corner-tl,.frame i.tl{top:-1px!important;left:-1px!important;margin-top:0!important;border-top-width:2px;border-left-width:2px}.frame i.corner-tr,.frame i.tr{top:-1px!important;right:-1px!important;margin-top:0!important;border-top-width:2px;border-right-width:2px}.frame i.corner-bl,.frame i.bl{bottom:-1px!important;left:-1px!important;margin-bottom:0!important;border-bottom-width:2px;border-left-width:2px}.frame i.corner-br,.frame i.br{bottom:-1px!important;right:-1px!important;margin-bottom:0!important;border-bottom-width:2px;border-right-width:2px}.wrap{position:relative;z-index:1;height:100%;max-width:1160px;margin:0 auto;padding:clamp(30px,4vh,44px) clamp(32px,7vw,96px) clamp(96px,13vh,112px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;scrollbar-width:none}.wrap>*{transform-origin:center center}.wrap::-webkit-scrollbar{display:none}.slide [data-anim]{opacity:0}.slide.active [data-anim]{animation:rise .85s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(.5s + var(--i, 0) * .09s)}.slide.leaving [data-anim]{opacity:1;animation:none}@keyframes rise{0%{opacity:0;transform:translateY(38px)}to{opacity:1;transform:none}}.split .word{display:inline-block;white-space:nowrap}.split .char{display:inline-block}.slide.active .char{animation:charIn .68s cubic-bezier(.25,.9,.3,1) both;animation-delay:calc(.55s + var(--ci, 0) * 27ms)}.slide.leaving .char{animation:none}@keyframes charIn{0%{opacity:0;transform:translateY(.42em) rotate(5deg);filter:blur(7px)}to{opacity:1;transform:none;filter:blur(0)}}.fadeOnly{animation:fadeIn 1.3s ease .2s both}@keyframes fadeIn{0%{opacity:0}}@keyframes cpop{0%{opacity:0;transform:translateY(9px)}}.kick{display:flex;align-items:center;gap:14px;font-size:11px;font-weight:600;letter-spacing:.4em;text-transform:uppercase;color:var(--goldv)}.kick:before{content:"";width:34px;height:1px;background:currentColor;opacity:.8}.to-line{font-family:var(--f-d);font-style:italic;font-size:clamp(18px,2.2vw,24px);line-height:1.5;color:var(--fg-soft);margin:18px 0 0}.to-line strong{font-style:normal;font-weight:600;color:var(--goldv)}.ghost-pos{position:absolute;left:0;right:0;top:47%;text-align:center;z-index:0;pointer-events:none}.ghost{display:inline-block;font-family:var(--f-d);font-weight:700;font-size:clamp(170px,27vw,400px);line-height:1;letter-spacing:.05em;color:transparent;-webkit-text-stroke:1.5px rgba(32,84,158,.13);-webkit-user-select:none;user-select:none}@supports not (-webkit-text-stroke: 1px){.ghost{color:#20549e12}}.laurel{position:absolute;top:50%;transform:translateY(-50%);z-index:0;pointer-events:none}.l-left{left:calc(50% - 565px)}.l-right{right:calc(50% - 565px)}.laurel-in{height:clamp(230px,34vh,330px);will-change:transform}.laurel-svg{height:100%;display:block}.l-right .laurel-svg{transform:scaleX(-1)}.cover{position:relative;z-index:1;text-align:center;max-width:780px;margin:0 auto;padding:clamp(8px,2vh,20px) clamp(10px,2vw,26px)}.school-logo-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:20px;width:100%;max-width:100%}.school-logo{width:clamp(44px,5vw,64px);max-width:100%;height:auto;object-fit:contain;display:block;opacity:.85;filter:drop-shadow(0 1px 4px rgba(179,145,79,.25));transition:opacity .3s}.school{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px;width:100%;max-width:100%;font-size:10.5px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--goldv);margin-bottom:0;text-indent:.3em;text-align:center;overflow-wrap:anywhere}.school:before,.school:after{content:"";width:28px;height:1px;background:currentColor;opacity:.55;flex:none}.guest-badge{display:inline-flex;align-items:center;gap:8px;background:#b3914f1a;border:1px solid rgba(179,145,79,.35);padding:5px 16px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--goldv);margin-bottom:12px}.guest-badge svg{width:12px;height:12px;fill:var(--goldv)}.invite-line{font-size:11px;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--fg-soft);text-indent:.28em;margin-bottom:6px}.name{font-family:var(--f-d);font-weight:600;color:var(--fg);font-size:clamp(38px,8.2vw,104px);line-height:1.08;letter-spacing:.045em;margin:10px 0 18px;text-wrap:balance}.divider{display:flex;align-items:center;justify-content:center;gap:14px;margin:4px auto 20px}.divider i{width:64px;height:1px;background:#20549e66}.divider svg{width:9px;height:9px;fill:var(--goldv)}.attend-line{display:inline-flex;align-items:center;justify-content:center;gap:16px;font-family:var(--f-d);font-style:italic;font-weight:500;font-size:clamp(16px,2.2vw,22px);color:var(--goldv);margin:6px auto 18px;letter-spacing:.1em}.attend-line:before,.attend-line:after{content:"";width:44px;height:1px;background:var(--goldv);opacity:.6;flex:none}.sub-line{font-family:var(--f-d);font-style:italic;font-weight:500;font-size:clamp(16px,2.2vw,21px);color:var(--fg-soft)}.date-big{font-family:var(--f-d);font-weight:600;color:var(--fg);font-size:clamp(30px,5.4vw,58px);letter-spacing:.42em;text-indent:.42em;margin:22px 0 10px;white-space:nowrap}.date-sub{font-size:11px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--fg-faint);text-indent:.32em}.marquee{position:absolute;left:0;right:0;bottom:0;height:44px;z-index:2;border-top:1px solid var(--line);overflow:hidden;display:flex;align-items:center;background:var(--paper)}.mq-track{display:flex;width:max-content;animation:mq 30s linear infinite}.mq-g{display:flex;align-items:center;gap:34px;padding-right:34px}.mq-g span{font-size:11px;font-weight:500;letter-spacing:.34em;color:var(--fg-faint);text-transform:uppercase;white-space:nowrap}.mq-g svg{width:10px;height:10px;fill:var(--goldv);flex:none;opacity:.85}@keyframes mq{to{transform:translate(-50%)}}.s2 .wrap{max-width:960px}.ring{position:absolute;width:min(46vw,560px);aspect-ratio:1;right:max(1vw,10px);top:50%;transform:translateY(-50%);z-index:0;border:1px solid rgba(255,255,255,.11);border-radius:50%;pointer-events:none}.ring:after{content:"";position:absolute;top:36px;right:36px;bottom:36px;left:36px;border:1px solid rgba(255,255,255,.07);border-radius:50%}.s2-body{position:relative;z-index:1;max-width:760px}.quote-mark{position:absolute;left:-14px;top:-58px;font-family:var(--f-d);font-style:italic;font-weight:700;font-size:150px;line-height:1;color:#d6b47247;pointer-events:none;-webkit-user-select:none;user-select:none}.quote{font-family:var(--f-d);font-weight:400;font-size:clamp(21px,2.9vw,32px);line-height:1.62;color:var(--fg)}.quote em{font-style:italic;font-weight:500;color:var(--goldv)}.sign{margin-top:28px}.sign .script{font-family:var(--f-s);font-weight:600;font-size:clamp(42px,6vw,68px);line-height:1.1;color:var(--fg);display:block}.sign .caps{display:block;margin-top:8px;font-size:11px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--fg-faint)}.thank-actions{display:flex;align-items:center;gap:14px;margin-top:32px;flex-wrap:wrap}.btn-replay,.btn-music{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:#ffffff0f;color:#f2edde;font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;transition:all .3s cubic-bezier(.22,1,.36,1);cursor:pointer}.btn-replay:hover,.btn-music:hover{background:#ffffff26;border-color:#ffffff73;transform:translateY(-2px)}.btn-music.playing{border-color:#d6b472;color:#d6b472;background:#d6b4721a}.btn-music.playing svg{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.92)}}.btn-celebrate{display:inline-flex;align-items:center;gap:10px;padding:12px 24px;border:1px solid #D6B472;border-radius:999px;background:linear-gradient(135deg,#dcc084,#c8a359);color:#0a1f3a;font-size:12px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;box-shadow:0 8px 24px -6px #d6b47273;transition:all .35s cubic-bezier(.22,1,.36,1);cursor:pointer}.btn-celebrate:hover{background:linear-gradient(135deg,#e8d3a2,#d6b26a);box-shadow:0 12px 30px -4px #d6b472a6;transform:translateY(-2px) scale(1.02)}.btn-celebrate:active{transform:translateY(0) scale(.98)}.celebrate-svg{width:18px;height:18px;color:#0a1f3a;flex:none;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.btn-celebrate:hover .celebrate-svg{transform:rotate(20deg) scale(1.2)}.s3-grid{display:grid;grid-template-columns:minmax(300px,5fr) 7fr;gap:clamp(30px,6vw,90px);align-items:center}.h-split{font-family:var(--f-d);font-weight:600;color:var(--fg);line-height:1.12;margin:10px 0 14px}.s3 .h-split{font-size:clamp(34px,4.8vw,58px)}.lead{font-size:15px;line-height:1.85;color:var(--fg-soft);max-width:400px}.btn-map{display:inline-flex;align-items:center;gap:10px;margin-top:20px;padding:12px 24px;border:1px solid rgba(12,43,82,.4);border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;transition:background .35s,color .35s,border-color .35s}.btn-map svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s}.btn-map .arr{transition:transform .35s}.btn-map:hover{background:var(--navy-800);border-color:var(--navy-800);color:#f2edde}.btn-map:hover .arr{transform:translate(2px,-2px)}.row{display:grid;grid-template-columns:158px 1fr;gap:18px;align-items:center;padding:14px 16px;border-top:1px solid var(--line);transition:background .35s,padding .35s}.rows .row:last-child{border-bottom:1px solid var(--line)}.row:hover{background:#f0f5fd;padding-left:30px}.lab{display:flex;align-items:center;gap:10px;font-size:10.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--fg-faint)}.lab svg{width:19px;height:19px;flex:none;fill:none;stroke:var(--goldv);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.val strong{display:block;font-family:var(--f-d);font-weight:500;font-size:clamp(19px,2.3vw,29px);line-height:1.3;color:var(--fg)}.val small{display:block;margin-top:4px;font-size:13px;color:var(--fg-soft)}.s4 .wrap{max-width:920px}.s4 .h-split{font-size:clamp(30px,4.2vw,52px)}.schedule-tl{position:relative;margin-top:34px}.schedule-tl:before{content:"";position:absolute;left:118px;top:8px;bottom:8px;width:1px;background:#ffffff47;transform:scaleY(0);transform-origin:top}.slide.active .schedule-tl:before{animation:railGrow 1s cubic-bezier(.65,0,.35,1) .35s both}@keyframes railGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.tl-item{position:relative;display:grid;grid-template-columns:92px 52px 1fr;align-items:baseline;padding:13px 0}.tl-item:before{content:"";position:absolute;left:118px;top:16px;width:9px;height:9px;transform:translate(-50%);border-radius:50%;border:2px solid var(--goldv);background:var(--paper)}.tl-time{font-family:var(--f-d);font-weight:600;font-size:23px;color:var(--goldv);text-align:right;letter-spacing:.02em}.tl-body h4{font-size:16.5px;font-weight:600;color:var(--fg);letter-spacing:.01em}.tl-body p{font-size:13px;color:var(--fg-soft);margin-top:2px}.s4-note{margin-top:30px;padding-left:18px;border-left:2px solid var(--goldv);font-size:13px;line-height:1.8;color:var(--fg-soft);max-width:460px}.s5-grid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(30px,5vw,80px);align-items:center}.s5 .h-split{font-style:italic;font-weight:500;font-size:clamp(34px,5vw,62px)}.s5 .lead{margin-top:4px}.s5-sign{margin-top:26px}.s5-sign .script{font-family:var(--f-s);font-weight:600;font-size:clamp(40px,5vw,64px);line-height:1.1;color:var(--fg);display:block}.s5-sign .caps{display:block;margin-top:8px;font-size:11px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--fg-faint)}.rsvp-card{position:relative;background:#fffefb;border:1px solid rgba(12,43,82,.22);padding:clamp(18px,2.8vw,34px);box-shadow:0 34px 70px -34px #0a234047}.rsvp-card.shake{animation:shake .45s}@keyframes shake{20%{transform:translate(-8px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(3px)}}.field{margin-bottom:16px}.field>label{display:block;margin-bottom:10px;font-size:10.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--fg-faint)}.field input[type=text],.field textarea{width:100%;background:transparent;border:0;outline:0;border-bottom:1px solid rgba(12,43,82,.32);padding:9px 2px;font-size:16px;transition:border-color .3s}.field textarea{resize:none;line-height:1.6}.field input:focus,.field textarea:focus{border-bottom-color:var(--gold)}.field input.invalid{border-bottom-color:#b3392e}.f-err{display:none;margin-top:8px;font-size:12.5px;color:#b3392e}.f-err.show{display:block}.segs{display:flex;gap:10px;flex-wrap:wrap}.seg input{position:absolute;opacity:0;pointer-events:none}.seg span{display:inline-block;padding:10px 18px;border-radius:999px;border:1px solid rgba(12,43,82,.34);font-size:13px;font-weight:500;transition:background .3s,color .3s,border-color .3s;cursor:pointer}.seg:hover span{border-color:var(--navy-800)}.seg input:checked+span{background:var(--navy-800);border-color:var(--navy-800);color:#f2edde}.stepper{display:flex;align-items:center;gap:20px}.stepper button{width:40px;height:40px;border-radius:50%;border:1px solid rgba(12,43,82,.34);display:flex;align-items:center;justify-content:center;transition:background .3s,opacity .3s}.stepper button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.stepper button:hover{background:#f0f5fd}.stepper button.dis{opacity:.28;pointer-events:none}.gnum{min-width:56px;text-align:center}.gnum b{display:block;font-family:var(--f-d);font-weight:600;font-size:30px;line-height:1;color:var(--fg)}.gnum small{display:block;margin-top:4px;font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-faint)}.submit{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;background:var(--navy-800);color:#f2edde;padding:17px;font-size:12px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;transition:background .35s,transform .15s}.submit svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s}.submit:hover{background:#15417a}.submit:hover svg{transform:translate(5px)}.submit:active{transform:translateY(1px)}.sent{text-align:center;padding:26px 8px 8px}.sent svg{width:62px;height:62px;display:block;margin:0 auto 18px}.sent .ck-c{fill:none;stroke:var(--gold);stroke-width:1.6;stroke-dasharray:66;stroke-dashoffset:66}.sent .ck-m{fill:none;stroke:var(--navy-800);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:22;stroke-dashoffset:22}.sent.in .ck-c{animation:drawS .7s ease forwards}.sent.in .ck-m{animation:drawS .5s ease .5s forwards}@keyframes drawS{to{stroke-dashoffset:0}}.sent h4{font-family:var(--f-d);font-weight:600;font-size:27px;color:var(--fg)}.sent p{margin-top:8px;font-size:14px;color:var(--fg-soft)}@media (max-width: 1150px){.laurel{display:none}}@media (max-width: 900px){.wrap{justify-content:center!important;padding:24px 22px 84px!important;overflow:hidden!important}.s1 .wrap{padding-bottom:110px!important}.appheader{height:48px}.s3-grid,.s5-grid{grid-template-columns:1fr;gap:22px}.frame{top:3px;right:9px;bottom:10px;left:9px}.frame i{width:18px;height:18px}.name{letter-spacing:.03em;font-size:clamp(34px,8vw,64px)}.quote-mark{left:-4px;top:-46px;font-size:96px}.quote{font-size:19px;line-height:1.6}.ring{display:none}.h-split{font-size:28px!important;margin:8px 0 12px}.lead{font-size:14px;line-height:1.65}.btn-map{margin-top:14px;padding:10px 20px}.row{grid-template-columns:1fr;gap:6px;padding:14px 10px}.row:hover{padding-left:14px}.val strong{font-size:18px}.schedule-tl{margin-top:18px}.schedule-tl:before{left:8px}.tl-item{grid-template-columns:1fr;padding:8px 0 8px 28px}.tl-item:before{left:8px;top:16px}.tl-time{text-align:left;font-size:18px}.tl-body h4{font-size:15px}.s4-note{margin-top:18px;margin-bottom:28px}.rsvp-card{padding:22px 18px}.field{margin-bottom:16px}}@media (max-width: 600px){.counter,.appheader .brand{display:none}.appheader{height:48px;padding:0 16px}.hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:9.5px;letter-spacing:.14em;max-width:calc(100vw - 110px);text-align:center}#app.dark .hint{color:#f2eddebf}.envelope{--env-scale: scale(.82);margin:-22px 0}.env-stage{margin:26px 0 22px}.marquee{height:38px}.nav.has-marquee{bottom:42px}.nav.no-marquee{bottom:12px}.brand{max-width:46vw}.date-big{font-size:32px;letter-spacing:.25em;text-indent:.25em}.nbtn{width:38px;height:38px}}@media (max-height: 730px){.name{font-size:clamp(32px,6.5vw,60px)}.date-big{font-size:clamp(24px,4.5vw,38px);margin:14px 0 6px}.quote{font-size:clamp(17px,2.4vw,22px)}.wrap{padding-top:16px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}.mq-track{animation:none!important}}
