/* ================================================================
   dashboard.css — Alert banner, KPI cards, main grid, cards, chart, info list, power chart, mini charts, table
   ================================================================ */


/* ── ALERT BANNER ── */
#alertBanner { min-height:0; margin-bottom:0; contain:layout; }
.alert-item {
  display:flex; align-items:center; gap:12px; padding:12px 16px;
  background:rgba(239,68,68,0.08); border:1px solid rgba(239,68,68,0.25);
  border-radius:10px; margin-bottom:8px; animation:slideIn 0.3s ease;
}
.alert-item.warn { 
  background:rgba(249,115,22,0.08); 
  border-color:rgba(249,115,22,0.25); 
}
@keyframes slideIn { 
  from{opacity:0;
    transform:translateX(-10px);}to{opacity:1;
      transform:translateX(0);} 
    }
.alert-icon { font-size:14px; flex-shrink:0; }
.alert-text { flex:1; font-size:12px; }
.alert-text strong { 
  color:var(--red); 
  font-family:'DM Mono',monospace; 
}
.alert-item.warn .alert-text strong { color:var(--orange); }
.alert-close { 
  cursor:pointer; 
  color:var(--muted); 
  font-size:16px; 
  line-height:1; 
  padding:2px 6px; 
  border-radius:4px; 
}
.alert-close:hover { background:rgba(255,255,255,0.06); }

/* ── KPI GRID ── */
.kpi-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:14px;
  margin-bottom:18px;
}
.kpi-card { 
  background:var(--surface); 
  border:1px solid var(--border); 
  border-radius:14px; 
  padding:18px; 
  position:relative; 
  overflow:hidden; 
  transition:border-color 0.2s,transform 0.2s,box-shadow 0.2s; 
  box-shadow:0 1px 3px rgba(15,30,60,0.06),0 4px 14px rgba(15,30,60,0.05); 
}
.kpi-card:hover { 
  border-color:rgba(37,99,235,0.25); 
  transform:translateY(-2px); 
  box-shadow:0 4px 20px rgba(15,30,60,0.1); 
}
.kpi-card.alert-state {
  border-color:rgba(220,38,38,0.5);
  box-shadow:0 0 24px rgba(220,38,38,0.18);
  background:rgba(220,38,38,0.07);
}
.kpi-card.warn-state { 
  border-color:rgba(234,88,12,0.4); 
  box-shadow:0 0 20px rgba(234,88,12,0.1); 
}
.kpi-card::before { 
  content:''; 
  position:absolute; 
  top:0;
  left:0;
  right:0; 
  height:2px; 
  background:linear-gradient(90deg,transparent,rgba(37,99,235,0.15),transparent); 
}
.kpi-label { 
  font-family:'DM Mono',monospace; 
  font-size:9px; 
  letter-spacing:2px; 
  text-transform:uppercase; 
  color:var(--muted); 
  margin-bottom:8px; display:flex; align-items:center; gap:6px; }
.kpi-dot { 
  width:5px; 
  height:5px; 
  border-radius:50%; 
  flex-shrink:0;
}
.kpi-value { 
  font-family:'Syne',sans-serif; 
  font-size:28px; 
  font-weight:700; 
  letter-spacing:-0.5px; 
  line-height:1; 
  margin-bottom:4px; 
  transition:color 0.3s; 
}
.kpi-sub { 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  color:var(--muted2); 
}
.kpi-trend { 
  position:absolute; 
  top:16px; right:16px; 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  padding:3px 7px; 
  border-radius:6px; 
}
.trend-change { 
  background:rgba(234,88,12,0.12); 
  color:var(--orange); 
}
.trend-stable { 
  background:rgba(16,185,129,0.1); 
  color:var(--green); }

/* ── MAIN GRID ── */
.main-grid { 
  display:grid; 
  grid-template-columns:1fr 300px; 
  gap:16px; 
  margin-bottom:16px; 
  align-items:stretch; 
}
.bottom-grid { 
  display:grid; 
  grid-template-columns:1fr; 
  gap:16px; 
  margin-bottom:16px; 
  align-items:start; 
}
.side-panel { 
  display:flex; 
  flex-direction:column; 
  gap:14px; 
  height:100%;
}
.side-panel > .card:last-child {
  flex:1;
}

/* ── CARD ── */
.card { 
  background:var(--surface); 
  border:1px solid var(--border); 
  border-radius:14px; 
  padding:18px; 
  position:relative; 
  overflow:hidden; 
  box-shadow:0 1px 2px rgba(15,30,60,0.05),0 4px 10px rgba(15,30,60,0.035); 
  transition:box-shadow 0.18s,border-color 0.18s; 
}
.card:hover { 
  box-shadow:0 4px 14px rgba(15,30,60,0.07); 
  border-color:rgba(37,99,235,0.18); 
}
.card::before { 
  content:''; 
  position:absolute; 
  top:0;
  left:0;
  right:0; 
  height:1px; 
  background:linear-gradient(90deg,transparent,rgba(37,99,235,0.1),transparent); 
}
.card-header { 
  display:flex; 
  align-items:center; 
  justify-content:space-between; 
  margin-bottom:16px; 
}
.card-title { 
  font-family:'Syne',sans-serif; 
  font-size:14px; 
  font-weight:700; 
}
.card-badge { 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  padding:3px 10px; 
  border-radius:100px; 
  background:rgba(59,130,246,0.1); 
  color:var(--accent); 
  border:1px solid rgba(59,130,246,0.2); 
}
.card-label { 
  font-family:'DM Mono',monospace; 
  font-size:9px; 
  letter-spacing:2px; 
  text-transform:uppercase; 
  color:var(--muted); 
  display:flex; 
  align-items:center; 
  gap:6px; 
}

/* ── CHART ── */
.chart-wrap { 
  position:relative; 
  padding-left:40px; 
}
.chart-y { 
  position:absolute; 
  left:0; 
  top:0; 
  bottom:0; 
  display:flex; 
  flex-direction:column; 
  justify-content:space-between; 
}
.chart-y span { 
  font-family:'DM Mono',monospace; 
  font-size:9px; 
  color:var(--muted); 
  text-align:right; 
  width:34px; 
}
.chart-svg-area { height:260px; position:relative; }
.chart-svg-area svg {
  width:100%;
  height:100%;
  overflow:visible;
}
.chart-tooltip { display:none; position:absolute; background:var(--surface); border:1px solid var(--border2); border-radius:8px; padding:10px 14px; font-family:'DM Mono',monospace; pointer-events:none; z-index:10; box-shadow:0 10px 30px rgba(0,0,0,0.25); min-width:130px; }
.chart-tooltip-time { color:var(--muted); font-size:9px; letter-spacing:1px; margin-bottom:6px; }
.chart-tooltip-row { display:flex; align-items:center; gap:6px; font-size:11px; margin-bottom:3px; }
.chart-x { 
  display:flex; 
  justify-content:space-between; 
  margin-top:2px; 
  padding-bottom:0; 
}
.chart-x[data-scale="time"]{
  display:block;
  position:relative;
  height:16px;
}
.chart-x span { 
  font-family:'DM Mono',monospace; 
  font-size:11px; 
  color:var(--muted2); 
  display:block; 
  text-align:center; 
  white-space:nowrap; 
}
.chart-x[data-scale="time"] span{
  position:absolute;
  top:0;
  transform:translateX(-50%);
  text-align:center;
}
.chart-stats { 
  display:flex; 
  gap:24px; 
  padding-top:8px; 
  margin-top:8px; 
  border-top:1px solid var(--border); 
  flex-wrap:wrap;
}
.chart-stat-item { 
  display:flex; 
  flex-direction:column; 
}
.chart-stat-label { 
  font-family:'DM Mono',monospace; 
  font-size:9px; 
  color:var(--muted); 
  letter-spacing:1.5px; 
  text-transform:uppercase; 
  margin-bottom:4px; 
}
.chart-stat-value { 
  font-family:'DM Mono',monospace; 
  font-size:13px; 
  font-weight:600; 
  color:var(--text); 
  letter-spacing:0.3px; 
}
.inline-live-view { 
  margin-top:10px; 
  border-top:1px solid var(--border); 
  padding-top:10px; 
}
.inline-live-view svg { 
  width:100%; 
  height:120px; 
  display:block; 
}

/* ── INFO LIST ── */
.info-list { 
  display:flex; 
  flex-direction:column; 
  min-height:120px; 
}
.info-row { 
  display:flex; 
  justify-content:space-between; 
  align-items:center; 
  padding:10px 0; 
  border-bottom:1px solid var(--border); 
}
.info-row:last-child { border-bottom:none; }
.info-key { 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  color:var(--muted); 
}
.info-val { 
  font-family:'DM Mono',monospace; 
  font-size:11px; 
  color:var(--text); 
  font-weight:500; 
}
.info-val--upper {
  text-transform:uppercase;
}
.badge { 
  display:inline-flex; 
  align-items:center; 
  gap:4px; 
  padding:2px 8px; 
  border-radius:6px; 
  font-size:10px; 
  font-family:'DM Mono',monospace; 
}
.badge-green { 
  background:rgba(16,185,129,0.1); 
  color:var(--green); 
  border:1px solid rgba(16,185,129,0.2); }
.badge-blue  { 
  background:rgba(59,130,246,0.1); 
  color:var(--accent); 
  border:1px solid rgba(59,130,246,0.2); 
}

/* ── POWER CHART ── */
.power-chart-wrap { height:80px; margin:12px 0 8px; }
.power-chart-wrap svg { width:100%; height:100%; }
.power-legend { display:flex; gap:12px; flex-wrap:wrap; }
.legend-item { 
  display:flex; 
  align-items:center; 
  gap:5px; 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  color:var(--muted2); 
}
.legend-dot { 
  width:7px; 
  height:7px; 
  border-radius:50%; 
}
/* ── MINI CHART ── */
.secondary-channels-card { min-height:0; }
#isbcCharts { min-height:0; }
.mini-chart-block { 
  background:var(--surface2); 
  border-radius:10px; 
  padding:12px; 
  margin-bottom:10px; 
}
.mini-chart-title { 
  display:flex; 
  justify-content:space-between; 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  color:var(--muted); 
  margin-bottom:8px; 
}
.mini-chart-title span { color:var(--muted2); }
.mini-chart-title.alert-label { color:var(--red); }

/* ── TABLE ── */
.table-card { 
  padding:18px; 
  overflow-x:auto; 
}
.table-controls { 
  display:flex; 
  align-items:center; 
  justify-content:space-between; 
  padding:14px 18px; 
  border-bottom:1px solid var(--border); 
}
.table-controls-title { 
  font-family:'Syne',sans-serif; 
  font-size:13px; 
  font-weight:700; 
}
.table-search { 
  background:var(--surface2); 
  border:1px solid var(--border); 
  color:var(--text); 
  font-family:'DM Mono',monospace; 
  font-size:11px; 
  padding:6px 10px; 
  border-radius:8px; 
  outline:none; width:160px; 
}
.table-search:focus { border-color:var(--accent); }
.table-head { 
  display:grid; 
  grid-template-columns:100px 90px 1fr 90px 90px 90px; 
  padding:10px 18px; 
  background:var(--surface2); 
  border-bottom:1px solid var(--border); 
  overflow:visible; 
  align-items:center;
}
/* Note: grid-template-columns is overridden by JS (renderTable) for dynamic channel counts */
.th { 
  font-family:'DM Mono',monospace; 
  font-size:9px; 
  letter-spacing:1.5px; 
  text-transform:uppercase; 
  color:var(--muted); 
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:normal;
  word-break:break-word;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  line-height:1.2;
}
.table-body { 
  max-height:480px; 
  overflow-y:auto; 
}
.table-body::-webkit-scrollbar { width:3px; }
.table-body::-webkit-scrollbar-thumb { 
  background:var(--border); 
  border-radius:2px; 
}
.table-row { 
  display:grid; 
  grid-template-columns:100px 90px 1fr 90px 90px 90px; 
  padding:10px 18px; 
  border-bottom:1px solid rgba(255,255,255,0.06); 
  transition:background 0.15s; 
  cursor:default; 
  overflow:visible; 
}
/* Note: grid-template-columns is overridden by JS (renderTable) for dynamic channel counts */
.table-row:hover { 
  background:rgba(255,255,255,0.04); 
}
.table-row.new-row { 
  animation:flashIn 1s ease; 
}
@keyframes flashIn { 
  0%{background:rgba(59,130,246,0.15);} 
  100%{background:transparent;} 
}
.td { 
  font-family:'DM Mono',monospace; 
  font-size:11px; 
  color:var(--muted2); 
  display:flex; 
  align-items:center; 
}
.td.hi { 
  color:var(--accent); 
}
.td.alert-val { 
  color:var(--red); 
  font-weight:500; 
}
.td.warn-val { 
  color:var(--orange); 
}
.table-footer { 
  padding:10px 18px; 
  border-top:1px solid var(--border); 
  display:flex; 
  justify-content:space-between; 
  align-items:center; 
}
.table-count { 
  font-family:'DM Mono',monospace; 
  font-size:10px; 
  color:var(--muted); 
}
