:root{--paper: #fbf3e1;--card: #fffaf0;--ink: #33221a;--muted: #5c4636;--accent: #ffcf33;--danger: #c02a1f;--hint: #1558c0;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--paper);color:var(--ink);font:600 16px/1.35 ui-rounded,SF Pro Rounded,Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none;touch-action:manipulation}[hidden]{display:none!important}.screen{display:flex;flex-direction:column;height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);max-width:640px;margin:0 auto}button{font:inherit;font-weight:700;color:var(--ink);background:var(--card);border:2.5px solid var(--ink);border-radius:16px;box-shadow:0 4px 0 var(--ink);cursor:pointer;transition:transform 60ms ease-out,box-shadow 60ms ease-out}button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}button:disabled{color:#7d6b5e;border-color:#7d6b5e;box-shadow:0 4px #b7a898;cursor:default}button:disabled .pic{filter:grayscale(1);opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid var(--hint);outline-offset:3px}button.primary{background:var(--accent)}button.primary:disabled{background:var(--card)}.link{background:none;border:none;box-shadow:none;color:var(--muted);font-weight:600;text-decoration:underline;padding:12px}.icon,.pic{display:block;width:100%;height:100%}.chip{padding:4px 12px;border:2.5px solid var(--ink);border-radius:999px;background:var(--card);font-size:.9rem;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}#menu{overflow-y:auto;touch-action:pan-y}.menu-head{display:flex;align-items:center;gap:14px;padding:22px 18px 6px}.hero{flex:none;width:84px;height:84px;border:2.5px solid var(--ink);border-radius:50%;background:var(--accent);box-shadow:0 4px 0 var(--ink);padding:6px}.menu-head h1{margin:0;font-size:2.6rem;font-weight:800;line-height:1}.menu-head p{margin:6px 0 0;color:var(--muted);font-size:.95rem}.level-list{padding:0 16px}.group{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px;font-size:1.15rem;font-weight:800}.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:10px 8px}.tiles.daily{grid-template-columns:repeat(7,1fr);gap:10px 5px}.day{text-align:center;font-size:.8rem;font-weight:700;color:var(--muted)}.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:56px;background:var(--card);border:2.5px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 var(--ink);color:var(--ink);text-decoration:none}.tile:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.tile.done{background:var(--accent)}.tile .num{font-size:1.15rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.pips{display:flex;gap:3px}.pips i{width:8px;height:8px;border:2px solid var(--ink);border-radius:50%;opacity:.35}.tile.done .pips i{opacity:1;background:var(--card)}.tile.done .pips i.on{background:var(--ink)}.menu-foot{margin-top:auto;padding:20px 16px 16px;text-align:center}.top{display:flex;align-items:center;gap:10px;height:64px;padding:0 14px;flex:none}.icon-btn{flex:none;width:48px;height:44px;padding:7px 9px}#lvl-name{flex:1;min-width:0;font-size:1.1rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#stage{position:relative;flex:1;min-height:0;padding:8px 16px;display:flex;align-items:center;justify-content:center}#board{width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}#msg{margin:0;padding:0 18px;min-height:2.9em;flex:none;text-align:center;font-size:.95rem;font-weight:700;color:var(--ink)}.bar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:10px;padding:4px 14px 18px;flex:none}.bar button{min-height:68px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.85rem}.bar .ico{width:30px;height:30px}.bar .busy .ico{animation:think .7s ease-in-out infinite alternate}@keyframes think{to{transform:scale(1.2) rotate(-8deg)}}.pulse{animation:pulse .9s ease-in-out infinite}@keyframes pulse{50%{background:var(--accent);transform:scale(1.05)}}.card{position:absolute;inset:50% 24px 24px;margin:auto;max-width:320px;height:fit-content;transform:translateY(-50%);padding:46px 20px 20px;text-align:center;background:var(--card);border:3px solid var(--ink);border-radius:24px;box-shadow:0 6px 0 var(--ink),0 0 0 100vmax #33221a59;animation:pop .26s cubic-bezier(.3,1.5,.6,1)}@keyframes pop{0%{transform:translateY(-50%) scale(.8);opacity:0}}.card-hero{position:absolute;top:-44px;left:50%;width:84px;height:84px;margin-left:-42px;padding:6px;border:3px solid var(--ink);border-radius:50%;background:var(--accent)}.card h2{margin:0 0 8px;font-size:1.6rem;font-weight:800}.card p{margin:4px 0}.stars.big{display:flex;justify-content:center;gap:6px;height:58px}.stars .pic{width:58px;height:58px}.pic.off{filter:grayscale(1) brightness(1.5);opacity:.3}.card-row{display:flex;gap:12px;margin-top:16px}.card-row button{flex:1;min-height:52px}.board-frame{fill:none;stroke:var(--ink);stroke-width:5}.r-mouth{opacity:0}.ink{stroke:var(--ink);stroke-width:5;stroke-linejoin:round;stroke-linecap:round}.glyph{font:700 34px system-ui,sans-serif;fill:#fff;stroke:#222;stroke-width:1.5;paint-order:stroke}.mover{transition:transform .12s linear,opacity .16s ease-out}.spin{transition:transform .17s cubic-bezier(.34,1.5,.64,1)}.instant,.instant *{transition:none!important}.block.appear{opacity:0}.block .art{transition:transform .24s ease-in}.block.leaving{opacity:0;transition:transform .12s linear,opacity .24s ease-in 60ms}.block.leaving .art{transform:scale(.4)}.block .glue{display:none}.block.stuck .glue{display:block}.rat.gone{opacity:0;transition:transform .12s linear,opacity .18s ease-in .12s}.r-body,.r-tail,.r-eyes,.r-foot{transform-box:fill-box}.rat .art{transition:transform .26s ease-in}.rat.gone .art{transform:scale(.35)}.r-body{transform-origin:50% 100%;animation:breathe 2.4s ease-in-out infinite}.r-tail{transform-origin:100% 85%;animation:tail 2.4s ease-in-out infinite}.r-eyes{transform-origin:50% 50%;animation:blink 4.2s linear infinite}@keyframes breathe{50%{transform:scale(1.025,.965)}}@keyframes tail{50%{transform:rotate(-10deg)}}@keyframes blink{0%,94%,to{transform:scaleY(1)}97%{transform:scaleY(.1)}}.rat.walking .r-body{animation:hop .13s ease-out}.rat.walking .r-tail{animation:tail-run .13s ease-out}.rat.walking .r-foot{animation:paddle .13s linear}.rat.walking .r-foot+.r-foot{animation-direction:reverse}@keyframes hop{50%{transform:translateY(-9px) scale(.97,1.05)}}@keyframes tail-run{50%{transform:rotate(14deg)}}@keyframes paddle{25%{transform:translate(6px)}75%{transform:translate(-6px)}}.rat.pushing .r-body{animation:push .13s ease-out}@keyframes push{50%{transform:translate(7px) rotate(9deg) scale(.94,1.03)}}.rat.eating .r-body{animation:chomp .48s ease-in-out}.rat.eating .r-mouth{animation:mouth .48s steps(1)}@keyframes chomp{15%,55%{transform:scale(1.08,.92)}35%,75%{transform:scale(.95,1.07)}}@keyframes mouth{0%,40%{opacity:1}20%,60%{opacity:0}}.crumbs circle{fill:#ffcf33;stroke:#33221a;stroke-width:3;animation:crumb .5s ease-out forwards}@keyframes crumb{to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}.rat.trapped .r-body{animation:struggle .55s ease-in-out infinite}.rat.trapped .r-tail{animation:tail .3s ease-in-out infinite}.rat.trapped .r-eyes{animation:none;transform:scale(1.4)}@keyframes struggle{25%{transform:rotate(-7deg)}75%{transform:rotate(7deg)}}.rat.snapped .r-body{animation:yelp .42s cubic-bezier(.3,1.6,.6,1)}@keyframes yelp{30%{transform:translateY(-22px) scale(.88,1.18)}}.rat .ring{fill:#ffcf3373;stroke:var(--ink);stroke-width:4;stroke-dasharray:14 10;opacity:0}.rat.active .ring{opacity:1}.solo .rat .ring{display:none}.bumping{animation:bump .18s ease-out}@keyframes bump{40%{transform:translate(var(--bx),var(--by))}}.flash{fill:#c02a1f59;stroke:var(--danger);stroke-width:6;animation:fade .6s ease-out forwards}@keyframes fade{to{opacity:0}}.choice{fill:#ffffff59;stroke:var(--ink);stroke-width:5;stroke-dasharray:12 8;animation:pulse-ring .8s ease-in-out infinite alternate}@keyframes pulse-ring{to{opacity:.45}}.hint-line{fill:none;stroke:var(--hint);stroke-width:12;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 24}.hint-end{fill:var(--hint);stroke:#fff;stroke-width:4}@media (prefers-reduced-motion: reduce){.pulse,.choice,.r-body,.r-tail,.r-eyes,.rat.trapped .r-body,.rat.trapped .r-tail,.card,.bar .busy .ico{animation:none}.mover,.spin{transition-duration:1ms}}
