:root{--paper:#FFF7EC;--ink:#3D3356;--soft:#8B7FA8}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{height:100%;overflow:hidden}body{font-family:var(--font-fredoka),system-ui,sans-serif;background:var(--paper);background-image:radial-gradient(#F3E4CC 2.2px,transparent 0);background-size:34px 34px;color:var(--ink);-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:none}.app{position:absolute;inset:0;flex-direction:column}.app,.home{display:flex}.home{flex:1 1;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;text-align:center}.home h1{font-size:clamp(28px,7vw,52px);font-weight:700}.home p{color:var(--soft);font-weight:500;margin-bottom:22px;font-size:clamp(14px,3.2vw,19px)}.cats{gap:clamp(14px,3.5vw,30px);flex-wrap:wrap;max-width:900px}.cat,.cats{display:flex;justify-content:center}.cat{width:clamp(140px,36vw,220px);aspect-ratio:1/1.15;border:none;border-radius:32px;cursor:pointer;font-family:inherit;color:#fff;flex-direction:column;align-items:center;gap:8px;box-shadow:0 8px 0 rgba(61,51,86,.18);transition:transform .12s,box-shadow .12s}.cat:active{transform:translateY(5px);box-shadow:0 3px 0 rgba(61,51,86,.18)}.cat .glyphs{font-size:clamp(36px,9vw,60px);font-weight:700;line-height:1;text-shadow:0 3px 0 rgba(0,0,0,.12)}.cat .flag{font-size:clamp(44px,11vw,72px);line-height:1}.cat .name{font-size:clamp(17px,4vw,24px);font-weight:700}.cat .prog{font-size:clamp(12px,2.8vw,15px);opacity:.9;font-weight:500}.game{flex:1 1;display:flex;flex-direction:column;min-height:0}.gameHeader{justify-content:space-between;gap:10px;padding:10px 14px 0}.gameHeader,.roundbtn{display:flex;align-items:center}.roundbtn{width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;flex-shrink:0;background:#fff;color:var(--ink);font-size:24px;line-height:1;box-shadow:0 4px 0 rgba(61,51,86,.15);justify-content:center}.roundbtn:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(61,51,86,.15)}.levelBadge{background:#fff;border-radius:999px;padding:6px 16px;font-weight:700;box-shadow:0 3px 0 rgba(61,51,86,.12);font-size:clamp(14px,3.2vw,18px);white-space:nowrap}.board{flex:1 1;width:100%;min-height:0}.board svg{width:100%;height:100%;display:block}.target-corridor{fill:none;stroke:#F1E6D4;stroke-width:30;stroke-linecap:round;stroke-linejoin:round}.target-guide{fill:none;stroke:#D9CBBB;stroke-width:3;stroke-dasharray:2 9;stroke-linecap:round}.target.glow .target-corridor{stroke:#FFE3A6}.target-text{fill:#F1E6D4;stroke:#D9CBBB;stroke-width:2;stroke-dasharray:3 8;text-anchor:middle;dominant-baseline:central}.target.glow .target-text{fill:#FFE3A6}.char{cursor:-webkit-grab;cursor:grab}.char.dragging{cursor:-webkit-grabbing;cursor:grabbing}.char .body-outer{stroke-width:27}.char .body-inner,.char .body-outer{fill:none;stroke-linecap:round;stroke-linejoin:round}.char .body-inner{stroke-width:19}.char .hit{fill:transparent;stroke:transparent;stroke-width:64;stroke-linecap:round;stroke-linejoin:round}.char .glyph-text{text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke-linejoin:round;font-weight:700}.bob{animation:bob 2.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes bob{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(2deg)}}.char.dragging .bob{animation:dragWobble .5s ease-in-out infinite}@keyframes dragWobble{0%,to{transform:rotate(-8deg) scale(1.04,.96) translateY(0)}25%{transform:rotate(0deg) scale(.92,1.09) translateY(-4px)}50%{transform:rotate(8deg) scale(1.04,.96) translateY(0)}75%{transform:rotate(0deg) scale(1.09,.92) translateY(-4px)}}.char.placed .bob{animation:none}.char.party .bob{animation:jelly .7s cubic-bezier(.4,1.6,.4,1)}@keyframes jelly{0%{transform:scale(1)}30%{transform:scale(1.15,.85)}55%{transform:scale(.9,1.12)}75%{transform:scale(1.06,.95)}to{transform:scale(1)}}.char.nope .bob{animation:nope .5s ease-in-out}@keyframes nope{0%,to{transform:translateX(0)}25%{transform:translateX(-7px)}50%{transform:translateX(7px)}75%{transform:translateX(-5px)}}.eye-white{fill:#fff;stroke:var(--ink);stroke-width:1.6}.pupil{fill:var(--ink)}.blink .eye-white,.blink .pupil{transform:scaleY(.08);transform-box:fill-box;transform-origin:center}.mouth{fill:none;stroke:var(--ink);stroke-width:2.6;stroke-linecap:round}.mouth-o{fill:var(--ink);stroke:none}.banner{position:absolute;inset:0;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;background:rgba(255,247,236,.94);opacity:0;pointer-events:none;transition:opacity .35s;text-align:center;padding:20px;z-index:4}.banner.show{opacity:1;pointer-events:auto}.banner .big{font-size:clamp(32px,8vw,58px);font-weight:700}.bannerbtns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}.banner button{font-family:inherit;font-weight:700;font-size:clamp(17px,4.2vw,24px);border:none;border-radius:999px;padding:13px 30px;cursor:pointer;color:#fff;box-shadow:0 5px 0 rgba(61,51,86,.18)}.banner button:active{transform:translateY(4px);box-shadow:0 1px 0 rgba(61,51,86,.18)}.nextLevelBtn{background:#3FC99B}.homeBtn{background:#4FA8F0}.confetti{position:absolute;top:-14px;width:12px;height:12px;pointer-events:none;animation:fall linear forwards;z-index:5}@keyframes fall{to{transform:translateY(110vh) rotate(2turn)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}.bob{animation:none}}.credits{position:fixed;left:0;right:0;bottom:10px;text-align:center;font-size:clamp(11px,2.6vw,13px);font-weight:500;color:var(--soft);pointer-events:none}.credits a{color:var(--soft);text-decoration:underline;text-underline-offset:2px;pointer-events:auto}.credits a:hover{color:var(--ink)}