*,:before,:after{box-sizing:border-box;margin:0;padding:0}button,input,select,textarea{font-family:inherit}:root{--bg:#0f172a;--surface:#1e293b;--border:#334155;--text:#f1f5f9;--text-dim:#94a3b8;--accent:#38bdf8;--success:#4ade80;--danger:#f87171;--gold:#fbbf24;color:var(--text);background-color:var(--bg);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}body{justify-content:center;align-items:center;min-height:100dvh;display:flex}#app{width:100%;max-width:420px;padding:1rem}.screen{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;display:flex}.brand-t{color:var(--accent)}.waking-screen h1,.waiting-screen h1,.lobby-screen h1{font-size:2rem}.status-text{color:var(--text-dim);font-size:1.1rem}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.mode-buttons{flex-direction:column;gap:.75rem;width:100%;transition:gap .3s;display:flex}.mode-btn{border:2px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;border-radius:10px;flex-direction:column;gap:.25rem;padding:1rem 1.25rem;transition:border-color .15s,transform .15s;display:flex}.mode-btn:not(:disabled):hover{border-color:var(--accent);transform:translateY(-2px)}.mode-btn:not(:disabled):active{transform:translateY(0)}.mode-btn:disabled{cursor:default;opacity:.35}.mode-btn.selected{border-color:var(--accent);cursor:default;pointer-events:none}.mode-name{font-size:1.2rem;font-weight:700}.mode-desc{color:var(--text-dim);font-size:.85rem}.goal-picker{flex-direction:column;align-items:center;gap:.75rem;width:100%;display:flex}.goal-picker.hidden{display:none}.goal-picker.fade-in{animation:.25s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.goal-cards{gap:.75rem;width:100%;display:flex}.goal-card{background:var(--surface);border:2px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:.35rem;padding:1rem .75rem;transition:border-color .15s,transform .1s,box-shadow .15s;display:flex}.goal-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 16px #38bdf826}.goal-card:active{transform:translateY(0)}.goal-icon{font-size:2rem}.goal-name{font-size:1rem;font-weight:700}.goal-detail{color:var(--text-dim);font-size:.8rem}.back-btn{color:var(--text-dim);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;padding:.3rem .8rem;font-size:.8rem;font-weight:600;transition:color .15s,border-color .15s}.back-btn:hover{color:var(--text);border-color:var(--text-dim)}.target-progress{flex-direction:column;gap:.35rem;width:100%;display:flex}.progress-bar{background:var(--border);border-radius:6px;flex:1;position:relative;overflow:hidden}.progress-bar:not(.bar-you):not(.bar-opponent){height:6px}.progress-bar.bar-you{height:2rem}.progress-bar.bar-opponent{height:1.4rem}.progress-fill{border-radius:6px;width:0;transition:width .25s ease-out;position:absolute;inset:0}.progress-fill.you{background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 60%, transparent))}.progress-fill.opponent{background:linear-gradient(90deg, var(--danger), color-mix(in srgb, var(--danger) 60%, transparent))}.bar-label{font-variant-numeric:tabular-nums;color:var(--text);pointer-events:none;z-index:1;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex;position:absolute;inset:0}.bar-you .bar-label{font-size:.85rem}.bar-opponent .bar-label{color:var(--text-dim);font-size:.7rem}.safety-timer{color:var(--text-dim);opacity:.6;font-size:1rem}.waiting-screen,.countdown-screen{justify-content:center;min-height:60dvh;position:relative}.waiting-screen .quit-btn,.countdown-screen .quit-btn{position:absolute;top:0;left:0}.bot-btn{color:var(--text-dim);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:.5rem 1.25rem;font-size:.9rem;font-weight:600;transition:border-color .15s,color .15s}.bot-btn:hover{color:var(--accent);border-color:var(--accent)}.countdown-number{color:var(--accent);font-size:6rem;font-weight:800;animation:.5s ease-in-out pulse}@keyframes pulse{0%{opacity:.5;transform:scale(1.4)}to{opacity:1;transform:scale(1)}}.playing-screen{grid-template-rows:auto 1fr auto;align-items:stretch;gap:1rem;height:calc(100dvh - 4rem);display:grid}.playing-top{text-align:center;flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.game-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;width:100%;display:flex}.timer{font-variant-numeric:tabular-nums;color:var(--accent);font-size:1.8rem;font-weight:700}.quit-btn{color:var(--text-dim);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;padding:.2rem .6rem;font-size:.8rem;font-weight:600;transition:color .15s,border-color .15s}.quit-btn:hover{color:var(--danger);border-color:var(--danger)}.currency-cards{gap:1rem;width:100%;display:flex;position:relative}.cards-hotkey{color:var(--text-dim);background:var(--bg);border:1.5px solid var(--border);box-shadow:0 1px 0 var(--border);z-index:1;border-radius:4px;padding:.1rem .35rem;font-family:monospace;font-size:.55rem;font-weight:600;line-height:1;position:absolute;top:-.5rem;left:50%;transform:translate(-50%)}.currency-card{background:var(--surface);border:2px solid var(--border);cursor:pointer;color:var(--text);border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:.25rem;padding:.75rem .5rem;font-family:inherit;transition:border-color .2s,box-shadow .2s;display:flex}.currency-card:hover{border-color:var(--text-dim)}.currency-card.highlighted{border-color:var(--accent);box-shadow:0 0 12px #6366f159}.card-emoji{font-size:1.8rem}.card-name{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-size:.75rem;font-weight:600}.card-balance{font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700}.scoreboard{justify-content:center;align-items:center;gap:1rem;width:100%;display:flex}.player-col{flex-direction:column;align-items:center;min-width:100px;display:flex}.player-col .label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-size:.8rem}.player-col .score{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.player-col.you .score{color:var(--accent)}.player-col.opponent .score{color:var(--danger)}.vs{color:var(--text-dim);font-size:.9rem;font-weight:600}.resource-bar{font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:1.5rem;font-size:1.1rem;font-weight:600;display:flex}.resource-item.gold{color:var(--gold)}.tab-grid{width:100%;max-width:min(320px,100%);padding-bottom:env(safe-area-inset-bottom,.25rem);grid-row:3;grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(5,1fr);place-self:end center;gap:.35rem;display:grid}.tab-btn{border:2px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:.4rem;font-size:1.2rem;transition:border-color .15s,background .15s;display:flex}.tab-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}.tab-btn:hover:not(.locked){border-color:var(--text-dim)}.tab-btn.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 15%, var(--surface))}.tab-btn.locked{opacity:.35;cursor:not-allowed}.panel-container{flex-direction:column;grid-row:2;align-items:center;gap:1rem;width:100%;min-height:0;padding:.75rem 0;display:flex;overflow-y:auto}.panel-placeholder{color:var(--text-dim);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:2rem;font-size:.9rem;display:flex}.panel-placeholder .placeholder-icon{font-size:2rem}.click-button{aspect-ratio:1;border:3px solid var(--accent);background:var(--surface);width:160px;min-width:80px;color:var(--accent);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:50%;font-size:1.4rem;font-weight:700;transition:background .15s,color .15s}.click-button:active{background:var(--accent);color:var(--bg)}.btn-hotkey{color:var(--text-dim);background:var(--bg);border:1.5px solid var(--border);box-shadow:0 1px 0 var(--border);border-radius:4px;width:fit-content;margin:.4rem auto 0;padding:.1rem .35rem;font-family:monospace;font-size:.6rem;font-weight:600;line-height:1;display:block}.upgrades-wrapper{width:100%}.upgrades-header{justify-content:flex-end;align-items:center;margin-bottom:.3rem;display:flex}.upgrades-hotkey{color:var(--text-dim);font-size:.65rem}.upgrades-hotkey .btn-hotkey{margin:0;display:inline}.upgrades{flex-direction:column;gap:.5rem;width:100%;display:flex}.upgrade-btn{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);cursor:pointer;text-align:left;border-radius:8px;align-items:center;gap:.75rem;padding:.6rem 1rem;transition:border-color .15s,opacity .15s;display:flex;position:relative}.upgrade-btn:not(:disabled):hover{border-color:var(--accent)}.upgrade-btn:disabled{cursor:default;opacity:.5}.upgrade-btn.owned{border-color:var(--success);opacity:.7}.upgrade-name{flex:1;font-weight:600}.upgrade-hotkey{color:var(--text-dim);background:var(--bg);border:1.5px solid var(--border);box-shadow:0 1px 0 var(--border);border-radius:4px;padding:.1rem .35rem;font-family:monospace;font-size:.6rem;font-weight:600;line-height:1;position:absolute;bottom:.3rem;right:.4rem}.upgrade-cost{color:var(--gold);text-align:right;min-width:3ch;font-weight:700}.upgrade-btn.owned .upgrade-cost{color:var(--success)}.upgrade-desc{color:var(--text-dim);font-size:.75rem;display:none}@media (width>=400px){.upgrade-btn{flex-wrap:wrap}.upgrade-desc{width:100%;display:block}}.generator-list{flex-direction:column;gap:.5rem;width:100%;display:flex}.generator-card{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);cursor:pointer;text-align:left;border-radius:8px;align-items:center;gap:.75rem;padding:.6rem 1rem;transition:border-color .15s,opacity .15s;display:flex}.generator-card:not(:disabled):hover{border-color:var(--accent)}.generator-card:disabled{cursor:default;opacity:.5}.generator-icon{flex-shrink:0;font-size:1.4rem}.generator-info{flex-direction:column;flex:1;min-width:0;display:flex}.generator-name{font-weight:600}.generator-rate{color:var(--text-dim);font-size:.75rem}.generator-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.generator-cost{color:var(--gold);font-weight:700}.generator-count{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.75rem}.end-screen{gap:1.25rem}.result{font-size:2rem}.result.player{color:var(--success)}.result.opponent{color:var(--danger)}.result.draw{color:var(--gold)}.final-scores{gap:2rem;font-size:1.1rem;display:flex}.stats{color:var(--text-dim);flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.rematch-button{border:2px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:.75rem 2rem;font-size:1.1rem;font-weight:600;transition:background .15s,color .15s}.rematch-button:hover{background:var(--accent);color:var(--bg)}.disconnected-screen h1{color:var(--danger)}.disconnected-screen p{color:var(--text-dim)}.vfx-layer{pointer-events:none;z-index:1000;position:fixed;inset:0;overflow:hidden}.vfx-popup{color:var(--gold);text-shadow:0 0 8px var(--gold), 0 2px 6px #0009;white-space:nowrap;will-change:transform, opacity;font-size:1.6rem;font-weight:900;position:absolute}.vfx-ripple{border:3px solid var(--accent);box-shadow:0 0 12px var(--accent);will-change:transform, opacity;border-radius:50%;position:absolute}.vfx-combo{white-space:nowrap;will-change:transform, opacity;font-size:1.2rem;font-weight:900;display:none;position:absolute}.vfx-shockwave-core,.vfx-shockwave-ring,.vfx-streak,.vfx-shockwave-glow,.vfx-shockwave-text{will-change:transform, opacity;pointer-events:none;position:absolute}.vfx-shockwave-core{background:radial-gradient(circle,#fff 0%,#38bdf8e6 40%,#38bdf84d 70%,#0000 100%);border-radius:50%;width:60px;height:60px}.vfx-shockwave-ring{border:5px solid var(--accent);width:200px;height:200px;box-shadow:0 0 20px var(--accent), 0 0 50px #38bdf866, inset 0 0 20px #38bdf826;border-radius:50%}.vfx-streak{background:var(--accent);box-shadow:0 0 8px var(--accent);border-radius:2px}.vfx-shockwave-glow{background:radial-gradient(circle,#38bdf859 0%,#38bdf81f 40%,#0000 70%);border-radius:50%;width:300px;height:300px}.vfx-shockwave-text{color:#fff;-webkit-text-stroke:2px var(--accent);paint-order:stroke fill;text-shadow:0 0 14px var(--accent), 0 0 40px #38bdf899, 0 0 60px #fbbf244d, 0 3px 10px #000c;white-space:nowrap;font-size:3.2rem;font-weight:900}
