/* css/modules/cmp.css: the .cmp-* module — split out of css/app.css by #360's sibling stage (#362).
   Load order is core.css, then every modules/*.css alphabetically; rules here
   are in their original relative order, and no selector in this file appears in
   any other (asserted in tests/css-split-check.js). */

.cmp-actor{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:11px;padding:9px 12px;font-weight:700;font-size:12.5px}
.cmp-actor__roles{color:var(--blue);font-weight:800}
.cmp-actor__note{color:var(--muted);font-weight:600;font-size:11.5px;flex:1 1 260px;line-height:1.45}
.cmp-tabs{display:flex;flex-wrap:wrap;gap:7px}
.cmp-tab{font-family:inherit;font-weight:800;font-size:12.5px;padding:7px 13px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer}
.cmp-tab.is-on{background:var(--blue);border-color:var(--blue);color:#fff}
.cmp-filters,.cmp-hzs{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-weight:700;font-size:12.5px;color:var(--muted)}
.cmp-hz{font-family:inherit;font-weight:800;font-size:12px;padding:5px 11px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer}
.cmp-hz.is-on{background:var(--orange);border-color:var(--orange);color:#fff}
.cmp-head__lead{margin:0 0 6px;font-weight:700;color:var(--ink);line-height:1.5}
.cmp-head__names{margin:0;padding-left:18px;font-weight:700;line-height:1.7}
.cmp-head__names span{color:var(--red);font-weight:800;font-size:12px;margin-left:6px}
.cmp-head__more,.cmp-head__as{margin:6px 0 0;color:var(--muted);font-weight:600;font-size:11.5px}
.cmp-empty b{display:block;margin-bottom:4px;color:var(--ink)}
.cmp-empty p{margin:0;color:var(--muted);font-weight:600;font-size:12.5px;line-height:1.55}
.cmp-note{color:var(--muted);font-weight:600;font-size:12.5px;line-height:1.55}
.cmp-acts{display:flex;flex-wrap:wrap;gap:8px}
.cmp-btns{display:flex;gap:6px;white-space:nowrap}
.cmp-kind,.cmp-code{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);background:var(--panel-2);border-radius:5px;padding:1px 5px;margin-left:4px}
.cmp-blk{color:var(--red)}
.cmp-ok{color:var(--muted);font-weight:600;font-size:12px}
.cmp-noev{color:var(--red);font-weight:700;font-size:11.5px}
.cmp-row--blocked{background:#fff7f4}
.cmp-row--void{opacity:.55;text-decoration:line-through}
/* Status pills. `indeterminate` gets its OWN look and never the compliant green:
   "we cannot confirm currency" is not "current", and painting it green would be
   inventing a status. */
.cmp-pill{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;white-space:nowrap}
.cmp-pill--compliant{background:#e4f5ea;color:#1f7a44}
.cmp-pill--expiring{background:#fdefe0;color:#b4650f}
.cmp-pill--grace{background:#fdf0e4;color:#9a4d00}
.cmp-pill--waived{background:#eef2fb;color:var(--blue-d)}
.cmp-pill--unverified{background:#f2f0fb;color:#5b46b8}
.cmp-pill--rejected{background:#fde6df;color:#8a1f00}
.cmp-pill--expired{background:#fde6df;color:#b3200a}
.cmp-pill--missing{background:#eceff4;color:#5b6472}
.cmp-pill--indet{background:repeating-linear-gradient(135deg,#f4f2ea,#f4f2ea 5px,#eae6d8 5px,#eae6d8 10px);color:#7a6520;border:1px dashed #c9b877}
.cmp-tr__hd{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:4px}
.cmp-tr__hd b{font-size:14px}
.cmp-tr__via{color:var(--muted);font-weight:600;font-size:11.5px;margin-left:auto}
.cmp-tr__reason{margin:0 0 8px;color:var(--ink);font-weight:600;font-size:12.5px;line-height:1.5}
.cmp-tr__none,.cmp-tr__waiv{margin:6px 0 0;color:var(--muted);font-weight:600;font-size:12px}
/* The roster join on the overdue report (#236 report 3). `cmp-ros`/`cmp-need`
   verified unused in css/app.css, driver/driver.css and all three apps' JS
   before they were added.
   `--unknown` is HATCHED, exactly as `.cmp-pill--indet` is, and for the same
   reason: a staff record or a driver with no line on the board is "we cannot
   tell", which must not be drawn like the settled grey of "not working". Today
   and tomorrow are the two that need a phone call, so they carry the red and
   the orange; the detail line under the chip is what stops the chip having to
   carry a day and a count in a table cell. */
.cmp-ros{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;white-space:nowrap}
.cmp-ros--today{background:#fde6df;color:#b3200a}
.cmp-ros--tomorrow{background:#fdefe0;color:#b4650f}
.cmp-ros--none{background:#eceff4;color:#5b6472}
.cmp-ros--unknown{background:repeating-linear-gradient(135deg,#f4f2ea,#f4f2ea 5px,#eae6d8 5px,#eae6d8 10px);color:#7a6520;border:1px dashed #c9b877}
.cmp-ros__d{display:block;color:var(--muted);font-weight:600;font-size:11px;margin-top:3px}
.cmp-head__names .cmp-ros{margin-left:6px}
.cmp-head__names .cmp-ros__d{display:inline;margin:0 0 0 6px}
/* Who is short, in a table cell: names first, then how many were not listed. */
.cmp-need{font-weight:700;font-size:12px;line-height:1.6}
.cmp-need span{color:var(--muted);font-weight:600}
.cmp-gate{border-left:4px solid var(--red)}
.cmp-gate__list{margin:0;padding-left:18px;font-weight:700;line-height:1.6}
.cmp-gate__who{margin:8px 0 0;color:var(--muted);font-weight:600;font-size:12.5px}
/* The audit evidence pack (#236 report 11). `cmp-pk` verified unused in
   css/app.css, driver/driver.css and all three apps' JS before it was added.

   THE THREE SECTION STATES ARE DRAWN AS THREE DIFFERENT THINGS, and the third
   is the one that matters: `ok` is produced, `empty` is "we looked and there is
   nothing in this period", and `unavailable` is "we could not look" — which is
   HATCHED, exactly as .cmp-pill--indet and .cmp-ros--unknown are, and for the
   same reason. A grey pill on an unread change log would let a bundle handed to
   a regulator read as a clean record of something nobody ever looked at. */
.cmp-pk__bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px}
.cmp-pk__bar label{display:flex;align-items:center;gap:6px;font-weight:800;font-size:12px;
  color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.cmp-pk__wait{padding:22px;color:var(--muted);font-weight:700}
.cmp-pk__prov{border-left:4px solid var(--blue)}
.cmp-pk__warn{color:var(--red)}
.cmp-pk__k{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;padding:3px 0;
  font-size:12.5px;line-height:1.6;border-top:1px solid var(--line)}
.cmp-pk__k b{min-width:110px;font-weight:800}
.cmp-pk__k span{color:var(--muted);font-weight:600;flex:1 1 260px}
.cmp-pk__sec{margin-top:14px}
.cmp-pk__hd{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.cmp-pk__n{color:var(--muted);font-weight:800;font-size:12px}
.cmp-pk__says{flex:1 1 100%;margin:2px 0 0;color:var(--ink);font-weight:600;
  font-size:12.5px;line-height:1.6}
.cmp-pk__more{margin:8px 0 0;color:var(--muted);font-weight:600;font-size:12px;line-height:1.6}
.cmp-pk-chip{display:inline-block;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;
  white-space:nowrap}
.cmp-pk-chip--ok{background:#e4f4ea;color:#186c37}
.cmp-pk-chip--empty{background:#eceff4;color:#5b6472}
.cmp-pk-chip--unavailable{background:repeating-linear-gradient(135deg,#f4f2ea,#f4f2ea 5px,#eae6d8 5px,#eae6d8 10px);
  color:#7a6520;border:1px dashed #c9b877}
/* ==========================================================================
   #236 REPORT 9 — CLIENT-SITE READINESS. `cmp-sr` verified unused in
   css/app.css, driver/driver.css and all three apps' JS before it was added.

   THREE VERDICTS, NOT TWO, and the third is the one with a licence
   consequence. `--ready` is cleared, `--no` is turned away, and
   `--indet` is cleared ON A TICKET WHOSE CURRENCY NOBODY HAS RECORDED — which
   is HATCHED, exactly as .cmp-pill--indet, .cmp-ros--unknown and
   .cmp-pk-chip--unavailable are, and for the same reason. `indeterminate` rides
   on `compliant` in NF.Compliance, so a flat green "Clear to attend" there
   tells a scheduler somebody is good for a mine gate when nobody knows whether
   the ticket has lapsed. Never collapse these three into two.
   ========================================================================== */
.cmp-sr-pill{display:inline-block;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;
  white-space:nowrap}
.cmp-sr-pill--ready{background:#e4f4ea;color:#186c37}
.cmp-sr-pill--no{background:#fdeceb;color:#a11c0c}
.cmp-sr-pill--indet{background:repeating-linear-gradient(135deg,#f4f2ea,#f4f2ea 5px,#eae6d8 5px,#eae6d8 10px);
  color:#7a6520;border:1px dashed #c9b877}
/* The half-connected `appliesTo.sites` axis, stated in the report rather than
   only in a comment: this cannot say who NORMALLY works at a site. */
/* THE AXIS CAVEAT IS A HEADLINE, NOT A FOOTNOTE, and it is placed ABOVE the
   table for the same reason Fleet Overview's coverage caveat and .rvp-cov are:
   the screen is headed "Who can work at <site>" and prints "12 of 40 people
   would be turned away at the gate", and the sentence that stops a scheduler
   reading that as "the Newman crew" cannot be grey 12.5px type AFTER a 23-row
   table. Body-copy weight, full width, at the top — the convention this repo
   already states three times (the speed screen and the evidence pack both "say
   so in full rather than in a footnote"). */
.cmp-sr-axis{margin:0 0 12px;padding:12px 14px;border-radius:9px;border-left:4px solid var(--orange);
  background:#fff8ec;border-top:1px solid #f6dcb4;border-right:1px solid #f6dcb4;border-bottom:1px solid #f6dcb4;
  font-size:13px;font-weight:700;color:#5c4412;line-height:1.6;max-width:100ch}
.cmp-sr-axis b{color:var(--ink)}
.cmp-sr-ok{margin-top:12px}
.cmp-sr-ready li span{color:#186c37}
.cmp-sr-ind{color:#7a6520;font-weight:800}
