:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#e8edf0;background:#07131d;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #07131d;--panel: #0b1b27;--panel-raised: #102432;--line: rgba(168, 198, 211, .16);--muted: #8ca4b2;--paper: #f4f1e8;--signal: #ff6b3d;--signal-light: #ff9b77;--aqua: #63d7cf;--aqua-dim: #245c5c;--danger: #ff5264}*{box-sizing:border-box}html{min-width:320px;background:var(--ink)}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:3px solid rgba(99,215,207,.72);outline-offset:3px}.app-shell{min-height:100vh;position:relative;overflow:hidden;background:radial-gradient(circle at 80% 15%,rgba(25,97,103,.18),transparent 28%),linear-gradient(145deg,#07131d,#081722 62%,#061019)}.ocean-grid{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.22;background-image:linear-gradient(rgba(130,178,193,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(130,178,193,.06) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(to bottom,black,transparent 82%);mask-image:linear-gradient(to bottom,black,transparent 82%)}.topbar{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;max-width:1440px;margin:0 auto;padding:28px 42px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:#fff;background:none;border:0;padding:0;letter-spacing:.14em;cursor:pointer;font-size:14px}.brand strong{color:var(--signal)}.brand-mark{width:34px;height:28px;display:flex;align-items:flex-end;gap:3px;border-bottom:2px solid var(--aqua)}.brand-mark i{width:7px;background:var(--paper);display:block}.brand-mark i:nth-child(1){height:9px}.brand-mark i:nth-child(2){height:17px}.brand-mark i:nth-child(3){height:12px}.connection-pill{display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;letter-spacing:.05em}.connection-pill>span{width:7px;height:7px;border-radius:50%;background:#657581}.connection-pill.connected>span{background:var(--aqua);box-shadow:0 0 12px var(--aqua)}.connection-pill.connecting>span,.connection-pill.reconnecting>span{background:#e5b655;animation:pulse 1.2s infinite}.connection-pill.disconnected>span{background:var(--danger)}main{position:relative;z-index:2;max-width:1440px;min-height:calc(100vh - 154px);margin:0 auto;padding:38px 42px 64px}.site-footer{position:relative;z-index:2;max-width:1440px;margin:0 auto;padding:24px 42px;border-top:1px solid var(--line);display:flex;gap:28px;color:#69808e;font-size:11px;letter-spacing:.08em;text-transform:uppercase}.section-kicker{color:var(--aqua);font-family:Arial Narrow,Roboto Condensed,sans-serif;font-size:12px;letter-spacing:.18em;text-transform:uppercase}h1,h2,p{margin-top:0}h1,h2{font-family:Arial Narrow,Roboto Condensed,sans-serif;font-weight:600}.hero{min-height:660px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);align-items:center;gap:72px}.hero-copy{max-width:700px}.hero h1{margin:20px 0 24px;max-width:680px;font-size:clamp(56px,7vw,104px);line-height:.92;letter-spacing:-.035em;text-transform:uppercase}.hero h1 em{color:var(--signal);font-style:normal}.hero-lead{max-width:640px;color:#a7bac4;font-size:clamp(17px,2vw,21px);line-height:1.65}.primary-button,.secondary-button,.text-button{min-height:46px;border:0;border-radius:3px;padding:12px 18px;cursor:pointer;font-weight:700;transition:transform .18s ease,background .18s ease,opacity .18s ease}.primary-button{color:#08131b;background:var(--signal);box-shadow:0 10px 28px #ff6b3d33}.primary-button:hover:not(:disabled){transform:translateY(-2px);background:#ff815d}.secondary-button{color:#dbe7eb;background:#78a1b11a;border:1px solid rgba(164,196,207,.22)}.secondary-button:hover:not(:disabled){background:#78a1b12e}.text-button{color:var(--muted);background:transparent}button:disabled{opacity:.42;cursor:not-allowed}.hero-action{min-width:230px;display:inline-flex;justify-content:space-between;align-items:center;margin:10px 0 28px}.join-form{max-width:520px;padding-top:22px;border-top:1px solid var(--line)}.join-form label{display:block;margin-bottom:10px;color:var(--muted);font-size:13px}.join-form>div{display:flex;gap:10px}.join-form input{width:100%;min-height:48px;padding:0 16px;color:#fff;background:#050f17b8;border:1px solid rgba(164,196,207,.24);border-radius:3px;text-transform:uppercase;letter-spacing:.12em}.trust-list{margin:34px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:18px 28px;list-style:none;color:#7e96a3;font-size:12px}.trust-list span{color:var(--signal);margin-right:7px;font-family:Oswald}.radar-visual{position:relative;aspect-ratio:1;width:min(100%,610px);margin-inline:auto;border-radius:50%;border:1px solid rgba(99,215,207,.18);background:radial-gradient(circle,rgba(99,215,207,.08),transparent 66%);box-shadow:inset 0 0 80px #00000047,0 0 80px #1d767714}.radar-visual:before,.radar-visual:after{content:"";position:absolute;background:#63d7cf29}.radar-visual:before{left:50%;top:2%;bottom:2%;width:1px}.radar-visual:after{top:50%;left:2%;right:2%;height:1px}.radar-ring{position:absolute;border:1px solid rgba(99,215,207,.17);border-radius:50%;top:12%;right:12%;bottom:12%;left:12%}.ring-two{top:28%;right:28%;bottom:28%;left:28%}.ring-three{top:43%;right:43%;bottom:43%;left:43%}.radar-sweep{position:absolute;top:2%;right:2%;bottom:2%;left:2%;border-radius:50%;background:conic-gradient(from 20deg,transparent 0 74%,rgba(99,215,207,.32) 94%,rgba(99,215,207,.5));animation:sweep 6s linear infinite;-webkit-mask-image:radial-gradient(circle,transparent 0 3%,black 4%);mask-image:radial-gradient(circle,transparent 0 3%,black 4%)}.radar-blip{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 6px #ff6b3d1f,0 0 22px var(--signal)}.blip-one{left:72%;top:31%}.blip-two{left:28%;top:66%}.ship-silhouette{position:absolute;left:50%;top:50%;display:flex;gap:3px;transform:translate(-50%,-50%) rotate(-24deg)}.ship-silhouette i{width:30px;height:30px;background:var(--paper);border:4px solid #274451}.ship-silhouette i:first-child{border-radius:50% 0 0 50%}.ship-silhouette i:last-child{border-radius:0 50% 50% 0}.radar-label{position:absolute;bottom:12%;left:50%;transform:translate(-50%);color:#82c4c29e;font:12px Oswald;letter-spacing:.2em}.alert{max-width:900px;margin:0 auto 18px;padding:12px 16px;border-radius:3px;font-size:13px;text-align:center}.alert.error{color:#ffd9de;background:#ff52641f;border:1px solid rgba(255,82,100,.32)}.alert.notice{color:#b9ebe6;background:#63d7cf14;border:1px solid rgba(99,215,207,.2)}.empty-state{min-height:620px;max-width:760px;margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-state h1{margin:16px 0;font-size:clamp(48px,7vw,86px);text-transform:uppercase}.empty-state p{max-width:580px;color:var(--muted);line-height:1.7}.empty-state .primary-button{margin-top:20px}.sonar-loader{position:relative;width:120px;height:120px;margin-bottom:36px}.sonar-loader i{position:absolute;top:50%;right:50%;bottom:50%;left:50%;border:1px solid var(--aqua);border-radius:50%;animation:sonar 2.4s infinite}.sonar-loader i:nth-child(2){animation-delay:.8s}.sonar-loader i:nth-child(3){animation-delay:1.6s}.invite-card{min-height:620px;display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center;max-width:1100px;margin:0 auto}.invite-copy h1{margin:16px 0;font-size:clamp(50px,6vw,84px);line-height:.98;text-transform:uppercase}.invite-copy>p{color:var(--muted);max-width:550px;line-height:1.65}.room-code{display:flex;gap:8px;margin:32px 0}.room-code span{display:grid;place-items:center;width:44px;height:54px;color:var(--paper);background:var(--panel-raised);border:1px solid rgba(99,215,207,.26);font:24px Oswald}.button-row{display:flex;flex-wrap:wrap;gap:12px}.microcopy{margin-top:18px;color:#6f8793!important;font-size:12px}.qr-frame{width:min(100%,430px);aspect-ratio:1;margin:auto;display:grid;place-items:center;padding:30px;background:var(--paper);border:10px solid rgba(255,255,255,.06);outline:1px solid rgba(99,215,207,.3);box-shadow:0 30px 80px #0000004d}.qr-frame img{width:100%;display:block}.qr-loading{color:var(--ink)}.game-section{max-width:1280px;margin:0 auto}.stage-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin:18px 0 32px}.stage-heading h1{margin:10px 0 0;font-size:clamp(44px,5vw,72px);line-height:1;text-transform:uppercase}.readiness{display:flex;gap:8px}.readiness span{padding:9px 12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;font-size:12px}.readiness .ready{color:var(--aqua);border-color:#63d7cf59}.placement-layout{display:grid;grid-template-columns:minmax(470px,1fr) 350px;gap:28px;align-items:stretch}.fleet-panel,.board-card,.ready-bar,.result-card,.result-stats{background:linear-gradient(145deg,#102432f5,#081823f5);border:1px solid var(--line);box-shadow:0 22px 64px #0000002e}.fleet-panel{padding:28px}.fleet-panel h2{margin:8px 0;font-size:30px}.muted{color:var(--muted);font-size:13px;line-height:1.55}.fleet-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.fleet-ship{min-height:52px;padding:9px 10px;display:flex;flex-direction:column;gap:7px;align-items:flex-start;color:var(--muted);background:#030d148c;border:1px solid var(--line);cursor:pointer;font-size:10px;text-transform:uppercase}.fleet-ship.placed{color:var(--aqua);border-color:#63d7cf45}.fleet-ship.selected{box-shadow:inset 0 0 0 2px var(--signal);color:#fff}.mini-ship{display:flex;gap:2px}.mini-ship i{display:block;width:15px;height:10px;background:#5b7683;border:1px solid #7893a0}.placed .mini-ship i{background:var(--aqua-dim);border-color:var(--aqua)}.placement-controls{display:grid;gap:8px}.placement-controls button{width:100%}.placement-hint{min-height:42px;margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);color:var(--signal-light);font-size:12px;line-height:1.45}.ready-bar{margin-top:18px;padding:18px 22px;display:flex;justify-content:space-between;align-items:center}.ready-bar>div{display:flex;flex-direction:column;gap:4px}.ready-bar span{color:var(--muted);font-size:12px}.board-card{padding:18px 18px 22px;min-width:0}.board-title-row{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 12px 36px}.board-title-row h2{margin:0;font-size:24px}.board-title-row span{color:var(--muted);font-size:11px;text-transform:uppercase}.board-grid{display:grid;grid-template-columns:26px repeat(10,minmax(28px,1fr));gap:3px}.board-row-fragment{display:contents}.axis-label{display:grid;place-items:center;min-width:0;color:#66808d;font:11px Oswald}.board-cell{position:relative;aspect-ratio:1;min-width:0;padding:0;border:1px solid rgba(116,156,170,.18);background:#0410189e;color:#fff;cursor:crosshair;transition:background .12s ease,border-color .12s ease,transform .12s ease}.board-cell:hover:not(:disabled){z-index:2;transform:scale(1.06);border-color:var(--aqua);background:#63d7cf26}.board-cell.ship{background:#244554;border-color:#6d8995;box-shadow:inset 0 0 0 2px #193440}.board-cell.miss{background:#5e7e8c1f;color:#77909b}.board-cell.hit{background:#ff6b3d33;border-color:var(--signal);color:var(--signal-light)}.board-cell.sunk{background:#ff526447;border-color:var(--danger);color:#fff}.board-cell.pending{border-color:#e7ba5e;animation:pulse 1s infinite}.board-cell.blocked{background:#64828c0a;color:#435661}.cell-mark{font:700 clamp(12px,2vw,21px) "Manrope"}.board-cell:disabled{cursor:default;opacity:1}.battle-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.turn-indicator{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.turn-indicator span{width:10px;height:10px;border-radius:50%;background:#5e727c}.turn-indicator.active{color:var(--aqua)}.turn-indicator.active span{background:var(--aqua);box-shadow:0 0 15px var(--aqua);animation:pulse 1.4s infinite}.legend{display:flex;justify-content:flex-end;gap:24px;margin-top:16px;color:var(--muted);font-size:11px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:12px;height:12px;border:1px solid}.legend-miss{border-color:#77909b!important}.legend-hit{border-color:var(--signal)!important;background:#ff6b3d33}.legend-sunk{border-color:var(--danger)!important;background:#ff526447}.result-layout{min-height:620px;display:grid;grid-template-columns:1fr 330px;gap:24px;align-items:center;max-width:1000px;margin:0 auto}.result-card{padding:52px;position:relative;overflow:hidden}.result-card:after{content:"";position:absolute;width:320px;height:320px;right:-140px;top:-140px;border:1px solid rgba(99,215,207,.15);border-radius:50%;box-shadow:0 0 0 50px #63d7cf06,0 0 0 100px #63d7cf05}.result-card h1{margin:16px 0;font-size:clamp(54px,7vw,92px);line-height:.95;text-transform:uppercase}.result-card>p{max-width:560px;color:var(--muted);line-height:1.6}.result-emblem{width:62px;height:62px;display:grid;place-items:center;margin-bottom:26px;border:1px solid var(--aqua);border-radius:50%;color:var(--aqua);font-size:28px}.defeat .result-emblem{color:var(--danger);border-color:var(--danger)}.verification{display:inline-flex;align-items:center;gap:9px;margin:12px 0 28px;padding:9px 12px;border-radius:3px;background:#7896a01a;color:var(--muted);font-size:12px}.verification span{width:20px;height:20px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%}.verification.verified{color:var(--aqua)}.verification.failed{color:var(--danger)}.result-stats{display:grid;grid-template-columns:1fr 1fr}.result-stats>div{min-height:150px;padding:24px;display:flex;flex-direction:column;justify-content:flex-end;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.result-stats strong{font:46px Oswald;color:var(--paper)}.result-stats span{color:var(--muted);font-size:11px;line-height:1.4;text-transform:uppercase}.result-actions{position:relative;z-index:2}@keyframes sweep{to{transform:rotate(360deg)}}@keyframes sonar{0%{top:50%;right:50%;bottom:50%;left:50%;opacity:1}to{top:0;right:0;bottom:0;left:0;opacity:0}}@keyframes pulse{50%{opacity:.45}}@media(max-width:980px){.hero{grid-template-columns:1fr;padding-top:56px}.radar-visual{width:min(78vw,520px)}.placement-layout{grid-template-columns:1fr}.fleet-panel{order:-1}.fleet-list{grid-template-columns:repeat(5,1fr)}.battle-layout{grid-template-columns:1fr}.result-layout{grid-template-columns:1fr;padding-top:36px}.result-stats{grid-template-columns:repeat(4,1fr)}.result-stats>div{min-height:110px}.invite-card{grid-template-columns:1fr;padding:40px 0}.qr-frame{width:min(72vw,380px)}}@media(max-width:640px){.topbar{padding:20px 16px}.connection-pill{padding:7px 9px;font-size:0}.connection-pill>span{width:9px;height:9px}.brand{font-size:12px}.brand-mark{width:29px}main{padding:26px 12px 46px}.site-footer{padding:20px 16px;flex-direction:column;gap:8px}.hero{min-height:auto;gap:56px;padding-top:40px}.hero h1{font-size:clamp(52px,17vw,76px)}.hero-lead{font-size:16px}.join-form>div{flex-direction:column}.trust-list{flex-direction:column}.radar-visual{width:92vw;max-width:420px;margin-left:-2vw}.stage-heading{align-items:flex-start;flex-direction:column}.stage-heading h1{font-size:44px}.readiness{width:100%}.readiness span{flex:1;text-align:center}.fleet-panel{padding:20px 14px}.fleet-list{grid-template-columns:1fr 1fr}.ready-bar{align-items:stretch;flex-direction:column;gap:16px}.ready-bar button{width:100%}.board-card{padding:12px 8px 14px}.board-title-row{margin-left:28px}.board-title-row h2{font-size:20px}.board-grid{grid-template-columns:22px repeat(10,minmax(23px,1fr));gap:2px}.axis-label{font-size:9px}.cell-mark{font-size:13px}.legend{justify-content:flex-start;flex-wrap:wrap;gap:12px}.room-code{gap:4px}.room-code span{width:34px;height:46px;font-size:20px}.invite-copy h1{font-size:54px}.qr-frame{width:88vw;padding:18px}.result-card{padding:34px 22px}.result-card h1{font-size:58px}.result-stats{grid-template-columns:1fr 1fr}.result-stats>div{min-height:120px}.empty-state h1{font-size:52px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
