.envelope-tpl{--env-bg:#ece3d3;--env-paper:#f8efdc;--env-paper-shadow:#503c1e2e;--env-ink:#3a2e1f;--env-soft:#6e5c44;--env-accent:#8a3534;--env-gold:#b48a3f;--env-fold:#d8c9aa;color:var(--env-ink);background:radial-gradient(circle at 30% 20%, #fff5dc80 0%, transparent 50%), radial-gradient(circle at 70% 80%, #fff5dc66 0%, transparent 50%), var(--env-bg);min-height:100vh;font-family:Fraunces,Noto Serif Georgian,serif;position:relative;overflow-x:hidden}.envelope-tpl.is-sealed{height:100vh;overflow:hidden}.envelope-tpl:before{content:"";z-index:0;pointer-events:none;opacity:.15;mix-blend-mode:multiply;background-image:radial-gradient(circle at 15% 25%,#785a3266 1px,#0000 1px),radial-gradient(circle at 45% 65%,#785a324d .5px,#0000 .5px);background-size:4px 4px,6px 6px;position:fixed;inset:0}.envelope-scene{z-index:10;perspective:1200px;justify-content:center;align-items:center;padding:2rem;transition:opacity .6s 1.4s;display:flex;position:fixed;inset:0}.envelope-tpl.is-open .envelope-scene{opacity:0;pointer-events:none}.envelope-wrap{aspect-ratio:3/2;width:min(85vmin,520px);transform-style:preserve-3d;position:relative}.envelope-back{background:var(--env-paper);border:1px solid var(--env-fold);box-shadow:inset 0 0 40px var(--env-paper-shadow), 0 30px 60px -20px #0000004d;border-radius:4px;position:absolute;inset:0}.envelope-back:after{content:"";background:linear-gradient(to top right,#0000 calc(50% - .5px),#503c1e1f 50%,#0000 calc(50% + .5px)),linear-gradient(to top left,#0000 calc(50% - .5px),#503c1e1f 50%,#0000 calc(50% + .5px));position:absolute;inset:0}.envelope-flap-top{background:linear-gradient(to bottom, var(--env-paper) 0%, #ecd8b5 100%);clip-path:polygon(0 0,100% 0,50% 100%);border-bottom:1px solid var(--env-fold);transform-origin:top;z-index:5;backface-visibility:hidden;height:50%;transition:transform 1.4s cubic-bezier(.65,0,.35,1);position:absolute;top:0;left:0;right:0;transform:rotateX(0);box-shadow:0 4px 12px #503c1e26}.envelope-tpl.is-open .envelope-flap-top{transform:rotateX(180deg)}.envelope-flap-left,.envelope-flap-right{z-index:4;background:linear-gradient(90deg,#d8c5a0 0%,#ecdbb8 100%);width:50%;position:absolute;top:0;bottom:0}.envelope-flap-left{clip-path:polygon(0 0,100% 50%,0 100%);left:0}.envelope-flap-right{clip-path:polygon(100% 0,100% 100%,0 50%);background:linear-gradient(270deg,#d8c5a0 0%,#ecdbb8 100%);right:0}.envelope-flap-bottom{clip-path:polygon(0 100%,100% 100%,50% 0);border-top:1px solid var(--env-fold);z-index:4;background:linear-gradient(#e0cb9d 0%,#c8b48f 100%);height:50%;position:absolute;bottom:0;left:0;right:0}.wax-seal{aspect-ratio:1;cursor:pointer;z-index:10;filter:drop-shadow(0 8px 18px #00000059);background:0 0;border:none;width:38%;transition:transform .25s;animation:3.6s ease-in-out infinite sealBreath;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wax-seal:hover{transform:translate(-50%,-50%)scale(1.05)}.wax-seal:active{transform:translate(-50%,-50%)scale(.95)}.wax-seal-svg{width:100%;height:100%}.wax-seal:after{content:"";pointer-events:none;border-radius:50%;animation:2.4s ease-out infinite sealPulse;position:absolute;inset:-8%;box-shadow:0 0 #8a353499}@keyframes sealPulse{0%{box-shadow:0 0 #8a353480}70%{box-shadow:0 0 0 24px #8a353400}to{box-shadow:0 0 #8a353400}}@keyframes sealBreath{0%,to{animation-timing-function:ease-in}50%{animation-timing-function:ease-out;transform:translate(-50%,-50%)scale(1.02)}}.wax-half{transition:transform .9s cubic-bezier(.65,0,.35,1),opacity .9s}.wax-half-left.is-broken{opacity:.85;transform:translate(-30%)rotate(-25deg)}.wax-half-right.is-broken{opacity:.85;transform:translate(30%)rotate(25deg)}.envelope-tpl.is-open .wax-seal{opacity:0;pointer-events:none;transition:opacity .6s 1s}.envelope-address{color:var(--env-soft);text-align:center;z-index:7;letter-spacing:.05em;font-family:Fraunces,serif;font-size:clamp(.85rem,1.4vw,1.05rem);font-style:italic;position:absolute;top:30%;left:50%;transform:translate(-50%)}.envelope-address .to{letter-spacing:.32em;text-transform:uppercase;color:var(--env-gold);margin-bottom:.4rem;font-family:JetBrains Mono,monospace;font-size:.6rem;font-style:normal;display:block}.envelope-tpl.is-open .envelope-address{opacity:0;transition:opacity .4s}.envelope-hint{letter-spacing:.32em;text-transform:uppercase;color:var(--env-soft);opacity:.7;text-align:center;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:.6rem;position:absolute;bottom:8%;left:50%;transform:translate(-50%)}.envelope-tpl.is-open .envelope-hint{opacity:0;transition:opacity .4s}.envelope-letter{border:1px solid var(--env-fold);z-index:3;text-align:center;pointer-events:none;background:linear-gradient(#fffaf0 0%,#f8efdc 100%);flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;transition:transform 1.4s cubic-bezier(.22,1,.36,1) .6s;display:flex;position:absolute;inset:6%;transform:translateY(0)scale(.96);box-shadow:inset 0 0 30px #503c1e14}.envelope-tpl.is-open .envelope-letter{transform:translateY(-30%)scale(1.05)}.envelope-letter .letter-eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--env-gold);margin-bottom:.8rem;font-family:JetBrains Mono,monospace;font-size:.55rem}.envelope-letter .letter-names{color:var(--env-ink);font-variation-settings:"opsz" 96;font-family:Fraunces,Noto Serif Georgian,serif;font-size:clamp(1.4rem,3.5vw,2.4rem);font-style:italic;line-height:1.05}.envelope-letter .letter-amp{color:var(--env-accent);font-size:.6em;display:block}.envelope-letter .letter-date{letter-spacing:.2em;color:var(--env-soft);margin-top:.6rem;font-family:JetBrains Mono,monospace;font-size:.7rem}.envelope-tpl .invitation{z-index:5;opacity:0;pointer-events:none;transition:opacity 1.2s 1.4s,transform 1.4s cubic-bezier(.22,1,.36,1) 1.4s;position:relative;transform:translateY(40px)}.envelope-tpl.is-open .invitation{opacity:1;pointer-events:auto;transform:none}.envelope-tpl .hero{text-align:center;place-items:center;min-height:100vh;padding:7rem 1.5rem 4rem;display:grid;position:relative}.envelope-tpl .hero-eyebrow{letter-spacing:.4em;text-transform:uppercase;color:var(--env-soft);align-items:center;gap:1rem;margin-bottom:2rem;font-family:JetBrains Mono,monospace;font-size:.7rem;display:inline-flex}.envelope-tpl .hero-eyebrow:before,.envelope-tpl .hero-eyebrow:after{content:"✦";color:var(--env-gold)}.envelope-tpl .hero-names{letter-spacing:-.02em;font-variation-settings:"opsz" 144;color:var(--env-ink);margin-bottom:2rem;font-family:Fraunces,Noto Serif Georgian,serif;font-size:clamp(3.5rem,11vw,8rem);font-style:italic;line-height:.95}.envelope-tpl .hero-amp{color:var(--env-accent);margin:.1em 0;font-size:.5em;display:block}.envelope-tpl .hero-date{letter-spacing:.35em;text-transform:uppercase;color:var(--env-soft);font-family:JetBrains Mono,monospace;font-size:.85rem}.envelope-tpl .hero-date-script{color:var(--env-ink);font-variation-settings:"opsz" 96;margin-top:.4rem;font-family:Fraunces,serif;font-size:1.6rem;font-style:italic}.envelope-tpl .hero-ornament{color:var(--env-accent);align-items:center;gap:.5rem;margin:2rem 0 1rem;display:inline-flex}.envelope-tpl .hero-ornament .ln{background:currentColor;width:60px;height:1px}.envelope-tpl .section{text-align:center;max-width:720px;margin:0 auto;padding:5rem 1.5rem}.envelope-tpl .section-card{background:var(--env-paper);border:1px solid var(--env-fold);border-radius:6px;padding:3rem 2rem;position:relative;box-shadow:0 20px 50px -20px #0000001f}.envelope-tpl .section-card:before,.envelope-tpl .section-card:after{content:"✦";color:var(--env-gold);font-size:.8rem;position:absolute}.envelope-tpl .section-card:before{top:1rem;left:1rem}.envelope-tpl .section-card:after{top:1rem;right:1rem}.envelope-tpl .section-num{letter-spacing:.3em;text-transform:uppercase;color:var(--env-accent);margin-bottom:1rem;font-family:JetBrains Mono,monospace;font-size:.7rem}.envelope-tpl .section h2{font-variation-settings:"opsz" 96;margin-bottom:1.5rem;font-family:Fraunces,serif;font-size:clamp(2rem,4vw,2.6rem);font-style:italic}.envelope-tpl .section p{color:var(--env-ink);opacity:.92;font-size:1.05rem;line-height:1.7}.envelope-tpl .section .venue-name{margin-bottom:.4rem;font-size:1.4rem;font-style:italic}.envelope-tpl .section a{background:var(--env-accent);color:#fff;letter-spacing:.25em;text-transform:uppercase;border-radius:2px;margin-top:1.5rem;padding:.6rem 1.6rem;font-family:JetBrains Mono,monospace;font-size:.7rem;display:inline-block}.envelope-tpl .section a:hover{background:var(--env-ink)}.envelope-tpl .countdown-section{text-align:center;padding:5rem 1.5rem}.envelope-tpl .countdown-section .section-num{letter-spacing:.3em;text-transform:uppercase;color:var(--env-accent);margin-bottom:2rem;font-family:JetBrains Mono,monospace;font-size:.7rem}.envelope-tpl .countdown .countdown-value{color:var(--env-ink);font-family:Fraunces,serif;font-size:clamp(3rem,6vw,4.5rem);font-style:italic}.envelope-tpl .countdown .countdown-label{color:var(--env-soft);font-family:JetBrains Mono,monospace}.envelope-tpl .schedule{gap:0;max-width:480px;margin:2rem auto 0;display:grid}.envelope-tpl .schedule-row{border-bottom:1px dashed #503c1e33;grid-template-columns:80px 1fr;align-items:baseline;padding:.85rem 0;display:grid}.envelope-tpl .schedule-time{letter-spacing:.15em;color:var(--env-accent);text-align:left;font-family:JetBrains Mono,monospace;font-size:.85rem}.envelope-tpl .schedule-label{text-align:left;font-size:1.05rem;font-style:italic}.envelope-tpl .gallery-wrap{padding:4rem 1rem}.envelope-tpl .gallery{grid-template-columns:repeat(2,1fr);gap:.75rem;max-width:1200px;margin:0 auto;display:grid}@media (min-width:760px){.envelope-tpl .gallery{grid-template-columns:repeat(3,1fr)}}.envelope-tpl .gallery img{aspect-ratio:1;object-fit:cover;filter:sepia(.12);width:100%;transition:transform .6s cubic-bezier(.22,1,.36,1),filter .6s}.envelope-tpl .gallery>div:hover img{filter:sepia(0);transform:scale(1.04)}.envelope-tpl .rsvp{color:var(--env-ink)}.envelope-tpl .rsvp .rsvp-label{color:var(--env-soft)}.envelope-tpl .rsvp .rsvp-input{border-bottom-color:#503c1e4d}.envelope-tpl .rsvp .rsvp-input:focus{border-bottom-color:var(--env-accent)}.envelope-tpl .rsvp .rsvp-choice-btn{border-color:#503c1e40}.envelope-tpl .rsvp .rsvp-choice-btn.is-active{background:var(--env-accent);border-color:var(--env-accent);color:#fff}.envelope-tpl .rsvp .rsvp-guest-btn{border-color:#503c1e40}.envelope-tpl .rsvp .rsvp-guest-btn.is-active,.envelope-tpl .rsvp-submit{background:var(--env-accent);color:#fff}.envelope-tpl .rsvp-submit:not(:disabled):hover{background:var(--env-ink)}.envelope-tpl .credit{text-align:center;letter-spacing:.3em;text-transform:uppercase;color:var(--env-soft);padding:3rem 1rem;font-family:JetBrains Mono,monospace;font-size:.65rem}.envelope-tpl .audio-toggle{color:var(--env-ink);background:#f8efdce6}.envelope-tpl .env-scene-hero{isolation:isolate;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:4rem 1.5rem 2rem;display:flex;position:relative;overflow:hidden}.envelope-tpl .env-scene-hero:before{content:"";z-index:-3;background:linear-gradient(#0d1230 0%,#1a1d4a 30%,#2a2452 55%,#4a2a44 80%,#6b2f3e 100%);position:absolute;inset:0}.envelope-tpl .env-night-sky{z-index:-2;pointer-events:none;position:absolute;inset:0}.envelope-tpl .env-moon{aspect-ratio:1;background:radial-gradient(circle at 38% 38%,#fff9e0 0%,#f6e6b8 40%,#d9b463 75%,#d9b46300 100%);border-radius:50%;width:clamp(80px,12vw,140px);animation:8s ease-in-out infinite env-moon-glow;position:absolute;top:8%;left:12%;box-shadow:0 0 60px 20px #f6e6b859}@keyframes env-moon-glow{0%,to{opacity:.92;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.envelope-tpl .env-stars{opacity:.85;background-image:radial-gradient(1.5px 1.5px at 18% 12%,#fff 99%,#0000 100%),radial-gradient(1px 1px at 28% 22%,#fff 99%,#0000 100%),radial-gradient(2px 2px at 42% 8%,#fff8d4 99%,#0000 100%),radial-gradient(1px 1px at 58% 18%,#fff 99%,#0000 100%),radial-gradient(1.5px 1.5px at 72% 6%,#fff 99%,#0000 100%),radial-gradient(1px 1px at 84% 14%,#fff8d4 99%,#0000 100%),radial-gradient(2px 2px at 92% 28%,#fff 99%,#0000 100%),radial-gradient(1px 1px at 8% 30%,#fff 99%,#0000 100%),radial-gradient(1.2px 1.2px at 24% 38%,#fff 99%,#0000 100%),radial-gradient(1.5px 1.5px at 38% 32%,#fff8d4 99%,#0000 100%),radial-gradient(1px 1px at 50% 28%,#fff 99%,#0000 100%),radial-gradient(1.5px 1.5px at 66% 36%,#fff 99%,#0000 100%),radial-gradient(1px 1px at 78% 32%,#fff 99%,#0000 100%),radial-gradient(2px 2px at 88% 42%,#fff 99%,#0000 100%);background-repeat:no-repeat;animation:4s ease-in-out infinite alternate env-star-twinkle;position:absolute;inset:0}@keyframes env-star-twinkle{0%{opacity:.5}to{opacity:1}}.envelope-tpl .env-mountains-far,.envelope-tpl .env-mountains-near{pointer-events:none;width:100%;position:absolute;left:0;right:0}.envelope-tpl .env-mountains-far{z-index:-2;opacity:.85;filter:blur(.4px);height:clamp(140px,22vh,240px);bottom:32%}.envelope-tpl .env-mountains-near{z-index:-1;height:clamp(120px,18vh,200px);bottom:26%}.envelope-tpl .env-water{z-index:-1;background:linear-gradient(#1b2a55 0%,#1a2752 30%,#261c45 70%,#3a1f3a 100%);height:28%;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.envelope-tpl .env-water:before{content:"";opacity:.6;background:repeating-linear-gradient(#f6e6b800 0,#f6e6b814 2px,#f6e6b800 4px);position:absolute;inset:0}.envelope-tpl .env-water-shimmer{filter:blur(2px);background:radial-gradient(#f6e6b899 0%,#0000 70%);width:38%;height:8px;animation:5s ease-in-out infinite env-water-glint;position:absolute;top:14%;left:8%}@keyframes env-water-glint{0%,to{opacity:.4;transform:translate(0)}50%{opacity:.9;transform:translate(20px)}}.envelope-tpl .env-frame{aspect-ratio:220/320;filter:drop-shadow(0 12px 28px #0006);width:clamp(160px,28vw,260px);margin-bottom:2rem;position:relative}.envelope-tpl .env-frame-svg{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.envelope-tpl .env-frame-inner{background:linear-gradient(#2c2454 0%,#1c1648 100%);border-radius:50% 50% 4px 4px/28% 28% 4px 4px;justify-content:center;align-items:center;display:flex;position:absolute;inset:4% 6%;overflow:hidden}.envelope-tpl .env-couple-photo{object-fit:cover;width:100%;height:100%}.envelope-tpl .env-frame-monogram{color:#f6e6b8;letter-spacing:-.04em;text-shadow:0 4px 16px #00000080;font-family:Fraunces,serif;font-size:clamp(3rem,7vw,5rem);font-style:italic;font-weight:500}.envelope-tpl .env-scene-text{text-align:center;color:#f6e6b8;max-width:700px}.envelope-tpl .env-scene-eyebrow{letter-spacing:.45em;text-transform:uppercase;opacity:.78;margin:0 0 1rem;font-family:JetBrains Mono,monospace;font-size:clamp(.7rem,1.2vw,.85rem)}.envelope-tpl .env-scene-names{font-family:var(--ttl-font,"Fraunces", "Noto Serif Georgian", serif);font-variation-settings:"opsz" 144;color:#fff8e0;text-shadow:0 4px 24px #f6e6b84d;margin:0;font-size:clamp(2.4rem,6.5vw,4.6rem);font-style:italic;font-weight:400;line-height:1.05}.envelope-tpl .env-scene-names span{display:inline-block}.envelope-tpl .env-scene-amp{color:#d9b463;vertical-align:.18em;padding:0 .25em;font-size:.5em}.envelope-tpl .env-scene-ornament{color:#d9b463;justify-content:center;align-items:center;gap:1rem;margin:1.4rem 0 1.2rem;display:flex}.envelope-tpl .env-scene-ornament .ln{background:linear-gradient(90deg,#0000,#d9b463,#0000);width:clamp(40px,8vw,90px);height:1px;display:block}.envelope-tpl .env-scene-date{letter-spacing:.32em;text-transform:uppercase;opacity:.85;margin:0;font-family:JetBrains Mono,monospace;font-size:clamp(.85rem,1.4vw,1rem)}.envelope-tpl .env-scene-date-roman{color:#f6e6b8;letter-spacing:.06em;margin-top:.4rem;font-family:Fraunces,serif;font-size:clamp(1rem,1.8vw,1.2rem);font-style:italic}
