/* =====================================================================
   ATFM design system v2: tokens + components. One file, one namespace.
   - Every class is `v2-*` and every variable is `--v2-*`, so it cannot collide with Bootstrap, style.css or the
     minimal shell. It is inert until a page uses a v2 class.
   - Themes: the existing engine owns <html data-theme="dark|light">. Accent and status colours come from the
     customisation tokens (--mn-accent, --mn-ok, --mn-warn, --mn-crit, --mn-mars), so Admin > Customisation still works.
   - Layers: 1 tokens  2 base and layout  3 surfaces  4 controls  5 data display  6 overlays  7 domain widgets  8 motion.
   - Library and rules: /admin/ui-library and redesign/ATFM_SCOPE_AND_DASHBOARDS.md.
   ===================================================================== */

/* ---------- 1. tokens ---------- */
:root {                                    /* NIGHT (the engine's default) */
  --v2-bg: #0d1118; --v2-bg2: #131a26;
  --v2-card: rgba(255,255,255,.055); --v2-solid: #1a2130; --v2-edge: rgba(255,255,255,.08);
  --v2-cell: rgba(255,255,255,.06); --v2-cell-edge: rgba(255,255,255,.10);
  --v2-ink: #eef2f8; --v2-ink2: #b6c0d0; --v2-ink3: #8f9bb0; --v2-line: rgba(255,255,255,.09);
  --v2-shadow: 0 12px 32px rgba(0,0,0,.35), 0 1px 2px rgba(0,0,0,.4);
  --v2-shadow-pop: 0 24px 60px rgba(0,0,0,.55);
  --v2-blue: var(--mn-accent, #5b8cff); --v2-on-blue: var(--mn-accent-ink, #06122e);
  --v2-ok: var(--mn-ok, #4cc38a); --v2-warn: var(--mn-warn, #e5a73b); --v2-crit: var(--mn-crit, #ef6b6b); --v2-mars: var(--mn-mars, #a493f5);
  --v2-mint: #4fd18b; --v2-on-mint: #05361c;
  --v2-blue-text: color-mix(in srgb, var(--v2-blue) 68%, #fff);
  --v2-ok-text: color-mix(in srgb, var(--v2-ok) 70%, #fff); --v2-warn-text: color-mix(in srgb, var(--v2-warn) 70%, #fff); --v2-crit-text: color-mix(in srgb, var(--v2-crit) 62%, #fff);
  --v2-dark1: #2a3242; --v2-dark2: #0a0d13;
  /* scale */
  --v2-r-card: 24px; --v2-r-tile: 18px; --v2-r-cell: 16px; --v2-r-pill: 999px;
  --v2-h-ctl: 40px; --v2-h-round: 44px; --v2-h-nav: 44px;
  --v2-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", system-ui, "Segoe UI", Roboto, sans-serif;
  --v2-mono: ui-monospace, "SF Mono", "JetBrains Mono", Consolas, monospace;
  /* motion */
  --v2-ease: cubic-bezier(.2,.8,.2,1); --v2-t-fast: .18s; --v2-t: .26s; --v2-t-slow: .5s;
}
html[data-theme="light"] {                 /* DAY */
  --v2-bg: #e6ebf4; --v2-bg2: #d9e0ed;
  --v2-card: rgba(255,255,255,.72); --v2-solid: #ffffff; --v2-edge: rgba(255,255,255,.95);
  --v2-cell: rgba(255,255,255,.78); --v2-cell-edge: #ffffff;
  --v2-ink: #101828; --v2-ink2: #475467; --v2-ink3: #5d6677; --v2-line: rgba(16,24,40,.08);
  --v2-shadow: 0 12px 32px rgba(40,60,110,.09), 0 1px 2px rgba(40,60,110,.05);
  --v2-shadow-pop: 0 24px 60px rgba(20,30,60,.28);
  --v2-blue: var(--mn-accent, #1d6fd8); --v2-on-blue: var(--mn-accent-ink, #ffffff);
  --v2-mint: #7be3a8; --v2-on-mint: #05361c;
  --v2-blue-text: color-mix(in srgb, var(--v2-blue) 82%, #000);
  --v2-ok-text: color-mix(in srgb, var(--v2-ok) 85%, #000); --v2-warn-text: color-mix(in srgb, var(--v2-warn) 82%, #000); --v2-crit-text: color-mix(in srgb, var(--v2-crit) 88%, #000);
  --v2-dark1: #3a4252; --v2-dark2: #1c212b;
}
:root {
  --v2-blue-soft: color-mix(in srgb, var(--v2-blue) 15%, transparent);
  --v2-ok-soft: color-mix(in srgb, var(--v2-ok) 15%, transparent); --v2-warn-soft: color-mix(in srgb, var(--v2-warn) 17%, transparent);
  --v2-crit-soft: color-mix(in srgb, var(--v2-crit) 15%, transparent); --v2-mars-soft: color-mix(in srgb, var(--v2-mars) 16%, transparent);
}

/* ---------- 2. base and layout ---------- */
body.v2 { margin: 0; background: radial-gradient(1200px 600px at 20% -10%, var(--v2-bg2), transparent 60%), var(--v2-bg); color: var(--v2-ink);
          font: 14px/1.4 var(--v2-font); -webkit-font-smoothing: antialiased; min-height: 100vh; overflow-x: clip; }
.v2 *, .v2 *::before, .v2 *::after { box-sizing: border-box; }
.v2 a { color: inherit; }
.v2-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.v2-shell { max-width: 1600px; margin: 0 auto; padding: 18px 22px 28px; }
.v2-top { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.v2-pagehead { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.v2-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.v2-grow { flex: 1; }
.v2-grid { display: grid; gap: 18px; align-items: start; }
.v2-grid--side { grid-template-columns: minmax(0, 1fr) 380px; }
.v2-grid--3 { grid-template-columns: 300px minmax(0, 1fr) 360px; }
.v2-grid--stretch { align-items: stretch; }
.v2-stack { display: grid; gap: 14px; } .v2-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.v2-h1 { margin: 0; font-size: 30px; font-weight: 500; letter-spacing: -.02em; }
.v2-h2 { margin: 0; font-size: 20px; font-weight: 500; letter-spacing: -.01em; }
.v2-h3 { margin: 0; font-size: 16px; font-weight: 600; }
.v2-lab { color: var(--v2-ink3); font-size: 12px; }
.v2-num { font-weight: 300; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.v2-mono { font-family: var(--v2-mono); font-variant-numeric: tabular-nums; }
.v2-null { color: var(--v2-ink3); }
.v2-main > .mn-page { padding: 0; }             /* unmigrated pages sit inside the v2 frame without a double gutter */
@media (max-width: 1280px) { .v2-grid--side, .v2-grid--3 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 900px) { .v2-shell { padding: 12px 14px 24px; } }

/* ---------- 3. surfaces ---------- */
.v2-card { background: var(--v2-card); border: 1px solid var(--v2-edge); border-radius: var(--v2-r-card); box-shadow: var(--v2-shadow); -webkit-backdrop-filter: blur(18px) saturate(140%); backdrop-filter: blur(18px) saturate(140%); min-width: 0; }
.v2-card--pad { padding: 18px; } .v2-card--flat { box-shadow: none; }
.v2-card--dark { background: linear-gradient(160deg, var(--v2-dark1), var(--v2-dark2)); color: #eef2f8; border-color: rgba(255,255,255,.08); }
.v2-card__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.v2-tile { border-radius: var(--v2-r-tile); padding: 12px; background: var(--v2-cell); border: 1px solid var(--v2-cell-edge); display: flex; flex-direction: column; justify-content: space-between; min-height: 96px; position: relative; overflow: hidden; }
.v2-tile .v2-num { font-size: 26px; line-height: 1.1; } .v2-tile .v2-num small { font-size: 13px; color: var(--v2-ink3); }
.v2-tile--wash::after { content: ""; position: absolute; inset: auto 0 0 0; height: 46%; background: linear-gradient(180deg, transparent, var(--v2-blue-soft)); pointer-events: none; }
.v2-rule { height: 1px; background: var(--v2-line); border: 0; margin: 0; }
.v2-av { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(145deg, color-mix(in srgb, var(--v2-blue) 45%, #fff), var(--v2-blue)); color: #0b1d57; font-weight: 700; flex: none; font-size: 13px; }

/* ---------- 4. controls ---------- */
.v2-i { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.v2-i--sm { width: 16px; height: 16px; } .v2-i--lg { width: 24px; height: 24px; }
.v2-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: var(--v2-h-ctl); padding: 0 16px; border-radius: var(--v2-r-pill); border: 1px solid var(--v2-line); background: var(--v2-solid); color: var(--v2-ink); font: 600 13px var(--v2-font); text-decoration: none; cursor: pointer; white-space: nowrap; }
.v2-btn:hover { border-color: var(--v2-blue); color: var(--v2-blue-text); }
.v2-btn--primary { height: 52px; padding: 0 22px; border: 0; background: var(--v2-blue); color: var(--v2-on-blue); box-shadow: 0 10px 22px color-mix(in srgb, var(--v2-blue) 38%, transparent); }
.v2-btn--primary:hover { color: var(--v2-on-blue); filter: brightness(1.06); }
.v2-btn--sm { height: 32px; padding: 0 14px; font-size: 12.5px; }
.v2-btn--ghost { background: transparent; } .v2-btn--danger { color: var(--v2-crit-text); } .v2-btn--danger:hover { border-color: var(--v2-crit); color: var(--v2-crit-text); }
.v2-btn--solid-danger { background: var(--v2-crit); border-color: transparent; color: #fff; } .v2-btn--solid-danger:hover { color: #fff; filter: brightness(1.08); }
.v2-btn--block { width: 100%; } .v2-btn[disabled], .v2-btn.is-disabled { opacity: .45; pointer-events: none; }
.v2-icon-btn { width: var(--v2-h-round); height: var(--v2-h-round); border-radius: 50%; display: inline-grid; place-items: center; background: var(--v2-solid); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow); color: var(--v2-ink); position: relative; cursor: pointer; padding: 0; text-decoration: none; }
.v2-icon-btn--sm { width: 36px; height: 36px; } .v2-icon-btn--xs { width: 32px; height: 32px; box-shadow: none; border-color: var(--v2-line); }
.v2-icon-btn--call { background: var(--v2-blue); color: var(--v2-on-blue); border: 0; box-shadow: 0 8px 18px color-mix(in srgb, var(--v2-blue) 40%, transparent); }
.v2-pill { display: inline-flex; align-items: center; gap: 8px; height: var(--v2-h-ctl); padding: 0 16px; border-radius: var(--v2-r-pill); background: var(--v2-card); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow); }
.v2-nav { display: flex; gap: 8px; }
.v2-nav a { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: var(--v2-h-nav); min-width: var(--v2-h-nav); padding: 0 12px; border-radius: var(--v2-r-pill); background: var(--v2-card); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow); color: var(--v2-ink2); text-decoration: none; font-weight: 600; cursor: pointer; }
.v2-nav a.is-on { background: var(--v2-solid); color: var(--v2-ink); padding: 0 18px; }
.v2-brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 20px; letter-spacing: -.02em; margin-right: 8px; color: var(--v2-ink); text-decoration: none; }
.v2-brand b { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; background: linear-gradient(145deg, color-mix(in srgb, var(--v2-blue) 70%, #fff), var(--v2-blue)); color: #fff; font-size: 16px; }
.v2-brand img { height: 30px; width: auto; max-width: 140px; object-fit: contain; } .v2-brand small { font-size: 12px; font-weight: 600; color: var(--v2-ink3); letter-spacing: .04em; }
.v2-chip { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: var(--v2-r-pill); font-size: 12px; font-weight: 600; background: var(--v2-blue-soft); color: var(--v2-blue-text); white-space: nowrap; }
.v2-chip--ok { background: var(--v2-ok-soft); color: var(--v2-ok-text); } .v2-chip--warn { background: var(--v2-warn-soft); color: var(--v2-warn-text); }
.v2-chip--crit { background: var(--v2-crit-soft); color: var(--v2-crit-text); } .v2-chip--plain { background: var(--v2-line); color: var(--v2-ink2); } .v2-chip--mars { background: var(--v2-mars-soft); color: var(--v2-mars); }
.v2-dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; flex: none; display: inline-block; }
.v2-badge { position: absolute; top: -2px; right: -2px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px; background: var(--v2-mint); color: var(--v2-on-mint); font-size: 11px; font-weight: 700; display: grid; place-items: center; }
.v2-field { display: inline-flex; align-items: center; gap: 8px; height: var(--v2-h-ctl); padding: 0 14px; border-radius: var(--v2-r-pill); background: var(--v2-solid); border: 1px solid var(--v2-edge); color: var(--v2-ink3); }
.v2-field:focus-within { outline: 2px solid var(--v2-blue); outline-offset: 1px; }
.v2-field input, .v2-field select { border: 0; background: transparent; font: inherit; color: var(--v2-ink); outline: none; min-width: 0; }
.v2-field input { width: 190px; } .v2-field select { cursor: pointer; } .v2-field select option { color: #101828; background: #fff; }
.v2-label { display: block; margin: 0 0 6px 4px; font-size: 12px; font-weight: 600; color: var(--v2-ink2); }
.v2-help { margin: 6px 4px 0; font-size: 12px; color: var(--v2-ink3); } .v2-field--err { outline: 2px solid var(--v2-crit); } .v2-err { margin: 6px 4px 0; font-size: 12px; color: var(--v2-crit-text); }
.v2-textarea { width: 100%; min-height: 84px; padding: 12px 14px; border-radius: 18px; background: var(--v2-solid); border: 1px solid var(--v2-edge); color: var(--v2-ink); font: inherit; resize: vertical; } .v2-textarea:focus { outline: 2px solid var(--v2-blue); outline-offset: 1px; }
.v2-switch { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--v2-ink2); cursor: pointer; }
.v2-switch input { position: absolute; opacity: 0; } .v2-switch i { width: 38px; height: 22px; border-radius: 11px; background: var(--v2-line); position: relative; transition: background var(--v2-t); flex: none; }
.v2-switch i::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); transition: transform var(--v2-t) var(--v2-ease); }
.v2-switch input:checked + i { background: var(--v2-blue); } .v2-switch input:checked + i::after { transform: translateX(16px); } .v2-switch input:focus-visible + i { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
.v2-check { width: 18px; height: 18px; accent-color: var(--v2-blue); vertical-align: middle; cursor: pointer; }
.v2-seg { position: relative; display: inline-flex; padding: 4px; border-radius: var(--v2-r-pill); background: var(--v2-line); gap: 2px; }
.v2-seg button { position: relative; z-index: 1; border: 0; background: transparent; height: 34px; padding: 0 14px; border-radius: var(--v2-r-pill); font: 600 13px var(--v2-font); color: var(--v2-ink2); display: inline-flex; gap: 6px; align-items: center; justify-content: center; cursor: pointer; }
.v2-seg button span { color: var(--v2-ink3); font-weight: 500; font-variant-numeric: tabular-nums; }
.v2-seg button.is-on { background: var(--v2-solid); color: var(--v2-ink); box-shadow: var(--v2-shadow); }
.v2-seg--wide { display: flex; } .v2-seg--wide button { flex: 1; }
.v2-seg .v2-thumb { position: absolute; top: 4px; bottom: 4px; left: 0; width: 0; border-radius: var(--v2-r-pill); background: var(--v2-solid); box-shadow: var(--v2-shadow); pointer-events: none; transition: transform var(--v2-t) var(--v2-ease), width var(--v2-t) var(--v2-ease); }
.v2-seg.has-thumb button.is-on { background: transparent; box-shadow: none; }
.v2 :focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }

/* ---------- 5. data display ---------- */
.v2-bar { height: 6px; border-radius: 3px; background: var(--v2-line); position: relative; overflow: hidden; }
.v2-bar > i { position: absolute; inset: 0 auto 0 0; border-radius: 3px; background: linear-gradient(90deg, color-mix(in srgb, var(--v2-blue) 70%, #fff), var(--v2-blue)); transform-origin: left; }
.v2-bar--ok > i { background: linear-gradient(90deg, color-mix(in srgb, var(--v2-ok) 60%, #fff), var(--v2-ok)); } .v2-bar--warn > i { background: var(--v2-warn); } .v2-bar--crit > i { background: var(--v2-crit); }
.v2-bar--thin { height: 5px; }
.v2-kpi { display: flex; align-items: center; gap: 10px; } .v2-kpi + .v2-kpi { padding-left: 20px; border-left: 1px solid var(--v2-line); }
.v2-kpi .v2-lab { line-height: 1.15; max-width: 74px; } .v2-kpi .v2-num { font-size: 34px; line-height: 1; } .v2-kpi .v2-num small { font-size: 16px; color: var(--v2-ink3); }
.v2-kpis { display: flex; align-items: center; gap: 20px; margin: 0 12px; flex-wrap: wrap; }
.v2-stat { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.v2-kv { display: grid; gap: 9px; font-size: 13px; } .v2-kv > div { display: flex; justify-content: space-between; gap: 12px; } .v2-kv span { color: var(--v2-ink3); } .v2-kv b { font-weight: 600; text-align: right; }
.v2-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .v2-facts > div { background: var(--v2-cell); border: 1px solid var(--v2-cell-edge); border-radius: 14px; padding: 8px 10px; } .v2-facts b { display: block; font-size: 16px; font-weight: 500; font-variant-numeric: tabular-nums; }
.v2-facts--2 { grid-template-columns: 1fr 1fr; }
.v2-hist { display: grid; gap: 8px; font-size: 12.5px; } .v2-hist > div { display: grid; grid-template-columns: 46px 1fr; gap: 8px; color: var(--v2-ink2); } .v2-hist span { color: var(--v2-ink3); font-variant-numeric: tabular-nums; } .v2-hist b { font-weight: 500; color: var(--v2-ink); }
.v2-steps { display: flex; align-items: flex-start; position: relative; }
.v2-steps::before { content: ""; position: absolute; left: 6%; right: 6%; top: 21px; height: 3px; border-radius: 2px; background: var(--v2-line); }
.v2-step { flex: 1; position: relative; display: grid; justify-items: center; gap: 5px; background: none; border: 0; padding: 0; color: var(--v2-ink2); cursor: pointer; font: inherit; }
.v2-step .c { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--v2-solid); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow); color: var(--v2-ink3); }
.v2-step .n { font-size: 22px; font-weight: 300; line-height: 1; font-variant-numeric: tabular-nums; color: var(--v2-ink); } .v2-step .t { font-size: 12px; color: var(--v2-ink3); font-weight: 600; }
.v2-step.is-on .c { background: var(--v2-mint); color: var(--v2-on-mint); border-color: transparent; box-shadow: 0 8px 18px color-mix(in srgb, var(--v2-ok) 38%, transparent); } .v2-step.is-on .t { color: var(--v2-ink); }
.v2-mstep { display: flex; align-items: center; } .v2-mstep i { flex: 1; height: 3px; background: var(--v2-line); } .v2-mstep i.f { background: var(--v2-mint); } .v2-mstep b { width: 14px; height: 14px; border-radius: 50%; background: var(--v2-line); flex: none; } .v2-mstep b.f { background: var(--v2-mint); } .v2-mstep b.c { background: var(--v2-blue); box-shadow: 0 0 0 4px var(--v2-blue-soft); }
.v2-mlab { display: flex; justify-content: space-between; font-size: 11px; color: var(--v2-ink3); margin-top: 5px; }
.v2-table-wrap { overflow-x: auto; }
.v2-table { width: 100%; border-collapse: separate; border-spacing: 0 6px; font-size: 13px; }
.v2-table th { text-align: left; font-size: 11.5px; font-weight: 600; color: var(--v2-ink3); padding: 4px 10px; white-space: nowrap; letter-spacing: .02em; }
.v2-table th.r, .v2-table td.r { text-align: right; } .v2-table th.c, .v2-table td.c { width: 34px; text-align: center; padding: 0 6px; }
.v2-table td { padding: 10px 10px; background: var(--v2-cell); border-top: 1px solid var(--v2-cell-edge); border-bottom: 1px solid var(--v2-cell-edge); white-space: nowrap; vertical-align: middle; }
.v2-table td:first-child { border-left: 1px solid var(--v2-cell-edge); border-radius: 16px 0 0 16px; } .v2-table td:last-child { border-right: 1px solid var(--v2-cell-edge); border-radius: 0 16px 16px 0; text-align: right; }
.v2-table tr.is-click { cursor: pointer; } .v2-table tr.is-click:hover td { background: var(--v2-solid); }
.v2-table tr.is-on td { background: var(--v2-solid); border-color: var(--v2-blue); } .v2-table tr.is-on td:first-child { box-shadow: -3px 0 0 var(--v2-blue) inset; }
.v2-table th[data-sort] { cursor: pointer; user-select: none; } .v2-table th[data-sort]:hover { color: var(--v2-ink); } .v2-table th[aria-sort="ascending"]::after { content: " ↑"; } .v2-table th[aria-sort="descending"]::after { content: " ↓"; }
.v2-fl b { font-size: 14px; font-weight: 600; } .v2-fl small { display: block; color: var(--v2-ink3); font-size: 11.5px; }
.v2-route { display: flex; align-items: center; gap: 6px; font-variant-numeric: tabular-nums; } .v2-route b { font-weight: 600; } .v2-route svg { width: 14px; height: 14px; color: var(--v2-ink3); }
.v2-dir { font-size: 10.5px; font-weight: 700; letter-spacing: .05em; padding: 2px 6px; border-radius: 6px; background: var(--v2-line); color: var(--v2-ink2); }
.v2-tm { font-variant-numeric: tabular-nums; } .v2-tm small { color: var(--v2-ink3); font-size: 11px; margin-right: 4px; }
.v2-delay { font-weight: 600; font-variant-numeric: tabular-nums; } .v2-delay.is-late { color: var(--v2-warn-text); } .v2-delay.is-early { color: var(--v2-ok-text); } .v2-delay.is-none { color: var(--v2-ink3); font-weight: 400; }
.v2-pager { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; } .v2-pager__pages { display: flex; gap: 4px; align-items: center; color: var(--v2-ink3); }
.v2-pager__pages button { min-width: 34px; height: 34px; border-radius: 50%; border: 0; background: transparent; font: 600 13px var(--v2-font); color: var(--v2-ink); display: grid; place-items: center; cursor: pointer; } .v2-pager__pages button.is-on { background: var(--v2-solid); box-shadow: var(--v2-shadow); } .v2-pager__pages button[disabled] { opacity: .4; cursor: default; }
.v2-bulk { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 16px; background: var(--v2-blue-soft); margin-bottom: 8px; flex-wrap: wrap; } .v2-bulk[hidden] { display: none; } .v2-bulk b { margin-right: 6px; color: var(--v2-blue-text); }
.v2-empty { text-align: center; padding: 40px 10px; display: grid; justify-items: center; gap: 6px; color: var(--v2-ink2); } .v2-empty[hidden] { display: none; }
.v2-item { border-radius: 18px; padding: 12px; background: var(--v2-cell); border: 1px solid var(--v2-cell-edge); display: grid; gap: 8px; } .v2-item:hover { background: var(--v2-solid); }
.v2-item__h { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .v2-item__h > div { min-width: 0; flex: 1; } .v2-item b { font-weight: 600; font-size: 14px; } .v2-item small { color: var(--v2-ink3); font-size: 12px; display: block; } .v2-item .v2-chip { flex: none; }
.v2-item__b { display: flex; gap: 8px; } .v2-item__b .v2-btn { flex: 1; height: 34px; }
.v2-alert { display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: center; padding: 10px 0; } .v2-alert + .v2-alert { border-top: 1px solid var(--v2-line); } .v2-alert b { display: block; font-size: 13.5px; font-weight: 600; } .v2-alert small { color: var(--v2-ink3); font-size: 12px; }
.v2-ico { width: 34px; height: 34px; border-radius: 12px; display: grid; place-items: center; background: var(--v2-blue-soft); color: var(--v2-blue-text); } .v2-ico--crit { background: var(--v2-crit-soft); color: var(--v2-crit-text); } .v2-ico--warn { background: var(--v2-warn-soft); color: var(--v2-warn-text); } .v2-ico--ok { background: var(--v2-ok-soft); color: var(--v2-ok-text); }
.v2-notice { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-radius: 18px; background: var(--v2-blue-soft); color: var(--v2-ink); border: 1px solid var(--v2-edge); margin-bottom: 12px; } .v2-notice--ok { background: var(--v2-ok-soft); } .v2-notice--warn { background: var(--v2-warn-soft); } .v2-notice--crit { background: var(--v2-crit-soft); }
.v2-notice button { border: 0; background: transparent; color: inherit; font-size: 20px; cursor: pointer; line-height: 1; }
.v2-skeleton { border-radius: 12px; background: linear-gradient(90deg, var(--v2-line), color-mix(in srgb, var(--v2-line) 40%, transparent), var(--v2-line)); background-size: 200% 100%; height: 14px; }

/* ---------- 6. overlays ---------- */
.v2-pop { position: absolute; z-index: 60; min-width: 170px; padding: 6px; border-radius: 16px; background: var(--v2-solid); border: 1px solid var(--v2-line); box-shadow: var(--v2-shadow-pop); text-align: left; }
.v2-pop button, .v2-pop a { display: block; width: 100%; text-align: left; border: 0; background: transparent; padding: 9px 12px; border-radius: 10px; font: 500 13px var(--v2-font); color: var(--v2-ink); text-decoration: none; cursor: pointer; } .v2-pop button:hover, .v2-pop a:hover { background: var(--v2-cell); } .v2-pop .is-danger { color: var(--v2-crit-text); }
.v2-mega { position: fixed; z-index: 80; width: min(700px, 94vw); max-height: 78vh; overflow: auto; border-radius: 24px; background: var(--v2-solid); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow-pop); padding: 16px 16px 12px; color: var(--v2-ink); }
.v2-mega h3 { margin: 2px 6px 10px; font-size: 18px; font-weight: 600; display: flex; align-items: center; gap: 10px; } .v2-mega h3 small { font-size: 12px; color: var(--v2-ink3); font-weight: 500; }
.v2-mega__g { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; } .v2-mega__g--one { grid-template-columns: 1fr; }
.v2-mega__sub { grid-column: 1 / -1; margin: 10px 6px 0; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-ink3); }
.v2-mega a.it { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 14px; color: var(--v2-ink); text-decoration: none; min-width: 0; } .v2-mega a.it:hover { background: var(--v2-cell); } .v2-mega a.it.is-cur { background: var(--v2-blue-soft); }
.v2-mega a.it b { font-weight: 600; font-size: 13.5px; display: block; } .v2-mega a.it .tx { min-width: 0; flex: 1; }
.v2-mega .st { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--v2-line); border: 1px solid var(--v2-ink3); } .v2-mega .st.is-new { background: var(--v2-blue); border-color: var(--v2-blue); box-shadow: 0 0 0 3px var(--v2-blue-soft); }
.v2-mega__ft { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 12px 6px 2px; padding-top: 10px; border-top: 1px solid var(--v2-line); font-size: 12px; color: var(--v2-ink3); }
.v2-scrim { position: fixed; inset: 0; z-index: 90; background: rgba(10,15,25,.45); display: grid; place-items: start center; padding-top: 12vh; } .v2-scrim[hidden] { display: none; }
.v2-palette { width: min(620px, 92vw); border-radius: 24px; background: var(--v2-solid); border: 1px solid var(--v2-edge); box-shadow: 0 30px 80px rgba(0,0,0,.4); padding: 14px; color: var(--v2-ink); }
.v2-palette__in { display: flex; align-items: center; gap: 10px; height: 48px; padding: 0 14px; border-radius: var(--v2-r-pill); background: var(--v2-cell); border: 1px solid var(--v2-line); color: var(--v2-ink3); } .v2-palette input { flex: 1; border: 0; background: transparent; font: inherit; font-size: 15px; color: var(--v2-ink); outline: none; }
.v2-palette ul { list-style: none; margin: 10px 0 0; padding: 0; max-height: 50vh; overflow: auto; } .v2-palette li a { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 14px; color: var(--v2-ink); text-decoration: none; } .v2-palette li a:hover, .v2-palette li a.is-f { background: var(--v2-blue-soft); } .v2-palette li a span { margin-left: auto; font-size: 11.5px; color: var(--v2-ink3); }
body.v2 .mn-scrim { background: rgba(10,15,25,.5); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
body.v2 .mn-dialog { background: var(--v2-solid); color: var(--v2-ink); border: 1px solid var(--v2-edge); border-radius: 24px; box-shadow: var(--v2-shadow-pop); padding: 22px; }
body.v2 .mn-dialog .mn-btn { height: 40px; border-radius: 999px; padding: 0 18px; font-weight: 600; }
body.v2 .mn-dialog .mn-btn--primary { background: var(--v2-blue); color: var(--v2-on-blue); border-color: transparent; } body.v2 .mn-dialog .mn-btn--danger { background: var(--v2-crit); color: #fff; border-color: transparent; }
body.v2 .mn-toast { border-radius: 999px; background: var(--v2-solid); color: var(--v2-ink); border: 1px solid var(--v2-edge); box-shadow: var(--v2-shadow-pop); padding: 10px 20px; font-weight: 600; }

/* ---------- 7. domain widgets (stand, runway, timeline, charts) ---------- */
.v2-apron { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); grid-auto-rows: minmax(104px, auto); gap: 8px; }
.v2-cell { position: relative; border-radius: var(--v2-r-cell); padding: 8px 6px; text-align: left; border: 1px solid var(--v2-cell-edge); background: var(--v2-cell); display: flex; flex-direction: column; justify-content: space-between; min-width: 0; color: var(--v2-ink); cursor: pointer; font: inherit; }
.v2-cell .id { font-size: 11px; color: var(--v2-ink3); font-weight: 600; } .v2-cell .main { text-align: center; font-weight: 600; font-size: 13px; line-height: 1.15; letter-spacing: -.02em; } .v2-cell .main small { display: block; font-weight: 500; font-size: 11px; color: var(--v2-ink3); margin-top: 2px; } .v2-cell .foot { text-align: center; font-size: 11px; color: var(--v2-ink3); min-height: 14px; font-variant-numeric: tabular-nums; }
.v2-cell--free .main { color: var(--v2-ink3); font-weight: 400; font-size: 22px; }
.v2-cell--occ { background: linear-gradient(160deg, color-mix(in srgb, var(--v2-blue) 80%, #fff), var(--v2-blue) 60%, color-mix(in srgb, var(--v2-blue) 82%, #000)); border-color: rgba(255,255,255,.3); color: var(--v2-on-blue); } .v2-cell--occ .id, .v2-cell--occ .main small, .v2-cell--occ .foot { color: color-mix(in srgb, var(--v2-on-blue) 82%, transparent); }
.v2-cell--res { background: var(--v2-ok-soft); border-color: color-mix(in srgb, var(--v2-ok) 40%, transparent); } .v2-cell--res .foot { color: var(--v2-ok-text); font-weight: 600; }
.v2-cell--closed { background: repeating-linear-gradient(135deg, var(--v2-line) 0 6px, transparent 6px 12px), var(--v2-cell); } .v2-cell--closed .main { color: var(--v2-warn-text); }
.v2-cell--wide { grid-column: span 2; } .v2-cell.is-sel { box-shadow: 0 0 0 3px var(--v2-solid), 0 0 0 5px var(--v2-blue), var(--v2-shadow); }
.v2-lane { position: relative; height: 44px; border-radius: 22px; background: color-mix(in srgb, var(--v2-ink3) 24%, transparent); display: flex; align-items: center; padding: 0 14px; gap: 10px; overflow: hidden; }
.v2-lane::before { content: ""; position: absolute; left: 90px; right: 16px; top: 50%; height: 2px; background: repeating-linear-gradient(90deg, rgba(255,255,255,.7) 0 14px, transparent 14px 28px); opacity: .6; }
.v2-lane .nm { position: relative; font-weight: 700; font-size: 13px; width: 76px; } .v2-lane .ch { position: relative; margin-left: auto; }
.v2-lane--closed { background: repeating-linear-gradient(135deg, var(--v2-crit-soft) 0 8px, transparent 8px 16px), color-mix(in srgb, var(--v2-ink3) 24%, transparent); } .v2-lane--closed::before { opacity: .15; }
.v2-gantt { position: relative; overflow: hidden; border-radius: 18px; background: var(--v2-cell); border: 1px solid var(--v2-cell-edge); }
.v2-gantt__row { display: grid; grid-template-columns: 72px 1fr; height: 44px; border-bottom: 1px solid var(--v2-line); } .v2-gantt__row:last-child { border-bottom: 0; }
.v2-gantt__lab { display: flex; flex-direction: column; justify-content: center; padding-left: 14px; font-weight: 600; font-size: 13px; line-height: 1.1; } .v2-gantt__lab small { color: var(--v2-ink3); font-weight: 500; font-size: 10.5px; }
.v2-gantt__track { position: relative; background-image: linear-gradient(90deg, var(--v2-line) 1px, transparent 1px); background-size: var(--hw, 16.66%) 100%; }
.v2-gbar { position: absolute; top: 5px; bottom: 5px; border-radius: 13px; padding: 0 9px; display: flex; align-items: center; gap: 6px; font: 600 12px var(--v2-font); white-space: nowrap; overflow: hidden; border: 0; text-align: left; color: var(--v2-on-blue); background: linear-gradient(160deg, color-mix(in srgb, var(--v2-blue) 80%, #fff), var(--v2-blue) 60%, color-mix(in srgb, var(--v2-blue) 82%, #000)); cursor: pointer; }
.v2-gbar small { font-weight: 500; opacity: .85; font-size: 11px; }
.v2-gbar--prov { background: var(--v2-blue-soft); color: var(--v2-blue-text); border: 1.5px dashed var(--v2-blue); } .v2-gbar--closed { background: repeating-linear-gradient(135deg, var(--v2-line) 0 6px, transparent 6px 12px); color: var(--v2-warn-text); cursor: default; }
.v2-gbar--mars { background: repeating-linear-gradient(135deg, var(--v2-mars-soft) 0 6px, transparent 6px 12px); color: var(--v2-mars); border: 1px solid var(--v2-mars); cursor: default; } .v2-gbar--conflict { background: var(--v2-crit-soft); color: var(--v2-crit-text); border: 1.5px solid var(--v2-crit); }
.v2-gbar.is-sel { box-shadow: 0 0 0 3px var(--v2-solid), 0 0 0 5px var(--v2-blue), var(--v2-shadow); z-index: 2; }
.v2-now { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--v2-crit); z-index: 3; pointer-events: none; opacity: .85; } .v2-now::before { content: attr(data-t); position: absolute; top: 4px; left: 50%; transform: translateX(-50%); background: var(--v2-crit); color: #fff; font-size: 10.5px; font-weight: 700; padding: 1px 6px; border-radius: 8px; }
.v2-chart { position: relative; height: 150px; display: flex; align-items: flex-end; gap: 7px; margin-top: 14px; padding-bottom: 20px; }
.v2-chart__b { flex: 1; border-radius: 8px 8px 3px 3px; background: linear-gradient(180deg, color-mix(in srgb, var(--v2-blue) 70%, #fff), var(--v2-blue)); position: relative; min-width: 0; transform-origin: bottom; } .v2-chart__b.is-hot { background: linear-gradient(180deg, color-mix(in srgb, var(--v2-warn) 70%, #fff), var(--v2-warn)); }
.v2-chart__b span { position: absolute; bottom: -18px; left: 50%; transform: translateX(-50%); font-size: 10.5px; color: var(--v2-ink3); white-space: nowrap; }
.v2-chart__cap { position: absolute; left: 0; right: 0; border-top: 2px dashed var(--v2-ink3); opacity: .6; }
.v2-health { display: flex; align-items: flex-end; gap: 10px; height: 118px; margin-top: 14px; } .v2-health > div { flex: 1; text-align: center; display: grid; gap: 4px; align-content: end; height: 100%; font-size: 12px; } .v2-health i { border-radius: 10px; background: repeating-linear-gradient(0deg, rgba(255,255,255,.28) 0 2px, transparent 2px 6px), linear-gradient(180deg, color-mix(in srgb, var(--v2-blue) 70%, #fff), var(--v2-blue)); transform-origin: bottom; } .v2-health span { color: var(--v2-ink3); font-size: 11px; }
.v2-dist { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 14px; text-align: center; } .v2-dist b { font-size: 34px; font-weight: 300; letter-spacing: -.02em; } .v2-dist b small { font-size: 16px; color: var(--v2-ink3); } .v2-dist i { display: block; height: 56px; border-radius: 12px; margin: 8px 0 6px; background-image: radial-gradient(currentColor 1.6px, transparent 1.7px); background-size: 8px 8px; opacity: .85; }
.v2-arc { border-radius: 20px; background: linear-gradient(160deg, var(--v2-cell), transparent), var(--v2-line); padding: 14px 16px 10px; } .v2-arc__ends { display: flex; justify-content: space-between; align-items: baseline; } .v2-arc__ends b { font-size: 24px; font-weight: 400; letter-spacing: -.01em; } .v2-arc__ends span { color: var(--v2-ink3); font-size: 11.5px; display: block; }
.v2-arc svg { width: 100%; height: 56px; display: block; overflow: visible; } .v2-arc__tag { text-align: center; color: var(--v2-ink3); font-size: 12px; margin-top: 2px; }

/* ---------- 8. motion (all of it off under reduced motion) ---------- */
@media (prefers-reduced-motion: no-preference) {
  .v2-btn, .v2-icon-btn, .v2-nav a, .v2-cell, .v2-gbar, .v2-step .c, .v2-seg button, .v2-item { transition: transform var(--v2-t) var(--v2-ease), box-shadow var(--v2-t) ease, background-color var(--v2-t) ease, border-color var(--v2-t) ease, color var(--v2-t) ease; }
  .v2-icon-btn:hover, .v2-nav a:hover, .v2-cell:hover, .v2-btn--primary:hover, .v2-step:hover .c { transform: translateY(-2px); }
  .v2-gbar:hover { transform: translateY(-1px); box-shadow: var(--v2-shadow); }
  .v2-btn:active, .v2-icon-btn:active, .v2-nav a:active { transform: scale(.96); }
  .v2-i { transition: transform var(--v2-t) var(--v2-ease); } .v2-icon-btn:hover .v2-i, .v2-nav a:hover .v2-i { transform: scale(1.1); } .v2-nav a.is-on .v2-i { transform: none; }
  @keyframes v2-up { from { opacity: 0; transform: translateY(8px); } } .v2-in { animation: v2-up var(--v2-t-slow) var(--v2-ease) both; animation-delay: calc(var(--ai, 0) * 55ms); }
  @keyframes v2-row { from { opacity: 0; transform: translateY(5px); } } .v2-in-row { animation: v2-row .3s var(--v2-ease) both; animation-delay: calc(var(--ai, 0) * 20ms); }
  @keyframes v2-fade { from { opacity: 0; } } .v2-in-fade { animation: v2-fade .25s ease both; animation-delay: calc(var(--ai, 0) * 30ms); }
  @keyframes v2-grow { from { transform: scaleX(0); } } .v2-bar > i { animation: v2-grow 1.1s var(--v2-ease) both; }
  @keyframes v2-rise { from { transform: scaleY(0); } } .v2-chart__b, .v2-health i { animation: v2-rise 1s var(--v2-ease) both; }
  @keyframes v2-gb { from { transform: scaleX(0); opacity: 0; } } .v2-gbar { transform-origin: left; animation: v2-gb .8s var(--v2-ease) both; } .v2-gantt.is-still .v2-gbar { animation: none; }
  @keyframes v2-lab { from { opacity: 0; transform: translateX(-6px); } } .v2-nav a.is-on span { animation: v2-lab .35s .05s ease both; }
  @keyframes v2-pop { 0% { transform: scale(0); } 70% { transform: scale(1.2); } 100% { transform: scale(1); } } .v2-badge { animation: v2-pop .5s .7s cubic-bezier(.3,1.5,.5,1) both; }
  @keyframes v2-breathe { 50% { opacity: .35; } } .v2-live .v2-dot { animation: v2-breathe 3.2s ease-in-out infinite; } .v2-now { animation: v2-breathe 3.6s ease-in-out infinite; }
  @keyframes v2-glow { 50% { box-shadow: 0 0 0 5px color-mix(in srgb, var(--v2-ok) 16%, transparent); } } .v2-cell--res { animation: v2-glow 4.8s ease-in-out infinite; }
  @keyframes v2-ring { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--v2-ok) 55%, transparent); } to { box-shadow: 0 0 0 14px transparent; } } .v2-step.is-on .c { animation: v2-ring .9s ease-out 1; }
  @keyframes v2-mega { from { opacity: 0; transform: translateY(-6px) scale(.985); } } .v2-mega { animation: v2-mega .2s var(--v2-ease) both; transform-origin: top left; }
  @keyframes v2-item { from { opacity: 0; transform: translateY(4px); } } .v2-mega a.it { animation: v2-item .26s var(--v2-ease) both; animation-delay: calc(var(--i, 0) * 16ms + 40ms); }
  @keyframes v2-pal { from { opacity: 0; transform: translateY(8px) scale(.985); } } .v2-palette { animation: v2-pal .22s var(--v2-ease) both; } .v2-pop { animation: v2-mega .16s var(--v2-ease) both; transform-origin: top right; }
  .v2-seg .v2-thumb { display: block; }
  html.v2-tt *, html.v2-tt *::before, html.v2-tt *::after { transition: background-color .38s ease, border-color .38s ease, color .38s ease, fill .38s ease, box-shadow .38s ease !important; }
  @keyframes v2-spin { from { transform: rotate(-70deg) scale(.6); opacity: 0; } } .v2-spin svg { animation: v2-spin .45s var(--v2-ease); }
}
@media (prefers-reduced-motion: reduce) { .v2 *, .v2 *::before, .v2 *::after { animation: none !important; transition: none !important; } }

/* ---------- 9. header compaction, so nine group pills and four figures stay on one row ---------- */
@media (max-width: 1740px) {
  .v2-top { gap: 8px; } .v2-top .v2-nav { gap: 6px; } .v2-top .v2-nav a { min-width: 40px; height: 40px; padding: 0 10px; } .v2-top .v2-nav a.is-on { padding: 0 14px; }
  .v2-top .v2-icon-btn { width: 40px; height: 40px; } .v2-top .v2-brand { margin-right: 0; } .v2-top .v2-brand small { display: none; }
  .v2-top .v2-kpis { gap: 14px; margin: 0 2px; flex-wrap: nowrap; } .v2-top .v2-kpi .v2-num { font-size: 30px; } .v2-top .v2-kpi + .v2-kpi { padding-left: 14px; } .v2-top .v2-kpi .v2-lab { max-width: 58px; font-size: 11px; }
  .v2-top .v2-search { width: 40px; height: 40px; padding: 0; justify-content: center; } .v2-top .v2-search span { display: none; } .v2-top .v2-me > div { display: none; }
}

/* ---------- 10. small additions used by the shell ---------- */
button.v2-pill { font: inherit; color: var(--v2-ink3); cursor: pointer; }
.v2-me { display: flex; align-items: center; gap: 10px; } .v2-me small { font-size: 11px; }
.v2-hidden { display: none !important; }
.v2-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.v2-life { padding: 16px 20px; display: flex; align-items: center; gap: 18px; margin-bottom: 14px; flex-wrap: wrap; } .v2-life .v2-steps { flex: 1; min-width: 560px; }
.v2-side-chips { display: flex; gap: 8px; align-items: center; } .v2-sc { height: 34px; padding: 0 12px; border-radius: var(--v2-r-pill); border: 1px solid var(--v2-edge); background: var(--v2-solid); font: 600 12.5px var(--v2-font); color: var(--v2-ink); display: inline-flex; align-items: center; gap: 8px; cursor: pointer; } .v2-sc.is-on { outline: 2px solid var(--v2-blue); } .v2-sc b { font-weight: 600; font-variant-numeric: tabular-nums; }
.v2-peek { padding: 20px; position: sticky; top: 16px; display: grid; gap: 14px; max-height: calc(100vh - 32px); overflow: auto; }
.v2-peek__h { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; } .v2-peek__h h2 { margin: 6px 0 0; font-size: 30px; font-weight: 500; letter-spacing: -.02em; line-height: 1; } .v2-peek__h small { color: var(--v2-ink3); }
.v2-peek form { display: flex; gap: 8px; align-items: center; } .v2-peek form .v2-field { flex: 1; } .v2-peek form .v2-field select { width: 100%; }
@media (max-width: 1280px) { .v2-peek { position: static; max-height: none; } }
@media (max-width: 900px) { .v2-life .v2-steps { min-width: 0; } .v2-step .t { font-size: 10.5px; } .v2-step .c { width: 36px; height: 36px; } .v2-steps::before { top: 17px; } .v2-field input { width: 140px; } }
.v2-code { margin: 10px 0 0; padding: 12px 14px; border-radius: 14px; background: var(--v2-line); color: var(--v2-ink2); font: 12px/1.5 var(--v2-mono); overflow-x: auto; white-space: pre; }
.v2-lane .v2-chip { background: var(--v2-solid); }

/* ---------- 11. overview additions ---------- */
a.v2-cell { text-decoration: none; }
.v2-term { display: flex; align-items: center; gap: 10px; margin: 14px 2px 8px; font-size: 11px; font-weight: 700; letter-spacing: .12em; color: var(--v2-ink3); } .v2-term::after { content: ""; flex: 1; height: 1px; background: var(--v2-line); }
.v2-legend { display: flex; gap: 16px; flex-wrap: wrap; margin: 12px 2px 0; color: var(--v2-ink3); font-size: 12px; } .v2-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.v2-chart__col { position: relative; flex: 1; height: 100%; display: flex; align-items: flex-end; min-width: 0; } .v2-chart__col .v2-chart__b { width: 100%; flex: none; }
.v2-chart__tick { position: absolute; left: -2px; right: -2px; height: 0; border-top: 2px solid var(--v2-ink2); opacity: .7; pointer-events: none; }
a.v2-item { text-decoration: none; color: inherit; display: grid; }
.v2-queue { display: flex; align-items: center; gap: 6px; margin: 14px 0 10px; } .v2-queue span { width: 28px; height: 14px; border-radius: 7px; background: var(--v2-blue); flex: none; } .v2-queue span:first-child { background: var(--v2-mint); } .v2-queue::after { content: ""; flex: 1; height: 2px; background: repeating-linear-gradient(90deg, #66708a 0 8px, transparent 8px 16px); }
.v2-next { display: grid; gap: 6px; font-size: 13px; } .v2-next div { display: flex; justify-content: space-between; color: #d6deec; } .v2-next div span:last-child { color: #aab4c6; font-variant-numeric: tabular-nums; }
.v2-bottom { display: grid; grid-template-columns: 300px minmax(0, 1fr) 360px; gap: 18px; margin-top: 18px; align-items: stretch; } .v2-bottom__mid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 18px; min-width: 0; }
.v2-dark-card { display: flex; flex-direction: column; justify-content: space-between; min-height: 250px; padding: 18px; }
@media (max-width: 1280px) { .v2-bottom { grid-template-columns: minmax(0, 1fr); } .v2-bottom__mid { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .v2-apron--6 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
.v2-lane > * { position: relative; }

/* ---------- 12. stand board additions ---------- */
.v2-gantt__row--multi { height: auto; min-height: 44px; } .v2-gantt__row .v2-gantt__track { min-height: 44px; }
.v2-gantt__scroll { max-height: 64vh; overflow: auto; }
.v2-gbar--lane { top: auto; bottom: auto; }
.v2-sel-actions { display: grid; gap: 8px; } .v2-sel-actions form, .v2-sel-actions .v2-row { display: flex; gap: 8px; align-items: center; } .v2-sel-actions .v2-field { flex: 1; } .v2-sel-actions .v2-field select { width: 100%; }
.v2-src-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 6px; background: var(--v2-blue); }
.v2-mars-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; color: #d6deec; } .v2-mars-row span:last-child { color: #aab4c6; font-variant-numeric: tabular-nums; }
.v2-pair { display: flex; align-items: stretch; gap: 8px; margin: 14px 0 10px; } .v2-pair > div { flex: 1; border-radius: 14px; padding: 10px 6px; text-align: center; font-size: 12px; } .v2-pair .a { background: color-mix(in srgb, var(--v2-blue) 30%, transparent); } .v2-pair .b { background: repeating-linear-gradient(135deg, rgba(155,134,255,.35) 0 6px, transparent 6px 12px); border: 1px solid #9b86ff; color: #d9d0ff; }
.v2-gantt__head { position: sticky; top: 0; z-index: 4; display: grid; grid-template-columns: 72px 1fr; height: 30px; border-bottom: 1px solid var(--v2-line); background: var(--v2-solid); } .v2-gantt__ticks { position: relative; } .v2-gantt__ticks span { position: absolute; top: 8px; transform: translateX(-50%); font-size: 11px; color: var(--v2-ink3); font-variant-numeric: tabular-nums; }
.v2-gantt__scroll { position: relative; } .v2-gantt__row .v2-gantt__track { min-height: 0; } .v2-gbar { bottom: auto; }

/* ---------- 13. runway board additions ---------- */
.v2-gbar--warn { background: linear-gradient(160deg, color-mix(in srgb, var(--v2-warn) 82%, #fff), var(--v2-warn)); color: #1c1200; }
.v2-gbar--ok { background: linear-gradient(160deg, color-mix(in srgb, var(--v2-ok) 78%, #fff), var(--v2-ok)); color: #04200f; }
.v2-gbar--crit { background: linear-gradient(160deg, color-mix(in srgb, var(--v2-crit) 80%, #fff), var(--v2-crit)); color: #fff; }
.v2-gbar--violet { background: linear-gradient(160deg, color-mix(in srgb, var(--v2-mars) 80%, #fff), var(--v2-mars)); color: #120a3a; }
.v2-src { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; background: var(--v2-blue); }
.v2-src--manual { background: var(--v2-warn); } .v2-src--ctot-int { background: var(--v2-mars); } .v2-src--ctot-ext { background: var(--v2-ok); } .v2-src--swap { background: var(--v2-crit); }
.v2-daynav { display: inline-flex; align-items: center; gap: 4px; height: var(--v2-h-ctl); padding: 0 4px; border-radius: var(--v2-r-pill); background: var(--v2-solid); border: 1px solid var(--v2-edge); }
.v2-daynav input[type=date] { border: 0; background: transparent; font: inherit; color: var(--v2-ink); outline: none; width: 128px; text-align: center; }
.v2-daynav button { height: 30px; min-width: 30px; padding: 0 10px; border: 0; border-radius: var(--v2-r-pill); background: transparent; color: var(--v2-ink2); font: 600 12.5px var(--v2-font); display: inline-grid; place-items: center; cursor: pointer; } .v2-daynav button:hover { background: var(--v2-cell); color: var(--v2-ink); }
.v2-table a { color: var(--v2-blue-text); text-decoration: none; font-weight: 600; } .v2-table a:hover { text-decoration: underline; }
.v2-table--flat tr:hover td { background: var(--v2-solid); } .v2-table .v2-mono { font-size: 12.5px; }
.v2-held { display: block; font-size: 11px; color: var(--v2-warn-text); font-weight: 600; }
.v2-runway { padding: 16px; } .v2-runway__id { display: flex; align-items: center; gap: 10px; } .v2-runway__id h2 { margin: 0; font-size: 22px; font-weight: 500; letter-spacing: -.01em; }
.v2-rwgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 14px; } @media (max-width: 1280px) { .v2-rwgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 900px) { .v2-rwgrid { grid-template-columns: 1fr; } }
.v2-seg--wide button { padding: 0 8px; font-size: 12.5px; gap: 4px; min-width: 0; }
