:root{--navy:#071426;--navy2:#0d2741;--gold:#d9b76e;--gold2:#f6e6b8;--cream:#fff8e9;--text:#eef4f8;--muted:#b9c3cf;--glass:rgba(255,255,255,.08);--border:rgba(217,183,110,.38)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 50% 10%,#153b61 0,#071426 42%,#020711 100%);color:var(--text);font-family:Montserrat,sans-serif;overflow-x:hidden}button,a,input,textarea{font:inherit}a{color:inherit;text-decoration:none}#stars{position:fixed;inset:0;width:100%;height:100%;z-index:-3}.sparkles{position:fixed;inset:0;pointer-events:none;z-index:-2;background-image:radial-gradient(circle,#fff 0 1px,transparent 1.7px);background-size:83px 83px;opacity:.18;animation:drift 25s linear infinite}@keyframes drift{to{background-position:160px 220px}}
.scene{min-height:100svh;display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:32px 20px;position:relative}.scene.active{display:flex;animation:fadeIn 1s ease}.scene.exit{animation:fadeOut 1s forwards}@keyframes fadeIn{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}@keyframes fadeOut{to{opacity:0;transform:scale(.96)}}
.eyebrow,.section-kicker,.world-mark{font-size:.72rem;letter-spacing:.35em;color:var(--gold);font-weight:600}.globe-wrap{width:min(76vw,430px);aspect-ratio:1;position:relative;margin:20px auto}.globe-wrap:after{content:"";position:absolute;inset:12%;border-radius:50%;box-shadow:0 0 55px 14px rgba(83,178,255,.22),0 0 120px rgba(217,183,110,.1)}#globeCanvas{width:100%;height:100%;position:relative;z-index:2}.orbit{position:absolute;inset:10%;border:1px solid rgba(217,183,110,.5);border-radius:50%;transform:rotateX(65deg) rotateZ(-18deg);z-index:3}.orbit-two{inset:4%;transform:rotateX(75deg) rotateZ(42deg);opacity:.35}.plane{position:absolute;left:50%;top:-16px;font-size:25px;color:var(--gold2);filter:drop-shadow(0 0 10px var(--gold));animation:orbitPlane 7s linear infinite;transform-origin:0 calc(50% + 160px)}@keyframes orbitPlane{to{transform:rotate(360deg)}}
.intro-copy p{color:var(--muted);margin:.5rem}.intro-copy h1,.hero-card h2,.finale h2{font-family:"Cormorant Garamond",serif;font-size:clamp(3.2rem,12vw,6.7rem);font-weight:500;margin:.1em 0;color:var(--cream);text-shadow:0 0 24px rgba(217,183,110,.18)}h1 span,h2 span{color:var(--gold);font-style:italic}.date{letter-spacing:.45em;color:var(--gold)!important}.primary,.secondary{border:1px solid var(--gold);border-radius:999px;padding:14px 24px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:.25s}.primary{background:linear-gradient(135deg,#b68b3e,#f0d58f);color:#1b1a17;font-weight:600;box-shadow:0 10px 35px rgba(217,183,110,.2)}.primary:hover,.secondary:hover{transform:translateY(-2px);box-shadow:0 12px 35px rgba(217,183,110,.28)}.secondary{background:rgba(255,255,255,.04);color:var(--gold2)}.compact{padding:11px 18px}.micro{font-size:.75rem;color:var(--muted)}
.rings-stage{height:220px;width:330px;position:relative}.ring{position:absolute;top:52px;width:120px;height:120px;border:13px solid var(--gold);border-radius:50%;box-shadow:inset 0 0 12px var(--gold2),0 0 22px rgba(217,183,110,.5)}.ring-left{left:28px;animation:ringLeft 2.2s ease forwards}.ring-right{right:28px;animation:ringRight 2.2s ease forwards}.ring-light{position:absolute;inset:38px 80px;background:radial-gradient(circle,rgba(255,244,197,.85),transparent 62%);filter:blur(10px);opacity:0;animation:flash 1s 1.5s forwards}@keyframes ringLeft{from{transform:translateX(-160px) rotate(-40deg);opacity:0}to{transform:translateX(40px);opacity:1}}@keyframes ringRight{from{transform:translateX(160px) rotate(40deg);opacity:0}to{transform:translateX(-40px);opacity:1}}@keyframes flash{to{opacity:1}}#ringsScene h2{font:500 clamp(2.3rem,8vw,4rem) "Cormorant Garamond",serif;color:var(--cream);margin:.2em}#ringsScene p{color:var(--muted);max-width:520px;line-height:1.8}
.envelope{width:min(86vw,430px);height:280px;background:none;border:0;position:relative;cursor:pointer;perspective:900px}.envelope-back,.envelope-front,.flap{position:absolute;inset:0;border-radius:8px}.envelope-back{background:#d9c095}.letter-preview{position:absolute;left:10%;right:10%;bottom:10%;height:82%;background:var(--cream);color:#805f26;font:600 3rem "Cormorant Garamond",serif;display:grid;place-items:center;transition:1.2s;z-index:1}.envelope-front{z-index:3;background:linear-gradient(145deg,transparent 49.5%,#c7aa75 50%),linear-gradient(215deg,transparent 49.5%,#d9c095 50%)}.flap{z-index:4;background:#e1c99e;clip-path:polygon(0 0,100% 0,50% 64%);transform-origin:top;transition:1s}.seal{position:absolute;z-index:5;left:50%;top:48%;transform:translate(-50%,-50%);width:66px;height:66px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,#f3d88c,#9a6418 68%);color:#fff8df;font:600 1.2rem "Cormorant Garamond",serif;box-shadow:0 5px 18px #51330d}.envelope.open .flap{transform:rotateX(180deg);z-index:0}.envelope.open .letter-preview{transform:translateY(-145px)}.envelope.open .seal{animation:breakSeal .5s forwards}@keyframes breakSeal{to{opacity:0;transform:translate(-50%,-50%) scale(1.8) rotate(30deg)}}.tap-hint{color:var(--gold2);animation:pulse 1.6s infinite}@keyframes pulse{50%{opacity:.45}}
.hidden-section{display:none}.invitation{padding:0 16px 60px}.invitation.visible{display:block}.hero-card{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;max-width:1000px;margin:auto;padding:70px 20px}.script-small{font:italic 1.5rem "Cormorant Garamond",serif;color:var(--gold2)}.invite-text{max-width:650px;line-height:1.9;color:var(--muted)}.date-badge{display:flex;align-items:center;gap:18px;margin:28px 0;border-block:1px solid var(--border);padding:16px 24px}.date-badge strong{font:500 2.2rem "Cormorant Garamond",serif}.date-badge span{letter-spacing:.3em;color:var(--gold)}.scroll-cue{margin-top:35px;color:var(--muted);animation:pulse 1.5s infinite}.content-section{max-width:1000px;margin:0 auto;padding:90px 0;text-align:center}.content-section h3{font:500 clamp(2.1rem,7vw,3.8rem) "Cormorant Garamond",serif;margin:.3em 0 1em;color:var(--cream)}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.countdown div,.glass-card,.guestbook-form,.qr-card{background:var(--glass);border:1px solid var(--border);backdrop-filter:blur(14px);border-radius:22px}.countdown div{padding:24px 8px}.countdown strong{display:block;font:500 clamp(2rem,8vw,4.2rem) "Cormorant Garamond",serif;color:var(--gold2)}.countdown span{font-size:.72rem;letter-spacing:.15em;color:var(--muted)}.details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.glass-card{padding:42px 25px}.card-icon{font-size:2.4rem;color:var(--gold)}.glass-card p{line-height:1.8;color:var(--muted)}.families>span{color:var(--gold)}.gallery{display:grid;grid-template-columns:1.25fr .75fr .75fr;gap:15px}.gallery figure{margin:0;min-height:310px}.photo-placeholder{height:100%;min-height:310px;border-radius:24px;border:1px solid var(--border);display:grid;place-items:center;align-content:center;font:500 2rem "Cormorant Garamond",serif;color:var(--gold2);background:linear-gradient(145deg,rgba(217,183,110,.15),rgba(8,35,58,.75));overflow:hidden}.photo-placeholder small{font:400 .8rem Montserrat,sans-serif;color:var(--muted)}.gallery img,.upload-preview img,.upload-preview video{width:100%;height:100%;object-fit:cover;border-radius:18px}.upload-section>p{color:var(--muted)}.upload-box{max-width:620px;margin:25px auto;display:flex;flex-direction:column;gap:8px;align-items:center;padding:38px;border:1px dashed var(--gold);border-radius:22px;cursor:pointer;background:rgba(217,183,110,.06)}.upload-box span{font-size:3rem;color:var(--gold)}.upload-box small{color:var(--muted)}.upload-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:22px 0}.upload-preview>*{height:160px}.guestbook-form{max-width:620px;margin:0 auto 28px;padding:28px;text-align:left}.guestbook-form label{display:block;margin-bottom:18px;color:var(--gold2)}input,textarea{width:100%;margin-top:7px;border:1px solid var(--border);border-radius:13px;background:rgba(0,0,0,.22);color:var(--text);padding:13px;outline:none}input:focus,textarea:focus{border-color:var(--gold)}.status{font-size:.8rem;color:var(--gold)}.messages{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.message{padding:22px;text-align:left;border-left:3px solid var(--gold);background:var(--glass);border-radius:14px}.message strong{color:var(--gold2)}.message p{color:var(--muted);line-height:1.6}.button-row{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.qr-card{width:230px;min-height:230px;margin:20px auto;padding:15px;background:#fff;display:grid;place-items:center}.qr-card img,.qr-card canvas{max-width:100%}.break-word{overflow-wrap:anywhere}.finale{height:90svh;max-width:1100px;margin:60px auto 0;position:relative;border-radius:30px;overflow:hidden;border:1px solid var(--border);background:radial-gradient(circle,#163e65,#030711 70%)}#fireworks{position:absolute;inset:0;width:100%;height:100%}.finale-copy{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px}.finale-copy p{color:var(--gold2)}.reveal{opacity:0;transform:translateY(35px);transition:1s}.reveal.in-view{opacity:1;transform:none}.floating{position:fixed;z-index:50;border:1px solid var(--border);background:rgba(7,20,38,.78);color:var(--gold2);backdrop-filter:blur(12px);cursor:pointer}.music{right:16px;bottom:16px;width:48px;height:48px;border-radius:50%;font-size:1.25rem}.music.playing{animation:spin 4s linear infinite}.install{left:16px;bottom:16px;border-radius:999px;padding:11px 15px}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:720px){.details-grid{grid-template-columns:1fr}.countdown{gap:7px}.countdown div{padding:18px 3px}.gallery{grid-template-columns:1fr 1fr}.gallery figure:first-child{grid-column:1/-1}.gallery figure,.photo-placeholder{min-height:220px}.content-section{padding:68px 0}.date-badge{gap:10px;padding:13px 12px}.date-badge strong{font-size:1.65rem}.date-badge span{font-size:.7rem}.orbit{inset:7%}.plane{transform-origin:0 calc(50% + 120px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Nikâh detay kartı: tarih ve mekânı davetiyenin odak noktası yapar. */
.glass-card{position:relative;overflow:hidden}
.glass-card:before{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,var(--gold2),transparent);opacity:.75}
.glass-card:after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:-75px;top:-75px;background:radial-gradient(circle,rgba(217,183,110,.14),transparent 70%);pointer-events:none}
.glass-card h3{margin-bottom:.35em}
.event-time{display:inline-flex;align-items:center;gap:10px;margin:.25rem 0 1.25rem!important;letter-spacing:.08em;color:var(--gold2)!important}
.event-time span{color:var(--gold)}
.venue{margin:0 auto 1.5rem;padding:18px 12px;border-block:1px solid rgba(217,183,110,.2)}
.venue strong{display:block;font:600 1.45rem "Cormorant Garamond",serif;color:var(--cream);letter-spacing:.02em}
.venue span{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase}

/* Sinematik ışık, altın toz ve davetiye çerçeveleri */
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(520px circle at var(--mx,50%) var(--my,30%),rgba(103,174,220,.11),transparent 65%)}
.aurora{position:fixed;inset:-30%;z-index:-2;pointer-events:none;background:conic-gradient(from 180deg at 50% 50%,transparent,rgba(29,105,155,.13),transparent 25%,rgba(203,160,78,.1),transparent 54%);filter:blur(70px);animation:auroraMove 22s ease-in-out infinite alternate}
@keyframes auroraMove{to{transform:translate3d(8%,-5%,0) rotate(14deg) scale(1.08)}}
.gold-dust{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}.gold-dust i{position:absolute;bottom:-20px;width:3px;height:3px;border-radius:50%;background:var(--gold2);box-shadow:0 0 9px 2px rgba(246,230,184,.35);opacity:0;animation:floatDust var(--duration) linear var(--delay) infinite}@keyframes floatDust{0%{transform:translate3d(0,0,0) scale(.4);opacity:0}12%{opacity:.65}80%{opacity:.25}100%{transform:translate3d(var(--drift),-110vh,0) scale(1.15);opacity:0}}
.ornament{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--gold);font-size:.8rem;margin-bottom:8px}.ornament span{width:50px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.ornament span:last-child{transform:scaleX(-1)}
.hero-card{position:relative}.hero-frame{position:absolute;inset:32px 0;border:1px solid rgba(217,183,110,.24);border-radius:280px 280px 28px 28px;pointer-events:none;box-shadow:inset 0 0 90px rgba(217,183,110,.035)}.hero-frame:before,.hero-frame:after{content:"✦";position:absolute;left:50%;transform:translateX(-50%);color:var(--gold);background:var(--navy);padding:0 14px}.hero-frame:before{top:-9px}.hero-frame:after{bottom:-9px}
.intro-copy h1,.hero-card h2{background:linear-gradient(105deg,#fff8e9 20%,#e7c77f 48%,#fff8e9 72%);background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:nameShine 7s linear infinite}.intro-copy h1 span,.hero-card h2 span{color:transparent}@keyframes nameShine{to{background-position:220% center}}
.countdown div{position:relative;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 18px 50px rgba(0,0,0,.16);transition:transform .35s,border-color .35s}.countdown div:hover{transform:translateY(-6px);border-color:rgba(246,230,184,.7)}
.glass-card{box-shadow:0 24px 70px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.07);transition:transform .45s ease,border-color .45s ease}.glass-card:hover{transform:translateY(-8px);border-color:rgba(246,230,184,.65)}
.families{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin-top:28px}.families p{margin:0}.families small{display:block;font-size:.62rem;letter-spacing:.24em;color:var(--gold);margin-bottom:12px}.families strong{display:block;font:500 1.7rem "Cormorant Garamond",serif;color:var(--cream)}.families strong em{font-weight:400;color:var(--gold);padding:0 3px}.families p>span{display:block;margin-top:5px;font-size:.76rem;letter-spacing:.22em;color:var(--muted)}.families b{color:var(--gold);font-weight:400;text-shadow:0 0 18px var(--gold)}
.primary{position:relative;overflow:hidden}.primary:after{content:"";position:absolute;inset:-100% auto -100% -45%;width:32%;background:rgba(255,255,255,.38);transform:rotate(20deg);transition:left .7s}.primary:hover:after{left:120%}
@media(max-width:720px){.hero-frame{inset:25px 4px;border-radius:180px 180px 24px 24px}.families{grid-template-columns:1fr;gap:14px}.families b{transform:rotate(90deg)}.families strong{font-size:1.55rem}}

/* İkinci katman: sayfa ritmi, parallax ve özel söz bölümü */
.scroll-progress{position:fixed;z-index:100;left:0;top:0;width:var(--progress,0%);height:3px;background:linear-gradient(90deg,#8d6422,var(--gold2),#fff8d9);box-shadow:0 0 14px rgba(246,230,184,.8);transition:width .1s linear}
.invitation.visible:before{content:"05  ·  09  ·  2026";position:fixed;right:22px;top:50%;z-index:8;writing-mode:vertical-rl;transform:translateY(-50%);font-size:.58rem;letter-spacing:.38em;color:rgba(246,230,184,.42);pointer-events:none}
.content-section{position:relative}.content-section:not(.details-grid):not(.social-section):not(.qr-section):before{content:"✦";position:absolute;top:12px;left:50%;transform:translateX(-50%);color:rgba(217,183,110,.55);font-size:.7rem;text-shadow:-32px 0 rgba(217,183,110,.18),32px 0 rgba(217,183,110,.18)}
.vow-section{position:relative;max-width:1000px;min-height:520px;margin:30px auto 90px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden;border-radius:42px;border:1px solid rgba(217,183,110,.3);background:radial-gradient(circle at 50% 45%,rgba(31,86,125,.32),rgba(4,14,28,.84) 68%);box-shadow:0 35px 100px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.07)}
.vow-section:before,.vow-section:after{content:"";position:absolute;width:180px;height:180px;border:1px solid rgba(217,183,110,.28);transform:rotate(45deg)}.vow-section:before{left:-110px;top:-110px}.vow-section:after{right:-110px;bottom:-110px}.vow-halo{position:absolute;width:340px;height:340px;border-radius:50%;border:1px solid rgba(217,183,110,.18);box-shadow:0 0 70px rgba(217,183,110,.08),inset 0 0 70px rgba(217,183,110,.05);animation:vowPulse 5s ease-in-out infinite}.vow-halo:before,.vow-halo:after{content:"";position:absolute;inset:24px;border-radius:50%;border:1px dashed rgba(246,230,184,.15);animation:spin 35s linear infinite}.vow-halo:after{inset:55px;animation-direction:reverse;animation-duration:24s}@keyframes vowPulse{50%{transform:scale(1.06);opacity:.7}}
.vow-mark{position:relative;margin:0;color:var(--gold);font:italic 6rem/1 "Cormorant Garamond",serif;opacity:.45}.vow-section blockquote{position:relative;margin:0 20px;color:var(--cream);font:500 clamp(2rem,6vw,4.2rem)/1.18 "Cormorant Garamond",serif;text-shadow:0 8px 40px rgba(0,0,0,.35)}.vow-section blockquote em{color:var(--gold2);font-weight:400}.vow-signature{position:relative;margin-top:28px;font:500 1.15rem "Cormorant Garamond",serif;letter-spacing:.5em;color:var(--gold)}.vow-signature span{color:var(--cream)}
.reveal{filter:blur(8px);transform:translateY(45px) scale(.985);transition:opacity 1s ease,transform 1s cubic-bezier(.2,.75,.25,1),filter 1s ease}.reveal.in-view{filter:blur(0);transform:none}
.gallery figure{position:relative;transition:transform .5s cubic-bezier(.2,.8,.2,1),filter .5s}.gallery figure:nth-child(2){transform:translateY(32px)}.gallery:hover figure:not(:hover){filter:brightness(.62)}.gallery figure:hover{transform:translateY(-10px) scale(1.025);z-index:2}.gallery figure:nth-child(2):hover{transform:translateY(20px) scale(1.025)}
.photo-placeholder{position:relative;box-shadow:0 26px 65px rgba(0,0,0,.24)}.photo-placeholder:before{content:"";position:absolute;inset:10px;border:1px solid rgba(246,230,184,.16);border-radius:17px;pointer-events:none}
.finale-orbit{position:absolute;border:1px solid rgba(217,183,110,.2);border-radius:50%;pointer-events:none}.orbit-a{width:520px;height:520px;left:50%;top:50%;transform:translate(-50%,-50%);animation:finalOrbit 18s linear infinite}.orbit-b{width:720px;height:280px;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-18deg);animation:finalOrbitB 22s linear infinite}@keyframes finalOrbit{to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes finalOrbitB{to{transform:translate(-50%,-50%) rotate(342deg)}}
.finale-copy h2{filter:drop-shadow(0 0 28px rgba(217,183,110,.3))}
@media(max-width:720px){.invitation.visible:before{display:none}.vow-section{min-height:440px;margin-bottom:55px}.vow-halo{width:270px;height:270px}.gallery figure:nth-child(2){transform:none}.gallery figure:nth-child(2):hover{transform:translateY(-10px) scale(1.025)}}

/* Kabartmalı, katmanlı davetiye zarfı */
#envelopeScene:before{content:"";position:absolute;width:min(92vw,560px);height:min(92vw,560px);border-radius:50%;background:radial-gradient(circle,rgba(217,183,110,.12),transparent 66%);filter:blur(8px);animation:vowPulse 4s ease-in-out infinite;pointer-events:none}
.envelope{width:min(88vw,470px);height:305px;filter:drop-shadow(0 30px 42px rgba(0,0,0,.48));transition:filter .6s,transform .6s}.envelope:hover{transform:translateY(-5px);filter:drop-shadow(0 38px 52px rgba(0,0,0,.55))}.envelope-back,.envelope-front,.flap{border-radius:12px}.envelope-back{background:linear-gradient(145deg,#e7d3a9,#b9955d);box-shadow:inset 0 0 0 1px rgba(255,248,221,.55),inset 0 -18px 40px rgba(92,57,15,.18)}
.letter-preview{left:7%;right:7%;bottom:7%;height:88%;padding:35px 22px 24px;background:linear-gradient(135deg,#fffdf5,#f4ead4);color:#694817;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #d4b878;box-shadow:0 4px 18px rgba(56,35,7,.2),inset 0 0 0 7px #fffaf0,inset 0 0 0 8px rgba(160,113,42,.3);transition:transform 1.25s cubic-bezier(.18,.8,.25,1),box-shadow 1.2s;z-index:2}.letter-preview:before,.letter-preview:after{content:"✦";position:absolute;left:50%;transform:translateX(-50%);color:#b2843d;font-size:.62rem}.letter-preview:before{top:16px}.letter-preview:after{bottom:13px}.letter-preview small{font:600 .62rem Montserrat,sans-serif;letter-spacing:.35em;color:#9b7438}.letter-preview strong{font:500 clamp(2rem,8vw,3.3rem) "Cormorant Garamond",serif;line-height:1.15;margin:9px 0 5px}.letter-preview strong em{color:#b38338;font-weight:400}.letter-preview i{font:italic .86rem "Cormorant Garamond",serif;color:#8a7049;letter-spacing:.04em}
.envelope-front{background:linear-gradient(145deg,transparent 49.7%,#c5a16a 50%),linear-gradient(215deg,transparent 49.7%,#d8bd8d 50%);filter:drop-shadow(0 -1px 0 rgba(255,245,218,.4))}.envelope-front:after{content:"";position:absolute;inset:0;border-radius:12px;box-shadow:inset 0 0 0 1px rgba(255,248,221,.45),inset 0 -22px 42px rgba(83,50,12,.16)}
.flap{background:linear-gradient(155deg,#ecd7ad,#c6a36c);filter:drop-shadow(0 3px 2px rgba(80,50,12,.18));transition:transform 1.05s cubic-bezier(.45,0,.2,1),filter .6s}.flap i{position:absolute;inset:8px 10px auto;height:1px;background:linear-gradient(90deg,transparent,rgba(126,84,28,.42),transparent)}
.seal{width:78px;height:78px;background:radial-gradient(circle at 34% 25%,#f1ca69 0,#bd8428 38%,#75420c 78%);border:2px solid #e8c46f;box-shadow:0 8px 25px rgba(67,36,5,.55),inset 0 0 0 4px #a66d1d,inset 0 0 0 5px rgba(255,231,160,.65);font-family:"Cormorant Garamond",serif;text-shadow:0 1px 2px #633500;transition:transform .3s;display:flex;align-items:center;justify-content:center;gap:2px;padding:0;line-height:1;text-align:center}.seal:before{content:"";position:absolute;inset:-8px;border:1px dashed rgba(255,225,146,.42);border-radius:50%;animation:spin 20s linear infinite}.seal small{display:block;font-size:1.3rem;line-height:1}.seal b{display:block;font-size:.9rem;line-height:1;font-weight:400;color:#ffe8ae}
.envelope:hover .seal{transform:translate(-50%,-50%) scale(1.06)}.envelope.open{transform:translateY(8px)}.envelope.open .flap{transform:rotateX(180deg);filter:drop-shadow(0 -5px 5px rgba(80,50,12,.16));z-index:1}.envelope.open .letter-preview{transform:translateY(-178px) scale(1.03);box-shadow:0 25px 50px rgba(0,0,0,.28),0 0 35px rgba(246,230,184,.18)}.envelope.open .seal{animation:sealBreak .65s cubic-bezier(.2,.8,.2,1) forwards}@keyframes sealBreak{35%{transform:translate(-50%,-50%) scale(1.18) rotate(-8deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(2.25) rotate(38deg);filter:blur(5px)}}
.tap-hint{display:flex;align-items:center;gap:12px;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}.tap-hint span{color:var(--gold);animation:twinkle 1.5s ease-in-out infinite alternate}@keyframes twinkle{to{opacity:.3;transform:scale(.7)}}
#fireworksBtn.celebrating{background:linear-gradient(135deg,#f3d47f,#fff5ca);box-shadow:0 0 38px rgba(246,230,184,.55);transform:scale(1.04)}
.finale.flash:after{content:"";position:absolute;inset:0;z-index:1;background:#fff8df;pointer-events:none;animation:celebrationFlash .55s ease-out forwards}@keyframes celebrationFlash{from{opacity:.55}to{opacity:0}}
@media(max-width:520px){.envelope{height:270px}.envelope.open .letter-preview{transform:translateY(-145px) scale(1.02)}.letter-preview{padding-inline:14px}.letter-preview i{font-size:.75rem}}

.letter-preview{text-align:center}.letter-preview strong,.letter-preview i,.letter-preview small{width:100%;text-align:center}.envelope.open+.tap-hint{opacity:0;transform:translateY(8px);transition:opacity .45s,transform .45s}.envelopeScene.closing{animation:none}.scene.closing{display:flex;animation:envelopeFarewell .7s ease forwards}@keyframes envelopeFarewell{to{opacity:0;transform:scale(1.035);filter:blur(8px)}}

.calendar-button span{font-size:1.25rem}.reminder-note{margin:14px auto 0;color:var(--muted);font-size:.72rem;letter-spacing:.04em;transition:.35s}.reminder-note.confirmed{color:var(--gold2);text-shadow:0 0 18px rgba(217,183,110,.35)}

.upload-preview .micro{grid-column:1/-1}.shared-photo{position:relative;margin:0;height:190px;overflow:hidden;border-radius:18px;border:1px solid var(--border);background:var(--navy);box-shadow:0 14px 35px rgba(0,0,0,.22)}.shared-photo img{width:100%;height:100%;object-fit:cover}.shared-photo figcaption{position:absolute;right:8px;bottom:8px;padding:5px 8px;border-radius:999px;background:rgba(3,10,20,.7);color:var(--gold2);font-size:.62rem;backdrop-filter:blur(8px)}button:disabled{opacity:.55;cursor:wait;transform:none!important}

.gallery-photo{overflow:hidden;border-radius:24px;border:1px solid var(--border);background:#071426;box-shadow:0 26px 65px rgba(0,0,0,.28)}.gallery-photo:after{content:"";position:absolute;inset:10px;border:1px solid rgba(246,230,184,.28);border-radius:17px;pointer-events:none;z-index:2}.gallery-photo img{display:block;width:100%;height:100%;min-height:310px;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.75,.2,1),filter .6s}.gallery-photo:hover img{transform:scale(1.055);filter:saturate(1.08) brightness(1.04)}.photo-one img{object-position:center 46%}.photo-two img{object-position:center 52%}.photo-three img{object-position:43% center}@media(max-width:720px){.gallery-photo img{min-height:220px}.photo-one img{object-position:center 43%}.photo-three img{object-position:45% center}}
