:root{--bg:#17121f;--bg2:#231b30;--panel:#2c2340;--line:#4a3d66;--ink:#f4efe2;--dim:#b9aed0;--gold:#ffd23f;--good:#4cd6a0;--bad:#ff6b7a;--accent:#8d6bff;--fs:1.1}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--ink);font:calc(16px * var(--fs)) / 1.4 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;overscroll-behavior:none;margin:0}body.hc{--bg:#000;--bg2:#000;--panel:#111;--line:#fff;--ink:#fff;--dim:#fff;--gold:#ffe600;--accent:#00e5ff}body.hc button,body.hc .card{border-width:3px}#app{max-width:1100px;min-height:100%;padding:0 0 env(safe-area-inset-bottom);flex-direction:column;margin:0 auto;display:flex}#top{padding:6px 10px;padding-top:calc(6px + env(safe-area-inset-top));background:var(--bg2);border-bottom:1px solid var(--line);z-index:5;align-items:center;gap:6px;display:flex;position:sticky;top:0}#top h1{letter-spacing:.02em;white-space:nowrap;margin:0 6px;font-size:1.05em;font-weight:800}.grow{text-align:right;color:var(--dim);flex:1;font-size:.85em}.ic,button.btn{border:2px solid var(--line);background:var(--panel);min-width:48px;min-height:48px;color:var(--ink);font:inherit;cursor:pointer;border-radius:14px;padding:0 14px;font-weight:700}.ic{padding:0;font-size:1.3em}button.btn:hover,.ic:hover{border-color:var(--gold)}button:focus-visible,canvas:focus-visible,a:focus-visible{outline:4px solid var(--gold);outline-offset:2px}button.btn.primary{background:linear-gradient(#8d6bff,#6a47e0);border-color:#b9a4ff}button.btn.gold{color:#2a1b00;background:linear-gradient(#ffd23f,#e8a900);border-color:#fff0a8}button.btn.danger{border-color:var(--bad)}button.btn:disabled{opacity:.4;cursor:default}#view{flex:1;padding:6px 6px 16px}.sr{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}h2{margin:12px 0 6px;font-size:1.2em}.muted{color:var(--dim)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;display:grid}.card{background:var(--panel);border:2px solid var(--line);color:inherit;text-align:left;font:inherit;cursor:pointer;border-radius:18px;width:100%;padding:12px;display:block}.card:hover{border-color:var(--gold)}.card b{font-size:1.05em;display:block}.card small{color:var(--dim);margin-top:2px;display:block}.card.big{padding:16px;font-size:1.1em}.card .tag{float:right;color:var(--gold);background:#000a;border-radius:999px;padding:2px 8px;font-size:.75em}.hero{border:2px solid var(--line);background:radial-gradient(120% 140% at 70% 0,#4a2f7a,#17121f 70%);border-radius:22px;align-items:center;gap:12px;margin-bottom:12px;padding:14px;display:flex}.hero canvas{flex:none;width:130px;height:100px}.hero h2{margin:0 0 4px;font-size:1.3em}.levels{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.lv{border:2px solid var(--line);background:var(--panel);color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:14px;min-height:56px;padding:8px 10px}.lv[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 2px var(--gold)}.lv small{color:var(--dim);display:block}.seg{border:2px solid var(--line);border-radius:14px;display:inline-flex;overflow:hidden}.seg button{background:var(--panel);min-height:48px;color:var(--ink);font:inherit;cursor:pointer;border:0;padding:0 14px;font-weight:700}.seg button[aria-pressed=true]{background:var(--accent);color:#fff}.game{grid-template-columns:minmax(0,1fr);gap:8px;max-width:760px;margin:0 auto;display:grid}.boardwrap{touch-action:none;border:3px solid #0008;border-radius:12px;width:100%;min-width:280px;max-width:min(100vw - 12px,100dvh - 215px);margin:0 auto;position:relative;overflow:hidden;box-shadow:0 6px 30px #0009}.zoomctl{z-index:2;flex-direction:column;gap:6px;display:flex;position:absolute;top:6px;right:6px}.zoomctl button{color:#fff;cursor:pointer;background:#000a;border:2px solid #fff6;border-radius:12px;width:44px;height:44px;font:700 20px system-ui}.boardwrap canvas.board{touch-action:none;width:100%;display:block}.pbar{align-items:center;gap:8px;min-height:34px;padding:0 4px;display:flex}.pbar .nm{font-weight:800}.pbar .tray{letter-spacing:-.1em;flex:1;min-height:1.2em;font-size:1.2em}.pbar .tray span{text-shadow:0 0 2px #000}.pbar .adv{color:var(--gold);font-weight:800}.pbar .dot{border:2px solid var(--ink);border-radius:50%;width:14px;height:14px;display:inline-block}.pbar .dot.on{background:var(--gold);box-shadow:0 0 8px var(--gold)}.coach{background:var(--panel);border:2px solid var(--line);border-left:8px solid var(--accent);border-radius:14px;min-height:3.2em;padding:10px 12px}.coach.warn{border-left-color:var(--gold)}.coach.bad{border-left-color:var(--bad)}.coach.good{border-left-color:var(--good)}.coach .acts{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.ctrls{grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:8px;display:grid}.ctrls button{flex-direction:column;justify-content:center;align-items:center;padding:4px 6px;font-size:.85em;line-height:1.1;display:flex}.ctrls button span{font-size:1.5em}.moves{background:var(--panel);font-variant-numeric:tabular-nums;border:2px solid var(--line);border-radius:12px;max-height:140px;padding:8px 12px;overflow:auto}.moves b{color:var(--dim);margin-right:4px;font-weight:600}.moves span{white-space:nowrap;margin-right:10px}.game .side,.game .main{gap:8px;display:grid}@media (width>=900px) and (aspect-ratio>=5/4){.game{grid-template-columns:minmax(0,1fr) 300px;align-items:start;max-width:1280px}.game .boardwrap{max-width:min(100dvh - 130px,100%)}}.fightlayer{z-index:3;cursor:pointer;background:#000;flex-direction:column;justify-content:center;display:flex;position:absolute;inset:0}.fightlayer canvas{aspect-ratio:1.38;width:100%;display:block}.fightlayer .cap{text-align:center;color:var(--gold);background:#000;justify-content:center;align-items:center;min-height:3.1em;padding:8px 12px;font-size:.92em;font-weight:800;display:flex}.fightlayer .skip{color:#fff;font:inherit;cursor:pointer;background:#000a;border:2px solid #fff6;border-radius:999px;padding:6px 12px;font-size:.8em;position:absolute;top:8px;right:8px}.modal{z-index:20;background:#000b;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal[hidden]{display:none}.sheet{background:var(--bg2);border:2px solid var(--line);width:100%;max-width:560px;max-height:92dvh;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;overflow:auto}@media (width>=640px){.modal{align-items:center;padding:20px}.sheet{border-radius:22px}}.sheet h2{margin-top:0}.set{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;min-height:52px;padding:10px 0;display:flex}.set input[type=range]{width:50%;min-height:32px;accent-color:var(--gold)}.switch{border:2px solid var(--line);background:var(--panel);cursor:pointer;border-radius:999px;flex:none;width:58px;height:34px;padding:0;position:relative}.switch[aria-checked=true]{background:var(--good);border-color:#fff9}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:left .15s;position:absolute;top:3px;left:3px}.switch[aria-checked=true]:after{left:27px}.promo{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.promo button{background:var(--panel);border:2px solid var(--line);min-width:0;min-height:96px;color:var(--ink);font-size:.85em;font:inherit;cursor:pointer;border-radius:16px;padding:4px 2px;font-weight:800}.promo canvas{aspect-ratio:1;width:100%;max-width:70px;height:auto;margin:0 auto 2px;display:block}.bar{background:#0005;border-radius:999px;height:10px;margin:6px 0;overflow:hidden}.bar i{background:linear-gradient(90deg, var(--accent), var(--gold));height:100%;display:block}.book{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;display:grid}.book .cell{background:var(--panel);border:2px solid var(--line);text-align:center;color:inherit;font:inherit;cursor:pointer;border-radius:14px;padding:8px}.book .cell.lock{opacity:.55;cursor:default}.book canvas{aspect-ratio:1.4;width:100%;display:block}.book small{color:var(--dim);line-height:1.2;display:block}.puz{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.puz button{border:2px solid var(--line);background:var(--panel);min-width:48px;min-height:48px;color:var(--ink);font:inherit;cursor:pointer;border-radius:12px;font-weight:800}.puz button.done{border-color:var(--good);background:#1f6b4f}#toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));border:2px solid var(--gold);opacity:0;pointer-events:none;z-index:30;text-align:center;background:#000d;border-radius:999px;max-width:90vw;padding:10px 16px;transition:all .25s;position:fixed;transform:translate(-50%)translateY(20px)}#toast.on{opacity:1;transform:translate(-50%)}.hidden{display:none!important}#unlock{z-index:25;background:#000b;justify-content:center;align-items:center;padding:12px;display:flex;position:fixed;inset:0}#unlock .card{background:var(--bg2);border:2px solid var(--line);cursor:default;border-radius:20px;width:100%;max-width:460px;max-height:92dvh;padding:16px;overflow:auto}#unlock h2{margin:0 0 6px}#unlock .note{color:var(--dim);margin:6px 0;font-size:.9em}#unlock .note.good{color:var(--good)}#unlock .price{margin:8px 0;font-size:1.7em}#unlock .price b{color:var(--gold)}#unlock .perks{margin:8px 0;padding-left:1.1em}#unlock input{width:100%;font:inherit;border:2px solid var(--line);color:#000;background:#fff;border-radius:12px;margin:6px 0;padding:12px}#unlock .btn{color:#fff;width:100%;min-height:48px;font:inherit;cursor:pointer;background:linear-gradient(#8d6bff,#6a47e0);border:2px solid #b9a4ff;border-radius:14px;margin:8px 0;padding:12px;font-weight:800;display:block}#unlock .btn.alt{background:var(--panel);border-color:var(--line)}#unlock .chip{background:var(--panel);border:2px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:8px 14px}.lock{opacity:.8}.reduce *,.reduce :before,.reduce :after{transition:none!important;animation:none!important}.worlds{scroll-snap-type:x proximity;gap:8px;padding:4px 2px 10px;display:flex;overflow-x:auto}.wd{scroll-snap-align:start;border:2px solid var(--line);background:var(--panel);width:118px;color:inherit;font:inherit;cursor:pointer;text-align:center;border-radius:14px;flex:none;padding:0 0 6px;overflow:hidden}.wd[aria-pressed=true]{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}.wd img,.wd .wq{aspect-ratio:4/5;object-fit:cover;width:100%;color:var(--gold);background:#120c1c;place-items:center;font-size:2.6em;font-weight:900;display:grid}.wd b{padding:5px 4px 0;font-size:.78em;line-height:1.15;display:block}
