/* ============================================================
   ProjectTelemetry — Scope Tasking (bid SOV + planning gantt)
   assets/sov.css   —  .sv-* namespace
   Uses theme tokens only, so light/dark both work.
   ============================================================ */

.sv-load, .sv-empty { text-align:center; padding:44px 20px; color:var(--ink-faint); }
.sv-empty i { font-size:38px; opacity:.5; }
.sv-empty h3 { margin:12px 0 4px; color:var(--ink-soft); font-size:16px; }
.sv-empty p { margin:0 auto; font-size:13px; max-width:560px; line-height:1.55; }
.sv-load i { animation:spin 1s linear infinite; }

.sv-head { display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.sv-head-l { flex:1; min-width:220px; }
.sv-title { font-size:19px; font-weight:800; letter-spacing:-.01em; color:var(--ink); }
.sv-sub { font-size:12.5px; color:var(--ink-faint); margin-top:2px; }
.sv-head-r { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sv-lbl { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); }
.sv-select { font-size:12.5px; padding:5px 8px; border:1px solid var(--bd); border-radius:7px;
  background:var(--bg); color:var(--ink); font-family:inherit; max-width:320px; }

/* ── verdict ─────────────────────────────────────────────── */
.sv-verdict { border:1px solid var(--bd); border-left-width:4px; border-radius:12px;
  background:var(--white); padding:13px 15px; margin-bottom:16px; box-shadow:var(--shadow); }
.sv-verdict.ok  { border-left-color:#16A34A; }
.sv-verdict.bad { border-left-color:#DC2626; }
.sv-verdict.mut { border-left-color:var(--bd); }
.sv-verdict-hd { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.sv-verdict-badge { font-size:14.5px; font-weight:800; color:var(--ink); }
.sv-verdict.bad .sv-verdict-badge { color:#DC2626; }
.sv-verdict.ok  .sv-verdict-badge { color:#16A34A; }
.sv-verdict-win { font-size:12px; color:var(--ink-faint); }
.sv-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(96px,1fr)); gap:10px; }
.sv-stat { background:var(--bg2); border-radius:8px; padding:8px 10px; text-align:center; }
.sv-stat-v { font-size:16px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.sv-stat-l { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); margin-top:3px; }
.sv-stat-s { font-size:9.5px; color:var(--ink-faint); margin-top:1px; }
.sv-warns { display:flex; flex-wrap:wrap; gap:12px; margin-top:10px; }
.sv-warn { font-size:11.5px; color:#B45309; display:inline-flex; align-items:center; gap:5px; }

/* ── panels + table ──────────────────────────────────────── */
.sv-panel { border:1px solid var(--bd); border-radius:12px; background:var(--white);
  margin-bottom:16px; box-shadow:var(--shadow); overflow:hidden; }
.sv-panel-hd { display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:11px 14px; background:var(--bg2); border-bottom:1px solid var(--bd); }
.sv-panel-t { font-size:13px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; }
.sv-panel-hint { font-size:11.5px; color:var(--ink-faint); flex:1; min-width:160px; }
.sv-panel-tools { display:inline-flex; gap:5px; }
.sv-pad { padding:16px; }

.sv-tblwrap { overflow-x:auto; }
.sv-tbl { width:100%; border-collapse:collapse; font-size:12.5px; }
.sv-tbl th { text-align:left; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-faint); padding:8px 10px; border-bottom:1px solid var(--bd); white-space:nowrap; }
.sv-tbl td { padding:5px 8px; border-bottom:1px solid var(--bd); vertical-align:middle; }
.sv-tbl tr:last-child td { border-bottom:0; }
.sv-tbl th.sv-num, .sv-tbl td.sv-num { text-align:right; font-variant-numeric:tabular-nums; }
.sv-c { text-align:center; }
.sv-none { text-align:center; color:var(--ink-faint); font-size:12.5px; padding:18px; }
.sv-mut { color:var(--ink-faint); }
.sv-ok   { color:#16A34A; }
.sv-warn { color:#B45309; }
.sv-bad  { color:#DC2626; }
.sv-solved { font-variant-numeric:tabular-nums; font-weight:600; text-align:right; white-space:nowrap; }

.sv-in { width:100%; font-size:12.5px; padding:4px 6px; border:1px solid transparent; border-radius:5px;
  background:transparent; color:var(--ink); font-family:inherit; }
.sv-in:hover:not(:disabled) { border-color:var(--bd); }
.sv-in:focus { outline:none; border-color:var(--accent); background:var(--bg); }
.sv-in:disabled { color:var(--ink-soft); }
.sv-in.sv-num { text-align:right; font-variant-numeric:tabular-nums; }
select.sv-in { min-width:88px; }
.sv-ta { width:100%; font-family:JetBrains Mono,ui-monospace,monospace; font-size:11.5px; padding:8px;
  border:1px solid var(--bd); border-radius:8px; background:var(--bg); color:var(--ink); resize:vertical; }
.sv-x { border:0; background:none; color:var(--ink-faint); cursor:pointer; padding:2px 4px; border-radius:4px; }
.sv-x:hover { color:#DC2626; background:#FEF2F2; }
.sv-tgl { font-size:11px; font-weight:600; padding:3px 9px; border-radius:7px; cursor:pointer;
  border:1px solid var(--bd); background:var(--bg); color:var(--ink-soft); font-family:inherit; }
.sv-tgl.on { background:var(--accent); color:#fff; border-color:var(--accent); }

/* ── planning gantt ──────────────────────────────────────── */
.sv-gantt { position:relative; padding:26px 14px 14px; overflow-x:auto; }
.sv-ticks { position:absolute; inset:0; pointer-events:none; }
.sv-tick { position:absolute; top:0; bottom:0; border-left:1px solid var(--bd); opacity:.4; }
.sv-tick.we { background:var(--bg2); opacity:.7; }
.sv-tick span { position:absolute; top:2px; left:2px; font-size:8.5px; color:var(--ink-faint); white-space:nowrap; }

.sv-window { position:absolute; top:18px; height:18px; border-radius:5px;
  background:color-mix(in srgb, var(--accent) 16%, transparent);
  border:1px dashed var(--accent); z-index:1; }
.sv-window span { position:absolute; left:6px; top:1px; font-size:9.5px; font-weight:700; color:var(--accent); white-space:nowrap; }

.sv-row { display:flex; align-items:center; gap:10px; margin-top:8px; position:relative; z-index:2; }
.sv-row:first-of-type { margin-top:24px; }
.sv-row-lbl { width:190px; flex:0 0 190px; display:flex; align-items:center; gap:6px; min-width:0; }
.sv-row-n { font-size:9.5px; font-weight:800; color:var(--ink-faint); background:var(--bg2);
  border-radius:4px; padding:1px 5px; flex:0 0 auto; }
.sv-row-t { font-size:12px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sv-row-m { font-size:10px; color:var(--ink-faint); white-space:nowrap; margin-left:auto; }
.sv-row-track { position:relative; flex:1; height:24px; min-width:180px; }
.sv-bar { position:absolute; top:2px; height:20px; border-radius:5px; background:var(--accent);
  cursor:grab; display:flex; align-items:center; justify-content:center; min-width:8px;
  box-shadow:0 1px 3px rgba(2,6,23,.18); }
.sv-bar.over { background:#DC2626; }
.sv-bar.dragging { cursor:grabbing; opacity:.85; box-shadow:0 4px 12px rgba(2,6,23,.3); }
.sv-bar-txt { font-size:9.5px; font-weight:700; color:#fff; white-space:nowrap; padding:0 4px; }
.sv-row-crew { width:190px; flex:0 0 190px; font-size:10.5px; color:var(--ink-soft); }
.sv-crewadd { border:0; background:none; color:var(--ink-faint); cursor:pointer; padding:0 2px; }
.sv-crewadd:hover { color:var(--accent); }

/* ── crew plan modal ─────────────────────────────────────── */
.sv-cp-list { display:flex; flex-direction:column; gap:5px; margin-bottom:12px; }
.sv-cp-row { display:flex; align-items:center; gap:8px; font-size:12.5px;
  background:var(--bg2); border-radius:6px; padding:5px 9px; }
.sv-cp-row > span:first-child { flex:1; }
.sv-cp-add { display:flex; gap:6px; align-items:center; }
.sv-cp-add .sv-in { border-color:var(--bd); background:var(--bg); }

@media (max-width:760px) {
  .sv-row-lbl, .sv-row-crew { width:130px; flex-basis:130px; }
  .sv-stats { grid-template-columns:repeat(3,1fr); }
}

/* ── Master Schedule: macro activities are clickable into Scope Tasking ── */
.ms-clickable { cursor:pointer; }
.ms-clickable:hover { filter:brightness(1.08); outline:2px solid var(--accent); outline-offset:1px; }
.ms-bar-ic { font-size:10px; opacity:.85; margin-left:4px; flex:0 0 auto; }
.ms-linked { box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55); }
.ms-diamond[data-act] { cursor:pointer; }

/* ── man loading chart ───────────────────────────────────── */
.sv-loadbox { padding:12px 14px 6px; }
.sv-loadstats { display:flex; flex-wrap:wrap; gap:16px; font-size:11.5px; color:var(--ink-faint); margin-bottom:8px; }
.sv-loadstats b { color:var(--ink); font-size:13px; font-variant-numeric:tabular-nums; }
.sv-chart { position:relative; display:flex; align-items:flex-end; gap:1px; height:130px;
  background:var(--bg2); border-radius:8px; padding:4px; overflow-x:auto; }
.sv-lbar { flex:1 0 4px; min-width:3px; background:var(--accent); border-radius:2px 2px 0 0; opacity:.85; }
.sv-lbar:hover { opacity:1; }
.sv-lbar.over { background:#DC2626; }
.sv-ceilline { position:absolute; left:0; right:0; border-top:2px dashed #B45309; z-index:2; pointer-events:none; }
.sv-ceilline span { position:absolute; right:4px; top:-14px; font-size:9.5px; font-weight:700; color:#B45309; }
.sv-chart-x { display:flex; justify-content:space-between; font-size:9.5px; color:var(--ink-faint); margin-top:3px; }

/* ── leveling proposal ───────────────────────────────────── */
.sv-prop { border-top:1px solid var(--bd); padding:12px 14px; background:var(--bg2); }
.sv-prop-hd { font-size:12.5px; font-weight:700; color:var(--ink); margin-bottom:8px; }
.sv-prop-row { display:flex; align-items:center; gap:8px; font-size:11.5px; padding:3px 0; flex-wrap:wrap; }
.sv-prop-t { font-weight:600; color:var(--ink); min-width:150px; }
.sv-prop-shift { font-weight:700; color:#B45309; font-variant-numeric:tabular-nums; }
.sv-prop-act { display:flex; gap:8px; margin-top:10px; }

/* ── crew flow ───────────────────────────────────────────── */
.sv-flow { padding:10px 14px 14px; display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; }
.sv-flow-p { border:1px solid var(--bd); border-radius:9px; padding:9px 11px; background:var(--bg2); }
.sv-flow-n { font-size:12.5px; font-weight:700; color:var(--ink); margin-bottom:5px; }
.sv-leg { display:flex; align-items:center; gap:7px; font-size:11px; padding:2px 0; }
.sv-leg-d { font-variant-numeric:tabular-nums; color:var(--ink-faint); flex:0 0 auto; }
.sv-leg-t { color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* ── row drag + task status on bars ──────────────────────── */
.sv-grip { color:var(--ink-faint); cursor:grab; font-size:13px; flex:0 0 auto; }
.sv-row-lbl[data-rowdrag] { cursor:grab; touch-action:none; }
.sv-row-drag { z-index:20; opacity:.9; }
.sv-row-drag .sv-grip { cursor:grabbing; }
.sv-bar.st-complete { background:#16A34A; }
.sv-bar.st-in_progress { background:#2563EB; }
.sv-bar.st-blocked { background:#B45309; }
.sv-bar.over { background:#DC2626; }
.sv-chipmap { display:inline-block; background:var(--bg2); border:1px solid var(--bd); border-radius:20px;
  padding:1px 8px; font-size:10.5px; color:var(--ink-soft); margin-right:4px; }
