.birthday{position:relative;overflow:hidden}.hero-orbit{position:absolute;color:#b04770;opacity:.5;pointer-events:none;animation:float-orbit 5s ease-in-out infinite}.orbit-one{left:12%;top:18%;font-size:2rem}.orbit-two{right:13%;top:40%;font-size:2.7rem;animation-delay:-2.3s}.journey-nav{position:fixed;right:18px;top:50%;transform:translateY(-50%);z-index:10;display:grid;gap:13px}.journey-nav a{position:relative;width:10px;height:10px;border-radius:50%;border:1px solid #a43f65;background:#fff8fa;box-shadow:0 2px 8px #78394e20}.journey-nav a::after{content:'';position:absolute;inset:2px;border-radius:inherit;background:#a43f65;transform:scale(0);transition:transform .25s}.journey-nav a.active::after,.journey-nav a:hover::after{transform:scale(1)}.journey-nav span{position:absolute;right:18px;top:50%;transform:translateY(-50%) translateX(8px);opacity:0;pointer-events:none;background:#6c3048;color:white;border-radius:20px;padding:4px 10px;font-size:.7rem;white-space:nowrap;transition:.2s}.journey-nav a:hover span,.journey-nav a:focus-visible span{opacity:1;transform:translateY(-50%) translateX(0)}.reveal-section{opacity:0;transform:translateY(38px);transition:opacity .8s ease,transform .8s ease}.reveal-section.is-visible{opacity:1;transform:none}.candles-section{text-align:center;border-top:1px solid var(--line);max-width:none;background:radial-gradient(circle at 50% 50%,#fff7fb 0,transparent 48%)}.candles-section h2{margin:22px 0 14px}.candle-instruction{color:var(--muted)}.cake-scene{margin:36px auto 18px;width:min(100%,430px);padding:34px;border-radius:36px;border:1px solid #e0b7c8;background:#fff9fc99;box-shadow:0 18px 60px #71324b10}.candle-row{display:flex;justify-content:center;gap:17px;margin-bottom:-16px;position:relative;z-index:2}.candle{border:0;background:transparent;width:35px;padding:0;display:grid;place-items:center;gap:0}.candle:hover{transform:translateY(-5px)}.flame{display:block;color:#d45e84;font-size:1.55rem;text-shadow:0 0 12px #e76b96;animation:flicker .7s ease-in-out infinite alternate}.stick{font-size:2.8rem;line-height:.75;color:#b34b70}.candle[aria-pressed=true] .flame{opacity:0;transform:translateY(-12px) scale(.2)}.candle[aria-pressed=true] .stick{color:#9c8090}.cake-emoji{font-size:7.5rem;line-height:1.1;filter:drop-shadow(0 12px 18px #74354d20)}.wish-counter{font-size:.78rem;letter-spacing:.12em;color:var(--muted);margin-top:12px}.candle-result{min-height:35px;font-family:var(--serif);font-size:1.45rem}.little-things{border-top:1px solid var(--line)}.little-things .section-intro{text-align:center;max-width:600px;margin:0 auto 44px}.little-things .section-intro h2{margin:20px 0}.flip-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.flip-card{height:310px;padding:0;border:0;background:transparent;perspective:1000px}.flip-card:hover{transform:translateY(-5px)}.flip-inner{position:relative;display:block;width:100%;height:100%;transition:transform .7s cubic-bezier(.2,.75,.2,1);transform-style:preserve-3d}.flip-card[aria-pressed=true] .flip-inner{transform:rotateY(180deg)}.flip-front,.flip-back{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:28px;border:1px solid #dfb7c8;border-radius:160px 160px 20px 20px;backface-visibility:hidden}.flip-front{background:linear-gradient(160deg,#fffafd,#f3cedd)}.flip-front b{font-family:var(--serif);font-size:4.2rem;font-weight:400;color:#b04770}.flip-front>span{font-family:var(--serif);font-size:1.55rem}.flip-front i{font-size:.72rem;color:var(--muted);font-style:normal}.flip-back{transform:rotateY(180deg);background:#8f3859;color:white;border-color:#8f3859;border-radius:20px 20px 160px 160px}.flip-back b{font-size:1.8rem}.flip-back strong{font-family:var(--serif);font-size:2.2rem;font-weight:500}.flip-back>span{font-size:.9rem;line-height:1.8}.card-progress{text-align:center;margin-top:24px;color:var(--muted);font-size:.85rem}.letter-gate{display:grid;place-items:center;min-height:330px}.envelope-button{border:0;background:transparent;display:grid;justify-items:center;gap:6px}.envelope-button:hover{transform:scale(1.05) rotate(-2deg)}.envelope-icon{font-size:8rem;line-height:1.1;filter:drop-shadow(0 14px 18px #73334c2b);animation:letter-breathe 2.2s ease-in-out infinite}.envelope-button strong{font-family:var(--serif);font-size:1.8rem;font-weight:500}.envelope-button small{font-size:.78rem;color:var(--muted)}.letter.letter-open{display:block!important;animation:letter-open .9s cubic-bezier(.2,.8,.2,1) both}.spark{position:fixed;pointer-events:none;z-index:40;color:#b03b67;animation:spark-pop .75s ease-out forwards}.flower.picked span{animation:flower-pop .55s ease}.flower-message{transition:transform .25s,background .25s}.flower-message.message-pop{transform:scale(1.025);background:#fff9fc99}.completion-toast{position:fixed;left:50%;bottom:28px;z-index:50;transform:translate(-50%,30px);opacity:0;background:#6d2f48;color:white;border-radius:100px;padding:12px 20px;font-size:.86rem;box-shadow:0 12px 32px #4a203044;transition:.35s;pointer-events:none}.completion-toast.show{transform:translate(-50%,0);opacity:1}@keyframes float-orbit{50%{transform:translateY(-14px) rotate(18deg)}}@keyframes flicker{to{transform:translateY(-3px) scale(.88);opacity:.72}}@keyframes letter-breathe{50%{transform:translateY(-8px) rotate(2deg)}}@keyframes letter-open{from{opacity:0;transform:translateY(55px) scale(.9) rotate(-3deg)}to{opacity:1;transform:rotate(-.6deg)}}@keyframes spark-pop{to{transform:translateY(-28px) scale(0) rotate(100deg);opacity:0}}@keyframes flower-pop{50%{transform:scale(1.25) rotate(-8deg)}}
@media(max-width:760px){.journey-nav{right:9px;gap:11px}.journey-nav span{display:none}.journey-nav a{width:8px;height:8px}.candles-section{padding-top:76px}.cake-scene{padding:27px 18px}.cake-emoji{font-size:6.5rem}.flip-grid{grid-template-columns:1fr;max-width:330px;margin:auto}.flip-card{height:270px}.little-things .section-intro{margin-bottom:30px}.envelope-icon{font-size:6.8rem}.letter-gate{min-height:280px}}
@media(prefers-reduced-motion:reduce){.reveal-section{opacity:1;transform:none}.hero-orbit,.flame,.envelope-icon{animation:none}.flip-inner{transition:none}}
.lock-mascot{display:block;width:148px;height:148px;object-fit:contain;margin:6px auto -2px;filter:drop-shadow(0 12px 20px #80344e1f);animation:mascot-bob 3s ease-in-out infinite}.mascot-gift-link{border:0;background:transparent;text-decoration:underline;text-underline-offset:5px;font-size:.82rem;color:var(--muted);padding:9px 14px;margin-top:6px}.mascot-gift-link span{font-size:1.25rem;margin-right:5px}.mascot-dialog{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:#5f29475c;backdrop-filter:blur(12px);animation:dialog-fade .3s ease}.mascot-dialog-card{position:relative;width:min(100%,430px);max-height:calc(100svh - 40px);overflow:auto;text-align:center;padding:30px 34px 34px;border:1px solid white;border-radius:32px;background:linear-gradient(160deg,#fffafd,#f5d5e2);box-shadow:0 30px 90px #3e152c4d}.mascot-dialog-card>img{display:block;width:min(78%,290px);margin:6px auto -5px;filter:drop-shadow(0 13px 18px #79324c25)}.mascot-dialog-card h3{font-size:2.7rem;margin:5px 0 13px}.mascot-dialog-card>p:not(.eyebrow){font-size:.93rem;color:var(--muted);line-height:1.75;margin-bottom:23px}.dialog-close{position:absolute;right:18px;top:14px;width:40px;height:40px;border:0;border-radius:50%;background:#fff8fb99;font-size:1.6rem}.mascot-guide{position:fixed;left:18px;bottom:17px;z-index:8;width:62px;height:62px;padding:3px;border:1px solid var(--line);border-radius:50%;background:#fff8fbeb;box-shadow:0 8px 28px #6b28471f}.mascot-guide img{width:100%;height:100%;object-fit:contain}.mascot-guide>span{position:absolute;left:70px;bottom:6px;width:max-content;max-width:220px;background:#fffafd;color:var(--ink);border:1px solid var(--line);border-radius:18px 18px 18px 4px;padding:9px 13px;font-size:.75rem;box-shadow:0 7px 22px #5e244015;opacity:0;transform:translateX(-8px);pointer-events:none;transition:.25s}.mascot-guide:hover>span,.mascot-guide:focus-visible>span,.mascot-guide.talking>span{opacity:1;transform:none}.footer-mascot{display:block;width:170px;height:170px;object-fit:contain;margin:0 auto -15px;filter:drop-shadow(0 12px 18px #6f29451e)}@keyframes mascot-bob{50%{transform:translateY(-7px) rotate(1.5deg)}}@keyframes dialog-fade{from{opacity:0}to{opacity:1}}
@media(max-width:760px){.lock-mascot{width:125px;height:125px}.mascot-dialog-card{padding:27px 23px 30px}.mascot-dialog-card>img{width:min(82%,250px)}.mascot-dialog-card h3{font-size:2.35rem}.mascot-guide{left:12px;bottom:14px;width:52px;height:52px}.mascot-guide>span{left:60px;max-width:190px}.footer-mascot{width:145px;height:145px}}
@media(prefers-reduced-motion:reduce){.lock-mascot{animation:none}}
.section-mascot{border:0;background:transparent;padding:0;display:block;line-height:0;filter:drop-shadow(0 12px 18px #702b471c);z-index:2}.section-mascot img{display:block;width:100%;height:100%;object-fit:contain}.section-mascot:hover{transform:translateY(-5px) rotate(-2deg)}.section-mascot.mascot-pop{animation:mascot-pop .6s ease}.garden-mascot{position:absolute;width:126px;height:126px;left:-62px;bottom:-32px}.letter-section{position:relative}.letter-mascot{width:190px;height:190px;margin:10px auto -42px}.music-mascot{width:210px;height:210px;margin:25px auto -30px}@keyframes mascot-pop{50%{transform:translateY(-14px) scale(1.08) rotate(3deg)}}
@media(max-width:760px){.garden-mascot{width:92px;height:92px;left:-16px;bottom:-24px}.letter-mascot{width:155px;height:155px;margin:5px auto -28px}.music-mascot{width:175px;height:175px;margin:20px auto -24px}}
@media(prefers-reduced-motion:reduce){.section-mascot.mascot-pop{animation:none}}
.moments-section{display:grid;grid-template-columns:.9fr 1.1fr;align-items:center;gap:76px;border-top:1px solid var(--line);overflow:visible}.photo-stage{position:relative;display:grid;place-items:center;padding:30px 25px}.photo-card{position:relative;width:min(100%,390px);padding:16px 16px 25px;border:1px solid #e2bdcc;border-radius:10px;background:#fffafc;box-shadow:0 24px 70px #6f2e491f;transform:rotate(2deg);text-align:left}.photo-card:hover{transform:rotate(0) translateY(-7px);box-shadow:0 30px 80px #6f2e4929}.photo-card img{display:block;width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:5px;filter:saturate(.9) contrast(1.02)}.photo-tape{position:absolute;z-index:2;left:50%;top:-14px;width:105px;height:31px;background:#f2bdcfb8;transform:translateX(-50%) rotate(-3deg);box-shadow:0 2px 5px #75334a17}.photo-caption{display:block;margin:17px 7px 3px;font-family:var(--serif);font-size:1.35rem;font-style:italic;color:var(--ink)}.photo-hint{display:block;margin:4px 7px 0;font-size:.7rem;letter-spacing:.08em;color:var(--muted)}.photo-mascot{position:absolute;width:126px;height:126px;right:-18px;bottom:-14px;transform:rotate(5deg)}.photo-dialog{position:fixed;inset:0;z-index:110;display:grid;place-items:center;padding:20px;background:#4c1d345f;backdrop-filter:blur(14px);animation:dialog-fade .25s ease}.photo-dialog-card{position:relative;width:min(100%,520px);max-height:calc(100svh - 34px);overflow:auto;padding:28px 28px 24px;border:1px solid #fff;border-radius:26px;background:#fff9fc;box-shadow:0 30px 100px #39112655;text-align:center}.photo-dialog-card>img{display:block;width:auto;max-width:100%;max-height:72svh;margin:16px auto;border-radius:12px;box-shadow:0 12px 35px #5e233d24}.photo-dialog-card>p:last-child{max-width:390px;margin:14px auto 0;color:var(--muted);font-size:.9rem}.photo-close{z-index:2;background:#fff}.spotify-music-card{padding:30px}.video-shell{position:relative;overflow:hidden;width:100%;aspect-ratio:16/9;margin:22px 0;border-radius:16px;background:#4b2535;box-shadow:0 13px 34px #57233a25}.video-shell iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.official-tracks{margin-top:14px}.official-tracks button{min-height:62px}.official-tracks button>span:nth-child(2){display:grid;gap:1px}.official-tracks strong{font-weight:600}.official-tracks small{font-size:.72rem;color:var(--muted)}.official-link{display:inline-block;margin-top:18px;font-size:.78rem;color:var(--accent);text-decoration:underline;text-underline-offset:4px}#music-status{min-height:25px;margin-top:12px;color:var(--muted)}
@media(max-width:760px){.moments-section{grid-template-columns:1fr;gap:26px;max-width:530px}.moments-section .section-intro{text-align:center}.photo-stage{padding:24px 12px}.photo-card{width:min(88vw,350px);padding:13px 13px 21px}.photo-mascot{width:96px;height:96px;right:-3px;bottom:-8px}.photo-dialog-card{padding:25px 16px 20px}.photo-dialog-card>img{max-height:68svh}.spotify-music-card{padding:24px 16px}.official-tracks button{padding:10px 8px}}
@media(prefers-reduced-motion:reduce){.photo-card{transform:none}}
.photo-dialog-card>img{max-height:60svh}
.spotify-shell{height:352px;aspect-ratio:auto;background:#2b1721}.spotify-shell iframe{height:352px}
html,body{overflow-x:hidden}
.hero-photo{position:absolute;right:clamp(24px,4vw,64px);top:27%;z-index:1;width:clamp(145px,16vw,205px);margin:0;padding:8px;border:1px solid #e2bdcc;border-radius:9px;background:#fffafd;box-shadow:0 20px 55px #67243f25;transform:rotate(3deg)}.hero-photo::before{content:'';position:absolute;left:50%;top:-12px;width:74px;height:25px;background:#f2bdcfb8;transform:translateX(-50%) rotate(-3deg)}.hero-photo img{display:block;width:100%;height:auto;border-radius:4px}.hero-photo:hover{transform:rotate(1deg) translateY(-6px)}
@media(max-width:760px){.hero-photo{position:relative;right:auto;top:auto;width:min(42vw,170px);margin:24px auto 8px;padding:6px;transform:rotate(2deg)}.hero-photo::before{width:60px;height:21px;top:-10px}}
.flip-back>span{max-width:230px}.cake-scene{position:relative}.candle-party{display:flex;align-items:center;justify-content:center;gap:8px;margin:8px auto -10px}.candle-party img{width:125px;height:125px;object-fit:contain;filter:drop-shadow(0 10px 15px #67243f22)}.candle-party span{font-size:2rem}.candle-party.show{animation:party-arrive .8s cubic-bezier(.2,.9,.2,1) both}.cake-scene.wish-complete{background:linear-gradient(145deg,#fff9fc,#f7cfdf);box-shadow:0 20px 80px #b2427040;animation:party-glow 1.2s ease}.wish-complete .cake-emoji{animation:cake-party .75s ease}.party-confetti{position:fixed;z-index:120;top:-24px;width:9px;height:15px;border-radius:2px;pointer-events:none;animation:party-fall 2.5s cubic-bezier(.2,.65,.4,1) forwards}@keyframes party-arrive{from{opacity:0;transform:translateY(28px) scale(.6)}70%{transform:translateY(-5px) scale(1.08)}to{opacity:1;transform:none}}@keyframes cake-party{50%{transform:scale(1.15) rotate(-5deg)}}@keyframes party-glow{50%{transform:scale(1.02)}}@keyframes party-fall{to{transform:translate3d(45px,110vh,0) rotate(720deg);opacity:.2}}
@media(max-width:760px){.flip-back{gap:12px;padding:24px 28px 48px}.flip-back strong{font-size:1.9rem}.flip-back>span{max-width:220px;font-size:.82rem;line-height:1.5}.candle-party img{width:105px;height:105px}.candle-party span{font-size:1.6rem}}
