:root{--bg: #060d18;--bg-elev: #0c1729;--surface: rgba(13, 24, 42, .92);--surface-2: rgba(18, 34, 58, .85);--border: rgba(56, 189, 248, .16);--border-strong: rgba(56, 189, 248, .36);--text: #f1f5f9;--muted: #94a3b8;--cyan: #38bdf8;--cyan-dark: #0284c7;--indigo: #818cf8;--emerald: #10b981;--amber: #f59e0b;--rose: #f43f5e;--radius: 14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;min-height:100%;background:radial-gradient(circle at 50% 0%,#0f2544 0%,var(--bg) 65%);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.45}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}button:disabled{opacity:.45;cursor:not-allowed}.app-shell{max-width:1240px;margin:0 auto;padding:14px 16px 32px;min-height:100vh;display:flex;flex-direction:column;gap:14px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:10px;font-weight:900;font-size:18px;letter-spacing:-.4px}.brand-badge{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:var(--cyan);background:#38bdf824;border:1px solid rgba(56,189,248,.3);padding:2px 7px;border-radius:999px}.topbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 15px;border-radius:10px;font-weight:700;font-size:13px;transition:transform .12s ease,filter .12s ease,background .15s ease}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,#0ea5e9,#2563eb);color:#fff;box-shadow:0 4px 18px #0ea5e947}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-secondary{background:var(--surface-2);border:1px solid var(--border);color:var(--text)}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong)}.btn-danger{background:#f43f5e29;border:1px solid rgba(244,63,94,.4);color:#fda4af}.btn-amber{background:linear-gradient(135deg,#f59e0b,#d97706);color:#0b0e17}.btn-sm{padding:6px 11px;font-size:12px;border-radius:8px}.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;background:#0f172acc;border:1px solid var(--border);color:var(--muted)}.pill.live{color:var(--emerald);border-color:#10b98159}.avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border-strong)}.hero-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:16px;align-items:stretch}@media(max-width:840px){.hero-grid{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.hero-title{margin:0 0 8px;font-size:clamp(28px,4vw,40px);font-weight:900;letter-spacing:-1px;line-height:1.08;background:linear-gradient(135deg,#38bdf8,#818cf8 55%,#f472b6);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hero-sub{color:var(--muted);margin:0 0 18px;font-size:14px;max-width:540px}.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(max-width:540px){.mode-grid{grid-template-columns:1fr}}.mode-card{text-align:left;padding:14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);transition:border-color .15s ease,transform .12s ease;display:flex;flex-direction:column;gap:4px}.mode-card:hover{border-color:var(--cyan);transform:translateY(-1px)}.mode-card h3{margin:0;font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:space-between}.mode-card p{margin:0;font-size:12px;color:var(--muted)}.input-row{display:flex;gap:8px;margin-top:12px}.input{flex:1;min-width:0;background:#060d18d9;border:1px solid var(--border);border-radius:10px;padding:9px 12px;color:var(--text);font-family:inherit;font-size:13px;font-weight:600;outline:none}.input:focus{border-color:var(--cyan)}.rule-list{display:flex;flex-direction:column;gap:10px;font-size:13px;color:var(--muted)}.rule-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;background:#060d188c;border:1px solid rgba(255,255,255,.05);border-radius:10px}.rule-item strong{color:var(--text)}.room-code-box{font-size:32px;font-weight:900;letter-spacing:6px;color:var(--cyan);background:#060d18d9;border:1px dashed var(--border-strong);border-radius:12px;padding:12px 20px;text-align:center;margin:12px 0}.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:14px 0}.roster-slot{padding:10px 12px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:space-between}.roster-slot.empty{border-style:dashed;color:var(--muted);font-weight:500}.setup-layout{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start}@media(max-width:780px){.setup-layout{grid-template-columns:1fr}}.board-wrap{display:inline-flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.board-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:800}.grid-8{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;background:#060d18e6;padding:5px;border-radius:10px;border:1px solid rgba(56,189,248,.18);-webkit-user-select:none;user-select:none}.cell{width:var(--cell-size, 38px);height:var(--cell-size, 38px);border-radius:5px;background:#0f203ad9;border:1px solid rgba(56,189,248,.12);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;position:relative;transition:transform .08s ease,background .12s ease,border-color .12s ease}.cell.interactive:hover{border-color:var(--cyan);background:#38bdf82e;transform:scale(1.04);z-index:2}.cell.ship{background:linear-gradient(135deg,#38bdf859,#2563eb73);border-color:#38bdf8a6}.cell.ship-selected{box-shadow:0 0 0 2px var(--amber)}.cell.mine-own{background:#f59e0b40;border-color:#f59e0bb3}.cell.miss{background:#1e293ba6;border-color:#94a3b82e;color:var(--muted)}.cell.hit{background:#f43f5e59;border-color:var(--rose);color:#fecdd3;animation:pop .25s ease}.cell.sunk{background:#9f1239a6;border-color:#fb7185;color:#fff}.cell.mine_triggered{background:#f59e0b61;border-color:var(--amber);color:#fef3c7}.cell.targeted{box-shadow:inset 0 0 0 2px var(--amber),0 0 10px #f59e0b73;background:#f59e0b38}.cell.power-target{box-shadow:inset 0 0 0 2px #a855f7,0 0 10px #a855f780;background:#a855f738}.cell.hotzone{box-shadow:inset 0 0 0 1.5px #f59e0ba6}.sonar-badge{position:absolute;top:1px;right:2px;font-size:9px;font-weight:900;color:#67e8f9;pointer-events:none}@keyframes pop{0%{transform:scale(.8)}50%{transform:scale(1.12)}to{transform:scale(1)}}.hud-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.timer-track{width:140px;height:8px;border-radius:999px;background:#0f172ae6;overflow:hidden;border:1px solid var(--border)}.timer-fill{height:100%;background:linear-gradient(90deg,var(--cyan),var(--emerald));transition:width .25s linear}.timer-fill.urgent{background:linear-gradient(90deg,var(--rose),var(--amber))}.battle-grid-1v1{display:grid;grid-template-columns:repeat(2,minmax(0,auto));justify-content:center;gap:20px}@media(max-width:740px){.battle-grid-1v1{grid-template-columns:1fr;justify-items:center}}.battle-grid-ffa{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}@media(max-width:960px){.battle-grid-ffa{grid-template-columns:1fr;justify-items:center}}.enemies-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:12px;width:100%}.enemy-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;display:flex;flex-direction:column;align-items:center;gap:8px}.enemy-card.eliminated{opacity:.48;filter:grayscale(.5)}.enemy-card.has-target{border-color:#f59e0b8c}.powerup-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.powerup-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:10px;font-size:12px;font-weight:700;background:#a855f729;border:1px solid rgba(168,85,247,.45);color:#e9d5ff}.powerup-chip.active{background:#a855f76b;box-shadow:0 0 12px #a855f766}.battle-log{background:#060d18c7;border:1px solid var(--border);border-radius:10px;padding:10px 12px;max-height:120px;overflow-y:auto;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:4px}.log-entry.hit{color:#fda4af}.log-entry.combo{color:#d8b4fe;font-weight:700}.log-entry.mine{color:#fcd34d;font-weight:700}.log-entry.sail{color:#67e8f9}.log-entry.sunk{color:#fb7185;font-weight:800}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#02060ec7;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal{width:100%;max-width:480px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:16px;padding:22px;box-shadow:0 24px 60px #000000a6}.lb-row{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:8px;background:#060d1899;font-size:13px}.lb-row+.lb-row{margin-top:6px}
