/* ── Executive Dashboard ─────────────────────────────────── */
.dash-page-sub{font-size:12px;color:var(--muted);margin-top:2px;}

/* ── Row 1: Ring hero + 6 KPI cards ─────────────────────── */
.dash-row1{display:grid;grid-template-columns:220px 1fr;gap:14px;margin-bottom:14px;}

/* Hero card */
.dash-hero-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;display:flex;align-items:center;gap:14px;}
.dash-ring-wrap{position:relative;flex-shrink:0;}
.dash-ring{width:84px;height:84px;}
.dash-ring-track{fill:none;stroke:#e2e8f0;stroke-width:9;}
.dash-ring-fill{fill:none;stroke:var(--accent);stroke-width:9;stroke-linecap:round;transform:rotate(-90deg);transform-origin:42px 42px;transition:stroke-dashoffset .4s ease;}
.dash-ring-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;color:var(--text);}
.dash-hero-meta{}
.dash-hero-title{font-size:10.5px;color:var(--muted);margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px;}
.dash-hero-sub{font-size:11px;color:#94a3b8;}
.dash-hero-sub b{font-weight:600;color:var(--text);}
.dash-hero-pills{display:flex;gap:6px;margin-top:8px;}
.dash-pill{font-size:9.5px;padding:2px 8px;border-radius:10px;font-weight:700;}
.dash-pill.good{background:#eaf3de;color:#27500a;}
.dash-pill.bad{background:#fce8e8;color:#a32d2d;}
.dash-pill.neutral{background:#eef2f6;color:var(--muted);}

/* 6 KPI cards */
.dash-kpi6{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;}
.dash-kpi-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 12px;}
.dash-kpi-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:10px;font-size:16px;}
.dash-kpi-val{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.3px;}
.dash-kpi-lbl{font-size:10.5px;color:var(--muted);margin-top:2px;}
.dash-kpi-trend{font-size:10px;margin-top:6px;display:flex;align-items:center;gap:3px;min-height:14px;}
.kpi-trend-up{color:#16a34a;}
.kpi-trend-down{color:#dc2626;}
.kpi-trend-flat{color:var(--muted);}

/* ── Alerts ──────────────────────────────────────────────── */
.dash-alerts{display:flex;gap:8px;overflow-x:auto;margin-bottom:14px;padding-bottom:2px;}
.dash-alert-pill{flex-shrink:0;font-size:11px;padding:6px 12px;border-radius:20px;display:flex;align-items:center;gap:6px;white-space:nowrap;font-weight:500;background:var(--surface);border-left:3px solid transparent;box-shadow:var(--shadow);}
.dash-alert-pill.danger{border-left-color:var(--red);color:#a32d2d;}
.dash-alert-pill.warn{border-left-color:var(--yellow);color:#854f0b;}
.dash-alert-pill.ok{border-left-color:var(--green);color:#27500a;}

/* ── Row 2: PvA + Health + This Week ────────────────────── */
.dash-row2{display:grid;grid-template-columns:1.7fr 1fr 1fr;gap:14px;margin-bottom:14px;}
.dash-section-header{margin-bottom:12px;}
.dash-section-header h3{font-size:13px;font-weight:600;color:var(--navy);}

/* PvA */
.dash-pva-card{}
.dash-pva-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.dash-pva-header h3{font-size:13px;font-weight:600;color:var(--navy);margin:0;}
.dash-pva-legend{font-size:9.5px;color:var(--muted);display:flex;align-items:center;gap:3px;}
.dash-pva-legend .sw{display:inline-block;width:7px;height:7px;border-radius:2px;margin:0 3px 0 8px;}
.dash-pva-legend .sw:first-child{margin-left:0;}
.dash-pva-legend .sw.planned{background:#cbd5e1;}
.dash-pva-legend .sw.actual{background:var(--navy);}
.dash-pva-row{margin-bottom:10px;}
.dash-pva-row-head{display:flex;justify-content:space-between;font-size:10.5px;color:var(--text);margin-bottom:3px;}
.dash-pva-track{position:relative;height:8px;background:#eef2f6;border-radius:4px;}
.dash-pva-planned{position:absolute;top:0;left:0;height:8px;background:#cbd5e1;border-radius:4px;}
.dash-pva-actual{position:absolute;top:0;left:0;height:8px;background:var(--navy);border-radius:4px;}
.dash-pva-more{text-align:center;font-size:9.5px;color:var(--accent);padding-top:4px;cursor:pointer;font-weight:500;}
.dash-pva-more:hover{text-decoration:underline;}

/* Health donut vertical */
.dash-health-donut-wrap{display:flex;align-items:center;gap:14px;margin-bottom:12px;}
.dash-health-legend-v{font-size:11px;color:var(--text);}
.dash-health-legend-v .hlv-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--border);gap:12px;}
.dash-health-legend-v .hlv-row:last-child{border:0;}
.dash-health-legend-v .hlv-name{display:flex;align-items:center;gap:6px;}
.dash-health-legend-v .hlv-dot{width:7px;height:7px;border-radius:50%;}
.dash-health-legend-v .hlv-val{font-weight:700;color:var(--text);}
.dash-health-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;margin-top:4px;background:#eef2f6;}
.dash-health-bar div{height:6px;}
.dash-health-legend{display:flex;justify-content:space-between;font-size:9.5px;color:var(--muted);margin-top:5px;}
.dash-health-legend i{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:3px;}

/* This Week */
.dash-week-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.dash-week-item{text-align:center;background:#f7f9fc;border-radius:8px;padding:10px 6px;cursor:pointer;}
.dash-week-item:hover{background:#eef2f6;}
.dash-week-value{font-size:18px;font-weight:700;}
.dash-week-label{font-size:9px;color:var(--muted);margin-top:3px;text-transform:uppercase;letter-spacing:.5px;}

/* ── Row 3: Gantt ────────────────────────────────────────── */
.dash-gantt-card{margin-bottom:14px;}
.dash-gantt-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.dash-gantt-header h3{margin:0;font-size:13px;font-weight:600;color:var(--navy);}
.dash-gantt-nav{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--muted);}
.dash-gantt-arrow{background:none;border:1px solid var(--border);border-radius:4px;width:22px;height:22px;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;}
.dash-gantt-arrow:hover{background:#eef2f6;color:var(--text);}
.dash-gantt-container{width:100%;height:220px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;}

/* Same status-color language as Schedule Management's Gantt redesign */
.dash-gantt-container .gantt_task_scale,
.dash-gantt-container .gantt_grid_scale{background:var(--navy);color:#fff;}
.dash-gantt-container .gantt_task_scale .gantt_scale_cell{color:#fff;}
.dash-gantt-container .sch-gantt-green .gantt_task_progress{background:var(--green);}
.dash-gantt-container .sch-gantt-green .gantt_task_content{background:#dcfce7;border:1px solid var(--green);color:#166534;}
.dash-gantt-container .sch-gantt-blue .gantt_task_progress{background:var(--accent);}
.dash-gantt-container .sch-gantt-blue .gantt_task_content{background:#dbeafe;border:1px solid var(--accent);color:#1e40af;}
.dash-gantt-container .sch-gantt-red .gantt_task_progress{background:var(--red);}
.dash-gantt-container .sch-gantt-red .gantt_task_content{background:#fee2e2;border:1px solid var(--red);color:#991b1b;}
.dash-gantt-container .sch-gantt-gray .gantt_task_progress{background:#94a3b8;}
.dash-gantt-container .sch-gantt-gray .gantt_task_content{background:#f1f5f9;border:1px solid #cbd5e1;color:#475569;}
.dash-gantt-container .sch-gantt-milestone .gantt_task_content{background:var(--yellow);border:none;}
.dash-gantt-container .sch-gantt-milestone.gantt_task_line{background:transparent;border:none;box-shadow:none;}
.dash-gantt-empty{display:flex;align-items:center;justify-content:center;height:220px;color:var(--muted);font-size:12px;border:1px solid var(--border);border-radius:var(--radius);}

/* ── Row 4: Charts grid ──────────────────────────────────── */
.dash-second-row{grid-template-columns:1fr 1fr;}

/* ── Table ───────────────────────────────────────────────── */
.dash-col-narrow{width:90px;font-size:11px;}

/* ── Tooltip system ──────────────────────────────────────────────────
   A single floating tooltip div is injected by JS and positioned
   near the hovered card. CSS handles appearance only.
   position:fixed keeps it out of the stacking context of any card.
─────────────────────────────────────────────────────────────────── */
#dashTooltip{
  position:fixed;
  z-index:9999;
  pointer-events:none;
  opacity:0;
  transform:translateY(6px);
  transition:opacity .18s ease, transform .18s ease;
  max-width:300px;
  min-width:220px;
}
#dashTooltip.visible{
  opacity:1;
  transform:translateY(0);
}
.dash-tt{
  background:#0b2544;
  color:#e2e8f0;
  border-radius:10px;
  padding:13px 15px;
  box-shadow:0 8px 32px rgba(0,0,0,.28), 0 2px 8px rgba(0,0,0,.18);
  font-size:12px;
  line-height:1.55;
}
.dash-tt-abbr{
  font-size:10px;
  font-weight:700;
  letter-spacing:1.2px;
  text-transform:uppercase;
  color:#0dbfd6;
  margin-bottom:4px;
}
.dash-tt-title{
  font-size:13px;
  font-weight:600;
  color:#fff;
  margin-bottom:7px;
  padding-bottom:7px;
  border-bottom:1px solid rgba(255,255,255,.1);
}
.dash-tt-formula{
  background:rgba(255,255,255,.07);
  border-radius:6px;
  padding:6px 9px;
  font-family:monospace;
  font-size:11.5px;
  color:#7dd3fc;
  margin-bottom:8px;
  letter-spacing:.2px;
}
.dash-tt-desc{
  font-size:11.5px;
  color:#94a3b8;
  margin-bottom:8px;
}
.dash-tt-range{
  display:flex;
  flex-direction:column;
  gap:3px;
  font-size:11px;
}
.dash-tt-range-row{
  display:flex;
  align-items:center;
  gap:6px;
}
.dash-tt-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  flex-shrink:0;
}
/* Hover cue on all tooltipped cards */
.dash-kpi-card[data-tooltip],
.dash-hero-card[data-tooltip],
.chart-card[data-tooltip]{
  cursor:default;
  transition:box-shadow .15s ease;
}
.dash-kpi-card[data-tooltip]:hover,
.dash-hero-card[data-tooltip]:hover,
.chart-card[data-tooltip]:hover{
  box-shadow:0 0 0 2px rgba(13,191,214,.35), var(--shadow);
}
