/* Numbered plans stay legible over the molded peg board. */
.cell.queued-shot,.player-boards .cell.queued-shot {
  color:#fff0b0;font-size:clamp(12px,3.4vw,24px);font-weight:800;
  background:#344c56;border:2px solid #e5c971;
}
.cell.queued-shot::before { display:none }
.cell.revealed-ship { background:#9a8b56;border-color:#f3d77a;box-shadow:inset 0 3px 0 #fff4c54d }
.cell.revealed-ship::before { background:#54492f }
.survivor-key { color:#f3d77a }
.shot-plan-status { color:var(--muted);font-size:13px;margin:14px 0 0 }
.cell.recent-shot.hit { animation:hit-ring .8s ease-out }
.cell.recent-shot.miss { animation:water-ring .8s ease-out }
.endgame .turn-note,.endgame .hero { border-color:#e5c971;animation:tension 1.65s ease-in-out infinite }
@keyframes hit-ring { 0% { box-shadow:0 0 0 5px #f38780;transform:scale(.85) } 65% { box-shadow:0 0 0 12px #f3878000;transform:scale(1.06) } 100% { transform:none } }
@keyframes water-ring { 0% { box-shadow:0 0 0 3px #b8e5f3 } 100% { box-shadow:0 0 0 13px #b8e5f300 } }
@keyframes tension { 0%,100% { filter:brightness(1) } 35% { filter:brightness(1.15) } }
.victory-splash { position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at center,#294b59f5,#081522fc);text-align:center }
.victory-card { width:min(700px,100%);border:1px solid var(--accent);border-radius:24px;padding:clamp(24px,6vw,70px);box-shadow:0 0 90px #eedb6820;animation:victory-arrive .6s ease-out }
.victory-card h1 { font-size:clamp(36px,6vw,80px);overflow-wrap:anywhere }
.victory-card p:not(.eyebrow) { color:var(--muted);font-size:clamp(16px,2vw,24px) }
.victory-star { color:#eedb68;font-size:80px;line-height:1.3 }
.victory-card button { margin-top:20px }
@keyframes victory-arrive { from { opacity:0;transform:translateY(20px) scale(.96) } to { opacity:1;transform:none } }
.masthead-tools { display:flex;align-items:center;gap:14px }
.online-controls { margin-top:24px }
.practice-invite { margin-top:24px }
.next-round-countdown { color:var(--gold);font-weight:700;margin:8px 0 }
.round-result { display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:13px;color:var(--muted) }
.round-result strong { color:var(--ink) }
.tv .queue>div { flex-wrap:wrap }
.tv .round-result { flex-basis:100%;flex-direction:row;gap:1.5vw;margin-top:.4vh;font-size:1vw }
.tv .next-round-countdown { font-size:1.2vw;margin:0 }
.game-hero { display:block;width:100%;height:auto;aspect-ratio:1280/714;object-fit:cover;border-radius:14px;margin-bottom:28px }
.fire-flight { position:fixed;inset:0;z-index:9;pointer-events:none;overflow:hidden;contain:strict }
.fire-shell { position:absolute;left:0;top:0;width:20px;height:12px;margin:-6px 0 0 -10px;border-radius:60% 50% 50% 60%;background:radial-gradient(ellipse at 75% 50%,#fffbd1 15%,#ffd350 45%,#ff6d16 80%);box-shadow:0 0 12px #ff9c2b,0 0 28px #ff651a;will-change:transform }
.fire-shell::before { content:"";position:absolute;right:65%;top:-3px;width:45px;height:18px;border-radius:80% 0 0 80%;background:linear-gradient(90deg,#ed430000,#ff651aaa,#fff29e);filter:blur(2px) }
.fire-ember { position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#ffc561;box-shadow:0 0 7px #ff681c;will-change:transform }
.fire-impact { position:absolute;width:0;height:0;--burst:#ffac48 }
.fire-impact.splash { --burst:#b9efff }
.fire-impact::before { content:"";position:absolute;left:-30px;top:-30px;width:60px;height:60px;border-radius:50%;border:3px solid var(--burst);background:radial-gradient(circle,#fff4cda0,#ff6b1630 50%,transparent 70%);animation:fire-bloom .65s ease-out forwards }
.fire-impact.splash::before { background:#a4e6ff30;border-width:2px;animation:water-bloom .7s ease-out forwards }
.fire-impact i { position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--burst);box-shadow:0 0 8px var(--burst);animation:fire-spark .75s ease-out forwards }
.fire-impact.ship-sunk::before { width:90px;height:90px;left:-45px;top:-45px }
@keyframes fire-bloom { from { transform:scale(.2);opacity:1 } to { transform:scale(1.9);opacity:0 } }
@keyframes water-bloom { from { transform:scale(.2,.1);opacity:1 } to { transform:scale(1.7,.7);opacity:0 } }
@keyframes fire-spark { from { transform:translate(0,0);opacity:1 } to { transform:translate(var(--dx),var(--dy));opacity:0 } }
.display-link { color:var(--gold) }
.online-game.tv .masthead { display:block;position:fixed;bottom:12px;right:12px;padding:0;border:0;z-index:20 }
.online-game.tv .masthead .brand,.online-game.tv #connection { display:none }
#sound { min-height:36px;padding:7px 10px;font-size:12px }
@media(max-width:650px) { .masthead-tools { gap:8px }.connection { font-size:11px }.practice-hero { flex-direction:column }.practice-hero button { white-space:nowrap } }
@media(prefers-reduced-motion:reduce) { .cell.recent-shot,.endgame .turn-note,.endgame .hero,.victory-card { animation:none } }
