:root{color-scheme:dark;--ink:#19131f;--cream:#f9edde;--gold:#eac499;--muted:#c7b8c9;--line:#f2d3b32b;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{margin:0;min-height:100svh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 86% 45%,#45304855,transparent 53%),radial-gradient(ellipse at 12% 0%,#55312c22,transparent 40%),var(--ink);color:var(--cream);font:400 16px/1.7 var(--sans);overflow-x:hidden}body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;background-image:radial-gradient(#e7c09270 .6px,transparent .8px);background-size:77px 89px;opacity:.14}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{transition:background .25s,transform .25s,border-color .25s}button:hover:not(:disabled){border-color:#eac499a0}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}.skip{position:fixed;left:16px;top:-100px;background:var(--ink);color:var(--cream);padding:12px;z-index:100}.skip:focus{top:12px}header{max-width:1600px;width:100%;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:25px 5%;min-height:100px}.wordmark{display:flex;align-items:center;gap:22px;background:transparent;border:0;padding:0;text-align:left}.wordmark i{font:italic 36px/1 var(--serif);color:var(--gold)}.wordmark span{font-size:12px;letter-spacing:.12em;border-left:1px solid var(--line);padding-left:22px;color:var(--muted)}.settings{display:flex;gap:10px}.settings button{background:#fff4e905;border:1px solid var(--line);height:44px;padding:0 16px;border-radius:30px;font-size:13px}#motion{width:44px;padding:0;font-size:17px}main{width:100%;max-width:1600px;margin:auto;flex:1;outline:none;padding:0 5%}.chapter{display:grid;grid-template-columns:46% 54%;grid-template-rows:1fr auto;min-height:620px;height:calc(100svh - 210px);position:relative;align-items:center;animation:arrive .65s both}.chapter-copy{grid-column:1;grid-row:1;align-self:end;padding:36px 0 0;z-index:2}.chapter-details{grid-column:1;grid-row:2;align-self:start;padding:28px 0 45px;z-index:2}.scene-slot{grid-column:2;grid-row:1/3;height:100%;min-height:540px;position:relative;isolation:isolate}.scene-slot:before{content:'';position:absolute;inset:8% 1% 6%;border:1px solid var(--line);border-radius:50% 50% 0 0;opacity:.6;pointer-events:none}.scene-slot:after{content:'✦';position:absolute;right:8%;top:13%;color:var(--gold);font-size:22px;pointer-events:none}.scene-note{position:absolute;left:0;right:0;bottom:6%;text-align:center;font:italic 24px var(--serif);color:#d0b9bd;pointer-events:none}.scene-note i{font-style:normal;padding-left:20px;color:var(--gold)}#stageMount{position:absolute;inset:0;z-index:1}#birthdayWorld{display:block;width:100%;height:100%;touch-action:pan-y}.world-fallback{position:absolute;inset:10% 20% 12%;display:grid;place-items:center;pointer-events:none}.world-fallback img{max-width:100%;max-height:100%;object-fit:contain;border:5px solid var(--gold);box-shadow:0 25px 70px #0006}.world-ready .world-fallback{display:none}.scene-loading{position:absolute;left:15%;right:15%;bottom:12%;text-align:center;color:var(--cream);font-size:13px}.world-ready .scene-loading,.scene-failed .scene-loading{display:none}.eyebrow{font-size:12px;font-weight:500;letter-spacing:.13em;color:var(--gold);margin:0 0 25px;display:flex;align-items:center;gap:14px}.fine-line{height:1px;width:32px;background:var(--gold)}h1,h2,h3,p{overflow-wrap:break-word}h1{font:400 clamp(52px,5.8vw,88px)/.98 var(--serif);letter-spacing:-.04em;margin:0 0 28px}h1 em,h2 em{font-weight:400;color:var(--gold)}h2{font:400 clamp(44px,4.5vw,70px)/1.03 var(--serif);letter-spacing:-.025em;margin:0 0 26px}.intro{font:italic 28px var(--serif);margin:0 0 16px;color:var(--cream)}.body-copy{font-size:16px;line-height:1.85;color:var(--muted);margin:0;max-width:450px}.primary,.outline{display:inline-flex;justify-content:center;align-items:center;gap:22px;min-height:54px;border-radius:6px;padding:13px 25px;font-size:14px}.primary{background:linear-gradient(115deg,#f5d9b8,#ddb68c);border:1px solid #fff4df80;color:#352636;box-shadow:0 9px 30px #0002}.primary:hover{background:#f9e3c5}.primary>span{font-size:20px}.outline{border:1px solid #ddbc984d;background:#ffebcc05;color:var(--cream)}.small-note{color:#b8a5b7;font-size:12px;margin:14px 0 0}.gallery-caption{border-top:1px solid var(--line);padding-top:19px;max-width:375px}.gallery-caption .eyebrow{margin:0 0 7px;font-size:12px}.gallery-caption h3{font:italic 32px/1.15 var(--serif);color:var(--cream);margin:0 0 8px}.gallery-caption>p:last-child{font-size:14px;color:var(--muted);margin:0}.gallery-actions{display:flex;align-items:center;gap:12px;margin-top:22px}.circle{width:46px;height:46px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#ffeddd07;font-size:28px;line-height:1}.gallery-actions .outline{min-height:46px;padding:9px 20px}.photo-dots{display:flex;gap:3px;margin:19px 0 0;flex-wrap:wrap}.photo-dots button{width:25px;height:28px;background:transparent;border:0;position:relative;padding:0}.photo-dots button:before{content:'';position:absolute;width:5px;height:5px;border-radius:50%;background:#a18d9a;left:10px;top:12px}.photo-dots button[aria-pressed=true]:before{width:19px;left:3px;border-radius:5px;background:var(--gold)}.gallery-details .small-note{margin-top:1px}.letter-preview{font:italic 28px/1.4 var(--serif);color:#e2c6b4;margin:28px 0 0;padding-left:20px;border-left:1px solid #d0a87888}.wish-choices{display:flex;gap:9px;flex-wrap:wrap}.wish-choices button{min-height:46px;padding:10px 18px;border:1px solid var(--line);border-radius:30px;background:#ffebdd08;font-size:14px}.wish-choices button[aria-pressed=true]{background:var(--gold);color:#3c2939;border-color:var(--gold)}.wish-message{min-height:132px;max-width:440px;margin-top:24px;padding:20px 0;border-top:1px solid var(--line)}.wish-message p{font:italic 27px/1.4 var(--serif);color:#efdbc7;margin:0}.birthday-ending{grid-column:1;grid-row:1/3;align-self:center;padding:35px 0}.birthday-ending .eyebrow{max-width:350px;line-height:1.8}.birthday-ending h2{font-size:52px;line-height:1.08;margin:20px 0 27px}.birthday-ending h2 em{font-size:clamp(86px,9vw,142px);letter-spacing:-.055em}.signoff{font-size:13px;color:var(--muted);margin:22px 0}.signoff strong{display:block;font:italic 40px var(--serif);color:var(--gold);margin-top:2px}.journey{display:flex;align-items:center;gap:22px;width:90%;max-width:1440px;margin:0 auto;padding:18px 0 24px;border-top:1px solid var(--line)}.journey-label{display:flex;flex-direction:column;gap:2px;margin-right:auto}.journey-label span{font-size:12px;letter-spacing:.08em;color:#bba7b6}.journey-label b{font-size:13px;font-weight:400;color:var(--gold)}.journey nav{display:flex;gap:28px}.journey nav button{display:flex;align-items:center;gap:8px;min-height:48px;padding:5px 0;border:0;background:transparent;color:#ab99ad;position:relative}.journey nav button span{font-size:12px;opacity:.6}.journey nav button i{font-size:14px;font-style:normal}.journey nav button[aria-current=step]{color:var(--gold)}.journey nav button[aria-current=step]:after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--gold)}.journey-arrow{flex-shrink:0;width:44px;height:44px;border-radius:50%;background:transparent;border:1px solid var(--line);font-size:26px;line-height:1;color:var(--gold)}.journey-arrow:disabled{opacity:.2}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
dialog{border:1px solid #c5a18977;background:#211925;color:var(--cream);box-shadow:0 35px 100px #0008;border-radius:12px;width:min(800px,94vw);max-height:92dvh;padding:22px;overscroll-behavior:contain}dialog::backdrop{background:#0e0b13c9;backdrop-filter:blur(16px)}.dialog-close{position:sticky;float:right;top:0;width:44px;height:44px;z-index:2;border:1px solid #d3b89d55;background:#342738ed;border-radius:50%;font-size:25px;margin-bottom:-44px}.dialog-photo{display:flex;justify-content:center}.dialog-photo img{display:block;width:100%;height:62dvh;object-fit:contain;touch-action:pan-y}.dialog-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;text-align:center;padding-top:18px}.dialog-bottom h3{font:italic 28px var(--serif);color:var(--gold);margin:0 0 4px}.dialog-bottom p{font-size:14px;color:var(--muted);margin:0 0 7px}.dialog-bottom span{font-size:12px;letter-spacing:.1em;color:#bca6b7}#letterDialog{background:#f7ead7;color:#5f4546;width:min(680px,94vw);padding:14px;border-color:#d9bfa2}#letterDialog .dialog-close{background:#eedac0;color:#78515a;border-color:#bc9987}.letter{padding:32px 38px;position:relative}.letter-top{display:flex;justify-content:space-between;gap:25px;border-bottom:1px solid #bb97895c;padding:0 35px 20px 0;font-size:12px;letter-spacing:.08em;color:#866150}.letter h3{font:italic 42px/1.15 var(--serif);color:#935a63;margin:28px 0}.letter p{font-size:16px;line-height:1.95;color:#715758;margin:0 0 22px}.letter .letter-ending{font:italic 29px/1.4 var(--serif);color:#945a62}.letter .signoff{color:#886450;margin:30px 0 0}.letter .signoff strong{color:#935a63}.letter-bottom-star{position:absolute;bottom:40px;right:38px;color:#ae864b;font-size:28px}body.modal-open{overflow:hidden}body.paused *,body.paused *:before,body.paused *:after{animation:none!important;transition:none!important}body.paused .chapter{opacity:1;transform:none}@keyframes arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}









.world-ready .scene-loading:not([hidden]){display:block;padding:8px;border-radius:20px;background:#19131fbd}.next-step{margin-top:22px}
.gallery-details .next-step{margin-top:20px}
.ending-actions{display:flex;gap:12px;flex-wrap:wrap}
.letter .letter-next{margin-top:30px}
.scene-failed [data-panel] .world-fallback img{transition:opacity .4s}
.journey nav{gap:4px;justify-content:center}
.journey nav button{width:30px;min-height:44px;padding:0;flex-direction:row;justify-content:center}
.journey nav button span,.journey nav button i{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.journey nav button:before{content:'';width:7px;height:7px;border-radius:4px;background:#a18d9a;transition:width .3s,background .3s}
.journey nav button[aria-current=step]:before{width:22px;background:var(--gold)}
.journey nav button[aria-current=step]:after{display:none}

:root{--rose:#e6a6c1;--lavender:#b9a3d8;--peach:#f3c9a8;--hand:'Caveat',cursive}#confettiCanvas{position:fixed;inset:0;pointer-events:none;z-index:50}.is-hidden *, .is-hidden *:before,.is-hidden *:after,.chapter:not(.active) *{animation-play-state:paused!important}
.chapter{height:auto;min-height:calc(100svh - 210px)}.story-scene{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;min-height:calc(100svh - 210px);isolation:isolate;text-align:center;overflow:hidden;padding:40px 12px}.story-content{position:relative;grid-area:1/1;z-index:2;max-width:720px;margin:auto;width:100%}.story-content .eyebrow{justify-content:center}.story-content .body-copy{margin:0 auto 28px}.story-content>.primary,.story-content div:not(.laugh-playground)>.primary{margin-top:24px}.handwritten{font:400 32px/1.3 var(--hand);color:var(--gold)}.shhh{font-size:52px;margin:0 0 22px}.lights-dark{background:#0b0910}.lights-dark .journey{opacity:.35}.lights-dark header{opacity:.65}.light-rays{position:absolute;inset:-30%;background:conic-gradient(from 150deg at 50% 0%,transparent,#eac49933,transparent,#eac4991c,transparent);opacity:0;pointer-events:none}.lights-revealing .light-rays{animation:light-sweep 1.6s both}.lights-on:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,#eac49933,transparent 65%);pointer-events:none}.lights-revealing:before{animation:light-glow 1.6s both}.party-art{position:absolute;inset:0;pointer-events:none;opacity:0}.lights-on .party-art{opacity:1}.bunting{display:flex;justify-content:center;position:absolute;top:0;left:0;right:0;border-top:1px solid var(--gold);transform-origin:top}.bunting i{width:38px;height:49px;background:var(--gold);clip-path:polygon(0 0,100% 0,50% 100%);margin:0 9px}.bunting i:nth-child(3n){background:var(--rose)}.bunting i:nth-child(3n+1){background:var(--lavender)}.lights-revealing .bunting{animation:bunting-drop 1s both}.balloons i{position:absolute;left:calc(6% + var(--i)*17%);bottom:10%;width:clamp(34px,5vw,68px);height:clamp(46px,6.5vw,88px);background:radial-gradient(circle at 28% 25%,#ffffff77,transparent 40%),var(--color);border-radius:50% 50% 46% 46%;opacity:.85;box-shadow:inset -8px -8px 15px #19131f25}.balloons i:after{content:'';position:absolute;top:100%;left:50%;width:1px;height:85px;background:var(--gold);opacity:.5}.balloons i:nth-child(even){bottom:48%}.lights-on .balloons i{animation:balloon-bob 4s calc(var(--i)*-.7s) ease-in-out infinite}.party-stars{position:absolute;inset:20% 5%;display:flex;justify-content:space-between;align-items:center;color:var(--gold);font-size:25px}.party-stars span{align-self:end}.date-chip{border:1px solid var(--line);display:inline-block;border-radius:30px;padding:7px 18px;margin:0}.party-aside{transform:rotate(-4deg);margin:16px 0 0}
@keyframes light-sweep{from{opacity:0;transform:rotate(-20deg)}40%{opacity:1}to{opacity:0;transform:rotate(20deg)}}@keyframes light-glow{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}@keyframes bunting-drop{from{transform:translateY(-60px)}to{transform:none}}@keyframes balloon-bob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-20px) rotate(3deg)}}
#cakeArt{display:block;width:min(340px,78vw);height:auto;margin:0 auto 10px;touch-action:none;filter:drop-shadow(0 22px 30px #0004)}.cake-content h2{margin-bottom:12px}.cake-content .body-copy{margin-bottom:0}.cake-half{transition:transform .7s cubic-bezier(.2,.8,.2,1);transform-origin:center}.cut .cake-left{transform:translateX(-18px) rotate(-3deg)}.cut .cake-right{transform:translateX(18px) rotate(3deg)}.cake-slice{opacity:0;transform:translateY(15px);transition:opacity .5s,transform .5s}.cut .cake-slice{opacity:1;transform:none}.candle-flame{transform-box:fill-box;transform-origin:bottom;animation:flicker 1s calc(var(--i)*-.2s) infinite alternate}#knifeLine{transition:opacity .35s}#cakeNext{margin-top:10px;max-width:100%}@keyframes flicker{to{transform:scale(.85,1.15);opacity:.65}}
.typing-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#935a63;font:italic 21px var(--serif)}.letter-skip{min-width:60px;min-height:44px;background:transparent;border:0;color:#78515a}.typing:after{content:'▏';color:#945a62;animation:caret 1s infinite}.voice-card{border:1px solid #bc9987;border-radius:10px;padding:14px;margin-bottom:22px}.voice-card>p{font:italic 23px var(--serif);margin:0 0 10px}.voice-controls{display:flex;align-items:center;gap:10px}.voice-controls button{width:44px;height:44px;flex-shrink:0;border:0;border-radius:50%;color:#352636;background:var(--gold)}#voiceWave{width:100%;max-width:200px;min-width:50px;flex:1;fill:#bc998755}#voiceWave .played{fill:#ae864b}#voiceTime{font-size:12px;white-space:nowrap}@keyframes caret{50%{opacity:0}}
.finale-wish{font:italic 23px/1.4 var(--serif);max-width:390px;color:var(--gold);margin:18px 0}.finale-stars{display:flex;gap:15px;color:var(--gold);font-size:20px}.finale-stars span{animation:star-pop .5s both}.finale-stars span:nth-child(2){animation-delay:.15s}.finale-stars span:nth-child(3){animation-delay:.3s}.finale-stars span:nth-child(4){animation-delay:.45s}.finale-stars span:nth-child(5){animation-delay:.6s}@keyframes star-pop{from{opacity:0;transform:scale(0) rotate(-30deg)}to{opacity:1;transform:none}}
body[data-name=hook]{background:#0b0910}body[data-name=hook] header,body[data-name=hook] footer{display:none}.hook{min-height:100svh}.hook .story-content>p:first-child{font:400 24px var(--serif);color:var(--muted)}.hook h2{font-size:clamp(42px,5vw,72px);margin:25px 0}.hook-line{animation:arrive .8s both}.hook-line:nth-child(2){animation-delay:.7s}.hook-line:nth-child(3){animation-delay:1.4s}.hook-line:nth-child(4){animation-delay:2.1s}.hook-actions{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:28px}.quiet-button{min-height:44px;padding:8px 16px;color:var(--muted);border:0;background:transparent}.laugh-playground{position:relative;width:min(480px,100%);height:230px;margin:30px auto 0}.laugh-playground button{min-width:115px;min-height:48px}.laugh-playground #laughYes{position:absolute;top:0;left:calc(50% - 128px)}#laughNo{position:absolute;top:0;left:calc(50% + 12px);transition:left .2s,top .2s}.world-fallback #polaroidCaption{display:none}body[data-name=moments] .world-fallback{inset:8% 18% 13%;display:flex;flex-direction:column;background:var(--cream);padding:10px 10px 0;transform:rotate(var(--tilt,-2deg));box-shadow:0 25px 70px #0006}body[data-name=moments] .world-fallback img{width:100%;height:calc(100% - 62px);max-height:calc(100% - 62px);object-fit:contain;border:0;box-shadow:none}body[data-name=moments] .world-fallback #polaroidCaption{display:flex;align-items:center;justify-content:center;min-height:62px;text-align:center;width:100%;padding:6px 3px;color:#715758;font:400 21px/1.1 var(--hand)}.world-ready[data-name=moments] .world-fallback{display:none}
.gift-list{display:grid;gap:14px;width:min(480px,100%);margin:25px auto}.gift-card{position:relative;display:flex;align-items:center;gap:19px;text-align:left;padding:22px 22px 22px 30px;background:var(--cream);color:#715758;border:1px solid var(--gold);border-radius:8px;min-height:105px;mask:radial-gradient(circle at 0 8px,transparent 5px,#000 5.5px) 0 0/100% 16px}.gift-icon{font-size:31px}.gift-card strong{display:block;font:italic 28px/1.1 var(--serif);color:#61414e}.gift-desc{display:block;font-size:13px;margin-top:6px}.gift-stamp{position:absolute;right:14px;top:17px;transform:rotate(-12deg);color:#945a62;border:2px solid currentColor;border-radius:4px;padding:4px 7px;font-size:12px;font-weight:600;background:#f9eddee8;animation:claim-stamp .35s both}.claimed .gift-desc{padding-right:50px}@keyframes claim-stamp{from{opacity:0;transform:rotate(-12deg) scale(1.7)}to{opacity:1;transform:rotate(-12deg) scale(1)}}
.wordmark{min-height:44px}.settings button,#motion,.dialog-bottom .circle,.journey-arrow{min-width:44px;min-height:44px}.photo-dots{display:grid;grid-template-columns:repeat(6,44px);gap:0;justify-content:start}.photo-dots button{width:44px;height:44px}.photo-dots button:before{left:20px;top:20px}.photo-dots button[aria-pressed=true]:before{left:12px}.journey nav button{min-width:44px;width:44px;height:44px;flex-shrink:0}.journey{gap:10px}.journey nav{gap:0}.journey-label{min-width:170px}.chapter-copy{align-self:end}.story-scene{min-height:calc(100svh - 210px)}


body{transition:background-color 1.6s}.is-hidden *,.is-hidden *:before,.is-hidden *:after{transition:none!important}.paused .lights-on .light-rays{opacity:0}.paused .lights-on:before{opacity:1;transform:none}.paused .finale-stars span{opacity:1;transform:none}
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus,#birthdayEnding:focus,#chapterPanel:focus{outline:none}
.mobile-journey{display:none}

.chapter[data-name=lights]{padding:80px 12px 150px}.party-art{z-index:0}#lightsParty{z-index:3}.balloons i,.balloons i:nth-child(even){bottom:18px;left:calc(4% + var(--i)*17%);width:46px;height:62px}.balloons i:after{height:16px}.party-stars{inset:auto 0 12px;height:90px;display:block}.party-stars span{position:absolute;left:calc(13% + 18% * var(--star,0));bottom:10px;line-height:1;width:25px;height:25px}.party-stars span:nth-child(2){--star:1;bottom:60px}.party-stars span:nth-child(3){--star:2}.party-stars span:nth-child(4){--star:3;bottom:60px}.party-stars span:nth-child(5){--star:4}

.typing-tools{min-height:44px;height:44px;font-size:16px;line-height:1.2}.typing-tools #writingStatus{flex:1;min-width:0}.letter .signoff,.letter #voiceCard,.letter #letterNext{transition:opacity .4s}.letter.is-typing .signoff,.letter.is-typing #voiceCard,.letter.is-typing #letterNext{visibility:hidden;opacity:0}.letter.instant-letter .signoff,.letter.instant-letter #voiceCard,.letter.instant-letter #letterNext,.paused .letter .signoff,.paused .letter #voiceCard,.paused .letter #letterNext{transition:none}
.laugh-playground{width:min(420px,100%);height:220px;margin:24px auto 0}#laughTitle{min-height:145px;margin-bottom:0}

.letter.is-typing #voiceCard[hidden][data-source]:not([data-source=""]){display:block!important;visibility:hidden}

:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--gutter:max(20px,env(safe-area-inset-left));--header:80px;--footer:64px;--serif:'Cormorant Garamond','Card Serif',Georgia,serif;--sans:'DM Sans','Card Sans',Arial,sans-serif}
html{height:100%;scroll-behavior:auto}body{height:100vh;height:100svh;height:100dvh;min-height:0;display:grid;grid-template-rows:var(--header) minmax(0,1fr) var(--footer);overflow-x:clip}header{height:100%;min-height:0;width:100%;max-width:1440px;padding:12px 5%;margin:0 auto}main{height:100%;min-height:0;width:100%;max-width:1440px;padding:0 5%;margin:0 auto;position:relative}.chapter{height:100%;min-height:0;grid-template-columns:44% 56%;grid-template-rows:minmax(0,1fr) auto;gap:0 24px;overflow:visible}.chapter-copy{padding:16px 0 0;align-self:end}.chapter-details{padding:20px 0 16px;align-self:start}.scene-slot{min-height:0;height:100%;width:100%;grid-area:1/2/3/3;overflow:visible}.scene-slot:before{inset:2% 3%;pointer-events:none}.scene-slot:after{top:8%;right:8%}.scene-note{bottom:1%;font-size:22px}.eyebrow{font-size:12px;letter-spacing:.14em;margin:0 0 12px}h1,h2{font-size:clamp(44px,4.8vw,72px);line-height:1.02;margin:0 0 16px;text-wrap:balance}p{text-wrap:pretty}.body-copy{font-size:16px;line-height:1.6;max-width:34ch}.intro{font-size:28px;margin:0 0 12px}.primary,.outline{min-height:52px;min-width:44px;border-radius:32px;padding:12px 24px}.small-note{font-size:12px;margin:8px 0 0}.next-step{margin-top:12px}.journey{height:100%;min-height:0;width:90%;max-width:1440px;padding:10px 0;margin:0 auto;gap:16px;position:relative;bottom:auto}.journey nav{gap:8px}.journey nav button{width:44px;min-width:44px;height:44px}.journey-arrow{width:44px;height:44px;min-width:44px;min-height:44px}.journey-label{min-width:150px}.mobile-journey{display:none}.story-scene,.chapter[data-name=lights]{grid-template-columns:1fr;grid-template-rows:1fr;min-height:0;height:100%;padding:24px 0;overflow:hidden}.story-content{max-width:880px;width:100%;margin:auto}.story-content h2{max-width:20ch;margin-left:auto;margin-right:auto}.story-content>.primary,.story-content div:not(.laugh-playground)>.primary{margin-top:20px}.hook{height:100vh;height:100svh;height:100dvh;min-height:0}.hook .story-content{transform:translateY(-5vh);max-width:720px}.hook h2{font-size:clamp(40px,5vw,72px)}.hook-line{animation-delay:0s}.hook-actions{margin-top:24px}.chapter[data-name=lights]{padding:52px 0 140px}.bunting i{height:35px}.balloons i,.balloons i:nth-child(even){width:clamp(38px,5vw,64px);height:clamp(56px,7vw,90px);bottom:24px}.balloons i:after{height:28px}.party-stars{height:110px}.party-aside{font-size:28px}.date-chip{border-color:#eac49966}.laugh-playground{width:min(420px,100%);height:220px;max-width:100%;margin:20px auto 0}#laughTitle{min-height:150px}#cakeArt{width:min(330px,34vh);height:auto;margin:8px auto}#cakeNext,#cutCake{margin-top:12px;min-height:52px}.cake-content h2{margin-bottom:8px}.cake-content .body-copy{margin-bottom:0}.gift-list{grid-template-columns:repeat(3,1fr);gap:12px;width:min(860px,100%);margin:24px auto}.gift-card{min-height:160px;padding:24px 18px;gap:12px;align-items:center;flex-direction:column;text-align:center}.gift-desc{font-size:14px;line-height:1.4}.gift-card strong{font-size:28px}.claimed .gift-desc{padding:0}.gift-stamp{top:8px;right:8px;font-size:11px}.gift-icon{font-size:28px}.gift-list+.small-note{height:22px;margin:0}.gallery-caption{border:0;padding:0}.gallery-caption h3{font-size:28px}.gallery-actions{gap:12px;flex-wrap:wrap;margin:12px 0 0}.gallery-actions .next-step{margin:0}.gallery-details>.small-note{margin:8px 0}.photo-dots{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);z-index:4;display:flex;justify-content:center;gap:8px;width:max-content;max-width:100%;height:44px;margin:0}.photo-dots button{width:44px;height:44px;flex-shrink:0}.photo-dots button:before{width:6px;height:6px;left:19px;top:19px}.photo-dots button[aria-pressed=true]:before{width:16px;left:14px;top:19px}.scene-slot #memoryNumber{position:absolute;top:8px;left:12px;z-index:4;font-size:12px;padding:4px 12px;border:1px solid var(--line);background:#19131fcc;border-radius:24px}.scene-slot #previousMemory,.scene-slot #nextMemory{position:absolute;top:50%;transform:translateY(-50%);z-index:4;background:#19131fa8;backdrop-filter:blur(8px);width:44px;height:44px}.scene-slot #previousMemory{left:0}.scene-slot #nextMemory{right:0}.wish-choices{gap:8px;flex-wrap:nowrap}.wish-choices button{min-height:44px;font-size:14px}.wish-message{height:96px;min-height:96px;margin-top:12px;padding:8px 0;overflow:auto}.wish-message p{font-size:22px;line-height:1.35}.birthday-ending{padding:0}.birthday-ending h2{font-size:44px;margin:12px 0}.birthday-ending h2 em{font-size:clamp(64px,8vw,120px)}.finale-wish{font-size:22px;margin:12px 0}.signoff{margin:12px 0}.ending-actions{gap:8px;flex-wrap:nowrap}.ending-actions button{font-size:13px;padding:10px 16px;min-height:44px;gap:8px}.world-fallback{inset:3% 12% 5%;display:flex;justify-content:center;align-items:center}.world-fallback img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;border:0;filter:drop-shadow(0 18px 25px #0008)}body[data-name=moments] .world-fallback{inset:3% 14% 14%;padding:8px 8px 0;border:1px solid var(--gold)}body[data-name=moments] .world-fallback img{height:calc(100% - 38px);max-height:calc(100% - 38px)}body[data-name=moments] .world-fallback #polaroidCaption{height:38px;min-height:38px;padding:4px;font-size:18px}.world-ready .world-fallback{display:none}.letter-preview{font-size:24px;margin:20px 0 0}.chapter-exiting{animation:chapter-out .22s ease-out both!important}.chapter.active{animation:chapter-in .42s ease-out both}.chapter[hidden]{display:none!important}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){:root{--header:48px;--footer:calc(48px + env(safe-area-inset-bottom))}header{padding:2px var(--gutter);max-width:600px;gap:12px}.wordmark{min-height:44px}.wordmark i{font-size:26px}.wordmark span,.settings span{display:none}.settings{gap:8px}.settings button,#motion{padding:0;width:44px;height:44px;min-height:44px;border-radius:50%;font-size:18px}main{max-width:600px;padding:0 var(--gutter);height:100%;min-height:0}.chapter{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto;gap:4px;height:100%;min-height:0;align-items:stretch}.chapter-copy{grid-area:1/1;padding:4px 0 0;text-align:center;align-self:start}.chapter-copy h1,.chapter-copy h2{font-size:clamp(34px,9.5vw,46px);margin:4px 0 8px}.chapter-copy .eyebrow{justify-content:center;font-size:11px;margin:0 0 4px;letter-spacing:.14em}.chapter-copy .body-copy{font-size:14px;line-height:1.45;max-width:34ch;margin:0 auto}.body-copy br{display:none}.scene-slot{grid-area:2/1;height:100%;min-height:0;min-width:0}.scene-slot:before{inset:1% 2% 2%}.scene-slot:after{display:none}.scene-note{display:none}.chapter-details{grid-area:3/1;padding:4px 0 8px;text-align:center}.chapter-details>.primary,.story-content>.primary,.story-content div:not(.laugh-playground)>.primary,.hook-actions>.primary,#cakeNext,#cutCake{width:min(340px,100%);height:52px;min-height:52px;margin-left:auto;margin-right:auto;font-size:14px;padding:10px 16px}.chapter-details>.small-note{font-size:12px;margin:4px 0}.chapter-details>.outline.next-step{display:block;width:100%;height:44px;min-height:44px;border:0;background:transparent;padding:4px;margin:0 auto;font-size:13px}.chapter-details>.outline.next-step span{font-size:16px}.letter-preview{display:none}.journey{width:100%;max-width:none;height:var(--footer);margin:0;padding:2px var(--gutter) calc(2px + env(safe-area-inset-bottom));gap:12px;border-top:1px solid var(--line);background:#1c1522f2;position:relative;z-index:10}.journey nav,.journey-label{display:none}.journey-arrow{flex:0 0 44px;border:0}.mobile-journey{display:flex;flex:1;align-items:center;gap:12px;min-width:0;font-size:12px;color:var(--gold)}.journey-track{flex:1;height:4px;background:#eac49926;border-radius:4px;overflow:hidden}.journey-track span{display:block;height:100%;background:var(--gold);transition:width .4s}.mobile-journey>span{white-space:nowrap}.primary{border-radius:32px}.eyebrow{font-size:11px}.small-note{font-size:12px}.story-scene,.chapter[data-name=lights]{grid-template-columns:1fr;grid-template-rows:1fr;height:100%;min-height:0;padding:12px 0;gap:0}.story-content{max-width:560px;width:100%;margin:auto}.story-content h2{font-size:clamp(34px,9.5vw,46px);margin:0 auto 12px}.story-content .eyebrow{justify-content:center;font-size:11px;margin-bottom:12px}.story-content .body-copy{font-size:15px;line-height:1.6;margin:0 auto 12px}.story-content>.primary,.story-content div:not(.laugh-playground)>.primary{margin-top:12px}.hook{height:100vh;height:100svh;height:100dvh;min-height:0}.hook .story-content{transform:translateY(-4vh)}.hook h2{font-size:clamp(36px,10.5vw,46px);margin:24px 0}.hook .story-content>p:first-child{font-size:24px}.hook-actions{margin-top:24px;gap:8px}.shhh{font-size:58px;margin:0 0 16px}.chapter[data-name=lights]{padding:40px 0 140px}#birthdayPartyTitle{font-size:clamp(40px,11vw,58px)}.party-aside{font-size:26px}.date-chip{font-size:14px}.bunting{left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter))}.bunting i{height:24px;width:24px;margin-inline:4px}.balloons i,.balloons i:nth-child(even){bottom:18px;left:calc(3% + var(--i)*25%);width:44px;height:68px}.balloons i:nth-child(n+5){display:none}.party-stars{inset:auto 0 8px;height:100px}.party-stars span:nth-child(2),.party-stars span:nth-child(4){bottom:68px}.laugh-playground{height:200px;width:100%;margin:12px auto 0}.laugh-playground .primary{width:115px;min-width:115px;height:48px;padding:10px}.laugh-playground #laughYes{left:calc(50% - 123px)}#laughNo{left:calc(50% + 8px);width:115px;min-width:115px;padding:10px}#laughTitle{min-height:116px;margin:0 auto}.cake-content{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) 52px;align-items:center;height:100%;gap:6px;padding:8px 0}.cake-content .eyebrow{margin:0}.cake-content h2{font-size:34px;margin:0}.cake-content .body-copy{font-size:14px;margin:0 auto;min-height:40px}#cakeArt{width:min(78%,330px);height:100%;max-height:100%;min-height:0;max-width:100%;margin:0 auto}#cakeNext,#cutCake{grid-row:5;margin:0 auto!important}.gift-list{grid-template-columns:1fr;gap:12px;width:min(400px,100%);margin:16px auto}.gift-card{min-height:88px;padding:14px 18px;flex-direction:row;text-align:left;gap:14px}.gift-card strong{font-size:26px}.gift-desc{font-size:14px;margin-top:4px}.gift-stamp{font-size:11px;top:8px;right:8px}.gift-icon{font-size:26px}.gift-list+.small-note{height:18px;font-size:12px;margin:0}.gift-list+.small-note[hidden]{display:block!important;visibility:hidden}.gift-list~.primary{margin-top:12px!important}.gallery-caption h3{font-size:27px;margin:0 0 4px}.gallery-caption p:last-child{font-size:14px;line-height:1.4;margin:0}.gallery-details{padding:4px 0 8px}.gallery-details .small-note{display:none}.gallery-actions{justify-content:center;gap:8px;margin:8px 0 0;flex-direction:row}.gallery-actions .primary,.gallery-actions .outline{height:48px;min-height:48px;padding:8px 14px;font-size:13px;gap:8px}.gallery-actions .primary{order:0}.gallery-actions .outline{order:1}.photo-dots{bottom:0;width:calc(100% - 16px);height:44px;display:flex;gap:0;align-items:center;justify-content:center;background:#19131f80;border-radius:24px;touch-action:pan-y}.photo-dots button{display:none}.photo-dots:before{content:'';width:164px;height:6px;background:radial-gradient(circle at 3px 3px,#bca6b7 3px,transparent 3.5px) 0 0/14px 6px}.photo-dots:after{content:'';position:absolute;top:19px;left:calc(50% - 82px + var(--photo,0)*14px);width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold)}.wish-choices{justify-content:center;gap:8px}.wish-choices button{padding:8px 14px;height:44px;min-height:44px;font-size:14px;flex:1;max-width:130px}.wish-message{height:89px;min-height:89px;max-width:36ch;margin:8px auto 0;padding:0;border:0;overflow:auto}.wish-message p{font-size:22px;line-height:1.3}.wish-message+.primary{margin-top:4px}.world-fallback{inset:1% 7% 2%}.world-fallback img{width:100%;height:100%;object-fit:contain}body[data-name=moments] .world-fallback{inset:1% 14% 15%;padding:8px 8px 0}.chapter[data-name=welcome]{grid-template-rows:auto auto minmax(0,1fr) auto 52px auto;gap:4px}.chapter[data-name=welcome] .chapter-copy,.chapter[data-name=welcome] .chapter-details{display:contents}.chapter[data-name=welcome] .eyebrow{grid-area:1/1;justify-content:center;margin:0;padding-top:4px;font-size:11px}.chapter[data-name=welcome] h1{grid-area:2/1;text-align:center;font-size:clamp(30px,8.5vw,44px);margin:0}.chapter[data-name=welcome] h1 br:first-of-type{display:none}.chapter[data-name=welcome] .scene-slot{grid-area:3/1}.chapter[data-name=welcome] .intro{grid-area:4/1;text-align:center;font:400 27px/1.1 var(--hand);margin:0;color:var(--gold)}.chapter[data-name=welcome] #enterWorld{grid-area:5/1;margin:0 auto;width:min(340px,100%)}.chapter[data-name=welcome] .body-copy{grid-area:6/1;text-align:center;font-size:14px;line-height:1.35;margin:0 auto 6px;max-width:42ch}.chapter[data-name=welcome] .chapter-details>.small-note{display:none}.birthday-ending{grid-area:1/1/3/2;z-index:3;align-self:start;text-align:center;padding:8px 0 0;pointer-events:none}.birthday-ending button{pointer-events:auto}.birthday-ending .eyebrow{max-width:none;font-size:11px;line-height:1.4;justify-content:center;margin-bottom:8px}.birthday-ending h2{font-size:34px;margin:0 0 8px;line-height:1}.birthday-ending h2 em{font-size:clamp(54px,15vw,72px)}.birthday-ending .body-copy{font-size:14px;line-height:1.45;margin:0 auto}.birthday-ending .finale-wish{font-size:20px;line-height:1.2;margin:8px auto;max-width:30ch}.finale-stars{justify-content:center;gap:12px}.birthday-ending .signoff{font-size:12px;margin:8px 0}.birthday-ending .signoff strong{font-size:32px;line-height:1.1}.ending-actions{justify-content:center;gap:8px}.ending-actions button{min-height:44px;font-size:12px;padding:8px 12px;gap:8px}.wish-released .chapter[data-name=sky]{grid-template-rows:minmax(0,1fr)}.wish-released .chapter[data-name=sky] .scene-slot{grid-area:1/1;height:100%;opacity:.65}.wish-released .scene-note{display:none}}
@media(max-height:500px) and (orientation:landscape){:root{--header:48px;--footer:48px}header{padding:2px 4%;height:48px}.wordmark i{font-size:26px}.wordmark span,.settings span{display:none}.settings{gap:8px}.settings button,#motion{width:44px;height:44px;padding:0;font-size:18px}.journey{height:48px;width:100%;padding:2px 4%;gap:12px;background:#1c1522f2}.journey nav,.journey-label{display:none}.mobile-journey{display:flex;flex:1;align-items:center;gap:12px;font-size:12px;color:var(--gold)}.journey-track{flex:1;height:4px;background:#eac49926;border-radius:4px;overflow:hidden}.journey-track span{display:block;height:100%;background:var(--gold)}.journey-arrow{border:0}main{padding:0 4%}.chapter{grid-template-columns:48% 48%;grid-template-rows:minmax(0,1fr) auto;column-gap:4%;height:100%;min-height:0;align-items:center}.scene-slot{grid-area:1/1/3/2;min-height:0;height:100%}.chapter-copy{grid-area:1/2;padding:0;align-self:end}.chapter-details{grid-area:2/2;padding:8px 0;align-self:start}.chapter-copy h1,.chapter-copy h2{font-size:34px;line-height:1.02;margin:4px 0 8px}.chapter-copy .eyebrow{font-size:11px;margin:0 0 6px}.chapter-copy .body-copy{font-size:14px;line-height:1.3}.chapter-copy .body-copy br{display:none}.chapter-copy .intro{font-size:24px;margin:0 0 4px}.chapter[data-name=welcome] .body-copy{font-size:14px;line-height:1.3}.primary,.outline{min-height:44px;height:44px;padding:8px 16px;font-size:13px;gap:8px}.small-note,.chapter-details>.small-note,.letter-preview,.scene-note{display:none}.story-scene,.chapter[data-name=lights]{grid-template-columns:1fr;grid-template-rows:1fr;padding:8px 0;height:100%;min-height:0}.story-content h2{font-size:34px;margin-bottom:8px}.story-content .eyebrow{font-size:11px;margin:0 0 6px}.story-content .body-copy{font-size:14px;line-height:1.3;margin-bottom:8px}.story-content>.primary,.story-content div:not(.laugh-playground)>.primary{margin-top:8px}.hook h2{font-size:40px}.hook .story-content>p:first-child{font-size:22px}.hook .small-note{display:block}.hook .story-content{transform:none}.hook-actions{margin-top:12px;gap:0}.chapter[data-name=lights]{padding-bottom:78px}.shhh{font-size:34px;margin-bottom:4px}#lightsDark h2{font-size:32px;margin-bottom:4px}#lightsDark .body-copy{margin-bottom:0}#lightsParty h2{font-size:32px;line-height:1;margin-bottom:6px}#lightsParty h2 br{display:none}.date-chip{font-size:13px;padding:2px 14px}.party-aside{font-size:22px;margin-top:4px}.bunting i{height:16px}.balloons i,.balloons i:nth-child(even){height:38px;width:28px;bottom:10px}.balloons i:after{height:12px}.party-stars{height:55px;font-size:18px}.party-stars span:nth-child(2),.party-stars span:nth-child(4){bottom:28px}.laugh-playground{height:150px;width:420px;margin-top:8px}#laughTitle{min-height:70px;max-width:36ch;margin-bottom:0}.laugh-playground button{height:44px;min-height:44px}.cake-content{display:grid;grid-template-columns:48% 48%;grid-template-rows:auto auto auto 44px;gap:4px 4%;height:100%;align-content:center}.cake-content .eyebrow,.cake-content h2,.cake-content .body-copy{grid-column:2;margin:0;text-align:left}.cake-content h2{font-size:34px}.cake-content .body-copy{font-size:14px;min-height:38px}.cake-content #cakeArt{grid-area:1/1/5/2;height:100%;width:100%;max-height:260px;margin:0}.cake-content #cutCake,.cake-content #cakeNext{grid-area:4/2;margin:4px 0 0;width:100%;height:44px;min-height:44px}.gift-list{grid-template-columns:repeat(3,1fr);gap:12px;margin:10px auto;width:100%}.gift-card{min-height:82px;padding:4px 10px;gap:2px}.gift-card strong{font-size:24px}.gift-desc{font-size:14px;line-height:1.25}.gift-stamp{font-size:11px}.gift-list+.small-note{height:16px;display:block;font-size:11px}.gift-list+.small-note[hidden]{visibility:hidden;display:block!important}.gifts-content>.primary{margin-top:4px}.gallery-caption h3{font-size:25px;margin-bottom:4px}.gallery-caption>p:last-child{font-size:14px;line-height:1.2}.gallery-actions{gap:8px;margin-top:8px}.gallery-actions .outline,.gallery-actions .primary{font-size:12px;padding:8px 10px}.gallery-details .small-note{display:none}.photo-dots{width:calc(100% - 16px);bottom:0;height:44px;gap:0;background:#19131f88;border-radius:24px}.photo-dots button{display:none}.photo-dots:before{content:'';width:164px;height:6px;background:radial-gradient(circle at 3px 3px,#bca6b7 3px,transparent 3.5px) 0 0/14px 6px}.photo-dots:after{content:'';position:absolute;top:19px;left:calc(50% - 82px + var(--photo,0)*14px);width:6px;height:6px;border-radius:50%;background:var(--gold)}.wish-choices{gap:8px}.wish-choices button{min-height:44px;padding:8px;font-size:13px;flex:1}.wish-message{height:68px;min-height:68px;margin:4px 0;padding:0}.wish-message p{font-size:20px;line-height:1.15}.wish-message+.primary{margin:0}.chapter[data-name=wishes] .chapter-copy h2{font-size:30px}.birthday-ending{grid-area:1/2/3/3;padding:0}.birthday-ending .eyebrow{font-size:11px;line-height:1.2;margin-bottom:4px}.birthday-ending h2{font-size:28px;margin:4px 0;line-height:1}.birthday-ending h2 em{font-size:44px}.birthday-ending .body-copy{font-size:14px;line-height:1.2}.finale-wish{font-size:18px;line-height:1.1;margin:4px 0}.finale-stars{font-size:16px;gap:10px}.birthday-ending .signoff{margin:4px 0;font-size:11px}.birthday-ending .signoff strong{font-size:26px;line-height:1}.ending-actions{gap:8px}.ending-actions button{font-size:11px;padding:8px;gap:4px;min-height:44px}.chapter[data-name=letter] .chapter-details .next-step{margin:4px 0 0;min-height:44px;height:44px;border:0;padding:4px 16px}}
@media(min-width:901px) and (max-width:1150px) and (min-height:501px){h1,h2{font-size:52px}.wordmark span{display:none}.journey-label{display:none}.chapter{column-gap:20px;grid-template-columns:44% 56%}.body-copy{font-size:15px}.journey nav{gap:8px}.scene-note{font-size:22px}.photo-dots{gap:2px}.photo-dots button{width:44px}}
@media(max-width:359px) and (min-height:501px){.chapter-copy h1,.chapter-copy h2{font-size:32px}.chapter[data-name=welcome] h1{font-size:30px}.chapter[data-name=welcome] .intro{font-size:24px}.chapter[data-name=welcome] .body-copy{font-size:14px}.gallery-actions{flex-direction:column;gap:8px}.gallery-actions .primary,.gallery-actions .outline{width:100%;height:44px;min-height:44px}.gift-card{min-height:76px;padding:10px 14px}.gift-card strong{font-size:24px}.gift-desc{font-size:14px}.gift-list{margin:12px auto;gap:12px}.story-content h2{font-size:32px}.wish-choices button{padding:8px;font-size:13px}.wish-message{height:82px;min-height:82px}.wish-message p{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.chapter.active{opacity:1;transform:none}}
body[data-name=hook]{grid-template-rows:minmax(0,1fr)}.chapter{grid-template-columns:minmax(0,44fr) minmax(0,56fr)}.story-scene{grid-template-columns:1fr}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){.chapter{grid-template-columns:1fr}}
@media(max-height:500px) and (orientation:landscape){.chapter{grid-template-columns:minmax(0,48fr) minmax(0,48fr)}.story-scene{grid-template-columns:1fr}}
body{isolation:isolate;background:radial-gradient(ellipse at 50% 40%,#51334660,transparent 66%),var(--ink)}body:before{z-index:-1;opacity:.22;background-image:radial-gradient(#e7c09299 .7px,transparent 1px),radial-gradient(#e7c09255 .6px,transparent 1px);background-size:97px 113px,151px 173px;animation:dust-drift 80s linear infinite}body:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 50% 45%,transparent 25%,#0e0a1280);opacity:.7}.chapter:before{content:'';position:absolute;inset:8% 4%;background:radial-gradient(ellipse at 55% 54%,#eac4991a,transparent 64%);pointer-events:none;z-index:-1}.story-scene{overflow:hidden}.chapter.active{animation:chapter-in .42s cubic-bezier(.2,.8,.2,1) both}.chapter-exiting{animation:chapter-out .22s ease-out both!important}#stageMount{transition:opacity .42s ease-out}.travelling #stageMount{animation:stage-in .7s ease-out both}.hook:before{inset:20% 0;background:radial-gradient(ellipse at 50% 45%,#eac49933,transparent 65%);animation:candle-breathe 6s ease-in-out infinite}.hook{isolation:isolate}.light-rays,.lights-revealing .light-rays{position:absolute;inset:0;z-index:0}.paused .chapter.active{animation:none;opacity:1;transform:none}
@keyframes dust-drift{to{background-position:97px -113px,-151px 173px}}@keyframes candle-breathe{50%{opacity:.6;transform:scale(1.04)}}@keyframes chapter-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes chapter-out{to{opacity:0;transform:scale(.985)}}@keyframes stage-in{from{opacity:0}to{opacity:1}}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){.chapter[data-name=wishes] h2{margin:4px 0}.chapter[data-name=wishes] .chapter-copy .body-copy{line-height:1.3}.wish-message{height:72px;min-height:72px}.wish-message p{line-height:1.09}.world-fallback{background:linear-gradient(135deg,#f9edde,#eddfc9);border:1px solid #eac499;border-radius:4px;padding:8px;box-shadow:0 18px 40px #0005}.world-fallback img{filter:none}.world-ready .world-fallback{display:none}}
#lightsOn{box-shadow:0 0 0 0 #eac49944;animation:button-glow 2.4s ease-out infinite}.lights-on .story-content{margin-top:clamp(22px,5vh,70px)}.balloons i{box-shadow:inset -8px -8px 15px #19131f25,0 0 28px #eac49916}.laugh-playground:after{content:'';position:absolute;left:5%;right:5%;bottom:0;height:45%;background:radial-gradient(ellipse,#eac49922,transparent 70%);transform:perspective(240px) rotateX(50deg);z-index:-1}.laugh-playground.dodging{outline:1px dashed #eac49933;outline-offset:8px;border-radius:30px}.cake-content:before{content:'';position:absolute;left:15%;right:15%;bottom:18%;height:22%;background:radial-gradient(ellipse,#eac49926,transparent 70%);z-index:-1}.candle-flame{filter:drop-shadow(0 0 5px #ffd388) drop-shadow(0 0 12px #eac499)}#cakeGuide{pointer-events:none;opacity:.45;animation:guide-drift 2s linear infinite}.guide-used #cakeGuide,.cut #cakeGuide,.paused #cakeGuide{opacity:0;animation:none}.gift-card{box-shadow:0 12px 25px #0004,inset 0 0 0 1px #fff8;background:radial-gradient(#76504e15 .6px,transparent .9px) 0 0/5px 7px,var(--cream);transition:transform .25s,box-shadow .25s}.gift-card:active{transform:translateY(-2px) rotate(1deg);box-shadow:0 18px 28px #0004}.gift-stamp{box-shadow:0 0 2px #945a6255;text-shadow:0 0 1px #945a6266}.gift-bow{position:absolute;left:2%;bottom:4%;width:80px;height:80px;opacity:.15;pointer-events:none}.gifts-content{isolation:isolate}.gift-card,.gifts-content h2,.gifts-content .eyebrow{position:relative;z-index:1}.letter{background:radial-gradient(#8160550c .6px,transparent .9px) 0 0/4px 7px,#f7ead7}.letter-top{border-bottom:1px solid #ae864b66}#letterDialog{box-shadow:0 0 0 5px #f7ead712,0 35px 100px #0008}.finale-sparkles{position:absolute;inset:0;pointer-events:none;z-index:0}.finale-sparkles i{position:absolute;width:2px;height:2px;background:var(--gold);border-radius:50%;box-shadow:0 0 6px var(--gold);left:-12px;top:8%;animation:fall-sparkle 12s calc(var(--i)*-1.1s) linear infinite}.birthday-ending{position:relative;z-index:2}.letter-next{min-width:240px}.photo-dots:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@keyframes button-glow{70%{box-shadow:0 0 0 12px #eac49900}to{box-shadow:0 0 0 0 #eac49900}}@keyframes guide-drift{to{stroke-dashoffset:-20}}@keyframes fall-sparkle{from{transform:translateY(0);opacity:0}10%{opacity:.45}80%{opacity:.3}to{transform:translateY(65vh);opacity:0}}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){dialog,#photoDialog,#letterDialog{width:100%;height:100vh;height:100svh;height:100dvh;max-width:none;max-height:none;margin:0;border:0;border-radius:0;padding:0}#photoDialog{background:#0b0910;overflow:hidden}.dialog-photo{height:100%;display:block}.dialog-photo img{width:100%;height:100%;object-fit:contain;padding:env(safe-area-inset-top) 0 120px;touch-action:none}.dialog-bottom{position:absolute;bottom:0;left:0;right:0;padding:48px 20px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#0b0910 38%);gap:12px}.dialog-bottom h3{font-size:28px}.dialog-bottom p{font-size:14px}.dialog-close{position:sticky;top:calc(8px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));margin:8px 12px -52px 0;z-index:5}.letter{padding:68px 20px calc(32px + env(safe-area-inset-bottom))}.letter h3{font-size:34px;margin:24px 0}.letter p{font-size:17px;line-height:1.85}.letter .letter-ending{font-size:27px}.letter .signoff{margin-top:24px}.letter .letter-next{width:min(340px,100%);height:52px;display:flex;margin:24px auto 0}.letter-bottom-star{display:none}.letter-top{padding-right:0;font-size:11px}.gift-bow{left:0;bottom:0;width:45px;height:45px}.lights-on .story-content{margin-top:clamp(22px,5vh,60px)}.party-art{overflow:visible}.chapter[data-name=lights]{overflow:hidden;isolation:isolate}.lights-on .balloons i{height:clamp(70px,12vh,100px);width:clamp(42px,8vw,58px)}.birthday-ending{pointer-events:none}.birthday-ending .ending-actions{pointer-events:auto}}
@media(max-height:500px) and (orientation:landscape){dialog,#letterDialog{max-height:100dvh;height:100dvh;margin:0 auto;border-radius:0}.letter{padding:28px 32px}.lights-on .story-content{margin-top:0}.chapter[data-name=lights]{padding-top:4px;padding-bottom:64px}.balloons i,.balloons i:nth-child(even){height:34px;width:26px}.gift-bow{width:40px;height:40px;left:0;bottom:0}}
@media(prefers-reduced-motion:reduce){#cakeGuide{display:none}.finale-sparkles i{opacity:.25}}
@font-face{font-family:'Card Serif';src:local('Georgia');size-adjust:96%;ascent-override:93%;descent-override:25%;line-gap-override:0%}@font-face{font-family:'Card Sans';src:local('Arial');size-adjust:102%;ascent-override:96%;descent-override:25%;line-gap-override:0%}
.icon-sprite{position:absolute;pointer-events:none}.line-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;vertical-align:-3px}.date-chip .line-icon{color:var(--gold)}.gift-icon .line-icon{width:28px;height:28px;color:#967044}.emoji{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.primary{background:linear-gradient(120deg,#f6dfbf,#ddba8d);box-shadow:inset 0 1px 0 #fff7,0 8px 24px #0002;transition:box-shadow .25s,background .25s,transform .2s}.primary:active{transform:translateY(2px)}.primary:focus-visible{box-shadow:inset 0 1px 0 #fff7,0 0 22px #eac49933}.outline:hover{background:#eac4990f}button:focus-visible,a:focus-visible,[role=slider]:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.scene-loading{display:none;font-size:12px;border-radius:24px;z-index:3;padding:6px 10px;background:#19131fcc}.loading-slow .scene-loading:not([hidden]){display:block}.world-ready .scene-loading{display:none!important}#birthdayWorld{opacity:0;transition:opacity .6s ease-out}.world-ready #birthdayWorld{opacity:1}.world-fallback{opacity:1;filter:blur(0);transition:opacity .6s,filter .6s;pointer-events:none}.world-ready .world-fallback,.world-ready[data-name=moments] .world-fallback{display:flex;opacity:0;visibility:hidden}.scene-failed #birthdayWorld{opacity:0}.settings button[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 2px #eac49933}.paused *, .is-hidden *{animation-play-state:paused!important}
@media(hover:hover) and (pointer:fine){.primary:hover{box-shadow:inset 0 1px 0 #fff7,0 0 28px #eac49925}.primary:hover>span,.primary:hover>.line-icon{transform:rotate(15deg)}}
@media(prefers-reduced-motion:reduce){.world-fallback,#birthdayWorld{transition:none}.chapter.active{animation:none}}

@media(max-width:1150px){.photo-dots{width:calc(100% - 16px);bottom:0;height:44px;gap:0;background:#19131f88;border-radius:24px}.photo-dots button{display:none}.photo-dots:before{content:"";width:164px;height:6px;background:radial-gradient(circle at 3px 3px,#bca6b7 3px,transparent 3.5px) 0 0/14px 6px}.photo-dots:after{content:"";position:absolute;top:19px;left:calc(50% - 82px + var(--photo,0)*14px);width:6px;height:6px;border-radius:50%;background:var(--gold)}}
@media(max-width:359px) and (min-height:501px){.chapter[data-name=welcome] h1{font-size:27px}.chapter[data-name=moments] .chapter-copy h2{font-size:27px}.chapter[data-name=moments] .chapter-copy .body-copy{line-height:1.25}.gallery-caption h3{font-size:22px}.gallery-caption p:last-child{line-height:1.2}.gallery-actions{flex-direction:row}.gallery-actions .primary,.gallery-actions .outline{width:auto;padding:8px 10px;font-size:12px}.chapter[data-name=wishes] .chapter-copy h2{font-size:27px}.chapter[data-name=wishes] .chapter-copy .body-copy{line-height:1.25}.wish-message{height:66px;min-height:66px}.wish-message p{font-size:20px;line-height:1.1}.chapter-details{padding-bottom:4px}}

.finale-sparkles i:nth-child(even){left:calc(100% + 10px)}

@media(max-width:600px),(max-width:900px) and (orientation:portrait){.chapter[data-name=wishes] .chapter-copy h2{margin-bottom:4px}.chapter[data-name=wishes] .chapter-copy .eyebrow{margin-bottom:0}}

@media(max-height:500px) and (orientation:landscape){.birthday-ending h2{font-size:26px}.birthday-ending h2 em{font-size:40px}.birthday-ending .finale-stars{height:16px;line-height:1}.birthday-ending .signoff{line-height:1.2}.ending-actions button{line-height:1.2}}

button{-webkit-appearance:none;appearance:none}.is-hidden .chapter.active,.is-hidden .hook-line{animation:none!important;opacity:1;transform:none}

.hook,.hook-line{animation:none!important;opacity:1;transform:none}.chapter.settled{animation:none;opacity:1;transform:none}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){.chapter[data-name=wishes] .chapter-copy h2{margin-top:0}.chapter[data-name=wishes] .chapter-details{padding-top:0}}

@media(max-width:359px) and (min-height:501px){.chapter[data-name=wishes] .chapter-details>.primary{height:44px;min-height:44px;margin-top:4px}}

@media(max-width:600px),(max-width:900px) and (orientation:portrait){.wish-released .chapter[data-name=sky] .scene-slot{opacity:.45;mask-image:linear-gradient(transparent 0 68%,#000 88%)}}

@media(max-width:359px) and (min-height:501px){.chapter[data-name=wishes]{row-gap:0}}
@media(max-width:600px),(max-width:900px) and (orientation:portrait){.wish-released .chapter[data-name=sky]{grid-template-rows:auto minmax(0,1fr)}
.wish-released .chapter[data-name=sky] .birthday-ending{grid-area:1/1}
.wish-released .chapter[data-name=sky] .scene-slot{grid-area:2/1;height:100%;min-height:0;opacity:1;mask-image:linear-gradient(transparent 0,#000 24%);-webkit-mask-image:linear-gradient(transparent 0,#000 24%)}
}
#giftRedeem .line-icon{vertical-align:-4px}
