:root{--paper:#fffdf6;--cream:#fff1c9;--honey:#ffd57b;--coral:#ff4f70;--coral-dark:#b42e4b;--ink:#2a202f;--sky:#43b7e8;--shadow:#2a202f33;color:var(--ink);font-synthesis:none;background:#f0c886;font-family:Microsoft YaHei UI,PingFang SC,sans-serif}*{box-sizing:border-box}html,body{min-width:320px;min-height:100%;margin:0}body{background:linear-gradient(115deg,#ffffff42,#0000 34%),#f0c886;min-height:100dvh;overflow-x:hidden}button{color:inherit;font:inherit}button:focus-visible{outline-offset:4px;outline:4px solid #167faa}.game-stage:focus-visible{outline-offset:-6px;outline:4px solid #167faa}.page-shell{place-items:center;min-height:100dvh;display:grid}.game-stage{isolation:isolate;width:min(100%,31rem);min-height:100dvh;padding:max(.8rem, env(safe-area-inset-top)) 1rem max(.8rem, env(safe-area-inset-bottom));background:radial-gradient(circle at 14% 20%, #ffffffeb 0 9%, transparent 9.4%), radial-gradient(circle at 82% 48%, #fffc 0 18%, transparent 18.4%), linear-gradient(155deg, var(--paper) 0 19%, var(--cream) 53%, var(--honey) 128%);grid-template-rows:auto auto minmax(0,1fr) auto;display:grid;position:relative;overflow:hidden}.game-stage:before{z-index:-1;content:"";opacity:.18;background-image:radial-gradient(var(--ink) .7px, transparent .8px);background-size:10px 10px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 82%);mask-image:linear-gradient(#000,#0000 82%)}.paper-dot{z-index:-1;border:3px dashed #ff4f7038;border-radius:50%;width:8rem;height:8rem;position:absolute}.paper-dot-one{top:18%;right:-5.5rem}.paper-dot-two{border-color:#43b7e838;width:10rem;height:10rem;bottom:13%;left:-6rem}.score-header{z-index:6;position:relative}.mission-label{width:max-content;color:var(--paper);background:var(--ink);letter-spacing:.08em;border-radius:.3rem;margin:0 0 .45rem .3rem;padding:.24rem .6rem;font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:clamp(.68rem,2.8vw,.8rem);font-weight:700;rotate:-1.5deg}.name-editor{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.35rem;margin:.35rem .15rem .5rem;display:grid}.name-editor label{font-size:.68rem;font-weight:900}.name-editor input{border:2px solid var(--ink);min-width:0;height:2rem;color:var(--ink);background:var(--paper);border-radius:.55rem;padding:0 .55rem;font:700 .76rem Microsoft YaHei UI,PingFang SC,sans-serif}.name-editor button{border:2px solid var(--ink);background:var(--honey);cursor:pointer;border-radius:.55rem;height:2rem;padding:0 .55rem;font-size:.68rem;font-weight:900}.score-strip{border:3px solid var(--ink);box-shadow:.25rem .3rem 0 var(--ink);background:#fffdf6e0;border-radius:1rem .75rem 1.15rem .65rem;grid-template-columns:repeat(3,1fr) auto;align-items:center;gap:.38rem;padding:.5rem .55rem;display:grid;rotate:.65deg}.metric{text-align:center;min-width:0}.metric+.metric{border-left:2px dashed #2a202f3d}.metric-label{letter-spacing:.06em;margin-bottom:-.05rem;font-size:clamp(.58rem,2.5vw,.7rem);font-weight:800;display:block}.metric strong{color:var(--coral-dark);font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:clamp(1.22rem,5vw,1.55rem);line-height:1;display:block}.icon-button{border:3px solid var(--ink);background:var(--honey);cursor:pointer;border-radius:50%;place-items:center;width:2.6rem;height:2.6rem;padding:0;display:grid}.icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;width:1.35rem;height:1.35rem}.volume-off,.icon-button[aria-pressed=true] .volume-on{display:none}.icon-button[aria-pressed=true] .volume-off{display:block}.speech-bubble{z-index:5;width:min(88%,23rem);min-height:4.15rem;color:var(--ink);border:3px solid var(--ink);box-shadow:.28rem .34rem 0 var(--ink);text-align:center;background:#fffffff0;border-radius:1.15rem 1.15rem 1.15rem .25rem;place-items:center;margin:.65rem auto 0 .15rem;padding:.7rem 1rem;font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:clamp(.92rem,4vw,1.08rem);font-weight:800;line-height:1.4;display:grid;position:relative;rotate:-.7deg}.speech-bubble:after{content:"";border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);clip-path:polygon(0 0,100% 100%,0 68%);background:#fff;width:1.5rem;height:1.35rem;position:absolute;bottom:-.72rem;right:-1.05rem;rotate:18deg}.character-stage{place-items:center;min-height:0;display:grid;position:relative;translate:4%}.character-window{aspect-ratio:1/2;filter:drop-shadow(0 .72rem .45rem #2a202f24);max-width:76vw;height:min(53vh,32rem);position:relative;overflow:hidden}.character-strip{object-fit:fill;width:300%;max-width:none;height:100%;transition:transform 70ms step-end;position:absolute;bottom:0;left:0;transform:translate(0)}.fallback-character{display:none;position:absolute;inset:8% 8% 4%}.character-window.asset-failed .character-strip{display:none}.character-window.asset-failed .fallback-character{display:block}.fabric-tone{z-index:3;clip-path:polygon(10% 10%,85% 0,100% 35%,84% 86%,55% 94%,14% 100%,0 45%);mix-blend-mode:screen;opacity:.12;pointer-events:none;transform-origin:88%;background:#27384b;border-radius:0;width:48%;height:15.5%;position:absolute;bottom:24%;left:22%;overflow:hidden}.fabric-tone:before{content:"";border-top:2px solid #fffdf652;border-radius:50%;position:absolute;inset:8% 7% 38%}.fabric-tone span{left:50%;background:#fffdf666;width:3px;position:absolute;inset-block:0}.game-stage[data-color-level=coral] .fabric-tone{opacity:.4;background:#ff786f}.game-stage[data-color-level=red] .fabric-tone{opacity:.46;background:#e33b54}.game-stage[data-color-level=purple] .fabric-tone{opacity:.5;background:#7b3f91}.fallback-body{border:4px solid var(--ink);background:#262730;border-radius:45% 45% 32% 38%;height:62%;position:absolute;bottom:0;left:18%;right:8%}.fallback-hair{z-index:2;aspect-ratio:1;border:4px solid var(--ink);background:#15151b;border-radius:48% 48% 43% 50%;width:82%;position:absolute;top:2%;left:7%}.fallback-glasses{z-index:3;border:5px solid var(--ink);border-radius:2rem;width:68%;height:15%;position:absolute;top:26%;left:16%}.hit-target{z-index:6;color:#0000;width:clamp(5.7rem,27vw,7.3rem);height:clamp(3.7rem,17vw,4.8rem);box-shadow:none;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:0;font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:.75rem;font-weight:900;position:absolute;bottom:31.5%;left:49%;translate:-50%;rotate:-7deg}.hit-target:focus-visible{outline:none}.active-prop{z-index:8;opacity:0;transform-origin:100%;pointer-events:none;filter:drop-shadow(.14rem .2rem #2a202f59);width:9rem;height:4.8rem;position:absolute;bottom:27.5%;right:-7rem}.prop-head,.prop-handle,.prop-flex{display:block;position:absolute}.prop-handle{border:3px solid var(--ink);background:var(--honey);border-radius:999px;width:6.5rem;height:.62rem;top:2.15rem;right:0}.prop-head{border:3px solid var(--ink);background:var(--coral);width:3.8rem;height:2.2rem;top:.65rem;left:0}.prop-flex{opacity:0;border-top:3px solid #ffffffb8;border-radius:50%;width:1.5rem;height:1.4rem;top:1.75rem;right:2.35rem}.game-stage[data-prop=hand] .prop-head{background:linear-gradient(90deg,#0000 0 21%,#2a202f47 22% 25%,#0000 26% 46%,#2a202f47 47% 50%,#0000 51% 72%,#2a202f47 73% 76%,#0000 77%),#ffd1ad;border-radius:48% 48% 34% 42%;width:3.65rem;height:3rem;top:.42rem}.game-stage[data-prop=hand] .prop-handle{background:#ffd1ad}.game-stage[data-prop=slipper] .prop-head{background:linear-gradient(145deg, #ffffff8c, transparent 48%), var(--coral);border-radius:1.8rem .65rem 1.25rem .45rem;width:4.2rem;height:2.25rem;top:.72rem;transform:rotate(-10deg)}.game-stage[data-prop=slipper] .prop-head:after{content:"";border:3px solid var(--ink);border-bottom:0;border-radius:999px 999px 0 0;height:.5rem;position:absolute;inset:34% 18% auto 26%}.game-stage[data-prop=duster] .prop-head{clip-path:polygon(50% 0,65% 27%,96% 10%,78% 45%,100% 66%,68% 68%,72% 100%,48% 76%,23% 100%,27% 68%,0 60%,25% 43%,8% 15%,38% 27%);background:var(--sky);width:4.1rem;height:3.4rem;filter:drop-shadow(0 0 .08rem var(--ink));border:0;top:.15rem}.game-stage[data-prop=duster] .prop-handle{background:#8b5b3c;border-width:2px;height:.42rem}.game-stage[data-prop=duster] .prop-flex{opacity:1}.game-stage[data-prop=hammer] .prop-head{background:radial-gradient(circle at 27% 30%, #ffffffbf 0 8%, transparent 9%), var(--coral);border-radius:.8rem;width:4.2rem;height:2.75rem;top:.35rem;box-shadow:inset -.32rem -.32rem #b42e4b40}.game-stage[data-prop=hammer] .prop-head:after{content:"";background:#2a202f52;width:3px;position:absolute;top:.38rem;bottom:.38rem;left:50%}.impact-word{z-index:9;opacity:0;color:var(--coral);letter-spacing:-.14em;text-shadow:2px 0 #fff,-2px 0 #fff,0 2px #fff,0 -2px #fff;font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:clamp(2.2rem,12vw,3.5rem);font-weight:1000;position:absolute;bottom:34%;right:6%;rotate:11deg}.tear{z-index:9;opacity:0;background:var(--sky);border:2px solid #167faa;border-radius:55% 45%;width:1.05rem;height:1.72rem;position:absolute;top:26%}.tear-left{left:28%;rotate:24deg}.tear-right{right:23%;rotate:-22deg}.speed-line{z-index:7;opacity:0;background:var(--coral);border-radius:999px;width:3.2rem;height:.32rem;position:absolute;right:3%}.speed-line-one{bottom:26%;rotate:-13deg}.speed-line-two{width:2.2rem;bottom:22%;rotate:2deg}.motion-trail{z-index:7;opacity:0;transform-origin:100%;pointer-events:none;background:linear-gradient(90deg,#0000,#2a202fb8);border-radius:999px;width:5.4rem;height:.22rem;position:absolute;bottom:33%;right:2%}.motion-trail-one{rotate:-13deg}.motion-trail-two{width:3.9rem;bottom:29%;right:5%;rotate:-4deg}.controls{z-index:10;text-align:center;position:relative}.prop-picker{grid-template-columns:repeat(4,minmax(0,1fr));gap:.32rem;margin-bottom:.45rem;display:grid}.prop-option{border:2px solid var(--ink);cursor:pointer;background:#fffdf6e6;border-radius:.65rem;place-items:center;gap:.05rem;min-width:0;min-height:2.65rem;padding:.22rem .1rem;font-size:.58rem;font-weight:900;display:grid}.prop-option[aria-pressed=true]{color:var(--paper);background:var(--coral);box-shadow:0 .18rem 0 var(--ink)}.prop-option i{border:2px solid;border-radius:.45rem .18rem .35rem .16rem;width:1.35rem;height:.55rem;transform:rotate(-10deg)}.hit-button{border:4px solid var(--ink);color:#fff;background:var(--coral);width:min(100%,25rem);min-height:3.6rem;box-shadow:0 .42rem 0 var(--coral-dark);letter-spacing:.12em;cursor:pointer;border-radius:1rem 1.35rem .9rem 1.25rem;justify-content:center;align-items:center;gap:.75rem;padding:.65rem 1rem;font-family:YouYuan,FZYaoti,STKaiti,cursive;font-size:1.18rem;font-weight:1000;display:inline-flex;rotate:-.45deg}.hit-button:active{box-shadow:0 .12rem 0 var(--coral-dark);translate:0 .3rem}.tap-mark{border:3px solid;border-radius:45% 55% 48% 52%;width:1.75rem;height:1.65rem;display:inline-block;position:relative;rotate:-15deg}.tap-mark i{background:currentColor;border-radius:999px;width:.28rem;height:.62rem;display:block;position:absolute;top:-.55rem}.tap-mark i:first-child{left:.18rem;rotate:-14deg}.tap-mark i:nth-child(2){top:-.7rem;left:.62rem}.tap-mark i:nth-child(3){right:.18rem;rotate:14deg}.controls p{letter-spacing:.03em;opacity:.68;margin:.58rem 0 0;font-size:.68rem;font-weight:700}.game-stage[data-reaction=impact] .character-strip{transform:translate(-33.333%)}.game-stage[data-reaction=windup] .active-prop{opacity:1;animation:prop-windup var(--prop-swing-ms) cubic-bezier(.55, .02, .25, 1) both}.game-stage[data-reaction=windup] .motion-trail{opacity:.55;animation:trail-windup var(--prop-swing-ms) ease-in both}.game-stage[data-reaction=windup] .character-window{animation:90ms ease-out both body-brace}.game-stage[data-reaction=impact] .active-prop{opacity:1;animation:.14s cubic-bezier(.2,.8,.25,1) both prop-contact}.game-stage[data-reaction=impact] .impact-word{opacity:1;animation:.19s cubic-bezier(.2,.85,.25,1) both impact-pop}.game-stage[data-reaction=impact] .speed-line,.game-stage[data-reaction=impact] .motion-trail{opacity:1;animation:.18s ease-out both trail-sweep}.game-stage[data-reaction=impact] .fabric-tone{animation:.18s cubic-bezier(.2,.8,.25,1) both fabric-compress}.game-stage[data-reaction=impact] .character-window{animation:.3s cubic-bezier(.2,.7,.25,1) both body-recoil}.game-stage[data-reaction=crying] .character-strip{transform:translate(-66.666%)}.game-stage[data-reaction=crying] .character-window{animation:.42s cubic-bezier(.2,.7,.25,1) both body-rebound}.game-stage[data-reaction=crying] .tear{opacity:1;animation:.62s ease-out both tear-fly}.game-stage.is-milestone{animation:.36s ease-out milestone-pop}@keyframes prop-windup{0%{transform:rotate(24deg)translate(2rem)}to{transform:rotate(2deg)translate(-2.7rem)}}@keyframes prop-contact{0%{transform:rotate(2deg)translate(-2.7rem)}45%{transform:rotate(-14deg)translate(-5.7rem)scaleX(.9)}to{transform:rotate(7deg)translate(-3.5rem)}}@keyframes trail-windup{0%{transform:translate(2.5rem)scaleX(.35)}to{transform:translate(-2.1rem)scaleX(1)}}@keyframes trail-sweep{0%{transform:translate(1.4rem)scaleX(.35)}to{opacity:0;transform:translate(-4.7rem)scaleX(1)}}@keyframes impact-pop{0%{transform:scale(.55)rotate(-8deg)}55%{transform:scale(1.12)rotate(3deg)}to{transform:scale(1)rotate(0)}}@keyframes fabric-compress{45%{transform:translateX(calc(-1 * var(--fabric-compression))) scaleX(.9)}to{transform:translate(0)scaleX(1.03)}}@keyframes body-brace{to{transform:translate(.16rem)rotate(.6deg)}}@keyframes body-recoil{50%{transform:translateX(calc(-1 * var(--body-rebound))) rotate(-4deg) scaleY(.96)}}@keyframes body-rebound{45%{transform:translateX(calc(var(--body-rebound) * .45)) rotate(2deg) translateY(-.5rem)}}@keyframes tear-fly{0%{translate:0;scale:.65}to{translate:0 2.7rem;scale:1.15}}@keyframes milestone-pop{50%{scale:1.018}}@media (width>=42rem){.page-shell{padding:2rem}.game-stage{aspect-ratio:9/16;border:6px solid var(--ink);width:min(31rem,56.25dvh - 2.25rem);height:min(56rem,100dvh - 4rem);min-height:0;box-shadow:0 1.4rem 0 #2a202f21, 0 2rem 4rem var(--shadow);border-radius:2.25rem}}@media (height<=42rem){.speech-bubble{min-height:3.5rem;margin-top:.4rem}.character-window{height:min(47vh,26rem)}.controls p{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.active-prop,.motion-trail,.fabric-tone,.character-window{transition:none!important;animation:none!important}.motion-trail,.speed-line,.tear{display:none}.fabric-tone,.character-window{transform:none!important}.game-stage[data-reaction=impact] .active-prop{transform:translate(-4.8rem)rotate(-8deg)}}
