:root{--bg: #f6f3ec;--surface: #ffffff;--ink: #23272f;--muted: #6d675e;--line: #e3ddcf;--line-strong: #c9c1ae;--red: #e3350d;--red-dark: #bc2c0a;--amber: #f59e0b;--amber-dark: #b45309;--amber-soft: #fdf3e0;--good: #16a34a;--bad: #dc2626;--track: #ece7da;--radius: 14px;--shadow: 0 1px 2px rgba(35, 39, 47, .05), 0 4px 14px rgba(35, 39, 47, .05)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}button{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;cursor:pointer;box-shadow:var(--shadow)}button:hover{border-color:var(--line-strong)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default;box-shadow:none}button.primary{background:var(--red);border-color:var(--red);color:#fff;font-weight:700}button.primary:hover{background:var(--red-dark);border-color:var(--red-dark)}button.ghost{background:transparent;border-color:transparent;color:var(--muted);box-shadow:none}button.big{width:100%;padding:14px;font-size:1.05rem;font-weight:600}:focus-visible{outline:2px solid var(--red);outline-offset:2px}input,select{font:inherit;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:9px 10px}a{color:var(--red)}.app{max-width:560px;margin:0 auto;padding:14px 14px 40px}.topbar{display:flex;align-items:center;gap:8px;color:var(--muted);margin-bottom:6px}.screen h1.logo{font-size:2.6rem;font-weight:800;margin:10px 0 4px;text-align:center;letter-spacing:.2px;color:var(--ink)}.hero-sprites{display:flex;justify-content:center;gap:6px;margin-top:14px}.hero-sprites img{width:56px;height:56px;object-fit:contain;filter:drop-shadow(0 3px 2px rgba(35,39,47,.18));animation:hero-bob 2.6s ease-in-out infinite}.hero-sprites img:nth-child(2){animation-delay:.35s}.hero-sprites img:nth-child(3){animation-delay:.7s}.hero-sprites img:nth-child(4){animation-delay:1.05s}@keyframes hero-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.tagline{text-align:center;color:var(--muted);margin:0 0 8px}.profile-line{text-align:center;color:var(--muted);margin:0 0 18px;font-weight:600}.menu{display:grid;gap:10px}.region{margin:18px 0}.region h2{margin:0 0 8px;font-size:1.15rem}.levels{display:grid;gap:8px}.level{display:grid;gap:2px;text-align:left}.level span{color:var(--muted);font-size:.92rem}.level-card{display:flex;align-items:center;gap:10px;text-align:left;width:100%}.level-card .level-text{display:grid;gap:2px;flex:1}.level-card .level-text span{color:var(--muted);font-size:.92rem}.level-foe{width:46px;height:46px;font-size:30px;text-align:center;object-fit:contain}.stars{color:var(--amber)!important;letter-spacing:2px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:12px 0;box-shadow:var(--shadow)}.card h2{margin-top:0}.row-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.file-button{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;cursor:pointer}.toggle{display:flex;gap:8px;align-items:center;margin-top:12px}.next-star,.in-progress{color:var(--amber-dark);font-size:.85rem;font-weight:600}.note{color:var(--muted);font-size:.85rem}.message{color:var(--amber-dark);min-height:1.2em;font-weight:600;margin:0}.error{color:var(--bad)}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;box-shadow:0 6px 20px #23272f40;z-index:30}.game{display:grid;gap:10px;position:relative}.game.shake{animation:shake .38s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px,2px) rotate(-.4deg)}45%{transform:translate(5px,-2px) rotate(.4deg)}70%{transform:translate(-3px,-1px)}}.game-hud{display:grid;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px;box-shadow:var(--shadow)}.hud-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.score{color:var(--ink);font-weight:800;font-size:1.15rem}.star-progress{position:relative;height:8px;background:var(--track);border-radius:999px;margin:2px 0 4px}.star-progress-fill{height:100%;border-radius:999px;background:var(--amber);transition:width .4s ease}.star-tick{position:absolute;top:-7px;transform:translate(-50%);color:var(--amber);font-size:.8rem}.star-tick.end{right:0;left:auto;transform:none}.opponent{display:flex;gap:12px;align-items:stretch}.foe-portrait{position:relative;flex:0 0 84px;border-radius:16px;background:var(--amber-soft);border:1px solid #f0dfae;display:grid;place-items:end center;overflow:visible}.foe-sprite{width:76px;height:76px;object-fit:contain;filter:drop-shadow(0 3px 2px rgba(35,39,47,.2))}.foe-portrait.hit .foe-sprite{animation:foe-hit .32s ease}@keyframes foe-hit{0%{transform:translate(0);filter:brightness(1.7) saturate(.4) drop-shadow(0 3px 2px rgba(35,39,47,.2))}30%{transform:translate(-5px) rotate(-3deg)}60%{transform:translate(4px) rotate(2deg)}to{transform:translate(0)}}.float-dmg{position:absolute;top:2px;right:2px;color:var(--bad);font-weight:900;font-size:1.05rem;text-shadow:0 1px 0 #fff,0 0 8px rgba(255,255,255,.9);animation:float-up .95s ease-out forwards;pointer-events:none}@keyframes float-up{0%{opacity:0;transform:translateY(8px) scale(.7)}18%{opacity:1;transform:translateY(0) scale(1.15)}to{opacity:0;transform:translateY(-30px) scale(1)}}.foe-main{flex:1;display:grid;align-content:start;gap:4px;min-width:0}.opponent-line{margin:0;display:flex;justify-content:space-between;gap:8px;align-items:baseline}.effectiveness{margin:2px 0 0;color:var(--muted);font-size:.9rem}.hp-bar,.meter{background:var(--track);border-radius:999px;height:14px;overflow:hidden;flex:1;position:relative}.hp-ghost{position:absolute;inset:0 auto 0 0;background:#d9770659;transition:width .9s ease .5s}.hp-fill{position:absolute;inset:0 auto 0 0;background:#e2483d;transition:width .18s ease}.meter-row{display:flex;gap:8px;align-items:center}.meter-fill{background:var(--amber);height:100%;transition:width .3s}.lead-button{white-space:nowrap}.lead-button.ready{background:var(--amber);border-color:var(--amber);color:#3a2703;font-weight:800;animation:ready-pulse .9s ease-in-out infinite}@keyframes ready-pulse{0%,to{box-shadow:0 0 #f59e0b73}50%{box-shadow:0 0 0 7px #f59e0b00}}.hud-stats{display:flex;justify-content:space-between;align-items:center;color:var(--ink);font-size:.92rem;gap:8px;flex-wrap:wrap}.moves-pill{background:#f1ede1;border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-weight:700}.moves-pill.danger{background:#fdecec;border-color:#f3b8b8;color:var(--bad);animation:ready-pulse .8s ease-in-out infinite}.egg-pips{display:inline-flex;gap:4px}.egg-pip{filter:grayscale(.7) opacity(.55)}.egg-pip.done{filter:none}.board-wrap{position:relative}.board{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;overflow:hidden;background:var(--surface);padding:8px;border-radius:18px;border:1px solid var(--line);box-shadow:var(--shadow);touch-action:none;user-select:none;-webkit-user-select:none}.callout{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:5;font-size:clamp(1.5rem,7.5vw,2.3rem);font-weight:900;letter-spacing:.5px;color:var(--red);text-shadow:0 2px 0 #fff,0 0 20px rgba(255,255,255,.95);animation:callout .85s ease forwards}@keyframes callout{0%{opacity:0;transform:scale(.5) rotate(-4deg)}22%{opacity:1;transform:scale(1.12) rotate(1deg)}38%{transform:scale(1)}78%{opacity:1}to{opacity:0;transform:scale(1.04) translateY(-10px)}}.cell{aspect-ratio:1;min-width:0;padding:1px;transition:transform .15s ease;border-radius:10px;background:#faf8f2;border:2px solid transparent;box-shadow:none;display:grid;place-items:center;position:relative;cursor:pointer}.cell:nth-child(16n+2),.cell:nth-child(16n+4),.cell:nth-child(16n+6),.cell:nth-child(16n+8),.cell:nth-child(16n+9),.cell:nth-child(16n+11),.cell:nth-child(16n+13),.cell:nth-child(16n+15){background:#f1ecdf}.cell.sliding{transition:transform .15s ease}.cell.selected{background:#fdeee8;border-color:var(--red);z-index:2}.cell.selected .sprite{transform:scale(1.1)}.cell.cleared{z-index:2}.cell.cleared .tile,.cell.cleared .pokeball{animation:pop .2s ease}@keyframes pop{45%{transform:scale(1.25) rotate(-3deg);filter:brightness(1.5)}to{transform:scale(.9);filter:brightness(1.9);opacity:.5}}.cell.fresh .tile,.cell.fresh .pokeball{animation:drop-in .34s cubic-bezier(.3,1.6,.5,1)}@keyframes drop-in{0%{transform:translateY(-52%) scale(.8);opacity:.4}60%{transform:translateY(4%) scale(1.03);opacity:1}to{transform:translateY(0) scale(1)}}.cell.evolved .tile{animation:evolve-flash .3s ease}@keyframes evolve-flash{0%{filter:brightness(2.2);transform:scale(.82)}to{filter:brightness(1);transform:scale(1)}}.cell.hint{animation:hint-pulse .9s ease-in-out infinite}@keyframes hint-pulse{0%,to{box-shadow:inset 0 0 0 2px #e3350d00}50%{box-shadow:inset 0 0 0 3px #e3350dd9}}.cell.wiggle{animation:wiggle .32s ease}@keyframes wiggle{0%,to{transform:translate(0)}25%{transform:translate(-4px)}65%{transform:translate(4px)}}.tile{width:100%;height:100%;min-width:0;display:grid;place-items:center;position:relative}.tile:before{content:"";position:absolute;inset:3%;border-radius:50%;border:3px solid transparent;pointer-events:none}.tile.special-evo:before{border-color:var(--amber)}.tile.special-aoe:before{border-color:#f95587}.sprite{width:100%;height:100%;min-width:0;object-fit:contain;filter:drop-shadow(0 2px 1px rgba(35,39,47,.18));position:relative;z-index:1;transition:transform .12s ease}.no-sprite .sprite{display:none}.no-sprite .tile{background:var(--track);border-radius:50%}.monogram{font-weight:800;font-size:clamp(.72rem,3.4vw,1.05rem);line-height:1;display:none;color:var(--ink)}.no-sprite .monogram{display:block}.tile-name{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:clamp(.4rem,2vw,.55rem);font-weight:700;letter-spacing:.01em;color:var(--ink);text-shadow:0 0 3px #fff,0 0 3px #fff,0 1px 0 #fff;z-index:2;pointer-events:none}.item-sprite{image-rendering:pixelated;padding:6%}.cell.dragging{transition:none}.special-badge{position:absolute;top:0;right:0;z-index:2;font-size:.55rem;font-weight:800;background:var(--ink);color:#ffd76a;border-radius:6px;padding:1px 4px}.pokeball{width:88%;height:88%;border-radius:50%;background:linear-gradient(#e3350d 0 46%,#23272f 46% 54%,#fff 54% 100%);display:grid;place-items:center;box-shadow:inset 0 2px 3px #ffffff80,0 2px 3px #23272f33;animation:ball-pulse 1.6s ease-in-out infinite}@keyframes ball-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.pokeball-button{width:26%;height:26%;border-radius:50%;background:#fff;border:3px solid #23272f}.blocker{width:94%;height:94%;display:grid;place-items:center;border-radius:12px;position:relative;text-align:center}.blocker .blocker-hp{position:absolute;bottom:1px;font-size:.5rem;color:var(--bad);letter-spacing:1px;z-index:2;font-weight:700}.blocker.egg{background:#fdf6dd;border:1px solid #e8d9a8;border-radius:50%/60% 60% 40% 40%}.blocker-sprite{width:62%;height:62%;object-fit:contain;opacity:.55}.blocker.crate{background:#b07a3f;color:#ffe1b0;border:2px solid #8a5a24}.blocker-glyph{font-weight:900;font-size:1.1rem}.blocker.rock{background:#a9a9b2;color:#f2f2f5;border:2px solid #7c7c86}.blocker.snorlax{background:#d9e8de;border:2px solid #b3cbb9}.snorlax-sprite{width:88%;height:88%;opacity:1}.zzz{position:absolute;top:1px;right:4px;color:var(--amber-dark);font-weight:800;font-style:italic;font-size:.62rem;animation:hero-bob 2.2s ease-in-out infinite}.overlay{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 16px;text-align:center;display:grid;gap:8px;justify-items:center;box-shadow:0 10px 28px #23272f24;animation:overlay-in .3s ease}@keyframes overlay-in{0%{opacity:0;transform:translateY(10px) scale(.97)}}.overlay .stars{font-size:1.9rem;margin:0}.star-pop{display:inline-block;color:#ddd6c4}.star-pop.lit{color:var(--amber);animation:star-pop .45s cubic-bezier(.3,1.8,.5,1) backwards;animation-delay:var(--d)}@keyframes star-pop{0%{transform:scale(0) rotate(-40deg);opacity:0}}.confetti{position:absolute;inset:0;pointer-events:none}.confetti span{position:absolute;left:50%;top:-8px;width:8px;height:13px;border-radius:2px;animation:confetti-fall 1.6s ease-in forwards;animation-delay:var(--d)}@keyframes confetti-fall{to{transform:translate(var(--x),340px) rotate(var(--r));opacity:0}}.dex-line{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.dex-chip{background:#f1ede1;border:1px solid transparent;border-radius:999px;padding:5px 11px;color:var(--muted)}.dex-chip.caught{background:var(--surface);color:var(--ink);border-color:var(--good)}.lab-controls{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}.lab-table{width:100%;border-collapse:collapse;font-size:.9rem}.lab-table th,.lab-table td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:right}.lab-table th:first-child,.lab-table td:first-child{text-align:left}.how h2{margin-bottom:4px}.how p{color:var(--muted);line-height:1.5}.auth-error{max-width:480px;margin:40px auto;padding:0 16px}@media(max-width:380px){.board{gap:3px;padding:5px}.foe-portrait{flex-basis:68px}.foe-sprite{width:60px;height:60px}}@media(prefers-reduced-motion:reduce){.tile,.pokeball,.foe-sprite,.hero-sprites img,.zzz,.lead-button.ready,.moves-pill.danger{animation:none!important}.game.shake{animation:none}}
