
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
html,body{height:100%;background:#dcefd4;overflow:hidden;touch-action:none;font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",sans-serif}
#app{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);overflow:hidden;background:#eaf6e3;box-shadow:0 0 3em #0002}
#world{position:absolute;inset:0}
#world.shake{animation:shake .09s infinite}
@keyframes shake{0%{transform:translate(0,0)}25%{transform:translate(-1.5%,1%)}50%{transform:translate(1.5%,-1%)}75%{transform:translate(-1%,-1.2%)}100%{transform:translate(1%,1%)}}
img{-webkit-user-drag:none;pointer-events:none;display:block}
.scene{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .7s;overflow:hidden}
.scene.on{opacity:1;pointer-events:auto}
.scene.cut{transition:none}
.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dots{position:absolute;inset:0;background:radial-gradient(circle,#cfe9c3 .14em,transparent .18em) 0 0/1.6em 1.6em,linear-gradient(#f5fcf1,#e0f2d7)}
.btn{border:none;background:#8cc97e;color:#fff;font-size:1.05em;padding:.65em 1.5em;border-radius:2em;box-shadow:0 .22em 0 #6aa95d;font-weight:bold;font-family:inherit;cursor:pointer;letter-spacing:.05em}
.btn:active{translate:0 .15em;box-shadow:0 .07em 0 #6aa95d}
.btn.ghost{background:#fffaf0;color:#5d8c52;box-shadow:0 .22em 0 #cfe3c6;border:.1em solid #cfe3c6}
.center{position:absolute;left:0;right:0;text-align:center}
.bob{animation:bob 1.6s ease-in-out infinite alternate}
@keyframes bob{to{translate:0 -4%}}
.float{animation:flo 2s ease-in-out infinite alternate}
@keyframes flo{to{translate:0 -6%}}

/* bubbles */
.bubble{position:absolute;background:#fff;border:.13em solid #a5d398;border-radius:1em;padding:.45em .9em;font-size:.92em;line-height:1.45;color:#5b4636;opacity:0;scale:.6;transition:opacity .2s,scale .25s cubic-bezier(.3,1.6,.5,1);pointer-events:none;z-index:12;max-width:78%;text-align:center;box-shadow:0 .2em 0 #e3f1dc}
.bubble.show{opacity:1;scale:1}
.bubble::after{content:"";position:absolute;width:.7em;height:.7em;background:#fff;border-right:.13em solid #a5d398;border-bottom:.13em solid #a5d398;bottom:-.45em;left:50%;translate:-50% 0;rotate:45deg}
.bubble.tl::after{left:18%}

/* start */
#sStart .title{top:10%;font-size:3.1em;font-weight:900;color:#5b4636;letter-spacing:.06em;text-shadow:0 .07em 0 #fff,.07em .07em 0 #b5dca8,-.03em -.03em 0 #fff}
#sStart .sub{top:22.5%;color:#6f9e63;font-size:1em;letter-spacing:.2em}
#startMigu{position:absolute;left:50%;top:30%;width:48%;translate:-50% 0}
#startHr{position:absolute;left:3%;bottom:13%;width:30%}
#sStart .go{bottom:20%}
#sStart .foot{bottom:3.5%;color:#9bb592;font-size:.72em;line-height:1.6}

/* squish */
.halo{position:absolute;left:50%;top:52%;width:92%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,#fff 0,#f2faee 45%,#e3f3db 62%,transparent 63%)}
.topbar{position:absolute;top:2.5%;left:4%;right:4%;display:flex;align-items:center;gap:.5em;background:#fffaf0;border:.12em solid #b9dcae;border-radius:1.2em;padding:.55em .8em;z-index:5}
.elabel{font-size:.8em;color:#5d8c52;font-weight:bold;white-space:nowrap}
.ebar{position:relative;flex:1;height:1.05em;background:#e6f3e0;border-radius:1em;border:.1em solid #b9dcae;margin-left:.4em;margin-right:1.2em}
.efill{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,#c9ecb9,#8cc97e);border-radius:1em;transition:width .25s}
#erunner{position:absolute;top:50%;left:0;width:1.7em;translate:-50% -62%;transition:left .25s}
.energy-star{position:absolute;right:-1.3em;top:50%;width:1.7em;translate:0 -50%;text-align:center;color:#9eb57b}
.epct{font-size:.8em;color:#5d8c52;width:2.4em;text-align:right;font-weight:bold}
#combo{position:absolute;top:10.2%;left:5%;font-size:1em;font-weight:900;color:#e98aa6;opacity:0;transition:opacity .2s;z-index:6}
#combo.show{opacity:1}
#stage{position:absolute;inset:0;touch-action:none;cursor:pointer;z-index:2}
#miguWrap{position:absolute;left:50%;bottom:31%;width:56%;aspect-ratio:440/560;transform-origin:50% 100%;will-change:transform;pointer-events:none}
#miguImg{width:100%;height:100%;object-fit:contain;object-position:50% 100%}
#miguWrap.glow #miguImg{animation:glow .35s infinite alternate}
@keyframes glow{from{filter:drop-shadow(0 0 .3em #fff6a0) brightness(1.05)}to{filter:drop-shadow(0 0 1.6em #ffe86a) brightness(1.35)}}
#shadow{position:absolute;left:50%;bottom:29.6%;width:44%;height:3.5%;translate:-50% 0;background:radial-gradient(ellipse,#5b7a4f33,transparent 70%);pointer-events:none}
#miguBubble{left:50%;translate:-50% 0;top:15%}
#hrSmall{position:absolute;left:2%;bottom:1.5%;width:27%;pointer-events:auto;cursor:pointer;z-index:4;transform-origin:50% 100%}
#hrSmall.hop{animation:hop .35s}
@keyframes hop{50%{translate:0 -6%}}
#hrBubble{left:22%;bottom:23%}
.tips{bottom:24.5%;font-size:.72em;color:#88b07c;letter-spacing:.05em;pointer-events:none;z-index:3}

/* fx */
#fx{position:absolute;inset:0;pointer-events:none;z-index:25;overflow:hidden}
.ring{position:absolute;width:3em;height:3em;margin:-1.5em 0 0 -1.5em;border-radius:50%;border:.18em solid #9fd48f;animation:ring .5s ease-out forwards}
@keyframes ring{from{scale:.2;opacity:1}to{scale:1.6;opacity:0}}
.pt{position:absolute;font-size:1.1em;font-weight:bold;animation:pt .9s ease-out forwards;translate:-50% -50%}
@keyframes pt{to{transform:translate(var(--dx),var(--dy)) rotate(var(--r));opacity:0}}
#confetti{position:absolute;inset:0;pointer-events:none;z-index:30}

/* black */
#black{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity 1s;z-index:50;display:flex;align-items:center;justify-content:center}
#black.on{opacity:1;pointer-events:auto}
#black.cut{transition:none}
#blackText{color:#e9f5e4;font-size:1.25em;letter-spacing:.15em;opacity:0;transition:opacity 1.2s}
#blackText.show{opacity:1}
#flash{position:absolute;inset:0;background:#fffbe6;opacity:0;pointer-events:none;z-index:49;transition:opacity .9s}

/* pond */
#gpWrap{position:absolute;left:50%;top:26%;width:38%;translate:-50% 0;opacity:0;transform:translateY(45%) scale(.7);transition:opacity .8s,transform 1.4s cubic-bezier(.2,1.5,.4,1)}
#gpWrap.up{opacity:1;transform:none}
#gpWrap img{width:100%}
#gpWrap.nod img{animation:nod .5s 2}
@keyframes nod{50%{rotate:-6deg}}
#pondRing{position:absolute;left:50%;top:60%;width:20%;height:5%;translate:-50% -50%;border-radius:50%;border:.15em solid #fff;opacity:0}
#pondRing.go{animation:pring 1.6s ease-out 2}
@keyframes pring{from{scale:.3;opacity:1}to{scale:3.2;opacity:0}}
.bub{position:absolute;width:.8em;height:.8em;border-radius:50%;border:.1em solid #fff;background:#ffffff55;animation:bub 1.6s ease-in forwards}
@keyframes bub{to{translate:0 -9em;opacity:0}}
#pondDialog{position:absolute;top:4%;left:5%;right:5%;background:#fffaf0;border:.14em solid #a5d398;border-radius:1em;padding:1.1em 1em .8em;color:#5b4636;font-size:.98em;line-height:1.6;opacity:0;translate:0 -1em;transition:.4s;z-index:5;min-height:5.5em;box-shadow:0 .25em 0 #d8ecd0}
#pondDialog.show{opacity:1;translate:0 0}
#pondDialog .name{position:absolute;top:-.85em;left:1em;background:#8cc97e;color:#fff;font-size:.8em;padding:.15em .8em;border-radius:1em;font-weight:bold}
.pond-voice-controls{display:flex;justify-content:flex-end;gap:.5em;margin-top:.7em}
#pondDialog.speaking .name::after{content:' ♫'}
#cards{position:absolute;bottom:3.5%;left:3%;right:3%;display:flex;gap:.5em;opacity:0;translate:0 2em;transition:.5s;pointer-events:none;z-index:5}
#cards.show{opacity:1;translate:0 0;pointer-events:auto}
#cards.away{opacity:0;translate:0 3em;pointer-events:none}
.card{flex:1;background:#fffaf0;border:.14em solid #c9e6bd;border-radius:1em;padding:.6em .3em .5em;text-align:center;cursor:pointer;box-shadow:0 .25em 0 #d1e8c6;transition:scale .15s}
.card:active{scale:.95}
.card img{width:78%;margin:0 auto .3em}
.card span{font-size:.8em;color:#5b4636;font-weight:bold}
.card.no{animation:no .4s}
@keyframes no{20%,60%{translate:-6% 0}40%,80%{translate:6% 0}}
#card4{position:absolute;left:50%;bottom:31%;translate:-50% 0;display:none;z-index:6;font-size:.95em}
#hrPeek{position:absolute;right:5%;top:47%;width:26%;height:15%;overflow:hidden;z-index:4;pointer-events:none}
#hrPeek img{width:100%;transform:translateY(105%);transition:transform .8s cubic-bezier(.3,1.5,.5,1)}
#hrPeek.up img{transform:translateY(8%)}
#peekBubble{right:4%;top:39%}
#key{position:absolute;left:50%;top:64%;font-size:3.6em;translate:-50% 0;display:none;cursor:pointer;z-index:7;animation:keyb .8s ease-in-out infinite alternate;filter:drop-shadow(0 0 .25em #ffe27a)}
@keyframes keyb{from{transform:rotate(-10deg) scale(1)}to{transform:rotate(10deg) scale(1.12)}}
#keyTip{bottom:23%;color:#6f9e63;font-size:.85em;display:none;z-index:7}
#sDark{background:#050607}
#cord{position:absolute;left:64%;top:0;width:.12em;height:30%;background:linear-gradient(#222,#6d6a5d);translate:-50% 0}
#knob{position:absolute;left:64%;top:30%;width:1.7em;height:1.7em;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fffdf0,#ffe9a0);box-shadow:0 0 1em #ffe9a0,0 0 2.6em #ffe9a055;translate:-50% 0;cursor:grab;touch-action:none;animation:kp 1.2s ease-in-out infinite alternate}
#knob::before{content:"";position:absolute;inset:-1.4em}
@keyframes kp{to{box-shadow:0 0 1.6em #ffe9a0,0 0 3.6em #ffe9a077}}
#eyes{position:absolute;left:24%;top:63%;display:flex;gap:1.3em}
#eyes i{display:block;width:.75em;height:1.05em;background:#f4f4ea;border-radius:50%;animation:blink 3.2s infinite;box-shadow:0 0 .4em #fff5}
@keyframes blink{0%,90%,100%{scale:1 1}94%{scale:1 .08}}
#darkTip{bottom:16%;color:#8c9a88;font-size:.9em;letter-spacing:.1em;line-height:1.8}
#steps{position:absolute;top:2%;left:4%;right:4%;background:#fffaf0ee;border:.13em solid #b9dcae;border-radius:1em;padding:.5em .8em;text-align:center;z-index:8;opacity:0;translate:0 -1em;transition:.4s}
#steps.show{opacity:1;translate:0 0}
#stars{color:#f2c94c;font-size:1.05em;letter-spacing:.25em}
#stars b{color:#d6e6cf;font-weight:normal}
#stepText{color:#5b4636;font-size:.9em;margin-top:.15em}
#cakeBox{position:absolute;left:50%;bottom:21%;width:34%;aspect-ratio:423/560;translate:-50% 0;transform:translateY(-160%);opacity:0;transition:transform .9s cubic-bezier(.3,1.35,.5,1),opacity .3s;z-index:3}
#cakeBox.in{transform:none;opacity:1}
#cakeBox img{width:100%}
.flame{position:absolute;width:10%;aspect-ratio:1/1.7;translate:-50% -96%;background:radial-gradient(ellipse at 50% 72%,#fff 0,#fff3a0 30%,#ffb347 62%,transparent 68%);border-radius:50% 50% 45% 45%/65% 65% 35% 35%;opacity:0;scale:.2;transition:opacity .2s,scale .25s;transform-origin:50% 100%;animation:flick .16s infinite alternate;pointer-events:none}
.flame::after{content:"";position:absolute;left:50%;top:55%;width:380%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,#ffe9a055,transparent 65%)}
.flame.on{opacity:1;scale:1}
@keyframes flick{from{rotate:-5deg}to{rotate:5deg}}
.hot{position:absolute;width:15%;height:32%;translate:-50% -25%;cursor:pointer;border-radius:1em}
.hot.hint{animation:hint 1s infinite}
@keyframes hint{50%{background:#fff7c255}}
.smoke{position:absolute;width:.8em;height:.8em;border-radius:50%;background:#cfd6cc;translate:-50% -50%;animation:smoke 1.2s ease-out forwards;pointer-events:none}
@keyframes smoke{to{translate:-50% -380%;scale:2.6;opacity:0}}
#hrParty{position:absolute;left:0;bottom:3%;width:37%;transform:scale(0);transition:transform .7s cubic-bezier(.3,1.6,.5,1);transform-origin:50% 100%;z-index:4}
#hrParty.in{transform:scale(1)}
#hrParty.dance{animation:none}
#hrParty.dance .hanrui-sprite{animation:partySway 1.6s ease-in-out infinite alternate}
@keyframes partySway{from{transform:rotate(-.8deg)}to{transform:rotate(.8deg)}}
#actions{position:absolute;right:4%;bottom:4%;display:flex;flex-direction:column;gap:.7em;align-items:flex-end;z-index:9}
#actions .btn{font-size:.95em}
#lyrics{position:absolute;top:15%;left:50%;translate:-50% 0;background:#fffaf0ee;border:.13em solid #f5c3d1;border-radius:1em;padding:.4em 1em;font-size:1.5em;font-weight:900;letter-spacing:.12em;z-index:8;display:none;white-space:nowrap}
#lyrics span{color:#c9d9c3;transition:color .1s}
#lyrics span.on{color:#e2709a}
#bigText{top:13%;font-size:2.4em;font-weight:900;color:#e2709a;text-shadow:0 .08em 0 #fff,.06em .06em 0 #ffd6e2;z-index:9;opacity:0;scale:.5;transition:.5s cubic-bezier(.3,1.6,.5,1);pointer-events:none}
#bigText.show{opacity:1;scale:1}
#gift{position:absolute;left:74%;bottom:22%;width:28%;aspect-ratio:1;translate:-50% 0;display:none;cursor:pointer;z-index:6}
#gift .gb{position:absolute;left:6%;right:6%;bottom:0;height:66%;background:linear-gradient(90deg,transparent 42%,#fff6 42%,#fff6 58%,transparent 58%),#f7b9c8;border:.15em solid #7a5b4a;border-radius:.35em}
#gift .gl{position:absolute;left:0;right:0;top:14%;height:24%;background:linear-gradient(90deg,transparent 42%,#fff8 42%,#fff8 58%,transparent 58%),#f39fb4;border:.15em solid #7a5b4a;border-radius:.35em;transition:transform .6s,opacity .6s;z-index:2}
#gift .gl::before{content:"🎀";position:absolute;left:50%;top:-1.05em;translate:-50% 0;font-size:1.6em}
#gift.shk{animation:gshk .35s}
@keyframes gshk{25%{rotate:-8deg}75%{rotate:8deg}}
#gift.open .gl{transform:translate(60%,-260%) rotate(40deg);opacity:0}
#prize{position:absolute;left:50%;bottom:45%;width:84%;translate:-50% 0;transform:scale(0) translateY(30%);transition:transform .8s cubic-bezier(.3,1.6,.5,1);z-index:1;filter:drop-shadow(0 0 .8em #ffe27a)}
#gift.open #prize{transform:scale(1.15) translateY(-20%)}
.ov{position:absolute;inset:0;background:#2b3a2a88;display:none;align-items:center;justify-content:center;z-index:40;flex-direction:column;gap:1em}
.ov.show{display:flex}
.paper{width:86%;background:repeating-linear-gradient(#fffdf5 0,#fffdf5 1.85em,#e6f1df 1.85em,#e6f1df 1.92em);border:.15em solid #b9dcae;border-radius:1em;padding:1.2em 1.3em;color:#5b4636;font-size:.95em;line-height:1.92em;box-shadow:0 .4em 0 #cfe3c6;position:relative}
.paper h3{font-size:1.1em;color:#6f9e63;margin-bottom:.2em}
#wishInput{width:100%;height:5.5em;border:.12em solid #cfe3c6;border-radius:.7em;padding:.6em;font-size:1em;font-family:inherit;color:#5b4636;background:#fff;resize:none;outline:none;user-select:text;-webkit-user-select:text;line-height:1.5}
#letterText{min-height:12em;white-space:pre-wrap}
#photoImg{max-width:82%;max-height:70%;border-radius:.4em;box-shadow:0 .5em 1.5em #0004;pointer-events:auto;-webkit-touch-callout:default}
.ovtip{color:#fff;font-size:.8em}
.row{display:flex;gap:.8em;justify-content:center;flex-wrap:wrap}
#toast{position:absolute;left:50%;top:45%;translate:-50% -50%;background:#3d4f39dd;color:#fff;padding:.6em 1.2em;border-radius:1em;font-size:.88em;z-index:60;opacity:0;transition:.3s;pointer-events:none;text-align:center;max-width:80%}
#toast.show{opacity:1}

/* 手机适配与初版界面 */
html,body{background:#eaf2df;overscroll-behavior:none}
body{background:radial-gradient(ellipse at 20% 15%,#fffaf1,transparent 60%),#eaf2df}
#app{top:0;transform:translateX(-50%);border-radius:20px;box-shadow:0 16px 90px #5f79542b}
#safeProbe{position:fixed;visibility:hidden;pointer-events:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.scene:not(.on){visibility:hidden;transition:opacity .7s,visibility .7s}
.dots{background:radial-gradient(circle at 80% 20%,#d8ebc994 0,transparent 36%),radial-gradient(circle at 10% 70%,#ebf3d7 0,transparent 40%),#f7f8eb}
.dots:after{content:'✧';position:absolute;color:#adbf89;top:31%;left:13%;font-size:1.4em;transform:rotate(-14deg)}
.eyebrow{top:8.5%;font-size:.62em;letter-spacing:.23em;color:#8f9c76;font-weight:600}
#sStart .title{top:13%;font-size:3em;letter-spacing:.1em;color:#4e5a42;text-shadow:0 .06em 0 #fff}
#sStart .sub{top:24%;font-size:.82em;letter-spacing:.06em;color:#7e8d67}
#startMigu{top:32%;width:55%;filter:drop-shadow(0 1em .5em #788d6820)}
#startHr{left:5%;bottom:15%;width:28%;rotate:-5deg}
#sStart .go{bottom:19.5%;z-index:2}
#sStart .go .btn{padding:.85em 2.8em;letter-spacing:.13em;background:#829d63;box-shadow:0 .22em 0 #647d49;font-size:1.08em}
#sStart .foot{bottom:4.8%;font-size:.8em;color:#859071;line-height:2}
.fine{font-size:.8em;color:#9aa48b;letter-spacing:.1em}
.btn{min-height:44px;background:#819e67;box-shadow:0 .22em 0 #627e4b}
.btn.ghost{color:#657b50}
.btn:focus-visible,.tool:focus-visible,.card:focus-visible,#knob:focus-visible{outline:3px solid #bd8b5e;outline-offset:4px}
.topbar{top:3%;background:#fffdf3;border-color:#d1dfbd;border-radius:1em}
#combo{top:12%}
.halo{background:radial-gradient(circle,#fffdf5 0,#f8faef 45%,#ebf2dc 62%,transparent 63%)}
.tips{font-size:.8em;line-height:1.8;color:#7d9067;bottom:22%}
.tips span{font-size:.85em;color:#a3ae92;letter-spacing:.08em}
.tools{position:absolute;right:4%;bottom:5.5%;display:flex;gap:.35em;z-index:7}
.tool{font-family:inherit;font-size:.72em;background:#fffdf2d9;border:1px solid #cfdcba;border-radius:1em;min-height:44px;min-width:44px;padding:.55em .7em;color:#71865b;cursor:pointer}
#key{border:0;background:transparent;font-family:inherit;padding:0}
#knob{min-width:28px;min-height:28px}
#cakeBox{width:40%}
#wishInput{font-size:max(16px,1em);touch-action:auto;min-height:100px}
#ovWish{padding-bottom:var(--keyboard,0px)}
.ov{backdrop-filter:blur(4px)}
.paper{max-height:78%;overflow:auto;touch-action:pan-y;font-size:max(13px,.95em)}
.help-paper{text-align:center;line-height:1.8;background:#fffdf5;padding:1.6em 1.4em}
.help-paper h3{font-size:1.4em;color:#657c50;margin:.4em 0 1em}
.help-paper p{margin-bottom:1.2em}
.help-kicker{font-size:.65em;letter-spacing:.16em;color:#9aa581}
.help-note{font-size:.8em;color:#8d9c7b}
.help-paper .btn{font-size:.9em}
#letterText{min-height:10em}
#photoImg{touch-action:manipulation;user-select:auto;-webkit-user-select:auto}
@media(max-width:600px){#app{border-radius:0;box-shadow:none}}
@media(prefers-reduced-motion:reduce){.bob,.float,.flame,#eyes i{animation:none}#world.shake{animation:none}.scene,.bubble{transition:opacity .1s}}

/* Mint cover follows the selected reference; the mascot has aligned blink frames. */
html,body{background:#edf3e3}
#sStart{background:radial-gradient(ellipse at 50% 45%,#f1f6e9 0%,#edf3e3 75%)}
#sStart .title{top:11%;left:50%;right:auto;width:min(80%,420px);height:13%;transform:translateX(-50%);margin:0;line-height:1}
#sStart .title img{width:100%;height:100%;object-fit:contain}
.cover-art{position:absolute;left:50%;top:28%;width:min(88%,52vh,480px);height:47%;transform:translateX(-50%)}
.cover-oval{position:absolute;left:50%;top:50%;width:100%;aspect-ratio:1;translate:-50% -50%;background:#fff9e9;border-radius:50%}
.cover-ground{position:absolute;left:50%;bottom:-1%;width:62%;height:7%;translate:-50% 0;background:#b7c1a3aa;border-radius:50%}
#startMigu{position:absolute;left:50%;top:0;width:auto;height:100%;aspect-ratio:1;transform:translateX(-50%);translate:none;filter:none;pointer-events:none}
.cover-breath,.cover-sprite{position:absolute;inset:0}
.cover-breath{transform-origin:50% 100%;animation:coverBreathe 4.2s ease-in-out infinite}
.cover-sprite{background:url('assets/cover-mint-sprite.png') left center/200% 100% no-repeat;animation:coverSpriteBlink 6.8s steps(1,end) infinite}
@keyframes coverBreathe{0%,100%{transform:translateY(0) scale(1,1)}50%{transform:translateY(-3px) scale(1.012,1.022)}}
@keyframes coverSpriteBlink{0%,43%,48%,100%{background-position:0 50%}40%,45%{background-position:100% 50%}}
#sStart .go{bottom:10.5%}
#sStart .go .btn{width:min(68vw,330px);min-width:0;padding:.58em 1.1em;border:0;border-radius:3em;background:#97a582;color:#fffced;box-shadow:none;font-size:1.7em;letter-spacing:.16em;font-weight:800;line-height:1.3}
#sStart .go .btn:active{background:#859571;translate:0 2px}
@media(prefers-reduced-motion:reduce){.cover-breath,.cover-sprite{animation:none}}
#sSquish .dots{background:#eef3df url('assets/forest-mint-a.png') center/cover no-repeat}
#sSquish .halo{background:radial-gradient(ellipse,#fffdf362,transparent 68%)}
.soft-toy{position:absolute;left:-40%;top:-40%;width:180%;height:180%;pointer-events:none}
.mesh-ready #miguImg{opacity:0}
#miguWrap.glow .soft-toy{animation:glow .35s infinite alternate}
.feel-picker{position:absolute;bottom:13%;right:5%;display:flex;gap:.15em;padding:.22em;border:1px solid #c5d3b8;border-radius:2em;background:#fff9e8bd;z-index:7}
.feel-picker button{border:0;background:transparent;color:#839273;font-family:inherit;font-size:.75em;padding:.5em .85em;min-height:44px;border-radius:2em;cursor:pointer}
.feel-picker button[aria-pressed="true"]{background:#82956c;color:#fffdf2}
.feel-picker button:focus-visible{outline:3px solid #bd8b5e;outline-offset:2px}
.tips{color:#687e59;text-shadow:0 1px 3px #fff9e8}
.tips span{color:#879777}


/* Fill the available screen; keep the toy comfortably sized at every aspect ratio. */
#app{left:0;transform:none;border-radius:0;box-shadow:none}


#miguWrap{width:min(70%,47.5vh,425px)}
#shadow{width:min(55%,37.5vh,337.5px)}
.topbar{left:50%;right:auto;width:min(92%,680px);transform:translateX(-50%)}
.feel-picker,.tools{left:50%;right:auto;transform:translateX(-50%);white-space:nowrap}
.feel-picker{bottom:13%}
.tools{bottom:5.5%}
#miguBubble{max-width:min(78%,420px)}
.paper{max-width:540px}
#sPond .card img{max-height:24vh;width:auto;max-width:78%;object-fit:contain}
#cards{max-width:680px;margin:auto}
#gpWrap{width:min(38%,28vh,280px)}
#hrPeek{width:min(26%,22vh,200px)}
#cakeBox{width:min(40%,30vh,280px)}
#hrParty{width:min(38%,30vh,280px)}
@media(max-height:500px) and (min-width:600px){.tips{bottom:24%}.feel-picker{bottom:11%;left:76%}.tools{left:24%;bottom:8%}.cover-art{top:24%;height:49%;width:min(65%,55vh)}#sStart .title{top:6%}#sStart .go{bottom:6%}#sStart .go .btn{font-size:1.2em;padding:.5em 1em}}

/* Quiet default view; every bottom action remains one tap away. */
.play-controls{position:absolute;right:4%;bottom:calc(4% + 56px);z-index:8;display:flex;flex-direction:column;align-items:center;gap:.65em;padding:1em;background:#fffdf0ed;border:1px solid #c8d7b9;border-radius:1.5em;box-shadow:0 6px 24px #526c4920;max-width:92%}
.play-controls[hidden]{display:none}
.play-controls .feel-picker,.play-controls .tools{position:static;left:auto;right:auto;bottom:auto;transform:none;white-space:nowrap}
.play-controls .tools{gap:.5em}
.play-controls .feel-picker{background:#eff3e4}
.address-setting{width:100%;border-top:1px solid #d9e1cc;padding-top:.65em;text-align:center;color:#7c8b67}
.setting-label{display:block;font-size:.7em;margin-bottom:.35em;letter-spacing:.08em}
.address-picker{display:flex;gap:.25em;padding:.22em;border:1px solid #c5d3b8;border-radius:2em;background:#eff3e4}
.address-picker button{flex:1;min-height:44px;padding:.5em .75em;border:0;border-radius:2em;background:transparent;color:#7c8b67;font:inherit;font-size:.75em;cursor:pointer;white-space:nowrap}
.address-picker button[aria-pressed="true"]{background:#82956c;color:#fffdf2}
.address-picker button:focus-visible{outline:3px solid #bd8b5e;outline-offset:2px}

.controls-toggle{position:absolute;right:4%;bottom:4%;z-index:9;display:flex;align-items:center;justify-content:center;gap:.4em;min-width:80px;font-size:.8em;background:#fffdf0d9;border-color:#c5d3b6}
.controls-toggle span{font-size:1.3em;line-height:1}
.controls-toggle[aria-expanded="true"]{background:#82956c;color:#fffdf2}

/* The approved flat cottage stays layered so all story interactions remain live. */
#sParty{background:#faf7eb}
#sParty .bg{object-position:center top}
#hrParty{left:50%;top:14%;bottom:auto;width:min(94%,58vh,600px);height:47%;object-fit:contain;translate:-50% 0;z-index:2}
#cakeBox{top:57%;bottom:auto;width:min(76%,34vh,430px);aspect-ratio:1402/1122;z-index:3;transform:translateY(12%) scale(.92)}
#cakeBox.in{transform:none}
#cakeBox img{width:100%;height:100%;object-fit:contain}
#cakeBox .flame{width:5.2%}
#cakeBox .hot{width:56px;height:56px;min-width:56px;min-height:56px;translate:-50% -50%;border:0;background:transparent;touch-action:manipulation}
#cakeBox .hot.hint{animation:none}
#cakeBox .hot::before{content:"";position:absolute;left:50%;top:50%;width:38px;height:38px;translate:-50% -50%;border:2px solid #d5ac65;border-radius:50%;background:radial-gradient(circle,#fff8d555,transparent 70%);box-shadow:0 0 0 5px #fff4c933,0 0 18px #edcd8066;opacity:0;pointer-events:none}
#cakeBox .hot.hint::before{opacity:1;animation:candleInvite 1.8s ease-in-out infinite}
.candle-cue{position:absolute;left:50%;bottom:calc(100% + 5px);translate:-50% 0;white-space:nowrap;padding:6px 12px;border:1px solid #decba3;border-radius:20px;background:#fff9e9;color:#826340;font-size:13px;font-weight:700;line-height:1.4;box-shadow:0 3px 10px #70532e12;visibility:hidden;pointer-events:none}
.candle-cue::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:#fff9e9;border-right:1px solid #decba3;border-bottom:1px solid #decba3;transform:translateX(-50%) rotate(45deg)}
#cakeBox .hot.hint .candle-cue{visibility:visible}
@keyframes candleInvite{0%,100%{scale:.9;opacity:.65}50%{scale:1.14;opacity:1}}
@media(prefers-reduced-motion:reduce){#cakeBox .hot.hint::before{animation:none}}
#cakeBox .hot:focus-visible{outline:3px solid #b68a52;outline-offset:3px}
#cakeBox .hot:disabled{pointer-events:none}
#steps{top:auto;bottom:1.2%;left:50%;right:auto;width:88%;max-width:520px;transform:translateX(-50%);padding:0;background:none;border:0;box-shadow:none;pointer-events:none}
#stepText{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#actions{left:50%;right:auto;bottom:6.5%;width:88%;max-width:390px;translate:-50% 0;flex-direction:row;justify-content:center;align-items:center;gap:.5em}
#actions .btn{background:#94a486;box-shadow:none;border-radius:3em;font-size:1.12em;min-height:48px;flex:1;padding:.7em 1em}
#actions .btn.ghost{background:#fff9e9;color:#718266;font-size:.82em}
#lyrics{top:auto;bottom:39%;font-size:1.25em}
#partyBubble{left:50%;top:auto;bottom:3%;translate:-50% 0;width:min(86%,430px);max-width:86%;font-size:clamp(12px,.84em,16px);z-index:7;transform-origin:50% 0}
#partyBubble::after{top:-.45em;bottom:auto;left:50%;rotate:225deg}
#partyBubble.show~#actions{visibility:hidden}
#bigText{top:17%;font-size:clamp(18px,4.7vw,34px);color:#839473}
#gift{left:77%;bottom:22%;width:min(28%,22vh,180px)}
@media(max-height:600px) and (min-width:600px){
  #hrParty{left:37%;top:17%;width:48%;height:65%}
  #cakeBox{left:55%;top:52%;width:min(35%,33vh);max-width:33vh}
  #actions{left:78%;bottom:8%;width:38%;max-width:360px}
  #steps{left:78%;width:38%}
  #partyBubble{left:37%;top:auto;bottom:4%;width:44%;max-width:430px}
  #gift{left:78%;bottom:32%;width:18%}
}

/* Short dialogue sits below Grandpa and above the choice cards. */
#gpWrap{top:5%;height:38%;width:min(54%,37vh,344px)}
#gpWrap img{height:100%;object-fit:contain}
#pondDialog{top:46%;left:6%;right:6%;min-height:0;padding:.85em 1em .6em;font-size:.9em}
#pondDialog::before{content:'';position:absolute;top:-.65em;left:50%;width:1em;height:1em;background:#fffaf0;border-left:.14em solid #a5d398;border-top:.14em solid #a5d398;transform:rotate(45deg);z-index:-1}
#pondText{min-height:3.2em}
#pondPage{margin-right:auto;align-self:center;color:#96a28b;font-size:.8em;font-variant-numeric:tabular-nums}
#pondDialog.can-advance{cursor:pointer}
#pondText:focus-visible{outline:2px solid #9eaf84;outline-offset:4px;border-radius:4px}
.pond-voice-controls{margin-top:.35em}
.pond-voice-controls .tool{font-size:.76em;padding:.4em .6em;min-height:32px}
#sPond .card img{max-height:16vh}
#key{top:70%}
#keyTip{bottom:13%}
#hrPeek{top:28%}
#peekBubble{top:22%}
@media(max-height:600px) and (min-width:600px){
  #gpWrap{left:27%;top:1%;height:48%;width:37%}
  #pondDialog{top:54%;left:4%;right:auto;width:47%;font-size:.8em}
  #cards{left:56%;right:3%;bottom:15%}
  #sPond .card img{max-height:29vh}
  #card4{left:77%;bottom:4%}
  #key{left:77%;top:54%}
  #keyTip{left:77%;bottom:10%;width:40%}
}

/* Warm, quiet birthday lighting and a clearly visible wooden table. */
#sParty .bg{filter:sepia(.09) saturate(.94)}
#sParty::before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 20% 25%,#ffdfa04a,transparent 45%),radial-gradient(ellipse at 85% 35%,#fff6d858,transparent 50%)}
.party-table{position:absolute;left:50%;top:58.5%;width:98%;height:28%;translate:-50% 0;z-index:2;border-radius:48% 48% 22% 22% / 10% 10% 7% 7%;border:2px solid #d9b88c;border-bottom:10px solid #c7a174;background:linear-gradient(175deg,#fff0d4,#efd6af);box-shadow:0 9px 0 #a7815b26,0 18px 28px #9d7a4320;pointer-events:none}
.party-table::before{content:'';position:absolute;inset:14% 8% 12%;border-top:1px solid #e1c39a60;border-bottom:1px solid #e1c39a60;border-radius:50%}
.party-table i{position:absolute;top:100%;height:28px;width:16px;background:#c7a174;border-radius:0 0 5px 5px;box-shadow:inset -4px 0 #b28b61}
.party-table i:first-child{left:15%;rotate:5deg}
.party-table i:last-child{right:15%;rotate:-5deg}
.party-lights{position:absolute;inset:19% 3% 45%;z-index:2;pointer-events:none}
.party-lights::before,.party-lights::after{content:'';position:absolute;top:0;bottom:0;width:1px;background:#c3aa73a0}
.party-lights::before{left:2%}.party-lights::after{right:2%}
.party-lights i{position:absolute;width:7px;height:10px;background:#fff4bb;border-radius:50%;box-shadow:0 0 10px 4px #ffdc8c70;animation:lampGlow 4s ease-in-out infinite alternate}
.party-lights i:nth-child(-n+3){left:calc(2% - 3px)}
.party-lights i:nth-child(n+4){right:calc(2% - 3px);animation-delay:-2s}
.party-lights i:nth-child(3n+1){top:3%}.party-lights i:nth-child(3n+2){top:45%}.party-lights i:nth-child(3n){top:88%}
@keyframes lampGlow{to{box-shadow:0 0 16px 6px #ffdc8c90}}
.hanrui-sprite{position:relative;width:100%;height:100%;transform-origin:50% 95%;animation:hanruiBreathe 4s ease-in-out infinite}
.hanrui-sprite>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.hanrui-sprite .hanrui-closed,.hanrui-sprite .hanrui-calm,.hanrui-sprite .hanrui-shy{opacity:0;transition:opacity .12s}
.hanrui-sprite .hanrui-closed{animation:hanruiBlink 6.3s step-end infinite;z-index:3}
#hrParty.wishing .hanrui-closed{animation:none;opacity:1}
#hrParty.calm .hanrui-calm{opacity:1;z-index:1}
#hrParty.shy .hanrui-shy{opacity:1;z-index:2}
#hrParty.shy .hanrui-closed{animation:none;opacity:0}
#hrParty.wishing .hanrui-closed{opacity:1}
@keyframes hanruiBreathe{50%{transform:translateY(-1px) scaleY(1.008)}}
@keyframes hanruiBlink{0%,94%,98%,100%{opacity:0}95%,97%{opacity:1}}
.party-hat{position:absolute;left:61%;top:1.5%;width:21%;height:24%;rotate:16deg;z-index:4;pointer-events:none;filter:drop-shadow(0 2px 0 #77614825)}
#hrParty{cursor:pointer;touch-action:manipulation}
@media(max-height:600px) and (min-width:600px){.party-table{left:48%;top:60%;width:78%;height:24%}.party-lights{inset:20% 4% 20%}}
@media(prefers-reduced-motion:reduce){.hanrui-sprite,.hanrui-sprite .hanrui-closed,.party-lights i,#hrParty.dance .hanrui-sprite{animation:none}}
#ovWish{justify-content:flex-end;padding-bottom:calc(5% + var(--keyboard,0px));background:#65523b22;backdrop-filter:none;gap:.7em}
#ovWish .paper{padding:1em 1.2em;border-radius:1.5em;background:#fffaf0f5;box-shadow:0 8px 24px #8d735b25}
#ovWish .paper h3{font-size:1em;margin-bottom:.6em}
#ovWish #wishInput{height:4.5em;min-height:4.5em}

/* Emotion follows the line; the character stays centered behind the table. */
#steps{width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#partyBubble{line-height:1.6;padding:.65em 1em;max-width:min(84%,430px)}
#partyPage{display:block;margin-top:.3em;color:#9ca58d;font-size:.7em;line-height:1}
#partyPage:empty{display:none}
#partyBubble.single-line #partyLine{display:block;white-space:nowrap}
#partyBubble.single-line #partyPage{display:none}
#hrParty[data-gesture="nod"] .hanrui-sprite{animation:hanruiNod 1.1s ease-in-out both,hanruiBreathe 4s 1.1s ease-in-out infinite}
#hrParty[data-gesture="lift"] .hanrui-sprite{animation:hanruiLift 1.2s ease-in-out both,hanruiBreathe 4s 1.2s ease-in-out infinite}
#hrParty[data-gesture="tilt"] .hanrui-sprite{animation:hanruiTilt 1.6s ease-in-out both,hanruiBreathe 4s 1.6s ease-in-out infinite}
#hrParty[data-gesture="shy"] .hanrui-sprite{animation:hanruiShy 2.2s ease-in-out both}
#hrParty[data-gesture="lean"] .hanrui-sprite{animation:hanruiLean 1.2s ease-in-out both}
#hrParty[data-gesture="still"] .hanrui-sprite{animation:hanruiBreathe 6s ease-in-out infinite}
.hanrui-sprite .hanrui-wish,.hanrui-sprite .hanrui-wave{opacity:0;transition:opacity .15s;z-index:3}
#hrParty.wishing .hanrui-sprite>img:not(.hanrui-wish),#hrParty[data-dialogue="farewell"] .hanrui-sprite>img:not(.hanrui-wave){opacity:0;animation:none}
#hrParty.wishing .hanrui-wish,#hrParty[data-dialogue="farewell"] .hanrui-wave{opacity:1}
@keyframes hanruiNod{35%{transform:translateY(2px) rotate(.5deg)}70%{transform:translateY(-1px)}}
@keyframes hanruiLift{40%{transform:translateY(-2px) rotate(-.5deg)}}
@keyframes hanruiTilt{40%,65%{transform:rotate(1.2deg)}}
@keyframes hanruiShy{35%,75%{transform:rotate(-1.3deg) translateY(1px)}}
@keyframes hanruiLean{45%,100%{transform:scale(1.008) translateY(1px)}}
@media(prefers-reduced-motion:reduce){#hrParty[data-gesture] .hanrui-sprite{animation:none}}

/* A ribboned keepsake, with a quiet reveal and a soft birthday bloom. */
#celebration{position:absolute;inset:0;pointer-events:none;z-index:31}
#bigText{top:14.5%;width:max-content;max-width:88%;padding:.65em 1.1em;border:1px solid #ead5a8;border-radius:1.3em;color:#9b7951;background:#fff8e9ed;font-family:Georgia,serif;font-size:clamp(17px,4.7vw,27px);font-weight:normal;letter-spacing:.12em;text-shadow:0 1px #fff;box-shadow:0 5px 24px #d2ad6450;transition:opacity .8s,scale .8s}
#bigText::before,#bigText::after{content:'✦';color:#d9b66c;font-size:.7em;display:inline-block;vertical-align:middle}
#bigText::before{margin-right:.65em}#bigText::after{margin-left:.65em}
#sParty.gift-time #cakeBox{transform:translateY(-19%) scale(.72);transition:transform 1s ease-in-out}
#gift{left:50%;bottom:20%;width:min(34%,20vh,160px);aspect-ratio:1.05;outline:none}
#gift:focus-visible{outline:2px solid #b59665;outline-offset:7px;border-radius:20px}
#gift::after{content:'';position:absolute;left:-12%;right:-12%;bottom:-6%;height:15%;border-radius:50%;background:#a78b4c25;filter:blur(5px);z-index:-1}
#gift .gb{left:9%;right:9%;height:60%;bottom:2%;border:2px solid #8eaa80;border-radius:8px 8px 13px 13px;background:linear-gradient(90deg,transparent 41%,#fff0ce 41%,#fff0ce 59%,transparent 59%),linear-gradient(110deg,#c4d7b5,#a6c399);box-shadow:inset 0 5px #8aa87940,inset 0 -5px #95b18a30,0 3px 0 #b08b5320;z-index:2}
#gift .gl{top:26%;height:22%;left:3%;right:3%;border:2px solid #8eaa80;border-radius:7px;background:linear-gradient(90deg,transparent 42%,#fff3d8 42%,#fff3d8 58%,transparent 58%),#d2e0c2;box-shadow:inset 0 3px #e5efdb,0 3px 0 #839b7130;z-index:3;transform-origin:15% 100%;transition:transform 1s cubic-bezier(.25,.75,.25,1),opacity .85s}
#gift .gl::before,#gift .gl::after{content:'';position:absolute;top:-110%;width:34%;height:118%;border:6px solid #ffedc7;background:#ffe8b740;border-radius:80% 80% 20% 80%;box-shadow:inset 0 0 0 1px #d3b68170,0 0 0 1px #d3b68170}
#gift .gl::before{left:18%;translate:none;rotate:20deg}
#gift .gl::after{right:18%;rotate:70deg}
#gift .gl i{position:absolute;left:42%;top:-34%;width:16%;height:48%;border-radius:5px;background:#ffe6b0;border:1px solid #d7b981;z-index:2}
.gift-tag{position:absolute;left:68%;top:26%;width:22%;aspect-ratio:.8;background:#fff7e4;border:1px solid #dcc799;border-radius:4px;rotate:15deg;color:#c9a55d;display:grid;place-items:center;font-size:.9em}
.gift-tag::before{content:'';position:absolute;left:47%;top:-45%;height:45%;border-left:1px solid #af9869}
.gift-caption{position:absolute;left:50%;top:108%;translate:-50% 0;white-space:nowrap;color:#947958;font-size:.76em;letter-spacing:.1em}
.gift-aura{position:absolute;inset:-50% -40% -5%;border-radius:50%;background:radial-gradient(ellipse,#fff3beaa,transparent 65%);opacity:0;transition:opacity 1s;z-index:0}
#gift.shk{animation:giftNudge .5s ease-in-out}
@keyframes giftNudge{25%{rotate:-3deg;translate:-50% -2px}65%{rotate:3deg;translate:-50% -2px}}
#gift.open .gl{transform:translate(-12%,-145%) rotate(-24deg);opacity:0}
#gift.open .gift-aura{opacity:1}
#gift #prize{width:82%;bottom:29%;transform:translateY(30%) scale(.3);opacity:0;transition:transform 1.2s cubic-bezier(.2,.9,.3,1.12),opacity .55s;filter:drop-shadow(0 0 14px #ffe2a466);z-index:1}
#gift.open #prize{opacity:1;transform:translateY(-42%) scale(1.06)}
@media(max-height:600px) and (min-width:600px){#gift{left:78%;bottom:23%;width:18%;max-width:120px}#bigText{top:13%;font-size:18px}#sParty.gift-time #cakeBox{transform:translateY(-8%) scale(.85)}}
@media(prefers-reduced-motion:reduce){#gift.shk{animation:none}#gift .gl,#gift #prize,#sParty.gift-time #cakeBox{transition:opacity .15s}}

/* One warm forest light, with the toy resting in the clearing. */
#sSquish{--migu-ground:28%;background:#e9efdc}
#sSquish .dots{filter:saturate(.78) contrast(.94) brightness(1.025)}
#sSquish .dots::after{content:'';inset:0;background:linear-gradient(165deg,#fff9df28,transparent 48%,#9eaf8914);rotate:none}
#sSquish .halo{top:49%;width:min(110%,76vh,690px);aspect-ratio:.9;background:radial-gradient(ellipse,#fffbea75 0,#fff8e52b 43%,transparent 71%);pointer-events:none}
#stage::before{content:'';position:absolute;left:50%;bottom:calc(var(--migu-ground) - 5%);translate:-50% 0;width:min(88%,60vh,550px);height:13%;border-radius:50%;background:radial-gradient(ellipse,#bdca8d40 0,#d8dfa23b 36%,transparent 72%);pointer-events:none}
#miguWrap{bottom:var(--migu-ground);width:min(72%,48.8vh,437px);filter:sepia(.14) saturate(.78) brightness(1.05) contrast(.9)}
#shadow{bottom:calc(var(--migu-ground) - 2.4%);width:min(59%,40vh,360px);height:4.8%;border-radius:50%;background:radial-gradient(ellipse,#77865c45 0,#8796632e 36%,#95a7740d 61%,transparent 76%)}
#shadow::after{content:'';position:absolute;left:50%;top:32%;translate:-50% 0;width:52%;height:28%;border-radius:50%;background:radial-gradient(ellipse,#687a4b60,#78895724 58%,transparent 76%);filter:blur(2px)}
.forest-sprigs{position:absolute;left:50%;bottom:calc(var(--migu-ground) - 16px);translate:-50% 0;width:min(90%,61vh,548px);height:auto;opacity:.7;pointer-events:none}
#sSquish .topbar{top:3%;background:#fafbedcc;border:1px solid #dce4cb;border-radius:1.6em;box-shadow:0 3px 16px #7d926b0d;backdrop-filter:blur(10px)}
#sSquish .elabel,#sSquish .epct{color:#7c8b67}
#sSquish .ebar{background:#e5ebd6;border-color:#cdd9bb;height:.85em}
#sSquish .efill{background:linear-gradient(90deg,#cfddb6,#aabf8d)}
#sSquish #erunner{filter:sepia(.14) saturate(.78) contrast(.9)}
#sSquish .controls-toggle{background:#fafbedc9;border-color:#d4dfc4;color:#7c8b67;border-radius:1.5em;box-shadow:0 3px 12px #71875b0c;backdrop-filter:blur(10px)}
#sSquish .controls-toggle[aria-expanded="true"]{background:#8e9e79;color:#fffdf0}
#sSquish .play-controls{background:#fafbeded;border-color:#d4dfc4;box-shadow:0 6px 24px #71875b18}
#miguBubble{background:#fffdf1;border-color:#c7d4b4;color:#768260;box-shadow:0 3px 12px #71875b12}
#miguBubble::after{background:#fffdf1;border-color:#c7d4b4}
@media(max-height:600px) and (min-width:600px){#sSquish{--migu-ground:19%}#sSquish .halo{top:46%}.forest-sprigs{width:59vh}}

/* Separate spaces on the table for the cake and the opening keepsake. */
#sParty.gift-time #cakeBox{left:32%;width:min(54%,27vh,300px);transform:scale(.84);transition:left .8s ease-in-out,width .8s ease-in-out,transform .8s ease-in-out}
#sParty.gift-time #gift{left:78%;bottom:20%;width:min(26%,18vh,142px)}
#sParty.gift-time .gift-caption{box-sizing:border-box;top:110%;width:max-content;max-width:38vw;padding:7px 12px;border:1px solid #dfcfae;border-radius:12px;background:#fff9ecf5;color:#826d50;font-size:clamp(11px,2.9vw,13px);font-weight:500;letter-spacing:.025em;white-space:normal;word-break:keep-all;text-align:center;line-height:1.6;box-shadow:0 3px 9px #8068400c}
@media(max-height:600px) and (min-width:600px){#sParty.gift-time #cakeBox{left:46%;width:27vh;max-width:none;transform:scale(.84)}#sParty.gift-time #gift{left:77%;bottom:21%;width:18vh}#sParty.gift-time .gift-caption{max-width:24vw}.play-controls{padding:.65em;gap:.35em}.address-setting{padding-top:.35em}}
