

/* ════════════════════════════════════════════════════════════════════════════
   FIX_WWK_OPS_S1_2026_06_10 — Operations Command Centre (Overview) styles, scoped
   under #page-operations. Built TO design_samples/operations/operations_landing_command.html
   at ultra-HD fidelity (the founder sample is the spec). Literal hex values mirror the
   sample's :root tokens (the platform's own :root names differ; inlining the sample's
   exact palette preserves the sample aesthetic). ASCII-only comments throughout (a
   non-ASCII char silently drops the rule from the CSSOM — the established L18.8 lesson).
   S1a (landing): KPI band + capacity heatmap hero + needs-attention. The KPI
   expand-chevron + hover-hint affordances render for VISUAL FIDELITY but their
   click/hover handlers are UNWIRED (the hover-peek popovers + click-expand modals are
   WWK-Operations S1b — their CSS lands with S1b too). The heatmap cell hover-tooltip is
   intrinsic to the hero visual and IS in S1a.
   ════════════════════════════════════════════════════════════════════════════ */
#page-operations .op-head-row { display: flex; align-items: flex-end; gap: 16px; }
#page-operations .op-head-row h1 {
  font-family: 'Montserrat', sans-serif; font-size: 26px; font-weight: 800;
  letter-spacing: -.01em; line-height: 1; color: #F0EBE2; margin: 0;
}
#page-operations .op-head-row .op-when { font-size: 11.5px; color: #8A857D; padding-bottom: 2px; }
/* FIX_KPIWIN_P2_ROLLOUT_2026_07_01 — Operations header: .op-head-spacer pushes the reusable
   window control to the top-right (the header has no space-between); .op-asof is the snapshot
   "as of today" marker. The Ops Overview KPIs (Utilisation / Inventory / Equipment / Maint. due /
   Deliveries / Ops Health) are ALL point-in-time on-hand SNAPSHOT counts — none is a period sum —
   so the control mounts for consistency + resolves the range, but every tile carries the marker
   under a non-MTD window rather than re-deriving a (nonexistent) period figure. */
#page-operations .op-head-row .op-head-spacer { flex: 1 1 auto; }
#page-operations .op-asof {
  font-size: 10px; color: #8A857D; font-style: italic; margin-left: 4px;
  border: 1px solid rgba(255,255,255,0.08); border-radius: 999px; padding: 1px 7px;
  white-space: nowrap;
}
#page-operations .op-statusline {
  display: flex; align-items: center; gap: 10px; margin: 10px 0 18px;
  font-size: 13.5px; color: #C4BFB6;
}
#page-operations .op-statusline .op-dot {
  width: 10px; height: 10px; border-radius: 50%; background: #E8943A;
  box-shadow: 0 0 11px #E8943A; position: relative; flex: 0 0 auto;
}
#page-operations .op-statusline .op-dot::after {
  content: ""; position: absolute; inset: -5px; border-radius: 50%;
  border: 1px solid rgba(232,148,58,0.4); animation: opPulse 2.6s ease-out infinite;
}
#page-operations .op-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .op-statusline .op-fix { color: #E8943A; font-weight: 600; }

/* KPI band — 6 tiles */
#page-operations .op-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 13px; margin-bottom: 18px; }
#page-operations .op-kpi {
  position: relative; overflow: hidden;
  background: linear-gradient(165deg, #262320, #1f1c19);
  border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px;
  box-shadow: 0 16px 34px -28px #000, inset 0 1px 0 rgba(255,255,255,0.05);
  transition: transform .2s cubic-bezier(0.4,0,0.2,1), box-shadow .2s cubic-bezier(0.4,0,0.2,1), border-color .2s cubic-bezier(0.4,0,0.2,1);
}
#page-operations .op-kpi::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: #C9A84C; opacity: .55;
}
#page-operations .op-kpi.op-k-util::before { background: #C9A84C; }
#page-operations .op-kpi.op-k-inv::before { background: #E8943A; }
#page-operations .op-kpi.op-k-equip::before { background: #E8943A; }
#page-operations .op-kpi.op-k-maint::before { background: #E05555; }
#page-operations .op-kpi.op-k-deliv::before { background: #4CAF7D; }
#page-operations .op-kpi.op-k-health::before { background: #C9A84C; }
#page-operations .op-kpi:hover {
  transform: translateY(-3px); border-color: rgba(255,255,255,0.13);
  box-shadow: 0 22px 44px -26px #000, 0 0 0 1px rgba(201,168,76,0.14), 0 0 26px -12px rgba(201,168,76,0.45);
}
#page-operations .op-kpi .op-lbl {
  font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #8A857D;
  font-weight: 700; margin-bottom: 7px;
}
#page-operations .op-kpi .op-val {
  font-family: 'Montserrat', sans-serif; font-size: 23px; font-weight: 800;
  color: #F0EBE2; line-height: 1; font-variant-numeric: tabular-nums;
}
#page-operations .op-kpi .op-sub {
  font-size: 11.5px; margin-top: 7px; color: #8A857D; display: flex; align-items: center; gap: 5px;
}
#page-operations .op-kpi .op-sub .op-delta { font-weight: 700; }
#page-operations .op-kpi .op-sub .op-pos { color: #4CAF7D; }
#page-operations .op-kpi .op-sub .op-warn { color: #E8943A; }
#page-operations .op-kpi .op-sub .op-neg { color: #E05555; }
#page-operations .op-kpi .op-sub .op-blue { color: #5B9BD5; }
/* expand affordance chevron (S1a inert — visual fidelity only; click/hover wiring is S1b) */
#page-operations .op-kpi .op-expand {
  position: absolute; right: 11px; bottom: 11px; width: 16px; height: 16px;
  opacity: .38; transition: opacity .2s cubic-bezier(0.4,0,0.2,1), transform .2s cubic-bezier(0.4,0,0.2,1);
}
#page-operations .op-kpi:hover .op-expand { opacity: .9; transform: scale(1.12); }
#page-operations .op-kpi .op-expand svg { width: 16px; height: 16px; stroke: #C9A84C; }
#page-operations .op-kpi .op-hint-i {
  position: absolute; left: 16px; bottom: 11px; font-size: 8.5px; letter-spacing: .04em;
  color: #8A857D; opacity: 0; transition: opacity .2s cubic-bezier(0.4,0,0.2,1);
  font-weight: 600; white-space: nowrap; pointer-events: none;
}
#page-operations .op-kpi:hover .op-hint-i { opacity: .7; }
#page-operations .op-kpi .op-hint-i b { color: #C9A84C; font-weight: 700; }

/* layout: heatmap hero + attention */
#page-operations .op-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 18px; }
#page-operations .op-panel {
  background: linear-gradient(170deg, #252220, #1e1b19);
  border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px;
  box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05);
}
#page-operations .op-panel-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
#page-operations .op-panel-h h3 {
  font-family: 'Montserrat', sans-serif; font-size: 14px; letter-spacing: .4px;
  color: #F0EBE2; font-weight: 700; margin: 0;
}
#page-operations .op-panel-h .op-hint { font-size: 11px; color: #8A857D; }
#page-operations .op-panel-sub { font-size: 11.5px; color: #8A857D; margin: 2px 0 14px; }

/* capacity heatmap key visual */
#page-operations .op-heat-wrap { position: relative; padding: 4px 2px 2px; }
#page-operations #op-heatSvg { width: 100%; height: 268px; display: block; overflow: visible; }
#page-operations .op-heat-cell { cursor: pointer; transition: filter .18s cubic-bezier(0.4,0,0.2,1), opacity .42s cubic-bezier(0.4,0,0.2,1), transform .42s cubic-bezier(0.4,0,0.2,1); transform-box: fill-box; transform-origin: center; }
#page-operations .op-heat-cell .op-hc-body { transition: filter .18s cubic-bezier(0.4,0,0.2,1); }
#page-operations .op-heat-cell:hover .op-hc-body { filter: brightness(1.16) saturate(1.08); }
#page-operations .op-heat-cell:hover .op-hc-glow { opacity: .9; }
#page-operations .op-heat-cell .op-hc-glow { transition: opacity .2s cubic-bezier(0.4,0,0.2,1); }
#page-operations .op-heat-legend { display: flex; align-items: center; gap: 16px; margin-top: 12px; font-size: 10.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .op-heat-legend .op-scale { display: inline-flex; align-items: center; gap: 8px; }
#page-operations .op-heat-legend .op-scale .op-bar {
  width: 120px; height: 9px; border-radius: 5px;
  background: linear-gradient(90deg, #3a6f56, #4CAF7D, #E8943A, #E05555); border: 1px solid rgba(255,255,255,0.07);
}
#page-operations .op-heat-legend b { color: #C4BFB6; font-weight: 600; }

/* needs-attention list */
#page-operations .op-att-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
#page-operations .op-att-head h3 {
  font-family: 'Montserrat', sans-serif; font-size: 14px; letter-spacing: .4px;
  display: flex; align-items: center; gap: 9px; color: #F0EBE2; font-weight: 700; margin: 0;
}
#page-operations .op-att-head h3 .op-glyph {
  width: 24px; height: 24px; border-radius: 8px;
  background: linear-gradient(150deg, rgba(224,85,85,0.24), rgba(232,148,58,0.12));
  display: grid; place-items: center; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
#page-operations .op-att-head h3 .op-glyph svg { width: 14px; height: 14px; }
#page-operations .op-att-head .op-count {
  font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 700; color: #F0EBE2;
  background: rgba(232,148,58,0.16); border: 1px solid rgba(232,148,58,0.36);
  border-radius: 999px; padding: 3px 11px; letter-spacing: .03em;
}
#page-operations .op-att-list { display: flex; flex-direction: column; gap: 9px; }
#page-operations .op-att {
  display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: 12px;
  background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07);
  transition: .18s cubic-bezier(0.4,0,0.2,1); position: relative; overflow: hidden;
}
#page-operations .op-att::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  border-radius: 12px 0 0 12px; background: var(--op-lvl, #C9A84C);
}
#page-operations .op-att:hover { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.13); transform: translateX(2px); }
#page-operations .op-att.op-p1 {
  --op-lvl: #E05555; border-color: rgba(224,85,85,0.36);
  background: linear-gradient(108deg, rgba(224,85,85,0.12), rgba(255,255,255,0.018) 46%); padding: 14px 15px;
}
#page-operations .op-att.op-p1::before { box-shadow: 0 0 18px rgba(224,85,85,0.5); }
#page-operations .op-att.op-p1::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(360px 140px at 0% 50%, rgba(224,85,85,0.10), transparent 70%); pointer-events: none;
}
#page-operations .op-att.op-amber { --op-lvl: #E8943A; }
#page-operations .op-att.op-red { --op-lvl: #E05555; }
#page-operations .op-att.op-blue { --op-lvl: #5B9BD5; }
#page-operations .op-att .op-rank {
  font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 12px; color: #8A857D;
  width: 16px; text-align: center; flex-shrink: 0; z-index: 1;
}
#page-operations .op-att.op-p1 .op-rank { font-size: 17px; color: #E05555; width: 20px; }
#page-operations .op-att .op-ico {
  width: 32px; height: 32px; border-radius: 9px; flex: none;
  display: flex; align-items: center; justify-content: center; z-index: 1;
}
#page-operations .op-att.op-p1 .op-ico { width: 40px; height: 40px; border-radius: 11px; box-shadow: 0 0 18px -4px rgba(224,85,85,0.45); }
#page-operations .op-att .op-ico svg { width: 16px; height: 16px; }
#page-operations .op-att.op-p1 .op-ico svg { width: 20px; height: 20px; }
#page-operations .op-att .op-ic-amber { background: rgba(232,148,58,0.14); } #page-operations .op-att .op-ic-amber svg { stroke: #E8943A; }
#page-operations .op-att .op-ic-gold { background: rgba(201,168,76,0.14); } #page-operations .op-att .op-ic-gold svg { stroke: #C9A84C; }
#page-operations .op-att .op-ic-red { background: rgba(224,85,85,0.14); } #page-operations .op-att .op-ic-red svg { stroke: #E05555; }
#page-operations .op-att .op-ic-blue { background: rgba(91,155,213,0.14); } #page-operations .op-att .op-ic-blue svg { stroke: #5B9BD5; }
#page-operations .op-att-body { flex: 1; min-width: 0; z-index: 1; }
#page-operations .op-att-top { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; }
#page-operations .op-att-top .op-tt { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; }
#page-operations .op-att.op-p1 .op-att-top .op-tt { font-size: 14.5px; }
#page-operations .op-att-top .op-amt { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 12.5px; }
#page-operations .op-att .op-desc { font-size: 11.5px; color: #8A857D; margin-top: 3px; line-height: 1.4; }
#page-operations .op-att.op-p1 .op-desc { font-size: 12px; color: #C4BFB6; }
#page-operations .op-att .op-desc b { color: #C4BFB6; font-weight: 600; }
#page-operations .op-att .op-att-act { flex: none; z-index: 1; }
#page-operations .op-att .op-att-act .op-btn {
  font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer;
  border-radius: 8px; padding: 7px 14px; border: 1px solid rgba(255,255,255,0.13);
  background: rgba(255,255,255,0.04); color: #C4BFB6; transition: all .18s cubic-bezier(0.4,0,0.2,1);
  white-space: nowrap; box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
}
#page-operations .op-att .op-att-act .op-btn:hover { background: rgba(255,255,255,0.09); color: #F0EBE2; transform: translateY(-1px); border-color: #C9A84C; }
#page-operations .op-att.op-p1 .op-att-act .op-btn {
  background: linear-gradient(180deg, #E05555, #b94545); border-color: transparent; color: #fff;
  font-weight: 700; padding: 9px 18px; box-shadow: 0 4px 16px -5px rgba(224,85,85,0.5);
}

/* heatmap cell tooltip (intrinsic to the hero visual; in S1a) */
#page-operations .op-heat-tip {
  position: fixed; z-index: 90; pointer-events: none; display: none;
  background: linear-gradient(170deg, rgba(38,35,32,0.98), rgba(28,25,22,0.98));
  border: 1px solid rgba(201,168,76,0.32); border-radius: 10px; padding: 8px 11px;
  box-shadow: 0 18px 44px -16px #000, 0 0 0 1px rgba(201,168,76,0.1);
  backdrop-filter: blur(10px); font-size: 11px; color: #C4BFB6; white-space: nowrap;
  transform: translate(-50%, -118%);
}
#page-operations .op-heat-tip b { color: #F0EBE2; font-family: 'Montserrat', sans-serif; font-weight: 700; }
#page-operations .op-heat-tip .op-ht-pct { font-family: 'Montserrat', sans-serif; font-weight: 800; }

/* FIX_HONEST_EMPTY_PRESERVE_STRUCTURE_S3_2026_06_20 — honest-empty needs-attention skeleton
   (Operations-scoped mirror of #page-risk .rk-att-skel / .rk-skel-* L10578).
   ⛔ FIX_OPS_ORPHAN_SKEL_CSS_2026_09_08 — #page-operations .op-att-skel: THIS RULESET IS NO
   LONGER EMITTED BY ANY JS PATH. The original note's claim about what a real account renders is
   SUPERSEDED and is paraphrased rather than quoted here so a sweep for the retired wording does not
   match the note correcting it: it described a five-row loading skeleton plus an honest empty note
   for real accounts, wired by this same comment's own marker on 2026-06-20. The code that emitted it
   was removed by FIX_STAGING_PROVEOUT_BATCH2_2026_07_08 (2026-07-08) — a real account now reaches
   the live-derivation path (symbol anchor renderOperationsAttention, src/render_operations.js:3657)
   with no skeleton stage at all. The rules below are RETAINED, not deleted, for the same reason
   stated in the Risk sibling's own addendum: they are the styling a future honest-empty skeleton
   would reuse, and removing live CSS on the strength of a grep is the class of change no mechanical
   gate in this project can check. Sibling: the Risk mirror (#page-risk .rk-att-skel) carries the
   matching addendum at FIX_RISK_DEMOGATE_SWEEP_S2M3_2026_09_08, which independently converged on
   the same RETAIN-and-document disposition three days earlier. */
#page-operations .op-att-skel {
  display: flex; align-items: center; gap: 12px; position: relative;
  padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.02);
}
#page-operations .op-att-skel::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; border-radius: 12px 0 0 12px; background: rgba(255,255,255,0.06); }
#page-operations .op-att-skel .op-skel-rank { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 12px; color: #8A857D; opacity: .45; width: 16px; text-align: center; flex: none; }
#page-operations .op-att-skel .op-skel-ico { width: 32px; height: 32px; border-radius: 9px; flex: none; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .op-att-skel .op-skel-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 7px; }
#page-operations .op-att-skel .op-skel-line { height: 9px; border-radius: 5px; background: rgba(255,255,255,0.05); }
#page-operations .op-att-skel .op-skel-line.w1 { width: 62%; } #page-operations .op-att-skel .op-skel-line.w2 { width: 84%; }
#page-operations .op-att-skel .op-skel-act { flex: none; }
#page-operations .op-att-empty-note { font-size: 11.5px; color: #8A857D; line-height: 1.5; margin-top: 4px; padding: 2px 4px; }
#page-operations .op-att-empty-note b { color: #C4BFB6; font-weight: 600; }

#page-operations .op-footnote { font-size: 10px; color: #8A857D; margin-top: 18px; text-align: center; opacity: .7; }
/* interactive-tile affordance (S1b-1 wired: data-pop tiles are keyboard-reachable buttons) */
#page-operations .op-kpi[data-pop] { cursor: pointer; }
#page-operations .op-kpi[data-pop]:focus-visible { outline: 2px solid rgba(201,168,76,0.6); outline-offset: 2px; }
#page-operations .op-kpi.op-pop-open { border-color: rgba(201,168,76,0.32); box-shadow: 0 22px 44px -26px #000, 0 0 0 1px rgba(201,168,76,0.22), 0 0 30px -10px rgba(201,168,76,0.5); }
/* interactive-tile affordance (S1b-1 wired: data-pop tiles are keyboard-reachable buttons) */
#page-operations .opo-kpi[data-pop] { cursor: pointer; }
#page-operations .opo-kpi[data-pop]:focus-visible { outline: 2px solid rgba(201,168,76,0.6); outline-offset: 2px; }
#page-operations .opo-kpi.opo-pop-open { border-color: rgba(201,168,76,0.32); box-shadow: 0 22px 44px -26px #000, 0 0 0 1px rgba(201,168,76,0.22), 0 0 30px -10px rgba(201,168,76,0.5); }

@media (max-width: 920px) {
  #page-operations .op-kpis { grid-template-columns: repeat(3, 1fr); }
  #page-operations .op-grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  #page-operations .op-statusline .op-dot::after { animation: none !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
   FIX_OPS_INVENTORY_S1_2026_06_16 — Operations Inventory room styles, scoped under
   #page-operations .inv-*. Built TO design_samples/operations_inventory/
   inventory_management_combined.html (Items tab + item dossier + add-item drawer) at
   ultra-HD fidelity. Literal hex values mirror the sample's :root tokens. ASCII-only
   comments throughout (a non-ASCII char silently drops the rule from the CSSOM — the
   established L18.8 lesson). The persistent Operations rail is untouched; these styles
   govern only the in-#operations-content room surface (tab bar + Items panel + dossier).
   ════════════════════════════════════════════════════════════════════════════ */
/* room header */
#page-operations .inv-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 18px; }
#page-operations .inv-head h1 { font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: 800; letter-spacing: -.01em; color: #F0EBE2; margin: 0 0 5px; }
#page-operations .inv-head .inv-sub { font-size: 13px; color: #8A857D; max-width: 620px; }
/* in-page tab bar (rooms-as-in-page-tabs; never a competing rail) */
#page-operations .inv-tabs { display: flex; gap: 4px; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 5px; margin-bottom: 22px; flex-wrap: wrap; }
#page-operations .inv-tab { flex: 1 1 0; min-width: 110px; border: 0; background: transparent; color: #8A857D; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 13px; padding: 11px 14px; border-radius: 8px; display: flex; align-items: center; justify-content: center; gap: 8px; transition: background .18s, color .18s; cursor: pointer; }
#page-operations .inv-tab .inv-tdot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .55; }
#page-operations .inv-tab:hover { color: #C4BFB6; }
#page-operations .inv-tab.on { background: #232120; color: #F0EBE2; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.13); }
#page-operations .inv-tab.on .inv-tdot { opacity: 1; color: #C9A84C; }
#page-operations .inv-tab.inv-tab-coming { opacity: .8; }
/* toolbar + status-filter chips */
#page-operations .inv-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
#page-operations .inv-chips { display: flex; gap: 7px; flex-wrap: wrap; }
#page-operations .inv-chip { font-size: 12.5px; font-weight: 600; padding: 7px 13px; border-radius: 999px; font-family: 'Montserrat', sans-serif; border: 1px solid rgba(255,255,255,0.07); color: #8A857D; background: #1C1A17; transition: all .12s; white-space: nowrap; cursor: pointer; }
#page-operations .inv-chip:hover { color: #C4BFB6; border-color: rgba(255,255,255,0.13); }
#page-operations .inv-chip.on { background: #C9A84C; color: #1a160c; border-color: #C9A84C; box-shadow: 0 0 14px -4px rgba(201,168,76,0.28); }
#page-operations .inv-chip .inv-ct { opacity: .6; margin-left: 5px; }
/* item-master table */
#page-operations .inv-card { background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; }
#page-operations .inv-table { width: 100%; border-collapse: collapse; }
#page-operations .inv-table thead th { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: #8A857D; text-align: left; padding: 13px 14px; background: rgba(255,255,255,0.015); border-bottom: 1px solid rgba(255,255,255,0.07); white-space: nowrap; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-table thead th.num { text-align: right; }
#page-operations .inv-table tbody td { padding: 13px 14px; border-bottom: 1px solid rgba(255,255,255,0.07); vertical-align: middle; font-size: 13.5px; color: #C4BFB6; }
#page-operations .inv-table tbody tr:last-child td { border-bottom: none; }
#page-operations .inv-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
#page-operations .inv-table tbody tr.inv-clickable { transition: background .12s; cursor: pointer; }
#page-operations .inv-table tbody tr.inv-clickable:hover { background: rgba(255,255,255,.02); }
#page-operations .inv-thumb { width: 36px; height: 36px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #16140F; box-shadow: inset 0 0 0 1px rgba(0,0,0,.25); }
#page-operations .inv-iname { color: #F0EBE2; font-weight: 600; }
#page-operations .inv-sku { color: #8A857D; font-size: 12.5px; letter-spacing: .02em; }
#page-operations .inv-muted { color: #8A857D; }
#page-operations .inv-tbadge { font-size: 10.5px; font-weight: 700; letter-spacing: .03em; padding: 2px 7px; border-radius: 5px; text-transform: uppercase; white-space: nowrap; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-tbadge.composed { background: rgba(91,155,213,.14); color: #5B9BD5; }
#page-operations .inv-tbadge.simple { background: rgba(255,255,255,.05); color: #8A857D; }
/* FIX_INV_INGEST_VARIANTS_2026_08_09 (v1.25) — the tracking-grain badges beside the two shipped
   item_type badges above. ⛔ AUTHORED INSIDE THE SAME ID-SCOPED BLOCK DELIBERATELY: the sibling
   rules are #page-operations-scoped, so a bare .inv-tbadge.variants rule would be out-specified
   by them and the badge would silently paint as the default grey — visible only on screen, which
   no source-verification or mechanical gate can catch. Gold for variants (the grain this build
   surfaces), muted distinct tones for the two grains that exist on the record but have no
   ingestion path yet. */
#page-operations .inv-tbadge.variants { background: rgba(201,168,76,.16); color: #C9A84C; }
#page-operations .inv-tbadge.lots { background: rgba(122,162,132,.14); color: #7AA284; }
#page-operations .inv-tbadge.serial { background: rgba(160,130,190,.14); color: #A082BE; }
#page-operations .inv-pill { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; white-space: nowrap; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-pill .inv-pd { width: 6px; height: 6px; border-radius: 50%; }
#page-operations .inv-pill.ok { background: rgba(76,175,125,.12); color: #4CAF7D; } #page-operations .inv-pill.ok .inv-pd { background: #4CAF7D; }
#page-operations .inv-pill.low { background: rgba(232,148,58,.13); color: #E8943A; } #page-operations .inv-pill.low .inv-pd { background: #E8943A; }
#page-operations .inv-pill.out { background: rgba(224,85,85,.13); color: #E05555; } #page-operations .inv-pill.out .inv-pd { background: #E05555; }
/* FIX_OPS_ASSETS_S1_2026_06_16 — asset-register delta. The Register tab reuses the inv-
   table/drawer/field/button/detail/kv classes verbatim; only these ast- additions diverge:
   a table-cell category icon (vs inv-thumb monogram), a make/model sub-line, an asset-status
   pill (Active/In repair/Retired — distinct statuses from inventory's ok/low/out), and a
   condition/notes block. */
#page-operations .ast-ic { width: 36px; height: 36px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 18px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-make { color: #8A857D; font-size: 12px; }
#page-operations .ast-pill { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; white-space: nowrap; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-pill .ast-pd { width: 6px; height: 6px; border-radius: 50%; }
#page-operations .ast-pill.active { background: rgba(76,175,125,.12); color: #4CAF7D; } #page-operations .ast-pill.active .ast-pd { background: #4CAF7D; }
#page-operations .ast-pill.repair { background: rgba(232,148,58,.13); color: #E8943A; } #page-operations .ast-pill.repair .ast-pd { background: #E8943A; }
#page-operations .ast-pill.retired { background: rgba(138,133,125,.16); color: #8A857D; } #page-operations .ast-pill.retired .ast-pd { background: #8A857D; }
#page-operations .ast-note { color: #C4BFB6; font-size: 13px; line-height: 1.55; padding: 4px 0 8px; }
/* FIX_AST_EDITOR_S1_2026_06_16 — rich industry-adaptive asset editor delta. The editor
   reuses the FIX_INV_EDITOR_S1/_S2/_S3 vocabulary VERBATIM (inv-drawer-2pane, inv-istrip,
   inv-typegrid, inv-acc, inv-mcalc/inv-mc-*, inv-rail, inv-completeness, inv-cm-tip-*,
   inv-cf-row, inv-tagchips, inv-foot-echo/actions, inv-seg) — all already #page-operations-
   scoped, so the asset editor (rendered inside #page-operations) inherits them with NO
   duplication. Only these ast- additions diverge from the inventory pattern: a register
   per-row Edit affordance (icon-button + actions cell) and a derived-readout help colour for
   the "computed, never stored" depreciation note. Built TO design_samples/operations_assets/
   asset_5_asset_detail.html (spec groups L335-L353) + asset_1_register.html; ASCII-only
   comments; literal hex mirror the inv-* tokens. NOT an import of a sample sheet. */
#page-operations .ast-edit-btn { background: none; border: 1px solid rgba(255,255,255,0.10); color: #8A857D; cursor: pointer; font-size: 13px; line-height: 1; padding: 6px 9px; border-radius: 8px; font-family: 'Montserrat', sans-serif; transition: all .12s; }
#page-operations .ast-edit-btn:hover { color: #C9A84C; border-color: rgba(201,168,76,0.35); background: rgba(201,168,76,0.06); }
#page-operations td.ast-actions { width: 64px; text-align: right; white-space: nowrap; }
/* derived-readout "computed, never stored" emphasis (sits in an inv-help slot under the
   depreciation calculator) */
#page-operations .ast-derived-note { font-size: 11px; color: #C9A84C; margin-top: 7px; font-family: 'Montserrat', sans-serif; font-weight: 600; letter-spacing: .02em; }
/* FIX_AST_REGISTER_S3A_2026_06_16 — Register instrumentation delta (built TO design_samples/
   operations_assets/asset_1_register.html): the 5-card KPI summary strip (.ast-summary /
   .ast-scard / .ast-scard.hero + sparkline canvas), the in-toolbar search (.ast-search), the
   group-by-category toggle (.ast-grp), sortable-header arrows (th.ast-sortable / .ast-arrow),
   condition mini-bars in rows (.ast-cond), and the added Book value / Next maintenance /
   Warranty columns (.ast-money.book / .ast-maint / .ast-warr). Literal hex mirrors the existing
   inv-* /ast-* tokens (no :root redefinition); geometry ports the sample's .summary/.scard/
   FIX_CSS_COMMENT_GLOB_SWALLOW_2026_07_29 - glob slashes spaced so this comment cannot self-close.
   .toolbar/.cond/.maint/.warr blocks adapted to the #page-operations scope. */
#page-operations .ast-summary { display: grid; grid-template-columns: 1.25fr repeat(4, 1fr); gap: 14px; margin-bottom: 22px; }
@media (max-width: 1100px) { #page-operations .ast-summary { grid-template-columns: 1fr 1fr 1fr; } #page-operations .ast-scard.hero { grid-column: 1 / -1; } }
#page-operations .ast-scard { position: relative; background: linear-gradient(168deg, #232120, #1d1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px 16px; overflow: hidden; box-shadow: 0 18px 40px -28px rgba(0,0,0,.8); }
#page-operations .ast-scard::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255,255,255,.10), transparent); }
#page-operations .ast-scard.hero { background: linear-gradient(160deg, rgba(201,168,76,0.13), rgba(35,33,32,0.6) 46%); }
#page-operations .ast-scard.hero::after { content: ""; position: absolute; right: -60px; top: -60px; width: 180px; height: 180px; border-radius: 50%; background: radial-gradient(circle, rgba(201,168,76,.20), transparent 68%); pointer-events: none; }
#page-operations .ast-scard .ast-sclbl { font-family: 'Montserrat', sans-serif; font-size: 10.5px; letter-spacing: .13em; text-transform: uppercase; color: #8A857D; margin-bottom: 9px; }
#page-operations .ast-scard .ast-scval { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 30px; letter-spacing: -.5px; color: #F0EBE2; line-height: 1; font-variant-numeric: tabular-nums; }
#page-operations .ast-scard.hero .ast-scval { font-size: 34px; color: #C9A84C; text-shadow: 0 0 26px rgba(201,168,76,.30); }
#page-operations .ast-scard .ast-scmeta { font-size: 11.5px; color: #8A857D; margin-top: 8px; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
#page-operations .ast-scard .ast-pulse { display: inline-block; width: 7px; height: 7px; border-radius: 50%; }
#page-operations .ast-scard canvas.ast-spark { display: block; width: 100%; height: 34px; margin-top: 10px; }
#page-operations .ast-chip-mini { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 20px; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-chip-mini.green { color: #4CAF7D; background: rgba(76,175,125,.13); }
#page-operations .ast-chip-mini.amber { color: #E8943A; background: rgba(232,148,58,.13); }
#page-operations .ast-chip-mini.red { color: #E05555; background: rgba(224,85,85,.14); }
#page-operations .ast-chip-mini.blue { color: #5B9BD5; background: rgba(91,155,213,.13); }
/* FIX_ASTPANEL_SHIMBOUNDARY_2026_08_07 (v1.25) 3.1 - chip-mini hoisted to ambient.
   Its only definition lived inside __astRenderRegisterPanel's inline shim, mounted into
   #ast-panel and destroyed whenever a sibling tab-render replaced that host. Overview emits
   the same chip but __astOvKitShim never defined it, so a cold entry to the Overview tab
   painted it at UA defaults on every paint. COPY, not move - the shim rules stay; Register
   still wins by source order at identical specificity and its declarations match these byte
   for byte, so Register's rendering is unchanged. Ambient rules no innerHTML write can destroy. */
#page-operations .vk .chip-mini{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.02em;line-height:1.4;}
#page-operations .vk .chip-mini.blue{background:rgba(94,155,208,0.16);color:#8FB8DA;border:1px solid rgba(94,155,208,0.28);}
#page-operations .vk .chip-mini.amber{background:rgba(232,148,58,0.14);color:#E8943A;border:1px solid rgba(232,148,58,0.28);}
#page-operations .vk .chip-mini.red{background:rgba(224,85,85,0.14);color:#E05555;border:1px solid rgba(224,85,85,0.28);}
/* FIX_ASTPANEL_SHIMBOUNDARY_2026_08_07 (v1.25) 3.2 - s-hint hoisted to ambient.
   Its only definition lived inside __astOvKitShim, so __astRenderMaintenancePanel - which emits
   the hint at three sechead sites and prepends __astMntKitShim, a shim that never defined it -
   rendered it at inherited size and colour on every paint. COPY, not move; the shim copy is a
   single-site preserve with no redundancy, so it is left byte-identical. */
#page-operations .vk .sechead .s-hint{font-size:11.5px;color:var(--mut,#A9A398);}
/* in-toolbar search + group toggle */
#page-operations .ast-search { position: relative; flex: 0 0 auto; }
#page-operations .ast-search input { width: 260px; background: #1C1A17; border: 1px solid rgba(255,255,255,0.12); border-radius: 10px; color: #F0EBE2; font-family: 'Open Sans', sans-serif; font-size: 13.5px; padding: 9px 14px 9px 36px; outline: none; transition: border-color .25s, box-shadow .25s, width .3s cubic-bezier(.22,.61,.36,1); }
#page-operations .ast-search input::placeholder { color: #8A857D; }
#page-operations .ast-search input:focus { border-color: rgba(201,168,76,.55); box-shadow: 0 0 0 3px rgba(201,168,76,.12); width: 300px; }
#page-operations .ast-search svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #8A857D; }
#page-operations .ast-spacer { flex: 1 1 auto; }
#page-operations .ast-grp { display: inline-flex; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; padding: 3px; gap: 2px; }
#page-operations .ast-grp button { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 11.5px; color: #8A857D; background: transparent; border: none; padding: 6px 12px; border-radius: 7px; cursor: pointer; transition: color .2s, background .2s; }
#page-operations .ast-grp button.on { color: #F0EBE2; background: #232120; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.12); }
/* sortable header arrows */
#page-operations .inv-table thead th.ast-sortable { cursor: pointer; transition: color .2s; user-select: none; }
#page-operations .inv-table thead th.ast-sortable:hover { color: #C4BFB6; }
#page-operations .inv-table thead th .ast-arrow { display: inline-block; margin-left: 5px; opacity: 0; transform: translateY(1px); transition: opacity .2s; color: #C9A84C; }
#page-operations .inv-table thead th.ast-sorted .ast-arrow { opacity: 1; }
/* group header row */
#page-operations .inv-table tr.ast-group-row td { padding: 12px 14px 7px; font-family: 'Montserrat', sans-serif; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #C9A84C; background: rgba(201,168,76,.04); border-bottom: 1px solid rgba(255,255,255,0.07); }
/* status-stripe on in-repair / overdue rows */
#page-operations .inv-table tr.ast-st-repair td:first-child, #page-operations .inv-table tr.ast-st-overdue td:first-child { position: relative; }
#page-operations .inv-table tr.ast-st-repair td:first-child::before, #page-operations .inv-table tr.ast-st-overdue td:first-child::before { content: ""; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px; border-radius: 3px; }
#page-operations .inv-table tr.ast-st-repair { background: rgba(224,85,85,.045); }
#page-operations .inv-table tr.ast-st-repair td:first-child::before { background: #E05555; box-shadow: 0 0 12px rgba(224,85,85,.6); }
#page-operations .inv-table tr.ast-st-overdue { background: rgba(232,148,58,.04); }
#page-operations .inv-table tr.ast-st-overdue td:first-child::before { background: #E8943A; box-shadow: 0 0 12px rgba(232,148,58,.55); }
/* condition mini-bar cell */
#page-operations .ast-cond { min-width: 96px; }
#page-operations .ast-cond .ast-ctxt { font-size: 11.5px; font-weight: 600; margin-bottom: 5px; }
#page-operations .ast-cond .ast-cbar { height: 5px; border-radius: 4px; background: rgba(255,255,255,.06); overflow: hidden; position: relative; }
#page-operations .ast-cond .ast-cfill { height: 100%; border-radius: 4px; width: 0; transition: width 1s cubic-bezier(.22,.61,.36,1); }
#page-operations .ast-cond .ast-cnote { font-size: 10px; color: #8A857D; margin-top: 3px; }
/* money / book / maintenance / warranty columns */
#page-operations .inv-table td.ast-money { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; color: #C4BFB6; white-space: nowrap; }
#page-operations .inv-table td.ast-money.book { color: #F0EBE2; }
#page-operations .ast-maint { white-space: nowrap; font-size: 12.5px; }
#page-operations .ast-maint.soon { color: #E8943A; font-weight: 600; }
#page-operations .ast-maint.over { color: #E05555; font-weight: 700; }
#page-operations .ast-maint.none { color: #8A857D; }
#page-operations .ast-maint .ast-mdot { display: inline-block; width: 5px; height: 5px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
#page-operations .ast-maint.soon .ast-mdot { background: #E8943A; box-shadow: 0 0 7px #E8943A; }
#page-operations .ast-maint.over .ast-mdot { background: #E05555; box-shadow: 0 0 7px #E05555; }
#page-operations .ast-warr { white-space: nowrap; font-size: 12.5px; color: #C4BFB6; }
#page-operations .ast-warr.exp { color: #E05555; font-weight: 700; }
@media (prefers-reduced-motion: reduce) { #page-operations .ast-cond .ast-cfill { transition: none !important; } }
/* FIX_OPS_ASSETS_S2_2026_06_16 — Maintenance (work-order) delta: hero, in-repair callout,
   work-order card with left status-stripe, type badges, due-state colours, history rows. */
#page-operations .mnt-hero { display: grid; grid-template-columns: 1.55fr 1fr; gap: 24px; background: radial-gradient(640px 260px at 0% 0%, rgba(201,168,76,0.08), transparent 60%), linear-gradient(150deg,#262320,#1A1815); border: 1px solid rgba(255,255,255,0.13); border-radius: 16px; padding: 26px 28px; margin-bottom: 26px; }
@media (max-width: 760px) { #page-operations .mnt-hero { grid-template-columns: 1fr; } }
#page-operations .mnt-hero-stats { display: flex; gap: 34px; flex-wrap: wrap; align-self: center; }
#page-operations .mnt-stat .mnt-num { font-family: 'Montserrat', sans-serif; font-weight: 800; line-height: .95; font-size: clamp(30px,4.4vw,48px); letter-spacing: -.02em; color: #C9A84C; font-variant-numeric: tabular-nums; }
#page-operations .mnt-stat.red .mnt-num { color: #E05555; }
#page-operations .mnt-stat .mnt-lbl { margin-top: 8px; font-size: 12px; color: #8A857D; letter-spacing: .05em; text-transform: uppercase; font-weight: 600; }
#page-operations .mnt-callout { align-self: center; border: 1px solid rgba(232,148,58,0.34); border-radius: 10px; background: radial-gradient(240px 110px at 100% 0%, rgba(232,148,58,0.16), transparent 65%), linear-gradient(150deg, rgba(232,148,58,0.10), rgba(232,148,58,0.02)); padding: 17px 19px; }
#page-operations .mnt-callout-tag { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #E8943A; }
#page-operations .mnt-callout-tag .mnt-gd { width: 8px; height: 8px; border-radius: 50%; background: #E8943A; box-shadow: 0 0 0 3px rgba(232,148,58,0.18), 0 0 10px rgba(232,148,58,0.85); }
#page-operations .mnt-callout-asset { margin-top: 10px; font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 18px; }
#page-operations .mnt-callout-sub { margin-top: 4px; font-size: 13px; color: #C4BFB6; }
#page-operations .mnt-callout-meta { margin-top: 9px; font-size: 12px; color: #8A857D; }
#page-operations .mnt-sec-h { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 14px; flex-wrap: wrap; }
#page-operations .mnt-sec-h h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 17px; letter-spacing: .02em; }
#page-operations .mnt-hint { font-size: 12.5px; color: #8A857D; }
#page-operations .mnt-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 760px) { #page-operations .mnt-grid { grid-template-columns: 1fr; } }
#page-operations .mnt-wo { position: relative; overflow: hidden; background: linear-gradient(155deg,#262320,#1E1B18); border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; padding: 17px 19px 15px; }
#page-operations .mnt-wo::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #5B9BD5; }
#page-operations .mnt-wo.overdue::before { background: #E05555; box-shadow: 0 0 18px rgba(224,85,85,0.55); }
#page-operations .mnt-wo.soon::before { background: #E8943A; box-shadow: 0 0 14px rgba(232,148,58,0.45); }
#page-operations .mnt-wo.scheduled::before { background: #5B9BD5; }
#page-operations .mnt-wo-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
#page-operations .mnt-wo-asset { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 15px; }
#page-operations .mnt-inrep { color: #E8943A; font-size: 11px; font-weight: 700; }
#page-operations .mnt-wo-code { font-size: 11px; color: #8A857D; letter-spacing: .05em; margin-top: 2px; }
#page-operations .mnt-wo-task { margin-top: 10px; font-size: 14px; color: #C4BFB6; }
#page-operations .mnt-badge { display: inline-flex; align-items: center; gap: 5px; flex: none; font-size: 10.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px; font-family: 'Montserrat', sans-serif; }
#page-operations .mnt-badge.prev { background: rgba(76,175,125,0.12); color: #7FCFA6; border: 1px solid rgba(76,175,125,0.3); }
#page-operations .mnt-badge.rep { background: rgba(224,85,85,0.12); color: #F08C8C; border: 1px solid rgba(224,85,85,0.3); }
#page-operations .mnt-badge.insp { background: rgba(91,155,213,0.12); color: #8FC0EA; border: 1px solid rgba(91,155,213,0.3); }
#page-operations .mnt-wo-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 13px; }
#page-operations .mnt-m { display: flex; flex-direction: column; gap: 2px; }
#page-operations .mnt-m .mnt-k { font-size: 10px; color: #8A857D; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
#page-operations .mnt-m .mnt-v { font-size: 13px; color: #C4BFB6; font-weight: 600; }
#page-operations .mnt-m .mnt-v.red { color: #F08C8C; } #page-operations .mnt-m .mnt-v.amber { color: #E8943A; } #page-operations .mnt-m .mnt-v.gold { color: #C9A84C; }
#page-operations .mnt-wo-actions { display: flex; gap: 8px; margin-top: 15px; }
#page-operations .mnt-newbar { display: flex; justify-content: flex-end; margin-top: 16px; }
#page-operations .mnt-empty { grid-column: 1 / -1; padding: 30px; text-align: center; color: #8A857D; font-size: 13.5px; }
#page-operations .mnt-hist-item { display: flex; align-items: center; gap: 13px; padding: 11px 0; border-bottom: 1px solid rgba(255,255,255,0.05); }
#page-operations .mnt-hist-item:last-child { border-bottom: none; }
#page-operations .mnt-hist-check { width: 26px; height: 26px; border-radius: 50%; flex: none; background: rgba(76,175,125,0.14); border: 1px solid rgba(76,175,125,0.36); color: #4CAF7D; display: grid; place-items: center; font-size: 13px; }
#page-operations .mnt-hist-body { flex: 1; min-width: 0; }
#page-operations .mnt-hist-top { font-size: 13.5px; color: #F0EBE2; font-weight: 600; }
#page-operations .mnt-hist-bot { font-size: 11.5px; color: #8A857D; margin-top: 2px; }
#page-operations .mnt-hist-cost { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 700; color: #C4BFB6; }
#page-operations .mnt-hist-empty { padding: 18px; text-align: center; color: #8A857D; font-size: 13px; }
/* FIX_ASSET_AUTOMAINT_P1_2026_07_21 — data-driven PM-schedules panel (reintroduced from
   design_samples/operations_assets/asset_2_maintenance.html; per-plan next-due + overdue + source badge). */
#page-operations .ast-pm-wrap { background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; overflow: hidden; }
#page-operations .ast-pm-head, #page-operations .ast-pm-row { display: grid; grid-template-columns: 2fr .7fr 1.1fr 1.2fr 1.4fr; gap: 14px; align-items: center; padding: 12px 18px; }
#page-operations .ast-pm-head { font-family: 'Montserrat', sans-serif; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: #8A857D; font-weight: 700; border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-pm-row { position: relative; border-bottom: 1px solid rgba(255,255,255,0.045); font-size: 13px; color: #C4BFB6; }
#page-operations .ast-pm-row:last-child { border-bottom: none; }
#page-operations .ast-pm-row::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #5B9BD5; }
#page-operations .ast-pm-row.overdue::before { background: #E05555; box-shadow: 0 0 14px rgba(224,85,85,0.5); }
#page-operations .ast-pm-row.soon::before { background: #E8943A; }
#page-operations .ast-pm-asset { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 14px; }
#page-operations .ast-pm-task { font-size: 12px; color: #8A857D; margin-top: 2px; }
#page-operations .ast-pm-due.red { color: #F08C8C; font-weight: 600; } #page-operations .ast-pm-due.amber { color: #E8943A; font-weight: 600; }
#page-operations .ast-pm-basis { display: inline-flex; font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-pm-basis.time { background: rgba(91,155,213,0.12); color: #8FC0EA; border: 1px solid rgba(91,155,213,0.3); }
#page-operations .ast-pm-basis.usage { background: rgba(201,168,76,0.12); color: #D8BE72; border: 1px solid rgba(201,168,76,0.3); }
#page-operations .ast-pm-src { display: inline-flex; font-size: 10.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px; line-height: 1.3; }
#page-operations .ast-pm-src.def { background: rgba(255,255,255,0.05); color: #8A857D; border: 1px solid rgba(255,255,255,0.09); }
#page-operations .ast-pm-src.mfr { background: rgba(76,175,125,0.12); color: #7FCFA6; border: 1px solid rgba(76,175,125,0.3); }
/* FIX_ASSET_AUTO_MAINT_PLAN_2026_07_21 — category-default + owner-adjusted provenance badges. */
#page-operations .ast-pm-src.cat { background: rgba(91,155,213,0.10); color: #9CC2E6; border: 1px solid rgba(91,155,213,0.28); }
#page-operations .ast-pm-src.man { background: rgba(201,168,76,0.12); color: #D8BE72; border: 1px solid rgba(201,168,76,0.3); }
/* FIX_FACILITIES_PLANT_DELETE_SERVICE_2026_09_04 -- regulatory-source badge; colour reuses the
   existing #E05555 "overdue" accent (see .opfac-plant-row b.overdue) at the same opacity
   convention as the other three badges above. */
#page-operations .ast-pm-src.reg { background: rgba(224,85,85,0.12); color: #E88888; border: 1px solid rgba(224,85,85,0.3); }
/* FIX_FIRESAFETY_CADENCE_RECORD_2026_09_04 -- advisory-source badge (CCOHS-class OHS guidance,
   never a BC regulatory citation). Reuses this codebase's established violet/lavender
   informational hue (rgba(155,127,212,*), matching e.g. #page-accountant-lens .al-ye-tag /
   #page-people .bn-elig.team / #financial-content .fpay-pill.refunded) at the same
   0.12-bg / 0.3-border opacity convention as the other five badges above, rather than inventing
   a new hue for a sixth badge. */
#page-operations .ast-pm-src.adv { background: rgba(155,127,212,0.12); color: #B39DDB; border: 1px solid rgba(155,127,212,0.3); }
@media (max-width: 760px) { #page-operations .ast-pm-head { display: none; } #page-operations .ast-pm-row { grid-template-columns: 1fr 1fr; row-gap: 8px; } }
/* FIX_ASSET_AUTO_MAINT_PLAN_2026_07_21 — asset-card recommended maintenance-plan block. */
#page-operations .ast-planwrap { background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; overflow: hidden; margin-top: 4px; }
#page-operations .ast-planrow { display: grid; grid-template-columns: 1.7fr 1fr 1.8fr auto; gap: 12px; align-items: center; padding: 11px 16px; border-bottom: 1px solid rgba(255,255,255,0.045); font-size: 13px; color: #C4BFB6; }
#page-operations .ast-planrow:last-child { border-bottom: none; }
#page-operations .ast-plantask { color: #F0EBE2; font-weight: 600; }
#page-operations .ast-planiv { color: #C4BFB6; font-variant-numeric: tabular-nums; }
#page-operations .ast-planiv input { width: 78px; background: #1a1815; border: 1px solid rgba(201,168,76,0.4); color: #F0EBE2; border-radius: 7px; padding: 4px 7px; font-size: 12.5px; font-family: inherit; }
#page-operations .ast-planedit, #page-operations .ast-planivsave, #page-operations .ast-planivcancel { background: none; border: 1px solid rgba(255,255,255,0.12); color: #8A857D; font-size: 11.5px; font-family: 'Montserrat', sans-serif; font-weight: 600; padding: 4px 10px; border-radius: 8px; cursor: pointer; }
#page-operations .ast-planedit:hover, #page-operations .ast-planivsave:hover { border-color: #C9A84C; color: #C9A84C; }
#page-operations .ast-planivsave { border-color: rgba(201,168,76,0.5); color: #C9A84C; }
#page-operations .ast-plancaveat { margin-top: 10px; font-size: 11.5px; line-height: 1.5; color: #8A857D; padding: 10px 14px; background: rgba(232,148,58,0.06); border: 1px solid rgba(232,148,58,0.18); border-radius: 10px; }
@media (max-width: 760px) { #page-operations .ast-planrow { grid-template-columns: 1fr 1fr; row-gap: 6px; } }
#page-operations .inv-empty { padding: 46px; text-align: center; color: #8A857D; }
#page-operations .inv-empty .inv-empty-cta { margin-top: 16px; }
/* coming panel (the 4 non-S1 tabs) */
#page-operations .inv-coming { padding: 40px; text-align: center; color: #8A857D; font-size: 13px; line-height: 1.6; background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; }
#page-operations .inv-coming b { color: #C4BFB6; font-weight: 600; }
/* item dossier overlay (in-place over the room content) */
#page-operations .inv-detail { animation: fade .26s ease; }
#page-operations .inv-back { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: #8A857D; font-family: 'Montserrat', sans-serif; font-weight: 600; margin-bottom: 16px; cursor: pointer; }
#page-operations .inv-back:hover { color: #C9A84C; }
#page-operations .inv-dphead { background: linear-gradient(180deg,#232120,#201e1b); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 22px 24px; margin-bottom: 18px; display: flex; gap: 22px; align-items: center; flex-wrap: wrap; }
#page-operations .inv-dphead .inv-dpic { width: 56px; height: 56px; border-radius: 14px; flex: none; background: radial-gradient(circle at 30% 25%,rgba(201,168,76,.3),rgba(201,168,76,.08)); border: 1px solid rgba(201,168,76,.32); display: flex; align-items: center; justify-content: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 18px; color: #C9A84C; }
#page-operations .inv-dphead .inv-dpmain { flex: 1 1 280px; min-width: 0; }
#page-operations .inv-dphead h1 { font-family: 'Montserrat', sans-serif; font-size: 23px; letter-spacing: .1px; color: #F0EBE2; margin: 0; }
#page-operations .inv-dphead .inv-dpmeta { font-size: 12.5px; color: #8A857D; margin-top: 6px; }
#page-operations .inv-dphead .inv-dpmeta code { color: #C9A84C; background: rgba(201,168,76,.08); padding: 1px 6px; border-radius: 5px; font-size: 11.5px; }
#page-operations .inv-dppills { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
#page-operations .inv-dpstats { display: flex; gap: 13px; flex-wrap: wrap; }
#page-operations .inv-dpstat { background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 11px 15px; min-width: 104px; }
#page-operations .inv-dpstat .inv-dpk { font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: #8A857D; font-weight: 600; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-dpstat .inv-dpv { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 20px; color: #F0EBE2; margin-top: 4px; font-variant-numeric: tabular-nums; }
#page-operations .inv-dpstat.gold .inv-dpv { color: #C9A84C; }
#page-operations .inv-kv-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 0 30px; }
#page-operations .inv-kv { display: flex; justify-content: space-between; gap: 14px; padding: 11px 0; border-bottom: 1px solid rgba(255,255,255,0.07); font-size: 13.5px; }
#page-operations .inv-kv .inv-kvk { color: #8A857D; }
#page-operations .inv-kv .inv-kvv { color: #F0EBE2; font-weight: 600; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-sect-h { font-family: 'Montserrat', sans-serif; font-size: 14px; font-weight: 700; color: #F0EBE2; margin: 20px 0 10px; }
#page-operations .inv-mhist { display: flex; flex-direction: column; }
#page-operations .inv-mh-row { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.07); font-size: 13px; }
#page-operations .inv-mh-row:last-child { border-bottom: none; }
#page-operations .inv-mh-ic { width: 30px; height: 30px; border-radius: 8px; flex: none; display: flex; align-items: center; justify-content: center; font-size: 13px; }
#page-operations .inv-mh-name { color: #F0EBE2; font-weight: 600; flex: 1; }
#page-operations .inv-mh-when { color: #8A857D; font-size: 12px; }
#page-operations .inv-mh-q { font-family: 'Montserrat', sans-serif; font-weight: 700; }
#page-operations .inv-mh-q.pos { color: #4CAF7D; } #page-operations .inv-mh-q.neg { color: #E05555; }
@media (max-width: 680px) { #page-operations .inv-kv-grid { grid-template-columns: 1fr; } }
/* add-item drawer (right-slide) */
#page-operations .inv-scrim { position: fixed; inset: 0; background: rgba(8,7,5,.62); backdrop-filter: blur(3px); opacity: 0; pointer-events: none; transition: opacity .2s; z-index: 10090; /* FIX_VENDOR_MODAL_ZINDEX_2026_07_21 raise above #page-staff-app shell (z-index:1000); match .mko top-level convention (scrim 10090) */ }
#page-operations .inv-scrim.show { opacity: 1; pointer-events: auto; }
#page-operations .inv-drawer { position: fixed; top: 0; right: 0; height: 100%; width: 520px; max-width: 94vw; z-index: 10100; background: #232120; border-left: 1px solid rgba(255,255,255,0.13); box-shadow: -20px 0 60px -20px rgba(0,0,0,.7); transform: translateX(100%); transition: transform .28s cubic-bezier(.4,0,.2,1); display: flex; flex-direction: column; /* FIX_DRAWER_RENDER_AUDIT_2026_07_21 was z-index:100 -> below #page-staff-app shell (z-index:1000) AND below the shared .inv-scrim (raised to 10090 by the vendor fix), so the mnt-drawer rendered BEHIND its own scrim; raise to top-layer (drawer 10100, above scrim 10090) matching the .inv-vmodal/.mko convention */ }
#page-operations .inv-drawer.show { transform: translateX(0); }
#page-operations .inv-dr-head { padding: 22px 24px 16px; border-bottom: 1px solid rgba(255,255,255,0.07); display: flex; align-items: flex-start; justify-content: space-between; }
#page-operations .inv-dr-head h2 { font-family: 'Montserrat', sans-serif; font-size: 19px; color: #F0EBE2; margin: 0; }
#page-operations .inv-dr-head p { margin: 5px 0 0; font-size: 12.5px; color: #8A857D; }
#page-operations .inv-dr-close { font-size: 22px; color: #8A857D; width: 32px; height: 32px; border-radius: 8px; border: none; background: none; cursor: pointer; }
#page-operations .inv-dr-close:hover { background: rgba(255,255,255,.06); color: #F0EBE2; }
#page-operations .inv-dr-body { padding: 20px 24px; overflow-y: auto; flex: 1; }
#page-operations .inv-field { margin-bottom: 16px; }
#page-operations .inv-field label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; color: #8A857D; margin-bottom: 7px; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-field input, #page-operations .inv-field select { width: 100%; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 7px; color: #F0EBE2; padding: 10px 12px; font-size: 13.5px; outline: none; transition: border-color .12s, box-shadow .12s; }
#page-operations .inv-field input:focus, #page-operations .inv-field select:focus { border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.28); }
#page-operations .inv-field-row { display: flex; gap: 14px; } #page-operations .inv-field-row .inv-field { flex: 1; }
#page-operations .inv-seg { display: flex; gap: 6px; }
#page-operations .inv-seg button { flex: 1; padding: 10px 8px; border-radius: 7px; border: 1px solid rgba(255,255,255,0.07); background: #1C1A17; color: #8A857D; font-size: 12.5px; font-weight: 600; font-family: 'Montserrat', sans-serif; transition: all .12s; cursor: pointer; }
#page-operations .inv-seg button.on { border-color: #C9A84C; color: #C9A84C; background: rgba(201,168,76,.08); box-shadow: inset 0 0 0 1px #C9A84C; }
#page-operations .inv-help { font-size: 11.5px; color: #8A857D; margin-top: 6px; }
#page-operations .inv-dr-foot { padding: 16px 24px; border-top: 1px solid rgba(255,255,255,0.07); display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
#page-operations .inv-btn { display: inline-flex; align-items: center; gap: 7px; padding: 9px 15px; border-radius: 10px; font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600; border: 1px solid rgba(255,255,255,0.13); background: #232120; color: #C4BFB6; transition: background .15s, border-color .15s; white-space: nowrap; cursor: pointer; }
#page-operations .inv-btn:hover { background: #2a2825; color: #F0EBE2; }
#page-operations .inv-btn.gold { background: #C9A84C; color: #1a160c; border-color: #C9A84C; box-shadow: 0 0 0 1px rgba(201,168,76,.3), 0 6px 20px -8px rgba(201,168,76,0.28); }
#page-operations .inv-btn.gold:hover { background: #d8b85e; color: #1a160c; }
#page-operations .inv-btn.ghost { background: transparent; }

/* FIX_CLEANING_ALIAS_S2_RESOLVE_2026_07_08 — Look-up (Resolve) surface: standalone full-page card
   mounted into #inv-panel (mirrors __invOpenDetail). Three states: empty/pre-scan, resolved big-answer,
   no-match. Tokens mirror design_samples/operations_inventory/inventory_lookup_resolve.html. */
#page-operations .lkr-head { margin-bottom: 20px; }
#page-operations .lkr-title { margin: 0; font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: 700; color: #F0EBE2; letter-spacing: -.3px; }
#page-operations .lkr-sub { margin: 6px 0 0; font-size: 13px; color: #8A857D; max-width: 640px; }
#page-operations .lkr-resolve { display: flex; flex-direction: column; gap: 12px; }
#page-operations .lkr-lbl { font-size: 11px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: #8A857D; font-family: 'Montserrat', sans-serif; }
#page-operations .lkr-inwrap { position: relative; display: flex; align-items: center; }
#page-operations .lkr-inwrap .bc { position: absolute; left: 16px; color: #C9A84C; display: flex; pointer-events: none; }
#page-operations .lkr-inwrap input { width: 100%; background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 12px; color: #F0EBE2; font-family: 'Open Sans', sans-serif; font-size: 16px; padding: 16px 130px 16px 52px; transition: border-color .15s, box-shadow .15s; }
#page-operations .lkr-inwrap input::placeholder { color: #5d574d; }
#page-operations .lkr-inwrap input:focus { outline: none; border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.14); }
#page-operations .lkr-scan { position: absolute; right: 6px; top: 6px; bottom: 6px; display: flex; align-items: center; gap: 8px; background: linear-gradient(180deg,rgba(201,168,76,0.13),rgba(201,168,76,0.04)); border: 1px dashed rgba(201,168,76,0.5); border-radius: 9px; color: #C9A84C; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; letter-spacing: .4px; text-transform: uppercase; padding: 0 14px; cursor: pointer; transition: border-color .15s, background .15s; }
#page-operations .lkr-scan:hover { border-color: rgba(201,168,76,0.8); background: linear-gradient(180deg,rgba(201,168,76,0.2),rgba(201,168,76,0.06)); }
#page-operations .lkr-hint { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #8A857D; flex-wrap: wrap; }
#page-operations .lkr-hint b { color: #C4BFB6; font-weight: 600; }
#page-operations .lkr-hint .k { display: inline-flex; gap: 5px; flex-wrap: wrap; }
#page-operations .lkr-tag { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 600; letter-spacing: .3px; color: #C9A84C; background: rgba(201,168,76,0.14); border-radius: 5px; padding: 2px 7px; }
#page-operations .lkr-explainer { display: flex; gap: 14px; align-items: flex-start; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.25); border-radius: 10px; padding: 16px 18px; margin-top: 18px; }
#page-operations .lkr-explainer svg { flex: 0 0 auto; color: #5B9BD5; margin-top: 2px; }
#page-operations .lkr-explainer b { color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .lkr-explainer p { margin: 4px 0 0; font-size: 13px; line-height: 1.55; color: #C4BFB6; }
/* result card */
#page-operations .lkr-result { background: radial-gradient(120% 80% at 50% -20%, rgba(201,168,76,0.10), transparent 62%), #232120; border: 1px solid rgba(201,168,76,0.30); border-radius: 16px; padding: 0; overflow: hidden; box-shadow: 0 18px 48px rgba(0,0,0,0.45); }
#page-operations .lkr-mstrip { display: flex; align-items: center; gap: 10px; background: rgba(76,175,125,0.14); border-bottom: 1px solid rgba(76,175,125,0.3); padding: 12px 24px; font-size: 13px; color: #F0EBE2; }
#page-operations .lkr-mstrip svg { color: #4CAF7D; flex: 0 0 auto; }
#page-operations .lkr-mstrip b { font-family: 'Montserrat', sans-serif; }
#page-operations .lkr-mstrip code { font-family: 'Montserrat', sans-serif; color: #4CAF7D; font-weight: 700; }
#page-operations .lkr-rbody { display: flex; gap: 24px; padding: 24px; flex-wrap: wrap; }
#page-operations .lkr-rimg { width: 120px; height: 120px; flex: 0 0 120px; border-radius: 10px; background: linear-gradient(135deg,#2f2b25,#1b1814); border: 1px solid rgba(255,255,255,0.10); display: flex; align-items: center; justify-content: center; color: #5a534a; font-size: 34px; }
#page-operations .lkr-rmain { flex: 1; min-width: 260px; }
#page-operations .lkr-rname { font-family: 'Montserrat', sans-serif; font-size: 22px; font-weight: 700; color: #F0EBE2; margin: 0; letter-spacing: -.2px; }
#page-operations .lkr-rcat { font-size: 12px; color: #8A857D; margin: 4px 0 0; }
#page-operations .lkr-answer { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 18px; }
#page-operations .lkr-bigstat { flex: 1 1 200px; background: linear-gradient(180deg,rgba(201,168,76,0.10),rgba(201,168,76,0.02)); border: 1px solid rgba(201,168,76,0.3); border-radius: 10px; padding: 16px 18px; }
#page-operations .lkr-bigstat .k { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: #C9A84C; margin-bottom: 6px; }
#page-operations .lkr-bigstat .v { font-family: 'Montserrat', sans-serif; font-weight: 800; color: #F0EBE2; letter-spacing: -.5px; line-height: 1; }
#page-operations .lkr-bigstat.internal .v { font-size: 38px; color: #C9A84C; }
#page-operations .lkr-bigstat.onhand .v { font-size: 38px; }
#page-operations .lkr-bigstat .v .u { font-size: 16px; font-weight: 600; color: #8A857D; letter-spacing: 0; }
#page-operations .lkr-bigstat .loc { font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 600; color: #C4BFB6; margin-top: 8px; display: flex; align-items: center; gap: 6px; }
#page-operations .lkr-bigstat .loc svg { color: #C9A84C; flex: 0 0 auto; }
#page-operations .lkr-bigstat .loc.unset { color: #8A857D; }
#page-operations .lkr-idstrip { margin-top: 20px; border-top: 1px solid rgba(255,255,255,0.06); padding-top: 18px; }
#page-operations .lkr-idstrip .cap { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: #8A857D; margin-bottom: 12px; }
#page-operations .lkr-idgrid { display: flex; flex-wrap: wrap; gap: 10px; }
#page-operations .lkr-idpill { background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 7px; padding: 9px 12px; min-width: 150px; }
#page-operations .lkr-idpill.matched { border-color: rgba(76,175,125,0.5); background: rgba(76,175,125,0.14); }
#page-operations .lkr-idpill .ik { font-family: 'Montserrat', sans-serif; font-size: 9.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: #8A857D; display: flex; align-items: center; gap: 6px; }
#page-operations .lkr-idpill.matched .ik { color: #4CAF7D; }
#page-operations .lkr-idpill .iv { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600; color: #F0EBE2; margin-top: 3px; word-break: break-word; }
#page-operations .lkr-idpill .ivsub { font-size: 11px; color: #8A857D; margin-top: 1px; }
#page-operations .lkr-mdot { width: 6px; height: 6px; border-radius: 50%; background: #4CAF7D; }
#page-operations .lkr-ractions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 22px; border-top: 1px solid rgba(255,255,255,0.06); padding-top: 18px; }
/* no-match card */
#page-operations .lkr-nomatch { background: #232120; border: 1px solid rgba(232,148,58,0.35); border-radius: 16px; padding: 0; overflow: hidden; }
#page-operations .lkr-nmstrip { display: flex; align-items: center; gap: 10px; background: rgba(232,148,58,0.14); border-bottom: 1px solid rgba(232,148,58,0.3); padding: 12px 24px; font-size: 13px; color: #F0EBE2; }
#page-operations .lkr-nmstrip svg { color: #E8943A; flex: 0 0 auto; }
#page-operations .lkr-nmstrip b { font-family: 'Montserrat', sans-serif; }
#page-operations .lkr-nmstrip code { font-family: 'Montserrat', sans-serif; color: #E8943A; font-weight: 700; word-break: break-word; }
#page-operations .lkr-nmbody { padding: 24px; }
#page-operations .lkr-nmbody h3 { margin: 0 0 6px; font-size: 17px; color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .lkr-nmbody p { margin: 0; font-size: 13px; color: #8A857D; max-width: 520px; line-height: 1.55; }
#page-operations .lkr-nmactions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; }
#page-operations .lkr-note { font-size: 12px; color: #8A857D; margin-top: 14px; }

/* FIX_CLEANING_ALIAS_S4_REGISTRY_2026_07_08 — the alias registry on the item editor (cleaning-alias
   arc S4). The expanded "Identifiers & aliases" accordion __invRenderAliasRegistry mounts inside the
   __invOpenDetail item-detail card: canonical internal-# block (wires DAL.updateItemInternalNumber),
   a PLURAL vendor-codes table with a provenance column (from-invoice vs by-hand, add via DAL.addItemAlias
   / remove via DAL.removeItemAlias), UPC(s), name/alt-name aliases, a "how lookups resolve" rail, and an
   .iar-elsewhere pointer distinguishing resolution from purchasing (Suppliers). Two states: populated +
   new-item empty. Tokens mirror design_samples/operations_inventory/inventory_alias_registry.html. Scoped
   under #page-operations to match the inventory hub host (#inv-panel). */
#page-operations .iar-acc { background: #232120; border: 1px solid rgba(201,168,76,0.35); border-radius: 16px; box-shadow: 0 0 0 1px rgba(201,168,76,0.08); margin-top: 18px; overflow: hidden; }
#page-operations .iar-grid { display: grid; grid-template-columns: 1fr 300px; gap: 20px; align-items: start; }
@media (max-width: 940px) { #page-operations .iar-grid { grid-template-columns: 1fr; } }
#page-operations .iar-head { display: flex; align-items: center; gap: 14px; padding: 18px 22px; border-bottom: 1px solid rgba(255,255,255,0.06); }
#page-operations .iar-ico { width: 34px; height: 34px; flex: 0 0 34px; border-radius: 9px; background: rgba(201,168,76,0.14); color: #C9A84C; display: flex; align-items: center; justify-content: center; }
#page-operations .iar-titles { flex: 1; min-width: 0; }
#page-operations .iar-title { display: block; font-family: 'Montserrat', sans-serif; font-size: 14px; font-weight: 600; color: #F0EBE2; }
#page-operations .iar-summary { display: block; font-size: 12px; color: #8A857D; margin-top: 2px; }
#page-operations .iar-body { padding: 20px 22px 22px; }
#page-operations .iar-note { display: flex; gap: 10px; align-items: flex-start; border-radius: 10px; padding: 12px 14px; margin-bottom: 16px; font-size: 12.5px; color: #C4BFB6; line-height: 1.5; }
#page-operations .iar-note svg { flex: 0 0 auto; margin-top: 1px; }
#page-operations .iar-note.blue { background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.25); }
#page-operations .iar-note.blue svg { color: #5B9BD5; }
#page-operations .iar-note.amber { background: rgba(232,148,58,0.07); border: 1px solid rgba(232,148,58,0.22); }
#page-operations .iar-note.amber svg { color: #E8943A; }
#page-operations .iar-note b { color: #F0EBE2; }
/* canonical internal-number block */
#page-operations .iar-canon { display: flex; gap: 16px; align-items: center; background: linear-gradient(180deg,rgba(201,168,76,0.10),rgba(201,168,76,0.02)); border: 1px solid rgba(201,168,76,0.3); border-radius: 10px; padding: 16px 18px; margin-bottom: 20px; flex-wrap: wrap; }
#page-operations .iar-canon .cico { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 10px; background: rgba(201,168,76,0.14); color: #C9A84C; display: flex; align-items: center; justify-content: center; }
#page-operations .iar-canon .cmeta { flex: 1; min-width: 160px; }
#page-operations .iar-canon .ck { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: #C9A84C; }
#page-operations .iar-canon .cv { font-family: 'Montserrat', sans-serif; font-size: 26px; font-weight: 700; color: #F0EBE2; letter-spacing: -.3px; line-height: 1.1; margin-top: 2px; }
#page-operations .iar-canon .csub { font-size: 12px; color: #8A857D; margin-top: 2px; }
#page-operations .iar-canon .cinput { flex: 0 0 auto; display: flex; gap: 8px; align-items: center; }
#page-operations .iar-canon input { width: 150px; background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 7px; color: #F0EBE2; font-family: 'Montserrat', sans-serif; font-size: 14px; padding: 9px 11px; }
#page-operations .iar-canon input:focus { outline: none; border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.14); }
/* alias sub-section */
#page-operations .iar-sec { margin-bottom: 22px; }
#page-operations .iar-sec:last-child { margin-bottom: 0; }
#page-operations .iar-sh { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
#page-operations .iar-sh .t { font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: #C4BFB6; }
#page-operations .iar-sh .badge { font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; color: #C9A84C; background: rgba(201,168,76,0.14); }
#page-operations .iar-sh .badge.none { color: #8A857D; background: #232120; }
#page-operations .iar-sh .spacer { flex: 1; }
#page-operations .iar-ghost { background: none; border: none; color: #C9A84C; font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 600; cursor: pointer; padding: 0; display: inline-flex; align-items: center; gap: 5px; }
/* tables */
#page-operations .iar-tw { border: 1px solid rgba(255,255,255,0.10); border-radius: 10px; overflow: hidden; overflow-x: auto; }
#page-operations .iar-tw table { width: 100%; border-collapse: collapse; font-size: 13px; }
#page-operations .iar-tw thead th { text-align: left; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: #8A857D; background: #1C1A17; padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,0.10); white-space: nowrap; }
#page-operations .iar-tw tbody td { padding: 11px 12px; border-bottom: 1px solid rgba(255,255,255,0.06); vertical-align: middle; }
#page-operations .iar-tw tbody tr:last-child td { border-bottom: none; }
#page-operations .iar-tw .code { font-family: 'Montserrat', sans-serif; font-size: 12.5px; font-weight: 600; color: #F0EBE2; letter-spacing: .3px; }
#page-operations .iar-tw .vendor { font-family: 'Montserrat', sans-serif; font-weight: 600; color: #F0EBE2; }
#page-operations .iar-prov { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .iar-prov .badge { font-family: 'Montserrat', sans-serif; font-size: 9.5px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; padding: 2px 7px; border-radius: 999px; }
#page-operations .iar-prov .badge.invoice { color: #4CAF7D; background: rgba(76,175,125,0.14); }
#page-operations .iar-prov .badge.hand { color: #5B9BD5; background: rgba(91,155,213,0.12); }
#page-operations .iar-prov code { font-family: 'Montserrat', sans-serif; color: #C4BFB6; }
#page-operations .iar-xbtn { background: none; border: 1px solid rgba(255,255,255,0.10); border-radius: 6px; width: 30px; height: 30px; color: #8A857D; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
#page-operations .iar-xbtn:hover { color: #E05555; border-color: #E05555; }
#page-operations .iar-empty { border: 1px dashed rgba(255,255,255,0.10); border-radius: 10px; padding: 14px 16px; font-size: 12.5px; color: #8A857D; }
/* upc row */
#page-operations .iar-upc { display: flex; align-items: center; gap: 12px; background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; flex-wrap: wrap; }
#page-operations .iar-upc .bc { color: #C9A84C; flex: 0 0 auto; }
#page-operations .iar-upc .um { flex: 1; min-width: 120px; }
#page-operations .iar-upc .uv { font-family: 'Montserrat', sans-serif; font-size: 14px; font-weight: 600; color: #F0EBE2; letter-spacing: .5px; }
#page-operations .iar-upc .uv.none { color: #8A857D; }
#page-operations .iar-upc .us { font-size: 11.5px; color: #8A857D; margin-top: 1px; }
/* name/alt fields */
#page-operations .iar-ng { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 620px) { #page-operations .iar-ng { grid-template-columns: 1fr; } }
#page-operations .iar-field label { display: block; font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: #8A857D; margin-bottom: 7px; }
#page-operations .iar-field .rowin { display: flex; gap: 8px; align-items: center; }
#page-operations .iar-field input { width: 100%; background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 7px; color: #F0EBE2; font-family: 'Open Sans', sans-serif; font-size: 14px; padding: 10px 12px; }
#page-operations .iar-field input:focus { outline: none; border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.14); }
#page-operations .iar-field .hint { font-size: 11px; color: #8A857D; margin-top: 6px; }
/* add-row inline forms (revealed on Add-click) */
#page-operations .iar-addform { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; margin-top: 10px; padding: 12px 14px; background: #1C1A17; border: 1px dashed rgba(201,168,76,0.4); border-radius: 10px; }
#page-operations .iar-addform input, #page-operations .iar-addform select { background: #232120; border: 1px solid rgba(255,255,255,0.10); border-radius: 7px; color: #F0EBE2; font-family: 'Open Sans', sans-serif; font-size: 13px; padding: 8px 10px; }
#page-operations .iar-addform input:focus, #page-operations .iar-addform select:focus { outline: none; border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.14); }
#page-operations .iar-addform .grow { flex: 1; min-width: 120px; }
#page-operations .iar-msg { font-size: 12px; margin-top: 8px; display: none; }
#page-operations .iar-msg.show { display: block; }
#page-operations .iar-msg.err { color: #E05555; }
#page-operations .iar-msg.ok { color: #4CAF7D; }
/* elsewhere pointer (distinguish from Suppliers & purchasing) */
#page-operations .iar-elsewhere { display: flex; align-items: center; gap: 12px; background: #232120; border: 1px dashed rgba(255,255,255,0.10); border-radius: 10px; padding: 12px 16px; margin-top: 6px; flex-wrap: wrap; }
#page-operations .iar-elsewhere svg { color: #8A857D; flex: 0 0 auto; }
#page-operations .iar-elsewhere .et { flex: 1; min-width: 200px; font-size: 12px; color: #8A857D; }
#page-operations .iar-elsewhere .et b { color: #C4BFB6; font-weight: 600; }
#page-operations .iar-elsewhere .go { font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 600; color: #C9A84C; white-space: nowrap; }
/* how-lookups-resolve rail */
#page-operations .iar-rail { background: #232120; border: 1px solid rgba(255,255,255,0.10); border-radius: 16px; padding: 18px 20px; }
#page-operations .iar-rail .rt { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 700; color: #F0EBE2; margin: 0 0 4px; display: flex; align-items: center; gap: 8px; }
#page-operations .iar-rail .rt svg { color: #C9A84C; }
#page-operations .iar-rail .rsub { font-size: 12px; color: #8A857D; margin: 0 0 16px; line-height: 1.5; }
#page-operations .iar-flow { list-style: none; margin: 0; padding: 0; }
#page-operations .iar-flow li { display: flex; gap: 12px; padding: 0 0 16px; position: relative; }
#page-operations .iar-flow li:last-child { padding-bottom: 0; }
#page-operations .iar-flow li::before { content: ""; position: absolute; left: 13px; top: 28px; bottom: -4px; width: 1px; background: rgba(255,255,255,0.10); }
#page-operations .iar-flow li:last-child::before { display: none; }
#page-operations .iar-flow .dot { width: 27px; height: 27px; flex: 0 0 27px; border-radius: 50%; background: rgba(201,168,76,0.14); color: #C9A84C; display: flex; align-items: center; justify-content: center; font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 700; z-index: 1; }
#page-operations .iar-flow .fx b { display: block; font-family: 'Montserrat', sans-serif; font-size: 12.5px; font-weight: 600; color: #F0EBE2; }
#page-operations .iar-flow .fx span { font-size: 11.5px; color: #8A857D; line-height: 1.45; }
#page-operations .iar-railnote { margin-top: 16px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,0.06); font-size: 11.5px; color: #8A857D; line-height: 1.5; }
#page-operations .iar-railnote b { color: #C4BFB6; }

/* FIX_VISION_COUNT_PART1_2026_06_30 — camera-vision inventory-count capture surface (Part 1 of 3:
   the shared live camera-capture component + file-upload fallback). These .vcap-* classes style the
   capture screen __renderCaptureSurface mounts: the live <video> preview viewport, the capture/retake/
   upload controls, the permission-denied + camera-unavailable fallback states, the captured-still
   review thumbnail, and the honest "vision count coming next" seam-stub placeholder banner. Scoped
   under #page-operations to match the inventory hub host (#inv-panel). Part 1 writes NOTHING. */
#page-operations .vcap-wrap { animation: fade .26s ease; max-width: 720px; }
#page-operations .vcap-head { display: flex; align-items: flex-start; gap: 14px; margin: 6px 0 18px; }
#page-operations .vcap-head-ic { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 22px; background: rgba(201,168,76,.12); flex: none; }
#page-operations .vcap-head h1 { font-family: 'Montserrat', sans-serif; font-size: 19px; font-weight: 700; color: #F0EBE2; margin: 0 0 2px; }
#page-operations .vcap-head .vcap-sub { font-size: 12.5px; color: #8A857D; }
#page-operations .vcap-stage { position: relative; width: 100%; aspect-ratio: 4/3; border-radius: 18px; overflow: hidden; background: #0e0d0c; border: 1px solid rgba(255,255,255,.10); display: grid; place-items: center; }
#page-operations .vcap-stage video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #0e0d0c; }
#page-operations .vcap-stage img.vcap-still { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#page-operations .vcap-stage canvas { display: none; }
#page-operations .vcap-fallback { padding: 26px 22px; text-align: center; color: #C4BFB6; max-width: 360px; }
#page-operations .vcap-fallback .vcap-fb-ic { font-size: 30px; opacity: .7; margin-bottom: 10px; }
#page-operations .vcap-fallback .vcap-fb-msg { font-size: 13px; line-height: 1.55; color: #8A857D; margin-bottom: 16px; }
#page-operations .vcap-controls { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
#page-operations .vcap-hint { font-size: 12px; color: #6f6a63; margin-top: 12px; line-height: 1.5; }
#page-operations .vcap-seam { margin-top: 18px; padding: 18px 20px; border-radius: 14px; border: 1px dashed rgba(201,168,76,.45); background: rgba(201,168,76,.07); }
#page-operations .vcap-seam .vcap-seam-h { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #C9A84C; margin-bottom: 5px; }
#page-operations .vcap-seam .vcap-seam-b { font-size: 12.5px; color: #C4BFB6; line-height: 1.55; }
#page-operations .vcap-seam .vcap-seam-prod { font-size: 12px; color: #8A857D; margin-top: 8px; }
/* FIX_VISION_COUNT_PART2_2026_06_30 — Part 2 vision-engine surface states: ANALYZING… spinner (call
   in flight), the manual-entry fallback affordance (number input), and the confidence pill + count +
   thumbnail on the honest Part-3 seam placeholder. Reuses the .vcap-seam dashed-gold chrome above. */
#page-operations .vcap-analyzing { margin-top: 18px; padding: 20px; border-radius: 14px; border: 1px solid rgba(201,168,76,.30); background: rgba(201,168,76,.06); display: flex; align-items: center; gap: 13px; }
#page-operations .vcap-spinner { width: 22px; height: 22px; border-radius: 50%; border: 3px solid rgba(201,168,76,.25); border-top-color: #C9A84C; animation: vcapspin .8s linear infinite; flex: none; }
#page-operations .vcap-analyzing-t { font-size: 13px; color: #F0EBE2; font-weight: 600; }
#page-operations .vcap-analyzing-s { font-size: 11.5px; color: #8A857D; margin-top: 2px; }
#page-operations .vcap-manual { margin-top: 18px; padding: 18px 20px; border-radius: 14px; border: 1px solid rgba(255,180,90,.40); background: rgba(255,180,90,.07); }
#page-operations .vcap-manual-h { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #E8A852; margin-bottom: 5px; }
#page-operations .vcap-manual-b { font-size: 12.5px; color: #C4BFB6; line-height: 1.55; margin-bottom: 12px; }
#page-operations .vcap-manual-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
#page-operations .vcap-manual-row label { font-size: 12px; color: #8A857D; }
#page-operations .vcap-manual-row input { width: 110px; padding: 9px 12px; border-radius: 10px; border: 1px solid rgba(255,255,255,.14); background: #1d1b1a; color: #F0EBE2; font-size: 14px; }
#page-operations .vcap-conf-pill { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; padding: 2px 9px; border-radius: 999px; margin-left: 6px; background: rgba(201,168,76,.18); color: #D8BC6A; }
#page-operations .vcap-conf-high { background: rgba(96,196,128,.16); color: #7BD89A; }
#page-operations .vcap-conf-low, #page-operations .vcap-conf-manual { background: rgba(255,180,90,.16); color: #E8A852; }
#page-operations .vcap-confirm-thumb { width: 100%; max-width: 220px; border-radius: 12px; margin-top: 12px; border: 1px solid rgba(255,255,255,.10); }
#page-operations .vcap-confirm-n { font-size: 26px; font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; margin: 4px 0; }
/* FIX_VISION_COUNT_PART3 — editable human-ratify confirm-gate: the medium pill (amber, sibling of
   low/manual), the system-vs-counted context row, the EDITABLE count input the staffer confirms or
   corrects, the low/medium amber "check before saving" hint, and the inline validation message. The
   gate reuses .vcap-seam dashed-gold chrome + .vcap-conf-pill + .inv-btn / .inv-btn.gold above. */
#page-operations .vcap-conf-medium { background: rgba(255,180,90,.16); color: #E8A852; }
#page-operations .vcap-confirm-ctx { font-size: 12.5px; color: #8A857D; margin: 10px 0 4px; line-height: 1.55; }
#page-operations .vcap-confirm-ctx b { color: #C4BFB6; }
#page-operations .vcap-confirm-edit { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 4px; }
#page-operations .vcap-confirm-edit label { font-size: 12px; color: #8A857D; }
#page-operations .vcap-confirm-edit input { width: 130px; padding: 11px 14px; border-radius: 10px; border: 1px solid rgba(201,168,76,.40); background: #1d1b1a; color: #F0EBE2; font-size: 18px; font-family: 'Montserrat', sans-serif; font-weight: 700; }
#page-operations .vcap-confirm-edit input:focus { outline: none; border-color: #C9A84C; }
#page-operations .vcap-confirm-hint { font-size: 12px; color: #E8A852; margin-top: 8px; line-height: 1.5; }
#page-operations .vcap-confirm-err { font-size: 12px; color: #E8736A; margin-top: 8px; line-height: 1.5; min-height: 0; }
#page-operations .vcap-picker { display: grid; grid-template-columns: repeat(auto-fill,minmax(220px,1fr)); gap: 10px; margin-top: 4px; }
#page-operations .vcap-pick { text-align: left; padding: 13px 15px; border-radius: 12px; border: 1px solid rgba(255,255,255,.10); background: #1d1b1a; cursor: pointer; transition: border-color .15s, background .15s; }
#page-operations .vcap-pick:hover { border-color: rgba(201,168,76,.5); background: #232120; }
#page-operations .vcap-pick .vcap-pick-n { font-size: 13.5px; color: #F0EBE2; font-weight: 600; margin-bottom: 3px; }
#page-operations .vcap-pick .vcap-pick-m { font-size: 11.5px; color: #8A857D; }

/* FIX_INV_EDITOR_S1_2026_06_16 — item-editor Tracking-section styling (track-type
   picker / variant option-sets + matrix / lots table / serial pills). Built TO
   design_samples/operations_inventory/inventory_mgmt_2b_add_edit_pro.html §2 but
   re-skinned to the existing #page-operations .inv-* drawer vocabulary (literal hex
   mirror the inv-* tokens; ASCII-only comments). NOT an import of the sample sheet. */
#page-operations .inv-sect { margin-top: 22px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,0.07); }
#page-operations .inv-sect-title { font-family: 'Montserrat', sans-serif; font-size: 13.5px; font-weight: 700; color: #F0EBE2; margin: 0 0 4px; }
#page-operations .inv-sect-desc { font-size: 11.5px; color: #8A857D; margin: 0 0 14px; }
/* track-type picker — 4 cards */
#page-operations .inv-trackgrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
#page-operations .inv-pick { display: flex; flex-direction: column; gap: 5px; align-items: flex-start; text-align: left; padding: 12px 13px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.07); background: #1C1A17; cursor: pointer; transition: all .12s; }
#page-operations .inv-pick:hover { border-color: rgba(255,255,255,0.18); }
#page-operations .inv-pick.on { border-color: #C9A84C; background: rgba(201,168,76,.08); box-shadow: inset 0 0 0 1px #C9A84C; }
#page-operations .inv-pick .inv-pick-nm { font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600; color: #F0EBE2; }
#page-operations .inv-pick.on .inv-pick-nm { color: #C9A84C; }
#page-operations .inv-pick .inv-pick-ds { font-size: 11px; color: #8A857D; line-height: 1.4; }
/* sub-editor reveal */
#page-operations .inv-sub { margin-top: 16px; }
#page-operations .inv-sub.hide { display: none; }
/* variant option-sets + chips */
#page-operations .inv-optset { background: #161412; border: 1px solid rgba(255,255,255,0.07); border-radius: 9px; padding: 13px; margin-bottom: 11px; }
#page-operations .inv-optset-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
#page-operations .inv-optset-head input { flex: 0 0 150px; width: 150px; }
#page-operations .inv-optset-head .inv-grow { flex: 1; }
#page-operations .inv-chips { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
#page-operations .inv-chip2 { display: inline-flex; align-items: center; gap: 6px; background: #232120; border: 1px solid rgba(255,255,255,0.13); border-radius: 6px; padding: 4px 5px 4px 10px; font-size: 12px; color: #F0EBE2; }
#page-operations .inv-chip2 button { background: none; border: none; color: #8A857D; cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; }
#page-operations .inv-chip2 button:hover { color: #E05555; }
#page-operations .inv-chipin { background: transparent; border: none; width: 110px; font-size: 12px; padding: 6px 2px; color: #F0EBE2; }
#page-operations .inv-chipin:focus { outline: none; box-shadow: none; }
#page-operations .inv-icon-btn { background: none; border: none; color: #8A857D; cursor: pointer; font-size: 16px; line-height: 1; padding: 2px 6px; border-radius: 6px; }
#page-operations .inv-icon-btn:hover { color: #E05555; background: rgba(255,255,255,.05); }
#page-operations .inv-ghost-link { display: inline-flex; align-items: center; gap: 6px; background: none; border: none; color: #C9A84C; cursor: pointer; font-size: 12.5px; font-weight: 600; font-family: 'Montserrat', sans-serif; padding: 4px 0; }
#page-operations .inv-ghost-link:hover { color: #d8b85e; }
/* matrix + lots table toolbar */
#page-operations .inv-tbltoolbar { display: flex; align-items: center; gap: 10px; margin: 16px 0 11px; flex-wrap: wrap; }
#page-operations .inv-tbltoolbar .inv-spacer { flex: 1; }
#page-operations .inv-tbltoolbar label { margin: 0; }
#page-operations .inv-setall { display: flex; align-items: center; gap: 7px; }
#page-operations .inv-setall input { width: 84px; }
#page-operations .inv-matrix-meta { font-size: 11.5px; color: #8A857D; }
/* editor sub-tables (variant matrix / lots) — share one skin */
#page-operations .inv-subtbl-wrap { border: 1px solid rgba(255,255,255,0.07); border-radius: 9px; overflow: hidden; }
#page-operations table.inv-subtbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
#page-operations table.inv-subtbl th { text-align: left; padding: 9px 11px; font-family: 'Montserrat', sans-serif; font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: #8A857D; font-weight: 700; background: #161412; border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations table.inv-subtbl td { padding: 8px 11px; border-bottom: 1px solid rgba(255,255,255,0.05); color: #F0EBE2; vertical-align: middle; }
#page-operations table.inv-subtbl tr:last-child td { border-bottom: none; }
#page-operations table.inv-subtbl td.num { text-align: right; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations table.inv-subtbl input { width: 100%; box-sizing: border-box; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 6px; color: #F0EBE2; padding: 6px 8px; font-size: 12.5px; }
#page-operations table.inv-subtbl input.num { text-align: right; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .inv-cell-sku { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; color: #C4BFB6; letter-spacing: .3px; }
#page-operations .inv-vlabel { font-weight: 600; color: #F0EBE2; }

/* FIX_AST_OVERVIEW_S3B_2026_06_16 — Overview tab (HEALTH & LIFECYCLE altitude) delta. Built
   TO design_samples/operations_assets/asset_3_health_lifecycle.html (gauge L191-197, fleet
   cluster L216-224, remaining-life bars L226-251, replacement cards L253-277, legend
   L219-224) re-skinned to #page-operations ast-* vocabulary (literal hex mirror the sample
   tokens; ASCII-only comments). KPI cards REUSE .ast-summary/.ast-scard/.ast-sclbl/.ast-scval/
   .ast-scmeta/.ast-chip-mini (NOT re-authored). Portfolio aggregate, not duplication of the
   register/dossier. */
/* fleet-health gauge KPI (gauge canvas + big % + caption inside an .ast-scard). */
#page-operations .ast-ov-gauge { display: flex; align-items: center; gap: 18px; }
#page-operations .ast-ov-gauge canvas { width: 96px; height: 96px; flex: 0 0 auto; }
#page-operations .ast-ov-gbig { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 38px; color: #F0EBE2; line-height: 1; font-variant-numeric: tabular-nums; }
#page-operations .ast-ov-gcap { font-size: 11.5px; color: #8A857D; margin-top: 6px; max-width: 150px; line-height: 1.45; }
/* section panel head (Fleet Condition / Remaining Useful Life / Replacement Planning). */
#page-operations .ast-ov-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 4px; }
@media (max-width: 1100px) { #page-operations .ast-ov-grid { grid-template-columns: 1fr; } }
#page-operations .ast-ov-panel { position: relative; background: linear-gradient(168deg, #232120, #1d1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 20px 22px; overflow: hidden; box-shadow: 0 18px 40px -28px rgba(0,0,0,.8); }
#page-operations .ast-ov-panel::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255,255,255,.10), transparent); }
#page-operations .ast-ov-ph { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
#page-operations .ast-ov-ph h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 16px; color: #F0EBE2; letter-spacing: -.005em; }
#page-operations .ast-ov-ph .ast-ov-hint { font-size: 11.5px; color: #8A857D; }
/* fleet-condition dot-cluster + legend. */
#page-operations .ast-ov-fleet { display: flex; gap: 20px; align-items: center; }
@media (max-width: 520px) { #page-operations .ast-ov-fleet { flex-direction: column; } }
#page-operations .ast-ov-cluster { width: 210px; height: 210px; flex: 0 0 auto; }
#page-operations .ast-ov-legend { display: flex; flex-direction: column; gap: 11px; flex: 1; min-width: 0; }
#page-operations .ast-ov-lrow { display: flex; align-items: center; gap: 10px; font-size: 12.5px; }
#page-operations .ast-ov-lrow .ast-ov-sw { width: 11px; height: 11px; border-radius: 3px; flex: 0 0 auto; }
#page-operations .ast-ov-lrow .ast-ov-lab { color: #C4BFB6; }
#page-operations .ast-ov-lrow .ast-ov-lab .ast-ov-sub2 { color: #8A857D; font-size: 11px; }
#page-operations .ast-ov-lrow .ast-ov-ct { margin-left: auto; font-weight: 700; color: #F0EBE2; font-family: 'Montserrat', sans-serif; font-variant-numeric: tabular-nums; }
#page-operations .ast-ov-lrow.ast-ov-flag { margin-top: 6px; padding-top: 11px; border-top: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-ov-lrow.ast-ov-flag .ast-ov-lab { color: #8A857D; }
#page-operations .ast-ov-lrow.ast-ov-flag .ast-ov-ct { color: #E05555; }
/* remaining-useful-life bar list. */
#page-operations .ast-ov-life { display: flex; flex-direction: column; gap: 12px; }
#page-operations .ast-ov-liferow { display: grid; grid-template-columns: 128px 1fr 50px; align-items: center; gap: 12px; cursor: pointer; }
@media (max-width: 520px) { #page-operations .ast-ov-liferow { grid-template-columns: 100px 1fr 42px; } }
#page-operations .ast-ov-lname { font-size: 12.5px; color: #C4BFB6; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#page-operations .ast-ov-lname .ast-ov-lage { color: #8A857D; font-size: 10.5px; display: block; margin-top: 1px; }
#page-operations .ast-ov-ltrack { position: relative; height: 22px; border-radius: 7px; background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.05); overflow: hidden; }
#page-operations .ast-ov-lfill { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: 6px 0 0 6px; transition: width 1.1s cubic-bezier(.22,1,.36,1); }
#page-operations .ast-ov-lfill .ast-ov-shine { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255,255,255,0.22), transparent 55%); }
#page-operations .ast-ov-lmark { position: absolute; top: -2px; bottom: -2px; width: 2px; background: rgba(255,255,255,0.35); }
#page-operations .ast-ov-lpct { font-size: 12px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
#page-operations .ast-ov-liferow:hover .ast-ov-ltrack { border-color: rgba(255,255,255,0.16); }
/* replacement / EOL-decisions cards + budget total. */
#page-operations .ast-ov-rgrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; }
@media (max-width: 520px) { #page-operations .ast-ov-rgrid { grid-template-columns: 1fr; } }
#page-operations .ast-ov-rcard { background: linear-gradient(160deg, rgba(224,85,85,0.06), rgba(26,23,20,0.4)); border: 1px solid rgba(224,85,85,0.16); border-radius: 13px; padding: 15px; cursor: pointer; transition: transform 0.35s cubic-bezier(.22,1,.36,1), border-color 0.35s, box-shadow 0.35s; }
#page-operations .ast-ov-rcard:hover { transform: translateY(-3px); border-color: rgba(224,85,85,0.4); box-shadow: 0 14px 32px rgba(0,0,0,0.45); }
#page-operations .ast-ov-rname { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; }
#page-operations .ast-ov-rwhen { font-size: 11px; margin-top: 3px; margin-bottom: 12px; font-weight: 600; }
#page-operations .ast-ov-rrec { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 10px; }
#page-operations .ast-ov-rrec.replace { color: #E05555; } #page-operations .ast-ov-rrec.repair { color: #E8943A; } #page-operations .ast-ov-rrec.sell { color: #5B9BD5; }
#page-operations .ast-ov-rrow { display: flex; justify-content: space-between; font-size: 11.5px; padding: 4px 0; border-top: 1px solid rgba(255,255,255,0.05); }
#page-operations .ast-ov-rrow:first-of-type { border-top: none; }
#page-operations .ast-ov-rrow .ast-ov-rk { color: #8A857D; }
#page-operations .ast-ov-rrow .ast-ov-rv { color: #F0EBE2; font-weight: 600; font-variant-numeric: tabular-nums; }
#page-operations .ast-ov-rtotal { margin-top: 14px; display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-radius: 13px; background: linear-gradient(160deg, rgba(201,168,76,0.10), rgba(26,23,20,0.3)); border: 1px solid rgba(201,168,76,0.22); }
#page-operations .ast-ov-rtotal .ast-ov-tk { font-size: 12.5px; color: #C4BFB6; font-weight: 600; }
#page-operations .ast-ov-rtotal .ast-ov-tv { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 24px; color: #C9A84C; font-variant-numeric: tabular-nums; }
#page-operations .ast-ov-rsub { font-size: 11px; color: #8A857D; margin-top: 4px; }
/* honest-empty caption (zeroed register: no nodes / no cards). */
#page-operations .ast-ov-empty { padding: 30px; text-align: center; color: #8A857D; font-size: 13px; line-height: 1.6; }
@media (prefers-reduced-motion: reduce) { #page-operations .ast-ov-lfill { transition: none !important; } }

/* ════════════════════════════════════════════════════════════════════════════════
   FIX_AST_OVERVIEW_S3C_2026_06_16 — DEPRECIATION / VALUE altitude CSS (composes BENEATH
   the S3b health altitude in the SAME Overview panel). Built TO
   design_samples/operations_assets/asset_4_depreciation.html (KPI tiles L60-80, hero
   L103-116, table L118-141, donut L143-156) + the asset_3 maint-trend tile. Re-skinned to
   #page-operations literal hex (mirror the sample tokens; ASCII-only comments). The KPI
   cluster REUSES .ast-summary/.ast-scard; only the depreciation-specific selectors live here:
   the 5-up dep KPI grid accent bars, the hero canvas wrap + tooltip, the depreciation table,
   the value-by-category donut + legend, and the maintenance-cost-trend tile. ── */
/* 5-up depreciation KPI cluster (its own grid so the 5 dep cards do not collapse into the
   S3b 5-col .ast-summary; REUSES .ast-scard for each card). accent bar keyed by data-accent. */
#page-operations .ast-depkpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; margin: 22px 0; }
@media (max-width: 1080px) { #page-operations .ast-depkpis { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { #page-operations .ast-depkpis { grid-template-columns: 1fr; } }
#page-operations .ast-depkpi { position: relative; overflow: hidden; }
#page-operations .ast-depkpi::after { content: ""; position: absolute; inset: 0 0 auto 0; height: 2px; background: linear-gradient(90deg, transparent, var(--depac, #C9A84C), transparent); opacity: .55; }
#page-operations .ast-depkpi[data-accent=gold] { --depac: #C9A84C; }
#page-operations .ast-depkpi[data-accent=green] { --depac: #4CAF7D; }
#page-operations .ast-depkpi[data-accent=blue] { --depac: #5B9BD5; }
#page-operations .ast-depkpi[data-accent=amber] { --depac: #E8943A; }
#page-operations .ast-depkpi[data-accent=red] { --depac: #E05555; }
#page-operations .ast-depkpi .ast-dkval .ast-dkcur { font-size: 16px; color: #8A857D; font-weight: 600; margin-right: 1px; vertical-align: 4px; }
/* depreciation-altitude section wrapper + panel heading (mirror the sample .grid/.panel/.ph). */
#page-operations .ast-depsec { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 4px; }
#page-operations .ast-deprow2 { display: grid; grid-template-columns: 1.35fr 1fr; gap: 18px; }
@media (max-width: 980px) { #page-operations .ast-deprow2 { grid-template-columns: 1fr; } }
#page-operations .ast-deppanel { position: relative; background: linear-gradient(168deg, #232120, #1d1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 20px 22px 22px; overflow: hidden; box-shadow: 0 18px 40px -28px rgba(0,0,0,.8); }
#page-operations .ast-deppanel.glow::after { content: ""; position: absolute; inset: 0; border-radius: 16px; pointer-events: none; box-shadow: 0 0 0 1px rgba(201,168,76,0.12) inset, 0 -40px 80px -60px rgba(201,168,76,0.4) inset; }
#page-operations .ast-depph { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
#page-operations .ast-depph h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 16px; color: #F0EBE2; letter-spacing: -.01em; margin: 0; }
#page-operations .ast-depph .ast-depd { font-size: 12px; color: #8A857D; margin-top: 3px; }
#page-operations .ast-depph .ast-deplg { display: flex; gap: 14px; font-size: 11.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .ast-depph .ast-deplg .lg { display: flex; align-items: center; gap: 6px; }
#page-operations .ast-depph .ast-deplg .sw { width: 14px; height: 8px; border-radius: 3px; }
#page-operations .ast-depph .ast-deplg .sw.solid { background: linear-gradient(90deg, #E7CE82, #C9A84C); }
#page-operations .ast-depph .ast-deplg .sw.dash { background: repeating-linear-gradient(90deg, #C9A84C 0 4px, transparent 4px 7px); }
#page-operations .ast-depph .ast-deplg .sw.today { background: #5B9BD5; }
/* hero book-value canvas wrap + tooltip (mirror sample .hero-canvas-wrap / .htooltip). */
#page-operations .ast-herowrap { position: relative; width: 100%; height: 340px; }
#page-operations .ast-herowrap canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
#page-operations .ast-herotip { position: absolute; pointer-events: none; z-index: 5; min-width: 150px; background: rgba(20,18,14,0.94); border: 1px solid rgba(201,168,76,0.32); border-radius: 7px; padding: 9px 11px; font-size: 12px; color: #C4BFB6; opacity: 0; transform: translateY(4px); transition: opacity .14s ease, transform .14s ease; box-shadow: 0 18px 40px -16px rgba(0,0,0,0.9); }
#page-operations .ast-herotip.on { opacity: 1; transform: translateY(0); }
#page-operations .ast-herotip .htd { font-size: 10.5px; letter-spacing: .05em; text-transform: uppercase; color: #8A857D; font-weight: 600; }
#page-operations .ast-herotip .htv { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 18px; color: #F0EBE2; margin-top: 3px; }
#page-operations .ast-herotip .htn { margin-top: 4px; font-size: 11px; color: #C9A84C; }
#page-operations .ast-herofoot { display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: #8A857D; letter-spacing: .04em; }
/* per-asset depreciation table (mirror sample .tbl / .depbar / .tag). */
#page-operations .ast-deptbl { width: 100%; border-collapse: separate; border-spacing: 0; }
#page-operations .ast-deptbl th { font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: #8A857D; font-weight: 600; text-align: right; padding: 0 10px 11px; border-bottom: 1px solid rgba(255,255,255,0.07); cursor: pointer; user-select: none; white-space: nowrap; transition: color .15s; }
#page-operations .ast-deptbl th:first-child { text-align: left; }
#page-operations .ast-deptbl th:hover { color: #C4BFB6; }
#page-operations .ast-deptbl th .car { opacity: 0; font-size: 9px; margin-left: 3px; transition: opacity .15s; }
#page-operations .ast-deptbl th.sorted .car { opacity: 1; color: #C9A84C; }
#page-operations .ast-deptbl td { padding: 11px 10px; font-size: 13px; text-align: right; border-bottom: 1px solid rgba(255,255,255,0.045); color: #C4BFB6; }
#page-operations .ast-deptbl td:first-child { text-align: left; }
#page-operations .ast-deptbl tr:last-child td { border-bottom: none; }
#page-operations .ast-deptbl tbody tr { transition: background .15s; cursor: pointer; }
#page-operations .ast-deptbl tbody tr:hover { background: rgba(255,255,255,0.022); }
#page-operations .ast-deptbl .aname { font-weight: 600; color: #F0EBE2; }
#page-operations .ast-deptbl .acat { display: block; font-size: 10.5px; color: #8A857D; font-weight: 400; margin-top: 1px; letter-spacing: .02em; }
#page-operations .ast-depbar { position: relative; width: 108px; height: 8px; border-radius: 5px; background: rgba(255,255,255,0.06); overflow: hidden; display: inline-block; vertical-align: middle; margin-right: 9px; }
#page-operations .ast-depbar i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 5px; width: 0; transition: width 1.1s cubic-bezier(.22,.9,.3,1); }
#page-operations .ast-depcell { display: flex; align-items: center; justify-content: flex-end; gap: 0; white-space: nowrap; }
#page-operations .ast-deppct { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 12.5px; min-width: 38px; text-align: right; }
#page-operations .ast-deptag { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 7px; border-radius: 100px; letter-spacing: .03em; margin-left: 6px; }
#page-operations .ast-deptag.eol { color: #E05555; background: rgba(224,85,85,0.12); }
#page-operations .ast-deptag.high { color: #E8943A; background: rgba(232,148,58,0.12); }
/* value-by-category donut + legend (mirror sample .donut-wrap / .clegend). */
#page-operations .ast-donwrap { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
#page-operations .ast-donc { position: relative; width: 188px; height: 188px; flex: 0 0 auto; }
#page-operations .ast-donc canvas { width: 188px; height: 188px; }
#page-operations .ast-doncenter { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
#page-operations .ast-doncenter .dcl { font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: #8A857D; font-weight: 600; }
#page-operations .ast-doncenter .dcv { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 25px; color: #F0EBE2; margin-top: 2px; }
#page-operations .ast-doncenter .dcv .dccur { font-size: 15px; color: #8A857D; }
#page-operations .ast-donlegend { display: flex; flex-direction: column; gap: 11px; flex: 1; min-width: 180px; }
#page-operations .ast-donlegend .cl { display: flex; align-items: center; gap: 10px; font-size: 13px; }
#page-operations .ast-donlegend .cl .cdot { width: 11px; height: 11px; border-radius: 3px; flex: 0 0 auto; box-shadow: 0 0 0 3px rgba(255,255,255,0.02); }
#page-operations .ast-donlegend .cl .cnm { color: #C4BFB6; font-weight: 500; flex: 1; }
#page-operations .ast-donlegend .cl .cvl { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; }
#page-operations .ast-donlegend .cl .cpc { font-size: 11px; color: #8A857D; min-width: 34px; text-align: right; }
/* maintenance-cost-trend tile (mirror asset_3 .panel-maint / .maint-foot). */
#page-operations .ast-maintcv { display: block; width: 100%; height: 150px; }
#page-operations .ast-maintfoot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
#page-operations .ast-maintfoot .lo { display: flex; align-items: baseline; gap: 8px; }
#page-operations .ast-maintfoot .lo .big { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 20px; color: #F0EBE2; font-variant-numeric: tabular-nums; }
#page-operations .ast-maintfoot .lo .lab { color: #8A857D; font-size: 12px; }
#page-operations .ast-maintpill { font-size: 11.5px; font-weight: 600; padding: 4px 10px; border-radius: 100px; border: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-maintpill.up { color: #E05555; background: rgba(224,85,85,0.08); }
#page-operations .ast-maintpill.down { color: #4CAF7D; background: rgba(76,175,125,0.08); }
#page-operations .ast-maintpill.flat { color: #8A857D; }
#page-operations .ast-maint-empty { padding: 26px; text-align: center; color: #8A857D; font-size: 12.5px; }
/* TCO/depreciation feeds footer (mirror sample .foot). */
#page-operations .ast-depfoot { margin-top: 26px; display: flex; align-items: center; gap: 10px; font-size: 11.5px; color: #8A857D; border-top: 1px solid rgba(255,255,255,0.07); padding-top: 16px; letter-spacing: .02em; }
#page-operations .ast-depfoot .fdot { width: 6px; height: 6px; border-radius: 50%; background: #4CAF7D; box-shadow: 0 0 8px rgba(76,175,125,0.5); flex: 0 0 auto; }
@media (prefers-reduced-motion: reduce) { #page-operations .ast-depbar i { transition: none !important; } }

/* ════════════════════════════════════════════════════════════════════════════════
   FIX_AST_DOSSIER_S2_2026_06_16 — the 5-tab per-asset dossier. Built TO
   design_samples/operations_assets/asset_5_asset_detail.html (rail L75-128, tabs/panes
   L130-225) re-skinned to #page-operations ast-* vocabulary (literal hex mirror the sample
   tokens; ASCII-only comments). Left rail (hero/ring/QR/warranty/switcher) + 5 panes.
   ════════════════════════════════════════════════════════════════════════════════ */
#page-operations .ast-dossier { }
#page-operations .ast-switcher { display: flex; gap: 9px; flex-wrap: wrap; margin: 4px 0 18px; }
#page-operations .ast-swchip { display: flex; align-items: center; gap: 9px; padding: 9px 13px 9px 10px; background: linear-gradient(180deg,#232120,#1d1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; cursor: pointer; transition: transform .25s cubic-bezier(.22,.61,.36,1), border-color .25s, box-shadow .25s; color: #C4BFB6; font-size: 12.5px; font-weight: 600; font-family: 'Montserrat', sans-serif; user-select: none; }
#page-operations .ast-swchip:hover { transform: translateY(-2px); border-color: rgba(255,255,255,0.12); }
#page-operations .ast-swchip .ic { width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; background: rgba(255,255,255,0.04); flex: 0 0 auto; font-size: 13px; }
#page-operations .ast-swchip .dot { width: 8px; height: 8px; border-radius: 50%; }
#page-operations .ast-swchip.active { border-color: rgba(201,168,76,0.45); box-shadow: 0 0 0 1px rgba(201,168,76,0.45), 0 12px 30px -14px rgba(201,168,76,0.45); background: linear-gradient(180deg,#2a261c,#211e16); color: #F0EBE2; }
#page-operations .ast-swchip.active .ic { background: rgba(201,168,76,0.16); }
/* FIX_ENTITYCARD_S5_ASTBODY_2026_09_10 - S5 3.7. THE ASSET CARD'S 340px IN-CARD RAIL AND ITS
   LEGACY PANE VOCABULARY ARE RETIRED HERE - 37 rules, deleted by EXACT SELECTOR.
   FIX_AST_RAIL_STICKY_RESTORE_2026_06_16's sticky-rail rationale stood here and is removed with
   the rule it explained: a rationale left beside a retired rule is how the next author restores
   it. That rail was ported verbatim from the SUPERSEDED asset-detail sample generation, not
   designed for the unified card; the spec generation's entity card is single-column throughout.
   RETIRED, grouped as 0.4 enumerates them: the two-column frame + its 920px collapse (2); the
   rail container and its body (2); the hero medallion family (5, DP-1 = (a) RULED 2026-09-10);
   the photo thumb strip family (4, DP-3 = (a) RULED); the rail name + model lines (2); the
   condition-ring family (8, DP-2 = (a) RULED - replaced by the .vk-scoped rules further down);
   the rail meta list (5); the warranty chip family (5); the right-hand main container (1); and
   the three legacy pane rules the kit panel vocabulary now supplies (3).
   NOT RETIRED, and named so nobody sweeps them by prefix - this brief's own first draft made
   exactly that error: the depreciation-chart family (an ast-hero* prefix match, but it belongs
   to the Financials pane), the register row's condition-bar family (an ast-cond* prefix match,
   nothing to do with the ring), and the 17-rule maintenance-chart family (an ast-main* prefix
   match). The QR, barcode and their two placeholders are also NOT retired - 3.3 RELOCATES those
   chips rather than removing them, so their 7 rules stay and keep binding inside the panel.
   RECORDED, NOT DONE: the astfade keyframes below and the 4 orphaned ast-tab* rules above now
   have no emitter. This brief does not name them, and a rule it does not name is not retired -
   an orphaned rule is inert, a wrongly-deleted one is a visible break. Surfaced in the close-out
   instead. ASCII-only (non-ASCII silently drops the CSSOM rule). */
/* FIX_AST_FIXBUNDLE_S1_2026_07_02 — QR/warranty rail layout (FIX 4). The chiprow was a flex ROW:
   the QR chip (flex:0 0 auto, ~198px content-box) sat beside the warranty chip and pushed it
   partway off the narrow left rail. Changed to a vertical STACK (flex-direction:column) so QR
   sits ABOVE warranty; the QR chip is capped to 170px max-width + centered so it stays crisply
   scannable (well above the ~150px floor for a v1/v2 code + 4-module quiet zone) without
   dominating the rail; warranty spans full rail width beneath it. The barcode chip (separate
   div after the chiprow) is unaffected. */
#page-operations .ast-qrchip { flex: 0 0 auto; align-self: center; max-width: 170px; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 11px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; background: rgba(255,255,255,0.02); }
/* FIX_AST_QR_SCANFIX_2026_06_17 — padding REMOVED from the canvas (it was the scan-killer): with
   the global box-sizing:border-box, a 5px canvas padding shrank the displayed content-box below the
   backing-store dimension, so image-rendering:pixelated nearest-neighbour-downscaled the QR at a
   non-integer ratio and misaligned module edges. The bitmap already carries a 4-module white quiet
   zone, so the white margin is intact; visual breathing room lives on the .ast-qrchip wrapper
   (padding:11px). Now the canvas displays 1:1 with its backing store. */
/* FIX_AST_QR_FITSLOT_2026_06_21 — the encoder (__astDrawQR) overwrites the canvas inline
   style.width/height to the full backing-store size (px=8 per module → a v1 21-module code + 4-module
   quiet zone = 232px), which overflowed the ~198px .ast-qrchip slot. max-width:100% clamps the inline
   display width down to the chip content-box (max-width wins over the inline width per CSS cascade);
   height:auto keeps it square; the existing image-rendering:pixelated gives a crisp nearest-neighbour
   downscale of the full-res 232px backing store. NOT a px reduction — that would discard the deliberate
   6→8 px scan-fix backing resolution (see FIX_AST_QR_SCANFIX_2026_06_17); the fit is display-only, the
   backing store stays 232px for print + future larger slots. */
#page-operations .ast-qrchip canvas { border-radius: 5px; image-rendering: pixelated; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.4); max-width: 100%; height: auto; }
#page-operations .ast-qrchip .tag { font-size: 10px; font-weight: 700; letter-spacing: .06em; color: #C4BFB6; font-family: 'Montserrat', sans-serif; }
/* FIX_AST_QR_BARCODE_FITSLOT_2026_06_21 — greyed placeholder shown on the add-new card in place of the
   QR / barcode canvas (no meaningless 'ASSET' code is drawn until the asset is saved). */
#page-operations .ast-qr-placeholder { width: 100%; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 8px; border-radius: 5px; border: 1px dashed rgba(255,255,255,0.18); background: rgba(255,255,255,0.03); color: #8A857C; font-size: 11px; font-weight: 600; line-height: 1.3; }
#page-operations .ast-barcode-placeholder { width: 100%; min-height: 34px; display: flex; align-items: center; justify-content: center; text-align: center; padding: 8px; border-radius: 5px; border: 1px dashed rgba(255,255,255,0.18); background: rgba(255,255,255,0.03); color: #8A857C; font-size: 11px; font-weight: 600; }
/* FIX_EDITOR_STANDALONE_REFACTOR_2026_06_16 — Code128 barcode chip (alongside the QR chip). */
/* FIX_AST_BARCODE_COMPACT_2026_06_16 — chip margin/padding trimmed (margin-top 10->6, padding
   9->5, canvas padding 4px 6px -> 3px 6px) so the standalone barcode block stops dominating
   rail height; pairs with the canvas H 46->34 reduction in __astDrawBarcode so the rail fits
   <= viewport and the Print button clears. */
#page-operations .ast-barcodechip { margin-top: 6px; display: flex; justify-content: center; padding: 5px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; background: rgba(255,255,255,0.02); }
#page-operations .ast-barcodechip canvas { background: #fff; border-radius: 5px; padding: 3px 6px; box-shadow: 0 2px 8px rgba(0,0,0,.4); }
/* FIX_AST_FIXBUNDLE_S1_2026_07_02 — inline add-input row for the supplier + category
   "+ Add new..." affordances (FIX 1 + FIX 2). Flex row: text input + Add/Cancel buttons. */
#page-operations .ast-inline-addwrap { display: flex; gap: 6px; align-items: center; }
#page-operations .ast-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 9px 14px; border-radius: 10px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.03); color: #F0EBE2; font-weight: 600; font-size: 12.5px; cursor: pointer; font-family: 'Montserrat', sans-serif; transition: transform .2s cubic-bezier(.22,.61,.36,1), background .2s, border-color .2s; width: 100%; margin-top: 14px; }
#page-operations .ast-btn:hover { transform: translateY(-2px); background: rgba(201,168,76,0.1); border-color: rgba(201,168,76,0.45); }
#page-operations .ast-btn.gold { background: linear-gradient(180deg,#caa84e,#a98a37); color: #211d12; border-color: transparent; box-shadow: 0 10px 24px -10px rgba(201,168,76,0.45); }
#page-operations .ast-btn.gold:hover { filter: brightness(1.06); }
#page-operations .ast-tabs { display: flex; gap: 4px; padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.012); overflow-x: auto; }
#page-operations .ast-tab { padding: 9px 15px; border-radius: 9px; font-size: 13px; font-weight: 600; color: #8A857D; cursor: pointer; white-space: nowrap; border: 1px solid transparent; font-family: 'Montserrat', sans-serif; transition: color .2s, background .2s, border-color .2s; }
#page-operations .ast-tab:hover { color: #C4BFB6; }
#page-operations .ast-tab.active { color: #F0EBE2; background: rgba(201,168,76,0.12); border-color: rgba(201,168,76,0.45); }
#page-operations .ast-secttitle { font-size: 12px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: #C9A84C; margin: 0 0 13px; display: flex; align-items: center; gap: 9px; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-secttitle::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg,rgba(255,255,255,0.07),transparent); }
#page-operations .ast-secttitle.mt { margin-top: 26px; }
#page-operations .ast-specgrid { display: grid; grid-template-columns: repeat(3,1fr); gap: 11px; }
@media (max-width: 560px) { #page-operations .ast-specgrid { grid-template-columns: repeat(2,1fr); } }
/* FIX_AST_CARD_UNIFY_S1_2026_06_16 — unified-card edit-mode Overview (Refinement 1). The tab
   strip + inline Edit affordance share one row; the editable spec/condition grids reuse the
   inv-field control styling in a 2-col grid; the resolved-industry header drops the switch
   column; Save/Cancel sit in a right-aligned footer. */
#page-operations .ast-tabhead { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.012); padding-right: 12px; }
#page-operations .ast-tabhead .ast-tabs { border-bottom: none; background: none; flex: 1 1 auto; }
#page-operations .ast-edit-affd { flex: 0 0 auto; padding: 8px 16px; font-size: 12.5px; }
/* FIX_AST_CARD_PUNCHLIST_2026_06_16 — .ast-edit-istrip rule removed; its only consumer (the
   asset-card "configured for your business" strip) was removed per the render review. */
#page-operations .ast-editgrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 13px; }
@media (max-width: 620px) { #page-operations .ast-editgrid { grid-template-columns: 1fr; } }
#page-operations .ast-editfoot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-spec { padding: 12px 13px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; background: rgba(255,255,255,0.014); }
#page-operations .ast-spec .l { font-size: 10.5px; color: #8A857D; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-spec .v { font-size: 15px; color: #F0EBE2; font-weight: 700; font-family: 'Montserrat', sans-serif; margin-top: 5px; }
#page-operations .ast-spec .v.gold { color: #C9A84C; }
#page-operations .ast-banner { display: flex; gap: 13px; align-items: flex-start; padding: 14px 16px; border-radius: 10px; margin-top: 20px; background: linear-gradient(90deg,rgba(232,148,58,0.13),rgba(232,148,58,0.04)); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .ast-banner .bi { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: rgba(232,148,58,0.18); flex: 0 0 auto; }
#page-operations .ast-banner .bt b { font-family: 'Montserrat', sans-serif; color: #E8943A; font-size: 13.5px; }
#page-operations .ast-banner .bt p { margin: 3px 0 0; font-size: 12.5px; color: #C4BFB6; }
#page-operations .ast-empty { padding: 22px; text-align: center; color: #8A857D; font-size: 12.5px; border: 1px dashed rgba(255,255,255,0.07); border-radius: 10px; }
/* timeline */
#page-operations .ast-timeline { position: relative; margin: 4px 0 0; padding-left: 22px; }
#page-operations .ast-timeline::before { content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: linear-gradient(180deg,rgba(201,168,76,0.45),rgba(255,255,255,0.07)); }
#page-operations .ast-tlitem { position: relative; padding: 0 0 16px; }
#page-operations .ast-tlitem:last-child { padding-bottom: 0; }
#page-operations .ast-tlitem::before { content: ""; position: absolute; left: -21px; top: 3px; width: 11px; height: 11px; border-radius: 50%; background: #232120; border: 2px solid #C9A84C; }
#page-operations .ast-tlitem .th { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; }
#page-operations .ast-tlitem .tn { font-size: 13px; font-weight: 700; color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-tlitem .td { font-size: 11.5px; color: #8A857D; font-weight: 600; }
#page-operations .ast-tlitem .ts { font-size: 11.5px; color: #C4BFB6; margin-top: 2px; }
#page-operations .ast-tlitem .cost { color: #C9A84C; font-weight: 700; }
#page-operations .ast-upcard { display: flex; gap: 12px; align-items: center; padding: 13px 15px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; margin-bottom: 10px; background: rgba(255,255,255,0.014); }
#page-operations .ast-upcard.due { border-color: rgba(232,148,58,0.35); background: rgba(232,148,58,0.06); }
#page-operations .ast-upcard .ub { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; flex: 0 0 auto; background: rgba(255,255,255,0.04); }
#page-operations .ast-upcard.due .ub { background: rgba(232,148,58,0.16); }
#page-operations .ast-upcard .un { font-size: 13.5px; font-weight: 700; color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-upcard .us { font-size: 11.5px; color: #8A857D; margin-top: 2px; }
#page-operations .ast-upcard .uw { margin-left: auto; text-align: right; }
#page-operations .ast-upcard .uw b { font-size: 12.5px; color: #E8943A; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-upcard .uw.q b { color: #C4BFB6; }
#page-operations .ast-totstrip { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-radius: 10px; margin-top: 18px; border: 1px solid rgba(255,255,255,0.07); background: linear-gradient(90deg,rgba(201,168,76,0.08),transparent); }
#page-operations .ast-totstrip .tl { font-size: 12px; color: #8A857D; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-totstrip .tv { font-size: 24px; color: #C9A84C; font-weight: 800; font-family: 'Montserrat', sans-serif; }
/* financials chart */
#page-operations .ast-chartwrap { border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; padding: 16px 16px 8px; background: rgba(255,255,255,0.012); margin-bottom: 18px; }
#page-operations .ast-chartlegend { display: flex; gap: 16px; margin-bottom: 8px; flex-wrap: wrap; }
#page-operations .ast-chartlegend span { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: #8A857D; font-weight: 600; }
#page-operations .ast-chartlegend i { width: 11px; height: 3px; border-radius: 2px; display: inline-block; }
#page-operations .ast-finrow { display: grid; grid-template-columns: repeat(4,1fr); gap: 11px; }
@media (max-width: 560px) { #page-operations .ast-finrow { grid-template-columns: repeat(2,1fr); } }
/* lifecycle bar */
#page-operations .ast-agebar { height: 30px; border-radius: 8px; background: rgba(255,255,255,0.04); position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.07); }
#page-operations .ast-agefill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; border-radius: 8px 0 0 8px; background: linear-gradient(90deg,#4CAF7D,#E8943A 72%,#E8943A); transition: width 1.1s cubic-bezier(.22,.61,.36,1); }
#page-operations .ast-ageticks { display: flex; justify-content: space-between; margin-top: 7px; font-size: 10.5px; color: #8A857D; font-weight: 600; }
#page-operations .ast-agelabels { display: flex; justify-content: space-between; margin-bottom: 7px; font-size: 12px; color: #C4BFB6; }
#page-operations .ast-agelabels b { color: #E8943A; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-rec { display: flex; gap: 13px; padding: 15px 16px; border-radius: 10px; margin-top: 18px; border: 1px solid rgba(232,148,58,0.28); background: rgba(232,148,58,0.05); }
#page-operations .ast-rec .ri { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; background: rgba(232,148,58,0.16); flex: 0 0 auto; }
#page-operations .ast-rec b { font-family: 'Montserrat', sans-serif; color: #F0EBE2; font-size: 13.5px; }
#page-operations .ast-rec p { margin: 4px 0 0; font-size: 12.5px; color: #C4BFB6; }
#page-operations .ast-downrow { display: flex; justify-content: space-between; align-items: center; padding: 11px 14px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; margin-bottom: 9px; background: rgba(224,85,85,0.04); }
#page-operations .ast-downrow .dn { font-size: 13px; font-weight: 700; color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-downrow .ds { font-size: 11.5px; color: #8A857D; margin-top: 2px; }
#page-operations .ast-downrow .dd { font-size: 13px; font-weight: 700; color: #E05555; font-family: 'Montserrat', sans-serif; }
/* documents */
#page-operations .ast-docgrid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; }
@media (max-width: 560px) { #page-operations .ast-docgrid { grid-template-columns: 1fr; } }
#page-operations .ast-doc { display: flex; gap: 12px; align-items: center; padding: 13px 14px; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; cursor: pointer; background: rgba(255,255,255,0.014); transition: transform .25s cubic-bezier(.22,.61,.36,1), border-color .25s; }
#page-operations .ast-doc:hover { transform: translateY(-2px); border-color: rgba(201,168,76,0.45); }
#page-operations .ast-doc .dic { width: 38px; height: 46px; border-radius: 6px; flex: 0 0 auto; display: grid; place-items: center; color: #fff; font-size: 9px; font-weight: 800; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-doc .dn { font-size: 13px; font-weight: 700; color: #F0EBE2; font-family: 'Montserrat', sans-serif; }
#page-operations .ast-doc .ds { font-size: 11px; color: #8A857D; margin-top: 2px; }
#page-operations .ast-photogrid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-top: 13px; }
#page-operations .ast-photo { height: 96px; border-radius: 10px; border: 1px solid rgba(255,255,255,0.07); position: relative; overflow: hidden; cursor: pointer; transition: transform .25s cubic-bezier(.22,.61,.36,1); }
#page-operations .ast-photo:hover { transform: scale(1.02); }
#page-operations .ast-photo .cap { position: absolute; left: 8px; bottom: 7px; font-size: 10px; font-weight: 700; color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.6); font-family: 'Montserrat', sans-serif; }
#page-operations .ast-doc-note { margin-top: 12px; font-size: 11.5px; color: #8A857D; line-height: 1.5; }

/* FEFO / expiry status badge */
#page-operations .inv-lbadge { display: inline-flex; align-items: center; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; }
#page-operations .inv-lbadge.ok { color: #4CAF7D; background: rgba(76,175,125,0.14); }
#page-operations .inv-lbadge.expiring { color: #E8943A; background: rgba(232,148,58,0.14); }
#page-operations .inv-lbadge.expired { color: #E05555; background: rgba(224,85,85,0.14); }
/* serial pills */
#page-operations .inv-serial-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
#page-operations .inv-serial-pill { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: .3px; background: #161412; border: 1px solid rgba(255,255,255,0.13); border-radius: 6px; padding: 5px 7px 5px 11px; display: inline-flex; align-items: center; gap: 8px; color: #F0EBE2; }
#page-operations .inv-serial-pill button { background: none; border: none; color: #8A857D; cursor: pointer; font-size: 13px; }
#page-operations .inv-serial-pill button:hover { color: #E05555; }
#page-operations .inv-note { display: flex; gap: 10px; align-items: flex-start; padding: 11px 13px; border-radius: 9px; margin-bottom: 14px; font-size: 12px; line-height: 1.45; }
#page-operations .inv-note.amber { background: rgba(232,148,58,0.09); border: 1px solid rgba(232,148,58,0.25); color: #e8cfa8; }
#page-operations .inv-note.blue { background: rgba(91,155,213,0.09); border: 1px solid rgba(91,155,213,0.25); color: #cfe0f0; }
#page-operations .inv-note b { color: #F0EBE2; }
#page-operations .inv-input-affix { display: flex; gap: 8px; align-items: stretch; }
#page-operations .inv-input-affix input { flex: 1; }

/* FIX_INV_EDITOR_S2_2026_06_16 — item-editor S2 styling: 6-industry preset strip /
   item-type picker grid / accordions (Identifiers / Pricing-margin / Replenishment) /
   live margin calculator + bar / 3-tier price grid / per-location thresholds table.
   Built TO design_samples/operations_inventory/inventory_mgmt_2b_add_edit_pro.html
   (preset strip L415-L436, accordions L506-L752, margin calc L694-L706) but re-skinned
   to the existing #page-operations .inv-* drawer vocabulary (literal hex mirror the
   inv-* tokens; ASCII-only comments). NOT an import of the sample sheet. */
/* PILLAR 1 — industry preset strip */
#page-operations .inv-istrip { background: linear-gradient(180deg, rgba(201,168,76,0.10), rgba(201,168,76,0.02)); border: 1px solid rgba(201,168,76,0.30); border-radius: 14px; padding: 14px 16px; margin-bottom: 18px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
#page-operations .inv-istrip-ico { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 11px; background: rgba(201,168,76,0.14); color: #C9A84C; display: flex; align-items: center; justify-content: center; font-size: 20px; }
#page-operations .inv-istrip-text { flex: 1 1 240px; min-width: 200px; }
#page-operations .inv-istrip-kicker { font-family: 'Montserrat', sans-serif; font-size: 9.5px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: #C9A84C; }
#page-operations .inv-istrip-title { font-family: 'Montserrat', sans-serif; font-size: 15px; font-weight: 700; color: #F0EBE2; margin: 3px 0 2px; }
#page-operations .inv-istrip-sub { font-size: 11.5px; color: #8A857D; line-height: 1.45; }
#page-operations .inv-istrip-switch { display: flex; flex-direction: column; gap: 7px; align-items: flex-end; }
#page-operations .inv-demo-tag { font-family: 'Montserrat', sans-serif; font-size: 8.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #8A857D; }
#page-operations .inv-indseg { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
#page-operations .inv-indbtn { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); color: #C4BFB6; border-radius: 999px; padding: 6px 12px; cursor: pointer; transition: all .12s; }
#page-operations .inv-indbtn:hover { border-color: rgba(255,255,255,0.30); color: #F0EBE2; }
#page-operations .inv-indbtn.on { background: #C9A84C; border-color: #C9A84C; color: #1A1610; }
/* FIX_AST_CARD_PUNCHLIST_2026_06_16 — .inv-minimal-hint rules removed; the green minimal-mode
   hint they styled was removed from the inventory editor per the render review. */
/* PILLAR 2 — item-type picker grid (auto-fit cards) */
#page-operations .inv-typegrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 4px; }
#page-operations .inv-typecard { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; text-align: left; padding: 12px 13px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.07); background: #1C1A17; cursor: pointer; transition: all .12s; }
#page-operations .inv-typecard:hover { border-color: rgba(255,255,255,0.18); }
#page-operations .inv-typecard.on { border-color: #C9A84C; background: rgba(201,168,76,.08); box-shadow: inset 0 0 0 1px #C9A84C; }
#page-operations .inv-typecard .inv-tc-ico { width: 30px; height: 30px; border-radius: 8px; background: #232120; display: flex; align-items: center; justify-content: center; color: #C9A84C; }
#page-operations .inv-typecard.on .inv-tc-ico { background: rgba(201,168,76,0.14); }
#page-operations .inv-typecard .inv-tc-nm { font-family: 'Montserrat', sans-serif; font-size: 12.5px; font-weight: 600; color: #F0EBE2; }
#page-operations .inv-typecard .inv-tc-ds { font-size: 10.5px; color: #8A857D; line-height: 1.35; }
/* PILLAR 3 — accordions */
#page-operations .inv-acc { background: #232120; border: 1px solid rgba(255,255,255,0.10); border-radius: 12px; margin-bottom: 12px; overflow: hidden; }
#page-operations .inv-acc.hide { display: none !important; }
#page-operations .inv-acc-head { width: 100%; display: flex; align-items: center; gap: 13px; background: none; border: none; cursor: pointer; color: #C4BFB6; padding: 15px 18px; text-align: left; font-family: 'Montserrat', sans-serif; transition: background .12s; }
#page-operations .inv-acc-head:hover { background: rgba(255,255,255,0.015); }
#page-operations .inv-acc-ico { width: 32px; height: 32px; flex: 0 0 32px; border-radius: 9px; background: #1C1A17; color: #C9A84C; display: flex; align-items: center; justify-content: center; }
#page-operations .inv-acc.open .inv-acc-ico { background: rgba(201,168,76,0.14); }
#page-operations .inv-acc-titles { flex: 1; min-width: 0; }
#page-operations .inv-acc-title { display: block; font-size: 13.5px; font-weight: 600; color: #F0EBE2; }
#page-operations .inv-acc-summary { display: block; font-size: 11.5px; color: #8A857D; font-family: 'Open Sans', sans-serif; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-operations .inv-acc-chev { flex: 0 0 auto; color: #8A857D; transition: transform .2s; font-size: 13px; }
#page-operations .inv-acc.open .inv-acc-chev { transform: rotate(180deg); color: #C9A84C; }
#page-operations .inv-acc-body { display: none; padding: 0 18px 18px; }
#page-operations .inv-acc.open .inv-acc-body { display: block; }
#page-operations .inv-acc-body-inner { border-top: 1px solid rgba(255,255,255,0.06); padding-top: 16px; }
/* margin calculator */
#page-operations .inv-mcalc { background: #161412; border: 1px solid rgba(255,255,255,0.07); border-radius: 9px; padding: 15px; margin-top: 2px; }
#page-operations .inv-mc-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
#page-operations .inv-mc-readout { display: flex; align-items: stretch; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
#page-operations .inv-mc-figure { flex: 1 1 110px; background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 7px; padding: 11px 13px; }
#page-operations .inv-mc-figure .inv-mf-k { font-family: 'Montserrat', sans-serif; font-size: 9.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #8A857D; }
#page-operations .inv-mc-figure .inv-mf-v { font-family: 'Montserrat', sans-serif; font-size: 20px; font-weight: 700; color: #F0EBE2; margin-top: 4px; font-variant-numeric: tabular-nums; }
#page-operations .inv-mc-bar { height: 8px; border-radius: 999px; background: #322d26; overflow: hidden; margin-top: 13px; }
#page-operations .inv-mc-bar > span { display: block; height: 100%; border-radius: 999px; transition: width .3s, background .3s; }
#page-operations .inv-affix-suffix { display: flex; align-items: center; padding: 0 11px; background: #232120; border: 1px solid rgba(255,255,255,0.10); border-left: none; border-radius: 0 7px 7px 0; color: #8A857D; font-size: 12px; white-space: nowrap; }
#page-operations .inv-affix-prefix { display: flex; align-items: center; padding: 0 11px; background: #232120; border: 1px solid rgba(255,255,255,0.10); border-right: none; border-radius: 7px 0 0 7px; color: #8A857D; font-size: 13px; }
#page-operations .inv-affix-wrap { display: flex; }
#page-operations .inv-affix-wrap input { border-radius: 0 7px 7px 0; }
#page-operations .inv-affix-wrap input.has-prefix { border-radius: 0 7px 7px 0; }
#page-operations .inv-affix-wrap input.has-suffix { border-radius: 7px 0 0 7px; }
/* 3 price tiers */
#page-operations .inv-tiergrid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 11px; }
#page-operations .inv-tier { background: #161412; border: 1px solid rgba(255,255,255,0.07); border-radius: 7px; padding: 11px; }
#page-operations .inv-tier .inv-t-name { font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #8A857D; margin-bottom: 8px; }
/* auto-reorder toggle row reuse + per-location table reuses inv-subtbl */
#page-operations .inv-acc .toggle-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #161412; border: 1px solid rgba(255,255,255,0.07); border-radius: 9px; padding: 12px 14px; }
@media (max-width: 620px) { #page-operations .inv-mc-grid, #page-operations .inv-tiergrid { grid-template-columns: 1fr; } }

/* FIX_INV_EDITOR_S3_2026_06_16 — S3 editor styling: two-pane widened drawer (form-pane +
   sticky side rail) / line-tables (components + BOM) / suppliers star / build-margin readout
   (reuses inv-mc-*) / completeness bar / co-manager tip / sticky footer echo + actions /
   custom-field rows + tag chips. Built TO design_samples/operations_inventory/
   inventory_mgmt_2b_add_edit_pro.html (rail L815-L851, footer L856-L870, line tables
   L644/L658, suppliers L676) re-skinned to inv-* tokens. ASCII-only comments. */
/* two-pane drawer: widen + lay body out as scrolling form + sticky rail */
#page-operations .inv-drawer-2pane { width: 880px; }
#page-operations .inv-drawer-2pane .inv-dr-body { display: grid; grid-template-columns: 1fr 312px; gap: 20px; align-items: start; }
#page-operations .inv-dr-formpane { min-width: 0; }
#page-operations .inv-rail { position: sticky; top: 0; display: flex; flex-direction: column; gap: 14px; }
#page-operations .inv-rail-card { background: #1C1A17; border: 1px solid rgba(255,255,255,0.10); border-radius: 12px; padding: 16px; }
#page-operations .inv-sum-img { width: 100%; height: 120px; border-radius: 9px; background: linear-gradient(135deg, #2a2722, #1b1814); border: 1px solid rgba(255,255,255,0.07); display: flex; align-items: center; justify-content: center; color: #4d473d; font-size: 34px; margin-bottom: 13px; }
#page-operations .inv-sum-typebadge { display: inline-flex; align-items: center; font-family: 'Montserrat', sans-serif; font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #C9A84C; background: rgba(201,168,76,0.14); border-radius: 999px; padding: 4px 10px; margin-bottom: 9px; }
#page-operations .inv-sum-name { font-family: 'Montserrat', sans-serif; font-size: 16px; font-weight: 700; color: #F0EBE2; margin: 0; }
#page-operations .inv-sum-cat { font-size: 11.5px; color: #8A857D; margin: 3px 0 13px; }
#page-operations .inv-sum-list { list-style: none; margin: 0; padding: 0; }
#page-operations .inv-sum-list li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,0.05); font-size: 12.5px; }
#page-operations .inv-sum-list li:last-child { border-bottom: none; }
#page-operations .inv-sum-list li.hide { display: none; }
#page-operations .inv-sum-list .k { color: #8A857D; }
#page-operations .inv-sum-list .v { color: #F0EBE2; font-weight: 600; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-sum-list .v.num { font-variant-numeric: tabular-nums; }
#page-operations .inv-completeness { margin-top: 15px; }
#page-operations .inv-comp-head { display: flex; justify-content: space-between; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #8A857D; margin-bottom: 7px; }
#page-operations .inv-comp-head span:last-child { color: #C9A84C; }
#page-operations .inv-comp-bar { height: 6px; border-radius: 999px; background: #322d26; overflow: hidden; }
#page-operations .inv-comp-bar > span { display: block; height: 100%; background: linear-gradient(90deg, #C9A84C, #e0c468); border-radius: 999px; transition: width .3s; }
#page-operations .inv-cm-tip-card { background: transparent; border-style: dashed; }
#page-operations .inv-cm-tip-row { display: flex; gap: 10px; align-items: flex-start; }
#page-operations .inv-cm-tip-ico { color: #C9A84C; flex: 0 0 auto; font-size: 16px; line-height: 1.4; }
#page-operations .inv-cm-tip-card b { color: #C4BFB6; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-cm-tip-card span#inv-cm-tip { font-size: 12px; color: #8A857D; line-height: 1.5; }
/* line tables (components + BOM): right-align tfoot total, share inv-subtbl skin */
#page-operations table.inv-linetbl tfoot td { padding: 9px 11px; border-top: 1px solid rgba(255,255,255,0.10); font-family: 'Montserrat', sans-serif; font-weight: 600; color: #F0EBE2; background: #161412; }
#page-operations table.inv-linetbl tfoot td.num { text-align: right; font-variant-numeric: tabular-nums; }
/* suppliers preferred star */
#page-operations .inv-star-btn { background: none; border: none; cursor: pointer; color: #4d473d; font-size: 16px; line-height: 1; padding: 2px; }
#page-operations .inv-star-btn.on { color: #C9A84C; }
/* job-allocation emphasis for trades */
#page-operations .inv-job-emph { background: rgba(201,168,76,0.06); border: 1px solid rgba(201,168,76,0.22); border-radius: 9px; padding: 12px 14px; margin-left: -14px; margin-right: -14px; }
/* custom-field rows + tag chips */
#page-operations .inv-cf-row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; margin-bottom: 10px; align-items: center; }
#page-operations .inv-cf-row input { width: 100%; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 7px; color: #F0EBE2; padding: 9px 11px; font-size: 13px; }
#page-operations .inv-tagchips { background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 9px; padding: 12px; min-height: 44px; }
/* rebuilt sticky footer: left echo + right actions */
#page-operations .inv-foot-echo { flex: 1; font-size: 11.5px; color: #8A857D; }
#page-operations .inv-foot-echo b { color: #C4BFB6; font-weight: 600; }
#page-operations .inv-foot-actions { display: flex; gap: 9px; flex-wrap: wrap; }
/* two-pane collapses to single column on narrow viewports (rail drops below the form) */
@media (max-width: 820px) {
  #page-operations .inv-drawer-2pane { width: 560px; }
  #page-operations .inv-drawer-2pane .inv-dr-body { grid-template-columns: 1fr; }
  #page-operations .inv-rail { position: static; }
}
/* FIX_EDITOR_STANDALONE_REFACTOR_2026_06_16 — in-flow standalone editor card. The item +
   asset editors render into #inv-panel / #ast-panel (NOT a slide-over). This wrapper drops the
   fixed-position / translateX slide / scrim coupling of .inv-drawer and lays the editor out as
   a normal centered page card inside the hub panel host, matching the 2b sample's standalone
   layout (breadcrumb + main column + ~350px rail + sticky footer). The two-pane body grid +
   rail + footer styling are REUSED verbatim via the existing .inv-drawer-2pane / .inv-dr-*
   selectors (none of which require the .inv-drawer class), so all editor content/layout
   survives byte-for-byte. The shared .inv-scrim / .inv-drawer CSS is untouched (still consumed
   by the vendor drawer, the work-order modal + the view-details drawer). */
/* FIX_SHELL_FULLWIDTH_S1_2026_06_17 (Rule 6) — relax page-wrapper max-width so editor card fills width; was max-width:1180px. ONLY the max-width is relaxed; the card chrome (position/width/margin/background/border/border-radius/display:flex/flex-direction/overflow) is byte-unchanged. CSS-only, content byte-unchanged. */
#page-operations .inv-editor-page { position: relative; width: 100%; max-width: none; margin: 0 auto; background: #232120; border: 1px solid rgba(255,255,255,0.10); border-radius: 14px; display: flex; flex-direction: column; overflow: visible; }
#page-operations .inv-editor-page.inv-drawer-2pane { width: 100%; }
#page-operations .inv-editor-page .inv-dr-foot { position: sticky; bottom: 0; background: #232120; border-bottom-left-radius: 14px; border-bottom-right-radius: 14px; z-index: 2; }
@media (max-width: 820px) {
  #page-operations .inv-editor-page.inv-drawer-2pane { width: 100%; }
}

/* FIX_OPS_INVENTORY_S2_2026_06_16 — Purchasing tab styling (PO list / reorder desk /
   PO editor / receive GRN). Built to design_samples/operations_inventory/
   inventory_management_combined.html Purchasing view; scoped under #page-operations
   .inv-* (fresh namespace, no collision with .op-*). Literal hex mirror the sample
   :root tokens (ASCII-only comments per the L18.8 lesson). */
#page-operations .inv-btn.green { background: rgba(76,175,125,0.14); color: #4CAF7D; border-color: rgba(76,175,125,0.4); }
#page-operations .inv-btn.green:hover { background: rgba(76,175,125,0.22); color: #5fc290; }
#page-operations .inv-btn.sm { padding: 6px 11px; font-size: 12px; }
#page-operations .inv-actions { display: flex; gap: 10px; }
/* back-link returning a sub-mode to the PO list */
#page-operations .inv-back2 { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: #8A857D; cursor: pointer; margin-bottom: 16px; }
#page-operations .inv-back2:hover { color: #C9A84C; }
/* forward-pointer banner (3-way-match copy only; no live Financial write) */
#page-operations .inv-banner { display: flex; gap: 12px; align-items: flex-start; padding: 13px 16px; border-radius: 12px; margin-bottom: 18px; background: rgba(91,155,213,0.09); border: 1px solid rgba(91,155,213,0.25); color: #cfe0f0; font-size: 13px; }
#page-operations .inv-banner .inv-bico { color: #5B9BD5; font-weight: 700; }
/* PO-status chip (chip-status / cs-* analogue) */
#page-operations .inv-cs { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; white-space: nowrap; }
#page-operations .inv-cs .inv-csd { width: 7px; height: 7px; border-radius: 50%; }
#page-operations .inv-cs.cs-draft { background: rgba(232,148,58,0.13); color: #E8943A; } #page-operations .inv-cs.cs-draft .inv-csd { background: #E8943A; }
#page-operations .inv-cs.cs-sent { background: rgba(91,155,213,0.14); color: #5B9BD5; } #page-operations .inv-cs.cs-sent .inv-csd { background: #5B9BD5; }
#page-operations .inv-cs.cs-partial { background: rgba(232,148,58,0.13); color: #E8943A; } #page-operations .inv-cs.cs-partial .inv-csd { background: #E8943A; }
#page-operations .inv-cs.cs-received { background: rgba(76,175,125,0.14); color: #4CAF7D; } #page-operations .inv-cs.cs-received .inv-csd { background: #4CAF7D; }
/* FIX_PO_CLOSE_SHORT_S1_2026_08_27 — the Inventory-side closed-short chip, beside its partial sibling.
   ⛔ NO NEW COLOUR LITERAL: the four sibling rules here carry raw hex, so introducing a fifth would add
   one. This resolves from the shipped variables instead — the same muted settled treatment the
   Procurement closed-short pill uses, which is also the honest reading (ended, not in progress). ⛔ The
   sibling rules above are BYTE-UNCHANGED. */
#page-operations .inv-cs.cs-closed { background: rgba(255,255,255,0.05); color: var(--text-dim); } #page-operations .inv-cs.cs-closed .inv-csd { background: var(--text-dim); }
/* reorder desk — supplier group + suggestion line */
#page-operations .inv-supgrp { border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; margin-bottom: 14px; overflow: hidden; background: #1C1A17; }
#page-operations .inv-supgrp-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 18px; border-bottom: 1px solid rgba(255,255,255,0.07); flex-wrap: wrap; }
#page-operations .inv-supname { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; }
#page-operations .inv-supmeta { color: #8A857D; font-weight: 400; font-size: 12px; }
#page-operations .inv-sugline { display: flex; align-items: center; gap: 14px; padding: 11px 18px; border-bottom: 1px solid rgba(255,255,255,0.07); font-size: 13px; }
#page-operations .inv-sugline:last-child { border-bottom: none; }
#page-operations .inv-sugline .inv-sugnm { flex: 1; color: #C4BFB6; }
#page-operations .inv-stk-out { color: #E06B5E; font-weight: 600; }
#page-operations .inv-stk-low { color: #E8943A; font-weight: 600; }
#page-operations .inv-qpill { background: rgba(201,168,76,0.12); color: #C9A84C; padding: 3px 10px; border-radius: 999px; font-weight: 600; font-size: 12px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
/* PO editor — 2-col grid + line table + order summary */
#page-operations .inv-ed-grid { display: grid; grid-template-columns: 1fr 320px; gap: 20px; align-items: start; }
#page-operations .inv-fieldrow { display: flex; gap: 14px; } #page-operations .inv-fieldrow .inv-field { flex: 1; }
#page-operations .inv-field select, #page-operations .inv-field input { width: 100%; box-sizing: border-box; }
#page-operations .inv-fi { background: #161412; border: 1px solid rgba(255,255,255,0.12); border-radius: 9px; padding: 9px 11px; color: #F0EBE2; font-size: 13px; font-family: inherit; }
#page-operations .inv-fi.num { text-align: right; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .inv-fi:focus { outline: none; border-color: #C9A84C; }
#page-operations .inv-sumcard { position: sticky; top: 90px; }
#page-operations .inv-sumrow { display: flex; justify-content: space-between; font-size: 13.5px; padding: 7px 0; }
#page-operations .inv-sumrow .inv-sumk { color: #8A857D; }
#page-operations .inv-sumtot { display: flex; justify-content: space-between; border-top: 1px solid rgba(255,255,255,0.13); margin-top: 6px; padding-top: 13px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 700; font-size: 16px; color: #F0EBE2; }
#page-operations .inv-additem { padding: 12px 16px; display: flex; gap: 10px; align-items: center; border-top: 1px solid rgba(255,255,255,0.07); }
/* receive GRN — status pipe + per-line cards */
#page-operations .inv-pipe { display: flex; align-items: center; flex-wrap: wrap; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 11px; font-weight: 600; }
#page-operations .inv-pipe .inv-ps { color: #8A857D; } #page-operations .inv-pipe .inv-ps.done { color: #4CAF7D; } #page-operations .inv-pipe .inv-ps.cur { color: #C9A84C; }
#page-operations .inv-pipe .inv-parrow { color: #8A857D; margin: 0 9px; }
#page-operations .inv-rcv-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 13px; }
#page-operations .inv-fl { display: block; font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: #8A857D; margin-bottom: 5px; font-weight: 600; }
#page-operations .inv-rcv-fixed { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 600; color: #F0EBE2; font-size: 15px; }
#page-operations .inv-flag { font-size: 12px; margin-top: 5px; min-height: 14px; }
#page-operations .inv-flag .over { color: #E8943A; } #page-operations .inv-flag .short { color: #5B9BD5; }
#page-operations .inv-tnum { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .inv-cardhead { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations .inv-cardhead h2 { font-family: 'Montserrat', sans-serif; font-size: 14px; font-weight: 700; color: #F0EBE2; margin: 0; }
#page-operations .inv-cardmeta { font-size: 12px; color: #8A857D; }

/* FIX_OPS_INVENTORY_S3_2026_06_16 — Operations (stock-ops) + Vendors HOME styling, scoped
   under #page-operations .inv-*. Built TO the sample's Operations + (implied) Vendors views;
   literal hex mirror the sample :root tokens (ASCII-only comments per the L18.8 lesson). */
/* Operations sub-tab bar (optabs / optab analogue, re-prefixed inv-) */
#page-operations .inv-optabs { display: flex; gap: 4px; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 5px; margin-bottom: 22px; flex-wrap: wrap; }
#page-operations .inv-optab { flex: 1 1 0; min-width: 110px; border: 0; background: transparent; color: #8A857D; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 13px; font-weight: 600; padding: 10px 14px; border-radius: 9px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; transition: background .15s, color .15s; }
#page-operations .inv-optab:hover { color: #C4BFB6; }
#page-operations .inv-optab .inv-opdot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .6; }
#page-operations .inv-optab.on { background: #232120; color: #F0EBE2; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.13); }
#page-operations .inv-optab.on .inv-opdot { opacity: 1; }
#page-operations .inv-optab.t-adjust.on .inv-opdot { color: #E8943A; }
#page-operations .inv-optab.t-count.on .inv-opdot { color: #C9A84C; }
#page-operations .inv-optab.t-receive.on .inv-opdot { color: #4CAF7D; }
/* confirm banner (opConfirm analogue) */
#page-operations .inv-confirm { display: none; align-items: center; gap: 12px; background: rgba(76,175,125,0.1); border: 1px solid rgba(76,175,125,0.4); border-radius: 11px; padding: 12px 16px; margin-bottom: 16px; font-size: 13px; color: #C4BFB6; }
#page-operations .inv-confirm.show { display: flex; }
#page-operations .inv-confirm.tone-gold { background: rgba(201,168,76,0.1); border-color: rgba(201,168,76,0.4); }
#page-operations .inv-confirm b { color: #F0EBE2; }
/* adjust readout (current -> change -> new) */
#page-operations .inv-readout { display: flex; gap: 24px; flex-wrap: wrap; align-items: center; padding: 16px 0 4px; }
#page-operations .inv-ro .inv-rok { font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em; color: #8A857D; font-weight: 700; margin-bottom: 4px; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-ro .inv-rov { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 700; font-size: 22px; color: #F0EBE2; }
#page-operations .inv-ro .inv-rov.pos { color: #4CAF7D; } #page-operations .inv-ro .inv-rov.neg { color: #E05555; }
#page-operations .inv-roarrow { color: #8A857D; font-size: 18px; }
/* toolbar2 (post button row) */
#page-operations .inv-toolbar2 { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 18px; }
#page-operations .inv-toolbar2 .inv-spacer { flex: 1; }
/* movement history list (hrow analogue) */
#page-operations .inv-history { display: flex; flex-direction: column; gap: 1px; background: rgba(255,255,255,0.07); border-radius: 11px; overflow: hidden; }
#page-operations .inv-hrow { display: flex; align-items: center; gap: 12px; background: #1C1A17; padding: 12px 16px; font-size: 13px; }
#page-operations .inv-hrow .inv-hname { color: #F0EBE2; font-weight: 600; flex: 1; }
#page-operations .inv-hrow .inv-htag { font-size: 11px; color: #8A857D; background: #232120; padding: 2px 8px; border-radius: 6px; }
#page-operations .inv-hrow .inv-hmeta { color: #8A857D; font-size: 12px; }
#page-operations .inv-hrow .inv-hqty { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 600; }
#page-operations .inv-hrow .inv-hqty.pos { color: #4CAF7D; } #page-operations .inv-hrow .inv-hqty.neg { color: #E05555; }
/* cycle-count table variance cells */
#page-operations table.inv-count td.num, #page-operations table.inv-count th.num { text-align: right; }
#page-operations table.inv-count .inv-var { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 600; }
#page-operations table.inv-count .inv-var.zero { color: #4CAF7D; } #page-operations table.inv-count .inv-var.off { color: #E8943A; }
#page-operations table.inv-count .inv-var-val { font-size: 12px; color: #8A857D; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .inv-runtot { font-size: 13px; color: #C4BFB6; } #page-operations .inv-runtot b { color: #F0EBE2; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; } #page-operations .inv-runtot .inv-vt { color: #E8943A; font-weight: 600; }
/* Vendors HOME directory cards */
#page-operations .inv-vngrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
#page-operations .inv-vncard { background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 16px 18px; box-shadow: 0 8px 32px rgba(0,0,0,0.45); }
#page-operations .inv-vncard:hover { border-color: rgba(255,255,255,0.12); }
#page-operations .inv-vntop { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
#page-operations .inv-vnmono { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 10px; background: rgba(201,168,76,0.12); color: #C9A84C; display: flex; align-items: center; justify-content: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; }
#page-operations .inv-vnmain { flex: 1; min-width: 0; }
#page-operations .inv-vnname { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 15px; color: #F0EBE2; }
#page-operations .inv-vnmeta { font-size: 12px; color: #8A857D; margin-top: 2px; }
#page-operations .inv-vnstats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
#page-operations .inv-vnstat .inv-vnk { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: #8A857D; font-weight: 700; margin-bottom: 3px; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-vnstat .inv-vnv { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 600; font-size: 14px; color: #F0EBE2; }

/* FIX_OPS_VENDORS_S1_2026_06_23 — Operations Purchasing & Vendors room (the execution-lens
   surface). Scoped under #page-operations .opv-* to match the .inv-* room namespace + avoid
   the sample's unprefixed-class collisions. The in-page tab bar reuses .inv-tabs/.inv-tab.
   Literal hex values mirror the operations sample :root tokens. ASCII-only comments. */
#page-operations .opv-head { margin-bottom: 14px; }
#page-operations .opv-head h1 { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 26px; color: #F0EBE2; letter-spacing: -.01em; }
#page-operations .opv-sub { font-size: 13px; color: #8A857D; margin-top: 5px; max-width: 720px; line-height: 1.5; }
#page-operations .opv-statusline { display: flex; align-items: center; gap: 10px; margin: 4px 0 18px; font-size: 13.5px; color: #C4BFB6; }
#page-operations .opv-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .opv-statusline .opv-fix { color: #E8943A; font-weight: 600; }
#page-operations .opv-statusline .opv-ok { color: #4CAF7D; font-weight: 600; }
/* FIX_OPS_RENDER_DEFECTS_S1_2026_08_08 — paired rule for the closing footnote emitted by
   renderOperationsVendors. Declarations are copied verbatim from the kit rule `.vk .footnote`,
   so the room's footnote is visually identical to every kit footnote without opting into .vk.
   ⛔ The ID scope is deliberate and must not be "simplified" to an unscoped selector: legacy
   #page-x .y is (1,1,0) and a bare .vk .y is (0,2,0), which loses — every rule in this block is
   already ID-scoped for that reason, and an unscoped rule authored here would render inert.
   FIX_LANDBATCH_FAINT_LITERAL_2026_08_15 — the colour now references var(--faint) DIRECTLY.
   ⛔ THE SUPERSEDED SENTENCE HERE WAS TRUE WHEN AUTHORED AND FALSE WHEN LANDED, WHICH IS THE
   WHOLE LESSON. It said the declarations were copied "with var(--faint) resolved to its literal
   value, matching this block's own hex convention" — a deliberate inline, correct against this
   build's own base. FIX_KIT_FAINT_AA_2026_08_13 then moved --faint to a WCAG-AA value in the
   SAME landing batch, so the inlined copy stopped tracking the token: every kit footnote
   computed the new value while this one computed the pre-AA one, making the "visually identical"
   claim false and shipping a NEW below-AA body-copy site inside a batch whose headline is
   "clear WCAG AA". Neither authoring lane could see it — each was correct against its own
   unlanded base, and the defect existed only in the COMBINATION.
   ⭐ A hardcoded literal does not COMPETE with a token, it never PARTICIPATES — so a
   "did anything overwrite my definition?" sweep cannot see this; only a cross-build read can.
   ⛔ Do not re-inline the value here again, in either direction. --faint is defined on :root
   (NOT .vk-scoped), so var(--faint) resolves on this element without opting into .vk, which is
   exactly the property the paragraph above depends on. No fallback is used deliberately: a
   fallback would be a second literal to maintain and would re-create the drift being closed. */
#page-operations .opv-footnote { margin-top: 26px; font-size: 11px; color: var(--faint); line-height: 1.5; text-align: center; }
#page-operations .opv-dot { width: 10px; height: 10px; border-radius: 50%; background: #E8943A; box-shadow: 0 0 11px rgba(232,148,58,0.7); flex: 0 0 10px; }
#page-operations .opv-dot.calm { background: #4CAF7D; box-shadow: 0 0 11px rgba(76,175,125,0.6); }

#page-operations .opv-kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 13px; margin-bottom: 18px; }
@media (max-width: 1040px) { #page-operations .opv-kpis { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { #page-operations .opv-kpis { grid-template-columns: 1fr; } }
#page-operations .opv-kpi { position: relative; overflow: hidden; background: linear-gradient(165deg, #262320, #1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opv-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; opacity: .55; }
#page-operations .opv-kpi.k-ontime::before { background: #4CAF7D; }
#page-operations .opv-kpi.k-open::before { background: #5B9BD5; }
#page-operations .opv-kpi.k-late::before { background: #E8943A; }
#page-operations .opv-kpi.k-spend::before { background: #C9A84C; }
#page-operations .opv-kpi.k-vendors::before { background: #8B6FD6; }
#page-operations .opv-klbl { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 7px; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-kval { font-size: 23px; font-weight: 800; color: #F0EBE2; line-height: 1; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-ksub { font-size: 11.5px; margin-top: 7px; color: #8A857D; }

#page-operations .opv-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 18px; }
@media (max-width: 1040px) { #page-operations .opv-grid { grid-template-columns: 1fr; } }
#page-operations .opv-panel { background: linear-gradient(170deg, #252220, #1e1b19); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations #opv-panel > .opv-panel:not(.opv-grid .opv-panel) { margin-top: 18px; }
#page-operations .opv-ph { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
#page-operations .opv-ph h3 { font-family: 'Montserrat', sans-serif; font-size: 14px; color: #F0EBE2; letter-spacing: .4px; }
#page-operations .opv-hint { font-size: 11px; color: #8A857D; }
/* FIX_VENDOR_TERM_UNIFY_2026_07_21 — inline "+ Add vendor" button on the Operations Vendor directory tab. */
#page-operations .opv-vn-add { margin-left: auto; font-family: 'Montserrat', sans-serif; font-size: 11.5px; font-weight: 700; border-radius: 9px; padding: 8px 14px; cursor: pointer; white-space: nowrap; color: var(--gold); background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.45); }
#page-operations .opv-vn-add:hover { background: rgba(201,168,76,0.22); border-color: rgba(201,168,76,0.6); }
#page-operations .opv-psub { font-size: 11.5px; color: #8A857D; margin: 2px 0 14px; line-height: 1.45; }
#page-operations .opv-empty { padding: 22px 14px; text-align: center; color: #8A857D; font-size: 12.5px; line-height: 1.5; }
#page-operations .opv-empty b { color: #C4BFB6; }
#page-operations .num { font-variant-numeric: tabular-nums; } /* scoped helper used by .opv tables */
#page-operations .opv-kval.num, #page-operations .opv-sc .num, #page-operations .opv-po .num { font-variant-numeric: tabular-nums; }
#page-operations .opv-sc .pos, #page-operations .opv-vnv.pos, #page-operations .opv-otv.pos { color: #4CAF7D; }
#page-operations .opv-sc .warn, #page-operations .opv-vnv.warn, #page-operations .opv-otv.warn, #page-operations .opv-na .warn { color: #E8943A; }

/* execution scorecard table */
#page-operations .opv-sc { width: 100%; border-collapse: collapse; font-size: 12px; }
#page-operations .opv-sc th { text-align: left; font-size: 9.5px; letter-spacing: .7px; text-transform: uppercase; color: #8A857D; font-weight: 700; padding: 0 10px 9px; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-sc th.num, #page-operations .opv-sc td.num { text-align: right; }
#page-operations .opv-sc td { padding: 11px 10px; border-top: 1px solid rgba(255,255,255,0.07); vertical-align: middle; }
#page-operations .opv-vn { display: flex; align-items: center; gap: 10px; }
#page-operations .opv-mono { width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(140deg, #2e2a24, #191713); color: #C9A84C; display: grid; place-items: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11px; flex: none; border: 1px solid rgba(255,255,255,0.13); }
#page-operations .opv-vnname { font-family: 'Montserrat', sans-serif; font-weight: 600; color: #F0EBE2; }
#page-operations .opv-vnmeta { font-size: 10.5px; color: #8A857D; }
#page-operations .opv-ot { display: flex; align-items: center; gap: 9px; }
#page-operations .opv-ott { flex: 1; height: 7px; border-radius: 4px; background: rgba(255,255,255,0.06); overflow: hidden; min-width: 60px; }
#page-operations .opv-ott i { display: block; height: 100%; border-radius: 4px; }
#page-operations .opv-otv { font-family: 'Montserrat', sans-serif; font-weight: 700; width: 40px; text-align: right; color: #F0EBE2; }
#page-operations .opv-na { font-size: 11px; color: #8A857D; }
#page-operations .opv-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 700; font-family: 'Montserrat', sans-serif; padding: 3px 9px; border-radius: 999px; letter-spacing: .02em; }
#page-operations .opv-chip.green { color: #4CAF7D; background: rgba(76,175,125,0.14); border: 1px solid rgba(76,175,125,0.32); }
#page-operations .opv-chip.amber { color: #E8943A; background: rgba(232,148,58,0.14); border: 1px solid rgba(232,148,58,0.32); }
#page-operations .opv-chip.red { color: #E05555; background: rgba(224,85,85,0.14); border: 1px solid rgba(224,85,85,0.32); }
#page-operations .opv-chip.blue { color: #5B9BD5; background: rgba(91,155,213,0.14); border: 1px solid rgba(91,155,213,0.3); }
#page-operations .opv-chip.dim { color: #8A857D; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.07); }

/* needs-attention list */
#page-operations .opv-atth { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
#page-operations .opv-atth h3 { font-family: 'Montserrat', sans-serif; font-size: 14px; color: #F0EBE2; letter-spacing: .4px; display: flex; align-items: center; gap: 9px; }
#page-operations .opv-glyph { width: 24px; height: 24px; border-radius: 8px; background: linear-gradient(150deg, rgba(224,85,85,0.24), rgba(232,148,58,0.12)); display: grid; place-items: center; font-size: 13px; }
#page-operations .opv-count { font-size: 10.5px; font-weight: 700; color: #F0EBE2; background: rgba(232,148,58,0.16); border: 1px solid rgba(232,148,58,0.36); border-radius: 999px; padding: 3px 11px; letter-spacing: .03em; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-attlist { display: flex; flex-direction: column; gap: 9px; }
#page-operations .opv-allclear { padding: 18px 14px; text-align: center; color: #8A857D; font-size: 12.5px; line-height: 1.5; }
#page-operations .opv-att { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: 12px; background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); position: relative; overflow: hidden; }
#page-operations .opv-att::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; border-radius: 12px 0 0 12px; background: #C9A84C; }
#page-operations .opv-att.p1 { border-color: rgba(224,85,85,0.36); background: linear-gradient(108deg, rgba(224,85,85,0.12), rgba(255,255,255,0.018) 46%); padding: 14px 15px; }
#page-operations .opv-att.p1::before { background: #E05555; box-shadow: 0 0 18px rgba(224,85,85,0.5); }
#page-operations .opv-att.amber::before { background: #E8943A; }
#page-operations .opv-att.blue::before { background: #5B9BD5; }
#page-operations .opv-rank { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 12px; color: #8A857D; width: 16px; text-align: center; flex-shrink: 0; }
#page-operations .opv-att.p1 .opv-rank { font-size: 17px; color: #E05555; width: 20px; }
#page-operations .opv-aico { width: 32px; height: 32px; border-radius: 9px; flex: none; display: flex; align-items: center; justify-content: center; font-size: 15px; }
#page-operations .opv-att.p1 .opv-aico { width: 40px; height: 40px; border-radius: 11px; font-size: 18px; }
#page-operations .opv-abody { flex: 1; min-width: 0; }
#page-operations .opv-att-tt { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; }
#page-operations .opv-att.p1 .opv-att-tt { font-size: 14.5px; }
#page-operations .opv-adesc { font-size: 11.5px; color: #8A857D; margin-top: 3px; line-height: 1.4; }
#page-operations .opv-att.p1 .opv-adesc { font-size: 12px; color: #C4BFB6; }
#page-operations .opv-adesc b { color: #C4BFB6; font-weight: 600; }
#page-operations .opv-btn { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; border-radius: 8px; padding: 7px 14px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.04); color: #C4BFB6; white-space: nowrap; cursor: not-allowed; opacity: .6; }
#page-operations .opv-btn.sm { padding: 6px 11px; font-size: 10.5px; }

/* open-orders + directory shared */
#page-operations .opv-po { width: 100%; border-collapse: collapse; font-size: 12px; }
#page-operations .opv-po th { text-align: left; font-size: 9.5px; letter-spacing: .7px; text-transform: uppercase; color: #8A857D; font-weight: 700; padding: 0 10px 9px; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-po th.num, #page-operations .opv-po td.num { text-align: right; }
#page-operations .opv-po td { padding: 10px; border-top: 1px solid rgba(255,255,255,0.07); }
#page-operations .opv-po td.warn { color: #E8943A; }
#page-operations .opv-ponum { font-family: 'Montserrat', sans-serif; font-weight: 600; color: #F0EBE2; }
#page-operations .opv-vngrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(248px, 1fr)); gap: 14px; }
#page-operations .opv-vncard { background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px; cursor: pointer; transition: background .14s var(--ease); }
/* FIX_OPV_VENDORCARD_CLICK_2026_09_08 — hover/focus affordance so the card LOOKS clickable, not
   only IS clickable (a click-only card is the same defect one step along). Shape copied from the
   shipped `#page-procurement .proc-sup-row:hover` / `:focus-visible` pair. */
#page-operations .opv-vncard:hover { background: rgba(255,255,255,0.036); }
#page-operations .opv-vncard:focus-visible { outline: 1px solid var(--gold); outline-offset: -1px; }
#page-operations .opv-vntop { display: flex; align-items: center; gap: 11px; margin-bottom: 12px; }
#page-operations .opv-vnmono { width: 34px; height: 34px; border-radius: 9px; background: linear-gradient(140deg, #2e2a24, #191713); color: #C9A84C; display: grid; place-items: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; flex: none; border: 1px solid rgba(255,255,255,0.13); }
#page-operations .opv-vncname { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 13px; }
#page-operations .opv-vncmeta { font-size: 10.5px; color: #8A857D; }
#page-operations .opv-vnstats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
#page-operations .opv-vnstat { text-align: center; }
#page-operations .opv-vnk { font-size: 8.5px; letter-spacing: .7px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 3px; font-family: 'Montserrat', sans-serif; }
#page-operations .opv-vnv { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 13px; }

/* seam banners */
#page-operations .opv-seam { display: flex; align-items: center; gap: 12px; padding: 13px 16px; border-radius: 13px; border: 1px solid rgba(255,255,255,0.07); background: rgba(91,155,213,0.05); margin-top: 16px; }
#page-operations .opv-seam.proc { background: rgba(139,111,214,0.06); border-color: rgba(139,111,214,0.22); }
#page-operations .opv-seam-ic { width: 34px; height: 34px; border-radius: 9px; flex: none; display: grid; place-items: center; font-size: 16px; background: rgba(255,255,255,0.04); }
#page-operations .opv-seam-t { flex: 1; font-size: 11.5px; color: #C4BFB6; line-height: 1.45; }
#page-operations .opv-seam-t b { color: #F0EBE2; font-weight: 600; }
#page-operations .opv-seam-go { font-family: 'Montserrat', sans-serif; font-size: 11.5px; font-weight: 700; color: #C9A84C; white-space: nowrap; cursor: pointer; } /* FIX_PO_DISCOVER_WIRING_2026_07_04 — seams navigate on click; signal clickable affordance */

/* ════════════════════════════════════════════════════════════════════════════════
   FIX_OPS_INSIGHTS_S1_2026_06_23 — Operations Insights / Health (the synthesis room) CSS.
   Ported section-by-section from design_samples/operations/operations_insights.html, scoped
   under #page-operations, reusing the production :root tokens (var(--gold)/(--amber)/(--green)/
   (--red)/(--blue)/(--head)/(--text)/(--dim)/(--border)/(--border-strong)). The oi- vocabulary
   mirrors the op- panel/attention vocabulary + the pi- hero/narration + the mkt- attribution
   legend so the visual language is byte-consistent with the shipped surfaces. Duplicate-do-not-
   refactor (canon 12.1.6): the existing op- block is untouched. ASCII-only comments. */
#page-operations .oi-host { padding: 4px 2px 8px; }
#page-operations .oi-crumb { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: #8A857D; letter-spacing: .02em; margin-bottom: 14px; }
#page-operations .oi-crumb .spec { color: #C9A84C; font-weight: 600; font-family: 'Montserrat', sans-serif; }
#page-operations .oi-crumb .here { color: #F0EBE2; font-weight: 600; }
#page-operations .oi-crumb .sep { opacity: .45; }

/* hero (mirrors pi-hero) */
#page-operations .oi-hero { position: relative; overflow: hidden; background: linear-gradient(165deg, #262320, #1d1a17); border: 1px solid rgba(255,255,255,0.07); border-radius: 18px; padding: 22px 24px 20px; box-shadow: 0 26px 60px -40px #000, inset 0 1px 0 rgba(255,255,255,0.05); margin-bottom: 20px; }
#page-operations .oi-hero::after { content: ""; position: absolute; right: -60px; top: -60px; width: 260px; height: 260px; border-radius: 50%; background: radial-gradient(circle, rgba(201,168,76,0.12), transparent 64%); pointer-events: none; }
#page-operations .oi-hero-top { display: flex; align-items: center; gap: 13px; margin-bottom: 14px; }
#page-operations .oi-avatar { width: 42px; height: 42px; border-radius: 12px; flex: none; display: grid; place-items: center; background: linear-gradient(145deg, #C9A84C, #9c7f33); box-shadow: 0 6px 18px -6px rgba(201,168,76,0.28), inset 0 1px 0 rgba(255,255,255,0.3); }
#page-operations .oi-avatar svg { width: 22px; height: 22px; }
#page-operations .oi-who { display: flex; flex-direction: column; }
#page-operations .oi-who .oi-name { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #F0EBE2; }
#page-operations .oi-who .oi-role { font-size: 11px; color: #8A857D; letter-spacing: .04em; }
#page-operations .oi-live-dot { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; font-size: 10.5px; color: #4CAF7D; font-weight: 600; border: 1px solid rgba(76,175,125,0.3); border-radius: 999px; padding: 4px 11px; background: rgba(76,175,125,0.08); }
#page-operations .oi-live-dot i { width: 7px; height: 7px; border-radius: 50%; background: #4CAF7D; box-shadow: 0 0 9px #4CAF7D; }
#page-operations .oi-hero h1 { font-family: 'Montserrat', sans-serif; font-size: 25px; font-weight: 800; letter-spacing: -.01em; line-height: 1.05; color: #F0EBE2; }
#page-operations .oi-hsub { font-size: 12px; color: #8A857D; margin: 6px 0 12px; }
#page-operations .oi-narration { font-size: 14px; line-height: 1.6; color: #C4BFB6; max-width: 780px; }
#page-operations .oi-narration b { color: #F0EBE2; font-weight: 700; }
#page-operations .oi-good { color: #4CAF7D; font-weight: 600; }
#page-operations .oi-warn { color: #E8943A; font-weight: 600; }
#page-operations .oi-bad { color: #E05555; font-weight: 600; }

/* section scaffolding */
#page-operations .oi-sec { margin-bottom: 24px; }
#page-operations .oi-sec-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
#page-operations .oi-sec-head h2 { font-family: 'Montserrat', sans-serif; font-size: 15px; letter-spacing: .3px; color: #F0EBE2; font-weight: 700; }
#page-operations .oi-tag { font-family: 'Montserrat', sans-serif; font-size: 9px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; color: #C9A84C; background: rgba(201,168,76,0.13); border: 1px solid rgba(201,168,76,0.32); }
#page-operations .oi-note { font-size: 11px; color: #8A857D; margin-left: auto; }
#page-operations .oi-panel { background: linear-gradient(170deg, #252220, #1e1b19); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }

/* health composite gauge + sub-score breakdown */
#page-operations .oi-health-grid { display: grid; grid-template-columns: 288px 1fr; gap: 18px; align-items: stretch; }
#page-operations .oi-gauge-card { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
#page-operations .oi-gauge-wrap { position: relative; width: 184px; height: 184px; }
#page-operations .oi-gauge-cv { width: 184px; height: 184px; transform: rotate(-90deg); }
#page-operations .oi-gauge-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
#page-operations .oi-gauge-center .gv { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 54px; color: #F0EBE2; line-height: 1; }
#page-operations .oi-gauge-center .gm { font-size: 11px; color: #8A857D; margin-top: 2px; }
#page-operations .oi-gauge-center .gt { margin-top: 8px; font-size: 9px; letter-spacing: 1.4px; text-transform: uppercase; font-weight: 700; border-radius: 20px; padding: 3px 11px; }
#page-operations .oi-gauge-center .gt.steady { color: #E8943A; border: 1px solid rgba(232,148,58,0.4); }
#page-operations .oi-gauge-center .gt.strong { color: #4CAF7D; border: 1px solid rgba(76,175,125,0.4); }
#page-operations .oi-gauge-center .gt.weak { color: #E05555; border: 1px solid rgba(224,85,85,0.4); }
#page-operations .oi-gauge-sub { margin-top: 14px; font-size: 11.5px; color: #8A857D; max-width: 230px; }
#page-operations .oi-gauge-sub b { color: #C4BFB6; font-weight: 600; }
#page-operations .oi-domains { display: flex; flex-direction: column; gap: 0; }
#page-operations .oi-domain { display: flex; align-items: center; gap: 14px; padding: 13px 2px; border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations .oi-domain:last-child { border-bottom: none; }
#page-operations .oi-d-name { width: 138px; flex: none; display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: #F0EBE2; font-weight: 600; font-family: 'Montserrat', sans-serif; }
#page-operations .oi-d-name .oi-d-ico { width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; flex: none; }
#page-operations .oi-d-name .oi-d-ico svg { width: 13px; height: 13px; }
#page-operations .oi-d-bar { flex: 1; height: 9px; border-radius: 5px; background: rgba(255,255,255,0.06); overflow: hidden; position: relative; }
#page-operations .oi-d-bar i { display: block; height: 100%; border-radius: 5px; }
#page-operations .oi-d-score { width: 42px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 14px; color: #F0EBE2; flex: none; }
#page-operations .oi-d-tag { width: 96px; text-align: right; font-size: 10px; color: #8A857D; flex: none; }
#page-operations .oi-d-bar i.fill-good { background: linear-gradient(90deg, #3a6f56, #4CAF7D); }
#page-operations .oi-d-bar i.fill-warn { background: linear-gradient(90deg, #9c7f33, #E8943A); }
#page-operations .oi-d-bar i.fill-bad { background: linear-gradient(90deg, #7a3636, #E05555); }
#page-operations .oi-domain.unmeasured { opacity: .5; }
#page-operations .oi-domain.unmeasured .oi-d-score { color: #8A857D; font-size: 11px; font-weight: 600; }
#page-operations .oi-domain.unmeasured .oi-d-bar { background: repeating-linear-gradient(45deg, rgba(255,255,255,0.04), rgba(255,255,255,0.04) 5px, transparent 5px, transparent 10px); }
#page-operations .oi-domain.unmeasured .oi-d-tag { color: #8A857D; font-style: italic; }
#page-operations .oi-d-ico.ic-gold { background: rgba(201,168,76,0.14); } #page-operations .oi-d-ico.ic-gold svg { stroke: #C9A84C; }
#page-operations .oi-d-ico.ic-amber { background: rgba(232,148,58,0.14); } #page-operations .oi-d-ico.ic-amber svg { stroke: #E8943A; }
#page-operations .oi-d-ico.ic-green { background: rgba(76,175,125,0.14); } #page-operations .oi-d-ico.ic-green svg { stroke: #4CAF7D; }
#page-operations .oi-d-ico.ic-blue { background: rgba(91,155,213,0.14); } #page-operations .oi-d-ico.ic-blue svg { stroke: #5B9BD5; }
#page-operations .oi-d-ico.ic-red { background: rgba(224,85,85,0.14); } #page-operations .oi-d-ico.ic-red svg { stroke: #E05555; }

/* first thing I'd fix card */
#page-operations .oi-ftf { position: relative; overflow: hidden; background: linear-gradient(108deg, rgba(224,85,85,0.13), rgba(255,255,255,0.018) 52%); border: 1px solid rgba(224,85,85,0.34); border-radius: 16px; padding: 20px 22px; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .oi-ftf::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #E05555; box-shadow: 0 0 18px rgba(224,85,85,0.5); }
#page-operations .oi-ftf-lbl { display: inline-flex; align-items: center; gap: 8px; font-family: 'Montserrat', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #E05555; margin-bottom: 10px; }
#page-operations .oi-ftf-lbl svg { width: 14px; height: 14px; stroke: #E05555; }
#page-operations .oi-ftf h3 { font-family: 'Montserrat', sans-serif; font-size: 17px; color: #F0EBE2; margin-bottom: 8px; font-weight: 700; }
#page-operations .oi-ftf p { font-size: 13.5px; line-height: 1.6; color: #C4BFB6; max-width: 760px; }
#page-operations .oi-ftf p b { color: #F0EBE2; font-weight: 700; }
#page-operations .oi-ftf-foot { display: flex; align-items: center; gap: 14px; margin-top: 16px; flex-wrap: wrap; }
#page-operations .oi-ftf-btn { font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 700; cursor: pointer; border-radius: 9px; padding: 9px 18px; border: none; background: linear-gradient(180deg, #E05555, #b94545); color: #fff; box-shadow: 0 4px 16px -5px rgba(224,85,85,0.5); transition: .18s cubic-bezier(0.4,0,0.2,1); }
#page-operations .oi-ftf-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 22px -5px rgba(224,85,85,0.6); }
#page-operations .oi-ftf-prov { font-size: 11px; color: #8A857D; display: flex; align-items: center; gap: 7px; }
#page-operations .oi-ftf-prov svg { width: 13px; height: 13px; stroke: #C9A84C; opacity: .85; }
#page-operations .oi-ftf-prov b { color: #C9A84C; font-weight: 700; }

/* prioritized findings feed */
#page-operations .oi-find-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 13px; }
#page-operations .oi-find-head h2 { font-family: 'Montserrat', sans-serif; font-size: 15px; letter-spacing: .3px; display: flex; align-items: center; gap: 10px; color: #F0EBE2; font-weight: 700; }
#page-operations .oi-find-head h2 .glyph { width: 26px; height: 26px; border-radius: 8px; background: linear-gradient(150deg, rgba(224,85,85,0.24), rgba(232,148,58,0.12)); display: grid; place-items: center; }
#page-operations .oi-find-head h2 .glyph svg { width: 15px; height: 15px; }
#page-operations .oi-find-head .oi-count { font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 700; color: #F0EBE2; background: rgba(232,148,58,0.16); border: 1px solid rgba(232,148,58,0.36); border-radius: 999px; padding: 3px 12px; letter-spacing: .03em; }
#page-operations .oi-find-list { display: flex; flex-direction: column; gap: 10px; }
#page-operations .oi-find { display: flex; align-items: flex-start; gap: 13px; padding: 13px 15px; border-radius: 13px; background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); position: relative; overflow: hidden; transition: .18s cubic-bezier(0.4,0,0.2,1); }
#page-operations .oi-find::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--lvl, #C9A84C); }
#page-operations .oi-find:hover { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.13); }
#page-operations .oi-find.sev-high { --lvl: #E05555; border-color: rgba(224,85,85,0.34); background: linear-gradient(108deg, rgba(224,85,85,0.10), rgba(255,255,255,0.018) 48%); }
#page-operations .oi-find.sev-med { --lvl: #E8943A; }
#page-operations .oi-find.sev-low { --lvl: #5B9BD5; }
#page-operations .oi-find .oi-f-score { flex: none; width: 44px; text-align: center; }
#page-operations .oi-find .oi-f-score .sc { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 18px; color: #F0EBE2; line-height: 1; }
#page-operations .oi-find .oi-f-score .sl { font-size: 8px; letter-spacing: .12em; text-transform: uppercase; color: #8A857D; margin-top: 3px; }
#page-operations .oi-find .oi-f-ico { width: 34px; height: 34px; border-radius: 9px; flex: none; display: grid; place-items: center; }
#page-operations .oi-find .oi-f-ico svg { width: 16px; height: 16px; }
#page-operations .oi-f-body { flex: 1; min-width: 0; }
#page-operations .oi-f-top { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
#page-operations .oi-f-top .tt { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #F0EBE2; }
#page-operations .oi-f-top .dom { font-size: 9.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #8A857D; border: 1px solid rgba(255,255,255,0.07); border-radius: 999px; padding: 1px 8px; }
#page-operations .oi-f-desc { font-size: 12px; color: #8A857D; margin-top: 4px; line-height: 1.45; }
#page-operations .oi-f-desc b { color: #C4BFB6; font-weight: 600; }
#page-operations .oi-f-src { display: flex; align-items: center; gap: 7px; margin-top: 8px; font-size: 10px; color: #8A857D; letter-spacing: .02em; }
#page-operations .oi-f-src svg { width: 11px; height: 11px; stroke: #C9A84C; opacity: .8; flex: none; }
#page-operations .oi-f-src .calc { font-family: 'Montserrat', sans-serif; color: #C4BFB6; font-weight: 600; }
#page-operations .oi-f-act { flex: none; align-self: center; }
#page-operations .oi-f-act .btn { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer; border-radius: 8px; padding: 7px 14px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.04); color: #C4BFB6; transition: .18s cubic-bezier(0.4,0,0.2,1); white-space: nowrap; }
#page-operations .oi-f-act .btn:hover { background: rgba(255,255,255,0.09); color: #F0EBE2; border-color: #C9A84C; }

/* two-column: signal digest + peer benchmark COMING */
#page-operations .oi-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
#page-operations .oi-sig { display: flex; flex-direction: column; gap: 9px; }
#page-operations .oi-sig-row { display: flex; align-items: center; gap: 11px; padding: 9px 11px; border-radius: 10px; background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .oi-sig-row .sig-ic { width: 9px; height: 9px; border-radius: 50%; flex: none; }
#page-operations .oi-sig-row .sig-name { font-size: 12px; color: #C4BFB6; flex: 1; }
#page-operations .oi-sig-row .sig-name b { color: #F0EBE2; font-weight: 600; }
#page-operations .oi-sig-row .sig-to { font-size: 10px; color: #8A857D; font-family: 'Montserrat', sans-serif; letter-spacing: .02em; }
#page-operations .oi-sig-row .sig-to b { color: #C9A84C; font-weight: 700; }
#page-operations .oi-bench-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; height: 100%; padding: 30px 18px; }
#page-operations .oi-bench-empty .be-ic { font-size: 28px; margin-bottom: 10px; opacity: .6; }
#page-operations .oi-bench-empty p { font-size: 12px; color: #8A857D; max-width: 260px; line-height: 1.5; }
#page-operations .oi-bench-empty p b { color: #C4BFB6; font-weight: 600; }
#page-operations .oi-coming-chip { font-family: 'Montserrat', sans-serif; font-size: 8.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #5B9BD5; background: rgba(91,155,213,0.13); border: 1px solid rgba(91,155,213,0.3); border-radius: 999px; padding: 3px 9px; margin-top: 12px; }

/* attribution legend */
#page-operations .oi-attr { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 11px 14px; border-radius: 11px; background: rgba(255,255,255,0.015); border: 1px solid rgba(255,255,255,0.07); font-size: 10.5px; color: #8A857D; margin-bottom: 18px; }
#page-operations .oi-attr .at-t { display: inline-flex; align-items: center; gap: 7px; color: #C4BFB6; font-weight: 600; }
#page-operations .oi-attr .at-t svg { width: 13px; height: 13px; stroke: #C9A84C; }
#page-operations .oi-attr .ai { display: inline-flex; align-items: center; gap: 6px; }
#page-operations .oi-conf { display: inline-flex; align-items: center; gap: 5px; font-weight: 600; }
#page-operations .oi-conf .cd { width: 7px; height: 7px; border-radius: 50%; }
#page-operations .oi-conf.high { color: #4CAF7D; } #page-operations .oi-conf.high .cd { background: #4CAF7D; }
#page-operations .oi-conf.med { color: #E8943A; } #page-operations .oi-conf.med .cd { background: #E8943A; }
#page-operations .oi-conf.est { color: #5B9BD5; } #page-operations .oi-conf.est .cd { background: #5B9BD5; }
#page-operations .oi-foot { margin-top: 22px; font-size: 11px; color: #8A857D; text-align: center; }
#page-operations .oi-foot b { color: #C4BFB6; font-weight: 600; }
@media (max-width: 860px) {
  #page-operations .oi-health-grid { grid-template-columns: 1fr; }
  #page-operations .oi-grid2 { grid-template-columns: 1fr; }
}

/* FIX_OPS_JOBS_2026_07_01 — Operations Jobs / Production room (the logging/production ops command
   centre). Built TO design_samples/operations/operations_jobs_production_logging.html, re-prefixed
   under #page-operations .opj-* to match the .opv-/.oi-/.inv- room namespace + avoid the sample's
   unprefixed-class collisions. Full-width (fills the #operations-content host). Literal hex values
   mirror the operations sample :root tokens. The logging species palette is shared with the
   staff-app tracker. ASCII-only comments throughout. */
#page-operations .opj-head { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
#page-operations .opj-head h1 { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 26px; color: #F0EBE2; letter-spacing: -.01em; line-height: 1; }
#page-operations .opj-when { font-size: 11.5px; color: #8A857D; padding-bottom: 2px; }
#page-operations .opj-sub { font-size: 13px; color: #8A857D; margin-top: 6px; max-width: 760px; line-height: 1.5; }
#page-operations .opj-statusline { display: flex; align-items: center; gap: 10px; margin: 10px 0 18px; font-size: 13.5px; color: #C4BFB6; }
#page-operations .opj-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .opj-statusline .opj-fix { color: #E8943A; font-weight: 600; }
#page-operations .opj-statusline .opj-ok { color: #4CAF7D; font-weight: 600; }
#page-operations .opj-dot { width: 10px; height: 10px; border-radius: 50%; background: #4CAF7D; box-shadow: 0 0 11px rgba(76,175,125,0.6); flex: 0 0 10px; }
#page-operations .opj-dot.warn { background: #E8943A; box-shadow: 0 0 11px rgba(232,148,58,0.7); }

/* KPI band */
#page-operations .opj-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 13px; margin-bottom: 18px; }
@media (max-width: 1180px) { #page-operations .opj-kpis { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { #page-operations .opj-kpis { grid-template-columns: repeat(2, 1fr); } }
#page-operations .opj-kpi { position: relative; overflow: hidden; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px; box-shadow: 0 16px 34px -28px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opj-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; opacity: .55; }
#page-operations .opj-kpi.k-vol::before { background: #4CAF7D; }
#page-operations .opj-kpi.k-blocks::before { background: #5B9BD5; }
#page-operations .opj-kpi.k-trucks::before { background: #E8943A; }
#page-operations .opj-kpi.k-turn::before { background: #8B6FD6; }
#page-operations .opj-kpi.k-otm::before { background: #4CAF7D; }
#page-operations .opj-kpi .lbl { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 7px; font-family: 'Montserrat', sans-serif; }
#page-operations .opj-kpi .val { font-size: 23px; font-weight: 800; color: #F0EBE2; line-height: 1; font-family: 'Montserrat', sans-serif; font-variant-numeric: tabular-nums; }
#page-operations .opj-kpi .val small { font-size: 12px; color: #8A857D; font-weight: 600; }
#page-operations .opj-kpi .kpisub { font-size: 11.5px; margin-top: 7px; color: #8A857D; }
#page-operations .opj-kpi .kpisub .delta { font-weight: 700; }
#page-operations .opj-kpi .kpisub .delta.pos { color: #4CAF7D; }
#page-operations .opj-kpi .kpisub .delta.warn { color: #E8943A; }

/* section heading (reuses the app sec-h vocabulary, re-prefixed) */
#page-operations .opj-sech { display: flex; align-items: center; gap: 12px; margin: 24px 0 13px; flex-wrap: wrap; }
#page-operations .opj-sech h2 { font-family: 'Montserrat', sans-serif; font-size: 15px; letter-spacing: .3px; color: #F0EBE2; font-weight: 700; }
#page-operations .opj-sech .sh-sub { font-size: 11.5px; color: #8A857D; }
#page-operations .opj-sech .sh-right { margin-left: auto; }
#page-operations .opj-pill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10.5px; color: #F0EBE2; background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.32); border-radius: 999px; padding: 3px 11px; letter-spacing: .03em; }

/* empty state (honest-empty when no production loads yet) */
#page-operations .opj-empty { border: 1px dashed rgba(255,255,255,0.13); border-radius: 14px; padding: 26px 22px; text-align: center; color: #8A857D; font-size: 12.5px; line-height: 1.6; background: rgba(255,255,255,0.015); }
#page-operations .opj-empty b { color: #C4BFB6; font-family: 'Montserrat', sans-serif; font-weight: 700; display: block; margin-bottom: 5px; font-size: 13px; }

/* cut-blocks board */
#page-operations .opj-blocks { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; }
#page-operations .opj-block { position: relative; overflow: hidden; background: linear-gradient(168deg,#262320,#1e1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 15px; padding: 16px 17px 15px; box-shadow: 0 18px 42px -34px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opj-block::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; }
#page-operations .opj-block.active::before { background: #4CAF7D; }
#page-operations .opj-block.prepping::before { background: #E8943A; }
#page-operations .opj-block.complete::before { background: #8A857D; }
#page-operations .opj-block-top { display: flex; align-items: flex-start; gap: 11px; margin-bottom: 12px; }
#page-operations .opj-block-id { width: 42px; height: 42px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: rgba(91,155,213,0.1); border: 1px solid rgba(91,155,213,0.24); font-size: 20px; }
#page-operations .opj-block.active .opj-block-id { background: rgba(76,175,125,0.1); border-color: rgba(76,175,125,0.24); }
#page-operations .opj-block-tt { flex: 1; min-width: 0; }
#page-operations .opj-block-tt b { display: block; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; line-height: 1.15; }
#page-operations .opj-block-tt span { font-size: 10.5px; color: #8A857D; display: block; margin-top: 2px; }
#page-operations .opj-stpill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .05em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; white-space: nowrap; flex-shrink: 0; }
#page-operations .opj-stpill.active { color: #4CAF7D; background: rgba(76,175,125,0.14); border: 1px solid rgba(76,175,125,0.3); }
#page-operations .opj-stpill.prepping { color: #E8943A; background: rgba(232,148,58,0.14); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .opj-stpill.complete { color: #8A857D; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.13); }
#page-operations .opj-block-prog { margin: 4px 0 12px; }
#page-operations .opj-block-prog .pl { display: flex; align-items: baseline; justify-content: space-between; font-size: 10.5px; color: #8A857D; margin-bottom: 6px; }
#page-operations .opj-block-prog .pl b { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 13px; color: #F0EBE2; }
#page-operations .opj-block-prog .pl .pct { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; }
#page-operations .opj-prog-track { height: 9px; border-radius: 6px; background: rgba(255,255,255,0.06); overflow: hidden; }
#page-operations .opj-prog-track i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg,#9c7f33,#C9A84C); }
#page-operations .opj-block.active .opj-prog-track i { background: linear-gradient(90deg,#3a8a63,#4CAF7D); }
#page-operations .opj-block-mix { display: flex; gap: 4px; margin-bottom: 12px; height: 6px; border-radius: 4px; overflow: hidden; }
#page-operations .opj-block-mix i { height: 100%; }
#page-operations .opj-block-foot { display: flex; align-items: center; gap: 9px; font-size: 10.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .opj-chipm { display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); }
#page-operations .opj-chipm b { color: #C4BFB6; font-family: 'Montserrat', sans-serif; font-weight: 600; }
#page-operations .opj-block-foot .days { margin-left: auto; font-family: 'Montserrat', sans-serif; font-weight: 700; color: #C4BFB6; }

/* loads dispatch table (reuses the app's table shell tokens, re-prefixed) */
#page-operations .opj-tblwrap { background: linear-gradient(170deg,#242220,#1d1a18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations table.opj-loads { width: 100%; border-collapse: collapse; font-size: 12.5px; }
#page-operations table.opj-loads thead th { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .09em; text-transform: uppercase; color: #8A857D; text-align: left; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.015); }
#page-operations table.opj-loads thead th.r { text-align: right; }
#page-operations table.opj-loads tbody tr { border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations table.opj-loads tbody tr:last-child { border-bottom: none; }
#page-operations table.opj-loads tbody tr.queued { background: linear-gradient(90deg,rgba(232,148,58,0.06),transparent 60%); }
#page-operations table.opj-loads td { padding: 11px 14px; vertical-align: middle; color: #C4BFB6; }
#page-operations .opj-ldno { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; }
#page-operations .opj-truck b { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 12px; display: block; line-height: 1.2; }
#page-operations .opj-truck span { font-size: 10px; color: #8A857D; }
#page-operations .opj-sp { display: inline-flex; align-items: center; gap: 7px; }
#page-operations .opj-sp .sdot { width: 9px; height: 9px; border-radius: 3px; flex-shrink: 0; }
#page-operations .opj-m3 { font-family: 'Montserrat', sans-serif; font-weight: 800; color: #F0EBE2; text-align: right; font-variant-numeric: tabular-nums; }
#page-operations .opj-m3 small { font-size: 9px; color: #8A857D; font-weight: 600; }
#page-operations .opj-mill small { display: block; font-size: 9.5px; color: #8A857D; }
#page-operations .opj-st { display: inline-flex; align-items: center; gap: 6px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
#page-operations .opj-st .sd { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
#page-operations .opj-st.delivered { color: #4CAF7D; background: rgba(76,175,125,0.12); border: 1px solid rgba(76,175,125,0.28); }
#page-operations .opj-st.delivered .sd { background: #4CAF7D; }
#page-operations .opj-st.transit { color: #5B9BD5; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.28); }
#page-operations .opj-st.transit .sd { background: #5B9BD5; }
#page-operations .opj-st.loaded { color: #C9A84C; background: rgba(201,168,76,0.12); border: 1px solid rgba(201,168,76,0.28); }
#page-operations .opj-st.loaded .sd { background: #C9A84C; }
#page-operations .opj-st.queued { color: #f0c08a; background: rgba(232,148,58,0.1); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .opj-st.queued .sd { background: #E8943A; }

/* dispatch + capacity grid */
#page-operations .opj-disp { display: grid; grid-template-columns: 1.15fr 1fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opj-disp { grid-template-columns: 1fr; } }
#page-operations .opj-panel { background: linear-gradient(170deg,#252220,#1e1b19); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opj-panel-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
#page-operations .opj-panel-h h3 { font-family: 'Montserrat', sans-serif; font-size: 14px; letter-spacing: .4px; color: #F0EBE2; font-weight: 700; }
#page-operations .opj-panel-h .hint { font-size: 11px; color: #8A857D; }
#page-operations .opj-panel-sub { font-size: 11.5px; color: #8A857D; margin: 2px 0 14px; }
#page-operations .opj-fleet { display: flex; flex-direction: column; gap: 9px; }
#page-operations .opj-unit { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: 12px; background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .opj-unit .uic { width: 38px; height: 38px; border-radius: 10px; flex-shrink: 0; display: grid; place-items: center; background: rgba(201,168,76,0.1); border: 1px solid rgba(201,168,76,0.2); font-size: 18px; }
#page-operations .opj-unit.idle .uic { background: rgba(232,148,58,0.1); border-color: rgba(232,148,58,0.24); }
#page-operations .opj-unit.down .uic { background: rgba(224,85,85,0.1); border-color: rgba(224,85,85,0.24); }
#page-operations .opj-unit .ux { flex: 1; min-width: 0; }
#page-operations .opj-unit .ux b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; display: block; line-height: 1.2; }
#page-operations .opj-unit .ux span { font-size: 10.5px; color: #8A857D; }
#page-operations .opj-unit .ur { text-align: right; flex-shrink: 0; }
#page-operations .opj-avpill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; }
#page-operations .opj-avpill.on { color: #4CAF7D; background: rgba(76,175,125,0.13); border: 1px solid rgba(76,175,125,0.28); }
#page-operations .opj-avpill.idle { color: #E8943A; background: rgba(232,148,58,0.13); border: 1px solid rgba(232,148,58,0.28); }
#page-operations .opj-avpill.down { color: #E05555; background: rgba(224,85,85,0.13); border: 1px solid rgba(224,85,85,0.28); }
#page-operations .opj-unit .ur .lds { font-size: 9.5px; color: #8A857D; margin-top: 4px; }
#page-operations .opj-cap { display: flex; flex-direction: column; gap: 11px; margin-bottom: 16px; }
#page-operations .opj-cmrow { display: flex; align-items: center; gap: 11px; font-size: 11.5px; }
#page-operations .opj-cmrow .cm-l { width: 96px; color: #C4BFB6; flex-shrink: 0; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 11px; }
#page-operations .opj-cmrow .cm-track { flex: 1; height: 16px; border-radius: 6px; background: rgba(255,255,255,0.05); overflow: hidden; }
#page-operations .opj-cmrow .cm-track i { display: block; height: 100%; border-radius: 6px; }
#page-operations .opj-cmrow .cm-v { width: 74px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11px; color: #F0EBE2; flex-shrink: 0; }
#page-operations .opj-flags { display: flex; flex-direction: column; gap: 9px; margin-top: 4px; }
#page-operations .opj-flag { display: flex; align-items: flex-start; gap: 11px; padding: 12px 13px; border-radius: 12px; position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.018); }
#page-operations .opj-flag::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #E8943A; }
#page-operations .opj-flag.info::before { background: #5B9BD5; }
#page-operations .opj-flag.crit::before { background: #E05555; }
#page-operations .opj-flag .fx { flex: 1; min-width: 0; }
#page-operations .opj-flag .fx b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; display: block; }
#page-operations .opj-flag .fx p { font-size: 11px; color: #8A857D; margin-top: 3px; line-height: 1.45; }
#page-operations .opj-flag .fx p b { display: inline; color: #C4BFB6; font-weight: 600; }

/* analytics grid */
#page-operations .opj-an { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opj-an { grid-template-columns: 1fr; } }
#page-operations .opj-hbar { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
#page-operations .opj-hb { display: flex; align-items: center; gap: 11px; font-size: 12px; }
#page-operations .opj-hb .hb-l { width: 128px; flex-shrink: 0; display: flex; align-items: center; gap: 8px; color: #C4BFB6; }
#page-operations .opj-hb .hb-l .sw { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
#page-operations .opj-hb .hb-l span { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-operations .opj-hb .hb-track { flex: 1; height: 12px; border-radius: 6px; background: rgba(255,255,255,0.05); overflow: hidden; }
#page-operations .opj-hb .hb-track i { display: block; height: 100%; border-radius: 6px; }
#page-operations .opj-hb .hb-v { width: 78px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; flex-shrink: 0; font-variant-numeric: tabular-nums; }
#page-operations .opj-hb .hb-v small { font-size: 9px; color: #8A857D; font-weight: 600; }

/* honest data-source note */
#page-operations .opj-srcnote { display: flex; align-items: flex-start; gap: 13px; margin-top: 26px; padding: 16px 18px; border-radius: 14px; border: 1px solid rgba(91,155,213,0.2); background: radial-gradient(500px 180px at 8% -40%,rgba(91,155,213,0.07),transparent 60%),linear-gradient(168deg,#222220,#1b1a18); }
#page-operations .opj-srcnote .sn-ic { width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.26); font-size: 19px; }
#page-operations .opj-srcnote .sn-x b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; display: block; margin-bottom: 4px; }
#page-operations .opj-srcnote .sn-x p { font-size: 11.5px; color: #8A857D; line-height: 1.55; max-width: 920px; }
#page-operations .opj-srcnote .sn-x p b { display: inline; color: #C4BFB6; font-weight: 600; }
#page-operations .opj-srcnote .flow { display: flex; align-items: center; gap: 9px; margin-top: 11px; flex-wrap: wrap; font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 600; }
#page-operations .opj-srcnote .flow .fn { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.03); color: #C4BFB6; }
#page-operations .opj-srcnote .flow .ar { color: #8A857D; }
#page-operations .opj-foot { font-size: 10px; color: #8A857D; margin-top: 22px; text-align: center; opacity: .7; }

/* FIX_OPS_CAPACITY_2026_07_01 — Operations Capacity room (the bookable-resource utilisation
   command centre). Built TO design_samples/operations/operations_capacity.html, re-prefixed
   under #page-operations .opc-* to match the .opj-/.opv-/.oi-/.inv- room namespace + avoid the
   sample's unprefixed-class collisions. Full-width (fills the #operations-content host). Literal
   hex values mirror the operations sample :root tokens. INDUSTRY-AGNOSTIC: the engine is a
   generic bookable-resource model (courts/lanes/studios/rooms/halls/time-slotted staff), driven
   by a tagged resource-type config library, NOT a hardcoded venue vertical. ASCII-only comments. */
#page-operations .opc-head { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
#page-operations .opc-head h1 { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 26px; color: #F0EBE2; letter-spacing: -.01em; line-height: 1; }
#page-operations .opc-when { font-size: 11.5px; color: #8A857D; padding-bottom: 2px; }
#page-operations .opc-sub { font-size: 13px; color: #8A857D; margin-top: 6px; max-width: 780px; line-height: 1.5; }
#page-operations .opc-statusline { display: flex; align-items: center; gap: 10px; margin: 12px 0 18px; font-size: 13.5px; color: #C4BFB6; }
#page-operations .opc-dot { width: 10px; height: 10px; border-radius: 50%; background: #5B9BD5; box-shadow: 0 0 11px #5B9BD5; flex-shrink: 0; }
#page-operations .opc-dot.warn { background: #E8943A; box-shadow: 0 0 11px #E8943A; }
#page-operations .opc-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .opc-fix { color: #E8943A; font-weight: 600; }
#page-operations .opc-ok { color: #4CAF7D; font-weight: 600; }

/* section heading (mirrors .sec-h) */
#page-operations .opc-sech { display: flex; align-items: center; gap: 12px; margin: 26px 0 13px; }
#page-operations .opc-sech h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 15px; color: #F0EBE2; letter-spacing: .3px; }
#page-operations .opc-sech .sh-sub { font-size: 11.5px; color: #8A857D; }
#page-operations .opc-sech .sh-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
#page-operations .opc-pill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10.5px; color: #F0EBE2; background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.32); border-radius: 999px; padding: 3px 11px; letter-spacing: .03em; }

/* KPI hero band (6 tiles) */
#page-operations .opc-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 13px; margin-bottom: 18px; }
@media (max-width: 1320px) { #page-operations .opc-kpis { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { #page-operations .opc-kpis { grid-template-columns: repeat(2, 1fr); } }
#page-operations .opc-kpi { position: relative; overflow: hidden; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px; box-shadow: 0 16px 34px -28px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opc-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; opacity: .55; }
#page-operations .opc-kpi.k-util::before { background: #C9A84C; }
#page-operations .opc-kpi.k-book::before { background: #4CAF7D; }
#page-operations .opc-kpi.k-peak::before { background: #E05555; }
#page-operations .opc-kpi.k-revpas::before { background: #8B6FD6; }
#page-operations .opc-kpi.k-noshow::before { background: #E8943A; }
#page-operations .opc-kpi.k-cap::before { background: #5B9BD5; }
#page-operations .opc-kpi .lbl { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 7px; font-family: 'Montserrat', sans-serif; }
#page-operations .opc-kpi .val { font-size: 23px; font-weight: 800; color: #F0EBE2; line-height: 1; font-family: 'Montserrat', sans-serif; font-variant-numeric: tabular-nums; }
#page-operations .opc-kpi .val small { font-size: 12px; color: #8A857D; font-weight: 600; }
#page-operations .opc-kpi .kpisub { font-size: 11.5px; margin-top: 7px; color: #8A857D; }

/* generic panel (mirrors .panel) */
#page-operations .opc-panel { background: linear-gradient(170deg,#252220,#1e1b19); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opc-panel-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; gap: 12px; }
#page-operations .opc-panel-h h3 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; letter-spacing: .4px; }
#page-operations .opc-panel-h .hint { font-size: 11px; color: #8A857D; }
#page-operations .opc-panel-sub { font-size: 11.5px; color: #8A857D; margin: 2px 0 14px; }

/* bookable-resources board */
#page-operations .opc-res-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
#page-operations .opc-res { position: relative; overflow: hidden; background: linear-gradient(168deg,#262320,#1e1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 15px; padding: 16px 17px 15px; box-shadow: 0 18px 42px -34px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opc-res::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; }
#page-operations .opc-res.booked::before { background: #4CAF7D; }
#page-operations .opc-res.available::before { background: #5B9BD5; }
#page-operations .opc-res.maint::before { background: #E8943A; }
#page-operations .opc-res.blocked::before { background: #E05555; }
#page-operations .opc-res-top { display: flex; align-items: flex-start; gap: 11px; margin-bottom: 12px; }
#page-operations .opc-res-ic { width: 42px; height: 42px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: rgba(91,155,213,0.1); border: 1px solid rgba(91,155,213,0.24); font-size: 21px; }
#page-operations .opc-res-tt { flex: 1; min-width: 0; }
#page-operations .opc-res-tt b { display: block; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; line-height: 1.15; }
#page-operations .opc-res-tt span { font-size: 10.5px; color: #8A857D; display: block; margin-top: 2px; }
#page-operations .opc-stpill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .05em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; white-space: nowrap; flex-shrink: 0; }
#page-operations .opc-stpill.booked { color: #4CAF7D; background: rgba(76,175,125,0.14); border: 1px solid rgba(76,175,125,0.3); }
#page-operations .opc-stpill.available { color: #5B9BD5; background: rgba(91,155,213,0.14); border: 1px solid rgba(91,155,213,0.3); }
#page-operations .opc-stpill.maint { color: #E8943A; background: rgba(232,148,58,0.14); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .opc-stpill.blocked { color: #E05555; background: rgba(224,85,85,0.14); border: 1px solid rgba(224,85,85,0.3); }
#page-operations .opc-res-prog { margin: 4px 0 12px; }
#page-operations .opc-res-prog .pl { display: flex; align-items: baseline; justify-content: space-between; font-size: 10.5px; color: #8A857D; margin-bottom: 6px; }
#page-operations .opc-res-prog .pl b { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 13px; color: #F0EBE2; }
#page-operations .opc-res-prog .pl .tgt { color: #8A857D; font-weight: 600; }
#page-operations .opc-track { height: 9px; border-radius: 6px; background: rgba(255,255,255,0.06); overflow: hidden; position: relative; }
#page-operations .opc-track i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg,#9c7f33,#C9A84C); }
#page-operations .opc-res-foot { display: flex; align-items: center; gap: 9px; font-size: 10.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .opc-res-foot .chipm { display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); }
#page-operations .opc-res-foot .chipm b { color: #C4BFB6; font-family: 'Montserrat', sans-serif; font-weight: 600; }
#page-operations .opc-res-foot .rev { margin-left: auto; font-family: 'Montserrat', sans-serif; font-weight: 700; color: #C4BFB6; }

/* heatmap (day-of-week x time-of-day) */
#page-operations .opc-heat-wrap { overflow-x: auto; }
#page-operations .opc-heat { display: grid; grid-template-columns: 74px repeat(7, minmax(58px, 1fr)); gap: 6px; min-width: 640px; }
#page-operations .opc-heat .hh { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10px; letter-spacing: .04em; color: #8A857D; text-align: center; padding-bottom: 2px; align-self: end; }
#page-operations .opc-heat .hh.wknd { color: #C9A84C; }
#page-operations .opc-heat .rh { font-size: 10px; color: #8A857D; display: flex; align-items: center; justify-content: flex-end; padding-right: 4px; }
#page-operations .opc-hcell { height: 44px; border-radius: 7px; display: grid; place-items: center; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11px; border: 1px solid rgba(255,255,255,0.05); }
#page-operations .opc-hcell.empty { background: rgba(255,255,255,0.03); color: #6b665f; }
#page-operations .opc-heat-legend { display: flex; align-items: center; gap: 16px; margin-top: 14px; font-size: 10.5px; color: #8A857D; flex-wrap: wrap; }
#page-operations .opc-heat-legend .scale { display: inline-flex; align-items: center; gap: 8px; }
#page-operations .opc-heat-legend .scale .bar { width: 120px; height: 9px; border-radius: 5px; background: linear-gradient(90deg,#3a6f56,#4CAF7D,#E8943A,#E05555); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .opc-heat-legend b { color: #C4BFB6; font-weight: 600; }

/* bookings table */
#page-operations .opc-toolbar { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-bottom: 13px; }
#page-operations .opc-search { display: flex; align-items: center; gap: 8px; border: 1px solid rgba(255,255,255,0.13); border-radius: 10px; padding: 8px 12px; background: rgba(255,255,255,0.025); min-width: 220px; flex: 1; max-width: 320px; color: #8A857D; font-size: 12.5px; }
#page-operations .opc-filters { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
#page-operations .opc-fbtn { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; color: #8A857D; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); border-radius: 8px; padding: 7px 12px; }
#page-operations .opc-fbtn.on { color: #F0EBE2; border-color: rgba(201,168,76,0.45); background: linear-gradient(180deg,rgba(201,168,76,0.16),rgba(201,168,76,0.04)); }
#page-operations .opc-fbtn .c { font-size: 9.5px; opacity: .7; margin-left: 5px; }
/* FIX_VERIFY_OPS_2026_07_21 (OPS-8) — honest-disabled bookings toolbar: the search box + filter pills carry
   no handlers, so they ship visibly disabled WITH the reason stated (mirrors the Cockpit .opck-toggle.disabled
   sibling) rather than looking live and silently doing nothing. */
/* FIX_DISABLED_LEGIBILITY_SIBLINGFORM_2026_07_26 (F-2) — was .6, which faded the stated
   reason along with the controls. Held at the convention floor so the reason stays readable. */
#page-operations .opc-toolbar.is-disabled { opacity: var(--disabled-opacity); }
#page-operations .opc-toolbar.is-disabled .opc-search, #page-operations .opc-toolbar.is-disabled .opc-fbtn { cursor: not-allowed; border-style: dashed; }
#page-operations .opc-toolbar.is-disabled .opc-fbtn.on { color: #8A857D; border-color: rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); }
#page-operations .opc-fnote { font-size: 10.5px; color: #8A857D; font-style: italic; align-self: center; }
#page-operations .opc-tblwrap { background: linear-gradient(170deg,#242220,#1d1a18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations table.opc-book { width: 100%; border-collapse: collapse; font-size: 12.5px; }
#page-operations table.opc-book thead th { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .09em; text-transform: uppercase; color: #8A857D; text-align: left; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.015); }
#page-operations table.opc-book thead th.r { text-align: right; }
#page-operations table.opc-book tbody tr { border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations table.opc-book tbody tr:last-child { border-bottom: none; }
#page-operations table.opc-book td { padding: 11px 14px; vertical-align: middle; color: #C4BFB6; }
#page-operations .opc-bk-res { display: flex; align-items: center; gap: 9px; }
#page-operations .opc-bk-res .rk { width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0; display: grid; place-items: center; background: rgba(201,168,76,0.1); border: 1px solid rgba(201,168,76,0.2); font-size: 14px; }
#page-operations .opc-bk-res b { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 12px; display: block; line-height: 1.2; }
#page-operations .opc-bk-res span { font-size: 10px; color: #8A857D; }
#page-operations .opc-bk-when b { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; display: block; }
#page-operations .opc-bk-when small { font-size: 9.5px; color: #8A857D; }
#page-operations .opc-bk-val { font-family: 'Montserrat', sans-serif; font-weight: 800; color: #F0EBE2; text-align: right; }
#page-operations .opc-srcpill { display: inline-flex; align-items: center; gap: 5px; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 9.5px; padding: 3px 9px; border-radius: 999px; color: #C4BFB6; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.03); }
#page-operations .opc-srcpill .sd { width: 6px; height: 6px; border-radius: 50%; }
#page-operations .opc-srcpill.online .sd { background: #5B9BD5; }
#page-operations .opc-srcpill.member .sd { background: #C9A84C; }
#page-operations .opc-srcpill.walkin .sd { background: #8B6FD6; }
#page-operations .opc-st { display: inline-flex; align-items: center; gap: 6px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
#page-operations .opc-st .sd { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
#page-operations .opc-st.confirmed { color: #4CAF7D; background: rgba(76,175,125,0.12); border: 1px solid rgba(76,175,125,0.28); }
#page-operations .opc-st.confirmed .sd { background: #4CAF7D; }
#page-operations .opc-st.checkedin { color: #5B9BD5; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.28); }
#page-operations .opc-st.checkedin .sd { background: #5B9BD5; }
#page-operations .opc-st.pending { color: #f0c08a; background: rgba(232,148,58,0.1); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .opc-st.pending .sd { background: #E8943A; }
#page-operations .opc-st.noshow { color: #E05555; background: rgba(224,85,85,0.1); border: 1px solid rgba(224,85,85,0.28); }
#page-operations .opc-st.noshow .sd { background: #E05555; }

/* capacity vs demand + recommendations */
#page-operations .opc-cvd-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opc-cvd-grid { grid-template-columns: 1fr; } }
#page-operations .opc-cvd { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; margin-bottom: 16px; }
@media (max-width: 640px) { #page-operations .opc-cvd { grid-template-columns: 1fr; } }
#page-operations .opc-cvd-card { background: rgba(255,255,255,0.022); border: 1px solid rgba(255,255,255,0.07); border-radius: 13px; padding: 15px 16px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opc-cvd-card .cc-l { font-size: 9.5px; letter-spacing: .9px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 8px; font-family: 'Montserrat', sans-serif; }
#page-operations .opc-cvd-card .cc-v { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 21px; color: #F0EBE2; line-height: 1; }
#page-operations .opc-cvd-card .cc-d { font-size: 11px; color: #8A857D; margin-top: 7px; line-height: 1.4; }
#page-operations .opc-cvd-card .cc-d b { color: #C4BFB6; }
#page-operations .opc-cvd-card.acc-red { border-color: rgba(224,85,85,0.32); }
#page-operations .opc-cvd-card.acc-amber { border-color: rgba(232,148,58,0.3); }
#page-operations .opc-cvd-card.acc-green { border-color: rgba(76,175,125,0.3); }
#page-operations .opc-flags { display: flex; flex-direction: column; gap: 9px; }
#page-operations .opc-flag { display: flex; align-items: flex-start; gap: 11px; padding: 12px 13px; border-radius: 12px; position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.018); }
#page-operations .opc-flag::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #E8943A; }
#page-operations .opc-flag.warn::before { background: #E8943A; }
#page-operations .opc-flag.info::before { background: #5B9BD5; }
#page-operations .opc-flag.grow::before { background: #4CAF7D; }
#page-operations .opc-flag.crit::before { background: #E05555; }
#page-operations .opc-flag .fic { width: 32px; height: 32px; border-radius: 9px; flex-shrink: 0; display: grid; place-items: center; font-size: 15px; background: rgba(255,255,255,0.05); }
#page-operations .opc-flag .fx { flex: 1; min-width: 0; }
#page-operations .opc-flag .fx b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; display: block; }
#page-operations .opc-flag .fx p { font-size: 11px; color: #8A857D; margin-top: 3px; line-height: 1.45; }
#page-operations .opc-flag .fx p b { display: inline; color: #C4BFB6; font-weight: 600; }

/* by-resource-type bars + trend */
#page-operations .opc-an-grid { display: grid; grid-template-columns: 1fr 1.35fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opc-an-grid { grid-template-columns: 1fr; } }
#page-operations .opc-hbar { display: flex; flex-direction: column; gap: 13px; margin-top: 4px; }
#page-operations .opc-hb { display: flex; align-items: center; gap: 11px; font-size: 12px; }
#page-operations .opc-hb .hb-l { width: 130px; flex-shrink: 0; display: flex; align-items: center; gap: 8px; color: #C4BFB6; }
#page-operations .opc-hb .hb-l .sw { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
#page-operations .opc-hb .hb-l span { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-operations .opc-hb .hb-track { flex: 1; height: 13px; border-radius: 6px; background: rgba(255,255,255,0.05); overflow: hidden; position: relative; }
#page-operations .opc-hb .hb-track i { display: block; height: 100%; border-radius: 6px; }
#page-operations .opc-hb .hb-track .tline { position: absolute; top: -2px; bottom: -2px; width: 2px; background: #F0EBE2; opacity: .45; }
#page-operations .opc-hb .hb-v { width: 74px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; flex-shrink: 0; }
#page-operations .opc-hb .hb-v small { font-size: 9px; color: #8A857D; font-weight: 600; }

/* observation strip (the COO read) */
#page-operations .opc-obs { display: flex; gap: 13px; padding: 15px 17px; border-radius: 14px; background: linear-gradient(108deg,rgba(91,155,213,0.10),rgba(255,255,255,0.018) 50%); border: 1px solid rgba(91,155,213,0.28); align-items: flex-start; margin-top: 22px; }
#page-operations .opc-obs .obs-ic { width: 34px; height: 34px; border-radius: 10px; flex: none; display: grid; place-items: center; background: rgba(91,155,213,0.16); font-size: 17px; }
#page-operations .opc-obs .obs-body h4 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; margin-bottom: 4px; }
#page-operations .opc-obs .obs-body p { font-size: 12px; color: #C4BFB6; line-height: 1.5; }
#page-operations .opc-obs .obs-body p b { color: #F0EBE2; font-weight: 700; }

/* empty-state card (honest-empty when no booking feed) */
#page-operations .opc-empty { border: 1px dashed rgba(255,255,255,0.13); border-radius: 13px; padding: 22px 20px; background: rgba(255,255,255,0.015); color: #8A857D; font-size: 12px; line-height: 1.55; }
#page-operations .opc-empty b { display: block; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #C4BFB6; margin-bottom: 5px; }

/* honest data-source note */
#page-operations .opc-srcnote { display: flex; align-items: flex-start; gap: 13px; margin-top: 26px; padding: 16px 18px; border-radius: 14px; border: 1px solid rgba(91,155,213,0.2); background: radial-gradient(500px 180px at 8% -40%,rgba(91,155,213,0.07),transparent 60%),linear-gradient(168deg,#222220,#1b1a18); }
#page-operations .opc-srcnote .sn-ic { width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.26); font-size: 19px; }
#page-operations .opc-srcnote .sn-x b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; display: block; margin-bottom: 4px; }
#page-operations .opc-srcnote .sn-x p { font-size: 11.5px; color: #8A857D; line-height: 1.55; max-width: 920px; }
#page-operations .opc-srcnote .sn-x p b { display: inline; color: #C4BFB6; font-weight: 600; }
#page-operations .opc-srcnote .flow { display: flex; align-items: center; gap: 9px; margin-top: 11px; flex-wrap: wrap; font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 600; }
#page-operations .opc-srcnote .flow .fn { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.03); color: #C4BFB6; }
#page-operations .opc-srcnote .flow .ar { color: #8A857D; }
#page-operations .opc-foot { font-size: 10px; color: #8A857D; margin-top: 22px; text-align: center; opacity: .7; }

/* FIX_OPS_FACILITIES_S1_2026_08_09 — Operations > Facilities room. NET-NEW namespace, every selector
   prefixed .opfac- and scoped under #page-operations, mirroring the .opc-/.opj-/.opv-/.oi-/.inv- room
   convention immediately above. SPECIFICITY IS THE POINT, NOT HOUSE STYLE: the legacy ops rules are
   ID-scoped #page-operations .x at (1,1,0), so a bare kit class at (0,1,0)/(0,2,0) LOSES the cascade
   silently -- the surface would grep BUILT and render unstyled or legacy-styled. Authoring every rule
   at #page-operations .opfac-... makes this namespace win on its own terms. No existing .opc-/.oi-/
   .mnt- rule is retired, renamed or re-scoped by this block. ASCII-only comments. */
#page-operations .opfac-head { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
#page-operations .opfac-head h1 { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 26px; color: #F0EBE2; letter-spacing: -.01em; line-height: 1; }
#page-operations .opfac-when { font-size: 11.5px; color: #8A857D; padding-bottom: 2px; }
#page-operations .opfac-sub { font-size: 13px; color: #8A857D; margin-top: 6px; max-width: 780px; line-height: 1.5; }
#page-operations .opfac-statusline { display: flex; align-items: center; gap: 10px; margin: 12px 0 18px; font-size: 13.5px; color: #C4BFB6; }
#page-operations .opfac-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .opfac-statusline.bad { color: #E05555; }
#page-operations .opfac-statusline.ok { color: #4CAF7D; }
#page-operations .opfac-dot { width: 10px; height: 10px; border-radius: 50%; background: #5B9BD5; box-shadow: 0 0 11px #5B9BD5; flex-shrink: 0; }
#page-operations .opfac-dot.warn { background: #E8943A; box-shadow: 0 0 11px #E8943A; }

/* section heading */
#page-operations .opfac-sech { display: flex; align-items: center; gap: 12px; margin: 26px 0 13px; }
#page-operations .opfac-sech h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 15px; color: #F0EBE2; letter-spacing: .3px; }
#page-operations .opfac-sech .sh-sub { font-size: 11.5px; color: #8A857D; }
#page-operations .opfac-sech .sh-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
#page-operations .opfac-pill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10.5px; color: #F0EBE2; background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.32); border-radius: 999px; padding: 3px 11px; letter-spacing: .03em; }

/* KPI band (5 tiles) */
#page-operations .opfac-kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 13px; margin-bottom: 18px; }
@media (max-width: 1320px) { #page-operations .opfac-kpis { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { #page-operations .opfac-kpis { grid-template-columns: repeat(2, 1fr); } }
#page-operations .opfac-kpi { position: relative; overflow: hidden; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px; box-shadow: 0 16px 34px -28px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opfac-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; opacity: .55; }
#page-operations .opfac-kpi.k-open::before { background: #5B9BD5; }
#page-operations .opfac-kpi.k-over::before { background: #E05555; }
#page-operations .opfac-kpi.k-place::before { background: #C9A84C; }
#page-operations .opfac-kpi.k-plant::before { background: #4CAF7D; }
#page-operations .opfac-kpi.k-walk::before { background: #8A857D; }
#page-operations .opfac-kpi .lbl { font-size: 10.5px; color: #8A857D; letter-spacing: .04em; text-transform: uppercase; }
#page-operations .opfac-kpi .val { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 24px; color: #F0EBE2; margin-top: 6px; line-height: 1.1; }
#page-operations .opfac-kpi .val small { font-size: 12px; color: #8A857D; font-weight: 600; }
#page-operations .opfac-kpi .kpisub { font-size: 11px; color: #8A857D; margin-top: 4px; }

/* honest-empty panel */
#page-operations .opfac-empty { background: rgba(255,255,255,0.02); border: 1px dashed rgba(255,255,255,0.12); border-radius: 13px; padding: 20px 22px; font-size: 12.5px; color: #8A857D; line-height: 1.6; }
#page-operations .opfac-empty b { display: block; color: #F0EBE2; font-family: 'Montserrat', sans-serif; font-size: 13.5px; margin-bottom: 6px; }
#page-operations .opfac-note { font-size: 11.5px; color: #8A857D; line-height: 1.55; margin-top: 11px; max-width: 820px; }

/* open/close log */
#page-operations .opfac-loggrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; }
@media (max-width: 860px) { #page-operations .opfac-loggrid { grid-template-columns: 1fr; } }
#page-operations .opfac-logcard { background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 17px; }
#page-operations .opfac-logtop { display: flex; align-items: center; gap: 9px; margin-bottom: 7px; }
#page-operations .opfac-logtop b { font-family: 'Montserrat', sans-serif; font-size: 12.5px; color: #F0EBE2; }
#page-operations .opfac-logwhen { font-size: 15px; color: #F0EBE2; font-weight: 700; margin-bottom: 9px; }
#page-operations .opfac-logmeta { display: flex; justify-content: space-between; font-size: 12px; color: #8A857D; padding: 4px 0; border-top: 1px solid rgba(255,255,255,0.05); }
#page-operations .opfac-logmeta b { color: #C4BFB6; font-weight: 600; }

/* chips */
#page-operations .opfac-chip { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10px; border-radius: 999px; padding: 3px 9px; letter-spacing: .03em; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); color: #C4BFB6; white-space: nowrap; }
#page-operations .opfac-chip.ok { background: rgba(76,175,125,0.14); border-color: rgba(76,175,125,0.34); color: #4CAF7D; }
#page-operations .opfac-chip.overdue { background: rgba(224,85,85,0.14); border-color: rgba(224,85,85,0.34); color: #E05555; }
#page-operations .opfac-chip.soon { background: rgba(232,148,58,0.14); border-color: rgba(232,148,58,0.34); color: #E8943A; }

/* places board */
#page-operations .opfac-placegrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 13px; }
@media (max-width: 1320px) { #page-operations .opfac-placegrid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 860px) { #page-operations .opfac-placegrid { grid-template-columns: repeat(2, 1fr); } }
#page-operations .opfac-place { background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 13px; padding: 14px 15px; }
#page-operations .opfac-place.has-work { border-color: rgba(232,148,58,0.30); }
#page-operations .opfac-place-nm { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #F0EBE2; margin-bottom: 9px; }
#page-operations .opfac-place-row { display: flex; justify-content: space-between; font-size: 11.5px; color: #8A857D; padding: 3px 0; }
#page-operations .opfac-place-row b { color: #C4BFB6; font-weight: 600; }

/* fixed plant */
#page-operations .opfac-grp { margin-bottom: 15px; }
#page-operations .opfac-grp-h { display: flex; align-items: center; gap: 9px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #C9A84C; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 9px; }
#page-operations .opfac-grp-h span { font-size: 10px; color: #8A857D; background: rgba(255,255,255,0.05); border-radius: 999px; padding: 2px 8px; }
#page-operations .opfac-plantgrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 1320px) { #page-operations .opfac-plantgrid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px) { #page-operations .opfac-plantgrid { grid-template-columns: 1fr; } }
#page-operations .opfac-plant { background: rgba(255,255,255,0.025); border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 13px 14px; }
#page-operations .opfac-plant-nm { font-size: 12.5px; color: #F0EBE2; font-weight: 600; }
#page-operations .opfac-plant-tag { font-size: 10.5px; color: #8A857D; letter-spacing: .05em; margin: 3px 0 8px; }
#page-operations .opfac-plant-row { display: flex; justify-content: space-between; font-size: 11.5px; color: #8A857D; padding: 3px 0; border-top: 1px solid rgba(255,255,255,0.05); }
#page-operations .opfac-plant-row b { color: #C4BFB6; font-weight: 600; }
#page-operations .opfac-plant-row b.overdue { color: #E05555; }
#page-operations .opfac-plant-row b.soon { color: #E8943A; }
/* FIX_FACILITIES_PLANT_DELETE_SERVICE_2026_09_04 -- "No plan set" state; reuses the existing
   "due soon" amber (#E8943A, above) for visual consistency with the room's existing attention
   states. */
#page-operations .opfac-plant-row b.noplan { color: #E8943A; }

/* add / raise boxes */
#page-operations .opfac-addbox { background: rgba(201,168,76,0.05); border: 1px solid rgba(201,168,76,0.20); border-radius: 13px; padding: 14px 16px; margin-bottom: 14px; }
#page-operations .opfac-addttl { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; margin-bottom: 10px; }
#page-operations .opfac-addrow { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; }
#page-operations .opfac-in { flex: 1 1 190px; min-width: 150px; background: #1c1a17; border: 1px solid rgba(255,255,255,0.12); border-radius: 9px; padding: 9px 12px; font-family: 'Open Sans', sans-serif; font-size: 12.5px; color: #F0EBE2; }
#page-operations .opfac-in.wide { flex: 2 1 300px; }
#page-operations .opfac-in.narrow { flex: 0 1 150px; }
#page-operations .opfac-in::placeholder { color: #6E6960; }
#page-operations .opfac-in:focus { outline: none; border-color: rgba(201,168,76,0.55); }
#page-operations .opfac-btn { background: #C9A84C; border: 1px solid #C9A84C; color: #16140F; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; border-radius: 9px; padding: 9px 17px; cursor: pointer; letter-spacing: .02em; }
#page-operations .opfac-btn:hover { background: #D8B85C; }
#page-operations .opfac-btn.ghost { background: transparent; color: #C9A84C; border-color: rgba(201,168,76,0.40); padding: 6px 13px; font-size: 11px; }
#page-operations .opfac-btn.ghost:hover { background: rgba(201,168,76,0.10); }
#page-operations .opfac-hint { font-size: 11.5px; color: #8A857D; margin-top: 9px; }

/* FIX_AST_AREA_FACILITIES_S2C_2026_09_15 — Areas-management list + migration-review rows.
   Reuses this room's established palette (the card gradient + gold-accent tokens already
   defined above) rather than introducing new colours. */
#page-operations .opfac-areagrid { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
#page-operations .opfac-area-row { display: flex; align-items: center; gap: 10px; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; padding: 9px 12px; flex-wrap: wrap; }
#page-operations .opfac-area-row .opfac-in { flex: 1 1 220px; }
#page-operations .opfac-area-parent { font-size: 11px; color: #8A857D; flex: 0 0 auto; min-width: 90px; }
#page-operations .opfac-migrows { display: flex; flex-direction: column; gap: 9px; margin-bottom: 14px; }
#page-operations .opfac-migrow { display: flex; align-items: center; gap: 10px; background: rgba(232,148,58,0.06); border: 1px solid rgba(232,148,58,0.22); border-radius: 10px; padding: 11px 13px; flex-wrap: wrap; }
#page-operations .opfac-migtext { display: flex; flex-direction: column; gap: 2px; flex: 1 1 160px; min-width: 140px; }
#page-operations .opfac-migtext b { font-size: 12.5px; color: #F0EBE2; }
#page-operations .opfac-migtext span { font-size: 11px; color: #8A857D; }
#page-operations .opfac-migrow .opfac-in { flex: 1 1 170px; min-width: 140px; }

/* FIX_OPS_PROCEDURE_STEPS_EDITOR_2026_09_20 — numbered step-row editor (Ops Procedures).
   Follows this file's own opfac-* palette tokens verbatim (the gold #C9A84C / dark #1c1a17 /
   light-text #F0EBE2 values already used by the sibling rules just above this block) rather
   than re-deriving them. Move/remove controls reuse the existing ghost button class
   unmodified — no new button-shaped CSS. */
#page-operations .opfac-steplist { display: flex; flex-direction: column; margin-bottom: 10px; }
#page-operations .opfac-steprow { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
#page-operations .opfac-stepnum { flex: 0 0 22px; height: 22px; border-radius: 50%; background: rgba(201,168,76,0.15); border: 1px solid rgba(201,168,76,0.40); color: #C9A84C; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11px; display: flex; align-items: center; justify-content: center; }

/* work-needed list */
#page-operations .opfac-wolist { display: flex; flex-direction: column; gap: 9px; }
#page-operations .opfac-wo { display: flex; align-items: center; gap: 13px; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-left: 3px solid #8A857D; border-radius: 12px; padding: 13px 15px; flex-wrap: wrap; }
#page-operations .opfac-wo.overdue { border-left-color: #E05555; }
#page-operations .opfac-wo.soon { border-left-color: #E8943A; }
#page-operations .opfac-wo-main { flex: 1 1 320px; min-width: 0; }
#page-operations .opfac-wo-task { font-size: 13px; color: #F0EBE2; font-weight: 600; }
#page-operations .opfac-wo-meta { font-size: 11.5px; color: #8A857D; margin-top: 3px; }
#page-operations .opfac-wo-side { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; }
#page-operations .opfac-seam { margin-top: 16px; background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.07); border-radius: 12px; padding: 13px 16px; font-size: 12px; color: #8A857D; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; line-height: 1.5; }

/* FIX_OPS_FLEET_2026_07_01 — Operations Fleet & Delivery room (the delivery-fleet dispatch
   command centre). Built TO design_samples/operations/operations_fleet.html, re-prefixed under
   #page-operations .opf-* to match the .opc-/.opj-/.opv-/.oi-/.inv- room namespace + avoid the
   sample's unprefixed-class collisions. Full-width (fills the #operations-content host). Literal
   hex values mirror the operations sample :root tokens. PROFILE-GATED: shape.hasFleet (distributor/
   logistics/wholesale/logging) so the room never appears on the gym/venue demo (THE YARD). Reads
   the SHIPPED aiv_delivery_routes (routes/dispatch) + aiv_assets vehicle-class records (roster) +
   aiv_maintenance work-orders (maintenance schedule) stores; honest-empty with full structure when
   any store is empty (NEVER fabricates a vehicle/route/km figure). ASCII-only comments. */
#page-operations .opf-head { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
#page-operations .opf-head h1 { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 26px; color: #F0EBE2; letter-spacing: -.01em; line-height: 1; }
#page-operations .opf-when { font-size: 11.5px; color: #8A857D; padding-bottom: 2px; }
#page-operations .opf-sub { font-size: 12.5px; color: #8A857D; line-height: 1.55; max-width: 980px; margin: 8px 0 4px; }
#page-operations .opf-statusline { display: flex; align-items: center; gap: 10px; margin: 12px 0 4px; font-size: 13px; color: #C4BFB6; }
#page-operations .opf-statusline b { color: #F0EBE2; font-weight: 700; }
#page-operations .opf-dot { width: 10px; height: 10px; border-radius: 50%; background: #E8943A; box-shadow: 0 0 11px #E8943A; flex: none; }
#page-operations .opf-dot.ok { background: #4CAF7D; box-shadow: 0 0 11px #4CAF7D; }
#page-operations .opf-ok { color: #4CAF7D; }
#page-operations .opf-fix { color: #E8943A; font-weight: 600; }

/* section heading (shared idiom with .opc-sech) */
#page-operations .opf-sech { display: flex; align-items: center; gap: 12px; margin: 24px 0 13px; flex-wrap: wrap; }
#page-operations .opf-sech h2 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 15px; color: #F0EBE2; letter-spacing: .3px; }
#page-operations .opf-sech .sh-sub { font-size: 11.5px; color: #8A857D; }
#page-operations .opf-sech .sh-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
#page-operations .opf-pill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 10.5px; color: #F0EBE2; background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.32); border-radius: 999px; padding: 3px 11px; letter-spacing: .03em; }

/* KPI hero band (6 tiles) */
#page-operations .opf-kpis { display: grid; grid-template-columns: repeat(6,1fr); gap: 13px; margin-bottom: 6px; }
@media (max-width: 1180px) { #page-operations .opf-kpis { grid-template-columns: repeat(3,1fr); } }
#page-operations .opf-kpi { position: relative; overflow: hidden; background: linear-gradient(165deg,#262320,#1f1c19); border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; padding: 15px 16px 14px; box-shadow: 0 16px 34px -28px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opf-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; opacity: .55; }
#page-operations .opf-kpi.k-route::before { background: #5B9BD5; }
#page-operations .opf-kpi.k-util::before { background: #8B6FD6; }
#page-operations .opf-kpi.k-deliv::before, #page-operations .opf-kpi.k-ontime::before { background: #4CAF7D; }
#page-operations .opf-kpi.k-cost::before { background: #E05555; }
#page-operations .opf-kpi .lbl { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #8A857D; font-weight: 700; margin-bottom: 7px; }
#page-operations .opf-kpi .val { font-family: 'Montserrat', sans-serif; font-size: 22px; font-weight: 800; color: #F0EBE2; line-height: 1; }
#page-operations .opf-kpi .val small { font-size: 12px; color: #8A857D; font-weight: 600; }
#page-operations .opf-kpi .kpisub { font-size: 11px; margin-top: 7px; color: #8A857D; }

/* vehicle roster board */
#page-operations .opf-veh-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(300px,1fr)); gap: 14px; }
#page-operations .opf-vcard { position: relative; overflow: hidden; background: linear-gradient(168deg,#262320,#1e1b18); border: 1px solid rgba(255,255,255,0.07); border-radius: 15px; padding: 15px 16px 14px; box-shadow: 0 18px 42px -34px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opf-vcard::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #C9A84C; }
#page-operations .opf-vcard.route::before { background: #4CAF7D; }
#page-operations .opf-vcard.idle::before { background: #E8943A; }
#page-operations .opf-vcard.loading::before { background: #5B9BD5; }
#page-operations .opf-vcard.maint::before { background: #8B6FD6; }
#page-operations .opf-vcard.down::before { background: #E05555; }
#page-operations .opf-vc-top { display: flex; align-items: flex-start; gap: 11px; margin-bottom: 11px; }
#page-operations .opf-vc-ic { width: 42px; height: 42px; border-radius: 11px; flex: none; display: grid; place-items: center; background: rgba(76,175,125,0.1); border: 1px solid rgba(76,175,125,0.22); font-size: 20px; }
#page-operations .opf-vc-tt { flex: 1; min-width: 0; }
#page-operations .opf-vc-tt b { display: block; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; line-height: 1.15; }
#page-operations .opf-vc-tt span { font-size: 10.5px; color: #8A857D; display: block; margin-top: 2px; }
#page-operations .opf-vpill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .05em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; white-space: nowrap; flex: none; color: #C9A84C; background: rgba(201,168,76,0.14); border: 1px solid rgba(201,168,76,0.3); }
#page-operations .opf-vpill.route { color: #4CAF7D; background: rgba(76,175,125,0.14); border-color: rgba(76,175,125,0.3); }
#page-operations .opf-vpill.idle { color: #E8943A; background: rgba(232,148,58,0.14); border-color: rgba(232,148,58,0.3); }
#page-operations .opf-vpill.down { color: #E05555; background: rgba(224,85,85,0.14); border-color: rgba(224,85,85,0.3); }
#page-operations .opf-vc-meta { display: flex; flex-direction: column; gap: 7px; margin: 2px 0 11px; }
#page-operations .opf-vc-mr { display: flex; align-items: baseline; justify-content: space-between; font-size: 11px; color: #8A857D; }
#page-operations .opf-vc-mr .v { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11.5px; color: #C4BFB6; }
#page-operations .opf-vc-mr .v.od { color: #E05555; }
#page-operations .opf-vc-mr .v.warnv { color: #E8943A; }
#page-operations .opf-vc-foot { display: flex; align-items: center; gap: 8px; font-size: 10.5px; color: #8A857D; padding-top: 10px; border-top: 1px solid rgba(255,255,255,0.07); }
#page-operations .opf-vc-foot .rt { font-family: 'Montserrat', sans-serif; font-weight: 600; color: #C4BFB6; }
#page-operations .opf-vc-foot .flag { margin-left: auto; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; color: #E05555; background: rgba(224,85,85,0.13); border: 1px solid rgba(224,85,85,0.28); }

/* routes dispatch table */
#page-operations .opf-toolbar { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-bottom: 13px; }
#page-operations .opf-search { display: flex; align-items: center; gap: 8px; border: 1px solid rgba(255,255,255,0.13); border-radius: 10px; padding: 8px 12px; background: rgba(255,255,255,0.025); min-width: 220px; flex: 1; max-width: 360px; color: #8A857D; font-size: 12.5px; }
#page-operations .opf-filters { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
#page-operations .opf-fbtn { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; color: #8A857D; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); border-radius: 8px; padding: 7px 12px; }
#page-operations .opf-fbtn.on { color: #F0EBE2; border-color: rgba(201,168,76,0.45); background: linear-gradient(180deg,rgba(201,168,76,0.16),rgba(201,168,76,0.04)); }
#page-operations .opf-fbtn .c { font-size: 9.5px; opacity: .7; margin-left: 5px; }
/* FIX_VERIFY_OPS_2026_07_21 (OPS-9) — honest-disabled routes toolbar: the search box + filter pills (which
   carry live non-zero counts and so read as working filters) have no handlers → ship visibly disabled WITH
   the reason stated, mirroring the Cockpit .opck-toggle.disabled sibling. */
/* FIX_DISABLED_LEGIBILITY_SIBLINGFORM_2026_07_26 (F-2) — the routes-toolbar twin of the
   bookings .opc-toolbar rule above. Neither the gate nor the brief named this one; the
   census in tools/disabled_contrast_scan.js found it. Same treatment, same reason. */
#page-operations .opf-toolbar.is-disabled { opacity: var(--disabled-opacity); }
#page-operations .opf-toolbar.is-disabled .opf-search, #page-operations .opf-toolbar.is-disabled .opf-fbtn { cursor: not-allowed; border-style: dashed; }
#page-operations .opf-toolbar.is-disabled .opf-fbtn.on { color: #8A857D; border-color: rgba(255,255,255,0.07); background: rgba(255,255,255,0.02); }
#page-operations .opf-fnote { font-size: 10.5px; color: #8A857D; font-style: italic; align-self: center; }
#page-operations .opf-tblwrap { background: linear-gradient(170deg,#242220,#1d1a18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations table.opf-routes { width: 100%; border-collapse: collapse; font-size: 12.5px; }
#page-operations table.opf-routes thead th { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .09em; text-transform: uppercase; color: #8A857D; text-align: left; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.015); }
#page-operations table.opf-routes thead th.r { text-align: right; }
#page-operations table.opf-routes tbody tr { border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations table.opf-routes tbody tr:last-child { border-bottom: none; }
#page-operations table.opf-routes tbody tr.behindrow { background: linear-gradient(90deg,rgba(224,85,85,0.06),transparent 60%); }
#page-operations table.opf-routes td { padding: 11px 14px; vertical-align: middle; }
#page-operations .opf-rt-no { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; }
#page-operations .opf-rt-no small { display: block; font-size: 9.5px; color: #8A857D; font-weight: 600; }
#page-operations .opf-rt-veh b { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; font-size: 12px; display: block; line-height: 1.2; }
#page-operations .opf-rt-veh span { font-size: 10px; color: #8A857D; }
#page-operations .opf-rt-region { color: #C4BFB6; }
#page-operations .opf-rt-region small { display: block; font-size: 9.5px; color: #8A857D; }
#page-operations .opf-rt-prog { min-width: 132px; }
#page-operations .opf-rt-prog .rp-track { height: 8px; border-radius: 5px; background: rgba(255,255,255,0.06); overflow: hidden; position: relative; }
#page-operations .opf-rt-prog .rp-track i { display: block; height: 100%; border-radius: 5px; background: linear-gradient(90deg,#9c7f33,#C9A84C); }
#page-operations .opf-rt-prog .rp-track i.g { background: linear-gradient(90deg,#3a8a63,#4CAF7D); }
#page-operations .opf-rt-prog .rp-track i.a { background: linear-gradient(90deg,#c47f2c,#E8943A); }
#page-operations .opf-rt-prog .rp-track i.r { background: linear-gradient(90deg,#b94545,#E05555); }
#page-operations .opf-rt-prog .rp-cap { font-size: 9.5px; color: #8A857D; margin-top: 4px; font-family: 'Montserrat', sans-serif; font-weight: 600; }
#page-operations .opf-st { display: inline-flex; align-items: center; gap: 6px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
#page-operations .opf-st .sd { width: 6px; height: 6px; border-radius: 50%; flex: none; }
#page-operations .opf-st.ontime { color: #4CAF7D; background: rgba(76,175,125,0.12); border: 1px solid rgba(76,175,125,0.28); }
#page-operations .opf-st.ontime .sd { background: #4CAF7D; }
#page-operations .opf-st.behind { color: #E05555; background: rgba(224,85,85,0.1); border: 1px solid rgba(224,85,85,0.3); }
#page-operations .opf-st.behind .sd { background: #E05555; }
#page-operations .opf-st.completed { color: #8A857D; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.13); }
#page-operations .opf-st.completed .sd { background: #8A857D; }
#page-operations .opf-st.queued { color: #f0c08a; background: rgba(232,148,58,0.1); border: 1px solid rgba(232,148,58,0.3); }
#page-operations .opf-st.queued .sd { background: #E8943A; }

/* dispatch + capacity two-column */
#page-operations .opf-disp-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opf-disp-grid { grid-template-columns: 1fr; } }
#page-operations .opf-panel { background: linear-gradient(170deg,#252220,#1e1b19); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; padding: 18px 20px; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations .opf-panel-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; gap: 12px; }
#page-operations .opf-panel-h h3 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px; color: #F0EBE2; letter-spacing: .4px; }
#page-operations .opf-panel-h .hint { font-size: 11px; color: #8A857D; }
#page-operations .opf-panel-sub { font-size: 11.5px; color: #8A857D; margin: 2px 0 14px; }
#page-operations .opf-drivers { display: flex; flex-direction: column; gap: 9px; }
#page-operations .opf-unit { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: 12px; background: rgba(255,255,255,0.018); border: 1px solid rgba(255,255,255,0.07); }
#page-operations .opf-unit .uic { width: 38px; height: 38px; border-radius: 10px; flex: none; display: grid; place-items: center; background: rgba(76,175,125,0.1); border: 1px solid rgba(76,175,125,0.2); font-size: 17px; }
#page-operations .opf-unit .ux { flex: 1; min-width: 0; }
#page-operations .opf-unit .ux b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; display: block; line-height: 1.2; }
#page-operations .opf-unit .ux span { font-size: 10.5px; color: #8A857D; }
#page-operations .opf-unit .ur { text-align: right; flex: none; }
#page-operations .opf-avpill { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; color: #4CAF7D; background: rgba(76,175,125,0.13); border: 1px solid rgba(76,175,125,0.28); }
#page-operations .opf-avpill.idle { color: #E8943A; background: rgba(232,148,58,0.13); border-color: rgba(232,148,58,0.28); }
#page-operations .opf-avpill.down { color: #E05555; background: rgba(224,85,85,0.13); border-color: rgba(224,85,85,0.28); }
#page-operations .opf-unit .lds { font-size: 9.5px; color: #8A857D; margin-top: 4px; }
#page-operations .opf-flags { display: flex; flex-direction: column; gap: 9px; margin-top: 4px; }
#page-operations .opf-flag { display: flex; align-items: flex-start; gap: 11px; padding: 12px 13px; border-radius: 12px; position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,0.018); }
#page-operations .opf-flag::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #E8943A; }
#page-operations .opf-flag.info::before { background: #5B9BD5; }
#page-operations .opf-flag.crit::before { background: #E05555; }
#page-operations .opf-flag .fic { width: 32px; height: 32px; border-radius: 9px; flex: none; display: grid; place-items: center; font-size: 15px; background: rgba(232,148,58,0.13); }
#page-operations .opf-flag.info .fic { background: rgba(91,155,213,0.13); }
#page-operations .opf-flag.crit .fic { background: rgba(224,85,85,0.14); }
#page-operations .opf-flag .fx { flex: 1; min-width: 0; }
#page-operations .opf-flag .fx b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; display: block; }
#page-operations .opf-flag .fx p { font-size: 11px; color: #8A857D; margin-top: 3px; line-height: 1.45; }

/* capacity meter */
#page-operations .opf-cap-meter { display: flex; flex-direction: column; gap: 11px; }
#page-operations .opf-cm-row { display: flex; align-items: center; gap: 11px; font-size: 11.5px; }
#page-operations .opf-cm-row .cm-l { width: 96px; color: #C4BFB6; flex: none; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 11px; }
#page-operations .opf-cm-row .cm-track { flex: 1; height: 16px; border-radius: 6px; background: rgba(255,255,255,0.05); overflow: hidden; position: relative; }
#page-operations .opf-cm-row .cm-track i { display: block; height: 100%; border-radius: 6px; }
#page-operations .opf-cm-row .cm-v { width: 80px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 11px; color: #F0EBE2; flex: none; }
#page-operations .opf-cm-row .cm-v.neg { color: #E05555; }

/* maintenance schedule table */
#page-operations .opf-maint-tbl { background: linear-gradient(170deg,#242220,#1d1a18); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; box-shadow: 0 22px 50px -36px #000, inset 0 1px 0 rgba(255,255,255,0.05); }
#page-operations table.opf-maint { width: 100%; border-collapse: collapse; font-size: 12.5px; }
#page-operations table.opf-maint thead th { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .09em; text-transform: uppercase; color: #8A857D; text-align: left; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.015); }
#page-operations table.opf-maint thead th.r { text-align: right; }
#page-operations table.opf-maint tbody tr { border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations table.opf-maint tbody tr:last-child { border-bottom: none; }
#page-operations table.opf-maint tbody tr.overdue { background: linear-gradient(90deg,rgba(224,85,85,0.07),transparent 55%); }
#page-operations table.opf-maint td { padding: 11px 14px; vertical-align: middle; }
#page-operations .opf-mt-unit { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #F0EBE2; }
#page-operations .opf-mt-unit small { display: block; font-size: 9.5px; color: #8A857D; font-weight: 600; }
#page-operations .opf-mt-svc { color: #C4BFB6; }
#page-operations .opf-mt-due { font-family: 'Montserrat', sans-serif; font-weight: 700; color: #C4BFB6; }
#page-operations .opf-mt-due small { font-size: 9.5px; color: #8A857D; font-weight: 600; margin-left: 4px; }
#page-operations .opf-mst { display: inline-flex; align-items: center; gap: 6px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
#page-operations .opf-mst .sd { width: 6px; height: 6px; border-radius: 50%; }
#page-operations .opf-mst.overdue { color: #E05555; background: rgba(224,85,85,0.12); border: 1px solid rgba(224,85,85,0.3); }
#page-operations .opf-mst.overdue .sd { background: #E05555; }
#page-operations .opf-mst.soon { color: #E8943A; background: rgba(232,148,58,0.12); border: 1px solid rgba(232,148,58,0.28); }
#page-operations .opf-mst.soon .sd { background: #E8943A; }
#page-operations .opf-mst.sched { color: #5B9BD5; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.28); }
#page-operations .opf-mst.sched .sd { background: #5B9BD5; }

/* analytics grid */
#page-operations .opf-an-grid { display: grid; grid-template-columns: 1fr 1fr 1.25fr; gap: 16px; }
@media (max-width: 1180px) { #page-operations .opf-an-grid { grid-template-columns: 1fr; } }
#page-operations .opf-hbar { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
#page-operations .opf-hb { display: flex; align-items: center; gap: 11px; font-size: 12px; }
#page-operations .opf-hb .hb-l { width: 118px; flex: none; display: flex; align-items: center; gap: 8px; color: #C4BFB6; }
#page-operations .opf-hb .hb-l .sw { width: 10px; height: 10px; border-radius: 3px; flex: none; }
#page-operations .opf-hb .hb-l span { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-operations .opf-hb .hb-track { flex: 1; height: 12px; border-radius: 6px; background: rgba(255,255,255,0.05); overflow: hidden; }
#page-operations .opf-hb .hb-track i { display: block; height: 100%; border-radius: 6px; }
#page-operations .opf-hb .hb-v { width: 74px; text-align: right; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12px; color: #F0EBE2; flex: none; }
#page-operations .opf-hb .hb-v small { font-size: 9px; color: #8A857D; font-weight: 600; }

/* empty-state card (shared idiom with .opc-empty) */
#page-operations .opf-empty { border: 1px dashed rgba(255,255,255,0.13); border-radius: 13px; padding: 22px 20px; text-align: center; font-size: 12px; color: #8A857D; line-height: 1.6; background: rgba(255,255,255,0.014); }
#page-operations .opf-empty b { display: block; color: #C4BFB6; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; margin-bottom: 6px; }

/* observation strip + source note (shared idiom with .opc-obs / .opc-srcnote) */
#page-operations .opf-obs { display: flex; gap: 14px; padding: 18px 20px; border-radius: 16px; margin-top: 22px; background: linear-gradient(140deg,rgba(201,168,76,0.07),rgba(255,255,255,0.014)); border: 1px solid rgba(201,168,76,0.22); }
#page-operations .opf-obs .obs-ic { width: 38px; height: 38px; border-radius: 11px; flex: none; display: grid; place-items: center; background: rgba(201,168,76,0.14); font-size: 19px; }
#page-operations .opf-obs .obs-body h4 { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 13px; color: #F0EBE2; letter-spacing: .3px; margin-bottom: 5px; }
#page-operations .opf-obs .obs-body p { font-size: 12.5px; color: #C4BFB6; line-height: 1.55; }
#page-operations .opf-obs .obs-body p b { color: #F0EBE2; font-weight: 700; }
#page-operations .opf-srcnote { display: flex; align-items: flex-start; gap: 13px; margin-top: 18px; padding: 16px 18px; border-radius: 14px; border: 1px solid rgba(91,155,213,0.2); background: radial-gradient(500px 180px at 8% -40%,rgba(91,155,213,0.07),transparent 60%),linear-gradient(168deg,#222220,#1b1a18); }
#page-operations .opf-srcnote .sn-ic { width: 40px; height: 40px; border-radius: 11px; flex: none; display: grid; place-items: center; background: rgba(91,155,213,0.12); border: 1px solid rgba(91,155,213,0.26); font-size: 19px; }
#page-operations .opf-srcnote .sn-x b { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 12.5px; color: #F0EBE2; display: block; margin-bottom: 4px; }
#page-operations .opf-srcnote .sn-x p { font-size: 11.5px; color: #8A857D; line-height: 1.55; max-width: 960px; }
#page-operations .opf-srcnote .sn-x p b { display: inline; color: #C4BFB6; font-weight: 600; }
#page-operations .opf-srcnote .sn-x .flow { display: flex; align-items: center; gap: 9px; margin-top: 11px; flex-wrap: wrap; font-family: 'Montserrat', sans-serif; font-size: 10.5px; font-weight: 600; }
#page-operations .opf-srcnote .flow .fn { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.03); color: #C4BFB6; }
#page-operations .opf-srcnote .flow .ar { color: #8A857D; }
#page-operations .opf-foot { font-size: 10px; color: #8A857D; margin-top: 22px; text-align: center; opacity: .7; }

/* FIX_OPS_INVENTORY_S4_2026_06_16 — Insights tab (the planning lens). Bento analytics
   grid + click-expand modal, scoped under #page-operations .inv-*. Built TO
   design_samples/operations_inventory/inventory_management_combined.html (the Insights
   bento), re-prefixed under .inv- to match the S1/S2/S3 namespace + avoid the sample's
   unprefixed-class collisions. Literal hex values mirror the sample :root tokens. The
   three velocity tiles (turnover / days / forecast) render an honest no-data state (the
   engine carries no sell-velocity), so their rich-chart CSS is intentionally absent.
   ASCII-only comments throughout. */
#page-operations .inv-bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(118px, auto); gap: 16px;
  grid-template-areas:
    "value fill donut donut"
    "skus turnover donut donut"
    "days days lowout lowout"
    "forecast forecast forecast forecast"
    "shrink shrink shrink shrink"; }
@media (max-width: 1040px) { #page-operations .inv-bento { grid-template-columns: repeat(2, 1fr);
  grid-template-areas: "value fill" "skus turnover" "donut donut" "days days" "lowout lowout" "forecast forecast" "shrink shrink"; } }
@media (max-width: 560px) { #page-operations .inv-bento { grid-template-columns: 1fr;
  grid-template-areas: "value" "fill" "skus" "turnover" "donut" "days" "lowout" "forecast" "shrink"; } }
#page-operations .inv-ba-value { grid-area: value; } #page-operations .inv-ba-fill { grid-area: fill; }
#page-operations .inv-ba-skus { grid-area: skus; } #page-operations .inv-ba-turnover { grid-area: turnover; }
#page-operations .inv-ba-donut { grid-area: donut; } #page-operations .inv-ba-days { grid-area: days; }
#page-operations .inv-ba-lowout { grid-area: lowout; } #page-operations .inv-ba-forecast { grid-area: forecast; }
#page-operations .inv-ba-shrink { grid-area: shrink; }
#page-operations .inv-tile { position: relative; background: linear-gradient(160deg, #26221d, #1a1714); border: 1px solid rgba(255,255,255,0.07);
  border-radius: 16px; padding: 20px 22px; overflow: hidden; display: flex; flex-direction: column;
  transition: transform .28s cubic-bezier(.2,.7,.3,1), border-color .28s, box-shadow .28s; cursor: pointer; }
#page-operations .inv-tile:hover { transform: translateY(-4px); border-color: rgba(255,255,255,0.13); box-shadow: 0 14px 34px rgba(0,0,0,.34); }
#page-operations .inv-tile:focus-visible { outline: 2px solid #C9A84C; outline-offset: 2px; }
#page-operations .inv-tlabel { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: #8A857D; font-weight: 700; display: flex; align-items: center; gap: 7px; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-tlabel .inv-ic { width: 14px; height: 14px; opacity: .85; flex: none; }
#page-operations .inv-tbig { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; color: #F0EBE2; font-size: 30px; line-height: 1; letter-spacing: -.01em; margin-top: auto; }
#page-operations .inv-tbig .inv-unit { font-size: .5em; font-weight: 700; color: #8A857D; }
#page-operations .inv-tsub { font-size: 12px; color: #8A857D; margin-top: 5px; } #page-operations .inv-tsub b { color: #C4BFB6; font-weight: 600; }
#page-operations .inv-tnodata { font-size: 12.5px; color: #8A857D; margin-top: auto; line-height: 1.55; }
#page-operations .inv-tnodata .inv-nd-h { color: #C4BFB6; font-weight: 600; display: block; margin-bottom: 3px; }
#page-operations .inv-gaugewrap { display: flex; align-items: center; gap: 16px; margin-top: auto; }
#page-operations .inv-gaugewrap .inv-gw-mono { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; font-size: 22px; color: #F0EBE2; }
#page-operations .inv-gaugewrap .inv-gw-mono span { color: #8A857D; font-weight: 600; }
#page-operations .inv-gaugewrap .inv-gw-lab { font-size: 11.5px; color: #8A857D; }
#page-operations .inv-gauge-pct { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; color: #F0EBE2; font-size: 19px; }
#page-operations .inv-donutbody { display: flex; gap: 22px; margin-top: 6px; flex: 1; align-items: center; flex-wrap: wrap; }
#page-operations .inv-dchart { position: relative; flex: none; }
#page-operations .inv-dcenter { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; }
#page-operations .inv-dcenter .inv-dval { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; color: #F0EBE2; font-size: 24px; line-height: 1; }
#page-operations .inv-dcenter .inv-dlab { font-size: 10.5px; color: #8A857D; letter-spacing: .1em; text-transform: uppercase; margin-top: 4px; }
#page-operations .inv-dlegend { display: flex; flex-direction: column; gap: 9px; flex: 1; min-width: 150px; }
#page-operations .inv-lrow { display: flex; align-items: center; gap: 10px; font-size: 13px; }
#page-operations .inv-lrow .inv-sw { width: 11px; height: 11px; border-radius: 3px; flex: none; }
#page-operations .inv-lrow .inv-lname { color: #C4BFB6; flex: 1; } #page-operations .inv-lrow .inv-lval { color: #F0EBE2; font-weight: 600; } #page-operations .inv-lrow .inv-lpct { color: #8A857D; width: 38px; text-align: right; font-size: 12px; }
#page-operations .inv-lolist { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; flex: 1; }
#page-operations .inv-lorow { display: flex; align-items: center; gap: 11px; font-size: 13px; border-radius: 7px; padding: 3px 5px; margin: -3px -5px; }
#page-operations .inv-lorow .inv-lostat { width: 7px; height: 7px; border-radius: 50%; flex: none; }
#page-operations .inv-lorow .inv-lonm { flex: 1; color: #C4BFB6; } #page-operations .inv-lorow .inv-loqt { color: #F0EBE2; font-weight: 600; } #page-operations .inv-lorow .inv-loqt small { color: #8A857D; font-weight: 400; }
#page-operations .inv-lorow .inv-lotag { font-size: 10px; font-weight: 700; letter-spacing: .05em; padding: 2px 7px; border-radius: 5px; }
#page-operations .inv-lotag.out { color: #E05555; background: rgba(224,85,85,.14); } #page-operations .inv-lotag.low { color: #E8943A; background: rgba(232,148,58,.12); }
#page-operations .inv-ba-shrink { flex-direction: row; align-items: center; gap: 22px; }
#page-operations .inv-shrink-ic { width: 52px; height: 52px; border-radius: 14px; flex: none; display: grid; place-items: center; }
#page-operations .inv-shrink-ic.flag { background: rgba(232,148,58,.1); border: 1px solid rgba(232,148,58,.24); }
#page-operations .inv-shrink-ic.ok { background: rgba(76,175,125,.1); border: 1px solid rgba(76,175,125,.24); }
#page-operations .inv-shrink-body { flex: 1; min-width: 200px; }
#page-operations .inv-shrink-body .inv-sk-t { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 700; color: #F0EBE2; font-size: 16px; }
#page-operations .inv-shrink-body .inv-sk-d { font-size: 13px; color: #C4BFB6; margin-top: 4px; } #page-operations .inv-shrink-body .inv-sk-d b.neg { color: #E05555; font-weight: 700; }
#page-operations .inv-ins-status { display: inline-flex; align-items: center; gap: 10px; background: rgba(232,148,58,.08); border: 1px solid rgba(232,148,58,.22); color: #F0EBE2; padding: 10px 16px; border-radius: 999px; font-size: 13px; }
#page-operations .inv-ins-status.ok { background: rgba(76,175,125,.08); border-color: rgba(76,175,125,.22); }
#page-operations .inv-ins-status .inv-isdot { width: 9px; height: 9px; border-radius: 50%; background: #E8943A; box-shadow: 0 0 0 4px rgba(232,148,58,.16); }
#page-operations .inv-ins-status.ok .inv-isdot { background: #4CAF7D; box-shadow: 0 0 0 4px rgba(76,175,125,.16); }
#page-operations .inv-ins-status b { color: #F0EBE2; }
/* click-expand insight modal (mounts on the shipped #inv-scrim; mirrors the S1/S3 drawer scrim). */
#page-operations .inv-imodal { position: fixed; left: 50%; top: 50%; transform: translate(-50%, calc(-50% + 14px)); width: min(620px, calc(100vw - 40px)); max-height: 86vh; overflow-y: auto;
  background: linear-gradient(160deg, rgba(46,41,35,0.96), rgba(24,21,18,0.97)); border: 1px solid rgba(255,255,255,0.13); border-radius: 20px; padding: 26px 28px; z-index: 10100; /* FIX_DRAWER_RENDER_AUDIT_2026_07_21 was z-index:95 -> below #page-staff-app shell (z-index:1000) AND below the shared .inv-scrim (raised to 10090 by the vendor fix), so the insight modal rendered BEHIND its own scrim; raise to top-layer (10100, above scrim 10090) matching the .inv-vmodal/.mko convention */
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; box-shadow: 0 30px 80px rgba(0,0,0,.5); }
#page-operations .inv-imodal.show { opacity: 1; pointer-events: auto; transform: translate(-50%, -50%); }
#page-operations .inv-imodal .inv-mhead { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 20px; }
#page-operations .inv-imodal .inv-mlabel { font-size: 11px; letter-spacing: .13em; text-transform: uppercase; color: #C9A84C; font-weight: 700; font-family: 'Montserrat', sans-serif; }
#page-operations .inv-imodal h2 { font-size: 24px; margin: 4px 0 0; font-family: 'Montserrat', sans-serif; color: #F0EBE2; }
#page-operations .inv-imodal .inv-mclose { margin-left: auto; width: 36px; height: 36px; border-radius: 10px; flex: none; border: 1px solid rgba(255,255,255,0.07); background: rgba(255,255,255,.03); color: #C4BFB6; font-size: 18px; display: grid; place-items: center; cursor: pointer; }
#page-operations .inv-imodal .inv-mclose:hover { background: rgba(255,255,255,.08); color: #F0EBE2; }
#page-operations .inv-imodal .inv-mviz { display: flex; justify-content: center; align-items: center; margin: 6px 0 20px; min-height: 60px; flex-wrap: wrap; gap: 24px; }
#page-operations .inv-imodal .inv-mctx { font-size: 14.5px; line-height: 1.6; color: #C4BFB6; } #page-operations .inv-imodal .inv-mctx b { color: #F0EBE2; font-weight: 600; } #page-operations .inv-imodal .inv-mctx .em { color: #E8943A; font-weight: 600; }
#page-operations .inv-imodal .inv-mstats { display: flex; gap: 26px; flex-wrap: wrap; margin: 4px 0 18px; }
#page-operations .inv-imodal .inv-mst .inv-mv { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; font-size: 30px; color: #F0EBE2; line-height: 1; }
#page-operations .inv-imodal .inv-mst .inv-mk { font-size: 11.5px; color: #8A857D; margin-top: 6px; letter-spacing: .06em; text-transform: uppercase; }

/* ── FIX_PROCUREMENT_LANDING_VENDOR_2026_06_29 — vendor card as a CENTERED POPUP
   (NOT the right-slide .inv-drawer). The .inv-vmodal is the centered overlay; the
   inner .inv-vmodal-card reuses the shipped .inv-dr-head/.inv-dr-body/.inv-dr-foot
   + .inv-field form vocabulary. Section dividers (.inv-vsec) group the fuller,
   industry-agnostic field set. Mirrored into body.sa-specialist-contained below so
   it renders styled in the staff shell. ── */
#page-operations .inv-vmodal { position: fixed; inset: 0; display: grid; place-items: center; z-index: 10100; opacity: 0; pointer-events: none; transition: opacity .2s; padding: 24px; box-sizing: border-box; /* FIX_VENDOR_MODAL_ZINDEX_2026_07_21 raise above #page-staff-app shell (z-index:1000); match .mko top-level convention (modal 10100) */ }
#page-operations .inv-vmodal.show { opacity: 1; pointer-events: auto; }
#page-operations .inv-vmodal-card { width: min(640px, calc(100vw - 40px)); max-height: 88vh; overflow: hidden; background: #232120; border: 1px solid rgba(255,255,255,0.13); border-radius: 18px; box-shadow: 0 30px 80px rgba(0,0,0,.55); display: flex; flex-direction: column; transform: translateY(10px) scale(.99); transition: transform .2s; }
#page-operations .inv-vmodal.show .inv-vmodal-card { transform: translateY(0) scale(1); }
#page-operations .inv-vsec { margin: 4px 0 2px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,0.06); }
#page-operations .inv-vsec:first-child { border-top: none; padding-top: 0; }
#page-operations .inv-vsec-h { font-family: 'Montserrat', sans-serif; font-size: 11px; text-transform: uppercase; letter-spacing: .09em; font-weight: 700; color: #C9A84C; margin: 0 0 12px; }
#page-operations .inv-vmodal textarea.inv-vd-area { width: 100%; box-sizing: border-box; min-height: 72px; resize: vertical; background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 7px; color: #F0EBE2; padding: 10px 12px; font-size: 13.5px; font-family: 'Open Sans', sans-serif; outline: none; transition: border-color .12s, box-shadow .12s; }
#page-operations .inv-vmodal textarea.inv-vd-area:focus { border-color: #C9A84C; box-shadow: 0 0 0 3px rgba(201,168,76,0.28); }
#page-operations .vnc-kv .inv-field { margin-bottom: 0; }

/* ════════════════════════════════════════════════════════════════════════════
   FIX_INVENTORY_OVERVIEW_S1_2026_06_22 -- Inventory Overview tab (the calm landing),
   scoped under #page-operations. Built TO the buildOverview() section of
   design_samples/operations_inventory/inventory_management_combined.html: KPI band +
   attention queue + quick actions + mini-strip. FULL-WIDTH by construction (fr-grids, no
   max-width cap). Literal hex mirrors the sample palette + the sibling .inv-* tiles. The
   .inv-btn idioms (sm / ghost / gold / green) are REUSED from the shipped Items/Purchasing
   tabs -- not redefined here. ASCII-only comments (a non-ASCII char silently drops the rule
   from the CSSOM -- the established L18.8 lesson). ════════════════════════════════════ */
#page-operations .invov-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; margin-bottom: 26px; }
@media (max-width: 1100px) { #page-operations .invov-kpis { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 620px)  { #page-operations .invov-kpis { grid-template-columns: repeat(2, 1fr); } }
#page-operations .invov-kpi { background: linear-gradient(160deg, #26221d, #1a1714); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px;
  padding: 16px 18px; position: relative; overflow: hidden; transition: transform .28s cubic-bezier(.2,.7,.3,1), border-color .28s, box-shadow .28s; }
#page-operations .invov-kpi::before { content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: radial-gradient(120% 80% at 50% -20%, rgba(255,255,255,0.05), transparent 55%); pointer-events: none; }
#page-operations .invov-kpi:hover { transform: translateY(-3px); border-color: rgba(255,255,255,0.13); box-shadow: 0 16px 38px -18px rgba(0,0,0,.7), 0 0 28px -8px rgba(201,168,76,0.3); }
#page-operations .invov-kpi .invov-k { font-size: 10.5px; text-transform: uppercase; letter-spacing: .08em; color: #8A857D; font-weight: 700; font-family: 'Montserrat', sans-serif; }
#page-operations .invov-kpi .invov-v { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 800; font-size: 27px; color: #F0EBE2; margin-top: 8px; line-height: 1; }
#page-operations .invov-kpi.gold .invov-v { color: #C9A84C; } #page-operations .invov-kpi.amber .invov-v { color: #E8943A; } #page-operations .invov-kpi.red .invov-v { color: #E05555; }
#page-operations .invov-kpi .invov-d { font-size: 11px; color: #8A857D; margin-top: 5px; }

/* attention queue (overview hero) */
#page-operations .invov-aq-card { background: #232120; border: 1px solid rgba(255,255,255,0.07); border-radius: 16px; overflow: hidden; margin-bottom: 24px; }
#page-operations .invov-aq-head { padding: 18px 22px; border-bottom: 1px solid rgba(255,255,255,0.07); display: flex; align-items: center; gap: 12px; }
#page-operations .invov-aq-head h2 { font-family: 'Montserrat', sans-serif; font-size: 16px; letter-spacing: .2px; color: #F0EBE2; margin: 0; }
#page-operations .invov-aq-head .invov-aq-count { margin-left: auto; font-size: 12px; color: #8A857D; }
#page-operations .invov-aq-group { border-bottom: 1px solid rgba(255,255,255,0.07); }
#page-operations .invov-aq-group:last-child { border-bottom: none; }
#page-operations .invov-aq-ghead { display: flex; align-items: center; gap: 10px; padding: 12px 22px 8px; }
#page-operations .invov-aq-ghead .invov-gt { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
#page-operations .invov-aq-ghead .invov-gpill { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .invov-aq-row { display: flex; align-items: center; gap: 14px; padding: 11px 22px; transition: background .14s; cursor: pointer; }
#page-operations .invov-aq-row:hover { background: rgba(255,255,255,.02); }
#page-operations .invov-aq-row .invov-ar-icon { width: 32px; height: 32px; border-radius: 9px; flex: none; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; }
#page-operations .invov-aq-head .invov-ar-icon { width: 32px; height: 32px; border-radius: 9px; flex: none; display: flex; align-items: center; justify-content: center; }
#page-operations .invov-aq-row .invov-ar-main { flex: 1; min-width: 0; }
#page-operations .invov-aq-row .invov-ar-name { color: #F0EBE2; font-weight: 600; font-size: 14px; }
#page-operations .invov-aq-row .invov-ar-meta { font-size: 12px; color: #8A857D; margin-top: 1px; }
#page-operations .invov-aq-row .invov-ar-fig { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 700; font-size: 15px; white-space: nowrap; }
#page-operations .invov-aq-row .invov-ar-act { flex: none; }
#page-operations .invov-aq-empty { padding: 26px 22px; font-size: 13.5px; color: #C4BFB6; line-height: 1.6; }
#page-operations .invov-aq-empty .invov-empty-cta { margin-top: 14px; }
#page-operations .invov-tone-red { color: #E05555; } #page-operations .invov-tone-amber { color: #E8943A; } #page-operations .invov-tone-blue { color: #5B9BD5; } #page-operations .invov-tone-gold { color: #C9A84C; }
#page-operations .invov-bg-red { background: rgba(224,85,85,.13); } #page-operations .invov-bg-amber { background: rgba(232,148,58,.13); } #page-operations .invov-bg-blue { background: rgba(91,155,213,.14); } #page-operations .invov-bg-gold { background: rgba(201,168,76,.12); }

/* quick actions */
#page-operations .invov-qa-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 22px; }
@media (max-width: 780px) { #page-operations .invov-qa-grid { grid-template-columns: repeat(2, 1fr); } }
#page-operations .invov-qa { background: linear-gradient(160deg, #26221d, #1a1714); border: 1px solid rgba(255,255,255,0.07); border-radius: 16px;
  padding: 20px; text-align: left; display: flex; flex-direction: column; gap: 12px; transition: transform .2s, border-color .2s, box-shadow .2s; cursor: pointer; }
#page-operations .invov-qa:hover { transform: translateY(-3px); border-color: rgba(201,168,76,.4); box-shadow: 0 16px 36px -18px rgba(0,0,0,.7), 0 0 24px -8px rgba(201,168,76,0.3); }
#page-operations .invov-qa:focus-visible { outline: 2px solid #C9A84C; outline-offset: 2px; }
#page-operations .invov-qa .invov-qa-ic { width: 42px; height: 42px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: rgba(201,168,76,0.12); color: #C9A84C; }
#page-operations .invov-qa .invov-qa-t { font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-weight: 700; font-size: 15px; color: #F0EBE2; }
#page-operations .invov-qa .invov-qa-d { font-size: 12px; color: #8A857D; }

/* at-a-glance mini-strip */
#page-operations .invov-mini { display: flex; gap: 22px; flex-wrap: wrap; font-size: 12.5px; color: #8A857D; padding: 14px 18px;
  background: #1C1A17; border: 1px solid rgba(255,255,255,0.07); border-radius: 10px; }
#page-operations .invov-mini b { color: #F0EBE2; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; }
#page-operations .invov-mini b.invov-amber { color: #E8943A; } #page-operations .invov-mini b.invov-red { color: #E05555; }