*{box-sizing:border-box}
:root{
  --bg:#061626;--panel:rgba(8,31,51,.88);--panel2:rgba(10,43,69,.92);
  --line:rgba(128,211,255,.18);--text:#eefaff;--muted:#9bc3d8;
  --cyan:#33d7ff;--blue:#198cff;--green:#34e69b;--red:#ff5c6c;--yellow:#ffd166;
  --cell:clamp(27px,7.35vw,48px)
}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
body{min-height:100dvh;overflow-x:hidden}
button,input{font:inherit}
button{border:0;color:inherit;cursor:pointer;touch-action:manipulation}
.hidden{display:none!important}
.ocean-bg{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:
radial-gradient(circle at 20% 10%,rgba(29,148,209,.18),transparent 28%),
radial-gradient(circle at 85% 30%,rgba(0,215,255,.11),transparent 30%),
linear-gradient(160deg,#03111e 0%,#08233a 55%,#041522 100%);z-index:-2}
.wave{position:absolute;width:140vw;height:140vw;border:1px solid rgba(70,205,255,.08);border-radius:42%;left:-20vw;animation:drift 18s linear infinite}
.wave-a{top:45vh}.wave-b{top:52vh;animation-duration:24s;animation-direction:reverse}.wave-c{top:62vh;animation-duration:31s}
@keyframes drift{to{transform:rotate(360deg)}}
.app{width:min(1180px,100%);margin:auto;padding:12px;min-height:100dvh}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
h1,h2,h3,p{margin:0}h1{font-size:clamp(1.35rem,4vw,2.2rem);letter-spacing:.12em;color:#8eeaff;text-shadow:0 0 24px rgba(51,215,255,.4)}
.subtitle{color:var(--muted);font-size:.86rem;margin-top:2px}
.status-pills{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pill,.mini-status{padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.07);font-size:.75rem;border:1px solid rgba(255,255,255,.08)}
.pill.ok{color:var(--green)}.pill.warn{color:var(--yellow)}.pill.bad{color:var(--red)}
.panel{background:linear-gradient(180deg,rgba(13,46,72,.93),rgba(5,28,47,.92));border:1px solid rgba(117,213,255,.14);box-shadow:0 12px 36px rgba(0,0,0,.28),inset 0 1px rgba(255,255,255,.03);border-radius:20px;backdrop-filter:blur(14px)}
.lobby{max-width:650px;margin:9vh auto 0;padding:clamp(22px,5vw,40px);text-align:center;animation:rise .5s ease both}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
.lobby h2{font-size:clamp(1.6rem,5vw,2.5rem);margin-bottom:8px}.lobby>p{color:var(--muted);margin-bottom:24px}
.name-row{text-align:left;margin:0 auto 18px;max-width:420px}.name-row label{display:block;font-size:.8rem;color:var(--muted);margin:0 0 6px 4px}
.name-row input{width:100%;padding:13px 15px;border-radius:12px;border:1px solid rgba(103,207,255,.2);background:#061b2d;color:white;outline:none}
.name-row input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(51,215,255,.12)}
.slot-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.slot-btn{padding:20px;border-radius:16px;background:rgba(27,106,158,.18);border:1px solid rgba(83,196,255,.2);transition:.18s}
.slot-btn:hover{transform:translateY(-2px);border-color:var(--cyan);box-shadow:0 10px 26px rgba(0,0,0,.25)}
.slot-btn strong,.slot-btn span{display:block}.slot-btn strong{font-size:1.15rem}.slot-btn span{font-size:.78rem;color:var(--muted);margin-top:5px}
.slot-btn.occupied{opacity:.45;filter:saturate(.5)}
.ghost-btn,.accent-btn,.ready-btn,.danger-btn{padding:10px 14px;border-radius:12px;font-weight:750;transition:.15s}
.ghost-btn{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1)}
.accent-btn{background:linear-gradient(135deg,#0a79be,#14b8db)}.ready-btn{background:linear-gradient(135deg,#18a86d,#34e69b);color:#032619}
.danger-btn{background:rgba(255,92,108,.16);border:1px solid rgba(255,92,108,.35);color:#ff9ca7}
button:active{transform:scale(.97)}button:disabled{opacity:.35;cursor:not-allowed;transform:none}
.small{padding:8px 10px;font-size:.78rem}
.game{display:flex;flex-direction:column;gap:10px;animation:rise .35s ease}
.game-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;gap:10px}
.eyebrow{display:block;color:#65c8ee;font-size:.68rem;letter-spacing:.16em;font-weight:800;margin-bottom:2px}
.game-head h2{font-size:clamp(1.05rem,3.5vw,1.55rem)}.game-actions{display:flex;gap:6px}
.setup-tools{padding:12px}.tool-line{display:flex;justify-content:space-between;align-items:center;gap:10px}
.fleet-list{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}
.ship-chip{padding:8px 10px;border-radius:11px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);font-size:.78rem}
.ship-chip.active{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(51,215,255,.11);background:rgba(51,215,255,.12)}
.ship-chip.done{color:var(--green);opacity:.72}
.setup-buttons{display:flex;gap:7px;flex-wrap:wrap}
.boards{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-height:0}
.board-card{padding:10px;overflow:hidden}.board-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.board-title h3{font-size:1rem}
.grid-wrap{position:relative;padding:19px 0 0 19px;width:max-content;max-width:100%;margin:auto}
.board{display:grid;grid-template-columns:repeat(10,var(--cell));grid-template-rows:repeat(10,var(--cell));gap:2px;background:rgba(54,171,228,.1);padding:3px;border:1px solid rgba(85,204,255,.24);border-radius:10px;box-shadow:inset 0 0 35px rgba(0,80,130,.18)}
.cell{width:var(--cell);height:var(--cell);border-radius:5px;background:linear-gradient(145deg,rgba(18,95,138,.56),rgba(7,51,82,.68));position:relative;overflow:hidden;border:1px solid rgba(91,201,255,.12);transition:.12s}
.cell:hover{background:rgba(31,143,196,.58)}
.cell.ship{background:linear-gradient(145deg,#8093a3,#405363);box-shadow:inset 0 0 0 2px rgba(220,240,250,.16)}
.cell.ship:after{content:"";position:absolute;inset:25%;border-radius:50%;background:#1b2c39;box-shadow:inset 0 0 0 2px #9aabb6}
.cell.hit{background:radial-gradient(circle,#fff3aa 0 8%,#ff8b3d 10% 32%,#d82436 34% 56%,#40141e 58%);animation:blast .5s ease}
.cell.miss:after{content:"";position:absolute;width:26%;height:26%;border-radius:50%;background:#d4f6ff;left:37%;top:37%;box-shadow:0 0 14px #9feaff;animation:splash .45s ease}
.cell.sunk{background:radial-gradient(circle,#ffcf78 0 10%,#ff493f 12% 34%,#531923 36%);box-shadow:0 0 15px rgba(255,63,73,.7)}
.cell.targetable{cursor:crosshair}.cell.targetable:hover{box-shadow:inset 0 0 0 2px var(--cyan);transform:scale(1.05);z-index:2}
.cell.preview-ok{background:rgba(52,230,155,.42)!important}.cell.preview-bad{background:rgba(255,92,108,.42)!important}
@keyframes blast{0%{transform:scale(.6);filter:brightness(2.2)}55%{transform:scale(1.16)}100%{transform:none}}
@keyframes splash{0%{transform:scale(.2);opacity:0}60%{transform:scale(1.6);opacity:1}100%{transform:none}}
.axis{position:absolute;color:#7dbedb;font-size:.62rem;font-weight:800;pointer-events:none}.top-axis{left:19px;top:0;display:grid;grid-template-columns:repeat(10,var(--cell));gap:2px}.left-axis{left:0;top:19px;display:grid;grid-template-rows:repeat(10,var(--cell));gap:2px}
.axis span{display:flex;align-items:center;justify-content:center}
.sonar{position:absolute;left:50%;top:52%;width:40px;height:40px;border:2px solid #66e8ff;border-radius:50%;transform:translate(-50%,-50%);animation:sonar 1s ease-out forwards;pointer-events:none}
@keyframes sonar{to{width:90%;height:90%;opacity:0}}
.battle-info{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 14px}
.turn-card strong{color:var(--yellow)}.last-action{text-align:center;color:#d8f3ff;font-size:.9rem}.ships-left{display:flex;gap:12px;font-size:.8rem;color:var(--muted)}
.toast{position:fixed;z-index:50;left:50%;top:16%;transform:translate(-50%,-20px);padding:12px 18px;border-radius:999px;background:#071b2b;border:1px solid rgba(255,255,255,.15);box-shadow:0 14px 38px rgba(0,0,0,.45);font-weight:800;opacity:0}
.toast.show{display:block!important;animation:toast .9s ease both}
.toast.good{color:var(--green)}.toast.bad{color:var(--red)}.toast.info{color:var(--cyan)}
@keyframes toast{0%{opacity:0;transform:translate(-50%,-20px) scale(.9)}15%,78%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-10px)}}
.modal{position:fixed;inset:0;background:rgba(0,8,15,.82);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-card{text-align:center;width:min(420px,100%);padding:30px;border-radius:24px;background:linear-gradient(180deg,#0d3554,#071d30);border:1px solid rgba(100,220,255,.23);box-shadow:0 25px 70px rgba(0,0,0,.5);animation:rise .4s ease}
.trophy{font-size:4rem;animation:bob 1.3s ease-in-out infinite alternate}@keyframes bob{to{transform:translateY(-8px) rotate(4deg)}}
.modal-card h2{font-size:2rem;margin:5px 0}.modal-card p{color:var(--muted);margin-bottom:18px}
@media(max-width:850px){:root{--cell:min(8.2vw,42px)}.boards{grid-template-columns:1fr}.board-card{padding:8px}.battle-info{grid-template-columns:1fr 1fr}.last-action{grid-column:1/-1;grid-row:2}.ships-left{justify-content:flex-end}}
@media(max-width:520px){.app{padding:7px}.topbar{align-items:flex-start}.subtitle{display:none}.status-pills{max-width:55%}.pill{font-size:.66rem;padding:5px 7px}.slot-grid{grid-template-columns:1fr}.game-head{padding:9px}.game-actions{flex-direction:column}.setup-tools{padding:9px}.tool-line{align-items:flex-start}.accent-btn,.ghost-btn,.ready-btn,.danger-btn{padding:9px 10px}.fleet-list{gap:4px}.ship-chip{padding:6px 7px;font-size:.7rem}.boards{gap:7px}.board-card{border-radius:14px}.battle-info{font-size:.75rem;padding:8px}.last-action{font-size:.78rem}}
