:root{--c-bg: hsl(150, 8%, 6%);--c-surface: hsl(150, 10%, 9%);--c-surface-2: hsl(150, 10%, 12%);--c-surface-3: hsl(150, 10%, 16%);--c-border: hsl(150, 12%, 20%);--c-border-bright: hsl(150, 20%, 28%);--c-green: hsl(142, 72%, 44%);--c-green-dim: hsl(142, 40%, 28%);--c-green-glow: hsl(142, 72%, 44%);--c-amber: hsl(38, 100%, 50%);--c-red: hsl(0, 80%, 52%);--c-cyan: hsl(180, 100%, 42%);--c-blue: hsl(210, 90%, 55%);--c-text: hsl(150, 15%, 88%);--c-text-dim: hsl(150, 10%, 55%);--c-text-muted: hsl(150, 8%, 35%);--font-mono: "Share Tech Mono", "Courier New", monospace;--font-hud: "Rajdhani", "Impact", sans-serif;--font-body: "Inter", system-ui, sans-serif;--nav-h: 48px;--status-h: 28px;--sidebar-w: 300px;--panel-radius: 4px;--glow-green: 0 0 8px hsl(142, 72%, 44% / .4);--glow-red: 0 0 8px hsl(0, 80%, 52% / .5);--transition: .15s ease}[data-nvg=true]{--c-bg: hsl(120, 100%, 2%);--c-surface: hsl(120, 100%, 3%);--c-surface-2: hsl(120, 100%, 4%);--c-surface-3: hsl(120, 100%, 6%);--c-border: hsl(120, 80%, 14%);--c-border-bright: hsl(120, 80%, 22%);--c-green: hsl(120, 100%, 50%);--c-green-dim: hsl(120, 80%, 30%);--c-text: hsl(120, 100%, 75%);--c-text-dim: hsl(120, 60%, 45%);--c-text-muted: hsl(120, 40%, 25%);--c-amber: hsl(120, 100%, 60%);--c-red: hsl(120, 90%, 55%);--c-cyan: hsl(120, 100%, 65%);--c-blue: hsl(120, 80%, 60%);--glow-green: 0 0 12px hsl(120, 100%, 50% / .5);filter:saturate(0) sepia(1) hue-rotate(80deg) saturate(4) brightness(.85)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-body);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}.app-shell{display:grid;grid-template-rows:var(--nav-h) 1fr var(--status-h);grid-template-columns:1fr;height:100%}.app-main{display:flex;overflow:hidden;position:relative}.nav{display:flex;align-items:center;gap:0;background:var(--c-surface);border-bottom:1px solid var(--c-border);padding:0 12px;z-index:100}.nav-brand{font-family:var(--font-hud);font-size:18px;font-weight:700;letter-spacing:.15em;color:var(--c-green);text-shadow:var(--glow-green);margin-right:24px;-webkit-user-select:none;user-select:none}.nav-brand span{color:var(--c-text-dim);font-size:11px;font-family:var(--font-mono);font-weight:400;letter-spacing:.05em;margin-left:8px}.nav-tabs{display:flex;gap:2px;flex:1}.nav-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--c-text-dim);font-family:var(--font-hud);font-size:13px;font-weight:600;letter-spacing:.08em;padding:0 16px;height:var(--nav-h);cursor:pointer;transition:color var(--transition),border-color var(--transition);text-transform:uppercase}.nav-tab:hover{color:var(--c-text)}.nav-tab.active{color:var(--c-green);border-bottom-color:var(--c-green);text-shadow:var(--glow-green)}.nav-controls{display:flex;align-items:center;gap:8px;margin-left:auto}.nvg-btn{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:3px;color:var(--c-text-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;padding:4px 10px;cursor:pointer;transition:all var(--transition)}.nvg-btn:hover{border-color:var(--c-green);color:var(--c-green)}.nvg-btn.active{background:var(--c-green-dim);border-color:var(--c-green);color:var(--c-green);box-shadow:var(--glow-green)}.logout-btn{background:none;border:1px solid var(--c-border);border-radius:3px;color:var(--c-text-muted);font-size:11px;padding:4px 10px;cursor:pointer;transition:all var(--transition)}.logout-btn:hover{border-color:var(--c-red);color:var(--c-red)}.status-bar{display:flex;align-items:center;gap:16px;background:var(--c-surface);border-top:1px solid var(--c-border);padding:0 12px;font-family:var(--font-mono);font-size:11px;color:var(--c-text-muted)}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:5px}.status-dot.connected{background:var(--c-green);box-shadow:var(--glow-green);animation:pulse 2s ease-in-out infinite}.status-dot.connecting{background:var(--c-amber)}.status-dot.disconnected,.status-dot.error{background:var(--c-red)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.status-time{margin-left:auto;color:var(--c-text-dim);font-size:11px}.map-container{flex:1;position:relative;overflow:hidden}.maplibregl-ctrl-attrib,.maplibregl-ctrl-logo{display:none!important}.sidebar{width:var(--sidebar-w);background:var(--c-surface);border-left:1px solid var(--c-border);display:flex;flex-direction:column;overflow:hidden;transition:width var(--transition);flex-shrink:0}.sidebar.collapsed{width:0;border-left:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--c-border);background:var(--c-surface-2)}.sidebar-title{font-family:var(--font-hud);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-green)}.sidebar-close{background:none;border:none;color:var(--c-text-muted);cursor:pointer;font-size:16px;line-height:1;padding:2px 4px}.sidebar-close:hover{color:var(--c-text)}.unit-list{flex:1;overflow-y:auto;padding:4px 0}.unit-item{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer;border-bottom:1px solid var(--c-border);transition:background var(--transition)}.unit-item:hover{background:var(--c-surface-2)}.unit-item.stale{opacity:.4}.unit-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.2)}.unit-callsign{font-family:var(--font-mono);font-size:12px;color:var(--c-text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unit-meta{font-family:var(--font-mono);font-size:10px;color:var(--c-text-muted)}.unit-battery{font-size:10px;font-family:var(--font-mono);color:var(--c-text-dim)}.unit-battery.low{color:var(--c-red)}.unit-battery.med{color:var(--c-amber)}.chat-panel{display:flex;flex-direction:column;height:100%}.chat-messages{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.chat-msg{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--panel-radius);padding:6px 8px}.chat-msg-header{display:flex;justify-content:space-between;margin-bottom:3px}.chat-callsign{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--c-green)}.chat-time{font-family:var(--font-mono);font-size:10px;color:var(--c-text-muted)}.chat-text{font-size:12px;color:var(--c-text);word-break:break-word}.chat-input-row{display:flex;gap:6px;padding:8px;border-top:1px solid var(--c-border);background:var(--c-surface-2)}.chat-input{flex:1;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--panel-radius);color:var(--c-text);font-family:var(--font-mono);font-size:12px;padding:6px 8px;outline:none;transition:border-color var(--transition)}.chat-input:focus{border-color:var(--c-green)}.chat-send{background:var(--c-green-dim);border:1px solid var(--c-green);border-radius:var(--panel-radius);color:var(--c-green);font-family:var(--font-mono);font-size:11px;padding:6px 12px;cursor:pointer;transition:all var(--transition)}.chat-send:hover{background:var(--c-green);color:var(--c-bg)}.ptt-panel{display:flex;flex-direction:column;gap:12px;padding:12px;height:100%;overflow-y:auto}.ptt-sessions{display:flex;flex-direction:column;gap:6px}.ptt-session{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--panel-radius);padding:8px 10px;display:flex;align-items:center;gap:10px}.ptt-session.transmitting{border-color:var(--c-red);box-shadow:var(--glow-red)}.ptt-on-air{background:var(--c-red);color:#fff;font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.1em;padding:2px 6px;border-radius:2px;animation:blink .8s step-end infinite}@keyframes blink{50%{opacity:0}}.ptt-key-btn{width:100%;padding:20px;background:var(--c-surface-2);border:2px solid var(--c-border-bright);border-radius:8px;color:var(--c-text);font-family:var(--font-hud);font-size:20px;font-weight:700;letter-spacing:.1em;cursor:pointer;transition:all .1s ease;-webkit-user-select:none;user-select:none}.ptt-key-btn:active,.ptt-key-btn.keyed{background:var(--c-red);border-color:var(--c-red);color:#fff;box-shadow:var(--glow-red);transform:scale(.97)}.mission-panel{padding:12px;display:flex;flex-direction:column;gap:8px;height:100%;overflow-y:auto}.mission-card{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--panel-radius);padding:10px 12px;transition:border-color var(--transition)}.mission-card:hover{border-color:var(--c-border-bright)}.mission-name{font-family:var(--font-hud);font-size:14px;font-weight:600;color:var(--c-green);margin-bottom:2px}.mission-desc{font-size:12px;color:var(--c-text-dim)}.mission-meta{font-family:var(--font-mono);font-size:10px;color:var(--c-text-muted);margin-top:4px}.login-screen{display:flex;align-items:center;justify-content:center;height:100%;background:var(--c-bg);background-image:repeating-linear-gradient(0deg,transparent,transparent 39px,var(--c-border) 40px),repeating-linear-gradient(90deg,transparent,transparent 39px,var(--c-border) 40px)}.login-card{background:var(--c-surface);border:1px solid var(--c-border-bright);border-radius:6px;padding:40px 48px;min-width:360px;box-shadow:0 0 40px hsl(142,72%,10% / .8)}.login-logo{text-align:center;margin-bottom:32px}.login-logo h1{font-family:var(--font-hud);font-size:32px;font-weight:700;letter-spacing:.2em;color:var(--c-green);text-shadow:var(--glow-green)}.login-logo p{font-family:var(--font-mono);font-size:10px;color:var(--c-text-muted);letter-spacing:.08em;margin-top:4px}.login-form{display:flex;flex-direction:column;gap:16px}.form-group{display:flex;flex-direction:column;gap:4px}.form-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--c-text-dim)}.form-input{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--panel-radius);color:var(--c-text);font-family:var(--font-mono);font-size:14px;padding:10px 12px;outline:none;transition:border-color var(--transition);width:100%}.form-input:focus{border-color:var(--c-green);box-shadow:var(--glow-green)}.login-submit{background:var(--c-green-dim);border:1px solid var(--c-green);border-radius:var(--panel-radius);color:var(--c-green);font-family:var(--font-hud);font-size:16px;font-weight:700;letter-spacing:.15em;padding:12px;cursor:pointer;text-transform:uppercase;transition:all var(--transition);margin-top:8px}.login-submit:hover{background:var(--c-green);color:var(--c-bg);box-shadow:var(--glow-green)}.login-submit:disabled{opacity:.5;cursor:not-allowed}.login-error{background:#310c0c;border:1px solid var(--c-red);border-radius:var(--panel-radius);color:var(--c-red);font-family:var(--font-mono);font-size:11px;padding:8px 12px}.maplibregl-popup-content{background:var(--c-surface)!important;border:1px solid var(--c-border-bright)!important;border-radius:var(--panel-radius)!important;padding:10px 12px!important;color:var(--c-text)!important;font-family:var(--font-mono)!important;font-size:11px!important;box-shadow:0 4px 16px #0009!important;min-width:180px!important}.maplibregl-popup-tip{border-top-color:var(--c-border-bright)!important}.popup-callsign{font-family:var(--font-hud);font-size:15px;font-weight:700;color:var(--c-green);margin-bottom:6px}.popup-row{display:flex;justify-content:space-between;gap:16px;color:var(--c-text-dim);margin-top:2px}.popup-label{color:var(--c-text-muted)}.popup-val{color:var(--c-text);font-weight:600}.map-toggle{position:absolute;z-index:10;display:flex;gap:6px}.map-toggle.left{top:12px;left:12px}.map-toggle.right{top:12px;right:12px}.map-btn{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--panel-radius);color:var(--c-text-dim);font-family:var(--font-hud);font-size:12px;font-weight:600;letter-spacing:.08em;padding:6px 12px;cursor:pointer;transition:all var(--transition);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.map-btn:hover{border-color:var(--c-green);color:var(--c-green)}.map-btn.active{border-color:var(--c-green);color:var(--c-green);background:var(--c-green-dim)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:var(--c-bg)}::-webkit-scrollbar-thumb{background:var(--c-border-bright);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--c-green-dim)}.mono{font-family:var(--font-mono)}.hud{font-family:var(--font-hud)}.green{color:var(--c-green)}.dim{color:var(--c-text-dim)}.muted{color:var(--c-text-muted)}
