/* styles/tabs/update.css */
/* ══════════════════════════════════════════════════════════════════════
   PROJECT UPDATE & CONTROL — STYLES

   Every colour here comes from styles/core/00-00-tokens-reset.css. Nothing
   in this file introduces a palette:

     --bg  #FBF7F1  parchment ground     --tx  #2A2F36  body ink
     --bg2 #F3E9DA  warm secondary       --st  #0F1B2E  navy structure
     --mu  #4D6E91  steel blue           --am  #24B47E  green, positive
     --pk  #188D68  deep green           --rd  #8B3A1F  terracotta, negative
     --vi  #B8693E  ochre, attention     --sk/--sk2     hairlines
     --r 16px  --r2 12px  --r3 8px       'DM Sans'

   WBS colours are NEVER written here. They arrive as inline custom
   properties resolved from window.AppearancePalette.getLevelPalette() — the
   same call tabs/gantt/plugins/142-gantt-premium-layout-v13.js makes — so
   the Update module, the Gantt table and the generated Excel sheet cannot
   drift apart. Changing the palette in Settings repaints all three.

   Two additions the rest of the app does not have, both earned:
     · a navy STATUS RAIL, because every number on these screens is measured
       at the Data Date and it must never scroll off
     · a monospace face for activity IDs, dates and durations, because a
       1,200-row project-controls grid is read column-wise and proportional
       digits do not line up
   ══════════════════════════════════════════════════════════════════════ */

.upd {
  /* ── SEMANTIC COLOURS ARE LITERAL ON PURPOSE ──────────────────────────
     --am, --rd, --vi and --pk are the app's accent tokens, and several
     theme stylesheets REMAP them: styles/core/nexora-theme05.css sets
     --am to var(--nx-gold), 999-ai-planner-landing-theme.css sets it to
     var(--ap-honey), nexora-premium-redesign.css sets it to
     var(--nx-warning). So `var(--am)` is not reliably green.

     On a project-controls screen that is not a cosmetic problem. "Ahead of
     plan" rendering in the same hue as "attention", because someone chose a
     different theme preset, misreads the programme. So the four status
     colours are pinned to the values in styles/core/00-00-tokens-reset.css
     and used through these names everywhere in the module.

     WBS colours are the opposite case and are NOT pinned: they come from
     window.AppearancePalette so the planner's chosen palette reaches the
     grid, the Gantt and the Excel sheet alike. */
  --u-ok:   #24B47E;   /* ahead of / on plan  (00-00 --am) */
  --u-good: #188D68;   /* complete, earned    (00-00 --pk) */
  --u-warn: #B8693E;   /* attention, suggested (00-00 --vi) */
  --u-bad:  #8B3A1F;   /* behind, negative    (00-00 --rd) */
  --u-crit: #C6462B;   /* critical / negative float */
  --u-ai:   #6D5BA8;   /* machine-proposed */
  --u-dd:   #2F6BD8;   /* the Data Date, as tabs/gantt/print/tokens.js draws it */
  /* the two the inline timeline adds. A baseline bar has to sit BEHIND the
     current one without competing with it, and remaining work has to be
     legible against both green and terracotta, which --u-warn at bar height
     is not — it reads as the same ink as the baseline. */
  /* ── THE BAR PALETTE ─────────────────────────────────────────────────
     Four values, and the rule between them is the whole legend:

       --u-bl      the baseline. ONE fixed colour, never tinted by status,
                   criticality or the WBS palette. A reference that changes
                   colour is not a reference.
       --u-todo    an activity that still has float
       --u-crit    an activity on the critical path — which after an update
                   is the NEW critical path, not the baseline's
       --u-cmpl    an activity that has finished
       --u-sum     a WBS summary

     One colour per bar. Splitting a bar into "done" and "remaining" shades
     put two hues inside what reads as a single object, and with the overrun
     segment beside it a single in-progress row carried four coloured pieces.
     Progress is a figure, in the Plan % / Actual % / Var columns. */
  /* AMBER, and only ever amber. The baseline is the one thing on the
     timeline that does not move, so it is the one thing whose colour must
     not depend on anything: not status, not criticality, not the WBS
     palette, not whether the activity slipped. Slate was too close to the
     grid lines and to the app's own steel to read as a distinct object at
     5px tall across 257 rows. */
  --u-bl:     #D9A419;   /* amber — the baseline, and nothing else */
  --u-todo:   #2E9E72;   /* in progress or still to come, with float */
  /* COMPLETE IS BLUE. A finished activity is out of the argument: critical
     and float are questions about work still to come, and leaving a closed
     activity green keeps it in a conversation it has left. */
  --u-cmpl:   #1F5FA9;
  /* A WBS SUMMARY IS BLACK. A phase has no status of its own to be coloured
     by — it is not late, not critical, not complete, it is a container.
     Tinting it from the WBS palette made every band a different colour and
     put it in competition with the bars it summarises. */
  --u-sum:    #0B0F14;   /* near-black: a summary bar, and nothing else */
  --u-rem:    #C79157;   /* kept: the Review screen's "after" bar */
  --u-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --u-row: 26px;   /* was 30: the grid is the screen's job, so it fits more of it */
  font-size: 13px;
  color: var(--tx);
  padding-bottom: 40px;
}

/* ── A <button> NEEDS ITS OWN RESET HERE ───────────────────────────────
   The option rows, the stat tiles, the method cards and the export cards
   are all real buttons, so they are keyboard-reachable and announce
   themselves. That also means they inherit the app's global button styling
   — a border, a centred label, an inherited background — which turned the
   settings screen's radio list into a stack of boxed, centre-aligned
   blocks with the marks pushed into the corner. Every module button
   therefore states its own box explicitly. */
.upd button {
  font: inherit;
  color: inherit;
  text-align: left;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  letter-spacing: inherit;
  text-transform: none;
  min-width: 0;
  margin: 0;
}
.upd button:not(:disabled) { cursor: pointer; }

.upd .mono,
.upd .u-mono { font-family: var(--u-mono); font-variant-numeric: tabular-nums; }
.upd table { font-variant-numeric: tabular-nums; }

/* ── the status rail ──────────────────────────────────────────────────── */
.u-rail {
  position: sticky;
  /* styles/core/00-00-tokens-reset.css defines --app-sticky-top as the offset
     that parks an in-page sticky bar just under the app header band. The
     FALLBACK is 0, not a guessed header height: where the token is absent
     there is no header to clear (print, a standalone render), and a guessed
     84px would push the rail down over the page title it sits above. */
  top: var(--app-sticky-top, 0px);
  z-index: 30;
  background: linear-gradient(100deg, var(--st) 0%, #16263F 100%);
  color: #E7EEF6;
  border-radius: var(--r2);
  padding: 13px 18px;
  display: flex;
  align-items: center;
  gap: 0;
  flex-wrap: wrap;
  overflow: hidden;
  box-shadow: 0 8px 24px -14px rgba(15, 27, 46, .5);
  margin-bottom: 14px;
}
.u-rail::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(rgba(231, 238, 246, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(231, 238, 246, .05) 1px, transparent 1px);
  background-size: 26px 26px;
  -webkit-mask-image: linear-gradient(90deg, #000, transparent 65%);
  mask-image: linear-gradient(90deg, #000, transparent 65%);
}
.u-rail > * { position: relative; z-index: 1; }
.u-rail-id { font-size: 19px; font-weight: 800; letter-spacing: -.4px; margin-right: 22px; }
.u-rail-id span {
  display: block; font-size: 9px; font-weight: 700;
  letter-spacing: .12em; color: #8EACC9; margin-bottom: 1px;
}
.u-rail-f { padding: 0 18px; border-left: 1px solid rgba(142, 172, 201, .24); }
.u-rail-f .uk {
  font-size: 9px; font-weight: 700; letter-spacing: .1em; color: #8EACC9;
  display: flex; gap: 5px; align-items: baseline;
}
.u-rail-f .uk em { font-style: normal; opacity: .6; font-size: 8.5px; font-family: var(--u-mono); }
.u-rail-f .v { font-size: 14px; font-weight: 700; margin-top: 2px; font-family: var(--u-mono); }
.u-rail-f .v.big { font-size: 15.5px; color: #fff; }
.u-rail-f .v.none { color: #8EACC9; opacity: .7; }
.u-rail-end { margin-left: auto; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

.u-pill {
  font-size: 10px; font-weight: 800; letter-spacing: .09em;
  padding: 5px 12px; border-radius: 20px; border: 1px solid; white-space: nowrap;
}
.u-pill.ready { background: rgba(36, 180, 126, .16); border-color: rgba(36, 180, 126, .5); color: #5EE3B0; }
.u-pill.open { background: rgba(184, 105, 62, .18); border-color: rgba(184, 105, 62, .5); color: #E9B183; }
.u-pill.fin { background: rgba(142, 172, 201, .14); border-color: rgba(142, 172, 201, .42); color: #B8CDE0; }
.u-pill.hist { background: rgba(47, 107, 216, .18); border-color: rgba(47, 107, 216, .5); color: #9DBBF0; }

.u-rb {
  font-size: 11px; font-weight: 700; padding: 7px 14px; border-radius: var(--r3);
  background: var(--u-ok); color: #052D20; border: 0; cursor: pointer;
  transition: background .14s;
}
.u-rb:hover { background: #2ECB8F; }
.u-rb[disabled] { opacity: .45; cursor: not-allowed; }
.u-rb.ghost { background: transparent; border: 1px solid rgba(142, 172, 201, .45); color: #E7EEF6; }
.u-rb.ghost:hover { border-color: #E7EEF6; background: rgba(231, 238, 246, .08); }

/* ── sub-navigation ───────────────────────────────────────────────────── */
.u-nav {
  display: flex; gap: 5px; align-items: center; flex-wrap: wrap;
  padding: 0 0 14px;
}
.u-nav-b {
  font-size: 11.5px; font-weight: 600; padding: 6px 13px; border-radius: 20px;
  border: 1px solid var(--sk); color: var(--mu); background: var(--p);
  cursor: pointer; white-space: nowrap; transition: all .14s;
  display: inline-flex; gap: 6px; align-items: center;
}
.u-nav-b:hover { border-color: var(--mu); color: var(--st); }
.u-nav-b.on { background: var(--st); border-color: var(--st); color: var(--bg2); font-weight: 700; }
.u-nav-b .n {
  font-size: 9.5px; font-weight: 800; padding: 1px 5px; border-radius: 20px;
  background: rgba(15, 27, 46, .1);
}
.u-nav-b.on .n { background: rgba(231, 238, 246, .2); }
.u-nav-b.alert .n { background: rgba(198, 70, 43, .16); color: var(--u-crit); }

/* ── page furniture ───────────────────────────────────────────────────── */
.u-ph { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.u-ph h2 { font-size: 15.5px; font-weight: 800; letter-spacing: -.2px; color: var(--st); text-wrap: balance; }
.u-ph .sub { font-size: 11.5px; color: var(--mu); max-width: 70ch; line-height: 1.55; margin-top: 2px; }
.u-sp { flex: 1 1 auto; }

.u-card { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2); }
.u-card.lift { box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 8px 24px -14px rgba(15, 27, 46, .16); }
.u-ch {
  padding: 10px 14px; border-bottom: 1px solid var(--sk2);
  display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
}
.u-ch h3 {
  font-size: 11px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--mu);
}
.u-ch .p6 {
  font-size: 9px; font-weight: 700; letter-spacing: .06em; color: var(--mu);
  border: 1px solid var(--sk); padding: 1px 5px; border-radius: 3px;
  font-family: var(--u-mono); opacity: .8;
}
.u-cb { padding: 14px; }
.u-cf {
  padding: 11px 14px; border-top: 1px solid var(--sk);
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap; background: var(--p2);
  border-radius: 0 0 var(--r2) var(--r2);
}
.u-lbl {
  font-size: 9.5px; font-weight: 800; letter-spacing: .1em;
  text-transform: uppercase; color: var(--mu);
}
.u-note { font-size: 11px; color: var(--mu); line-height: 1.6; }
.u-note b { color: var(--st); font-weight: 700; }
.u-note code, .u-note .mono { font-family: var(--u-mono); font-size: 10.5px; }
.u-hr { height: 1px; background: var(--sk); border: 0; margin: 12px 0; }
.u-empty { padding: 44px 20px; text-align: center; }
.u-empty .t { font-size: 14px; font-weight: 800; color: var(--st); margin-bottom: 4px; }
.u-empty .s { font-size: 11.5px; color: var(--mu); max-width: 52ch; margin: 0 auto 14px; line-height: 1.6; }
.u-err {
  padding: 14px; border-radius: var(--r2); font-size: 12px;
  background: rgba(139, 58, 31, .07); border: 1px solid rgba(139, 58, 31, .28); color: var(--u-bad);
}

/* ── buttons ──────────────────────────────────────────────────────────── */
.u-b {
  font-size: 11.5px; font-weight: 600; padding: 6px 13px; border-radius: var(--r3);
  border: 1px solid var(--sk); color: var(--mu); background: var(--p);
  cursor: pointer; transition: all .14s; white-space: nowrap;
}
.u-b:hover { border-color: var(--mu); color: var(--st); }
.u-b[disabled] { opacity: .42; cursor: not-allowed; }
.u-b[disabled]:hover { border-color: var(--sk); color: var(--mu); }
.u-b.pri { background: var(--st); border-color: var(--st); color: var(--bg2); font-weight: 700; }
.u-b.pri:hover { background: var(--mu); border-color: var(--mu); color: #fff; }
.u-b.go { background: var(--u-ok); border-color: var(--u-ok); color: #052D20; font-weight: 700; }
.u-b.go:hover { background: #2ECB8F; border-color: #2ECB8F; }
.u-b.udanger { border-color: rgba(139, 58, 31, .4); color: var(--u-bad); }
.u-b.udanger:hover { background: var(--u-bad); border-color: var(--u-bad); color: var(--bg); }
.u-b.sm { font-size: 10.5px; padding: 4px 10px; }

/* ── THE PROGRAMME PANEL ──────────────────────────────────────────────────
   Baseline, this update, and the variance between them, side by side — with
   a project-level two-track bar underneath drawn on the same axis and in the
   same colours as every row in the grid, so the slip is a distance before it
   is a number. The four flat tiles this replaces each stated a figure with
   nothing beside it to read the figure against. */
.u-prog {
  border: 1px solid var(--sk); border-radius: var(--r2); background: var(--p);
  overflow: hidden; margin-bottom: 10px;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .04), 0 10px 26px -20px rgba(15, 27, 46, .3);
}
/* ── THE STATUS CARD ──────────────────────────────────────────────────────
   The dark rail above this screen already carries the update number, the
   Data Date, the behaviour and the baseline id. This card says none of them
   again — two headers stating the same six facts is what it replaced.

   It answers three questions in the order a planner asks them: is it OK,
   where should we be against where we are, and what moved. */
.u-sc2 {
  border: 1px solid var(--sk); border-left: 4px solid var(--vd, var(--mu));
  border-radius: var(--r2); background: var(--p); overflow: hidden;
  margin-bottom: 10px;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .04), 0 10px 26px -22px rgba(15, 27, 46, .3);
}
.u-sc2.uok   { --vd: var(--u-ok);   --vdw: rgba(36, 180, 126, .10); }
.u-sc2.uwarn { --vd: var(--u-warn); --vdw: rgba(184, 105, 62, .10); }
.u-sc2.bad  { --vd: var(--u-crit); --vdw: rgba(198, 70, 43, .10); }
.u-sc2.na   { --vd: var(--sk);     --vdw: transparent; }

/* ── WHERE WE ARE | AGAINST WHAT ──────────────────────────────────────────
   Three grid columns put the slack BETWEEN the verdict and the rings, so a
   wide screen showed a hand's width of nothing there while the date table
   was squeezed into a third of the row. Two groups now: the verdict and its
   rings answer "where are we" and travel together on the left; the dates
   answer "against what" and take the right, at the width they need. */
.u-sc2-top {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 400px);
  gap: 18px; align-items: center; padding: 7px 12px;
  background: linear-gradient(100deg, var(--vdw), transparent 58%);
}
/* both tracks must be allowed to shrink, or an `auto` column sized to its
   content pushes the other one onto a row of its own — which is how the
   date table ended up as a full-width band under the rings instead of
   beside them */
.u-sc2-now {
  display: flex; align-items: center; gap: 20px; min-width: 0;
  flex-wrap: nowrap; overflow: hidden;
}
.u-sc2 .vd em { max-width: 26ch; }
@media (max-width: 900px) {
  .u-sc2-top { grid-template-columns: 1fr; }
  .u-sc2-now { flex-wrap: wrap; }
}

/* the verdict */
.u-sc2 .vd { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.u-sc2 .vd .udot {
  width: 11px; height: 11px; border-radius: 50%; background: var(--vd); flex: none;
  margin-top: 5px; box-shadow: 0 0 0 4px color-mix(in srgb, var(--vd) 20%, transparent);
}
.u-sc2 .vd b {
  display: block; font-size: 18px; font-weight: 800; letter-spacing: -.45px;
  color: var(--st); line-height: 1.15;
}
.u-sc2 .vd em {
  display: block; font-style: normal; font-size: 10.5px; color: var(--mu);
  line-height: 1.5; margin-top: 2px; max-width: 32ch;
}
.u-sc2 .vd em b { display: inline; font-size: inherit; font-family: var(--u-mono); color: var(--vd); }

/* ── THE TWO RINGS ────────────────────────────────────────────────────────
   Planned to date against earned to date. The gap between the two rings IS
   the schedule variance — which is a thing you see, where "68.4% / 2.3%" is
   a thing you have to subtract. */
.u-sc2 .rings { display: flex; gap: 15px; align-items: center; }
.u-dn { display: flex; align-items: center; gap: 8px; }
.u-dn svg { width: 48px; height: 48px; flex: none; transform: rotate(-90deg); }
.u-dn svg .tr { fill: none; stroke: var(--sk2); stroke-width: 4.2; }
.u-dn svg .vl {
  fill: none; stroke: var(--mu); stroke-width: 4.2; stroke-linecap: round;
}
.u-dn.pl svg .vl   { stroke: var(--u-bl); }
.u-dn.uok svg .vl   { stroke: var(--u-ok); }
.u-dn.uwarn svg .vl { stroke: var(--u-warn); }
.u-dn.bad svg .vl  { stroke: var(--u-crit); }
.u-dn svg text {
  transform: rotate(90deg); transform-origin: 20px 20px;
  text-anchor: middle; font-family: var(--u-mono); fill: var(--st);
}
.u-dn svg .n { font-size: 11px; font-weight: 800; }
.u-dn svg .p { font-size: 5px; font-weight: 700; fill: var(--mu); }
.u-dn .lb b {
  display: block; font-size: 10px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--st);
}
.u-dn .lb em {
  display: block; font-style: normal; font-size: 9.5px; color: var(--mu);
  margin-top: 1px; white-space: nowrap;
}
.u-dn.uok .lb em   { color: var(--u-good); font-weight: 700; }
.u-dn.uwarn .lb em { color: var(--u-warn); font-weight: 700; }
.u-dn.bad .lb em  { color: var(--u-crit); font-weight: 700; }

/* ── BASELINE vs CURRENT, WITH THE VARIANCE STATED ───────────────────────── */
.u-cmp {
  border: 1px solid var(--sk); border-radius: var(--r3); overflow: hidden;
  background: var(--p); min-width: 0;
}
.u-cmp .hd, .u-cmp .rw {
  display: grid; grid-template-columns: 44px 1fr 1fr 60px; align-items: center;
}
.u-cmp .hd { background: var(--p2); border-bottom: 1px solid var(--sk); }
.u-cmp .hd span {
  font-size: 8px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
  color: var(--mu); padding: 3px 8px;
}
.u-cmp .hd span:nth-child(2) { color: #9A7412; }
.u-cmp .hd span:last-child { text-align: right; }
.u-cmp .rw { border-top: 1px solid var(--sk2); }
.u-cmp .rw:first-of-type { border-top: 0; }
.u-cmp .rw .uk {
  font-size: 8.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--mu); padding: 3px 8px;
}
.u-cmp .rw .ubl, .u-cmp .rw .cu {
  font-size: 11px; font-weight: 700; font-family: var(--u-mono); color: var(--st);
  padding: 3px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.u-cmp .rw .ubl { color: #9A7412; }
.u-cmp .rw em {
  display: block; font-style: normal; font-size: 8px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--mu);
  font-family: 'DM Sans', system-ui, sans-serif;
}
.u-cmp .vr {
  font-size: 12.5px; font-weight: 800; font-family: var(--u-mono);
  text-align: right; padding: 6px 9px 6px 0; color: var(--mu); white-space: nowrap;
}
.u-cmp .vr em { font-style: normal; font-size: 9px; opacity: .7; margin-left: 1px; }
.u-cmp .vr.uok  { color: var(--u-good); }
.u-cmp .vr.bad { color: var(--u-crit); }

/* ── the counts ──────────────────────────────────────────────────────── */
.u-vcs { background: var(--p); display: flex; border-top: 1px solid var(--sk); }
.u-vc {
  flex: 1 1 0; min-width: 0;
  border: 0; border-left: 1px solid var(--sk2); background: transparent;
  padding: 5px 4px 6px; font: inherit; color: inherit; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 0;
  position: relative; transition: background .14s;
}
.u-vc:first-child { border-left: 0; }
.u-vc:hover { background: var(--p2); }
.u-vc.on { background: var(--sk2); }
.u-vc.on::after {
  content: ''; position: absolute; left: 6px; right: 6px; bottom: 0; height: 2px;
  background: var(--st); border-radius: 2px 2px 0 0;
}
.u-vc b { font-size: 15px; font-weight: 800; font-family: var(--u-mono); color: var(--st); letter-spacing: -.4px; }
.u-vc span {
  font-size: 7.5px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--mu); white-space: nowrap;
}
.u-vc.uok b   { color: var(--u-good); }
.u-vc.uwarn b { color: var(--u-warn); }
.u-vc.bad b  { color: var(--u-crit); }
.u-vc.stg b  { color: var(--u-ai); }

@media (max-width: 1240px) {
  .u-sc2-top { grid-template-columns: 1fr auto; }
  .u-cmp { grid-column: 1 / -1; }
}

/* ── method strip ─────────────────────────────────────────────────────────
   Four tall cards became one line. The description each card carried is on
   the title attribute; what changes — how many rows that method has already
   produced — stayed visible, because that is the only part worth a repaint. */
.u-mstrip {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
  padding: 7px 9px; margin-bottom: 12px;
  border: 1px solid var(--sk); border-radius: var(--r2); background: var(--p);
}
.u-mstrip .lb {
  font-size: 8.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--mu); padding-right: 3px;
}
.u-mth {
  display: flex; align-items: center; gap: 7px; padding: 5px 11px 5px 6px;
  border: 1px solid var(--sk); border-radius: 8px; background: var(--p);
  font: inherit; color: inherit; cursor: pointer; transition: all .13s;
}
.u-mth:hover { border-color: var(--mu); background: var(--p2); }
.u-mth[disabled] { opacity: .45; cursor: not-allowed; }
.u-mth .ico { width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; flex: none; }
.u-mth .ico svg {
  width: 13px; height: 13px; stroke: currentColor; fill: none;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.u-mth .tx { display: flex; flex-direction: column; line-height: 1.25; text-align: left; }
.u-mth .tx b { font-size: 11.5px; font-weight: 700; color: var(--st); }
.u-mth .tx em { font-style: normal; font-size: 9px; color: var(--mu); }

/* ── one filter control, not ten chips ───────────────────────────────── */
.u-sel {
  font-size: 11px; font-weight: 600; padding: 4px 26px 4px 9px; border-radius: 5px;
  border: 1px solid var(--sk); background: var(--p); color: var(--st);
  font-family: inherit; cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234D6E91' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 8px center; background-size: 9px;
}
.u-sel:focus { outline: 2px solid var(--mu); outline-offset: -1px; }

/* ── the timeline key ─────────────────────────────────────────────────── */
.u-tlkey {
  display: flex; align-items: center; gap: 4px; font-size: 9px;
  font-weight: 700; color: var(--mu); letter-spacing: .02em;
}
.u-tlkey .uk { width: 12px; height: 6px; border-radius: 2px; margin-left: 7px; }
.u-tlkey .uk:first-child { margin-left: 0; }
.u-tlkey .uk.ubl { background: var(--u-bl); height: 5px; }
.u-tlkey .uk.cm { background: var(--u-cmpl); }
.u-tlkey .uk.rm { background: var(--u-todo); }
.u-tlkey .uk.cr { background: var(--u-crit); }
.u-tlkey .uk.sm { background: var(--u-sum); }
.u-tlkey .uk.dd { background: var(--u-dd); width: 2px; height: 11px; }

/* ── the inline timeline ──────────────────────────────────────────────────
   Baseline above, current below, the way P6 stacks them — because the whole
   question a status update answers is "where is this against the plan", and
   two bars on one line make that a matter of reading two dates rather than
   seeing one distance.

   Colour is not decoration here. Steel is always the plan, green is always
   what actually happened, amber is always work still to come, terracotta is
   always critical, and the dashed tail is always slip from the baseline
   finish. Nothing else uses those five. */
table.u-g th.u-tlh-c { padding: 0; min-width: 260px; }
table.u-g.tl { min-width: 1320px; }
.u-tlh {
  position: relative; display: flex; height: 100%; align-items: stretch;
  background: var(--p2);   /* opaque, for the same reason as th.bl above */
}
.u-tlh .mo {
  border-left: 1px solid var(--sk2); font-size: 8px; font-weight: 700;
  color: var(--mu); padding: 7px 0 6px 3px; overflow: hidden; white-space: nowrap;
  letter-spacing: .02em; text-transform: none;
}
.u-tlh .mo:first-child { border-left: 0; }
.u-tlh .mo em { font-style: normal; opacity: .55; margin-left: 2px; }
.u-tlh .dd { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--u-dd); }
.u-tlh .dd::after {
  content: ''; position: absolute; left: -3px; bottom: -1px;
  border-left: 4px solid transparent; border-right: 4px solid transparent;
  border-bottom: 5px solid var(--u-dd);
}

table.u-g td.u-tl { padding: 0 0 0 0; }
.u-tlb { position: relative; display: block; height: var(--u-row); width: 100%; }
/* with the history layer on, the row carries three bars instead of two, so it
   takes one more track rather than stacking them on top of each other */
table.u-g.hist { --u-row: 32px; }

/* ── ONE LINE, NOT ONE SEGMENT PER ROW ───────────────────────────────────
   The line is the CELL's, not the bar wrapper's. The wrapper is a fixed
   30px, so on any row whose cell grew taller than that the segment stopped
   short and the column came out dashed, one gap per row, down a 257-row
   grid. On the cell it is full height by construction, and the 1px bleed
   carries it across the row border into the next one. */
table.u-g td.u-tl { position: relative; }
table.u-g td.u-tl::after {
  content: ''; position: absolute; top: 0; bottom: -1px; left: var(--dd);
  width: 2px; margin-left: -1px; background: var(--u-dd); z-index: 5;
  pointer-events: none;
}
table.u-g td.u-tl:not([style*="--dd"])::after { display: none; }
/* the header card's own band still draws its line inline */
.u-pband .u-tlb .dd {
  position: absolute; top: 0; bottom: 0; width: 2px;
  background: var(--u-dd); z-index: 5;
}

/* ── THE BARS ─────────────────────────────────────────────────────────────
   Two per row, stacked, ONE COLOUR EACH:

       ███████████████     UPDATE     where the activity is now
       ▬▬▬▬▬▬▬▬▬▬          BASELINE   where the plan put it

   A row used to draw four coloured pieces — a dark green actual portion, a
   lighter green remaining portion, a red overrun segment and the amber
   baseline. Four objects and three hues on one 30px row, 257 rows down the
   page: green and red inside what read as a single bar, and no telling at a
   glance which of the four you were looking at.

   Progress lives in the Plan % / Actual % / Var columns, where it can be
   read as a figure. The slip is the distance between the two bars, which is
   what stacking them is for. */
/* A bar narrower than about 5px is a dot, and a two-day activity on a
   five-month window is 0.7% — four pixels. The floor belongs here, in
   pixels, not in the percentage the renderer computes: the renderer knows
   the dates, only the browser knows how wide the column ended up. */
.u-tlb .ub { position: absolute; border-radius: 2px; min-width: 5px; }

/* Both bars are 8px. The update bar was 9px against a 6px baseline, which
   reads as "this one matters more" — but they are a measurement and its
   reference, and the whole comparison depends on them being the same thing
   drawn twice. */
.u-tlb .ub.ucur { top: 5px; height: 8px; z-index: 4; background: var(--u-todo); }
.u-tlb .ub.ucur.ucrit { background: var(--u-crit); }
.u-tlb .ub.ucur.ucmpl { background: var(--u-cmpl); }

/* ── WORK DONE, AND WORK LEFT ─────────────────────────────────────────────
   P6 draws a started activity as two marks: the ACTUAL work up to the Data
   Date, and the REMAINING work from where it is scheduled to resume. Between
   them it draws nothing, because nothing happens there.

   BOTH ARE THE COLOUR THE BAR ALREADY WAS. A first version of this gave the
   remaining half a lighter fill and its own entry in the key, which is a
   second thing to learn in exchange for a distinction the row already makes:
   the mark on the left of the Data Date line is what has been done, the one
   on the right is what has not. The fix asked for was the gap. The gap is
   the fix. */

/* The baseline keeps its height — it is the reference, not a lesser bar —
   but takes a darker amber edge. At eight pixels tall and sometimes six
   wide, a flat fill has no shape; the edge is what still reads as "a bar"
   when the bar is nearly a square.

   THIS RULE WAS DELETED ONCE, BY ME, WHILE PUTTING THE UPDATE BAR'S COLOURS
   BACK. The renderer kept emitting <i class="ub ubl">, so nothing threw and
   no test noticed — the element simply had no height, no background and no
   top, and every amber bar on the chart went invisible. A bar that is drawn
   and cannot be seen is the one kind of breakage a code review cannot spot,
   so tools/test-update-real-programme.js now asserts this rule exists. */
.u-tlb .ub.ubl {
  top: 17px; height: 8px; z-index: 2;
  background: var(--u-bl); border-radius: 2px;
  box-shadow: inset 0 0 0 1px rgba(120, 82, 0, .55);
}

/* ── THE VARIANCE TIE ─────────────────────────────────────────────────────
   The lane between the two bars, spanning baseline finish to current finish.
   Red when the finish moved out, green when it pulled in. It is the only
   mark on the row that states the RELATIONSHIP between the pair rather than
   restating one of them, and it is what makes a slip legible when you are
   scanning 257 rows rather than measuring one. */
.u-tlb .utie {
  position: absolute; top: 14px; height: 3px; z-index: 3;
  border-radius: 2px; opacity: .95;
}
.u-tlb .utie.ulate  { background: var(--u-crit); }
.u-tlb .utie.uearly { background: var(--u-good, #2E9E72); }
.u-tlb .utie::after {
  content: ''; position: absolute; top: -2px; right: -1px;
  width: 0; height: 0; border-top: 3.5px solid transparent;
  border-bottom: 3.5px solid transparent; border-left: 4px solid currentColor;
}
.u-tlb .utie.ulate::after  { color: var(--u-crit); }
.u-tlb .utie.uearly::after { color: var(--u-good, #2E9E72); border-left: 0;
  border-right: 4px solid currentColor; right: auto; left: -1px; }

.u-tlb .ums {
  position: absolute; width: 10px; height: 10px; margin-left: -5px;
  transform: rotate(45deg); border-radius: 1px;
}
/* a rotated square's BOUNDING BOX is ~1.41x its side, so a 10px diamond
   occupies 14px of the row, not 10 — the two diamonds were touching at the
   corners while their declared boxes looked clear of each other */
.u-tlb .ums.ucur { top: 3px; z-index: 4; background: var(--u-todo); }
.u-tlb .ums.ucur.ucmpl { background: var(--u-cmpl); }
.u-tlb .ums.ucur.ucrit { background: var(--u-crit); }
.u-tlb .ums.ubl { top: 17px; width: 8px; height: 8px; margin-left: -4px; background: var(--u-bl); z-index: 2; }

/* ── A WBS SUMMARY BAR ────────────────────────────────────────────────────
   P6's shape: a solid black span with its ends turned down. Black because a
   phase has no status of its own — it is not late, not critical, not
   complete, it is a container. It had a translucent grey body and a border
   for a top edge, which read as a rectangle with a line on it rather than
   as a summary bar. Solid now, and the ends are the whole signature. */
.u-tlb .usum {
  position: absolute; top: 6px; height: 5px; z-index: 4;
  background: var(--u-sum); border-radius: 0;
}
.u-tlb .usum::before, .u-tlb .usum::after {
  content: ''; position: absolute; top: 0; width: 0; height: 0;
  border-top: 9px solid var(--u-sum);
}
.u-tlb .usum::before { left: 0; border-right: 5px solid transparent; }
.u-tlb .usum::after { right: 0; border-left: 5px solid transparent; }

/* ── a WBS band ───────────────────────────────────────────────────────────
   A phase row carries the WBS colour as its BACKGROUND, so a bar tinted from
   that same colour is invisible on it. The band therefore draws in the row's
   own foreground ink — light on a dark phase, dark on a pale one — which is
   the only pair guaranteed to have contrast whatever palette the planner
   chose in Appearance. */
/* A BAND DRAWS ONE BAR. The black summary is the phase; adding an amber
   baseline under it put two bars on a row that is a container, not an
   activity, and the pair read as "coloured" rather than as P6's plain black
   summary. The phase's baseline dates are in the BL Start / BL Finish
   columns on the same row, in figures. */
.u-pband .u-tlb .usum { top: 5px; height: 6px; }
/* the band's timeline strip is parchment like every other row's, so its
   grid and Data Date line read at full strength rather than the dimmed
   values they needed when the WBS colour ran behind them */
tr.u-wbs .u-tlb .dd { opacity: .75; }

/* ── a phase row's own figures ────────────────────────────────────────────
   Dates, counts and percentages inherit the band's ink for the same reason:
   --mu on a navy phase row is navy on navy. */
table.u-g tr.u-wbs td .u-dt,
table.u-g tr.u-wbs td .u-num,
table.u-g tr.u-wbs td .u-wcount,
table.u-g tr.u-wbs td.num,
table.u-g tr.u-wbs .u-pg .nm b,
table.u-g tr.u-wbs .u-pg .nm em,
table.u-g tr.u-wbs .u-pg .dl { color: var(--u-wbs-text, #fff); }
table.u-g tr.u-wbs td .u-dt { opacity: .9; }
table.u-g tr.u-wbs td .u-dt.none { opacity: .45; }
table.u-g tr.u-wbs .u-pg .nm em, table.u-g tr.u-wbs .u-pg .dl { opacity: .78; }
table.u-g tr.u-wbs .u-pg .tk { background: rgba(255, 255, 255, .22); }
table.u-g tr.u-wbs .u-pg .tk .pn { background: var(--u-wbs-text, #fff); opacity: .95; }

/* ── THE ACTUAL CELL ──────────────────────────────────────────────────────
   A number, and beside it the number it could be:

        29%   ⌐44%¬

   DASHED MEANS PROPOSED. It is the convention a schedule already uses for a
   bar that has not happened yet, nothing else in this grid is drawn that
   way, and it separates "what was reported" from "what the baseline says"
   without a second colour system. One tap stages it.

   It is permanent, not a hover popover: this screen is used on site, on a
   tablet, where hover does not exist. ⋯ opens the other figures. */
/* ── ONE FIGURE, AND A SUGGESTION BESIDE IT ───────────────────────────────
   This cell used to be 120px wide on all 257 rows to hold a figure, a
   suggestion chip, a ⋯ button and a popover of six more buttons - so the
   narrowest useful column on the grid was the widest one. The ⋯ and its
   popover are gone. What a planner does here is accept the suggestion, so
   the suggestion IS the control; anything else is a pencil away on the same
   row, in the editor built for it. */
.u-pg { position: relative; display: flex; align-items: center; gap: 6px; min-width: 0; }
/* The reported figure stays neutral ink. Colouring it by how far behind
   plan it is repeated, in the same row, exactly what the Var column next to
   it already says — two cells shouting the same thing, and the number you
   came to read made harder to read for it. */
.u-pg .nm {
  font-size: 11.5px; font-weight: 800; font-family: var(--u-mono);
  color: var(--st); min-width: 30px; text-align: right;
}

/* ── THE SUGGESTION STYLE ─────────────────────────────────────────────────
   Dashed border, the module's suggestion green, monospace: the same three
   signals wherever this application proposes a value rather than reporting
   one — here, and on a suggested date. The key above the grid names it, so
   it is a convention the reader has been told about rather than one they
   have to infer. Click applies it. */
.u-sgst,
.u-pg .sg {
  flex: none; font-size: 10.5px; font-weight: 800; font-family: var(--u-mono);
  padding: 1px 6px; border-radius: 5px; cursor: pointer; line-height: 1.3;
  border: 1.5px dashed rgba(24, 141, 104, .6); background: transparent;
  color: var(--u-good); white-space: nowrap;
}
.u-sgst:hover,
.u-pg .sg:hover { background: var(--u-ok); border-color: var(--u-ok); border-style: solid; color: #052D20; }
.u-pg .sg.ubad, .u-sgst.ubad { border-color: rgba(198, 70, 43, .55); color: var(--u-crit); }
.u-pg .sg.ubad:hover, .u-sgst.ubad:hover { background: var(--u-crit); border-color: var(--u-crit); color: #fff; }

/* a WBS is not statusable, so its cell carries no control at all */
.u-pg.rld .sg { display: none; }

.u-wcount { font-size: 10px; font-weight: 800; font-family: var(--u-mono); opacity: .85; }
.u-tag.dim { opacity: .55; margin-left: 6px; font-size: 8px; }
.u-note.dim { opacity: .6; font-size: 9.5px; font-style: italic; }
/* ── A STICKY HEADER CANNOT BE TRANSLUCENT ───────────────────────────────
   th.bl tinted the two baseline columns with a 9%-alpha wash. On a body cell
   that is a tint; on the SCROLLING HEADER it is a window — every row that
   passed underneath was drawn through it, so the header read
   "15-SEP-26 / 12-OCT-26" over its own labels. The tint is now a gradient
   layer composited over an opaque background, so the column still reads as
   the baseline pair and nothing shows through. */
table.u-g td.ubl {
  background-image: linear-gradient(rgba(142, 172, 201, .09), rgba(142, 172, 201, .09));
}
table.u-g th.ubl {
  color: #5F89AE;
  background-color: var(--p2);
  background-image: linear-gradient(rgba(142, 172, 201, .16), rgba(142, 172, 201, .16));
}
/* the band paints its colour on each TD, so the baseline columns' tint has
   to be REPLACED by the band colour here, not cleared — `transparent` let
   the page through and punched two pale holes in every phase row */
table.u-g tr.u-wbs td.ubl { background: var(--u-wbs-bg, var(--st)); }
.u-dt.ubl { color: #5F89AE; }
/* ── THE ACTUAL IS THE ONE THAT STANDS OUT ─────────────────────────────
   P6 shows one Start and one Finish: the actual once there is one, the
   forecast until then. "لون الأكشوال هو اللي يبقى مميز، الفوركاست يبقى
   لون أسود عادي" — so the recorded date carries the weight and the
   colour, and a forecast is plain text, the way an unremarkable figure
   should be. A finished activity keeps the green it always had. */
.u-dt.act { color: var(--u-cmpl); font-weight: 700; }
table.u-g tr.done td .u-dt.act { color: var(--u-good); font-weight: 700; }
.u-dt.fcst { font-weight: 400; }
table.u-g tr.u-wbs td { white-space: nowrap; }
table.u-g tr.u-wbs td .tw { display: inline-flex; align-items: center; }
.u-gscroll.cmp table.u-g { min-width: 820px; }

/* ── KPI tiles ────────────────────────────────────────────────────────── */
.u-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-bottom: 14px; }
/* four figures in a six-column grid read as two gaps and no row; the parse
   report has exactly four, so it asks for four columns */
.u-kpis.four { grid-template-columns: repeat(4, 1fr); }
.u-kpi {
  background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2);
  padding: 11px 12px; position: relative; overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 8px 24px -16px rgba(15, 27, 46, .16);
}
.u-kpi .uk { font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }
.u-kpi .uk em {
  font-style: normal; display: block; font-size: 8px; opacity: .65;
  margin-top: 1px; font-family: var(--u-mono); letter-spacing: .04em;
}
.u-kpi .v {
  font-size: 25px; font-weight: 800; letter-spacing: -1px; line-height: 1.1;
  margin-top: 5px; font-family: var(--u-mono); color: var(--st);
}
.u-kpi .v.sm { font-size: 18px; letter-spacing: -.4px; }
.u-kpi .d { font-size: 10px; font-weight: 700; margin-top: 2px; }
.u-kpi .spark { position: absolute; right: 0; bottom: 0; width: 62px; height: 26px; opacity: .5; }
.u-up { color: var(--u-ok); } .u-dn { color: var(--u-bad); } .u-flat { color: var(--mu); }
.u-kpi.na .v { color: var(--mu); opacity: .55; }

/* ── provenance badges ────────────────────────────────────────────────── */
.u-src {
  font-size: 8.5px; font-weight: 800; letter-spacing: .08em; padding: 1.5px 5px;
  border-radius: 3px; border: 1px solid; white-space: nowrap; text-transform: uppercase;
  display: inline-block; vertical-align: 1px;
}
.u-src.P6       { color: var(--mu); border-color: rgba(77, 110, 145, .42); background: rgba(77, 110, 145, .1); }
.u-src.EXCEL    { color: var(--u-good); border-color: rgba(24, 141, 104, .42); background: rgba(24, 141, 104, .1); }
.u-src.MANUAL   { color: var(--st); border-color: var(--sk); background: var(--sk2); }
.u-src.AI       { color: var(--u-ai); border-color: rgba(109, 91, 168, .45); background: rgba(109, 91, 168, .1); }
.u-src.AUTO     { color: var(--u-warn); border-color: rgba(184, 105, 62, .5); background: rgba(184, 105, 62, .09); border-style: dashed; }
.u-src.CALCULATED { color: var(--u-good); border-color: rgba(24, 141, 104, .35); background: rgba(24, 141, 104, .07); font-style: italic; }
.u-src.PREVIOUS { color: var(--mu); border-color: var(--sk); background: transparent; }
.u-src.BASELINE { color: var(--u-warn); border-color: rgba(184, 105, 62, .35); background: transparent; }
.u-legend { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; }
.u-legend .lg { font-size: 9.5px; color: var(--mu); font-weight: 700; letter-spacing: .05em; }

/* ── status chips ─────────────────────────────────────────────────────── */
.u-chip {
  font-size: 9px; font-weight: 800; letter-spacing: .06em; padding: 2px 6px;
  border-radius: 3px; white-space: nowrap; display: inline-block;
}
.u-chip.TK_NotStart { background: var(--sk2); color: var(--mu); }
.u-chip.TK_Active   { background: rgba(184, 105, 62, .16); color: var(--u-warn); }
.u-chip.TK_Complete { background: rgba(36, 180, 126, .17); color: var(--u-good); }
.u-chip.oos         { background: rgba(198, 70, 43, .15); color: var(--u-crit); }
.u-tag {
  font-size: 9px; font-weight: 700; letter-spacing: .04em; padding: 2px 6px;
  border-radius: 3px; background: var(--sk2); color: var(--mu);
  font-family: var(--u-mono); white-space: nowrap;
}

/* ── the activity grid ────────────────────────────────────────────────── */
.u-gwrap { position: relative; border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; background: var(--p); }
.u-gtools {
  display: flex; gap: 7px; align-items: center; padding: 8px 11px;
  border-bottom: 1px solid var(--sk); background: var(--p2); flex-wrap: wrap;
}
.u-f {
  font-size: 10.5px; font-weight: 600; padding: 4px 9px; border-radius: 5px;
  border: 1px solid var(--sk); color: var(--mu); background: var(--p);
  cursor: pointer; white-space: nowrap;
}
.u-f:hover { border-color: var(--mu); color: var(--st); }
.u-f.on { background: var(--st); border-color: var(--st); color: var(--bg2); }
.u-search {
  font-size: 11px; padding: 4px 9px; border-radius: 5px;
  border: 1px solid var(--sk); background: var(--p); color: var(--tx);
  width: 180px; font-family: inherit;
}
.u-search:focus { outline: 2px solid var(--mu); outline-offset: -1px; }
/* ── THE GRID GETS WHAT IS LEFT OF THE SCREEN ────────────────────────────
   62vh is a guess, and it was the wrong one in both directions: on a short
   screen it left the grid scrolling inside a page that also scrolled - two
   scrollbars for one list, and neither of them the one your thumb reaches
   for - and on a tall one it stopped short and left a band of empty page
   under the table.

   The height is measured now, not guessed: everything above the grid
   (the rail, the tabs, the card, the methods, the toolbar) reports its
   height into --u-above, and the grid takes the rest of the viewport. The
   page itself no longer scrolls on this screen, so there is one scroll
   region and it is the table. */
.u-gscroll {
  overflow: auto;
  height: calc(var(--u-vh, 100vh) - var(--u-above, 340px));
  min-height: 260px;
  overscroll-behavior: contain;
}

/* SEPARATE, NOT COLLAPSE. A collapsed border belongs to the table's grid,
   not to its cell, so with the Gantt frozen on the right the rules of the
   columns scrolling UNDER it were painted on top of it — "الجانت شفاف،
   حركة الـ lines باينة من تحته". Separate borders belong to their cells and
   go under a frozen pane with them. Every cell draws only its right and
   bottom rule, so nothing doubles. */
table.u-g { width: 100%; border-collapse: separate; border-spacing: 0; min-width: 1060px; }
table.u-g th {
  font-size: 8px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase;
  color: var(--mu); text-align: left; padding: 5px 8px; background: var(--p2);
  border-bottom: 1px solid var(--sk); position: sticky; top: 0;
  /* above EVERY body cell, the raised popover row included — a sticky
     header that something can paint over is not a header */
  z-index: 8; white-space: nowrap;
}
table.u-g th em {
  font-style: normal; display: block; font-size: 7.5px; opacity: .6;
  font-weight: 700; font-family: var(--u-mono);
}
table.u-g th.num, table.u-g td.num { text-align: right; }
/* ── VISIBLE COLUMN RULES ────────────────────────────────────────────────
   A project-controls grid is read down a column as often as across a row,
   and with only a row border the eye had nothing to follow. Every cell
   carries a hairline; the boundary between the table and the Gantt carries
   a heavy one, because they are two different things sharing a scroll. */
/* ── THE SEPARATORS ARE INK, NOT MIST ────────────────────────────────────
   --sk2 is rgba(42,47,54,.11): eleven percent of a dark grey on parchment,
   which is a suggestion of a line rather than a line. Against the pale
   column fills it disappeared entirely and the grid read as one field of
   figures with nothing dividing it. These are ruled lines now, dark enough
   to follow a column down 257 rows with your eye. */
table.u-g { --u-rule: rgba(15, 27, 46, .30); --u-rule-lite: rgba(15, 27, 46, .14); }
table.u-g td {
  padding: 3px 8px; border-bottom: 1px solid var(--u-rule-lite);
  border-right: 1px solid var(--u-rule);
  font-size: 11px; white-space: nowrap; vertical-align: middle; height: var(--u-row);
}
table.u-g th { border-right: 1px solid var(--u-rule); }
table.u-g th:last-child, table.u-g td:last-child { border-right: 0; }
/* ── THE GANTT IS A CHART, NOT A COLUMN ──────────────────────────────────
   It was being drawn as one more cell in the table: same paper, same rules,
   same treatment as Act Start or TF. It is a different kind of object — a
   plotted surface with an axis — and it has to look like one or a reader
   keeps trying to read it as a column of values.

   So it gets its own paper, its own gridlines (from the real month
   boundaries, set once on the table as --u-grid), and a true edge: a heavy
   rule plus a shadow falling INTO the chart, the way a frozen pane divides
   a sheet. The table scrolls under that edge; the chart lives past it. */
.upd { --u-chart: #FFFDF9; --u-gridline: rgba(15, 27, 46, .17);
       --u-rowline: rgba(15, 27, 46, .10); }

table.u-g th.u-tlh-c,
table.u-g td.u-tl,
table.u-g thead tr.grp th.g.tl {
  border-left: 3px solid var(--st);
  box-shadow: inset 9px 0 11px -11px rgba(15, 27, 46, .75);
}
table.u-g td.u-tl {
  background-color: var(--u-chart);
  background-image: var(--u-grid, none);
  background-repeat: no-repeat;
  border-right: 0;
  /* ── A BAR HAS TO BELONG TO A ROW ─────────────────────────────────────
     The chart inherited the table's row rule, --sk2, which is a hairline
     tuned for parchment and vanishes on the chart's near-white paper. So
     257 rows of bars floated in one undivided field: a pair of bars had no
     boundary, and the amber below a green belonged to that row or to the
     next one with equal plausibility. The chart draws its own row rule, in
     its own ink, at the same 1px as the table's so the two sides of the
     divider stay in register. */
  border-bottom-color: var(--u-rule-lite);
}
table.u-g th.u-tlh-c { padding: 0; min-width: 300px; background-color: var(--u-chart); }
table.u-g thead tr.grp th.g.tl { background-color: var(--u-chart); }
.u-tlh { background-color: var(--u-chart); background-image: var(--u-grid, none); }

/* ── A PHASE BAND CROSSES THE CHART AS A TINT ────────────────────────────
   The WBS colour ran into the chart at full strength, which turned every
   band row into a solid block of colour with a black bar somewhere in it —
   and on a deep WBS that is a stack of solid blocks. In the Gantt tab the
   same colour crosses the chart as a wash. Same here: the band's hue at a
   fraction of its strength over the chart's own paper, so the row still
   reads as that phase and the bars, the gridlines and the Data Date all
   stay legible through it. */
/* `tr.u-wbs td { background: … }` is the SHORTHAND, so it resets
   background-image to none — which silently stripped the chart's gridlines
   from every band row while leaving them on the activity rows. Both halves
   are restated here. */
table.u-g tr.u-wbs td.u-tl {
  background-color: color-mix(in srgb, var(--u-wbs-bg, var(--st)) 13%, var(--u-chart));
  background-image: var(--u-grid, none);
  background-repeat: no-repeat;
}
table.u-g tr.u-wbs:hover td.u-tl {
  background-color: color-mix(in srgb, var(--u-wbs-bg, var(--st)) 19%, var(--u-chart));
  filter: none;
}
/* same trap on the two rows that repaint a whole row */
table.u-g tbody tr:hover td.u-tl,
table.u-g tr.sel td.u-tl {
  background-image: var(--u-grid, none) !important;
  background-repeat: no-repeat;
}
table.u-g tbody tr:hover td.u-tl { background-color: var(--u-chart); }
/* the band's own ink is no longer behind the bar, so its label column keeps
   the full colour and only the chart side is washed */
table.u-g tr.u-wbs td.u-tl .u-tlb { mix-blend-mode: normal; }
table.u-g tbody tr:hover td { background: var(--sk2); }
table.u-g tr.u-wbs td {
  font-weight: 800; font-size: 10.5px; letter-spacing: .05em; text-transform: uppercase;
  padding: 6px 8px; color: var(--u-wbs-text, #fff); background: var(--u-wbs-bg, var(--st));
  cursor: pointer;
}
table.u-g tr.u-wbs:hover td { background: var(--u-wbs-bg, var(--st)); filter: brightness(1.08); }
table.u-g tr.u-wbs td .c { opacity: .75; font-weight: 700; margin-left: 8px; }
table.u-g tr.sel td { background: rgba(77, 110, 145, .1) !important; }

/* ── THE FROZEN IDENTITY COLUMN ──────────────────────────────────────────
   The grid is wider than a tablet. Without this the id and the name scroll
   away and every row becomes an anonymous set of dates — which is what the
   whole table is for. It stays, and it carries the divider that says the
   rest of the row scrolls under it. */
table.u-g th.stk, table.u-g td.stk {
  position: sticky; left: 0; z-index: 3;
  width: var(--u-namew); min-width: var(--u-namew); max-width: var(--u-namew);
  /* a long WBS name ran straight out of the frozen cell and printed itself
     over the next column's dates */
  overflow: hidden;
}
table.u-g tr.u-wbs td.stk .tw {
  display: block; max-width: 100%; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
}
table.u-g th.stk { z-index: 10; background-color: var(--p2); }
table.u-g td.stk { background-color: var(--p); }
table.u-g th.stk::after, table.u-g td.stk::after {
  content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 1px;
  background: var(--sk);
}
table.u-g td.stk { box-shadow: 6px 0 10px -10px rgba(15, 27, 46, .55); }
/* ── A FROZEN COLUMN HAS TO BE OPAQUE ──────────────────────────────────────
   "You froze the name column, but when I scroll sideways the other columns
   come underneath it — there is a transparency and they show through."

   They did. The cell's own background was var(--p), which is solid, but the
   hover state replaced it with var(--sk2) — rgba(42, 47, 54, .11), a TINT,
   eleven per cent of a colour and eighty-nine per cent of whatever is behind
   it. What is behind a sticky cell is the rest of the row, sliding under it.
   The same hazard sits on the WBS band rows, whose colour comes from the
   appearance palette and is not this file's to vouch for.

   So the tint stops being the background and becomes a layer ON one. The
   background-color stays solid underneath in every state; background-image
   paints the tint over it. Identical to look at, and nothing can show
   through a colour that has no alpha left to see through. */
table.u-g tbody tr:hover td.stk {
  background-color: var(--p);
  background-image: linear-gradient(var(--sk2), var(--sk2));
}
/* the selected row sets `background:` with !important two rules up, and a
   shorthand clears the image with it — so the frozen cell has to answer in
   the same terms. Higher specificity, same weight, same look. */
table.u-g tr.sel td.stk {
  background-color: var(--p) !important;
  background-image: linear-gradient(rgba(77, 110, 145, .1), rgba(77, 110, 145, .1)) !important;
}
table.u-g tr.u-wbs td.stk {
  background-color: var(--p);
  background-image: linear-gradient(var(--u-wbs-bg, var(--st)), var(--u-wbs-bg, var(--st)));
}
table.u-g tbody tr.u-wbs:hover td.stk {
  background-image: linear-gradient(var(--u-wbs-bg, var(--st)), var(--u-wbs-bg, var(--st)));
}

/* id and name on one line, the name taking whatever is left */
.u-idn { display: flex; align-items: center; gap: 6px; min-width: 0; }
.u-idn .u-aid { flex: none; }
.u-idn .u-name {
  flex: 1 1 auto; min-width: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; max-width: none;
}
.u-idn .u-src, .u-idn .u-tag { flex: none; }
tr.u-wbs .u-idn .u-name { color: var(--u-wbs-text, #fff); }
table.u-g tr.derived td { opacity: .6; font-style: italic; }
table.u-g tr.ucrit td.num.tf { color: var(--u-crit); font-weight: 700; }

.u-aid { font-family: var(--u-mono); font-size: 10.5px; font-weight: 600; color: var(--mu); }
.u-dt { font-family: var(--u-mono); font-size: 10.5px; }
.u-dt.none { color: var(--mu); opacity: .45; }
.u-dt.act { color: var(--u-good); font-weight: 600; }
.u-num { font-family: var(--u-mono); font-size: 11px; }
.u-name {
  max-width: 260px; overflow: hidden; text-overflow: ellipsis;
  display: block; white-space: nowrap;
}
.u-wtick {
  display: inline-block; width: 3px; height: 11px; border-radius: 2px;
  margin-right: 6px; vertical-align: -1px;
}

/* ── progress bars ────────────────────────────────────────────────────── */
.u-bar2 { display: flex; flex-direction: column; gap: 3px; width: 154px; min-width: 0; }
.u-bar2 .r { display: flex; align-items: center; gap: 6px; }
.u-bar2 .cap { font-size: 8px; font-weight: 800; letter-spacing: .07em; color: var(--mu); width: 42px; flex: none; }
.u-bar2 .tr {
  flex: 1; min-width: 34px; height: 7px; border-radius: 4px;
  background: var(--sk2); overflow: hidden;
}
.u-bar2 .tr i { display: block; height: 100%; border-radius: 4px; background: var(--mu); }
.u-bar2 .tr.exp { background: transparent; border: 1px solid rgba(77, 110, 145, .55); }
.u-bar2 .tr.exp i { background: rgba(77, 110, 145, .3); }
.u-bar2 .n {
  font-size: 9.5px; font-weight: 800; width: 32px; text-align: right;
  flex: none; font-family: var(--u-mono);
}
.u-pbar {
  width: 62px; height: 5px; border-radius: 3px; background: var(--sk2);
  overflow: hidden; display: inline-block; vertical-align: middle;
}
.u-pbar i { display: block; height: 100%; border-radius: 3px; background: var(--mu); }

/* ── review rows ──────────────────────────────────────────────────────── */
.u-rev { border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; background: var(--p); }
.u-rev-r {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px;
  padding: 10px 13px; border-bottom: 1px solid var(--sk2); align-items: center;
}
.u-rev-r:last-child { border-bottom: 0; }
.u-rev-r.ACCEPTED, .u-rev-r.EDITED { background: rgba(36, 180, 126, .055); }
.u-rev-r.REJECTED { background: rgba(139, 58, 31, .05); opacity: .62; }
.u-rev-t { display: flex; gap: 9px; align-items: baseline; flex-wrap: wrap; }
.u-rev-t b { font-size: 12px; font-weight: 700; color: var(--st); }
.u-rev-f { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 5px; }
.u-fld { font-size: 10.5px; }
.u-fld .fk {
  font-size: 8.5px; font-weight: 800; letter-spacing: .07em;
  text-transform: uppercase; color: var(--mu); display: block;
}
.u-fld .fv { font-family: var(--u-mono); font-size: 11px; font-weight: 600; }
.u-fld .fv s { color: var(--mu); opacity: .6; text-decoration-thickness: 1px; }
.u-fld .fv b { color: var(--u-good); }
.u-acts { display: flex; gap: 5px; flex-wrap: wrap; }
.u-a {
  font-size: 10px; font-weight: 700; padding: 4px 10px; border-radius: 5px;
  border: 1px solid var(--sk); background: var(--p); color: var(--mu); cursor: pointer;
}
.u-a.uok { border-color: rgba(36, 180, 126, .45); color: var(--u-good); }
.u-a.uok:hover, .u-a.uok.on { background: var(--u-ok); border-color: var(--u-ok); color: #052D20; }
.u-a.ed:hover { background: var(--sk2); border-color: var(--mu); color: var(--st); }
.u-a.no { border-color: rgba(139, 58, 31, .4); color: var(--u-bad); }
.u-a.no:hover, .u-a.no.on { background: var(--u-bad); border-color: var(--u-bad); color: var(--bg); }

/* ── confidence meter — never hidden ─────────────────────────────────── */
.u-conf { display: inline-flex; gap: 6px; align-items: center; }
.u-conf .segs { display: flex; gap: 2px; }
.u-conf .sg { width: 11px; height: 5px; border-radius: 2px; background: var(--sk2); }
.u-conf .sg.f { background: var(--u-ai); }
.u-conf .sg.f.lo { background: var(--u-warn); }
.u-conf .t { font-size: 9px; font-weight: 800; letter-spacing: .05em; color: var(--mu); font-family: var(--u-mono); }
.u-conf.low .t { color: var(--u-bad); }

/* ── validation list ──────────────────────────────────────────────────── */
.u-val { display: flex; flex-direction: column; }
.u-val-r {
  display: flex; gap: 10px; align-items: center; padding: 8px 13px;
  border-bottom: 1px solid var(--sk2); font-size: 11.5px;
}
.u-val-r:last-child { border-bottom: 0; }
.u-m { width: 17px; height: 17px; border-radius: 5px; display: grid; place-items: center;
  font-size: 10px; font-weight: 800; flex: none; }
.u-m.pass { background: rgba(36, 180, 126, .16); color: var(--u-good); }
.u-m.uwarning { background: rgba(184, 105, 62, .18); color: var(--u-warn); }
.u-m.error { background: rgba(139, 58, 31, .16); color: var(--u-bad); }
/* a note is neither a pass nor a problem: the tracking-sheet parse report
   uses it for things the planner should know before approving — a stale
   period, a changed baseline — which are not failures of the file */
.u-m.info { background: rgba(47, 107, 216, .14); color: var(--u-dd); font-style: italic; }
.u-code {
  font-family: var(--u-mono); font-size: 9.5px; color: var(--mu);
  background: var(--sk2); padding: 1px 5px; border-radius: 3px; flex: none;
}
.u-val-r .lb { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.u-val-r .n { margin-left: auto; font-family: var(--u-mono); font-weight: 700; font-size: 11.5px; flex: none; }
.u-val-r .drill { font-size: 10px; font-weight: 700; color: var(--mu); cursor: pointer; flex: none; }
.u-val-r .drill:hover { color: var(--st); text-decoration: underline; }

/* ── conflict block ───────────────────────────────────────────────────── */
.u-cf {
  border: 1px solid rgba(184, 105, 62, .4); border-radius: var(--r3);
  background: rgba(184, 105, 62, .06); padding: 10px 12px;
  display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-top: 8px;
}
.u-cf .t { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; color: var(--u-warn); }
.u-cf .o { font-size: 10px; }
.u-cf .o .uk { font-size: 8.5px; font-weight: 800; letter-spacing: .06em; color: var(--mu); display: block; }
.u-cf .o .v { font-family: var(--u-mono); font-size: 13px; font-weight: 700; }
.u-cf.done { border-color: rgba(36, 180, 126, .38); background: rgba(36, 180, 126, .05); }
.u-cf.done .t { color: var(--u-good); }

/* ── timeline ─────────────────────────────────────────────────────────── */
.u-tl { display: flex; flex-direction: column; }
.u-tl-r { display: grid; grid-template-columns: 108px 26px minmax(0, 1fr) auto; gap: 12px; align-items: start; }
.u-tl-when { text-align: right; padding-top: 13px; }
.u-tl-when .d { font-family: var(--u-mono); font-size: 11.5px; font-weight: 700; color: var(--st); }
.u-tl-when .t { font-size: 9px; color: var(--mu); font-weight: 600; }
.u-tl-ax { position: relative; display: flex; justify-content: center; }
.u-tl-ax::before { content: ''; position: absolute; top: 0; bottom: 0; width: 1.5px; background: var(--sk); }
.u-tl-r:first-child .u-tl-ax::before { top: 14px; }
.u-tl-r:last-child .u-tl-ax::before { bottom: calc(100% - 14px); }
.u-tl-dot {
  width: 11px; height: 11px; border-radius: 50%; background: var(--p);
  border: 2.5px solid var(--mu); margin-top: 14px; z-index: 1; flex: none;
}
.u-tl-dot.ubl { border-color: var(--u-warn); background: var(--u-warn); }
.u-tl-dot.ucur { border-color: var(--u-ok); background: var(--u-ok); box-shadow: 0 0 0 4px rgba(36, 180, 126, .18); }
.u-tl-dot.orig { border-color: var(--sk); }
.u-tl-card { border: 1px solid var(--sk); border-radius: var(--r2); background: var(--p); padding: 11px 13px; margin: 6px 0; }
.u-tl-card.ucur { border-color: rgba(36, 180, 126, .45);
  box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 8px 24px -14px rgba(15, 27, 46, .18); }
.u-tl-card.ubl { border-color: rgba(184, 105, 62, .4); }
.u-tl-card.orig { background: var(--p2); }
.u-tl-h { display: flex; gap: 9px; align-items: baseline; flex-wrap: wrap; }
.u-tl-h b { font-size: 13px; font-weight: 800; color: var(--st); }
.u-tl-meta { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 7px; }
.u-tl-meta .m { font-size: 10px; }
.u-tl-meta .m .uk { font-size: 8.5px; font-weight: 800; letter-spacing: .06em; color: var(--mu); display: block; }
.u-tl-meta .m .v { font-family: var(--u-mono); font-weight: 700; font-size: 11.5px; color: var(--st); }
.u-tl-acts { display: flex; gap: 5px; padding-top: 20px; flex-wrap: wrap; }

/* ── layout grids ─────────────────────────────────────────────────────── */
.u-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.u-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; align-items: start; }
.u-wide { display: grid; grid-template-columns: 1.55fr 1fr; gap: 14px; align-items: start; }
.u-col { display: flex; flex-direction: column; gap: 14px; }
.u-rt { display: grid; grid-template-columns: 1fr; }
.u-rt.two { grid-template-columns: 1fr 1fr; gap: 0 22px; }
.u-rt-r {
  display: flex; gap: 9px; align-items: baseline; padding: 4.5px 0;
  border-bottom: 1px solid var(--sk2); font-size: 11px;
}
.u-rt-r:last-child { border-bottom: 0; }
.u-rt-r .uk { color: var(--mu); font-weight: 600; min-width: 0; }
.u-rt-r .v { margin-left: auto; font-family: var(--u-mono); font-weight: 700; color: var(--st); white-space: nowrap; }
.u-ok { color: var(--u-good); font-weight: 800; }

/* ── DESCRIPTIVE ROWS ──────────────────────────────────────────────────
   .u-rt is a key/value strip: its value is monospace, right-aligned and
   nowrap, which is right for "SPI 0.94" and wrong for a sentence. The
   Tracking Sheet has to explain what the sheet contains in prose, so this
   is the same row rhythm with a value that WRAPS and reads as text.
   ─────────────────────────────────────────────────────────────────────── */
.u-dlist { display: grid; grid-template-columns: 1fr; }
.u-dlist-r {
  display: grid; grid-template-columns: 148px minmax(0, 1fr); gap: 12px;
  padding: 7px 0; border-bottom: 1px solid var(--sk2); align-items: baseline;
}
.u-dlist-r:last-child { border-bottom: 0; }
.u-dlist-r > .uk {
  font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--mu); line-height: 1.5;
}
.u-dlist-r > .uk em {
  display: block; font-style: normal; font-weight: 600; letter-spacing: .02em;
  text-transform: none; font-size: 9px; color: var(--u-good);
}
.u-dlist-r > .v { font-size: 11px; color: var(--tx); line-height: 1.6; min-width: 0; }
/* a column name is a thing, not a word in a sentence: six of them in a row
   read as one string unless each is a chip */
.u-dlist-r > .v code, .u-dlist-r > .v .mono {
  font-family: var(--u-mono); font-size: 9.5px; font-weight: 600;
  background: var(--sk2); color: var(--st);
  padding: 1.5px 6px; border-radius: 4px;
  display: inline-block; margin: 0 3px 3px 0; white-space: nowrap;
}
@media (max-width: 760px) {
  .u-dlist-r { grid-template-columns: 1fr; gap: 2px; }
}

/* ── charts ───────────────────────────────────────────────────────────── */
.u-svg { width: 100%; height: auto; display: block; }
.u-svg text { font-family: 'DM Sans', system-ui, sans-serif; }
.u-svg .mono { font-family: var(--u-mono); }

/* ── drawer / sheet ───────────────────────────────────────────────────── */
.u-dock { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 0;
  border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; }
.u-dock > .u-gwrap { border: 0; border-radius: 0; border-right: 1px solid var(--sk); }
.u-drawer { background: var(--p); display: flex; flex-direction: column; min-width: 0; max-height: 72vh; }
.u-dr-h { padding: 12px 14px; border-bottom: 1px solid var(--sk); background: var(--p2); }
.u-dr-h .id { font-family: var(--u-mono); font-size: 10.5px; font-weight: 700; color: var(--mu); }
.u-dr-h .nm { font-size: 14px; font-weight: 800; color: var(--st); letter-spacing: -.2px; margin-top: 1px; text-wrap: balance; }
.u-dr-h .wb { font-size: 10px; color: var(--mu); margin-top: 3px; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.u-dr-b { padding: 13px 14px; display: flex; flex-direction: column; gap: 13px; overflow-y: auto; flex: 1; }
.u-kv { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 12px; }
.u-kv .i { min-width: 0; }
.u-kv .i .uk {
  font-size: 8.5px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase;
  color: var(--mu); display: flex; gap: 4px; align-items: baseline;
}
.u-kv .i .uk em { font-style: normal; opacity: .55; font-size: 7.5px; font-family: var(--u-mono); }
.u-kv .i .v { font-family: var(--u-mono); font-size: 12px; font-weight: 600; margin-top: 1px; }
.u-kv .i .v.em { color: var(--st); font-weight: 700; }
.u-kv .i .v.none { color: var(--mu); opacity: .5; }
.u-kv .i .v.bad { color: var(--u-bad); }
.u-kv .i .v.good { color: var(--u-good); }

.u-qa { border: 1px solid var(--sk); border-radius: var(--r3); overflow: hidden; }
.u-qa.sug { border-color: rgba(184, 105, 62, .42); border-style: dashed; }
.u-qa-h {
  padding: 8px 11px; background: var(--p2); display: flex; gap: 8px; align-items: center;
  font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu);
}
.u-qa.sug .u-qa-h { background: rgba(184, 105, 62, .07); color: var(--u-warn); }
.u-qa-b { padding: 11px; }
.u-qa-v { font-family: var(--u-mono); font-size: 17px; font-weight: 700; color: var(--st); }
.u-qa-why { font-size: 10px; color: var(--mu); line-height: 1.55; margin-top: 4px; }
.u-qa-f { display: flex; gap: 6px; padding: 0 11px 11px; flex-wrap: wrap; }

/* ── modal ────────────────────────────────────────────────────────────── */
.u-ov {
  position: fixed; inset: 0; z-index: 4000; background: rgba(15, 27, 46, .42);
  display: flex; align-items: flex-start; justify-content: center;
  padding: 5vh 18px; overflow-y: auto; -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.u-ov[hidden] { display: none !important; }
.u-mod {
  background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2);
  box-shadow: 0 24px 60px -20px rgba(15, 27, 46, .5);
  width: 100%; max-width: 1040px; overflow: hidden;
}
.u-mod.narrow { max-width: 620px; }
.u-mod-h {
  padding: 12px 15px; border-bottom: 1px solid var(--sk); display: flex;
  align-items: center; gap: 10px; background: var(--p2);
}
.u-mod-h .tt { font-size: 12.5px; font-weight: 800; letter-spacing: .03em; color: var(--st); }
.u-mod-h .tt span {
  display: block; font-size: 9px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: var(--mu); margin-bottom: 1px;
}
.u-mod-h .x {
  margin-left: auto; font-size: 15px; color: var(--mu); line-height: 1;
  background: none; border: 0; cursor: pointer; padding: 4px 6px;
}
.u-mod-h .x:hover { color: var(--st); }
.u-mod.ai .u-mod-h { background: linear-gradient(100deg, rgba(109, 91, 168, .13), var(--p2)); }
.u-mod-b { padding: 15px; max-height: 66vh; overflow-y: auto; }
.u-mod-f {
  padding: 11px 15px; border-top: 1px solid var(--sk); display: flex; gap: 8px;
  align-items: center; background: var(--p2); flex-wrap: wrap;
}

/* ── options / inputs ─────────────────────────────────────────────────── */
.u-opt { display: flex; gap: 9px; align-items: flex-start; padding: 7px 0;
  border-bottom: 1px solid var(--sk2); width: 100%; }
.u-opt:last-child { border-bottom: 0; }
.u-opt.flat { border-bottom: 0; }
.u-box, .u-rad {
  width: 15px; height: 15px; flex: none; margin-top: 1px; display: grid; place-items: center;
  border: 1.5px solid var(--sk); font-size: 9px; font-weight: 800; color: transparent;
}
.u-box { border-radius: 4px; }
.u-rad { border-radius: 50%; }
.u-box.on { background: var(--u-ok); border-color: var(--u-ok); color: #052D20; }
.u-rad.on { border-color: var(--mu); border-width: 4.5px; }
.u-opt .ot { font-size: 11.5px; font-weight: 600; color: var(--tx); }
.u-opt .ot span { display: block; font-size: 9.5px; color: var(--mu); font-weight: 500; margin-top: 1px; line-height: 1.55; }
.u-opt .ot .p6t { font-family: var(--u-mono); font-size: 9px; color: var(--mu); font-weight: 600; }
.u-opt.dim { opacity: .5; cursor: not-allowed; }

.u-in {
  font-size: 12px; padding: 6px 10px; border-radius: var(--r3);
  border: 1px solid var(--sk); background: var(--p); color: var(--tx);
  font-family: inherit; width: 100%;
}
.u-in.mono { font-family: var(--u-mono); }
.u-in:focus { outline: 2px solid var(--mu); outline-offset: -1px; }
.u-ta {
  width: 100%; border: 1px solid var(--sk); border-radius: var(--r3); padding: 11px 12px;
  font: inherit; font-size: 12px; background: var(--p2); color: var(--tx);
  resize: vertical; line-height: 1.6; min-height: 96px;
}
.u-ta:focus { outline: 2px solid var(--u-ai); outline-offset: -1px; background: var(--p); }
.u-ins { display: flex; gap: 6px; flex-wrap: wrap; }
.u-inb {
  font-size: 10px; font-weight: 700; padding: 5px 10px; border-radius: 20px;
  border: 1px solid var(--sk); color: var(--mu); background: var(--p);
  display: inline-flex; gap: 5px; align-items: center; cursor: pointer;
}
.u-inb.on { border-color: var(--u-ai); color: var(--u-ai); background: rgba(109, 91, 168, .08); }
.u-inb[disabled] { opacity: .45; cursor: not-allowed; }
.u-drop {
  display: block;
  border: 1.5px dashed var(--sk); border-radius: var(--r2); padding: 26px 18px;
  text-align: center; background: var(--p2); cursor: pointer; transition: all .14s;
}
.u-drop:hover, .u-drop.hot { border-color: var(--mu); background: var(--p); }
.u-drop .big { font-size: 13px; font-weight: 700; color: var(--st); }
.u-drop .sm { font-size: 10.5px; color: var(--mu); margin-top: 3px; }
.u-drop .ico { display: inline-grid; place-items: center; width: 40px; height: 40px;
  border-radius: 11px; margin: 0 auto 10px; background: var(--sk2); color: var(--mu); }
.u-drop:hover .ico, .u-drop.hot .ico { background: rgba(36, 180, 126, .14); color: var(--u-good); }
.u-drop .fn {
  display: inline-flex; gap: 7px; align-items: center; margin-top: 11px;
  font-family: var(--u-mono); font-size: 11px; font-weight: 600;
  padding: 6px 11px; border-radius: 20px; background: var(--p); border: 1px solid var(--sk);
}

/* ── gantt embed ──────────────────────────────────────────────────────── */
.u-gt { border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; background: var(--p); }
.u-gt-h { display: grid; grid-template-columns: 190px 1fr; border-bottom: 1px solid var(--sk); background: var(--p2); }
.u-gt-h .l {
  padding: 6px 10px; font-size: 8.5px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--mu); border-right: 1px solid var(--sk);
}
.u-gt-h .r { display: flex; }
.u-gt-h .mo {
  flex: 1; padding: 6px 0; text-align: center; font-size: 9px; font-weight: 700;
  color: var(--mu); border-right: 1px solid var(--sk2); letter-spacing: .03em;
}
/* ── THE COMPARISON TAKES THE SCREEN IT IS GIVEN ──────────────────────
   52vh is half the screen, so on any normal display the two panels stopped
   at the middle and the bottom half of the Comparison tab was empty —
   which is what the owner's screenshot shows. --u-cmp-h is measured by
   update.tab.js from where the panels actually start, exactly as --u-above
   is measured for the Update Centre's grid; the 52vh stays as the value
   before that measurement lands. */
.u-gt-body {
  max-height: var(--u-cmp-h, 52vh);
  height: var(--u-cmp-h, auto);
  overflow-y: auto;
  overscroll-behavior: contain;
}
/* the two panels must line up row for row, or the comparison compares
   different rows at the same height */
.u-2 .u-col > .u-gt { flex: 1 1 auto; min-height: 0; }
.u-2 .u-col > .u-card { flex: 0 0 auto; }

/* the picker: two lists and a segmented layout switch, on one line */
.u-cmp-pick {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--sk); border-radius: var(--r2);
  padding: 8px 10px; margin-bottom: 12px; background: var(--p2);
}
.u-cmp-pick label { display: flex; align-items: center; gap: 7px; min-width: 0; }
.u-cmp-pick .u-sel {
  background: var(--p); color: inherit; font: inherit; font-size: 11.5px;
  border: 1px solid var(--sk); border-radius: var(--r3);
  padding: 5px 9px; max-width: 280px;
}
.u-cmp-arrow { color: var(--mu); font-weight: 800; }
.u-seg { display: inline-flex; border: 1px solid var(--sk); border-radius: var(--r3); overflow: hidden; }
.u-seg .u-f { border: 0; border-radius: 0; }
.u-seg .u-f + .u-f { border-left: 1px solid var(--sk); }
.u-gt-r { display: grid; grid-template-columns: 190px 1fr; border-bottom: 1px solid var(--sk2); }
.u-gt-r .l {
  padding: 4px 10px; font-size: 10.5px; border-right: 1px solid var(--sk);
  display: flex; gap: 6px; align-items: center; overflow: hidden;
}
.u-gt-r .l .t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.u-gt-r.w .l {
  font-weight: 800; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase;
  color: var(--u-wbs-text, #fff); background: var(--u-wbs-bg, var(--st));
}
.u-gt-r .r { position: relative; height: 22px; }
.u-gt-b { position: absolute; height: 8px; border-radius: 2px; top: 7px; }
.u-gt-b.ubl { height: 4px; top: 15px; opacity: .42; border-radius: 1px; background: var(--u-warn); }
.u-gt-b.act { border-radius: 2px 0 0 2px; background: var(--u-ok); }
.u-gt-b.rem { opacity: .5; background: var(--mu); }
.u-gt-b.rem.ucrit { opacity: .85; background: var(--u-crit); }
.u-gt-b.ums { width: 9px !important; height: 9px; top: 6px; transform: rotate(45deg); border-radius: 1px; }
.u-gt-dd { position: absolute; top: 0; bottom: 0; width: 1.5px; background: var(--u-dd); z-index: 3; }
.u-gt-grid {
  position: absolute; inset: 0; pointer-events: none;
  background-image: repeating-linear-gradient(90deg, rgba(15, 27, 46, .05) 0 1px, transparent 1px 12.5%);
}

/* ── export cards ─────────────────────────────────────────────────────── */
.u-exps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.u-exp {
  border: 1px solid var(--sk); border-radius: var(--r2); background: var(--p);
  padding: 12px; display: flex; flex-direction: column; gap: 6px; text-align: left;
  cursor: pointer; font: inherit; color: inherit; transition: all .14s;
}
.u-exp:hover { border-color: var(--mu);
  box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 10px 26px -14px rgba(15, 27, 46, .2); }
.u-exp[disabled] { opacity: .5; cursor: not-allowed; }
.u-exp .fmt { font-family: var(--u-mono); font-size: 13px; font-weight: 700; color: var(--st); letter-spacing: -.2px; }
.u-exp .of { font-size: 9px; font-weight: 800; letter-spacing: .09em; color: var(--mu); text-transform: uppercase; }
.u-exp .ds { font-size: 10px; color: var(--mu); line-height: 1.5; }
.u-exp .dr {
  font-size: 9.5px; color: var(--u-warn); font-weight: 600; line-height: 1.5;
  padding-top: 5px; border-top: 1px dashed var(--sk); margin-top: auto;
}

/* ── responsive ───────────────────────────────────────────────────────── */
@media (max-width: 1320px) {
  .u-kpis { grid-template-columns: repeat(3, 1fr); }
  .u-dock { grid-template-columns: minmax(0, 1fr) 340px; }
}
@media (max-width: 1100px) {
  .u-stats { grid-template-columns: repeat(3, 1fr); }
  .u-methods { grid-template-columns: repeat(2, 1fr); }
  .u-exps { grid-template-columns: repeat(2, 1fr); }
  .u-wide, .u-2, .u-3 { grid-template-columns: 1fr; }
  .u-rt.two { grid-template-columns: 1fr; }
  .u-dock { grid-template-columns: 1fr; }
  .u-dock > .u-gwrap { border-right: 0; border-bottom: 1px solid var(--sk); }
  .u-drawer { max-height: none; }
}
@media (max-width: 760px) {
  .u-rail { flex-direction: column; align-items: stretch; gap: 10px; }
  .u-rail-f { border-left: 0; padding: 0; }
  .u-rail-end { margin-left: 0; }
  .u-rail-id { margin-right: 0; }
  .u-tl-r { grid-template-columns: 82px 20px minmax(0, 1fr); gap: 8px; }
  .u-tl-acts { grid-column: 3; padding-top: 0; padding-bottom: 10px; }
}
@media (max-width: 600px) {
  .u-kpis, .u-stats, .u-methods, .u-exps { grid-template-columns: 1fr 1fr; }
  .u-kv { grid-template-columns: 1fr; }
  .u-mod-b { max-height: 74vh; }
  .u-ov { padding: 2vh 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .upd *, .u-ov, .u-mod { transition: none !important; animation: none !important; }
  .u-method:hover { transform: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   THE PRINT REPORT

   #updPrintReport is hidden on screen and only @media print reveals it,
   which is the same mechanism styles/tabs/cost.css uses for the cost
   report. The point of printing the DOM rather than rasterising it is
   that the tables stay selectable text and the inline SVG charts stay
   vector, so a reviewer can search the PDF and zoom a curve without it
   turning to mush.

   Deliberately light-only and hex-literal: a printer has no dark mode,
   and a theme token would resolve to whatever the app's theme happens to
   be when the planner presses print.
   ══════════════════════════════════════════════════════════════════════ */
#updPrintReport { display: none }

@media print {
  /* only the report prints; the app's own chrome is not part of it */
  body > *:not(#updPrintReport) { display: none !important }
  body > #updPrintReport { display: block !important }

  @page { size: A4 landscape; margin: 12mm 11mm 13mm }

  #updPrintReport {
    font-family: "Inter", "Segoe UI", system-ui, sans-serif;
    color: #0A0F1A;
    font-size: 9pt;
    line-height: 1.42;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ── cover ───────────────────────────────────────────────────────── */
  #updPrintReport .pr-cover { page-break-after: always; padding-top: 44mm; text-align: center }
  #updPrintReport .pr-mark {
    font: 800 10.5pt/1 "Plus Jakarta Sans", sans-serif;
    letter-spacing: .22em; color: #188D68;
  }
  #updPrintReport .pr-cover h1 {
    margin: 9mm 0 3mm;
    font: 800 27pt/1.1 "Plus Jakarta Sans", sans-serif;
    letter-spacing: -.6pt;
  }
  #updPrintReport .pr-cover .pr-sub { margin: 0; font-size: 11pt; color: #69747F }
  #updPrintReport .pr-cover .pr-meta {
    margin: 15mm auto 0; max-width: 176mm;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 5mm 8mm;
    text-align: left; font-size: 9pt;
  }
  #updPrintReport .pr-cover .pr-meta > div {
    border-top: .6pt solid #E2E8EE; padding-top: 2mm;
    display: flex; flex-direction: column; gap: .8mm;
  }
  #updPrintReport .pr-cover .pr-meta b {
    color: #69747F; font-weight: 600; font-size: 7.6pt;
    letter-spacing: .08em; text-transform: uppercase;
  }
  #updPrintReport .pr-cover .pr-meta span { font-weight: 700; font-size: 10pt }

  /* ── a page break the report asks for, not one the flow happens to give ── */
  #updPrintReport .pr-page { page-break-before: always }

  #updPrintReport .pr-sect { margin-bottom: 6mm }
  #updPrintReport .pr-sect > h2 {
    font: 800 12pt/1.2 "Plus Jakarta Sans", sans-serif;
    margin: 0 0 3mm; padding-bottom: 1.6mm;
    border-bottom: .8pt solid #0A0F1A; letter-spacing: -.2pt;
  }

  /* ── tables ──────────────────────────────────────────────────────── */
  #updPrintReport table { width: 100%; border-collapse: collapse; font-size: 8pt }
  /* repeat the header on every page a long table spills onto */
  #updPrintReport thead { display: table-header-group }
  #updPrintReport tfoot { display: table-footer-group }
  #updPrintReport tr { page-break-inside: avoid }
  #updPrintReport th, #updPrintReport td {
    padding: 1.4mm 2mm; border-bottom: .4pt solid #E2E8EE;
    text-align: left; vertical-align: top;
  }
  #updPrintReport thead th {
    background: #EDF1F5 !important; font-weight: 700; font-size: 7.2pt;
    letter-spacing: .05em; text-transform: uppercase; color: #3C4956;
    border-bottom: .7pt solid #C9D3DC;
  }
  #updPrintReport td.n, #updPrintReport th.n {
    text-align: right; font-variant-numeric: tabular-nums;
  }
  #updPrintReport td.q { color: #69747F; font-size: 7.4pt; line-height: 1.34 }
  #updPrintReport td.neg { color: #8B3A1F; font-weight: 700 }
  #updPrintReport tr.wbs > * { font-weight: 700; background: #F7FAFC !important }
  #updPrintReport tr.wbs.d0 > * { background: #EDF1F5 !important }

  /* ── charts: the same inline SVG the Dashboard draws ─────────────── */
  #updPrintReport .pr-chart { page-break-inside: avoid; margin: 0 0 3mm }
  #updPrintReport .pr-chart svg { width: 100%; height: auto; display: block }

  #updPrintReport .pr-note {
    margin: 2.5mm 0 0; font-size: 7.6pt; color: #69747F; line-height: 1.45;
  }
  #updPrintReport .pr-foot {
    margin-top: 6mm; padding-top: 2mm; border-top: .5pt solid #E2E8EE;
    font-size: 7pt; color: #8A97A6; text-align: center;
  }
}

/* ── the composer's rule hints ────────────────────────────────────────────
   The instructions that are answered by rule rather than by the model. They
   are on the composer because a capability nobody can discover is not one. */
.u-hint {
  margin-top: 10px; padding: 9px 10px; border-radius: var(--r3);
  border: 1px dashed var(--sk); background: var(--p2);
  display: flex; flex-wrap: wrap; gap: 5px; align-items: center;
}
.u-hint .hl {
  width: 100%; font-size: 8.5px; font-weight: 800; letter-spacing: .09em;
  text-transform: uppercase; color: var(--mu); margin-bottom: 2px;
}
.u-hint .hb {
  font-size: 10.5px; padding: 4px 9px; border-radius: 20px;
  border: 1px solid var(--sk); background: var(--p); color: var(--st);
  cursor: pointer; line-height: 1.2;
}
.u-hint .hb:hover { border-color: var(--u-ai); color: var(--u-ai); background: rgba(109, 91, 168, .06); }
.u-hint .hn { width: 100%; font-size: 9.5px; color: var(--mu); line-height: 1.5; margin-top: 3px; }

/* ── how a rule-resolved result announces itself ──────────────────────── */
.u-intent {
  padding: 11px 13px; border-bottom: 1px solid var(--sk);
  background: linear-gradient(180deg, rgba(109, 91, 168, .07), transparent);
}
.u-intent .t { font-size: 12.5px; font-weight: 800; color: var(--st); }
.u-intent .s { font-size: 10.5px; color: var(--mu); line-height: 1.55; margin-top: 3px; max-width: 86ch; }
.u-intent .m {
  font-size: 9.5px; color: var(--u-ai); font-weight: 600; margin-top: 5px;
  padding-top: 5px; border-top: 1px dashed var(--sk);
}

/* ── the change table ─────────────────────────────────────────────────────
   Before → after in every cell, with one colour per kind of move and
   nothing else using those colours:

     green   a value that was empty and is now set   work newly recorded
     amber   a value that changed                    a figure revised
     steel   unchanged                               context, not news
     red     a finish that moves later               the thing to argue about

   Struck-through is always what the project holds today; bold is always what
   this update would write. */
.u-dl { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; line-height: 1.2; }
.u-dl s { opacity: .5; text-decoration-thickness: 1px; font-family: var(--u-mono); font-size: 10px; }
.u-dl b { font-family: var(--u-mono); font-weight: 800; }
.u-dl.same { color: var(--mu); font-family: var(--u-mono); opacity: .75; }
.u-dl.new b { color: var(--u-good); }
.u-dl.mv  b { color: var(--u-warn); }
.u-dl.bad b { color: var(--u-crit); }
.u-dl.new::before, .u-dl.mv::before, .u-dl.bad::before {
  content: ''; width: 3px; align-self: stretch; border-radius: 2px; flex: none;
}
.u-dl.new::before { background: var(--u-good); }
.u-dl.mv::before  { background: var(--u-warn); }
.u-dl.bad::before { background: var(--u-crit); }

.u-slip {
  display: inline-block; margin-left: 5px; font-size: 9.5px; font-weight: 800;
  font-family: var(--u-mono); padding: 1px 5px; border-radius: 3px;
}
.u-slip.ulate  { background: rgba(198, 70, 43, .14); color: var(--u-crit); }
.u-slip.uearly { background: rgba(36, 180, 126, .16); color: var(--u-good); }

/* progress, before under after in one track */
.u-pgd { display: flex; align-items: center; gap: 7px; }
.u-pgd .tk {
  position: relative; flex: 1; min-width: 40px; height: 9px;
  border-radius: 4px; background: var(--sk2); overflow: hidden;
}
.u-pgd .tk .b { position: absolute; left: 0; top: 0; bottom: 0; background: var(--mu); opacity: .38; }
.u-pgd .tk .a { position: absolute; left: 0; top: 0; bottom: 0; background: var(--u-good); opacity: .92; }
.u-pgd .n { display: flex; flex-direction: column; line-height: 1.15; width: 36px; flex: none; text-align: right; }
.u-pgd .n s { font-size: 8.5px; font-family: var(--u-mono); color: var(--mu); opacity: .7; }
.u-pgd .n b { font-size: 10.5px; font-family: var(--u-mono); font-weight: 800; color: var(--u-good); }

table.u-g.chg { min-width: 1160px; }
table.u-g.chg.tl { min-width: 1520px; }
/* in a table cell the three decisions are one control, not a wrapping stack:
   at 150px they were breaking to two lines and doubling every row's height */
table.u-g.chg .u-acts { flex-wrap: nowrap; gap: 3px; }
table.u-g.chg .u-a { padding: 3px 7px; font-size: 9.5px; }
table.u-g tr.ch td { vertical-align: middle; }
table.u-g tr.ch.REJECTED td { opacity: .45; }
table.u-g tr.ch.REJECTED .u-dl b { text-decoration: line-through; }
table.u-g tr.ch.ACCEPTED td:first-child, table.u-g tr.ch.EDITED td:first-child {
  box-shadow: inset 3px 0 0 var(--u-ok);
}
table.u-g tr.ch.PENDING td:first-child { box-shadow: inset 3px 0 0 var(--sk); }
table.u-g tr.ch.cf td:first-child { box-shadow: inset 3px 0 0 var(--u-crit); }
table.u-g tr.ch .u-chip + .u-chip { margin-left: 2px; }

/* ── THE THREE-TRACK BAR, IN THE MODULE'S OWN LANGUAGE ───────────────────
   AFTER on top and dominant, carrying the status colour it will have once
   applied. BEFORE quiet underneath — it is the thing being replaced.
   BASELINE amber at the bottom, the same fixed reference as every other
   screen. Before this, all three were similar warm bars and you could not
   tell which was which. */
.u-tlb.c3 { height: 36px; }
.u-tlb .ub.uaft {
  top: 4px; height: 9px; z-index: 5; border-radius: 2px;
  background: var(--u-todo);
}
.u-tlb .ub.uaft.ucrit { background: var(--u-crit); }
.u-tlb .ub.uaft.ucmpl { background: var(--u-cmpl); }
.u-tlb .ub.ubfr {
  top: 16px; height: 6px; z-index: 3; border-radius: 2px;
  background: var(--mu); opacity: .42;
}
.u-tlb.c3 .ub.ubl { top: 25px; height: 7px; z-index: 2; }
.u-tlb.c3 .ums.uaft { top: 3px; z-index: 5; background: var(--u-todo); }
.u-tlb.c3 .ums.uaft.ucrit { background: var(--u-crit); }
.u-tlb.c3 .ums.uaft.ucmpl { background: var(--u-cmpl); }
.u-tlb.c3 .ums.ubfr { top: 15px; width: 7px; height: 7px; margin-left: -3.5px; background: var(--mu); opacity: .5; z-index: 3; }
.u-tlb.c3 .ums.ubl { top: 24px; z-index: 2; }
.u-tlb .umoved {
  position: absolute; top: 14px; height: 0; z-index: 6;
  border-top: 2px dotted var(--u-crit);
}
.u-tlb .umoved.uearly { border-top-color: var(--u-good); }

/* the table / detail switch */
.u-seg { display: inline-flex; border: 1px solid var(--sk); border-radius: 5px; overflow: hidden; }
.u-seg .sg {
  font-size: 10.5px; font-weight: 600; padding: 4px 11px; border: 0;
  background: var(--p); color: var(--mu); cursor: pointer;
}
.u-seg .sg + .sg { border-left: 1px solid var(--sk); }
.u-seg .sg.on { background: var(--st); color: var(--bg2); font-weight: 700; }

.u-key { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.u-key .uk { width: 11px; height: 6px; border-radius: 2px; margin-left: 8px; }
.u-key .uk:first-child { margin-left: 0; }
.u-key .uk.new  { background: var(--u-good); }
.u-key .uk.mv   { background: var(--u-warn); }
.u-key .uk.ubl   { background: var(--u-bl); height: 4px; }
.u-key .uk.ubfr  { background: var(--mu); opacity: .42; }
.u-key .uk.uaft  { background: var(--u-todo); }
.u-key .uk.ulate { background: transparent; border-top: 2px dotted var(--u-crit); height: 0; width: 14px; }

/* ── THE GROUPED HEADER ───────────────────────────────────────────────────
   Eleven columns in a flat run read as eleven unrelated facts. They are
   three pairs and a triple, so the header says so: a band naming the group,
   a row naming the field. Same table, read as four blocks. */
table.u-g thead tr.grp th {
  border-bottom: 1px solid var(--sk2);
}
table.u-g thead tr.grp th.g {
  text-align: center; font-size: 8px; letter-spacing: .13em;
  color: var(--st); padding-bottom: 5px;
}
table.u-g thead tr.grp th.g.ubl { color: #9A7412; }
table.u-g thead tr.grp th.g.pr { color: var(--u-good); }
/* Both numbers come from one token, so the sub row's sticky offset can
   never drift from the band's real height. */
.upd { --u-hgrp: 22px; }
table.u-g thead tr.grp th { height: var(--u-hgrp); padding-top: 6px; padding-bottom: 4px; }
table.u-g thead tr.sub th {
  top: var(--u-hgrp); font-size: 8px; letter-spacing: .06em;
  padding-top: 4px; padding-bottom: 6px;
}
table.u-g thead tr.grp th[rowspan] { vertical-align: bottom; padding-bottom: 7px; }
table.u-g thead tr.grp th.g.tl { text-align: left; padding-left: 8px; color: var(--mu); }
/* the group bands get a hairline between them so the blocks are visible */
table.u-g thead th.g, table.u-g thead tr.sub th.pr:first-of-type { border-left: 1px solid var(--sk); }
table.u-g thead tr.sub th.ubl:first-of-type { border-left: 1px solid var(--sk); }
table.u-g td.pr-l, table.u-g th.pr-l { border-left: 1px solid var(--sk); }

/* Plan % — its own column now, because Schedule % Complete at the Data Date
   is what the whole update is measured against, not a footnote inside
   another cell */
.u-pl {
  font-family: var(--u-mono); font-size: 11px; font-weight: 700; color: var(--mu);
}
.u-pl.sm { font-size: 9px; }
.u-pl.rld { opacity: .95; }
.u-vr { font-family: var(--u-mono); font-size: 10px; font-weight: 800; }
.u-vr.uok { color: var(--u-good); } .u-vr.uwarn { color: var(--u-warn); } .u-vr.bad { color: var(--u-crit); }
table.u-g tr.u-wbs .u-pl, table.u-g tr.u-wbs .u-vr { color: var(--u-wbs-text, #fff); }

table.u-g tr.u-wbs .u-pg .nm { color: var(--u-wbs-text, #fff); }

/* the whole plan-and-actual block, for the screens that still want one cell */
.u-pgw { display: inline-flex; align-items: center; gap: 7px; }

/* ── §44: ONE PRIMARY ACTION ──────────────────────────────────────────────
   Auto Update is the workflow this screen exists for. It reads as the
   primary and the other three read as the alternatives they are — rather
   than four identical buttons that leave the planner to work out which one
   is the point of the page. */
.u-mstrip { padding: 6px 9px; margin-bottom: 9px; }
.u-mth.pri {
  background: var(--st); border-color: var(--st); padding-right: 13px;
}
.u-mth.pri:hover { background: var(--mu); border-color: var(--mu); }
.u-mth.pri .tx b { color: var(--bg2); }
.u-mth.pri .tx em { color: rgba(231, 238, 246, .72); }
.u-mth.pri .ico { background: rgba(231, 238, 246, .16); color: var(--bg2); }
.u-msep { width: 1px; align-self: stretch; background: var(--sk); margin: 0 4px; }
.u-b.sm { font-size: 10.5px; padding: 5px 11px; }

/* ── THE AUTO UPDATE PREVIEW ──────────────────────────────────────────────
   The modal IS the preview the workflow asks for: what will change, before
   anything does. It is also where the planner chooses between one
   confirmation and reading all 615 rows — both offered, neither hidden. */
.u-prev {
  border: 1px solid var(--sk); border-left: 3px solid var(--st);
  border-radius: var(--r3); background: var(--p2);
  padding: 9px 12px; margin-bottom: 10px;
  font-size: 11px; color: var(--mu); line-height: 1.6;
}
.u-prev b { font-family: var(--u-mono); font-weight: 800; color: var(--st); }
.u-prev em {
  display: block; font-style: normal; font-size: 9.5px; margin-top: 5px;
  padding-top: 5px; border-top: 1px dashed var(--sk); line-height: 1.55;
}

/* ══════════════════════════════════════════════════════════════════════════
   THE CHART'S KEY, AND A FLAG THAT IS NOT A STATUS
══════════════════════════════════════════════════════════════════════════ */

/* ── THE KEY ──────────────────────────────────────────────────────────────
   Asked of the old chart: "where is the baseline and where is the update —
   can you tell from the picture?" You could not. Two bars stated two facts
   and nothing on the drawing said which fact was which; the conventions
   lived in a settings screen and in the reader's memory. A chart that uses
   colour to mean something carries its key, on the chart, in its header,
   where the eye already is. */
table.u-g thead tr.grp th.g.tl { padding: 0 10px; text-align: left; }
/* ONE LINE, ALWAYS. Wrapping put the key on two rows, which made this
   header cell taller than the group cells beside it - so the whole thead
   grew, the ruler row shifted, and the columns stopped lining up with the
   chart. A key is not worth a broken header: it stays on one line and
   clips if the chart is narrow. */
.u-lgd {
  display: flex; align-items: center; gap: 4px; flex-wrap: nowrap;
  overflow: hidden; max-width: 100%;
  font-size: 9px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--mu); line-height: 1; white-space: nowrap;
}
.u-lgd i.uk {
  width: 12px; height: 7px; border-radius: 2px; flex: none;
  margin-left: 6px; display: inline-block;
}
.u-lgd i.uk:first-child { margin-left: 0; }
.u-lgd i.uk.ubl   { background: var(--u-bl); box-shadow: inset 0 0 0 1px rgba(120, 82, 0, .55); }
.u-lgd i.uk.ucur  { background: var(--u-todo); }
.u-lgd i.uk.ucmpl { background: var(--u-cmpl); }
.u-lgd i.uk.ucrit { background: var(--u-crit); }
.u-lgd i.uk.dd   { background: var(--u-dd); width: 3px; height: 11px; border-radius: 1px; }

/* ── OUT OF SEQUENCE IS A MARK ON A STATUS, NOT ONE OF THE STATUSES ───────
   It used to take the status cell over, so a finished activity that ran
   ahead of its predecessor read "OUT OF SEQ." and the grid could no longer
   tell you it was complete. P6 keeps them apart, and so does this: the
   chip says what the activity IS, the mark says what is odd about it. */
.u-oos {
  display: inline-block; margin-left: 4px; padding: 1px 4px;
  font-size: 8.5px; font-weight: 800; font-style: normal; letter-spacing: .06em;
  border-radius: 3px; vertical-align: middle; cursor: help;
  color: #8A5300; background: rgba(217, 164, 25, .18);
  box-shadow: inset 0 0 0 1px rgba(217, 164, 25, .5);
}
.u-lgd i.uk.usum  { background: var(--u-sum); }

/* ── THE WAY INTO THE MANUAL DRAWER ───────────────────────────────────────
   Clicking a row used to throw the drawer open over half the screen. On a
   257-row grid the commonest reason to click a row is to LOOK at it, and a
   panel that takes the screen every time is in the way of that. The drawer
   is asked for now, and this is where you ask: quiet until the row is under
   the pointer or selected, then one click away. */
.u-edit {
  position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
  width: 20px; height: 20px; padding: 0; line-height: 1; font-size: 11px;
  border: 1px solid var(--sk); border-radius: 5px; cursor: pointer;
  background: var(--p); color: var(--mu);
  opacity: 0; pointer-events: none; transition: opacity .12s ease;
}
table.u-g tbody tr:hover .u-edit,
table.u-g tbody tr.sel .u-edit { opacity: 1; pointer-events: auto; }
.u-edit:hover { color: var(--tx); border-color: var(--mu); background: var(--p2); }
/* NO `position: relative` HERE. The activity cell is `position: sticky`, and
   restating position on it un-freezes the column - which is exactly what
   happened: scroll the grid sideways and the names slid out of view and got
   clipped mid-word. A sticky element is a positioned element, so it already
   is the containing block this button needs. */

/* ── THE SUGGESTION KEY, AND THE FOLD ─────────────────────────────────────
   The grid proposes values in a few places — a percentage, a date — and a
   reader has to be TOLD that a dashed green figure is a proposal, not left
   to infer it from a border style. */
.u-sgkey {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 9.5px; font-weight: 600; color: var(--mu); white-space: nowrap;
}
.u-sgkey .u-sgst { cursor: default; font-size: 9.5px; padding: 0 5px; }
.u-sgkey .u-sgst:hover { background: transparent; color: var(--u-good);
  border-color: rgba(24, 141, 104, .6); border-style: dashed; }

.u-f.fold {
  font-family: var(--u-mono); font-size: 10px; font-weight: 700;
  white-space: nowrap; letter-spacing: .02em;
}
.u-f.fold.on { background: var(--st); border-color: var(--st); color: var(--bg2); }

/* ── FOLDED: THE ACTIVITY AND THE CHART, AND NOTHING BETWEEN THEM ─────────
   Every column between the name and the timeline folds away. The Gantt then
   has the whole width of the grid, which is the view a planner reads a
   programme in — and one click puts the figures back. */
table.u-g.fold thead tr.grp th:not(.stk):not(.g.tl),
table.u-g.fold thead tr.sub th:not(.u-tlh-c),
table.u-g.fold tbody td:not(.stk):not(.u-tl) { display: none; }
table.u-g.fold { min-width: 640px; }
table.u-g.fold th.stk, table.u-g.fold td.stk { --u-namew: 360px; }

/* the calendar field on the rail warns when a default week is standing in
   for a project calendar that was never set */
.u-rail-f .u-warnk, .u-warnk {
  color: #E8B14A; font-style: normal; font-size: 9px; font-weight: 800;
  letter-spacing: .06em; text-transform: uppercase;
}

/* ── THE STATUS DOT ───────────────────────────────────────────────────────
   With the columns folded there is no Status column, and then a green bar
   that starts before the Data Date looks like a bug when it is correct: an
   IN PROGRESS activity draws from its ACTUAL start, which is in the past,
   while its remaining work runs from the Data Date. A NOT STARTED one always
   begins at the Data Date. This says which, in the one column the fold
   keeps, using the same colours as the bars. */
.u-stq {
  display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  margin-left: 6px; flex: none; vertical-align: middle;
}
.u-stq.done { background: var(--u-cmpl); }
.u-stq.live { background: var(--u-todo); box-shadow: 0 0 0 2px rgba(46, 158, 114, .22); }
.u-stq.todo { background: transparent; box-shadow: inset 0 0 0 1.5px var(--sk); }
table.u-g tr.u-wbs .u-stq { display: none; }

/* ── THE DATE COMPARISON, AS TWO LINES ────────────────────────────────────
   It was a bordered grid with a header row and four rows of cells — a second
   card inside the card, taking the height of four rows to say six things,
   while the space beside the rings sat empty.

   START and FINISH are two facts, each read as "the plan said this, the
   update says that, and the difference is N". So each is one line, and the
   variance carries the only colour in the block. The card is now the height
   of the rings. */
.u-cmp2 { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.u-cmp2 .hd {
  display: grid; grid-template-columns: 44px 1fr 14px 1fr 54px; gap: 6px;
  font-size: 7.5px; font-weight: 800; letter-spacing: .09em;
  text-transform: uppercase; color: var(--mu); padding: 0 2px;
}
.u-cmp2 .hd span:nth-child(1) { grid-column: 2; color: #9A7412; }
.u-cmp2 .hd span:nth-child(2) { grid-column: 4; }
.u-cmp2 .hd span:nth-child(3) { grid-column: 5; text-align: right; }

.u-dl2 {
  display: grid; grid-template-columns: 44px 1fr 14px 1fr 54px; gap: 6px;
  align-items: baseline; padding: 3px 2px;
  border-top: 1px solid var(--sk2);
}
.u-dl2 .lb {
  font-size: 8.5px; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; color: var(--mu);
}
.u-dl2 .bl, .u-dl2 .cu {
  font-size: 11.5px; font-weight: 700; font-family: var(--u-mono); color: var(--st);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
.u-dl2 .bl { color: #9A7412; }
.u-dl2 .ar { color: var(--mu); opacity: .5; font-size: 11px; text-align: center; }
.u-dl2 .cu em {
  display: block; font-style: normal; font-size: 7.5px; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: var(--mu);
  font-family: 'DM Sans', system-ui, sans-serif; line-height: 1.5;
}
.u-dl2 .vr {
  font-size: 12.5px; font-weight: 800; font-family: var(--u-mono);
  text-align: right; color: var(--mu); white-space: nowrap;
}
.u-dl2 .vr em {
  font-style: normal; font-size: 8px; font-weight: 700; color: var(--mu);
  margin-left: 1px; text-transform: uppercase;
}
.u-dl2 .vr.uok  { color: var(--u-good); }
.u-dl2 .vr.ubad { color: var(--u-crit); }

/* ── WHICH BARS THE CHART DRAWS ───────────────────────────────────────────
   Each bar is a layer and any combination can be on: the baseline alone to
   read the approved plan, the update alone to read where the programme is
   now, both to read the slip between them, and the previous update beside
   them when one has been saved. */
.u-bars {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 4px; border: 1px solid var(--sk); border-radius: 7px;
  background: var(--p);
}
.u-bars .ttl {
  font-size: 8px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
  color: var(--mu); padding: 0 3px 0 2px;
}
.u-bar-l {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 9.5px; font-weight: 700; letter-spacing: .02em;
  padding: 3px 7px; border-radius: 5px; cursor: pointer;
  border: 1px solid transparent; background: transparent; color: var(--mu);
  white-space: nowrap; line-height: 1;
}
.u-bar-l .sw {
  width: 12px; height: 6px; border-radius: 2px; flex: none;
  /* off: the outline of the bar, so the control shows what it WOULD draw */
  background: transparent; box-shadow: inset 0 0 0 1.5px currentColor; opacity: .55;
}
.u-bar-l.on { background: var(--sk2); color: var(--st); }
.u-bar-l.on .sw { opacity: 1; box-shadow: none; }
.u-bar-l.on .sw.ubl   { background: var(--u-bl); box-shadow: inset 0 0 0 1px rgba(120, 82, 0, .55); }
.u-bar-l.on .sw.ucur  { background: var(--u-todo); }
.u-bar-l.on .sw.uprev { background: var(--u-prev); }
/* ── PLAN ONLY ────────────────────────────────────────────────────────
   Not a colour in the update's palette, because it is the absence of the
   update: the programme in its ordinary bar colour, with nothing laid over
   it. The swatch says so — an outline rather than a fill. */

.u-bar-l:hover { color: var(--st); }

/* the plain view: the update's own bars are not drawn at all, so what is
   left is the programme, in the colour every other tab draws it */
/* .planonly lived here for the Update tab's own 'Plan only' layer. That
   view belongs to the Gantt Chart tab (View \2192 Show \2192 Baseline only),
   so the rules that hid this chart's update bars are gone with it. */

/* ── THE PREVIOUS UPDATE'S BAR ────────────────────────────────────────────
   Quiet, because it is history: a slate the eye can find when it is looking
   for it and ignore when it is not, under both the bars that matter now. */
.upd { --u-prev: #7C89A6; }
.u-tlb .ub.uprev {
  top: 25px; height: 4px; z-index: 1;
  background: var(--u-prev); opacity: .8; border-radius: 2px;
}
.u-lgd i.uk.uprev { background: var(--u-prev); }

/* ── THE SCHEDULER'S SELF-CHECK, REPORTED ─────────────────────────────────
   An activity nobody has touched must keep its length. When the guard in
   core/172 has to correct one, saying so by name beats leaving a two-day
   activity drawing a forty-day bar and no way to tell why. */
.u-spanwarn {
  display: inline-flex; align-items: center; gap: 5px; cursor: help;
  font-size: 9.5px; font-weight: 700; letter-spacing: .02em;
  padding: 3px 8px; border-radius: 6px; white-space: nowrap;
  color: #8A5300; background: rgba(217, 164, 25, .16);
  box-shadow: inset 0 0 0 1px rgba(217, 164, 25, .5);
}
.u-spanwarn b { font-family: var(--u-mono); font-size: 11px; font-weight: 800; }


/* ══ TYPING IN THE GRID ═══════════════════════════════════════════════════
   A cell being edited is still the cell: same width, same alignment, same
   place on the row. An input that resizes its column makes the whole table
   jump on the first keystroke, which is the flicker this feature exists to
   remove, not to add. */
table.u-g td[data-ucell] { cursor: text; }
table.u-g td[data-ucell]:focus {
  outline: 2px solid var(--u-ok, #2E9E72);
  outline-offset: -2px;
}
table.u-g td.u-editing { padding: 0 !important; }
.u-cellin {
  width: 100%;
  box-sizing: border-box;
  border: 0;
  outline: 2px solid var(--u-ok, #2E9E72);
  outline-offset: -2px;
  background: var(--u-surface, #fff);
  color: inherit;
  font: inherit;
  padding: 4px 6px;
  text-align: inherit;
  border-radius: 2px;
}

/* ── A STAGED ENTRY IS NOT AN APPLIED ONE ──────────────────────────────────
   The cell shows what the planner just typed, because it went back to the
   project's own figure before and looked refused. But it has not been
   applied: it is in the set, waiting for Review and Apply. So it is marked
   — an underline in the colour the module already uses for an entry, and
   nothing else. No new colour, no new weight, no second theme. */
.u-tlb td[data-ucell].u-stg,
td[data-ucell].u-stg {
  box-shadow: inset 0 -2px 0 var(--u-ok);
}


/* ── THE ASK, AT THE CELL ──────────────────────────────────────────────────
   A figure typed into a cell is staged like any other entry — reviewed,
   validated, approved. What changed is that the planner no longer has to go
   and find the button: it comes to the row. */
.u-cbar {
  position: absolute; z-index: 40;
  display: flex; align-items: center; gap: 6px;
  padding: 5px 7px; border-radius: 8px;
  background: var(--p); border: 1px solid var(--sk);
  box-shadow: 0 6px 18px -8px rgba(15, 27, 46, .45);
  font-size: 10.5px;
}
.u-cbar .n {
  font-family: var(--u-mono); font-weight: 700; color: var(--u-ok);
  padding-right: 2px;
}
/* docked: a staged change is a state of the screen, not a six-second
   notice that floats over the row being worked on */
.u-cbar.dock {
  position: sticky; bottom: 10px; z-index: 40;
  margin: 10px 0 0 auto; width: fit-content; max-width: calc(100% - 16px);
  padding: 7px 10px; gap: 9px; font-size: 11px;
  border-color: var(--u-ok); flex-wrap: wrap;
}
.u-cbar.dock .w { color: var(--mu); font-size: 10px; }


/* ── READING MODE: THE GRID IS THE SCREEN ──────────────────────────────────
   Scroll into the rows and the summary card and the four update methods
   fold away, so the column header is the first line on screen and every
   pixel under it is programme. Scroll back to the top and they return.

   Folded with max-height and opacity rather than display:none, so the
   transition has something to animate and the layout does not jump; the
   grid's own height is recomputed by fitGrid the moment the class changes,
   which is what actually hands the space over. */
#updOut .u-sc2,
#updOut .u-mstrip {
  transition: max-height .18s ease, opacity .14s ease,
              margin .18s ease, padding .18s ease;
  max-height: 460px;
}
/* ── AND THE BLACK BAND GOES WITH THEM ────────────────────────────────
   "When I go into the full-screen view the black part stays. It should
   start from the table's own header."

   Quite so. The rail is the summary of an update you have stopped reading
   the moment you are inside the rows, and it is the tallest thing on the
   screen. It folds with the cards now, so the column header is the first
   line, and the button below brings the whole block back. */
#updOut .u-rail {
  transition: max-height .18s ease, opacity .14s ease,
              margin .18s ease, padding .18s ease;
  max-height: 320px;
}
#updOut.u-focus .u-rail {
  max-height: 0; opacity: 0;
  margin: 0; padding-top: 0; padding-bottom: 0;
  overflow: hidden; pointer-events: none; border-width: 0;
}

/* ── THE WAY BACK UP ──────────────────────────────────────────────────
   Folding the block away is only half of it: scrolling the rows back to
   the top is a long way on a 257-activity programme, and on a tablet it is
   a long way with a thumb. So the way back is a button, pinned to the
   corner of the grid, and it exists only while there is something to come
   back to. */
.u-gfoot { display: flex; justify-content: flex-end; }
.u-unfold {
  position: static; margin-top: 6px; z-index: 12;
  display: none; align-items: center; gap: 7px;
  padding: 6px 12px; border-radius: 999px;
  border: 1px solid var(--sk); background: var(--st); color: #E7EEF6;
  font: 700 11.5px/1 var(--u-mono, ui-monospace, monospace);
  letter-spacing: .04em; cursor: pointer;
  box-shadow: 0 10px 28px -12px rgba(15, 27, 46, .55);
}
.u-unfold:hover { background: #16263F; }
.u-unfold svg { width: 13px; height: 13px; stroke: currentColor; fill: none; stroke-width: 2.2; }
#updOut.u-focus .u-unfold { display: inline-flex; }
@media (prefers-reduced-motion: reduce) { #updOut .u-rail { transition: none; } }

#updOut.u-focus .u-sc2,
#updOut.u-focus .u-mstrip {
  max-height: 0; opacity: 0;
  margin-top: 0; margin-bottom: 0;
  padding-top: 0; padding-bottom: 0;
  overflow: hidden; pointer-events: none;
  border-width: 0;
}
@media (prefers-reduced-motion: reduce) {
  #updOut .u-sc2, #updOut .u-mstrip { transition: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   THE BOARD — the Dashboard screen, one viewport

   Three columns, fixed height, nothing scrolls. Each card clips its own
   list rather than growing the page, because a board that scrolls is a
   report and this screen is not one.

   COLOUR IS A MEASUREMENT HERE. A tile carries `ok` when it is ahead of
   the baseline, `bad` when it is behind, and nothing when it is a
   reference — the plan itself never changes colour. The tokens are the
   module's own (--u-good, --u-bad, --mu); this block introduces none.
   ══════════════════════════════════════════════════════════════════════ */
.ud-head { display: flex; align-items: flex-end; gap: 12px; margin-bottom: 12px; }
.ud-head .k { font-size: 11.5px; color: var(--mu); }
.ud-head .k b { color: var(--u-good); font-weight: 700; }
.ud-head h2 { margin: 3px 0 0; font-size: 21px; font-weight: 800; letter-spacing: -.5px; }

/* ── the KPI row ─────────────────────────────────────────────────────── */
.ud-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 12px; }
.ud-k {
  position: relative; overflow: hidden; background: var(--p);
  border: 1px solid var(--sk); border-radius: var(--r2); padding: 12px 14px 10px;
  --acc: var(--mu); --accT: var(--sk2); --accL: var(--sk);
}
.ud-k.ok  { --acc: var(--u-good); --accT: rgba(36, 180, 126, .14); --accL: rgba(24, 141, 104, .34);
            background: linear-gradient(168deg, rgba(36, 180, 126, .07) 0%, var(--p) 58%); }
.ud-k.bad { --acc: var(--u-bad); --accT: rgba(139, 58, 31, .12); --accL: rgba(139, 58, 31, .34);
            background: linear-gradient(168deg, rgba(139, 58, 31, .07) 0%, var(--p) 58%); }
.ud-k.ok, .ud-k.bad { border-color: var(--accL); }
.ud-k::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px;
                background: var(--acc); opacity: .9; }
.ud-k::after { content: ''; position: absolute; right: -42px; top: -52px; width: 132px; height: 132px;
               border-radius: 50%; background: var(--acc); opacity: .05; pointer-events: none; }
.ud-k .t { display: flex; align-items: center; gap: 7px; position: relative; }
.ud-k .ic { width: 24px; height: 24px; border-radius: var(--r3); background: var(--accT);
            color: var(--acc); display: grid; place-items: center; flex: none; }
.ud-k .ic svg { width: 13px; height: 13px; }
.ud-k .lb { font-size: 9.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
            color: var(--mu); }
.ud-k .st { display: inline-flex; align-items: center; gap: 4px; font-size: 9.5px; font-weight: 800;
            padding: 3px 8px; border-radius: 20px; background: var(--accT); color: var(--acc);
            border: 1px solid var(--accL); white-space: nowrap; }
.ud-k.flat .st { color: var(--mu); border-color: var(--sk); }
.ud-k .mid { display: flex; align-items: flex-end; justify-content: space-between; gap: 8px;
             margin-top: 8px; position: relative; }
.ud-k .v { font-size: 27px; font-weight: 800; letter-spacing: -.9px; line-height: 1; color: var(--acc);
           font-family: var(--u-mono); }
.ud-k.flat .v { color: var(--tx); }
.ud-k .v.sm { font-size: 20px; letter-spacing: -.5px; }
.ud-k .v small { font-size: 14px; font-weight: 700; color: var(--mu); }
.ud-sp { width: 88px; height: 28px; flex: none; }
.ud-sp-x { display: inline-block; width: 88px; height: 28px; }
.ud-gap { position: relative; height: 6px; border-radius: 3px; background: var(--sk2); margin-top: 9px; }
.ud-gap i { position: absolute; top: 0; bottom: 0; left: 0; border-radius: 3px; }
.ud-gap .pl { background: color-mix(in srgb, var(--mu) 45%, transparent); }
.ud-gap .ac { background: var(--acc); }
.ud-gap .mk { top: -3px; bottom: -3px; width: 2px; background: var(--st); border-radius: 1px; }
.ud-k .ft { display: flex; align-items: center; gap: 9px; margin-top: 9px; padding-top: 7px;
            border-top: 1px solid var(--sk); position: relative; }
.ud-k .ft .x { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ud-k .ft .x b { font-family: var(--u-mono); font-size: 11.5px; font-weight: 700; color: var(--tx);
                 white-space: nowrap; }
.ud-k .ft .x span { font-size: 9.5px; color: var(--mu); white-space: nowrap; }
.ud-k .ft .dv { width: 1px; align-self: stretch; background: var(--sk); }

/* ── the three columns ───────────────────────────────────────────────── */
.ud-main {
  display: grid; grid-template-columns: minmax(0, 4.3fr) minmax(0, 3.45fr) minmax(0, 2.9fr);
  gap: 10px;
  /* one viewport: the rail, the nav and the board head are what is above */
  height: calc(100vh - var(--app-sticky-top, 0px) - 268px);
  min-height: 460px;
}
.ud-col { display: grid; gap: 10px; min-height: 0; }
.ud-col.a { grid-template-rows: minmax(0, 1.3fr) minmax(0, 1fr); }
.ud-col.b { grid-template-rows: minmax(0, 1.14fr) minmax(0, 1fr); }
.ud-col.c { grid-template-rows: minmax(0, 1.16fr) minmax(0, .94fr) minmax(0, .96fr); }

.ud-c { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2);
        padding: 11px 13px; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.ud-c > header { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.ud-c h3 { margin: 0; font-size: 13.5px; font-weight: 800; letter-spacing: -.2px; }
.ud-c .sub { font-size: 10.5px; color: var(--mu); margin-top: 2px; line-height: 1.35; }
.ud-b { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.ud-lk { font-size: 10.5px; color: var(--mu); cursor: pointer; white-space: nowrap; }
.ud-lk:hover { color: var(--tx); }
.ud-svg { flex: 1; min-height: 0; width: 100%; color: var(--tx); }

.u-chip.ok   { background: rgba(36, 180, 126, .17); color: var(--u-good); }
.u-chip.bad  { background: rgba(139, 58, 31, .13); color: var(--u-bad); }
.u-chip.warn { background: rgba(184, 105, 62, .16); color: var(--u-warn); }
.u-chip.flat { background: var(--sk2); color: var(--mu); }
.u-chip.na   { background: transparent; color: var(--mu); }

/* ── progress rings ──────────────────────────────────────────────────── */
.ud-vd { display: flex; align-items: center; gap: 12px; padding-bottom: 10px;
         border-bottom: 1px solid var(--sk); color: var(--tx); }
.ud-vd .t1 { font-size: 14px; font-weight: 800; letter-spacing: -.2px; }
.ud-vd .t1.ok { color: var(--u-good); } .ud-vd .t1.bad { color: var(--u-bad); }
.ud-vd .t2 { font-size: 11px; color: var(--mu); margin-top: 4px; line-height: 1.45; }
.ud-chips { display: flex; gap: 4px; margin-top: 7px; flex-wrap: wrap; }
.ud-rings { display: grid; grid-template-columns: repeat(3, 1fr); flex: 1; min-height: 0;
            margin-top: 6px; color: var(--tx); }
.ud-rings .rg { display: flex; flex-direction: column; align-items: center; justify-content: center;
                gap: 2px; min-width: 0; }
.ud-rings .nm { font-size: 10.5px; font-weight: 700; text-align: center; line-height: 1.2;
                max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ud-rings .nm b { font-family: var(--u-mono); }
.ud-rings .nm b.ok { color: var(--u-good); } .ud-rings .nm b.bad { color: var(--u-bad); }
.ud-rings .nm b.flat { color: var(--mu); }

/* ── earned value ────────────────────────────────────────────────────── */
.ud-ev { display: flex; flex-direction: column; gap: 7px; }
.ud-ev .evrow { display: grid; grid-template-columns: 92px minmax(0, 1fr) 80px; align-items: center;
                gap: 9px; }
.ud-ev .k2 { font-size: 11px; color: var(--tx); }
.ud-ev .k2 b { display: block; font-size: 9px; color: var(--mu); font-weight: 600; letter-spacing: .06em; }
.ud-ev .evtrack { position: relative; height: 16px; border-radius: 5px; background: var(--sk2);
                  overflow: hidden; }
.ud-ev .evtrack i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 5px; }
.ud-ev .evtrack i.hz { right: 0; width: auto; border-radius: 5px; background-image:
  repeating-linear-gradient(135deg, var(--sk) 0 5px, transparent 5px 10px); }
.ud-ev .n2 { font-family: var(--u-mono); font-size: 11.5px; font-weight: 700; text-align: right; }
.ud-ev .n2.na { color: var(--mu); font-weight: 500; }
.ud-evf { display: flex; align-items: flex-start; gap: 6px; margin-top: 9px; padding-top: 9px;
          border-top: 1px solid var(--sk); color: var(--tx); }
.ud-g { width: 70px; height: 56px; flex: none; }
.ud-evs { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 5px 12px; min-width: 0; }
.ud-evs span { display: block; font-size: 9.5px; color: var(--mu); }
.ud-evs b { display: block; font-size: 11.5px; font-weight: 700; }
.ud-evs b.ok { color: var(--u-good); } .ud-evs b.bad { color: var(--u-bad); }
.ud-evs b.na { color: var(--mu); font-weight: 500; }
.ud-evt { width: 100%; height: 70px; flex: none; margin-top: 8px; color: var(--tx); }

/* ── delayed works ───────────────────────────────────────────────────── */
.ud-ax { display: grid; grid-template-columns: minmax(0, 1fr) 132px 52px; gap: 9px;
         align-items: center; font-size: 9px; color: var(--mu); padding-bottom: 4px;
         border-bottom: 1px solid var(--sk); }
.ud-ax .ax { display: flex; justify-content: space-between; }
.ud-slips { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden;
            color: var(--tx); }
.ud-slips .sl { display: grid; grid-template-columns: minmax(0, 1fr) 132px 52px; gap: 9px;
                align-items: center; padding: 5px 0; border-bottom: 1px solid var(--sk2); }
.ud-slips .sl:last-child { border-bottom: 0; }
.ud-slips .nm { min-width: 0; }
.ud-slips .nm b { display: block; font-size: 11.5px; font-weight: 700; line-height: 1.25;
                  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.ud-slips .nm b:hover { color: var(--u-dd); }
.ud-slips .nm i { display: block; font-size: 9.5px; color: var(--mu); font-style: normal;
                  margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ud-slips .tk { width: 132px; height: 22px; }
.ud-slips .rt { text-align: right; }
.ud-slips .rt em { display: block; font-family: var(--u-mono); font-size: 10.5px; font-style: normal;
                   font-weight: 700; margin-bottom: 2px; }
.ud-leg { font-size: 9px; color: var(--mu); margin-top: 6px; white-space: nowrap; }

/* ── the two lists ───────────────────────────────────────────────────── */
.ud-rows { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.ud-rows .rw { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; gap: 8px;
               align-items: center; padding: 3px 0; border-bottom: 1px solid var(--sk2); }
.ud-rows .rw:last-child { border-bottom: 0; }
.ud-rows .ic { width: 22px; height: 22px; border-radius: var(--r3); display: grid; place-items: center;
               font-size: 10px; font-weight: 800; }
.ud-rows .ic.ok   { background: rgba(36, 180, 126, .16); color: var(--u-good); }
.ud-rows .ic.bad  { background: rgba(139, 58, 31, .12); color: var(--u-bad); }
.ud-rows .ic.warn { background: rgba(184, 105, 62, .16); color: var(--u-warn); }
.ud-rows .ic.flat { background: var(--sk2); color: var(--mu); }
.ud-rows .ti { display: block; font-size: 11.5px; font-weight: 700; line-height: 1.25;
               overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.ud-rows .ts { display: block; font-size: 9.5px; color: var(--mu); margin-top: 1px;
               overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 1180px) {
  .ud-kpis { grid-template-columns: repeat(2, 1fr); }
  .ud-main { grid-template-columns: minmax(0, 1fr); height: auto; }
  .ud-col { grid-template-rows: none; }
  .ud-c { min-height: 260px; }
}

/* ── CHOOSING WHAT THE BOARD SHOWS ───────────────────────────────────
   One programme's phases are level 1 of the WBS and the next one's are
   level 2, so the board cannot assume a shape. These controls pick which
   measurements are drawn; they never touch a measurement. */
.ud-editnote {
  font-size: 11px; color: var(--mu); background: rgba(47, 107, 216, .06);
  border: 1px solid rgba(47, 107, 216, .2); border-left: 3px solid var(--u-dd);
  border-radius: var(--r3); padding: 7px 11px; margin: -4px 0 12px;
}
.ud-seg { display: flex; gap: 2px; background: var(--sk2); border-radius: 20px; padding: 2px; }
.ud-seg button {
  border: 0; background: none; font: inherit; font-size: 10.5px; font-weight: 700;
  color: var(--mu); padding: 3px 9px; border-radius: 20px; cursor: pointer;
}
.ud-seg button.on { background: var(--p); color: var(--tx); box-shadow: 0 1px 2px rgba(15, 27, 46, .12); }
.ud-pick { display: flex; flex-direction: column; flex: 1; min-height: 0; margin-top: 8px; }
.ud-pick-h {
  display: flex; align-items: center; gap: 8px; font-size: 10px; font-weight: 800;
  letter-spacing: .07em; text-transform: uppercase; color: var(--mu); margin-bottom: 6px;
}
.ud-pick-l { flex: 1; min-height: 0; overflow: auto; border: 1px solid var(--sk);
             border-radius: var(--r3); }
.ud-pk {
  display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 8px; align-items: center;
  width: 100%; border: 0; background: none; font: inherit; text-align: left;
  padding: 5px 9px; border-bottom: 1px solid var(--sk2); cursor: pointer;
}
.ud-pk:last-child { border-bottom: 0; }
.ud-pk:hover { background: var(--sk2); }
.ud-pk .bx {
  width: 15px; height: 15px; border-radius: 4px; border: 1px solid var(--sk);
  display: grid; place-items: center; font-size: 10px; color: transparent;
}
.ud-pk.on .bx { background: var(--u-good); border-color: var(--u-good); color: #FFFDF9; }
.ud-pk .tx { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ud-pk.on .tx { font-weight: 700; }
.ud-pk .ct { font-family: var(--u-mono); font-size: 10px; color: var(--mu); }
.ud-pk.dim { opacity: .45; cursor: not-allowed; }
.ud-pick-f { font-size: 10px; color: var(--mu); margin-top: 6px; }
.u-b.sm { font-size: 10.5px; padding: 3px 10px; }

/* A shorter screen keeps the same board: the rings and the tiles step down
   rather than the second row of phases disappearing under the fold. */
@media (max-height: 940px) {
  .ud-rings .rg svg { width: 52px; height: 52px; }
  .ud-rings .nm { font-size: 9.5px; }
  .ud-vd svg { width: 84px; height: 84px; }
  .ud-k .v { font-size: 24px; }
  .ud-evt { height: 58px; }
  .ud-g { height: 50px; }
}


/* ════════════════════════════════════════════════════════════════════════
   TWO FROZEN PANES, AND THE TABLE SCROLLS BETWEEN THEM

   "عاوز فريز كمان عند آخر الجدول بحيث مساحة الجانت شارت تكون قد المعروض
    دي دايماً، والتحرك بين الأعمدة بحيث عمود الاسم ثابت وباقي الأعمدة
    أقدر أسكرول جانبي في حدود المساحة دي."

   The name was frozen on the left and the chart was one more column at the
   right end of the scroll — so scrolling to reach a column pushed the chart
   off, and scrolling to the chart pushed the columns off. The chart is now
   frozen on the RIGHT at a fixed share of the screen, the name on the left,
   and the dates and figures scroll sideways in the space between them.
   Folding the columns ("Gantt only") still hands the chart the full width.
   ════════════════════════════════════════════════════════════════════════ */
.upd { --u-namew: 320px; --u-tlw: clamp(340px, 36vw, 720px); }
table.u-g.tl:not(.fold) th.u-tlh-c,
table.u-g.tl:not(.fold) td.u-tl,
table.u-g.tl:not(.fold) thead tr.grp th.g.tl {
  position: sticky; right: 0;
  width: var(--u-tlw); min-width: var(--u-tlw); max-width: var(--u-tlw);
}
table.u-g.tl:not(.fold) td.u-tl { z-index: 2; }
table.u-g.tl:not(.fold) thead th.u-tlh-c,
table.u-g.tl:not(.fold) thead tr.grp th.g.tl { z-index: 9; }
/* the name pane + the chart pane + the columns between them always
   overflow, so the columns scroll rather than being squeezed */
table.u-g.tl:not(.fold) { width: max-content; min-width: 100%; }
/* the legend in a fixed-width header must not push the pane wider */
table.u-g.tl thead tr.grp th.g.tl { overflow: hidden; }
table.u-g td.u-tl { overflow: hidden; }

/* ── THE NAME ON THE BAR ─────────────────────────────────────────────── */
.u-tlb .ulbl {
  position: absolute; top: 50%; transform: translateY(-50%);
  margin-left: 5px; z-index: 6; pointer-events: none;
  font-size: 8.5px; line-height: 1.25; font-weight: 500; color: #3C4757;
  white-space: nowrap; max-width: 60%; overflow: hidden; text-overflow: ellipsis;
  text-transform: none; letter-spacing: 0;
}
.u-tlb .ulbl.rt { margin-left: 0; margin-right: 5px; text-align: right; }
.u-tlb .ulbl.uwl { font-weight: 700; color: var(--st); font-size: 8px; letter-spacing: .02em; }
/* the key in a fixed-width pane: set tighter so it is not cut off */
table.u-g.tl:not(.fold) thead tr.grp th.g.tl .u-lgd { font-size: 8px; letter-spacing: .02em; gap: 3px; }
table.u-g.tl:not(.fold) thead tr.grp th.g.tl .u-lgd i.uk { margin-left: 5px; width: 10px; }
table.u-g tr.done .u-tlb .ulbl { color: var(--mu); }

/* ── THE COLUMNS: FITTED, AND CENTRED ────────────────────────────────────
   Every column between the name and the chart reads down, not across, so
   its figures sit in the middle of it — headers too. */
table.u-g th:not(.stk):not(.u-tlh-c):not(.tl),
table.u-g td:not(.stk):not(.u-tl),
table.u-g th.num, table.u-g td.num { text-align: center; }
table.u-g td:not(.stk):not(.u-tl) .u-pg { justify-content: center; }
table.u-g td:not(.stk):not(.u-tl) { padding-left: 6px; padding-right: 6px; }


/* ════════════════════════════════════════════════════════════════════════
   MORE OF THE PROGRAMME ON ONE SCREEN

   "الجدول مش شايف إن الخط ممكن يصغر شوية بحيث المعروض يكون أكتر" and
   "مش عاوز زر الـ show ولا السيرش، والفلتر نصغره". Smaller type and a
   shorter row in the grid, one thin toolbar row, no dead padding under the
   panel — every pixel of it goes to rows.
   ════════════════════════════════════════════════════════════════════════ */
.upd { --u-row: 22px; }
.upd:has(.u-gscroll) { padding-bottom: 0; }
.u-gfoot .u-unfold { margin: 5px 2px 4px 0; }

table.u-g td { font-size: 10px; padding: 2px 6px; }
table.u-g .u-dt { font-size: 9.5px; }
table.u-g .u-aid { font-size: 9.5px; }
table.u-g .u-num, table.u-g .u-pl, table.u-g .u-pg .nm { font-size: 10px; }
table.u-g .u-chip { font-size: 8px; padding: 1px 5px; }
table.u-g tr.u-wbs td { font-size: 9.5px; padding: 4px 6px; }
table.u-g th { padding: 4px 6px; }

/* the toolbar: one short row, and the filter a small control. The app's
   theme styles every <select> as a full-height field, so this answers it
   with enough specificity to hold. */
.upd .u-gwrap .u-gtools { padding: 4px 10px; gap: 10px; flex-wrap: nowrap; min-height: 0; }
.upd .u-gwrap .u-gtools select.u-sel {
  /* the theme's touch-target rule is `min-height: 44px !important` on
     every select; on a toolbar that is the height of the whole row */
  height: 26px !important; min-height: 0 !important; line-height: 1; width: auto; max-width: 210px;
  font-size: 10.5px; padding: 2px 24px 2px 8px; border-radius: 6px !important; margin: 0;
  box-shadow: none;
}
.upd .u-gwrap .u-gtools .u-f { padding: 3px 8px; }

/* the key is the layer switch now */
.u-lgd button.lg {
  display: inline-flex; align-items: center; gap: 4px; padding: 1px 3px; margin: 0;
  border: 0; background: transparent; font: inherit; color: inherit;
  letter-spacing: inherit; text-transform: inherit; cursor: pointer; border-radius: 3px;
  min-height: 0; height: auto; line-height: 1; box-shadow: none;
}
.u-lgd button.lg:hover { background: var(--sk2); color: var(--st); }
.u-lgd button.lg .uk { margin-left: 0; }
.u-lgd button.lg + .uk, .u-lgd button.lg + button.lg { margin-left: 4px; }
.u-lgd button.lg.off { opacity: .45; text-decoration: line-through; }
/* the two bars restacked for the shorter row, so neither is cut off */
table.u-g:not(.hist) .u-tlb .ub.ucur { top: 3px; height: 7px; }
table.u-g:not(.hist) .u-tlb .ub.ubl { top: 12px; height: 6px; }
table.u-g:not(.hist) .u-tlb .ums.ucur { top: 2px; width: 8px; height: 8px; margin-left: -4px; }
table.u-g:not(.hist) .u-tlb .ums.ubl { top: 12px; width: 7px; height: 7px; margin-left: -3.5px; }
table.u-g:not(.hist) .u-tlb .usum { top: 5px; }

/* ── AI UPDATE REVIEW (V2) — tabs/update/update-ai-v2.js ─────────────────
   The table is the grid's own .u-g with its .u-wbs bands; these only mark
   current → proposed inside a cell, and the sections below the table. */
.u-gscroll.u-a2-scroll { height: auto; min-height: 0; }
table.u-a2 td { vertical-align: top; height: auto; }
table.u-a2 td:nth-child(3) { white-space: normal; min-width: 220px; }
table.u-a2 tr.u-a2-row:not(.on) td { opacity: .62; }
.u-a2-box { background: none; border: 0; cursor: pointer; font-size: 15px; line-height: 1;
  color: var(--st); padding: 0 2px; }
.u-a2-cur { opacity: .55; text-decoration: line-through; }
.u-a2-ar { margin: 0 4px; opacity: .6; }
.u-a2-new { color: var(--u-good); font-weight: 800; }
.u-a2-same { opacity: .7; }
.u-a2-der { color: var(--mu); }
.u-a2-der small { font-size: 8.5px; text-transform: uppercase; letter-spacing: .04em; }
.u-a2-q { font-size: 9.5px; color: var(--mu); padding-left: 2px; margin-top: 2px; }
.u-a2-note { font-size: 9.5px; color: var(--mu); line-height: 1.45; }
.u-a2-warn { font-size: 9.5px; color: var(--u-warn, #B45309); line-height: 1.45; margin-top: 2px; }
.u-a2-sec { margin-top: 12px; border-top: 1px solid var(--sk2); padding-top: 8px; }
.u-a2-h { font-size: 11px; font-weight: 800; color: var(--st); margin-bottom: 6px; }
.u-a2-un { font-size: 10.5px; padding: 6px 8px; border-radius: 6px; background: var(--p2); margin-bottom: 6px; }
.u-a2-cands { margin-top: 5px; display: grid; gap: 4px; }
.u-a2-cand { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.u-a2-cand .u-b { padding: 2px 8px; font-size: 10px; }
.u-a2-diag { margin-top: 10px; font-size: 9px; color: var(--mu); }

/* ════════════════════════════════════════════════════════════════════════
   THE UPDATE SWITCHER — every update one click away, on every screen
   ════════════════════════════════════════════════════════════════════════ */
.u-nav .u-sp { flex: 1 1 auto; }
.u-uswitch {
  display: inline-flex; align-items: center; gap: 2px; padding: 2px 3px;
  border: 1px solid var(--sk); border-radius: 20px; background: var(--p);
}
.u-uswitch .ttl {
  font-size: 8.5px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
  color: var(--mu); padding: 0 6px 0 7px;
}
.u-uswitch button.us {
  position: relative; min-width: 30px; height: 24px; min-height: 0; padding: 0 8px; margin: 0;
  border: 0; border-radius: 14px; background: transparent; color: var(--mu);
  font: 700 11px/1 var(--u-mono); cursor: pointer; box-shadow: none;
}
.u-uswitch button.us:hover:not([disabled]) { background: var(--sk2); color: var(--st); }
.u-uswitch button.us.on { background: var(--st); color: var(--bg2); }
.u-uswitch button.us[disabled] { opacity: .4; cursor: not-allowed; }
/* the latest update is the current status: a green dot says so */
.u-uswitch button.us.cur i {
  position: absolute; top: 3px; right: 3px; width: 5px; height: 5px; border-radius: 50%;
  background: var(--u-ok);
}

/* ════════════════════════════════════════════════════════════════════════
   COMPARISON — many layers on one Gantt (update-compare.js)
   ════════════════════════════════════════════════════════════════════════ */
.u-mc-pick {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 12px;
}
.u-mc-chip {
  display: inline-flex; align-items: center; gap: 6px; height: 28px; min-height: 0 !important; margin: 0;
  padding: 0 10px; border-radius: 16px; border: 1px solid var(--sk); background: var(--p);
  color: var(--mu); font: 700 11px/1 var(--u-mono); cursor: pointer; box-shadow: none;
}
.u-mc-chip i { width: 10px; height: 10px; border-radius: 3px; border: 2px solid var(--c); }
.u-mc-chip em { font-style: normal; font-weight: 600; font-size: 9.5px; opacity: .7; }
.u-mc-chip.on { border-color: var(--c); color: var(--st); background: color-mix(in srgb, var(--c) 12%, var(--p)); }
.u-mc-chip.on i { background: var(--c); }
.u-mc-colsel { display: inline-flex; align-items: center; gap: 6px; margin-right: 6px; }
.upd .u-mc-colsel select.u-sel { height: 28px !important; min-height: 0 !important; border-radius: 6px !important;
  font-size: 11px; padding: 2px 24px 2px 8px; width: auto; }

/* ── the layer cards ─────────────────────────────────────────────────── */
.u-mc-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; margin-bottom: 10px; }
.u-mc-card {
  position: relative; overflow: hidden;
  border: 1px solid var(--sk); border-radius: 12px; background: var(--p);
  padding: 12px 14px 12px; display: flex; flex-direction: column; gap: 9px;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 8px 20px -16px rgba(15, 27, 46, .35);
}
.u-mc-card::before { content: ''; position: absolute; left: 0; top: 0; right: 0; height: 4px; background: var(--c); }
.u-mc-card.ref { background: color-mix(in srgb, var(--c) 6%, var(--p)); }
.u-mc-card .hd { display: flex; align-items: center; gap: 9px; min-width: 0; }
.u-mc-card .hd .tg {
  flex: none; font: 800 11px/1 var(--u-mono); color: #fff; background: var(--c);
  padding: 5px 7px; border-radius: 6px; letter-spacing: .02em;
}
.u-mc-card .hd .nm { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }
.u-mc-card .hd .nm b { font-size: 12.5px; color: var(--st); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.u-mc-card .hd .nm em { font-style: normal; font-size: 10px; color: var(--mu); }
.u-mc-card .hd .rf { margin-left: auto; flex: none; font-size: 8px; font-weight: 800; letter-spacing: .1em;
  color: var(--mu); border: 1px solid var(--sk); border-radius: 10px; padding: 3px 7px; }
.u-mc-card .fs { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.u-mc-card .fs .lb { font-size: 8.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }
.u-mc-card .fs .v { font: 800 17px/1 var(--u-mono); color: var(--st); }
.u-mc-card .dv { font: 800 10.5px/1 var(--u-mono); padding: 3px 7px; border-radius: 10px; }
.u-mc-card .dv.late { color: var(--u-crit); background: rgba(198, 70, 43, .12); }
.u-mc-card .dv.early { color: var(--u-good); background: rgba(24, 141, 104, .12); }
.u-mc-card .dv.flat { color: var(--mu); background: var(--sk2); }
.u-mc-card .pg { display: flex; flex-direction: column; gap: 4px; }
.u-mc-card .pg.na { font-size: 10px; color: var(--mu); font-style: italic; padding: 6px 0 2px; }
.u-mc-card .pg .br { display: grid; grid-template-columns: 52px 1fr 44px; align-items: center; gap: 7px; }
.u-mc-card .pg .br span { font-size: 8.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.u-mc-card .pg .br i { height: 6px; border-radius: 4px; background: var(--sk2); overflow: hidden; }
.u-mc-card .pg .br i b { display: block; height: 100%; border-radius: 4px; background: var(--c); }
.u-mc-card .pg .br.pl i b { background: color-mix(in srgb, var(--c) 40%, transparent); }
.u-mc-card .pg .br em { font: 700 10.5px/1 var(--u-mono); font-style: normal; color: var(--st); text-align: right; }
.u-mc-card .pg .spi { font-size: 9px; font-weight: 800; letter-spacing: .08em; color: var(--mu); }
.u-mc-card .pg .spi b { font: 800 11px/1 var(--u-mono); color: var(--st); margin-left: 4px; }
.u-mc-card .pg .spi b.late { color: var(--u-crit); }

/* ── the difference cards ────────────────────────────────────────────── */
.u-mc-diff { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 12px; }
.u-mc-dc {
  border: 1px solid var(--sk); border-radius: 12px; background: var(--p); padding: 11px 13px;
  display: flex; flex-direction: column; gap: 4px; min-width: 0;
}
.u-mc-dc.wide { grid-column: span 2; }
.u-mc-dc .lb { display: flex; align-items: center; gap: 6px; font-size: 8.5px; font-weight: 800;
  letter-spacing: .1em; text-transform: uppercase; color: var(--mu); }
.u-mc-dc .lb svg { width: 13px; height: 13px; flex: none; }
.u-mc-dc .v { font: 800 22px/1.1 var(--u-mono); color: var(--st); }
.u-mc-dc .s { font-size: 10px; color: var(--mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.u-mc-dc .row { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.u-mc-dc.late { border-color: rgba(198, 70, 43, .35); background: linear-gradient(180deg, rgba(198, 70, 43, .07), var(--p) 70%); }
.u-mc-dc.late .v, .u-mc-dc.late .lb svg { color: var(--u-crit); }
.u-mc-dc.early { border-color: rgba(24, 141, 104, .35); background: linear-gradient(180deg, rgba(24, 141, 104, .07), var(--p) 70%); }
.u-mc-dc.early .v, .u-mc-dc.early .lb svg { color: var(--u-good); }
/* every layer's project finish on one small axis */
.u-mc-drift { margin-top: 6px; padding: 16px 4px 18px; }
.u-mc-drift .ax { position: relative; height: 2px; background: var(--sk); border-radius: 2px; }
.u-mc-drift .mk { position: absolute; top: -5px; transform: translateX(-50%); }
.u-mc-drift .mk i { display: block; width: 12px; height: 12px; border-radius: 50%; background: var(--c);
  box-shadow: 0 0 0 2px var(--p); }
.u-mc-drift .mk em { position: absolute; top: -15px; left: 50%; transform: translateX(-50%);
  font: 700 9px/1 var(--u-mono); font-style: normal; color: var(--st); white-space: nowrap; }
.u-mc-drift .mk.dn em { top: 17px; }

/* ── the chart: the Update Center's own table, frozen panes and paper ── */
.u-mc { border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; background: var(--p); }
.u-mc .u-mc-scroll { max-height: var(--u-cmp-h, 60vh); height: var(--u-cmp-h, auto); overflow: auto; }
table.u-mc-t th.mc-fh i { display: inline-block; width: 8px; height: 8px; border-radius: 2px;
  background: var(--c); margin-right: 4px; vertical-align: -1px; }
table.u-mc-t th em { display: block; font-size: 7.5px; opacity: .6; }
table.u-mc-t th.u-tlh-c { height: 34px; }
table.u-mc-t td.u-tl .u-tlb { height: var(--u-row); }
.u-tlb .mc-b { position: absolute; border-radius: 2px; min-width: 4px; z-index: 3; background: var(--c);
  box-shadow: inset 0 0 0 1px rgba(15, 27, 46, .16); }
.u-tlb .mc-hl { position: absolute; height: 2px; border-radius: 1px; background: var(--c); z-index: 2; opacity: .9; }
/* the slip: a thin arrow from the reference finish to the latest */
.u-tlb .mc-slip { position: absolute; height: 3px; z-index: 4; border-radius: 2px; }
.u-tlb .mc-slip.late { background: repeating-linear-gradient(90deg, var(--u-crit) 0 4px, transparent 4px 6px); }
.u-tlb .mc-slip.early { background: repeating-linear-gradient(90deg, var(--u-good) 0 4px, transparent 4px 6px); }
.u-tlb .mc-slip::after {
  content: ''; position: absolute; top: -3px; border-top: 4.5px solid transparent; border-bottom: 4.5px solid transparent;
}
.u-tlb .mc-slip.late::after { right: -4px; border-left: 6px solid var(--u-crit); }
.u-tlb .mc-slip.early::after { left: -4px; border-right: 6px solid var(--u-good); }
.u-mc-d { font: 800 10px/1 var(--u-mono); }
.u-mc-d.late { color: var(--u-crit); }
.u-mc-d.early { color: var(--u-good); }
.u-mc-d.flat { color: var(--mu); }
.u-mc-key {
  display: flex; flex-wrap: wrap; gap: 14px; padding: 7px 10px; border-top: 1px solid var(--sk);
  background: var(--p2); font-size: 10px; color: var(--mu);
}
.u-mc-key span { display: inline-flex; align-items: center; gap: 5px; }
.u-mc-key i { width: 14px; height: 6px; border-radius: 2px; background: var(--c); }
.u-mc-key i.usumk { background: var(--u-sum); height: 4px; border-radius: 0; }
.u-mc-key i.slk.late { height: 3px; background: repeating-linear-gradient(90deg, var(--u-crit) 0 4px, transparent 4px 6px); }
.u-mc-key i.slk.early { height: 3px; background: repeating-linear-gradient(90deg, var(--u-good) 0 4px, transparent 4px 6px); }
.u-mc-key i.ddk { width: 2px; height: 11px; background: var(--u-dd); }
.u-mc-key em { font-style: normal; font-weight: 700; color: var(--st); }
@media (max-width: 900px) { .u-mc-dc.wide { grid-column: auto; } }

/* the switcher sits at the end of the tab bar, on the same line: the bar
   scrolls sideways on a narrow screen rather than wrapping it underneath */
.upd .u-nav { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.upd .u-nav::-webkit-scrollbar { display: none; }
.upd .u-nav > * { flex: none; }
.upd .u-nav > .u-sp { flex: 1 1 auto; }

/* ── OUT OF SEQUENCE (update-oos.js) ─────────────────────────────────── */
.u-oos-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 14px; }
.u-oos-kpi { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2); padding: 11px 14px; }
.u-oos-kpi .k { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.u-oos-kpi .v { font-size: 22px; font-weight: 800; color: var(--st); margin-top: 3px; font-variant-numeric: tabular-nums; }
.u-oos-kpi .s { font-size: 11px; color: var(--mu); margin-top: 1px; }
.u-oos-kpi.bad { border-left: 4px solid var(--u-crit); }
.u-oos-kpi.bad .v { color: var(--u-crit); }
.u-oos-kpi.good { border-left: 4px solid var(--u-good); }
.u-oos-kpi.good .v { color: var(--u-good); }
.u-oos-empty { padding: 18px 4px; font-size: 13px; color: var(--st); }
.u-oos-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.u-oos-list { display: grid; gap: 10px; margin-bottom: 16px; }
.u-oos-case { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 14px;
  background: var(--p); border: 1px solid var(--sk); border-left: 4px solid var(--u-crit);
  border-radius: var(--r2); padding: 12px 14px; }
.u-oos-case.keep { border-left-color: var(--mu); }
@media (max-width: 860px) { .u-oos-case { grid-template-columns: 1fr; } }
.u-oos-t { font-size: 13px; font-weight: 700; color: var(--st); display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.u-oos-n { font-size: 11.5px; color: var(--mu); margin-top: 2px; }
.u-oos-why { font-size: 12px; color: var(--st); margin: 6px 0 4px; line-height: 1.45; }
.u-oos-arrow { color: var(--mu); }
.u-oos-rel { font: 700 11px var(--u-mono, ui-monospace, monospace); padding: 2px 7px; border-radius: 999px; white-space: nowrap; }
.u-oos-rel.old { background: color-mix(in srgb, var(--u-crit) 13%, transparent); color: var(--u-crit); }
.u-oos-rel.new { background: color-mix(in srgb, var(--u-good) 15%, transparent); color: var(--u-good); }
.u-oos-rel.del { background: color-mix(in srgb, var(--mu) 18%, transparent); color: var(--mu); text-decoration: line-through; }
.u-oos-r { display: grid; gap: 6px; align-content: start; }
.u-oos-opt { text-align: left; background: transparent; border: 1px solid var(--sk); border-radius: 8px;
  padding: 7px 10px; cursor: pointer; display: grid; gap: 2px; color: var(--st); }
.u-oos-opt:hover { border-color: var(--u-dd); }
.u-oos-opt.on { border-color: var(--u-good); box-shadow: inset 3px 0 0 var(--u-good);
  background: color-mix(in srgb, var(--u-good) 7%, transparent); }
.u-oos-opt .k { font-size: 12px; font-weight: 700; }
.u-oos-opt .k em { font-style: normal; font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--u-good); margin-left: 6px; }
.u-oos-opt .d { font-size: 11px; color: var(--mu); line-height: 1.4; }
.u-oos-svg { width: 100%; max-width: 460px; height: auto; display: block; margin-top: 6px; }
.u-oos-svg .act.p, .u-oos-svg .act.s { fill: var(--u-good); }
.u-oos-svg .rem.p, .u-oos-svg .rem.s { fill: color-mix(in srgb, var(--u-dd) 35%, transparent); stroke: var(--u-dd); stroke-width: .8; }
.u-oos-svg .dd { stroke: var(--u-dd); stroke-width: 1.4; stroke-dasharray: 3 2; }
.u-oos-svg .ddl { font: 700 8px sans-serif; fill: var(--u-dd); }
.u-oos-svg .lbl { font: 700 9px var(--u-mono, ui-monospace, monospace); fill: var(--mu); }
.u-oos-svg .tie { fill: none; stroke-width: 1.8; }
.u-oos-svg .tie.old { stroke: var(--u-crit); stroke-dasharray: 4 3; }
.u-oos-svg .tie.keep { stroke: var(--mu); }
.u-oos-svg .tie.new { stroke: var(--u-good); }
.u-oos-svg .ah.old { fill: var(--u-crit); }
.u-oos-svg .ah.keep { fill: var(--mu); }
.u-oos-svg .ah.new { fill: var(--u-good); }
.u-oos-pv { background: var(--p); border: 1px solid var(--sk); border-top: 3px solid var(--u-dd); border-radius: var(--r2);
  padding: 12px 14px; margin-bottom: 14px; }
.u-oos-pv.err { border-top-color: var(--u-crit); color: var(--u-crit); font-size: 12px; }
.u-oos-pvh { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--mu); margin-bottom: 10px; }
.u-oos-cmp { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 12px; }
.u-oos-c .k { font-size: 10.5px; color: var(--mu); font-weight: 700; }
.u-oos-c .v { font-size: 16px; font-weight: 700; color: var(--st); display: flex; gap: 7px; align-items: baseline;
  font-variant-numeric: tabular-nums; }
.u-oos-c .v span:first-child { color: var(--mu); font-weight: 600; font-size: 14px; }
.u-oos-c .ar { color: var(--mu); }
.u-oos-c .good, .u-oos-mv td.good { color: var(--u-good); }
.u-oos-c .bad, .u-oos-mv td.bad { color: var(--u-crit); }
.u-oos-c .s { font-size: 11px; font-weight: 700; }
.u-oos-crit { font-size: 9.5px; font-weight: 800; color: var(--u-crit); text-transform: uppercase; letter-spacing: .05em; }
.u-oos-log { width: 100%; }
.u-oos-log td { vertical-align: top; }
.u-oos-bh td { background: color-mix(in srgb, var(--u-dd) 7%, transparent); font-size: 11.5px; }
.u-oos-bh .u-b { margin-left: 10px; }
.u-oos-batch.rev, .u-oos-log tr.rev { opacity: .55; }
.u-oos-revd { margin-left: 10px; font-size: 10px; font-weight: 800; text-transform: uppercase; color: var(--mu); }
.u-oos-act { font-size: 9.5px; font-weight: 800; letter-spacing: .05em; padding: 2px 7px; border-radius: 4px; }
.u-oos-act.changed { background: color-mix(in srgb, var(--u-dd) 14%, transparent); color: var(--u-dd); }
.u-oos-act.added { background: color-mix(in srgb, var(--u-good) 15%, transparent); color: var(--u-good); }
.u-oos-act.removed { background: color-mix(in srgb, var(--u-crit) 13%, transparent); color: var(--u-crit); }
.u-oos-act.kept { background: color-mix(in srgb, var(--mu) 15%, transparent); color: var(--mu); }
.u-oos-wh { font-size: 11px; color: var(--mu); max-width: 360px; }
.u-oos-casc { font-size: 11.5px; color: var(--st); margin-bottom: 10px; line-height: 1.7; }
.u-oos-casc .u-aid { margin-right: 4px; }
.u-oos-svg .ax { font: 600 8px sans-serif; fill: var(--mu); }
.u-oos-svg .fixbar { fill: color-mix(in srgb, var(--u-good) 18%, transparent); stroke: var(--u-good); stroke-width: 1.2; stroke-dasharray: 3 2; }
.u-oos-leg { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 10.5px; color: var(--mu); margin-top: 4px; align-items: center; }
.u-oos-leg i { display: inline-block; width: 14px; height: 7px; border-radius: 2px; margin-right: 3px; vertical-align: middle; }
.u-oos-leg i.a { background: var(--u-good); }
.u-oos-leg i.r { background: color-mix(in srgb, var(--u-dd) 35%, transparent); border: 1px solid var(--u-dd); }
.u-oos-leg i.o { height: 0; border-top: 2px dashed var(--u-crit); border-radius: 0; }
.u-oos-leg i.n { height: 0; border-top: 2px solid var(--u-good); border-radius: 0; }
.u-oos-leg i.f { border: 1px dashed var(--u-good); background: color-mix(in srgb, var(--u-good) 18%, transparent); }
.u-oos-mv td:first-child, .u-oos-mv th:first-child, .u-oos-log td, .u-oos-log th { text-align: left; }
.u-oos-bt { border: 1px solid var(--sk); border-radius: 10px; margin-bottom: 10px; overflow: hidden; }
.u-oos-bt.rev { opacity: .6; }
.u-oos-bt > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 9px 12px; background: color-mix(in srgb, var(--u-dd) 6%, transparent); }
.u-oos-bt > summary::-webkit-details-marker { display: none; }
.u-oos-bt > summary::before { content: '▸'; color: var(--mu); font-size: 11px; }
.u-oos-bt[open] > summary::before { content: '▾'; }
.u-oos-bid { font: 700 12px var(--u-mono, ui-monospace, monospace); color: var(--st); }
.u-oos-bm { font-size: 11.5px; color: var(--mu); }
.u-oos-chip { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.u-oos-chip.rel { background: color-mix(in srgb, var(--u-dd) 14%, transparent); color: var(--u-dd); }
.u-oos-chip.st { background: color-mix(in srgb, var(--u-good) 15%, transparent); color: var(--u-good); }
.u-oos-chip.kp { background: color-mix(in srgb, var(--mu) 15%, transparent); color: var(--mu); }
.u-oos-bb { padding: 4px 12px 12px; max-height: 520px; overflow: auto; }
.u-oos-sub { font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--mu); margin: 10px 0 5px; }
table.u-oos-t2 { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 11.5px; color: var(--st); }
table.u-oos-t2 th { text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: var(--mu); padding: 5px 6px; border-bottom: 1px solid var(--sk); }
table.u-oos-t2 td { text-align: left; padding: 5px 6px; border-bottom: 1px solid var(--sk); vertical-align: top;
  overflow-wrap: anywhere; }
table.u-oos-t2 tr.rev { opacity: .55; }
.u-oos-chain { font-size: 9px; font-weight: 800; text-transform: uppercase; color: var(--u-ai); letter-spacing: .05em; }
table.u-g.u-oos-mv td:first-child { text-align: left; }
.u-a2-verify { margin-top: 4px; font-size: 11px; line-height: 1.4; color: var(--u-warn); font-weight: 600;
  background: color-mix(in srgb, var(--u-warn) 10%, transparent); border-left: 3px solid var(--u-warn);
  padding: 3px 6px; border-radius: 3px; text-align: left; }
.u-a2-vchip { display: inline-block; margin-top: 3px; font-size: 9.5px; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; color: #fff; background: var(--u-warn); padding: 1px 6px; border-radius: 3px; }
.u-nav-b.u-nav-ai2 { color: var(--u-ai); font-weight: 700; }
.u-nav-b.u-nav-ai2 .n { background: var(--u-ai); color: #fff; }
.u-oos-rec { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.u-oos-rc { font-size: 11px; padding: 3px 8px; border-radius: 6px; border: 1px solid var(--sk); color: var(--st); }
.u-oos-rc.dn { border-color: color-mix(in srgb, var(--u-good) 45%, transparent); }
.u-oos-rc.rt { border-color: color-mix(in srgb, var(--u-crit) 45%, transparent); }
.u-oos-chip.rt { background: color-mix(in srgb, var(--u-crit) 12%, transparent); color: var(--u-crit); }
/* the fix, played on hover */
.u-oos-steps { display: flex; gap: 10px; font-size: 10px; font-weight: 700; color: var(--mu); margin-top: 2px; }
.u-oos-steps span { opacity: .45; }
.u-oos-case:hover .u-oos-steps .s1 { animation: oos-step1 3.6s infinite; }
.u-oos-case:hover .u-oos-steps .s2 { animation: oos-step2 3.6s infinite; }
.u-oos-case:hover .u-oos-steps .s3 { animation: oos-step3 3.6s infinite; }
@keyframes oos-step1 { 0%, 30% { opacity: 1; color: var(--u-crit); } 35%, 100% { opacity: .45; color: var(--mu); } }
@keyframes oos-step2 { 0%, 30% { opacity: .45; } 35%, 65% { opacity: 1; color: var(--st); } 70%, 100% { opacity: .45; } }
@keyframes oos-step3 { 0%, 65% { opacity: .45; } 70%, 100% { opacity: 1; color: var(--u-good); } }
.u-oos-svg .fixbar.grow, .u-oos-svg .fixbar.slide { transform-box: fill-box; transform-origin: left center; }
.u-oos-case:hover .u-oos-svg .tie.old { animation: oos-break 3.6s infinite; }
@keyframes oos-break { 0% { opacity: 1; stroke-width: 1.8; } 15%, 25% { opacity: 1; stroke-width: 3.2; } 45%, 100% { opacity: .12; stroke-width: 1.8; } }
.u-oos-svg .tie.draw { stroke-dasharray: 100; }
.u-oos-case:hover .u-oos-svg .tie.draw { animation: oos-draw 3.6s infinite; }
@keyframes oos-draw { 0%, 35% { stroke-dashoffset: 100; opacity: .2; } 65%, 100% { stroke-dashoffset: 0; opacity: 1; } }
.u-oos-case:hover .u-oos-svg .fixbar.grow { animation: oos-grow 3.6s infinite; }
@keyframes oos-grow { 0%, 35% { transform: scaleX(0); opacity: 0; } 65%, 100% { transform: scaleX(1); opacity: 1; } }
.u-oos-case:hover .u-oos-svg .fixbar.slide { animation: oos-slide 3.6s infinite; }
@keyframes oos-slide { 0%, 35% { transform: translateX(var(--dx, 0)); opacity: .3; } 65%, 100% { transform: translateX(0); opacity: 1; } }
.u-oos-svg g.fade { opacity: .25; }
.u-oos-case:hover .u-oos-svg g.fade { animation: oos-fade 3.6s infinite; }
@keyframes oos-fade { 0%, 35% { opacity: 1; } 65%, 100% { opacity: .25; } }
.u-oos-svg g.gone { opacity: .2; }
.u-oos-svg .gonel { font: 700 8.5px sans-serif; fill: var(--u-crit); }
.u-oos-case:hover .u-oos-svg g.gone { animation: oos-fade 3.6s infinite; }
.u-oos-svg g.keepshift rect.rem { transform: translateX(var(--kx, 0)); }
.u-oos-case:hover .u-oos-svg g.keepshift rect.rem { animation: oos-keep 3.6s infinite; }
@keyframes oos-keep { 0%, 35% { transform: translateX(0); } 65%, 100% { transform: translateX(var(--kx, 0)); } }
@media (prefers-reduced-motion: reduce) {
  .u-oos-case:hover .u-oos-svg *, .u-oos-case:hover .u-oos-steps span { animation: none !important; }
}
/* the replacement for a removed tie */
.u-oos-repl { margin-top: 6px; border: 1px solid var(--sk); border-radius: 8px; padding: 8px 10px; }
.u-oos-repl.need { border-color: var(--u-warn); box-shadow: inset 3px 0 0 var(--u-warn); }
.u-oos-needtxt { font-size: 11px; font-weight: 700; color: var(--u-warn); margin-bottom: 6px; }
.u-oos-rchips { display: flex; flex-wrap: wrap; gap: 5px; }
.u-oos-rchip { font-size: 11px; text-align: left; border: 1px solid var(--sk); border-radius: 6px; background: transparent;
  color: var(--st); padding: 3px 7px; cursor: pointer; max-width: 100%; }
.u-oos-rchip small { color: var(--mu); }
.u-oos-rchip.on { border-color: var(--u-good); background: color-mix(in srgb, var(--u-good) 8%, transparent); }
.u-oos-rbar { display: flex; gap: 8px; align-items: center; margin-top: 7px; flex-wrap: wrap; }
.u-oos-none { font-size: 11px; background: transparent; border: 0; color: var(--mu); cursor: pointer; }
.u-oos-none.on { color: var(--st); font-weight: 700; }
.u-oos-picker { margin-top: 8px; border-top: 1px solid var(--sk); padding-top: 8px; }
.u-oos-pkbar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }
.u-oos-pkbar #u-oos-find { flex: 1 1 220px; min-width: 0; }
.u-oos-lag { font-size: 11px; color: var(--mu); display: flex; gap: 4px; align-items: center; }
.u-oos-lag input { width: 60px; }
.u-oos-pkscroll { max-height: 280px; overflow: auto; }
.u-oos-pk { display: flex; gap: 4px; flex-wrap: wrap; }
.u-oos-wbs { font-size: 10px; color: var(--mu); }
.u-oos-perr { font-size: 11px; color: var(--u-crit); font-weight: 700; margin-bottom: 6px; }
.u-oos-case > .u-oos-picker { grid-column: 1 / -1; }
.u-oos-pkbar .u-in { height: 30px; width: auto; padding: 3px 8px; font-size: 12px; }
.u-oos-pkbar #u-oos-find { width: auto; flex: 1 1 260px; }
.u-oos-pk .u-b[disabled] { opacity: .45; cursor: not-allowed; }
.u-oos-picker .u-oos-pkbar input.u-in, .u-oos-picker .u-oos-pkbar select.u-in { height: 30px !important; min-height: 0 !important; padding: 3px 8px !important; font-size: 12px !important; }
.u-oos-picker .u-oos-pkbar #u-oos-rtype { width: 72px !important; flex: 0 0 auto; }
.u-oos-picker .u-oos-lag input.u-in { width: 64px !important; }
/* the replacement on a Gantt */
.u-oos-full { grid-column: 1 / -1; }
.u-oos-rhead { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.u-oos-fitkey { font-size: 10.5px; color: var(--mu); display: flex; gap: 4px 10px; align-items: center; flex-wrap: wrap; }
.u-oos-fitkey i { display: inline-block; width: 14px; height: 0; border-top: 2px solid; margin-right: 3px; vertical-align: middle; }
.u-oos-fitkey i.close { border-color: var(--u-good); } .u-oos-fitkey i.ok { border-color: var(--u-dd); }
.u-oos-fitkey i.far { border-color: var(--mu); border-top-style: dashed; } .u-oos-fitkey i.push { border-color: var(--u-warn); }
.u-oos-gantt { width: 100%; height: auto; display: block; margin: 6px 0 2px; }
.u-oos-gantt .grow { fill: transparent; }
.u-oos-gantt .grow.head { fill: color-mix(in srgb, var(--u-dd) 5%, transparent); }
.u-oos-gantt .grow-g { cursor: pointer; }
.u-oos-gantt .grow-g:hover .grow { fill: color-mix(in srgb, var(--u-dd) 7%, transparent); }
.u-oos-gantt .grow.on { fill: color-mix(in srgb, var(--u-good) 10%, transparent); }
.u-oos-gantt .gl { font: 11px sans-serif; fill: var(--st); }
.u-oos-gantt .gid { font: 700 10px var(--u-mono, ui-monospace, monospace); fill: var(--mu); }
.u-oos-gantt .gck { font: 12px sans-serif; fill: var(--st); }
.u-oos-gantt .gax, .u-oos-gantt .gddl { font: 700 9px sans-serif; fill: var(--mu); }
.u-oos-gantt .gddl { fill: var(--u-dd); }
.u-oos-gantt .gdd { stroke: var(--u-dd); stroke-width: 1.2; stroke-dasharray: 3 2; }
.u-oos-gantt .gb.done { fill: var(--u-good); } .u-oos-gantt .gb.run { fill: var(--u-dd); }
.u-oos-gantt .gb.ns { fill: color-mix(in srgb, var(--u-dd) 30%, transparent); stroke: var(--u-dd); stroke-width: .8; }
.u-oos-gantt .gb.sel { stroke: var(--u-good); stroke-width: 2; }
.u-oos-gantt .gtie { fill: none; stroke-width: 1.3; opacity: .55; }
.u-oos-gantt .gtie.sel { stroke-width: 2.4; opacity: 1; }
.u-oos-gantt .grow-g:hover .gtie { opacity: 1; stroke-width: 2.2; }
.u-oos-gantt .gtie.old { stroke: var(--u-crit); stroke-dasharray: 4 3; opacity: .9; }
.u-oos-gantt .gtie.close { stroke: var(--u-good); } .u-oos-gantt .gtie.ok { stroke: var(--u-dd); }
.u-oos-gantt .gtie.far { stroke: var(--mu); stroke-dasharray: 3 3; } .u-oos-gantt .gtie.push { stroke: var(--u-warn); }
.u-oos-gantt .gtie.na { stroke: var(--mu); }
.u-oos-gantt .gah.close { fill: var(--u-good); } .u-oos-gantt .gah.ok { fill: var(--u-dd); } .u-oos-gantt .gah.far { fill: var(--mu); }
.u-oos-gantt .gah.push { fill: var(--u-warn); } .u-oos-gantt .gah.na { fill: var(--mu); } .u-oos-gantt .gah.old { fill: var(--u-crit); }
.u-oos-gantt .gtag { font: 700 10px sans-serif; fill: var(--mu); }
.u-oos-gantt .gtag.close { fill: var(--u-good); } .u-oos-gantt .gtag.ok { fill: var(--u-dd); }
.u-oos-gantt .gtag.push, .u-oos-gantt .gtag.old { fill: var(--u-warn); }
.u-oos-gantt .gtag.old { fill: var(--u-crit); }
.u-oos-fit { font-size: 10.5px; font-weight: 700; padding: 1px 6px; border-radius: 4px; }
.u-oos-fit.close { color: var(--u-good); background: color-mix(in srgb, var(--u-good) 12%, transparent); }
.u-oos-fit.ok { color: var(--u-dd); background: color-mix(in srgb, var(--u-dd) 10%, transparent); }
.u-oos-fit.far { color: var(--mu); background: color-mix(in srgb, var(--mu) 12%, transparent); }
.u-oos-fit.push { color: var(--u-warn); background: color-mix(in srgb, var(--u-warn) 12%, transparent); }
/* the case diagram, P6 connectors and names */
.u-oos-svg { max-width: 620px; }
.u-oos-svg .bn { font: 600 10px sans-serif; fill: var(--st); }
.u-oos-svg .tt { font: 800 8.5px sans-serif; text-anchor: middle; }
.u-oos-svg .tt.old { fill: var(--u-crit); } .u-oos-svg .tt.new { fill: var(--u-good); } .u-oos-svg .tt.keep { fill: var(--mu); }
.u-oos-svg .tx { font: 800 11px sans-serif; fill: var(--u-crit); text-anchor: middle; }
.u-oos-svg g.p.fade { opacity: .25; }
.u-oos-steps { flex-wrap: wrap; font-size: 10.5px; }
/* the replacement gantt, polished */
.u-oos-gantt .grow-g .gb { transition: stroke-width .15s; }
.u-oos-repl { background: color-mix(in srgb, var(--u-dd) 3%, transparent); }
/* the impact window */
.u-imp { background: var(--p); border-radius: 14px; width: min(1400px, 96vw); max-height: 90vh; display: flex; flex-direction: column;
  box-shadow: 0 24px 64px -20px rgba(15, 27, 46, .45); overflow: hidden; }
.u-imp-h { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--sk); flex-wrap: wrap; }
.u-imp-h b { font-size: 14px; color: var(--st); }
.u-imp-sum { font-size: 12px; color: var(--mu); }
.u-imp-leg { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 8px 16px; font-size: 11px; color: var(--mu); align-items: center; }
.u-imp-leg i { display: inline-block; width: 18px; height: 9px; border-radius: 2px; margin-right: 4px; vertical-align: middle; }
.u-imp-leg i.before { border: 1.5px dashed var(--mu); } .u-imp-leg i.after { background: var(--u-dd); }
.u-imp-leg i.later { background: var(--u-crit); } .u-imp-leg i.earlier { background: var(--u-good); }
.u-imp-leg i.status { background: var(--u-ai); } .u-imp-leg i.retract { background: var(--u-warn); }
.u-imp-leg i.tie { background: var(--u-dd); box-shadow: 0 0 0 2px var(--u-bl); }
.u-imp-grid { overflow: auto; flex: 1 1 auto; position: relative; }
.u-imp-head, .u-imp-row, .u-imp-wbs { display: grid; grid-template-columns: 340px 1fr; min-width: 1000px; }
.u-imp-head { position: sticky; top: 0; z-index: 3; background: var(--p); border-bottom: 1px solid var(--sk); height: 26px; }
.u-imp-head .u-imp-l { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--mu); padding: 6px 10px; }
.u-imp-t { position: relative; }
.u-imp-tick { position: absolute; top: 6px; font-size: 10px; font-weight: 700; color: var(--mu); border-left: 1px solid var(--sk); padding-left: 3px; }
.u-imp-dd { position: absolute; top: 6px; font-size: 10px; font-weight: 800; color: var(--u-dd); transform: translateX(3px); }
.u-imp-body { position: relative; }
.u-imp-ddl { position: absolute; top: 0; bottom: 0; width: 0; border-left: 1.5px dashed var(--u-dd); pointer-events: none; z-index: 2; }
.u-imp-wbs { background: var(--u-wbs-bg); color: var(--u-wbs-text); font-size: 11px; font-weight: 800; min-height: 22px; }
.u-imp-wbs .u-imp-l { padding: 4px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.u-imp-row { min-height: 24px; border-bottom: 1px solid color-mix(in srgb, var(--sk) 60%, transparent); }
.u-imp-row .u-imp-l { font-size: 11.5px; color: var(--st); padding: 4px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.u-imp-row.hit { background: color-mix(in srgb, var(--u-bl) 10%, transparent); }
.u-imp-tag { font-style: normal; font-size: 9.5px; font-weight: 800; margin-left: 6px; padding: 1px 5px; border-radius: 3px; color: #fff; }
.u-imp-tag.later { background: var(--u-crit); } .u-imp-tag.earlier { background: var(--u-good); } .u-imp-tag.status { background: var(--u-ai); }
.u-imp-tag.retract { background: var(--u-warn); } .u-imp-tag.tie { background: var(--u-dd); }
.u-imp-b { position: absolute; top: 5px; height: 14px; border-radius: 3px; }
.u-imp-b.before { border: 1.5px dashed var(--mu); background: transparent; top: 4px; height: 16px; }
.u-imp-b.after { background: color-mix(in srgb, var(--u-dd) 55%, transparent); overflow: hidden; }
.u-imp-b.after span { font-size: 9px; font-weight: 700; color: #fff; padding-left: 3px; white-space: nowrap; line-height: 14px; }
.u-imp-b.after.later { background: var(--u-crit); } .u-imp-b.after.earlier { background: var(--u-good); }
.u-imp-b.after.status { background: var(--u-ai); } .u-imp-b.after.retract { background: var(--u-warn); }
.u-imp-b.after.tie { background: var(--u-dd); box-shadow: 0 0 0 2px var(--u-bl); }
.u-oos-imp-open { margin-left: 12px; }

/* ── Import from P6 (update-p6-import.js) ─────────────────────────────── */
.upd .u-p6i-pick { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 4px 0 14px; }
.upd .u-p6i-file { cursor: pointer; }
.upd .u-p6i-fn { font-weight: 600; font-size: 13px; }
.upd .u-p6i-sel { padding: 5px 8px; border-radius: 6px; border: 1px solid var(--u-line, #d0d7de); background: transparent; color: inherit; }
.upd .u-p6i-sec { border-top: 1px solid var(--u-line, #e3e8ee); }
.upd .u-p6i-sec:first-child { border-top: 0; }
.upd .u-p6i-sh { display: flex; align-items: center; gap: 8px; width: 100%; padding: 9px 2px; border: 0; background: none;
  color: inherit; font-weight: 600; font-size: 13px; cursor: pointer; text-align: left; }
.upd .u-p6i-sh .n { margin-left: 4px; padding: 1px 8px; border-radius: 10px; background: rgba(99,102,241,.14); font-size: 11px; }
.upd .u-p6i-car { width: 12px; opacity: .6; }
.upd .u-p6i-tw { max-height: 360px; overflow: auto; margin-bottom: 10px; }
.upd .u-p6i-t { width: 100%; border-collapse: collapse; font-size: 12px; }
.upd .u-p6i-t th { position: sticky; top: 0; background: var(--u-card, #fff); text-align: left; font-weight: 600;
  padding: 6px 8px; border-bottom: 1px solid var(--u-line, #e3e8ee); opacity: .8; }
.upd .u-p6i-t td { padding: 5px 8px; border-bottom: 1px solid rgba(127,127,127,.12); vertical-align: top; }
.upd .u-p6i-t td.id { font-family: ui-monospace, monospace; white-space: nowrap; }
.upd .u-p6i-t s { opacity: .55; }
.upd .u-p6i-t tr.rv td { opacity: .5; }
.upd .u-p6i-more { padding: 6px 8px; font-size: 12px; opacity: .7; }
.upd .u-p6i-tag { padding: 1px 7px; border-radius: 9px; font-size: 11px; font-weight: 600; }
.upd .u-p6i-tag.add { background: rgba(22,163,74,.15); color: #15803d; }
.upd .u-p6i-tag.rem { background: rgba(220,38,38,.14); color: #b91c1c; }
.upd .u-p6i-tag.chg { background: rgba(217,119,6,.15); color: #b45309; }
.upd .u-p6i-modes { display: grid; gap: 8px; margin-bottom: 8px; }
.upd .u-p6i-done { padding: 10px 12px; margin-bottom: 12px; border-radius: 8px; background: rgba(22,163,74,.12); font-size: 13px; }

/* ── Update History: the Data Date line (update-reports.js screenHistory) ── */
.upd .u-p6i-back { margin-bottom: 8px; }
.upd .u-hx-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin: 2px 0 12px; }
.upd .u-hx-strip .k { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2); padding: 11px 14px;
  display: flex; flex-direction: column; gap: 3px; }
.upd .u-hx-strip .k > span { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.upd .u-hx-strip .k b { font-family: var(--u-mono); font-size: 20px; font-weight: 800; color: var(--st); line-height: 1.15; }
.upd .u-hx-strip .k b small { font-size: 12px; color: var(--mu); font-weight: 700; }
.upd .u-hx-strip .k em { font-style: normal; font-size: 10.5px; color: var(--mu); font-weight: 600; }
.upd .u-hx .bad, .upd .u-hx-strip .bad { color: var(--u-crit) !important; }
.upd .u-hx .good, .upd .u-hx-strip .good { color: var(--u-good) !important; }
.upd .u-hx-bar { display: block; height: 5px; border-radius: 3px; background: var(--sk2); overflow: hidden; margin-top: 3px; }
.upd .u-hx-bar i { display: block; height: 100%; border-radius: 3px; }
.upd .u-hx-bar.act i { background: var(--u-ok); }
.upd .u-hx-bar.pln i { background: var(--u-dd); opacity: .55; }

.upd .u-hx-trend { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2); padding: 8px 12px 6px; margin-bottom: 16px; position: relative; }
.upd .u-hx-trend svg { width: 100%; height: auto; max-height: 150px; display: block; overflow: visible; }
.upd .u-hx-trend .g { stroke: var(--sk2); stroke-width: 1; }
.upd .u-hx-trend .gl { font-size: 11px; fill: var(--mu); text-anchor: end; }
.upd .u-hx-trend .xl { font-size: 11px; fill: var(--mu); text-anchor: middle; font-weight: 700; }
.upd .u-hx-trend path { fill: none; stroke-width: 2.4; stroke-linejoin: round; }
.upd .u-hx-trend path.act { stroke: var(--u-ok); }
.upd .u-hx-trend path.pln { stroke: var(--u-dd); stroke-dasharray: 5 4; opacity: .7; }
.upd .u-hx-trend circle.pt { fill: var(--p); stroke: var(--u-ok); stroke-width: 2; }
.upd .u-hx-trend circle.cur { fill: var(--u-ok); stroke: var(--p); stroke-width: 2; }
.upd .u-hx-trend .lg { position: absolute; top: 8px; right: 14px; display: flex; gap: 12px; font-size: 10px; font-weight: 700; color: var(--mu); }
.upd .u-hx-trend .lg span::before { content: ''; display: inline-block; width: 14px; height: 3px; border-radius: 2px; margin-right: 5px; vertical-align: middle; }
.upd .u-hx-trend .lg .act::before { background: var(--u-ok); }
.upd .u-hx-trend .lg .pln::before { background: var(--u-dd); opacity: .7; }

.upd .u-hx { display: flex; flex-direction: column; }
.upd .u-hx-row { display: grid; grid-template-columns: 124px 52px minmax(0, 1fr); gap: 0 14px; align-items: stretch; }
.upd .u-hx-date { text-align: right; padding-top: 14px; }
.upd .u-hx-date b { display: block; font-family: var(--u-mono); font-size: 15px; font-weight: 800; color: var(--st); }
.upd .u-hx-date span { display: block; font-size: 9px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--u-dd); margin-top: 2px; }
.upd .u-hx-date em { display: block; font-style: normal; font-size: 9.5px; color: var(--mu); margin-top: 6px; line-height: 1.35; }
.upd .u-hx-row.bl .u-hx-date span { color: var(--u-warn); }
.upd .u-hx-row.orig .u-hx-date span { color: var(--mu); }
.upd .u-hx-spine { position: relative; display: flex; flex-direction: column; align-items: center; }
.upd .u-hx-spine::before { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 4px; margin-left: -2px;
  background: linear-gradient(var(--u-dd), rgba(47, 107, 216, .35)); border-radius: 2px; }
.upd .u-hx-row:first-child .u-hx-spine::before { top: 18px; }
.upd .u-hx-row:last-child .u-hx-spine::before { bottom: calc(100% - 26px); }
.upd .u-hx-node { position: relative; z-index: 1; margin-top: 8px; width: 38px; height: 38px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font-family: var(--u-mono); font-weight: 800; font-size: 13px;
  background: var(--p); color: var(--u-dd); border: 3px solid var(--u-dd); box-shadow: 0 0 0 4px var(--p); }
.upd .u-hx-row.cur .u-hx-node { background: var(--u-dd); color: #fff; box-shadow: 0 0 0 4px var(--p), 0 0 0 8px rgba(47, 107, 216, .22); }
.upd .u-hx-row.open .u-hx-node { border-color: var(--u-warn); color: var(--u-warn); }
.upd .u-hx-row.open.cur .u-hx-node { background: var(--u-warn); color: #fff; box-shadow: 0 0 0 4px var(--p), 0 0 0 8px rgba(184, 105, 62, .25); }
.upd .u-hx-row.rcv .u-hx-node { border-color: #7A2E8E; color: #7A2E8E; }
.upd .u-hx-node.bl { width: 26px; height: 26px; margin-top: 12px; border-radius: 6px; transform: rotate(0); font-size: 12px;
  border-color: var(--u-warn); color: var(--u-warn); }
.upd .u-hx-node.orig { width: 24px; height: 24px; border-color: var(--mu); color: var(--mu); font-size: 11px; }
.upd .u-hx-gap { position: absolute; bottom: 2px; z-index: 2; font-size: 9px; font-weight: 800; color: var(--u-dd);
  background: var(--p); border: 1px solid rgba(47, 107, 216, .35); border-radius: 10px; padding: 2px 7px; white-space: nowrap; }

.upd .u-hx-card { background: var(--p); border: 1px solid var(--sk); border-left: 4px solid var(--u-dd); border-radius: var(--r2);
  padding: 12px 15px 10px; margin: 8px 0 18px; box-shadow: 0 1px 2px rgba(15, 27, 46, .04); transition: box-shadow .15s; }
.upd .u-hx-card:hover { box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 10px 26px -16px rgba(15, 27, 46, .28); }
.upd .u-hx-row.cur .u-hx-card { box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 12px 30px -16px rgba(47, 107, 216, .45); }
.upd .u-hx-row.open .u-hx-card { border-left-color: var(--u-warn); }
.upd .u-hx-row.rcv .u-hx-card { border-left-color: #7A2E8E; }
.upd .u-hx-card.bl { border-left-color: var(--u-warn); background: var(--p2, var(--p)); padding-top: 10px; }
.upd .u-hx-card.orig { border-left-color: var(--mu); background: var(--p2, var(--p)); }
.upd .u-hx-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.upd .u-hx-top .ttl { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; min-width: 0; }
.upd .u-hx-top .ttl b, .upd .u-hx-name { font-size: 16px !important; letter-spacing: 0 !important; text-transform: none !important; font-weight: 800; color: var(--st) !important; }
.upd .u-hx-top .ttl .nm { font-size: 12.5px; color: var(--mu); font-weight: 600; }
.upd .u-hx-top .kd { font-size: 9px; font-weight: 800; letter-spacing: .1em; color: var(--mu); }
.upd .u-hx-ren { border: 0; background: none; color: var(--mu); cursor: pointer; font-size: 13px; padding: 2px 4px; border-radius: 5px; }
.upd .u-hx-ren:hover { background: var(--sk2); color: var(--st); }
.upd .u-hx-pill { font-size: 9px; font-weight: 800; letter-spacing: .06em; padding: 3px 8px; border-radius: 10px;
  background: var(--sk2); color: var(--mu); }
.upd .u-hx-pill.cur { background: var(--u-dd); color: #fff; }
.upd .u-hx-pill.view { background: rgba(47, 107, 216, .14); color: var(--u-dd); }
.upd .u-hx-pill.open { background: rgba(184, 105, 62, .16); color: var(--u-warn); }
.upd .u-hx-pill.rcv { background: #7A2E8E; color: #fff; }
.upd .u-hx-pill.act { background: rgba(24, 141, 104, .15); color: var(--u-good); }
.upd .u-hx-open.on { font-size: 11px; font-weight: 800; color: var(--u-dd); padding: 6px 12px; border-radius: 8px; background: rgba(47, 107, 216, .1); }
.upd .u-hx-met { display: grid; grid-template-columns: minmax(170px, 1.4fr) repeat(4, minmax(100px, 1fr)); gap: 10px 18px; margin: 12px 0 8px; }
.upd .u-hx-card.bl .u-hx-met, .upd .u-hx-card.orig .u-hx-met { grid-template-columns: repeat(3, minmax(120px, max-content)); }
.upd .u-hx-met > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.upd .u-hx-met span { font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.upd .u-hx-met b { font-family: var(--u-mono); font-size: 14px; font-weight: 800; color: var(--st); }
.upd .u-hx-met b small { font-size: 11px; color: var(--mu); font-weight: 700; }
.upd .u-hx-met em { font-style: normal; font-size: 10px; font-weight: 700; color: var(--mu); }
.upd .u-hx-src { margin: 2px 0 6px; display: flex; gap: 5px; flex-wrap: wrap; }
.upd .u-hx-note { font-size: 10.5px; color: var(--mu); margin: 4px 0; padding: 6px 9px; border-radius: 7px; background: var(--sk2); }
.upd .u-hx-note.open { background: rgba(184, 105, 62, .1); color: var(--u-warn); }
.upd .u-hx-note.rcv { background: rgba(122, 46, 142, .09); color: #7A2E8E; }
.upd .u-hx-bar-acts { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; border-top: 1px solid var(--sk2); padding-top: 9px; margin-top: 6px; }
.upd .u-hx-a { font-size: 11px; font-weight: 700; padding: 6px 12px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--sk); background: var(--p); color: var(--st); transition: background .12s, border-color .12s; }
.upd .u-hx-a:hover:not([disabled]) { border-color: var(--u-dd); color: var(--u-dd); }
.upd .u-hx-a[disabled] { opacity: .45; cursor: not-allowed; }
.upd .u-hx-a.hx-pri { background: var(--u-dd); border-color: var(--u-dd); color: #fff; padding: 7px 18px; }
.upd .u-hx-a.hx-pri:hover:not([disabled]) { filter: brightness(1.08); color: #fff; }
.upd .u-hx-a.hx-rcv { color: #7A2E8E; border-color: rgba(122, 46, 142, .35); }
.upd .u-hx-a.hx-warn { color: var(--u-warn); border-color: rgba(184, 105, 62, .4); }
.upd .u-hx-a.hx-bad { color: var(--u-crit); border-color: rgba(198, 70, 43, .4); }
.upd .u-hx-a.hx-bad:hover:not([disabled]) { background: var(--u-crit); color: #fff; border-color: var(--u-crit); }
.upd .u-hx-del { font-size: 10.5px; color: var(--mu); margin: 0 0 12px 190px; }
@media (max-width: 900px) {
  .upd .u-hx-row { grid-template-columns: 78px 40px minmax(0, 1fr); gap: 0 8px; }
  .upd .u-hx-met { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .upd .u-hx-del { margin-left: 0; }
}
/* opened from the Recovery tab: the way back */
.u-rcvback { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; padding: 9px 12px; border-radius: 10px;
  background: rgba(122, 46, 142, .08); border: 1px solid rgba(122, 46, 142, .3); font-size: 12px; color: var(--st); }
.u-rcvback span { flex: 1; }
/* the Gantt's chart cell is a TABLE CELL. `.u-tl` is also the History
   timeline's flex column (above), and the cell took that display: a flex
   td is no longer a table cell, so it stopped following its column — in a
   table stretched to its pane the rows' chart ended short of the ruler and
   the Data Date and target lines broke at the header. */
table.u-g td.u-tl { display: table-cell; }
.upd .u-hx-pill.p6 { background: rgba(31, 95, 168, .14); color: #1F5FA8; }

/* ── Update History, two panes (update-reports.js screenHistory) ──────── */
.upd .u-hx-ph { margin-bottom: 8px; }
.upd .u-hx-ph .sub { max-width: none; }
.upd .u-hx-strip { gap: 8px; margin: 0 0 10px; }
.upd .u-hx-strip .k { padding: 8px 12px; gap: 1px; flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 10px; }
.upd .u-hx-strip .k > span { width: 100%; }
.upd .u-hx-strip .k b { font-size: 17px; }
.upd .u-hx2 { display: grid; grid-template-columns: minmax(300px, 360px) minmax(0, 1fr); gap: 12px; align-items: start; }
.upd .u-hx2-rail { background: var(--p); border: 1px solid var(--sk); border-radius: var(--r2); overflow: hidden; }
.upd .u-hx2-rh { display: flex; align-items: baseline; justify-content: space-between; padding: 9px 12px; border-bottom: 1px solid var(--sk2);
  font-size: 10px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--u-dd); }
.upd .u-hx2-rh span { font-size: 10px; letter-spacing: 0; text-transform: none; color: var(--mu); font-weight: 600; }
.upd .u-hx2-list { max-height: calc(100vh - 330px); min-height: 220px; overflow-y: auto; padding: 4px 0; position: relative; }
.upd .u-hx2-it { position: relative; display: grid; grid-template-columns: 70px 30px minmax(0, 1fr) auto; align-items: center; gap: 0 8px;
  width: 100%; padding: 6px 10px 6px 6px; border: 0; border-left: 3px solid transparent; background: none; color: inherit;
  text-align: left; cursor: pointer; font: inherit; }
.upd .u-hx2-it:hover { background: rgba(47, 107, 216, .05); }
.upd .u-hx2-it.on { background: rgba(47, 107, 216, .1); border-left-color: var(--u-dd); }
.upd .u-hx2-it.orig { cursor: default; opacity: .8; }
.upd .u-hx2-it .d { text-align: right; line-height: 1.15; }
.upd .u-hx2-it .d b { display: block; font-family: var(--u-mono); font-size: 11.5px; font-weight: 800; color: var(--st); }
.upd .u-hx2-it .d i { font-style: normal; font-size: 9px; font-weight: 700; color: var(--mu); }
.upd .u-hx2-it .sp { position: relative; align-self: stretch; display: flex; align-items: center; justify-content: center; }
.upd .u-hx2-it .sp::before { content: ''; position: absolute; top: -6px; bottom: -6px; left: 50%; width: 3px; margin-left: -1.5px; background: rgba(47, 107, 216, .45); }
.upd .u-hx2-list > :first-child .sp::before { top: 50%; }
.upd .u-hx2-list > :last-child .sp::before { bottom: 50%; }
.upd .u-hx2-it .nd { position: relative; z-index: 1; width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: var(--u-mono); font-size: 10.5px; font-weight: 800; background: var(--p); color: var(--u-dd); border: 2.5px solid var(--u-dd); }
.upd .u-hx2-it.cur .nd { background: var(--u-dd); color: #fff; box-shadow: 0 0 0 3px rgba(47, 107, 216, .22); }
.upd .u-hx2-it.open .nd { border-color: var(--u-warn); color: var(--u-warn); }
.upd .u-hx2-it.open.cur .nd { background: var(--u-warn); color: #fff; }
.upd .u-hx2-it.rcv .nd { border-color: #7A2E8E; color: #7A2E8E; }
.upd .u-hx2-it.p6 .nd { border-color: #1F5FA8; color: #1F5FA8; }
.upd .u-hx2-it .nd.bl { width: 18px; height: 18px; border-radius: 4px; font-size: 9px; border-color: var(--u-warn); color: var(--u-warn); }
.upd .u-hx2-it .nd.orig { width: 16px; height: 16px; font-size: 9px; border-color: var(--mu); color: var(--mu); }
.upd .u-hx2-it .tx { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.upd .u-hx2-it .tx b { font-size: 12.5px; font-weight: 800; color: var(--st); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.upd .u-hx2-it .tx em { font-style: normal; font-size: 10px; font-weight: 600; color: var(--mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.upd .u-hx2-it .tx .u-hx-bar { height: 3px; margin-top: 2px; max-width: 150px; }
.upd .u-hx2-it.bl { padding-top: 3px; padding-bottom: 3px; }
.upd .u-hx2-it.bl .tx b { font-size: 11px; color: var(--u-warn); }
.upd .u-hx2-it .tg { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.upd .u-hx2-it .tg i { font-style: normal; font-size: 8.5px; font-weight: 800; letter-spacing: .05em; padding: 1px 6px; border-radius: 8px; background: var(--sk2); color: var(--mu); }
.upd .u-hx2-it .tg i.cur { background: var(--u-dd); color: #fff; }
.upd .u-hx2-it .tg i.view { background: rgba(47, 107, 216, .15); color: var(--u-dd); }
.upd .u-hx2-it .tg i.open { background: rgba(184, 105, 62, .16); color: var(--u-warn); }
.upd .u-hx2-it .tg i.rcv { background: #7A2E8E; color: #fff; }
.upd .u-hx2-it .tg i.p6 { background: rgba(31, 95, 168, .14); color: #1F5FA8; }
.upd .u-hx2-it .bad { color: var(--u-crit); } .upd .u-hx2-it .good { color: var(--u-good); }
.upd .u-hx2-rail .u-hx-del { margin: 0; padding: 7px 12px; border-top: 1px solid var(--sk2); }

.upd .u-hx2-det { background: var(--p); border: 1px solid var(--sk); border-top: 4px solid var(--u-dd); border-radius: var(--r2);
  padding: 14px 18px 12px; box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 12px 30px -18px rgba(47, 107, 216, .4);
  max-height: calc(100vh - 272px); overflow-y: auto; }
.upd .u-hx2-h { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.upd .u-hx2-big { width: 48px; height: 48px; flex: none; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: var(--u-mono); font-size: 17px; font-weight: 800; background: var(--u-dd); color: #fff; box-shadow: 0 0 0 5px rgba(47, 107, 216, .16); }
.upd .u-hx2-big.open { background: var(--u-warn); box-shadow: 0 0 0 5px rgba(184, 105, 62, .18); }
.upd .u-hx2-big.rcv { background: #7A2E8E; }
.upd .u-hx2-big.bl { border-radius: 10px; background: var(--u-warn); font-size: 20px; }
.upd .u-hx2-h .ttl { min-width: 0; }
.upd .u-hx2-h .l1 { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.upd .u-hx2-h .l1 b { font-size: 19px; font-weight: 800; color: var(--st) !important; text-transform: none !important; letter-spacing: 0 !important; }
.upd .u-hx2-h .l2 { font-size: 11.5px; color: var(--mu); margin-top: 3px; }
.upd .u-hx2-h .l2 b { color: var(--u-dd); font-family: var(--u-mono); }
.upd .u-hx2-det .u-hx-met { margin: 14px 0 10px; padding: 12px 0; border-top: 1px solid var(--sk2); border-bottom: 1px solid var(--sk2); }
.upd .u-hx2-det .u-hx-met b { font-size: 16px; }
.upd .u-hx2-det .u-hx-trend { border: 0; padding: 0 0 4px; margin: 0 0 8px; }
.upd .u-hx2-det .u-hx-trend svg { max-height: 130px; }
.upd .u-hx-trend .sel { stroke: var(--u-dd); stroke-width: 1.5; stroke-dasharray: 3 3; opacity: .6; }
.upd .u-hx-trend .xl.on { fill: var(--u-dd); }
.upd .u-hx-src { align-items: center; }
.upd .u-hx-src > span { font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); margin-right: 4px; }
.upd .u-hx2-acts { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--sk2); }
.upd .u-hx2-acts .grp { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.upd .u-hx2-acts .grp > span { font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--mu); margin-right: 2px; }
@media (max-width: 1000px) {
  .upd .u-hx2 { grid-template-columns: 1fr; }
  .upd .u-hx2-list, .upd .u-hx2-det { max-height: none; }
}

/* ── Import from P6 as a floating window ─────────────────────────────── */
.u-mod.u-p6i-mod { max-width: 1180px; }
.u-mod.u-p6i-mod .u-mod-b { max-height: calc(90vh - 120px); overflow-y: auto; }
.upd .u-p6i-intro { font-size: 12px; color: var(--mu); margin-bottom: 10px; line-height: 1.45; }
.u-ov:has(.u-p6i-mod) { padding-top: 84px; }
.u-mod.u-p6i-mod .u-mod-b { max-height: calc(100vh - 220px); }
.upd .u-p6i-mod .u-p6i-modes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* a recovery / P6 import that set the new baseline: one entry, marked */
.upd .u-hx2-it .nd i.nbl { position: absolute; right: -7px; bottom: -6px; font-style: normal; font-size: 9px; line-height: 1;
  width: 14px; height: 14px; border-radius: 4px; display: flex; align-items: center; justify-content: center;
  background: var(--u-warn); color: #fff; box-shadow: 0 0 0 2px var(--p); }
.upd .u-hx2-it .tx .nbl-l { font-size: 9.5px; font-weight: 800; color: var(--u-warn); letter-spacing: .02em; }
.upd .u-hx-nbl { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; padding: 10px 12px; border-radius: 10px;
  background: rgba(184, 105, 62, .08); border: 1px solid rgba(184, 105, 62, .35); }
.upd .u-hx-nbl .ic { width: 30px; height: 30px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center;
  background: var(--u-warn); color: #fff; font-size: 14px; }
.upd .u-hx-nbl .tx { flex: 1; min-width: 0; }
.upd .u-hx-nbl .l1 { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 700; color: var(--st); }
.upd .u-hx-nbl .l1 b { color: var(--u-warn); font-family: var(--u-mono); }
.upd .u-hx-nbl .l2 { font-size: 10.5px; color: var(--mu); margin-top: 2px; }
.upd .u-hx-nbl .ac { display: flex; gap: 6px; }
.upd .u-hx2-it.rcv.cur .nd { background: #7A2E8E; border-color: #7A2E8E; color: #fff; box-shadow: 0 0 0 3px rgba(122, 46, 142, .22); }
.upd .u-hx2-it.p6.cur .nd { background: #1F5FA8; border-color: #1F5FA8; color: #fff; }

/* Manual Update — true spreadsheet cells; scoped to Update Center only. */
#updOut .u-g td[data-ucell] {
  cursor: cell;
  position: relative;
  transition: background-color .1s ease;
}
#updOut .u-g td[data-ucell]:hover,
#updOut .u-g td[data-ucell]:focus-visible {
  background: color-mix(in srgb, var(--u-dd, #2f6bd8) 8%, var(--p, white));
  outline: 1px solid color-mix(in srgb, var(--u-dd, #2f6bd8) 35%, transparent);
  outline-offset: -1px;
}
#updOut .u-g td[data-ucell="status"] { cursor: pointer; }
#updOut .u-g td[data-ucell="status"]:not(.u-editing)::after {
  content: "⌄";
  float: right;
  font-size: 11px;
  opacity: .45;
}
#updOut .u-g td.u-editing { padding: 2px 3px !important; background: var(--p, white) !important; }
#updOut .u-g td.u-editing .u-cellin {
  display: block;
  width: 100%;
  min-width: 76px;
  max-width: 100%;
  box-sizing: border-box;
  height: 27px;
  padding: 2px 5px;
  margin: 0;
  font: inherit;
  font-size: 11px;
  color: var(--st, #0f1b2e);
  background: var(--p, white);
  border: 1px solid var(--u-dd, #2f6bd8);
  border-radius: 4px;
  outline: 2px solid color-mix(in srgb, var(--u-dd, #2f6bd8) 16%, transparent);
}
#updOut .u-g td.u-editing .u-cellin.status { min-width: 102px; cursor: pointer; }
#updOut .u-g td.u-stg { box-shadow: inset 0 -2px 0 var(--u-dd, #2f6bd8); }
@media (pointer: coarse) {
  #updOut .u-g td[data-ucell] { min-height: 34px; touch-action: manipulation; }
  #updOut .u-g td.u-editing .u-cellin { height: 36px; font-size: 16px; }
}

/* First-gesture native status and calendar hit targets. The P6 status chip
   and Actual/Forecast display remain visible; the browser owns the picker.
   A transparent overlay is NOT a button that requires focus then another tap. */
#updOut .u-g td[data-ucell="status"],
#updOut .u-g td[data-ucell="actualStart"],
#updOut .u-g td[data-ucell="actualFinish"] {
  position: relative;
}
#updOut .u-g td .u-cellnative {
  position: absolute;
  display: block;
  inset: 0;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  opacity: 0.015;
  padding: 0;
  margin: 0;
  border: 0;
  cursor: pointer;
  z-index: 2;
}
#updOut .u-g td:has(.u-cellnative):focus-within {
  outline: 2px solid var(--u-dd, #2f6bd8);
  outline-offset: -2px;
}
#updOut .u-g td input.u-cellnative::-webkit-calendar-picker-indicator {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: pointer;
}
#updOut .u-g td[data-ucell="actualStart"]:has(.u-cellnative),
#updOut .u-g td[data-ucell="actualFinish"]:has(.u-cellnative) { touch-action: manipulation; }

/* ── UPDATE CENTER SCROLL STABILITY ──────────────────────────────────
   Summary collapse is user-initiated (Focus View), never driven by the
   grid's scrollTop. Large max-height/margin transitions changed the grid
   height in multiple frames, triggering ResizeObserver + fitGrid repeatedly
   while a finger was dragging. An instantaneous, one-time switch avoids
   layout work during the gesture without affecting other tabs. */
#updOut .u-rail,
#updOut .u-sc2,
#updOut .u-mstrip {
  transition: none !important;
}
#updOut .u-gscroll {
  overflow-anchor: none;
  -webkit-overflow-scrolling: touch;
}

/* ═══ UPDATE CENTER — SINGLE NATIVE SCROLLPORT ═══════════════════════
   Rail, full-size summary, methods and activity grid are siblings INSIDE
   one vertical+horizontal scrollport. No nested Y scroll, scroll hijacks,
   fold animations, or per-scroll resize calculations. Horizontal overflow
   remains native, so the name (left) and Gantt (right) stay frozen.
   Only the two-row table headings stick vertically once reached. */
#updOut .u-center-scroll.u-gscroll {
  box-sizing: border-box;
  height: calc(100vh - var(--app-content-top, 80px) - 16px);
  height: calc(100dvh - var(--app-content-top, 80px) - 16px);
  min-height: 240px;
  width: 100%;
  overflow: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
  overflow-anchor: auto;
}
#updOut .u-center-scroll .u-scroll-chrome,
#updOut .u-center-scroll .u-scroll-summary,
#updOut .u-center-scroll .u-gtools {
  position: sticky;
  left: 0;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
}
#updOut .u-center-scroll .u-rail {
  position: static;
  top: auto;
}
/* The table's horizontal overflow belongs to the shared scrollport.
   Clipping either ancestor would block native CSS sticky headers. */
#updOut .u-center-scroll .u-gwrap,
#updOut .u-center-scroll .u-gviewport {
  overflow: visible;
}
#updOut .u-center-scroll .u-gwrap {
  border-radius: 0;
}
#updOut .u-center-scroll .u-gviewport {
  position: static;
  height: auto;
  min-height: 0;
}
/* The grouped band sticks at 0 and the sub row under the same height
   token. This is the SAME header, not an unsynchronised cloned overlay. */
#updOut .u-center-scroll table.u-g thead th { top: 0; }
#updOut .u-center-scroll table.u-g thead tr.sub th { top: var(--u-hgrp); }
#updOut .u-center-scroll table.u-g thead tr.grp th[rowspan] { top: 0; }
#updOut .u-center-scroll table.u-g thead th.stk,
#updOut .u-center-scroll table.u-g thead th.u-tlh-c,
#updOut .u-center-scroll table.u-g thead tr.grp th.g.tl {
  z-index: 12;
}
/* Keep the exact full-size summary. The sticky-left positioning above
   prevents a horizontal pan through dates from shifting the overview. */

/* CHANGE REVIEW — RESPONSIVE TABLET FIT (isolated from Update Center grid).
   The Update Center reserves a sticky right Gantt pane and a min-width table.
   Review needs an ordinary full-width chart column, not a frozen pane hiding
   the actual-start/finish/progress/decision columns on tablet. */
.u-review-wrap {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  container: nexora-review / inline-size;
}
.u-review-wrap > .u-review-scroll {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overscroll-behavior-x: contain;
}
.u-review-mini-axis { display: none; }
.upd .u-review-tools { max-width: 100%; min-width: 0; flex-wrap: wrap; }
.upd .u-review-tools .u-sp { flex: 1 1 12px; }

@container nexora-review (max-width: 1230px) {
  .u-review-wrap table.u-g.chg,
  .u-review-wrap table.u-g.chg.tl:not(.fold) {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100%;
    table-layout: fixed;
  }
  .u-review-wrap table.u-g.chg th {
    box-sizing: border-box;
    min-width: 0 !important;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.2;
    font-size: 7.5px;
    letter-spacing: 0;
    padding: 5px 3px;
    vertical-align: middle;
  }
  .u-review-wrap table.u-g.chg td {
    box-sizing: border-box;
    min-width: 0;
    padding: 5px 3px;
    font-size: 9px;
    line-height: 1.25;
    overflow-wrap: anywhere;
  }
  /* Override the Update Center's frozen-right timeline ONLY for Review. */
  .u-review-wrap table.u-g.chg.tl:not(.fold) td.u-tl {
    position: relative;
    right: auto;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
  }
  .u-review-wrap table.u-g.chg.tl:not(.fold) th.u-tlh-c {
    position: sticky;
    top: 0;
    right: auto;
    width: 15% !important;
    min-width: 0 !important;
    max-width: none !important;
    z-index: 8;
  }
  .u-review-wrap table.u-g.chg.tl th:nth-child(1) { width: 6% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(2) { width: 23% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(3) { width: 8% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(4) { width: 7% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(5) { width: 7% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(6) { width: 7% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(7) { width: 5% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(8) { width: 9% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(9) { width: 17% !important; }
  .u-review-wrap table.u-g.chg.tl th:nth-child(10) { width: 11% !important; }

  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(1) { width: 7% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(2) { width: 21% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(3) { width: 11% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(4) { width: 10% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(5) { width: 10% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(6) { width: 10% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(7) { width: 8% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(8) { width: 11% !important; }
  .u-review-wrap table.u-g.chg:not(.tl) th:nth-child(9) { width: 12% !important; }

  .u-review-wrap table.u-g.chg .u-aid,
  .u-review-wrap table.u-g.chg .u-dl,
  .u-review-wrap table.u-g.chg .u-dl s,
  .u-review-wrap table.u-g.chg .u-dl b { font-size: 9px; }
  .u-review-wrap table.u-g.chg .u-dl { gap: 2px; max-width: 100%; flex-wrap: wrap; }
  .u-review-wrap table.u-g.chg .u-dl:not(.same) { flex-direction: column; align-items: flex-start; }
  .u-review-wrap table.u-g.chg .u-dl s,
  .u-review-wrap table.u-g.chg .u-dl b { white-space: nowrap; }
  .u-review-wrap table.u-g.chg .u-name {
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .u-review-wrap table.u-g.chg .u-src { font-size: 7.5px; padding: 1px 3px; }
  .u-review-wrap table.u-g.chg .u-chip { font-size: 7.5px; padding: 2px 3px; letter-spacing: 0; }
  .u-review-wrap table.u-g.chg .u-pgd { min-width: 0; gap: 2px; }
  .u-review-wrap table.u-g.chg .u-pgd .tk { min-width: 10px; }
  .u-review-wrap table.u-g.chg .u-pgd .n { width: 29px; }
  .u-review-wrap table.u-g.chg .u-slip { margin-left: 0; padding: 1px 2px; font-size: 8px; }
  .u-review-wrap table.u-g.chg .u-acts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2px;
    width: 100%;
  }
  .u-review-wrap table.u-g.chg .u-a {
    padding: 4px 1px;
    font-size: 8px;
    line-height: 1.1;
    min-width: 0;
    min-height: 28px;
    white-space: nowrap;
  }
  .u-review-wrap table.u-g.chg .u-tlh .mo { font-size: 7px; padding-left: 2px; }
}

/* Portrait and narrow multi-window tablets: every value remains visible,
   but rows reflow into compact labelled grids rather than clipping dates. */
@container nexora-review (max-width: 820px) {
  .u-review-wrap > .u-review-scroll {
    height: auto;
    min-height: 0;
    max-height: 68dvh;
    overflow: auto;
  }
  .u-review-wrap table.u-g.chg,
  .u-review-wrap table.u-g.chg tbody {
    display: block;
    width: 100% !important;
    min-width: 0 !important;
  }
  .u-review-wrap table.u-g.chg thead { display: none; }
  .u-review-wrap table.u-g.chg tr.u-wbs { display: block; width: 100%; }
  .u-review-wrap table.u-g.chg tr.u-wbs td {
    display: block;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
  }
  .u-review-wrap table.u-g.chg tr.u-wbs .tw {
    display: block;
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .u-review-wrap table.u-g.chg tr.ch {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    width: 100%;
    margin: 0;
    border-bottom: 5px solid var(--p2);
  }
  .u-review-wrap table.u-g.chg tr.ch > td {
    display: block;
    width: 100%;
    min-width: 0;
    height: auto;
    padding: 6px 7px;
    border-bottom: 1px solid var(--u-rule-lite);
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .u-review-wrap table.u-g.chg tr.ch > td::before {
    content: attr(data-review-label);
    display: block;
    margin-bottom: 4px;
    font-size: 8px;
    line-height: 1.1;
    font-weight: 800;
    letter-spacing: .025em;
    text-transform: uppercase;
    color: var(--mu);
  }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Activity ID"] { grid-area: 1 / 1 / 2 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Activity Name"] { grid-area: 1 / 2 / 2 / 4; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Status"] { grid-area: 1 / 4 / 2 / 5; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Actual Start"] { grid-area: 2 / 1 / 3 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Actual Finish"] { grid-area: 2 / 2 / 3 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Progress"] { grid-area: 2 / 3 / 3 / 4; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Remaining Duration"] { grid-area: 2 / 4 / 3 / 5; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Forecast Finish"] { grid-area: 3 / 1 / 4 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Timeline"] { grid-area: 3 / 2 / 4 / 4; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Decision"] { grid-area: 3 / 4 / 4 / 5; }
  .u-review-wrap table.u-g.chg:not(.tl) tr.ch > td[data-review-label="Decision"] { grid-area: 3 / 2 / 4 / 5; }
  .u-review-wrap table.u-g.chg tr.ch > td.u-tl { padding: 6px 7px; }
  .u-review-wrap table.u-g.chg .u-review-mini-axis {
    display: block;
    width: 100%;
    height: 26px;
    margin: 2px 0 1px;
  }
  .u-review-wrap table.u-g.chg .u-review-mini-axis .u-tlh {
    height: 26px;
    width: 100%;
  }
  .u-review-wrap table.u-g.chg .u-tlb { height: 28px; }
  .u-review-wrap table.u-g.chg .u-acts { gap: 4px; }
  .u-review-wrap table.u-g.chg .u-a { min-height: 30px; font-size: 8.5px; }
}
@container nexora-review (max-width: 520px) {
  .u-review-wrap table.u-g.chg tr.ch {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Activity ID"] { grid-area: 1 / 1 / 2 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Status"] { grid-area: 1 / 2 / 2 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Activity Name"] { grid-area: 2 / 1 / 3 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Actual Start"] { grid-area: 3 / 1 / 4 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Actual Finish"] { grid-area: 3 / 2 / 4 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Progress"] { grid-area: 4 / 1 / 5 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Remaining Duration"] { grid-area: 4 / 2 / 5 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Forecast Finish"] { grid-area: 5 / 1 / 6 / 2; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Decision"] { grid-area: 5 / 2 / 6 / 3; }
  .u-review-wrap table.u-g.chg:not(.tl) tr.ch > td[data-review-label="Decision"] { grid-area: 5 / 2 / 6 / 3; }
  .u-review-wrap table.u-g.chg tr.ch > td[data-review-label="Timeline"] { grid-area: 6 / 1 / 7 / 3; }
}

/* REVIEW FINISHING — tablets: real left-aligned WBS hierarchy, compact
   tabular values, and action-first conflict resolution. No schedule writes. */
.u-review-wrap table.u-g.chg tr.u-wbs td {
  text-align: left !important;
}
.u-review-wrap table.u-g.chg tr.u-wbs td .tw {
  box-sizing: border-box;
  display: block;
  width: 100%;
  max-width: 100%;
  padding-left: calc(11px + var(--u-review-indent, 0px));
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.u-review-wrap table.u-g.chg tr.u-wbs td .tw .c {
  display: inline-block;
  margin-left: 10px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0;
  opacity: .8;
}
.u-review-wrap table.u-g.chg td[data-review-label="Activity Name"] { text-align: left; }
@container nexora-review (max-width: 1230px) {
  .u-review-wrap table.u-g.chg td[data-review-label="Activity ID"] .u-src {
    display: block;
    width: fit-content;
    margin-top: 2px;
  }
  .u-review-wrap table.u-g.chg td[data-review-label="Forecast Finish"] .u-dl {
    max-width: 100%;
  }
  .u-review-wrap table.u-g.chg td[data-review-label="Activity Name"] .u-chip {
    display: inline-block;
    margin-top: 3px;
  }
}
@container nexora-review (max-width: 820px) {
  .u-review-wrap table.u-g.chg tr.u-wbs td .tw {
    display: block;
    width: 100%;
  }
}

/* Conflict review: focus on the values and choice, not a 9px audit paragraph.
   Only these cards are restyled; Detail view still uses its native panels. */
.u-conflict-section {
  container: review-conflicts / inline-size;
  margin: 21px 0 12px;
  min-width: 0;
}
.u-conflict-section .u-conflict-head {
  padding: 0 1px 11px;
  margin: 0;
  align-items: flex-end;
}
.u-conflict-section .u-conflict-head h2 {
  font-size: 17px;
  letter-spacing: -.02em;
}
.u-conflict-section .u-conflict-head .sub {
  font-size: 11.5px;
  line-height: 1.5;
  max-width: 75ch;
}
.u-conflict-list {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
  overflow: visible;
}
.u-conflict-list .u-rev-conflict {
  display: block;
  padding: 14px 16px 12px;
  min-width: 0;
  border: 1px solid var(--sk);
  border-left: 3px solid var(--u-warn);
  border-radius: var(--r2);
  background: var(--p);
  box-shadow: 0 2px 10px rgba(15, 27, 46, .035);
}
.u-conflict-list .u-rev-conflict.REJECTED { opacity: .7; }
.u-conflict-list .u-rev-conflict.ACCEPTED,
.u-conflict-list .u-rev-conflict.EDITED { background: var(--p); }
.u-rev-conflict .u-rev-t { display: flex; align-items: center; gap: 8px; min-width: 0; }
.u-rev-conflict .u-rev-t .u-rev-id {
  flex: none;
  font: 750 11px/1.4 var(--u-mono);
  color: var(--st);
  border: 1px solid var(--sk);
  background: var(--p2);
  border-radius: 5px;
  padding: 3px 7px;
}
.u-rev-conflict .u-rev-t b {
  font-size: 13px;
  line-height: 1.3;
  font-weight: 800;
  min-width: 0;
}
.u-rev-conflict .u-cf {
  display: grid;
  grid-template-columns: minmax(160px, .85fr) minmax(250px, 1.3fr) minmax(230px, 1fr);
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 13px 14px;
  margin: 12px 0 0;
  border: 1px solid var(--sk);
  border-radius: 9px;
  background: var(--p2);
}
.u-rev-conflict .u-cf.done { background: rgba(36, 180, 126, .05); }
.u-rev-conflict .u-cf-head { min-width: 0; }
.u-rev-conflict .u-cf-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 9px;
}
.u-rev-conflict .u-cf-state {
  border-radius: 4px;
  padding: 3px 6px;
  color: var(--u-warn);
  background: rgba(184, 105, 62, .11);
  font-size: 9px;
  line-height: 1.1;
  font-weight: 800;
  letter-spacing: .035em;
  white-space: nowrap;
}
.u-rev-conflict .u-cf.done .u-cf-state {
  background: rgba(36, 180, 126, .12);
  color: var(--u-good);
}
.u-rev-conflict .u-cf-field { color: var(--st); font-size: 12px; }
.u-rev-conflict .u-cf-hint {
  margin: 5px 0 0;
  color: var(--mu);
  font-size: 10px;
  line-height: 1.45;
}
.u-rev-conflict .u-cf-values {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 14px minmax(0, 1fr);
  align-items: stretch;
  gap: 6px;
  min-width: 0;
}
.u-rev-conflict .u-cf-value {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  gap: 4px;
  padding: 9px 10px;
  border: 1px solid var(--sk);
  background: var(--p);
  border-radius: 7px;
}
.u-rev-conflict .u-cf-value.proposed { border-color: rgba(184, 105, 62, .35); }
.u-rev-conflict .u-cf-value .uk {
  color: var(--mu);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .035em;
  line-height: 1.25;
}
.u-rev-conflict .u-cf-value .v {
  font: 800 12.5px/1.3 var(--u-mono);
  color: var(--st);
  overflow-wrap: anywhere;
}
.u-rev-conflict .u-cf-value.proposed .v { color: var(--u-warn); }
.u-rev-conflict .u-cf-arrow {
  align-self: center;
  text-align: center;
  color: var(--mu);
  font-size: 15px;
}
.u-rev-conflict .u-cf-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px;
  min-width: 0;
}
.u-rev-conflict .u-cf-actions .u-a {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 34px;
  padding: 6px 9px;
  line-height: 1.15;
  font-size: 10px;
  white-space: nowrap;
}
.u-rev-conflict .u-cf-actions .u-a.ed.on {
  background: var(--st);
  color: var(--p);
  border-color: var(--st);
}
.u-rev-conflict .u-rev-audit {
  margin-top: 10px;
  border-top: 1px solid var(--sk2);
  padding-top: 7px;
}
.u-rev-conflict .u-rev-audit summary {
  width: fit-content;
  padding: 3px 0;
  color: var(--mu);
  font-size: 10.5px;
  font-weight: 750;
  cursor: pointer;
}
.u-rev-conflict .u-rev-audit[open] .u-rev-f { margin-top: 9px; }
.u-rev-conflict .u-rev-audit summary:hover { color: var(--st); }
.u-rev-conflict .u-rev-decisions {
  display: flex;
  justify-content: flex-end;
  gap: 7px;
  padding-top: 10px;
  margin-top: 9px;
  border-top: 1px solid var(--sk2);
}
.u-rev-conflict .u-rev-decisions .u-a {
  min-height: 30px;
  padding: 5px 12px;
}

@container review-conflicts (max-width: 980px) {
  .u-rev-conflict .u-cf {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.3fr);
  }
  .u-rev-conflict .u-cf-head { grid-column: 1 / -1; }
  .u-rev-conflict .u-cf-hint { max-width: 75ch; }
  .u-rev-conflict .u-cf-actions { justify-content: flex-start; }
}
@container review-conflicts (max-width: 620px) {
  .u-conflict-list .u-rev-conflict { padding: 12px; }
  .u-rev-conflict .u-cf { grid-template-columns: minmax(0, 1fr); padding: 11px; }
  .u-rev-conflict .u-cf-head,
  .u-rev-conflict .u-cf-values,
  .u-rev-conflict .u-cf-actions { grid-column: 1; }
  .u-rev-conflict .u-cf-actions { justify-content: stretch; }
  .u-rev-conflict .u-cf-actions .u-a { flex: 1 1 30%; }
  .u-rev-conflict .u-rev-t b { flex-basis: 75%; }
  .u-rev-conflict .u-rev-decisions .u-a { flex: 1 1 25%; }
}

/* styles/tabs/recovery.css */
/* ══════════════════════════════════════════════════════════════════════
   RECOVERY — its own tab (tabs/recovery/*)

   ONE SCREEN HIGH. The workspace is exactly the height recovery.tab.js
   measures into --rc-h: a fixed top bar, a fixed step bar, and a stage the
   steps divide into panes. Panes scroll; the page does not.

   No new palette. The root carries .upd as well as .rcv, so every token of
   styles/tabs/update.css — the pinned status colours, the bar colours, the
   chart paper, the gridlines — and the Update grid's own table rules apply
   here unchanged. The Gantt on this tab IS the Update tab's Gantt.
   ══════════════════════════════════════════════════════════════════════ */

.rcv-host { --rc-h: calc(100vh - 120px); }
.upd.rcv {
  --rc-ink: var(--st);
  --rc-line: var(--sk);
  --rc-soft: var(--p2);
  --rc-paper: #FFFDF9;
  --rc-tg: #7A2E8E;
  --rc-ch: #2F6BD8;
  --u-namew: 220px;
  --u-tlw: clamp(300px, 32vw, 760px);
  height: var(--rc-h);
  display: flex; flex-direction: column; gap: 8px;
  min-height: 520px; overflow: hidden; position: relative;
  font-size: 12px;
}
.upd.rcv * { box-sizing: border-box; }
.rcv .rc-sp { flex: 1 1 auto; }
.rcv .mono, .rcv .rc-aid { font-family: var(--u-mono); }
.rcv .rc-note { font-size: 11px; color: var(--mu); line-height: 1.5; }
.rcv .rc-note.pad { padding: 14px 4px; }
.rcv .rc-note.bad { color: var(--u-crit); font-weight: 600; }

/* ── the top bar ─────────────────────────────────────────────────────── */
.rc-top {
  flex: none; display: flex; align-items: stretch; gap: 0; flex-wrap: nowrap;
  background: linear-gradient(180deg, #13223A, #0F1B2E); color: #E7EEF6;
  border-radius: 12px; padding: 0 10px 0 0; min-height: 54px; overflow: hidden;
  box-shadow: 0 10px 26px -18px rgba(15, 27, 46, .7);
}
.rc-brand { display: flex; flex-direction: column; justify-content: center; padding: 8px 16px;
  background: rgba(255, 255, 255, .06); border-right: 1px solid rgba(255, 255, 255, .08); }
.rc-brand .k { font-size: 9px; font-weight: 800; letter-spacing: .14em; color: #8EACC9; }
.rc-brand .v { font-family: var(--u-mono); font-size: 16px; font-weight: 800; letter-spacing: -.2px; }
.rc-tf { display: flex; flex-direction: column; justify-content: center; padding: 6px 14px;
  border-right: 1px solid rgba(255, 255, 255, .07); min-width: 0; }
.rc-tf .k { font-size: 8.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #8EACC9; white-space: nowrap; }
.rc-tf .v { font-size: 13px; font-weight: 700; white-space: nowrap; }
.rc-tf .v em { font-style: normal; font-weight: 500; color: #B8CDE0; margin-left: 5px; font-size: 11.5px; }
.rc-tf.mono .v { font-family: var(--u-mono); }
.rc-tf.bad .v { color: #FF9C84; }
.rc-tf.ok .v { color: #6FE0B4; }
.rc-tf.tg .v { color: #E5B8F0; }
.rc-pill { align-self: center; font-size: 10px; font-weight: 800; letter-spacing: .08em; padding: 6px 12px;
  border-radius: 20px; white-space: nowrap; margin-right: 8px; border: 1px solid transparent; }
.rc-pill.ok { background: rgba(36, 180, 126, .2); border-color: rgba(36, 180, 126, .55); color: #7EF0C3; }
.rc-pill.bad { background: rgba(198, 70, 43, .22); border-color: rgba(255, 140, 110, .5); color: #FFB39E; }
.rc-pill.na { background: rgba(142, 172, 201, .14); border-color: rgba(142, 172, 201, .4); color: #B8CDE0; }
.rc-tb { align-self: center; font-size: 11px; font-weight: 700; padding: 7px 13px; border-radius: 8px; cursor: pointer;
  background: transparent; color: #E7EEF6; border: 1px solid rgba(142, 172, 201, .45); white-space: nowrap; margin-left: 6px; }
.rc-tb:hover { background: rgba(231, 238, 246, .1); }
.rc-sel { font: inherit; font-size: 11.5px; padding: 6px 9px; border-radius: 8px; border: 1px solid var(--sk);
  background: #fff; color: var(--st); min-width: 0; }
.rc-sel.sm { font-size: 11px; padding: 4px 8px; }
.rc-sel.dark { align-self: center; background: rgba(255, 255, 255, .08); color: #E7EEF6; border-color: rgba(142, 172, 201, .4); margin-left: 6px; }
.rc-sel.dark option { color: #0F1B2E; }
.rc-in { font: inherit; font-size: 12px; padding: 7px 9px; border-radius: 8px; border: 1px solid var(--sk); background: #fff; color: var(--st); width: 100%; }
.rc-in.mono { font-family: var(--u-mono); font-size: 11.5px; }
.rc-sel:focus, .rc-in:focus { outline: 2px solid var(--mu); outline-offset: -1px; }
@media (max-width: 1200px) { .rc-tf:nth-of-type(2), .rc-tf:nth-of-type(3) { display: none; } }

/* ── the step bar ────────────────────────────────────────────────────── */
.rc-steps { flex: none; display: flex; align-items: center; gap: 0; background: var(--p); border: 1px solid var(--sk);
  border-radius: 12px; padding: 5px; }
.rc-step { flex: 1 1 0; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 7px 10px; border: 0;
  background: transparent; border-radius: 9px; cursor: pointer; text-align: left; color: var(--mu); transition: background .15s; }
.rc-step:hover:not([disabled]) { background: var(--p2); }
.rc-step[disabled] { opacity: .45; cursor: not-allowed; }
.rc-step .n { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 12px; border: 2px solid var(--sk); color: var(--mu); background: #fff; }
.rc-step .n svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2.4; fill: none; }
.rc-step .t { display: flex; flex-direction: column; min-width: 0; }
.rc-step .t b { font-size: 12px; color: var(--st); white-space: nowrap; }
.rc-step .t em { font-style: normal; font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-step.on, .rc-step.on:hover:not([disabled]) { background: var(--st); color: #B8CDE0; }
.rc-step.on .n { background: #fff; color: var(--st); border-color: #fff; }
.rc-step.on .t b { color: #fff; }
.rc-step.done .n { background: var(--u-good); border-color: var(--u-good); color: #fff; }
.rc-stepline { flex: 0 0 18px; height: 2px; background: var(--sk); border-radius: 2px; }

/* ── the stage and its panes ─────────────────────────────────────────── */
.rc-stage { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 8px; position: relative; }
.rc-split { flex: 1 1 auto; min-height: 0; display: grid; gap: 8px; }
.rc-split.setup { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
.rc-split.diag { grid-template-columns: 340px minmax(0, 1fr); }
.rc-split.build { grid-template-columns: 360px minmax(0, 1fr); }
.rc-split.cmp { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
.rc-split.rev { grid-template-columns: 320px minmax(0, 1fr); }
.rc-split.rev .rc-gpane { --u-namew: 190px; }
.rc-lcol { display: grid; grid-template-rows: minmax(0, 1.05fr) minmax(0, 1fr); gap: 8px; min-height: 0; }
.rc-pane { background: var(--p); border: 1px solid var(--sk); border-radius: 12px; min-height: 0; min-width: 0;
  display: flex; flex-direction: column; overflow: hidden; position: relative;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .04), 0 10px 24px -20px rgba(15, 27, 46, .3); }
.rc-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 10px 12px; overscroll-behavior: contain; }
.rc-form { overflow: auto; padding: 4px 16px 14px; }
.rc-gap { padding: 4px 16px 14px; overflow: auto; }
.rc-ph { display: flex; align-items: baseline; gap: 10px; padding: 11px 12px 7px; flex-wrap: wrap; flex: none; }
.rc-form .rc-ph, .rc-gap .rc-ph { padding-left: 0; padding-right: 0; }
.rc-ph h3 { font-size: 10.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--st); margin: 0; }
.rc-ph span { font-size: 11px; color: var(--mu); }
.rc-ph .rc-segs, .rc-ph .rc-sel { margin-left: auto; }
.rc-ph.sub { padding: 12px 0 6px; }
.rc-foot { flex: none; display: flex; align-items: center; gap: 8px; padding: 8px 10px; background: var(--p);
  border: 1px solid var(--sk); border-radius: 12px; }
.rcv .u-b.lg { font-size: 12px; padding: 8px 16px; }
.rcv .u-b.wide { width: 100%; margin-top: 8px; display: inline-flex; justify-content: center; align-items: center; gap: 7px; }
.rcv .u-b svg { width: 13px; height: 13px; fill: currentColor; }
.rcv .u-b.warnb { border-color: rgba(184, 105, 62, .5); color: var(--u-warn); margin-top: 5px; }

.rc-alert { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 12px;
  border-radius: 10px; background: rgba(198, 70, 43, .08); border: 1px solid rgba(198, 70, 43, .3); color: var(--u-bad); font-size: 12px; }
.rc-alert.inl { margin-top: 8px; }
.rc-x { flex: none; width: 24px; height: 24px; border-radius: 6px; border: 0; background: transparent; cursor: pointer;
  color: var(--mu); display: inline-flex; align-items: center; justify-content: center; }
.rc-x:hover { background: var(--p2); color: var(--st); }
.rc-x svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 2; fill: none; }
.rc-veil { position: absolute; inset: 0; z-index: 40; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; background: rgba(251, 247, 241, .72); backdrop-filter: blur(1.5px); color: var(--st); font-weight: 700; font-size: 12.5px; border-radius: 12px; }
.rc-spin { width: 30px; height: 30px; border-radius: 50%; border: 3px solid var(--sk); border-top-color: var(--st); animation: rcspin .8s linear infinite; }
@keyframes rcspin { to { transform: rotate(360deg); } }
.rc-empty { margin: auto; text-align: center; padding: 40px 20px; max-width: 520px; }
.rc-empty .t { font-size: 15px; font-weight: 800; color: var(--st); margin-bottom: 6px; }
.rc-empty .s { font-size: 12px; color: var(--mu); line-height: 1.6; margin-bottom: 14px; }
.rc-empty.sm { padding: 24px 12px; }
.rc-empty.sm .t { font-size: 13px; }

/* ── controls ────────────────────────────────────────────────────────── */
.rc-segs { display: inline-flex; gap: 2px; padding: 3px; border-radius: 9px; background: var(--p2); border: 1px solid var(--sk); flex-wrap: nowrap; }
.rc-segs.wrap { flex-wrap: wrap; }
.rc-segs.sm .rc-seg { font-size: 11px; padding: 4px 10px; }
.rc-seg { font: inherit; font-size: 11.5px; font-weight: 700; padding: 6px 12px; border-radius: 7px; border: 0; background: transparent;
  color: var(--mu); cursor: pointer; white-space: nowrap; }
.rc-seg:hover { color: var(--st); }
.rc-seg.on { background: #fff; color: var(--st); box-shadow: 0 1px 3px rgba(15, 27, 46, .15); }
.rc-lbl { display: block; font-size: 9.5px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--mu); margin-bottom: 4px; }
.rc-fld { display: block; margin-top: 10px; }
.rc-ro { padding: 7px 10px; border-radius: 8px; background: var(--p2); border: 1px dashed var(--sk); color: var(--st); display: inline-block; margin-left: 8px; }
.rc-fld .rc-segs + .rc-in, .rc-fld .rc-segs + .rc-ro { margin-top: 0; }
.rc-fld .rc-in[type="date"] { width: auto; margin-left: 8px; }
.rc-aid { font-size: 10.5px; font-weight: 700; color: var(--mu); background: none; border: 0; padding: 0 2px; cursor: pointer; }
button.rc-aid:hover { color: var(--st); text-decoration: underline; }
.rc-aid.big { font-size: 12px; color: var(--st); }
.rc-aid.good { color: var(--u-good); } .rc-aid.bad { color: var(--u-crit); } .rc-aid.warn { color: var(--u-warn); }
.rc-tag { display: inline-block; font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 2px 7px;
  border-radius: 10px; background: var(--p2); color: var(--mu); white-space: nowrap; }
.rc-tag.ok { background: rgba(36, 180, 126, .14); color: var(--u-good); }
.rc-tag.bad { background: rgba(198, 70, 43, .12); color: var(--u-crit); }
.rc-ic { display: inline-flex; width: 18px; height: 18px; border-radius: 50%; flex: none; align-items: center; justify-content: center;
  background: var(--p2); color: var(--mu); }
.rc-ic svg { width: 11px; height: 11px; stroke: currentColor; stroke-width: 2.4; fill: none; stroke-linecap: round; }
.rc-ic.ok { background: rgba(36, 180, 126, .16); color: var(--u-good); }
.rc-ic.warn { background: rgba(184, 105, 62, .18); color: var(--u-warn); }
.rc-ic.error { background: rgba(198, 70, 43, .16); color: var(--u-crit); }

/* ── 1 source & target ───────────────────────────────────────────────── */
.rc-srcs { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.rc-srcc { text-align: left; display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; border-radius: 10px; cursor: pointer;
  border: 1px solid var(--sk); background: #fff; color: var(--st); transition: border-color .15s, box-shadow .15s; }
.rc-srcc:hover:not([disabled]) { border-color: var(--mu); }
.rc-srcc[disabled] { cursor: default; opacity: .6; }
.rc-srcc.on { border-color: var(--st); box-shadow: inset 0 0 0 1px var(--st); opacity: 1; }
.rc-srcc .id { font-family: var(--u-mono); font-weight: 800; font-size: 13px; }
.rc-srcc .id em { font-family: inherit; font-style: normal; font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--u-good); margin-left: 7px; }
.rc-srcc .l { font-size: 11px; color: var(--mu); }
.rc-srcc .m { font-size: 11px; font-family: var(--u-mono); }
.rc-srcc .m b { font-family: 'DM Sans', system-ui, sans-serif; font-size: 9px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--mu); margin-right: 5px; }
.rc-trts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.rc-trt { text-align: left; display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; border-radius: 10px; cursor: pointer;
  border: 1px solid var(--sk); background: #fff; }
.rc-trt:hover { border-color: var(--mu); }
.rc-trt.on { border-color: var(--st); box-shadow: inset 0 0 0 1px var(--st); }
.rc-trt.warn.on { border-color: var(--u-crit); box-shadow: inset 0 0 0 1px var(--u-crit); }
.rc-trt .k { font-weight: 800; font-size: 12px; color: var(--st); }
.rc-trt .k em { font-style: normal; font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--u-good); margin-left: 7px; }
.rc-trt .k em.w { color: var(--u-crit); }
.rc-trt .d { font-size: 10.8px; color: var(--mu); line-height: 1.45; }
.rc-big { display: flex; flex-direction: column; align-items: flex-start; padding: 14px 16px; border-radius: 12px; margin-bottom: 8px; border: 1px solid var(--sk); }
.rc-big .n { font-size: 44px; font-weight: 800; letter-spacing: -1.5px; line-height: 1; font-variant-numeric: tabular-nums; }
.rc-big .u { font-size: 13px; font-weight: 700; color: var(--st); margin-top: 4px; }
.rc-big .s { font-size: 11px; color: var(--mu); margin-top: 2px; }
.rc-big.bad { background: linear-gradient(100deg, rgba(198, 70, 43, .09), transparent 70%); border-color: rgba(198, 70, 43, .3); }
.rc-big.bad .n { color: var(--u-crit); }
.rc-big.ok { background: linear-gradient(100deg, rgba(36, 180, 126, .1), transparent 70%); border-color: rgba(36, 180, 126, .35); }
.rc-big.ok .n { color: var(--u-good); }
.rc-big.na { font-weight: 700; color: var(--mu); }
.rc-track { position: relative; height: 86px; margin: 6px 0 12px; }
.rc-trk { position: absolute; left: 4%; right: 4%; top: 40px; height: 6px; border-radius: 3px; background: var(--sk); }
.rc-trk.gap { right: auto; background: repeating-linear-gradient(45deg, var(--u-crit), var(--u-crit) 5px, #E07A5F 5px, #E07A5F 10px); }
.rc-mk { position: absolute; top: 0; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; width: 110px; }
.rc-mk::after { content: ''; position: absolute; top: 34px; width: 3px; height: 18px; border-radius: 2px; background: var(--mu); }
.rc-mk .l { font-size: 9px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--mu); }
.rc-mk .d { font-family: var(--u-mono); font-size: 11.5px; font-weight: 700; color: var(--st); }
.rc-mk.dd::after { background: var(--u-dd); } .rc-mk.dd .l { color: var(--u-dd); }
.rc-mk.tg::after { background: var(--rc-tg); } .rc-mk.tg .l { color: var(--rc-tg); }
.rc-mk.fc::after { background: var(--u-crit); } .rc-mk.fc .l { color: var(--u-crit); }
.rc-mk.tg { top: 52px; } .rc-mk.tg::after { top: -12px; }
.rc-kv3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--sk2); border: 1px solid var(--sk2); border-radius: 10px; overflow: hidden; margin: 6px 0 10px; }
.rc-kvc { background: #fff; padding: 8px 10px; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rc-kvc .k { font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.rc-kvc .v { font-family: var(--u-mono); font-size: 12px; font-weight: 700; color: var(--st); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── 2 diagnose ──────────────────────────────────────────────────────── */
.rc-dxl .rc-ready { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 10px 12px 0; }
.rc-tile { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 8px; align-items: center;
  padding: 8px 10px; border-radius: 10px; border: 1px solid var(--sk); background: #fff; }
.rc-tile .rc-ic { grid-row: 1 / 3; }
.rc-tile .k { font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.rc-tile .v { font-size: 12.5px; font-weight: 800; color: var(--st); }
.rc-tile.bad { border-color: rgba(198, 70, 43, .35); background: rgba(198, 70, 43, .04); }
.rc-tile.warn { border-color: rgba(184, 105, 62, .35); }
.rc-dx { border: 1px solid var(--sk2); border-radius: 9px; margin-bottom: 5px; background: #fff; overflow: hidden; }
.rc-dx.error { border-color: rgba(198, 70, 43, .35); }
.rc-dxh { width: 100%; display: flex; align-items: center; gap: 8px; padding: 7px 9px; background: transparent; border: 0; cursor: pointer; text-align: left; }
.rc-dxh[disabled] { cursor: default; }
.rc-dxh .k { flex: 1; font-size: 11.5px; font-weight: 700; color: var(--st); }
.rc-dxh .n { font-family: var(--u-mono); font-weight: 800; color: var(--st); font-size: 11.5px; }
.rc-dx.ok .rc-dxh .k, .rc-dx.ok .rc-dxh .n { color: var(--mu); font-weight: 600; }
.rc-dxb { padding: 0 10px 9px 36px; }
.rc-dxb .ids { display: flex; flex-wrap: wrap; gap: 4px 8px; margin-top: 5px; }
.rc-rbban { display: flex; align-items: center; gap: 8px; padding: 8px 12px; margin: 0 0 8px; border-radius: 8px; background: rgba(47, 107, 216, .07); border: 1px solid rgba(47, 107, 216, .22); font-size: 12.5px; }
.rc-dxfix { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-top: 7px; }
.rc-dxend { margin-top: 6px; font-size: 11.5px; color: var(--u-mut, #667085); }
/* the activities of the check that is open, lit in the Gantt beside it.
   The tint is a layer ON the solid background (update.css: a frozen column
   has to be opaque), and the timeline cell keeps its own grid. */
.rcv table.u-g tr.rc-hi td:not(.u-tl) { background-color: var(--p); background-image: linear-gradient(rgba(245, 158, 11, .14), rgba(245, 158, 11, .14)) !important; }
.rcv table.u-g tr.rc-hi td.stk { background-color: var(--p) !important; box-shadow: inset 3px 0 0 #f59e0b, 6px 0 10px -10px rgba(15, 27, 46, .55); }
.rcv table.u-g tr.rc-hi.sel td.stk { background-image: linear-gradient(rgba(245, 158, 11, .26), rgba(245, 158, 11, .26)) !important; }
.rc-types { display: flex; flex-wrap: wrap; gap: 5px; }
.rc-types span { font-size: 11px; padding: 3px 8px; border-radius: 12px; background: var(--p2); color: var(--st); }
.rc-fcr { width: 100%; display: grid; grid-template-columns: 70px 1fr auto; gap: 8px; align-items: center; padding: 5px 6px; border: 0; background: transparent;
  border-bottom: 1px dashed var(--sk2); cursor: pointer; text-align: left; font-size: 11px; }
.rc-fcr:hover { background: var(--p2); }
.rc-fcr .nm { color: var(--st); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-fcr .tf { font-family: var(--u-mono); font-weight: 800; color: var(--st); }
.rc-fcr .tf.bad { color: var(--u-crit); } .rc-fcr .tf.crit { color: var(--u-warn); }

/* ── the Gantt pane — the Update grid, fitted to its pane ────────────── */
.rc-gpane { position: relative; }
.rc-gbar { flex: none; display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-bottom: 1px solid var(--sk); background: var(--p2); }
.rc-gwrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.rcv .u-gscroll.rc-gscroll { height: auto; flex: 1 1 auto; min-height: 0; }
.rcv table.u-g th.g.rc-srch { color: var(--u-prev); border-bottom: 2px solid var(--u-prev); }
.rcv table.u-g th.g.rc-rech { color: var(--u-good); border-bottom: 2px solid var(--u-good); }
.rcv table.u-g td.rc-src .u-dt { color: var(--u-prev); }
.rcv table.u-g tr.rc-path td.stk { box-shadow: inset 3px 0 0 var(--u-crit); }
.rcv .rc-sh { font-family: var(--u-mono); font-weight: 800; font-size: 10px; color: var(--mu); }
.rcv .rc-sh.good { color: var(--u-good); } .rcv .rc-sh.bad { color: var(--u-crit); }
/* the source bar: the Update tab's "previous" layer, drawn solid enough to compare against */
.rcv .u-tlb .ub.uprev { height: 5px; opacity: 1; background: var(--u-prev); }
/* the target: a dashed purple line down the chart, beside the Data Date */
.rcv table.u-g td.rc-tl::before {
  content: ''; position: absolute; top: 0; bottom: -1px; left: var(--tg, -10px); width: 0; z-index: 5; pointer-events: none;
  border-left: 2px dashed var(--rc-tg);
}
.rcv table.u-g td.rc-tl:not([style*="--tg"])::before { display: none; }
.rcv .rc-tgm { position: absolute; top: 0; bottom: 0; border-left: 2px dashed var(--rc-tg); }
.rcv .rc-tgm::after { content: 'Target'; position: absolute; top: 1px; left: 3px; font-size: 8px; font-weight: 800; letter-spacing: .04em;
  color: #fff; background: var(--rc-tg); padding: 0 4px; border-radius: 2px; text-transform: uppercase; }
.rcv .u-lgd i.uk.rc-tgk { background: none; border-left: 2px dashed var(--rc-tg); width: 2px !important; }
.rcv .rc-flag { font-size: 8px; font-weight: 900; min-width: 14px; height: 14px; padding: 0 3px; border-radius: 7px; display: inline-flex;
  align-items: center; justify-content: center; color: #fff; flex: none; margin-left: 3px; font-style: normal; }
.rcv .rc-flag.ch { background: var(--rc-ch); }
.rcv .rc-flag.add { background: var(--u-cmpl); }
.rcv .rc-flag.nc { background: var(--u-crit); }
.rcv .rc-flag.dp { background: transparent; color: var(--u-crit); border: 1px solid var(--u-crit); }
.rcv table.u-g { min-width: 0; }

/* the activity drawer, inside the Gantt pane */
.rc-drawer { position: absolute; top: 44px; right: 8px; bottom: 8px; width: min(360px, calc(100% - 16px)); z-index: 30;
  background: #fff; border: 1px solid var(--sk); border-radius: 12px; display: flex; flex-direction: column;
  box-shadow: 0 24px 60px -22px rgba(15, 27, 46, .5); }
.rc-dh { display: flex; justify-content: space-between; gap: 10px; padding: 11px 12px; border-bottom: 1px solid var(--sk); background: var(--p2); border-radius: 12px 12px 0 0; }
.rc-dh .nm { font-size: 13px; font-weight: 800; color: var(--st); margin-top: 2px; line-height: 1.35; }
.rc-dh .st { font-size: 11px; color: var(--mu); margin-top: 2px; }
.rc-dh .st b.crit { color: var(--u-crit); }
.rc-db { padding: 10px 12px 12px; overflow: auto; flex: 1; }
.rc-dgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--sk2); border: 1px solid var(--sk2); border-radius: 9px; overflow: hidden; }
.rc-dgrid .rc-kvc .v s { color: var(--mu); font-weight: 500; }
.rc-dgrid .rc-kvc .v b { color: var(--u-good); }
.rc-dsec { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.rc-dsec > .rc-lbl { width: 100%; margin-bottom: 0; }
.rc-rel { display: inline-flex; gap: 6px; align-items: center; padding: 3px 8px; border-radius: 12px; border: 1px solid var(--sk); background: #fff;
  font-size: 10.5px; cursor: pointer; color: var(--st); font-family: var(--u-mono); }
.rc-rel:hover { border-color: var(--mu); }
.rc-chg { width: 100%; border: 1px solid var(--sk); border-left: 3px solid var(--rc-ch); border-radius: 8px; padding: 8px 10px; font-size: 11px; }
.rc-chg .t { font-weight: 800; color: var(--st); }
.rc-chg .v { color: var(--st); margin-top: 2px; }
.rc-chg .i { margin-top: 3px; } .rc-chg .i b { color: var(--u-good); }
.rc-chg .r { margin-top: 3px; color: var(--mu); line-height: 1.45; }
.rc-dq { display: flex; gap: 6px; margin-top: 4px; }

/* ── 3 build ─────────────────────────────────────────────────────────── */
.rc-scnbar { flex: none; display: flex; align-items: center; gap: 6px; padding: 6px; background: var(--p); border: 1px solid var(--sk); border-radius: 12px; overflow-x: auto; }
.rc-scn { flex: none; display: flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border-radius: 9px; border: 1px solid var(--sk);
  background: #fff; cursor: pointer; text-align: left; }
.rc-scn:hover { border-color: var(--mu); }
.rc-scn.on { border-color: var(--st); box-shadow: inset 0 0 0 1px var(--st); background: #fff; }
.rc-scn.acc { border-style: dashed; }
.rc-scn .n { width: 24px; height: 24px; border-radius: 7px; background: var(--p2); color: var(--st); font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.rc-scn.on .n { background: var(--st); color: #fff; }
.rc-scn .t { display: flex; flex-direction: column; }
.rc-scn .t b { font-size: 11.5px; color: var(--st); white-space: nowrap; }
.rc-scn .t em { font-style: normal; font-size: 10.5px; color: var(--mu); font-family: var(--u-mono); white-space: nowrap; }
.rc-scn .t em.ok { color: var(--u-good); } .rc-scn .t em.bad { color: var(--u-crit); }
.rc-scnadd { flex: none; }
.rc-res { flex: none; display: flex; align-items: center; gap: 0; border-radius: 9px; border: 1px solid var(--sk); overflow: hidden; }
.rc-res.na { padding: 8px 12px; color: var(--mu); font-weight: 700; }
.rc-res .c, .rc-final .c { display: flex; flex-direction: column; padding: 4px 12px; border-right: 1px solid var(--sk2); }
.rc-res .c em, .rc-final .c em { font-style: normal; font-size: 8.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.rc-res .c b, .rc-final .c b { font-family: var(--u-mono); font-size: 12.5px; color: var(--st); white-space: nowrap; }
.rc-rp { align-self: stretch; display: inline-flex; align-items: center; padding: 0 14px; font-weight: 800; font-size: 11px; letter-spacing: .06em; color: #fff; }
.rc-res.ok .rc-rp, .rc-final.ok .rc-rp { background: var(--u-good); }
.rc-res.bad .rc-rp, .rc-final.bad .rc-rp { background: var(--u-crit); }
.rc-res.ok { border-color: rgba(36, 180, 126, .5); } .rc-res.bad { border-color: rgba(198, 70, 43, .45); }

.rc-ttabs, .rc-ltabs { flex: none; display: flex; gap: 0; border-bottom: 1px solid var(--sk); background: var(--p2); padding: 0 6px; overflow-x: auto; }
.rc-ttabs button, .rc-ltabs button { font: inherit; font-size: 11.5px; font-weight: 700; color: var(--mu); background: none; border: 0; cursor: pointer;
  padding: 9px 10px 8px; border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }
.rc-ttabs button:hover, .rc-ltabs button:hover { color: var(--st); }
.rc-ttabs button.on, .rc-ltabs button.on { color: var(--st); border-bottom-color: var(--st); background: var(--p); border-radius: 7px 7px 0 0; }
.rc-ttabs { display: grid; grid-template-columns: repeat(5, auto); justify-content: start; padding: 0 4px; }
.rc-ttabs button { font-size: 11.5px; padding: 9px 11px 8px; }
.rc-ttabs button.auto svg { width: 12px; height: 12px; fill: var(--u-warn); }
.rc-ltabs button b { font-size: 10px; padding: 1px 6px; border-radius: 10px; background: rgba(15, 27, 46, .08); }
.rc-ltabs button b.bad { background: rgba(198, 70, 43, .15); color: var(--u-crit); }
.rc-ltabs button b.warn { background: rgba(184, 105, 62, .15); color: var(--u-warn); }
.rc-ltabs button b.ok { background: rgba(36, 180, 126, .15); color: var(--u-good); }

.rc-auto .u-b.wide { margin: 0 0 8px; }
.rc-autoh { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; background: linear-gradient(100deg, rgba(198, 70, 43, .08), transparent);
  border: 1px solid rgba(198, 70, 43, .25); margin-bottom: 8px; }
.rc-autoh .n { font-size: 30px; font-weight: 800; color: var(--u-crit); line-height: 1; font-variant-numeric: tabular-nums; }
.rc-autoh .n em { font-style: normal; font-size: 12px; margin-left: 2px; }
.rc-autoh .t { font-size: 12px; color: var(--st); }
.rc-chks { display: flex; flex-direction: column; gap: 5px; margin-top: 8px; }
.rc-chk { display: flex; gap: 9px; align-items: flex-start; text-align: left; padding: 7px 9px; border-radius: 9px; border: 1px solid var(--sk); background: #fff; cursor: pointer; }
.rc-chk i { flex: none; width: 16px; height: 16px; border-radius: 4px; border: 2px solid var(--sk); margin-top: 1px; }
.rc-chk.on i { background: var(--st); border-color: var(--st); box-shadow: inset 0 0 0 2px #fff; }
.rc-chk span { display: flex; flex-direction: column; }
.rc-chk b { font-size: 11.5px; color: var(--st); }
.rc-chk em { font-style: normal; font-size: 10.5px; color: var(--mu); }
.rc-autor { margin-top: 10px; border-radius: 10px; border: 1px solid var(--sk); padding: 9px 10px; background: #fff; }
.rc-autor.ok { border-color: rgba(36, 180, 126, .45); background: rgba(36, 180, 126, .05); }
.rc-autor.bad { border-color: rgba(198, 70, 43, .35); background: rgba(198, 70, 43, .04); }
.rc-autor .h { font-weight: 800; color: var(--st); font-size: 12px; margin-bottom: 3px; }
.rc-steplog { margin: 8px 0 0; padding: 0; list-style: none; counter-reset: s; }
.rc-steplog li { counter-increment: s; display: grid; grid-template-columns: 18px 1fr auto; column-gap: 6px; font-size: 10.8px; padding: 4px 0; border-top: 1px dashed var(--sk2); align-items: baseline; }
.rc-steplog li::before { content: counter(s); grid-row: 1 / 3; font-weight: 800; color: var(--mu); font-family: var(--u-mono); }
.rc-steplog .tier { font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--mu); grid-column: 2; }
.rc-steplog .lbl { grid-column: 2; font-family: var(--u-mono); color: var(--st); }
.rc-steplog .d { grid-column: 3; grid-row: 1; color: var(--u-good); font-weight: 800; font-family: var(--u-mono); }
.rc-steplog .f { grid-column: 3; grid-row: 2; color: var(--mu); font-family: var(--u-mono); }

.rc-cand, .rc-act { border: 1px solid var(--sk); border-radius: 9px; background: #fff; padding: 8px 10px; margin-top: 7px; font-size: 11px; }
.rc-cand.in { opacity: .6; }
.rc-cand .r1, .rc-act .r1 { display: flex; align-items: center; gap: 6px; }
.rc-cand .kind, .rc-act .kind { font-weight: 800; color: var(--st); }
.rc-cand .imp, .rc-act .imp { margin-left: auto; font-family: var(--u-mono); font-weight: 800; color: var(--mu); }
.rc-cand .imp.good, .rc-act .imp.good { color: var(--u-good); }
.rc-cand .r2, .rc-act .r2 { margin-top: 3px; color: var(--st); font-size: 10.5px; }
.rc-cand .r3, .rc-act .r3 { margin-top: 3px; color: var(--mu); line-height: 1.45; }
.rc-act .r3 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rc-cand .r4, .rc-act .r4 { margin-top: 3px; font-size: 10.5px; color: var(--u-ai); }
.rc-cand .r4.warn { color: var(--u-warn); font-weight: 700; }
.rc-act .r4.ok { color: var(--u-good); font-weight: 700; display: flex; align-items: center; gap: 4px; }
.rc-act .r4.ok svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 2.4; fill: none; }
.rc-cand .r5 { margin-top: 6px; display: flex; justify-content: flex-end; }
.rc-act { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: start; }
.rc-act .tg { padding-top: 2px; }
.rc-act.off { opacity: .5; }
.rc-act.rej { border-color: rgba(198, 70, 43, .4); background: rgba(198, 70, 43, .03); }
.rc-act .r3.bad { color: var(--u-crit); -webkit-line-clamp: unset; }
.rc-act .src { font-size: 9px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; padding: 1px 5px; border-radius: 4px; border: 1px solid var(--sk); color: var(--mu); }
.rc-act .src.ai { color: var(--u-ai); border-color: rgba(109, 91, 168, .45); }
.rc-act .src.engine { color: var(--u-dd); border-color: rgba(47, 107, 216, .4); }
.rc-trl { font-size: 11px; color: var(--st); padding: 7px 9px; border-radius: 8px; background: var(--p2); }
.rc-trl.warn { color: var(--u-warn); }
.rc-vc { display: flex; gap: 9px; padding: 8px 2px; border-bottom: 1px dashed var(--sk2); font-size: 11px; }
.rc-vc .k { font-weight: 700; color: var(--st); }
.rc-vc .k b { font-family: var(--u-mono); margin-left: 4px; }
.rc-vc .d { color: var(--mu); margin-top: 2px; line-height: 1.45; }
.rc-vc .ids { display: flex; flex-wrap: wrap; gap: 3px 8px; margin-top: 4px; }
.rc-vc.error .k b { color: var(--u-crit); } .rc-vc.warn .k b { color: var(--u-warn); }
.rc-manual .rc-mgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 10px; }
.rc-aid-diag { margin-top: 10px; border-left: 3px solid var(--u-ai); background: rgba(109, 91, 168, .06); padding: 8px 10px; border-radius: 0 8px 8px 0; font-size: 11px; }
.rc-aid-diag ul { margin: 4px 0 0 16px; padding: 0; line-height: 1.5; }
.rc-inv { margin-top: 10px; font-size: 11px; color: var(--mu); }
.rc-inv summary { cursor: pointer; font-weight: 700; }
.rc-inv ul { margin: 5px 0 0 16px; padding: 0; line-height: 1.55; }

/* ── 4 compare ───────────────────────────────────────────────────────── */
.rc-cards { flex: none; display: flex; gap: 8px; overflow-x: auto; padding-bottom: 2px; }
.rc-card { flex: 0 0 250px; text-align: left; display: flex; flex-direction: column; gap: 6px; padding: 11px 12px; border-radius: 12px;
  border: 1px solid var(--sk); background: var(--p); cursor: pointer; border-top: 4px solid var(--sk); }
.rc-card:hover { border-color: var(--mu); }
.rc-card.ok { border-top-color: var(--u-good); } .rc-card.bad { border-top-color: var(--u-crit); }
.rc-card.on { box-shadow: 0 0 0 2px var(--st); }
.rc-card.na { cursor: default; }
.rc-card .h { display: flex; align-items: center; gap: 7px; }
.rc-card .h .n { width: 22px; height: 22px; border-radius: 6px; background: var(--st); color: #fff; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; }
.rc-card .h b { font-size: 12px; color: var(--st); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-card .big { display: flex; align-items: baseline; gap: 8px; }
.rc-card .big span { font-family: var(--u-mono); font-size: 19px; font-weight: 800; color: var(--st); }
.rc-card .big em { font-style: normal; font-size: 11px; font-weight: 800; }
.rc-card .big em.ok { color: var(--u-good); } .rc-card .big em.bad { color: var(--u-crit); }
.rc-card .mini { position: relative; height: 16px; margin: 2px 4px; }
.rc-card .mini::before { content: ''; position: absolute; left: 0; right: 0; top: 7px; height: 2px; background: var(--sk); }
.rc-card .mini .bar { position: absolute; top: 5px; height: 6px; background: var(--u-good); border-radius: 3px; opacity: .45; }
.rc-card .mini i { position: absolute; top: 0; width: 3px; height: 16px; border-radius: 2px; margin-left: -1.5px; }
.rc-card .mini i.src { background: var(--u-prev); } .rc-card .mini i.tg { background: var(--rc-tg); } .rc-card .mini i.rc { background: var(--st); }
.rc-card .facts { display: flex; gap: 10px; font-size: 11px; color: var(--st); font-family: var(--u-mono); font-weight: 700; }
.rc-card .facts em { display: block; font-family: 'DM Sans', system-ui, sans-serif; font-style: normal; font-size: 8.5px; letter-spacing: .07em; text-transform: uppercase; color: var(--mu); }
table.rc-cmp { width: 100%; border-collapse: collapse; font-size: 11.5px; }
table.rc-cmp th, table.rc-cmp td { padding: 7px 9px; border-bottom: 1px solid var(--sk2); text-align: left; }
table.rc-cmp thead th { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); position: sticky; top: -10px; background: var(--p); }
table.rc-cmp tbody th { font-weight: 700; color: var(--st); white-space: nowrap; width: 150px; }
table.rc-cmp td { color: var(--st); font-family: var(--u-mono); font-size: 11px; }
table.rc-cmp .on { background: rgba(15, 27, 46, .045); }
.rc-wf { width: 100%; height: auto; max-height: 300px; display: block; }
.rc-wf rect { fill: var(--mu); }
.rc-wf rect.tot, .rc-wf rect.fin { fill: var(--u-crit); }
.rc-wf rect.fin.ok { fill: var(--u-ok); }
.rc-wf rect.down { fill: var(--u-good); }
.rc-wf rect.up { fill: var(--u-warn); }
.rc-wf line.z { stroke: var(--rc-tg); stroke-width: 1.5; stroke-dasharray: 5 4; }
.rc-wf text { font-family: var(--u-mono); fill: var(--st); text-anchor: middle; }
.rc-wf text.v { font-size: 12px; font-weight: 800; }
.rc-wf text.l { font-size: 10.5px; fill: var(--mu); font-family: 'DM Sans', system-ui, sans-serif; font-weight: 700; }
.rc-wf text.zl { font-size: 9px; fill: var(--rc-tg); text-anchor: end; font-weight: 800; }
.rc-contrib { display: flex; flex-direction: column; gap: 7px; }
.rc-cb { display: grid; grid-template-columns: 150px 1fr 60px; gap: 10px; align-items: center; font-size: 11px; }
.rc-cb .l { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--mu); }
.rc-cb .l b { font-family: var(--u-mono); color: var(--st); }
.rc-cb .b { height: 10px; background: var(--p2); border-radius: 5px; overflow: hidden; }
.rc-cb .b i { display: block; height: 100%; border-radius: 5px; }
.rc-cb .b i.good { background: var(--u-good); } .rc-cb .b i.bad { background: var(--u-warn); }
.rc-cb .v { text-align: right; font-family: var(--u-mono); font-weight: 800; color: var(--st); }
.rc-cpc { display: flex; flex-direction: column; gap: 12px; }
.rc-cpc .g .k { display: block; font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); margin-bottom: 4px; }
.rc-cpc .g .k.good { color: var(--u-good); } .rc-cpc .g .k.bad { color: var(--u-crit); } .rc-cpc .g .k.warn { color: var(--u-warn); }
.rc-cpc .g > div { display: flex; flex-wrap: wrap; gap: 4px 9px; }

/* ── 5 revised ───────────────────────────────────────────────────────── */
.rc-final { display: flex; align-items: stretch; margin: 0 12px; border: 1px solid var(--sk); border-radius: 10px; overflow: hidden; flex: none; }
.rc-final.mini { margin: 10px 0 0; }
.rc-final.ok { border-color: rgba(36, 180, 126, .5); } .rc-final.bad { border-color: rgba(198, 70, 43, .45); }
.rc-final .c { padding: 8px 14px; }
.rc-final .rc-rp { margin-left: auto; }
.rc-gate { flex: none; padding: 10px 12px 12px; border-top: 1px solid var(--sk); }
.rc-rev { border: 1px solid var(--sk); border-radius: 10px; background: #fff; padding: 10px 12px; margin-bottom: 8px; }
.rc-rev .h { display: flex; align-items: center; gap: 8px; }
.rc-rev .h .id { font-family: var(--u-mono); font-weight: 800; color: #fff; background: var(--st); padding: 2px 7px; border-radius: 6px; font-size: 11px; }
.rc-rev .h b { flex: 1; font-size: 12px; color: var(--st); }
.rc-rev .acts { display: flex; align-items: center; gap: 10px; }

@media (max-width: 1100px) {
  .rc-split.setup, .rc-split.cmp { grid-template-columns: 1fr; overflow: auto; }
  .rc-split.rev { grid-template-columns: 280px minmax(0, 1fr); }
  .rc-split.build { grid-template-columns: 320px minmax(0, 1fr); }
  .rc-split.diag { grid-template-columns: 280px minmax(0, 1fr); }
}

/* ── P6-style editing: the bars, the detail, the Manual table ────────── */
.rcv .rc-hint { font-size: 10.5px; color: var(--mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.rcv table.u-g.rc-edit .u-tlb { overflow: visible; }
.rcv .rc-grip { position: absolute; top: 50%; width: 12px; height: 16px; margin: -8px 0 0 -6px; z-index: 6; cursor: ew-resize;
  border-radius: 3px; touch-action: none; }
.rcv .rc-grip::after { content: ''; position: absolute; left: 5px; top: 2px; bottom: 2px; width: 2px; border-radius: 1px; background: var(--rc-ch); opacity: 0; }
.rcv tr:hover .rc-grip::after, .rcv tr.sel .rc-grip::after { opacity: .9; }
.rcv .rc-grip.on { background: rgba(47, 107, 216, .14); }
.rcv .rc-grip.on::after { opacity: 1; top: -4px; bottom: -4px; }
.rcv table.u-g tr.rc-drop td { background: rgba(47, 107, 216, .1) !important; box-shadow: inset 0 1px 0 var(--rc-ch), inset 0 -1px 0 var(--rc-ch); }
.rc-dragtip { position: fixed; z-index: 9999; pointer-events: none; padding: 4px 8px; border-radius: 6px; background: #13223A; color: #fff;
  font: 700 11px/1.3 var(--u-mono, ui-monospace, monospace); white-space: nowrap; box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .5); }

.rc-ded .rc-dur { display: flex; align-items: center; gap: 6px; width: 100%; }
.rc-ded .rc-dur input { width: 72px; }
.rc-ded .rc-dur span { font-size: 11px; color: var(--mu); }
.rc-ded .rc-dur em { font-style: normal; font-size: 10px; color: var(--mu); margin-left: auto; }
.rc-rels { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.rc-relr { display: grid; grid-template-columns: minmax(0, 1fr) 96px 58px 24px; gap: 5px; align-items: center;
  padding: 3px 4px 3px 7px; border: 1px solid var(--sk); border-radius: 8px; background: #fff; }
.rc-relr.ch { border-left: 3px solid var(--rc-ch); }
.rc-relr .rc-aid { background: none; border: 0; padding: 0; text-align: left; cursor: pointer; color: var(--st); font-size: 11px; font-weight: 700;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-relr .rc-aid:hover { text-decoration: underline; }
.rcv .rc-in.sm, .rcv .rc-sel.sm { height: 26px; font-size: 11px; padding: 0 6px; }
.rc-x.sm { width: 24px; height: 24px; }
.rc-reladd { display: flex; gap: 5px; width: 100%; margin-top: 2px; }
.rc-reladd input { flex: 1; min-width: 0; }

.rc-mtips { border: 1px solid var(--sk); border-left: 3px solid var(--rc-ch); border-radius: 9px; background: #fff; padding: 8px 10px;
  display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--st); }
.rc-mtips b { color: var(--rc-ch); }
.rc-mtips .s { color: var(--mu); font-size: 10.5px; margin-top: 2px; }
.rcv .rc-ph.sm { padding: 10px 0 4px; border: 0; background: none; }
.rcv .rc-ph.sm h3 { font-size: 11px; }
.rc-mtab { width: 100%; border-collapse: collapse; font-size: 11px; }
.rc-mtab th { font-size: 9px; text-transform: uppercase; letter-spacing: .05em; color: var(--mu); text-align: left; padding: 4px; border-bottom: 1px solid var(--sk); }
.rc-mtab th em { font-style: normal; text-transform: none; margin-left: 2px; }
.rc-mtab td { padding: 3px 4px; border-bottom: 1px dashed var(--sk2); vertical-align: middle; }
.rc-mtab .num { text-align: right; }
.rc-mtab td .rc-aid { background: none; border: 0; padding: 0; cursor: pointer; font-weight: 700; color: var(--st); font-size: 11px; }
.rc-mtab td .nm { display: block; color: var(--mu); font-size: 10px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-mtab tr.p td:first-child { box-shadow: inset 3px 0 0 var(--u-crit); }
.rc-mtab tr.sel td { background: rgba(47, 107, 216, .07); }
.rc-mtab input { width: 56px; text-align: right; }
.rc-mtab td.ch { color: var(--rc-ch); font-weight: 800; }
.rc-mform { margin-top: 10px; border-top: 1px solid var(--sk); padding-top: 6px; }
.rc-mform summary { cursor: pointer; font-size: 11px; font-weight: 700; color: var(--st); padding: 4px 0; }

.rc-cand .imp.part { color: var(--u-warn); }
.rc-addall { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.rc-comb { margin-top: 8px; padding: 8px 10px; border-radius: 9px; font-size: 11px; border: 1px solid var(--sk); background: #fff; }
.rc-comb.ok { border-color: var(--u-good); color: var(--u-good); }
.rc-comb.part { border-color: var(--u-warn); }
.rc-comb.bad { border-color: var(--u-crit); color: var(--u-crit); }
.rc-steplog .d.z { color: var(--mu); font-weight: 700; font-size: 9.5px; text-transform: uppercase; }
.rc-res .u-b.sm { margin-left: 8px; white-space: nowrap; }
.rcv .u-lgd .lg { padding: 0 4px; }

/* ── what the plan did, on the bars ───────────────────────────────────── */
.rcv .rc-mv { position: absolute; bottom: 2px; height: 3px; border-radius: 2px; z-index: 4; pointer-events: auto;
  transform-origin: right center; animation: rcDraw .5s ease-out both; }
.rcv .rc-mv.e { background: var(--u-good); }
.rcv .rc-mv.l { background: var(--u-crit); transform-origin: left center; }
.rcv .rc-mv::before { content: ''; position: absolute; top: -4px; border: 5.5px solid transparent; }
.rcv .rc-mv.e::before { left: -6px; border-right-color: var(--u-good); border-left: 0; }
.rcv .rc-mv.l::before { right: -6px; border-left-color: var(--u-crit); border-right: 0; }
.rcv .rc-mv em { position: absolute; right: -2px; bottom: 4px; font: 800 9px/1 var(--u-mono); color: #fff; background: var(--u-good); padding: 2px 4px; border-radius: 7px; font-style: normal; }
.rcv .rc-mv.l em { background: var(--u-crit); left: -2px; right: auto; }
.rcv .rc-mv:hover { filter: brightness(1.15); height: 4px; }
.rcv .rc-cut { position: absolute; top: 50%; height: 9px; margin-top: -5px; z-index: 3; border-radius: 0 3px 3px 0;
  background: repeating-linear-gradient(135deg, rgba(198, 70, 43, .55) 0 2px, transparent 2px 5px);
  box-shadow: inset 0 0 0 1px rgba(198, 70, 43, .6); animation: rcFade .5s ease-out both; }
.rcv .rc-lk { position: absolute; top: 1px; z-index: 5; transform: translateX(-100%); }
.rcv .rc-lk b { display: block; font: 800 8px/1 var(--u-mono); color: #fff; background: #7A2E8E; padding: 2px 4px; border-radius: 3px 0 0 3px; white-space: nowrap; }
.rcv .rc-lk::after { content: ''; position: absolute; right: -1px; top: 0; bottom: -12px; border-right: 2px solid #7A2E8E; }
.rcv .u-lgd i.uk.rc-mvk { background: var(--u-good); height: 2px; }
@keyframes rcDraw { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes rcFade { from { opacity: 0; } to { opacity: 1; } }

/* ── 5 revised: the head, what happened, progress and money ─────────── */
.rc-revhead { flex: none; display: flex; align-items: stretch; gap: 10px; padding: 6px; background: var(--p); border: 1px solid var(--sk); border-radius: 12px; }
.rc-revhead > .rc-sel { align-self: center; max-width: 230px; }
.rc-revfacts { display: flex; align-items: stretch; flex: 1 1 auto; min-width: 0; overflow-x: auto; border: 1px solid var(--sk2); border-radius: 9px; background: #fff; }
.rc-revfacts .c { display: flex; flex-direction: column; justify-content: center; padding: 4px 11px; border-right: 1px solid var(--sk2); flex: none; }
.rc-revfacts .c em { font-style: normal; font-size: 8.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--mu); }
.rc-revfacts .c b { font-family: var(--u-mono); font-size: 12.5px; color: var(--st); white-space: nowrap; }
.rc-revfacts .c.arrow { font-size: 16px; color: var(--mu); border-right: 0; padding: 0 2px; }
.rc-revfacts .c.big b { font-size: 15px; color: var(--u-good); }
.rc-revhead.bad .rc-revfacts .c.big b { color: var(--u-crit); }
.rc-revfacts .c.good b { color: var(--u-good); }
.rc-revfacts .c.ev.ok { background: rgba(24, 141, 104, .06); }
.rc-revfacts .c.ev.ok b i { display: inline-flex; width: 12px; height: 12px; color: var(--u-good); vertical-align: -1px; }
.rc-revfacts .c.ev.ok b i svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 2.6; fill: none; }
.rc-revfacts .c.ev.warn { background: rgba(217, 164, 25, .1); }
.rc-revfacts .c b s { color: var(--mu); font-weight: 500; }
.rc-revhead .rc-rp { display: flex; align-items: center; padding: 0 14px; border-radius: 9px; color: #fff; font-weight: 800; letter-spacing: .06em; font-size: 11px; }
.rc-revhead.ok .rc-rp { background: var(--u-good); } .rc-revhead.bad .rc-rp { background: var(--u-crit); }
.rc-gatebar { display: flex; align-items: center; gap: 8px; flex: none; }
.rc-made { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--u-good); font-weight: 700; }
.rc-made svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2.6; fill: none; }

.rc-story { list-style: none; margin: 0; padding: 0; position: relative; }
.rc-story::before { content: ''; position: absolute; left: 12px; top: 14px; bottom: 14px; border-left: 2px solid var(--sk); }
.rc-story li { position: relative; display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; column-gap: 8px; align-items: start; padding: 7px 4px 7px 0; }
.rc-story li[data-act] { cursor: pointer; border-radius: 8px; }
.rc-story li[data-act]:hover { background: rgba(47, 107, 216, .06); }
.rc-story .n { z-index: 1; width: 24px; height: 24px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: #fff;
  border: 2px solid var(--sk); font: 800 10px/1 var(--u-mono); color: var(--mu); }
.rc-story .n svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 2.4; fill: none; }
.rc-story li.good .n { border-color: var(--u-good); color: var(--u-good); }
.rc-story li.bad .n { border-color: var(--u-crit); color: var(--u-crit); }
.rc-story li.src .n { border-color: var(--u-prev); color: var(--u-prev); }
.rc-story li.end.ok .n { background: var(--u-good); border-color: var(--u-good); color: #fff; }
.rc-story li.end.bad .n { background: var(--u-crit); border-color: var(--u-crit); color: #fff; }
.rc-story .t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rc-story .t b { font-size: 11.5px; color: var(--st); }
.rc-story .t em { font-style: normal; font-size: 10.5px; color: var(--mu); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-story .t .src { font-size: 8.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 1px 4px; border-radius: 3px; background: var(--sk2); color: var(--mu); margin-left: 4px; }
.rc-story .t .src.ai { background: rgba(122, 46, 142, .12); color: #7A2E8E; }
.rc-story .t .src.engine { background: rgba(47, 107, 216, .1); color: var(--rc-ch); }
.rc-story .bar { display: block; height: 4px; border-radius: 2px; background: var(--sk2); margin-top: 3px; overflow: hidden; }
.rc-story .bar i { display: block; height: 100%; background: var(--u-good); border-radius: 2px; }
.rc-story li.bad .bar i { background: var(--u-crit); }
.rc-story li.zero .bar i { background: var(--mu); }
.rc-story .d { font: 800 11px/1 var(--u-mono); color: var(--u-good); text-align: right; padding-top: 3px; }
.rc-story li.bad .d { color: var(--u-crit); } .rc-story li.zero .d { color: var(--mu); }
.rc-story .f { grid-column: 3; font: 600 10px/1 var(--u-mono); color: var(--mu); text-align: right; margin-top: 3px; }
.rc-story li.src .f, .rc-story li.end .f { font-size: 12px; font-weight: 800; color: var(--st); padding-top: 5px; grid-row: 1; }
.rc-story li.end.ok .f { color: var(--u-good); }

.rcv table.u-g th.g.rc-pgh { color: var(--rc-ch); border-bottom: 2px solid var(--rc-ch); }
.rcv table.u-g th.g.rc-evh { color: #7A2E8E; border-bottom: 2px solid #7A2E8E; }
.rcv table.u-g td.rc-pc, .rcv table.u-g td.rc-mo { font-family: var(--u-mono); font-size: 10px; white-space: nowrap; }
.rcv table.u-g td.rc-pc s, .rcv table.u-g td.rc-mo s { color: var(--mu); }
.rc-revl .rc-ltabs button { padding-left: 9px; padding-right: 9px; font-size: 11px; white-space: nowrap; }
.rc-adl { margin: 10px 0 0; padding-left: 18px; font-size: 12px; color: var(--st); line-height: 1.5; }
.rc-adchk { display: flex; gap: 8px; align-items: flex-start; margin-top: 10px; font-size: 12px; color: var(--st); cursor: pointer; }
.rc-adchk input { margin-top: 2px; }
.rc-adopted { display: flex; align-items: center; gap: 5px; margin-top: 8px; font-size: 11px; font-weight: 700; color: var(--u-good); }
.rc-adopted svg { width: 13px; height: 13px; stroke: currentColor; stroke-width: 2.6; fill: none; }
.rc-split.rev.one { grid-template-columns: minmax(0, 880px); justify-content: center; }
.rc-adoptv .rc-scroll { padding: 18px 22px; }
.rc-adh { display: flex; gap: 12px; align-items: center; padding: 14px 16px; border-radius: 12px; background: rgba(24, 141, 104, .08); border: 1px solid rgba(24, 141, 104, .35); }
.rc-adh > svg { width: 30px; height: 30px; flex: none; stroke: #fff; stroke-width: 2.6; fill: none; background: var(--u-good); border-radius: 50%; padding: 6px; }
.rc-adh b { display: block; font-size: 15px; color: var(--u-good); }
.rc-adh em { font-style: normal; font-size: 11.5px; color: var(--mu); }
.rc-revfacts.wide { margin-top: 12px; flex: none; }
.rc-adgo { display: flex; align-items: center; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
.rc-split.rev.one { grid-template-columns: minmax(0, 880px); justify-content: center; }
.rc-adoptv .rc-scroll { padding: 18px 22px; }
.rc-adh { display: flex; gap: 12px; align-items: center; padding: 14px 16px; border-radius: 12px; background: rgba(24, 141, 104, .08); border: 1px solid rgba(24, 141, 104, .35); }
.rc-adh > svg { width: 30px; height: 30px; flex: none; stroke: #fff; stroke-width: 2.6; fill: none; background: var(--u-good); border-radius: 50%; padding: 6px; }
.rc-adh b { display: block; font-size: 15px; color: var(--u-good); }
.rc-adh em { font-style: normal; font-size: 11.5px; color: var(--mu); }
.rc-revfacts.wide { margin-top: 12px; flex: none; }
.rc-adgo { display: flex; align-items: center; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
/* ── 4 preview & execute ─────────────────────────────────────────────── */
.rc-scnbar .rc-plan { display: flex; flex-direction: column; padding: 2px 8px; }
.rc-scnbar .rc-plan b { font-size: 13px; color: var(--st); }
.rc-scnbar .rc-plan em { font-style: normal; font-size: 10.5px; color: var(--mu); }
.rc-revhead .rc-rp.eq { background: var(--u-good); } .rc-revhead .rc-rp.neq { background: var(--u-warn); }
.rc-story.does li { cursor: default; }
.rc-story .t em.wrap { white-space: normal; line-height: 1.45; }
.rc-story.does .n { font-weight: 900; }
.rcv table.u-g th.g.rc-blh { color: #8A5300; border-bottom: 2px solid #D9A419; }
.rcv table.u-g td.rc-rbd { font-family: var(--u-mono); font-size: 10px; white-space: nowrap; }
.rcv table.u-g td.rc-rbd s, .rcv table.u-g td.rc-pc s, .rcv table.u-g td.rc-mo s { color: var(--mu); margin-right: 3px; font-weight: 500; }
.rcv table.u-g td.rc-rbd b, .rcv table.u-g td.rc-pc b, .rcv table.u-g td.rc-mo b { color: var(--rc-ch); }
.rcv .rc-eq { display: inline-flex; width: 18px; height: 18px; border-radius: 9px; align-items: center; justify-content: center; font: 900 12px/1 var(--u-mono); color: #fff; }
.rcv .rc-eq.ok { background: var(--u-good); } .rcv .rc-eq.bad { background: var(--u-warn); }
.rc-split.rev .rc-gpane { --u-tlw: clamp(220px, 20vw, 420px); }
.rcv table.u-g td.rc-rbd s { font-size: 9px; }
.rc-exps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 4px 0 8px; }
.rc-exp { display: flex; flex-direction: column; gap: 4px; text-align: left; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--sk); background: #fff; cursor: pointer; }
.rc-exp:hover { border-color: var(--rc-ch); box-shadow: 0 6px 16px -10px rgba(47, 107, 216, .5); }
.rc-exp.main { border-color: var(--u-good); background: rgba(24, 141, 104, .05); }
.rc-exp b { font-size: 12.5px; color: var(--st); }
.rc-exp em { font-style: normal; font-size: 10.5px; color: var(--mu); line-height: 1.4; }
@media (max-width: 900px) { .rc-exps { grid-template-columns: 1fr; } }
.rc-revfacts.wide { flex-wrap: wrap; overflow: visible; }
.rc-revfacts.wide .c { border-bottom: 1px solid var(--sk2); }

/* ── 1b from Primavera ──────────────────────────────────────────────── */
.rc-srckind { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 10px; }
.rc-srckind button { display: flex; flex-direction: column; gap: 2px; text-align: left; padding: 9px 12px; border-radius: 10px;
  border: 1px solid var(--sk); background: #fff; cursor: pointer; }
.rc-srckind button b { font-size: 12.5px; color: var(--st); }
.rc-srckind button em { font-style: normal; font-size: 10.5px; color: var(--mu); }
.rc-srckind button.on { border-color: var(--st); background: var(--st); }
.rc-srckind button.on b { color: #fff; } .rc-srckind button.on em { color: #B8CDE0; }
.rc-drop { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center;
  min-height: 150px; padding: 18px; border: 2px dashed var(--sk); border-radius: 12px; background: #fff; cursor: pointer; transition: border-color .15s, background .15s; }
.rc-drop:hover, .rc-drop.over { border-color: var(--rc-ch); background: rgba(47, 107, 216, .05); }
.rc-drop.has { min-height: 84px; border-style: solid; border-color: var(--u-good); background: rgba(24, 141, 104, .04); }
.rc-drop .ic svg { width: 26px; height: 26px; stroke: var(--rc-ch); stroke-width: 2; fill: none; }
.rc-drop b { font-size: 13px; color: var(--st); }
.rc-drop em { font-style: normal; font-size: 11px; color: var(--mu); max-width: 420px; line-height: 1.45; }
.rc-impcard { margin-top: 10px; border: 1px solid var(--sk); border-radius: 12px; background: #fff; padding: 10px 12px; }
.rc-impcard .h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rc-impcard .h b { font-size: 14px; color: var(--st); }
.rc-impcard .fmt { font: 800 9.5px/1 var(--u-mono); color: #fff; background: #7A2E8E; padding: 3px 6px; border-radius: 4px; letter-spacing: .06em; }
.rc-impcard .warn { color: var(--u-warn); font-weight: 700; }
.rc-imptiles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 6px; }
.rc-imptile { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 10px; text-align: left; padding: 12px; border-radius: 12px;
  border: 1.5px solid var(--sk); background: #fff; cursor: pointer; align-items: start; }
.rc-imptile:hover:not([disabled]) { border-color: var(--mu); }
.rc-imptile[disabled] { opacity: .5; cursor: not-allowed; }
.rc-imptile .n { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center;
  background: var(--p2); color: var(--st); font: 800 12px/1 var(--u-mono); }
.rc-imptile .n svg { width: 16px; height: 16px; stroke: currentColor; stroke-width: 2.6; fill: none; }
.rc-imptile .t { display: flex; flex-direction: column; gap: 4px; }
.rc-imptile .t b { font-size: 13px; color: var(--st); }
.rc-imptile .t b em { font-style: normal; font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #fff;
  background: var(--u-good); padding: 2px 6px; border-radius: 8px; margin-left: 4px; vertical-align: 1px; }
.rc-imptile .t > span { font-size: 11px; color: var(--mu); line-height: 1.45; }
.rc-imptile.on { border-color: var(--u-good); box-shadow: 0 0 0 3px rgba(24, 141, 104, .12); }
.rc-imptile.on .n { background: var(--u-good); color: #fff; }
.rc-impmatch { display: flex; align-items: center; gap: 10px; font-size: 11px; color: var(--mu); margin: 0 0 8px; background: none; }
.rc-impmatch .mbar { display: block; flex: none; width: 120px; height: 6px; border-radius: 3px; background: var(--sk2); overflow: hidden; position: static; }
.rc-impmatch .mbar i { display: block; height: 100%; background: var(--u-good); }
.rc-impmatch.m-mid .mbar i { background: var(--u-warn); } .rc-impmatch.m-lo .mbar i { background: var(--u-crit); }
.rc-emptyacts { display: flex; gap: 8px; justify-content: center; margin-top: 12px; flex-wrap: wrap; }
@media (max-width: 900px) { .rc-imptiles, .rc-srckind { grid-template-columns: 1fr; } }

.rc-impcard .h { flex-wrap: wrap; }
.rc-impslip { margin-left: auto; font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: 10px; }
.rc-impslip.late { color: var(--u-crit); background: rgba(198, 70, 43, .1); }
.rc-impslip.early { color: var(--u-good); background: rgba(24, 141, 104, .1); }
.rc-impsides { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.rc-impside { border: 1px solid var(--sk2); border-radius: 10px; padding: 8px 10px; }
.rc-impside .h { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.rc-impside .h i { width: 12px; height: 7px; border-radius: 2px; }
.rc-impside.up .h i { background: var(--u-todo, #2F6BD8); } .rc-impside.bl .h i { background: var(--u-bl, #D9A419); } .rc-impside.none .h i { background: var(--sk); }
.rc-impside .h b { font-size: 12.5px; color: var(--st); }
.rc-impside .h span { font-size: 10.5px; color: var(--mu); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-impside .r { display: flex; justify-content: space-between; gap: 8px; padding: 3px 0; border-top: 1px dashed var(--sk2); font-size: 11px; }
.rc-impside .r em { font-style: normal; color: var(--mu); }
.rc-impside .r b { font-family: var(--u-mono); color: var(--st); font-size: 11.5px; white-space: nowrap; }
.rc-imptl { position: relative; margin-top: 12px; padding: 4px 0 22px; }
.rc-imptl .row { display: grid; grid-template-columns: 64px minmax(0, 1fr); align-items: center; height: 30px; }
.rc-imptl .row .k { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--mu); }
.rc-imptl .trk { position: relative; height: 30px; }
.rc-imptl .trk i { position: absolute; top: 6px; height: 10px; border-radius: 3px; }
.rc-imptl .trk i.bl { background: var(--u-bl, #D9A419); }
.rc-imptl .trk i.up { background: var(--u-todo, #2F6BD8); }
.rc-imptl .trk em { position: absolute; top: 18px; font: 700 9.5px/1 var(--u-mono); color: var(--mu); font-style: normal; white-space: nowrap; }
.rc-imptl .trk em.f { transform: translateX(-100%); }
.rc-imptl .dd { position: absolute; top: 0; bottom: 14px; border-left: 2px solid var(--u-dd, #2F6BD8); }
.rc-imptl .dd b { position: absolute; bottom: -14px; left: 4px; font: 800 9.5px/1 var(--u-mono); color: var(--u-dd, #2F6BD8); white-space: nowrap; }
@media (max-width: 900px) { .rc-impsides { grid-template-columns: 1fr; } }
.rc-oos { margin: 0 0 10px; padding: 10px 12px; border-radius: 10px; border: 1px solid rgba(217, 164, 25, .6); background: rgba(217, 164, 25, .08); display: flex; flex-direction: column; gap: 6px; }
.rc-oos .h { display: flex; align-items: center; gap: 6px; } .rc-oos .h b { font-size: 12.5px; color: var(--st); }
.rc-oos .ids { display: flex; flex-wrap: wrap; gap: 4px; }
.rc-oos .ids .rc-aid { background: #fff; border: 1px solid var(--sk); border-radius: 6px; padding: 2px 6px; font-size: 10.5px; cursor: pointer; }
.rc-oos > .u-b { align-self: flex-start; }
/* ONE WIDTH FOR THE CHART COLUMN, HEADER AND ROWS ALIKE. The Update grid
   caps each chart cell at --u-tlw while the table stretches to its pane, so
   in a wide pane the header's chart column grew and the rows' did not: the
   Data Date and target lines broke at the header and the bars stopped short
   of the ruler. Here the chart takes the width the pane gives it, the same
   in every row. */
.rcv table.u-g.tl:not(.fold) th.u-tlh-c,
.rcv table.u-g.tl:not(.fold) td.u-tl,
.rcv table.u-g.tl:not(.fold) thead tr.grp th.g.tl { max-width: none; }

/* the same Data Date as the latest update: replace, or add */
.rc-samedate { margin-top: 10px; padding: 9px 11px; border-radius: 8px; background: rgba(245, 158, 11, .09); border: 1px solid rgba(245, 158, 11, .35); font-size: 12px; }
.rc-samedate label { display: block; margin-top: 5px; cursor: pointer; }

/* why a row still differs after the rebaseline: named with its reason */
.rc-why { margin: 4px 0 0; padding-left: 16px; }
.rc-why li { margin: 2px 0; line-height: 1.45; }
.rc-why b { font-family: var(--u-mono); }

/* a status the source cannot have: one check, a compact row per activity */
.rc-sdl { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.rc-sdi { border: 1px solid var(--sk2); border-left: 3px solid var(--u-bad); border-radius: 8px; padding: 7px 9px; background: #fff; }
.rc-sdi.done { border-left-color: var(--u-good); }
.rc-sdi.warn { border-left-color: var(--u-warn); }
.rc-sdi.warn .tag { color: var(--u-warn); background: rgba(199, 140, 30, .1); }
.rc-sdi .r1 { display: flex; align-items: center; gap: 7px; min-width: 0; }
.rc-sdi .nm { flex: 1; min-width: 0; font-size: 11.5px; font-weight: 600; color: var(--st); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-sdi .tag { flex: none; font-size: 9px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--u-bad);
  background: rgba(198, 70, 43, .08); border-radius: 4px; padding: 2px 6px; }
.rc-sdi.done .tag { color: var(--u-good); background: rgba(22, 128, 61, .08); }
.rc-sdi .fact { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 5px 0 7px; font-family: var(--u-mono); font-size: 10.5px; color: var(--mu); }
.rc-sdi .fact .tag { font-family: inherit; }
.rc-seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--sk); border-radius: 7px; overflow: hidden; }
.rc-seg button { border: 0; border-right: 1px solid var(--sk); background: transparent; padding: 4px 10px; font-size: 10.5px; font-weight: 700;
  color: var(--mu); cursor: pointer; white-space: nowrap; }
.rc-seg button:last-child { border-right: 0; }
.rc-seg button:hover { background: var(--p2); color: var(--st); }
.rc-seg button.on { background: var(--st); color: #fff; }
.rc-story .rc-sdl { margin-top: 6px; }
.rc-sdall { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 10px; margin-top: 8px;
  padding: 7px 9px; border-radius: 8px; background: var(--p2); font-size: 11px; font-weight: 700; color: var(--st); }

/* styles/tabs/delay.css */
/* ══════════════════════════════════════════════════════════════════════
   DELAY & EOT — its own tab (tabs/delay/*)

   A LIGHT ENGINEERING CONTROL CENTRE. The root carries .upd as well as
   .dly, so every token of styles/tabs/update.css — the status colours, the
   bar colours, the chart paper, the gridlines and the Update grid's own
   table rules — applies here unchanged. The Gantt on the Analysis
   workspace IS the Update tab's Gantt.

   One screen high: delay.tab.js measures --dl-h; the shell is fixed and
   the workspaces' panes scroll on their own.

   This app switches theme on an attribute, never on the OS
   (AGENTS.md, v120): this sheet keys on no colour-scheme media query.
   ══════════════════════════════════════════════════════════════════════ */

.dly-host { --dl-h: calc(100vh - 120px); container-type: inline-size; container-name: dly; }
.upd.dly {
  --dl-ink: var(--st, #0F1B2E);
  --dl-mu: var(--mu, #4D6E91);
  --dl-line: var(--sk, rgba(15, 27, 46, .14));
  --dl-paper: #FFFFFF;
  --dl-soft: #F6F8FB;
  --dl-wash: #EEF3F9;
  --dl-acc: #1F4E79;
  --dl-emp: #4F5BD5;     /* employer / other-party side */
  --dl-con: #D9822B;     /* contractor side */
  --dl-neu: #1BAF7A;     /* neutral (validated against employer / contractor for CVD) */
  --dl-unk: #8A96A8;     /* not identified */
  --dl-bad: var(--u-crit, #C6462B);
  --dl-ok: var(--u-good, #188D68);
  --dl-warn: #B7791F;
  --dl-ai: var(--u-ai, #6D5BA8);
  --dl-frag: #9B4DCA;
  --dl-ev: #D14B8F;
  --u-namew: 230px;
  --u-tlw: clamp(320px, 34vw, 780px);
  height: var(--dl-h);
  min-height: 560px;
  padding-bottom: 0;   /* the Update tab's 40px is not this shell's: it only left a blank band */
  display: flex; flex-direction: column; gap: 8px;
  overflow: hidden; position: relative;
  font-size: 12px; color: var(--dl-ink);
}
.upd.dly * { box-sizing: border-box; }
.dly .mono { font-family: var(--u-mono); font-variant-numeric: tabular-nums; }
.dly .dl-sp { flex: 1 1 auto; }
.dly .dl-ic { width: 15px; height: 15px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ── buttons & controls ─────────────────────────────────────────────── */
.dly .dl-b { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: 11.5px; font-weight: 700; padding: 7px 12px;
  border-radius: 8px; border: 1px solid var(--dl-line); background: var(--dl-paper); color: var(--dl-ink); cursor: pointer; white-space: nowrap;
  transition: background .12s, border-color .12s, box-shadow .12s; }
.dly .dl-b:hover { border-color: var(--dl-mu); background: var(--dl-soft); }
.dly .dl-b:focus-visible, .dly .dl-seg:focus-visible, .dly .dl-tab:focus-visible, .dly .dl-card:focus-visible, .dly [role="button"]:focus-visible,
.dly .dl-in:focus-visible, .dly .dl-sel:focus-visible { outline: 2px solid var(--dl-acc); outline-offset: 2px; }
.dly .dl-b.pri { background: var(--dl-acc); border-color: var(--dl-acc); color: #fff; }
.dly .dl-b.pri:hover { background: #173E61; }
.dly .dl-b.ghost { background: transparent; }
.dly .dl-b.sm { padding: 5px 9px; font-size: 11px; }
.dly .dl-b.wide { width: 100%; justify-content: center; margin-top: 6px; }
.dly .dl-b.is-link { border: 0; background: none; padding: 0 2px; color: var(--dl-acc); text-decoration: underline; font-weight: 600; }
.dly .dl-b.is-danger { color: var(--dl-bad); border-color: rgba(198, 70, 43, .35); }
.dly .dl-b[disabled] { opacity: .45; cursor: not-allowed; }
.dly .dl-in, .dly .dl-sel { font: inherit; font-size: 12px; padding: 7px 9px; border-radius: 8px; border: 1px solid var(--dl-line); background: #fff; color: var(--dl-ink); width: 100%; min-width: 0; }
.dly .dl-in.sm, .dly .dl-sel.sm { font-size: 11px; padding: 5px 7px; }
.dly .dl-in.big { font-size: 15px; font-weight: 700; padding: 10px 12px; }
.dly .dl-in.num { text-align: right; }
.dly textarea.dl-in { resize: vertical; line-height: 1.45; }
.dly .dl-l { display: block; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--dl-mu); margin: 12px 0 5px; }
.dly .dl-segs { display: inline-flex; gap: 2px; background: var(--dl-wash); border-radius: 9px; padding: 3px; }
.dly .dl-segs.wrap { flex-wrap: wrap; }
.dly .dl-seg { font: inherit; font-size: 11px; font-weight: 700; border: 0; background: transparent; color: var(--dl-mu); padding: 5px 10px; border-radius: 7px; cursor: pointer; white-space: nowrap; }
.dly .dl-seg:hover { color: var(--dl-ink); }
.dly .dl-seg.on { background: #fff; color: var(--dl-ink); box-shadow: 0 1px 3px rgba(15, 27, 46, .14); }
.dly .dl-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.dly .dl-2.top { align-items: start; }
.dly .dl-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.dly .dl-tog { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--dl-mu); white-space: nowrap; }

/* ── the header: light, with the project's figures ───────────────────── */
.dl-top { flex: none; display: flex; align-items: stretch; gap: 0; min-height: 58px; background: var(--dl-paper);
  border: 1px solid var(--dl-line); border-radius: 14px; padding: 0 10px 0 0; overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .05), 0 12px 28px -24px rgba(15, 27, 46, .45); }
.dl-brand { display: flex; flex-direction: column; justify-content: center; padding: 8px 18px; min-width: 0; max-width: 300px;
  background: linear-gradient(135deg, #F1F5FB, #E6EEF8); border-right: 1px solid var(--dl-line); }
.dl-brand .k em.dl-build { font-style: normal; font-weight: 700; letter-spacing: .02em; color: #7C8DA3; margin-left: 4px; }
.dl-brand .k { font-size: 9.5px; font-weight: 800; letter-spacing: .16em; color: var(--dl-acc); }
.dl-brand .v { font-size: 15px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dl-tf { display: flex; flex-direction: column; justify-content: center; padding: 6px 14px; border-right: 1px solid var(--dl-line); min-width: 0; }
.dl-tf .k { font-size: 8.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--dl-mu); white-space: nowrap; }
.dl-tf .v { font-size: 13px; font-weight: 700; white-space: nowrap; }
.dl-tf .v em { font-style: normal; font-weight: 600; margin-left: 6px; font-size: 11px; color: var(--dl-mu); }
.dl-tf.is-bad .v em { color: var(--dl-bad); }
.dl-tf.is-ok .v em { color: var(--dl-ok); }
.dl-cpill { align-self: center; margin-left: 10px; font-size: 10px; font-weight: 800; letter-spacing: .04em; padding: 5px 10px; border-radius: 20px; white-space: nowrap; max-width: 250px; overflow: hidden; text-overflow: ellipsis; }
.dl-cpill.is-ok { background: rgba(24, 141, 104, .1); color: var(--dl-ok); border: 1px solid rgba(24, 141, 104, .35); }
.dl-cpill.is-warn { background: rgba(183, 121, 31, .1); color: var(--dl-warn); border: 1px solid rgba(183, 121, 31, .4); }
.dl-asof { align-self: center; display: inline-flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--dl-mu); margin-right: 8px; }
.dl-asof input { font: inherit; font-size: 11.5px; letter-spacing: 0; text-transform: none; font-weight: 600; color: var(--dl-ink); border: 1px solid var(--dl-line); border-radius: 8px; padding: 5px 7px; background: #fff; }
.dl-top > .dl-b { align-self: center; margin-left: 6px; }
/* the panel's width decides, not the viewport's: the sidebar takes a
   different share of the screen on every layout */
@container dly (max-width: 1500px) { .dl-top .tf-eot { display: none; } .dl-brand { max-width: 220px; } }
@container dly (max-width: 1320px) { .dl-top .tf-bl { display: none; } .dl-asof > span { display: none; } }
@container dly (max-width: 1080px) { .dl-cpill { display: none; } .dl-top > .dl-b span { display: none; } }
@container dly (max-width: 820px) { .dl-top .tf-dd { display: none; } }

/* ── the workspace tabs ─────────────────────────────────────────────── */
.dl-tabs { flex: none; display: flex; gap: 2px; background: var(--dl-paper); border: 1px solid var(--dl-line); border-radius: 12px; padding: 4px; overflow-x: auto; scrollbar-width: none; }
.dl-tabs::-webkit-scrollbar { display: none; }
.dl-tab { flex: 1 1 0; min-width: max-content; display: inline-flex; align-items: center; justify-content: center; gap: 7px; font: inherit; font-size: 12px; font-weight: 700;
  color: var(--dl-mu); background: transparent; border: 0; padding: 8px 12px; border-radius: 9px; cursor: pointer; position: relative; }
.dl-tab:hover { background: var(--dl-soft); color: var(--dl-ink); }
.dl-tab.on { background: var(--dl-wash); color: var(--dl-acc); box-shadow: inset 0 -2px 0 var(--dl-acc); }
.dl-badge { font-size: 10px; min-width: 18px; height: 18px; border-radius: 9px; padding: 0 5px; display: inline-flex; align-items: center; justify-content: center; background: var(--dl-wash); color: var(--dl-acc); }
.dl-badge.is-bad { background: var(--dl-bad); color: #fff; }
.dl-badge.is-warn { background: rgba(183, 121, 31, .16); color: var(--dl-warn); }

.dl-stage { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 8px; position: relative; }
.dl-alert { flex: none; display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; font-weight: 600; }
.dl-alert.is-bad { background: #FDEFEB; color: #8B3A1F; border: 1px solid rgba(198, 70, 43, .35); }
.dl-alert .dl-b { margin-left: auto; }
.dl-veil { position: absolute; inset: 0; z-index: 30; background: rgba(246, 248, 251, .72); backdrop-filter: blur(1.5px); display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 12px; font-weight: 700; color: var(--dl-acc); border-radius: 14px; }
.dl-spin { width: 34px; height: 34px; border-radius: 50%; border: 3px solid var(--dl-wash); border-top-color: var(--dl-acc); animation: dl-spin .9s linear infinite; }
@keyframes dl-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .dl-spin { animation: none; } }

/* ── panes ──────────────────────────────────────────────────────────── */
.dl-pane { background: var(--dl-paper); border: 1px solid var(--dl-line); border-radius: 12px; min-height: 0; min-width: 0;
  display: flex; flex-direction: column; overflow: hidden; position: relative;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .04), 0 10px 24px -22px rgba(15, 27, 46, .35); }
.dl-ph { flex: none; display: flex; align-items: center; gap: 10px; padding: 10px 12px 8px; flex-wrap: wrap; border-bottom: 1px solid rgba(15, 27, 46, .06); }
.dl-ph h3 { margin: 0; font-size: 10.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--dl-ink); }
.dl-ph > span { font-size: 11px; color: var(--dl-mu); }
.dl-ph > .dl-b, .dl-ph > .dl-gtools, .dl-ph > .dl-tog { margin-left: auto; }
.dl-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 10px 12px; overscroll-behavior: contain; }
.dl-split { flex: 1 1 auto; min-height: 0; display: grid; gap: 8px; }
.dl-split.ev3 { grid-template-columns: 230px minmax(0, 1fr) 380px; }
.dl-split.rv { grid-template-columns: minmax(0, 1fr) 320px; }
.dl-split.wz { grid-template-columns: 210px minmax(0, 1fr) 320px; }
.dl-split.an0 { grid-template-columns: 300px minmax(0, 1fr); }
.dl-split.an { grid-template-columns: 330px minmax(0, 1fr) 310px; }
.dl-split.an0 > .dl-ancol + div:empty { display: none; }
.dl-split.win { grid-template-columns: minmax(0, 1fr) 330px; }
.dl-split.conc { grid-template-columns: minmax(0, 1fr) 360px; }
.dl-split.ct { grid-template-columns: 300px minmax(0, 1fr) 340px; }
.dl-split.nt { grid-template-columns: minmax(0, 1fr) 460px; }
.dl-split.evd { grid-template-columns: 280px minmax(0, 1fr) 300px; }
.dl-split.rp { grid-template-columns: 290px minmax(0, 1fr); }
.dl-ancol { display: flex; flex-direction: column; gap: 8px; min-height: 0; min-width: 0; }
.dl-ancol > .grow { flex: 1 1 auto; }
.dl-ancol > .lower { flex: 0 0 auto; max-height: 42%; }
.dl-pane.lower.shut { max-height: 44px; }
@media (max-width: 1280px) {
  .dl-split.ev3, .dl-split.an, .dl-split.ct, .dl-split.evd { grid-template-columns: 250px minmax(0, 1fr); }
  .dl-split.ev3 > :last-child, .dl-split.an > :last-child, .dl-split.ct > :last-child, .dl-split.evd > :last-child { grid-column: 1 / -1; max-height: 42vh; }
  .upd.dly { height: auto; overflow: visible; }
  /* the Gantt workspaces keep one screen at every width: the page never
     scrolls, the Gantt scrolls inside its own area (as the Update tab) */
  .upd.dly[data-ws="studio"], .upd.dly[data-ws="overview"] { height: var(--dl-h); overflow: hidden; }
}
@media (max-width: 860px) {
  .dl-split { grid-template-columns: 1fr !important; }
  .dl-split > * { grid-column: auto !important; max-height: none; }
}

.dly .dl-empty { padding: 28px 18px; text-align: center; color: var(--dl-mu); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.dly .dl-empty .t { font-size: 14px; font-weight: 800; color: var(--dl-ink); }
.dly .dl-empty .s { max-width: 440px; line-height: 1.5; }
.dly .dl-empty.big { height: 100%; justify-content: center; }
.dly .dl-note { font-size: 11.5px; color: var(--dl-mu); line-height: 1.5; margin: 6px 0; }
.dly .dl-found { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 4px 0 10px; padding: 8px 10px; border: 1px solid #D5E3F0; background: #F5F9FD; border-radius: 8px; font-size: 12px; color: #1E293B; line-height: 1.45; } .dly .dl-found em { display: block; font-style: normal; color: var(--dl-mu); font-size: 11px; }
.dly .dl-note.is-warn { color: var(--dl-warn); }
.dly .dl-note.is-ok { color: var(--dl-ok); }
.dly .dl-hint { font-size: 11px; color: var(--dl-mu); margin-top: 5px; line-height: 1.45; }
.dly .dl-sub { font-size: 10px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--dl-mu); margin: 14px 0 6px; }
.dly .dl-mini { margin: 0; padding-left: 16px; display: flex; flex-direction: column; gap: 4px; line-height: 1.45; }
.dly .dl-mini.mono { font-size: 11px; }
.dly .dl-bar { flex: none; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 10px; background: var(--dl-paper); border: 1px solid var(--dl-line); border-radius: 12px; }
.dl-pane .dl-bar { border: 0; border-bottom: 1px solid rgba(15, 27, 46, .06); border-radius: 0; }
.dly .dl-bar > b { font-size: 12px; }
.dly .dl-bar .dl-in, .dly .dl-bar .dl-sel { width: auto; }

.dly .dl-pill { display: inline-flex; align-items: center; font-size: 10px; font-weight: 800; letter-spacing: .03em; padding: 3px 8px; border-radius: 12px; white-space: nowrap; border: 1px solid transparent; }
.dly .dl-pill.is-ok { background: rgba(24, 141, 104, .1); color: var(--dl-ok); border-color: rgba(24, 141, 104, .3); }
.dly .dl-pill.is-warn { background: rgba(183, 121, 31, .12); color: var(--dl-warn); border-color: rgba(183, 121, 31, .35); }
.dly .dl-pill.is-bad { background: rgba(198, 70, 43, .1); color: var(--dl-bad); border-color: rgba(198, 70, 43, .35); }
.dly .dl-pill.is-mute { background: var(--dl-soft); color: var(--dl-mu); border-color: var(--dl-line); }
.dly .dl-chip { display: inline-flex; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 6px; background: var(--dl-wash); color: var(--dl-acc); white-space: nowrap; }
.dly .dl-chip.lite { background: transparent; border: 1px solid var(--dl-line); color: var(--dl-mu); }
.dly .dl-side { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 800; padding: 2px 8px; border-radius: 6px; white-space: nowrap; }
.dly .dl-side::before { content: ''; width: 7px; height: 7px; border-radius: 2px; background: currentColor; }
.dly .s-EMPLOYER.dl-side { color: var(--dl-emp); background: rgba(79, 91, 213, .08); }
.dly .s-CONTRACTOR.dl-side { color: var(--dl-con); background: rgba(217, 130, 43, .1); }
.dly .s-NEUTRAL.dl-side { color: var(--dl-neu); background: rgba(62, 156, 143, .1); }
.dly .s-UNKNOWN.dl-side { color: var(--dl-unk); background: var(--dl-soft); }

.dly .dl-callout { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 10px; margin: 8px 0; line-height: 1.5; font-size: 11.5px; }
.dly .dl-callout .dl-ic { margin-top: 1px; }
.dly .dl-callout.is-info { background: #EEF3FB; color: #22466E; }
.dly .dl-callout.is-warn { background: #FDF6EA; color: #7A4E12; }
.dly .dl-callout.is-ok { background: #EAF6F1; color: #125C44; }

/* ── overview ───────────────────────────────────────────────────────── */
.dl-grid.dl-ov { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.dl-kpis { flex: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
@media (max-width: 1000px) { .dl-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .dl-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.dly .dl-kpi { text-align: left; font: inherit; display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 12px; background: var(--dl-paper);
  border: 1px solid var(--dl-line); position: relative; overflow: hidden; min-width: 0; color: inherit; }
.dly button.dl-kpi { cursor: pointer; }
.dly button.dl-kpi:hover { border-color: var(--dl-mu); }
.dly .dl-kpi::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--dl-line); }
.dly .dl-kpi .k { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--dl-mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-kpi b { font-size: 22px; font-weight: 800; font-family: var(--u-mono); letter-spacing: -.5px; line-height: 1.15; }
.dly .dl-kpi b small { font-size: 11px; font-weight: 700; color: var(--dl-mu); letter-spacing: 0; }
.dly .dl-kpi em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-kpi.is-bad::before { background: var(--dl-bad); } .dly .dl-kpi.is-bad b { color: var(--dl-bad); }
.dly .dl-kpi.is-warn::before { background: var(--dl-warn); }
.dly .dl-kpi.is-ok::before { background: var(--dl-ok); }
.dly .dl-kpi.is-info::before { background: var(--dl-acc); }
.dl-ovmain { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 8px; }
.dl-col { display: grid; grid-template-rows: minmax(0, 1fr) minmax(0, .8fr); gap: 8px; min-height: 0; }
@media (max-width: 1100px) { .dl-ovmain { grid-template-columns: 1fr; } }
.dl-tlwrap { background: linear-gradient(180deg, #FBFCFE, #fff); }
.dly .dl-att { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-att button { width: 100%; display: flex; gap: 8px; align-items: baseline; text-align: left; font: inherit; font-size: 11.5px; padding: 7px 9px; border-radius: 8px;
  border: 1px solid var(--dl-line); background: #fff; cursor: pointer; border-left: 3px solid var(--dl-unk); color: var(--dl-ink); }
.dly .dl-att button:hover { background: var(--dl-soft); }
.dly .dl-att .t-bad { border-left-color: var(--dl-bad); } .dly .dl-att .t-warn { border-left-color: var(--dl-warn); } .dly .dl-att .t-ok { border-left-color: var(--dl-ok); }
.dly .dl-att b { flex: none; }
.dly .dl-mvbig { display: flex; align-items: baseline; gap: 10px; padding: 8px 10px; border-radius: 10px; background: var(--dl-soft); margin-bottom: 8px; }
.dly .dl-mvbig b { font-family: var(--u-mono); font-size: 22px; white-space: nowrap; }
.dly .dl-mvbig.is-bad b { color: var(--dl-bad); } .dly .dl-mvbig.is-ok b { color: var(--dl-ok); }
.dly .dl-mvbig span { color: var(--dl-mu); font-size: 11.5px; }
.dly .dl-finds { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.dly .dl-finds.sm li { font-size: 11.5px; padding: 5px 8px; border-radius: 7px; background: var(--dl-soft); border-left: 3px solid var(--dl-unk); }
.dly .dl-finds.sm li.high { border-left-color: var(--dl-bad); } .dly .dl-finds.sm li.medium { border-left-color: var(--dl-warn); } .dly .dl-finds.sm li.is-good { border-left-color: var(--dl-ok); }
.dly .dl-find { display: grid; grid-template-columns: 130px minmax(0, 1fr) auto; grid-template-areas: 'code t aid' 'code cause cause'; gap: 4px 12px;
  padding: 9px 11px; border-radius: 10px; border: 1px solid var(--dl-line); border-left: 4px solid var(--dl-unk); background: #fff; }
.dly .dl-find.high { border-left-color: var(--dl-bad); } .dly .dl-find.medium { border-left-color: var(--dl-warn); } .dly .dl-find.is-good { border-left-color: var(--dl-ok); }
.dly .dl-find .code { grid-area: code; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--dl-mu); }
.dly .dl-find .t { grid-area: t; line-height: 1.45; }
.dly .dl-find .aid { grid-area: aid; color: var(--dl-mu); }
.dly .dl-find .cause { grid-area: cause; display: flex; gap: 6px; }
.dly .dl-find .cause .dl-sel { width: auto; }
.dly .dl-prose p { line-height: 1.55; margin: 0 0 10px; }

/* ── the SVG timeline ───────────────────────────────────────────────── */
.dly svg.dl-tl, .dly svg.dl-win, .dly svg.dl-conc { width: 100%; height: auto; display: block; font-family: inherit; }
.dl-tl .grid { stroke: rgba(15, 27, 46, .07); }
.dl-tl .ax, .dl-win .ax { font-size: 11.5px; fill: var(--dl-mu); font-weight: 700; }
.dl-tl .lane { font-size: 12px; font-weight: 800; fill: var(--dl-ink); }
.dl-tl .lane-s { font-size: 10px; fill: var(--dl-mu); }
.dl-tl .bl { fill: var(--u-bl, #D9A419); }
.dl-tl .rl { font-size: 11px; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-tl .st line { stroke: #8FA6C0; stroke-width: 2; }
.dl-tl .st circle { fill: #fff; stroke: #1F4E79; stroke-width: 1.5; }
.dl-tl .st path { fill: #1F4E79; }
.dl-tl .st.late path { fill: var(--dl-bad); } .dl-tl .st.early path { fill: var(--dl-ok); }
.dl-tl .blf { stroke: var(--u-bl, #D9A419); stroke-width: 1.5; stroke-dasharray: 5 4; }
.dl-tl .win rect { fill: #EEF3F9; stroke: #D3DEEA; }
.dl-tl .win.b rect { fill: #F6F8FB; }
.dl-tl .win.late rect { fill: rgba(198, 70, 43, .08); stroke: rgba(198, 70, 43, .25); }
.dl-tl .win.early rect { fill: rgba(24, 141, 104, .08); stroke: rgba(24, 141, 104, .25); }
.dl-tl .win text { font-size: 11px; font-weight: 700; fill: var(--dl-ink); }
.dl-tl .ev { cursor: pointer; }
.dl-tl .ev text { font-size: 11px; font-weight: 700; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-tl .ev.s-EMPLOYER rect, .dl-conc .ce.s-EMPLOYER rect { fill: var(--dl-emp); }
.dl-tl .ev.s-CONTRACTOR rect, .dl-conc .ce.s-CONTRACTOR rect { fill: var(--dl-con); }
.dl-tl .ev.s-NEUTRAL rect, .dl-conc .ce.s-NEUTRAL rect { fill: var(--dl-neu); }
.dl-tl .ev.s-UNKNOWN rect, .dl-conc .ce.s-UNKNOWN rect { fill: var(--dl-unk); }
.dl-tl .ev:hover rect, .dl-tl .ev:focus rect, .dl-tl .ev.focus rect { stroke: var(--dl-ink); stroke-width: 1.5; }
.dl-tl .nt { stroke-width: 1.4; fill: none; }
.dl-tl .nt.is-bad { stroke: var(--dl-bad); fill: var(--dl-bad); } .dl-tl .nt.is-warn { stroke: var(--dl-warn); fill: var(--dl-warn); }
.dl-tl .nt.is-ok { stroke: var(--dl-ok); fill: var(--dl-ok); } .dl-tl .nt.is-mute { stroke: var(--dl-mu); fill: var(--dl-mu); }
.dl-tl .rcv circle { fill: #fff; stroke: var(--dl-ok); stroke-width: 2; }
.dl-tl .rcv line, .dl-tl .rcv path { stroke: var(--dl-ok); stroke-dasharray: 3 3; }
.dl-tl .rcv text { font-size: 10px; font-weight: 700; fill: var(--dl-ok); }
.dl-tl .dd { stroke: var(--u-dd, #2F6BD8); stroke-width: 1.5; }
.dl-tl .asof { stroke: var(--dl-ink); stroke-width: 1; stroke-dasharray: 2 3; }
.dly .dl-lgd { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 10.5px; color: var(--dl-mu); padding: 8px 4px 2px; }
.dly .dl-lgd span { display: inline-flex; align-items: center; gap: 6px; }
.dly .dl-lgd .k { width: 14px; height: 8px; border-radius: 2px; display: inline-block; }
.dly .dl-lgd .k.bl { background: var(--u-bl, #D9A419); } .dly .dl-lgd .k.st { background: #1F4E79; height: 2px; }
.dly .dl-lgd .k.s-EMPLOYER { background: var(--dl-emp); } .dly .dl-lgd .k.s-CONTRACTOR { background: var(--dl-con); } .dly .dl-lgd .k.s-NEUTRAL { background: var(--dl-neu); }
.dly .dl-lgd .k.nt { background: var(--dl-warn); width: 3px; height: 12px; } .dly .dl-lgd .k.dd { background: var(--u-dd, #2F6BD8); width: 2px; height: 12px; }
.dly .dl-lgd .k.asof { border-left: 1px dashed var(--dl-ink); width: 2px; height: 12px; }
.dly .dl-lgd .k.late { background: rgba(198, 70, 43, .75); } .dly .dl-lgd .k.early { background: rgba(24, 141, 104, .75); }
.dly .dl-lgd .k.cum { background: var(--dl-acc); height: 2px; } .dly .dl-lgd .k.ddm { background: var(--u-dd, #2F6BD8); width: 8px; height: 8px; border-radius: 50%; }
.dly .dl-lgd .k.is-crit { background: var(--dl-emp); } .dly .dl-lgd .k.nc { background: rgba(79, 91, 213, .3); }
.dly .dl-lgd .k.na { background: repeating-linear-gradient(45deg, #C4CCD8 0 2px, #fff 2px 4px); border: 1px solid #C4CCD8; }
.dly .dl-lgd .k.pci { background: rgba(198, 70, 43, .18); border: 1px solid var(--dl-bad); }

/* the overview's impact chart */
.dl-ancol > .tlp { flex: 0 1 auto; max-height: 58%; }
.dl-ov .dl-ancol > .tlp { max-height: none; }
.dly svg.dl-imp { width: 100%; height: auto; display: block; }
.dl-imp .grid { stroke: rgba(15, 27, 46, .07); }
.dl-imp .ax { font-size: 11px; fill: var(--dl-mu); font-weight: 700; }
.dl-imp .im { cursor: pointer; }
.dl-imp .hit { fill: transparent; }
.dl-imp .im:hover .hit, .dl-imp .im:focus .hit { fill: rgba(31, 78, 121, .05); }
.dl-imp .sd { fill: var(--dl-unk); }
.dl-imp .s-EMPLOYER .sd { fill: var(--dl-emp); } .dl-imp .s-CONTRACTOR .sd { fill: var(--dl-con); } .dl-imp .s-NEUTRAL .sd { fill: var(--dl-neu); }
.dl-imp .id { font-size: 12px; font-weight: 800; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-imp .tt { font-size: 11.5px; fill: var(--dl-mu); }
.dl-imp .gr { fill: var(--dl-bad); }
.dl-imp .mi { fill: var(--dl-ok); }
.dl-imp .eo { fill: #1F4E79; }
.dl-imp .rg { fill: url(#none); fill: rgba(31, 78, 121, .25); stroke: #1F4E79; stroke-dasharray: 3 2; }
.dl-imp .na { fill: #fff; stroke: #9AA6B8; stroke-dasharray: 4 3; }
.dl-imp .lab { font-size: 11.5px; font-weight: 700; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-imp .lab.eo { fill: #1F4E79; }
.dl-imp .nt { font-size: 11px; font-weight: 800; }
.dl-imp .nt.is-bad { fill: var(--dl-bad); } .dl-imp .nt.is-warn { fill: var(--dl-warn); } .dl-imp .nt.is-ok { fill: var(--dl-ok); } .dl-imp .nt.is-mute { fill: var(--dl-mu); }

/* ── events ─────────────────────────────────────────────────────────── */
.dly .dl-form .dl-in, .dly .dl-form .dl-sel { margin-bottom: 2px; }
.dly .dl-cards { display: flex; flex-direction: column; gap: 6px; }
.dly .dl-card { font: inherit; color: inherit; text-align: left; width: 100%; display: grid; grid-template-columns: 4px minmax(0, 2.6fr) minmax(0, 1.1fr) minmax(0, 1.2fr) minmax(0, 1.1fr) 34px;
  gap: 12px; align-items: center; padding: 10px 12px 10px 0; background: #fff; border: 1px solid var(--dl-line); border-radius: 11px; cursor: pointer; transition: box-shadow .12s, border-color .12s; }
.dly .dl-card:hover { border-color: #B9C7D8; box-shadow: 0 6px 16px -12px rgba(15, 27, 46, .5); }
.dly .dl-card.on { border-color: var(--dl-acc); box-shadow: 0 0 0 2px rgba(31, 78, 121, .15); }
.dly .dl-card.closed { opacity: .62; }
.dly .dl-card .stripe { align-self: stretch; border-radius: 11px 0 0 11px; background: var(--dl-unk); margin: -10px 0; }
.dly .dl-card.s-EMPLOYER .stripe { background: var(--dl-emp); } .dly .dl-card.s-CONTRACTOR .stripe { background: var(--dl-con); } .dly .dl-card.s-NEUTRAL .stripe { background: var(--dl-neu); }
.dly .dl-card .c1 { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.dly .dl-card .c1 .tt { font-weight: 700; font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-card .chips { display: flex; gap: 4px; flex-wrap: wrap; }
.dly .dl-card .c2, .dly .dl-card .c3, .dly .dl-card .c4 { display: flex; flex-direction: column; gap: 3px; font-size: 11px; min-width: 0; }
.dly .dl-card .c2 i { font-style: normal; color: var(--dl-mu); margin: 0 3px; }
.dly .dl-card em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-card .c4 b { font-size: 12px; }
.dly .dl-impact { height: 6px; border-radius: 3px; background: var(--dl-wash); overflow: hidden; }
.dly .dl-impact i { display: block; height: 100%; background: linear-gradient(90deg, #E08A6D, var(--dl-bad)); border-radius: 3px; }
.dly .dl-ring .bg { fill: none; stroke: var(--dl-wash); stroke-width: 3; }
.dly .dl-ring .fg { fill: none; stroke-width: 3; stroke-linecap: round; }
.dly .dl-ring.is-ok .fg { stroke: var(--dl-ok); } .dly .dl-ring.is-warn .fg { stroke: var(--dl-warn); } .dly .dl-ring.is-bad .fg { stroke: var(--dl-bad); }
.dly .dl-ring text { font-size: 8px; font-weight: 800; fill: var(--dl-ink); font-family: var(--u-mono); }
@media (max-width: 1500px) { .dly .dl-card { grid-template-columns: 4px minmax(0, 2fr) minmax(0, 1.2fr) minmax(0, 1fr) 34px; } .dly .dl-card .c2 { display: none; } }

.dly .dl-detail .dl-evt { font-size: 16px; margin: 0 0 6px; line-height: 1.3; }
.dly .dl-desc { margin: 0 0 8px; line-height: 1.5; color: #33475F; }
.dly .dl-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.dly .dl-facts { display: flex; flex-direction: column; border: 1px solid var(--dl-line); border-radius: 10px; overflow: hidden; margin: 8px 0; }
.dly .dl-fr { display: flex; justify-content: space-between; gap: 10px; padding: 6px 10px; font-size: 11.5px; }
.dly .dl-fr:nth-child(odd) { background: var(--dl-soft); }
.dly .dl-fr span { color: var(--dl-mu); white-space: nowrap; }
.dly .dl-fr b { font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }
.dly .dl-fr b em { font-style: normal; color: var(--dl-mu); font-size: 10.5px; }
.dly .dl-acts { display: flex; gap: 6px; flex-wrap: wrap; margin: 10px 0; }
.dly .dl-acts.col { flex-direction: column; }
.dly .dl-acts.col .dl-b { justify-content: center; }
.dly .dl-edit { border: 1px solid var(--dl-line); border-radius: 10px; padding: 0 10px; margin: 8px 0; }
.dly .dl-edit > summary { cursor: pointer; font-weight: 800; font-size: 11px; padding: 9px 0; color: var(--dl-ink); }
.dly .dl-edit[open] { padding-bottom: 10px; }
.dly .dl-hist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 11px; }
.dly .dl-hist li { padding: 5px 7px; border-radius: 7px; background: var(--dl-soft); line-height: 1.4; }
.dly .dl-hist em { font-style: normal; font-size: 9.5px; font-weight: 800; padding: 1px 5px; border-radius: 4px; background: #fff; color: var(--dl-mu); }
.dly .dl-hist em.src-ENGINE { color: var(--dl-acc); } .dly .dl-hist em.src-AI { color: var(--dl-ai); }
.dly .dl-aibox { border: 1px dashed rgba(109, 91, 168, .45); background: rgba(109, 91, 168, .04); border-radius: 10px; padding: 8px 10px; margin: 10px 0; }
.dly .dl-aibox .hd { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; color: var(--dl-ai); }
.dly .dl-aibox .hd span { font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-aibox .hd .dl-b { margin-left: auto; }
.dly .dl-ai { border-left: 3px solid var(--dl-ai); padding: 6px 10px; margin: 8px 0; background: rgba(109, 91, 168, .05); border-radius: 0 8px 8px 0; font-size: 11.5px; line-height: 1.5; }
.dly .dl-ai .lbl { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--dl-ai); margin-bottom: 4px; }
.dly .dl-ai .sub { font-weight: 800; font-size: 10.5px; margin-top: 6px; }
.dly .dl-ai ul { margin: 4px 0; padding-left: 16px; }
.dly .dl-ai .rej { font-size: 10.5px; color: var(--dl-warn); margin-top: 6px; }

/* the story chain: PLAN → EVENT → … → NET IMPACT */
.dly .dl-story { list-style: none; margin: 10px 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; counter-reset: s; }
.dly .dl-story li { position: relative; padding: 10px 14px 10px 12px; background: var(--dl-soft); display: flex; flex-direction: column; gap: 2px; min-width: 0;
  clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%, 10px 50%); }
.dly .dl-story li:first-child { clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%); border-radius: 10px 0 0 10px; }
.dly .dl-story li:nth-child(even) { background: var(--dl-wash); }
.dly .dl-story .n { font-size: 9px; font-weight: 800; color: var(--dl-mu); }
.dly .dl-story .k { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--dl-mu); }
.dly .dl-story b { font-family: var(--u-mono); font-size: 12.5px; line-height: 1.25; overflow-wrap: anywhere; }
.dly .dl-story em { font-style: normal; font-size: 10px; color: var(--dl-mu); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.dly .dl-story li.is-bad b { color: var(--dl-bad); } .dly .dl-story li.is-good b { color: var(--dl-ok); }
.dly .dl-story li.net { background: #1F4E79; } .dly .dl-story li.net * { color: #fff !important; }
.dly .dl-story.sm { grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 4px; }
.dly .dl-story.sm li, .dly .dl-story.sm li:first-child { clip-path: none; border-radius: 8px; margin-right: 4px; padding: 7px 8px; }
.dly .dl-story.sm b { font-size: 12px; }
@media (max-width: 1100px) { .dly .dl-story { grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 4px; } .dly .dl-story li { clip-path: none !important; border-radius: 8px; margin-right: 4px; } }

/* ── the guided workflow ────────────────────────────────────────────── */
.dly .dl-wzs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.dly .dl-wzs button { width: 100%; display: flex; align-items: center; gap: 10px; font: inherit; font-size: 12px; font-weight: 700; padding: 8px 10px; border: 0; background: transparent; border-radius: 9px; color: var(--dl-mu); cursor: pointer; text-align: left; }
.dly .dl-wzs button:hover { background: var(--dl-soft); }
.dly .dl-wzs .n { width: 24px; height: 24px; flex: none; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; border: 2px solid var(--dl-line); background: #fff; font-size: 11px; }
.dly .dl-wzs .n .dl-ic { width: 12px; height: 12px; }
.dly .dl-wzs button.on { background: var(--dl-wash); color: var(--dl-acc); }
.dly .dl-wzs button.on .n { border-color: var(--dl-acc); color: var(--dl-acc); }
.dly .dl-wzs button.done { color: var(--dl-ink); }
.dly .dl-wzs button.done .n { background: var(--dl-ok); border-color: var(--dl-ok); color: #fff; }
.dly .wzb h2 { font-size: 18px; margin: 4px 0 10px; }
.dly .dl-fld { margin-bottom: 10px; }
.dly .dl-chipset { display: flex; flex-wrap: wrap; gap: 6px; }
.dly .dl-chipset .dl-seg { background: var(--dl-soft); border: 1px solid var(--dl-line); }
.dly .dl-chipset .dl-seg.on { background: var(--dl-acc); color: #fff; border-color: var(--dl-acc); }
.dly .dl-wzf { flex: none; display: flex; gap: 8px; align-items: center; padding: 10px 12px; border-top: 1px solid var(--dl-line); background: var(--dl-soft); }
.dly .dl-tree { list-style: none; margin: 6px 0; padding: 0; font-size: 11.5px; }
.dly .dl-tree li { display: flex; align-items: center; gap: 4px; padding: 3px 0 3px calc(var(--lv, 0) * 16px); border-bottom: 1px solid rgba(15, 27, 46, .04); }
.dly .dl-tree li.w { font-weight: 700; background: var(--dl-soft); }
.dly .dl-tree li label { display: flex; align-items: center; gap: 6px; min-width: 0; cursor: pointer; }
.dly .dl-tree li em { font-style: normal; color: var(--dl-mu); font-size: 10.5px; margin-left: 4px; white-space: nowrap; }
.dly .dl-tree .tw { border: 0; background: none; cursor: pointer; width: 18px; color: var(--dl-mu); }
.dly .dl-tree .is-crit { color: var(--dl-bad); font-style: normal; } .dly .dl-tree .ms { color: var(--dl-acc); font-style: normal; }
.dly .dl-checks { list-style: none; margin: 4px 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: 11.5px; }
.dly .dl-checks em { font-style: normal; color: var(--dl-mu); }
.dly .dl-evform { display: grid; grid-template-columns: 150px minmax(0, 1.4fr) minmax(0, 1fr) 130px 150px auto; gap: 6px; margin: 8px 0; align-items: center; }
.dl-pane > .dl-evform { padding: 8px 12px 0; margin: 0; }
.dly .dl-basis { list-style: none; margin: 6px 0 12px; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-basis button { width: 100%; text-align: left; font: inherit; padding: 8px 10px; border-radius: 9px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; display: flex; align-items: center; gap: 8px; }
.dly .dl-basis button.on { border-color: var(--dl-acc); background: var(--dl-wash); }

.dly .dl-mcards { display: flex; flex-direction: column; gap: 5px; }
.dly .dl-mc { border: 1px solid var(--dl-line); border-radius: 10px; background: #fff; overflow: hidden; border-left: 3px solid var(--dl-unk); }
.dly .dl-mc.is-ok { border-left-color: var(--dl-ok); } .dly .dl-mc.is-warn { border-left-color: var(--dl-warn); } .dly .dl-mc.is-bad { border-left-color: var(--dl-bad); }
.dly .dl-mc.on { box-shadow: 0 0 0 2px rgba(31, 78, 121, .25); border-color: var(--dl-acc); }
.dly .dl-mc .hd { width: 100%; display: flex; align-items: center; gap: 8px; font: inherit; text-align: left; padding: 7px 8px; border: 0; background: none; cursor: pointer; }
.dly .dl-mc .hd[disabled] { cursor: not-allowed; opacity: .6; }
.dly .dl-mc .dl-lt { width: 22px; height: 22px; flex: none; border-radius: 6px; background: var(--dl-wash); color: var(--dl-acc); font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.dly .dl-mc .nm { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 0; flex: 1 1 auto; }
.dly .dl-mc .nm b { font-size: 11.5px; }
.dly .dl-mc .nm em { font-style: normal; font-size: 10px; color: var(--dl-mu); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-mc details { padding: 0 10px 6px 38px; }
.dly .dl-mc summary { cursor: pointer; font-size: 10.5px; color: var(--dl-acc); font-weight: 700; }
.dly .dl-chk { list-style: none; margin: 4px 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.dly .dl-chk li { display: flex; gap: 6px; align-items: flex-start; font-size: 11px; line-height: 1.4; }
.dly .dl-chk li em { font-style: normal; font-size: 9.5px; color: var(--dl-mu); margin-left: auto; white-space: nowrap; }
.dly .dl-chk li.is-ok .dl-ic { color: var(--dl-ok); } .dly .dl-chk li.is-warn .dl-ic { color: var(--dl-warn); } .dly .dl-chk li.is-bad .dl-ic { color: var(--dl-bad); }
.dly .dl-chk .dl-ic { width: 13px; height: 13px; margin-top: 1px; }

/* ── tables ─────────────────────────────────────────────────────────── */
.dly table.dl-t { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 11.5px; }
.dly table.dl-t th { position: sticky; top: 0; background: var(--dl-soft); text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: var(--dl-mu); padding: 7px 8px; border-bottom: 1px solid var(--dl-line); z-index: 1; }
.dly table.dl-t td { padding: 7px 8px; border-bottom: 1px solid rgba(15, 27, 46, .06); vertical-align: top; line-height: 1.4; }
.dly table.dl-t tr[data-act] { cursor: pointer; }
.dly table.dl-t tr[data-act]:hover td { background: var(--dl-soft); }
.dly table.dl-t tr.sel td { background: var(--dl-wash); }
.dly table.dl-t tr.path td:first-child { box-shadow: inset 3px 0 0 var(--dl-bad); }
.dly table.dl-t tr.tot td { font-weight: 800; background: var(--dl-soft); }
.dly table.dl-t tr.wd td { opacity: .5; text-decoration: line-through; }
.dly table.dl-t .num { text-align: right; }
.dly table.dl-t em { font-style: normal; color: var(--dl-mu); font-size: 10.5px; }
.dly table.dl-t.fr td { padding: 3px 4px; }
.dly .dl-frag { margin-top: 12px; padding: 10px; border: 1px dashed rgba(155, 77, 202, .45); border-radius: 10px; background: rgba(155, 77, 202, .03); }
.dly .dl-frag table { margin: 6px 0 4px; }
.dly .dl-tag { display: inline-block; font-size: 9.5px; font-weight: 800; padding: 1px 6px; border-radius: 5px; background: var(--dl-wash); color: var(--dl-acc); margin: 0 3px 2px 0; text-transform: capitalize; }
.dly .dl-tag.NOTICE { background: rgba(79, 91, 213, .1); color: var(--dl-emp); } .dly .dl-tag.TIME_BAR { background: rgba(198, 70, 43, .1); color: var(--dl-bad); }
.dly .dl-tag.EOT { background: rgba(24, 141, 104, .1); color: var(--dl-ok); } .dly .dl-tag.RECORDS { background: rgba(183, 121, 31, .1); color: var(--dl-warn); }

/* ── analysis: the hero ─────────────────────────────────────────────── */
.dly .dl-evsum { display: flex; flex-direction: column; gap: 4px; padding: 9px 10px; margin: 8px 0; border-radius: 10px; background: var(--dl-soft); border-left: 4px solid var(--dl-unk); }
.dly .dl-evsum.s-EMPLOYER { border-left-color: var(--dl-emp); } .dly .dl-evsum.s-CONTRACTOR { border-left-color: var(--dl-con); } .dly .dl-evsum.s-NEUTRAL { border-left-color: var(--dl-neu); }
.dly .dl-anlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.dly .dl-anlist button { width: 100%; font: inherit; font-size: 11.5px; text-align: left; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 6px 8px; border-radius: 8px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; }
.dly .dl-anlist button.on { border-color: var(--dl-acc); background: var(--dl-wash); }
.dly .dl-anlist em { font-style: normal; color: var(--dl-mu); font-size: 10.5px; margin-left: auto; }
.dly .dl-gtools { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.dly .gpane .dl-gwrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.dly .dl-gwrap { border: 0; border-radius: 0; }
.dly .dl-gwrap .dl-gscroll { flex: 1 1 auto; min-height: 0; height: auto; max-height: none; overflow: auto; }
.dly .dl-evline { position: absolute; top: -40px; bottom: -40px; width: 0; border-left: 2px dashed var(--dl-ev); opacity: .75; pointer-events: none; z-index: 1; }
.dly .dl-evm { position: absolute; top: 0; bottom: 0; width: 0; border-left: 2px solid var(--dl-ev); }
.dly .dl-evm::before { content: 'EVENT'; position: absolute; top: 0; left: 3px; font-size: 8.5px; font-weight: 800; letter-spacing: .06em; color: var(--dl-ev); background: #fff; padding: 0 2px; }
.dly .dl-flag { display: inline-flex; align-items: center; justify-content: center; min-width: 15px; height: 15px; margin-left: 4px; border-radius: 4px; font-size: 9px; font-weight: 800; color: #fff; flex: none; }
.dly .dl-flag.fn { background: var(--dl-frag); } .dly .dl-flag.dp { background: var(--dl-bad); } .dly .dl-flag.nc { background: var(--dl-warn); }
/* a fragnet row is tinted on its figures, never on the chart cell: that
   cell is sticky over the scrolling columns and must stay opaque */
.dly table.u-g tr.dl-frow td:not(.u-tl) { background-image: linear-gradient(rgba(155, 77, 202, .08), rgba(155, 77, 202, .08)); }
.dly table.u-g tr.dl-frow td.stk { background-color: var(--p); box-shadow: inset 3px 0 0 var(--dl-frag), 6px 0 10px -10px rgba(15, 27, 46, .55); }
/* the chart takes the pane: sized from the pane, not the viewport */
.dly .gpane { container-type: inline-size; }
.dly .gpane table.u-g { --u-namew: 210px; --u-tlw: max(300px, calc(100cqw - 210px - 190px)); min-width: 0; }
.dly .gpane table.u-g.dl-nocols { --u-tlw: calc(100cqw - 212px); }
.dly table.u-g.dl-nocols td:not(.stk):not(.u-tl), .dly table.u-g.dl-nocols th:not(.stk):not(.u-tlh-c):not(.tl) { display: none; }
.dly table.u-g.dl-nocols thead tr.sub th:not(.u-tlh-c) { display: none; }
.dly tr.dl-frow .ub.ucur { background: var(--dl-frag) !important; }
.dly .dl-src .u-dt { color: var(--u-prev, #7C89A6); }
.dly th.dl-srch { color: var(--u-prev, #7C89A6); } .dly th.dl-imph { color: var(--dl-bad); }
.dly .dl-sh { font-family: var(--u-mono); font-weight: 700; color: var(--dl-mu); }
.dly .dl-sh.is-bad { color: var(--dl-bad); } .dly .dl-sh.is-good { color: var(--dl-ok); }
.dly .uk.dl-fnk { background: var(--dl-frag); } .dly .uk.dl-evk { background: var(--dl-ev); width: 2px; }
.dly .dl-fin { border-radius: 12px; padding: 12px; background: var(--dl-soft); border: 1px solid var(--dl-line); margin-bottom: 8px; }
.dly .dl-fin .k { display: block; font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--dl-mu); }
.dly .dl-fin > b { display: block; font-family: var(--u-mono); font-size: 30px; font-weight: 800; letter-spacing: -1px; line-height: 1.1; margin: 2px 0 6px; }
.dly .dl-fin.is-bad { background: #FDF3F0; border-color: rgba(198, 70, 43, .25); } .dly .dl-fin.is-bad > b { color: var(--dl-bad); }
.dly .dl-fin.is-ok { background: #F0F8F4; border-color: rgba(24, 141, 104, .25); } .dly .dl-fin.is-ok > b { color: var(--dl-ok); }
.dly .dl-fin2 { display: flex; align-items: center; gap: 8px; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-fin2 span { display: flex; flex-direction: column; }
.dly .dl-fin2 span b { font-size: 12px; color: var(--dl-ink); }
.dly .dl-fin2 i { font-style: normal; }
.dly .dl-cpbar { display: flex; align-items: center; gap: 10px; font-size: 11px; color: var(--dl-mu); }
.dly .dl-cpbar b { font-family: var(--u-mono); font-size: 16px; color: var(--dl-ink); }
.dly .dl-cl { display: flex; flex-wrap: wrap; gap: 3px; align-items: center; margin: 6px 0; font-size: 10.5px; }
.dly .dl-cl > span { font-weight: 800; color: var(--dl-mu); margin-right: 3px; }
.dly .dl-aid { font: inherit; font-family: var(--u-mono); font-size: 10.5px; padding: 2px 6px; border-radius: 5px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; color: var(--dl-ink); }
.dly .dl-aid.is-bad { border-color: rgba(198, 70, 43, .4); color: var(--dl-bad); } .dly .dl-aid.is-ok { border-color: rgba(24, 141, 104, .4); color: var(--dl-ok); }
.dly .dl-aid.fn { border-color: rgba(155, 77, 202, .45); color: var(--dl-frag); }
.dly .dl-wf { list-style: none; margin: 4px 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.dly .dl-wf li { display: grid; grid-template-columns: minmax(0, 1fr) 90px 60px; gap: 8px; align-items: center; font-size: 11px; }
.dly .dl-wf li i { display: block; height: 8px; border-radius: 4px; }
.dly .dl-wf li.g i { background: var(--dl-bad); } .dly .dl-wf li.m i { background: var(--dl-ok); } .dly .dl-wf li.r i { background: #E08A6D; } .dly .dl-wf li.c i { background: repeating-linear-gradient(45deg, var(--dl-bad) 0 3px, #fff 3px 6px); }
.dly .dl-wf li b { text-align: right; }
.dly .dl-wf li.net { grid-template-columns: 1fr auto; padding: 7px 9px; border-radius: 8px; background: #1F4E79; color: #fff; font-weight: 800; }
.dly .dl-mit { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; text-align: center; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-mit span { background: var(--dl-soft); border-radius: 8px; padding: 6px; display: flex; flex-direction: column; }
.dly .dl-mit b { font-family: var(--u-mono); font-size: 16px; color: var(--dl-ink); }
.dly .dl-mit .g b { color: var(--dl-ok); }
.dly .dl-lk { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: 11px; }

/* windows */
.dl-win .zero { stroke: rgba(15, 27, 46, .35); }
.dl-win .wc { cursor: pointer; }
.dl-win .band { fill: transparent; }
.dl-win .wc:nth-of-type(odd) .band { fill: rgba(15, 27, 46, .025); }
.dl-win .wc:hover .band, .dl-win .wc:focus .band { fill: rgba(31, 78, 121, .07); }
.dl-win .wc.on .band { fill: rgba(31, 78, 121, .11); stroke: var(--dl-acc); }
.dl-win .wc.same .band { fill: url(#none); stroke-dasharray: 3 3; stroke: rgba(15, 27, 46, .2); }
.dl-win .mv.late { fill: rgba(198, 70, 43, .78); } .dl-win .mv.early { fill: rgba(24, 141, 104, .78); }
.dl-win .wl { font-size: 12px; font-weight: 800; fill: var(--dl-ink); }
.dl-win .wv { font-size: 11.5px; font-weight: 700; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-win .bd { stroke: rgba(15, 27, 46, .12); }
.dl-win .cum { fill: none; stroke: var(--dl-acc); stroke-width: 2; }
.dl-win .cumd { fill: #fff; stroke: var(--dl-acc); stroke-width: 2; }
.dl-win .ddm path { fill: var(--u-dd, #2F6BD8); } .dl-win .ddm text { font-size: 9px; fill: var(--dl-mu); font-family: var(--u-mono); }

/* concurrency */
.dl-conc .lane { fill: #FAFBFD; stroke: rgba(15, 27, 46, .06); }
.dl-conc .lane.CONTRACTOR { fill: #FFFBF6; }
.dl-conc .ln { font-size: 12px; font-weight: 800; fill: var(--dl-ink); }
.dl-conc .ce { cursor: pointer; }
.dl-conc .ce text { font-size: 11.5px; font-weight: 700; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-conc .ce.nc rect { fill-opacity: .3; }
.dl-conc .ce.na rect { fill: #fff !important; stroke: #9AA6B8; stroke-dasharray: 3 2; }
.dl-conc .ce.focus rect { stroke: var(--dl-ink); stroke-width: 1.5; }
.dl-conc .ov { fill: rgba(15, 27, 46, .05); }
.dl-conc .ov.POTENTIAL_CONCURRENT { fill: rgba(198, 70, 43, .10); }
.dl-conc .pci { fill: none; stroke: var(--dl-bad); stroke-width: 1.5; stroke-dasharray: 5 3; }
.dly .dl-treat { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.dly .dl-treat li { display: flex; flex-direction: column; gap: 5px; padding: 8px; border-radius: 9px; background: var(--dl-soft); font-size: 11.5px; }

/* contract */
.dly .dl-fws { display: flex; flex-direction: column; gap: 4px; }
.dly .dl-fws button { font: inherit; text-align: left; padding: 8px 10px; border-radius: 9px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; display: flex; flex-direction: column; }
.dly .dl-fws button em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-fws button.on { border-color: var(--dl-acc); background: var(--dl-wash); }
.dly .dl-drop { display: flex; gap: 10px; align-items: center; padding: 14px; border: 2px dashed #C9D5E4; border-radius: 12px; cursor: pointer; background: var(--dl-soft); font-size: 11.5px; line-height: 1.45; }
.dly .dl-drop:hover, .dly .dl-drop.over { border-color: var(--dl-acc); background: var(--dl-wash); }
.dly .dl-drop .dl-ic { width: 26px; height: 26px; color: var(--dl-acc); }
.dly .dl-docs { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-docs li { display: flex; flex-direction: column; padding: 7px 9px; border-radius: 8px; background: var(--dl-soft); position: relative; }
.dly .dl-docs li em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-docs li .dl-b { position: absolute; right: 4px; top: 4px; }
.dly .dl-clause { margin-top: 10px; border: 1px solid var(--dl-line); border-radius: 10px; padding: 10px; background: #FCFDFE; }
.dly .dl-clause .hd em { display: block; font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-clause p { line-height: 1.55; white-space: pre-wrap; font-size: 11.5px; }
.dly .dl-ruleform { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.dly .dl-ruleform .dl-in, .dly .dl-ruleform .dl-sel { width: auto; }
.dly .dl-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-rules li { padding: 7px 9px; border-radius: 8px; background: var(--dl-soft); font-size: 11.5px; display: flex; flex-direction: column; gap: 3px; opacity: .7; }
.dly .dl-rules li.win { opacity: 1; background: #EAF6F1; } .dly .dl-rules li.win.ref { background: #FDF6EA; }
.dly .dl-rules li.cand { opacity: 1; border: 1px dashed var(--dl-line); background: #fff; }
.dly .dl-rules li em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-rules li .dl-pill, .dly .dl-rules li .dl-b { align-self: flex-start; }

/* notices */
.dly .dl-ncs { display: flex; flex-direction: column; gap: 8px; }
.dly .dl-nc { flex: none; border: 1px solid var(--dl-line); border-radius: 12px; background: #fff; overflow: hidden; border-left: 5px solid var(--dl-unk); }
.dly .dl-nc.is-bad { border-left-color: var(--dl-bad); } .dly .dl-nc.is-warn { border-left-color: var(--dl-warn); } .dly .dl-nc.is-ok { border-left-color: var(--dl-ok); }
.dly .dl-nc.on { box-shadow: 0 0 0 2px rgba(31, 78, 121, .2); }
.dly .dl-nc .hd { width: 100%; display: flex; align-items: center; gap: 14px; font: inherit; text-align: left; padding: 10px 12px; border: 0; background: none; cursor: pointer; }
.dly .dl-nc .cd { flex: none; width: 64px; text-align: center; display: flex; flex-direction: column; }
.dly .dl-nc .cd b { font-family: var(--u-mono); font-size: 26px; font-weight: 800; line-height: 1; }
.dly .dl-nc.is-bad .cd b { color: var(--dl-bad); } .dly .dl-nc.is-warn .cd b { color: var(--dl-warn); }
.dly .dl-nc .cd em, .dly .dl-nc .bd em { font-style: normal; font-size: 10px; color: var(--dl-mu); }
.dly .dl-nc .bd { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-nbar { height: 5px; border-radius: 3px; background: var(--dl-wash); overflow: hidden; }
.dly .dl-nbar i { display: block; height: 100%; background: linear-gradient(90deg, var(--dl-ok), var(--dl-warn) 70%, var(--dl-bad)); }
.dly .dl-nc .ft { display: grid; grid-template-columns: 1.2fr 1fr 1.3fr auto auto; gap: 6px; padding: 0 12px 10px 90px; }
.dly .dl-nc .dl-note { padding: 0 12px 8px 90px; margin: 0; }
.dly pre.dl-doc { white-space: pre-wrap; font-family: 'DM Sans', system-ui, sans-serif; font-size: 12.5px; line-height: 1.6; background: #fff; border: 1px solid var(--dl-line);
  border-radius: 10px; padding: 16px 18px; margin: 8px 0; box-shadow: 0 8px 20px -18px rgba(15, 27, 46, .5); }
.dly pre.dl-doc.ai { border-left: 3px solid var(--dl-ai); }

/* evidence */
.dly .dl-evl { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.dly .dl-evl button { width: 100%; display: flex; gap: 9px; align-items: center; font: inherit; font-size: 11.5px; text-align: left; padding: 7px 8px; border-radius: 9px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; }
.dly .dl-evl button.on { border-color: var(--dl-acc); background: var(--dl-wash); }
.dly .dl-evl button span { display: flex; flex-direction: column; min-width: 0; }
.dly .dl-evl em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-compl { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.dly .dl-compl .dl-ring text { font-size: 16px; }

/* reports */
.dly .dl-rkinds { display: flex; flex-direction: column; gap: 4px; }
.dly .dl-rkinds button { font: inherit; text-align: left; display: grid; grid-template-columns: 20px 1fr; grid-template-rows: auto auto; column-gap: 8px; padding: 8px 10px; border-radius: 9px; border: 1px solid var(--dl-line); background: #fff; cursor: pointer; }
.dly .dl-rkinds button .dl-ic { grid-row: span 2; color: var(--dl-acc); }
.dly .dl-rkinds button em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-rkinds button.on { border-color: var(--dl-acc); background: var(--dl-wash); }
.dly .dl-paper { background: #E9EEF4; padding: 18px; }
.dly .dl-rep { background: #fff; max-width: 920px; margin: 0 auto; padding: 34px 40px; border-radius: 4px; box-shadow: 0 16px 40px -24px rgba(15, 27, 46, .55); font-size: 12px; line-height: 1.5; }
.dly .dl-rh { border-bottom: 3px solid #1F4E79; padding-bottom: 12px; margin-bottom: 14px; }
.dly .dl-rh .k { font-size: 10px; font-weight: 800; letter-spacing: .16em; color: var(--dl-acc); text-transform: uppercase; }
.dly .dl-rh h1 { font-size: 21px; margin: 4px 0; }
.dly .dl-rh .m { font-size: 11px; color: var(--dl-mu); }
.dly .dl-rs { margin: 18px 0; break-inside: avoid-page; }
.dly .dl-rs h2 { display: flex; align-items: center; gap: 8px; font-size: 13.5px; margin: 0 0 8px; padding-bottom: 5px; border-bottom: 1px solid var(--dl-line); }
.dly .dl-rs h2 span { width: 22px; height: 22px; border-radius: 6px; background: #1F4E79; color: #fff; font-size: 11px; display: inline-flex; align-items: center; justify-content: center; }
.dly .dl-rf { margin-top: 22px; padding-top: 10px; border-top: 1px solid var(--dl-line); font-size: 10.5px; color: var(--dl-mu); }
.dly dl.dl-kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 6px 0; }
.dly dl.dl-kv dt { color: var(--dl-mu); font-size: 11px; }
.dly dl.dl-kv dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.dly .dl-rl { padding-left: 18px; margin: 6px 0; }
.dly .dl-refs { font-size: 11px; background: var(--dl-soft); border-radius: 8px; padding: 8px 10px; margin: 8px 0; }
.dly .dl-refs ul { margin: 4px 0 0; padding-left: 16px; }
.dly .dl-figs { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 6px; margin: 8px 0; }
.dly .dl-figs > div { border: 1px solid var(--dl-line); border-radius: 8px; padding: 8px 10px; display: flex; flex-direction: column; }
.dly .dl-figs span { font-size: 10px; color: var(--dl-mu); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.dly .dl-figs b { font-family: var(--u-mono); font-size: 16px; }
.dly .dl-figs .is-bad b { color: var(--dl-bad); } .dly .dl-figs .is-good b, .dly .dl-figs .is-ok b { color: var(--dl-ok); }
.dly .dl-rgantt { border: 1px solid var(--dl-line); border-radius: 8px; overflow: hidden; margin: 8px 0; }
.dly .dl-rgantt .dl-gscroll { height: auto; max-height: none; overflow: visible; }
.dly table.dl-t.rt th { position: static; }
.dly table.dl-t.eot tr.net td { font-weight: 800; background: #1F4E79; color: #fff; }
.dly .dl-cover { text-align: center; padding: 40px 10px; background: linear-gradient(135deg, #F1F5FB, #E6EEF8); border-radius: 8px; }
.dly .dl-cover .k { font-size: 11px; font-weight: 800; letter-spacing: .2em; color: var(--dl-acc); }
.dly .dl-cover h1 { font-size: 24px; margin: 10px 0; }
.dly .dl-cover .m { color: var(--dl-mu); font-size: 11px; margin-top: 6px; }

/* printing a report: the report and nothing else */
body.dl-printbody { margin: 0; }
.upd.dly.print { height: auto; min-height: 0; overflow: visible; display: block; }
.upd.dly.print .dl-rep { box-shadow: none; max-width: none; padding: 0; }
.upd.dly.print .dl-b { display: none; }

/* ════════════════════════════════════════════════════════════════════
   OVERVIEW · COMPLETION — the verdict, the drift chart, the record
   The main column scrolls as one page, so the chart is never clipped;
   every pane in it takes its natural height.
═══════════════════════════════════════════════════════════════════ */
.dl-ov .dl-ancol { overflow-y: auto; overscroll-behavior: contain; padding-right: 2px; }
.dl-ov .dl-ancol > .dl-pane { flex: none; overflow: visible; }
.dl-ov .dl-ancol > .dl-pane > .dl-scroll { overflow: visible; flex: none; }
.dl-ov .dl-ph .dl-segs { margin-left: auto; }
.dl-ov .dl-segs.sm .dl-seg { padding: 4px 10px; }

.dly .dl-hero { display: grid; grid-template-columns: minmax(0, 1.7fr) repeat(3, minmax(0, 1fr)); gap: 0; margin: 10px 12px 0;
  border: 1px solid var(--dl-line); border-radius: 12px; overflow: hidden; background: var(--dl-paper); }
.dly .dl-hero .hv { padding: 12px 16px; display: flex; flex-direction: column; gap: 4px; border-left: 4px solid var(--dl-unk); background: var(--dl-soft); min-width: 0; }
.dly .dl-hero.is-ok .hv { border-left-color: var(--dl-ok); } .dly .dl-hero.is-warn .hv { border-left-color: var(--dl-warn); } .dly .dl-hero.is-bad .hv { border-left-color: var(--dl-bad); }
.dly .dl-hero .hv .k, .dly .dl-sf .k { font-size: 9.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--dl-mu); }
.dly .dl-hero .hv b { font-size: 19px; font-weight: 800; line-height: 1.25; color: var(--dl-ink); letter-spacing: -.2px; }
.dly .dl-hero.is-bad .hv b { color: var(--dl-bad); }
.dly .dl-hero .hv em { font-style: normal; font-size: 11.5px; color: var(--dl-mu); line-height: 1.4; }
.dly .dl-sf { font: inherit; text-align: left; display: flex; flex-direction: column; gap: 3px; padding: 12px 14px; border: 0; border-left: 1px solid var(--dl-line);
  background: var(--dl-paper); color: var(--dl-ink); min-width: 0; position: relative; }
.dly button.dl-sf { cursor: pointer; }
.dly button.dl-sf:hover { background: var(--dl-soft); }
.dly .dl-sf b { font-family: var(--u-mono); font-size: 20px; font-weight: 800; letter-spacing: -.4px; }
.dly .dl-sf b small { font-size: 11px; color: var(--dl-mu); font-weight: 700; letter-spacing: 0; }
.dly .dl-sf em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); line-height: 1.35; }
.dly .dl-sf.is-bad b { color: var(--dl-bad); } .dly .dl-sf.is-warn b { color: var(--dl-warn); }
.dly .dl-sf::after { content: ''; position: absolute; left: 14px; right: 14px; bottom: 0; height: 2px; border-radius: 2px; background: transparent; }
.dly .dl-sf.is-bad::after { background: var(--dl-bad); } .dly .dl-sf.is-warn::after { background: var(--dl-warn); } .dly .dl-sf.is-ok::after { background: var(--dl-ok); }
@container dly (max-width: 1250px) { .dly .dl-hero { grid-template-columns: repeat(3, minmax(0, 1fr)); } .dly .dl-hero .hv { grid-column: 1 / -1; } .dly .dl-hero .hv + .dl-sf { border-left: 0; } }
@container dly (max-width: 700px) { .dly .dl-hero { grid-template-columns: 1fr; } .dly .dl-sf { border-left: 0; border-top: 1px solid var(--dl-line); } }

.dly svg.dl-drift { width: 100%; height: auto; display: block; font-family: inherit; overflow: visible; }
.dl-drift .grid { stroke: rgba(15, 27, 46, .07); stroke-width: 1; }
.dl-drift .grid.zero { stroke: var(--dl-ink); stroke-opacity: .55; }
.dl-drift .axis { stroke: rgba(15, 27, 46, .18); }
.dl-drift .ax { font-size: 11px; fill: var(--dl-mu); font-family: var(--u-mono); }
.dl-drift .axt { font-size: 10px; fill: var(--dl-mu); font-weight: 700; }
.dl-drift .band.ent { fill: var(--dl-ok); fill-opacity: .10; }
.dl-drift .band.pot { fill: var(--dl-acc); fill-opacity: .08; }
.dl-drift .band.exp { fill: var(--dl-bad); fill-opacity: .035; }
.dl-drift .bandl { font-size: 11px; font-weight: 700; fill: var(--dl-ink); }
.dl-drift .bandl .sub, .dl-drift .refl .mono { fill: var(--dl-mu); font-weight: 600; }
.dl-drift .refl { font-size: 11px; font-weight: 700; fill: var(--dl-ink); }
.dl-drift .refl .bandl { font-weight: 700; }
.dl-drift .refl .mono, .dl-drift .curl .mono { font-family: var(--u-mono); }
.dl-drift .ref { stroke: var(--dl-ink); stroke-opacity: .5; stroke-width: 1; }
.dl-drift .aft { fill: var(--dl-soft); }
.dl-drift .aftl { font-size: 10px; fill: var(--dl-mu); font-weight: 700; }
.dl-drift .seg { stroke-width: 2.5; stroke-linecap: round; }
.dl-drift .seg.up { stroke: var(--dl-bad); } .dl-drift .seg.down { stroke: var(--dl-ok); } .dl-drift .seg.flat { stroke: #7C8DA3; }
.dl-drift .pt { fill: var(--dl-acc); stroke: #fff; stroke-width: 2; }
.dl-drift .pt.bl { fill: #fff; stroke: var(--dl-acc); stroke-width: 2; }
.dl-drift .pt.cur { fill: var(--dl-ink); stroke: #fff; stroke-width: 2.5; }
.dl-drift .dlt { font-size: 11px; font-weight: 800; font-family: var(--u-mono); fill: var(--dl-ink); paint-order: stroke; stroke: #fff; stroke-width: 3px; }
.dl-drift .curl { font-size: 12px; font-weight: 800; fill: var(--dl-ink); paint-order: stroke; stroke: #fff; stroke-width: 4px; }
.dl-drift .peak { font-size: 10.5px; font-weight: 700; fill: var(--dl-mu); paint-order: stroke; stroke: #fff; stroke-width: 3px; }
.dl-drift .xl { font-size: 11px; font-weight: 800; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-drift .xs { font-size: 10px; fill: var(--dl-mu); font-family: var(--u-mono); }
.dl-drift .lanel { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; fill: var(--dl-mu); }
.dl-drift .lanee { font-size: 11px; fill: var(--dl-mu); }
.dl-drift .hit { fill: transparent; cursor: default; }
.dl-drift .hit:hover { fill: rgba(31, 78, 121, .045); }
.dl-drift .evc, .dl-drift .gap { cursor: pointer; }
.dl-drift .evd circle { stroke: #fff; stroke-width: 2; }
.dl-drift .evd.s-EMPLOYER circle { fill: var(--dl-emp); } .dl-drift .evd.s-CONTRACTOR circle { fill: var(--dl-con); }
.dl-drift .evd.s-NEUTRAL circle { fill: var(--dl-neu); } .dl-drift .evd.s-UNKNOWN circle { fill: var(--dl-unk); }
.dl-drift .evd text { font-size: 11px; font-weight: 800; fill: var(--dl-ink); font-family: var(--u-mono); }
.dl-drift .gap rect { fill: rgba(183, 121, 31, .1); stroke: var(--dl-warn); stroke-width: 1; stroke-dasharray: 3 2; }
.dl-drift .gap text { font-size: 10.5px; font-weight: 800; fill: #8A5A12; }
.dl-drift .gap:hover rect, .dl-drift .gap:focus rect { fill: rgba(183, 121, 31, .2); }
.dl-drift .evc:focus, .dl-drift .gap:focus { outline: none; }
.dl-drift .evc:focus circle, .dl-drift .gap:focus rect { stroke: var(--dl-ink); }
.dly .dl-lgd .k.seg-up { background: var(--dl-bad); height: 3px; } .dly .dl-lgd .k.seg-down { background: var(--dl-ok); height: 3px; }
.dly .dl-lgd .k.b-ent { background: rgba(24, 141, 104, .18); } .dly .dl-lgd .k.b-pot { background: rgba(31, 78, 121, .14); }
.dly .dl-lgd .k.b-exp { background: rgba(198, 70, 43, .09); border: 1px solid rgba(198, 70, 43, .2); }
.dly .dl-lgd .k.gap { background: rgba(183, 121, 31, .12); border: 1px dashed var(--dl-warn); border-radius: 5px; }
.dly .dl-lgd .k.s-UNKNOWN { background: var(--dl-unk); }
.dly .dl-read { margin: 4px 4px 2px; font-size: 11px; line-height: 1.5; color: var(--dl-mu); max-width: 900px; }
.dly table.dl-drt td em { font-style: normal; font-size: 10px; color: var(--dl-mu); }
.dly table.dl-drt td.is-bad { color: var(--dl-bad); font-weight: 700; } .dly table.dl-drt td.is-ok { color: var(--dl-ok); font-weight: 700; }

/* the delay record: what is in place, what comes next */
.dly .dl-steps { list-style: none; margin: 0 0 4px; padding: 0; display: flex; flex-direction: column; gap: 2px; counter-reset: none; }
.dly .dl-steps li > button, .dly .dl-steps li > div { width: 100%; display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 10px;
  font: inherit; font-size: 11.5px; text-align: left; padding: 6px 8px; border-radius: 8px; border: 1px solid transparent; background: transparent; color: var(--dl-ink); }
.dly .dl-steps li > button { cursor: pointer; }
.dly .dl-steps li > button:hover { background: var(--dl-soft); border-color: var(--dl-line); }
.dly .dl-steps .n { width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 10.5px; font-weight: 800;
  background: var(--dl-wash); color: var(--dl-mu); }
.dly .dl-steps .tx { display: flex; flex-direction: column; min-width: 0; gap: 1px; }
.dly .dl-steps .k { font-weight: 800; }
.dly .dl-steps .v { color: var(--dl-mu); font-size: 11px; line-height: 1.35; }
.dly .dl-steps li.done .n { background: var(--dl-ok); color: #fff; }
.dly .dl-steps li.next > * { background: #F2F6FC; border-color: rgba(31, 78, 121, .28); }
.dly .dl-steps li.next .n { background: var(--dl-acc); color: #fff; }
.dly .dl-steps li.next .v { color: var(--dl-ink); }
.dly .dl-steps li.is-bad .n { background: var(--dl-bad); color: #fff; } .dly .dl-steps li.is-bad .v { color: var(--dl-bad); font-weight: 700; }
.dly .dl-steps li.na { opacity: .55; }
.dly .dl-steps .go { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #fff; background: var(--dl-acc); padding: 2px 7px; border-radius: 10px; }

/* chart tooltip — lives on <body>, so it is styled outside .dly */
.dl-tip { position: fixed; z-index: 100000; display: none; pointer-events: none; max-width: 340px; padding: 8px 10px; border-radius: 8px;
  background: #0F1B2E; color: #E8EEF6; font: 500 11.5px/1.45 Inter, system-ui, sans-serif; box-shadow: 0 10px 28px -10px rgba(15, 27, 46, .55); }
.dl-tip b { display: block; font-weight: 800; color: #fff; margin-bottom: 2px; }


/* ════════════════════════════════════════════════════════════════════
   THE STUDIO — the programme as the Gantt chart draws it, with the delay
   events on it. WBS bands take the Gantt's own level palette; bars are the
   Gantt's: actual work blue, remaining red on the critical path, green off
   it; WBS summaries black with pointed ends; milestones black diamonds.
═══════════════════════════════════════════════════════════════════ */
.dly .st-wrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 6px; }
.dly .st-bar { flex: none; display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; overflow: hidden; background: var(--dl-paper); border: 1px solid var(--dl-line); border-radius: 10px; padding: 4px 6px; }
.dly .st-tools { display: inline-flex; gap: 2px; background: var(--dl-wash); border-radius: 8px; padding: 2px; flex: none; }
.dly .st-tools .dl-seg { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; font-size: 11.5px; }
.dly .st-tools .sw { width: 9px; height: 9px; border-radius: 2px; display: inline-block; background: var(--dl-unk); }
.dly .sw.s-EMPLOYER, .dly .sd.s-EMPLOYER { background: var(--dl-emp) !important; } .dly .sw.s-CONTRACTOR, .dly .sd.s-CONTRACTOR { background: var(--dl-con) !important; } .dly .sw.s-NEUTRAL, .dly .sd.s-NEUTRAL { background: var(--dl-neu) !important; }
.dly .st-bar > .dl-seg { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--dl-line); background: #fff; }
.dly .st-bar > .dl-seg.on { background: #0F1B2E; color: #fff; border-color: #0F1B2E; }
.dly .st-bar .dl-segs { flex: none; }
.dly .st-basis { width: auto; max-width: 180px; flex: none; }
.dly .st-fin { flex: none; display: inline-flex; align-items: baseline; gap: 6px; padding: 5px 10px; border-radius: 8px; background: var(--dl-soft); border: 1px solid var(--dl-line); font-size: 11px; }
.dly .st-fin b { font-size: 11.5px; } .dly .st-fin i { font-style: normal; color: var(--dl-mu); }
.dly .st-fin strong { font-family: var(--u-mono); font-size: 13.5px; font-weight: 800; }
.dly .st-fin.late { border-color: rgba(198, 70, 43, .35); background: rgba(198, 70, 43, .06); } .dly .st-fin.late strong { color: var(--dl-bad); }
.dly .st-fin.early strong { color: var(--dl-ok); }
@container dly (max-width: 1350px) { .dly .st-tools .dl-seg { padding: 5px 7px; } .dly .st-bar > .dl-seg svg + * { display: none; } .dly .st-fin > b { display: none; } .dly .st-fin > i { display: none; } }

.dly .st-main { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.dly .st-main > .st-gantt { flex: 1 1 auto; }

.dly .st-gantt { min-height: 0; min-width: 0; overflow: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; position: relative;
  background: #fff; border: 1px solid #D5DEE9; border-radius: 10px; font-family: 'DM Sans', system-ui, sans-serif; --st-lw: 540px; }
@container dly (max-width: 1350px) { .dly .st-gantt { --st-lw: 330px; } .dly .st-gantt .c-dt, .dly .st-gantt .c-du { display: none; } }
.dly .st-main { position: relative; }
.dly .st-main.st-busy::after { content: 'Calculating on the project CPM…'; position: absolute; inset: 0; z-index: 20; display: flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, .55); color: #1F4E79; font-weight: 800; font-size: 13px; border-radius: 10px; cursor: progress; }
.dly .st-grid { width: calc(var(--st-lw) + var(--st-cw)); min-width: 100%; }
.dly .st-hrow { position: sticky; top: 0; z-index: 4; display: flex; height: 40px; }
.dly .st-brow { display: flex; }
.dly .st-corner, .dly .st-names .tr { display: grid; grid-template-columns: 78px minmax(0, 1fr) 34px 82px 82px 36px; align-items: center; }
@container dly (max-width: 1350px) { .dly .st-corner, .dly .st-names .tr { grid-template-columns: 74px minmax(0, 1fr) 34px; } }
.dly .st-corner { position: sticky; left: 0; z-index: 5; flex: none; width: var(--st-lw); box-sizing: border-box; background: #F8FAFC; border-right: 1px solid #C8D6E5; border-bottom: 1px solid #C8D6E5;
  font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #43546A; }
.dly .st-corner > span, .dly .st-names .tr > span { padding: 0 6px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .c-du, .dly .c-sh { text-align: right; } .dly .c-dt { text-align: center; }
.dly .st-head { flex: none; width: var(--st-cw); border-bottom: 1px solid #C8D6E5; background: #F8FAFC; box-shadow: 0 2px 6px rgba(27, 26, 23, .06); }
.dly .st-names { position: sticky; left: 0; z-index: 3; flex: none; width: var(--st-lw); box-sizing: border-box; background: #fff; border-right: 1px solid #C8D6E5; box-shadow: 4px 0 10px rgba(0, 0, 0, .06); }
.dly .st-chart { flex: none; width: var(--st-cw); position: relative; }
.dly .st-hsvg, .dly .st-svg { display: block; font-family: 'DM Sans', system-ui, sans-serif; }
.st-hsvg .yl { font-size: 11px; font-weight: 800; fill: #0F172A; } .st-hsvg .ml { font-size: 10.5px; font-weight: 800; fill: #43546A; letter-spacing: .06em; }
.st-hsvg .mt, .st-hsvg .yt { stroke: #D5DEE9; } .st-hsvg .hr { stroke: #E2E8F0; }
.st-hsvg .hfin text { font-size: 11px; font-weight: 800; font-family: var(--u-mono); fill: var(--dl-bad); } .st-hsvg .hfin.early text { fill: var(--dl-ok); }

/* the table */
.dly .st-names .tr { height: 22px; box-sizing: border-box; width: 100%; font: inherit; font-size: 11px; text-align: left; border: 0; border-bottom: 1px solid #E5E9EF; background: #F6F8F9; color: #1F2937; cursor: default; }
.dly .st-names button.tr { cursor: pointer; }
.dly .st-names .tr.act:hover, .dly .st-names .tr.ev:hover { background: #EDF3FA; }
.dly .st-names .tr .c-id { font-size: 10.5px; color: #475569; }
.dly .st-names .tr.act .c-nm { padding-left: calc(6px + var(--lv, 0) * 8px); font-weight: 600; }
.dly .st-names .tr.act.is-crit { color: #8B3A1F; } .dly .st-names .tr.act.is-crit .c-id { color: #B42318; font-weight: 700; }
.dly .st-names .tr.act.done { color: #64748B; }
.dly .st-names .tr .c-dt { font-family: var(--u-mono); font-size: 10.5px; }
.dly .st-names .tr .c-dt i { font-style: normal; font-size: 9px; color: #2458C6; margin-left: 2px; font-weight: 800; }
.dly .st-names .tr .c-du { font-family: var(--u-mono); font-size: 10.5px; }
.dly .st-names .tr .c-sh { font-family: var(--u-mono); font-size: 10.5px; font-weight: 800; }
.dly .st-names .tr .c-sh.late { color: var(--dl-bad); } .dly .st-names .tr .c-sh.early { color: var(--dl-ok); }
.dly .st-names .tr.foc { background: #E3EEFB; box-shadow: inset 3px 0 0 #2458C6; }
.dly .st-names .tr.dim { opacity: .38; }
.dly .st-names .tr.wbs { background: var(--wbg, #1C2B1A); color: var(--wtx, #fff); border-bottom: 1px solid rgba(255, 255, 255, .18); font-weight: 800; }
.dly .st-names .tr.wbs .c-id, .dly .st-names .tr.wbs .c-dt { color: inherit; opacity: .92; font-weight: 800; }
.dly .st-names .tr.wbs .c-nm { padding-left: calc(4px + var(--lv, 0) * 8px); }
.dly .st-names .tr.wbs .tw { font-size: 9px; margin-right: 5px; opacity: .8; }
.dly .st-names .tr.sec { background: #0F1B2E; color: #fff; font-weight: 800; font-size: 10.5px; letter-spacing: .04em; }
.dly .st-names .tr.sec .c-id { color: #9FB3CC; font-size: 9.5px; letter-spacing: .1em; }
.dly .st-names .tr.sec em { font-style: normal; margin-left: 6px; font-size: 10px; padding: 0 6px; border-radius: 8px; background: rgba(255, 255, 255, .16); }
.dly .st-names .tr.ev { background: #fff; }
.dly .st-names .tr.ev .c-id { display: flex; align-items: center; gap: 5px; color: #0F1B2E; font-weight: 800; }
.dly .st-names .tr.ev .sd { width: 8px; height: 8px; border-radius: 2px; flex: none; }
.dly .st-names .tr.ev .c-nm { font-weight: 700; }
.dly .st-names .tr.ev.sub .c-nm { padding-left: 16px; font-weight: 500; color: #475569; }
.dly .st-names .tr.new { background: #FBFCFD; color: #7C8DA3; font-size: 10.5px; }
.dly .st-names .tr.new .dl-ic { width: 12px; height: 12px; }
.dly .st-names .tr.new.armed { color: #2458C6; font-weight: 700; background: #EEF4FC; }

/* the chart */
.st-svg .bg { fill: #fff; } .st-svg .bg.odd { fill: #FAFBFC; }
.st-svg .bg.k-wbs { fill: #EEF1F5; } .st-svg .bg.k-evsec { fill: #E6EBF2; }
.st-svg .bg.k-new { fill: #FBFCFD; } .st-svg .bg.k-evph { fill: #FFFBF3; }
.st-svg .bg.foc { fill: #EAF2FC; }
.tool-draw .st-svg .bg.k-act:hover, .tool-draw .st-svg .bg.k-new:hover, .tool-draw .st-svg .bg.k-evph:hover { fill: #E5EEF9; }
.st-svg .mg { stroke: #E7ECF2; }
.st-svg .dd { stroke: #2F6BD8; stroke-width: 1.5; }
.st-svg .fin { stroke-width: 1.2; stroke-dasharray: 4 3; } .st-svg .fin.b { stroke: #94A3B8; } .st-svg .fin.late { stroke: var(--dl-bad); } .st-svg .fin.early { stroke: var(--dl-ok); }
.st-svg .sx-sum rect, .st-svg .sx-sum path { fill: #111827; }
.st-svg .sx-b-act { fill: #3B72DC; } .st-svg .sx-b-crit { fill: #E1452C; } .st-svg .sx-b-non { fill: #1FA35B; }
.st-svg .sx-bo { fill: none; stroke: rgba(15, 23, 42, .55); stroke-width: .8; }
.st-svg .sx-crit .sx-bo { stroke: #A82A18; } .st-svg .sx-act .sx-bo { stroke: #1B449B; } .st-svg .sx-non .sx-bo { stroke: #157A43; }
.st-svg .sx-bar.sel .sx-bo { stroke: #0F172A; stroke-width: 2; }
.st-svg .sx-ms { fill: #111; stroke: #000; } .st-svg .sx-ms.sel { stroke: #2458C6; stroke-width: 2; }
.st-svg .sx-ghost { fill: #94A3B8; } .st-svg .sx-ghostm { fill: none; stroke: #94A3B8; stroke-width: 1.2; }
.st-svg .sx-nm { font-size: 10.5px; font-weight: 700; fill: #1F2937; pointer-events: none; }
.st-svg .sx-nm .sh, .st-svg .eb text .sh { font-family: var(--u-mono); font-weight: 800; }
.st-svg .sh.late { fill: var(--dl-bad); } .st-svg .sh.early { fill: var(--dl-ok); }
.st-svg .sx-hnd { fill: transparent; }
.st-svg .sx-arow.dim { opacity: .22; }
.path-on .st-svg .sx-arow.onpath .sx-bo { stroke: #0F172A; stroke-width: 1.6; }
.st-svg .eb .sx-bd { fill: var(--dl-unk); }
.st-svg .eb.s-EMPLOYER .sx-bd { fill: var(--dl-emp); } .st-svg .eb.s-CONTRACTOR .sx-bd { fill: var(--dl-con); } .st-svg .eb.s-NEUTRAL .sx-bd { fill: var(--dl-neu); }
.st-svg .eb .sx-hatch { fill: url(#st-hatch); pointer-events: none; }
.st-svg .eb .sx-bd { stroke: rgba(15, 23, 42, .55); stroke-width: .8; }
.st-svg .eb.foc .sx-bd { stroke: #0F172A; stroke-width: 2; }
.st-svg .eb.on-act .sx-bd { stroke: #fff; stroke-width: 1; }
.st-svg .eb.out { opacity: .3; }
.st-svg .eb text { font-size: 10.5px; font-weight: 600; fill: #1F2937; pointer-events: none; }
.st-svg .eb text .eid { font-weight: 800; font-family: var(--u-mono); } .st-svg .eb text .mu { fill: #64748B; font-weight: 500; }
.st-svg .eb.sx-ph rect { fill: rgba(183, 121, 31, .08); stroke: var(--dl-warn); stroke-dasharray: 3 2; }
.st-svg .lk path { fill: none; stroke-width: 1.2; stroke: #64748B; } .st-svg .lk path.ah { stroke: none; fill: #64748B; }
.st-svg .lk.s-EMPLOYER path { stroke: var(--dl-emp); } .st-svg .lk.s-EMPLOYER path.ah { fill: var(--dl-emp); }
.st-svg .lk.s-CONTRACTOR path { stroke: var(--dl-con); } .st-svg .lk.s-CONTRACTOR path.ah { fill: var(--dl-con); }
.st-svg .lk.s-NEUTRAL path { stroke: var(--dl-neu); } .st-svg .lk.s-NEUTRAL path.ah { fill: var(--dl-neu); }
.st-svg .lk { pointer-events: none; } .st-svg .lk.foc path { stroke-width: 2; }
.st-svg .draft { opacity: .55; stroke: #0F1B2E; stroke-dasharray: 3 2; }
.st-svg .draft.s-EMPLOYER { fill: var(--dl-emp); } .st-svg .draft.s-CONTRACTOR { fill: var(--dl-con); } .st-svg .draft.s-NEUTRAL { fill: var(--dl-neu); }
.st-svg .draftl { stroke: #2458C6; stroke-width: 2; stroke-dasharray: 4 3; fill: none; }
.tool-draw .st-svg { cursor: crosshair; }
.tool-select .st-svg .eb { cursor: grab; } .tool-select .st-svg .sx-hnd { cursor: ew-resize; }
.tool-select .st-svg .sx-bar, .tool-select .st-svg .sx-ms { cursor: pointer; }
.tool-tie .st-svg .eb, .tool-tie .st-svg .sx-bar, .tool-tie .st-svg .sx-ms { cursor: alias; }
.tool-prolong .st-svg .sx-bar { cursor: e-resize; }
.st-svg .eb, .st-svg .sx-bar { touch-action: none; }

/* the popover on an activity */
.dly .st-pop { position: absolute; z-index: 5; width: 280px; background: #fff; border: 1px solid #C8D6E5; border-radius: 10px; box-shadow: 0 14px 34px -14px rgba(15, 27, 46, .45); padding: 8px; display: flex; flex-direction: column; gap: 7px; font-family: 'DM Sans', system-ui, sans-serif; }
.dly .st-pop .ph { display: flex; align-items: center; gap: 6px; font-size: 11.5px; }
.dly .st-pop .ph span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.dly .st-pop .pn { margin: 0; font-size: 11px; color: var(--dl-mu); }
.dly .pside { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3px; }
.dly .sp-ev .pside { grid-template-columns: repeat(3, minmax(0, 1fr)) 30px; }
.dly .pside button { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .pside button { font: inherit; font-size: 11px; font-weight: 700; padding: 5px 4px; border-radius: 7px; border: 1px solid var(--dl-line); background: #fff; color: #475569; cursor: pointer; }
.dly .pside button.on { color: #fff; border-color: transparent; background: #64748B; }
.dly .pside button.on.s-EMPLOYER { background: var(--dl-emp); } .dly .pside button.on.s-CONTRACTOR { background: #C46A12; } .dly .pside button.on.s-NEUTRAL { background: #13875E; }
.dly .st-pop .pdays { display: grid; grid-template-columns: 70px 1fr; gap: 6px; }
.dly .st-pop label, .dly .sp-row label { display: flex; flex-direction: column; gap: 2px; font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; min-width: 0; }
.dly .st-pop .pacts { display: flex; flex-direction: column; gap: 4px; }
.dly .dl-b.pa { justify-content: flex-start; gap: 9px; padding: 7px 9px; text-align: left; white-space: normal; }
.dly .dl-b.pa span { display: flex; flex-direction: column; }
.dly .dl-b.pa em { font-style: normal; font-weight: 500; font-size: 10.5px; color: #64748B; }
.dly .dl-b.pa:hover { border-color: #2458C6; background: #F2F7FE; }
.dly .st-pop .pev { display: flex; flex-direction: column; gap: 2px; border-top: 1px solid #E5E9EF; padding-top: 6px; }
.dly .st-pop .pev button, .dly .sp-led button { display: flex; align-items: center; gap: 5px; font: inherit; font-size: 11px; border: 0; background: none; padding: 2px 0; cursor: pointer; color: #1F2937; text-align: left; }
.dly .sd { display: inline-block; width: 8px; height: 8px; border-radius: 2px; flex: none; background: var(--dl-unk); }

/* the panel */
.dly .st-panel { background: var(--dl-paper); border: 1px solid var(--dl-line); border-radius: 10px; padding: 10px; display: flex; flex-direction: column; gap: 10px; }
.dly .sp-fin { display: grid; grid-template-columns: 1fr auto; align-items: baseline; padding: 9px 11px; border-radius: 9px; background: var(--dl-soft); border: 1px solid var(--dl-line); }
.dly .sp-fin span { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #64748B; }
.dly .sp-fin b { font-family: var(--u-mono); font-size: 20px; font-weight: 800; grid-row: 1 / 3; grid-column: 2; }
.dly .sp-fin em { font-style: normal; font-size: 11px; color: #64748B; }
.dly .sp-fin.late { background: rgba(198, 70, 43, .06); border-color: rgba(198, 70, 43, .3); } .dly .sp-fin.late b { color: var(--dl-bad); } .dly .sp-fin.early b { color: var(--dl-ok); }
.dly .sp-empty { display: flex; flex-direction: column; gap: 4px; font-size: 11.5px; color: #64748B; padding: 6px 2px; line-height: 1.45; }
.dly .sp-empty b { color: #0F1B2E; font-size: 12.5px; }
.dly .sp-h { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #0F1B2E; display: flex; flex-direction: column; gap: 1px; margin-bottom: 5px; }
.dly .sp-h span { font-size: 10.5px; font-weight: 500; letter-spacing: 0; text-transform: none; color: #64748B; }
.dly .sp-led { width: 100%; border-collapse: collapse; font-size: 11px; }
.dly .sp-led th { font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; text-align: left; padding: 3px 2px; border-bottom: 1px solid #E5E9EF; }
.dly .sp-led td { padding: 3px 2px; border-bottom: 1px solid #F0F3F7; font-family: var(--u-mono); }
.dly .sp-led .num { text-align: right; } .dly .sp-led .strong { font-weight: 800; } .dly .sp-led .late { color: var(--dl-bad); }
.dly .sp-led tr.on td { background: #EEF4FC; } .dly .sp-led tr.tot td { border-bottom: 0; font-family: inherit; font-weight: 800; }
.dly .sp-led .own { font-family: inherit; font-size: 10px; color: #8A5A12; }
.dly .sp-led .sec { display: inline-flex; align-items: center; gap: 2px; color: var(--dl-ok); font-weight: 800; }
.dly .sp-led .sec .dl-ic, .dly .sp-note .dl-ic, .dly .sp-why .dl-ic, .dly .sp-hint .dl-ic, .dly .sp-bad .dl-ic { width: 12px; height: 12px; }
.dly .sp-note { display: flex; gap: 6px; margin-top: 8px; font-size: 11px; color: #334155; line-height: 1.4; }
.dly .sp-why { margin-top: 6px; font-size: 11px; }
.dly .sp-why summary { cursor: pointer; color: #2458C6; font-weight: 700; display: inline-flex; align-items: center; gap: 5px; list-style: none; }
.dly .sp-why ul { margin: 6px 0 0; padding-left: 14px; display: flex; flex-direction: column; gap: 6px; color: #334155; line-height: 1.45; }
.dly .sp-ev { display: flex; flex-direction: column; gap: 8px; border-left: 3px solid var(--dl-unk); padding-left: 9px; }
.dly .sp-ev.s-EMPLOYER { border-left-color: var(--dl-emp); } .dly .sp-ev.s-CONTRACTOR { border-left-color: var(--dl-con); } .dly .sp-ev.s-NEUTRAL { border-left-color: var(--dl-neu); }
.dly .sp-evh { display: flex; align-items: center; justify-content: space-between; font-size: 11px; color: #64748B; }
.dly .dl-in.ttl { font-size: 13px; font-weight: 800; padding: 7px 9px; }
.dly .sp-row { display: grid; grid-template-columns: 1fr 70px; gap: 5px; }
.dly .sp-row label.w { grid-column: 1 / -1; }
.dly .chips { display: flex; flex-wrap: wrap; gap: 4px; }
.dly .chip { display: inline-flex; align-items: center; gap: 3px; padding: 2px 3px 2px 2px; border-radius: 7px; border: 1px solid #D5DEE9; background: #F8FAFC; font-size: 10.5px; }
.dly .chip select.tt { font: inherit; font-size: 10px; font-weight: 800; border: 0; background: #E6ECF4; border-radius: 5px; padding: 1px 2px; }
.dly .chip em { font-style: normal; font-size: 10px; color: #64748B; padding-left: 3px; }
.dly .chip .dn { width: 38px; font: inherit; font-size: 10.5px; border: 1px solid #D5DEE9; border-radius: 5px; padding: 1px 3px; }
.dly .chip .dl-b.x { padding: 1px; border: 0; background: none; }
.dly .chip .dl-b.x .dl-ic { width: 11px; height: 11px; }
.dly .sp-hint { display: flex; align-items: center; gap: 5px; font-size: 11px; color: #64748B; }
.dly .sp-hint.own { color: #8A5A12; line-height: 1.4; }
.dly .sp-bad { display: flex; gap: 5px; font-size: 11px; color: var(--dl-bad); }
.dly .sp-imp { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border: 1px solid var(--dl-line); border-radius: 9px; overflow: hidden; }
.dly .sp-imp > div { display: flex; flex-direction: column; padding: 6px 8px; border-right: 1px solid var(--dl-line); }
.dly .sp-imp > div:last-child { border-right: 0; }
.dly .sp-imp span { font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; }
.dly .sp-imp b { font-family: var(--u-mono); font-size: 14px; } .dly .sp-imp b.late { color: var(--dl-bad); }
.dly .sp-rec { display: flex; align-items: center; gap: 6px; font-size: 11px; }
.dly .sp-rec span { flex: 1 1 auto; } .dly .sp-rec .dl-ic { width: 12px; height: 12px; color: var(--dl-ok); }
.dly .sp-meth summary { cursor: pointer; font-size: 11px; font-weight: 700; color: #2458C6; }
.dly .sp-meth ul { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.dly .sp-meth li { display: grid; grid-template-columns: 70px 1fr auto; align-items: center; gap: 6px; font-size: 10.5px; color: #475569; }
.dly .sp-meth li em { font-style: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .sp-foot { display: flex; justify-content: space-between; }


/* ── the Studio, method first ───────────────────────────────────────── */
.dly .st-bar.mb { gap: 8px; }
.dly .st-bar.tb { margin-top: -2px; background: #F8FAFC; }
.dly .st-mchip { flex: none; display: inline-flex; align-items: baseline; gap: 6px; font: inherit; padding: 6px 10px; border-radius: 8px; border: 1px solid #1F4E79; background: #1F4E79; color: #fff; cursor: pointer; }
.dly .st-mchip b { font-size: 12.5px; } .dly .st-mchip em { font-style: normal; font-size: 10.5px; opacity: .75; } .dly .st-mchip i { font-style: normal; font-size: 10px; opacity: .8; }
.dly .st-src { font-size: 11px; color: #475569; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.dly .st-err { font-size: 11px; color: var(--dl-bad); }
.dly .st-step { display: inline-flex; align-items: center; gap: 4px; }
.dly .st-step b { font-family: var(--u-mono); font-size: 12px; } .dly .st-step b em { font-style: normal; color: #64748B; font-weight: 600; }
.dly .st-strip { font-size: 11.5px; color: #334155; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1 1 auto; }
.dly .st-strip b.late { color: var(--dl-bad); } .dly .st-strip b.early { color: var(--dl-ok); } .dly .st-strip em { font-style: normal; color: #64748B; }
.dly .st-strip.is-bad { color: var(--dl-bad); }
@container dly (max-width: 1350px) { .dly .st-src { display: none; } }

/* the drawer: over the Gantt, only while it is needed */
.dly .st-drawer { position: absolute; top: 8px; right: 8px; bottom: 8px; width: 330px; max-width: calc(100% - 16px); z-index: 12; display: flex; flex-direction: column;
  background: #fff; border: 1px solid #C8D6E5; border-radius: 12px; box-shadow: 0 18px 44px -18px rgba(15, 27, 46, .45); }
.dly .st-drawer .dr-h { flex: none; display: flex; align-items: center; gap: 6px; padding: 7px 8px; border-bottom: 1px solid #E5E9EF; }
.dly .st-drawer .dr-h b { font-size: 12px; margin: 0 4px; }
.dly .st-drawer .dr-h .dl-seg { border: 1px solid transparent; }
.dly .st-drawer .dr-b { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 10px; display: flex; flex-direction: column; gap: 9px; }
.dly .mn { margin: 4px 0 8px; padding-left: 16px; font-size: 11px; line-height: 1.45; color: #334155; display: flex; flex-direction: column; gap: 4px; }

/* Before · After */
.dly .st-gap { flex: none; width: 8px; background: repeating-linear-gradient(90deg, #E2E8F0 0 1px, #F8FAFC 1px 8px); }
.dly .st-gap.h { height: 40px; }
.dly .split .st-head { flex: none; }
.st-hsvg .pn.before { fill: #EEF1F5; } .st-hsvg .pn.after { fill: #FDF1EE; }
.st-hsvg .pl { font-size: 10.5px; font-weight: 800; letter-spacing: .04em; fill: #0F1B2E; } .st-hsvg .pl .pf { font-family: var(--u-mono); fill: #475569; font-weight: 700; }

/* the event, strongly, on the activity it acts on */
.st-svg .sx-slip { fill: #E1452C; fill-opacity: .16; stroke: #E1452C; stroke-opacity: .55; stroke-width: 1; stroke-dasharray: 3 2; }
.st-svg .sx-push { fill: #94A3B8; fill-opacity: .18; stroke: #94A3B8; stroke-dasharray: 3 2; }
.st-svg .bg.hit { fill: #FFF8EE; }
.st-svg .sx-bar.hit .sx-bo { stroke: #0F172A; stroke-width: 1.4; }
.st-svg .sx-nm.hit { font-weight: 800; }
.st-svg .eb.on-act .sx-bd { stroke: #0F172A; stroke-width: 1.2; }
.st-svg .eb.on-act .sx-hatch { fill: url(#st-hatch); }
.dly .st-names .tr.act.hit { box-shadow: inset 3px 0 0 #D9822B; background: #FFF8EE; }

/* the picker */
.dly .st-pick { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 12px; padding: 4px 2px; }
.dly .pk-h { display: flex; flex-direction: column; gap: 4px; }
.dly .pk-h b { font-size: 17px; } .dly .pk-h span { font-size: 12px; color: #475569; max-width: 900px; line-height: 1.5; }
.dly .pk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.dly .pk-c { font: inherit; text-align: left; display: flex; flex-direction: column; gap: 8px; padding: 14px; border-radius: 12px; border: 1px solid #D5DEE9; background: #fff; color: #0F1B2E; cursor: pointer;
  box-shadow: 0 1px 2px rgba(15, 27, 46, .04); transition: border-color .12s, box-shadow .12s, transform .12s; }
.dly .pk-c:hover { border-color: #1F4E79; box-shadow: 0 12px 26px -18px rgba(31, 78, 121, .6); transform: translateY(-1px); }
.dly .pk-c.weak { opacity: .7; }
.dly .pk-t { display: flex; flex-direction: column; } .dly .pk-t b { font-size: 14px; } .dly .pk-t em { font-style: normal; font-size: 10.5px; color: #64748B; }
.dly .pk-q { font-size: 12.5px; font-weight: 700; color: #1F4E79; }
.dly .pk-on { display: flex; gap: 6px; align-items: flex-start; font-size: 11px; color: #334155; } .dly .pk-on .dl-ic { width: 13px; height: 13px; flex: none; margin-top: 1px; }
.dly .pk-c ol { margin: 0; padding-left: 16px; font-size: 11px; color: #475569; line-height: 1.45; display: flex; flex-direction: column; gap: 2px; }
.dly .pk-rd { font-size: 10.5px; color: #475569; border-top: 1px solid #EEF1F5; padding-top: 7px; line-height: 1.6; }
.dly .pk-rd i { font-style: normal; font-weight: 800; margin-right: 5px; } .dly .pk-rd i.y { color: var(--dl-ok); } .dly .pk-rd i.n { color: var(--dl-warn); }

@media print {
  .upd.dly.print .dl-rs { break-inside: auto; }
  .upd.dly.print .dl-rs h2 { break-after: avoid; }
  .upd.dly.print table { break-inside: auto; }
  .upd.dly.print tr { break-inside: avoid; }
}

/* ── fitted to narrow panes ─────────────────────────────────────────── */
.dly .dl-card .c3 { overflow: hidden; align-items: flex-start; }
.dly .dl-card .c3 .dl-pill { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.dly .dl-tree label, .dly .dl-checks label, .dly .dl-tog { min-height: 0; margin: 0; padding: 0; }
.dly .dl-tree li { min-height: 26px; }
.dly .dl-evform { grid-template-columns: 150px minmax(180px, 1.6fr) minmax(150px, 1fr); }
.dly .dl-evform > .dl-b { justify-self: start; }
.dly .dl-chk li em { white-space: normal; text-align: right; max-width: 42%; }
.dly .dl-ai .lbl { text-transform: none; letter-spacing: 0; font-size: 10.5px; font-style: italic; font-weight: 700; }

/* the event story, opened from the event marker */
.dly .dl-evm { cursor: pointer; pointer-events: auto; z-index: 3; }
.dly .dl-evm::after { content: ''; position: absolute; left: -7px; top: 0; bottom: 0; width: 14px; }
.dly .dl-vstory { list-style: none; margin: 10px 0; padding: 0; position: relative; }
.dly .dl-vstory::before { content: ''; position: absolute; left: 11px; top: 8px; bottom: 8px; width: 2px; background: var(--dl-wash); }
.dly .dl-vstory li { display: flex; gap: 10px; padding: 5px 0; position: relative; }
.dly .dl-vstory .n { width: 24px; height: 24px; flex: none; border-radius: 50%; background: #fff; border: 2px solid #C9D5E4; font-size: 10px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center; color: var(--dl-mu); z-index: 1; }
.dly .dl-vstory div { display: flex; flex-direction: column; min-width: 0; }
.dly .dl-vstory .k { font-size: 9.5px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--dl-mu); }
.dly .dl-vstory b { font-family: var(--u-mono); font-size: 13px; }
.dly .dl-vstory em { font-style: normal; font-size: 10.5px; color: var(--dl-mu); }
.dly .dl-vstory li.is-bad .n { border-color: var(--dl-bad); color: var(--dl-bad); } .dly .dl-vstory li.is-bad b { color: var(--dl-bad); }
.dly .dl-vstory li.is-good .n { border-color: var(--dl-ok); color: var(--dl-ok); }
.dly .dl-vstory li.net .n { background: #1F4E79; border-color: #1F4E79; color: #fff; }
.dly .dl-chron { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 11px; }
.dly .dl-chron li { display: grid; grid-template-columns: 70px 1fr; gap: 8px; padding: 5px 8px; border-radius: 7px; background: var(--dl-soft); border-left: 3px solid var(--dl-unk); line-height: 1.4; }
.dly .dl-chron li.k-event { border-left-color: var(--dl-ev); } .dly .dl-chron li.k-notice { border-left-color: var(--dl-warn); }
.dly .dl-chron li.k-update { border-left-color: var(--u-dd, #2F6BD8); } .dly .dl-chron li.k-analysis { border-left-color: var(--dl-acc); }
.dly .dl-chron li.k-evidence { border-left-color: var(--dl-ok); }
/* the fragnet editor, in a narrow pane */
.dly table.dl-t.fr { table-layout: fixed; }
.dly table.dl-t.fr th { padding: 5px 4px; font-size: 9px; }
.dly table.dl-t.fr .dl-in, .dly table.dl-t.fr .dl-sel { padding: 5px 5px; font-size: 11px; }
.dly table.dl-t.fa th:nth-child(1) { width: 34%; } .dly table.dl-t.fa th:nth-child(3) { width: 58px; } .dly table.dl-t.fa th:nth-child(4) { width: 30px; }
.dly table.dl-t.fl th:nth-child(2) { width: 58px; } .dly table.dl-t.fl th:nth-child(3) { width: 46px; } .dly table.dl-t.fl th:nth-child(5) { width: 30px; }
.dly table.dl-t.fx th:nth-child(2) { width: 58px; } .dly table.dl-t.fx th:nth-child(3) { width: 30px; }

/* ── Studio · suspension of the works ───────────────────────────────── */
.st-svg .sx-susp { pointer-events: none; }
.st-svg .sx-susp .band { fill-opacity: .07; }
.st-svg .sx-susp .row { fill-opacity: .22; }
.st-svg .sx-susp .edge { stroke-width: 1.2; stroke-dasharray: 4 3; stroke-opacity: .75; }
.st-svg .sx-susp.pre .band { fill-opacity: .035; }
.st-svg .sx-susp.foc .band { fill-opacity: .11; }
.st-svg .sx-susp.s-EMPLOYER .band, .st-svg .sx-susp.s-EMPLOYER .row { fill: var(--dl-emp); } .st-svg .sx-susp.s-EMPLOYER .edge { stroke: var(--dl-emp); }
.st-svg .sx-susp.s-CONTRACTOR .band, .st-svg .sx-susp.s-CONTRACTOR .row { fill: var(--dl-con); } .st-svg .sx-susp.s-CONTRACTOR .edge { stroke: var(--dl-con); }
.st-svg .sx-susp.s-NEUTRAL .band, .st-svg .sx-susp.s-NEUTRAL .row { fill: var(--dl-neu); } .st-svg .sx-susp.s-NEUTRAL .edge { stroke: var(--dl-neu); }
.st-hsvg .hsu > rect:first-child { fill-opacity: .14; }
.st-hsvg .hsu .pill { fill-opacity: .92; }
.st-hsvg .hsu text { font-size: 9.5px; font-weight: 800; letter-spacing: .05em; fill: #fff; }
.st-hsvg .hsu.s-EMPLOYER rect { fill: var(--dl-emp); } .st-hsvg .hsu.s-CONTRACTOR rect { fill: var(--dl-con); } .st-hsvg .hsu.s-NEUTRAL rect { fill: var(--dl-neu); }
.dly .sp-su-form { display: flex; flex-direction: column; gap: 8px; }
.dly .sp-su-form .su-mode { align-self: flex-start; }
.dly .su-hint { font-size: 11.5px; color: var(--dl-mute, #5B6B80); line-height: 1.4; }
.dly .su-tree { max-height: 280px; overflow: auto; border: 1px solid var(--dl-line); border-radius: 8px; padding: 4px 0; }
.dly .su-n { display: flex; align-items: center; gap: 6px; padding: 3px 8px 3px calc(8px + var(--lv, 0) * 12px); font-size: 12px; }
.dly .su-n:hover { background: rgba(15, 23, 42, .04); }
.dly .su-n .nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .su-n .nm i { font-style: normal; font-size: 10.5px; color: #6B7A90; margin-right: 6px; }
.dly .su-n.inc { background: rgba(79, 91, 213, .08); } .dly .su-n.exc { background: rgba(27, 175, 122, .08); }
.dly .su-n.exc .nm { text-decoration: line-through; text-decoration-color: rgba(15, 23, 42, .3); }
.dly .su-n .t { border: 1px solid var(--dl-line); background: #fff; border-radius: 6px; font-size: 10.5px; font-weight: 700; padding: 2px 6px; color: #5B6B80; cursor: pointer; white-space: nowrap; }
.dly .su-n .t.stop.on { background: var(--dl-emp); border-color: var(--dl-emp); color: #fff; }
.dly .su-n .t.keep.on { background: var(--dl-neu); border-color: var(--dl-neu); color: #fff; }
.dly .su-sum { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; }
.dly .su-rules { margin: 0; padding-left: 16px; font-size: 11.5px; color: #5B6B80; line-height: 1.45; }
.dly .sp-su { display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px solid var(--dl-line); border-radius: 9px; }
.dly .sp-su .su-k { display: grid; grid-template-columns: repeat(auto-fit, minmax(62px, 1fr)); gap: 4px; }
.dly .sp-su .su-k > div { display: flex; flex-direction: column; padding: 4px 6px; background: rgba(15, 23, 42, .03); border-radius: 6px; }
.dly .sp-su .su-k b { font-size: 15px; } .dly .sp-su .su-k span { font-size: 10.5px; color: #5B6B80; }
.dly .sp-su .su-k .sp b { color: var(--dl-emp); } .dly .sp-su .su-k .hd b { color: var(--dl-con); }
.dly .su-ids summary { font-size: 11.5px; font-weight: 700; cursor: pointer; }
.dly .su-ids div { display: flex; flex-wrap: wrap; gap: 3px; padding-top: 4px; }
.dly .su-ids button { border: 1px solid var(--dl-line); background: #fff; border-radius: 5px; font-size: 10.5px; padding: 1px 5px; cursor: pointer; }
.st-hsvg .hsu .ib { fill: #fff !important; }
.dly .chip .x.alt { width: auto; padding: 0 5px; font-size: 10px; font-weight: 800; letter-spacing: .03em; color: #4F5BD5; border: 1px solid rgba(79, 91, 213, .35); border-radius: 5px; margin-left: 2px; }

/* ── Studio · completion drawn like the Data Date ───────────────────── */
.st-svg .fin-band.late { fill: var(--dl-bad); fill-opacity: .06; } .st-svg .fin-band.early { fill: var(--dl-ok); fill-opacity: .06; }
.st-svg .fin.b { stroke: #334155; stroke-width: 1.5; stroke-dasharray: 5 4; }
.st-svg .fin.a { stroke-width: 2; stroke-dasharray: none; } .st-svg .fin.a.late { stroke: var(--dl-bad); } .st-svg .fin.a.early { stroke: var(--dl-ok); }
.st-hsvg .hfin rect { fill: #334155; } .st-hsvg .hfin.late rect { fill: var(--dl-bad); } .st-hsvg .hfin.early rect { fill: var(--dl-ok); }
.st-hsvg .hfin text, .st-hsvg .hfin.early text { font-size: 10px; font-weight: 800; letter-spacing: .03em; fill: #fff; font-family: var(--u-mono, ui-monospace, monospace); }

/* ── Studio · who moved it, and whether it matters ──────────────────── */
.st-svg .sx-seg { fill-opacity: .85; }
.st-svg .sx-seg.s-EMPLOYER { fill: var(--dl-emp); } .st-svg .sx-seg.s-CONTRACTOR { fill: var(--dl-con); } .st-svg .sx-seg.s-NEUTRAL { fill: var(--dl-neu); }
.st-svg .sx-seg.s-MIXED, .st-svg .sx-seg.s-UNKNOWN { fill: #94A3B8; }
.st-svg .sx-seg.conc { fill: url(#st-conc); fill-opacity: 1; }
.st-svg .sx-seg.abs { fill-opacity: .32; } .st-svg .sx-seg.conc.abs { fill-opacity: .45; }
.st-svg .sx-slipo { fill: none; pointer-events: none; }
.st-svg .sx-slipo.drive { stroke: var(--dl-bad); stroke-width: 1.6; }
.st-svg .sx-slipo.abs { stroke: #D97706; stroke-width: 1.2; stroke-dasharray: 3 2; }
.st-svg .sh.abs { fill: #B45309; }
.dly .st-names .tr .c-sh.abs { color: #B45309; }

/* ── Studio · the dock under the Gantt ──────────────────────────────── */
.dly .st-dock { flex: 0 0 auto; display: flex; flex-direction: column; gap: 6px; padding: 8px 12px 10px; border-top: 1px solid var(--dl-line); background: #FBFCFE; max-height: 190px; overflow: auto; font-size: 12px; }
.dly .dk-sum { display: flex; flex-wrap: wrap; gap: 6px; }
.dly .dk-kv { display: flex; flex-direction: column; gap: 1px; padding: 5px 10px; border: 1px solid var(--dl-line); border-radius: 8px; background: #fff; min-width: 108px; }
.dly .dk-kv > span { font-size: 10.5px; color: #5B6B80; display: inline-flex; align-items: center; gap: 5px; }
.dly .dk-kv > b { font-size: 13px; font-family: var(--u-mono, ui-monospace, monospace); }
.dly .dk-kv > b i { font-style: normal; color: #94A3B8; padding: 0 3px; } .dly .dk-kv > b em { font-style: normal; margin-left: 6px; }
.dly .dk-kv.wide { min-width: 220px; }
.dly .dk-kv.conc { border-color: #B8A3E0; background: #F7F3FF; } .dly .dk-kv.conc > b { color: #6D3FC0; }
.dly .dk-kv.late > b, .dly .dk-kv em.late, .dly .dk-v.late { color: var(--dl-bad); } .dly .dk-kv em.early, .dly .dk-v.early { color: var(--dl-ok); } .dly .dk-v.abs { color: #B45309; }
.dly .dk-kv.emp { border-color: rgba(79, 91, 213, .35); }
.dly .dk-lg { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 11px; color: #5B6B80; align-items: center; }
.dly .dk-lg > span { display: inline-flex; align-items: center; gap: 5px; }
.dly .dk-lg b.late { color: var(--dl-bad); } .dly .dk-lg b.abs { color: #B45309; }
.dly .st-dock .sw { display: inline-block; width: 12px; height: 9px; border-radius: 2px; }
.dly .st-dock .sw.conc { background: repeating-linear-gradient(45deg, #4F5BD5 0 3px, #D9822B 3px 6px); }
.dly .st-dock .ol { display: inline-block; width: 16px; height: 9px; border-radius: 2px; } .dly .st-dock .ol.drive { border: 2px solid var(--dl-bad); } .dly .st-dock .ol.abs { border: 1.5px dashed #D97706; }
.dly .st-dock .ln { display: inline-block; width: 0; height: 13px; } .dly .st-dock .ln.b { border-left: 2px dashed #334155; } .dly .st-dock .ln.a { border-left: 2px solid var(--dl-bad); } .dly .st-dock .ln.dd { border-left: 2px solid #3B82F6; }
.dly .dk-hint { display: flex; align-items: center; gap: 6px; font-size: 11px; color: #6B7A90; margin: 0; }
.dly .dk-head { display: flex; align-items: center; gap: 8px; }
.dly .dk-head span { font-weight: 700; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dly .dk-head em { font-style: normal; font-size: 11px; color: #5B6B80; }
.dly .dk-body { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: flex-start; }
.dly .dk-evs { display: flex; flex-direction: column; gap: 3px; }
.dly .dk-ev { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--dl-line); background: #fff; border-radius: 6px; padding: 3px 7px; font-size: 11.5px; cursor: pointer; text-align: left; }
.dly .dk-act { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.dly .dk-act label { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #5B6B80; }
.dly .dk-act .pside { display: inline-flex; }

/* ── Studio · the right-click menu ──────────────────────────────────── */
.dly .st-ctx, .st-ctx { position: fixed; z-index: 2147483000; min-width: 250px; max-width: 340px; background: #fff; border: 1px solid #D5DEE9; border-radius: 10px; box-shadow: 0 12px 32px rgba(15, 23, 42, .18); padding: 5px; font-size: 12.5px; }
.st-ctx .cm-h { display: flex; align-items: center; gap: 6px; padding: 5px 8px 7px; border-bottom: 1px solid #EEF2F7; margin-bottom: 4px; }
.st-ctx .cm-h span { color: #5B6B80; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-ctx .cm-i { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; background: transparent; padding: 7px 8px; border-radius: 6px; cursor: pointer; text-align: left; font: inherit; color: #0F172A; }
.st-ctx .cm-i:hover, .st-ctx .cm-i:focus-visible { background: #F1F5FB; }
.st-ctx .cm-i em { font-style: normal; color: #6B7A90; margin-left: auto; font-size: 11px; }
.st-ctx .cm-i.bad { color: var(--dl-bad, #C6462B); }
.st-ctx .cm-sep { height: 1px; background: #EEF2F7; margin: 4px 2px; }
.st-ctx .cm-sides { display: flex; gap: 4px; padding: 4px 8px; }
.st-ctx .cm-sides button { flex: 1; border: 1px solid #D5DEE9; background: #fff; border-radius: 6px; padding: 4px 6px; font-size: 11px; font-weight: 700; cursor: pointer; }
.st-ctx .cm-sides button.on.s-EMPLOYER { background: var(--dl-emp, #4F5BD5); color: #fff; border-color: var(--dl-emp, #4F5BD5); }
.st-ctx .cm-sides button.on.s-CONTRACTOR { background: var(--dl-con, #D9822B); color: #fff; border-color: var(--dl-con, #D9822B); }
.st-ctx .cm-sides button.on.s-NEUTRAL { background: var(--dl-neu, #1BAF7A); color: #fff; border-color: var(--dl-neu, #1BAF7A); }
.st-ctx .sd { display: inline-block; width: 9px; height: 9px; border-radius: 50%; }
.st-ctx .dl-ic { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; flex: 0 0 auto; }
.dly .dl-b.undo { border-color: #D97706; color: #B45309; }
.dly .sp-gap { display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px dashed #CBD5E1; border-radius: 8px; font-size: 11.5px; color: #475569; }
.dly .sp-gap > span { display: flex; gap: 6px; }

.st-ctx .sd.s-EMPLOYER { background: var(--dl-emp, #4F5BD5); } .st-ctx .sd.s-CONTRACTOR { background: var(--dl-con, #D9822B); } .st-ctx .sd.s-NEUTRAL { background: var(--dl-neu, #1BAF7A); } .st-ctx .sd.s-UNKNOWN { background: #94A3B8; }
/* the Update module's .upd keeps 40px under its long screens for scroll
   room; the Studio and the Overview are one screen high and end at the
   bottom of it */
.upd.dly[data-ws="studio"], .upd.dly[data-ws="overview"] { padding-bottom: 6px; }
.st-svg .sx-nm .cc { fill: #6D3FC0; font-weight: 800; }

/* ── Studio · the analysis in the header, one toolbar ───────────────── */
.dly .dl-top.has-studio { gap: 12px; }
.dly .st-hbits { display: flex; align-items: center; gap: 8px; min-width: 0; flex-wrap: nowrap; }
.dly .st-hbits .st-basis { max-width: 210px; }
.dly .st-hbits .st-fin { display: inline-flex; align-items: baseline; gap: 6px; padding: 5px 10px; border: 1px solid var(--dl-line); border-radius: 9px; background: #fff; white-space: nowrap; }
.dly .st-hbits .st-fin > span { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #5B6B80; }
.dly .st-hbits .st-fin i { font-style: normal; color: #94A3B8; }
.dly .st-hbits .st-fin strong { margin-left: 4px; }
.dly .st-hbits .st-fin.late strong { color: var(--dl-bad); } .dly .st-hbits .st-fin.early strong { color: var(--dl-ok); }
.dly .st-bar.tb { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.dly .st-bar.tb::-webkit-scrollbar { display: none; }
.dly .st-viewseg .dl-seg.on { background: #0F172A; color: #fff; }

/* ── Studio · before and after on one row ───────────────────────────── */
.st-svg .sx-was { fill: #475569; fill-opacity: .55; }
.st-svg .sx-dl { fill-opacity: .95; }
.st-svg .sx-dl.s-EMPLOYER { fill: var(--dl-emp); } .st-svg .sx-dl.s-CONTRACTOR { fill: var(--dl-con); } .st-svg .sx-dl.s-NEUTRAL { fill: var(--dl-neu); }
.st-svg .sx-dl.s-MIXED, .st-svg .sx-dl.s-UNKNOWN { fill: #64748B; }
.st-svg .sx-dl.conc { fill: url(#st-conc); }
.st-svg .sx-dl.abs { fill-opacity: .4; }
.st-svg .sx-dl.early { fill: var(--dl-ok); fill-opacity: .6; }
.st-svg .sx-dla.drive { fill: var(--dl-bad); } .st-svg .sx-dla.abs { fill: #D97706; fill-opacity: .8; }
.st-svg .sx-mline { stroke-width: 1.4; stroke-dasharray: 3 2; } .st-svg .sx-mline.drive { stroke: var(--dl-bad); } .st-svg .sx-mline.abs { stroke: #D97706; } .st-svg .sx-mline.early { stroke: var(--dl-ok); }
.st-svg .sx-ghostm { fill: #fff; stroke: #475569; stroke-width: 1.2; }

/* ── Studio · a compact dock ────────────────────────────────────────── */
.dly .st-dock { padding: 5px 10px 6px; gap: 4px; max-height: 118px; }
.dly .st-dock:not(.is-act) { max-height: 74px; }
.dly .dk-row { display: flex; flex-wrap: wrap; gap: 5px; }
.dly .dk-row .dk-kv { flex-direction: row; align-items: baseline; gap: 7px; padding: 2px 9px; min-width: 0; border-radius: 7px; }
.dly .dk-row .dk-kv > b { font-size: 12.5px; }
.dly .dk-row .dk-kv.wide { min-width: 0; }
.dly .dk-lg { font-size: 10.5px; gap: 2px 12px; }
.dly .dk-lg .lg-bar { display: inline-block; width: 16px; height: 7px; background: #1E9E57; border: 1px solid #157A43; border-radius: 1px; }
.dly .dk-lg .lg-was { display: inline-block; width: 16px; height: 3px; background: #475569; opacity: .6; border-radius: 1px; }
.dly .dk-lg .lg-dl { display: inline-block; width: 14px; height: 5px; border-radius: 1px; }
.dly .dk-lg .lg-dl.s-EMPLOYER { background: var(--dl-emp); } .dly .dk-lg .lg-dl.s-CONTRACTOR { background: var(--dl-con); } .dly .dk-lg .lg-dl.s-NEUTRAL { background: var(--dl-neu); }
.dly .dk-lg .lg-dl.conc { background: repeating-linear-gradient(45deg, #4F5BD5 0 3px, #D9822B 3px 6px); }
@container dly (max-width: 1700px) { .dly .st-bar.tb .tl { display: none; } .dly .st-bar.tb .dl-seg .sw { margin: 0; } }
.dly .st-bar .dl-segs .sw { width: 9px; height: 9px; border-radius: 2px; display: inline-block; vertical-align: middle; }

/* ── Studio · named party tools, the event filter ───────────────────── */
.dly .st-tools .tn { font-size: 11px; font-weight: 700; }
.dly .st-bar.tb .st-evsel { width: auto; min-width: 0; max-width: 150px; font-size: 11.5px; }
@container dly (max-width: 1700px) { .dly .st-bar.tb .tn { display: inline; } }
@container dly (max-width: 1150px) { .dly .st-bar.tb .tn { display: none; } }

/* ── Studio · the delay on a row: one quiet line ────────────────────── */
.st-svg .sx-dlx { stroke-width: 1.8; stroke-linecap: round; }
.st-svg .sx-dlx.drive { stroke: var(--dl-bad); }
.st-svg .sx-dlx.abs { stroke: #D97706; stroke-dasharray: 3 2.5; }
.dly .dk-lg .lg-dx { display: inline-block; width: 16px; height: 0; border-top: 2px solid var(--dl-bad); }
.dly .dk-lg .lg-dx.abs { border-top: 2px dashed #D97706; }
.dly .dk-lg .sw.conc, .dly .st-names .sw.conc { display: inline-block; width: 12px; height: 9px; border-radius: 2px; background: repeating-linear-gradient(45deg, #4F5BD5 0 3px, #D9822B 3px 6px); }

/* ── Studio · the overlap row ───────────────────────────────────────── */
.st-svg .sx-ovl .ol-e { fill: var(--dl-emp); }
.st-svg .sx-ovl .ol-k { fill: var(--dl-con); }
.st-svg .sx-ovl .ol-b { fill: url(#st-conc); fill-opacity: .3; stroke: #6D3FC0; stroke-width: 1.2; }
.st-svg .sx-ovl .ol-t { font-size: 10.5px; font-weight: 700; fill: #6D3FC0; }
.dly .st-names .tr.ovl { background: #F7F3FF; }
.dly .st-names .tr.ovl .c-nm { font-weight: 700; color: #4C2A8A; }
.dly .st-names .tr.ovl .c-nm em { font-style: normal; font-weight: 500; color: #7C6BA8; margin-left: 6px; font-size: 10.5px; }
.dly .st-names .tr.ovl .c-sh { color: #6D3FC0; font-weight: 800; }

/* ── Studio · the events in the preview ─────────────────────────────── */
.dly .st-evbtn { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 700; }
.dly .st-evbtn.part { border-color: #6D3FC0 !important; color: #4C2A8A; background: #F7F3FF; }
.dly .st-evbtn .car { font-style: normal; font-size: 9px; opacity: .7; }
.dly .st-wrap { position: relative; }
.dly .st-evpick { position: absolute; z-index: 40; top: 46px; left: 330px; width: 440px; max-height: 60%; display: flex; flex-direction: column; background: #fff; border: 1px solid #D5DEE9; border-radius: 12px; box-shadow: 0 14px 36px rgba(15, 23, 42, .18); }
.dly .st-evpick .ep-h { display: flex; align-items: center; justify-content: space-between; padding: 8px 10px 4px 12px; }
.dly .st-evpick .ep-q { display: flex; gap: 5px; flex-wrap: wrap; padding: 0 10px 8px; border-bottom: 1px solid #EEF2F7; }
.dly .st-evpick .ep-q .sw { display: inline-block; width: 9px; height: 9px; border-radius: 2px; margin-right: 4px; }
.dly .st-evpick .ep-l { overflow: auto; padding: 4px; }
.dly .st-evpick .ep-i { display: grid; grid-template-columns: 18px 10px 62px 1fr auto auto; align-items: center; gap: 7px; padding: 6px 8px; border-radius: 7px; cursor: pointer; font-size: 12px; opacity: .55; }
.dly .st-evpick .ep-i.on { opacity: 1; } .dly .st-evpick .ep-i:hover { background: #F1F5FB; }
.dly .st-evpick .ep-i span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .st-evpick .ep-i em { font-style: normal; font-size: 11px; color: #6B7A90; } .dly .st-evpick .ep-i strong { font-family: var(--u-mono); font-size: 11.5px; } .dly .st-evpick .late { color: var(--dl-bad); }
.dly .st-evpick .sd { display: inline-block; width: 9px; height: 9px; border-radius: 50%; }
.dly .st-evpick .ep-f { padding: 8px 12px; border-top: 1px solid #EEF2F7; font-size: 12px; }
.dly .st-names .tr.ev.out { opacity: .45; }

/* ── Studio · assign: the tie picker, laid out as the Gantt's table ─── */
.dly .st-tpick { position: absolute; z-index: 45; top: 50px; left: 50%; transform: translateX(-50%); width: min(820px, 94%); height: min(560px, 86%); display: flex; flex-direction: column; background: #fff; border: 1px solid #CBD5E1; border-radius: 12px; box-shadow: 0 18px 44px rgba(15, 23, 42, .22); overflow: hidden; }
.dly .st-tpick .tp-h { display: flex; align-items: center; gap: 8px; padding: 9px 12px; border-bottom: 1px solid #EEF2F7; }
.dly .st-tpick .tp-h span { flex: 1; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .st-tpick .sd { display: inline-block; width: 10px; height: 10px; border-radius: 50%; }
.dly .st-tpick .tp-c { display: flex; align-items: center; gap: 8px; padding: 8px 12px; flex-wrap: wrap; }
.dly .st-tpick .tp-c .pq { flex: 1; min-width: 200px; }
.dly .st-tpick .tp-lag { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #5B6B80; } .dly .st-tpick .tp-lag input { width: 56px; }
.dly .st-tpick .tp-note { padding: 0 12px 8px; font-size: 11.5px; color: #5B6B80; }
.dly .st-tpick .tp-hd, .dly .st-tpick .pk-r { display: grid; grid-template-columns: 96px 1fr 44px 86px 86px; align-items: center; gap: 6px; padding: 0 12px; min-height: 26px; font-size: 12px; }
.dly .st-tpick .tp-hd { background: #F1F5FB; font-size: 10.5px; font-weight: 800; letter-spacing: .05em; color: #5B6B80; border-top: 1px solid #EEF2F7; border-bottom: 1px solid #E2E8F0; }
.dly .st-tpick .tp-l { flex: 1; overflow: auto; }
.dly .st-tpick .pk-r.wbs { background: var(--wbg); color: var(--wtx); font-weight: 800; padding-left: calc(12px + var(--lv, 0) * 10px); }
.dly .st-tpick .pk-r.wbs .c-nm { grid-column: 2 / -1; }
.dly .st-tpick .pk-r.act { width: 100%; border: 0; border-bottom: 1px solid #F1F5F9; background: #fff; text-align: left; cursor: pointer; font: inherit; font-size: 12px; }
.dly .st-tpick .pk-r.act:hover { background: #EEF4FF; } .dly .st-tpick .pk-r.act.done { color: #94A3B8; cursor: not-allowed; }
.dly .st-tpick .pk-r.act .c-nm { padding-left: calc(var(--lv, 0) * 8px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .st-tpick .pk-r .c-dt i { font-style: normal; font-size: 9px; font-weight: 800; color: #1B449B; margin-left: 2px; }
.dly .st-tpick .pk-r .c-du, .dly .st-tpick .tp-hd .c-du { text-align: right; }
.dly .sp-assign { display: flex; gap: 6px; flex-wrap: wrap; }
.dly .st-bar > .st-evbtn .en { display: inline !important; }
.dly .st-tpick .tp-c select { width: auto; flex: 0 0 auto; }
.dly .st-tpick .tp-c .tp-lag input { width: 60px; flex: 0 0 auto; }
.dly .st-tpick .tp-c .dl-segs { flex: 0 0 auto; }
.dly .st-view { display: inline-flex; align-items: center; gap: 5px; padding-left: 8px; border-left: 1px solid var(--dl-line); flex: none; }
.dly .st-view .vl { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #5B6B80; }
.dly .st-view .dl-segs .dl-seg { display: inline-flex; align-items: center; gap: 5px; }
.dly .st-view .tn { font-size: 11px; font-weight: 700; display: inline !important; }
.dly .st-hbits > .dl-seg { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--dl-line); background: #fff; flex: none; }
.dly .st-hbits > .dl-seg.on { background: #0F1B2E; color: #fff; border-color: #0F1B2E; }
@container dly (max-width: 1450px) {
  .dly .st-tools .tn, .dly .st-tools .dl-seg > svg + span { display: none; }
  .dly .st-view .tn { display: inline !important; }
}
.dly .st-bar.tb > * { flex: none; }
.dly .st-bar.tb > .dl-sp { flex: 1 1 auto; min-width: 4px; }
@container dly (max-width: 1450px) {
  .dly .st-bar.tb .st-tools .tn { display: none; }
  .dly .st-bar.tb .st-view .tn, .dly .st-bar.tb > .dl-seg .tn { display: inline; }
}

/* ── Studio · the project's delay, broken down ──────────────────────── */
.st-svg .sx-comp .cp-seg { fill-opacity: .9; stroke: #fff; stroke-width: .8; }
.st-svg .sx-comp .cp-seg.s-EMPLOYER { fill: var(--dl-emp); } .st-svg .sx-comp .cp-seg.s-CONTRACTOR { fill: var(--dl-con); } .st-svg .sx-comp .cp-seg.s-NEUTRAL { fill: var(--dl-neu); }
.st-svg .sx-comp .cp-seg.s-MIXED, .st-svg .sx-comp .cp-seg.s-UNKNOWN { fill: #64748B; }
.st-svg .sx-comp .cp-seg.conc { fill: url(#st-conc); }
.st-svg .sx-comp .cp-t { font-size: 10.5px; font-weight: 700; fill: #334155; }
.st-svg .sx-comp .cp-t .tot { fill: var(--dl-bad); font-weight: 800; }
.st-svg .sx-comp .cp-t .s-EMPLOYER { fill: var(--dl-emp); } .st-svg .sx-comp .cp-t .s-CONTRACTOR { fill: #B8661A; } .st-svg .sx-comp .cp-t .conc { fill: #6D3FC0; } .st-svg .sx-comp .cp-t .s-NEUTRAL { fill: #138A5F; }
.st-svg .sx-comp .cp-t .sep { fill: #94A3B8; }
.dly .st-names .tr.comp { background: #FFF6F3; }
.dly .st-names .tr.comp .c-nm { font-weight: 800; color: #7A2A18; }
.dly .st-names .tr.comp .c-nm em { font-style: normal; font-weight: 600; color: #8A5A4E; margin-left: 6px; font-size: 10.5px; }

/* ── An event, named: its date and its method, small ────────────────── */
.dly .dl-evtag { font-style: normal; font-size: 10.5px; font-weight: 600; color: #6B7A90; margin-left: 7px; white-space: nowrap; }
.dly .sd { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }

/* ── The event log ──────────────────────────────────────────────────── */
.dly .lg-wrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.dly .lg-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.dly .lg-bar .dl-seg { display: inline-flex; align-items: center; }
.dly .lg-t { flex: 1 1 auto; min-height: 0; overflow: auto; border: 1px solid var(--dl-line); border-radius: 12px; background: #fff; }
.dly .lg-h, .dly .lg-m { display: grid; grid-template-columns: minmax(280px, 2.6fr) 110px 70px minmax(130px, 1.1fr) 80px 90px 100px minmax(110px, 1fr) minmax(120px, 1fr) 100px 110px; gap: 8px; align-items: center; padding: 0 14px; }
.dly .lg-h { position: sticky; top: 0; z-index: 2; background: #F4F7FB; min-height: 34px; font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #5B6B80; border-bottom: 1px solid var(--dl-line); }
.dly .lg-h .n, .dly .lg-m .n { text-align: right; }
.dly .lg-r { border-bottom: 1px solid #EEF2F7; border-left: 3px solid transparent; }
.dly .lg-r.s-EMPLOYER { border-left-color: var(--dl-emp); } .dly .lg-r.s-CONTRACTOR { border-left-color: var(--dl-con); } .dly .lg-r.s-NEUTRAL { border-left-color: var(--dl-neu); }
.dly .lg-r.closed { opacity: .6; }
.dly .lg-m { width: 100%; min-height: 44px; border: 0; background: transparent; text-align: left; font: inherit; font-size: 12.5px; cursor: pointer; color: var(--dl-ink); }
.dly .lg-m:hover { background: #F7FAFE; } .dly .lg-r.open .lg-m { background: #F3F7FD; }
.dly .lg-m .ev { display: flex; align-items: center; gap: 6px; min-width: 0; }
.dly .lg-m .ev .t { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .lg-m .car { font-style: normal; color: #94A3B8; width: 12px; }
.dly .lg-m .late { color: var(--dl-bad); font-weight: 800; }
.dly .lg-m .cc { color: #6D3FC0; }
.dly .lg-m .st { font-size: 11px; color: #5B6B80; }
.dly .lg-m em.mu, .dly .lg-d em.mu { font-style: normal; color: #94A3B8; }
.dly .lg-d { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 24px; padding: 10px 18px 14px 34px; background: #FBFCFE; border-top: 1px dashed #E2E8F0; }
.dly .lg-col { display: flex; flex-direction: column; gap: 6px; }
.dly .lg-kv { display: flex; flex-direction: column; gap: 1px; font-size: 12px; }
.dly .lg-kv > span { font-size: 10.5px; color: #6B7A90; font-weight: 700; } .dly .lg-kv .late { color: var(--dl-bad); }
.dly .lg-act { grid-column: 1 / -1; display: flex; gap: 6px; flex-wrap: wrap; }
.dly .lg-empty { padding: 30px; text-align: center; color: #6B7A90; }

/* ── The claims register ────────────────────────────────────────────── */
.dly .cl-wrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 10px; }
.dly .cl-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.dly .cl-card { display: flex; flex-direction: column; gap: 2px; padding: 9px 12px; border: 1px solid var(--dl-line); border-radius: 11px; background: #fff; border-top: 3px solid #CBD5E1; }
.dly .cl-card span { font-size: 10.5px; font-weight: 800; letter-spacing: .04em; color: #5B6B80; text-transform: uppercase; }
.dly .cl-card b { font-size: 17px; font-family: var(--u-mono); } .dly .cl-card em { font-style: normal; font-size: 11px; color: #6B7A90; }
.dly .cl-card.is-ok { border-top-color: var(--dl-ok); } .dly .cl-card.is-info { border-top-color: var(--dl-emp); } .dly .cl-card.is-bad { border-top-color: var(--dl-bad); }
.dly .cl-card.is-warn { border-top-color: #D97706; } .dly .cl-card.conc { border-top-color: #6D3FC0; }
.dly .cl-t { flex: 1 1 auto; min-height: 0; overflow: auto; border: 1px solid var(--dl-line); border-radius: 12px; background: #fff; }
.dly table.cl { width: 100%; border-collapse: collapse; font-size: 12px; }
.dly table.cl th { position: sticky; top: 0; background: #F4F7FB; z-index: 1; text-align: left; font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #5B6B80; padding: 9px 8px; border-bottom: 1px solid var(--dl-line); white-space: nowrap; }
.dly table.cl td { padding: 7px 8px; border-bottom: 1px solid #EEF2F7; vertical-align: middle; }
.dly table.cl td.ev { min-width: 260px; }
.dly table.cl .num { text-align: right; }
.dly table.cl tr.s-EMPLOYER td:first-child { box-shadow: inset 3px 0 0 var(--dl-emp); } .dly table.cl tr.s-CONTRACTOR td:first-child { box-shadow: inset 3px 0 0 var(--dl-con); } .dly table.cl tr.s-NEUTRAL td:first-child { box-shadow: inset 3px 0 0 var(--dl-neu); }
.dly table.cl tr.tot td { font-weight: 800; background: #F8FAFC; position: sticky; bottom: 0; }
.dly table.cl .dl-sel.sm { max-width: 170px; }
.dly .dl-due { display: block; font-style: normal; font-size: 10.5px; color: #6B7A90; margin-top: 2px; }
.dly .dl-due.is-bad { color: var(--dl-bad); font-weight: 700; } .dly .dl-due.is-warn { color: #B45309; font-weight: 700; }
.dly .cl-foot { margin: 0; font-size: 11px; color: #6B7A90; line-height: 1.45; }
.upd.dly[data-ws="events"], .upd.dly[data-ws="claims"] { height: var(--dl-h); overflow: hidden; }
.upd.dly[data-ws="events"] .dl-stage, .upd.dly[data-ws="claims"] .dl-stage { display: flex; flex-direction: column; min-height: 0; flex: 1 1 auto; }
/* the log: the id apart, the name and its date · method on two lines */
.dly .lg-h, .dly .lg-m { grid-template-columns: 78px minmax(220px, 2.4fr) 100px 62px minmax(118px, 1fr) 70px 86px 76px minmax(110px, 1fr) minmax(110px, 1fr) 96px; }
.dly .lg-m .id { display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.dly .lg-m .ev { flex-direction: column; align-items: flex-start; gap: 1px; }
.dly .lg-m .ev .t { max-width: 100%; }
.dly .lg-m .ev .dl-evtag { margin-left: 0; }
.dly .lg-m > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* the register: compact fields in the table */
.dly table.cl .dl-in.sm, .dly table.cl .dl-sel.sm { height: 28px; min-height: 0; padding: 2px 6px; border-radius: 6px; font-size: 11.5px; box-shadow: none; }
.dly table.cl .dl-sel.sm { width: 128px; max-width: 128px; }
.dly table.cl td.ev .dl-evtag { display: block; margin: 2px 0 0; }

/* ── Notices · the deadlines on one time scale ──────────────────────── */
.dly .dl-dlbox { flex: none; max-height: 34vh; overflow-y: auto; background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 8px 12px 6px; }
.dly .dl-dlh { display: flex; align-items: center; gap: 14px; font-size: 11px; color: #5B6B80; margin-bottom: 4px; }
.dly .dl-dlh b { font-size: 12.5px; color: var(--dl-ink); margin-right: 6px; }
.dly .dl-dlh .k { display: inline-block; width: 16px; height: 8px; border-radius: 4px; margin-right: 5px; vertical-align: middle; }
.dly .dl-dlh .k.nt { background: #4F5BD5; } .dly .dl-dlh .k.cl { background: #C7D2FE; } .dly .dl-dlh .k.mk { width: 9px; height: 9px; transform: rotate(45deg); background: #334155; border-radius: 1px; } .dly .dl-dlh .k.sent { background: var(--dl-ok); }
.dly svg.dl-dls { width: 100%; height: auto; display: block; }
.dl-dls .ax-m { stroke: #E2E8F0; } .dl-dls .ax-t { font-size: 9.5px; font-weight: 800; fill: #6B7A90; letter-spacing: .05em; }
.dl-dls .dr { cursor: pointer; } .dl-dls .dr .bg { fill: transparent; } .dl-dls .dr:hover .bg { fill: #F4F7FB; }
.dl-dls .cl-p { fill: #C7D2FE; } .dl-dls .nt-p { fill: #4F5BD5; fill-opacity: .85; } .dl-dls .nt-p.over { fill: var(--dl-bad, #C6462B); } .dl-dls .nt-p.done { fill: var(--dl-ok, #188D68); }
.dl-dls .aw { fill: #fff; stroke: #334155; stroke-width: 1.5; }
.dl-dls .mk { fill: #334155; } .dl-dls .mk.over { fill: var(--dl-bad, #C6462B); } .dl-dls .mk.done { fill: var(--dl-ok, #188D68); } .dl-dls .mk.c { fill-opacity: .7; }
.dl-dls .ok-mk { fill: none; stroke: #fff; stroke-width: 2; }
.dl-dls .lb { font-size: 11px; font-weight: 700; fill: #334155; } .dl-dls .lbw { font-weight: 600; fill: #B45309; }
.dl-dls .today { stroke: #0F172A; stroke-width: 1.4; stroke-dasharray: 3 3; } .dl-dls .today-t { font-size: 9.5px; font-weight: 800; fill: #0F172A; }
.dly .dl-ncl { display: flex; align-items: center; gap: 8px; padding: 6px 12px 8px; border-top: 1px dashed #E2E8F0; font-size: 11.5px; }
.dly .dl-ncl .k { font-weight: 800; font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: #5B6B80; }
.dly .dl-ncl em { font-style: normal; color: #5B6B80; flex: 1; }

/* ── The overview ───────────────────────────────────────────────────── */
.dly .hm { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 10px; overflow: auto; }
.dly .hm-row { display: flex; gap: 10px; min-height: 0; }
.dly .hm-row.a { flex: 0 0 auto; } .dly .hm-row.b { flex: 1 1 auto; min-height: 220px; }
.dly .hm-card { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 10px 14px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.dly .hm-card.grow { flex: 1 1 auto; }
.dly .hm-row.b > .hm-card:first-child { flex: 0 0 380px; }
.dly .hm-h { display: flex; align-items: center; gap: 10px; }
.dly .hm-h b { font-size: 13.5px; } .dly .hm-h span { font-size: 11.5px; color: #6B7A90; flex: 1; }
.dly .hm-stand { flex: 0 0 250px; display: flex; flex-direction: column; gap: 6px; }
.dly .hm-k { background: #fff; border: 1px solid var(--dl-line); border-radius: 10px; padding: 7px 12px; border-left: 4px solid #CBD5E1; display: flex; flex-direction: column; }
.dly .hm-k span { font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #5B6B80; }
.dly .hm-k b { font-size: 16px; font-family: var(--u-mono); } .dly .hm-k em { font-style: normal; font-size: 11px; color: #6B7A90; }
.dly .hm-k.is-bad { border-left-color: var(--dl-bad); } .dly .hm-k.is-bad b { color: var(--dl-bad); } .dly .hm-k.is-ok { border-left-color: var(--dl-ok); } .dly .hm-k.is-info { border-left-color: var(--dl-emp); }
.dly svg.dl-bridge { width: 100%; height: auto; display: block; }
.dl-bridge .ax-m { stroke: #EEF2F7; } .dl-bridge .ax-t { font-size: 9.5px; font-weight: 800; fill: #6B7A90; }
.dl-bridge .bl { font-size: 12px; font-weight: 800; fill: #0F172A; } .dl-bridge .bn { font-size: 10px; fill: #6B7A90; }
.dl-bridge .bd { fill: #0F172A; } .dl-bridge .bd.end { fill: var(--dl-bad, #C6462B); }
.dl-bridge .bs.pre { fill: #94A3B8; } .dl-bridge .bs.s-EMPLOYER { fill: #4F5BD5; } .dl-bridge .bs.s-CONTRACTOR { fill: #D9822B; } .dl-bridge .bs.s-NEUTRAL { fill: #1BAF7A; } .dl-bridge .bs.s-MIXED { fill: #64748B; }
.dl-bridge .bs.conc { fill: url(#hm-conc); }
.dl-bridge .bv { font-size: 11px; font-weight: 800; font-family: var(--u-mono, monospace); fill: #0F172A; } .dl-bridge .bv.late { fill: var(--dl-bad, #C6462B); } .dl-bridge .bv.early { fill: var(--dl-ok, #188D68); }
.dl-bridge .bc { stroke: #94A3B8; stroke-dasharray: 2 2; }
.dl-bridge .ent { stroke: var(--dl-ok, #188D68); stroke-width: 1.6; stroke-dasharray: 5 3; } .dl-bridge .ent-t { font-size: 10px; font-weight: 700; fill: var(--dl-ok, #188D68); }
.dly .hm-todo { display: flex; flex-direction: column; gap: 5px; overflow: auto; }
.dly .hm-do { display: grid; grid-template-columns: 74px 1fr; grid-template-rows: auto auto; gap: 0 10px; align-items: center; text-align: left; border: 1px solid var(--dl-line); border-left: 4px solid #CBD5E1; background: #fff; border-radius: 9px; padding: 6px 10px; cursor: pointer; font: inherit; font-size: 12px; }
.dly .hm-do > b { grid-row: 1 / 3; font-family: var(--u-mono); font-size: 12px; }
.dly .hm-do em { font-style: normal; font-size: 10.5px; color: #6B7A90; }
.dly .hm-do.is-bad { border-left-color: var(--dl-bad); } .dly .hm-do.is-bad > b { color: var(--dl-bad); } .dly .hm-do.is-warn { border-left-color: #D97706; } .dly .hm-do.is-warn > b { color: #B45309; } .dly .hm-do.is-info { border-left-color: var(--dl-emp); } .dly .hm-do.is-info > b { color: var(--dl-emp); }
.dly .hm-ok { padding: 18px; text-align: center; color: #6B7A90; font-size: 12px; }
.dly svg.dl-lanes { width: 100%; height: auto; display: block; }
.dl-lanes .ax-m { stroke: #EEF2F7; } .dl-lanes .ax-t { font-size: 9.5px; font-weight: 800; fill: #6B7A90; }
.dl-lanes .ln-bg { fill: transparent; stroke: #F1F5F9; } .dl-lanes .ln-t { font-size: 11px; font-weight: 800; }
.dl-lanes .ln-t.s-EMPLOYER { fill: #4F5BD5; } .dl-lanes .ln-t.s-CONTRACTOR { fill: #B8661A; } .dl-lanes .ln-t.s-NEUTRAL { fill: #138A5F; }
.dl-lanes .ln-e { cursor: pointer; } .dl-lanes .ln-e.s-EMPLOYER { fill: #4F5BD5; } .dl-lanes .ln-e.s-CONTRACTOR { fill: #D9822B; } .dl-lanes .ln-e.s-NEUTRAL { fill: #1BAF7A; }
.dl-lanes .ln-dd { stroke: #3B82F6; stroke-width: 1.4; } .dl-lanes .ln-ddt { font-size: 9.5px; font-weight: 800; fill: #3B82F6; }
.upd.dly[data-ws="notices"] .dl-stage { gap: 10px; }

/* ── notices: the lifecycle each claim walks ─────────────────────────── */
.dly .dl-nc .hd { align-items: flex-start; }
.dly .dl-nc .cd { padding-top: 4px; }
.dly .dl-nc .cd em { line-height: 1.2; margin-top: 3px; }
.dly .dl-nc .tt { font-size: 13px; font-weight: 700; color: #1E293B; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.dly .ntk { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 6px; }
.dly .ntk-s { position: relative; display: flex; flex-direction: column; gap: 1px; padding: 18px 8px 0 0; min-width: 0; font-size: 11.5px; color: #334155; }
.dly .ntk-s::before { content: ""; position: absolute; left: 12px; right: 0; top: 6px; height: 3px; border-radius: 2px; background: #E2E8F0; }
.dly .ntk-s:last-child::before { display: none; }
.dly .ntk-s > i { position: absolute; left: 0; top: 0; width: 15px; height: 15px; border-radius: 50%; background: #fff; border: 2.5px solid #CBD5E1; box-sizing: border-box; }
.dly .ntk-s > b { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #64748B; }
.dly .ntk-s > span { font-family: var(--u-mono); font-weight: 700; font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .ntk-s > em { font-style: normal; font-size: 10.5px; color: #6B7A90; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .ntk-s.done > i { background: var(--dl-ok, #188D68); border-color: var(--dl-ok, #188D68); }
.dly .ntk-s.done::before { background: var(--dl-ok, #188D68); opacity: .55; }
.dly .ntk-s.over > i { background: var(--dl-bad, #C6462B); border-color: var(--dl-bad, #C6462B); }
.dly .ntk-s.over > span, .dly .ntk-s.over > em { color: var(--dl-bad, #C6462B); }
.dly .ntk-s.due > i { background: #FDE68A; border-color: #D97706; }
.dly .ntk-s.due > span, .dly .ntk-s.due > em { color: #B45309; }
.dly .ntk-s.todo > i { border-color: #4F5BD5; }
.dly .ntk-s.na { opacity: .5; }
.dly .ntk-s.na > i { border-style: dashed; }
.dly .dl-nc.is-mute { border-left-color: #CBD5E1; background: #FAFBFC; }
.dl-lanes .ln-l { font-size: 9px; font-weight: 700; fill: #475569; font-family: var(--u-mono, monospace); pointer-events: none; }
.dly .dl-nc .ft > select, .dly .dl-nc .ft > input, .dly .dl-nc .ft > button { height: 30px; min-height: 0; font-size: 12px; padding-top: 0; padding-bottom: 0; }
/* claims register: compact controls so the whole row fits */
.dly table.cl .dl-sel.sm, .dly table.cl .dl-in.sm { height: 28px; min-height: 0; padding: 0 6px; font-size: 11.5px; border-radius: 7px; }
.dly table.cl .dl-sel.sm { max-width: 128px; }
.dly table.cl td { padding: 6px 6px; }
.dly table.cl th { padding: 9px 6px; }
.dly table.cl td.ev { min-width: 190px; max-width: 280px; }
.dly table.cl .dl-due { max-width: 128px; }
/* The landing theme (999-ai-planner-landing-theme.css) sets `input, select { min-height: 44px !important }`.
   A bare-element !important beats any class here, so the module's small controls answer it — the same
   answer cost.css gives. Only `.sm` controls, which are meant to sit in a row or a table cell. */
.dly .dl-in.sm, .dly .dl-sel.sm { min-height: 0 !important; }
.dly .dl-nc .ft > .dl-in, .dly .dl-nc .ft > .dl-sel { height: 30px; }
/* ── the event on the programme (reports): before / after from the Studio ── */
.dly .dl-evcbox { margin: 8px 0 12px; border: 1px solid var(--dl-line, #E2E8F0); border-radius: 10px; padding: 6px 8px 8px; background: #fff; break-inside: avoid; }
.dly svg.dl-evc { width: 100%; height: auto; display: block; }
.dl-evc .ax-m { stroke: #E2E8F0; } .dl-evc .ax-t { font-size: 9.5px; font-weight: 800; fill: #6B7A90; letter-spacing: .05em; }
.dl-evc .rb { fill: transparent; } .dl-evc .rb.z { fill: #F8FAFC; }
.dl-evc .rl { font-size: 10.5px; fill: #334155; font-weight: 600; } .dl-evc .rl.evn { font-weight: 800; fill: #0F172A; }
.dl-evc .was { fill: #94A3B8; }
.dl-evc .now.drv { fill: #C6462B; } .dl-evc .now.abs { fill: #E0A33A; } .dl-evc .now.same { fill: #64748B; }
.dl-evc .now.ev.s-EMPLOYER { fill: #4F5BD5; } .dl-evc .now.ev.s-CONTRACTOR { fill: #D9822B; } .dl-evc .now.ev.s-NEUTRAL { fill: #1F9D74; } .dl-evc .now.ev.s-UNKNOWN { fill: #7C8BA1; }
.dl-evc .sh { font-size: 10.5px; font-weight: 800; font-family: var(--u-mono, monospace); } .dl-evc .sh.late { fill: #C6462B; } .dl-evc .sh.abs { fill: #B7791F; } .dl-evc .sh.early { fill: #188D68; } .dl-evc .sh.ev { fill: #4F5BD5; }
.dl-evc .dd { stroke: #2563EB; stroke-width: 1.2; } .dl-evc .ddt { font-size: 9px; font-weight: 800; fill: #2563EB; }
.dl-evc .cmp { stroke-width: 1.6; } .dl-evc .cmp.was { stroke: #64748B; stroke-dasharray: 4 3; } .dl-evc .cmp.now { stroke: #188D68; } .dl-evc .cmp.now.late { stroke: #C6462B; }
.dl-evc .cmt { font-size: 10.5px; font-weight: 800; fill: #C6462B; font-family: var(--u-mono, monospace); } .dl-evc .cmt.was { fill: #64748B; }
.dly .dl-evcl { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; font-size: 10.5px; color: #475569; margin-top: 4px; }
.dly .dl-evcl span { display: inline-flex; align-items: center; gap: 5px; }
.dly .dl-evcl em { font-style: normal; color: #6B7A90; margin-left: auto; }
.dly .dl-evcl .k { display: inline-block; width: 16px; height: 8px; border-radius: 2px; }
.dly .dl-evcl .k.was { height: 4px; background: #94A3B8; } .dly .dl-evcl .k.drv { background: #C6462B; } .dly .dl-evcl .k.abs { background: #E0A33A; }
.dly .dl-evcl .k.ev.s-EMPLOYER { background: #4F5BD5; } .dly .dl-evcl .k.ev.s-CONTRACTOR { background: #D9822B; } .dly .dl-evcl .k.ev.s-NEUTRAL { background: #1F9D74; } .dly .dl-evcl .k.ev.s-UNKNOWN { background: #7C8BA1; }
.dly .dl-evcl .k.ln { width: 2px; height: 12px; border-radius: 0; } .dly .dl-evcl .k.ln.was { background: repeating-linear-gradient(#64748B 0 3px, transparent 3px 5px); } .dly .dl-evcl .k.ln.now { background: #C6462B; }
/* charts in a report are printed whole */
.dly .dl-rep .dl-dlbox, .dly.print .dl-dlbox { max-height: none; overflow: visible; }
.dly .dl-rep .dl-rchart { margin: 8px 0 12px; border: 1px solid var(--dl-line, #E2E8F0); border-radius: 10px; padding: 8px 10px; background: #fff; break-inside: avoid; }
.dly .dl-rep .dl-rchart svg { width: 100%; height: auto; display: block; }

/* ══ THE CLAIMS — one delay analysis each ══════════════════════════════ */
.dly .da-kpis { flex: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 0; border: 1px solid var(--dl-line); border-radius: 12px; background: #fff; overflow: hidden; }
.dly .da-k { display: flex; flex-direction: column; gap: 2px; padding: 10px 14px; border-right: 1px solid #EEF2F7; min-width: 0; position: relative; }
.dly .da-k:last-child { border-right: 0; }
.dly .da-k::before { content: ""; position: absolute; left: 14px; top: 0; width: 22px; height: 3px; border-radius: 0 0 3px 3px; background: #CBD5E1; }
.dly .da-k.emp::before { background: var(--dl-emp); } .dly .da-k.is-ok::before { background: var(--dl-ok); } .dly .da-k.conc::before { background: #6D3FC0; } .dly .da-k.is-bad::before { background: var(--dl-bad); } .dly .da-k.is-warn::before { background: #D97706; }
.dly .da-k > span { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .da-k > b { font-family: var(--u-mono); font-size: 15px; font-weight: 800; color: #0F172A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .da-k.emp > b { color: var(--dl-emp); } .dly .da-k.is-bad > b { color: var(--dl-bad); }
.dly .da-k > em { font-style: normal; font-size: 10.5px; color: #7C8BA1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .da-loose { flex: none; display: flex; align-items: center; gap: 12px; padding: 9px 14px; border: 1px dashed #F59E0B; background: #FFFBEB; border-radius: 10px; font-size: 12px; color: #78350F; }
.dly .da-loose b { white-space: nowrap; } .dly .da-loose span { flex: 1; min-width: 0; }
.dly .da-h, .dly .da-m { display: grid; grid-template-columns: 84px minmax(240px, 2.4fr) 92px 150px minmax(150px, 1.3fr) 96px 92px minmax(170px, 1.3fr) 150px; gap: 10px; align-items: center; padding: 0 14px; }
.dly .da-h { position: sticky; top: 0; z-index: 2; background: #F4F7FB; min-height: 32px; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #5B6B80; border-bottom: 1px solid var(--dl-line); }
.dly .da-h .n, .dly .da-m .n { text-align: right; justify-content: flex-end; }
.dly .da-r { border-bottom: 1px solid #EEF2F7; }
.dly .da-r.closed { opacity: .55; }
.dly .da-m { width: 100%; min-height: 58px; border: 0; background: transparent; text-align: left; font: inherit; font-size: 12.5px; cursor: pointer; color: var(--dl-ink); padding-top: 8px; padding-bottom: 8px; }
.dly .da-m:hover { background: #F7FAFE; } .dly .da-r.open > .da-m { background: #F1F5FC; }
.dly .da-m > span { min-width: 0; }
.dly .da-m .no { display: flex; align-items: center; gap: 5px; } .dly .da-m .no b { font-size: 12.5px; color: #1E3A8A; }
.dly .da-m .car { font-style: normal; color: #94A3B8; width: 10px; }
.dly .da-m .ti { display: flex; flex-direction: column; gap: 3px; }
.dly .da-m .ti > b { font-size: 13px; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .da-idl { display: flex; flex-wrap: wrap; gap: 3px 0; font-size: 10.5px; color: #64748B; }
.dly .da-idl > b { font-weight: 800; color: #334155; background: #EEF2FF; border-radius: 4px; padding: 0 5px; margin-right: 6px; font-size: 10px; letter-spacing: .03em; }
.dly .da-idl > i { font-style: normal; } .dly .da-idl > i + i::before { content: "·"; margin: 0 5px; color: #CBD5E1; }
.dly .da-m .evs { display: flex; gap: 4px; }
.dly .da-m .ch { font-style: normal; font-family: var(--u-mono); font-size: 11px; font-weight: 800; color: #fff; min-width: 20px; height: 20px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; padding: 0 5px; }
.dly .ch.s-EMPLOYER { background: var(--dl-emp); } .dly .ch.s-CONTRACTOR { background: var(--dl-con); } .dly .ch.s-NEUTRAL { background: var(--dl-neu); } .dly .ch.s-UNKNOWN { background: #94A3B8; }
.dly .da-m .cmp, .dly .da-m .eot { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.dly .da-m .cmp b, .dly .da-m .eot b { font-size: 14px; font-weight: 800; }
.dly .da-m .eot b { color: var(--dl-emp); }
.dly .da-m em { font-style: normal; font-size: 10.5px; color: #7C8BA1; }
.dly .da-m .cmp em { white-space: nowrap; }
.dly .da-m .late { color: var(--dl-bad); }
.dly .da-m em.rec { color: #188D68; } .dly .da-m em.rec.drift { color: #B45309; font-weight: 700; }
.dly .da-m .nt { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.dly .mu, .dly em.mu { color: #94A3B8; font-style: normal; }
/* who caused it: one bar, the four parts */
.dly .da-split { display: flex; flex-direction: column; gap: 6px; width: 100%; }
.dly .da-split.none { font-size: 11px; color: #94A3B8; }
.dly .da-split .da-bar { display: flex; gap: 2px; height: 16px; border-radius: 4px; overflow: hidden; }
.dly .da-split.big .da-bar { height: 24px; }
.dly .da-split .da-bar i { font-style: normal; display: flex; align-items: center; justify-content: center; min-width: 6px; font-family: var(--u-mono); font-size: 10.5px; font-weight: 800; color: #fff; }
.dly .da-split i.s-EMPLOYER, .dly .sq.s-EMPLOYER { background: var(--dl-emp); } .dly .da-split i.s-CONTRACTOR, .dly .sq.s-CONTRACTOR { background: var(--dl-con); } .dly .da-split i.s-NEUTRAL, .dly .sq.s-NEUTRAL { background: var(--dl-neu); }
.dly .da-split i.conc, .dly .sq.conc { background: repeating-linear-gradient(135deg, var(--dl-emp) 0 5px, var(--dl-con) 5px 10px); }
.dly .da-split .da-lg { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 11.5px; color: #475569; }
.dly .da-split .da-lg span { display: inline-flex; align-items: center; gap: 5px; } .dly .da-split .da-lg i { width: 11px; height: 11px; border-radius: 3px; min-width: 0; }
.dly .sq { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 7px; vertical-align: -1px; }
/* the opened analysis */
.dly .da-d { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr) minmax(0, 1fr); gap: 14px 22px; padding: 12px 18px 14px 36px; background: #FBFCFE; border-top: 1px solid #E8EEF6; }
.dly .da-sh { display: flex; align-items: baseline; gap: 8px; margin: 2px 0 6px; } .dly .da-sh b { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #334155; } .dly .da-sh span { font-size: 11px; color: #7C8BA1; }
.dly .da-evs .da-sh + .da-split, .dly .da-evs .da-et + .da-sh { margin-top: 12px; }
.dly table.da-et, .dly table.da-ent { width: 100%; border-collapse: collapse; font-size: 12px; background: #fff; border: 1px solid #E8EEF6; border-radius: 8px; overflow: hidden; }
.dly table.da-et th, .dly table.da-ent th { text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #64748B; padding: 6px 8px; background: #F7F9FC; border-bottom: 1px solid #E8EEF6; white-space: nowrap; }
.dly table.da-et td, .dly table.da-ent td { padding: 6px 8px; border-bottom: 1px solid #F1F5F9; vertical-align: middle; }
.dly table.da-et .num, .dly table.da-ent .num { text-align: right; }
.dly table.da-et .t { font-weight: 700; display: block; } .dly table.da-et .late { color: var(--dl-bad); font-weight: 800; }
.dly table.da-et tr.s-EMPLOYER td:first-child { box-shadow: inset 3px 0 0 var(--dl-emp); } .dly table.da-et tr.s-CONTRACTOR td:first-child { box-shadow: inset 3px 0 0 var(--dl-con); } .dly table.da-et tr.s-NEUTRAL td:first-child { box-shadow: inset 3px 0 0 var(--dl-neu); }
.dly table.da-ent tr.tot td { font-weight: 800; background: #F1F5FF; color: #1E3A8A; border-bottom: 0; }
.dly .da-tr { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 11px; color: #64748B; } .dly .da-tr .dl-sel { flex: 1; min-width: 0; }
.dly .da-note { margin: 6px 0 0; font-size: 11px; color: #64748B; line-height: 1.45; }
.dly .da-form { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; }
.dly .da-form label { display: flex; flex-direction: column; gap: 2px; font-size: 10.5px; font-weight: 700; color: #64748B; }
.dly .da-form label:first-child { grid-column: 1 / -1; }
.dly .da-form .dl-in.sm, .dly .da-form .dl-sel.sm { height: 28px; padding: 0 7px; font-size: 12px; }
.dly .da-dl { display: flex; flex-direction: column; gap: 2px; margin-top: 8px; font-size: 11.5px; color: #334155; }
.dly .da-d .lg-act { grid-column: 1 / -1; border-top: 1px dashed #E2E8F0; padding-top: 10px; }
.dly .da-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 60px 20px; text-align: center; color: #475569; }
.dly .da-empty b { font-size: 15px; color: #0F172A; } .dly .da-empty span { max-width: 560px; font-size: 12.5px; line-height: 1.5; }
@container (max-width: 1400px) {
  .dly .da-h, .dly .da-m { grid-template-columns: 70px minmax(190px, 2fr) 72px 136px minmax(110px, 1fr) 80px 70px minmax(140px, 1.1fr) 118px; gap: 8px; }
  .dly .da-d { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .dly .da-evs { grid-column: 1 / -1; }
}
/* the Studio: the delay analysis it has open */
.dly .st-dachip { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border: 1px solid #C7D2FE; background: #EEF2FF; border-radius: 8px; font: inherit; font-size: 12px; cursor: pointer; max-width: 240px; flex: none; }
.dly .st-dachip b { color: #1E3A8A; } .dly .st-dachip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #334155; font-weight: 600; }
.dly .pk-da { display: flex; align-items: flex-end; gap: 12px; margin: 4px 0 14px; flex-wrap: wrap; }
.dly .pk-da label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; font-weight: 700; color: #64748B; min-width: 280px; }
.dly .pk-open { display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; margin: 2px 0 16px; }
.dly .pk-open > b { flex-basis: 100%; font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #334155; }
.dly .pk-open > button:not(.dl-b) { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 8px 12px; border: 1px solid var(--dl-line); background: #fff; border-radius: 10px; font: inherit; font-size: 12px; cursor: pointer; min-width: 200px; text-align: left; }
.dly .pk-open > button:not(.dl-b):hover { border-color: #A5B4FC; background: #F8FAFF; }
.dly .pk-open > button b { color: #1E3A8A; } .dly .pk-open > button span { font-weight: 700; } .dly .pk-open > button em { font-style: normal; font-size: 10.5px; color: #7C8BA1; }
.dly .st-dachip { max-width: 190px; } .dly .st-dachip b { white-space: nowrap; }

/* ══ NOTICES — per claim, compact ═════════════════════════════════════ */
.dly .nt3 { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 440px; gap: 10px; }
.dly .nt3-main { min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.dly .nt3-dl { flex: none; background: #fff; border: 1px solid var(--dl-line); border-radius: 10px; padding: 6px 10px 4px; max-height: 190px; overflow-y: auto; }
.dly .nt3-dlh { display: flex; align-items: center; gap: 14px; font-size: 10.5px; color: #64748B; margin-bottom: 2px; }
.dly .nt3-dlh b { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #334155; }
.dly .nt3-dlh span { display: inline-flex; align-items: center; gap: 5px; }
.dly .nt3-dlh .k { display: inline-block; width: 14px; height: 7px; border-radius: 4px; }
.dly .nt3-dlh .k.np { background: #4F5BD5; } .dly .nt3-dlh .k.cp { background: #C7D2FE; height: 4px; } .dly .nt3-dlh .k.done { background: #188D68; } .dly .nt3-dlh .k.over { background: #C6462B; }
.dly svg.nt3-dls { width: 100%; height: auto; display: block; }
.nt3-dls .ax-m { stroke: #EEF2F7; } .nt3-dls .ax-t { font-size: 9px; font-weight: 800; fill: #94A3B8; letter-spacing: .05em; }
.nt3-dls .lb { font-size: 10px; font-weight: 800; fill: #334155; font-family: var(--u-mono, monospace); }
.nt3-dls .np { fill: #4F5BD5; } .nt3-dls .np.done { fill: #188D68; } .nt3-dls .np.over { fill: #C6462B; }
.nt3-dls .cp { fill: #C7D2FE; }
.nt3-dls .mk { fill: #475569; } .nt3-dls .mk.done { fill: #188D68; } .nt3-dls .mk.over { fill: #C6462B; }
.nt3-dls .today { stroke: #0F172A; stroke-width: 1.2; stroke-dasharray: 3 3; } .nt3-dls .today-t { font-size: 9px; font-weight: 800; fill: #0F172A; }
.dly .nt3-t { flex: 1 1 auto; min-height: 0; overflow: auto; background: #fff; border: 1px solid var(--dl-line); border-radius: 10px; }
.dly .nt3-h, .dly .nt3-r { display: grid; grid-template-columns: 74px minmax(200px, 1fr) 120px 150px 150px; gap: 12px; align-items: center; padding: 0 12px; }
.dly .nt3-h { position: sticky; top: 0; z-index: 1; min-height: 30px; background: #F7F9FC; border-bottom: 1px solid #E8EEF6; font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; }
.dly .nt3-r { width: 100%; min-height: 50px; border: 0; border-bottom: 1px solid #F1F5F9; background: #fff; font: inherit; text-align: left; cursor: pointer; border-left: 3px solid transparent; }
.dly .nt3-r:hover { background: #F8FAFD; } .dly .nt3-r.on { background: #F1F5FF; border-left-color: #4F5BD5; }
.dly .nt3-r .cd { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 58px; height: 36px; border-radius: 8px; background: #F1F5F9; line-height: 1; }
.dly .nt3-r .cd b { font-family: var(--u-mono); font-size: 15px; font-weight: 800; color: #334155; }
.dly .nt3-r .cd em { font-style: normal; font-size: 8.5px; font-weight: 700; color: #64748B; text-transform: uppercase; letter-spacing: .04em; margin-top: 3px; }
.dly .nt3-r .cd.over { background: #FDECEA; } .dly .nt3-r .cd.over b, .dly .nt3-r .cd.over em { color: #B42318; }
.dly .nt3-r .cd.due { background: #FEF3C7; } .dly .nt3-r .cd.due b, .dly .nt3-r .cd.due em { color: #92400E; }
.dly .nt3-r .cd.fine { background: #EEF2FF; } .dly .nt3-r .cd.fine b { color: #3730A3; }
.dly .nt3-r .cd.done { background: #E7F6EF; } .dly .nt3-r .cd.done b, .dly .nt3-r .cd.done em { color: #146C4F; }
.dly .nt3-r .ti { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dly .nt3-r .ti b { font-size: 12.5px; font-weight: 700; color: #0F172A; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .nt3-r .ti b .mono { color: #1E3A8A; font-weight: 800; margin-right: 4px; }
.dly .nt3-r .ti em, .dly .nt3-r .nc em { font-style: normal; font-size: 10.5px; color: #7C8BA1; }
.dly .nt3-r .nc { display: flex; flex-direction: column; gap: 1px; }
.dly .nt3-r .nc .d { font-size: 12px; font-weight: 700; color: #1E293B; }
.dly .nt3-r .nc em.over { color: #B42318; font-weight: 700; } .dly .nt3-r .nc em.due { color: #B45309; font-weight: 700; }
.dly .nt3-steps { display: flex; align-items: center; gap: 0; }
.dly .nt3-steps i { width: 12px; height: 12px; border-radius: 50%; border: 2px solid #CBD5E1; background: #fff; box-sizing: border-box; position: relative; }
.dly .nt3-steps i + i { margin-left: 16px; }
.dly .nt3-steps i + i::before { content: ""; position: absolute; right: 12px; top: 3px; width: 16px; height: 2px; background: #E2E8F0; }
.dly .nt3-steps i.done { background: #188D68; border-color: #188D68; } .dly .nt3-steps i.over { background: #C6462B; border-color: #C6462B; }
.dly .nt3-steps i.due { background: #FDE68A; border-color: #D97706; } .dly .nt3-steps i.todo { border-color: #4F5BD5; } .dly .nt3-steps i.na { border-style: dashed; opacity: .6; }
.dly .nt3-side { min-height: 0; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--dl-line); border-radius: 10px; overflow: hidden; }
.dly .nt3-sh { display: flex; align-items: baseline; gap: 8px; padding: 10px 12px 6px; border-bottom: 1px solid #F1F5F9; }
.dly .nt3-sh b { color: #1E3A8A; font-size: 12.5px; } .dly .nt3-sh span { font-size: 12.5px; font-weight: 700; color: #0F172A; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .nt3-rec { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 8px; padding: 8px 12px 4px; }
.dly .nt3-rec label { display: flex; flex-direction: column; gap: 2px; font-size: 10px; font-weight: 700; color: #64748B; }
.dly .nt3-rec .dl-in.sm, .dly .nt3-rec .dl-sel.sm { height: 28px; padding: 0 7px; font-size: 12px; }
.dly .nt3-rule { padding: 2px 12px 8px; font-size: 10.5px; color: #64748B; border-bottom: 1px solid #F1F5F9; }
.dly .nt3-gen { display: flex; align-items: center; gap: 6px; padding: 8px 12px; }
.dly .nt3-warn { margin: 0 12px 6px; padding: 6px 9px; border-radius: 7px; background: #FFF7ED; color: #9A3412; font-size: 11px; line-height: 1.4; }
.dly .nt3-doc { flex: 1 1 auto; min-height: 0; overflow: auto; margin: 0 12px 12px; padding: 12px 14px; font-size: 11.5px; line-height: 1.55; background: #FBFCFE; border: 1px solid #EEF2F7; border-radius: 8px; white-space: pre-wrap; }
@container (max-width: 1300px) { .dly .nt3 { grid-template-columns: minmax(0, 1fr) 360px; } .dly .nt3-h, .dly .nt3-r { grid-template-columns: 66px minmax(160px, 1fr) 110px 120px 120px; gap: 8px; } }

/* ══ THE OVERVIEW ═════════════════════════════════════════════════════ */
.dly .dov { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0, 1.9fr) minmax(0, 1fr); grid-template-rows: auto auto minmax(0, 1fr); gap: 10px; }
.dly .dov-tiles { grid-column: 1 / -1; display: grid; grid-template-columns: 1.35fr 1fr 1fr 1fr 1.15fr; gap: 10px; }
.dly .dov-t { display: flex; flex-direction: column; gap: 3px; padding: 12px 16px 12px; background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; text-align: left; font: inherit; min-width: 0; position: relative; overflow: hidden; }
.dly button.dov-t { cursor: pointer; } .dly button.dov-t:hover { border-color: #A5B4FC; }
.dly .dov-t::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #E2E8F0; }
.dly .dov-t.is-bad::after { background: var(--dl-bad); } .dly .dov-t.is-ok::after { background: var(--dl-ok); } .dly .dov-t.emp::after { background: var(--dl-emp); } .dly .dov-t.is-warn::after { background: #D97706; }
.dly .dov-t .k { font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #64748B; }
.dly .dov-t b { font-family: var(--u-mono); font-size: 24px; font-weight: 800; color: #0F172A; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .dov-t.is-bad b { color: var(--dl-bad); } .dly .dov-t.emp b { color: var(--dl-emp); } .dly .dov-t.is-warn b { color: #B45309; }
.dly .dov-t em { font-style: normal; font-size: 11px; color: #64748B; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dly .dov-t em i { font-style: normal; font-weight: 800; font-family: var(--u-mono); } .dly .dov-t em i.late { color: var(--dl-bad); } .dly .dov-t em i.early { color: var(--dl-ok); }
.dly .dov-card { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; display: flex; flex-direction: column; min-height: 0; min-width: 0; }
.dly .dov-h { display: flex; align-items: baseline; gap: 10px; padding: 11px 16px 6px; flex: none; }
.dly .dov-h b { font-size: 13px; font-weight: 800; color: #0F172A; } .dly .dov-h > span { font-size: 11.5px; color: #7C8BA1; }
.dly .dov-h .dl-b { align-self: center; }
.dly .dov-where { grid-column: 1; }
.dly svg.dov-pos { width: 100%; height: auto; display: block; padding: 0 8px; box-sizing: border-box; }
.dov-pos .ax-m { stroke: #F1F5F9; } .dov-pos .ax-t { font-size: 10px; font-weight: 800; fill: #94A3B8; letter-spacing: .05em; }
.dov-pos .trk { fill: #F1F5F9; }
.dov-pos .sg.g { fill: #188D68; } .dov-pos .sg.p { fill: #4F5BD5; } .dov-pos .sg.d { fill: #A5B4FC; } .dov-pos .sg.u { fill: #C6462B; }
.dov-pos .sv { font-size: 11px; font-weight: 800; fill: #fff; font-family: var(--u-mono, monospace); pointer-events: none; }
.dov-pos .mkl { stroke: #0F172A; stroke-width: 1.2; stroke-dasharray: 3 3; } .dov-pos .mkl.f { stroke: #C6462B; }
.dov-pos .mk.c { fill: #0F172A; } .dov-pos .mk.f { fill: #C6462B; }
.dov-pos .ml { font-size: 10.5px; font-weight: 700; fill: #64748B; } .dov-pos .md { font-size: 13px; font-weight: 800; fill: #0F172A; font-family: var(--u-mono, monospace); } .dov-pos .md.f { fill: #C6462B; }
.dly .dov-lg { display: flex; flex-wrap: wrap; gap: 6px 18px; padding: 2px 18px 12px; font-size: 11.5px; color: #475569; }
.dly .dov-lg span { display: inline-flex; align-items: center; gap: 6px; } .dly .dov-lg b { font-family: var(--u-mono); color: #0F172A; }
.dly .dov-lg i { width: 12px; height: 12px; border-radius: 3px; } .dly .dov-lg i.g { background: #188D68; } .dly .dov-lg i.p { background: #4F5BD5; } .dly .dov-lg i.d { background: #A5B4FC; } .dly .dov-lg i.u { background: #C6462B; }
.dly .dov-todo { grid-column: 2; grid-row: 2; max-height: 300px; }
.dly .dov-dl { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 6px; padding: 4px 12px 12px; }
.dly .dov-do { display: grid; grid-template-columns: 70px 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; text-align: left; border: 1px solid #EEF2F7; background: #FBFCFE; border-radius: 9px; padding: 7px 10px; cursor: pointer; font: inherit; font-size: 12px; color: #1E293B; flex: none; }
.dly .dov-do:hover { border-color: #C7D2FE; background: #fff; }
.dly .dov-do > b { grid-row: 1 / 3; font-size: 12px; text-align: center; padding: 5px 0; border-radius: 6px; background: #F1F5F9; color: #334155; }
.dly .dov-do.over > b { background: #FDECEA; color: #B42318; } .dly .dov-do.due > b { background: #FEF3C7; color: #92400E; } .dly .dov-do.is-info > b { background: #EEF2FF; color: #3730A3; }
.dly .dov-do > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dly .dov-do em { font-style: normal; font-size: 10.5px; color: #7C8BA1; }
.dly .dov-claims { grid-column: 1; grid-row: 3; }
.dly .dov-cl { flex: 1 1 auto; min-height: 0; padding: 0 8px 4px; }
.dly .dov-c { display: grid; grid-template-columns: 66px minmax(160px, 1.4fr) minmax(140px, 1.2fr) 70px 80px 120px; gap: 12px; align-items: center; width: 100%; padding: 8px 8px; border: 0; border-bottom: 1px solid #F1F5F9; background: none; font: inherit; text-align: left; cursor: pointer; }
.dly .dov-c:hover { background: #F8FAFD; }
.dly .dov-c .id { font-weight: 800; color: #1E3A8A; font-size: 12px; }
.dly .dov-c .ti { display: flex; flex-direction: column; gap: 1px; min-width: 0; } .dly .dov-c .ti b { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dly .dov-c .ti em, .dly .dov-c .n em { font-style: normal; font-size: 10.5px; color: #7C8BA1; }
.dly .dov-c .n { display: flex; flex-direction: column; align-items: flex-end; } .dly .dov-c .n b { font-size: 13px; color: #0F172A; } .dly .dov-c .n:nth-child(4) b { color: var(--dl-emp); }
.dly .dov-c .nx { font-size: 11px; font-weight: 700; color: #475569; text-align: right; } .dly .dov-c .nx.over { color: #B42318; } .dly .dov-c .nx.due { color: #B45309; }
.dly .dov-clg { display: flex; gap: 14px; padding: 6px 16px 10px; font-size: 10.5px; color: #64748B; border-top: 1px solid #F1F5F9; }
.dly .dov-clg span { display: inline-flex; align-items: center; gap: 5px; } .dly .dov-clg i { width: 10px; height: 10px; border-radius: 2px; }
.dly .dov-clg i.s-EMPLOYER { background: var(--dl-emp); } .dly .dov-clg i.s-CONTRACTOR { background: var(--dl-con); } .dly .dov-clg i.s-NEUTRAL { background: var(--dl-neu); } .dly .dov-clg i.conc { background: repeating-linear-gradient(135deg, var(--dl-emp) 0 3px, var(--dl-con) 3px 6px); }
.dly .dov-mv { grid-column: 2; grid-row: 3; }
.dly svg.dov-drift { width: 100%; height: auto; display: block; padding: 0 10px 8px; box-sizing: border-box; }
.dov-drift .gl { stroke: #F1F5F9; } .dov-drift .gt { font-size: 10px; fill: #94A3B8; font-family: var(--u-mono, monospace); }
.dov-drift .area { fill: rgba(198, 70, 43, .08); } .dov-drift .ln { fill: none; stroke: #C6462B; stroke-width: 2; }
.dov-drift .pt { fill: #fff; stroke: #C6462B; stroke-width: 2; } .dov-drift .pt.bare { fill: #FDE68A; stroke: #B45309; }
.dov-drift .xl { font-size: 10.5px; font-weight: 800; fill: #334155; } .dov-drift .xd { font-size: 9.5px; fill: #94A3B8; }
.dov-drift .vl { font-size: 10.5px; font-weight: 800; fill: #C6462B; font-family: var(--u-mono, monospace); }
.dov-drift .eot { stroke: #4F5BD5; stroke-dasharray: 5 4; } .dov-drift .eott { font-size: 10px; font-weight: 800; fill: #4F5BD5; }
.dly .dov-none { padding: 18px 16px; font-size: 12px; color: #7C8BA1; line-height: 1.5; }
.dly .da-ai { grid-column: 1 / -1; } .dly .da-ai .hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .dly .da-aio { margin-top: 6px; }

/* ══ REPORTS V2 ═══════════════════════════════════════════════════════ */
.dly .r2 { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: 300px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); gap: 10px; }
.dly .r2-side { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 12px; display: flex; flex-direction: column; gap: 8px; min-height: 0; overflow: auto; overscroll-behavior: contain; }
.dly .r2-side > * { flex: none; }
.dly .r2-sh { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #64748B; }
.dly .r2-sh em { font-style: normal; color: #94A3B8; margin-left: 4px; }
.dly .r2-kinds { display: flex; flex-direction: column; gap: 4px; }
.dly .r2-k { display: flex; flex-direction: column; gap: 1px; text-align: left; font: inherit; border: 1px solid #E5EAF1; background: #FBFCFE; border-radius: 8px; padding: 7px 10px; cursor: pointer; }
.dly .r2-k b { font-size: 12.5px; color: #0F172A; } .dly .r2-k em { font-style: normal; font-size: 10.5px; color: #7C8BA1; line-height: 1.3; }
.dly .r2-k:hover { border-color: #B8C6DB; } .dly .r2-k.on { border-color: #1F3A5F; background: #F1F4FA; box-shadow: inset 3px 0 0 #1F3A5F; }
.dly .r2-l { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #64748B; margin-top: 4px; }
.dly .r2-none, .dly .r2-empty { font-size: 12px; color: #7C8BA1; padding: 8px 0; } .dly .r2-empty { padding: 60px 30px; text-align: center; }
.dly .r2-ready { border: 1px solid #E5EAF1; border-left: 4px solid #94A3B8; border-radius: 8px; padding: 8px 10px; display: flex; flex-direction: column; gap: 5px; background: #FBFCFE; }
.dly .r2-ready.is-ok { border-left-color: #188D68; } .dly .r2-ready.is-warn { border-left-color: #B45309; } .dly .r2-ready.is-bad { border-left-color: #C6462B; }
.dly .r2-ready > span { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; color: #64748B; }
.dly .r2-ready > b { font-size: 12.5px; color: #0F172A; } .dly .r2-ready.is-bad > b { color: #B42318; } .dly .r2-ready.is-warn > b { color: #92400E; }
.dly .r2-ready > em { font-style: normal; font-size: 11px; color: #188D68; }
.dly .r2-gates { display: flex; gap: 3px; }
.dly .r2-gates i { font-style: normal; width: 21px; height: 21px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; font-size: 10.5px; font-weight: 800; color: #fff; background: #94A3B8; cursor: help; }
.dly .r2-gates i.is-ok { background: #188D68; } .dly .r2-gates i.is-warn { background: #D97706; } .dly .r2-gates i.is-bad { background: #C6462B; }
.dly .r2-more { align-self: flex-start; font: inherit; font-size: 11px; font-weight: 700; color: #1F3A5F; background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; }
.dly .r2-miss { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 3px; max-height: 220px; overflow: auto; }
.dly .r2-miss li { font-size: 11px; color: #334155; line-height: 1.35; display: flex; gap: 6px; } .dly .r2-miss li b { flex: none; width: 14px; color: #64748B; }
.dly .r2-miss li.is-bad { color: #B42318; } .dly .r2-miss li.is-warn { color: #7C4A03; }
.dly .r2-meta { border: 1px solid #E5EAF1; border-radius: 8px; }
.dly .r2-mh { width: 100%; display: flex; justify-content: space-between; font: inherit; font-size: 11.5px; font-weight: 800; color: #1E293B; background: #FBFCFE; border: 0; border-radius: 8px; padding: 8px 10px; cursor: pointer; }
.dly .r2-mh i { font-style: normal; color: #94A3B8; }
.dly .r2-mf { display: flex; flex-direction: column; gap: 5px; padding: 6px 10px 10px; }
.dly .r2-mf label { display: flex; flex-direction: column; gap: 2px; font-size: 10px; font-weight: 700; color: #64748B; }
.dly .r2-mf .dl-in.sm { height: 27px; padding: 0 7px; font-size: 12px; }
.dly .r2-acts { display: flex; flex-direction: column; gap: 6px; margin-top: auto; padding-top: 6px; }
.dly .r2-main { min-width: 0; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.dly .r2-strip { flex: none; display: grid; grid-template-columns: 1.5fr .9fr 1.2fr 1.3fr repeat(5, minmax(70px, .55fr)); background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; overflow: hidden; }
.dly .r2-strip > div { display: flex; flex-direction: column; gap: 1px; padding: 8px 12px; border-right: 1px solid #EEF2F7; min-width: 0; }
.dly .r2-strip > div:last-child { border-right: 0; }
.dly .r2-strip span { font-size: 9.5px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #64748B; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .r2-strip .n { padding: 8px 6px 8px 9px; }
.dly .r2-strip .n span { letter-spacing: .02em; }
.dly .r2-strip b { font-size: 13px; color: #0F172A; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .dly .r2-strip b.is-ok { color: #146C4F; }
.dly .r2-strip em { font-style: normal; font-size: 10.5px; color: #7C8BA1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dly .r2-strip .n b { font-family: var(--u-mono); font-size: 15px; }
.dly .r2-tabs { flex: none; display: flex; align-items: center; gap: 4px; min-width: 0; }
.dly .r2-tabs > .dl-seg { flex: none; white-space: nowrap; }
.dly .r2-nav { display: flex; gap: 3px; overflow-x: auto; flex: 1 1 auto; min-width: 0; max-width: 46%; }
.dly .r2-nav button { flex: none; font: inherit; font-size: 10.5px; font-weight: 800; color: #1F3A5F; background: #fff; border: 1px solid #DCE3EC; border-radius: 5px; padding: 3px 7px; cursor: pointer; }
.dly .r2-nav button:hover { background: #EEF2F8; }
.dly .r2-pages { flex: 1 1 auto; min-height: 0; overflow: auto; background: #D5DBE3; border-radius: 12px; padding: 18px; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.dly .r2-page { flex: none; width: calc(760px * var(--r2z, 1)); max-width: none; background: #fff; box-shadow: 0 2px 10px rgba(15, 23, 42, .18); }
.dly .r2-page svg { display: block; width: 100%; height: auto; }
.dly .r2-outline, .dly .r2-figs, .dly .r2-src { flex: 1 1 auto; min-height: 0; overflow: auto; background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 14px 18px; }
.dly table.r2-t { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 16px; }
.dly table.r2-t th { text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; background: #F4F6F9; padding: 6px 8px; border-bottom: 1px solid #1F3A5F; }
.dly table.r2-t td { padding: 5px 8px; border-bottom: 1px solid #EEF2F7; vertical-align: top; color: #1E293B; }
.dly table.r2-t .n { text-align: right; } .dly table.r2-t tr.l1 td { font-weight: 700; } .dly table.r2-t tr.l2 td:nth-child(2) { padding-left: 22px; }
.dly table.r2-t a { color: #1F3A5F; cursor: pointer; text-decoration: none; } .dly table.r2-t a:hover { text-decoration: underline; }
.dly table.r2-t tr.miss td { color: #B42318; background: #FDF3F1; } .dly table.r2-t tr.basis td { background: #F3F1FC; }
.dly table.r2-t tr.q-HIGH td:nth-child(2) { color: #146C4F; font-weight: 800; } .dly table.r2-t tr.q-MEDIUM td:nth-child(2) { color: #92400E; font-weight: 800; } .dly table.r2-t tr.q-LOW td:nth-child(2) { color: #B42318; font-weight: 800; }
.dly .r2-figs { display: flex; flex-direction: column; gap: 18px; }
.dly .r2-fig { border: 1px solid #E5EAF1; border-radius: 10px; padding: 12px 14px; }
.dly .r2-fig.is-bad { color: #B42318; }
.dly .r2-fh { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; } .dly .r2-fh b { color: #1F3A5F; } .dly .r2-fh span { font-weight: 700; flex: 1; } .dly .r2-fh em { font-style: normal; font-size: 11px; color: #94A3B8; }
.dly .r2-fsvg svg { width: 100%; height: auto; display: block; }
.dly .r2-fig p { margin: 8px 0 4px; font-size: 12px; line-height: 1.5; color: #334155; }
.dly .r2-fm { display: flex; gap: 14px; flex-wrap: wrap; font-size: 10.5px; color: #7C8BA1; }
.dly .r2-sec { margin-bottom: 8px; }

/* ═══ Reports V2.1 — the editor, the review centre, submission ═══════════ */
.dly .r2.r2-wide { grid-template-columns: minmax(0, 1fr); }
.dly .r2-ready { text-align: left; font: inherit; cursor: pointer; }
.dly .r2-ready > em { color: #64748B; }
.dly .r2-n { font-style: normal; font-size: 10px; font-weight: 800; color: #fff; background: #B45309; border-radius: 8px; padding: 0 5px; margin-left: 3px; }
.dly .r2-n.is-bad { background: #C6462B; }
.dly .r2-banner { flex: none; display: flex; gap: 10px; align-items: baseline; background: #F1F4FA; border: 1px solid #D8E0EC; border-left: 4px solid #1F3A5F; border-radius: 10px; padding: 8px 12px; font-size: 12px; color: #334155; }
.dly .r2-banner b { font-size: 10.5px; letter-spacing: .08em; color: #1F3A5F; }
.dly .r2-banner.sub { border-left-color: #188D68; background: #EFF8F4; }

/* the document bar */
.dly .ed-bar { flex: none; display: flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 7px 10px; position: relative; flex-wrap: wrap; }
.dly .ed-id { display: flex; flex-direction: column; min-width: 0; }
.dly .ed-id b { font-size: 13.5px; color: #0F172A; } .dly .ed-id span { font-size: 11px; color: #64748B; font-family: var(--u-mono); }
.dly .ed-pill { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; border-radius: 10px; padding: 3px 8px; background: #EEF2F7; color: #334155; white-space: nowrap; }
.dly .ed-pill.sm { font-size: 9px; padding: 1px 6px; margin-left: 6px; }
.dly .ed-pill.st-draft { background: #EEF2F7; color: #334155; } .dly .ed-pill.st-in_review { background: #FFF4E5; color: #92400E; }
.dly .ed-pill.st-ready { background: #E8F5EF; color: #146C4F; } .dly .ed-pill.st-submitted { background: #1F3A5F; color: #fff; } .dly .ed-pill.st-superseded { background: #E5E7EB; color: #6B7280; }
.dly .ed-pill.st-pending { background: #FFF4E5; color: #92400E; } .dly .ed-pill.st-accepted, .dly .ed-pill.st-edited { background: #E8F5EF; color: #146C4F; } .dly .ed-pill.st-rejected, .dly .ed-pill.st-refused { background: #FDECEA; color: #B42318; }
.dly .ed-ready { display: flex; flex-direction: column; align-items: flex-start; font: inherit; text-align: left; border: 1px solid #E5EAF1; border-left: 4px solid #94A3B8; border-radius: 8px; padding: 3px 10px; background: #FBFCFE; cursor: pointer; min-width: 190px; }
.dly .ed-ready span { font-size: 8.5px; font-weight: 800; letter-spacing: .09em; color: #64748B; } .dly .ed-ready b { font-size: 12px; color: #0F172A; } .dly .ed-ready em { font-style: normal; font-size: 10px; color: #64748B; }
.dly .ed-ready.is-ok { border-left-color: #188D68; } .dly .ed-ready.is-ok b { color: #146C4F; }
.dly .ed-ready.is-warn { border-left-color: #D97706; } .dly .ed-ready.is-warn b { color: #92400E; }
.dly .ed-ready.is-bad { border-left-color: #C6462B; } .dly .ed-ready.is-bad b { color: #B42318; }
.dly .ed-send { letter-spacing: .05em; }
.dly .ed-exp { position: relative; }
.dly .ed-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; width: 340px; background: #fff; border: 1px solid #D5DCE6; border-radius: 10px; box-shadow: 0 12px 28px rgba(15, 23, 42, .16); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.dly .ed-menu > button { display: flex; flex-direction: column; align-items: flex-start; font: inherit; text-align: left; background: none; border: 0; border-radius: 7px; padding: 7px 9px; cursor: pointer; }
.dly .ed-menu > button:hover { background: #F1F4FA; } .dly .ed-menu b { font-size: 12.5px; color: #0F172A; } .dly .ed-menu em { font-style: normal; font-size: 10.5px; color: #64748B; }
.dly .ed-chk { display: flex; gap: 6px; align-items: center; font-size: 11px; color: #334155; padding: 5px 9px; }

/* the editor: outline · canvas · inspector */
.dly .ed { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: 230px minmax(0, 1fr) 330px; gap: 10px; }
.dly .ed-out { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 10px 8px; overflow: auto; }
.dly .ed-out ol { list-style: none; margin: 6px 0 0; padding: 0; }
.dly .ed-out li { position: relative; }
.dly .ed-out li > ol { margin: 0 0 2px 16px; }
.dly .ed-out a { display: flex; gap: 6px; align-items: baseline; padding: 4px 6px; border-radius: 6px; font-size: 11.5px; color: #1E293B; cursor: pointer; text-decoration: none; padding-right: 36px; }
.dly .ed-out a:hover { background: #F1F4FA; }
.dly .ed-out .no { flex: none; min-width: 20px; font-weight: 800; color: #1F3A5F; font-size: 10.5px; }
.dly .ed-out .t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .ed-out li.l2 a { font-size: 10.8px; color: #475569; }
.dly .ed-out li.app > a { color: #475569; }
.dly .ed-out i { font-style: normal; flex: none; font-size: 9px; font-weight: 800; color: #fff; border-radius: 7px; padding: 0 4px; }
.dly .ed-out i.b-crit { background: #C6462B; } .dly .ed-out i.b-maj { background: #D97706; } .dly .ed-out i.b-cmt { background: #4F5BD5; }
.dly .ed-out .mv { position: absolute; right: 4px; top: 3px; display: none; gap: 1px; }
.dly .ed-out li:hover > .mv { display: flex; }
.dly .ed-out .mv button { font: inherit; font-size: 8px; line-height: 1; border: 1px solid #D5DCE6; background: #fff; border-radius: 3px; padding: 2px 3px; cursor: pointer; color: #475569; }

.dly .ed-canvas { overflow: auto; background: #DDE2E9; border-radius: 12px; padding: 18px 16px 60px; }
.dly .ed-paper { max-width: 800px; margin: 0 auto; background: #fff; box-shadow: 0 2px 12px rgba(15, 23, 42, .14); padding: 34px 54px 48px 72px; font-family: Helvetica, Arial, sans-serif; color: #1E293B; }
.dly .ed-note { font-size: 10.5px; color: #64748B; border-bottom: 1px dashed #D5DCE6; padding-bottom: 8px; margin-bottom: 8px; }
.dly .ed-sec { margin: 0 0 6px; }
.dly .ed-sh { display: flex; align-items: baseline; gap: 10px; margin: 22px 0 8px; border-bottom: 1.5px solid #1F3A5F; padding-bottom: 3px; position: relative; }
.dly .ed-sh .no { font-size: 17px; font-weight: 800; color: #1F3A5F; }
.dly .ed-sh h2 { font-size: 17px; margin: 0; color: #0F172A; flex: 1; }
.dly .ed-sh.l2 { border-bottom: 0; margin: 14px 0 6px; } .dly .ed-sh.l2 .no, .dly .ed-sh.l2 h3 { font-size: 13.5px; color: #1F3A5F; margin: 0; }
.dly .ed-sh .ed-tools { position: absolute; right: 0; top: -2px; }
.dly .ed-t { outline: none; border-radius: 3px; transition: background .12s; }
.dly .ed-t:hover { background: #F7F9FC; }
.dly .ed-t:focus { background: #FFFDF2; box-shadow: 0 0 0 2px #F5D98B; }
.dly .ed-t[data-ph]:empty::before { content: attr(data-ph); color: #94A3B8; font-style: italic; }
.dly .ed-b { position: relative; margin: 2px -10px; padding: 3px 10px; border-radius: 6px; border-left: 3px solid transparent; }
.dly .ed-b:hover { background: #FAFBFD; }
.dly .ed-b.sel { background: #F5F8FD; border-left-color: #1F3A5F; }
.dly .ed-b.edited { border-left-color: #4F5BD5; } .dly .ed-b.ai { border-left-color: #7C3AED; } .dly .ed-b.user { border-left-color: #0F766E; } .dly .ed-b.stale { border-left-color: #D97706; background: #FFFBF3; }
.dly .ed-meta { display: flex; gap: 6px; align-items: center; min-height: 0; position: absolute; right: 8px; top: -11px; z-index: 2; }
.dly .ed-b.edited, .dly .ed-b.ai, .dly .ed-b.user, .dly .ed-b.stale { margin-top: 14px; }
.dly .ed-badge, .dly .ed-flag, .dly .ed-cm { font-size: 9px; font-weight: 800; letter-spacing: .04em; border-radius: 6px; padding: 1px 6px; background: #EEF2F7; color: #334155; }
.dly .ed-badge.edited { background: #EEF0FC; color: #3B45A8; } .dly .ed-badge.ai { background: #F3EEFE; color: #6D28D9; } .dly .ed-badge.user { background: #E6F4F2; color: #0F766E; } .dly .ed-badge.stale { background: #FFF1DC; color: #92400E; }
.dly .ed-flag.is-bad { background: #C6462B; color: #fff; } .dly .ed-flag.is-warn { background: #D97706; color: #fff; } .dly .ed-cm { background: #EEF0FC; color: #3B45A8; }
.dly .ed-tools { display: none; gap: 2px; background: #fff; border: 1px solid #D5DCE6; border-radius: 7px; padding: 1px; box-shadow: 0 2px 6px rgba(15, 23, 42, .08); }
.dly .ed-b:hover .ed-tools, .dly .ed-b.sel .ed-tools, .dly .ed-sh:hover .ed-tools { display: inline-flex; }
.dly .ed-tools button { font: inherit; font-size: 10px; font-weight: 700; color: #1F3A5F; background: none; border: 0; border-radius: 5px; padding: 2px 6px; cursor: pointer; }
.dly .ed-tools button:hover { background: #EEF2F8; }
.dly .ed-k-p { display: flex; gap: 8px; align-items: flex-start; }
.dly .ed-k-p .ed-t { flex: 1; font-size: 13px; line-height: 1.62; padding: 1px 3px; min-height: 1.6em; }
.dly .ed-prov { flex: none; width: 58px; margin-left: -66px; text-align: right; font-size: 7.5px; font-weight: 800; letter-spacing: .04em; padding-top: 4px; color: #475569; border-right: 2px solid currentColor; padding-right: 5px; }
.dly .ed-prov.p-RECORD { color: #0F766E; } .dly .ed-prov.p-SCHEDULE { color: #1D4ED8; } .dly .ed-prov.p-ANALYSIS { color: #6D28D9; } .dly .ed-prov.p-CONTRACT { color: #92400E; }
.dly .ed-prov.p-ENTITLEMENT { color: #B91C1C; } .dly .ed-prov.p-CONCLUSION { color: #1F3A5F; } .dly .ed-prov.p-QUALIFICATION { color: #B45309; } .dly .ed-prov.p-NONE { border-right-color: transparent; }
.dly .ed-k-h h4 { font-size: 12.5px; color: #1F3A5F; margin: 8px 0 2px; }
.dly .ed-list { margin: 2px 0 6px; padding-left: 22px; font-size: 13px; line-height: 1.55; } .dly .ed-list li { margin: 2px 0; }
.dly .ed-cap { font-size: 11.5px; color: #1F3A5F; margin: 8px 0 4px; } .dly .ed-cap b { margin-right: 3px; }
.dly .ed-tw { overflow-x: auto; }
.dly table.ed-tab { width: 100%; border-collapse: collapse; font-size: 11px; margin-bottom: 4px; }
.dly table.ed-tab th { text-align: left; font-size: 9.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: #64748B; background: #EEF2F7; padding: 5px 6px; border-bottom: 1px solid #1F3A5F; vertical-align: top; }
.dly table.ed-tab tbody th { background: none; border-bottom: 1px solid #EDF1F6; text-transform: none; letter-spacing: 0; font-size: 10.5px; width: 32%; }
.dly table.ed-tab td { padding: 4px 6px; border-bottom: 1px solid #E3E8EF; vertical-align: top; line-height: 1.4; }
.dly table.ed-tab tr.total td { font-weight: 800; background: #EAF0FA; border-bottom: 1px solid #1F3A5F; } .dly table.ed-tab tr.hl td { background: #F3F1FC; }
.dly .ed-tnote { font-size: 10.5px; color: #64748B; margin-bottom: 8px; }
.dly .ed-fig { border: 1px solid #E3E8EF; border-radius: 4px; padding: 4px; }
.dly .ed-fsvg svg { display: block; width: 100%; height: auto; }
.dly .ed-k-figure > .ed-t { font-size: 12px; line-height: 1.5; min-height: 1.4em; }
.dly .ed-src { font-size: 10px; color: #64748B; margin: 2px 0 8px; }
.dly .ed-lock { font-size: 9.5px; font-weight: 700; color: #64748B; letter-spacing: .02em; margin: 6px 0 4px; }
.dly .ed-lock::before { content: '🔒 '; }
.dly .ed-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-bottom: 8px; }
.dly .ed-kpis > div { border: 1px solid #D5DCE6; border-top: 3px solid #1F3A5F; padding: 5px 7px; display: flex; flex-direction: column; min-width: 0; }
.dly .ed-kpis span { font-size: 8.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; } .dly .ed-kpis b { font-size: 14px; color: #1F3A5F; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dly .ed-kpis em { font-style: normal; font-size: 9.5px; color: #64748B; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dly .ed-card { border: 1px solid #D5DCE6; margin-bottom: 8px; }
.dly .ed-card .hd { background: #1F3A5F; color: #fff; padding: 6px 10px; display: flex; flex-direction: column; } .dly .ed-card .hd span { font-size: 9px; font-weight: 800; letter-spacing: .06em; color: #C9D6EA; } .dly .ed-card .hd b { font-size: 13px; }
.dly .ed-card .ln { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 8px; padding: 4px 10px; border-top: 1px solid #EDF1F6; }
.dly .ed-card .ln span { font-size: 9px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #64748B; padding-top: 2px; } .dly .ed-card .ln p { margin: 0; font-size: 11.5px; line-height: 1.45; }
.dly .ed-callout { background: #F1F4FA; border-left: 3px solid #1F3A5F; padding: 6px 10px; font-size: 12px; }
.dly .ed-sign { font-size: 12.5px; line-height: 1.5; margin: 10px 0; }
.dly .ed-ev { text-decoration: none; border-bottom: 1px dotted #1D4ED8; color: #1D4ED8; cursor: pointer; }
.dly .ed-addm { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; background: #F7F9FC; border: 1px solid #D5DCE6; border-radius: 8px; padding: 6px; margin: 4px 0; }
.dly .ed-addm button { font: inherit; font-size: 10.5px; font-weight: 700; border: 1px solid #D5DCE6; background: #fff; border-radius: 5px; padding: 2px 7px; cursor: pointer; color: #1F3A5F; }
.dly .ed-addm span { font-size: 10px; font-weight: 800; color: #64748B; margin-left: 6px; }
.dly .ed-deleted { font-size: 10.5px; color: #64748B; display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 8px; }
.dly .ed-deleted button { font: inherit; font-size: 10.5px; color: #1F3A5F; background: none; border: 0; text-decoration: underline; cursor: pointer; padding: 0; }

/* the inspector */
.dly .ed-ins { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; overflow: auto; display: flex; flex-direction: column; }
.dly .ed-itabs { position: sticky; top: 0; z-index: 2; display: flex; background: #fff; border-bottom: 1px solid #E5EAF1; }
.dly .ed-itabs button { flex: 1; font: inherit; font-size: 11.5px; font-weight: 700; color: #475569; background: none; border: 0; border-bottom: 2px solid transparent; padding: 9px 4px; cursor: pointer; }
.dly .ed-itabs button.on { color: #1F3A5F; border-bottom-color: #1F3A5F; } .dly .ed-itabs i { font-style: normal; font-size: 9.5px; color: #fff; background: #4F5BD5; border-radius: 7px; padding: 0 5px; }
.dly .ed-ip { padding: 10px 12px; display: flex; flex-direction: column; gap: 7px; border-bottom: 1px solid #EEF2F7; }
.dly .ed-empty { font-size: 11.5px; color: #7C8BA1; padding: 12px; line-height: 1.45; }
.dly .ed-hint { font-size: 10.5px; color: #64748B; line-height: 1.45; margin: 0; }
.dly .ed-dl { display: grid; grid-template-columns: 82px minmax(0, 1fr); gap: 3px 8px; margin: 0; font-size: 11.5px; } .dly .ed-dl dt { color: #64748B; font-weight: 700; } .dly .ed-dl dd { margin: 0; color: #1E293B; }
.dly .ed-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.dly .ed-chip { font-size: 10.5px; font-weight: 700; border-radius: 5px; padding: 1px 6px; background: #EEF2F7; }
.dly .ed-chip.is-ok { background: #E8F5EF; color: #146C4F; } .dly .ed-chip.is-bad { background: #FDECEA; color: #B42318; }
.dly .ed-ovr { font-size: 11px; background: #FFF7ED; border-left: 3px solid #D97706; padding: 4px 7px; display: flex; flex-direction: column; } .dly .ed-ovr em { font-style: normal; color: #64748B; font-size: 10px; }
.dly .ed-iss { font-size: 11px; padding: 4px 7px; border-left: 3px solid #94A3B8; background: #F8FAFC; } .dly .ed-iss.is-bad { border-left-color: #C6462B; background: #FDF3F1; } .dly .ed-iss.is-warn { border-left-color: #D97706; background: #FFFBF3; }
.dly .ed-acts { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.dly .ed-aigrid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
.dly .ed-aigrid button { font: inherit; font-size: 10.8px; font-weight: 700; text-align: left; color: #1F3A5F; background: #F7F9FC; border: 1px solid #DCE3EC; border-radius: 6px; padding: 5px 7px; cursor: pointer; }
.dly .ed-aigrid button:hover { background: #EEF2F8; border-color: #B8C6DB; } .dly .ed-aigrid button[disabled] { opacity: .5; cursor: default; }
.dly .ed-lbl { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #64748B; }
.dly .ed-ins textarea.dl-in { min-height: 0 !important; height: auto; font-size: 12px; line-height: 1.4; padding: 6px 8px; resize: vertical; width: 100%; box-sizing: border-box; }
.dly .ed-row { display: flex; gap: 5px; } .dly .ed-row .dl-in { flex: 1; }
.dly .ed-prop { border: 1px solid #E5EAF1; border-radius: 8px; padding: 6px 8px; font-size: 11px; display: flex; flex-direction: column; gap: 3px; }
.dly .ed-prop em { font-style: normal; color: #475569; line-height: 1.35; }
.dly .ed-cmt { border: 1px solid #E5EAF1; border-left: 3px solid #4F5BD5; border-radius: 7px; padding: 6px 8px; font-size: 11px; display: flex; flex-direction: column; gap: 3px; }
.dly .ed-cmt.done { opacity: .6; border-left-color: #188D68; } .dly .ed-cmt span { color: #94A3B8; margin-left: 6px; } .dly .ed-cmt p { margin: 0; font-size: 12px; } .dly .ed-cmt a { color: #1F3A5F; cursor: pointer; }
.dly .ed-rep { font-size: 11px; background: #F7F9FC; border-radius: 5px; padding: 3px 6px; } .dly .ed-rep.ai { background: #F3EEFE; }
.dly .ed-evl { display: flex; flex-direction: column; gap: 2px; max-height: 220px; overflow: auto; }
.dly .ed-evl button { display: flex; gap: 8px; font: inherit; font-size: 11px; background: none; border: 0; border-radius: 5px; padding: 3px 5px; cursor: pointer; text-align: left; }
.dly .ed-evl button:hover, .dly .ed-evl button.on { background: #F1F4FA; } .dly .ed-evl b { color: #1D4ED8; min-width: 60px; } .dly .ed-evl span { color: #64748B; }
.dly .ed-evc { border: 1px solid #DCE3EC; border-radius: 8px; padding: 7px 9px; font-size: 11.5px; background: #FBFCFE; }

/* the selection toolbar (on the page body, outside the panel) */
.ed-seltb { position: absolute; z-index: 9000; display: flex; flex-wrap: wrap; max-width: 560px; gap: 2px; background: #1F2937; border-radius: 9px; padding: 4px; box-shadow: 0 10px 26px rgba(15, 23, 42, .3); }
.ed-seltb button { font: 600 11px/1.2 system-ui, -apple-system, 'Segoe UI', sans-serif; color: #F8FAFC; background: none; border: 0; border-radius: 6px; padding: 5px 8px; cursor: pointer; white-space: nowrap; }
.ed-seltb button:hover { background: #374151; } .ed-seltb button.more { color: #CBD5E1; font-weight: 500; } .ed-seltb .sep { width: 100%; height: 0; }

/* modals */
.dly .ed-modal { position: fixed; inset: 0; z-index: 8000; background: rgba(15, 23, 42, .38); display: flex; align-items: center; justify-content: center; padding: 20px; }
.dly .ed-mbox { width: min(820px, 100%); max-height: 88vh; overflow: auto; background: #fff; border-radius: 14px; box-shadow: 0 24px 60px rgba(15, 23, 42, .3); padding: 18px 20px; display: flex; flex-direction: column; gap: 10px; }
.dly .ed-mh { display: flex; flex-direction: column; gap: 2px; border-bottom: 1px solid #E5EAF1; padding-bottom: 8px; } .dly .ed-mh b { font-size: 15px; color: #0F172A; } .dly .ed-mh span { font-size: 11.5px; color: #64748B; }
.dly .ed-cmp { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.dly .ed-cmp > div { border: 1px solid #E5EAF1; border-radius: 8px; padding: 8px 10px; } .dly .ed-cmp p { margin: 4px 0 0; font-size: 12.5px; line-height: 1.55; }
.dly .ed-cmp > div:last-child { border-color: #C9B8F5; background: #FBF9FF; }
.dly .ed-diff { font-size: 12.5px; line-height: 1.6; margin: 0; background: #FBFCFE; border: 1px solid #E5EAF1; border-radius: 8px; padding: 8px 10px; }
.dly .ed-diff ins { background: #DDF4E6; color: #135E3F; text-decoration: none; } .dly .ed-diff del { background: #FBE3DF; color: #9B2C1B; }
.dly .ed-refused { background: #FDF3F1; border-left: 4px solid #C6462B; border-radius: 6px; padding: 8px 12px; font-size: 12px; } .dly .ed-refused p { margin: 3px 0 0; }
.dly .ed-choice { display: flex; flex-direction: column; gap: 6px; }
.dly .ed-choice > button, .dly .ed-ovf { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; font: inherit; text-align: left; border: 1px solid #DCE3EC; background: #FBFCFE; border-radius: 9px; padding: 8px 11px; cursor: pointer; }
.dly .ed-choice > button:hover { border-color: #1F3A5F; } .dly .ed-choice b { font-size: 12.5px; color: #0F172A; } .dly .ed-choice em { font-style: normal; font-size: 11px; color: #64748B; }
.dly .ed-ovf { cursor: default; border-color: #F2C98D; background: #FFFBF3; } .dly .ed-ovf textarea.dl-in { width: 100%; box-sizing: border-box; min-height: 0 !important; }
.dly table.ed-conf th { width: 190px; }
.dly table.ed-conf b.is-ok { color: #146C4F; } .dly table.ed-conf b.is-bad { color: #B42318; }
.dly .ed-diffrow { margin-bottom: 8px; }

/* the review centre */
.dly .rc { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 10px; }
.dly .rc-head { flex: none; display: flex; align-items: center; gap: 16px; background: #fff; border: 1px solid var(--dl-line); border-left: 6px solid #94A3B8; border-radius: 12px; padding: 12px 16px; flex-wrap: wrap; }
.dly .rc-head > div:first-child { display: flex; flex-direction: column; flex: 1; min-width: 240px; } .dly .rc-head span { font-size: 9.5px; font-weight: 800; letter-spacing: .1em; color: #64748B; }
.dly .rc-head b { font-size: 20px; color: #0F172A; } .dly .rc-head em { font-style: normal; font-size: 11.5px; color: #475569; }
.dly .rc-head.is-ok { border-left-color: #188D68; } .dly .rc-head.is-ok b { color: #146C4F; } .dly .rc-head.is-warn { border-left-color: #D97706; } .dly .rc-head.is-warn b { color: #92400E; } .dly .rc-head.is-bad { border-left-color: #C6462B; } .dly .rc-head.is-bad b { color: #B42318; }
.dly .rc-counts { display: flex; gap: 6px; }
.dly .rc-counts > div { display: flex; flex-direction: column; align-items: center; min-width: 62px; border-radius: 8px; padding: 4px 8px; background: #F4F6F9; }
.dly .rc-counts b { font-size: 18px; } .dly .rc-counts span { font-size: 8.5px; font-weight: 800; letter-spacing: .08em; color: #64748B; }
.dly .rc-counts .is-bad b { color: #C6462B; } .dly .rc-counts .is-warn b { color: #B45309; } .dly .rc-counts .is-info b { color: #1D4ED8; } .dly .rc-counts .is-mute b { color: #64748B; }
.dly .rc-cols { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 10px; align-items: start; }
.dly .rc-main, .dly .rc-side { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.dly .rc-group { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 10px 12px; display: flex; flex-direction: column; gap: 7px; }
.dly .rc-issue { border: 1px solid #E5EAF1; border-left: 4px solid #94A3B8; border-radius: 8px; padding: 8px 10px; display: flex; flex-direction: column; gap: 5px; }
.dly .rc-issue.is-bad { border-left-color: #C6462B; } .dly .rc-issue.is-warn { border-left-color: #D97706; } .dly .rc-issue.is-info { border-left-color: #1D4ED8; }
.dly .rc-issue.acked { opacity: .78; background: #FAFBFD; }
.dly .rc-ih { display: flex; gap: 8px; align-items: baseline; } .dly .rc-ih b { flex: 1; font-size: 12.5px; color: #0F172A; line-height: 1.4; } .dly .rc-ih i { font-style: normal; font-size: 10px; font-weight: 800; color: #64748B; }
.dly .ed-sev { flex: none; font-size: 9px; font-weight: 800; letter-spacing: .06em; border-radius: 5px; padding: 1px 6px; color: #fff; background: #94A3B8; }
.dly .ed-sev.is-bad { background: #C6462B; } .dly .ed-sev.is-warn { background: #D97706; } .dly .ed-sev.is-info { background: #1D4ED8; } .dly .ed-sev.is-mute { background: #94A3B8; } .dly .ed-sev.is-ok { background: #188D68; }
.dly .rc-checks td { vertical-align: top; } .dly .rc-checks em { color: #64748B; font-style: normal; font-size: 11px; }
.dly .rc-dl { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 2px 10px; margin: 0; font-size: 11.5px; } .dly .rc-dl dt { color: #64748B; font-weight: 700; } .dly .rc-dl dd { margin: 0; color: #334155; } .dly .rc-dl a { color: #1F3A5F; cursor: pointer; text-decoration: underline; }
.dly .rc-card { background: #fff; border: 1px solid var(--dl-line); border-radius: 12px; padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.dly .rc-card.alert { border: 1.5px solid #E7A698; background: #FFFAF8; }
.dly .rc-t { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; } .dly .rc-t b { font-size: 13px; color: #0F172A; } .dly .rc-t em { font-style: normal; font-size: 10.5px; color: #64748B; }
.dly .rc-card.alert .rc-t b { color: #B42318; letter-spacing: .02em; }
.dly .rc-t i { font-style: normal; width: 18px; height: 18px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; color: #fff; background: #C6462B; }
.dly .rc-card table.r2-t { margin-bottom: 0; font-size: 11px; } .dly .rc-card table.r2-t th { width: 40%; }
.dly .rc-card table.r2-t thead th { width: auto; }
.dly .rc-sw { display: flex; flex-direction: column; gap: 7px; border-top: 1px solid #EEF2F7; padding-top: 8px; }
.dly .rc-src { display: flex; flex-direction: column; gap: 5px; border-top: 1px solid #EEF2F7; padding-top: 8px; margin-top: 6px; font-size: 12px; } .dly .rc-src em { color: #64748B; font-style: normal; font-size: 11px; }
.dly .ed-sw { display: flex; gap: 9px; align-items: flex-start; cursor: pointer; }
.dly .ed-sw button { flex: none; width: 34px; height: 19px; border-radius: 10px; border: 0; background: #CBD5E1; position: relative; cursor: pointer; margin-top: 1px; }
.dly .ed-sw button i { position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 8px; background: #fff; transition: left .15s; }
.dly .ed-sw button.on { background: #1F3A5F; } .dly .ed-sw button.on i { left: 17px; }
.dly .ed-sw span { display: flex; flex-direction: column; } .dly .ed-sw b { font-size: 12px; color: #0F172A; } .dly .ed-sw em { font-style: normal; font-size: 10.5px; color: #64748B; line-height: 1.35; }
.dly .rc-disc { display: flex; gap: 10px; align-items: flex-start; border: 1px solid #E5EAF1; border-radius: 8px; padding: 7px 9px; }
.dly .rc-disc > div:first-child { flex: 1; } .dly .rc-disc b { font-size: 12px; } .dly .rc-disc em { font-style: normal; font-size: 10px; color: #94A3B8; margin-left: 6px; } .dly .rc-disc p { margin: 3px 0 0; font-size: 11px; color: #475569; line-height: 1.4; }
.dly .rc-disc.on { border-color: #1F3A5F; background: #F5F8FD; } .dly .rc-disc.na { opacity: .55; }
.dly .rc-disc .seg { display: flex; flex-direction: column; gap: 3px; flex: none; }
.dly .rc-disc .seg button { font: inherit; font-size: 10.5px; font-weight: 700; border: 1px solid #DCE3EC; background: #fff; border-radius: 6px; padding: 3px 8px; cursor: pointer; color: #475569; }
.dly .rc-disc .seg button.on { background: #1F3A5F; border-color: #1F3A5F; color: #fff; }
.dly .rc-form { display: flex; flex-direction: column; gap: 6px; background: #F7F9FC; border: 1px solid #DCE3EC; border-radius: 8px; padding: 8px 10px; }
.dly .rc-form textarea.dl-in { min-height: 0 !important; width: 100%; box-sizing: border-box; font-size: 12px; }
.dly .ed-hist { max-height: 260px; overflow: auto; font-size: 11px; color: #334155; display: flex; flex-direction: column; gap: 2px; } .dly .ed-hist span { color: #94A3B8; font-family: var(--u-mono); font-size: 10px; }
@media (max-width: 1280px) { .dly .ed { grid-template-columns: 190px minmax(0, 1fr) 290px; } .dly .rc-cols { grid-template-columns: minmax(0, 1fr); } }

/* ── Contract Intelligence (tabs/delay/delay-contract-ui.js) ─────────── */
.dly .ct-wrap { display: flex; flex-direction: column; gap: 8px; height: 100%; min-height: 0; }
.dly .ct-wrap > .dl-split { flex: 1; min-height: 0; }
.dly .ci-views { align-self: flex-start; }
/* the whole view is ONE scroller: the header and the documents scroll away
   with the tables, and the evidence stays beside them (sticky) — never a
   short box inside a short box */
.dly .ci { display: flex; flex-direction: column; gap: 8px; flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; padding-right: 2px; }
.dly .ci > * { flex: none; }
.dly .ci-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; background: #fff; border: 1px solid #E2E8F0; border-radius: 12px; padding: 10px 14px; }
.dly .ci-head b { font-size: 14px; color: #0F172A; display: block; } .dly .ci-head em { font-style: normal; color: #64748B; font-size: 12px; }
.dly .ci-acts { display: flex; gap: 6px; flex: none; }
.dly .ci-docs { display: flex; flex-wrap: wrap; gap: 6px; }
.dly .ci-doc { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #E2E8F0; border-left-width: 3px; background: #fff; border-radius: 8px; padding: 4px 4px 4px 9px; font-size: 12px; }
.dly .ci-doc.is-ok { border-left-color: #188D68; } .dly .ci-doc.is-warn { border-left-color: #D97706; } .dly .ci-doc.is-bad { border-left-color: #C6462B; }
.dly .ci-doc em { font-style: normal; color: #64748B; }
.dly .ci-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 10px; align-items: start; }
.dly .ci-main, .dly .ci-side { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.dly .ci-side { position: sticky; top: 0; max-height: calc(var(--dl-h) - 56px); overflow: auto; overscroll-behavior: contain; }
.dly .ci-area { background: #fff; border: 1px solid #E2E8F0; border-radius: 12px; padding: 8px 10px; }
.dly .ci-area h4 { margin: 2px 0 6px; font-size: 12.5px; letter-spacing: .02em; color: #1F3A5F; }
.dly .ci-t td { vertical-align: top; font-size: 12px; } .dly .ci-t td:first-child { width: 190px; color: #334155; font-weight: 600; }
.dly .ci-t td:nth-child(3) { width: 230px; } .dly .ci-t td:last-child { width: 118px; white-space: nowrap; }
.dly .ci-t tr.is-sel td, .dly .ci-t tr.sel td { background: #EEF4FF; }
.dly .ci-src { display: block; text-align: left; background: none; border: 0; padding: 0 0 2px; color: #1D4ED8; font-size: 11.5px; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.dly .ci-list { margin: 0; padding-left: 16px; } .dly .ci-list li { margin: 0 0 2px; }
.dly .ci-ai { font-style: normal; font-size: 9px; font-weight: 800; color: #5B3A8E; border: 1px solid #C9B6EA; border-radius: 4px; padding: 0 3px; }
.dly .ci-ev blockquote { margin: 6px 0; border-left: 3px solid #1F3A5F; padding: 6px 10px; background: #F4F6F9; font-size: 12.5px; color: #1E293B; }
.dly .ci-page pre { white-space: pre-wrap; font: 11.5px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; max-height: 42vh; overflow: auto; background: #FBFCFE; border: 1px solid #E2E8F0; border-radius: 8px; padding: 8px; }
.dly .ci-page mark { background: #FEF3C7; }
.dly .ci-cm { margin: 0; padding-left: 16px; font-size: 12px; } .dly .ci-cm li { margin: 0 0 6px; }
.dly .ci-cm li.is-warn b { color: #B45309; } .dly .ci-cm li.is-info b { color: #1D4ED8; } .dly .ci-cm li.is-mute b { color: #64748B; }
.dly .ci-ask { display: flex; gap: 6px; } .dly .ci-ask .dl-in { flex: 1; }
.dly .ci-ans p { font-size: 12.5px; margin: 6px 0; } .dly .ci-pass { border-top: 1px solid #EEF2F7; padding-top: 6px; margin-top: 6px; font-size: 12px; }
.dly .ci-pass p { margin: 2px 0 0; color: #334155; }
.dly .ci-tia ul { list-style: none; margin: 0; padding: 0; font-size: 12px; } .dly .ci-tia li { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 0 6px; margin-bottom: 4px; }
.dly .ci-tia li span { color: #64748B; } .dly .ci-tia li em { grid-column: 2; font-style: normal; color: #64748B; font-size: 11px; }
/* Contract Intelligence — the views (Contract Map, Requirements, Risks, Documents, Clauses, Ask) */
.dly .ci-tabs { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 1px solid #E2E8F0; padding-bottom: 6px; }
.dly .ci-tab { font: inherit; font-size: 12.5px; font-weight: 700; color: #475569; background: #fff; border: 1px solid #E2E8F0; border-radius: 8px; padding: 6px 12px; cursor: pointer; }
.dly .ci-tab.on { background: #1F3A5F; border-color: #1F3A5F; color: #fff; }
.dly .ci-grid.one { grid-template-columns: minmax(0, 1fr); }
.dly .ci-ref { font-size: 12px; color: #334155; background: #F8FAFC; border: 1px dashed #CBD5E1; border-radius: 8px; padding: 6px 10px; }
.dly .ci-map { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.dly .ci-card { background: #fff; border: 1px solid #E2E8F0; border-left: 4px solid #CBD5E1; border-radius: 10px; padding: 8px 10px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.dly .ci-card.is-ok { border-left-color: #188D68; } .dly .ci-card.is-bad { border-left-color: #C6462B; } .dly .ci-card.is-warn { border-left-color: #D97706; }
.dly .ci-card-h { display: flex; justify-content: space-between; align-items: center; gap: 6px; } .dly .ci-card-h b { font-size: 12.5px; color: #0F172A; }
.dly .ci-pos { font-size: 12.5px; color: #1E293B; overflow-wrap: anywhere; }
.dly .ci-card-f { display: flex; flex-direction: column; gap: 4px; font-size: 11px; }
.dly .imp { font-style: normal; font-size: 9px; font-weight: 800; letter-spacing: .06em; border-radius: 4px; padding: 1px 5px; margin-left: 6px; background: #EEF2F7; color: #475569; }
.dly .imp-high { background: #FDECEA; color: #B42318; } .dly .imp-medium { background: #FFF4E5; color: #92400E; }
.dly .ci-notsaid ul { margin: 0; padding-left: 16px; font-size: 12px; } .dly .ci-notsaid li { margin: 0 0 4px; }
.dly .ci-sum { display: flex; gap: 6px; flex-wrap: wrap; }
.dly .dl-pill.ai { background: #F3EEFB; color: #5B3A8E; }
.dly .ci-rels { margin-top: 6px; font-size: 11px; color: #64748B; border-left: 2px solid #F0C27A; padding-left: 6px; } .dly .ci-rels em { font-style: normal; }
.dly .ci-src.rel { color: #92400E; }
.dly .ci-ov { margin-top: 4px; font-size: 11px; color: #9A3412; font-weight: 600; }
.dly .ci-risks { display: flex; flex-direction: column; gap: 6px; }
.dly .ci-risk { display: flex; gap: 8px; align-items: flex-start; background: #fff; border: 1px solid #E2E8F0; border-radius: 10px; padding: 8px 10px; font-size: 12px; }
.dly .ci-risk.is-bad { border-left: 4px solid #C6462B; } .dly .ci-risk.is-warn { border-left: 4px solid #D97706; } .dly .ci-risk.is-mute { border-left: 4px solid #94A3B8; }
.dly .ci-align { font-size: 12px; border-radius: 10px; padding: 8px 10px; border: 1px solid #E2E8F0; background: #fff; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.dly .ci-align.is-ok { border-left: 4px solid #188D68; } .dly .ci-align.is-warn { border-left: 4px solid #D97706; }
.dly .ci-filters { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; } .dly .ci-filters .dl-in { flex: 1 1 200px; min-width: 160px; }
.dly .ci-chip { font: inherit; font-size: 11.5px; border: 1px solid #E2E8F0; background: #fff; border-radius: 14px; padding: 3px 10px; cursor: pointer; color: #334155; }
.dly .ci-chip.on { background: #EEF4FF; border-color: #1D4ED8; color: #1D4ED8; font-weight: 700; }
.dly .ci-cl tr.rv td { background: #FFFBEB; }
.dly .ci-h { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #64748B; margin: 8px 0 4px; } .dly .ci-h.ai { color: #5B3A8E; }
.dly .ci-words { max-height: 40vh; overflow: auto; white-space: pre-wrap; }
.dly .ci-ev.rel blockquote { border-left-color: #D97706; }
/* 2.2 — Contract Intelligence: topics on the left, the chosen one on the right.
   Quiet: one accent, a status dot, the contract's words under their line. */
.dly .ci-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 2px 2px 8px; border-bottom: 1px solid #E2E8F0; }
.dly .ci-top-t { min-width: 0; } .dly .ci-top-t b { font-size: 15px; color: #0F172A; margin-right: 8px; } .dly .ci-top-t .mu { font-size: 12px; overflow-wrap: anywhere; }
.dly .ci-warnbar { font-size: 12px; color: #92400E; background: #FFFBEB; border: 1px solid #FDE68A; border-radius: 8px; padding: 6px 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.dly .ci-body { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 0; align-items: start; min-height: 0; }
.dly .ci-nav { position: sticky; top: 0; display: flex; flex-direction: column; gap: 1px; padding: 10px 10px 10px 0; border-right: 1px solid #E2E8F0; }
.dly .ci-nav-h { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #94A3B8; margin: 12px 8px 4px; }
.dly .ci-nav .ci-tab { all: unset; box-sizing: border-box; display: flex; justify-content: space-between; align-items: center; gap: 8px; width: 100%; font-size: 13px; color: #334155; padding: 7px 10px; border-radius: 7px; cursor: pointer; }
.dly .ci-nav .ci-tab:hover { background: #F1F5F9; }
.dly .ci-nav .ci-tab.on { background: #EEF2F7; color: #0F172A; font-weight: 700; box-shadow: inset 3px 0 0 #1F3A5F; }
.dly .ci-nav .ci-tab:focus-visible { outline: 2px solid #1F3A5F; outline-offset: 1px; }
.dly .ci-nav .ci-tab.ask { margin-top: 10px; color: #1F3A5F; font-weight: 600; }
.dly .ci-nav-c { font-size: 11px; font-weight: 700; color: #1F3A5F; background: #E8EEF6; border-radius: 10px; padding: 0 7px; line-height: 18px; }
.dly .ci-nav-c.zero { color: #94A3B8; background: transparent; }
.dly .ci-main { min-width: 0; padding: 10px 4px 24px 22px; display: block; max-width: 980px; }
.dly .ci-title { font-size: 17px; color: #0F172A; margin: 4px 0 12px; font-weight: 700; } .dly .ci-title .mu { font-size: 13px; font-weight: 400; }
.dly .ci-sec { margin: 0 0 22px; } .dly .ci-sec > h4 { font-size: 11px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #64748B; margin: 0 0 4px; display: flex; gap: 8px; align-items: center; }
.dly .ci-sec > h4 .mu { text-transform: none; letter-spacing: 0; font-weight: 400; }
.dly .ci-row { border-bottom: 1px solid #EEF2F7; }
.dly .ci-row-b { all: unset; box-sizing: border-box; display: grid; grid-template-columns: 14px 200px minmax(0, 1fr) auto; gap: 10px; align-items: baseline; width: 100%; padding: 9px 6px; cursor: pointer; border-radius: 6px; }
.dly .ci-row-b:hover { background: #F8FAFC; } .dly .ci-row-b:focus-visible { outline: 2px solid #1F3A5F; }
.dly .ci-row.on > .ci-row-b { background: #F8FAFC; }
.dly .ci-dot { width: 8px; height: 8px; border-radius: 50%; background: #CBD5E1; display: inline-block; transform: translateY(-1px); }
.dly .ci-dot.is-ok { background: #188D68; } .dly .ci-dot.is-bad { background: #C6462B; } .dly .ci-dot.is-warn { background: #D97706; } .dly .ci-dot.is-mute { background: #CBD5E1; }
.dly .ci-row-l { font-size: 13px; color: #475569; }
.dly .ci-row-v { font-size: 13.5px; color: #0F172A; font-weight: 600; overflow-wrap: anywhere; }
.dly .ci-row.none .ci-row-v { color: #94A3B8; font-weight: 400; }
.dly .ci-row-v.long { font-weight: 400; font-size: 13px; color: #1E293B; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dly .ci-row.on .ci-row-v.long { -webkit-line-clamp: unset; display: block; }
.dly .ci-row-m { font-size: 12px; color: #64748B; white-space: nowrap; }
.dly .ci-row.none .ci-row-m { color: #B45309; }
.dly .ci-exp { padding: 2px 6px 12px 34px; }
.dly .ci-q { margin: 6px 0 10px; } .dly .ci-q-h { font-size: 12px; color: #334155; } .dly .ci-q-h span { color: #64748B; }
.dly .ci-q blockquote, .dly .ci-words { margin: 4px 0 6px; border-left: 3px solid #1F3A5F; padding: 6px 12px; background: #F8FAFC; font-size: 13px; line-height: 1.55; color: #1E293B; }
.dly .ci-q.rel blockquote { border-left-color: #D97706; }
.dly .ci-why { font-size: 12px; color: #92400E; }
.dly .ci-q-a { display: flex; gap: 6px; flex-wrap: wrap; }
.dly .ci-warn { color: #B42318; font-size: 12.5px; margin: 4px 0; } .dly .ci-note { color: #1F3A5F; font-size: 12.5px; margin: 4px 0; font-weight: 600; }
.dly .ci-none { font-size: 12.5px; color: #94A3B8; padding: 8px 6px 0 30px; }
.dly .ci-nlink { all: unset; cursor: pointer; color: #64748B; border-bottom: 1px dotted #CBD5E1; } .dly .ci-nlink:hover, .dly .ci-nlink.on { color: #1F3A5F; border-bottom-color: #1F3A5F; } .dly .ci-nlink:focus-visible { outline: 2px solid #1F3A5F; }
.dly .ci-num { width: 18px; height: 18px; border-radius: 50%; background: #E8EEF6; color: #1F3A5F; font-style: normal; font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; transform: translateY(3px); }
.dly .ci-row.step .ci-row-b { grid-template-columns: 18px 200px minmax(0, 1fr) auto; }
.dly .ci-row.step.none .ci-num { background: #F1F5F9; color: #94A3B8; }
.dly .ci-conf { color: #5B3A8E; }
.dly .ci-looked { font-size: 12.5px; color: #475569; margin: 4px 0 8px; line-height: 1.55; } .dly .ci-looked b { color: #0F172A; }
.dly .ci-decide > h4 { color: #B42318; } .dly .ci-decide .ci-row-v { color: #B42318; }
.dly .ci-q-v { font-weight: 700; color: #0F172A; margin-left: 6px; }
.dly .ci-foot { font-size: 12.5px; color: #64748B; margin: 6px 0 10px; line-height: 1.5; }
.dly .ci-dl { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 10px 16px; margin: 0 0 24px; font-size: 13px; color: #1E293B; }
.dly .ci-dl dt { color: #64748B; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding-top: 2px; } .dly .ci-dl dd { margin: 0; line-height: 1.55; }
.dly .ci-notes { margin: 0; padding: 0; list-style: none; } .dly .ci-notes li { font-size: 13px; padding: 8px 6px 8px 14px; border-bottom: 1px solid #EEF2F7; position: relative; line-height: 1.5; }
.dly .ci-notes li::before { content: ''; position: absolute; left: 0; top: 14px; width: 6px; height: 6px; border-radius: 50%; background: #CBD5E1; }
.dly .ci-notes li.is-bad::before { background: #C6462B; } .dly .ci-notes li.is-warn::before { background: #D97706; }
.dly .ci-list2 { display: flex; flex-direction: column; }
.dly .ci-li { all: unset; box-sizing: border-box; display: grid; grid-template-columns: 64px minmax(0, 1fr) 76px; gap: 12px; padding: 9px 6px; border-bottom: 1px solid #EEF2F7; cursor: pointer; font-size: 13px; }
.dly .ci-li:hover { background: #F8FAFC; } .dly .ci-li:focus-visible { outline: 2px solid #1F3A5F; }
.dly .ci-li.rv { background: #FFFDF5; }
.dly .ci-li-n { font-weight: 700; color: #1F3A5F; font-variant-numeric: tabular-nums; }
.dly .ci-li-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .dly .ci-li-t b { color: #0F172A; font-weight: 600; } .dly .ci-li-t em { font-style: normal; font-size: 11.5px; color: #64748B; }
.dly .ci-li-t .mu { font-size: 12px; overflow-wrap: anywhere; }
.dly .ci-li-p { font-size: 12px; color: #64748B; text-align: right; white-space: nowrap; }
.dly .ci-chg-v { font-weight: 700; color: #B42318; font-size: 13px; }
.dly .ci-cdet .ci-title { margin-top: 10px; }
.dly .ci-main .ci-filters { margin-bottom: 8px; }
@media (max-width: 1100px) { .dly .ci-body { grid-template-columns: minmax(0, 1fr); } .dly .ci-nav { position: static; flex-direction: row; flex-wrap: wrap; border-right: 0; border-bottom: 1px solid #E2E8F0; padding: 6px 0; } .dly .ci-nav-h { display: none; } .dly .ci-nav .ci-tab { width: auto; } .dly .ci-main { padding-left: 4px; } .dly .ci-row-b, .dly .ci-row.step .ci-row-b { grid-template-columns: 18px minmax(0, 1fr); } .dly .ci-row-v, .dly .ci-row-m { grid-column: 2; } .dly .ci-row-m { white-space: normal; } .dly .ci-dl { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 1280px) { .dly .ci-grid { grid-template-columns: minmax(0, 1fr); } .dly .ci-side { position: static; max-height: none; overflow: visible; } }

/* ── Scrolling on every screen ────────────────────────────────────────
   Wide and tall: the workspace is one screen and its panes scroll inside
   it. Narrower than 1280 OR shorter than 820 (most laptops, and any screen at 125 %): one
   screen leaves the panes a few rows high, so the workspace flows with the
   page instead — the Gantt workspaces excepted, which stay one screen and
   scroll inside their chart.
   In that mode a pane that no longer scrolls MUST pass the wheel on to the
   page: `overscroll-behavior: contain` on it swallowed every wheel turn and
   nothing scrolled at all. And the long documents keep a screen-high
   viewport of their own, so the report is read in a window, not as one
   20,000-pixel column — and the wheel scrolls the PAGE first, until that
   window fills the screen, then the window (delay.tab.js, pageFirst). */
@media (max-height: 820px) {
  .upd.dly { height: auto; overflow: visible; }
  .upd.dly[data-ws="studio"], .upd.dly[data-ws="overview"], .upd.dly[data-ws="events"], .upd.dly[data-ws="claims"] { height: var(--dl-h); overflow: hidden; }
}
@media (max-width: 1280px), (max-height: 820px) {
  .upd.dly:not([data-ws="studio"]):not([data-ws="overview"]):not([data-ws="events"]):not([data-ws="claims"]) .dl-scroll,
  .upd.dly:not([data-ws="studio"]):not([data-ws="overview"]):not([data-ws="events"]):not([data-ws="claims"]) .ci,
  .upd.dly:not([data-ws="studio"]):not([data-ws="overview"]):not([data-ws="events"]):not([data-ws="claims"]) .r2-side { overscroll-behavior: auto; }
  .upd.dly[data-ws="contract"] .ci { overflow: visible; }
  .upd.dly[data-ws="contract"] .ci-side { max-height: calc(100vh - 80px); }
  .upd.dly[data-ws="reports"] .r2-side { overflow: visible; }
  .upd.dly[data-ws="reports"] .r2-pages, .upd.dly[data-ws="reports"] .ed, .upd.dly[data-ws="reports"] .rc,
  .upd.dly[data-ws="reports"] .r2-outline, .upd.dly[data-ws="reports"] .r2-figs, .upd.dly[data-ws="reports"] .r2-src {
    flex: none; height: calc(100vh - 80px); min-height: 420px; }   /* under the app's fixed header */
}

