@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(./chakra-petch-latin-500-normal-BR1ody1F.woff2)format("woff2"),url(./chakra-petch-latin-500-normal-CnUQnZ4D.woff)format("woff")}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(./chakra-petch-latin-700-normal-CnDBPjkL.woff2)format("woff2"),url(./chakra-petch-latin-700-normal-D1s_c2du.woff)format("woff")}:root{--bg:#0b0e1a;--grid-s1:#161c33;--core:#f5f7ff;--core-glow:#7fe8ff;--cord:#4de1ff;--mote:#ff4d6d;--brick:#ff9f1c;--dart:#ff5fd2;--xp:#6bffb8;--gold:#ffc93c;--crit:#ffe14d;--danger:#ff2e4d;--ui-panel:#0e1224db;--ui-border:#2a3358;--ui-accent:#4de1ff;--ui-text:#eef1ff;--ui-muted:#8a93b8;--font-body:clamp(14px, 1.6vmin + 6px, 20px);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--margin:16px}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:var(--bg);color:var(--ui-text);font-family:Chakra Petch,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-weight:500;font-size:var(--font-body);overflow:hidden}canvas#game{touch-action:none;display:block;position:fixed;top:0;bottom:0;left:0;right:0}#ui{pointer-events:none;position:fixed;top:0;bottom:0;left:0;right:0}#ui>*{pointer-events:auto}.hidden{display:none!important}.hud{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.hud>*{pointer-events:none;position:absolute}.hud-left{top:calc(var(--margin) + var(--safe-top));left:calc(var(--margin) + var(--safe-left));gap:6px;display:flex}.hud-center{top:calc(var(--margin) + var(--safe-top));text-align:center;width:40vw;min-width:220px;left:50%;transform:translate(-50%)}.hud-right{top:calc(var(--margin) + var(--safe-top));right:calc(var(--margin) + var(--safe-right));pointer-events:none;align-items:center;gap:12px;display:flex}.hud-right .icon-btn{pointer-events:auto}.timer{font-variant-numeric:tabular-nums;letter-spacing:.06em;font-size:28px;font-weight:700}.xp-row{color:var(--ui-muted);align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.xp-bar{background:#ffffff1f;border-radius:3px;flex:1;height:6px;overflow:hidden}.xp-fill{background:var(--xp);width:0;height:100%}.boss-bar{margin-top:8px}.boss-bar .name{letter-spacing:.2em;color:var(--danger);font-size:14px;font-weight:700}.boss-bar .bar{background:#ffffff1f;border-radius:5px;height:10px;overflow:hidden}.boss-bar .fill{background:linear-gradient(90deg,#ff3b5c,#ff9f1c);width:100%;height:100%}.gold{font-variant-numeric:tabular-nums;color:var(--gold);align-items:center;gap:6px;font-size:20px;font-weight:700;display:inline-flex}.gold:before{content:"";background:var(--gold);width:14px;height:14px;box-shadow:inset 0 0 0 3px var(--bg), inset 0 0 0 5px var(--gold);border-radius:50%}.btn{border:2px solid var(--ui-border);min-width:160px;min-height:52px;color:var(--ui-text);font:inherit;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:10px;padding:0 28px;font-weight:700;transition:transform 80ms ease-out,border-color .12s}.btn:hover:not(:disabled){border-color:var(--ui-accent)}.btn:active:not(:disabled){transform:scale(.96)}.btn:focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px}.btn.primary{background:var(--ui-accent);border-color:var(--ui-accent);color:#05101a}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.big{min-width:280px;min-height:64px;font-size:22px}.btn.small{min-width:96px;min-height:44px;padding:0 14px;font-size:14px}.icon-btn{border:2px solid var(--ui-border);background:var(--ui-panel);width:44px;height:44px;color:var(--ui-text);font:inherit;cursor:pointer;border-radius:10px;font-weight:700}.icon-btn:hover{border-color:var(--ui-accent)}.icon-btn:focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px}.overlay{padding:calc(var(--margin) + var(--safe-top)) calc(var(--margin) + var(--safe-right)) calc(var(--margin) + var(--safe-bottom)) calc(var(--margin) + var(--safe-left));background:#050812c7;flex-direction:column;justify-content:center;align-items:center;gap:18px;animation:.18s cubic-bezier(.2,.8,.2,1) fade-in;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto}.overlay.clear{background:0 0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.panel{background:var(--ui-panel);border:2px solid var(--ui-border);border-radius:12px;max-width:94vw;max-height:92vh;padding:20px 24px;overflow:auto}.title{letter-spacing:.06em;text-transform:uppercase;font-size:28px;font-weight:700}.title.cyan{color:var(--ui-accent)}.title.red{color:var(--danger)}.muted{color:var(--ui-muted)}.row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}@keyframes pulse{0%{opacity:.55}to{opacity:1}}.hint{text-align:center;pointer-events:none;transition:opacity .4s;animation:.8s infinite alternate pulse;position:absolute;top:62%;left:50%;transform:translate(-50%)}.hint .big{letter-spacing:.2em;font-size:44px;font-weight:700}.hint .small{color:var(--ui-muted);letter-spacing:.1em}.banner{text-align:center;letter-spacing:.3em;color:var(--danger);text-shadow:0 0 24px #ff2e4db3;pointer-events:none;font-size:clamp(36px,8vmin,64px);font-weight:700;animation:1.5s ease-out forwards banner-in;position:absolute;top:22%;left:0;right:0}@keyframes banner-in{0%{opacity:0;transform:translateY(-40px)}15%,80%{opacity:1;transform:translateY(0)}to{opacity:0}}.toast-host{left:0;right:0;bottom:calc(var(--margin) + var(--safe-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute}.toast{background:var(--ui-panel);border:2px solid var(--ui-border);border-radius:10px;padding:10px 18px;font-weight:700;animation:2.2s ease-out forwards toast}@keyframes toast{0%{opacity:0;transform:translateY(8px)}7%,93%{opacity:1;transform:translateY(0)}to{opacity:0}}.joystick{pointer-events:none;background:#4de1ff0f;border:2px solid #4de1ff66;border-radius:50%;width:120px;height:120px;margin:-60px 0 0 -60px;position:absolute}.joystick .knob{background:#4de1ff59;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute}.debug{left:calc(var(--margin) + var(--safe-left));top:calc(var(--margin) + var(--safe-top) + 34px);color:#9fe7ff;white-space:pre;pointer-events:none;text-shadow:0 0 3px #000;font:12px/1.3 monospace;position:absolute}.title.victory{color:var(--ui-accent);text-shadow:0 0 18px var(--ui-accent), 0 0 42px #4de1ff80;font-size:56px;animation:.7s cubic-bezier(.2,1.4,.3,1) both victory-pop}.reward{color:#ffc93c;font-size:22px;font-weight:700;animation:.7s cubic-bezier(.2,1.4,.3,1) .25s both victory-pop}@keyframes victory-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.confetti{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.confetti span{top:-12px;left:var(--x);opacity:0;width:8px;height:14px;animation:confetti-fall var(--d) var(--w) linear infinite;position:absolute}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:.9;transform:translateY(110vh) rotate(var(--r))}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.hub-title{letter-spacing:.06em;color:var(--core);text-shadow:0 0 22px #4de1ffb3;font-size:clamp(30px,9vmin,64px);font-weight:700}.hub-columns{flex-wrap:wrap;justify-content:center;align-items:stretch;gap:24px;display:flex}.hub-col{background:var(--ui-panel);border:1px solid #4de1ff40;border-radius:14px;flex-direction:column;align-items:center;gap:12px;min-width:300px;padding:18px 22px;display:flex}.hub-col-title{letter-spacing:.08em;font-size:26px;font-weight:700}.hub-col-sub{color:var(--ui-muted);text-wrap:balance;text-align:center;font-size:13px}.hub-select{flex-direction:column;gap:4px;width:100%;display:flex}.hub-select-label{color:var(--ui-muted);font-size:12px}.hub-select select{min-height:44px;font:inherit;color:var(--ui-text,#fff);background-color:#0b0e1a;border:1px solid #4de1ff66;border-radius:10px;padding:0 12px;font-size:16px}.hub-gold{top:calc(var(--margin) + var(--safe-top));right:calc(var(--margin) + var(--safe-right));position:absolute}.hub-stats{color:var(--ui-muted);text-align:center;font-size:14px}.hub-settings{left:calc(var(--margin) + var(--safe-left));top:calc(var(--margin) + var(--safe-top));gap:8px;display:flex;position:absolute}.results{flex-direction:column;align-items:stretch;gap:10px;min-width:min(420px,90vw);display:flex}.results .line{justify-content:space-between;font-size:20px;display:flex}.results .line b{font-variant-numeric:tabular-nums;font-size:28px}.badge{background:var(--crit);color:#05101a;letter-spacing:.1em;border-radius:6px;align-self:center;padding:2px 12px;font-weight:700}.flash{pointer-events:none;background:#fff;animation:.6s ease-out forwards fade-out;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes fade-out{to{opacity:0}}@media (prefers-reduced-motion:reduce){.hint{animation:none}}@media (max-height:520px){.overlay{gap:10px}.panel{padding:12px 16px}}@media (max-width:640px) and (orientation:portrait){.btn.big{min-width:220px}}.cover-title{letter-spacing:.12em;color:var(--core);text-shadow:0 0 28px #4de1ffd9,0 0 60px #4de1ff66;pointer-events:none;font-size:clamp(48px,8vmin,120px);font-weight:700;position:absolute}.cover-title.landscape{top:6vh;left:5vw}.cover-title.portrait,.cover-title.square{text-align:center;font-size:clamp(40px,9vw,120px);top:6vh;left:0;right:0}.alive{letter-spacing:.2em;color:var(--danger);margin-top:6px;font-size:16px;font-weight:700}.hud>.leaderboard{top:calc(var(--margin) + var(--safe-top) + 56px);right:calc(var(--margin) + var(--safe-right));border:1px solid var(--ui-border);font-variant-numeric:tabular-nums;background:#0a0e1ef5;border-radius:8px;min-width:190px;padding:8px 10px;font-size:14px}.lb-title{color:var(--ui-muted);letter-spacing:.15em;margin-bottom:4px;font-size:14px}.lb-row{grid-template-columns:18px 1fr auto auto;gap:8px;padding:1px 0;display:grid}.lb-row.you{color:var(--ui-accent);font-weight:700}.lb-rank,.lb-lv{color:var(--ui-muted)}.minimap{right:calc(var(--margin) + var(--safe-right));bottom:calc(var(--margin) + var(--safe-bottom));pointer-events:none;border-radius:6px;position:absolute}.dev-panel{left:calc(var(--margin) + var(--safe-left,0px));top:calc(var(--margin) + var(--safe-top) + 44px);z-index:6;gap:6px;display:flex;position:fixed}.debug~.dev-panel{top:calc(var(--margin) + var(--safe-top) + 34px + 112px)}.dev-panel .btn{color:#ffc93c;border-color:#ffc93c;padding:4px 10px;font-size:12px}.dev-panel .btn.on{color:#000;background:#ffc93c}.stat-panel{left:calc(var(--margin) + var(--safe-left,0px));bottom:calc(var(--margin) + var(--safe-bottom));opacity:.55;z-index:5;flex-direction:column;gap:3px;width:230px;display:flex;position:fixed}.stat-panel.active{opacity:1}.stat-title{letter-spacing:.12em;text-transform:uppercase;color:var(--xp);font-size:13px;font-weight:700}.stat-row{text-align:left;background:var(--ui-panel);color:var(--ui-text);font:inherit;pointer-events:none;border:1px solid #0000;border-radius:6px;grid-template-columns:16px 1fr auto;align-items:center;column-gap:8px;padding:3px 8px;font-size:13px;display:grid}.stat-panel.active .stat-row:not(:disabled){border-color:var(--ui-accent);cursor:pointer;pointer-events:auto}.stat-panel.active .stat-row:not(:disabled):hover{background:var(--ui-accent);color:#000;outline:none}.stat-panel.active .stat-row:not(:disabled):focus-visible{background:var(--ui-accent);color:#000;outline:none}.stat-row .key{color:var(--ui-muted);font-weight:700}.stat-bar{gap:2px;display:flex}.stat-bar i{background:#ffffff26;border-radius:2px;width:9px;height:8px}.stat-bar i.on{background:var(--core-glow)}.hud-hp{border:2px solid var(--ui-muted);background:#00000073;border-radius:4px;width:200px;height:18px;position:relative;overflow:hidden}.hud-hp .fill{background:var(--core-glow);height:100%;transition:background-color .15s}.hud-hp.low .fill{background:#ff3b4e}.hud-hp .val{text-shadow:0 0 3px #000;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.class-panel{left:calc(var(--margin) + var(--safe-left,0px));bottom:calc(var(--margin) + var(--safe-bottom) + 250px);z-index:5;flex-direction:column;gap:6px;width:260px;display:flex;position:fixed}.class-panel.hidden{display:none}.class-title{letter-spacing:.12em;text-transform:uppercase;color:var(--xp);font-size:13px;font-weight:700;animation:1s infinite alternate pulse}.class-tile{text-align:left;background:var(--ui-panel);border:2px solid var(--class-color,var(--ui-accent));color:var(--ui-text);font:inherit;cursor:pointer;border-radius:8px;grid-template-columns:40px 1fr auto;align-items:center;column-gap:10px;padding:8px 10px;display:grid}.class-tile:hover{background:var(--class-color,var(--ui-accent));color:#000;outline:none}.class-tile:focus-visible{background:var(--class-color,var(--ui-accent));color:#000;outline:none}.class-icon{flex:none;width:36px;height:36px}.class-icon.locked{border:2px dashed var(--ui-muted);color:var(--ui-muted);border-radius:50%;place-items:center;font-size:22px;font-weight:700;display:grid}.tree-node.locked{color:var(--ui-muted);border-style:dashed}.tree-node.browse{cursor:default}.tree-node.browse:hover{background:var(--ui-panel);color:inherit}.class-swatch{background:var(--class-color);width:32px;height:32px}.class-swatch.star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.class-swatch.blade{clip-path:polygon(0% 100%,30% 0%,100% 50%,30% 100%)}.class-swatch.boulder{clip-path:polygon(20% 0%,80% 5%,100% 40%,90% 90%,50% 100%,8% 85%,0% 35%)}.class-text{flex-direction:column;display:flex}.class-name{font-size:18px;font-weight:700}.class-desc{font-size:13px;line-height:1.25}.class-tile .key{color:var(--ui-muted);font-weight:700}@media (prefers-reduced-motion:reduce){.class-title{animation:none}}.match-result{letter-spacing:.06em;color:var(--ui-accent);text-shadow:0 0 14px #4de1ff99;text-align:center;margin-top:8px;font-size:22px;font-weight:700}.countdown{pointer-events:none;color:var(--core);text-shadow:0 0 36px #4de1ffcc;justify-content:center;align-items:center;font-size:clamp(96px,22vmin,220px);font-weight:700;animation:1s ease-out count-pop;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}@keyframes count-pop{0%{opacity:0;transform:scale(1.7)}25%{opacity:1}to{opacity:.85;transform:scale(.9)}}@media (prefers-reduced-motion:reduce){.countdown{animation:none}}.class-tree{z-index:8;background:#050812f7;justify-content:flex-start}.class-tree .row{align-items:center;gap:24px}.tree-scroll{scrollbar-color:#4de1ff #0b0e1a;max-width:100%;max-height:calc(100% - 70px);overflow:auto}.tree-board{position:relative}.tree-board svg{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.tree-node{background:var(--ui-panel);border:2px solid var(--class-color);color:var(--ui-text);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:0 10px;font-weight:700;display:flex;position:absolute}.tree-node:hover{background:var(--class-color);color:#000;outline:none}.tree-node:focus-visible{background:var(--class-color);color:#000;outline:none}.tree-node.current{box-shadow:0 0 0 3px #ffc93c}.tree-tip{border:1px solid var(--ui-border);pointer-events:none;z-index:2;background:#0a0e1efa;border-radius:8px;width:260px;padding:10px 12px;font-size:13px;position:fixed}.tree-tip.hidden{display:none}.tree-tip-name{color:var(--ui-accent);font-size:16px;font-weight:700}.tree-tip-text{color:var(--ui-text);margin-bottom:6px}.tree-tip-fact{color:var(--ui-muted)}.class-tile.locked{animation:1.2s ease-in-out infinite unlock-pulse}.unlock-tag{color:#000;letter-spacing:.08em;text-transform:uppercase;vertical-align:middle;background:#ffc93c;border-radius:10px;margin-left:10px;padding:1px 8px;font-size:12px;font-weight:700}@keyframes unlock-pulse{0%,to{transform:scale(1);box-shadow:0 0 #ffc93c00}50%{transform:scale(1.03);box-shadow:0 0 14px 3px #ffc93cb3}}@media (prefers-reduced-motion:reduce){.class-tile.locked{animation:none;box-shadow:0 0 10px 2px #ffc93c99}}.balance-panel{flex-direction:column;gap:8px;max-width:min(640px,94vw);display:flex}.balance-head{color:var(--ui-accent);margin-top:8px;font-weight:700}.balance-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.balance-row input{border:1px solid var(--ui-border);width:90px;color:var(--ui-text);font:inherit;background:#0b0e1a;border-radius:6px;padding:4px 8px}.balance-status{min-height:1.4em}.coach{top:calc(var(--margin) + var(--safe-top) + 120px);background:var(--ui-panel);border:2px solid var(--ui-accent);text-align:center;z-index:5;border-radius:12px;flex-direction:column;gap:6px;width:min(460px,92vw);padding:12px 16px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.coach-step{letter-spacing:.1em;text-transform:uppercase;color:var(--ui-muted);font-size:12px}.coach-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ui-accent);font-size:22px;font-weight:700}.coach-text{font-size:15px}.coach-bar{background:#ffffff1f;border-radius:3px;height:6px;overflow:hidden}.coach-fill{background:var(--ui-accent);width:0;height:100%;transition:width .15s linear}.coach .btn{align-self:center}
