:root{--bg: #11161c;--panel: #1b2530;--panel-2: #232f3d;--line: #324153;--text: #dbe7f0;--muted: #8aa0b3;--accent: #4caf86;--accent-2: #6cc0ff;--danger: #ff6c6c;--gold: #ffd24a;--common: #b9c6d2;--uncommon: #6cd07e;--rare: #6cb8ff;--epic: #c98cff;--legendary: #ffb14a}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;font-size:14px}#app{display:flex;flex-direction:column;min-height:100vh}#topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{font-weight:700;font-size:16px;letter-spacing:.5px}#nav{display:flex;gap:8px;flex:1}.account{display:flex;align-items:center;gap:12px}#player-name{color:var(--muted)}.balance{display:inline-flex;align-items:center;gap:6px;font-family:monospace;font-weight:700;color:var(--gold);background:#0d1217;border:1px solid var(--line);padding:4px 10px;border-radius:6px}.coin-icon{height:16px;width:16px;image-rendering:pixelated}.level-chip{font-size:12px;font-weight:700;color:var(--accent-2);background:#0d1217;border:1px solid var(--line);padding:4px 8px;border-radius:6px}button{background:var(--panel-2);color:var(--text);border:1px solid var(--line);padding:7px 12px;border-radius:6px;cursor:pointer;font-size:13px}button:hover{border-color:var(--accent-2)}button.primary{background:var(--accent);border-color:var(--accent);color:#08130d;font-weight:700}button.primary:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:not-allowed}#stage{display:flex;justify-content:center;padding:20px}#game-col{width:480px}#game{width:480px;height:320px;image-rendering:pixelated;border:2px solid var(--line);border-radius:8px;overflow:hidden}#game canvas{width:100%!important;height:100%!important;image-rendering:pixelated}#controls{display:flex;gap:10px;align-items:flex-end;margin-top:12px;flex-wrap:wrap}#controls label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}select{background:var(--panel-2);color:var(--text);border:1px solid var(--line);padding:6px 8px;border-radius:6px}#btn-cast{margin-left:auto;padding:9px 22px}#feedback{margin-top:12px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:6px;min-height:38px;font-size:13px;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060a0ec7;display:flex;align-items:center;justify-content:center;z-index:50}.overlay.hidden{display:none}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px 32px;width:360px;text-align:center}.login-card h1{margin:0 0 8px}.login-card p{color:var(--muted);margin:0 0 18px}.login-card input{width:100%;padding:10px;margin-bottom:14px;border-radius:6px;border:1px solid var(--line);background:#0d1217;color:var(--text)}.login-actions{display:flex;gap:10px}.login-actions button{flex:1}.login-err{color:#ff6c6c;min-height:18px;margin-top:10px;font-size:13px}.modal{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(720px,92vw);max-height:84vh;overflow:auto;padding:0}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}.modal-head h2{margin:0;font-size:16px}.modal-body{padding:16px 18px}.close-x{background:transparent;border:none;font-size:18px}.row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;margin-bottom:6px;background:var(--panel-2)}.row .meta{display:flex;flex-direction:column;gap:2px}.row .label{font-weight:600}.row .sub{font-size:11px;color:var(--muted)}.row .actions{display:flex;gap:6px;align-items:center}.rowleft{display:flex;align-items:center;gap:10px;min-width:0}.icon{height:28px;width:auto;max-width:60px;image-rendering:pixelated;flex:0 0 auto}.qty-input{width:64px;padding:5px;background:#0d1217;color:var(--text);border:1px solid var(--line);border-radius:5px}.empty{color:var(--muted);font-style:italic;padding:8px}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:14px 0 6px}.rarity-common{color:var(--common)}.rarity-uncommon{color:var(--uncommon)}.rarity-rare{color:var(--rare)}.rarity-epic{color:var(--epic)}.rarity-legendary{color:var(--legendary)}.dura{font-family:monospace;font-size:11px}.dura.low{color:var(--danger)}.kpi{display:flex;gap:12px;flex-wrap:wrap}.kpi .card{flex:1;min-width:130px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.kpi .card .v{font-family:monospace;font-size:18px;font-weight:700}.kpi .card .k{font-size:11px;color:var(--muted)}.ratio-ok{color:var(--uncommon)}.ratio-bad,.toast-err{color:var(--danger)}.toast-ok{color:var(--uncommon)}
