/* ============================================================================
   CHARA component layer (Layer 1) — the shared, harvestable component CSS.
   SOURCE OF TRUTH: this file is authored in the UI Kit (chara/ux) and imported
   by the kit gallery; the build lane copies it into chara-poc/web/css/ so the
   POC consumes the SAME rules (harvest = import, not eyeball re-implementation).
   DEPENDS ON: tokens.css (Layer 0) — every color/type/radius is a var(--*).
   Does NOT define tokens or gallery chrome (.kit-*, .sw, .live-badge stay in the kit).
   ============================================================================ */

/* ===== Buttons (from V18 / app.css) ===== */
.btn { font-family:var(--font-sans); font-size:13px; font-weight:600; padding:8px 16px; border-radius:8px; border:1px solid transparent; cursor:pointer; }
.btn-primary { background:var(--green); color:var(--text-on-accent); }
.btn-primary:hover { filter:brightness(1.05); }
.btn-secondary { background:var(--surface); color:var(--grey-700); border-color:var(--line); }
.btn-secondary:hover { border-color:var(--grey-300); }
.btn-ghost { background:transparent; color:var(--blue); border-color:transparent; }
.btn-danger { background:var(--surface); color:var(--red); border-color:rgba(220,64,64,.4); }

/* ===== Working-set chip (harvested from UX-004 bookmark bar) ===== */
.bm-chip { display:inline-flex; align-items:center; gap:7px; background:var(--surface); border:1px solid var(--line);
  border-left:3px solid var(--c,var(--grey-300)); border-radius:8px; padding:5px 9px; font-size:12px; white-space:nowrap; }
.bm-ico { color:var(--c,var(--grey-500)); width:14px; text-align:center; }
.bm-label { font-weight:600; }
.bm-sub { font-size:10px; color:var(--grey-500); font-family:var(--font-mono); margin-left:2px; }

/* ===== Badges & status pills (echo app.css) ===== */
.badge { display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:12px; font-size:11px; font-weight:600; }
.badge-dot { width:6px; height:6px; border-radius:50%; background:currentColor; }
.badge.active { background:rgba(31,171,106,.12); color:var(--green); }
.badge.attention { background:rgba(240,168,40,.12); color:var(--yellow); }
.badge.blocked { background:rgba(220,64,64,.12); color:var(--red); }
.badge.construction { background:rgba(249,115,22,.12); color:var(--orange); }
.badge.ops { background:rgba(124,58,237,.12); color:var(--purple); }
.badge.pending { background:var(--grey-100); color:var(--grey-500); }
.badge.showcase { background:rgba(20,184,166,.12); color:var(--teal); }
.tws-pill { font-size:11px; font-weight:600; padding:3px 8px; border-radius:99px; }
.tws-pill-sg0 { background:var(--tag-violet-bg); color:var(--tag-violet-fg); } .tws-pill-sg1 { background:var(--tag-blue-bg); color:var(--tag-blue-fg); }
.tws-pill-sg2 { background:var(--tag-green-bg); color:var(--tag-green-fg); } .tws-pill-sg3 { background:var(--tag-amber-bg); color:var(--tag-amber-fg); }
.conf { font-size:10px; font-weight:700; padding:3px 9px; border-radius:6px; letter-spacing:.04em; border:1px solid; cursor:pointer; background:var(--surface); font-family:var(--font-sans); }
.conf.high { color:var(--tag-green-fg); border-color:var(--green); } .conf.med { color:var(--tag-amber-fg); border-color:var(--yellow); }
.conf.low { color:var(--tag-red-fg); border-color:var(--red); } .conf.review { color:var(--purple); border-color:var(--purple); }
.conf.on { color:var(--text-on-accent); } .conf.high.on { background:var(--green); } .conf.med.on { background:var(--yellow); }
.conf.low.on { background:var(--red); } .conf.review.on { background:var(--purple); }

/* ===== Form controls (UX-008 — driven by VAR_DIRECTORY metadata) ===== */
.fld { max-width:360px; margin-bottom:16px; }
.fld-name { font-weight:600; font-size:13px; }
.fld-meta { font-family:var(--font-mono); font-size:10px; color:var(--grey-500); margin:2px 0 6px; }
.fld-input { width:100%; font-family:var(--font-sans); font-size:13px; padding:8px 10px; border:1px solid var(--line); border-radius:8px; }
.fld-input:focus { outline:none; border-color:var(--blue); }
.fld-input.bad { border-color:var(--red); background:rgba(220,64,64,.04); }
.fld-num { position:relative; }
.fld-num .unit { position:absolute; right:10px; top:50%; transform:translateY(-50%); font-family:var(--font-mono); font-size:11px; color:var(--grey-500); }
.fld-err { color:var(--red); font-size:11px; margin-top:5px; display:none; }
.fld-err.show { display:block; }
.seg { display:inline-flex; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.seg button { border:none; background:var(--surface); padding:7px 14px; font-size:12px; font-family:var(--font-sans); cursor:pointer; color:var(--grey-700); border-right:1px solid var(--line); }
.seg button:last-child { border-right:none; }
.seg button.on { background:var(--navy); color:var(--text-on-accent); }
select.fld-input { appearance:auto; }
.fld-store { font-family:var(--font-mono); font-size:10.5px; color:var(--grey-500); margin-top:8px; line-height:1.5; }
.fld-store b { color:var(--grey-700); font-weight:600; }
.fld-store code { background:var(--grey-100); color:var(--text-strong); padding:1px 6px; border-radius:5px; }
.fld-store .cite { color:var(--grey-300); }
.fld-num .cur { position:absolute; left:10px; top:50%; transform:translateY(-50%); font-family:var(--font-mono); font-size:13px; color:var(--grey-700); }
.fld-num.has-cur .fld-input { padding-left:22px; padding-right:74px; }
input.fld-input[type=date] { font-family:var(--font-sans); }

/* ===== Validation DSL gallery (UX-008 · VALIDATION_RULE AC + TRIGGER_THRESHOLD 14/15) ===== */
.vcard { border:1px solid var(--line); border-radius:8px; padding:11px 12px; background:var(--surface); margin-bottom:10px; }
.vcard-top { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.vcard-name { font-weight:600; font-size:12.5px; }
.vcard-rule { font-family:var(--font-mono); font-size:10.5px; color:var(--text-strong); background:var(--grey-100); padding:1px 7px; border-radius:5px; }
.vcard-rule.soft { color:var(--tag-amber-fg); background:rgba(240,168,40,.14); }
.vcard-var { font-family:var(--font-mono); font-size:9.5px; color:var(--grey-300); margin-left:auto; }
.row2 { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.vstat { font-size:11px; font-weight:600; display:inline-flex; align-items:center; gap:6px; }
.vstat::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; flex:0 0 auto; }
.vstat.ok { color:var(--green); } .vstat.warn { color:var(--yellow); } .vstat.block { color:var(--red); }
.fld-input.warn { border-color:var(--yellow); background:rgba(240,168,40,.06); }
.tier-key { display:flex; gap:16px; flex-wrap:wrap; font-size:11.5px; color:var(--grey-700); margin-bottom:14px; align-items:center; }
.tier-key b { font-family:var(--font-mono); font-size:10px; padding:2px 7px; border-radius:5px; margin-right:6px; }
.tier-key .hard { color:var(--red); background:rgba(220,64,64,.10); }
.tier-key .soft { color:var(--tag-amber-fg); background:rgba(240,168,40,.14); }

/* ===== Accessibility + interaction states ===== */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
:focus-visible { outline:2px solid var(--blue); outline-offset:2px; border-radius:4px; }
.btn:active { transform:translateY(1px); }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.btn:disabled:hover { filter:none; border-color:var(--line); }
.seg button:active, .conf:active { transform:translateY(1px); }
.fld-input[aria-invalid="true"] { border-color:var(--red); background:rgba(220,64,64,.04); }

/* ===== Comparison matrix (Report layer · projects = rows/Y, variables = cols/X) ===== */
.axis-note { font-size:11.5px; color:var(--grey-700); margin:0 0 12px; line-height:1.5; }
.axis-note b { font-family:var(--font-mono); font-size:10px; background:var(--grey-100); padding:1px 6px; border-radius:5px; }
.matrix-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:8px; max-width:100%; }
table.matrix { border-collapse:separate; border-spacing:0; width:100%; font-size:11.5px; }
.matrix th, .matrix td { padding:7px 11px; text-align:left; border-bottom:1px solid var(--line); white-space:nowrap; }
.matrix thead th { background:var(--grey-50); font-family:var(--font-mono); font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--grey-500); font-weight:600; position:sticky; top:0; z-index:1; box-shadow:inset 0 -1px 0 var(--line); }
/* sticky first column gets a soft right-edge shadow (token-derived) so it reads as pinned on scroll */
.matrix tbody th { font-weight:600; background:var(--surface); position:sticky; left:0; z-index:1; border-right:1px solid var(--line); box-shadow:2px 0 4px -3px color-mix(in srgb, var(--navy) 35%, transparent); }
.matrix thead th:first-child { position:sticky; left:0; z-index:2; }
.matrix tbody tr:last-child th, .matrix tbody tr:last-child td { border-bottom:none; }
.matrix tbody tr:hover th, .matrix tbody tr:hover td { background:var(--accent-tint); }
.matrix tbody tr { transition:background .12s ease; }

/* Report-layer "warning / in-progress" text: a readable gold derived from --yellow (retires the
   hardcoded B8860B literal that the legacy report KPIs and the permit cellStyle carried). */
:root { --report-warn: color-mix(in srgb, var(--yellow) 58%, var(--grey-900)); }
/* ── Matrix Builder severity cells (status-colored per matrix_status.classifyCell) ──
   Tint + text both read tokens.css; warning text is the derived --report-warn gold for contrast. */
.matrix td.mx-c { transition:background .12s ease; }
.matrix td.mx-val { color:var(--grey-700); }
.matrix .mx-lbl { font-weight:600; }
.matrix .mx-dot { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:7px; vertical-align:middle; background:var(--grey-300); }
.matrix td.sev-success { background:color-mix(in srgb, var(--green) 11%, transparent); color:color-mix(in srgb, var(--green) 78%, var(--grey-900)); }
.matrix td.sev-info    { background:color-mix(in srgb, var(--accent) 12%, transparent); color:var(--accent-deep); }
.matrix td.sev-warning { background:color-mix(in srgb, var(--yellow) 16%, transparent); color:var(--report-warn); }
.matrix td.sev-danger  { background:color-mix(in srgb, var(--red) 11%, transparent); color:var(--red); }
.matrix td.sev-muted   { background:color-mix(in srgb, var(--grey-300) 16%, transparent); color:var(--grey-500); }
.matrix td.sev-unknown { background:repeating-linear-gradient(135deg, transparent, transparent 5px, color-mix(in srgb, var(--grey-300) 14%, transparent) 5px, color-mix(in srgb, var(--grey-300) 14%, transparent) 10px); color:var(--grey-400); font-style:italic; }
.sev-success .mx-dot { background:var(--green); }
.sev-info    .mx-dot { background:var(--accent); }
.sev-warning .mx-dot { background:var(--yellow); }
.sev-danger  .mx-dot { background:var(--red); }
.sev-muted   .mx-dot { background:var(--grey-400); }
.sev-unknown .mx-dot { background:transparent; border:1px dashed var(--grey-400); width:6px; height:6px; }

/* ── Per-row standing column ── */
.matrix th.mx-standcol { text-align:left; }
.matrix td.mx-standing { font-family:var(--font-mono); color:var(--grey-500); border-left:1px solid var(--line); }
.matrix td.mx-standing .mx-cov { font-weight:600; color:var(--grey-700); }
.matrix td.mx-standing .mx-gap { font-size:9.5px; color:var(--grey-400); }

/* ── Footer legend + honest-empty ── */
.mx-legend { display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:10px; font-size:10.5px; color:var(--grey-600); }
.mx-leg { display:inline-flex; align-items:center; }
.mx-leg .mx-dot { margin-right:6px; }
.mx-empty { padding:18px 16px; font-family:var(--font-mono); font-size:11.5px; color:var(--gap-text); background:var(--gap-bg); border:1px solid var(--gap-border); border-radius:8px; }
.mcell { display:inline-flex; align-items:center; gap:6px; }
.mcell .ico { flex:0 0 auto; font-size:11px; }
.mcell.issued { color:var(--green); }
.mcell.progress { color:var(--tag-amber-fg); }
.mcell.notfiled { color:var(--grey-500); }
.mcell.na { color:var(--grey-300); }
.mcell .reason { color:var(--grey-300); font-family:var(--font-mono); font-size:10px; }
/* matrix flip toggle (top-left toolbar) */
.matrix-toolbar { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.mx-flip { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-sans); font-size:11.5px; font-weight:600; color:var(--grey-700); background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:5px 10px; cursor:pointer; }
.mx-flip:hover { border-color:var(--grey-300); }
.mx-flip[aria-pressed="true"] { background:var(--navy); color:var(--text-on-accent); border-color:var(--text-strong); }
.mx-flip svg { display:block; }
.mx-orient { font-family:var(--font-mono); font-size:10px; color:var(--grey-500); }

/* ===== Task-status chip (UX-010 · v5StatusChip — task-table vocabulary) ===== */
.tchip { display:inline-block; font-size:9.5px; font-weight:700; padding:2px 7px; border-radius:3px; letter-spacing:.02em; }
.tchip.blocked { background:rgba(249,115,22,.12); color:var(--orange); }
.tchip.active { background:rgba(240,168,40,.13); color:var(--tag-amber-fg); }
.tchip.todo { background:var(--grey-100); color:var(--grey-500); }
.tchip.complete { background:rgba(31,171,106,.12); color:var(--green); }

/* ===== SG stepper (UX-009 · per-stage %) ===== */
.sg-stepper { border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; background:var(--surface); }
.sg-stepper-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.sg-stepper-top h4 { margin:0; font-size:13px; font-weight:600; }
.sg-stepper-top .overall { font-size:12px; color:var(--grey-500); }
.sg-stepper-track { display:flex; gap:10px; }
.sg-step { flex:1; }
.sg-step-bar { height:8px; background:var(--grey-100); border-radius:4px; position:relative; overflow:hidden; }
.sg-step-fill { position:absolute; left:0; top:0; bottom:0; border-radius:4px; width:0; }
.sg-step.done .sg-step-fill { background:var(--green); }
.sg-step.active .sg-step-fill { background:var(--yellow); }
.sg-step.future .sg-step-fill { background:var(--grey-300); }
.sg-step-label { display:flex; justify-content:space-between; margin-top:6px; font-size:11px; color:var(--grey-700); }
.sg-step-label .sg-name { font-weight:600; }
.sg-step-label .sg-pct { color:var(--grey-500); }
.sg-step.active .sg-step-label .sg-pct { color:var(--tag-amber-fg); font-weight:600; }

/* ===== Metric widget (UX-009 · domain PIT values) ===== */
.metric-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:760px) { .metric-grid { grid-template-columns:1fr; } }
.metric-widget { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; }
.metric-widget-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.metric-widget-top h4 { margin:0; font-size:13px; font-weight:600; display:flex; align-items:center; gap:7px; }
.domain-tag { font-size:10px; padding:3px 8px; border-radius:4px; text-transform:uppercase; letter-spacing:.3px; font-weight:600; font-family:var(--font-mono); }
.domain-tag.engineering { background:rgba(124,58,237,.10); color:var(--purple); }
.domain-tag.finance { background:rgba(249,115,22,.10); color:var(--orange); }
.domain-tag.commercial { background:rgba(240,168,40,.12); color:var(--tag-amber-fg); }
.domain-tag.community { background:rgba(20,184,166,.10); color:var(--teal); }
.domain-tag.site { background:rgba(31,171,106,.10); color:var(--green); }
.metric-row { display:flex; justify-content:space-between; align-items:center; padding:7px 0; border-bottom:1px solid var(--grey-100); }
.metric-row:last-child { border-bottom:none; }
.metric-row .label { font-size:12.5px; color:var(--grey-700); }
.metric-row .value { font-size:13px; font-weight:600; color:var(--grey-900); }
.metric-row .value.mono { font-family:var(--font-mono); font-size:12px; }
.value-trend { font-size:10px; margin-left:6px; padding:1px 6px; border-radius:8px; }
.value-trend.up { background:rgba(31,171,106,.12); color:var(--green); }
.value-trend.down { background:rgba(220,64,64,.12); color:var(--red); }
.value-trend.neutral { background:var(--grey-100); color:var(--grey-700); }
.metric-status { display:inline-flex; align-items:center; gap:6px; padding:2px 10px; border-radius:10px; font-size:11px; font-weight:600; }
.ms-active { background:rgba(31,171,106,.12); color:var(--green); }
.ms-pending { background:rgba(240,168,40,.12); color:var(--tag-amber-fg); }
.ms-future { background:var(--grey-100); color:var(--grey-700); }

/* ===== Field-edit modal shell (UX-008 host; from the live POC modal) ===== */
.modal-back { position:fixed; inset:0; background:rgba(15,27,61,.45); display:none; align-items:flex-start; justify-content:center; padding-top:6vh; z-index:50; }
.modal-back.open { display:flex; }
.modal { width:560px; max-width:94vw; background:var(--surface); border-radius:12px; overflow:hidden; box-shadow:var(--shadow); }
.modal-head { background:linear-gradient(135deg,var(--navy),var(--navy-2)); color:var(--text-on-accent); padding:14px 18px; display:flex; align-items:flex-start; justify-content:space-between; }
.modal-head .vk { font-family:var(--font-mono); font-size:13px; font-weight:600; }
.modal-head .sub { font-size:11px; color:var(--grey-300); margin-top:2px; }
.modal-head .x { background:transparent; border:none; color:var(--text-on-accent); font-size:18px; cursor:pointer; }
.modal-body { padding:18px; }
.modal-body .seclabel { font-family:var(--font-mono); font-size:10px; letter-spacing:.5px; color:var(--grey-500); text-transform:uppercase; margin:14px 0 6px; }
.modal-body .seclabel:first-child { margin-top:0; }
.modal-foot { padding:12px 18px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; gap:10px; }

/* ===== Coach-mark (UX-002 stub) ===== */
.coach { width:320px; background:var(--surface); border-radius:12px; box-shadow:var(--shadow); border:1px solid var(--line); overflow:hidden; }
.coach-body { padding:16px 18px; }
.coach-step { font-family:var(--font-mono); font-size:10px; color:var(--blue); letter-spacing:.5px; }
.coach-body h4 { margin:6px 0; font-size:14px; }
.coach-body p { margin:0; font-size:12.5px; color:var(--grey-700); line-height:1.5; }
.coach-foot { display:flex; align-items:center; gap:8px; padding:10px 18px; border-top:1px solid var(--line); }
.coach-dots { display:flex; gap:5px; margin-right:auto; }
.coach-dot { width:6px; height:6px; border-radius:50%; background:var(--grey-200); }
.coach-dot.on { background:var(--blue); }

/* ===== Attention item (UX-009) — severity: urgent · warn · info ===== */
.attn-item { display:flex; align-items:flex-start; gap:10px; padding:11px 14px; border-radius:8px; border-left:3px solid transparent; }
.attn-icon { font-size:15px; flex-shrink:0; margin-top:1px; }
.attn-body { flex:1; min-width:0; }
.attn-title { font-size:13px; font-weight:600; margin:0 0 2px; }
.attn-text { font-size:12px; color:var(--grey-700); margin:0; line-height:1.4; }
.attn-action { font-size:11.5px; font-weight:600; color:inherit; background:none; border:none; cursor:pointer; padding:0; margin-top:5px; text-decoration:underline; text-underline-offset:2px; }
.attn-item.urgent { background:rgba(220,64,64,.07); border-left-color:var(--red); color:var(--red); }
.attn-item.warn   { background:rgba(240,168,40,.08); border-left-color:var(--yellow); color:var(--yellow); }
.attn-item.info   { background:rgba(45,127,249,.07); border-left-color:var(--blue); color:var(--blue); }
.attn-item.urgent .attn-text,
.attn-item.warn   .attn-text,
.attn-item.info   .attn-text  { color:var(--grey-700); }

/* ===== Doc card / shelf (UX-006) — Cold layer deep-links ===== */
.doc-shelf { display:flex; flex-direction:column; gap:0; border-radius:var(--radius); border:1px solid var(--line); overflow:hidden; }
.doc-row { display:flex; align-items:center; gap:10px; padding:10px 14px; background:var(--surface); cursor:pointer; transition:background .12s; }
.doc-row:hover { background:var(--grey-50); }
.doc-row:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }
.doc-row + .doc-row { border-top:1px solid var(--line); }
.doc-icon { font-size:16px; flex-shrink:0; }
.doc-info { flex:1; min-width:0; }
.doc-name { font-size:13px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.doc-meta { font-size:11px; color:var(--grey-500); margin-top:1px; font-family:var(--font-mono); }
.doc-type-tag { font-family:var(--font-mono); font-size:9.5px; letter-spacing:.4px; padding:2px 7px; border-radius:6px; white-space:nowrap; }
.doc-type-tag.cold { background:rgba(20,184,166,.12); color:var(--teal); }
.doc-type-tag.hot  { background:rgba(249,115,22,.10);  color:var(--orange); }
.doc-type-tag.ppa  { background:rgba(45,127,249,.10);  color:var(--blue); }
.doc-arrow { font-size:13px; color:var(--grey-300); flex-shrink:0; }

/* ===== Activity / timeline row — shared primitive (audit log, comments, activity feed) ===== */
.act-list { display:flex; flex-direction:column; }
.act-row { display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--line); }
.act-row:last-child { border-bottom:none; }
.act-avatar { width:28px; height:28px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:600; color:var(--text-on-accent); background:var(--navy-2); }
.act-avatar.sys { background:var(--grey-200); color:var(--grey-700); font-size:13px; }
.act-col { flex:1; min-width:0; }
.act-meta { font-size:11.5px; color:var(--grey-700); margin:0 0 2px; }
.act-meta strong { color:var(--ink); }
.act-body { font-size:12.5px; color:var(--grey-700); margin:2px 0 0; line-height:1.4; }
.act-body code { font-family:var(--font-mono); font-size:11.5px; background:var(--grey-100); padding:1px 4px; border-radius:3px; }
.act-ts { font-family:var(--font-mono); font-size:10.5px; color:var(--grey-500); white-space:nowrap; margin-left:auto; padding-top:1px; }
.act-tag { display:inline-block; font-family:var(--font-mono); font-size:9.5px; padding:1px 6px; border-radius:4px; margin-top:4px; }
.act-tag.edit    { background:rgba(45,127,249,.10); color:var(--blue); }
.act-tag.approve { background:rgba(31,171,106,.12); color:var(--green); }
.act-tag.flag    { background:rgba(220,64,64,.08);  color:var(--red); }
.act-tag.system  { background:var(--grey-100); color:var(--grey-500); }

/* ===== Notification / toast (ephemeral feedback) =====
   REVIVED by shell/toast.js (UX Kit B6) - the one severity toast system. Stratum comes from
   the Foundation z ladder: a toast must clear everything interactive, the modal included. */
.toast-stack { position:fixed; bottom:24px; right:24px; display:flex; flex-direction:column; gap:8px; z-index:var(--z-toast); pointer-events:none; }
.toast { display:flex; align-items:flex-start; gap:10px; padding:12px 16px; border-radius:9px; background:var(--surface); box-shadow:0 4px 20px rgba(15,27,61,.18); border-left:4px solid transparent; min-width:280px; max-width:380px; pointer-events:all; opacity:0; transform:translateY(8px); transition:opacity .2s,transform .2s; }
.toast.show { opacity:1; transform:translateY(0); }
.toast-icon { font-size:14px; flex-shrink:0; margin-top:1px; }
.toast-body { flex:1; min-width:0; }
.toast-title { font-size:12.5px; font-weight:600; margin:0 0 1px; }
.toast-msg { font-size:11.5px; color:var(--grey-700); margin:0; }
.toast-x { background:none; border:none; color:var(--grey-500); font-size:16px; cursor:pointer; padding:0; line-height:1; flex-shrink:0; }
.toast-x:hover { color:var(--ink); }
.toast.success { border-left-color:var(--green); }
.toast.error   { border-left-color:var(--red); }
.toast.warn    { border-left-color:var(--yellow); }
.toast.info    { border-left-color:var(--blue); }
.toast.success .toast-title { color:var(--green); }
.toast.error   .toast-title { color:var(--red); }
.toast.warn    .toast-title { color:var(--yellow); }
.toast.info    .toast-title { color:var(--blue); }

/* ===== Gate checklist item (UX-009 · gate engine) ===== */
.gate-progress { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.gate-bar  { flex:1; height:6px; border-radius:3px; background:var(--grey-100); overflow:hidden; }
.gate-fill { height:100%; border-radius:3px; background:var(--green); transition:width .3s; }
.gate-pct  { font-family:var(--font-mono); font-size:11px; color:var(--grey-700); white-space:nowrap; }
.gate-list { display:flex; flex-direction:column; gap:1px; }
.gate-item { display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:7px; cursor:pointer; transition:background .12s; }
.gate-item:hover { background:var(--grey-50); }
.gate-item:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }
.gate-check { width:18px; height:18px; border-radius:5px; border:2px solid var(--grey-300); display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:11px; transition:border-color .15s,background .15s; }
.gate-item.done .gate-check { background:var(--green); border-color:var(--green); color:var(--text-on-accent); }
.gate-item.na   .gate-check { background:var(--grey-200); border-color:var(--grey-200); color:var(--grey-500); font-size:10px; }
.gate-label { flex:1; font-size:12.5px; line-height:1.3; }
.gate-item.done .gate-label { text-decoration:line-through; color:var(--grey-500); }
.gate-item.na   .gate-label { color:var(--grey-500); }
.gate-status { font-family:var(--font-mono); font-size:10px; letter-spacing:.3px; color:var(--grey-500); flex-shrink:0; }
.gate-item.done .gate-status { color:var(--green); }
.gate-item.na   .gate-status { color:var(--grey-400); }

/* (segmented-nav primitive removed 2026-07-09 - zero emitters anywhere in web/; U-DEAD-05) */

/* ===== Empty state — zero-items placeholder ===== */
.empty-state { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:36px 24px; text-align:center; }
.empty-icon  { font-size:30px; margin-bottom:10px; opacity:.55; }
.empty-title { font-size:13.5px; font-weight:600; color:var(--grey-700); margin:0 0 5px; }
.empty-body  { font-size:12px; color:var(--grey-500); margin:0 0 14px; max-width:260px; line-height:1.5; }

/* ===== Dropdown / select (UX-008 DATA_TYPE=DROPDOWN) ===== */
.fld-select-wrap  { position:relative; display:inline-block; }
.fld-select { appearance:none; -webkit-appearance:none; width:100%; padding:8px 32px 8px 10px; border:1px solid var(--grey-200); border-radius:7px; background:var(--surface); font-family:var(--font-sans); font-size:13px; color:var(--ink); cursor:pointer; transition:border-color .15s; }
.fld-select:focus { outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,127,249,.12); }
.fld-select:disabled { opacity:.5; cursor:not-allowed; background:var(--grey-50); }
.fld-select-caret { position:absolute; right:10px; top:50%; transform:translateY(-50%); pointer-events:none; font-size:9px; color:var(--grey-500); }
/* Custom listbox (structured/metadata options) */
.dd-wrap { position:relative; display:inline-block; }
.dd-trigger { display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid var(--grey-200); border-radius:7px; background:var(--surface); font-family:var(--font-sans); font-size:13px; cursor:pointer; width:100%; text-align:left; transition:border-color .15s; }
.dd-trigger:focus-visible { outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,127,249,.12); }
.dd-trigger .dd-val { flex:1; color:var(--ink); }
.dd-trigger .dd-caret { font-size:9px; color:var(--grey-500); transition:transform .15s; }
.dd-wrap.open .dd-trigger { border-color:var(--blue); }
.dd-wrap.open .dd-caret { transform:rotate(180deg); }
.dd-menu { position:absolute; top:calc(100% + 4px); left:0; right:0; background:var(--surface); border:1px solid var(--line); border-radius:8px; box-shadow:var(--shadow); z-index:20; overflow:hidden; }
.dd-opt { padding:9px 12px; font-size:13px; cursor:pointer; transition:background .1s; }
.dd-opt:hover { background:var(--grey-50); }
.dd-opt.on { background:rgba(45,127,249,.08); color:var(--blue); font-weight:500; }
.dd-opt:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }

/* ===== Inline field diff — old → new redline chip ===== */
.diff-row   { display:inline-flex; align-items:baseline; gap:6px; flex-wrap:wrap; font-family:var(--font-mono); font-size:12px; }
.diff-old   { text-decoration:line-through; color:var(--grey-500); }
.diff-new   { color:var(--green); font-weight:500; }
.diff-arrow { color:var(--grey-400); font-size:11px; }
.diff-delta { font-size:10.5px; padding:1px 6px; border-radius:4px; }
.diff-delta.up   { background:rgba(31,171,106,.12); color:var(--green); }
.diff-delta.down { background:rgba(220,64,64,.08);  color:var(--red); }
.diff-delta.flag { background:rgba(240,168,40,.10); color:var(--yellow); }

/* ===== Search / filter bar ===== */
.search-bar { display:flex; flex-direction:column; gap:8px; }
.search-input-wrap { position:relative; display:flex; align-items:center; }
.search-icon { position:absolute; left:10px; font-size:12px; color:var(--grey-500); pointer-events:none; }
.search-input { width:100%; padding:8px 10px 8px 32px; border:1px solid var(--grey-200); border-radius:7px; background:var(--surface); font-family:var(--font-sans); font-size:13px; color:var(--ink); transition:border-color .15s; }
.search-input::placeholder { color:var(--grey-500); }
.search-input:focus { outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,127,249,.12); }
.filter-chips { display:flex; flex-wrap:wrap; gap:6px; }
.filter-chip { display:inline-flex; align-items:center; gap:4px; padding:4px 10px; border-radius:99px; border:1px solid var(--grey-200); background:var(--surface); font-family:var(--font-mono); font-size:10.5px; color:var(--grey-700); cursor:pointer; transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); white-space:nowrap; }
.filter-chip:hover { border-color:var(--grey-300); background:var(--grey-50); }
.filter-chip.on { background:var(--navy); color:var(--text-on-accent); border-color:var(--text-strong); }
.filter-chip:focus-visible { outline:2px solid var(--blue); outline-offset:1px; }
.chip-count { font-size:9.5px; opacity:.75; }

/* ===== Breadcrumb / context rail ===== */
.breadcrumb { display:flex; align-items:center; flex-wrap:wrap; gap:2px; }
.bc-item { display:inline-flex; align-items:center; }
.bc-item a { font-size:12px; color:var(--blue); text-decoration:none; padding:2px 4px; border-radius:4px; }
.bc-item a:hover { text-decoration:underline; background:rgba(45,127,249,.06); }
.bc-item a:focus-visible { outline:2px solid var(--blue); outline-offset:1px; }
.bc-item.current span { font-size:12px; font-weight:600; color:var(--ink); padding:2px 4px; font-family:var(--font-mono); }
.bc-sep { font-size:11px; color:var(--grey-300); padding:0 1px; user-select:none; }
.bc-layer { display:inline-flex; align-items:center; gap:4px; }
.bc-layer-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }

/* ===== Approval / sign-off row (gate memo RACI) ===== */
.sign-list { display:flex; flex-direction:column; gap:1px; }
.sign-row { display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:7px; transition:background .12s; }
.sign-row:hover { background:var(--grey-50); }
.sign-role { font-family:var(--font-mono); font-size:9.5px; letter-spacing:.3px; padding:2px 7px; border-radius:5px; background:var(--grey-100); color:var(--grey-700); white-space:nowrap; flex-shrink:0; }
.sign-name { flex:1; font-size:12.5px; font-weight:500; }
.sign-status { font-family:var(--font-mono); font-size:10px; letter-spacing:.3px; padding:2px 8px; border-radius:5px; white-space:nowrap; flex-shrink:0; }
.sign-status.pending   { background:var(--grey-100); color:var(--grey-700); }
.sign-status.signed    { background:rgba(31,171,106,.12); color:var(--green); }
.sign-status.declined  { background:rgba(220,64,64,.08); color:var(--red); }
.sign-status.delegated { background:rgba(45,127,249,.10); color:var(--blue); }
.sign-ts { font-family:var(--font-mono); font-size:10.5px; color:var(--grey-500); white-space:nowrap; flex-shrink:0; }
.sign-action { font-size:11.5px; font-weight:600; color:var(--blue); background:none; border:none; cursor:pointer; padding:0; text-decoration:underline; text-underline-offset:2px; white-space:nowrap; flex-shrink:0; }
.sign-action:focus-visible { outline:2px solid var(--blue); outline-offset:2px; border-radius:2px; }

/* ===== Persona / role switcher ===== */
.persona-bar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.persona-label { font-family:var(--font-mono); font-size:10px; color:var(--grey-500); letter-spacing:.4px; white-space:nowrap; }
.persona-chip { display:inline-flex; align-items:center; gap:5px; padding:5px 12px; border-radius:99px; border:1px solid var(--grey-200); background:var(--surface); font-size:12px; font-weight:500; color:var(--grey-700); cursor:pointer; transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); white-space:nowrap; }
.persona-chip:hover { border-color:var(--grey-300); background:var(--grey-50); }
.persona-chip.on { background:var(--navy); color:var(--text-on-accent); border-color:var(--text-strong); }
.persona-chip:focus-visible { outline:2px solid var(--blue); outline-offset:1px; }
.persona-chip .pcap { font-family:var(--font-mono); font-size:9px; opacity:.75; margin-left:2px; }
.write-scope { display:flex; flex-direction:column; gap:4px; margin-top:12px; }
.write-row { display:flex; align-items:center; gap:8px; font-size:12px; }
.write-row .field-key { font-family:var(--font-mono); font-size:11px; color:var(--grey-700); flex:1; }
.write-badge { font-family:var(--font-mono); font-size:9.5px; padding:1px 7px; border-radius:4px; white-space:nowrap; }
.write-badge.rw  { background:rgba(31,171,106,.12); color:var(--green); }
.write-badge.ro  { background:var(--grey-100); color:var(--grey-500); }
.write-badge.no  { background:rgba(220,64,64,.07); color:var(--red); }

/* ===== Confidence history — dot-trail (AUDIT_LOG derived) ===== */
.conf-trail { display:flex; align-items:center; gap:0; }
.conf-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; position:relative; }
.conf-dot + .conf-dot { margin-left:-2px; }
.conf-dot.high   { background:var(--green); }
.conf-dot.med    { background:var(--yellow); }
.conf-dot.low    { background:var(--red); }
.conf-dot.review { background:var(--purple); }
.conf-dot.current { width:13px; height:13px; box-shadow:0 0 0 3px rgba(0,0,0,.10); z-index:1; }
.conf-trail-wrap { display:flex; flex-direction:column; gap:6px; }
.conf-trail-row { display:flex; align-items:center; gap:10px; }
.conf-trail-key { font-family:var(--font-mono); font-size:11px; color:var(--grey-700); width:160px; flex-shrink:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.conf-trail-ts  { font-family:var(--font-mono); font-size:10px; color:var(--grey-500); white-space:nowrap; }

/* ===== Sidebar / slide-out shell ===== */
.sidebar-back { position:fixed; inset:0; background:rgba(15,27,61,.35); z-index:39; opacity:0; pointer-events:none; transition:opacity .2s; }
.sidebar-back.open { opacity:1; pointer-events:all; }
.sidebar { position:fixed; top:0; right:0; bottom:0; width:380px; background:var(--surface); box-shadow:-4px 0 28px rgba(15,27,61,.14); z-index:40; display:flex; flex-direction:column; transform:translateX(100%); transition:transform .22s cubic-bezier(.4,0,.2,1); }
.sidebar.open { transform:translateX(0); }
.sidebar-head { display:flex; align-items:flex-start; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--line); background:linear-gradient(135deg,var(--navy),var(--navy-2)); color:var(--text-on-accent); flex-shrink:0; }
.sidebar-head .sb-title { font-size:14px; font-weight:600; margin:0 0 2px; }
.sidebar-head .sb-sub   { font-size:11.5px; color:var(--grey-300); }
.sidebar-head .sb-x { background:transparent; border:none; color:var(--text-on-accent); font-size:18px; cursor:pointer; padding:0; line-height:1; flex-shrink:0; }
.sidebar-body { flex:1; overflow-y:auto; padding:16px 18px; }
.sidebar-foot { padding:12px 18px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; gap:10px; flex-shrink:0; }
/* Left-anchored variant (Cold panel) */
.sidebar.left { right:auto; left:var(--rail-w); transform:translateX(calc(-100% - var(--rail-w))); }
.sidebar.left.open { transform:translateX(0); }

/* ===== KPI / stat tile ===== */
.kpi-grid  { display:flex; flex-wrap:wrap; gap:12px; }
.kpi-tile  { display:flex; flex-direction:column; gap:3px; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); min-width:140px; }
.kpi-label { font-family:var(--font-mono); font-size:9.5px; letter-spacing:.4px; color:var(--grey-500); text-transform:uppercase; }
.kpi-value { font-size:24px; font-weight:700; color:var(--ink); line-height:1; letter-spacing:-.5px; }
.kpi-unit  { font-size:11px; color:var(--grey-500); }
.kpi-delta { display:inline-flex; align-items:center; gap:3px; font-family:var(--font-mono); font-size:11px; margin-top:2px; }
.kpi-delta.up   { color:var(--green); }
.kpi-delta.down { color:var(--red); }
.kpi-delta.flat { color:var(--grey-500); }
.kpi-sub   { font-size:11px; color:var(--grey-500); margin-top:2px; }

/* ===== Progress ring — radial % indicator ===== */
.ring-grid { display:flex; flex-wrap:wrap; gap:20px; align-items:flex-start; }
.progress-ring-wrap { display:inline-flex; flex-direction:column; align-items:center; gap:6px; }
.progress-ring { transform:rotate(-90deg); display:block; }
.ring-track { fill:none; stroke:var(--grey-100); }
.ring-fill  { fill:none; stroke-linecap:round; transition:stroke-dashoffset .5s ease; }
.ring-fill.green  { stroke:var(--green); }
.ring-fill.yellow { stroke:var(--yellow); }
.ring-fill.red    { stroke:var(--red); }
.ring-fill.blue   { stroke:var(--blue); }
.ring-wrap-rel { position:relative; display:inline-block; }
.ring-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.ring-pct  { font-family:var(--font-mono); font-size:13px; font-weight:600; color:var(--ink); line-height:1; }
.ring-sub  { font-family:var(--font-mono); font-size:9px; color:var(--grey-500); }
.ring-label { font-size:11px; color:var(--grey-700); text-align:center; max-width:70px; line-height:1.3; }

/* ===== Tag / label editor ===== */
.tag-editor { display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:6px 8px; border:1px solid var(--grey-200); border-radius:7px; background:var(--surface); cursor:text; min-height:38px; transition:border-color .15s; }
.tag-editor:focus-within { border-color:var(--blue); box-shadow:0 0 0 3px rgba(45,127,249,.12); }
.tag-chip { display:inline-flex; align-items:center; gap:4px; padding:2px 4px 2px 8px; border-radius:99px; background:var(--grey-100); color:var(--ink); font-size:12px; white-space:nowrap; max-width:180px; }
.tag-chip span { overflow:hidden; text-overflow:ellipsis; }
.tag-chip .tag-x { background:none; border:none; color:var(--grey-500); font-size:12px; cursor:pointer; padding:0 2px; line-height:1; display:flex; align-items:center; }
.tag-chip .tag-x:hover { color:var(--ink); }
.tag-chip.cold-tag { background:rgba(20,184,166,.12); color:var(--teal); }
.tag-chip.hot-tag  { background:rgba(249,115,22,.10);  color:var(--orange); }
.tag-chip.new-tag  { background:rgba(45,127,249,.10);  color:var(--blue); }
.tag-input-field { border:none; outline:none; font-family:var(--font-sans); font-size:12.5px; color:var(--ink); background:transparent; min-width:80px; flex:1; padding:2px 0; }
.tag-input-field::placeholder { color:var(--grey-500); }
.tag-hint { font-size:11px; color:var(--grey-500); margin:4px 0 0; }

/* ===== §28 Inline annotation / comment bubble ===== */
.annotation-list { display:flex; flex-direction:column; }
.annotation-item { display:flex; gap:10px; padding:12px 0; border-bottom:1px solid var(--line); }
.annotation-item:last-child { border-bottom:none; }
.annotation-avatar { width:30px; height:30px; border-radius:50%; background:var(--blue); color:var(--text-on-accent); font-size:11px; font-weight:600; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-family:var(--font-sans); }
.annotation-item:nth-child(2n) .annotation-avatar { background:var(--teal); }
.annotation-item:nth-child(3n) .annotation-avatar { background:var(--purple); }
.annotation-body { flex:1; min-width:0; }
.annotation-meta { display:flex; align-items:baseline; gap:8px; margin-bottom:3px; }
.annotation-author { font-size:12.5px; font-weight:600; color:var(--ink); }
.annotation-ts { font-size:11px; color:var(--dim); font-family:var(--font-mono); }
.annotation-body p { margin:0 0 4px; font-size:13px; color:var(--ink); line-height:1.5; }
.annotation-reply { background:none; border:none; padding:0; font-size:11.5px; color:var(--blue); cursor:pointer; font-family:var(--font-sans); }
.annotation-reply:hover { text-decoration:underline; }
.mention { color:var(--blue); font-weight:500; }
.annotation-add { margin-top:6px; }

/* ===== §29 File upload drop zone ===== */
.dropzone { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:28px 20px; border:2px dashed var(--line); border-radius:var(--radius); cursor:pointer; text-align:center; transition:border-color .15s, background .15s; user-select:none; max-width:420px; }
.dropzone:hover { border-color:var(--blue); }
.dropzone.drag-over { border:2px solid var(--blue); background:rgba(45,127,249,.05); }
.dropzone-icon { color:var(--dim); }
.dropzone-hint { font-size:13.5px; color:var(--dim); }
.drop-file-list { display:flex; flex-direction:column; gap:4px; margin-top:8px; max-width:420px; }
.drop-file-item { display:flex; align-items:center; gap:10px; padding:6px 10px; background:var(--grey-50); border-radius:6px; font-size:12.5px; color:var(--ink); }
.drop-file-name { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.drop-file-size { font-family:var(--font-mono); font-size:11px; color:var(--dim); flex-shrink:0; }
.drop-file-remove { background:none; border:none; color:var(--dim); font-size:14px; line-height:1; cursor:pointer; padding:0 2px; flex-shrink:0; }
.drop-file-remove:hover { color:var(--red); }

/* ===== §30 Gantt / schedule bar ===== */
.sched-table { display:flex; flex-direction:column; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.sched-row { display:grid; grid-template-columns:150px 1fr; border-bottom:1px solid var(--line); }
.sched-row:last-child { border-bottom:none; }
.sched-header .sched-label-col,
.sched-header .sched-track { font-size:10.5px; font-weight:600; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; background:var(--grey-50); padding:5px 10px; }
.sched-label-col { padding:10px; font-size:12.5px; color:var(--ink); display:flex; align-items:center; border-right:1px solid var(--line); }
.sched-track { position:relative; min-height:36px; }
.sched-bar { position:absolute; top:50%; transform:translateY(-50%); height:14px; border-radius:4px; background:var(--grey-200); }
.sched-bar.complete { background:var(--green); }
.sched-bar.active   { background:var(--blue); }
.sched-bar.at-risk  { background:var(--yellow); }
.sched-bar.delayed  { background:var(--red); }
.sched-milestone { position:absolute; top:50%; transform:translate(-50%,-50%) rotate(45deg); width:10px; height:10px; background:var(--teal); border-radius:2px; }
.sched-dates { font-family:var(--font-mono); font-size:10.5px; color:var(--dim); }

/* ===== AI-authored indicator — token: --layer-ai ===== */
.ai-authored { background:rgba(139,92,246,.07); border-left:2px solid var(--layer-ai); padding:8px 12px; border-radius:0 6px 6px 0; }
.ai-flag { display:inline-flex; align-items:center; gap:3px; font-size:10px; font-weight:700; color:var(--layer-ai); font-family:var(--font-sans); letter-spacing:.03em; white-space:nowrap; }
.ai-flag::before { content:"✦"; font-size:8px; }

/* ===== §32 Deadline / expiry counter chip ===== */
.deadline-list { display:flex; flex-direction:column; gap:6px; }
.deadline-chip { display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px; border:1px solid var(--line); background:var(--bg); font-size:12.5px; }
.deadline-chip.safe     { border-color:rgba(31,171,106,.35);  background:rgba(31,171,106,.05); }
.deadline-chip.warn     { border-color:rgba(249,115,22,.4);   background:rgba(249,115,22,.06); }
.deadline-chip.critical { border-color:rgba(220,64,64,.4);    background:rgba(220,64,64,.05); }
.deadline-chip.expired  { opacity:.5; }
.deadline-label { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink); }
.deadline-chip.expired .deadline-label { text-decoration:line-through; }
.deadline-days { font-family:var(--font-mono); font-weight:700; font-size:11.5px; padding:2px 7px; border-radius:4px; flex-shrink:0; white-space:nowrap; color:var(--ink); }
.deadline-chip.safe     .deadline-days { background:rgba(31,171,106,.15); }
.deadline-chip.warn     .deadline-days { background:rgba(249,115,22,.16); }
.deadline-chip.critical .deadline-days { background:rgba(220,64,64,.14); }
.deadline-chip.expired  .deadline-days { background:var(--grey-100); color:var(--dim); }

/* ===== §33 Alert / trigger card ===== */
.alert-feed { display:flex; flex-direction:column; gap:8px; }
.alert-card { border:1px solid var(--line); border-left-width:3px; border-radius:var(--radius); padding:12px 14px; background:var(--bg); transition:opacity .2s; }
.alert-card.critical { border-left-color:var(--red); }
.alert-card.warn     { border-left-color:var(--yellow); }
.alert-card.info     { border-left-color:var(--blue); }
.alert-card.dismissed { opacity:.35; pointer-events:none; }
.alert-badge { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:700; padding:1px 7px; border-radius:99px; margin-bottom:5px; font-family:var(--font-sans); }
.alert-card.critical .alert-badge { color:var(--red);    background:rgba(220,64,64,.1); }
.alert-card.warn     .alert-badge { color:var(--orange); background:rgba(249,115,22,.1); }
.alert-card.info     .alert-badge { color:var(--blue);   background:rgba(45,127,249,.1); }
.alert-title { font-size:13px; font-weight:600; color:var(--ink); margin:0 0 3px; }
.alert-body  { font-size:12.5px; color:var(--dim); margin:0 0 8px; line-height:1.45; }
.alert-draft-toggle { background:none; border:none; padding:0; font-size:11.5px; color:var(--blue); cursor:pointer; font-family:var(--font-sans); display:block; margin-bottom:6px; }
.alert-draft-toggle:hover { text-decoration:underline; }
.alert-draft { display:none; background:rgba(45,127,249,.05); border:1px solid rgba(45,127,249,.18); border-radius:6px; padding:8px 10px; font-size:12px; color:var(--ink); margin-bottom:8px; line-height:1.5; }
.alert-draft.open { display:block; }
.alert-actions { display:flex; gap:8px; flex-wrap:wrap; }

/* ===== §34 Score band bar ===== */
.score-bar-wrap { display:flex; flex-direction:column; gap:5px; max-width:380px; }
.score-bar-header { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.score-bar-name { font-size:12.5px; color:var(--dim); }
.score-bar-val { font-size:20px; font-weight:700; color:var(--ink); font-family:var(--font-mono); }
.score-bar-tag { font-size:11px; color:var(--dim); }
.score-bar-outer { position:relative; }
.score-bar-track { display:flex; height:10px; border-radius:6px; overflow:hidden; }
.score-band { flex-shrink:0; }
.score-band-poor  { background:rgba(220,64,64,.5); }
.score-band-fair  { background:rgba(249,115,22,.5); }
.score-band-good  { background:rgba(31,171,106,.5); }
.score-band-excel { background:rgba(20,184,166,.5); }
.score-bar-marker { position:absolute; top:50%; transform:translate(-50%,-50%) rotate(45deg); width:9px; height:9px; background:var(--ink); border-radius:2px; box-shadow:0 0 0 2px var(--bg); }
.score-band-labels { display:flex; font-size:10px; color:var(--dim); font-family:var(--font-mono); margin-top:2px; }
.score-band-labels span { flex:1; text-align:center; }

/* ===== §35 Capture / quick-add box ===== */
.cap-box { max-width:480px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; }
.cap-textarea-wrap { padding:12px; }
.cap-textarea { width:100%; min-height:72px; font-family:var(--font-sans); font-size:13px; padding:10px; border:1px solid var(--line); border-radius:8px; resize:vertical; }
.cap-textarea:focus { outline:none; border-color:var(--blue); }
.cap-drop-row { display:flex; align-items:center; gap:8px; padding:8px 12px; background:var(--grey-50); border-top:1px solid var(--line); font-size:12px; color:var(--dim); }
.cap-ai-bar { display:flex; align-items:center; gap:8px; padding:8px 12px; border-top:1px solid var(--line); font-size:11.5px; color:var(--layer-ai); background:rgba(139,92,246,.05); }
.cap-draft-list { display:flex; flex-direction:column; }
.cap-draft-chip { display:flex; align-items:center; gap:8px; padding:9px 12px; border-top:1px solid var(--line); transition:background .12s; }
.cap-draft-chip:hover { background:var(--grey-50); }
.cap-dchip-key { font-family:var(--font-mono); font-size:10px; color:var(--dim); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cap-dchip-val { font-size:12.5px; font-weight:600; color:var(--ink); white-space:nowrap; flex-shrink:0; }
.cap-dchip-conf { font-size:9.5px; font-weight:700; padding:1px 6px; border-radius:99px; font-family:var(--font-sans); letter-spacing:.03em; flex-shrink:0; white-space:nowrap; }
.cap-dchip-conf.high { background:rgba(31,171,106,.15); color:var(--green); }
.cap-dchip-conf.med  { background:rgba(240,168,40,.15); color:var(--tag-amber-fg); }
.cap-dchip-conf.low  { background:rgba(220,64,64,.12); color:var(--red); }
.cap-dchip-btns { display:flex; gap:4px; flex-shrink:0; }
.cap-dchip-accept, .cap-dchip-reject { border:1px solid; border-radius:5px; font-size:11px; font-weight:700; padding:2px 8px; cursor:pointer; font-family:var(--font-sans); transition:background .1s, color .1s; }
.cap-dchip-accept { color:var(--green); border-color:rgba(31,171,106,.4); background:var(--surface); }
.cap-dchip-accept:hover { background:var(--green); color:var(--text-on-accent); }
.cap-dchip-reject { color:var(--dim); border-color:var(--line); background:var(--surface); }
.cap-dchip-reject:hover { color:var(--red); border-color:rgba(220,64,64,.4); }
.cap-draft-chip.accepted .cap-dchip-val { color:var(--green); }
.cap-draft-chip.accepted .cap-dchip-btns { opacity:.35; pointer-events:none; }
.cap-draft-chip.rejected { opacity:.4; }
.cap-draft-chip.rejected .cap-dchip-btns { pointer-events:none; }
.cap-draft-footer { display:flex; gap:6px; padding:10px 12px; border-top:1px solid var(--line); background:var(--grey-50); justify-content:flex-end; }

/* ===== §36 Two-pane before/after diff ===== */
.diff-pane { max-width:540px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; }
.diff-pane-head { padding:10px 14px; border-bottom:1px solid var(--line); background:var(--grey-50); display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.diff-pane-key { font-family:var(--font-mono); font-size:10.5px; color:var(--dim); }
.diff-pane-who { font-size:11.5px; color:var(--dim); margin-left:auto; }
.diff-split { display:grid; grid-template-columns:1fr 1fr; }
.diff-col { padding:14px; }
.diff-col + .diff-col { border-left:1px solid var(--line); }
.diff-col-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:7px; }
.diff-col-val { font-size:22px; font-weight:700; font-family:var(--font-mono); color:var(--ink); }
.diff-col.was .diff-col-val { color:var(--grey-300); text-decoration:line-through; }
.diff-col.now .diff-col-val { color:var(--green); }
.diff-col-unit { font-size:12px; color:var(--dim); font-family:var(--font-mono); margin-top:2px; }
.diff-restore-row { padding:10px 14px; border-top:1px solid var(--line); display:flex; align-items:center; gap:8px; background:var(--grey-50); flex-wrap:wrap; }
.diff-restore-btn { font-size:12px; color:var(--blue); background:none; border:none; padding:0; cursor:pointer; font-family:var(--font-sans); }
.diff-restore-btn:hover { text-decoration:underline; }
.diff-restore-note { font-size:11px; color:var(--dim); }
.diff-trail { display:flex; flex-direction:column; }
.diff-row { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--line); }
.diff-row:last-child { border-bottom:none; }
.diff-row-ts { font-family:var(--font-mono); font-size:10.5px; color:var(--dim); width:86px; flex-shrink:0; }
.diff-row-who { font-size:11.5px; color:var(--ink); font-weight:500; width:72px; flex-shrink:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.diff-row-change { display:flex; align-items:center; gap:6px; flex:1; min-width:0; font-size:12.5px; }
.diff-row-was { color:var(--grey-300); text-decoration:line-through; font-family:var(--font-mono); white-space:nowrap; }
.diff-row-arrow { color:var(--dim); font-size:11px; flex-shrink:0; }
.diff-row-now { color:var(--ink); font-weight:600; font-family:var(--font-mono); white-space:nowrap; }
.diff-row-restore { background:none; border:none; padding:0; font-size:10.5px; color:var(--blue); cursor:pointer; font-family:var(--font-sans); flex-shrink:0; }
.diff-row-restore:hover { text-decoration:underline; }

/* ===== §37 Impact lens badge ===== */
.impact-lens { border:1px solid rgba(45,127,249,.25); border-radius:var(--radius); background:rgba(45,127,249,.04); overflow:hidden; }
.impact-lens-head { display:flex; align-items:center; gap:6px; padding:8px 12px; border-bottom:1px solid rgba(45,127,249,.18); }
.impact-lens-icon { font-size:13px; color:var(--blue); flex-shrink:0; }
.impact-lens-title { font-size:12px; font-weight:600; color:var(--blue); }
.impact-lens-count { margin-left:auto; font-family:var(--font-mono); font-size:11px; font-weight:700; color:var(--blue); white-space:nowrap; }
.impact-chain { display:flex; align-items:center; flex-wrap:wrap; gap:5px; padding:10px 12px; }
.impact-node { display:inline-flex; align-items:center; font-size:11px; padding:3px 8px; border-radius:5px; font-weight:600; background:var(--surface); border:1px solid var(--line); color:var(--ink); white-space:nowrap; }
.impact-node.live { border-color:rgba(249,115,22,.45); background:rgba(249,115,22,.07); color:var(--orange); }
.impact-node.live::before { content:"◎ "; font-size:9px; }
.impact-arrow { color:var(--dim); font-size:11px; white-space:nowrap; }
.impact-lens-footer { padding:6px 12px; border-top:1px solid rgba(45,127,249,.15); font-size:11px; color:var(--dim); }
.impact-role-tag { display:inline-flex; align-items:center; font-family:var(--font-mono); font-size:9.5px; padding:1px 6px; border-radius:4px; background:rgba(249,115,22,.12); color:var(--orange); white-space:nowrap; }

/* ===== §38 Why Card ===== */
.why-card { max-width:480px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; }
.why-card-head { padding:12px 14px; border-bottom:1px solid var(--line); background:var(--grey-50); }
.why-card-metric { font-size:11px; color:var(--dim); font-family:var(--font-mono); }
.why-card-delta { display:flex; align-items:center; gap:10px; margin-top:5px; }
.why-card-val { font-size:22px; font-weight:700; font-family:var(--font-mono); color:var(--ink); }
.why-delta-tag { font-size:12px; font-weight:700; padding:2px 8px; border-radius:6px; white-space:nowrap; }
.why-delta-tag.up   { color:var(--green); background:rgba(31,171,106,.12); }
.why-delta-tag.down { color:var(--red);   background:rgba(220,64,64,.12); }
.why-card-drivers { padding:12px 14px; display:flex; flex-direction:column; gap:10px; }
.why-driver { display:flex; align-items:flex-start; gap:10px; }
.why-driver-icon { font-size:13px; flex-shrink:0; width:18px; text-align:center; margin-top:1px; }
.why-driver-body { flex:1; min-width:0; }
.why-driver-title { font-size:12.5px; font-weight:600; color:var(--ink); }
.why-driver-sub { font-size:11.5px; color:var(--dim); margin-top:2px; line-height:1.4; }
.why-driver-pill { font-family:var(--font-mono); font-size:10.5px; padding:1px 6px; border-radius:4px; margin-top:4px; display:inline-block; }
.why-driver-pill.pos  { background:rgba(31,171,106,.1); color:var(--green); }
.why-driver-pill.neg  { background:rgba(220,64,64,.1); color:var(--red); }
.why-driver-pill.neut { background:var(--grey-100); color:var(--dim); }
.why-card-foot { padding:7px 14px; border-top:1px solid var(--line); background:var(--grey-50); font-size:11px; color:var(--dim); line-height:1.5; }

/* ===== §39 Scenario shelf ===== */
.scenario-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); }
.scenario-table { width:100%; border-collapse:collapse; font-size:12.5px; }
.scenario-table th { padding:7px 12px; text-align:left; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--dim); background:var(--grey-50); border-bottom:2px solid var(--line); white-space:nowrap; }
.scenario-table td { padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
.scenario-table tbody tr:last-child td { border-bottom:none; }
.scenario-tag { display:inline-block; font-size:9.5px; font-weight:700; padding:1px 6px; border-radius:99px; margin-left:5px; vertical-align:middle; white-space:nowrap; }
.scenario-tag.base { background:var(--grey-100); color:var(--grey-700); }
.scenario-tag.bear { background:rgba(220,64,64,.12); color:var(--red); }
.scenario-tag.bull { background:rgba(31,171,106,.12); color:var(--green); }
.scenario-met { font-family:var(--font-mono); font-size:12.5px; color:var(--ink); white-space:nowrap; }
.scenario-met.up   { color:var(--green); }
.scenario-met.down { color:var(--red); }
.assumption-reg { display:flex; flex-direction:column; }
.assumption-row { display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--line); }
.assumption-row:last-child { border-bottom:none; }
.assumption-key { font-family:var(--font-mono); font-size:10px; color:var(--dim); width:220px; flex-shrink:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.assumption-val { font-size:12.5px; font-weight:600; color:var(--ink); flex:1; font-family:var(--font-mono); }

/* ===== §40 Temporal staleness band ===== */
.stale-wrap { display:flex; flex-direction:column; gap:22px; max-width:460px; }
.stale-item { display:flex; flex-direction:column; gap:4px; }
.stale-header { display:flex; justify-content:space-between; align-items:baseline; gap:8px; flex-wrap:wrap; }
.stale-name { font-size:12.5px; color:var(--dim); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.stale-elapsed { font-size:18px; font-weight:700; font-family:var(--font-mono); color:var(--ink); flex-shrink:0; }
.stale-status { font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:6px; white-space:nowrap; flex-shrink:0; }
.stale-status.fast { background:rgba(124,58,237,.1); color:var(--purple); }
.stale-status.ok   { background:rgba(31,171,106,.12); color:var(--green); }
.stale-status.long { background:rgba(240,168,40,.15); color:var(--tag-amber-fg); }
.stale-status.over { background:rgba(220,64,64,.12); color:var(--red); }
.stale-band-outer { position:relative; }
.stale-band-track { display:flex; height:10px; border-radius:6px; overflow:hidden; }
.stale-zone-fast { background:rgba(124,58,237,.3); }
.stale-zone-ok   { background:rgba(31,171,106,.4); }
.stale-zone-long { background:rgba(240,168,40,.45); }
.stale-zone-over { background:rgba(220,64,64,.45); }
.stale-marker { position:absolute; top:50%; transform:translate(-50%,-50%) rotate(45deg); width:9px; height:9px; background:var(--ink); border-radius:2px; box-shadow:0 0 0 2px var(--bg); }
.stale-ticks { position:relative; height:16px; font-size:9.5px; color:var(--dim); font-family:var(--font-mono); }
.stale-tick { position:absolute; transform:translateX(-50%); white-space:nowrap; }
.stale-evidence { font-size:11px; color:var(--dim); line-height:1.4; margin-top:2px; }

/* ===== §41 Welcome / onboarding overlay ===== */
.welcome-back { position:fixed; inset:0; background:rgba(15,27,61,.55); display:flex; align-items:center; justify-content:center; z-index:var(--z-modal); opacity:0; pointer-events:none; transition:opacity .2s; }
.welcome-back.open { opacity:1; pointer-events:auto; }
.welcome-card { background:var(--surface); border-radius:16px; padding:32px 36px; max-width:520px; width:calc(100% - 48px); box-shadow:var(--shadow); position:relative; }
.welcome-brand { font-size:11px; font-weight:700; letter-spacing:.14em; color:var(--blue); text-transform:uppercase; margin-bottom:12px; }
.welcome-card h3 { margin:0 0 10px; font-size:19px; font-weight:700; letter-spacing:-.3px; color:var(--text-strong); line-height:1.35; }
.welcome-lede { font-size:13px; color:var(--grey-700); line-height:1.65; margin:0 0 14px; }
.welcome-ul { margin:0 0 20px; padding:0; list-style:none; display:flex; flex-direction:column; gap:6px; }
.welcome-ul li { font-size:13px; color:var(--grey-700); line-height:1.5; padding-left:18px; position:relative; }
.welcome-ul li::before { content:"→"; position:absolute; left:0; color:var(--blue); font-weight:700; font-size:11px; top:2px; }
.welcome-ctas { display:flex; flex-wrap:wrap; gap:8px; }
.welcome-footnote { font-size:11px; color:var(--dim); margin-top:14px; line-height:1.5; font-style:italic; }

/* ===== §42 AI Co-pilot / Cmd+K palette ===== */
.copilot-back { position:fixed; inset:0; background:rgba(15,27,61,.45); display:flex; align-items:flex-start; justify-content:center; padding-top:10vh; z-index:var(--z-modal); opacity:0; pointer-events:none; transition:opacity .15s; }
.copilot-back.open { opacity:1; pointer-events:auto; }
.copilot-wrap { background:var(--surface); border-radius:14px; width:min(580px, calc(100vw - 40px)); box-shadow:var(--shadow); overflow:hidden; }
.copilot-search-row { display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line); }
.copilot-spark { font-size:14px; color:var(--layer-ai); flex-shrink:0; }
.copilot-input { flex:1; border:none; font-size:14px; font-family:var(--font-sans); outline:none; color:var(--ink); background:transparent; }
.copilot-input::placeholder { color:var(--grey-300); }
.copilot-prompts-wrap { padding:10px 14px; border-bottom:1px solid var(--line); }
.copilot-prompts-label { font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:7px; }
.copilot-prompt-chip { display:inline-flex; align-items:center; padding:5px 10px; border-radius:8px; background:var(--grey-50); border:1px solid var(--line); font-size:12px; color:var(--grey-700); cursor:pointer; margin:0 4px 4px 0; font-family:var(--font-sans); transition:border-color .12s, background .12s; }
.copilot-prompt-chip:hover { border-color:var(--blue); background:rgba(45,127,249,.05); color:var(--blue); }
.copilot-response { padding:14px 16px; border-bottom:1px solid var(--line); }
.copilot-resp-head { display:flex; align-items:center; gap:6px; margin-bottom:8px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--layer-ai); }
.copilot-answer { font-size:13px; color:var(--ink); line-height:1.6; }
.copilot-cites { margin-top:10px; display:flex; flex-direction:column; gap:4px; }
.copilot-cite { display:flex; align-items:baseline; gap:7px; font-size:11.5px; color:var(--dim); }
.copilot-cite-key { font-family:var(--font-mono); font-size:10.5px; color:var(--blue); white-space:nowrap; }
.copilot-cite-val { font-weight:600; color:var(--ink); font-family:var(--font-mono); }
.copilot-foot { padding:8px 16px; background:var(--grey-50); display:flex; align-items:center; justify-content:space-between; gap:10px; }
.copilot-foot-hint { font-size:11px; color:var(--dim); }
.copilot-x { background:none; border:none; font-size:16px; color:var(--dim); cursor:pointer; padding:2px; line-height:1; flex-shrink:0; }

/* ===== §43 Learning Layer ===== */
.lrn-summary { display:flex; gap:20px; flex-wrap:wrap; padding:12px 14px; background:var(--grey-50); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:14px; }
.lrn-stat { display:flex; flex-direction:column; gap:2px; }
.lrn-stat-val { font-size:20px; font-weight:700; color:var(--text-strong); font-family:var(--font-mono); }
.lrn-stat-label { font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.05em; }
.lrn-rec-list { display:flex; flex-direction:column; gap:8px; }
.lrn-rec-card { border:1px solid var(--line); border-left-width:3px; border-radius:var(--radius); padding:11px 14px; background:var(--surface); }
.lrn-rec-card.warn      { border-left-color:var(--orange); }
.lrn-rec-card.forecast  { border-left-color:var(--yellow); }
.lrn-rec-card.planning  { border-left-color:var(--blue); }
.lrn-rec-card.confirmed { border-left-color:var(--green); }
.lrn-rec-head { display:flex; align-items:center; gap:8px; margin-bottom:5px; }
.lrn-rec-type { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.lrn-rec-card.warn      .lrn-rec-type { color:var(--orange); }
.lrn-rec-card.forecast  .lrn-rec-type { color:var(--tag-amber-fg); }
.lrn-rec-card.planning  .lrn-rec-type { color:var(--blue); }
.lrn-rec-card.confirmed .lrn-rec-type { color:var(--green); }
.lrn-rec-body { font-size:12.5px; color:var(--ink); line-height:1.5; }
.lrn-rec-meta { font-size:11px; color:var(--dim); margin-top:4px; font-style:italic; }
.lrn-bench-list { display:flex; flex-direction:column; gap:18px; max-width:460px; }
.lrn-bench { display:flex; flex-direction:column; gap:4px; }
.lrn-bench-header { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.lrn-bench-name { font-size:12px; color:var(--dim); }
.lrn-bench-you { font-size:16px; font-weight:700; font-family:var(--font-mono); }
.lrn-bench-you.ok   { color:var(--green); }
.lrn-bench-you.warn { color:var(--tag-amber-fg); }
.lrn-bench-you.over { color:var(--red); }
.lrn-bench-track { position:relative; height:10px; background:var(--grey-100); border-radius:6px; overflow:visible; }
.lrn-bench-fill { height:100%; border-radius:6px; }
.lrn-bench-fill.ok   { background:rgba(31,171,106,.45); }
.lrn-bench-fill.warn { background:rgba(249,115,22,.55); }
.lrn-bench-fill.over { background:rgba(220,64,64,.45); }
.lrn-bench-p50 { position:absolute; top:-3px; height:16px; width:2px; background:var(--grey-500); border-radius:1px; }
.lrn-bench-p90 { position:absolute; top:-3px; height:16px; width:2px; background:var(--grey-300); border-radius:1px; }
.lrn-bench-labels { display:flex; justify-content:space-between; font-size:9.5px; color:var(--dim); font-family:var(--font-mono); margin-top:3px; }

/* ===== §44 Persona second-tier nav (UX-003) ===== */
.persona-switcher { display:flex; gap:6px; flex-wrap:wrap; }
.persona-btn { display:inline-flex; align-items:center; gap:7px; padding:5px 11px 5px 7px; border-radius:20px; border:1px solid var(--line); background:var(--surface); font-size:12px; font-family:var(--font-sans); cursor:pointer; color:var(--grey-700); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.persona-btn:hover { border-color:var(--blue); }
.persona-btn.on { background:var(--navy); border-color:var(--text-strong); color:var(--text-on-accent); }
.persona-avatar { width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:9.5px; font-weight:700; flex-shrink:0; color:var(--text-on-accent); }
.persona-btn.on .persona-avatar { outline:2px solid rgba(255,255,255,.3); }
.t2-bar { display:flex; align-items:stretch; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.t2-tab { padding:9px 13px; font-size:12px; color:var(--grey-700); cursor:pointer; border:none; border-right:1px solid var(--line); background:none; font-family:var(--font-sans); white-space:nowrap; transition:background .1s; }
.t2-tab:last-of-type { border-right:none; }
.t2-tab:hover { background:var(--grey-50); }
.t2-tab.on { color:var(--blue); font-weight:600; background:rgba(45,127,249,.06); }
.t2-stub-tab { padding:9px 13px; font-size:11.5px; color:var(--dim); font-style:italic; }
.t2-viewing-chip { margin-left:auto; align-self:center; padding:0 12px; font-size:10px; font-weight:700; letter-spacing:.04em; color:var(--dim); white-space:nowrap; border-left:1px solid var(--line); height:100%; display:flex; align-items:center; gap:4px; }
.t2-viewing-chip b { color:var(--text-strong); }
.field-access-list { display:flex; flex-direction:column; gap:6px; }
.field-access-row { display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.field-access-info { flex:1; min-width:0; }
.field-access-key { font-family:var(--font-mono); font-size:10.5px; color:var(--dim); margin-bottom:2px; }
.field-access-val { font-size:13px; color:var(--ink); font-weight:600; }
.field-access-right { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.fa-lock-icon { font-size:13px; }
.fa-lock-icon.open  { color:var(--green); }
.fa-lock-icon.shut  { color:var(--grey-300); }
.fa-lock-icon.eng   { color:var(--orange); }
.fa-lock-label { font-size:10.5px; color:var(--dim); white-space:nowrap; }
.fa-edit-btn { padding:4px 9px; font-size:11px; border-radius:6px; border:1px solid var(--line); background:var(--surface); color:var(--grey-700); cursor:pointer; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); white-space:nowrap; }
.fa-edit-btn:not([disabled]):hover { border-color:var(--blue); color:var(--blue); }
.fa-edit-btn[disabled] { opacity:.38; cursor:not-allowed; }

/* ===== §45 Bookmark bar (UX-004) ===== */
.bm-bar { display:flex; align-items:center; gap:6px; padding:7px 10px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow-x:auto; flex-wrap:nowrap; min-height:44px; scrollbar-width:none; }
.bm-bar::-webkit-scrollbar { display:none; }
.bm-divider { width:1px; height:20px; background:var(--line); flex-shrink:0; }
.bm-zone-label { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--dim); white-space:nowrap; flex-shrink:0; }
.bm-chip { display:inline-flex; align-items:center; gap:5px; padding:4px 7px 4px 6px; border-radius:7px; border:1px solid var(--line); background:var(--surface); font-size:11.5px; color:var(--ink); white-space:nowrap; flex-shrink:0; cursor:pointer; font-family:var(--font-sans); transition:border-color .1s; }
.bm-chip:hover { border-color:var(--blue); }
.bm-chip.active { border-color:var(--blue); background:rgba(45,127,249,.07); }
.bm-chip.active .bm-chip-label { color:var(--blue); font-weight:600; }
.bm-chip-icon { font-size:10px; color:var(--dim); line-height:1; }
.bm-chip-label { color:var(--ink); }
.bm-chip-x { background:none; border:none; font-size:13px; color:var(--grey-300); cursor:pointer; padding:0 0 0 2px; line-height:1; }
.bm-chip-x:hover { color:var(--red); }
.bm-add { display:inline-flex; align-items:center; gap:4px; padding:4px 8px; border-radius:7px; border:1px dashed var(--grey-300); background:transparent; font-size:11px; color:var(--dim); cursor:pointer; font-family:var(--font-sans); white-space:nowrap; flex-shrink:0; transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.bm-add:hover { border-color:var(--blue); color:var(--blue); border-style:solid; }

/* ===== §46 Reports hub (UX-005) ===== */
.report-hub { display:flex; flex-direction:column; gap:14px; }
.report-cat-head { display:flex; align-items:center; gap:7px; margin-bottom:7px; padding-bottom:6px; border-bottom:1px solid var(--line); }
.report-cat-icon { font-size:14px; }
.report-cat-name { font-size:12.5px; font-weight:700; color:var(--text-strong); }
.report-cat-count { font-size:10.5px; color:var(--dim); margin-left:auto; }
.report-cards { display:flex; flex-wrap:wrap; gap:7px; }
.report-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; flex:1; min-width:170px; max-width:255px; }
.report-card.live-seam { border-color:rgba(45,127,249,.4); background:rgba(45,127,249,.02); }
.report-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:6px; margin-bottom:4px; }
.report-card-name { font-size:12px; font-weight:600; color:var(--ink); line-height:1.35; flex:1; }
.report-card-meta { font-size:10.5px; color:var(--dim); line-height:1.5; }
.report-card.live-seam .report-card-name { color:var(--blue); }
.report-status { display:inline-flex; padding:2px 6px; border-radius:4px; font-size:9.5px; font-weight:600; flex-shrink:0; }
.report-status.current { background:rgba(31,171,106,.12); color:var(--green); }
.report-status.stale   { background:rgba(249,115,22,.1);  color:var(--orange); }
.report-status.draft   { background:rgba(45,127,249,.1);  color:var(--blue); }

/* ===== §47 Cold doc library (UX-006) ===== */
.cold-lib { display:flex; gap:12px; min-height:280px; }
.cold-depts { width:130px; flex-shrink:0; display:flex; flex-direction:column; gap:3px; }
.cold-dept-btn { width:100%; text-align:left; padding:7px 10px; border-radius:var(--radius); border:1px solid var(--line); background:var(--surface); font-size:12px; color:var(--grey-700); cursor:pointer; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.cold-dept-btn:hover { border-color:var(--blue); color:var(--blue); }
.cold-dept-btn.on { background:var(--navy); border-color:var(--text-strong); color:var(--text-on-accent); font-weight:600; }
.cold-dept-stub { padding:7px 10px; font-size:11px; color:var(--dim); font-style:italic; }
.cold-pane { flex:1; min-width:0; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; display:flex; flex-direction:column; background:var(--surface); }
.cold-breadcrumb { font-size:10.5px; color:var(--dim); padding:6px 12px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.cold-breadcrumb b { color:var(--text-strong); }
.cold-tabnav { display:flex; border-bottom:1px solid var(--line); }
.cold-tab { padding:8px 13px; font-size:12px; color:var(--grey-700); cursor:pointer; border:none; border-bottom:2px solid transparent; background:none; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.cold-tab:hover { color:var(--blue); }
.cold-tab.on { color:var(--blue); border-bottom-color:var(--blue); font-weight:600; }
.cold-doc-list { flex:1; overflow-y:auto; padding:8px 0; }
.cold-doc-row { display:flex; align-items:center; gap:9px; padding:8px 12px; cursor:pointer; border-bottom:1px solid var(--grey-50); transition:background .08s; }
.cold-doc-row:hover { background:var(--grey-50); }
.cold-doc-icon { font-size:14px; flex-shrink:0; }
.cold-doc-info { flex:1; min-width:0; }
.cold-doc-name { font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cold-doc-meta { font-size:10.5px; color:var(--dim); }
.cold-doc-badge { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:4px; flex-shrink:0; }
.cold-doc-badge.nda { background:rgba(31,171,106,.1); color:var(--green); }
.cold-doc-badge.ext { background:rgba(90,67,196,.1); color:var(--purple); }
.cold-stub-msg { padding:24px 16px; text-align:center; font-size:12px; color:var(--dim); font-style:italic; }

/* ===== §48 Typed field input + validation (UX-008) ===== */
.typed-demos { display:flex; flex-direction:column; gap:10px; }
.typed-demo { border:1px solid var(--line); border-radius:var(--radius); padding:12px 14px; background:var(--surface); }
.typed-demo-label { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:6px; }
.typed-meta { font-size:10.5px; color:var(--dim); margin-bottom:8px; font-family:var(--font-mono); }
.typed-var { font-weight:600; color:var(--grey-700); }
.typed-num-wrap { display:flex; align-items:center; gap:0; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; max-width:220px; }
.typed-input { flex:1; padding:7px 10px; border:none; font-size:13px; font-family:var(--font-sans); outline:none; color:var(--ink); background:var(--surface); min-width:0; }
.typed-input.error { color:var(--red); }
.typed-unit { padding:7px 10px; background:var(--grey-50); font-size:12px; color:var(--dim); border-left:1px solid var(--line); white-space:nowrap; font-family:var(--font-mono); }
.typed-prefix { padding:7px 10px; background:var(--grey-50); font-size:12px; color:var(--dim); border-right:1px solid var(--line); font-family:var(--font-mono); }
.typed-error-row { display:flex; align-items:flex-start; gap:6px; margin-top:7px; font-size:12px; color:var(--red); line-height:1.4; }
.typed-yn-wrap { display:flex; gap:0; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; max-width:160px; }
.typed-yn-btn { flex:1; padding:7px 0; font-size:12.5px; font-family:var(--font-sans); border:none; background:var(--surface); cursor:pointer; color:var(--grey-700); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.typed-yn-btn.on { background:var(--navy); color:var(--text-on-accent); font-weight:600; }
.typed-dd { width:220px; padding:7px 10px; border:1px solid var(--line); border-radius:var(--radius); font-size:13px; font-family:var(--font-sans); color:var(--ink); background:var(--surface); }
.typed-date { padding:7px 10px; border:1px solid var(--line); border-radius:var(--radius); font-size:13px; font-family:var(--font-sans); color:var(--ink); background:var(--surface); max-width:200px; }

/* ===== §49 Daily driver views (UX-010) ===== */
.dd-tabrow { display:flex; border-bottom:2px solid var(--line); margin-bottom:0; }
.dd-tab { padding:8px 14px; font-size:12.5px; color:var(--grey-700); cursor:pointer; border:none; border-bottom:2px solid transparent; margin-bottom:-2px; background:none; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.dd-tab:hover { color:var(--blue); }
.dd-tab.on { color:var(--blue); border-bottom-color:var(--blue); font-weight:600; }
.dd-pane { display:none; padding:12px 0; }
.dd-pane.on { display:block; }
.dd-task-list { display:flex; flex-direction:column; gap:5px; }
.dd-task-row { display:flex; align-items:center; gap:9px; padding:8px 11px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); cursor:pointer; }
.dd-task-row:hover { border-color:var(--blue); }
.dd-task-status { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:3px 7px; border-radius:4px; flex-shrink:0; }
.dd-task-status.blocked  { background:rgba(220,64,64,.1);    color:var(--red); }
.dd-task-status.active   { background:rgba(45,127,249,.1);   color:var(--blue); }
.dd-task-status.todo     { background:var(--grey-100);        color:var(--grey-500); }
.dd-task-status.complete { background:rgba(31,171,106,.12);  color:var(--green); }
.dd-task-label { flex:1; font-size:12.5px; color:var(--ink); line-height:1.3; }
.dd-task-owner { font-size:10px; font-weight:700; width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--grey-100); color:var(--grey-700); flex-shrink:0; }
.dd-task-due { font-size:10.5px; color:var(--dim); flex-shrink:0; font-family:var(--font-mono); }
.dd-today-alert { display:flex; gap:10px; padding:10px 13px; border:1px solid rgba(249,115,22,.3); background:rgba(249,115,22,.06); border-radius:var(--radius); margin-bottom:10px; }
.dd-today-alert-icon { font-size:14px; flex-shrink:0; }
.dd-today-alert-body { font-size:12.5px; color:var(--ink); line-height:1.5; }
.dd-sched-list { display:flex; flex-direction:column; gap:8px; }
.dd-sched-row { display:flex; align-items:center; gap:10px; }
.dd-sched-label { font-size:11.5px; color:var(--ink); width:180px; flex-shrink:0; }
.dd-sched-track { flex:1; height:8px; background:var(--grey-100); border-radius:4px; overflow:hidden; position:relative; }
.dd-sched-fill { height:100%; border-radius:4px; }
.dd-sched-fill.complete    { background:var(--green); }
.dd-sched-fill.in-progress { background:var(--blue); }
.dd-sched-fill.at-risk     { background:var(--orange); }
.dd-sched-fill.scheduled   { background:var(--grey-300); }
.dd-sched-pct { font-size:10.5px; color:var(--dim); font-family:var(--font-mono); width:36px; text-align:right; flex-shrink:0; }
.dd-audit-list { display:flex; flex-direction:column; gap:5px; }
.dd-audit-row { display:flex; align-items:center; gap:9px; padding:7px 11px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); font-size:12px; }
.dd-audit-type { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:4px; flex-shrink:0; }
.dd-audit-type.pm       { background:rgba(45,127,249,.1);   color:var(--blue); }
.dd-audit-type.ai       { background:rgba(90,67,196,.1);    color:var(--purple); }
.dd-audit-type.approval { background:rgba(31,171,106,.12);  color:var(--green); }
.dd-audit-type.orc      { background:rgba(249,115,22,.1);   color:var(--orange); }
.dd-audit-action { flex:1; color:var(--ink); }
.dd-audit-who { font-size:10.5px; color:var(--dim); white-space:nowrap; }
.dd-audit-ts  { font-size:10.5px; color:var(--dim); font-family:var(--font-mono); white-space:nowrap; }

/* ===== §50 Deadline Radar (FX-3) ===== */
.radar-list { display:flex; flex-direction:column; gap:7px; }
.radar-item { display:flex; align-items:center; gap:12px; padding:10px 13px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.radar-item.critical { border-left:3px solid var(--red); }
.radar-item.warning  { border-left:3px solid var(--orange); }
.radar-item.watch    { border-left:3px solid var(--yellow); }
.radar-item.ok       { border-left:3px solid var(--green); }
.radar-countdown { display:flex; flex-direction:column; align-items:center; min-width:42px; flex-shrink:0; }
.radar-days { font-size:22px; font-weight:700; font-family:var(--font-mono); line-height:1; }
.radar-item.critical .radar-days { color:var(--red); }
.radar-item.warning  .radar-days { color:var(--orange); }
.radar-item.watch    .radar-days { color:var(--tag-amber-fg); }
.radar-item.ok       .radar-days { color:var(--green); }
.radar-days-label { font-size:8.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.05em; margin-top:1px; }
.radar-info { flex:1; min-width:0; }
.radar-task { font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:2px; line-height:1.3; }
.radar-project { font-size:11px; color:var(--dim); }
.radar-meta { display:flex; flex-direction:column; align-items:flex-end; gap:3px; flex-shrink:0; }
.radar-urgency { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:4px; }
.radar-item.critical .radar-urgency { background:rgba(220,64,64,.1);   color:var(--red); }
.radar-item.warning  .radar-urgency { background:rgba(249,115,22,.1);  color:var(--orange); }
.radar-item.watch    .radar-urgency { background:rgba(240,168,40,.12); color:var(--tag-amber-fg); }
.radar-item.ok       .radar-urgency { background:rgba(31,171,106,.1);  color:var(--green); }
.radar-date { font-size:10.5px; color:var(--dim); font-family:var(--font-mono); }

/* ===== §51 Fixer — alerts with the fix (FX-4) ===== */
.fixer-list { display:flex; flex-direction:column; gap:8px; }
.fixer-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; }
.fixer-card.error { border-left:3px solid var(--red); }
.fixer-card.warn  { border-left:3px solid var(--orange); }
.fixer-card.info  { border-left:3px solid var(--blue); }
.fixer-head { display:flex; align-items:center; gap:8px; padding:10px 13px 0; }
.fixer-sev { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:4px; flex-shrink:0; }
.fixer-card.error .fixer-sev { background:rgba(220,64,64,.1);  color:var(--red); }
.fixer-card.warn  .fixer-sev { background:rgba(249,115,22,.1); color:var(--orange); }
.fixer-card.info  .fixer-sev { background:rgba(45,127,249,.1); color:var(--blue); }
.fixer-title { font-size:12.5px; font-weight:700; color:var(--ink); flex:1; }
.fixer-desc { font-size:12px; color:var(--grey-700); padding:5px 13px 8px; line-height:1.5; }
.fixer-draft { margin:0 13px 10px; padding:9px 11px; background:var(--grey-50); border:1px solid var(--line); border-radius:6px; }
.fixer-draft-label { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--dim); margin-bottom:5px; }
.fixer-draft-text { font-size:12px; color:var(--ink); line-height:1.5; }
.fixer-actions { display:flex; align-items:center; gap:8px; padding:0 13px 11px; }
.fixer-accept { padding:5px 12px; border-radius:6px; border:1px solid var(--green); background:rgba(31,171,106,.08); color:var(--green); font-size:11.5px; font-weight:600; cursor:pointer; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.fixer-accept:hover { background:var(--green); color:var(--text-on-accent); }
.fixer-dismiss { padding:5px 12px; border-radius:6px; border:1px solid var(--line); background:var(--surface); color:var(--dim); font-size:11.5px; cursor:pointer; font-family:var(--font-sans); transition:border-color .1s; }
.fixer-dismiss:hover { border-color:var(--grey-500); }

/* ===== §52 VDR Bankability Score (UX-012) ===== */
.bkb-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:520px; }
.bkb-header { display:flex; align-items:center; gap:16px; padding:16px 18px; background:var(--navy); color:var(--text-on-accent); }
.bkb-score-big { font-size:40px; font-weight:700; font-family:var(--font-mono); line-height:1; }
.bkb-score-denom { font-size:16px; font-weight:400; opacity:.6; }
.bkb-grade-block { display:flex; flex-direction:column; gap:3px; }
.bkb-grade { font-size:28px; font-weight:700; font-family:var(--font-mono); }
.bkb-ci { font-size:10.5px; opacity:.65; }
.bkb-badges { margin-left:auto; display:flex; flex-direction:column; gap:5px; align-items:flex-end; }
.bkb-profiles { display:flex; gap:5px; padding:10px 16px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.bkb-profile-btn { padding:4px 10px; font-size:11.5px; border-radius:6px; border:1px solid var(--line); background:var(--surface); color:var(--grey-700); cursor:pointer; font-family:var(--font-sans); transition: background var(--motion-1) var(--ease-out), color var(--motion-1) var(--ease-out), border-color var(--motion-1) var(--ease-out), box-shadow var(--motion-1) var(--ease-out), transform var(--motion-1) var(--ease-out); }
.bkb-profile-btn:hover { border-color:var(--blue); color:var(--blue); }
.bkb-profile-btn.on { background:var(--blue); border-color:var(--blue); color:var(--text-on-accent); font-weight:600; }
.bkb-sub-list { padding:10px 16px; display:flex; flex-direction:column; gap:7px; }
.bkb-sub-row { display:flex; align-items:center; gap:10px; }
.bkb-sub-name { font-size:11.5px; color:var(--ink); width:160px; flex-shrink:0; }
.bkb-sub-track { flex:1; height:7px; background:var(--grey-100); border-radius:4px; overflow:hidden; }
.bkb-sub-fill { height:100%; border-radius:4px; transition:width .3s; }
.bkb-sub-fill.high { background:var(--green); }
.bkb-sub-fill.mid  { background:var(--blue); }
.bkb-sub-fill.low  { background:var(--orange); }
.bkb-sub-fill.risk { background:var(--red); }
.bkb-sub-score { font-size:11.5px; font-family:var(--font-mono); color:var(--ink); text-align:right; width:36px; flex-shrink:0; }
.bkb-flags { padding:10px 16px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:5px; }
.bkb-flags-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-bottom:2px; }
.bkb-flag { display:flex; align-items:flex-start; gap:7px; font-size:11.5px; color:var(--ink); line-height:1.4; }
.bkb-flag-icon { flex-shrink:0; }
.bkb-footer { padding:8px 16px; background:var(--grey-50); border-top:1px solid var(--line); font-size:10.5px; color:var(--dim); line-height:1.5; }

/* ===== §53 Demo walkthrough coach-mark (UX-002) ===== */
.coach-card { background:var(--surface); border-radius:12px; padding:16px 18px 14px; max-width:340px; box-shadow:var(--shadow); }
.coach-step-row { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.coach-step-label { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--blue); }
.coach-dots { display:flex; gap:5px; }
.coach-dot { width:7px; height:7px; border-radius:50%; background:var(--grey-200); flex-shrink:0; }
.coach-dot.on { background:var(--blue); }
.coach-body { font-size:13px; color:var(--ink); line-height:1.6; margin-bottom:12px; }
.coach-body b { color:var(--text-strong); }
.coach-nav { display:flex; align-items:center; gap:8px; }
.coach-back-btn { padding:5px 11px; border-radius:6px; border:1px solid var(--line); background:var(--surface); font-size:12px; color:var(--grey-700); cursor:pointer; font-family:var(--font-sans); }
.coach-back-btn:hover { border-color:var(--text-strong); }
.coach-next-btn { padding:5px 14px; border-radius:6px; border:none; background:var(--blue); color:var(--text-on-accent); font-size:12px; font-weight:600; cursor:pointer; font-family:var(--font-sans); }
.coach-next-btn:hover { background:var(--navy); }
.coach-skip-btn { margin-left:auto; background:none; border:none; font-size:11.5px; color:var(--dim); cursor:pointer; font-family:var(--font-sans); text-decoration:underline; }
.coach-skip-btn:hover { color:var(--ink); }
/* context frame for coach preview */
.coach-preview-wrap { position:relative; border:1px solid var(--line); border-radius:var(--radius); background:var(--grey-50); padding:16px; margin-bottom:12px; }
.coach-spotlight-ring { position:absolute; inset:10px; border-radius:8px; box-shadow:0 0 0 2000px rgba(15,27,61,.45); pointer-events:none; z-index:1; border:2px solid rgba(45,127,249,.7); }
.coach-card-anchored { position:relative; z-index:2; margin-top:12px; }

/* ===== §54 Dashboard attention items + hero metrics (UX-009) ===== */
.hero-metrics { display:flex; gap:0; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom:12px; flex-wrap:wrap; }
.hero-metric { flex:1; min-width:100px; padding:10px 14px; border-right:1px solid var(--line); background:var(--surface); }
.hero-metric:last-child { border-right:none; }
.hero-metric-val { font-size:18px; font-weight:700; font-family:var(--font-mono); }
.hero-metric-val.ok      { color:var(--text-strong); }
.hero-metric-val.warn    { color:var(--orange); }
.hero-metric-val.alert   { color:var(--red); }
.hero-metric-label { font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); margin-top:2px; }
.hero-metric-trend { font-size:10px; color:var(--dim); margin-top:2px; }
.hero-metric-trend.down { color:var(--red); }
.hero-metric-trend.up   { color:var(--green); }
.attn-list { display:flex; flex-direction:column; gap:5px; }
.attn-item { display:flex; align-items:flex-start; gap:9px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.attn-item.urgent { border-left:3px solid var(--red); }
.attn-item.warn   { border-left:3px solid var(--orange); }
.attn-item.info   { border-left:3px solid var(--blue); }
.attn-icon { font-size:13px; flex-shrink:0; margin-top:1px; }
.attn-body { flex:1; min-width:0; }
.attn-text { font-size:12.5px; color:var(--ink); line-height:1.4; margin-bottom:2px; }
.attn-source { font-size:10.5px; color:var(--dim); }
.metric-widgets { display:flex; flex-wrap:wrap; gap:8px; }
.metric-widget { flex:1; min-width:160px; max-width:220px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface); }
.metric-widget-head { display:flex; align-items:center; gap:7px; padding:8px 11px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.metric-widget-icon { font-size:12px; }
.metric-widget-name { font-size:11px; font-weight:700; color:var(--text-strong); }
.metric-widget-status { margin-left:auto; font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.metric-widget-status.ok   { color:var(--green); }
.metric-widget-status.warn { color:var(--orange); }
.metric-widget-status.risk { color:var(--red); }
.metric-rows { padding:8px 11px; display:flex; flex-direction:column; gap:5px; }
.metric-row { display:flex; align-items:center; justify-content:space-between; font-size:11.5px; gap:6px; }
.metric-row-label { color:var(--dim); }
.metric-row-val { font-family:var(--font-mono); font-weight:600; color:var(--ink); }

/* ===== §55 Self-writing report card (FX-5) ===== */
.snap-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); max-width:460px; }
.snap-head { display:flex; align-items:center; gap:9px; padding:11px 14px; border-bottom:1px solid var(--line); }
.snap-icon { font-size:16px; }
.snap-title { font-size:13px; font-weight:700; color:var(--text-strong); flex:1; }
.snap-as-of { font-size:10.5px; color:var(--dim); font-family:var(--font-mono); white-space:nowrap; }
.snap-body { padding:12px 14px; }
.snap-summary { font-size:12.5px; color:var(--ink); line-height:1.6; margin-bottom:12px; }
.snap-kpis { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.snap-kpi { display:flex; flex-direction:column; gap:2px; padding:8px 12px; border:1px solid var(--line); border-radius:var(--radius); min-width:80px; }
.snap-kpi-val { font-size:17px; font-weight:700; font-family:var(--font-mono); }
.snap-kpi-val.ok   { color:var(--text-strong); }
.snap-kpi-val.warn { color:var(--orange); }
.snap-kpi-label { font-size:9.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--dim); }
.snap-foot { display:flex; align-items:center; gap:8px; padding:9px 14px; border-top:1px solid var(--line); background:var(--grey-50); flex-wrap:wrap; }
.snap-export-btn { padding:4px 11px; border-radius:6px; border:1px solid var(--line); background:var(--surface); font-size:11.5px; color:var(--grey-700); cursor:pointer; font-family:var(--font-sans); transition:border-color .1s; }
.snap-export-btn:hover { border-color:var(--blue); color:var(--blue); }
.snap-live-banner { display:flex; align-items:center; gap:7px; padding:9px 14px; background:rgba(45,127,249,.04); border-top:1px solid rgba(45,127,249,.2); font-size:12px; color:var(--blue); }
.snap-live-dot { width:7px; height:7px; border-radius:50%; background:var(--blue); flex-shrink:0; animation:pulse 1.8s ease-in-out infinite; }
/* S1-NEW-01: the two animation:pulse references above/below shipped with NO @keyframes pulse
   anywhere - the dots never pulsed. Defined here (opacity only, no layout), gated off under
   prefers-reduced-motion. */
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) {
  .snap-live-dot, .save-indicator.saving .save-dot { animation: none; }
}

/* ===== §57 Project portfolio grid (project picker) ===== */
.portfolio-grid { display:flex; flex-wrap:wrap; gap:12px; }
.proj-card { flex:1; min-width:200px; max-width:290px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; cursor:pointer; transition:box-shadow .12s; }
.proj-card:hover { box-shadow:var(--shadow); }
.proj-card-head { padding:11px 13px 10px; border-bottom:1px solid var(--line); }
.proj-card-name { font-size:13px; font-weight:700; color:var(--text-strong); margin-bottom:2px; line-height:1.3; }
.proj-card-sub  { font-size:10.5px; color:var(--dim); }
.proj-stepper { display:flex; align-items:center; gap:3px; padding:8px 13px; border-bottom:1px solid var(--line); }
.proj-step { flex:1; height:4px; border-radius:2px; background:var(--grey-200); }
.proj-step.done   { background:var(--green); }
.proj-step.active { background:var(--blue); }
.proj-step-label { font-size:9px; color:var(--dim); white-space:nowrap; margin-left:5px; flex-shrink:0; }
.proj-metrics { padding:9px 13px; display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.proj-metric { display:flex; flex-direction:column; gap:1px; }
.proj-metric-val { font-size:13px; font-weight:700; font-family:var(--font-mono); }
.proj-metric-val.ok   { color:var(--text-strong); }
.proj-metric-val.warn { color:var(--orange); }
.proj-metric-val.bad  { color:var(--red); }
.proj-metric-label { font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--dim); }
.proj-card-foot { display:flex; align-items:center; gap:6px; padding:6px 13px; background:var(--grey-50); border-top:1px solid var(--line); font-size:10.5px; }
.proj-gate-bar { flex:1; height:4px; background:var(--grey-200); border-radius:2px; overflow:hidden; }
.proj-gate-fill { height:100%; border-radius:2px; }
.proj-gate-fill.ok   { background:var(--green); }
.proj-gate-fill.warn { background:var(--orange); }
.proj-gate-fill.low  { background:var(--red); }
.proj-gate-pct { font-weight:700; font-family:var(--font-mono); white-space:nowrap; }
.proj-gate-pct.ok   { color:var(--green); }
.proj-gate-pct.warn { color:var(--orange); }
.proj-gate-pct.low  { color:var(--red); }
.proj-active-badge { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:1px 5px; border-radius:3px; background:rgba(45,127,249,.1); color:var(--blue); flex-shrink:0; }

/* ===== §58 Entity / counterparty card ===== */
.entity-grid { display:flex; flex-wrap:wrap; gap:10px; }
.entity-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); flex:1; min-width:200px; max-width:280px; }
.entity-head { display:flex; align-items:center; gap:9px; padding:10px 12px; border-bottom:1px solid var(--line); }
.entity-avatar { width:30px; height:30px; border-radius:7px; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:var(--text-on-accent); flex-shrink:0; }
.entity-name { font-size:12.5px; font-weight:700; color:var(--text-strong); line-height:1.3; }
.entity-type-label { font-size:10px; color:var(--dim); margin-top:1px; }
.entity-rows { padding:8px 12px; display:flex; flex-direction:column; gap:4px; }
.entity-row { display:flex; align-items:flex-start; gap:7px; font-size:11.5px; }
.entity-row-label { color:var(--dim); min-width:56px; flex-shrink:0; }
.entity-row-val { color:var(--ink); line-height:1.35; }
.entity-tags { display:flex; gap:4px; flex-wrap:wrap; padding:7px 12px; border-top:1px solid var(--line); }
.entity-tag { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:4px; background:var(--grey-100); color:var(--grey-700); }

/* ===== §59 VDR wizard stage progress ===== */
.wizard-stages { display:flex; align-items:center; gap:0; margin-bottom:16px; }
.wizard-stage { display:flex; flex-direction:column; align-items:center; gap:4px; flex:1; position:relative; }
.wizard-stage-circle { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; border:2px solid var(--line); background:var(--surface); color:var(--dim); flex-shrink:0; }
.wizard-stage.done   .wizard-stage-circle { background:var(--green); border-color:var(--green); color:var(--text-on-accent); }
.wizard-stage.active .wizard-stage-circle { background:var(--blue); border-color:var(--blue); color:var(--text-on-accent); }
.wizard-stage-label { font-size:10px; text-align:center; color:var(--dim); line-height:1.3; white-space:nowrap; }
.wizard-stage.done   .wizard-stage-label { color:var(--green); font-weight:600; }
.wizard-stage.active .wizard-stage-label { color:var(--blue); font-weight:700; }
.wizard-connector { flex:1; height:2px; background:var(--grey-200); margin-bottom:14px; }
.wizard-connector.done { background:var(--green); }
.wizard-classify-list { display:flex; flex-direction:column; gap:5px; }
.wizard-doc-row { display:flex; align-items:center; gap:9px; padding:8px 11px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); font-size:12px; }
.wizard-doc-icon { font-size:13px; flex-shrink:0; }
.wizard-doc-name { flex:1; color:var(--ink); }
.wizard-doc-type { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:4px; flex-shrink:0; }
.wizard-doc-type.contract   { background:rgba(45,127,249,.1); color:var(--blue); }
.wizard-doc-type.financial  { background:rgba(31,171,106,.1); color:var(--green); }
.wizard-doc-type.technical  { background:rgba(90,67,196,.1);  color:var(--purple); }
.wizard-doc-type.permit     { background:rgba(249,115,22,.1); color:var(--orange); }
.wizard-doc-type.other      { background:var(--grey-100);     color:var(--dim); }
.wizard-doc-conf { font-size:10px; color:var(--dim); flex-shrink:0; }
.wizard-extract-summary { display:flex; gap:12px; flex-wrap:wrap; padding:11px 13px; background:var(--grey-50); border:1px solid var(--line); border-radius:var(--radius); margin-top:10px; }
.wizard-extract-stat { display:flex; flex-direction:column; gap:2px; }
.wizard-extract-num { font-size:18px; font-weight:700; font-family:var(--font-mono); color:var(--text-strong); }
.wizard-extract-lbl { font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.05em; }

/* §60 PIT field group — Hot-layer write cockpit */
.pit-cockpit { display:flex; flex-direction:column; gap:4px; max-width:700px; }
.pit-section { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface); }
.pit-section-head { display:flex; align-items:center; gap:8px; padding:9px 12px; background:var(--grey-50); cursor:pointer; user-select:none; }
.pit-section-head:hover { background:var(--grey-100); }
.pit-section-num { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--text-on-accent); background:var(--navy); padding:2px 6px; border-radius:3px; flex-shrink:0; }
.pit-section-name { font-size:12px; font-weight:600; color:var(--ink); flex:1; }
.pit-completion { display:flex; align-items:center; gap:6px; }
.pit-completion-dots { display:flex; gap:3px; align-items:center; }
.pit-completion-dot { width:7px; height:7px; border-radius:50%; display:inline-block; }
.pit-completion-dot.set   { background:var(--green); }
.pit-completion-dot.ai    { background:var(--blue); opacity:.65; }
.pit-completion-dot.empty { background:transparent; border:1.5px solid var(--grey-300); }
.pit-completion-pct { font-size:10px; color:var(--dim); font-family:var(--font-mono); }
.pit-chevron { font-size:11px; color:var(--dim); margin-left:2px; transition:transform .15s; }
.pit-section:not(.collapsed) .pit-chevron { transform:rotate(90deg); }
.pit-section.collapsed .pit-field-list { display:none; }
.pit-field-list { display:flex; flex-direction:column; }
.pit-field-row { display:flex; align-items:center; gap:8px; padding:7px 12px; border-top:1px solid var(--line); }
.pit-field-row:hover { background:var(--grey-50); }
.pit-field-key { flex:1; font-size:11.5px; color:var(--dim); }
.pit-field-val { flex:1.4; font-size:12px; font-weight:500; color:var(--ink); }
.pit-field-val.pit-ai    { color:var(--blue); font-style:italic; }
.pit-field-val.pit-empty { color:var(--grey-300); }
.pit-field-write { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:2px 5px; border-radius:3px; flex-shrink:0; }
.pit-field-write.pm     { background:rgba(45,127,249,.12); color:var(--blue); }
.pit-field-write.eng    { background:rgba(90,67,196,.12);  color:var(--purple); }
.pit-field-write.lead   { background:rgba(15,31,56,.10);   color:var(--text-strong); }
.pit-field-write.engine { background:var(--grey-100);      color:var(--dim); }
.pit-field-conf { font-size:9.5px; font-weight:700; text-transform:uppercase; width:46px; text-align:right; flex-shrink:0; }
.pit-field-conf.high   { color:var(--green); }
.pit-field-conf.med    { color:var(--yellow); }
.pit-field-conf.low    { color:var(--red); }
.pit-field-conf.review { color:var(--orange); }
.pit-field-conf.empty  { color:var(--grey-300); }
.pit-edit-btn { font-size:10.5px; padding:3px 8px; border:1px solid var(--line); border-radius:4px; background:var(--surface); color:var(--blue); cursor:pointer; flex-shrink:0; }
.pit-edit-btn:not([disabled]):hover { background:var(--blue); color:var(--text-on-accent); border-color:var(--blue); }
.pit-edit-btn[disabled] { color:var(--grey-300); cursor:not-allowed; border-color:var(--line); }
.pit-inline-edit { margin-top:10px; border:1px solid var(--blue); border-radius:var(--radius); padding:12px 14px; background:rgba(45,127,249,.04); }
.pit-edit-head { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.pit-edit-field-label { font-size:12px; font-weight:600; color:var(--ink); flex:1; }
.pit-edit-auth-chip { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:2px 6px; border-radius:3px; background:rgba(45,127,249,.12); color:var(--blue); }
.pit-edit-input { width:100%; box-sizing:border-box; border:1px solid var(--line); border-radius:6px; padding:7px 10px; font-size:12px; color:var(--ink); font-family:var(--font-sans); outline:none; }
.pit-edit-input:focus { border-color:var(--blue); box-shadow:0 0 0 2px rgba(45,127,249,.15); }
.pit-edit-conf-row { display:flex; align-items:center; gap:6px; margin-top:8px; }
.pit-edit-conf-label { font-size:10px; color:var(--dim); flex-shrink:0; }
.pit-conf-btn { font-size:9.5px; font-weight:700; padding:3px 8px; border:1px solid var(--line); border-radius:3px; background:var(--surface); color:var(--dim); cursor:pointer; }
.pit-conf-btn.on { border-color:var(--blue); color:var(--blue); background:rgba(45,127,249,.08); }
.pit-conf-btn:hover:not(.on) { border-color:var(--blue); color:var(--blue); }
.pit-edit-foot { display:flex; align-items:center; gap:8px; margin-top:10px; flex-wrap:wrap; }
.pit-save-btn { font-size:11px; font-weight:600; padding:5px 14px; border:none; border-radius:5px; background:var(--blue); color:var(--text-on-accent); cursor:pointer; }
.pit-save-btn:hover { background:var(--navy); }
.pit-cancel-btn { font-size:11px; padding:5px 10px; border:1px solid var(--line); border-radius:5px; background:var(--surface); color:var(--dim); cursor:pointer; }
.pit-cancel-btn:hover { background:var(--grey-100); }
.pit-edit-note { font-size:10px; color:var(--dim); margin-left:auto; font-style:italic; }

/* §61 Gate bucket summary — domain readiness */
.gate-buckets { display:flex; flex-direction:column; gap:6px; max-width:580px; }
.gate-bucket { display:flex; align-items:center; gap:12px; padding:11px 14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.gate-bucket-icon { font-size:15px; flex-shrink:0; width:22px; text-align:center; }
.gate-bucket-name { font-size:12px; font-weight:600; color:var(--ink); width:110px; flex-shrink:0; }
.gate-bucket-progress { flex:1; display:flex; flex-direction:column; gap:4px; }
.gate-bucket-bar { height:6px; background:var(--grey-100); border-radius:3px; overflow:hidden; }
.gate-bucket-fill { height:100%; border-radius:3px; }
.gate-bucket-fill.complete { background:var(--green); }
.gate-bucket-fill.partial  { background:var(--blue); }
.gate-bucket-fill.at-risk  { background:var(--yellow); }
.gate-bucket-fill.failed   { background:var(--red); }
.gate-bucket-count { font-size:10px; color:var(--dim); font-family:var(--font-mono); }
.gate-bucket-count span { color:var(--ink); font-weight:600; }
.gate-bucket-status { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 8px; border-radius:10px; flex-shrink:0; white-space:nowrap; }
.gate-bucket-status.complete { background:rgba(31,171,106,.12); color:var(--green); }
.gate-bucket-status.partial  { background:rgba(45,127,249,.12); color:var(--blue); }
.gate-bucket-status.at-risk  { background:rgba(234,179,8,.14);  color:var(--tag-amber-fg); }
.gate-bucket-status.failed   { background:rgba(239,68,68,.12);  color:var(--red); }

/* §62 SOP task detail card */
.task-detail-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:620px; }
.task-detail-head { display:flex; align-items:flex-start; gap:10px; padding:13px 15px 11px; border-bottom:1px solid var(--line); background:var(--grey-50); }
.task-detail-id { font-size:10px; font-weight:700; font-family:var(--font-mono); color:var(--dim); background:var(--grey-100); padding:2px 6px; border-radius:3px; flex-shrink:0; margin-top:2px; }
.task-detail-title { flex:1; font-size:13px; font-weight:700; color:var(--text-strong); line-height:1.3; }
.task-detail-status { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:3px 8px; border-radius:10px; flex-shrink:0; }
.task-detail-status.blocked  { background:rgba(239,68,68,.12);  color:var(--red); }
.task-detail-status.active   { background:rgba(45,127,249,.12); color:var(--blue); }
.task-detail-status.todo     { background:var(--grey-100);      color:var(--dim); }
.task-detail-status.complete { background:rgba(31,171,106,.12); color:var(--green); }
.task-detail-body { padding:12px 15px; display:flex; flex-direction:column; gap:8px; }
.task-detail-row { display:flex; gap:8px; font-size:12px; line-height:1.4; }
.task-detail-label { color:var(--dim); width:106px; flex-shrink:0; }
.task-detail-val   { color:var(--ink); flex:1; }
.task-detail-divider { height:1px; background:var(--line); margin:2px 0; }
.task-deps { display:flex; flex-direction:column; gap:4px; }
.task-dep-row { display:flex; align-items:center; gap:7px; font-size:11.5px; }
.task-dep-id  { font-family:var(--font-mono); font-size:10px; color:var(--dim); background:var(--grey-100); padding:1px 5px; border-radius:3px; flex-shrink:0; }
.task-dep-name { flex:1; color:var(--ink); }
.task-dep-status { font-size:9.5px; font-weight:700; }
.task-dep-status.done    { color:var(--green); }
.task-dep-status.pending { color:var(--dim); }
.task-dep-status.blocked { color:var(--red); }
.task-artifacts { display:flex; flex-direction:column; gap:4px; }
.task-artifact { display:flex; align-items:center; gap:7px; font-size:11.5px; padding:5px 8px; border:1px solid var(--line); border-radius:5px; background:var(--grey-50); }
.task-artifact-icon { font-size:12px; flex-shrink:0; }
.task-artifact-name { flex:1; color:var(--ink); }
.task-artifact-state { font-size:9.5px; font-weight:700; text-transform:uppercase; }
.task-artifact-state.uploaded { color:var(--green); }
.task-artifact-state.required { color:var(--red); }
.task-artifact-state.optional { color:var(--dim); }
.task-detail-foot { display:flex; align-items:center; gap:8px; padding:10px 15px; border-top:1px solid var(--line); background:var(--grey-50); }
.task-sop-ref { font-size:10px; color:var(--dim); flex:1; }
.task-sop-ref a { color:var(--blue); text-decoration:none; }
.task-sop-ref a:hover { text-decoration:underline; }
.task-detail-btn { font-size:11px; font-weight:600; padding:5px 12px; border-radius:5px; border:1px solid var(--line); background:var(--surface); color:var(--ink); cursor:pointer; }
.task-detail-btn:hover { background:var(--grey-100); }
.task-detail-btn.primary { background:var(--blue); color:var(--text-on-accent); border-color:var(--blue); }
.task-detail-btn.primary:hover { background:var(--navy); border-color:var(--text-strong); }

/* §63 Gate condition row — Action layer CONDITION_DICTIONARY */
.cond-list { display:flex; flex-direction:column; gap:5px; max-width:640px; }
.cond-row { display:flex; align-items:flex-start; gap:10px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.cond-status { font-size:14px; flex-shrink:0; width:18px; text-align:center; margin-top:1px; }
.cond-body { flex:1; }
.cond-id   { font-size:9.5px; font-family:var(--font-mono); color:var(--dim); margin-bottom:2px; }
.cond-rule { font-size:12px; color:var(--ink); line-height:1.35; }
.cond-rule strong { color:var(--text-strong); }
.cond-meta { display:flex; gap:8px; margin-top:5px; flex-wrap:wrap; align-items:center; }
.cond-current { font-size:10.5px; font-family:var(--font-mono); padding:2px 6px; border-radius:3px; }
.cond-current.pass { background:rgba(31,171,106,.12); color:var(--green); }
.cond-current.fail { background:rgba(239,68,68,.12);  color:var(--red); }
.cond-current.na   { background:var(--grey-100);      color:var(--dim); }
.cond-var { font-size:10px; color:var(--dim); font-family:var(--font-mono); }
.cond-blocker  { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:10px; background:rgba(239,68,68,.1); color:var(--red); flex-shrink:0; align-self:flex-start; margin-top:2px; }
.cond-optional { font-size:10px; color:var(--dim); padding:2px 6px; border-radius:10px; background:var(--grey-100); flex-shrink:0; align-self:flex-start; margin-top:2px; }

/* §64 ORC run card — /api/run response display */
.orc-run-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:620px; }
.orc-run-head { display:flex; align-items:flex-start; gap:10px; padding:11px 14px 9px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.orc-run-id { font-size:9.5px; font-family:var(--font-mono); color:var(--dim); background:var(--grey-100); padding:2px 6px; border-radius:3px; flex-shrink:0; margin-top:2px; }
.orc-run-meta { flex:1; }
.orc-run-trigger { font-size:12px; font-weight:600; color:var(--text-strong); line-height:1.3; }
.orc-run-ts { font-size:10px; color:var(--dim); margin-top:2px; font-family:var(--font-mono); }
.orc-run-dur { font-size:10px; color:var(--dim); background:var(--grey-100); padding:2px 6px; border-radius:3px; flex-shrink:0; align-self:flex-start; margin-top:2px; }
.orc-run-body { padding:11px 14px; display:flex; flex-direction:column; gap:10px; }
.orc-run-section { display:flex; flex-direction:column; gap:5px; }
.orc-run-section-title { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); }
.orc-run-io-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:4px; }
.orc-run-io-row { display:flex; justify-content:space-between; padding:4px 8px; border:1px solid var(--line); border-radius:4px; font-size:11.5px; }
.orc-run-io-key { color:var(--dim); }
.orc-run-io-val { font-weight:600; color:var(--ink); font-family:var(--font-mono); font-size:11px; }
.orc-run-divider { height:1px; background:var(--line); }
.orc-outputs { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.orc-output-row { display:flex; flex-direction:column; gap:2px; padding:7px 10px; border:1px solid var(--line); border-radius:5px; background:var(--grey-50); }
.orc-output-key { font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; }
.orc-output-val { font-size:16px; font-weight:700; font-family:var(--font-mono); }
.orc-output-val.pos { color:var(--green); }
.orc-output-val.neg { color:var(--red); }
.orc-output-val.neu { color:var(--text-strong); }
.orc-output-ci { font-size:9.5px; color:var(--dim); font-family:var(--font-mono); }
.orc-run-foot { display:flex; align-items:center; gap:8px; padding:8px 14px; border-top:1px solid var(--line); background:var(--grey-50); }
.orc-run-gate-result { font-size:11px; font-weight:600; flex:1; }
.orc-run-gate-result.pass { color:var(--green); }
.orc-run-gate-result.fail { color:var(--red); }
.orc-run-gate-count { font-size:10px; color:var(--dim); font-family:var(--font-mono); }

/* §65 Ghost save / autosave indicator — FX-3 */
.save-indicator-row { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:4px; }
.save-indicator { display:inline-flex; align-items:center; gap:6px; font-size:11px; padding:4px 10px; border-radius:20px; border:1px solid transparent; transition: background var(--motion-2) var(--ease-out), color var(--motion-2) var(--ease-out), border-color var(--motion-2) var(--ease-out), box-shadow var(--motion-2) var(--ease-out), transform var(--motion-2) var(--ease-out); }
.save-indicator.idle    { color:var(--grey-300); }
.save-indicator.saving  { color:var(--blue); border-color:rgba(45,127,249,.2); background:rgba(45,127,249,.06); }
.save-indicator.saved   { color:var(--green); border-color:rgba(31,171,106,.2); background:rgba(31,171,106,.06); }
.save-indicator.unsaved { color:var(--orange); border-color:rgba(249,115,22,.2); background:rgba(249,115,22,.06); }
.save-indicator.error   { color:var(--red); border-color:rgba(239,68,68,.2); background:rgba(239,68,68,.06); }
.save-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.save-indicator.idle    .save-dot { background:var(--grey-200); }
.save-indicator.saving  .save-dot { background:var(--blue); animation:pulse .8s ease-in-out infinite; }
.save-indicator.saved   .save-dot { background:var(--green); }
.save-indicator.unsaved .save-dot { background:var(--orange); }
.save-indicator.error   .save-dot { background:var(--red); }
.save-text { white-space:nowrap; }

/* §66 Archive-to-Cold learning ribbon */
.lrn-ribbon { display:flex; align-items:flex-start; gap:10px; padding:9px 12px; background:rgba(90,67,196,.06); border:1px solid rgba(90,67,196,.18); border-radius:var(--radius); max-width:620px; }
.lrn-ribbon-icon { font-size:15px; flex-shrink:0; margin-top:1px; }
.lrn-ribbon-body { flex:1; }
.lrn-ribbon-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--purple); margin-bottom:3px; }
.lrn-ribbon-source { font-size:12px; color:var(--ink); line-height:1.35; }
.lrn-ribbon-source a { color:var(--purple); text-decoration:none; }
.lrn-ribbon-source a:hover { text-decoration:underline; }
.lrn-ribbon-meta { display:flex; gap:8px; margin-top:5px; flex-wrap:wrap; align-items:center; }
.lrn-ribbon-conf { font-size:10px; font-weight:700; text-transform:uppercase; padding:1px 6px; border-radius:3px; background:rgba(31,171,106,.12); color:var(--green); }
.lrn-ribbon-n { font-size:10px; color:var(--dim); }
.lrn-ribbon-actions { display:flex; gap:6px; flex-shrink:0; flex-direction:column; align-items:flex-end; }
.lrn-ribbon-btn { font-size:10.5px; padding:3px 9px; border:1px solid var(--line); border-radius:4px; background:var(--surface); color:var(--ink); cursor:pointer; white-space:nowrap; }
.lrn-ribbon-btn:hover { background:var(--grey-100); }
.lrn-ribbon-btn.primary { background:var(--purple); color:var(--text-on-accent); border-color:var(--purple); }
.lrn-ribbon-btn.primary:hover { opacity:.88; }

/* §67 Live economics beat — PPA price + PWA lever */
.econ-beat-card { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:640px; }
.econ-beat-head { padding:11px 14px 9px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.econ-beat-title { font-size:13px; font-weight:700; color:var(--text-strong); }
.econ-beat-hint  { font-size:10.5px; color:var(--dim); margin-top:3px; line-height:1.4; }
.econ-beat-body  { padding:13px 14px; }
.econ-input-row  { display:flex; align-items:center; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.econ-input-label { font-size:11px; color:var(--dim); width:110px; flex-shrink:0; }
.econ-slider-wrap { flex:1; display:flex; align-items:center; gap:10px; min-width:160px; }
.econ-slider { flex:1; accent-color:var(--blue); cursor:pointer; }
.econ-slider-val { font-size:13px; font-weight:700; font-family:var(--font-mono); color:var(--text-strong); min-width:58px; text-align:right; }
.econ-pwa-wrap { display:flex; align-items:center; gap:8px; }
.econ-pwa-badge { font-size:11px; color:var(--dim); }
.econ-toggle { position:relative; width:34px; height:19px; flex-shrink:0; display:inline-block; }
.econ-toggle input { opacity:0; width:0; height:0; position:absolute; }
/* `transition:.2s` names no property, so CSS resolves it to transition-property:all - the banned
   behaviour wearing different syntax. The wave-H sweep matched the literal string "transition: all"
   and walked straight past these two; found 2026-08-25 by reading resolved transitionProperty in a
   live browser instead of grepping source. */
.econ-toggle-track { position:absolute; inset:0; background:var(--grey-200); border-radius:10px; cursor:pointer; transition:background var(--motion-2) var(--ease-out); }
.econ-toggle-track::before { content:''; position:absolute; width:13px; height:13px; left:3px; top:3px; background:var(--surface); border-radius:50%; transition:transform var(--motion-2) var(--ease-out); }
.econ-toggle input:checked ~ .econ-toggle-track { background:var(--green); }
.econ-toggle input:checked ~ .econ-toggle-track::before { transform:translateX(15px); }
.econ-outputs { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:4px; }
.econ-output { padding:9px 11px; border:1px solid var(--line); border-radius:6px; background:var(--grey-50); transition:border-color .3s; }
.econ-output-key { font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; margin-bottom:3px; }
.econ-output-val { font-size:19px; font-weight:700; font-family:var(--font-mono); transition:color .3s; }
.econ-output-val.pos { color:var(--green); }
.econ-output-val.neg { color:var(--red); }
.econ-output-val.neu { color:var(--text-strong); }
.econ-output-sub { font-size:9.5px; color:var(--dim); margin-top:2px; font-family:var(--font-mono); }
.econ-gate-banner { display:flex; align-items:center; gap:8px; margin-top:10px; padding:8px 11px; border-radius:6px; font-size:12px; font-weight:600; transition: background var(--motion-3) var(--ease-out), color var(--motion-3) var(--ease-out), border-color var(--motion-3) var(--ease-out), box-shadow var(--motion-3) var(--ease-out), transform var(--motion-3) var(--ease-out); }
.econ-gate-banner.pass { background:rgba(31,171,106,.1); color:var(--green); border:1px solid rgba(31,171,106,.25); }
.econ-gate-banner.fail { background:rgba(239,68,68,.1); color:var(--red); border:1px solid rgba(239,68,68,.25); }
.econ-gate-icon { font-size:15px; }

/* §68 VDR approve-and-merge — extracted field review */
.vdr-merge-head { display:flex; align-items:center; gap:8px; padding:9px 13px; background:var(--grey-50); border:1px solid var(--line); border-radius:var(--radius) var(--radius) 0 0; border-bottom:none; flex-wrap:wrap; }
.vdr-merge-count { font-size:11.5px; font-weight:600; color:var(--text-strong); flex:1; }
.vdr-merge-conf-pills { display:flex; gap:5px; }
.vdr-merge-pill { font-size:9.5px; font-weight:700; padding:2px 6px; border-radius:3px; }
.vdr-merge-pill.high   { background:rgba(31,171,106,.12); color:var(--green); }
.vdr-merge-pill.med    { background:rgba(234,179,8,.14);  color:var(--tag-amber-fg); }
.vdr-merge-pill.low    { background:rgba(239,68,68,.12);  color:var(--red); }
.vdr-merge-actions { display:flex; gap:6px; }
.vdr-merge-accept-all { font-size:10.5px; font-weight:600; padding:3px 10px; border:none; border-radius:4px; background:var(--green); color:var(--text-on-accent); cursor:pointer; }
.vdr-merge-accept-all:hover { opacity:.85; }
.vdr-merge-list { border:1px solid var(--line); border-radius:0 0 var(--radius) var(--radius); overflow:hidden; max-width:700px; }
.vdr-merge-row { display:flex; flex-direction:column; gap:5px; padding:10px 13px; border-bottom:1px solid var(--line); background:var(--surface); }
.vdr-merge-row:last-child { border-bottom:none; }
.vdr-merge-row-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.vdr-merge-var { font-size:9px; font-family:var(--font-mono); color:var(--dim); background:var(--grey-100); padding:1px 5px; border-radius:3px; }
.vdr-merge-domain { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--purple); background:rgba(90,67,196,.1); padding:1px 5px; border-radius:3px; }
.vdr-merge-field-name { font-size:12px; font-weight:600; color:var(--text-strong); flex:1; }
.vdr-merge-conf-chip { font-size:9px; font-weight:700; text-transform:uppercase; padding:2px 6px; border-radius:10px; }
.vdr-merge-conf-chip.high { background:rgba(31,171,106,.12); color:var(--green); }
.vdr-merge-conf-chip.med  { background:rgba(234,179,8,.14);  color:var(--tag-amber-fg); }
.vdr-merge-conf-chip.low  { background:rgba(239,68,68,.12);  color:var(--red); }
.vdr-merge-vals { display:flex; align-items:center; gap:10px; font-size:12px; flex-wrap:wrap; }
.vdr-merge-current { color:var(--dim); }
.vdr-merge-current span { font-weight:500; color:var(--ink); }
.vdr-merge-arrow { color:var(--dim); font-size:10px; }
.vdr-merge-extracted { font-weight:700; }
.vdr-merge-extracted.same { color:var(--dim); }
.vdr-merge-extracted.diff { color:var(--orange); }
.vdr-merge-extracted.new  { color:var(--blue); }
.vdr-merge-source { font-size:10px; color:var(--dim); }
.vdr-merge-source span { color:var(--blue); text-decoration:underline; cursor:pointer; }
.vdr-merge-row-foot { display:flex; gap:6px; }
.vdr-merge-btn { font-size:10.5px; font-weight:600; padding:3px 9px; border-radius:4px; border:1px solid var(--line); background:var(--surface); cursor:pointer; }
.vdr-merge-btn.accept { border-color:var(--green); color:var(--green); }
.vdr-merge-btn.accept:hover { background:var(--green); color:var(--text-on-accent); }
.vdr-merge-btn.reject { border-color:var(--red); color:var(--red); }
.vdr-merge-btn.reject:hover { background:var(--red); color:var(--text-on-accent); }
.vdr-merge-btn.edit   { color:var(--dim); }
.vdr-merge-btn.edit:hover { background:var(--grey-100); }
.vdr-merge-row.accepted { background:rgba(31,171,106,.04); border-left:3px solid var(--green); }
.vdr-merge-row.rejected { background:var(--grey-50); opacity:.55; }

/* §69 Showcase fallback card */
.showcase-fallback { display:flex; flex-direction:column; align-items:center; gap:12px; padding:28px 24px; border:1px solid var(--line); border-radius:var(--radius); background:var(--grey-50); max-width:420px; text-align:center; }
.showcase-fallback-icon { font-size:32px; }
.showcase-fallback-name { font-size:15px; font-weight:700; color:var(--text-strong); }
.showcase-fallback-stage { font-size:11px; font-weight:600; color:var(--dim); background:var(--grey-100); padding:2px 8px; border-radius:10px; display:inline-block; margin-top:-4px; }
.showcase-fallback-msg { font-size:12px; color:var(--dim); line-height:1.5; max-width:320px; }
.showcase-fallback-msg strong { color:var(--ink); }
.showcase-fallback-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; margin-top:4px; }
.showcase-fallback-btn { font-size:11.5px; font-weight:600; padding:6px 16px; border-radius:5px; border:1px solid var(--line); background:var(--surface); color:var(--ink); cursor:pointer; }
.showcase-fallback-btn:hover { background:var(--grey-100); }
.showcase-fallback-btn.primary { background:var(--blue); color:var(--text-on-accent); border-color:var(--blue); }
.showcase-fallback-btn.primary:hover { background:var(--navy); border-color:var(--text-strong); }
.showcase-fallback-badge { font-size:10px; color:var(--dim); font-style:italic; }

/* §70 ITC adder matrix — compliance breakdown */
.itc-matrix { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; max-width:500px; }
.itc-matrix-head { display:flex; align-items:center; gap:8px; padding:9px 12px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.itc-matrix-title { font-size:12px; font-weight:700; color:var(--text-strong); flex:1; }
.itc-matrix-total { font-size:13px; font-weight:700; font-family:var(--font-mono); color:var(--green); }
.itc-matrix-credit { font-size:11px; color:var(--dim); }
.itc-row { display:flex; align-items:center; gap:10px; padding:8px 12px; border-bottom:1px solid var(--line); font-size:12px; }
.itc-row:last-child { border-bottom:none; }
.itc-row-status { font-size:13px; flex-shrink:0; width:18px; text-align:center; }
.itc-row-name { flex:1; color:var(--ink); }
.itc-row-req { font-size:10px; color:var(--dim); }
.itc-row-rate { font-size:12px; font-weight:700; font-family:var(--font-mono); min-width:36px; text-align:right; flex-shrink:0; }
.itc-row-rate.earn  { color:var(--green); }
.itc-row-rate.miss  { color:var(--grey-300); text-decoration:line-through; }
.itc-row-rate.warn  { color:var(--orange); }
.itc-matrix-foot { padding:8px 12px; background:var(--grey-50); border-top:1px solid var(--line); font-size:10px; color:var(--dim); }

/* §71 Field provenance trace — trust the number */
.prov-panel { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:480px; }
.prov-panel-head { display:flex; align-items:center; gap:8px; padding:9px 12px; background:var(--grey-50); border-bottom:1px solid var(--line); }
.prov-field-id { font-size:9px; font-family:var(--font-mono); color:var(--dim); background:var(--grey-100); padding:1px 5px; border-radius:3px; flex-shrink:0; }
.prov-field-name { font-size:12px; font-weight:600; color:var(--text-strong); flex:1; }
.prov-conf-chip { font-size:9.5px; font-weight:700; padding:2px 6px; border-radius:3px; flex-shrink:0; }
.prov-conf-chip.high   { background:rgba(31,171,106,.12); color:var(--green); }
.prov-conf-chip.med    { background:rgba(234,179,8,.14);  color:var(--tag-amber-fg); }
.prov-conf-chip.ai     { background:rgba(45,127,249,.12); color:var(--blue); }
.prov-body { padding:11px 12px; display:flex; flex-direction:column; gap:7px; }
.prov-row { display:flex; gap:8px; font-size:11.5px; align-items:flex-start; }
.prov-label { color:var(--dim); width:90px; flex-shrink:0; font-size:10.5px; }
.prov-val   { color:var(--ink); flex:1; line-height:1.35; }
.prov-val a { color:var(--blue); text-decoration:none; }
.prov-val a:hover { text-decoration:underline; }
.prov-chain { display:flex; flex-direction:column; gap:3px; margin-top:4px; }
.prov-chain-step { display:flex; align-items:center; gap:6px; font-size:10.5px; padding:3px 8px; border-left:2px solid var(--line); margin-left:8px; color:var(--dim); }
.prov-chain-step.current { border-left-color:var(--blue); color:var(--ink); font-weight:600; }
.prov-chain-step.prev    { border-left-color:var(--grey-200); }
.prov-chain-ts { font-family:var(--font-mono); font-size:9.5px; margin-left:auto; }

/* §72 Notification center panel */
.notif-panel { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:380px; box-shadow:var(--shadow); }
.notif-panel-head { display:flex; align-items:center; gap:8px; padding:10px 13px; border-bottom:1px solid var(--line); background:var(--grey-50); }
.notif-panel-title { font-size:13px; font-weight:700; color:var(--text-strong); flex:1; }
.notif-unread-badge { font-size:10px; font-weight:700; background:var(--red); color:var(--text-on-accent); border-radius:10px; padding:1px 6px; }
.notif-mark-all { font-size:10px; color:var(--blue); cursor:pointer; }
.notif-mark-all:hover { text-decoration:underline; }
.notif-list { max-height:320px; overflow-y:auto; }
.notif-row { display:flex; align-items:flex-start; gap:10px; padding:10px 13px; border-bottom:1px solid var(--line); cursor:pointer; transition:background .12s; }
.notif-row:last-child { border-bottom:none; }
.notif-row:hover { background:var(--grey-50); }
.notif-row.unread { background:rgba(45,127,249,.04); }
.notif-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; margin-top:4px; }
.notif-row.unread .notif-dot { background:var(--blue); }
.notif-row.read   .notif-dot { background:transparent; border:1.5px solid var(--grey-200); }
.notif-icon { font-size:14px; flex-shrink:0; width:20px; text-align:center; margin-top:1px; }
.notif-body { flex:1; }
.notif-text { font-size:12px; color:var(--ink); line-height:1.35; }
.notif-text strong { font-weight:600; }
.notif-meta { display:flex; gap:6px; margin-top:3px; align-items:center; }
.notif-project { font-size:10px; color:var(--dim); font-weight:600; }
.notif-ts { font-size:10px; color:var(--grey-300); font-family:var(--font-mono); margin-left:auto; }
.notif-panel-foot { padding:8px 13px; border-top:1px solid var(--line); text-align:center; }
.notif-panel-foot a { font-size:11px; color:var(--blue); text-decoration:none; }
.notif-panel-foot a:hover { text-decoration:underline; }

/* §73 Permit status matrix */
.permit-table { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.permit-table-head { display:grid; grid-template-columns:70px 1fr 90px 90px 1fr 80px; gap:0; background:var(--grey-50); border-bottom:1px solid var(--line); padding:6px 12px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dim); }
.permit-row { display:grid; grid-template-columns:70px 1fr 90px 90px 1fr 80px; gap:0; padding:8px 12px; border-bottom:1px solid var(--line); align-items:center; font-size:12px; }
.permit-row:last-child { border-bottom:none; }
.permit-row:hover { background:var(--grey-50); }
.permit-id   { font-family:var(--font-mono); font-size:10.5px; color:var(--dim); }
.permit-type { font-size:12px; font-weight:600; color:var(--ink); }
.permit-status-pill { display:inline-flex; align-items:center; gap:3px; font-size:10px; font-weight:700; border-radius:4px; padding:2px 6px; }
.permit-status-pill.approved  { background:rgba(40,167,69,.12); color:var(--tag-green-fg); }
.permit-status-pill.submitted { background:rgba(45,127,249,.1); color:var(--blue); }
.permit-status-pill.pending   { background:rgba(255,193,7,.15); color:var(--tag-amber-fg); }
.permit-status-pill.required  { background:var(--grey-100); color:var(--dim); }
.permit-status-pill.at-risk   { background:rgba(220,53,69,.1); color:var(--red); }
.permit-expiry      { font-size:11px; color:var(--ink); }
.permit-expiry-warn { color:var(--red); font-weight:600; }
.permit-agency { font-size:11px; color:var(--dim); }
.permit-cond   { font-size:11px; color:var(--dim); font-style:italic; }

/* §74 Audit trail table */
.audit-table { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.audit-table-head { display:grid; grid-template-columns:58px 84px 78px 1fr 110px; gap:0; background:var(--grey-50); border-bottom:1px solid var(--line); padding:6px 12px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dim); }
.audit-row { display:grid; grid-template-columns:58px 84px 78px 1fr 110px; gap:0; padding:8px 12px; border-bottom:1px solid var(--line); align-items:start; font-size:12px; }
.audit-row:last-child { border-bottom:none; }
.audit-row:hover { background:var(--grey-50); }
.audit-type-chip { display:inline-flex; align-items:center; font-size:9.5px; font-weight:700; border-radius:4px; padding:2px 5px; letter-spacing:.02em; }
.audit-type-chip.ai       { background:rgba(111,66,193,.1); color:var(--purple); }
.audit-type-chip.pm       { background:rgba(45,127,249,.1); color:var(--blue); }
.audit-type-chip.approval { background:rgba(40,167,69,.1); color:var(--tag-green-fg); }
.audit-type-chip.orc      { background:rgba(230,126,34,.1); color:var(--orange); }
.audit-type-chip.system   { background:var(--grey-100); color:var(--dim); }
.audit-ts     { font-family:var(--font-mono); font-size:10px; color:var(--dim); line-height:1.3; }
.audit-actor  { font-size:11px; font-weight:600; color:var(--ink); }
.audit-action { font-size:11px; color:var(--ink); line-height:1.35; }
.audit-var-key { font-family:var(--font-mono); font-size:9.5px; color:var(--blue); background:rgba(45,127,249,.07); border-radius:3px; padding:1px 4px; display:inline-block; }

/* §75 DSCR Forecast report card */
.report-detail-card { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface); }
.report-detail-head { padding:14px 16px; border-bottom:1px solid var(--line); background:var(--grey-50); }
.report-detail-title-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; flex-wrap:wrap; }
.report-detail-id   { font-family:var(--font-mono); font-size:10px; color:var(--dim); }
.report-detail-name { font-size:14px; font-weight:700; color:var(--text-strong); }
.report-detail-badge-live  { font-size:9.5px; font-weight:700; background:rgba(40,167,69,.12); color:var(--tag-green-fg); border-radius:4px; padding:2px 6px; }
.report-detail-badge-shell { font-size:9.5px; font-weight:700; background:var(--grey-100); color:var(--dim); border-radius:4px; padding:2px 6px; }
.report-detail-meta { display:flex; gap:14px; flex-wrap:wrap; }
.report-detail-meta-item { font-size:11px; color:var(--dim); }
.report-detail-meta-item b { color:var(--ink); }
.report-detail-body { padding:14px 16px; }
.dscr-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:12px; }
.dscr-cell { background:var(--grey-50); border:1px solid var(--line); border-radius:4px; padding:8px 10px; text-align:center; }
.dscr-cell-label { font-size:10px; color:var(--dim); margin-bottom:3px; }
.dscr-cell-val { font-size:15px; font-weight:700; }
.dscr-cell-val.pass { color:var(--tag-green-fg); }
.dscr-cell-val.warn { color:var(--orange); }
.dscr-cell-val.fail { color:var(--red); }
.dscr-cell-sub { font-size:9.5px; color:var(--dim); }
.dscr-threshold-note { font-size:10.5px; color:var(--dim); margin-bottom:10px; }
.dscr-threshold-note strong { color:var(--ink); }
.dscr-bar-chart { display:flex; align-items:flex-end; gap:4px; height:60px; border-bottom:1px solid var(--line); margin-bottom:6px; padding:0 2px; }
.dscr-bar-col   { flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; height:100%; justify-content:flex-end; }
.dscr-bar       { width:100%; border-radius:3px 3px 0 0; min-height:2px; }
.dscr-bar.pass  { background:rgba(40,167,69,.5); }
.dscr-bar.warn  { background:rgba(230,126,34,.5); }
.dscr-bar.fail  { background:rgba(220,53,69,.4); }
.dscr-bar-label { font-size:9px; color:var(--dim); font-family:var(--font-mono); }
.dscr-live-note { font-size:10px; color:var(--dim); margin-top:6px; }
.dscr-live-note a { color:var(--blue); }

/* §76 Project milestone row */
.milestone-list { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.milestone-row { display:grid; grid-template-columns:16px 1fr 90px 80px 80px; gap:8px; align-items:center; padding:9px 12px; border-bottom:1px solid var(--line); font-size:12px; }
.milestone-row:last-child { border-bottom:none; }
.milestone-row:hover { background:var(--grey-50); }
.milestone-dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }
.milestone-dot.complete    { background:var(--green); }
.milestone-dot.in-progress { background:var(--blue); }
.milestone-dot.at-risk     { background:var(--orange); }
.milestone-dot.scheduled   { background:var(--grey-200); border:1.5px solid var(--grey-300); }
.milestone-label     { font-weight:600; color:var(--ink); line-height:1.3; }
.milestone-label-sub { font-size:10.5px; font-weight:400; color:var(--dim); }
.milestone-date { font-family:var(--font-mono); font-size:11px; color:var(--ink); }
.milestone-status { font-size:10.5px; font-weight:700; }
.milestone-status.complete    { color:var(--tag-green-fg); }
.milestone-status.in-progress { color:var(--blue); }
.milestone-status.at-risk     { color:var(--orange); }
.milestone-status.scheduled   { color:var(--dim); }
.milestone-delta { font-size:10px; font-family:var(--font-mono); }
.milestone-delta.ahead    { color:var(--green); }
.milestone-delta.on-track { color:var(--dim); }
.milestone-delta.behind   { color:var(--red); }
