:root{--fleet-topbar-height:calc(40px + env(safe-area-inset-top,0px))}fleet-topbar{z-index:var(--fleet-topbar-z,1000);height:var(--fleet-topbar-height);background:#111827eb;display:block;position:fixed;top:0;left:0;right:0}fleet-topbar[hidden]{display:none}html.fleet-topbar-pad body,body.fleet-topbar-pad{padding-top:var(--fleet-topbar-height)}:root{--top-bar:var(--fleet-topbar-height,calc(40px + env(safe-area-inset-top,0px)));--fleet-topbar-z:10000;--abyss-0:#02070d;--abyss-1:#051726;--steel-0:#081824;--steel-1:#0e2637;--steel-edge:#1d425a;--rivet:#2f5872;--sonar:#37f0a0;--sonar-dim:#17976180;--hydro:#37c9ff;--amber:#ffb02e;--alert:#ff5252;--ink:#d7e9f2;--ink-dim:#86a1b2;--font-display:"Black Ops One", "Oswald", system-ui, sans-serif;--font-head:"Oswald", "Segoe UI", system-ui, sans-serif;--font-mono:"Share Tech Mono", ui-monospace, "Courier New", monospace;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 800px at 50% -10%, #0a2c3f 0%, #0a2c3f00 60%), radial-gradient(900px 700px at 90% 110%, #06303a 0%, #06303a00 55%), linear-gradient(180deg, var(--abyss-1) 0%, var(--abyss-0) 70%);background-attachment:fixed;min-height:100vh}body:before{content:"";z-index:-1;pointer-events:none;background:repeating-linear-gradient(115deg,#37f0a006 0 2px,#0000 2px 5px) 0 0/220px 220px,radial-gradient(120% 120% at 50% 0,#0000 55%,#0000008c 100%) 0 0/100% 100%;animation:24s linear infinite caustics;position:fixed;inset:0}@keyframes caustics{0%{background-position:0 0,0 0}to{background-position:220px 440px,0 0}}.app{min-height:calc(100vh - var(--top-bar))}.loading{min-height:calc(100vh - var(--top-bar));justify-content:center;align-items:center;font-size:1.5rem;display:flex}.auth-page{min-height:calc(100vh - var(--top-bar));justify-content:center;align-items:center;padding:2rem;display:flex}.auth-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:16px;width:100%;max-width:400px;padding:2.5rem;box-shadow:0 8px 32px #0000004d}.auth-container h1{text-align:center;color:#00d4ff;margin-bottom:.5rem;font-size:2rem}.auth-container h2{text-align:center;opacity:.9;margin-bottom:1.5rem;font-weight:400}.form-group{margin-bottom:1.25rem}.form-group label{opacity:.9;margin-bottom:.5rem;font-size:.9rem;display:block}.form-group input{border:1px solid var(--steel-edge);width:100%;color:var(--ink);font-family:var(--font-mono);background:#020c1499;border-radius:6px;padding:.75rem 1rem;font-size:1rem;transition:border-color .3s,box-shadow .3s}.form-group input:focus{border-color:var(--sonar);outline:none;box-shadow:0 0 12px #37f0a040}button{border:1px solid var(--steel-edge);width:100%;color:var(--ink);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:linear-gradient(#14384c,#0c2333);border-radius:6px;padding:.8rem;font-size:.95rem;transition:transform .12s,box-shadow .15s,border-color .15s,background .15s;box-shadow:inset 0 1px #ffffff14,0 2px 4px #0006}button:hover:not(:disabled){border-color:var(--sonar);color:#fff;transform:translateY(-1px);box-shadow:inset 0 1px #ffffff1a,0 0 14px #37f0a059}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:not-allowed}::selection{background:#37f0a04d}.error-message{background:#ff3b3033;border:1px solid #ff3b3080;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem}.sso-divider{align-items:center;margin:1.25rem 0;display:flex}.sso-divider:before,.sso-divider:after{content:"";background:#fff3;flex:1;height:1px}.sso-divider span{color:#fff9;text-transform:uppercase;letter-spacing:1px;padding:0 1rem;font-size:.85rem}.sso-button{color:#00d4ff;cursor:pointer;background:0 0;border:1px solid #00d4ff66;border-radius:8px;width:100%;padding:.875rem;font-size:1rem;transition:all .3s}.sso-button:hover{background:#00d4ff1a;border-color:#00d4ff;transform:translateY(-2px);box-shadow:0 4px 16px #00d4ff33}.auth-link{text-align:center;opacity:.9;margin-top:1.5rem}.auth-link a{color:#00d4ff;text-decoration:none}.auth-link a:hover{text-decoration:underline}.home-page{min-height:calc(100vh - var(--top-bar))}.header{background:#0003;justify-content:space-between;align-items:center;padding:1.5rem 2rem;display:flex}.header h1{color:#00d4ff;font-size:1.5rem}.user-info{align-items:center;gap:1rem;display:flex}.user-info span{opacity:.9}.logout-btn{background:#ffffff1a;width:auto;padding:.5rem 1rem;font-size:.9rem}.logout-btn:hover{box-shadow:none;background:#fff3;transform:none}.main-content{justify-content:center;padding:3rem 2rem;display:flex}.game-options{flex-wrap:wrap;justify-content:center;gap:2rem;display:flex}.option-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#ffffff1a;border-radius:16px;width:280px;padding:2rem}.option-card h2{color:#00d4ff;margin-bottom:.75rem}.option-card p{opacity:.8;margin-bottom:1.5rem;font-size:.95rem}.primary-btn{background:linear-gradient(135deg,#00d4ff,#09c)}.back-btn{background:#ffffff1a;margin-top:1rem}.back-btn:hover{background:#fff3}.create-game-page,.join-game-page{min-height:calc(100vh - var(--top-bar));max-width:600px;margin:0 auto;padding:2rem}.create-game-page h1,.join-game-page h1{text-align:center;color:#00d4ff;margin-bottom:2rem}.option-section{margin-bottom:2rem}.option-section h2{opacity:.9;margin-bottom:1rem;font-size:1.1rem}.option-buttons{flex-wrap:wrap;gap:1rem;display:flex}.option-btn{background:#ffffff1a;border:2px solid #0000;flex-direction:column;flex:1;align-items:center;gap:.5rem;min-width:200px;padding:1.5rem;display:flex}.option-btn.selected{background:#00d4ff33;border-color:#00d4ff}.option-btn .option-icon{font-size:2rem}.option-btn .option-label{font-weight:600}.option-btn .option-desc{opacity:.7;font-size:.85rem}.create-btn{margin-top:2rem}.lobby-page{min-height:calc(100vh - var(--top-bar));padding:1.5rem}.lobby-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.lobby-header h1{color:#00d4ff}.game-code{background:#0000004d;border-radius:8px;padding:.75rem 1.5rem}.game-code strong{letter-spacing:.2rem;color:#00d4ff;margin-left:.5rem;font-size:1.5rem}.game-settings{justify-content:center;gap:1rem;margin-bottom:2rem;display:flex}.setting-badge{background:#ffffff1a;border-radius:20px;padding:.5rem 1rem;font-size:.9rem}.setting-badge.same-room{background:#4caf504d}.setting-badge.online{background:#2196f34d}.setting-badge.live{background:#ff98004d}.setting-badge.turn-based{background:#9c27b04d}.teams-container{flex-wrap:wrap;justify-content:center;gap:2rem;margin-bottom:2rem;display:flex}.team-card{background:#ffffff1a;border:2px solid #0000;border-radius:16px;width:350px;padding:1.5rem}.team-card.alpha{border-color:#f4433680}.team-card.alpha h2{color:#f44336}.team-card.bravo{border-color:#2196f380}.team-card.bravo h2{color:#2196f3}.team-card.selected{background:#ffffff26}.team-card h2,.join-team-btn,.team-players{margin-bottom:1rem}.player-row{background:#0003;border-radius:4px;justify-content:space-between;margin-bottom:.5rem;padding:.5rem;display:flex}.player-row .player-role{opacity:.7;font-size:.9rem}.role-selection{border-top:1px solid #ffffff1a;margin-top:1.5rem;padding-top:1rem}.role-selection h3{margin-bottom:1rem;font-size:1rem}.role-btn{background:#ffffff0d;justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.role-btn.selected{background:#00d4ff4d;border:1px solid #00d4ff}.role-btn .required-badge{background:#ff980080;border-radius:4px;padding:.2rem .5rem;font-size:.75rem}.automation-section{background:#ffffff0d;border-radius:12px;max-width:500px;margin-bottom:2rem;margin-left:auto;margin-right:auto;padding:1.5rem}.automation-section h3{margin-bottom:.5rem}.automation-section p{opacity:.7;margin-bottom:1rem;font-size:.9rem}.automation-toggles{flex-wrap:wrap;gap:1rem;display:flex}.toggle-label{cursor:pointer;align-items:center;gap:.5rem;display:flex}.toggle-label input{width:18px;height:18px}.start-game-btn{background:linear-gradient(135deg,#4caf50,#2e7d32);max-width:300px;margin:0 auto 1rem;display:block}.start-game-btn:disabled{background:#ffffff1a}.game-page{min-height:calc(100vh - var(--top-bar));flex-direction:column;display:flex}.game-header{background:#0000004d;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex}.team-info{gap:1rem;display:flex}.team-badge{border-radius:4px;padding:.5rem 1rem;font-weight:600}.team-badge.alpha{background:#f4433680}.team-badge.bravo{background:#2196f380}.role-badge{text-transform:capitalize;background:#fff3;border-radius:4px;padding:.5rem 1rem}.health-display{font-size:1.2rem}.game-content{flex:1;justify-content:center;padding:1rem;display:flex}.captain-panel{width:100%;max-width:100%}.captain-panel h2{color:#00d4ff;text-align:center;margin-bottom:1rem}.captain-layout{align-items:flex-start;gap:1.5rem;display:flex}@media (width<=900px){.captain-layout{flex-direction:column;align-items:center}}.captain-left{flex:none}.captain-right{flex-direction:column;flex:1;gap:1rem;min-width:280px;display:flex}.map-container{justify-content:center;display:flex}.game-map{background:#00000080;border-radius:8px;flex-direction:column;gap:2px;padding:4px;display:flex}.game-map.small{transform-origin:0 0;transform:scale(.6)}.map-row{gap:2px;display:flex}.map-cell{cursor:pointer;border-radius:3px;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;display:flex}.map-cell.water{background:#2196f34d}.map-cell.island{background:#8b4513cc}.map-cell.submarine{background:#f4433680}.movement-controls{flex-direction:column;align-items:center;gap:.25rem;margin-top:.75rem;display:flex}.movement-controls button{width:100px;padding:.5rem;font-size:.9rem}.horizontal-controls{gap:1rem;display:flex}.waiting-confirmation{text-align:center;background:#ff980033;border-radius:8px;margin-bottom:1.5rem;padding:1rem}.waiting-confirmation p{margin-bottom:.5rem}.confirmed-roles{justify-content:center;gap:1rem;display:flex}.confirmed-roles .confirmed{color:#4caf50}.systems-display{background:#0000004d;border-radius:8px;padding:1rem}.systems-display h3{color:#00d4ff;margin-bottom:.5rem;font-size:1rem}.system-row{align-items:center;gap:.75rem;margin-bottom:.4rem;font-size:.9rem;display:flex}.system-row>span{width:90px}.charge-bar{gap:3px;display:flex}.charge-pip{background:#fff3;border-radius:3px;width:16px;height:16px}.charge-pip.filled{background:#4caf50}.fire-btn{background:#f44336;width:auto;padding:.25rem .75rem;font-size:.8rem}.fire-btn.active{background:#ff9800;box-shadow:0 0 0 2px #ff980080}.firing-hint{color:#ffcdd2;text-align:center;background:#f4433633;border:1px solid #f4433699;border-radius:8px;margin-bottom:.5rem;padding:.5rem .75rem;font-size:.85rem}.game-map.targeting{cursor:crosshair}.game-map.targeting .map-cell.targetable{cursor:crosshair;animation:1.2s ease-in-out infinite targetPulse;box-shadow:inset 0 0 0 2px #f44336cc}@keyframes targetPulse{0%,to{box-shadow:inset 0 0 0 2px #f4433680}50%{box-shadow:inset 0 0 0 2px #f44336}}.game-result{text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006;border-radius:12px;max-width:480px;margin:4rem auto 0;padding:2.5rem 2rem}.game-result h1{margin-bottom:1rem;font-size:2.5rem}.game-result p{color:#fffc;margin-bottom:2rem}.game-result .aye-btn{width:auto;padding:.75rem 2rem;display:inline-block}.first-mate-panel,.engineer-panel,.radio-operator-panel{width:100%;max-width:600px}.first-mate-panel h2,.engineer-panel h2,.radio-operator-panel h2{color:#00d4ff;text-align:center;margin-bottom:1.5rem}.move-alert{text-align:center;background:#ff980033;border-radius:8px;margin-bottom:1.5rem;padding:1rem}.move-alert strong{color:#00d4ff;font-size:1.5rem}.systems-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.system-btn{background:#ffffff1a;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem;display:flex}.system-btn.full{background:#4caf504d}.system-btn .system-icon{font-size:2rem}.system-btn .system-name{font-weight:600}.aye-btn{background:linear-gradient(135deg,#4caf50,#2e7d32);max-width:300px;margin:0 auto;padding:1rem;font-size:1.25rem;display:block}.tracking-controls{background:#0000004d;border-radius:12px;margin-bottom:1.5rem;padding:1.5rem}.tracking-controls h3{margin-bottom:1rem}.direction-buttons{justify-content:center;gap:.5rem;display:flex}.direction-buttons button{width:60px}.enemy-path{background:#0000004d;border-radius:12px;margin-bottom:1.5rem;padding:1.5rem}.enemy-path h3{margin-bottom:1rem}.path-display{flex-wrap:wrap;gap:.5rem;min-height:40px;margin-bottom:1rem;display:flex}.path-step{background:#00d4ff4d;border-radius:4px;padding:.5rem 1rem;font-weight:600}.no-path{opacity:.5;font-style:italic}.clear-path{background:#ffffff1a;width:auto;padding:.5rem 1rem}.tracking-map{background:#0000004d;border-radius:12px;margin-bottom:1.5rem;padding:1rem;overflow:hidden}.waiting-captain,.listening-status{text-align:center;background:#ffffff1a;border-radius:12px;margin-bottom:1.5rem;padding:2rem}.waiting-captain p,.listening-status p{opacity:.8;font-size:1.1rem}.action-required{color:#ff9800;font-weight:600}.action-done{color:#4caf50;font-weight:600}.circuit-board{grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1rem;display:grid}.circuit-section{background:#0000004d;border:2px solid #0000;border-radius:8px;padding:.75rem;transition:all .3s}.circuit-section.active{background:#ff980026;border-color:#ff9800}.circuit-section h4{text-align:center;margin-bottom:.5rem;font-size:1rem}.circuit-section.n h4{color:#2196f3}.circuit-section.s h4{color:#f44336}.circuit-section.e h4{color:#4caf50}.circuit-section.w h4{color:#ff9800}.damage-slots{flex-wrap:wrap;justify-content:center;gap:.35rem;display:flex}.damage-slot{border-radius:6px;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.1rem;transition:all .2s;display:flex;position:relative}.damage-slot.torpedo{background:#f443364d;border:2px solid #f44336}.damage-slot.mine{background:#ff98004d;border:2px solid #ff9800}.damage-slot.drone{background:#2196f34d;border:2px solid #2196f3}.damage-slot.sonar{background:#9c27b04d;border:2px solid #9c27b0}.damage-slot.silence{background:#4caf504d;border:2px solid #4caf50}.damage-slot.circuit-A .slot-circuit{background:#e91e63}.damage-slot.circuit-B .slot-circuit{background:#ff9800}.damage-slot.circuit-C .slot-circuit{background:#9c27b0}.damage-slot.circuit-D .slot-circuit{background:#00bcd4}.damage-slot.damaged{color:#f44336;background:#0009;border-color:#666}.damage-slot:disabled:not(.damaged){opacity:.4}.damage-slot:hover:not(:disabled):not(.damaged){transform:scale(1.05)}.slot-circuit{background:#666;border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;font-size:.6rem;font-weight:700;display:flex;position:absolute;top:2px;right:2px}.circuit-legend{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.legend-row{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.circuit-hint{text-align:center;opacity:.7;margin:0;font-size:.75rem}.legend-item{border-radius:4px;padding:.2rem .5rem;font-size:.7rem}.legend-item.torpedo{background:#f443364d}.legend-item.mine{background:#ff98004d}.legend-item.drone{background:#2196f34d}.legend-item.sonar{background:#9c27b04d}.legend-item.silence{background:#4caf504d}.blocked-systems{background:#0003;border-radius:6px;margin-bottom:.75rem;padding:.5rem .75rem}.blocked-systems h4{color:#00d4ff;margin-bottom:.4rem;font-size:.85rem}.system-status-grid{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.system-status{border-radius:4px;padding:.25rem .5rem;font-size:.8rem}.system-status.ok{color:#4caf50;background:#4caf504d}.system-status.blocked{color:#f44336;background:#f443364d}.role-tabs{background:#0003;justify-content:center;gap:.5rem;padding:1rem;display:flex}.role-tab{color:#fff;cursor:pointer;text-transform:capitalize;background:#ffffff1a;border:none;border-radius:8px;padding:.75rem 1.5rem;transition:all .2s;position:relative}.role-tab:hover{background:#fff3}.role-tab.active{background:#00d4ff4d;border:2px solid #00d4ff}.role-tab.needs-action{animation:1s infinite pulse}.role-tab .action-dot{background:#ff9800;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.8rem;font-weight:700;display:flex;position:absolute;top:-5px;right:-5px}@keyframes pulse{0%,to{box-shadow:0 0 #ff980066}50%{box-shadow:0 0 0 10px #ff980000}}.roles-badge{text-transform:capitalize;background:#fff3;border-radius:4px;padding:.5rem 1rem}.role-grid{flex-direction:column;gap:.75rem;display:flex}.role-row{background:#ffffff0d;border:2px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;transition:all .2s;display:flex}.role-row.selected{background:#00d4ff33;border-color:#00d4ff}.role-row.automated{background:#9c27b033;border-color:#9c27b0}.role-info{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.role-info .role-name{font-weight:600}.role-info .assigned-to{opacity:.7;font-size:.85rem}.role-controls{gap:1rem;display:flex}.role-checkbox{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.role-checkbox input{cursor:pointer;width:18px;height:18px}.role-checkbox.auto{color:#9c27b0}.automation-panel{background:#9c27b01a;border:2px solid #9c27b04d;border-radius:8px;margin-top:.75rem;padding:.75rem}.automation-panel h3{color:#9c27b0;text-align:center;margin-bottom:.5rem;font-size:.95rem}.auto-section{background:#0003;border-radius:6px;margin-bottom:.5rem;padding:.5rem .75rem}.auto-section:last-child{margin-bottom:0}.auto-section h4{color:#00d4ff;margin-bottom:.25rem;font-size:.9rem}.auto-hint{opacity:.7;margin-bottom:.4rem;font-size:.75rem}.auto-status{color:#4caf50;font-size:.9rem}.priority-list{flex-direction:column;gap:.25rem;display:flex}.priority-item{background:#ffffff0d;border-radius:4px;align-items:center;gap:.5rem;padding:.25rem .5rem;font-size:.85rem;transition:all .2s;display:flex}.priority-item.full{opacity:.5}.priority-item.next{background:#00d4ff33;border:1px solid #00d4ff}.priority-rank{background:#00d4ff4d;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.7rem;font-weight:700;display:flex}.priority-system{flex:1}.priority-status{opacity:.7;font-size:.85rem}.priority-controls{gap:.15rem;display:flex}.priority-controls button{background:#ffffff1a;justify-content:center;align-items:center;width:22px;height:22px;padding:0;font-size:.7rem;display:flex}.priority-controls button:disabled{opacity:.3}.next-charge{text-align:center;margin-top:.4rem;font-size:.8rem}.next-charge strong{color:#00d4ff}.direction-status{grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:.75rem;display:grid}.direction-item{background:#ffffff0d;border-radius:6px;flex-direction:column;align-items:center;padding:.5rem;display:flex}.direction-item.safe{background:#4caf5033}.direction-item.medium{background:#ff980033}.direction-item.high{background:#f4433633}.direction-label{margin-bottom:.25rem;font-size:1.1rem;font-weight:700}.damage-indicator{gap:3px;display:flex}.damage-dot{background:#4caf5080;border-radius:50%;width:10px;height:10px}.damage-dot.damaged{background:#f44336cc}.danger-label{margin-top:.25rem;font-size:.9rem}.direction-recommendation{text-align:center;background:#0003;border-radius:4px;padding:.5rem;font-size:.85rem}.direction-recommendation strong{color:#4caf50}.start-hint{text-align:center;opacity:.75;max-width:640px;margin:.6rem auto 0;font-size:.82rem;line-height:1.4}.start-hint strong{color:#00d4ff}.mode-badge{background:#00d4ff26;border:1px solid #00d4ff66;border-radius:999px;padding:.15rem .6rem;font-size:.75rem}.mode-badge.live{background:#ff980026;border-color:#ff980080}.surface-banner{color:#ffe082;text-align:center;background:#ffc1072e;border:1px solid #ffc10799;border-radius:8px;margin-bottom:.75rem;padding:.6rem;font-weight:600}.map-cell{position:relative}.map-cell .sector-label{opacity:.5;pointer-events:none;font-size:.5rem;position:absolute;top:1px;left:2px}.map-cell .cell-icon{font-size:.95rem;line-height:1}.map-cell.sector-edge-r{border-right:2px solid #00d4ff80}.map-cell.sector-edge-b{border-bottom:2px solid #00d4ff80}.map-cell.mine{background:#e91e6373}.map-cell.clickable{cursor:pointer}.map-cell.legal-target{cursor:crosshair;animation:1.2s ease-in-out infinite targetPulse;box-shadow:inset 0 0 0 2px #00d4ffe6}.map-cell.candidate{background:#4caf5059}.map-cell.ghost{box-shadow:inset 0 0 0 2px #ffeb3bcc}.map-cell.ghost-start{background:#ffeb3b66}.map-cell.annotated{box-shadow:inset 0 0 0 2px #ffffffb3}.map-cell.enemy-sector{background:#f4433640}.map-cell:focus{outline:none}.map-cell:focus-visible{outline-offset:-2px;z-index:1;outline:2px solid #fff}.sonar-scope.small .map-cell:focus-visible{outline-width:4px}.game-map.selecting{cursor:crosshair}.game-map.selecting--mine .map-cell.legal-target{box-shadow:inset 0 0 0 2px #e91e63e6}.game-map.selecting--silence .map-cell.legal-target{box-shadow:inset 0 0 0 2px #9c27b0e6}.game-map.selecting--drone-sector .map-cell{cursor:pointer}.targeting-hint{color:#b3ecff;background:#00d4ff26;border:1px solid #00d4ff80;border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.targeting-hint .cancel-target{background:#ffffff26;width:auto;padding:.2rem .6rem;font-size:.75rem}.targeting-hint .targeting-keys{opacity:.75;margin-top:.15rem;font-size:.75rem;display:block}.cooldown-timer{color:#ff9800;margin-top:.4rem;font-size:.8rem}.trapped-hint{color:#ff5252;margin-top:.4rem;font-size:.8rem;font-weight:600}.systems-rail{background:#0000004d;border-radius:8px;margin-bottom:1rem;padding:1rem}.systems-rail h3{color:#00d4ff;margin-bottom:.5rem;font-size:1rem}.system-control{border-radius:6px;align-items:center;gap:.6rem;margin-bottom:.5rem;padding:.25rem;display:flex}.system-control .system-label{width:110px;font-size:.9rem}.system-control.ready{background:#4caf501f}.system-control.blocked{opacity:.5}.system-control.surface-control{border-top:1px solid #ffffff1a;margin-top:.5rem;padding-top:.6rem}.activate-btn{background:#0097a7;width:auto;margin-left:auto;padding:.25rem .75rem;font-size:.8rem}.activate-btn.active{background:#ff9800;box-shadow:0 0 0 2px #ff980080}.activate-btn.danger{background:#f44336}.captain-reports{flex-direction:column;gap:.6rem;margin-bottom:1rem;display:flex}.captain-reports h4{color:#00d4ff;margin-bottom:.3rem;font-size:.85rem}.drone-report,.sonar-report,.mine-list{background:#0000004d;border-radius:8px;padding:.6rem .75rem}.drone-answer{font-weight:600}.drone-answer.yes{color:#ff5252}.drone-answer.no{color:#4caf50}.sonar-fact{background:#ffffff14;border-radius:4px;margin-bottom:.25rem;padding:.25rem .5rem;font-size:.85rem}.mine-item{justify-content:space-between;align-items:center;margin-bottom:.25rem;font-size:.85rem;display:flex}.mine-item .detonate-btn{background:#e91e63;width:auto;padding:.15rem .6rem;font-size:.75rem}.token-tray,.breakdown-queue{background:#ff98001f;border:1px solid #ff980066;border-radius:8px;align-items:center;gap:.4rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.9rem;display:flex}.token-pip{background:#ff9800;border-radius:50%;width:14px;height:14px}.queue-dir{background:#ffffff26;border-radius:4px;padding:0 .4rem;font-size:.8rem}.system-btn.ready{box-shadow:0 0 0 2px #4caf5099}.hull-risk-flag{color:#ff5252;font-size:.7rem}.radio-tools{margin-bottom:.75rem}.radio-tools .candidate-count{margin-bottom:.4rem;font-size:.95rem}.radio-tools .candidate-count strong{color:#4caf50}.radio-tools .radio-mode-toggle{gap:.4rem;margin-bottom:.4rem;display:flex}.radio-tools .radio-mode-toggle button{background:#ffffff1f;width:auto;padding:.25rem .6rem;font-size:.8rem}.radio-tools .radio-mode-toggle button.active{background:#0097a7}.radio-tools .ghost-status{border-radius:6px;padding:.4rem .6rem;font-size:.85rem}.radio-tools .ghost-status.valid{color:#a5d6a7;background:#4caf502e}.radio-tools .ghost-status.invalid{color:#ef9a9a;background:#f443362e}.tracked-path{margin-top:.75rem}.tracked-path h4{color:#00d4ff;margin-bottom:.3rem;font-size:.85rem}.tracked-path .path-display{flex-wrap:wrap;gap:.3rem;display:flex}.tracked-path .path-step{background:#00d4ff33;border-radius:4px;padding:.1rem .45rem;font-size:.8rem}.tracked-path .no-path{opacity:.6;font-size:.85rem}.sonar-answer-modal{inset:var(--top-bar) 0 0 0;z-index:200;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed}.sonar-answer-card{background:#16213e;border:1px solid #00d4ff66;border-radius:12px;max-width:400px;padding:1.5rem}.sonar-answer-card h3{color:#00d4ff;margin-bottom:.5rem}.sonar-answer-card p{opacity:.9;margin-bottom:.75rem;font-size:.85rem}.sonar-answer-card .sonar-fact-input{gap:.5rem;margin-bottom:.5rem;display:flex}.sonar-answer-card .sonar-fact-input select,.sonar-answer-card .sonar-fact-input input{color:#fff;background:#0000004d;border:1px solid #fff3;border-radius:6px;flex:1;padding:.4rem}.sonar-answer-card .sonar-hint{opacity:.7;font-size:.78rem}.event-log{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:150;background:#0009;border:1px solid #ffffff1a;border-radius:8px;width:240px;max-height:200px;padding:.5rem .6rem;position:fixed;bottom:1rem;right:1rem}.event-log h3{color:#00d4ff;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.3rem;font-size:.75rem}.event-log .log-scroll{flex-direction:column;gap:.15rem;max-height:150px;display:flex;overflow-y:auto}.event-log .log-empty{opacity:.5;font-size:.8rem}.event-log .log-entry{border-left:2px solid #0000;border-radius:3px;padding:.1rem .3rem;font-size:.78rem}.event-log .log-entry--move{border-color:#2196f3}.event-log .log-entry--attack{color:#ffcdd2;border-color:#f44336}.event-log .log-entry--surface{border-color:#ffc107}.event-log .log-entry--sonar{border-color:#9c27b0}.event-log .log-entry--drone{border-color:#00bcd4}.event-log .log-entry--silence{border-color:#7e57c2}.event-log .log-entry--info{border-color:#4caf50}.toast-host{top:calc(1rem + var(--top-bar));z-index:250;flex-direction:column;align-items:center;gap:.4rem;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{border-radius:8px;padding:.55rem 1rem;font-size:.9rem;font-weight:600;animation:.2s ease-out toastIn;box-shadow:0 4px 16px #0006}.toast--hit{background:#2e7d32}.toast--miss{background:#c62828}.toast--info{background:#0277bd}@keyframes toastIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.station-mission{opacity:.8;max-width:640px;margin:-.25rem 0 .75rem;font-size:.85rem;line-height:1.4}.role-help{display:inline-block;position:relative}.role-help-btn{color:#00d4ff;cursor:pointer;vertical-align:middle;background:#00d4ff2e;border:1px solid #00d4ff80;border-radius:50%;width:1.35rem;height:1.35rem;padding:0;font-size:.8rem;font-weight:700;line-height:1}.role-help-scrim{z-index:180;position:fixed;inset:0}.role-help-pop{z-index:181;text-align:left;background:#16213e;border:1px solid #00d4ff80;border-radius:10px;width:300px;padding:.9rem 1rem;font-weight:400;position:absolute;top:130%;left:0;box-shadow:0 10px 30px #00000080}.role-help-pop .role-help-head{color:#00d4ff;margin-bottom:.3rem;font-size:1rem;font-weight:700}.role-help-pop .role-help-mission{opacity:.95;margin-bottom:.5rem;font-size:.85rem}.role-help-pop .role-help-how{margin:0 0 .5rem 1rem;padding:0;font-size:.82rem;line-height:1.45}.role-help-pop .role-help-how li{margin-bottom:.3rem}.role-help-pop .role-help-tip{opacity:.85;margin-bottom:.6rem;font-size:.8rem;font-style:italic}.role-help-pop .role-help-close{background:#0097a7;width:100%;padding:.35rem;font-size:.8rem}.reactor-guidance{border-radius:8px;margin-bottom:.75rem;padding:.6rem .8rem;font-size:.9rem}.reactor-guidance.go{color:#ffe0b2;background:#ff980029;border:1px solid #ff980080}.reactor-guidance.idle{opacity:.8;background:#ffffff0f}.reactor{grid-template-columns:repeat(2,1fr);gap:.6rem;margin-bottom:.75rem;display:grid}.reactor-group{background:#0000004d;border:1px solid #ffffff14;border-radius:8px;padding:.5rem}.reactor-group.active{border-color:#ff9800cc;box-shadow:0 0 0 1px #ff980080}.reactor-group.danger .dir-fill{color:#ff5252;font-weight:700}.reactor-group-head{justify-content:space-between;align-items:center;margin-bottom:.4rem;font-size:.85rem;display:flex}.reactor-group-head .dir-arrow{font-weight:600}.reactor-group-head .dir-fill{opacity:.8}.reactor-nodes{grid-template-columns:repeat(2,1fr);gap:.35rem;display:grid}.reactor-node{cursor:pointer;background:#ffffff0f;border:2px solid #0000;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:.4rem .2rem;font-size:.65rem;display:flex}.reactor-node .node-icon{font-size:1.1rem}.reactor-node .node-name{opacity:.9}.reactor-node .node-state{opacity:.7;min-height:.7rem;font-size:.55rem}.reactor-node.circuit-A{border-color:#2196f3}.reactor-node.circuit-B{border-color:#ffb300}.reactor-node.circuit-C{border-color:#4caf50}.reactor-node.circuit-D{border-color:#ab47bc}.reactor-node:disabled{cursor:default}.reactor-node:not(:disabled):hover{background:#ff980033}.reactor-node.offline{opacity:.35;filter:grayscale()}.reactor-node.offline .node-state{color:#ff5252;opacity:1}.reactor-warn{color:#ff8a80;margin-top:.4rem;font-size:.7rem}.circuit-progress{background:#00000040;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem;padding:.5rem .6rem;font-size:.75rem;display:flex}.circuit-progress .cp-label{opacity:.8}.circuit-progress .cp-chip{border:2px solid #0000;border-radius:999px;padding:.1rem .45rem;font-weight:600}.circuit-progress .cp-chip.circuit-A{color:#6ab8f7;border-color:#2196f3}.circuit-progress .cp-chip.circuit-B{color:#ffbb1a;border-color:#ffb300}.circuit-progress .cp-chip.circuit-C{color:#75c378;border-color:#4caf50}.circuit-progress .cp-chip.circuit-D{color:#c57fd0;border-color:#ab47bc}.circuit-progress .cp-chip.ready{animation:1s ease-in-out infinite targetPulse}.circuit-progress .cp-hint{opacity:.6;flex-basis:100%}.reactor-systems{flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem;display:flex}.reactor-systems .sys-chip{border-radius:6px;padding:.2rem .5rem;font-size:.75rem}.reactor-systems .sys-chip.online{color:#a5d6a7;background:#4caf502e}.reactor-systems .sys-chip.offline{color:#ef9a9a;background:#f4433633}.enemy-fix{background:#00d4ff1f;border:1px solid #00d4ff66;border-radius:8px;margin-bottom:.6rem;padding:.7rem .9rem;font-size:.95rem}.enemy-fix strong{color:#00d4ff}.enemy-fix.pinned{background:#4caf5033;border-color:#4caf50b3;animation:1.2s ease-in-out infinite targetPulse}.enemy-fix.pinned strong{color:#a5d6a7}.radio-legend{opacity:.85;flex-wrap:wrap;gap:.8rem;margin:.5rem 0;font-size:.75rem;display:flex}.radio-evidence{margin-top:.6rem}.radio-evidence h4{color:#00d4ff;margin-bottom:.3rem;font-size:.85rem}.radio-evidence .path-display{flex-wrap:wrap;gap:.3rem;display:flex}.radio-evidence .path-step{background:#00d4ff2e;border-radius:5px;padding:.15rem .4rem;font-size:.85rem}.radio-evidence .path-step.silence{background:#7e57c24d}.radio-evidence .path-step.surface{background:#ffc10740}.radio-evidence .no-path{opacity:.6;font-size:.85rem}.radio-hunch{border-top:1px solid #ffffff1a;margin-top:.7rem;padding-top:.5rem}.radio-hunch summary{cursor:pointer;opacity:.85;font-size:.85rem}.radio-hunch .radio-mode-toggle{gap:.4rem;margin:.5rem 0;display:flex}.radio-hunch .radio-mode-toggle button{background:#ffffff1f;width:auto;padding:.25rem .6rem;font-size:.78rem}.radio-hunch .radio-mode-toggle button.active{background:#0097a7}.radio-hunch .hunch-hint{opacity:.7;margin-bottom:.4rem;font-size:.78rem}.radio-hunch .ghost-status{border-radius:6px;padding:.4rem .6rem;font-size:.82rem}.radio-hunch .ghost-status.valid{color:#a5d6a7;background:#4caf502e}.radio-hunch .ghost-status.invalid{color:#ef9a9a;background:#f443362e}h1,h2,h3,h4{font-family:var(--font-head);letter-spacing:.05em}h2,h3{text-transform:uppercase}.home-page .header h1,.auth-container h1{font-family:var(--font-display);color:var(--sonar);letter-spacing:.03em;text-shadow:0 0 22px #37f0a08c,0 2px #00000080}.game-content h2,.lobby-header h1,.create-game-page>h1,.game-result h1{color:var(--hydro);text-shadow:0 0 14px #37c9ff59}.game-content h2{border-bottom:1px solid #37c9ff40;align-items:center;gap:.5rem;margin-bottom:.6rem;padding-bottom:.25rem;display:inline-flex}.charge-bar,.candidate-count,.enemy-fix,.dir-fill,.reactor-guidance,.token-tray,.breakdown-queue,.cp-chip,.sys-chip,.health-display,.game-code strong,.path-step,.cooldown-timer,.mode-badge,.team-badge,.drone-answer,.sonar-fact{font-family:var(--font-mono)}.auth-container,.option-card,.team-card,.captain-panel,.first-mate-panel,.engineer-panel,.radio-operator-panel,.systems-rail,.systems-display,.game-result,.sonar-answer-card,.event-log,.automation-panel{background:radial-gradient(circle 3px at 11px 11px, var(--rivet) 45%, transparent 47%), radial-gradient(circle 3px at calc(100% - 11px) 11px, var(--rivet) 45%, transparent 47%), radial-gradient(circle 3px at 11px calc(100% - 11px), var(--rivet) 45%, transparent 47%), radial-gradient(circle 3px at calc(100% - 11px) calc(100% - 11px), var(--rivet) 45%, transparent 47%), linear-gradient(180deg, var(--steel-1), var(--steel-0))!important;border:1px solid var(--steel-edge)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:inset 0 1px #ffffff0f,inset 0 0 44px #00000059,0 8px 22px #00000073!important}.game-header{border:1px solid var(--steel-edge);border-radius:8px;box-shadow:inset 0 -2px #37f0a040,0 4px 14px #0006;background:linear-gradient(#10293a,#081824)!important}.team-badge{letter-spacing:.06em;text-transform:uppercase;border:1px solid #ffffff26;border-radius:5px}.team-badge.alpha{box-shadow:0 0 12px #37c9ff66}.team-badge.bravo{box-shadow:0 0 12px #ffb02e66}.health-display{letter-spacing:.1em;font-size:.9rem}.health-display:before{content:"HULL ";color:var(--ink-dim)}.role-tab{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:5px 5px 0 0}.role-tab.active{box-shadow:0 0 14px #37f0a040;border-bottom:2px solid var(--sonar)!important}.sonar-scope{aspect-ratio:1;isolation:isolate;background:radial-gradient(3px at 97.5%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 93.9% 68.2%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 83.6% 83.6%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 68.2% 93.9%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 50% 97.5%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 31.8% 93.9%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 16.4% 83.6%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 6.1% 68.2%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 2.5%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 6.1% 31.8%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 16.4% 16.4%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 31.8% 6.1%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 50% 2.5%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 68.2% 6.1%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 83.6% 16.4%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(3px at 93.9% 31.8%,#8fb2c6 0 42%,#16303d 58%,#0000 64%),radial-gradient(circle,#0000 0 88.5%,#16323f 88.5% 90%,#34607a 93%,#16323f 97%,#274a5e 99%,#08161d 100%),repeating-radial-gradient(circle,#0000 0 40px,#37f0a00f 40px 41px),linear-gradient(#37f0a014,#37f0a014) 50%/100% 1px no-repeat,linear-gradient(#37f0a014,#37f0a014) 50%/1px 100% no-repeat,radial-gradient(circle at 50% 45%,#37f0a01a,#0000 58%),radial-gradient(circle,#06201a 0%,#03110d 66%,#020a08 100%);border-radius:50%;justify-content:center;align-items:center;width:560px;margin:.4rem auto 0;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #000000e6,0 0 0 2px #08161d,0 0 30px #37f0a01f,0 14px 34px #0000008c}.sonar-scope.small{width:380px;margin:.2rem auto 0}.sonar-scope:after{content:"";pointer-events:none;z-index:4;mix-blend-mode:screen;background:conic-gradient(#37f0a038,#37f0a005 45deg,#0000 70deg 360deg);width:1200px;height:1200px;animation:7s linear infinite sonarSweep;position:absolute;top:50%;left:50%}@keyframes sonarSweep{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}.game-map,.map-board{z-index:3;position:relative;box-shadow:none!important;background:0 0!important;border:none!important}.game-map:after,.map-board:after{content:none!important}.sonar-scope .map-board{transform-origin:50%!important;transform:scale(.74)!important}.sonar-scope.small .map-board{transform-origin:50%!important;transform:scale(.44)!important}.map-cell{border-radius:2px}.map-cell.water{box-shadow:inset 0 0 0 1px #37f0a00f;background:#37f0a00b!important}.map-cell.island{box-shadow:inset 0 0 7px #000000b3,inset 0 0 0 1px #37f0a01f;background:#0b2a24!important}.map-cell.path{background:#37f0a029!important}.map-cell.submarine{animation:2s ease-in-out infinite blip;background:radial-gradient(circle,#37f0a08c,#0000 72%)!important}.map-cell.sector-edge-r{border-right-color:#37f0a04d!important}.map-cell.sector-edge-b{border-bottom-color:#37f0a04d!important}.map-cell .sector-label{color:#37f0a08c}@keyframes blip{0%,to{box-shadow:inset 0 0 6px #37f0a0b3}50%{box-shadow:inset 0 0 15px #37f0a0}}.charge-pip{background:#ffffff1a;border-radius:2px}.charge-pip.filled{background:var(--sonar);box-shadow:0 0 8px #37f0a0b3}.aye-btn{text-shadow:0 0 8px #37f0a080;border-color:var(--sonar)!important;color:#eafff5!important;background:linear-gradient(#1c8f60,#0d5c3d)!important}.fire-btn,.activate-btn.danger{background:linear-gradient(#c0392b,#7d2018)!important;border-color:#ff6a5a!important}.game-header:after{content:"● LIVE";font-family:var(--font-mono);letter-spacing:.12em;color:var(--sonar);opacity:.85;align-self:center;font-size:.7rem;animation:2.4s step-end infinite ledBlink}@keyframes ledBlink{0%,60%{opacity:.9}61%,to{opacity:.3}}.admin-page{min-height:calc(100vh - var(--top-bar));max-width:1200px;margin:0 auto;padding:1.5rem}.admin-note{color:var(--ink-dim);margin-bottom:1rem;font-size:.9rem}.admin-tabs{gap:.5rem;margin-bottom:1rem;display:flex}.admin-tabs button{width:auto;padding:.5rem 1.25rem}.admin-tabs button.selected{border-color:var(--sonar);color:var(--sonar)}.admin-search{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.admin-search input,.admin-search select{border:1px solid var(--steel-edge);min-width:200px;color:var(--ink);font-family:var(--font-mono);background:#020c1499;border-radius:6px;flex:1;padding:.6rem .9rem;font-size:.95rem}.admin-search input:focus,.admin-search select:focus{border-color:var(--sonar);outline:none}.admin-search select{flex:none;min-width:0}.admin-search button{width:auto;padding:.6rem 1.25rem}.admin-filter{color:var(--hydro);align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.admin-link-btn{width:auto;padding:.3rem .7rem;font-size:.8rem}.admin-empty{color:var(--ink-dim)}.admin-table-wrap{border:1px solid var(--steel-edge);background:#081824b3;border-radius:8px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.9rem}.admin-table th,.admin-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #1d425a99;padding:.55rem .75rem}.admin-table th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-dim);font-size:.75rem;font-weight:400}.admin-table tr.inactive td{opacity:.55}.admin-games{flex-direction:column;gap:.75rem;display:flex}.admin-game{border:1px solid var(--steel-edge);background:#081824b3;border-radius:8px;padding:.85rem 1rem}.admin-game-head{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.admin-game-head .setting-badge{padding:.2rem .6rem;font-size:.8rem}.admin-game-head .status-playing{background:#37f0a033}.admin-game-head .status-finished{background:#37c9ff33}.admin-code{font-family:var(--font-mono);letter-spacing:.15rem;color:var(--hydro);font-size:1.1rem}.admin-winner{color:var(--amber);font-size:.9rem}.admin-game-meta{color:var(--ink-dim);margin:.4rem 0 .6rem;font-size:.85rem}.admin-teams{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;display:grid}.admin-team{border:1px solid #1d425a99;border-radius:6px;padding:.5rem .75rem;font-size:.9rem}.admin-team h4{font-family:var(--font-head);margin-bottom:.25rem;font-weight:500}.admin-team.winner{border-color:var(--amber)}.admin-roles{color:var(--ink-dim)}.admin-pager{color:var(--ink-dim);justify-content:center;align-items:center;gap:1rem;margin:1.25rem 0;display:flex}.admin-pager button{width:auto;padding:.45rem 1rem}
