.music-toggle{position:fixed;z-index:1200;left:16px;bottom:18px;padding:8px 11px;border:1px solid var(--line);border-radius:18px;background:var(--paper);font-size:11px}
#desktop .desk-cake{height:auto}
.desk-cake .cake-icing{fill:var(--paper)}.desk-cake .cake-color{fill:var(--pink)}.desk-cake .cake-light{fill:color-mix(in srgb,var(--pink) 42%,var(--paper))}
.desk-cake .cake-dark{stroke:var(--muted)}.desk-cake .cake-line{stroke:var(--ink)}
.memory-map{position:relative;height:clamp(180px,27vh,270px);overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--paper);margin:16px 0}
.memory-map>svg,.map-pins{position:absolute;inset:0;width:100%;height:100%}
.map-pin{position:absolute;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50% 50% 50% 12%;border:1px solid var(--muted);background:var(--paper);font:italic 15px Georgia;box-shadow:0 2px 4px #0001}
.map-pin[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.memory-detail{border-left:2px solid var(--pink);padding:4px 14px;margin-bottom:12px}
.memory-detail h3{margin:3px 0 8px;overflow-wrap:anywhere}.memory-detail>p{margin:0 0 12px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}
.memory-detail summary{cursor:pointer;color:var(--muted);font-size:12px}
.photo p{white-space:pre-wrap;overflow-wrap:anywhere}
.gift-loading{min-height:100dvh;display:grid;place-items:center;padding:24px;text-align:center}
#gift-share p{line-height:1.8}#gift-share input{width:100%;font-size:12px}#gift-share .gift-status{min-height:1.8em}
#birthday-finale{min-height:100dvh;display:grid;place-content:center;justify-items:center;padding:58px 20px 35px;text-align:center;position:relative}
.final-back{position:absolute;left:18px;top:18px}
.final-frame{position:relative;width:min(670px,calc(100vw - 42px));padding:24px 24px 18px;background:var(--paper);border:1px solid var(--line);box-shadow:9px 9px var(--pink)}
.final-frame:before{content:'';position:absolute;inset:8px;border:1px dashed var(--line);pointer-events:none}
.final-frame h1{font:400 clamp(26px,4vw,50px)/1.3 SimSun,serif;margin:10px 0;overflow-wrap:anywhere}.final-frame h1:focus{outline:none}
.final-art{display:flex;align-items:end;justify-content:center;height:clamp(135px,34vh,310px);margin:18px auto;width:min(96%,530px)}
.final-art .rabbit-dress{height:100%;width:57%}.final-art img{display:block;width:100%;height:100%;object-fit:contain}
.final-art .desk-cake{width:45%;height:auto;margin-left:-8%;position:relative;z-index:1}
.final-stamp{display:inline-block;color:var(--muted);font:30px Georgia}
.final-playing .rabbit-dress{animation:photo-rabbit .8s cubic-bezier(.22,1,.36,1) both}
.final-playing .desk-cake{animation:photo-cake .65s .3s cubic-bezier(.22,1,.36,1) both}
.final-playing .final-stamp{animation:photo-stamp .45s .85s ease-out both}
@keyframes photo-rabbit{from{opacity:0;transform:translateX(-18px) rotate(-5deg)}}
@keyframes photo-cake{from{opacity:0;transform:translateY(16px)}}
@keyframes photo-stamp{from{opacity:0;transform:scale(1.35)}}
@media(max-width:650px){.music-toggle{left:6px;bottom:3px;padding:3px 6px;font-size:9px}header>div{gap:4px}.share-open{padding-inline:5px}.dock-hint{padding-left:48px}.final-frame>p{line-height:1.8}}
.map-add{margin:0 0 14px;font-size:12px}
@media(max-width:650px){.map-pin{width:32px;height:32px;font-size:12px}}
