/* /Pages/AuditManager/AuditConduct.razor.rz.scp.css */
/*
    Audit conduct + findings scoped styles (SOL-289 / SOL-290). Fluent-not-Material: hairline borders,
    modest radius, no shadow. Repeated styling lives here, not as inline style= smells on the markup.
*/

/* ---- Checklist lines ---- */
.checklist-line[b-wxeeburzg8] {
    padding: 12px 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.checklist-line:last-child[b-wxeeburzg8] {
    border-bottom: none;
}

/* ---- Evidence sub-lists (checklist line + finding) ---- */
.evidence-block[b-wxeeburzg8] {
    padding-left: 10px;
    border-left: 2px solid var(--mud-palette-lines-default);
}

.evidence-row[b-wxeeburzg8] {
    padding: 3px 0;
    font-size: 0.8rem;
}

/* ---- Finding panels ---- */
.finding-panel[b-wxeeburzg8] {
    padding: 12px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    margin-bottom: 10px;
}

.finding-panel:last-child[b-wxeeburzg8] {
    margin-bottom: 0;
}

/* Attention accent: an open nonconformity with no verified-Effective CAPA, or a CAPA still in flight.
   A left border draws the eye without borrowing a conformant/green colour (false-assurance guard). */
.finding-panel--attention[b-wxeeburzg8] {
    border-left: 3px solid var(--mud-palette-warning);
}
/* /Pages/AuditManager/AuditFindingsList.razor.rz.scp.css */
/*
    Findings worklist scoped styles (SOL-319). Named classes rather than inline `style=` smells; nothing
    here encodes status meaning — all colour comes from AuditCoverageVisuals + the theme palette.
*/

.af-muted[b-q1pwtjr3dx] {
    opacity: 0.7;
}

.af-dash[b-q1pwtjr3dx] {
    opacity: 0.5;
}

.af-empty[b-q1pwtjr3dx] {
    opacity: 0.75;
}

/* Dense, spreadsheet-grade rows: the statement is the one free-text column, clamped to two lines with the
   full text available on hover/focus via the tooltip. */
.af-statement[b-q1pwtjr3dx] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    max-width: 34rem;
    line-height: 1.25rem;
}

.af-audit-title[b-q1pwtjr3dx] {
    display: block;
    max-width: 14rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* The effectiveness chip sits under the CAPA link as a secondary line — tighten it so the cell stays dense. */
.af-chip-tight[b-q1pwtjr3dx] {
    margin: 0;
}
/* /Pages/AuditManager/AuditPlan.razor.rz.scp.css */
/*
    Audit planning page scoped styles (SOL-288). Fluent-not-Material: hairline borders, modest radius,
    no shadow. Repeated styling lives here, not as inline style= smells on the markup.
*/

/* ---- Read-only clause tree (criteria set transparency) ---- */
.clause-line[b-dibwkbo5ai] {
    padding: 3px 0;
    font-size: 0.82rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.clause-line:last-child[b-dibwkbo5ai] {
    border-bottom: none;
}

.clause-line--child[b-dibwkbo5ai] {
    padding-left: 18px;
    opacity: 0.8;
}

/* ---- Team roster rows ---- */
.team-member[b-dibwkbo5ai] {
    padding: 6px 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.team-member:last-child[b-dibwkbo5ai] {
    border-bottom: none;
}

/* ---- Refused-attempt evidence rows ---- */
.refused-row[b-dibwkbo5ai] {
    padding: 4px 0 4px 6px;
    border-left: 3px solid var(--mud-palette-error);
    margin-bottom: 4px;
}
/* /Pages/AuditManager/AuditProgramme.razor.rz.scp.css */
/*
    Audit program + coverage surface scoped styles (SOL-287). Fluent-not-Material: hairline borders,
    modest radius, no shadow. Repeated styling lives here, not as inline style= smells on the markup.
*/

/* ---- Programme list items (clickable, keyboard-selectable) ---- */
.programme-item[b-j05pt45glq] {
    padding: 8px 10px;
    border: 1px solid var(--mud-palette-lines-default);
    border-left: 3px solid transparent;
    border-radius: 2px;
    margin-bottom: 4px;
    cursor: pointer;
    transition: background-color 120ms ease, border-color 120ms ease;
}

.programme-item:hover[b-j05pt45glq] {
    background-color: var(--mud-palette-action-default-hover);
}

.programme-item:focus-visible[b-j05pt45glq] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 1px;
}

.programme-item--selected[b-j05pt45glq] {
    border-left-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

/* ---- Coverage row: attention accent for a NOT-ASSESSED area (the TF-6 guard, never green) ---- */
.coverage-cell[b-j05pt45glq] {
    border-left: 3px solid transparent;
    padding-left: 6px;
}

.coverage-cell--attention[b-j05pt45glq] {
    /* Neutral "warning" hue — an amber attention accent, deliberately NOT a success/green cue. */
    border-left-color: var(--mud-palette-warning);
}

/* ---- Audit row (clickable, keyboard-selectable → navigates to the audit plan) ---- */
.audit-row[b-j05pt45glq] {
    cursor: pointer;
    outline-offset: 2px;
}

.audit-row:focus-visible[b-j05pt45glq] {
    outline: 2px solid var(--mud-palette-primary);
}
/* /Pages/AuditManager/AuditReportPage.razor.rz.scp.css */
/* Version-history rows — Fluent-dense: a hairline divider between rows, no shadow, no card-per-row. */
.report-version-row[b-4fp3odxe2z] {
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.report-version-row:last-child[b-4fp3odxe2z] {
    border-bottom: none;
}
/* /Pages/AuditManager/RaiseAuditFindingDialog.razor.rz.scp.css */
/*
    Raise-finding dialog scoped styles (SOL-290). Fluent-not-Material: hairline, no shadow.
*/

.evidence-row[b-bg93j57257] {
    padding: 4px 0;
    font-size: 0.82rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.evidence-row:last-child[b-bg93j57257] {
    border-bottom: none;
}
/* /Pages/DMS/Compliance/ComplianceDashboard.razor.rz.scp.css */
/* Compliance dashboard — the summary tile row.

   Grid math: five tiles do not fit MudGrid's twelve columns. `md="2"` × 5 = 10/12, which left a dead
   gutter on the right while squeezing every tile narrower than it needed to be; `xs="6" sm="4"`
   orphaned the fifth card alone on the last row. A CSS grid states the intent directly and always
   fills the width:

     xs  (<600px)   2 tracks — tiles 1-4 pair up, tile 5 spans both (no lonely half-card)
     sm  (600-960)  3 tracks — tiles 1-3, then tile 4 + tile 5 spanning the remaining two tracks
     md+ (>=960px)  5 tracks — one exact row, no dead gutter

   `align-items: stretch` (the grid default, restated for intent) gives every tile in a row the same
   height; the tile's own bottom-pinned footer is what keeps the values on a shared baseline. */

.compliance-tiles[b-4cpkee88pt] {
    display: grid;
    gap: 0.75rem;
    align-items: stretch;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.compliance-tiles__cell[b-4cpkee88pt] {
    display: flex;
    min-width: 0;
}

.compliance-tiles__cell--fills-row[b-4cpkee88pt] {
    grid-column: span 2;
}

@media (min-width: 600px) {
    .compliance-tiles[b-4cpkee88pt] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 960px) {
    .compliance-tiles[b-4cpkee88pt] {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .compliance-tiles__cell--fills-row[b-4cpkee88pt] {
        grid-column: auto;
    }
}
/* /Pages/DMS/Compliance/ComplianceMetricTile.razor.rz.scp.css */
/* ComplianceMetricTile — Fluent idiom: outlined hairline, no elevation, modest radius, dense padding.

   Every rule pierces with ::deep from the authored `.compliance-tile-host` wrapper: MudPaper/MudText
   render their own roots, which do NOT carry this component's CSS-isolation scope attribute, so a bare
   `.compliance-tile { ... }` rule here would compile to a selector that matches nothing.

   The tile is a flex COLUMN at full height so that (a) every tile in a row is the same height, (b) the
   label/value block sits at the top on a shared baseline across the row, and (c) the optional footer is
   pushed to the bottom edge instead of stretching the tile taller than its footer-less neighbours.
   Every colour is a palette token — no hexes, no inline styles. */

.compliance-tile-host[b-zjmfy6vnxo] {
    display: flex;
    height: 100%;
    /* Fill the grid cell the dashboard places us in, whatever its width. */
    flex: 1 1 auto;
    min-width: 0;
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    padding: 0.75rem 1rem;
    border-radius: var(--mud-default-borderradius);
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile__label {
    line-height: 1.2;
    /* A label that wraps must not push its value a line below the neighbouring tile's value. */
    min-height: 1.2em;
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile__figure {
    margin-top: 0.25rem;
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile__value {
    font-weight: 600;
    line-height: 1.1;
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile__suffix {
    line-height: 1.1;
}

.compliance-tile-host[b-zjmfy6vnxo]  .compliance-tile__footer {
    /* Pin to the bottom edge; this is what keeps footer-less tiles from collapsing shorter. */
    margin-top: auto;
    padding-top: 0.5rem;
    line-height: 1.2;
}
/* /Pages/Insights/AuditMetricTile.razor.rz.scp.css */
/* AuditMetricTile (SOL-292) — one headline figure. Fluent idiom: outlined hairline, no elevation,
   modest radius. A drill-through tile (.audit-tile--link, wrapped in .audit-tile-link) lifts to the
   primary edge on hover/focus rather than floating on a shadow; a static tile is inert. Every colour
   is a palette token — no hexes; the number's tone comes from AuditCoverageVisuals via the Accent
   parameter (never-green). */

.audit-tile-link[b-kvp3z72liy] {
    display: block;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

.audit-tile[b-kvp3z72liy] {
    height: 100%;
    padding: 0.75rem 1rem;
    border-radius: var(--mud-default-borderradius);
    transition: border-color 120ms ease, background-color 120ms ease;
}

.audit-tile__value[b-kvp3z72liy] {
    font-weight: 600;
    line-height: 1.1;
}

.audit-tile__caption[b-kvp3z72liy] {
    line-height: 1.1;
}

.audit-tile__chevron[b-kvp3z72liy] {
    color: var(--mud-palette-text-secondary);
    opacity: 0;
    transition: opacity 120ms ease, color 120ms ease;
}

.audit-tile-link:hover .audit-tile--link[b-kvp3z72liy],
.audit-tile-link:focus-visible .audit-tile--link[b-kvp3z72liy] {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.audit-tile-link:hover .audit-tile__chevron[b-kvp3z72liy],
.audit-tile-link:focus-visible .audit-tile__chevron[b-kvp3z72liy] {
    opacity: 1;
    color: var(--mud-palette-primary);
}

.audit-tile-link:focus-visible[b-kvp3z72liy] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
    border-radius: var(--mud-default-borderradius);
}
/* /Pages/Insights/AuditOverviewBoard.razor.rz.scp.css */
/* Audit Manager Overview board (SOL-292) — Fluent-not-Material: outlined panels, no elevation, modest
   radius, dense rows. Colour is reserved for coverage/finding tone via AuditCoverageVisuals (never-green);
   nothing here hardcodes a hex. Section heads are quiet dividers, not Material heroes.

   Layout classes sit on the authored `.audit-board` wrapper and on the MudPaper (.audit-mf4) inside it.
   A component's rendered root does not receive this component's CSS-isolation scope attribute, so rules
   that target a MudBlazor root are anchored on `.audit-board` and pierce the boundary with ::deep. */

/* ── Section heads — a quiet label strip between metric groups ───────────────────────────────── */
.audit-board .audit-section-head[b-gtvuk5pxcv] {
    display: flex;
    align-items: center;
    font-weight: 600;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.5rem;
}

/* ── MF-4 readiness readout — the coverage-weighted conformance headline ─────────────────────── */
.audit-board[b-gtvuk5pxcv]  .audit-mf4 {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem 1.25rem;
}

.audit-board[b-gtvuk5pxcv]  .audit-mf4__icon {
    flex-shrink: 0;
    margin-top: 0.25rem;
}

.audit-board[b-gtvuk5pxcv]  .audit-mf4__body {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.audit-board[b-gtvuk5pxcv]  .audit-mf4__value {
    font-weight: 700;
    line-height: 1.05;
}
/* /Pages/Insights/DmsMetricTile.razor.rz.scp.css */
/* DmsMetricTile (SOL-103) — one drill-through headline figure. Fluent idiom: outlined hairline, no
   elevation, modest radius; the tile lifts to the primary edge on hover/focus rather than floating on
   a shadow. Hover/focus affordances live here on the tile's own anchor (the whole tile is the link).
   Every colour is a palette token — no hexes. */

.dms-tile-link[b-c9dto7cn8v] {
    display: block;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

.dms-tile[b-c9dto7cn8v] {
    height: 100%;
    padding: 0.75rem 1rem;
    border-radius: var(--mud-default-borderradius);
    transition: border-color 120ms ease, background-color 120ms ease;
}

.dms-tile__value[b-c9dto7cn8v] {
    font-weight: 600;
    line-height: 1.1;
}

.dms-tile__chevron[b-c9dto7cn8v] {
    color: var(--mud-palette-text-secondary);
    opacity: 0;
    transition: opacity 120ms ease, color 120ms ease;
}

.dms-tile-link:hover .dms-tile[b-c9dto7cn8v],
.dms-tile-link:focus-visible .dms-tile[b-c9dto7cn8v] {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.dms-tile-link:hover .dms-tile__chevron[b-c9dto7cn8v],
.dms-tile-link:focus-visible .dms-tile__chevron[b-c9dto7cn8v] {
    opacity: 1;
    color: var(--mud-palette-primary);
}

.dms-tile-link:focus-visible[b-c9dto7cn8v] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
    border-radius: var(--mud-default-borderradius);
}
/* /Pages/Insights/DmsOverviewBoard.razor.rz.scp.css */
/* DMS Overview board (SOL-103) — Fluent-not-Material: outlined panels, no elevation, modest radius,
   dense rows. Colour is reserved for status/risk (overdue = error, overdue acks = warning) via the
   MudBlazor palette tokens; nothing here hardcodes a hex. Hover/focus lifts a drill-through surface
   to the primary edge rather than floating it on a shadow. */

/* Metric-tile styling lives in the tile's own scoped CSS (DmsMetricTile.razor.css), the way the
   Enterprise Overview card owns its own face — a class passed to a child component is not in this
   board's scope. */

/* All layout classes below sit on MudBlazor components (MudPaper = .dms-panel, MudLink =
   .dms-panel__head / .dms-doc-row) or on authored children inside them. A component's rendered root
   does NOT receive this component's CSS-isolation scope attribute, so the rules are anchored on the
   authored `.dms-board` wrapper and pierce the component boundary with ::deep. Without ::deep the
   panels/rows collapse to inline anchors and the lists render as run-together text. */

/* ── Panels (overdue / upcoming / acks / classification / most-requested) ──────────────────── */
.dms-board[b-u9ozeo7s0y]  .dms-panel {
    height: 100%;
    overflow: hidden;
}

/* Panel header — a drill-through anchor when it links out, a static strip otherwise. */
.dms-board[b-u9ozeo7s0y]  .dms-panel__head {
    display: flex;
    align-items: center;
    padding: 0.625rem 1rem;
    color: inherit;
    text-decoration: none;
    transition: background-color 120ms ease;
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__head:not(.dms-panel__head--static):hover,
.dms-board[b-u9ozeo7s0y]  .dms-panel__head:not(.dms-panel__head--static):focus-visible {
    background-color: var(--mud-palette-action-default-hover);
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__head:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__title {
    font-weight: 600;
    font-size: 0.8125rem;
    flex-grow: 1;
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__count {
    font-weight: 600;
    margin-left: auto;
    margin-right: 0.5rem;
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__chevron {
    opacity: 0.4;
    transition: opacity 120ms ease, color 120ms ease;
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__head:hover .dms-panel__chevron,
.dms-board[b-u9ozeo7s0y]  .dms-panel__head:focus-visible .dms-panel__chevron {
    opacity: 1;
    color: var(--mud-palette-primary);
}

.dms-board[b-u9ozeo7s0y]  .dms-panel__empty {
    padding: 1rem;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
}

/* ── Dense document rows inside a panel ─────────────────────────────────────────────────────── */
.dms-board[b-u9ozeo7s0y]  .dms-doc-row {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.4rem 1rem;
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid var(--mud-palette-divider);
    transition: background-color 120ms ease;
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row:last-child {
    border-bottom: none;
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row:hover,
.dms-board[b-u9ozeo7s0y]  .dms-doc-row:focus-visible {
    background-color: var(--mud-palette-action-default-hover);
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row__num {
    font-family: var(--mud-typography-caption-family, monospace);
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
    flex-shrink: 0;
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row__title {
    flex-grow: 1;
    font-size: 0.8125rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row__meta {
    flex-shrink: 0;
    font-size: 0.8125rem;
    font-weight: 600;
    text-align: right;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
}

/* Overdue is the one place a risk hue is allowed to do work on a row. */
.dms-board[b-u9ozeo7s0y]  .dms-doc-row__meta--overdue {
    color: var(--mud-palette-error);
}

.dms-board[b-u9ozeo7s0y]  .dms-doc-row__meta-sub {
    font-size: 0.6875rem;
    font-weight: 400;
    color: var(--mud-palette-text-secondary);
}

/* ── Acknowledgments split cell ─────────────────────────────────────────────────────────────── */
.dms-board[b-u9ozeo7s0y]  .dms-ack {
    display: flex;
    align-items: stretch;
    justify-content: space-around;
    padding: 0.75rem 1rem;
    gap: 1rem;
}

.dms-board[b-u9ozeo7s0y]  .dms-ack__cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex-grow: 1;
}
/* /Pages/Insights/EnterpriseOverviewBoard.razor.rz.scp.css */
/* Enterprise Overview board (SOL-101) — the drill-through wrapper around each module card.

   The whole card is the drill-through link, so the interactive affordances (hover lift, focus ring,
   chevron brighten) live on the anchor here and reach into the child card face with ::deep — the
   card component (EnterpriseOverviewModuleCard) owns the card's own resting styles. Fluent idiom:
   the card lifts to the primary edge on hover/focus, no elevation, no fill flood. */

/* The anchor/wrapper is stretched so every card in a row is the same height. */
.eo-card-link[b-4ab55pt55a] {
    display: block;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

/* Hover / focus on the drill-through anchor lifts the present card to the primary edge — ::deep
   pierces the child component boundary to reach the card face it renders. */
.eo-card-link:hover[b-4ab55pt55a]  .eo-card--present,
.eo-card-link:focus-visible[b-4ab55pt55a]  .eo-card--present {
    border-color: var(--mud-palette-primary);
    background-color: var(--mud-palette-action-default-hover);
}

.eo-card-link:hover[b-4ab55pt55a]  .eo-card__chevron,
.eo-card-link:focus-visible[b-4ab55pt55a]  .eo-card__chevron {
    opacity: 1;
    color: var(--mud-palette-primary);
}

.eo-card-link:focus-visible[b-4ab55pt55a] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
    border-radius: var(--mud-default-borderradius);
}
/* /Pages/Insights/EnterpriseOverviewModuleCard.razor.rz.scp.css */
/* EnterpriseOverviewModuleCard (SOL-101) — the card face.

   The non-Present cards deliberately mirror the SOL-114 InsightScoreCellStatus treatment: muted grey
   on a dashed hairline border, OFF the health colour scale (no success/warning/error hue, no score
   bar), so a "not assessed" / "no data yet" card can never be read as a healthy figure. The explicit
   label + icon carry the meaning (colour-blind safe). Board-level alarm lives on the shared Degraded
   banner, never on a card. Fluent idiom throughout: hairline borders, modest radius, dense spacing,
   no elevation. Hover/focus affordances live on the parent anchor (EnterpriseOverviewBoard.razor.css)
   because the whole card is the drill-through. */

.eo-card[b-uqbssuq0lp] {
    height: 100%;
    padding: 16px;
    border-radius: var(--mud-default-borderradius);
    background: transparent;
    transition: border-color .12s ease, background-color .12s ease;
}

/* Present (live headline) — a solid hairline card that reads as interactive (the parent anchor
   lifts it to the primary edge on hover/focus). */
.eo-card--present[b-uqbssuq0lp] {
    border: 1px solid var(--mud-palette-lines-default);
}

/* Structurally-absent (Empty — "no data yet"): dashed hairline, the non-colour "absent" signal. */
.eo-card--absent[b-uqbssuq0lp] {
    border: 1px dashed var(--mud-palette-lines-default);
}

/* Held-out (Faulted / Stale — "not assessed"): a stronger dashed border so a failed assessment is
   visually distinct from the benign no-data-yet card, still without borrowing any health hue. */
.eo-card--held-out[b-uqbssuq0lp] {
    border: 1px dashed var(--mud-palette-text-secondary);
}

.eo-card__module-icon[b-uqbssuq0lp] {
    color: var(--mud-palette-text-secondary);
}

/* Chevron only appears on drillable cards; it brightens as the drill affordance on hover/focus
   (that state is driven from the parent anchor via ::deep). */
.eo-card__chevron[b-uqbssuq0lp] {
    color: var(--mud-palette-text-secondary);
    opacity: .5;
    transition: opacity .12s ease, color .12s ease;
}

.eo-card__value[b-uqbssuq0lp] {
    line-height: 1.1;
    font-weight: 600;
}

/* A Stale card shows its older value dimmed — present, but never as a current reading. */
.eo-card__value--muted[b-uqbssuq0lp] {
    color: var(--mud-palette-text-secondary);
}

/* The explicit status line (label + icon + reason) — the load-bearing "not assessed" treatment. */
.eo-card__state[b-uqbssuq0lp] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0 8px;
    margin-top: 8px;
}

.eo-card__state-icon[b-uqbssuq0lp] {
    align-self: center;
    color: var(--mud-palette-text-secondary);
}

.eo-card__state-label[b-uqbssuq0lp] {
    font-size: var(--mud-typography-body2-size);
    color: var(--mud-palette-text-secondary);
}

/* "Not assessed" reads bold — the unmissable, non-colour emphasis for the held-out pair. */
.eo-card__state-label--held-out[b-uqbssuq0lp] {
    font-weight: 600;
    color: var(--mud-palette-text-primary);
}

.eo-card__state-detail[b-uqbssuq0lp] {
    flex-basis: 100%;
    font-size: var(--mud-typography-caption-size);
    color: var(--mud-palette-text-secondary);
}
/* /Pages/Insights/InsightScoreCellStatus.razor.rz.scp.css */
/* InsightScoreCellStatus (SOL-114) — the "not assessed" / "not included" cell treatment.
   Deliberately OFF the health colour scale: muted grey text on a dashed hairline border, no
   fill on the Mud palette's success/warning/error hues, no score bar. The dashed border is the
   non-colour "absent" signal (survives colour-blind viewing); the explicit label + icon carry
   the meaning. Fluent idiom: hairline border, modest radius, dense spacing, no elevation. */

.insight-cell-status[b-xjqsnqkr8t] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0 8px;
    padding: 6px 10px;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background: transparent;
    margin-bottom: 8px;
}

/* Held-out (Faulted / Stale) — the pair that degrades the board. Slightly stronger border so a
   failed assessment is visually distinct from the benign structurally-absent set, without ever
   borrowing a health hue (the board-level alarm colour lives on the Degraded banner). */
.insight-cell-status--held-out[b-xjqsnqkr8t] {
    border-color: var(--mud-palette-text-secondary);
}

.insight-cell-status__icon[b-xjqsnqkr8t] {
    align-self: center;
    color: var(--mud-palette-text-secondary);
}

.insight-cell-status__label[b-xjqsnqkr8t] {
    min-width: 160px;
    font-size: var(--mud-typography-body2-size);
    color: var(--mud-palette-text-primary);
}

.insight-cell-status__state[b-xjqsnqkr8t] {
    font-size: var(--mud-typography-body2-size);
    color: var(--mud-palette-text-secondary);
}

/* "Not assessed" reads bold — the unmissable, non-colour emphasis for the held-out pair. */
.insight-cell-status__state--held-out[b-xjqsnqkr8t] {
    font-weight: 600;
    color: var(--mud-palette-text-primary);
}

.insight-cell-status__detail[b-xjqsnqkr8t] {
    font-size: var(--mud-typography-caption-size);
    color: var(--mud-palette-text-secondary);
}
/* /Pages/Portal/Portal.razor.rz.scp.css */
/* ===========================================================================
   PORTAL ("My Work") — scoped styles (net-new, registry-exempt).
   =========================================================================== */

.portal-header[b-3ua82fjdhs] {
    background: linear-gradient(135deg, var(--mud-palette-primary-hover), transparent);
    border-radius: var(--mud-default-borderradius);
}

.portal-wave[b-3ua82fjdhs] {
    display: inline-block;
}

.portal-task-row[b-3ua82fjdhs] {
    border-bottom: 1px solid var(--mud-palette-divider);
    border-radius: 4px;
    /* transparent left accent reserved so overdue rows don't shift content sideways */
    border-left: 3px solid transparent;
}

.portal-task-row:last-child[b-3ua82fjdhs] {
    border-bottom: none;
}

/* Clickable affordance: pointer + subtle hover highlight, whole row is the target. */
.portal-task-clickable[b-3ua82fjdhs] {
    cursor: pointer;
    transition: background-color .12s ease;
}

.portal-task-clickable:hover[b-3ua82fjdhs] {
    background-color: var(--mud-palette-action-default-hover);
}

/* Overdue rows get a thin red left accent so urgency reads without chip color. */
.portal-task-overdue[b-3ua82fjdhs] {
    border-left: 3px solid var(--mud-palette-error);
}

/* Celebratory zero-state card. */
.portal-empty[b-3ua82fjdhs] {
    border-style: dashed;
}

/* Fixed-width tag column so every task description starts at the same x.
   88px comfortably fits the widest tag ("Signals") + small-chip padding. */
.portal-tag-col[b-3ua82fjdhs] {
    flex: 0 0 88px;
    min-width: 88px;
    display: flex;
}

/* Make every module chip render at an identical width so the badges form a
   clean uniform column of pills. The chip fills the 88px tag column and its
   label is centered for a tidy stacked-pill look. */
.portal-tag-col[b-3ua82fjdhs]  .mud-chip {
    width: 100%;
    margin: 0;
    justify-content: center;
}

.portal-tag-col[b-3ua82fjdhs]  .mud-chip-content {
    width: 100%;
    justify-content: center;
}

.portal-quick[b-3ua82fjdhs] {
    background: var(--mud-palette-background-grey);
}

/* Featured-signal hero: gentle branded gradient card. */
.portal-signal-hero[b-3ua82fjdhs] {
    background: linear-gradient(135deg, var(--mud-palette-primary), var(--mud-palette-secondary));
    color: var(--mud-palette-primary-text);
}

.portal-signal-hero .mud-icon-root[b-3ua82fjdhs],
.portal-signal-hero .mud-typography[b-3ua82fjdhs] {
    color: var(--mud-palette-primary-text);
}

/* --- Mini calendar styled as a read-only display, not a form input --------- */
/* Hide the hidden text-field shell MudDatePicker renders above the static calendar. */
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-infrom,
.portal-calendar-picker[b-3ua82fjdhs]  .mud-input-control {
    display: none;
}

/* Flatten the static paper so it sits inside our own MudPaper cleanly. */
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-container,
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-paper {
    box-shadow: none;
    background: transparent;
}

/* Stretch the static picker to fill the card width instead of its fixed ~310px,
   so the day grid spans the card and the right-hand gap is gone. The card is
   ~300-360px wide (md=4 rail), so this is a small delta — cells stay sensible. */
.portal-calendar-picker[b-3ua82fjdhs],
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-container,
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-paper,
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-content,
.portal-calendar-picker[b-3ua82fjdhs]  .mud-picker-calendar-container {
    width: 100%;
    max-width: 100%;
}

/* Due-day marker: a small dot under the day number.
   The .portal-due-day class is injected via AdditionalDateClasses onto the day button. */
.portal-calendar-picker[b-3ua82fjdhs]  .portal-due-day {
    position: relative;
    font-weight: 600;
}

.portal-calendar-picker[b-3ua82fjdhs]  .portal-due-day::after {
    content: "";
    position: absolute;
    bottom: 4px;
    left: 50%;
    transform: translateX(-50%);
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--mud-palette-error);
}
/* /Shared/Components/DesignSystem/LoadStateView.razor.rz.scp.css */
/*
    LoadStateView scoped styles — replaces the inline `style="opacity:.7; max-width:520px;"` smell
    that was repeated across the CAPA error / not-in-scope / empty panels with one named class.
*/
.ds-loadstate-detail[b-p2g4349wia] {
    opacity: 0.7;
    max-width: 520px;
}
