:root{--brand-wine: #8e354c;--brand-paper: #faf6f3;--font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}:root{--bg: #140815;--card: rgba(255, 255, 255, .11);--card-border: rgba(255, 255, 255, .18);--text: #fff7fb;--muted: rgba(255, 247, 251, .72);--pink: #ff8ab3;--deep-pink: #ff5c9b;--gold: #ffd08a}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:radial-gradient(circle at top left,rgba(255,92,155,.45),transparent 35%),radial-gradient(circle at bottom right,rgba(255,208,138,.35),transparent 35%),linear-gradient(135deg,#140815,#2b1026 55%,#100611);overflow-x:hidden}button{border:none;cursor:pointer;font-family:inherit}.bg-glow{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 50% 20%,rgba(255,255,255,.08),transparent 30%),radial-gradient(circle at 20% 70%,rgba(255,138,179,.12),transparent 25%)}.floating-hearts{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.heart{position:absolute;bottom:-40px;color:#ffffff8c;animation:rise linear forwards}@keyframes rise{to{transform:translateY(-110vh) rotate(360deg);opacity:0}}.app{position:relative;width:min(960px,calc(100% - 32px));margin:0 auto;padding:42px 0}.card{border:1px solid var(--card-border);background:var(--card);border-radius:28px;box-shadow:0 22px 65px #00000038;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.hero{padding:44px 28px;text-align:center;margin-bottom:20px}.tag{margin:0 0 8px;color:var(--gold);font-size:13px;letter-spacing:2px;text-transform:uppercase}h1{margin:0;font-size:clamp(34px,7vw,64px);letter-spacing:-1px}.subtitle{max-width:680px;margin:16px auto 22px;color:var(--muted);font-size:18px;line-height:1.8}.route{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--gold);font-size:15px}.line{width:120px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.hint{margin:20px 0 0;color:var(--muted)}.player{position:relative;overflow:hidden;padding:30px;margin-bottom:20px;display:grid;grid-template-columns:210px 1fr;gap:26px;align-items:center}.cover{display:flex;justify-content:center}.disc{width:178px;height:178px;border-radius:50%;position:relative;background:radial-gradient(circle at center,#1b0914 0 12%,transparent 13%),radial-gradient(circle,rgba(255,255,255,.16) 0 24%,transparent 25%),conic-gradient(from 20deg,#ff8ab3,#ffd08a,#fff,#ff5c9b,#ff8ab3);box-shadow:0 0 48px #ff5c9b6b}.disc.playing{animation:spin 5s linear infinite}.disc-core{width:46px;height:46px;border-radius:50%;background:#fff7fb;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@keyframes spin{to{transform:rotate(360deg)}}.small{margin:0;font-size:13px;color:var(--gold)}h2{margin:8px 0 10px;font-size:28px}#trackDesc{min-height:52px;margin:0 0 18px;color:var(--muted);font-size:16px;line-height:1.8}.progress-wrap{grid-column:1 / -1;display:grid;grid-template-columns:50px 1fr 50px;gap:10px;align-items:center;color:var(--muted);font-size:13px}input[type=range]{width:100%;accent-color:var(--pink)}.controls{grid-column:1 / -1;display:flex;justify-content:center;gap:18px;margin-top:4px}.controls button{width:52px;height:52px;border-radius:999px;color:#fff;background:#ffffff29;font-size:20px}.controls .play{width:68px;height:68px;background:linear-gradient(135deg,var(--deep-pink),var(--gold));box-shadow:0 14px 34px #ff5c9b59}.playlist,.upload,.wish{padding:24px;margin-bottom:20px}.playlist{position:relative;overflow:hidden;min-height:360px}.renovation-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:grid;place-items:center;padding:24px;border-radius:inherit;background:linear-gradient(135deg,#3a2638,#2b1b2d);pointer-events:auto}.renovation-panel{width:min(300px,82%);padding:22px 20px 20px;border:1px solid rgba(255,255,255,.26);border-radius:24px;background:#fff7fb24;box-shadow:0 24px 55px #0000003d;text-align:center}.renovation-panel img{width:min(190px,100%);display:block;margin:0 auto 12px;filter:drop-shadow(0 18px 30px rgba(255,92,155,.28))}.renovation-panel p{margin:0;color:var(--gold);font-size:20px;font-weight:900;letter-spacing:1px;text-shadow:0 0 18px rgba(255,208,138,.32)}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}.section-title h3,.upload h3{margin:0;font-size:22px}.section-title button,.wish button{padding:10px 16px;border-radius:999px;color:#4a182e;background:var(--gold);font-size:14px;font-weight:700}.track{display:flex;gap:14px;align-items:center;padding:14px 12px;border-radius:18px;color:var(--muted)}.track.active{color:var(--text);background:#ffffff21}.track-index{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#ffffff24;color:var(--gold);font-size:13px}.track-main{flex:1}.track-title{margin:0;font-size:16px}.track-desc{margin:4px 0 0;font-size:13px}.upload p{margin:8px 0 16px;color:var(--muted);line-height:1.7}code{color:var(--gold)}.upload-row{display:grid;grid-template-columns:160px 1fr;gap:12px;align-items:center;padding:10px 0}.upload-row span{color:var(--gold);font-size:14px}.upload-row input{color:var(--muted)}.wish{text-align:center}.wish p{margin:0;color:var(--gold);font-size:13px}.wish h3{margin:10px 0 16px;font-size:24px;line-height:1.6}.surprise{margin-top:14px!important;min-height:24px;color:var(--text)!important;line-height:1.8}.modal{position:fixed;top:0;right:0;bottom:0;left:0;display:none;padding:18px;align-items:center;justify-content:center;background:#0a0308b8;z-index:10}.modal.show{display:flex}.modal-card{position:relative;width:min(680px,100%);max-height:86vh;overflow-y:auto;padding:34px;border-radius:28px;background:#fff7fb;color:#4a182e;box-shadow:0 20px 60px #00000059}.modal-card h2{margin-top:0}.modal-card p{line-height:1.9}.close{position:absolute;right:18px;top:14px;color:#4a182e;background:transparent;font-size:32px}.sign{font-weight:800}@media (max-width: 720px){.app{width:min(100% - 24px,960px);padding:24px 0}.player{grid-template-columns:1fr;text-align:center}.route{gap:8px}.line{width:76px}.upload-row{grid-template-columns:1fr}.section-title{align-items:flex-start;flex-direction:column}.renovation-overlay{padding:18px}.renovation-panel{width:min(260px,92%);padding:18px 16px 16px}.renovation-panel p{font-size:18px}}.photo-wall,.love-envelope{padding:24px;margin-bottom:20px}.photo-intro{margin:-4px 0 18px;color:var(--muted);line-height:1.7}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.photo-card{position:relative;overflow:hidden;min-height:220px;border-radius:24px;background:#ffffff21;border:1px solid var(--card-border);box-shadow:0 18px 38px #0000002e;cursor:pointer;transition:transform .25s ease,box-shadow .25s ease}.photo-card:hover{transform:translateY(-6px);box-shadow:0 26px 48px #ff5c9b33}.photo-card img{width:100%;height:220px;display:block;object-fit:cover}.photo-caption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 16px;background:linear-gradient(transparent,#140815e0)}.photo-caption h4{margin:0;font-size:17px}.photo-caption p{margin:5px 0 0;color:#fff7fbc7;font-size:13px;line-height:1.5}.photo-modal-card{width:min(760px,100%);padding:22px}.photo-modal-card img{width:100%;max-height:62vh;object-fit:contain;border-radius:22px;background:#2b1026}.photo-modal-card h2{margin:18px 0 8px}.photo-modal-card p{margin-bottom:0}.love-envelope{display:grid;grid-template-columns:260px 1fr;gap:22px;align-items:center}.envelope-left h3{margin:8px 0 10px;font-size:28px}.envelope-left p:not(.small){margin:0;color:var(--muted);line-height:1.8}.envelope-list{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.envelope-card{position:relative;min-height:168px;padding:22px 18px;overflow:hidden;border-radius:24px;background:linear-gradient(145deg,#ffd08afa,#ff8ab3f5);color:#4a182e;box-shadow:0 20px 48px #ff5c9b38;cursor:pointer;transition:transform .25s ease}.envelope-card:hover{transform:rotate(-1deg) translateY(-5px)}.envelope-card:before{content:"";position:absolute;left:-10%;right:-10%;bottom:-48px;height:116px;background:#ffffff47;clip-path:polygon(0 100%,50% 0,100% 100%)}.envelope-card:after{content:"♥";position:absolute;right:18px;bottom:16px;color:#4a182e59;font-size:30px}.envelope-card h4{position:relative;margin:0 0 8px;font-size:19px;z-index:1}.envelope-card p{position:relative;margin:0;color:#4a182eb8;font-size:13px;line-height:1.6;z-index:1}.letter-tag{margin:0 0 8px!important;color:#ff5c9b;font-size:13px;font-weight:800;letter-spacing:2px;text-transform:uppercase}.envelope-modal-card{background:radial-gradient(circle at top left,rgba(255,138,179,.22),transparent 35%),#fff7fb}#envelopeBody p{line-height:1.95;margin:12px 0}@media (max-width: 860px){.photo-grid{grid-template-columns:repeat(2,1fr)}.love-envelope,.envelope-list{grid-template-columns:1fr}}@media (max-width: 520px){.photo-grid{grid-template-columns:1fr}.photo-card,.photo-card img{min-height:240px;height:240px}}.wall-upload-panel{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:0 0 18px}.wall-upload-panel input{display:none}.wall-upload-btn,#clearLocalMediaBtn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 16px;border-radius:999px;color:#4a182e;background:var(--gold);font-size:14px;font-weight:800;cursor:pointer}#clearLocalMediaBtn{background:#ffffff29;color:var(--text)}.photo-card video{width:100%;height:220px;display:block;object-fit:cover}.video-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:radial-gradient(circle at center,transparent 40%,rgba(20,8,21,.18));pointer-events:none}.video-badge{position:absolute;top:12px;right:12px;z-index:3;padding:6px 10px;border-radius:999px;background:#1408159e;color:#fff7fb;font-size:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.photo-modal-media{width:100%;max-height:62vh;object-fit:contain;border-radius:22px;background:#2b1026}@media (max-width: 520px){.photo-card video{min-height:240px;height:240px}.wall-upload-panel{flex-direction:column;align-items:stretch}.wall-upload-btn,#clearLocalMediaBtn{width:100%}}body.locked{overflow:hidden}.touch-love-pop{position:fixed;z-index:9999;left:0;top:0;transform:translate(-50%,-50%);pointer-events:none;text-align:center;animation:touchLoveFloat 1.35s ease-out forwards}.touch-love-heart{font-size:72px;line-height:1;color:#ff8ab3;text-shadow:0 0 18px rgba(255,138,179,.75),0 0 38px rgba(255,92,155,.45)}.touch-love-text{margin-top:8px;padding:8px 14px;border-radius:999px;color:#4a182e;background:#fff7fbeb;font-size:16px;font-weight:800;white-space:nowrap;box-shadow:0 12px 32px #ff5c9b47}@keyframes touchLoveFloat{0%{opacity:0;transform:translate(-50%,-50%) scale(.45)}18%{opacity:1;transform:translate(-50%,-60%) scale(1.12)}to{opacity:0;transform:translate(-50%,-145%) scale(1.35)}}@media (max-width: 520px){.touch-love-heart{font-size:62px}.touch-love-text{font-size:14px}}.photo-intro,.wall-upload-panel,#photoTipBtn,.upload{display:none}.love-box-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10001;display:none;align-items:center;justify-content:center;padding:20px;background:#0a0308c2;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.love-box-modal.show{display:flex}.love-box-card{position:relative;width:min(560px,100%);max-height:88vh;overflow-y:auto;padding:34px 26px 28px;border:1px solid rgba(255,255,255,.24);border-radius:28px;background:radial-gradient(circle at top left,rgba(255,138,179,.3),transparent 36%),linear-gradient(135deg,#4a2f46,#281628);box-shadow:0 28px 80px #00000061;text-align:center}.love-box-close{position:absolute;top:12px;right:16px;z-index:2;color:#fff7fb;background:transparent;font-size:34px;line-height:1}.love-box-closed{display:grid;min-height:330px;place-items:center}.love-heart-box{position:relative;width:190px;height:170px;border:none;background:transparent;cursor:pointer;animation:loveHeartbeat 1.15s ease-in-out infinite;filter:drop-shadow(0 20px 40px rgba(255,92,155,.45))}.heart-lock{display:block;color:#ff6fa8;font-size:150px;line-height:1;text-shadow:0 0 18px rgba(255,138,179,.78),0 0 46px rgba(255,92,155,.42)}.lock-dot{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);display:grid;place-items:center;width:58px;height:58px;border-radius:999px;background:#fff7fbf0;font-size:28px;box-shadow:0 12px 28px #4a182e38}@keyframes loveHeartbeat{0%,to{transform:scale(1)}18%{transform:scale(1.12)}34%{transform:scale(.96)}52%{transform:scale(1.08)}70%{transform:scale(1)}}.love-box-closed h2{margin:18px 0 6px;color:#fff7fb;font-size:30px}.love-box-closed p,.love-box-opened p{margin:0;color:#fff7fbc2;line-height:1.7}.love-box-opened{display:none}.love-box-opened img{width:100%;max-height:440px;object-fit:cover;display:block;border-radius:22px;box-shadow:0 20px 48px #00000040}.love-box-opened p{margin-top:16px}.love-box-modal.opened .love-box-closed{display:none}.love-box-modal.opened .love-box-opened{display:block}@media (max-width: 560px){.love-box-card{padding:30px 18px 24px}.heart-lock{font-size:128px}.love-heart-box{width:164px;height:146px}}.floating-cake-button{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));z-index:80;width:66px;height:66px;display:grid;place-items:center;border-radius:999px;color:#4a182e;background:linear-gradient(135deg,#ff8ab3,#ffd08a);box-shadow:0 18px 38px #ff5c9b52,0 0 0 1px #ffffff38 inset;isolation:isolate}.floating-cake-icon{position:relative;z-index:1;font-size:34px;line-height:1;animation:floatingCakeBeat 1.45s ease-in-out infinite}.floating-cake-pulse{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:inherit;background:#ff8ab347;animation:floatingCakePulse 1.8s ease-out infinite;z-index:-1}@keyframes floatingCakeBeat{0%,to{transform:scale(1)}28%{transform:scale(1.12)}44%{transform:scale(.96)}62%{transform:scale(1.08)}}@keyframes floatingCakePulse{0%{opacity:.78;transform:scale(.82)}to{opacity:0;transform:scale(1.42)}}.birthday-cake-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10002;display:none;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at top left,rgba(255,92,155,.42),transparent 36%),radial-gradient(circle at bottom right,rgba(255,208,138,.28),transparent 34%),#0a0308db;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.birthday-cake-modal.show{display:flex}.birthday-cake-shell{position:relative;width:min(760px,100%);max-height:92vh;overflow-y:auto;padding:32px 26px 28px;border:1px solid rgba(255,255,255,.24);border-radius:30px;background:radial-gradient(circle at 50% 0%,rgba(255,247,251,.13),transparent 30%),linear-gradient(135deg,#4a2f46,#261426);box-shadow:0 30px 90px #00000075;text-align:center}.birthday-cake-close{position:absolute;top:14px;right:18px;z-index:2;width:42px;height:42px;border-radius:999px;color:#fff7fb;background:#ffffff1f;font-size:30px;line-height:1}.birthday-cake-kicker{margin:0 0 8px;color:var(--gold);font-size:13px;font-weight:800;letter-spacing:2px;text-transform:uppercase}.birthday-cake-shell h2{margin:0;font-size:clamp(28px,5vw,44px)}.birthday-cake-tip{margin:10px auto 18px;max-width:560px;color:#fff7fbc2;line-height:1.7}.birthday-cake-music{margin:8px 0 0;color:var(--gold);font-size:13px;font-weight:700}.birthday-cake-stage{position:relative;width:min(560px,100%);min-height:430px;display:grid;place-items:center;margin:0 auto;padding:32px 18px 22px;border:1px solid rgba(255,255,255,.14);border-radius:30px;background:radial-gradient(circle at 32% 22%,rgba(255,138,179,.22),transparent 34%),radial-gradient(circle at 72% 28%,rgba(255,208,138,.18),transparent 30%),#ffffff14;overflow:hidden}.love-cake{position:relative;width:min(390px,80vw);height:330px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;filter:drop-shadow(0 28px 48px rgba(255,92,155,.25));animation:loveCakeFloat 2.8s ease-in-out infinite}@keyframes loveCakeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.love-cake-candles{position:absolute;top:0;left:50%;z-index:5;display:flex;gap:22px;align-items:flex-end;transform:translate(-50%)}.love-candle{position:relative;width:18px;height:78px;border-radius:999px 999px 5px 5px;background:repeating-linear-gradient(135deg,#fff7fb 0,#fff7fb 9px,#ff8ab3 9px,#ff8ab3 15px);box-shadow:inset 0 -8px #4a182e14}.number-candle{width:50px;height:82px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(135deg,#fff7fbfa,#ffd08af0);border:2px solid rgba(255,138,179,.86);box-shadow:0 12px 28px #ff5c9b38,inset 0 -10px #ff8ab32e}.candle-number{color:#ff5c9b;font-size:48px;font-weight:900;line-height:1;text-shadow:0 3px 0 rgba(74,24,46,.1)}.cake-age-label{margin:0 0 8px -8px;color:var(--gold);font-size:30px;font-weight:900;text-shadow:0 0 18px rgba(255,208,138,.45)}.love-flame{position:absolute;left:50%;top:-30px;width:24px;height:34px;border-radius:50% 50% 46% 46%;background:radial-gradient(circle at 50% 70%,#fff7c2 0,#fff7c2 24%,#ffd08a 36%,#ff8a55 76%);box-shadow:0 0 16px #ffd08ae6,0 0 36px #ff5c9b57;transform:translate(-50%) rotate(8deg);transform-origin:50% 100%;animation:loveFlameFlicker .82s ease-in-out infinite alternate}.love-smoke{position:absolute;left:50%;top:-26px;width:10px;height:10px;border-radius:999px;background:#fff7fbb8;opacity:0;transform:translate(-50%)}@keyframes loveFlameFlicker{0%{transform:translate(-50%) rotate(-7deg) scale(.92)}to{transform:translate(-50%) rotate(8deg) scale(1.08)}}.love-cake-layer{position:relative;display:block;overflow:hidden;border-radius:30px 30px 18px 18px;box-shadow:inset 0 10px #ffffff38,inset 0 -12px #4a182e14}.love-cake-layer:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 8%,rgba(255,255,255,.28) 36%,transparent 64%);transform:translate(-110%);animation:cakeLayerShimmer 3s ease-in-out infinite}.love-cake-layer-middle:after{animation-delay:.45s}.love-cake-layer-bottom:after{animation-delay:.9s}@keyframes cakeLayerShimmer{0%,42%{transform:translate(-110%)}72%,to{transform:translate(110%)}}.love-cake-layer-top{width:66%;height:78px;background:linear-gradient(135deg,#fff7fb,#ffd8e8 54%,#ff8ab3);z-index:3}.love-cake-layer-middle{width:84%;height:86px;margin-top:-8px;background:linear-gradient(135deg,#ff6fa8,#ff9abf 55%,#ffd08a);z-index:2}.love-cake-layer-bottom{width:100%;height:94px;margin-top:-8px;background:linear-gradient(135deg,#ffd08a,#ff9abf 50%,#ff6fa8);z-index:1}.love-cake-plate{display:block;width:112%;height:24px;margin-top:-8px;border-radius:999px;background:#fff7fbe6;box-shadow:0 12px 26px #0003}.cake-heart{position:absolute;color:#fff7fbdb;font-size:20px;text-shadow:0 0 16px rgba(255,255,255,.28);z-index:2;animation:cakeHeartBeat 1.7s ease-in-out infinite}@keyframes cakeHeartBeat{0%,to{transform:scale(1)}45%{transform:scale(1.18)}}.cake-heart-one{left:18%;top:28%}.cake-heart-two{right:18%;top:36%}.cake-heart-three{left:24%;top:34%}.cake-heart-four{right:25%;top:30%}.cake-heart-five{left:18%;top:38%}.cake-heart-six{right:18%;top:34%}.cake-shine{position:absolute;color:var(--gold);text-shadow:0 0 18px rgba(255,208,138,.5);animation:cakeShineTwinkle 1.6s ease-in-out infinite alternate}.cake-shine-one{left:16%;top:18%;font-size:36px}.cake-shine-two{right:16%;top:24%;color:var(--pink);font-size:30px;animation-delay:.35s}.cake-shine-three{right:22%;bottom:20%;font-size:30px;animation-delay:.65s}@keyframes cakeShineTwinkle{0%{opacity:.46;transform:scale(.86) rotate(-8deg)}to{opacity:1;transform:scale(1.08) rotate(8deg)}}.birthday-cake-stage.blown .love-flame{opacity:0;transform:translate(-50%) translateY(10px) scale(.2);animation:none;transition:opacity .28s ease,transform .28s ease}.birthday-cake-stage.blown .love-smoke{animation:loveSmokeRise 1.8s ease-out forwards}.birthday-cake-stage.blown .love-candle:nth-child(2) .love-smoke{animation-delay:.12s}.birthday-cake-stage.blown .love-candle:nth-child(3) .love-smoke{animation-delay:.24s}@keyframes loveSmokeRise{0%{opacity:0;transform:translate(-50%,16px) scale(.6)}28%{opacity:.72}to{opacity:0;transform:translate(-50%,-72px) scale(2.8)}}.birthday-cake-progress{display:grid;grid-template-columns:58px 1fr;gap:12px;align-items:center;max-width:430px;margin:18px auto 0;color:var(--gold);font-size:14px;font-weight:800}.birthday-cake-progress-bar{height:10px;overflow:hidden;border-radius:999px;background:#ffffff29}#birthdayCakeProgressFill{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ff8ab3,#ffd08a);transition:width .2s ease}.birthday-cake-wish{min-height:28px;margin:16px auto 0;max-width:560px;color:#fff7fbd6;line-height:1.8}.birthday-cake-carousel{display:none;margin:20px auto 0;max-width:560px;padding:16px;border:1px solid rgba(255,255,255,.18);border-radius:24px;background:#ffffff1a;box-shadow:0 18px 44px #00000038}.birthday-cake-carousel.show{display:block;animation:carouselReveal .45s ease-out both}@keyframes carouselReveal{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.carousel-title{margin:0 0 12px;color:var(--gold);font-size:15px;font-weight:900;letter-spacing:1px}.carousel-frame{position:relative;overflow:hidden;aspect-ratio:16 / 10;border-radius:20px;background:#14081575}.carousel-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.08) translate(16px);transition:opacity .7s ease,transform .9s ease}.carousel-photo.active{opacity:1;transform:scale(1) translate(0)}.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:12px}.carousel-dot{width:8px;height:8px;border-radius:999px;background:#fff7fb57;transition:width .22s ease,background .22s ease}.carousel-dot.active{width:24px;background:linear-gradient(90deg,#ff8ab3,#ffd08a)}@media (max-width: 560px){.floating-cake-button{width:58px;height:58px}.floating-cake-icon{font-size:30px}.birthday-cake-shell{padding:30px 16px 22px}.birthday-cake-stage{min-height:360px;padding-inline:10px}.love-cake{animation:loveCakeFloatMobile 2.8s ease-in-out infinite}}@keyframes loveCakeFloatMobile{0%,to{transform:translateY(0) scale(.82)}50%{transform:translateY(-10px) scale(.82)}}.final-postcard{position:relative;overflow:hidden;padding:30px 24px;margin-bottom:20px;text-align:center}.final-postcard:before{content:"";position:absolute;top:18px;right:18px;bottom:18px;left:18px;border:1px dashed rgba(255,208,138,.38);border-radius:22px;pointer-events:none}.final-postcard h3{position:relative;margin:8px 0 10px;font-size:28px}.final-postcard p{position:relative;color:var(--muted);line-height:1.8}.final-postcard button{position:relative;margin-top:8px;padding:12px 20px;border-radius:999px;color:#4a182e;background:linear-gradient(135deg,var(--gold),var(--pink));font-size:15px;font-weight:800;box-shadow:0 14px 34px #ff5c9b3d}.final-postcard-modal-card{background:radial-gradient(circle at top left,rgba(255,208,138,.34),transparent 34%),linear-gradient(135deg,#fff7fb,#ffe4ef);border:8px solid rgba(255,208,138,.48)}.final-postcard-body{margin-top:16px;padding:20px;border-radius:20px;background:#ffffff9e}.final-postcard-body p{margin:0 0 14px;color:#4a182e;font-size:17px;line-height:2}.final-postcard-body p:last-child{margin-bottom:0;font-weight:900}.birthday-entrance{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;overflow:auto;overflow-x:hidden;color:#fff7fb;background:radial-gradient(circle at 20% 15%,#ff8ab359,transparent 28%),radial-gradient(circle at 80% 20%,#ffd28a40,transparent 28%),linear-gradient(135deg,#1a0715,#3a0d25 45%,#170511);transition:opacity .35s ease}.birthday-entrance[hidden],.birthday-entrance [hidden]{display:none!important}.birthday-entrance.is-leaving{opacity:0;pointer-events:none}.birthday-entrance *{box-sizing:border-box}body.locked>.app,body.locked>.birthday-navigation,body.locked>.floating-cake-button{visibility:hidden}.entrance-scene{position:relative;display:grid;place-items:center;align-content:center;min-height:100vh;padding:28px;text-align:center}.entrance-stars,.entrance-stars:before,.entrance-stars:after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background-image:radial-gradient(circle,rgba(255,255,255,.9) 0 1px,transparent 1.6px),radial-gradient(circle,rgba(255,210,138,.8) 0 1px,transparent 1.8px);background-size:90px 90px,140px 140px;background-position:0 0,40px 50px;animation:entranceTwinkle 5s ease-in-out infinite alternate;pointer-events:none}.entrance-stars:before{opacity:.45;transform:scale(1.2);animation-duration:7s}.entrance-stars:after{opacity:.35;transform:scale(.8);animation-duration:4s}@keyframes entranceTwinkle{0%{opacity:.35}to{opacity:.85}}.entrance-intro{position:relative;z-index:2;margin-bottom:24px}.entrance-tag{margin:0 0 10px;color:var(--gold);letter-spacing:.24em;font-size:13px;font-weight:800}.entrance-intro h1{margin:0;font-size:clamp(42px,9vw,88px);line-height:1;text-shadow:0 12px 35px rgba(0,0,0,.35)}.entrance-subtitle{margin:16px 0 0;color:#fff7fbdb;font-size:clamp(16px,3.6vw,22px)}.entrance-door-wrap{position:relative;z-index:2;width:min(340px,72vw);height:min(420px,88vw);perspective:1100px}.entrance-glow{position:absolute;top:36px;right:18px;bottom:0;left:18px;border-radius:48% 48% 20px 20px;background:radial-gradient(circle at center,rgba(255,210,138,.75),rgba(255,79,134,.35),transparent 65%);filter:blur(20px);opacity:.75;animation:entranceBreathe 2.8s ease-in-out infinite}@keyframes entranceBreathe{0%,to{transform:scale(.96);opacity:.55}50%{transform:scale(1.04);opacity:.95}}.entrance-door{position:relative;width:100%;height:100%;border:0;background:transparent;cursor:pointer;padding:0;transform-style:preserve-3d}.entrance-door-left,.entrance-door-right{position:absolute;top:0;width:50%;height:100%;background:linear-gradient(90deg,rgba(255,255,255,.14),transparent 22%),linear-gradient(160deg,#ff7aaa,#bf285e 48%,#6b1438);border:2px solid rgba(255,255,255,.18);box-shadow:inset 0 0 28px #ffffff29,0 25px 70px #00000061;transition:transform 1.2s cubic-bezier(.22,1,.36,1),filter 1.2s}.entrance-door-left{left:0;border-radius:180px 0 0 18px;transform-origin:left center}.entrance-door-right{right:0;border-radius:0 180px 18px 0;transform-origin:right center}.entrance-door-left:before,.entrance-door-right:before{content:"";position:absolute;top:28px;right:18px;bottom:28px;left:18px;border:1px solid rgba(255,255,255,.22)}.entrance-door-left:before{border-radius:120px 8px 8px}.entrance-door-right:before{border-radius:8px 120px 8px 8px}.entrance-heart-mark{position:absolute;top:45%;right:-21px;z-index:3;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(135deg,#ff4f86,var(--gold));box-shadow:0 10px 30px #ff4f868c;font-size:22px}.entrance-door-handle{position:absolute;top:48%;left:26px;width:16px;height:16px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 6px #ffd28a2e,0 0 24px #ffd28abf}.entrance-door.open .entrance-door-left{transform:rotateY(-108deg);filter:brightness(1.15)}.entrance-door.open .entrance-door-right{transform:rotateY(108deg);filter:brightness(1.15)}.entrance-hint{position:relative;z-index:2;margin:28px 0 0;color:#fff7fbbf;font-size:15px}.entrance-loading{position:fixed;left:50%;bottom:42px;z-index:5;transform:translate(-50%) translateY(18px);opacity:0;padding:12px 18px;border-radius:999px;color:#4a182e;background:#fff7fbeb;font-weight:800;transition:.45s ease}.entrance-loading.show{opacity:1;transform:translate(-50%) translateY(0)}.entrance-float-heart{position:fixed;z-index:4;pointer-events:none;color:#ffd28aeb;animation:entranceFloatUp 1.8s ease-out forwards;text-shadow:0 0 18px rgba(255,138,179,.9)}@keyframes entranceFloatUp{0%{transform:translateY(0) scale(.8);opacity:0}20%{opacity:1}to{transform:translateY(-120px) scale(1.45);opacity:0}}@media (max-width: 520px){.entrance-door-wrap{width:270px;height:350px}.entrance-subtitle{max-width:320px}}.entrance-scene{min-height:100%;min-height:100dvh;overflow:hidden;padding:30px 20px}.entrance-intro>p:last-child{margin:16px 0 0;color:#fff7fbdb;font-size:clamp(15px,3vw,20px);line-height:1.7}.entrance-intro h1{font-size:clamp(38px,7vw,70px);line-height:1.2}.entrance-door-wrap{width:min(290px,68vw);height:min(355px,83vw)}.entrance-door{display:block;box-shadow:none;border-radius:0}.entrance-door:focus-visible{outline:3px solid #ffd28a;outline-offset:8px;border-radius:140px 140px 12px 12px}.entrance-loading{position:relative;left:auto;bottom:auto;transform:none;opacity:1;margin:16px 0 0;font-size:14px}.entrance-hint{font-size:14px;line-height:1.7;margin-top:25px}.birthday-navigation{position:relative;z-index:2;width:min(960px,calc(100% - 32px));margin:20px auto 0;display:flex;justify-content:space-between;gap:16px}.birthday-navigation a,.birthday-navigation button{font-size:14px;line-height:1.5;color:#fff7fbcc;text-decoration:none;background:transparent;padding:8px 0}.birthday-navigation a:focus-visible,.birthday-navigation button:focus-visible{outline:2px solid #ffd28a;outline-offset:5px}@media (max-height: 700px){.entrance-scene{padding:20px}.entrance-intro{margin-bottom:18px}.entrance-intro h1{font-size:40px}.entrance-door-wrap{width:225px;height:275px}.entrance-hint{margin-top:18px}}@media (prefers-reduced-motion: reduce){.birthday-entrance,.birthday-entrance *,.birthday-entrance *:before,.birthday-entrance *:after{animation:none!important;transition:none!important}.entrance-float-heart{display:none}.birthday-entrance .entrance-stars{opacity:.5}}
