:root{--bg:#0f1115;--ink:#e9eef9;--muted:#9fb0cf;--gold:#ffd700;--good:#00ff6a;--bad:#ff5a5a;--water:rgba(0,95,150,.38)}*{box-sizing:border-box}html,body{margin:0}[hidden]{display:none!important}body{min-height:100dvh;color:var(--ink);font-family:"Press Start 2P",ui-monospace,monospace;background:#0f1115 url(/backgrounds/taiwan-strait.png) center / cover fixed;cursor:none;-webkit-tap-highlight-color:transparent}body:before{content:"";position:fixed;inset:0;z-index:-1;background:#0000008c;pointer-events:none}*{cursor:none!important}button{font-family:inherit;touch-action:manipulation}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;background:#05080ee6;border-bottom:3px solid var(--gold)}.topbar .back{color:var(--gold);text-decoration:none;font-size:9px;border:2px solid var(--gold);padding:8px 10px;background:#000;white-space:nowrap}.topbar .title{flex:1;text-align:center;color:var(--gold);font-size:clamp(10px,3.2vw,15px);text-shadow:0 0 10px rgba(255,215,0,.5)}.chip{font-size:9px;color:var(--gold);border:2px solid var(--gold);padding:8px 10px;background:#0009;white-space:nowrap}#now-playing{color:var(--gold);background:#000;border:2px solid var(--gold);padding:7px 10px;font-size:13px}.banner{position:sticky;top:50px;z-index:29;text-align:center;font-size:9px;line-height:1.7;padding:8px 10px}#conn-banner{background:#7a1d1d;color:#fff}#away-banner{background:#7a5a10;color:#fff}main{width:100%;max-width:640px;margin:0 auto;padding:14px 12px calc(120px + env(safe-area-inset-bottom))}.panel{background:#0000008c;border:2px solid var(--gold);padding:16px}.btn{background:#000;color:var(--gold);border:3px solid var(--gold);padding:12px 14px;font-size:10px;font-weight:700;min-height:44px;letter-spacing:.5px}.btn:hover:not(:disabled){background:var(--gold);color:#000}.btn:disabled{opacity:.35}.btn.go{border-color:var(--good);color:var(--good);box-shadow:0 0 10px #00ff6a40}.btn.go:hover:not(:disabled){background:var(--good);color:#000}.btn.no{border-color:var(--bad);color:var(--bad)}.btn.no:hover:not(:disabled){background:var(--bad);color:#000}.btn.solid{background:var(--gold);color:#000}.btn.solid:hover:not(:disabled){background:#ffe766}.row{display:flex;gap:8px;flex-wrap:wrap}.row>.btn{flex:1 1 90px}.hint{font-size:9px;line-height:1.9;color:var(--muted);text-align:center;margin:10px 0;min-height:18px}.hint.bad{color:var(--bad)}.hint.good{color:var(--good)}.statusbar{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:9px;line-height:1.7;padding:10px 12px;margin-bottom:12px;background:#0009;border:2px solid rgba(255,215,0,.5)}.statusbar b{color:var(--gold)}#toast{position:fixed;left:50%;top:calc(64px + env(safe-area-inset-top));transform:translate(-50%);z-index:60;max-width:92vw;background:#000;color:#fff;border:2px solid var(--bad);padding:10px 14px;font-size:9px;line-height:1.7;text-align:center;pointer-events:none}.lobby h2{margin:0 0 8px;font-size:12px;color:var(--gold)}.who{font-size:9px;line-height:1.9;color:var(--muted);margin-bottom:14px}.who b{color:#fff}.seg{display:flex;margin-bottom:12px}.seg button{flex:1;background:#000;color:var(--muted);border:2px solid #555;padding:12px 6px;font-size:9px;min-height:44px}.seg button.on{color:#000;background:var(--gold);border-color:var(--gold)}.seg button:disabled{opacity:.35}.field{width:100%;background:#000;color:var(--gold);border:2px solid var(--gold);padding:12px;font-family:inherit;font-size:11px;margin-bottom:10px;min-height:44px}.field::placeholder{color:#887a33}.lobby-list h3{margin:18px 0 8px;font-size:9px;color:var(--muted);font-weight:400;letter-spacing:1px;text-transform:uppercase}.lobby-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;margin-bottom:6px;border:2px solid rgba(255,215,0,.3);background:#ffd7000d;font-size:10px;line-height:1.6}.lobby-row .tag{font-size:8px;padding:2px 6px;border:1px solid currentColor;margin-left:6px}.lobby-row .tag.free{color:var(--good)}.lobby-row .tag.stake{color:var(--gold)}.lobby-row.own{border-color:var(--gold)}.lobby-row .btn{flex:0 0 auto;padding:8px 12px;min-height:36px}.empty{font-size:9px;color:var(--muted);padding:8px 0;line-height:1.8}#waiting{text-align:center}#waiting .spin{display:inline-block;animation:bob 1s ease-in-out infinite;font-size:18px}@keyframes bob{50%{transform:translateY(-5px)}}.board-wrap{width:100%;display:flex;justify-content:center}.board{width:min(100%,520px,max(260px,calc(100dvh - 300px)));aspect-ratio:1 / 1;position:relative;display:grid;grid-template-columns:repeat(11,1fr);grid-template-rows:repeat(11,1fr);-webkit-user-select:none;user-select:none;touch-action:manipulation}.cell{position:relative;min-width:0;min-height:0;border:1px solid rgba(255,215,0,.22);background:var(--water)}.cell.lab{border:none;background:none;color:var(--gold);display:flex;align-items:center;justify-content:center;font-size:clamp(7px,2.1vw,11px)}.board.live .cell:not(.lab):hover{background:#00aae673}.cell.hit:after,.cell.miss:after{content:"";position:absolute;inset:18%;border-radius:50%}.cell.miss:after{inset:34%;background:#cfe8ff;box-shadow:0 0 6px #c8e6ffb3}.cell.hit{background:#7800008c}.cell.hit:after{background:radial-gradient(circle,#fff3a0 0 18%,#ff9a1f 30%,#e02020 62%,transparent 70%);animation:flicker .9s ease-in-out infinite alternate}@keyframes flicker{to{transform:scale(.88);opacity:.85}}.cell.last{outline:2px solid #fff;outline-offset:-2px;z-index:2;animation:pulse .8s ease-in-out infinite alternate}@keyframes pulse{to{outline-color:var(--gold)}}.cell.target:before{content:"";position:absolute;inset:6%;z-index:3;border:2px solid var(--good);border-radius:50%;background:linear-gradient(var(--good),var(--good)) center/2px 100% no-repeat,linear-gradient(var(--good),var(--good)) center/100% 2px no-repeat;box-shadow:0 0 8px var(--good)}.ships{position:absolute;left:calc(100% / 11);top:calc(100% / 11);width:calc(100% * 10 / 11);height:calc(100% * 10 / 11);pointer-events:none}.ship{position:absolute;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}.ship svg{width:100%;height:100%;display:block}.ship.ghost{opacity:.82}.ship.ghost.ok{filter:drop-shadow(0 0 5px var(--good)) saturate(1.3)}.ship.ghost.bad{filter:drop-shadow(0 0 5px var(--bad)) hue-rotate(-40deg) saturate(2.4)}.ship.enemy{filter:drop-shadow(0 0 4px var(--bad)) saturate(.6);opacity:.9}.ship.sunk svg{filter:brightness(.45) sepia(1) hue-rotate(-50deg) saturate(4)}.tray{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:14px 0 4px}.chip-ship{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 8px 6px;min-width:58px;background:#0000008c;border:2px solid #555;color:var(--muted);font-size:7px;min-height:44px}.chip-ship .pips{display:flex;gap:2px}.chip-ship .pips i{width:9px;height:9px;background:#667;display:block}.chip-ship.sel{border-color:var(--gold);color:var(--gold)}.chip-ship.sel .pips i{background:var(--gold)}.chip-ship.done{border-color:var(--good);color:var(--good)}.chip-ship.done .pips i{background:var(--good)}.aim-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;flex-wrap:wrap;gap:8px;padding:8px 12px calc(10px + env(safe-area-inset-bottom));background:#05080ef7;border-top:3px solid var(--gold)}.aim-bar .btn{flex:1}.aim-bar .hintline{flex:1 0 100%;text-align:center;font-size:9px;line-height:1.6;color:var(--gold);min-height:14px}.aim-bar .hintline.bad{color:var(--bad)}.turnbar{position:sticky;top:50px;z-index:25;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px;margin:0 0 14px;background:#05080ef2;border:3px solid #555;font-size:10px;line-height:1.6}.turnbar.mine{border-color:var(--good);color:var(--good);box-shadow:0 0 14px #00ff6a4d}.turnbar.theirs{border-color:#7a8fb0;color:#c9d6ee}.turnbar.over{border-color:var(--gold);color:var(--gold)}.turnbar .time{font-size:12px;min-width:44px;text-align:right}.turnbar .time.low{color:var(--bad);animation:pulse2 .5s ease-in-out infinite alternate}@keyframes pulse2{to{opacity:.4}}.block{margin-bottom:22px}.block h3{margin:0 0 10px;font-size:10px;color:var(--gold);text-align:center;font-weight:400;letter-spacing:1px}.block h3 small{color:var(--muted);font-size:8px;margin-left:6px}.fleetline{display:flex;gap:5px 12px;flex-wrap:wrap;justify-content:center;margin-top:10px;font-size:7px;line-height:1.4;color:var(--muted)}.fleetline span{display:inline-flex;align-items:center;gap:5px}.fleetline .pips{display:inline-flex;gap:1px}.fleetline .pips i{width:7px;height:7px;background:#7fb0d8;display:block}.fleetline .pips i.x{background:#e03030}.fleetline .dead{color:#f77;text-decoration:line-through}.firebar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;align-items:center;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#05080ef7;border-top:3px solid var(--gold)}.firebar .lbl{flex:1;font-size:9px;line-height:1.7;color:var(--muted)}.firebar .btn{flex:0 0 46%;padding:14px 10px;font-size:12px}#result-card{text-align:center;margin-bottom:16px}#result-card h2{margin:0 0 8px;font-size:clamp(16px,5vw,24px);color:var(--gold)}#result-card p{margin:6px 0;font-size:10px;line-height:1.8}#result-card .pay{color:var(--good);font-size:13px}#result-card .row{margin-top:14px}.hit-banner{position:fixed;top:36%;left:50%;z-index:70;pointer-events:none;opacity:0;font-size:clamp(20px,7vw,34px);font-weight:700;color:#f33;text-shadow:0 0 14px rgba(255,0,0,.8),3px 3px 0 #000;white-space:nowrap}.hit-banner.show{animation:bannerPop .95s ease-out forwards}@keyframes bannerPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}30%,78%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.hit-banner.sunk{color:var(--gold);text-shadow:0 0 18px rgba(255,215,0,.9),3px 3px 0 #000}.hit-banner.miss{color:#6cf;text-shadow:0 0 14px rgba(100,200,255,.8),3px 3px 0 #000}.boom-sprite{position:fixed;z-index:65;pointer-events:none;background:url(/horse-game/explosion-sheet.png) no-repeat;background-size:800% 100%;animation:boomFrames .5s steps(7) forwards}@keyframes boomFrames{0%{background-position:0% 0}to{background-position:-700% 0}}.overlay{position:fixed;inset:0;background:#000000d9;z-index:100;display:none;align-items:center;justify-content:center;padding:20px}.overlay.open{display:flex}.modal{width:min(360px,90vw);max-height:70vh;overflow-y:auto;background:#0a0a0a;border:3px solid var(--gold);padding:20px;box-shadow:0 0 20px #ffd70066}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px}.modal-head h2{margin:0;font-size:12px;color:var(--gold);font-weight:400}.modal .btn{padding:8px 12px;min-height:0;font-size:9px;text-transform:uppercase}.picker-row{display:flex;align-items:center;padding:6px 0;border-bottom:1px solid rgba(255,215,0,.2);color:var(--gold);font-size:11px}.picker-row:last-child{border-bottom:none}.volume-row{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid rgba(255,215,0,.3)}.volume-row input[type=range]{flex:1;accent-color:var(--gold);touch-action:none;padding:14px 0}.volume-mute-btn{all:unset;font-size:16px;padding:4px 8px;border:1px solid var(--gold);background:#000}@media (max-width:520px){.topbar{gap:6px;padding-left:8px;padding-right:8px}.topbar .back{padding:8px}.chip{padding:8px 6px}}
