.flowers-tpl{--bg-deep: #0a0e2a;--bg-deep-2: #141a44;--gold: #ffd76a;--gold-soft: #ffb84d;--cream: #fbf3e3;--cream-2: #f4e6c8;--ink: #3a2c1a;--rose: #e7a9a0;--star: #ffffff;position:relative;min-height:100vh;width:100%;overflow:hidden;background:var(--bg-deep);color:var(--cream);font-family:Cormorant Garamond,Georgia,Times New Roman,serif}.flowers-tpl *{box-sizing:border-box}.flowers-tpl .fl-stage{position:relative;min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;padding:48px 16px;overflow:hidden;background:radial-gradient(ellipse at 50% 0%,var(--bg-deep-2) 0%,var(--bg-deep) 55%,#050714 100%)}.flowers-tpl .fl-stars{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.flowers-tpl .fl-star{position:absolute;background:var(--star);border-radius:50%;opacity:.75;animation:fl-twinkle 3.5s ease-in-out infinite}@keyframes fl-twinkle{0%,to{opacity:.25;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.flowers-tpl .fl-shooting-star{position:absolute;width:120px;height:2px;background:linear-gradient(90deg,var(--star),transparent);opacity:0;transform:rotate(-25deg);animation:fl-shoot 6s linear infinite;border-radius:2px}@keyframes fl-shoot{0%{opacity:0;transform:translate(0) rotate(-25deg)}3%{opacity:1}12%{opacity:0;transform:translate(-260px,150px) rotate(-25deg)}to{opacity:0}}.flowers-tpl .fl-intro{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:28px;transition:opacity .8s ease,transform .8s ease}.flowers-tpl .fl-intro.fl-hidden{opacity:0;transform:scale(.94);pointer-events:none;position:absolute}.flowers-tpl .fl-intro h1{font-family:Cormorant Garamond,serif;font-weight:600;font-size:clamp(1.5rem,7vw,2.5rem);line-height:1.25;letter-spacing:.03em;margin:0;max-width:320px;color:var(--gold);text-shadow:0 0 22px rgba(255,215,106,.35);white-space:pre-line}.flowers-tpl .fl-eyebrow{margin:0;letter-spacing:.32em;text-transform:uppercase;font-family:Georgia,serif;font-size:.7rem;color:var(--rose);opacity:.85}.flowers-tpl .fl-click-btn{font-family:Cormorant Garamond,serif;font-size:1.15rem;letter-spacing:.06em;color:var(--ink);background:linear-gradient(180deg,var(--gold) 0%,var(--gold-soft) 100%);border:none;padding:16px 42px;border-radius:999px;cursor:pointer;box-shadow:0 8px 28px #ffb74d59,inset 0 1px #ffffff80;transition:transform .25s ease,box-shadow .25s ease}.flowers-tpl .fl-click-btn:hover{transform:translateY(-2px) scale(1.03)}.flowers-tpl .fl-click-btn:active{transform:translateY(0) scale(.98)}.flowers-tpl .fl-reveal{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;opacity:0;transform:translateY(18px);transition:opacity 1s ease,transform 1s ease;width:100%;max-width:480px;margin:0 auto;padding:0 16px;pointer-events:none}.flowers-tpl .fl-reveal.fl-show{opacity:1;transform:translateY(0);pointer-events:auto}.flowers-tpl .fl-bouquet-wrap{position:relative;width:min(78vw,300px);filter:drop-shadow(0 18px 30px rgba(0,0,0,.45))}.flowers-tpl .fl-bouquet-wrap svg{width:100%;height:auto;display:block}.flowers-tpl .fl-glow{filter:drop-shadow(0 0 7px var(--fl-glow-color, rgba(255, 215, 106, .6)))}.flowers-tpl .fl-bloom{opacity:0;transform:translateY(24px) scale(.85);transform-box:fill-box;transform-origin:50% 100%;animation:fl-bloom-in 1s cubic-bezier(.2,.9,.25,1) forwards}@keyframes fl-bloom-in{to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fl-fade-in{to{opacity:1}}.flowers-tpl .fl-caption{font-family:Cormorant Garamond,serif;font-style:italic;font-size:1.05rem;color:var(--fl-accent, var(--rose));opacity:0;animation:fl-fade-in 1s ease forwards;animation-delay:1.4s;text-align:center}.flowers-tpl .fl-letter-trigger{margin-top:6px;background:transparent;border:1px solid rgba(251,243,227,.35);color:var(--cream);font-family:Georgia,serif;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;padding:12px 26px;border-radius:999px;cursor:pointer;opacity:0;animation:fl-fade-in 1s ease forwards;animation-delay:1.7s;transition:background .25s ease,border-color .25s ease}.flowers-tpl .fl-letter-trigger:hover{background:#fbf3e314;border-color:#fbf3e399}.flowers-tpl .fl-letter-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#050714b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .4s ease;z-index:10}.flowers-tpl .fl-letter-overlay.fl-open{opacity:1;pointer-events:auto}.flowers-tpl .fl-letter-card{position:relative;width:min(92vw,460px);max-height:85vh;overflow-y:auto;background:linear-gradient(180deg,var(--cream) 0%,var(--cream-2) 100%);color:var(--ink);border-radius:6px;padding:38px 30px 32px;box-shadow:0 30px 60px #00000080;transform:scale(.9) translateY(20px);transition:transform .45s cubic-bezier(.2,.9,.25,1);font-family:Cormorant Garamond,Georgia,serif}.flowers-tpl .fl-letter-overlay.fl-open .fl-letter-card{transform:scale(1) translateY(0)}.flowers-tpl .fl-letter-close{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;border:none;background:#3a2c1a14;color:var(--ink);font-size:1.1rem;line-height:1;cursor:pointer}.flowers-tpl .fl-letter-close:hover{background:#3a2c1a29}.flowers-tpl .fl-letter-heading{text-align:center;font-size:1.4rem;letter-spacing:.03em;margin:0 0 4px;color:var(--ink)}.flowers-tpl .fl-letter-rule{width:64px;height:1px;background:var(--fl-accent, var(--rose));margin:10px auto 22px}.flowers-tpl .fl-letter-body p{font-size:1.15rem;line-height:1.7;margin:0 0 16px}.flowers-tpl .fl-letter-sign{margin-top:20px;text-align:right;font-style:italic;font-size:1.15rem}@media (max-width: 420px){.flowers-tpl .fl-letter-card{padding:30px 20px 26px}}.letter-tpl{--lt-bg-deep: #2b0f1a;--lt-bg-mid: #4a1826;--lt-bg-glow: #7a2439;--lt-paper: #fdf6ec;--lt-paper-2: #f5e9d8;--lt-ink: #3a2a22;--lt-muted: #8a6f68;--lt-accent: #e8546b;position:relative;min-height:100vh;width:100%;background:var(--lt-bg-deep);color:var(--lt-paper);font-family:Cormorant Garamond,Georgia,Times New Roman,serif;overflow:hidden}.letter-tpl *{box-sizing:border-box}.letter-tpl .lt-stage{position:relative;min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;padding:48px 16px;overflow:hidden;background:radial-gradient(ellipse at 50% 20%,var(--lt-bg-glow) 0%,var(--lt-bg-mid) 45%,var(--lt-bg-deep) 85%)}.letter-tpl .lt-hearts{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.letter-tpl .lt-heart{position:absolute;bottom:-40px;opacity:0;animation:lt-float linear infinite}.letter-tpl .lt-heart svg{display:block;filter:drop-shadow(0 0 6px rgba(0,0,0,.25))}@keyframes lt-float{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}10%{opacity:.85}90%{opacity:.6}to{transform:translateY(-115vh) translate(var(--lt-drift, 20px)) rotate(12deg);opacity:0}}.letter-tpl .lt-content-row{position:relative;z-index:2;width:100%;max-width:920px;display:flex;align-items:center;justify-content:center}.letter-tpl .lt-left-col{position:relative;flex:1 1 320px;min-height:420px}.letter-tpl .lt-intro{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:fit-content;height:fit-content;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:22px;transition:opacity .6s ease,transform .6s ease}.letter-tpl .lt-intro.lt-hidden{opacity:0;transform:scale(.92);pointer-events:none}.letter-tpl .lt-eyebrow{margin:0;letter-spacing:.32em;text-transform:uppercase;font-family:Georgia,serif;font-size:.7rem;color:#e8a6b2;opacity:.9}.letter-tpl .lt-title{font-family:Cormorant Garamond,serif;font-weight:600;font-size:clamp(1.4rem,6.5vw,2.2rem);line-height:1.3;margin:0;max-width:320px;color:var(--lt-paper);white-space:pre-line}.letter-tpl .lt-envelope-btn{background:none;border:none;padding:20px;cursor:pointer;perspective:600px}.letter-tpl .lt-envelope-btn:focus-visible{outline:2px solid var(--lt-paper);outline-offset:6px;border-radius:12px}.letter-tpl .lt-envelope{width:min(62vw,230px);position:relative;animation:lt-pulse 2.6s ease-in-out infinite}@keyframes lt-pulse{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.letter-tpl .lt-envelope svg{width:100%;height:auto;display:block;overflow:visible}.letter-tpl .lt-flap{transform-box:fill-box;transform-origin:50% 0%;transition:transform .6s cubic-bezier(.4,0,.2,1)}.letter-tpl .lt-flap.lt-flap-open{transform:rotateX(-135deg)}.letter-tpl .lt-tap-hint{font-family:Georgia,serif;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:#fdf6ec8c;margin:0}.letter-tpl .lt-letter-scene{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;height:fit-content;z-index:2;width:100%;max-width:520px;padding:0 16px;opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease;pointer-events:none}.letter-tpl .lt-letter-scene.lt-show{opacity:1;transform:translateY(0);pointer-events:auto}.letter-tpl .lt-letter-card{position:relative;background:linear-gradient(180deg,var(--lt-paper) 0%,var(--lt-paper-2) 100%);color:var(--lt-ink);border-radius:8px;padding:40px 32px 34px;box-shadow:0 30px 70px #00000080;max-height:82vh;overflow-y:auto}.letter-tpl .lt-letter-close{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;border:none;background:#3a2a2214;color:var(--lt-ink);font-size:1.1rem;line-height:1;cursor:pointer}.letter-tpl .lt-letter-close:hover{background:#3a2a2229}.letter-tpl .lt-letter-heading{text-align:center;font-size:1.4rem;margin:0 0 4px}.letter-tpl .lt-letter-rule{width:56px;height:1px;background:var(--lt-accent);margin:12px auto 22px}.letter-tpl .lt-letter-body p{font-size:1.12rem;line-height:1.7;margin:0 0 16px}.letter-tpl .lt-letter-sign{margin-top:18px;text-align:right;font-style:italic;font-size:1.1rem;color:var(--lt-muted)}@media (max-width: 420px){.letter-tpl .lt-letter-card{padding:32px 22px 28px}}.birthday-tpl{--bd-bg1: #fff0f6;--bd-bg2: #fffaea;--bd-ink: #241934;--bd-muted: #8a7d94;--bd-paper: #ffffff;--bd-pink: #ff3e7f;--bd-yellow: #ffcb3d;--bd-teal: #00c2a8;--bd-purple: #8c52ff;--bd-orange: #ff8a3d;--bd-accent: #ff3e7f;position:relative;min-height:100vh;width:100%;background:var(--bd-bg1);color:var(--bd-ink);font-family:Nunito,Arial,sans-serif;overflow:hidden}.birthday-tpl *{box-sizing:border-box}.birthday-tpl .bd-stage{position:relative;min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;padding:56px 16px 48px;overflow:hidden;background:radial-gradient(circle,rgba(255,255,255,.9) 2px,transparent 2.5px) 0 0/26px 26px,linear-gradient(135deg,var(--bd-bg1),var(--bd-bg2))}.birthday-tpl .bd-blob{position:absolute;border-radius:50%;filter:blur(40px);opacity:.35;z-index:0}.birthday-tpl .bd-blob-a{width:340px;height:340px;background:var(--bd-teal);top:-90px;left:-90px}.birthday-tpl .bd-blob-b{width:300px;height:300px;background:var(--bd-purple);bottom:-100px;right:-80px}.birthday-tpl .bd-float-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.birthday-tpl .bd-floater{position:absolute;bottom:-120px;opacity:0;animation:bd-rise linear infinite}@keyframes bd-rise{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}10%{opacity:.9}90%{opacity:.75}to{transform:translateY(-125vh) translate(var(--bd-drift, 20px)) rotate(var(--bd-spin, 60deg));opacity:0}}.birthday-tpl .bd-candy-burst{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.birthday-tpl .bd-candy{position:absolute;left:50%;top:60%;width:11px;height:11px;opacity:0;animation:bd-candy-pop .95s cubic-bezier(.2,.7,.3,1) forwards}@keyframes bd-candy-pop{0%{transform:translate(-50%,-50%) scale(.3) rotate(0);opacity:1}to{transform:translate(calc(-50% + var(--bd-tx)),calc(-50% + var(--bd-ty))) scale(1) rotate(var(--bd-rot, 180deg));opacity:0}}.birthday-tpl .bd-content-row{position:relative;z-index:2;width:100%;max-width:920px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 40px}.birthday-tpl .bd-left-col{position:relative;flex:1 1 320px;min-height:460px;display:flex;align-items:center;justify-content:center;order:1}.birthday-tpl .bd-photos-col{order:2;flex:0 0 auto;position:relative;display:flex;flex-direction:row;flex-wrap:wrap;gap:20px 16px;justify-content:center;max-width:280px;padding-top:22px}.birthday-tpl .bd-photos-col:before{content:"";position:absolute;top:0;left:6%;width:88%;border-top:3px dashed rgba(36,25,52,.35)}.birthday-tpl .bd-medal{position:relative;display:flex;flex-direction:column;align-items:center;margin:0}.birthday-tpl .bd-medal .bd-clip{width:16px;height:10px;border-radius:2px;margin-bottom:-4px;z-index:1}.birthday-tpl .bd-medal .bd-ring{width:92px;height:92px;border-radius:50%;border:5px dashed;display:flex;align-items:center;justify-content:center;background:var(--bd-paper);box-shadow:0 10px 18px #24193429;overflow:hidden}.birthday-tpl .bd-medal .bd-face-img{width:74px;height:74px;border-radius:50%;display:block;object-fit:cover}.birthday-tpl .bd-medal:nth-child(2){transform:rotate(-4deg) translateY(6px)}.birthday-tpl .bd-medal:nth-child(3){transform:rotate(5deg)}.birthday-tpl .bd-medal:nth-child(4){transform:rotate(-3deg) translateY(8px)}.birthday-tpl .bd-medal:nth-child(5){transform:rotate(4deg)}@media (max-width: 760px){.birthday-tpl .bd-content-row{flex-direction:column;gap:30px}.birthday-tpl .bd-left-col{order:1}.birthday-tpl .bd-photos-col{order:2;max-width:320px}}.birthday-tpl .bd-intro{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px;transition:opacity .5s ease,transform .5s ease}.birthday-tpl .bd-intro.bd-hidden{opacity:0;transform:scale(.9);pointer-events:none;position:absolute}.birthday-tpl .bd-eyebrow{display:inline-block;margin:0;font-family:Fredoka,sans-serif;font-weight:600;font-size:.78rem;letter-spacing:.06em;color:var(--bd-paper);background:var(--bd-accent);padding:5px 16px;border-radius:999px;transform:rotate(-3deg)}.birthday-tpl .bd-title{font-family:Fredoka,sans-serif;font-weight:700;font-size:clamp(1.7rem,7.5vw,2.6rem);line-height:1.15;margin:0;max-width:340px;color:var(--bd-ink);white-space:pre-line;text-shadow:3px 3px 0 var(--bd-yellow)}.birthday-tpl .bd-click-btn{font-family:Fredoka,sans-serif;font-weight:600;font-size:1.1rem;color:var(--bd-ink);background:var(--bd-yellow);border:3px solid var(--bd-ink);padding:14px 38px;border-radius:16px;cursor:pointer;box-shadow:5px 5px 0 var(--bd-ink);transition:transform .15s ease,box-shadow .15s ease}.birthday-tpl .bd-click-btn:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--bd-ink)}.birthday-tpl .bd-click-btn:active{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--bd-ink)}.birthday-tpl .bd-click-btn:focus-visible{outline:3px solid var(--bd-purple);outline-offset:3px}.birthday-tpl .bd-reveal{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s ease;pointer-events:none}.birthday-tpl .bd-reveal.bd-show{opacity:1;transform:translateY(0);pointer-events:auto}.birthday-tpl .bd-cake-wrap{position:relative;width:min(60vw,230px)}.birthday-tpl .bd-cake-wrap svg{width:100%;height:auto;display:block;overflow:visible}.birthday-tpl .bd-cake-wrap.bd-pop svg{animation:bd-pop-bounce .7s cubic-bezier(.3,1.6,.5,1) 1}@keyframes bd-pop-bounce{0%{transform:scale(.6) rotate(-6deg)}55%{transform:scale(1.12) rotate(3deg)}to{transform:scale(1) rotate(0)}}.birthday-tpl .bd-flame{transform-box:fill-box;transform-origin:50% 100%;animation:bd-flicker 1.2s ease-in-out infinite}.birthday-tpl .bd-flame.bd-out{animation:none;opacity:0;transition:opacity .5s ease}@keyframes bd-flicker{0%,to{transform:scaleY(1) rotate(0)}50%{transform:scaleY(1.15) rotate(-4deg)}}.birthday-tpl .bd-caption{font-family:Fredoka,sans-serif;font-weight:700;font-size:1.35rem;color:var(--bd-accent);opacity:0;animation:bd-fade-in .8s ease forwards;animation-delay:1s;text-align:center}@keyframes bd-fade-in{to{opacity:1}}.birthday-tpl .bd-letter-trigger{margin-top:2px;background:var(--bd-paper);border:3px solid var(--bd-ink);color:var(--bd-ink);font-family:Fredoka,sans-serif;font-weight:600;font-size:.85rem;padding:10px 22px;border-radius:999px;cursor:pointer;opacity:0;animation:bd-fade-in .8s ease forwards;animation-delay:1.3s;box-shadow:3px 3px 0 var(--bd-ink);transition:transform .15s ease,box-shadow .15s ease}.birthday-tpl .bd-letter-trigger:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--bd-ink)}.birthday-tpl .bd-letter-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#24193499;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .4s ease;z-index:10}.birthday-tpl .bd-letter-overlay.bd-open{opacity:1;pointer-events:auto}.birthday-tpl .bd-letter-card{position:relative;width:min(92vw,460px);max-height:85vh;overflow-y:auto;background:var(--bd-paper);color:var(--bd-ink);border-radius:18px;padding:38px 30px 32px;box-shadow:0 20px #2419341f,0 30px 60px #24193459;border:3px solid var(--bd-ink);transform:scale(.9) translateY(20px);transition:transform .45s cubic-bezier(.2,.9,.25,1);font-family:Nunito,Arial,sans-serif}.birthday-tpl .bd-letter-overlay.bd-open .bd-letter-card{transform:scale(1) translateY(0)}.birthday-tpl .bd-letter-close{position:absolute;top:14px;right:14px;width:32px;height:32px;border-radius:50%;border:3px solid var(--bd-ink);background:var(--bd-accent);color:#fff;font-size:1.1rem;line-height:1;cursor:pointer;box-shadow:2px 2px 0 var(--bd-ink);z-index:1;display:flex;align-items:center;justify-content:center;padding:0}.birthday-tpl .bd-letter-close:hover{filter:brightness(1.05)}.birthday-tpl .bd-letter-heading{text-align:center;font-family:Fredoka,sans-serif;font-weight:700;font-size:1.5rem;margin:6px 0 4px}.birthday-tpl .bd-letter-rule{width:70px;height:5px;border-radius:3px;background:repeating-linear-gradient(90deg,var(--bd-teal) 0 8px,var(--bd-yellow) 8px 16px);margin:12px auto 22px}.birthday-tpl .bd-letter-body p{font-size:1.08rem;line-height:1.7;margin:0 0 16px}.birthday-tpl .bd-letter-sign{margin-top:20px;text-align:right;font-style:italic;font-weight:700;font-size:1.05rem;color:var(--bd-purple)}@media (max-width: 420px){.birthday-tpl .bd-letter-card{padding:34px 22px 26px}}.invite-tpl{position:relative;min-height:100vh;width:100%;background:var(--inv-bg);color:var(--inv-ink);font-family:var(--inv-font-body);overflow:hidden}.invite-tpl *{box-sizing:border-box}.invite-tpl .inv-stage{position:relative;min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;padding:56px 16px;overflow:hidden}.invite-tpl .inv-deco{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;overflow:hidden}.invite-tpl .inv-content{position:relative;z-index:2;width:100%;max-width:520px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px}.invite-tpl .inv-icon{width:min(46vw,170px);margin-bottom:4px}.invite-tpl .inv-icon svg{width:100%;height:auto;display:block;overflow:visible}.invite-tpl .inv-icon.inv-anim-sway{animation:inv-sway 3.2s ease-in-out infinite;filter:drop-shadow(0 14px 18px rgba(0,0,0,.25))}.invite-tpl .inv-icon.inv-anim-spin{animation:inv-spin 6s linear infinite}@keyframes inv-sway{0%,to{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}@keyframes inv-spin{to{transform:rotate(360deg)}}.invite-tpl .inv-flame{transform-box:fill-box;transform-origin:50% 100%;animation:inv-flicker 1.3s ease-in-out infinite}@keyframes inv-flicker{0%,to{transform:scaleY(1) rotate(0)}50%{transform:scaleY(1.12) rotate(-3deg)}}.invite-tpl .inv-icon-beam{transform-box:fill-box;transform-origin:50% 0%;animation:inv-beam-pulse 2.4s ease-in-out infinite}@keyframes inv-beam-pulse{0%,to{opacity:.35}50%{opacity:.7}}.invite-tpl .inv-intro{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:16px;transition:opacity .5s ease,transform .5s ease}.invite-tpl .inv-intro.inv-hidden{opacity:0;transform:scale(.92);pointer-events:none;position:absolute}.invite-tpl .inv-eyebrow{margin:0;letter-spacing:.28em;text-transform:uppercase;font-size:.7rem;font-weight:700;color:var(--inv-eyebrow)}.invite-tpl .inv-title{font-family:var(--inv-font-title);font-weight:var(--inv-title-weight, 700);font-style:var(--inv-title-style, normal);text-transform:var(--inv-title-transform, none);font-size:clamp(1.6rem,7vw,2.5rem);line-height:1.2;margin:0;max-width:380px;color:var(--inv-title-color);white-space:pre-line;text-shadow:var(--inv-title-shadow, none)}.invite-tpl .inv-envelope-btn{background:none;border:none;padding:10px;cursor:pointer}.invite-tpl .inv-envelope-btn:focus-visible{outline:2px solid var(--inv-accent);outline-offset:6px;border-radius:12px}.invite-tpl .inv-envelope{width:min(56vw,210px);position:relative;filter:var(--inv-envelope-shadow, none)}.invite-tpl .inv-envelope svg{width:100%;height:auto;display:block;overflow:visible}.invite-tpl .inv-flap{transform-origin:50% 0%;transition:transform .6s cubic-bezier(.4,0,.2,1)}.invite-tpl .inv-flap.inv-flap-open{transform:rotateX(-135deg)}.invite-tpl .inv-tap-hint{font-size:.85rem;font-weight:600;color:var(--inv-muted);margin:0}.invite-tpl .inv-letter-scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;transform:translateY(18px);background:var(--inv-scene-bg);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:opacity .7s ease,transform .7s ease;pointer-events:none}.invite-tpl .inv-letter-scene.inv-show{opacity:1;transform:translateY(0);pointer-events:auto}.invite-tpl .inv-letter-card{position:relative;width:min(92vw,460px);background:linear-gradient(180deg,var(--inv-paper) 0%,var(--inv-paper-2) 100%);color:var(--inv-ink);border-radius:var(--inv-card-radius, 8px);padding:40px 32px 34px;box-shadow:var(--inv-card-shadow, 0 30px 70px rgba(0, 0, 0, .4));border:var(--inv-card-border, none);max-height:82vh;overflow-y:auto;font-family:var(--inv-font-body)}.invite-tpl .inv-letter-close{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;border:none;background:var(--inv-close-bg);color:var(--inv-ink);font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.invite-tpl .inv-letter-close:hover{background:var(--inv-close-bg-hover)}.invite-tpl .inv-letter-heading{text-align:center;font-family:var(--inv-font-title);font-weight:var(--inv-title-weight, 700);font-style:var(--inv-title-style, normal);text-transform:var(--inv-title-transform, none);font-size:1.4rem;margin:0 0 4px;color:var(--inv-heading-color)}.invite-tpl .inv-letter-rule{width:56px;height:var(--inv-rule-height, 1px);border-radius:2px;background:var(--inv-rule-bg);margin:12px auto 22px}.invite-tpl .inv-letter-body p{font-size:1.06rem;line-height:1.75;margin:0 0 16px;color:var(--inv-body-color)}.invite-tpl .inv-letter-sign{margin-top:18px;text-align:right;font-style:italic;font-size:1.05rem;color:var(--inv-muted)}.invite-tpl .inv-details{margin-top:6px;text-align:left;background:var(--inv-details-bg);border:1px solid var(--inv-details-border);border-radius:10px;padding:14px 18px}.invite-tpl .inv-details-row{display:flex;gap:10px;font-size:.96rem;margin-bottom:6px;color:var(--inv-body-color)}.invite-tpl .inv-details-row:last-child{margin-bottom:0}.invite-tpl .inv-details-row b{min-width:52px;flex:none;color:var(--inv-accent)}@media (max-width: 420px){.invite-tpl .inv-letter-card{padding:32px 22px 28px}}.invite-tpl .inv-steam{position:absolute;bottom:-40px;opacity:0;animation:inv-steam-rise linear infinite}.invite-tpl .inv-steam svg{display:block}@keyframes inv-steam-rise{0%{transform:translateY(0) translate(0) scale(.8);opacity:0}12%{opacity:.5}88%{opacity:.3}to{transform:translateY(-110vh) translate(var(--drift, 16px)) scale(1.3);opacity:0}}.invite-tpl .inv-bean{position:absolute;opacity:.22}.invite-tpl .inv-dot{position:absolute;border-radius:50%;opacity:.5}.invite-tpl .inv-disco-beam{position:absolute;top:50%;left:50%;width:2px;height:70vmax;background:linear-gradient(rgba(255,255,255,.14),transparent);transform-origin:top center}.invite-tpl .inv-bulb{position:absolute;opacity:.5;animation:inv-glow 2.4s ease-in-out infinite}@keyframes inv-glow{0%,to{opacity:.25}50%{opacity:.65}}.invite-tpl .inv-petal{position:absolute;bottom:-40px;opacity:0;animation:inv-fall linear infinite}@keyframes inv-fall{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}10%{opacity:.7}90%{opacity:.5}to{transform:translateY(-118vh) translate(var(--drift, 20px)) rotate(200deg);opacity:0}}.invite-tpl .inv-spark{position:absolute;opacity:.5;animation:inv-tw 2.6s ease-in-out infinite}@keyframes inv-tw{0%,to{opacity:.15}50%{opacity:.6}}.invite-tpl .inv-spark-bold{position:absolute;opacity:.7;animation:inv-tw-bold 2.2s ease-in-out infinite}@keyframes inv-tw-bold{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.invite-tpl .inv-cloud{position:absolute;opacity:.7}.invite-tpl .inv-bird{position:absolute;opacity:.6;animation:inv-fly linear infinite}@keyframes inv-fly{0%{transform:translate(-40px)}to{transform:translate(110vw)}}.invite-tpl .inv-glow-blob{position:absolute;border-radius:50%;filter:blur(50px);opacity:.4}.invite-tpl .inv-px{position:absolute;opacity:.6;animation:inv-blink 1.6s steps(2) infinite}@keyframes inv-blink{50%{opacity:.1}}.invite-tpl .inv-stripe{position:absolute;top:0;height:100%;width:2px;background:linear-gradient(var(--stripe-color, rgba(255, 45, 78, .25)),transparent);transform:skew(-12deg)}html,body,#root{height:100%}:root{--grid: #dbe5f7;--margin: #f08aa4;--page-bg: #f6f9ff}:root[data-theme=dark]{--grid: #232b49;--margin: #8a4a62;--page-bg: #151a2e}body{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:26px 26px}@media (max-width: 1099px){:root{--grid: #dce6f8}:root[data-theme=dark]{--grid: #222b50}body{background-image:linear-gradient(var(--grid) 0 2px,transparent 2px),linear-gradient(90deg,var(--grid) 0 2px,transparent 2px)}}body:before{content:"";position:fixed;left:10px;top:0;bottom:0;width:2px;background:var(--margin);opacity:.7;pointer-events:none;z-index:-1}@media (min-width: 1100px){body:before{left:64px}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.rise{animation:rise .6s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--rise-delay, 0s)}@media (prefers-reduced-motion: reduce){.rise{animation:none}}.tape{position:absolute;top:-11px;left:50%;width:70px;height:22px;background:#f08aa4b3;transform:translate(-50%) rotate(-3deg);pointer-events:none;z-index:2}.on-grid{text-shadow:0 0 2px var(--page-bg),0 0 2px var(--page-bg),0 0 3px var(--page-bg),0 0 5px var(--page-bg),0 0 7px var(--page-bg)}:focus-visible{outline:3px solid #2735a8;outline-offset:2px}:root[data-theme=dark] :focus-visible{outline-color:#ffe477}.skip-link{position:fixed;top:8px;left:8px;z-index:2000;transform:translateY(-200%);padding:10px 16px;border:2px solid #141a3d;border-radius:6px;background:#ffe477;color:#141a3d;font:700 .95rem Instrument Sans,sans-serif;cursor:pointer}.skip-link:focus{transform:none}.fade-in{animation:fade-in .28s ease-out both}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.fade-in{animation:none}}
