:root{--wine:#4a1028;--wine-deep:#251019;--wine-black:#190e15;--gold:#d8b56d;--gold-light:#f2dfa9;--ivory:#fff8ef;--blush:#ebc6cc;--ink:#2b1720;--muted:#a99990;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--tamil:"Noto Serif Tamil","Latha",serif;--vh:100vh}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--wine-black)}body{margin:0;background:var(--wine-black);color:var(--ivory);font-family:var(--sans);overflow-x:hidden}button,a{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}.ambient{position:fixed;inset:0;pointer-events:none;z-index:8;overflow:hidden}.grain{position:absolute;inset:-50%;opacity:.08;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");animation:grain 1s steps(2) infinite}.glow{position:absolute;width:40vw;height:40vw;border-radius:50%;filter:blur(100px);opacity:.13}.glow-one{background:#ae3d5b;top:-20%;left:-12%}.glow-two{background:#bd8740;right:-20%;bottom:-20%}@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(2%,-2%)}50%{transform:translate(-1%,1%)}75%{transform:translate(2%,2%)}100%{transform:translate(-2%,-1%)}}.topbar{height:78px;position:fixed;z-index:20;left:0;right:0;top:0;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,74px);border-bottom:1px solid rgba(242,223,169,.11);background:linear-gradient(180deg,rgba(25,14,21,.84),rgba(25,14,21,.12));backdrop-filter:blur(10px)}.wordmark{display:flex;align-items:center;gap:11px;font-size:9px;letter-spacing:.24em;color:var(--gold-light)}.wordmark-mark{color:var(--gold);font:24px var(--serif)}.top-actions{display:flex;align-items:center;gap:30px}.chapter-label{font-size:10px;color:#dfd0c2;letter-spacing:.1em}.sound-button{height:40px;min-width:80px;border:1px solid rgba(216,181,109,.35);border-radius:30px;background:transparent;color:var(--gold-light);font-size:16px;opacity:.8}.sound-button span{font-size:10px;margin-left:5px}.sound-button:disabled{opacity:.55;cursor:help}.progress-shell{position:fixed;z-index:21;top:77px;left:0;right:0;padding:9px clamp(20px,5vw,74px);display:flex;align-items:center;gap:12px;pointer-events:none}.progress-track{height:1px;flex:1;background:rgba(255,248,239,.15)}.progress-track span{display:block;width:10%;height:100%;background:var(--gold);transition:width .7s cubic-bezier(.2,.8,.2,1)}#progressText{font-size:9px;letter-spacing:.14em;color:#dfccb3}.scene{min-height:100svh;padding:130px clamp(22px,8vw,125px) 80px;position:relative;display:none;flex-direction:column;justify-content:center;overflow:hidden;isolation:isolate}.scene.active{display:flex;animation:sceneIn .9s cubic-bezier(.2,.75,.22,1) both}@keyframes sceneIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.scene:before{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(ellipse at 50% 48%,rgba(90,26,51,.23),transparent 59%)}.intro{min-height:100svh;display:none;grid-template-columns:1fr 1fr;align-items:center;padding-top:100px}.intro.active{display:grid}.intro-copy{align-self:center;z-index:2}.eyebrow{font-size:9px;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin:0 0 24px}.intro h1,.section-heading h2,.birthday-copy h2,.letter-intro h2,.finale-copy h2{font:400 clamp(46px,6.4vw,86px)/.95 var(--serif);letter-spacing:-.035em;margin:0}.intro h1 em,.section-heading h2 em,.birthday-copy h2 em,.letter-intro h2 em,.finale-copy h2 em{font-weight:400;color:var(--gold-light)}.subcopy{color:#c8b6ac;font:italic 18px var(--serif);margin-top:28px}.envelope-stage{justify-self:center;display:flex;align-items:center;flex-direction:column;position:relative;margin-top:36px}.envelope-halo{position:absolute;top:5%;width:370px;height:270px;border-radius:50%;background:radial-gradient(ellipse,rgba(216,181,109,.18),transparent 68%);filter:blur(16px)}.envelope{width:min(350px,75vw);height:225px;position:relative;cursor:pointer;perspective:900px;filter:drop-shadow(0 28px 42px rgba(0,0,0,.4));transition:transform .5s}.envelope:hover{transform:translateY(-6px)}.envelope-back{position:absolute;inset:0;border-radius:4px;background:#7b3d49;border:1px solid rgba(242,223,169,.45)}.letter-peek{position:absolute;z-index:1;left:12%;right:12%;height:90%;top:-10%;background:var(--ivory);color:var(--wine);display:flex;align-items:center;justify-content:center;flex-direction:column;font:italic 22px var(--serif);transition:transform 1s cubic-bezier(.17,.8,.2,1)}.letter-peek b{color:#bd8a3b;font-size:22px;margin-top:8px}.envelope.open .letter-peek{transform:translateY(-80px)}.envelope-flap{position:absolute;z-index:4;top:0;left:0;width:100%;height:65%;background:#9a5660;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .65s;backface-visibility:hidden}.envelope.open .envelope-flap{transform:rotateX(180deg);z-index:0}.envelope-front{position:absolute;z-index:3;inset:0;background:linear-gradient(145deg,transparent 49.6%,#b26f75 50%),linear-gradient(35deg,#8e4955 50%,transparent 50.4%);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-bottom:1px solid rgba(242,223,169,.3)}.wax-seal{z-index:5;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);height:52px;width:52px;border-radius:50%;border:1px solid #e6c976;background:radial-gradient(circle at 35% 30%,#d4a15e,#8d382d 70%);color:#ffe8bb;font:italic 26px var(--serif);box-shadow:0 2px 18px #160d14;transition:opacity .3s,transform .4s}.envelope.open .wax-seal{opacity:0;transform:translate(-50%,-50%) scale(1.6)}.button{border:0;min-height:48px;padding:0 24px;display:inline-flex;align-items:center;justify-content:center;gap:17px;border-radius:2px;cursor:pointer;font-size:10px;letter-spacing:.13em;text-transform:uppercase;transition:transform .25s,background .25s,border .25s}.button:hover{transform:translateY(-2px)}.button-gold{color:#2d1920;background:linear-gradient(110deg,#cfa858,#f2dfa9 50%,#cfa858);box-shadow:0 8px 35px rgba(216,181,109,.14)}.button-gold span{font-size:14px}.button-outline{background:transparent;color:var(--gold-light);border:1px solid rgba(216,181,109,.48)}.envelope-stage>.button{margin-top:40px}.scene-index{position:absolute;bottom:35px;left:clamp(22px,8vw,125px);display:flex;align-items:center;gap:12px;color:#b99d86;font-size:9px;letter-spacing:.17em}.scene-index i{height:1px;width:35px;background:var(--gold)}.section-heading{max-width:880px;margin:0 auto 50px;width:100%;text-align:center}.section-heading h2{font-size:clamp(43px,5.6vw,72px)}.section-heading .section-lede{margin:22px auto 0}.section-lede{font:italic 17px/1.55 var(--serif);color:#cfbeb2;max-width:430px}.heading-row{display:flex;align-items:end;justify-content:space-between;text-align:left;max-width:1100px;margin-bottom:45px}.heading-row .section-lede{margin:0 0 7px;max-width:270px}.name-scene{align-items:center;text-align:center}.name-scene .section-heading{margin-bottom:30px}.name-art{position:relative;font:italic clamp(47px,8vw,105px)/1 var(--serif);color:var(--ivory);padding:25px 20px 35px;min-height:160px;display:grid;place-items:center}.name-art p{margin:0;grid-area:1/1}.name-art .old-name{animation:oldName 1.5s 1s both}.name-art .new-name{opacity:0;color:var(--gold-light);animation:newName 1.8s 2s both}.initial{font-size:1.22em;color:var(--gold)}.initial-c{display:inline-block;animation:changeLetter 1.1s 1.65s both}.initial-m{display:inline-block;opacity:0;animation:formM .8s 2.3s both}.name-underline{position:absolute;width:78%;left:11%;bottom:3px;fill:none;stroke:var(--gold);stroke-width:1;stroke-dasharray:520;stroke-dashoffset:520;animation:draw 2.4s 2.2s ease forwards}.name-sparkles{position:absolute;inset:0;pointer-events:none}.name-sparkles:before,.name-sparkles:after{content:"✦  ·  ✧  ·  ✦";position:absolute;left:20%;top:50%;color:var(--gold-light);font-size:13px;opacity:0;animation:spark 1s 1.65s ease-out both}.name-sparkles:after{left:69%;top:40%;animation-delay:1.85s}@keyframes oldName{to{opacity:0;transform:translateX(-35px)}}@keyframes newName{0%{opacity:0;transform:translateX(20px);filter:blur(4px)}100%{opacity:1;transform:none;filter:none}}@keyframes changeLetter{to{opacity:0;transform:scale(.15) rotate(-35deg);filter:blur(10px)}}@keyframes formM{0%{opacity:0;transform:translateY(15px) scale(.65);filter:blur(7px)}100%{opacity:1;transform:none;filter:none}}@keyframes spark{0%{opacity:0;transform:scale(.4)}35%{opacity:1}100%{opacity:0;transform:translateX(60px) scale(1.7)}}@keyframes draw{to{stroke-dashoffset:0}}.name-caption{font-size:9px;letter-spacing:.19em;text-transform:uppercase;color:#a9968d;margin:22px 0}.name-caption span{color:var(--gold);padding:0 12px}.scene-controls{display:flex;gap:28px;align-items:center;justify-content:center;margin-top:25px}.text-button{background:none;border:0;color:#d8c3b7;font:italic 15px var(--serif);padding:12px;cursor:pointer}.gallery-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(220px,.75fr);gap:16px;max-width:1100px;width:100%;margin:0 auto}.gallery-main,.timeline-photo{height:min(56vh,560px);min-height:390px;position:relative;overflow:hidden;background:#3c202b}.gallery-main img,.timeline-photo img{height:100%;width:100%;object-fit:cover;object-position:center 35%;display:block;animation:photoReveal .8s ease}.gallery-main:after,.timeline-photo:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(20,9,15,.72));pointer-events:none}@keyframes photoReveal{from{opacity:.5;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}.image-caption{position:absolute;z-index:2;left:24px;bottom:22px;font:italic 24px var(--serif);text-shadow:0 2px 15px #10070c}.image-heart{position:absolute;z-index:3;right:20px;bottom:18px;background:none;border:0;font-size:24px;color:#f3d8bc;cursor:pointer}.gallery-rail{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(4,1fr);gap:9px;min-height:390px}.gallery-thumb{border:1px solid rgba(216,181,109,.14);padding:0;position:relative;overflow:hidden;background:#3a202a;cursor:pointer;min-height:90px;opacity:.74;transition:opacity .2s,transform .3s}.gallery-thumb:hover,.gallery-thumb.selected{opacity:1;transform:scale(.985);border-color:var(--gold)}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumb span{position:absolute;bottom:5px;right:7px;font-size:8px;text-shadow:0 1px 5px #000}.gallery-controls{max-width:1100px;width:100%;margin:22px auto 0;display:flex;align-items:center;gap:13px;color:#d3bfaa;font-size:9px;letter-spacing:.12em}.round-button{width:44px;height:44px;border-radius:50%;border:1px solid rgba(216,181,109,.42);background:transparent;color:var(--gold-light);cursor:pointer;font-size:16px}.hint{margin-left:auto;color:#a89184;font-size:10px;letter-spacing:0}.timeline-layout{max-width:1050px;width:100%;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:60px;margin:0 auto}.timeline-list{position:relative}.timeline-list:before{content:"";position:absolute;left:23px;top:25px;bottom:25px;width:1px;background:linear-gradient(var(--gold),rgba(216,181,109,.1))}.timeline-item{width:100%;position:relative;display:flex;gap:20px;align-items:center;text-align:left;padding:22px 0;background:none;border:0;color:var(--ivory);cursor:pointer;opacity:.52;transition:opacity .3s}.timeline-item.selected{opacity:1}.timeline-dot{z-index:1;width:47px;height:47px;display:grid;place-items:center;border:1px solid rgba(216,181,109,.5);border-radius:50%;color:var(--gold-light);font:italic 19px var(--serif);background:#29141e}.timeline-item small{display:block;color:var(--gold);font-size:8px;letter-spacing:.2em;margin-bottom:7px}.timeline-item strong{font:italic 22px/1.05 var(--serif);font-weight:400;display:block;max-width:260px}.timeline-item>b{margin-left:auto;color:var(--gold);font-size:14px}.timeline-photo{height:510px;min-height:0;border:1px solid rgba(216,181,109,.46);padding:7px}.timeline-photo img{object-position:center 40%}.timeline-photo:after{inset:60% 7px 7px}.timeline-caption{position:absolute;z-index:2;bottom:27px;left:28px;font:italic 23px var(--serif)}.wedding-scene{padding-top:140px}.filmstrip{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:12px;max-width:1200px;width:100%;margin:0 auto;align-items:center}.film-frame{height:min(49vh,470px);min-height:290px;padding:8px;background:linear-gradient(135deg,rgba(216,181,109,.82),rgba(82,44,42,.95));position:relative;cursor:pointer;overflow:hidden;transition:transform .55s,opacity .5s}.film-frame:nth-child(even){transform:translateY(22px)}.film-frame:hover{transform:translateY(-5px) rotate(-.5deg);z-index:2}.film-frame:nth-child(even):hover{transform:translateY(10px) rotate(.5deg)}.film-frame img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.86)}.film-frame:after{content:"";position:absolute;inset:8px;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.22),transparent 45%);transform:translateX(-120%);transition:transform .8s}.film-frame:hover:after{transform:translateX(120%)}.film-frame span{position:absolute;bottom:15px;left:15px;z-index:1;font:italic 16px var(--serif);text-shadow:0 1px 7px #000}.birthday-scene{background:radial-gradient(ellipse at 50% 32%,#502039 0,#2c1421 40%,#1b1018 82%);text-align:center}.birthday-copy .eyebrow{margin-bottom:13px}.level{margin:0 0 15px;color:#dcc384;letter-spacing:.34em;font-size:10px}.level span{font:italic 33px var(--serif);letter-spacing:0;padding:0 6px;color:#ffe7a4;text-shadow:0 0 25px #dcb860}.birthday-copy h2{font-size:clamp(42px,5.3vw,65px)}.birthday-copy .section-lede{margin:15px auto 0}.birthday-content{display:flex;align-items:center;justify-content:center;gap:clamp(30px,8vw,120px);max-width:900px;margin:15px auto 0;width:100%}.photo-heart{width:290px;height:270px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;transform:rotate(-4deg);filter:drop-shadow(0 15px 30px #12080c);clip-path:path("M145 260 C110 230 13 165 13 88 C13 8 103 -12 145 47 C187 -12 277 8 277 88 C277 165 180 230 145 260 Z")}.photo-heart img{width:100%;height:100%;min-height:80px;object-fit:cover}.cake-wrap{position:relative;display:flex;flex-direction:column;align-items:center;min-width:230px}.cake-glow{position:absolute;width:300px;height:210px;bottom:45px;background:radial-gradient(ellipse,rgba(238,186,97,.28),transparent 70%);filter:blur(20px)}.cake{position:relative;width:240px;height:190px;z-index:1;filter:drop-shadow(0 13px 13px rgba(0,0,0,.28))}.cake-plate{position:absolute;bottom:5px;left:0;right:0;height:17px;border-radius:50%;background:linear-gradient(#f8e4bd,#9e734e);box-shadow:0 7px 10px #180c12}.cake-layer{position:absolute;left:24px;right:24px;border-radius:13px 13px 18px 18px;background:linear-gradient(90deg,#c97b77,#f4c7ad 52%,#bd686a);border-bottom:8px solid #8b3a4c}.layer-one{height:58px;bottom:22px}.layer-two{height:50px;bottom:78px;left:38px;right:38px;background:linear-gradient(90deg,#e4c89b,#fff0d0 55%,#d9b579);border-bottom:0}.cake-top{position:absolute;z-index:2;left:38px;right:38px;bottom:116px;height:20px;border-radius:50%;background:#fff1d9;box-shadow:inset 0 -5px #e7bd9a}.cake-number{position:absolute;z-index:3;bottom:32px;left:0;right:0;font:italic 28px var(--serif);color:#ffe7b7}.candles{position:absolute;z-index:4;bottom:130px;left:78px;right:78px;display:flex;justify-content:space-between}.candle{height:44px;width:10px;background:repeating-linear-gradient(135deg,#fff1d7 0 5px,#d9a658 5px 8px);position:relative;border-radius:2px 2px 0 0}.candle i{position:absolute;width:12px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:radial-gradient(circle at 60% 63%,#fff5b0 0 19%,#ffc346 34%,#ed6134 66%,transparent 70%);top:-22px;left:-1px;filter:drop-shadow(0 0 8px #ffb543);animation:flicker .18s infinite alternate}.cake.blown .candle i{display:none}@keyframes flicker{to{transform:rotate(-40deg) scale(.86)}}.cake-caption{font:italic 16px var(--serif);color:#e5d0b7;margin:7px 0 13px}.cake-wrap .button{position:relative;z-index:1}.birthday-message{min-height:20px;margin:8px auto 0;color:var(--gold-light);font:italic 18px var(--serif)}.star-field{position:absolute;inset:0;z-index:-1;background-image:radial-gradient(1px 1px at 5% 15%,#f6daa1 50%,transparent),radial-gradient(1px 1px at 15% 80%,#f6daa1 50%,transparent),radial-gradient(2px 2px at 25% 30%,#f6daa1 50%,transparent),radial-gradient(1px 1px at 80% 25%,#f6daa1 50%,transparent),radial-gradient(1px 1px at 70% 72%,#f6daa1 50%,transparent),radial-gradient(2px 2px at 90% 80%,#f6daa1 50%,transparent);background-size:270px 230px;opacity:.45;animation:stars 14s linear infinite}@keyframes stars{to{background-position:270px 230px}}.reasons-scene{background:linear-gradient(140deg,#28131e,#361522 50%,#1e1119)}.reason-progress{display:flex;align-items:baseline;gap:8px;color:#bca79c;font-size:10px}.reason-progress strong{font:italic 38px var(--serif);color:var(--gold-light)}.reason-grid{width:100%;max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.reason-card{min-height:120px;position:relative;perspective:700px;padding:0;border:0;background:transparent;cursor:pointer}.reason-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.8,.2,1)}.reason-card.open .reason-inner{transform:rotateY(180deg)}.reason-front,.reason-back{position:absolute;inset:0;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;border:1px solid rgba(216,181,109,.35);background:linear-gradient(145deg,rgba(82,35,52,.8),rgba(35,17,27,.9));}.reason-front{flex-direction:column;gap:9px;color:var(--gold);font:italic 24px var(--serif)}.reason-front small{font:8px var(--sans);letter-spacing:.19em;color:#cfbca8}.reason-back{transform:rotateY(180deg);padding:12px;color:var(--ivory);font:italic 17px/1.15 var(--serif);text-align:center;background:linear-gradient(145deg,#68404b,#3b1c2c)}.reason-note{text-align:center;margin:26px auto 0}.reason-scene .scene-controls{margin-top:0}.memories-scene{background:linear-gradient(145deg,#29141e,#1b1017)}.memory-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:78px;gap:12px;max-width:1120px;width:100%;margin:0 auto}.memory-item{position:relative;overflow:hidden;padding:0;border:1px solid rgba(216,181,109,.35);background:#321a26;cursor:pointer}.memory-item:nth-child(1){grid-column:span 4;grid-row:span 4}.memory-item:nth-child(2){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(3){grid-column:span 5;grid-row:span 3}.memory-item:nth-child(4){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(5){grid-column:span 5;grid-row:span 3}.memory-item:nth-child(6){grid-column:span 4;grid-row:span 4}.memory-item img{width:100%;height:100%;object-fit:cover;transition:transform .7s,filter .4s;filter:saturate(.82)}.memory-item:hover img{transform:scale(1.05);filter:saturate(1.04)}.memory-item:after{content:"♡";position:absolute;right:12px;bottom:8px;font-size:22px;color:#fff1db;text-shadow:0 2px 6px #000}.memory-note{text-align:center;color:#a9978b;font:italic 14px var(--serif);margin:22px 0 0}.letter-scene{align-items:center;background:#21111b;min-height:100svh}.letter-backdrop{position:absolute;inset:0;background-size:cover;background-position:center 38%;opacity:.3;filter:saturate(.65)}.letter-scene:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(25,12,19,.84),rgba(33,13,23,.7),rgba(25,12,19,.86));z-index:-1}.letter-intro{text-align:center;position:relative;z-index:2;transition:opacity .5s,transform .5s}.letter-intro h2{font-size:clamp(52px,7vw,88px);margin-bottom:30px}.letter-paper{position:relative;z-index:3;display:none;width:min(650px,100%);max-height:78svh;overflow:auto;background:var(--ivory);color:var(--ink);padding:40px clamp(25px,6vw,65px);box-shadow:0 20px 80px #09060a;border:1px solid rgba(216,181,109,.7);text-align:left;animation:paperOpen .8s cubic-bezier(.2,.75,.2,1)}.letter-scene.open .letter-intro{display:none}.letter-scene.open .letter-paper{display:block}@keyframes paperOpen{from{opacity:0;transform:perspective(800px) rotateX(12deg) translateY(30px)}to{opacity:1;transform:none}}.letter-decoration{text-align:center;color:#a87935;font:italic 19px var(--serif);margin-bottom:14px}.language-switch{display:flex;justify-content:center;gap:5px;margin-bottom:23px}.language-switch button{border:1px solid #d2c5b6;color:#806c5f;background:transparent;padding:9px 18px;font-size:10px;cursor:pointer}.language-switch button.selected{background:#522039;color:#fff4e7;border-color:#522039}.letter-body{font:17px/1.8 var(--serif);white-space:pre-line}.letter-body[lang=ta]{font:15px/2 var(--tamil);}.letter-signature{font:italic 16px/1.65 var(--serif);margin:23px 0;color:#795240}.letter-signature em{color:#511d35;font-size:21px}.letter-paper .button{margin-top:6px}.finale-scene{align-items:center;justify-content:center;text-align:center;padding:0;min-height:100svh;background:#1b1017}.finale-photo{position:absolute;inset:0;background-size:cover;background-position:center 36%;opacity:.45;transform:scale(1.02)}.finale-scene:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(25,13,20,.34),rgba(25,13,20,.74) 45%,rgba(25,13,20,.89))}.finale-frame{position:absolute;z-index:1;inset:26px;border:1px solid rgba(216,181,109,.46);pointer-events:none}.finale-copy{position:relative;z-index:2;max-width:800px;padding:100px 25px}.finale-line{font:italic clamp(24px,3vw,37px) var(--serif);color:#f8e8d3;margin:15px 0;animation:fadeUp 1s both}.finale-line:nth-of-type(3){animation-delay:.6s}.finale-copy h2{font-size:clamp(50px,7vw,82px);margin:40px 0 9px}.signature{color:var(--gold-light);font:italic 20px var(--serif);margin:0}.finale-actions{display:flex;justify-content:center;gap:13px;margin-top:34px}.lightbox{position:fixed;inset:0;z-index:50;background:rgba(15,8,12,.96);display:none;align-items:center;justify-content:center;padding:50px 70px}.lightbox.open{display:flex;animation:sceneIn .25s}.lightbox figure{margin:0;text-align:center;max-width:min(85vw,1000px);max-height:84svh}.lightbox img{display:block;max-width:100%;max-height:76svh;object-fit:contain;box-shadow:0 12px 50px #000}.lightbox figcaption{font:italic 18px var(--serif);color:#f2dfbc;margin-top:13px}.lightbox button{position:absolute;z-index:2;width:48px;height:48px;border-radius:50%;border:1px solid rgba(216,181,109,.45);color:var(--gold-light);background:rgba(30,16,24,.5);font-size:20px;cursor:pointer}.lightbox-close{right:25px;top:20px}.lightbox-prev{left:20px}.lightbox-next{right:20px}.lightbox-heart{position:absolute;color:#ffe4e8;font-size:80px;opacity:0;pointer-events:none}.lightbox.heart .lightbox-heart{animation:heartPop .8s ease-out}@keyframes heartPop{0%{opacity:0;transform:scale(.3)}40%{opacity:.95;transform:scale(1.2)}100%{opacity:0;transform:scale(1.7) translateY(-45px)}}.toast{position:fixed;z-index:55;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#fff8ef;color:#39202a;padding:12px 18px;font-size:11px;box-shadow:0 5px 30px #0005;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}.confetti{position:fixed;z-index:40;top:-10px;width:8px;height:12px;background:var(--gold);animation:fall 2.6s linear forwards;pointer-events:none}@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:.2}}@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-width:850px){.scene{padding-left:7vw;padding-right:7vw}.intro{grid-template-columns:1fr;text-align:center;padding-top:135px;gap:0}.intro-copy{align-self:end}.intro h1{font-size:clamp(48px,10vw,76px)}.subcopy{margin-top:18px}.envelope-stage{margin:35px auto 0}.envelope{width:min(310px,76vw);height:200px}.envelope-halo{width:80vw}.section-heading{margin-bottom:35px}.heading-row{align-items:flex-start;flex-direction:column;gap:15px}.heading-row .section-lede{max-width:400px}.gallery-layout{grid-template-columns:1fr}.gallery-main{height:48vh;min-height:320px}.gallery-rail{grid-template-columns:repeat(8,1fr);grid-template-rows:1fr;min-height:74px}.gallery-thumb{min-height:65px}.timeline-layout{gap:28px;grid-template-columns:.85fr 1.15fr}.timeline-photo{height:420px}.timeline-item{gap:12px}.timeline-item strong{font-size:19px}.filmstrip{grid-template-columns:repeat(3,1fr)}.film-frame{height:33vh;min-height:220px}.film-frame:nth-child(n+4){display:none}.birthday-content{gap:22px}.photo-heart{width:250px;height:240px}.reason-grid{grid-template-columns:repeat(4,1fr)}.reason-card{min-height:108px}.memory-grid{grid-auto-rows:57px}.lightbox{padding:40px 55px}}
@media(max-width:560px){.topbar{height:64px;padding:0 18px}.wordmark{font-size:8px;letter-spacing:.18em;gap:7px}.wordmark-mark{font-size:20px}.top-actions{gap:12px}.chapter-label{display:none}.sound-button{min-width:70px;height:38px}.progress-shell{top:63px;padding:8px 18px}.scene{padding:113px 20px 65px;min-height:100svh}.intro{padding-top:115px}.intro h1{font-size:49px;line-height:.98}.intro .eyebrow{font-size:8px}.subcopy{font-size:17px}.envelope{height:180px}.envelope-stage>.button{margin-top:34px}.scene-index{left:22px;bottom:20px}.section-heading h2{font-size:48px}.section-heading .section-lede{font-size:16px}.heading-row{margin-bottom:27px}.gallery-main{height:50vh;min-height:340px}.gallery-rail{gap:5px;min-height:55px}.gallery-thumb{min-height:48px}.gallery-controls{margin-top:14px;gap:10px}.round-button{width:44px;height:44px}.hint{font-size:9px}.timeline-layout{display:flex;flex-direction:column-reverse;gap:20px}.timeline-photo{width:100%;height:43vh;min-height:290px}.timeline-list{width:100%}.timeline-item{padding:11px 0}.timeline-item strong{font-size:19px;max-width:none}.timeline-dot{width:44px;height:44px}.timeline-list:before{left:21px}.wedding-scene{padding-top:112px}.filmstrip{grid-template-columns:repeat(2,1fr);gap:8px}.film-frame{height:27vh;min-height:195px;padding:5px}.film-frame:nth-child(even){transform:translateY(10px)}.film-frame:nth-child(n+5){display:none}.film-frame span{left:10px;bottom:10px;font-size:14px}.birthday-content{flex-direction:column;gap:7px;margin-top:18px}.birthday-copy h2{font-size:46px}.birthday-copy .section-lede{font-size:15px;max-width:330px}.photo-heart{width:235px;height:205px}.cake{transform:scale(.85);margin:-13px 0}.cake-wrap{min-width:0}.cake-glow{bottom:30px}.cake-caption{margin-top:-7px}.cake-wrap .button{min-height:44px}.birthday-message{font-size:16px;max-width:320px}.reason-grid{grid-template-columns:repeat(3,1fr);gap:7px}.reason-card{min-height:94px}.reason-front{font-size:20px}.reason-back{font-size:15px;padding:8px}.reason-progress{align-self:flex-end}.reason-progress strong{font-size:31px}.reason-note{font-size:15px}.memory-grid{grid-template-columns:repeat(6,1fr);grid-auto-rows:55px;gap:7px}.memory-item:nth-child(1){grid-column:span 3;grid-row:span 4}.memory-item:nth-child(2){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(3){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(4){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(5){grid-column:span 3;grid-row:span 3}.memory-item:nth-child(6){grid-column:span 3;grid-row:span 4}.letter-paper{max-height:75svh;padding:30px 23px}.letter-body{font-size:16px}.letter-body[lang=ta]{font-size:14px}.language-switch{margin-bottom:15px}.letter-intro h2{font-size:54px}.finale-frame{inset:11px}.finale-copy{padding:90px 28px}.finale-line{font-size:27px;line-height:1.1}.finale-copy h2{font-size:56px;margin-top:36px}.finale-actions{flex-direction:column;align-items:stretch;max-width:260px;margin:30px auto 0}.lightbox{padding:52px 16px}.lightbox img{max-height:72svh}.lightbox-prev{left:7px;top:50%}.lightbox-next{right:7px;top:50%}.lightbox-close{right:13px;top:12px}.lightbox figcaption{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.envelope-halo{pointer-events:none}
.story-nav{position:fixed;z-index:19;left:clamp(18px,5vw,72px);right:clamp(18px,5vw,72px);bottom:max(14px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;pointer-events:none}.story-nav button{pointer-events:auto;min-height:44px;padding:0 17px;border:1px solid rgba(216,181,109,.28);background:rgba(29,14,22,.74);backdrop-filter:blur(8px);color:#e8d9c7;font-size:9px;letter-spacing:.13em;text-transform:uppercase;cursor:pointer}.story-nav button b{color:var(--gold);font-size:15px;font-weight:400}.story-nav button:disabled{opacity:.35;cursor:default}.story-nav.hidden,.story-nav button.hidden{display:none}
.visually-hidden{position:absolute;width:0;height:0;overflow:hidden}.photo-heart{clip-path:url(#photoHeartClip)}
.heart-bubbles{position:absolute;z-index:8;inset:-80px -70px 30px;overflow:visible;pointer-events:none}.heart-bubble{position:absolute;left:calc(50% + var(--x));bottom:95px;color:#ffe8bb;font:var(--size) var(--serif);text-shadow:0 0 12px rgba(242,223,169,.9),0 0 28px rgba(214,119,144,.6);opacity:0;animation:heartBubble var(--duration) ease-out var(--delay) both}.heart-bubble:nth-child(3n){color:#efbdcb}@keyframes heartBubble{0%{opacity:0;transform:translate3d(0,0,0) scale(.4) rotate(-12deg)}15%{opacity:.92}65%{opacity:.82}100%{opacity:0;transform:translate3d(calc(var(--x) * .35),-290px,0) scale(1.25) rotate(18deg)}}
@media(max-width:850px){.filmstrip{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.film-frame,.film-frame:nth-child(even){height:clamp(190px,52vw,250px);min-height:0;display:block;transform:none}.film-frame:nth-child(n+4){display:block}}
