:root {
  --bg: #030806;
  --bg-2: #08120e;
  --bg-3: #0c1a14;
  --phosphor: #5fff9b;
  --phosphor-2: #00d4aa;
  --phosphor-dim: #2a8054;
  --phosphor-glow: rgba(95, 255, 155, 0.5);
  --amber: #ffb84d;
  --amber-glow: rgba(255, 184, 77, 0.4);
  --red: #ff4d6d;
  --red-glow: rgba(255, 77, 109, 0.5);
  --blue: #4dd0ff;
  --grid: rgba(95, 255, 155, 0.07);
  --text: #b8e6cc;
  --text-dim: #4a7a64;
  --text-faint: #2d4a3c;
  --border: rgba(95, 255, 155, 0.18);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html, body {
  height: 100%;
  background: var(--bg);
  color: var(--text);
  font-family: 'JetBrains Mono', monospace;
  overflow: hidden;
  user-select: none;
  font-size: 13px;
}

body::before {
  content: '';
  position: fixed; inset: 0;
  background: repeating-linear-gradient(0deg, transparent 0, transparent 2px, rgba(0,0,0,0.12) 3px, transparent 4px);
  pointer-events: none;
  z-index: 9999;
  mix-blend-mode: multiply;
}
body::after {
  content: '';
  position: fixed; inset: 0;
  background: radial-gradient(ellipse at center, transparent 50%, rgba(0,0,0,0.6) 100%);
  pointer-events: none;
  z-index: 9998;
}

.app {
  display: grid;
  grid-template-columns: 320px 1fr 380px;
  grid-template-rows: 60px 1fr 90px;
  height: 100vh;
  gap: 1px;
  background: var(--border);
}

.header {
  grid-column: 1 / -1;
  background: linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 100%);
  display: flex;
  align-items: center;
  padding: 0 24px;
  gap: 32px;
}
.brand {
  font-family: 'Major Mono Display', monospace;
  font-size: 24px;
  letter-spacing: 5px;
  text-shadow: 0 0 16px var(--phosphor-glow);
}
.brand .pro { color: var(--amber); font-size: 11px; letter-spacing: 4px; vertical-align: super; }

.header-meta { display: flex; gap: 24px; margin-left: auto; align-items: center; }
.meta-cell {
  display: flex; flex-direction: column; gap: 2px;
  border-left: 1px solid var(--border);
  padding-left: 16px;
  min-width: 90px;
}
.meta-cell .lbl { font-size: 9px; letter-spacing: 2px; color: var(--text-dim); text-transform: uppercase; }
.meta-cell .val { font-size: 14px; color: var(--phosphor); font-weight: 600; letter-spacing: 1px; }
.meta-cell .val.amber { color: var(--amber); }
.meta-cell .val.red { color: var(--red); }

.status-led {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--phosphor);
  box-shadow: 0 0 10px var(--phosphor);
  animation: pulse 1.5s ease-in-out infinite;
  display: inline-block; margin-right: 6px;
}
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }

.panel-left { background: var(--bg-2); overflow-y: auto; }
.section { border-bottom: 1px solid var(--border); padding: 18px 18px 14px; }
.section-title {
  font-size: 10px; letter-spacing: 3px;
  color: var(--text-dim); text-transform: uppercase;
  margin-bottom: 12px;
  display: flex; justify-content: space-between; align-items: center;
}
.section-title::before { content: '▮ '; color: var(--phosphor); }

.field { margin-bottom: 10px; }
.field label {
  display: block; font-size: 9px; letter-spacing: 2px;
  color: var(--text-dim); margin-bottom: 4px; text-transform: uppercase;
}
.field input, .field select {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--phosphor-dim);
  color: var(--phosphor);
  padding: 7px 10px;
  font-family: inherit; font-size: 12px;
  outline: none;
  transition: all 0.2s;
  letter-spacing: 0.5px;
}
.field input:focus, .field select:focus {
  border-color: var(--phosphor);
  box-shadow: 0 0 10px var(--phosphor-glow);
}
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }

.btn {
  width: 100%;
  background: transparent;
  border: 1px solid var(--phosphor);
  color: var(--phosphor);
  padding: 9px;
  font-family: inherit;
  font-size: 10px; letter-spacing: 2.5px; text-transform: uppercase;
  cursor: pointer;
  transition: all 0.2s;
  margin-top: 6px; font-weight: 600;
}
.btn:hover { background: var(--phosphor); color: var(--bg); box-shadow: 0 0 14px var(--phosphor-glow); }
.btn.amber { border-color: var(--amber); color: var(--amber); }
.btn.amber:hover { background: var(--amber); color: var(--bg); box-shadow: 0 0 14px var(--amber-glow); }
.btn.red { border-color: var(--red); color: var(--red); }
.btn.red:hover { background: var(--red); color: var(--bg); }

.toggle-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 0; font-size: 10px; letter-spacing: 1.5px;
  text-transform: uppercase; color: var(--text);
}
.toggle {
  width: 34px; height: 18px;
  background: var(--bg);
  border: 1px solid var(--phosphor-dim);
  border-radius: 10px;
  position: relative; cursor: pointer;
  transition: all 0.2s;
  flex-shrink: 0;
}
.toggle::after {
  content: '';
  position: absolute;
  top: 2px; left: 2px;
  width: 12px; height: 12px;
  background: var(--phosphor-dim);
  border-radius: 50%;
  transition: all 0.2s;
}
.toggle.on { border-color: var(--phosphor); }
.toggle.on::after { left: 18px; background: var(--phosphor); box-shadow: 0 0 8px var(--phosphor-glow); }

.stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.stat-box {
  background: var(--bg);
  border: 1px solid var(--border);
  padding: 8px 10px;
}
.stat-box .num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 28px; font-weight: 700; line-height: 1;
  color: var(--phosphor);
}
.stat-box .num.amber { color: var(--amber); }
.stat-box .num.red { color: var(--red); }
.stat-box .num.blue { color: var(--blue); }
.stat-box .lbl {
  font-size: 8px; letter-spacing: 2px;
  color: var(--text-dim); text-transform: uppercase;
  margin-top: 2px;
}

.center-stack {
  display: grid;
  grid-template-rows: 1fr auto;
  background: var(--bg);
  overflow: hidden;
}
.radar-stage {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  min-height: 0;
}
.radar { width: min(75vh, 70vw, 640px); aspect-ratio: 1; position: relative; }
.radar-svg { width: 100%; height: 100%; overflow: visible; }

.radar-bg circle { fill: none; stroke: var(--grid); stroke-width: 1; }
.radar-bg .ring-major { stroke: rgba(95, 255, 155, 0.18); stroke-dasharray: 4 4; }
.radar-bg line { stroke: var(--grid); stroke-width: 1; }
.radar-bg .axis-major { stroke: rgba(95, 255, 155, 0.2); }

.compass-label {
  fill: var(--phosphor);
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px; font-weight: 700; letter-spacing: 2px;
  text-shadow: 0 0 6px var(--phosphor-glow);
}
.ring-label {
  fill: var(--text-dim);
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: 1px;
}

.sweep { transform-origin: 50% 50%; animation: sweep 6s linear infinite; }
@keyframes sweep { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.sweep-gradient { fill: url(#sweepGrad); }

.airport-marker { fill: var(--blue); filter: drop-shadow(0 0 8px var(--blue)); }
.airport-runway { stroke: var(--blue); stroke-width: 2; opacity: 0.6; }
.airport-label { fill: var(--blue); font-size: 10px; font-weight: 700; letter-spacing: 2px; }

.you-dot { fill: var(--amber); filter: drop-shadow(0 0 6px var(--amber)); }
.you-pulse { fill: none; stroke: var(--amber); stroke-width: 1.5; opacity: 0; animation: ping 2.5s ease-out infinite; }
@keyframes ping { 0% { r: 5; opacity: 0.8; } 100% { r: 50; opacity: 0; } }

.blip { cursor: pointer; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.blip-icon { fill: var(--phosphor); filter: drop-shadow(0 0 4px var(--phosphor-glow)); }
.blip.phase-arrival .blip-icon { fill: var(--blue); filter: drop-shadow(0 0 5px var(--blue)); }
.blip.phase-departure .blip-icon { fill: var(--amber); filter: drop-shadow(0 0 5px var(--amber)); }
.blip.phase-ground .blip-icon { fill: var(--text-dim); filter: drop-shadow(0 0 3px var(--phosphor-dim)); }
.blip.target .blip-icon { fill: var(--red); filter: drop-shadow(0 0 8px var(--red)); }
.blip-label {
  fill: var(--text);
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; font-weight: 600; letter-spacing: 0.5px;
}
.blip.target .blip-label { fill: var(--red); }
.blip-alt { fill: var(--text-dim); font-family: 'JetBrains Mono', monospace; font-size: 8px; }

.target-arrow-group { transform-origin: 50% 50%; transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1); }
.target-arrow {
  fill: var(--red);
  filter: drop-shadow(0 0 14px var(--red));
  animation: arrowPulse 1.4s ease-in-out infinite;
}
@keyframes arrowPulse { 0%,100% { opacity: 0.95; } 50% { opacity: 0.4; } }
.target-line { stroke: var(--red); stroke-width: 1; stroke-dasharray: 2 4; opacity: 0.4; }

.radar-overlay { position: absolute; font-size: 10px; letter-spacing: 2px; color: var(--text-dim); text-transform: uppercase; }
.radar-overlay strong { color: var(--phosphor); font-weight: 600; }
.ovl-tl { top: 16px; left: 16px; }
.ovl-tr { top: 16px; right: 16px; text-align: right; }
.ovl-bl { bottom: 16px; left: 16px; }
.ovl-br { bottom: 16px; right: 16px; text-align: right; }

.new-contact-flash {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Major Mono Display', monospace;
  font-size: 26px; letter-spacing: 8px;
  color: var(--red);
  text-shadow: 0 0 24px var(--red);
  opacity: 0; pointer-events: none;
  z-index: 5; text-align: center;
}
.new-contact-flash .sub {
  display: block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 4px;
  margin-top: 8px;
  color: var(--amber);
  text-shadow: 0 0 12px var(--amber);
}
.new-contact-flash.show { animation: flashContact 2.4s ease-out; }
@keyframes flashContact {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(0.85); }
  18% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.1); }
}

.target-detail {
  background: var(--bg-2);
  border-top: 1px solid var(--border);
  padding: 14px 20px;
  min-height: 110px;
  display: grid;
  grid-template-columns: 60px 1fr auto;
  gap: 16px;
  align-items: center;
}
.target-detail.empty {
  color: var(--text-faint);
  text-align: center;
  display: block;
  padding: 30px;
  font-size: 10px; letter-spacing: 3px; text-transform: uppercase;
}
.target-logo {
  width: 60px; height: 60px;
  background: var(--bg);
  border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.target-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.target-logo .fallback {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 22px; font-weight: 700;
  color: var(--phosphor); letter-spacing: 1px;
}

.target-info { min-width: 0; }
.target-line1 { display: flex; align-items: baseline; gap: 14px; margin-bottom: 6px; }
.target-callsign {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 28px; font-weight: 700;
  color: var(--red); letter-spacing: 3px; line-height: 1;
}
.target-airline { font-size: 11px; color: var(--text); letter-spacing: 1px; }
.target-route {
  font-size: 12px; color: var(--phosphor);
  margin-bottom: 8px; letter-spacing: 1px;
}
.target-route .arrow { color: var(--amber); margin: 0 8px; }
.target-stats { display: flex; gap: 18px; flex-wrap: wrap; font-size: 10px; color: var(--text-dim); }
.target-stats span { color: var(--phosphor); font-weight: 600; }
.target-stats .lbl { color: var(--text-dim); margin-right: 4px; letter-spacing: 1.5px; text-transform: uppercase; font-size: 8px; }

.target-bearing-block { text-align: right; font-family: 'Barlow Condensed', sans-serif; }
.bearing-num { font-size: 36px; font-weight: 700; line-height: 1; color: var(--red); letter-spacing: 1px; }
.bearing-dir { font-size: 11px; letter-spacing: 3px; color: var(--amber); margin-top: 2px; text-transform: uppercase; }
.bearing-dist { font-size: 14px; color: var(--phosphor); margin-top: 4px; letter-spacing: 1px; }

.panel-right { background: var(--bg-2); overflow-y: auto; display: flex; flex-direction: column; }
.tabs {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.tab {
  padding: 14px 8px; text-align: center; cursor: pointer;
  font-size: 10px; letter-spacing: 2px;
  color: var(--text-dim); text-transform: uppercase;
  border-right: 1px solid var(--border);
  font-weight: 600; transition: all 0.15s;
  position: relative;
}
.tab:last-child { border-right: none; }
.tab:hover { color: var(--phosphor); background: rgba(95,255,155,0.04); }
.tab.active { color: var(--phosphor); background: var(--bg-2); }
.tab.active::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 0; right: 0;
  height: 2px;
  background: var(--phosphor);
  box-shadow: 0 0 8px var(--phosphor-glow);
}
.tab .count {
  background: var(--phosphor);
  color: var(--bg);
  padding: 1px 5px; font-size: 9px;
  margin-left: 5px; font-weight: 700;
  border-radius: 2px;
}
.tab[data-tab="arrivals"] .count { background: var(--blue); }
.tab[data-tab="departures"] .count { background: var(--amber); }

.tab-content { overflow-y: auto; flex: 1; padding: 12px; }
.tab-pane { display: none; }
.tab-pane.active { display: block; }

.ac-card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-left: 3px solid var(--phosphor-dim);
  padding: 10px 12px;
  margin-bottom: 6px;
  cursor: pointer;
  transition: all 0.15s;
  position: relative;
}
.ac-card:hover { border-color: var(--phosphor); transform: translateX(-2px); }
.ac-card.selected {
  border-color: var(--red);
  border-left-color: var(--red);
  background: rgba(255, 77, 109, 0.06);
  box-shadow: -2px 0 12px rgba(255, 77, 109, 0.3);
}
.ac-card.phase-arrival { border-left-color: var(--blue); }
.ac-card.phase-departure { border-left-color: var(--amber); }
.ac-card.phase-ground { border-left-color: var(--text-dim); opacity: 0.7; }
.ac-card.new::before {
  content: 'NEW';
  position: absolute;
  top: 0; right: 0;
  background: var(--amber);
  color: var(--bg);
  font-size: 8px; font-weight: 800; letter-spacing: 1.5px;
  padding: 2px 6px;
}

.ac-row1 { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.ac-logo {
  width: 28px; height: 28px;
  background: var(--bg-2);
  border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; overflow: hidden;
}
.ac-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ac-logo .fb {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 12px; font-weight: 700; color: var(--phosphor);
}
.ac-callsign {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 18px; font-weight: 700; letter-spacing: 2px;
  color: var(--phosphor); flex: 1; line-height: 1;
}
.ac-card.selected .ac-callsign { color: var(--red); }
.ac-card.phase-arrival .ac-callsign { color: var(--blue); }
.ac-card.phase-departure .ac-callsign { color: var(--amber); }

.ac-phase-tag {
  font-size: 8px; letter-spacing: 1.5px;
  padding: 2px 6px;
  background: var(--bg-3); color: var(--phosphor);
  border: 1px solid var(--phosphor-dim);
  text-transform: uppercase; font-weight: 600;
}
.ac-phase-tag.arrival { color: var(--blue); border-color: var(--blue); }
.ac-phase-tag.departure { color: var(--amber); border-color: var(--amber); }
.ac-phase-tag.ground { color: var(--text-dim); border-color: var(--text-faint); }
.ac-phase-tag.cruise { color: var(--phosphor-2); border-color: var(--phosphor-dim); }

.ac-route { font-size: 10px; color: var(--text); margin-bottom: 6px; letter-spacing: 0.5px; }
.ac-route .arr { color: var(--amber); margin: 0 5px; }
.ac-route.unknown { color: var(--text-dim); font-style: italic; }

.ac-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; font-size: 10px; }
.ac-grid > div { display: flex; flex-direction: column; }
.ac-grid .lbl { font-size: 8px; color: var(--text-dim); letter-spacing: 1px; text-transform: uppercase; }
.ac-grid .val { color: var(--phosphor); font-weight: 600; }

.empty-state {
  text-align: center;
  padding: 40px 20px;
  color: var(--text-faint);
  font-size: 10px; letter-spacing: 2px; text-transform: uppercase;
}

.console {
  grid-column: 1 / -1;
  background: var(--bg-2);
  border-top: 1px solid var(--border);
  overflow: hidden;
  display: flex; flex-direction: column;
}
.console-header {
  display: flex; justify-content: space-between;
  padding: 6px 24px;
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  font-size: 9px; letter-spacing: 2px;
  color: var(--text-dim); text-transform: uppercase;
}
.console-header .live { color: var(--red); }
.console-header .live::before { content: '● '; animation: pulse 1s infinite; }
.console-body { flex: 1; overflow-y: auto; padding: 4px 24px; font-size: 11px; letter-spacing: 0.5px; }
.log-line {
  color: var(--phosphor-dim);
  margin-bottom: 2px;
  opacity: 0;
  animation: logIn 0.3s ease forwards;
  line-height: 1.4;
}
.log-line .time { color: var(--text-dim); margin-right: 10px; font-weight: 600; }
.log-line .tag { display: inline-block; min-width: 60px; font-weight: 700; letter-spacing: 1px; }
.log-line.alert { color: var(--amber); }
.log-line.alert .tag { color: var(--amber); }
.log-line.contact { color: var(--phosphor); }
.log-line.contact .tag { color: var(--phosphor); }
.log-line.arrival .tag { color: var(--blue); }
.log-line.arrival { color: var(--blue); }
.log-line.departure .tag { color: var(--amber); }
.log-line.departure { color: var(--amber); }
.log-line.error { color: var(--red); }
@keyframes logIn { from { opacity: 0; transform: translateX(-4px); } to { opacity: 1; transform: translateX(0); } }

::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--phosphor-dim); }
::-webkit-scrollbar-thumb:hover { background: var(--phosphor); }

@media (max-width: 1100px) {
  .app {
    grid-template-columns: 1fr;
    grid-template-rows: 60px auto auto auto auto;
    height: auto; min-height: 100vh;
  }
  .panel-left, .panel-right { max-height: 50vh; }
  .radar { width: 90vw; }
}
