/* Directly maintained component stylesheet â€” Plan 758: CSS modularisation.
 * Edit this file directly; frontend/static/osperan.css imports it.
 * -----------------------------------------------------------------------
 * components.css â€” UI components, feature modules, view-specific rules.
 */
/* ======================================================================
 * Content column + page transitions
 * ====================================================================== */

:root {
  --forge-dyn-fg: var(--text-secondary);
  --forge-dyn-fill: var(--surface-muted);
  --forge-dyn-stroke: var(--border-subtle);
  --surface: var(--surface-primary);
  --text-link: var(--brand-blue);
}

.forge-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  background: var(--bg-page);
  gap: 0;
  /* Clip horizontal overflow so the page-header band's full-bleed
       pseudo-element (extending past page_root's 1600px cap) is cut
       cleanly at .forge-content's left/right edges. overflow-x: clip
       (not hidden) preserves the topbar's position: sticky. */
  overflow-x: clip;
}
.forge-page {
  display: flex;
  flex-direction: column;
  padding: var(--layout-page-gutter-top-responsive) var(--layout-page-gutter-x-responsive) var(--space-8);
  flex: 1;
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
  align-items: stretch;
  gap: 0;
  /* A short fade keeps route changes perceptible without shifting content. */
  animation: page-in var(--motion-slow) var(--ease-out-quart) both;
  container-type: inline-size;
  container-name: forge-page;
}
/* NiceGUI 3.9+ renders ui.column() with default_classes='nicegui-column'.
   nicegui.css defines .nicegui-column { align-items: flex-start } which
   collapses children to content-width at every nesting level.
   This two-class rule (specificity 0,2,0) beats nicegui.css (0,1,0)
   and applies recursively to every ui.column() inside a page. */
.forge-page .nicegui-column,
.forge-content .nicegui-column {
  align-items: stretch;
}

/* Motion keyframes â€” shared by .forge-page entrance, AI
   processing pulse, popovers, skeleton loaders. Reduced-motion overrides
   for these keyframes live in tokens.css (prefers-reduced-motion block). */
@keyframes page-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes fade-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes scale-in {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes pulse-ring {
  0% {
    box-shadow: 0 0 0 0 rgba(var(--terracotta-rgb), 0.4);
  }
  70% {
    box-shadow: 0 0 0 8px rgba(var(--terracotta-rgb), 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(var(--terracotta-rgb), 0);
  }
}
/* Backwards-compatible alias â€” existing rules referencing forgePageFade keep
   their behaviour. New uses should prefer fade-in / page-in directly. */
@keyframes forgePageFade {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.forge-data-table-wrap {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  overflow-x: clip;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-card);
}
.forge-data-table,
.forge-queue-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  min-width: 0;
}
.forge-data-table-wrap--horizontal-scroll { overflow-x: auto; }
.forge-data-table--horizontal-scroll { width: max-content; min-width: 100%; table-layout: auto; }
.forge-data-table-wrap--horizontal-scroll:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: -2px;
}
.forge-data-table th,
.forge-data-table td,
.forge-queue-table th,
.forge-queue-table td { min-width: 0; overflow-wrap: anywhere; }
.forge-data-table col.forge-table-priority--secondary,
.forge-queue-table col.forge-table-priority--secondary { display: none; }
.forge-data-table .forge-table-priority--secondary,
.forge-queue-table .forge-table-priority--secondary { display: none; }
@media (min-width: 835px) {
  .forge-data-table-wrap[aria-label="Registration audit activity"] .forge-data-table__expand { display: none; }
  .forge-data-table-wrap[aria-label="Registration audit activity"] .forge-data-table col.forge-table-priority--secondary { display: table-column; }
  .forge-data-table-wrap[aria-label="Registration audit activity"] .forge-data-table .forge-table-priority--secondary { display: table-cell; }
}
.forge-data-table-wrap[aria-label="Registration audit activity"] .forge-data-table__expand:focus-visible {
  color: var(--brand-terracotta);
}
.forge-data-table__detail-list { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); margin: 0; }
.forge-data-table__detail-field { min-width: 0; }
.forge-data-table__detail-field dt,
.forge-matrix-record__status dt { color: var(--text-muted); font-size: .75rem; font-weight: 600; }
.forge-data-table__detail-field dd,
.forge-matrix-record__status dd { margin: 4px 0 0; overflow-wrap: anywhere; }
.forge-matrix-records { display: grid; gap: 12px; width: 100%; min-width: 0; }
.forge-matrix-record { min-width: 0; padding: 14px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--bg-card); }
.forge-matrix-record h3 { margin: 0 0 12px; overflow-wrap: anywhere; }
.forge-matrix-record__statuses { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); margin: 0; }
@media (max-width: 834px) {
  .forge-queue-table--grouped { display: block; }
  .forge-queue-table--grouped thead { display: none; }
  .forge-queue-table--grouped tbody { display: contents; }
  .forge-queue-table--grouped tr { display: grid; gap: 8px; margin: 8px; padding: 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); }
  .forge-queue-table--grouped td:not(.forge-queue-table__caret-cell) { display: grid; grid-template-columns: minmax(6rem, 35%) minmax(0, 1fr); gap: 8px; min-width: 0; }
  .forge-queue-table--grouped td:not(.forge-queue-table__caret-cell)::before { content: attr(data-label); color: var(--text-muted); font-size: .75rem; font-weight: 600; }
  .forge-queue-table--grouped .forge-queue-table__caret-cell { display: block; }
  .forge-queue-table--grouped .forge-data-table__details { display: block; }
  .forge-queue-table--grouped .forge-data-table__details > td { display: block; }
  .forge-queue-table--grouped [hidden] { display: none !important; }
}
.forge-data-table:not(.forge-queue-table--grouped) tbody tr,
.forge-queue-table:not(.forge-queue-table--grouped) tbody tr { height: 3rem; }
.forge-data-table .forge-table-role--primary,
.forge-queue-table .forge-table-role--primary {
  color: var(--text-primary);
  font-weight: 600;
  overflow-wrap: anywhere;
}
.forge-table-role--content,
.forge-table-role--supporting { overflow-wrap: anywhere; }
.forge-table-role--status,
.forge-table-role--progress,
.forge-table-role--date { overflow-wrap: normal; word-break: normal; }
.forge-table-role--actions { white-space: normal; }
.forge-table-role--actions .forge-requirements-actions { flex-wrap: wrap; min-width: 0; }
.forge-data-table caption,
.forge-queue-table caption {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.forge-data-table thead th,
.forge-queue-table thead th {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}
.forge-data-table thead th.forge-data-table__cell--anywhere {
  white-space: normal;
  overflow-wrap: anywhere;
}
.forge-data-table tbody td,
.forge-data-table tbody th,
.forge-queue-table tbody td,
.forge-queue-table tbody th {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  vertical-align: top;
}
.forge-data-table tbody td.forge-table-role--status,
.forge-data-table tbody td.forge-table-role--progress,
.forge-data-table tbody td.forge-table-role--date,
.forge-data-table tbody td.forge-table-role--actions,
.forge-queue-table tbody td.forge-table-role--status,
.forge-queue-table tbody td.forge-table-role--progress,
.forge-queue-table tbody td.forge-table-role--date,
.forge-queue-table tbody td.forge-table-role--actions { vertical-align: middle; }
.forge-data-table tbody tr:hover,
.forge-queue-table tbody tr:hover { background: var(--bg-page); }
.forge-data-table tbody tr:last-child td,
.forge-queue-table tbody tr:last-child td {
  border-bottom: 0;
}
.forge-data-table__cell--right {
  text-align: right;
}
.forge-data-table__cell--center {
  text-align: center;
}
.forge-data-table__cell--anywhere {
  overflow-wrap: anywhere;
}
.forge-data-table__cell--nowrap {
  white-space: nowrap;
}
.forge-data-table__cell--muted {
  color: var(--text-muted);
}
.forge-data-table__cell--left { text-align: left; }
.forge-queue-table {
  background: var(--bg-card);
}
.forge-queue-table__cell--selection,
.forge-queue-table__caret-cell {
  padding-inline: 8px !important;
  text-align: center;
}
.forge-queue-table__cell--actions { text-align: right; white-space: normal; }
.forge-queue-table__expansion td { padding: 12px 16px; }
.forge-queue-table__child[hidden] { display: none; }
.forge-queue-table__group-header {
  font-weight: 600;
}
.forge-queue-table__group--expandable .forge-queue-table__child { background: var(--surface-alt); }
.forge-data-table__row--clickable {
  cursor: pointer;
}
.forge-data-table__row--clickable:hover {
  background: color-mix(in srgb, var(--tint-blue) 24%, transparent);
}
.forge-data-table__link {
  color: var(--brand-blue);
  font-weight: 600;
  text-decoration: none;
}

/* Keep the compact Documents table readable on narrow screens. */
.forge-data-table-wrap.forge-data-table-wrap--horizontal-scroll[aria-label="Documents inventory"] {
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}
.forge-data-table-wrap[aria-label="Documents inventory"] .forge-data-table {
  table-layout: auto;
}
.document-inventory__metadata { display: block; }
.forge-data-table__link:hover {
  text-decoration: underline;
}
.forge-data-table__sort {
  cursor: pointer;
  user-select: none;
}
.forge-data-table__sort-button {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-transform: inherit;
  cursor: pointer;
}
.forge-data-table__sort-button:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 3px;
}
.forge-page-header-actions {
  flex-wrap: wrap;
  max-width: var(--layout-drawer-max-inline-size);
  min-width: 0;
}
.forge-summary-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin: 10px 0 16px;
}
.forge-summary-metric {
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-muted);
}
.forge-summary-metric__label {
  display: block;
  color: var(--text-muted);
}
.forge-summary-metric__value {
  display: block;
  margin-top: 3px;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.forge-row-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  align-items: center;
}
.forge-row-actions--left {
  justify-content: flex-start;
}
.forge-link {
  color: var(--brand-blue);
  font-weight: 700;
  text-decoration: none;
}
.forge-link:hover,
.forge-link:focus-visible {
  text-decoration: underline;
}

.regulations-search-submit {
  border: 1px solid var(--brand-blue);
  border-radius: 6px;
  background: var(--brand-blue);
  color: white;
  font-weight: 800;
}

/* ======================================================================
 * Skeleton loaders
 * ====================================================================== */

.skeleton {
  background: linear-gradient(
    90deg,
    var(--tint-slate) 0%,
    var(--border) 50%,
    var(--tint-slate) 100%
  );
  background-size: 200% 100%;
  animation: skeletonPulse 1.4s linear infinite;
  border-radius: var(--radius-sm);
  display: inline-block;
  min-height: 0.9rem;
}
.skeleton-line {
  height: 0.9rem;
  width: 100%;
  margin-bottom: 8px;
  border-radius: var(--radius-xs);
}
.skeleton-title {
  height: 1.3rem;
  width: 45%;
  margin-bottom: 14px;
  border-radius: var(--radius-xs);
}
.skeleton-block {
  height: 80px;
  width: 100%;
  border-radius: var(--radius-lg);
}
/* Plan 117 â€” product deep-dive initial-load skeleton (shell.py) */
.forge-product-picker-load-more {
  margin-top: var(--space-4);
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
}
.forge-product-picker-dialog {
  inline-size: auto;
}
.forge-product-picker-dialog--create {
  min-inline-size: var(--layout-dialog-product-create-min-inline-size);
  max-inline-size: var(--layout-dialog-product-create-max-inline-size);
}
.forge-product-picker-dialog--delete {
  min-inline-size: var(--layout-dialog-product-delete-min-inline-size);
  max-inline-size: var(--layout-dialog-product-delete-max-inline-size);
}
.forge-product-picker-dialog-actions {
  gap: var(--space-2);
  margin-top: var(--space-3);
}
.forge-product-picker-page-content {
  gap: var(--space-3);
}
.forge-product-picker-empty-action {
  margin-top: var(--space-2);
}
.forge-product-load-skeleton {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}
.forge-product-skeleton-header {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-width: 540px;
}
.forge-product-skeleton-nav {
  width: 100%;
}
.forge-product-skeleton-nav-bar {
  display: block;
  height: 44px;
  width: 100%;
  border-radius: var(--radius-md);
}
.forge-product-stage-skeleton {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
  padding: 16px 24px;
  box-sizing: border-box;
}
.forge-product-skeleton-line-short {
  width: 72%;
}

@keyframes skeletonPulse {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

/* ======================================================================
 * Status pill helper (consolidated)
 * ====================================================================== */

.pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-sm);
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
  border: 1px solid transparent;
}
.pill-red {
  background: var(--tint-red);
  color: var(--text-primary);
  border-color: color-mix(in srgb, var(--brand-red) 18%, transparent);
}
.pill-amber {
  background: var(--tint-amber);
  color: var(--text-primary);
  border-color: color-mix(in srgb, var(--brand-amber) 18%, transparent);
}
.pill-green {
  background: var(--tint-green);
  color: var(--brand-green);
  border-color: color-mix(in srgb, var(--brand-green) 20%, transparent);
}
.pill-blue {
  background: var(--tint-blue);
  color: var(--brand-blue);
  border-color: color-mix(in srgb, var(--brand-blue) 20%, transparent);
}
.pill-slate {
  background: var(--tint-slate);
  color: var(--text-secondary);
  border-color: color-mix(in srgb, var(--brand-slate) 18%, transparent);
}
/* Plan 75: canonical interactive filter chip. Replaces hand-rolled
 * border-radius:999px filter buttons in gaps.py / data.py. ``.active`` is
 * the selected state; pair the label with a "Label Â· N" count. */
.forge-chip--pill {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--bg-card);
  color: var(--text-secondary);
  font-weight: 600;
  cursor: pointer;
  transition:
    background 120ms ease-out,
    color 120ms ease-out,
    border-color 120ms ease-out;
}
.forge-chip--pill:hover {
  background: var(--tint-slate);
  color: var(--text-primary);
}
.forge-chip--pill:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
.forge-chip--pill.active {
  background: var(--surface-control-active);
  color: var(--text-primary);
  border-color: var(--border-strong);
}
.pill-sub {
  margin-left: 4px;
  font-weight: 500;
  opacity: 0.78;
  font-size: var(--text-xs);
}

/* ----------------------------------------------------------------------
 * Plan 61 Phase D â€” pill confidence indicator
 *
 * When a pill carries ``data-confidence`` we render a soft 2px band
 * along the bottom edge whose width tracks the confidence value. Reads
 * as a quiet "Osperan is N% confident" cue without competing visually
 * with the status colour the pill already communicates.
 * ---------------------------------------------------------------------- */
.pill[data-confidence],
.badge[data-confidence] {
  position: relative;
  padding-bottom: 4px;
}
.pill[data-confidence]::after,
.badge[data-confidence]::after {
  content: "";
  position: absolute;
  left: 6px;
  right: 6px;
  bottom: 2px;
  height: 2px;
  border-radius: var(--radius-xs);
  background: linear-gradient(
    90deg,
    currentColor 0%,
    currentColor calc(var(--pill-confidence, 0) * 1%),
    color-mix(in srgb, var(--brand-slate) 18%, transparent) calc(var(--pill-confidence, 0) * 1%),
    color-mix(in srgb, var(--brand-slate) 18%, transparent) 100%
  );
  opacity: 0.55;
}
.pill[data-confidence="0"]::after,
.badge[data-confidence="0"]::after {
  display: none;
}
/* The Python helper renders ``style="--pill-confidence:N;"`` inline so
   the CSS gradient picks up the exact percentage without needing one
   selector per integer. */

/* ----------------------------------------------------------------------
 * Plan 61 Phase D â€” confidence_bar_html
 * Compact bar+label rendered inline next to status pills across the
 * portfolio / workstation / picker / feed views.
 * ---------------------------------------------------------------------- */
.confidence-bar {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--text-muted);
  line-height: 1;
  white-space: nowrap;
}
.confidence-bar__track {
  display: inline-block;
  width: var(--confidence-track, 64px);
  height: 4px;
  border-radius: var(--radius-xs);
  background: color-mix(in srgb, var(--brand-slate) 22%, transparent);
  overflow: hidden;
  position: relative;
}
.confidence-bar__fill {
  display: block;
  height: 100%;
  width: 100%;
  border-radius: inherit;
  background: var(--brand-blue);
  transform-origin: left center;
  transition: transform 280ms ease-out;
}
/* All confidence tiers use brand-blue fill â€” the bar width communicates the
   score; the color does not need to encode a tier (Plan 288). */
.confidence-bar--green .confidence-bar__fill {
  background: var(--brand-blue);
}
.confidence-bar--amber .confidence-bar__fill {
  background: var(--brand-blue);
}
.confidence-bar--red .confidence-bar__fill {
  background: var(--brand-blue);
}
.confidence-bar--slate .confidence-bar__fill {
  background: var(--brand-blue);
}
.confidence-bar__track {
  background: var(--tint-blue);
}
.confidence-bar__label {
  font-variant-numeric: tabular-nums;
}
@media (prefers-reduced-motion: reduce) {
  .confidence-bar__fill {
    transition: none;
  }
}
.audit-history { display: grid; gap: 12px; min-width: 0; }
.audit-history-header h3 { margin: 0; color: var(--text-primary); font-size: .92rem; font-weight: 650; }
.audit-history [data-audit-row][hidden], .audit-history tbody[hidden],
.audit-history [data-audit-no-matches][hidden] { display: none; }
.audit-history td { vertical-align: top; }
.audit-history-empty { padding: 12px 0; }

/* ----------------------------------------------------------------------
 * Plan 61 Phase D â€” subreason chips
 *
 * The same chip family is reused inline next to status pills (where it
 * acts as an AI-derived "why" suffix) and inside KPI / deep-dive
 * surfaces (where it explains what Osperan concluded). Each chip carries
 * a 16px material icon so it visually clusters with other AI cues.
 * ---------------------------------------------------------------------- */
.subreason-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-sm);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  color: var(--text-secondary);
  background: var(--tint-slate);
  border: 1px solid color-mix(in srgb, var(--brand-slate) 18%, transparent);
  white-space: nowrap;
}
.subreason-chip .material-icons {
  font-size: var(--text-xs);
  opacity: 0.75;
}
.subreason-chip--amber {
  background: var(--tint-amber);
  color: var(--text-primary);
  border-color: color-mix(in srgb, var(--brand-amber) 18%, transparent);
}
.subreason-chip--red {
  background: var(--tint-red);
  color: var(--text-primary);
  border-color: color-mix(in srgb, var(--brand-red) 20%, transparent);
}
.subreason-chip--green {
  background: var(--tint-green);
  color: var(--brand-green);
  border-color: color-mix(in srgb, var(--brand-green) 20%, transparent);
}
.subreason-chip--blue {
  background: var(--tint-blue);
  color: var(--brand-blue);
  border-color: color-mix(in srgb, var(--brand-blue) 20%, transparent);
}

/* Sources stage â€” responsive document library.
   Rows behave like compact cards so long filenames and feed chips wrap
   inside the product detail pane instead of squeezing fixed columns. */
.forge-sources-toolbar {
  flex-wrap: wrap;
  margin-top: 10px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--tint-slate);
}
.forge-source-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.forge-source-card {
  display: block;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--bg-card);
}
.forge-source-card.is-superseded {
  opacity: 0.66;
  background: color-mix(in srgb, var(--bg-card) 74%, var(--tint-slate));
}
.forge-source-main {
  min-width: 0;
}
.forge-source-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-primary);
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.35;
}
.forge-source-card.is-superseded .forge-source-title {
  font-style: italic;
}
.forge-source-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: var(--text-sm);
}
.forge-source-error {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: var(--text-sm);
}
.forge-source-state {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  flex-wrap: wrap;
  margin: 0;
}
.forge-source-state .forge-source-status-note {
  color: var(--text-muted);
  font-size: var(--text-sm);
  line-height: 1.25;
}
.forge-source-external-declaration {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  flex-wrap: wrap;
}
.forge-source-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-wrap: nowrap;
  min-width: 0;
}
.forge-source-row-action {
  white-space: nowrap;
}
.forge-source-overflow { position: relative; flex: 0 0 auto; }
.forge-source-overflow > .forge-btn {
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  color: var(--text-secondary);
  cursor: pointer;
}
.forge-source-overflow > .forge-btn:hover { background: var(--bg-hover); color: var(--text-primary); }
.forge-source-overflow > .forge-btn:focus-visible { outline: 2px solid var(--brand-blue); outline-offset: 2px; }
.forge-source-overflow-menu {
  position: absolute;
  z-index: 30;
  top: calc(100% + 4px);
  right: 0;
  display: grid;
  min-width: 164px;
  gap: 2px;
  padding: 5px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  box-shadow: 0 8px 20px rgb(13 39 66 / 12%);
}
.forge-source-overflow-menu[hidden] { display: none; }
.forge-source-overflow-menu .forge-btn.forge-source-row-action { justify-content: flex-start; }
.forge-source-management-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
}
@media (max-width: 1100px) {
  details.forge-source-card > summary {
    grid-template-columns: minmax(0, 1.5fr) minmax(160px, 0.8fr) auto;
    gap: 14px;
  }
  .forge-source-actions {
    justify-content: flex-end;
  }
}
@media (max-width: 760px) {
  details.forge-source-card > summary {
    grid-template-columns: var(--layout-responsive-card-grid-columns);
    gap: 10px;
  }
  .forge-source-actions {
    justify-content: flex-start;
  }
  .forge-source-state {
    flex-direction: row;
    align-items: center;
  }
}

/* ======================================================================
 * Source slot (required document slots â€” extraction review gate)
 * ====================================================================== */

.forge-required-slots {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-top: var(--space-3);
}

.forge-source-slot {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--surface-elevated);
}

.forge-source-slot--missing {
  border-color: var(--color-warning-border);
  background: var(--color-warning-surface);
}

.forge-source-slot--review-required {
  border-color: var(--color-info-border);
  background: var(--color-info-surface);
}

/* ======================================================================
 * Toast / notification restyle (Quasar q-notification override)
 * ====================================================================== */

.q-notification {
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-lg) !important;
  padding: 12px 16px !important;
  font-family: var(--font-body) !important;
  font-size: var(--text-sm);
  border-left: 3px solid var(--brand-blue) !important;
  background: var(--bg-card) !important;
  color: var(--text-primary) !important;
}
.q-notification--negative {
  border-left-color: var(--text-primary) !important;
}
.q-notification--warning {
  border-left-color: var(--text-primary) !important;
}
.q-notification--positive {
  border-left-color: var(--brand-green) !important;
}
.q-notification--info {
  border-left-color: var(--brand-blue) !important;
}

/* ======================================================================
 * Refined card shadows
 * ====================================================================== */

.card {
  box-shadow: var(--shadow-md);
}
.card:hover {
  box-shadow: var(--shadow-lg);
}
.kpi-tile {
  box-shadow: var(--shadow-md);
}
.kpi-tile.clickable:hover,
.kpi-tile.clickable:focus-visible {
  box-shadow: var(--shadow-lg);
}
.queue-card {
  box-shadow: var(--shadow-md);
}

.i-x-fail::before {
  content: "cancel";
  font-family: "Material Icons";
  font-size: var(--text-sm);
  color: var(--text-primary);
  vertical-align: -2px;
  margin-right: 4px;
}
.i-chev::before {
  content: "chevron_right";
  font-family: "Material Icons";
  font-size: var(--text-base);
  vertical-align: -3px;
  margin-left: 2px;
}

/* Plan 801: :active press feedback for buttons and interactive surfaces.
 * Scale-down gives instant "click registered" tactile feedback before
 * navigation completes. Scoped to q-btn so Quasar handles disabled state. */
.q-btn:not(.disabled):not([disabled]):active {
  transform: scale(0.98);
  transition: transform 0.05s;
}

/* Honor user preference for reduced motion â€” Plan 798: consolidated block.
 * All animation and transition declarations in this file are suppressed here.
 * Local @media (prefers-reduced-motion) blocks near each animation are kept
 * for readability; this block is the authoritative catch-all. */
@media (prefers-reduced-motion: reduce) {
.kpi-tile,
.queue-card,
.side-section,
.cert-card,
.reg-sidebar-card,
.metric-mini,
.card,
.next-action-btn,
.xray-spotlight,
.provenance-badge,
.forge-sidebar,
.forge-nav-link,
.forge-collapse-btn,
.forge-collapse-btn .material-icons,
.forge-page,
/* Plan 798 additions */
.progress-bar .fill,
.forge-ps-skeleton-row {
    transition: none !important;
    animation: none !important;
  }
  .nap-spin {
    animation: none;
    border-right-color: currentColor;
  }
  .skeleton {
    animation: none;
    background: var(--tint-slate);
  }
  /* Plan 801: suppress active-state scale under reduced-motion preference */
  .q-btn:not(.disabled):not([disabled]):active {
    transform: none;
  }
}

/* ======================================================================
 * Regulatory Monitor redesign (segmented tabs, dense rows, facets,
 * detail drawer). Phase 1+ from docs/TODO-regulatory-accept-flow.md.
 * ====================================================================== */

/* Canonical underline tabs. Every view shares this visual treatment;
 * local scope classes may adjust placement and spacing only. */
.seg-tabs {
  display: flex;
  width: 100%;
  min-width: 0;
  gap: 4px;
  margin: 0 0 18px;
  max-width: 100%;
  flex-wrap: nowrap;
  overflow-x: auto;
  scrollbar-width: none;
}
.seg-tabs::-webkit-scrollbar {
  display: none;
}
.seg-tab {
  appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: var(--radius-none);
  margin-bottom: 0;
  padding: 10px 14px;
  font-family: inherit;
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--text-secondary);
  cursor: pointer;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 6px;
  transition:
    color var(--motion-base) var(--ease-out-quart),
    border-color var(--motion-base) var(--ease-out-quart);
}
.seg-tab:hover {
  color: var(--text-primary);
}
.seg-tab.active {
  color: var(--brand-blue);
  font-weight: 700;
  border-bottom-color: var(--brand-blue);
}
.seg-tab-icon {
  font-size: var(--text-md);
}
.seg-tab-count {
  font-size: var(--text-xs);
  font-weight: 700;
  color: var(--text-muted);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  padding: 2px 8px;
  min-width: 22px;
  text-align: center;
}
.seg-tab.active .seg-tab-count {
  color: var(--brand-blue);
  border-color: var(--border-strong);
  background: var(--bg-soft);
}

/* Plan 350: Signals badge â€” red count indicator on the Signals tab header. */
.forge-tab-badge {
  background: var(--brand-red);
  color: var(--color-white);
  border-radius: 9999px;
  font-size: 0.6875rem;
  padding: 1px 6px;
  margin-left: 6px;
  vertical-align: middle;
}

.seg-panels {
  width: 100%;
}
.seg-panel {
  display: none;
  width: 100%;
}

/* CSS-level fallback: server-rendered data-active-tab makes the default panel
 * visible before JS bootBar() runs. Lower specificity than .seg-panel.active
 * so JS class state takes over once the component mounts. */
[data-active-tab="queue"] .seg-panel[data-tab="queue"] {
  display: block;
}
[data-active-tab="overview"] .seg-panel[data-tab="overview"] {
  display: block;
}
[data-active-tab="coverage"] .seg-panel[data-tab="coverage"] {
  display: block;
}
[data-active-tab="feed"] .seg-panel[data-tab="feed"] {
  display: block;
}
[data-active-tab="actions"] .seg-panel[data-tab="actions"] {
  display: block;
}
[data-active-tab="matrix"] .seg-panel[data-tab="matrix"] {
  display: block;
}
[data-active-tab="sources"] .seg-panel[data-tab="sources"] {
  display: block;
}
[data-active-tab="gaps"] .seg-panel[data-tab="gaps"] {
  display: block;
}
[data-active-tab="declare"] .seg-panel[data-tab="declare"] {
  display: block;
}
[data-active-tab="activity"] .seg-panel[data-tab="activity"] {
  display: block;
}
[data-active-tab="settings"] .seg-panel[data-tab="settings"] {
  display: block;
}
[data-active-tab="scope"] .seg-panel[data-tab="scope"] {
  display: block;
}
[data-active-tab="document-templates"] .seg-panel[data-tab="document-templates"] {
  display: block;
}
[data-active-tab="confirm-requirements"] .seg-panel[data-tab="confirm-requirements"] {
  display: block;
}
[data-active-tab="incoming"] .seg-panel[data-tab="incoming"] {
  display: block;
}
[data-active-tab="source_scans"] .seg-panel[data-tab="source_scans"] {
  display: block;
}
[data-active-tab="accepted_authority"] .seg-panel[data-tab="accepted_authority"] {
  display: block;
}
.seg-panel.active {
  display: block;
}

/* Plan 1521: seg-panel CSS-level fallbacks for routes added after the
 * original static list. Mirrors the pattern on lines 1639â€“1680. */
[data-active-tab="market"] .seg-panel[data-tab="market"] {
  display: block;
}
[data-active-tab="reference"] .seg-panel[data-tab="reference"] {
  display: block;
}
[data-active-tab="roadmap"] .seg-panel[data-tab="roadmap"] {
  display: block;
}
[data-active-tab="allocation"] .seg-panel[data-tab="allocation"] {
  display: block;
}
[data-active-tab="performance"] .seg-panel[data-tab="performance"] {
  display: block;
}
[data-active-tab="members"] .seg-panel[data-tab="members"] {
  display: block;
}

/* Plan 1521: prevent wide tables inside monitoring and team panels from
 * creating horizontal page overflow. */
.monitoring-tab-content,
.monitoring-tab-body,
.regulations-tab-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
  min-width: 0;
  width: 100%;
}.monitoring-panels .monitoring-incoming-candidates,
.team-panels,
.team-workload-panels {
  overflow-x: auto;
  max-width: 100%;
}

.forge-incoming-candidate-cell .forge-incoming-candidate-title,
.forge-incoming-candidate-cell .forge-incoming-candidate-sub {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  word-break: break-word;
}

.forge-incoming-candidate-sub {
  display: block;
  margin-top: var(--space-1, 4px);
  color: var(--text-muted);
  font-size: var(--text-sm, 0.875rem);
}

.monitoring-interpretations-shell {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
}

.monitoring-interpretations-heading {
  margin: 0 0 var(--space-2, 8px);
  font-size: var(--text-md, 1rem);
  font-weight: 600;
}

.monitoring-source-scan-disclosure > summary {
  cursor: pointer;
  color: var(--text-primary);
}

.monitoring-source-scan-disclosure[open] > summary {
  margin-bottom: var(--space-3, 12px);
}

.monitoring-source-scan-detail-panel {
  display: grid;
  gap: var(--space-4, 16px);
  min-width: 0;
  padding: 0;
}

.monitoring-source-scan-boundary {
  margin: 0;
  color: var(--text-secondary);
}

.monitoring-source-scan-source-rows {
  display: grid;
  gap: 0;
  min-width: 0;
}

.monitoring-source-scan-source-row {
  align-items: start;
  border-top: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  display: grid;
  gap: 4px var(--space-2, 8px);
  grid-template-columns: minmax(180px, 1.1fr) minmax(92px, max-content) minmax(220px, 1.4fr) minmax(104px, max-content);
  min-width: 0;
  padding: 8px 0;
}

.monitoring-source-scan-source-row__name,
.monitoring-source-scan-source-row__result {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.monitoring-source-scan-source-row__name {
  color: var(--text-primary);
}

.monitoring-source-scan-source-row__status {
  white-space: nowrap;
}

.monitoring-source-scan-source-row__status.is-failed {
  color: var(--brand-red);
}

.monitoring-source-scan-source-row__status.is-changed {
  color: var(--brand-blue);
}

.monitoring-source-scan-source-row__status.is-unchanged {
  color: var(--text-muted);
}

.monitoring-source-scan-source-row__result {
  color: var(--text-secondary);
}

.monitoring-source-scan-stages {
  border-left: 2px solid var(--border-subtle);
  color: var(--text-muted);
  display: grid;
  gap: 3px;
  grid-column: 1 / -1;
  list-style: none;
  margin: 4px 0 0;
  min-width: 0;
  padding: 0 0 0 var(--space-2, 8px);
}

.monitoring-source-scan-source-row__link {
  color: var(--text-link);
  text-decoration: none;
  white-space: nowrap;
}

.monitoring-source-scan-technical {
  grid-column: 1 / -1;
  color: var(--text-muted);
}

.monitoring-source-scan-technical > summary {
  cursor: pointer;
}

.monitoring-source-scan-technical span {
  display: block;
  margin-top: 2px;
  overflow-wrap: anywhere;
}

.monitoring-source-scan-disclosure__empty {
  color: var(--text-muted);
}

.monitoring-source-atlas,
.monitoring-scan-history-shell,
.monitoring-changes-to-review {
  min-width: 0;
}

.monitoring-source-scan-items {
  grid-column: 1 / -1;
  min-width: 0;
  color: var(--text-secondary);
}

.monitoring-intake-run-status {
  min-width: 0;
}

.monitoring-source-scan-items > summary {
  cursor: pointer;
}

.monitoring-source-scan-items > ul {
  display: grid;
  gap: 4px;
  margin: var(--space-2, 8px) 0;
  padding-left: var(--space-4, 16px);
  overflow-wrap: anywhere;
}

.monitoring-source-scan-items__unknown,
.monitoring-source-scan-items__partial {
  grid-column: 1 / -1;
  color: var(--text-muted);
}

.monitoring-atlas-section-title {
  margin: 0;
  color: var(--text-primary);
}

.monitoring-atlas-section-spaced {
  margin-top: var(--space-4);
}

.monitoring-atlas-selection-bar {
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-top: var(--space-3);
}

.monitoring-atlas-selection-count {
  color: var(--text-secondary);
}

.monitoring-changes-to-review-empty {
  margin-block: var(--space-4);
}

.forge-changes-to-review-effect {
  display: -webkit-box;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

.forge-table-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  flex-wrap: wrap;
  min-width: 0;
  overflow: visible;
  padding-block: var(--space-1);
  padding-inline: 0;
}

.forge-table-toolbar__filters {
  flex: 1 1 auto;
  min-width: 0;
  overflow: visible;
}

.forge-table-toolbar__filters--empty {
  flex-basis: 0;
}

.forge-table-toolbar__filters .forge-fbar {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  min-width: 0;
  align-items: center;
  white-space: normal;
  gap: var(--space-2, 8px);
  padding: 0;
  overflow: visible;
}

.forge-table-toolbar__pagination {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-3, 12px);
  flex: 0 0 auto;
  min-width: 0;
  margin-left: auto;
}

.forge-table-toolbar__summary {
  color: var(--text-muted);
  font-size: var(--text-sm, 0.875rem);
  font-weight: 700;
  white-space: nowrap;
}

.forge-table-toolbar__controls {
  display: flex;
  align-items: center;
  gap: var(--space-2, 8px);
  flex-wrap: nowrap;
}

.forge-table-toolbar__button {
  white-space: nowrap;
}

.forge-forecast-history-item {
  min-width: 0;
  padding: var(--space-3, 12px);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
  background: var(--surface);
}

.forge-conn-intake-list {
  margin: var(--space-2, 8px) 0 0;
  padding-left: 1.1rem;
}

.forge-conn-intake-item {
  margin-bottom: var(--space-1, 4px);
  font-size: var(--text-sm, 0.875rem);
}

.forge-conn-intake-status {
  color: var(--text-muted);
}

/* KPI shimmer while tiles are loading (aria-busy="true" on the strip).
   Uses transform: translateX for GPU compositing instead of background-position (Plan 476). */
@keyframes kpiShimmerSlide {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(200%);
  }
}
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-value,
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-label,
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-meta {
  position: relative;
  background: var(--tint-slate);
  overflow: hidden;
  border-radius: var(--radius-xs);
  color: transparent !important;
  min-width: 48px;
  display: inline-block;
  user-select: none;
}
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-value::after,
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-label::after,
.forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-meta::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(var(--card-rgb), 0.4) 50%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: kpiShimmerSlide 1.2s ease-in-out infinite;
}

/* Canonical AI action chrome â€” button + optional helper metadata. */
.forge-ai-action-cluster,
.reg-scan-cluster {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.forge-ai-action-cluster:not(.reg-scan-cluster) {
  justify-content: space-between;
  width: 100%;
}
.forge-ai-action-cluster--inline {
  justify-content: flex-start;
}
.forge-ai-action-copy {
  min-width: 220px;
  flex: 1 1 280px;
}
.forge-ai-action-title {
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--text-primary);
}
.forge-ai-action-helper {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  line-height: 1.45;
  margin-top: 2px;
}
.forge-ai-action-controls {
  justify-content: flex-end;
}
.forge-ai-action-meta,
.reg-scan-timestamp {
  font-size: var(--text-sm);
  color: var(--text-muted);
}
.reg-scan-timestamp {
  white-space: nowrap;
}
.forge-ai-action-meta strong,
.reg-scan-timestamp strong {
  color: var(--text-secondary);
  font-weight: 600;
}

/* AI-assisted primary actions â€” terracotta pill via --button-ai-* tokens.
   Distinct from navy business CTAs (.forge-btn--primary / --button-primary-*).
   Action progress and outcomes are owned by the shared action-feedback runner. */
.q-btn.forge-btn--ai,
button.forge-btn--ai,
button.forge-btn.forge-btn--ai {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: var(--button-ai-bg) !important;
  color: var(--button-ai-text) !important;
  border: 1px solid var(--button-ai-border) !important;
  box-shadow: none !important;
  filter: none;
  transform: none;
  transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
}
.q-btn.forge-btn--ai:not(.disabled):hover,
button.forge-btn--ai:not([disabled]):hover,
button.forge-btn.forge-btn--ai:not([disabled]):hover {
  background: var(--button-ai-bg-hover) !important;
  border-color: var(--button-ai-bg-hover) !important;
  box-shadow: none !important;
  filter: none;
  transform: none;
}
.q-btn.forge-btn--ai:active,
button.forge-btn--ai:active,
button.forge-btn.forge-btn--ai:active {
  background: var(--button-ai-bg-hover) !important;
  border-color: var(--button-ai-bg-hover) !important;
  box-shadow: none !important;
  filter: none;
  transform: none;
}
.q-btn.forge-btn--ai .q-btn__content,
button.forge-btn--ai {
  gap: 6px;
  flex-wrap: nowrap;
}
.q-btn.forge-btn--ai .forge-ai-mark-slot,
button.forge-btn--ai .forge-ai-mark-slot {
  display: inline-flex;
  align-items: center;
  order: -1;
  flex-shrink: 0;
}
.q-btn.forge-btn--ai .forge-ai-action-marker-slot,
button.forge-btn--ai .forge-ai-action-marker-slot {
  display: inline-flex;
  align-items: center;
  order: 1;
  flex-shrink: 0;
}
.q-btn.forge-btn--ai .forge-ai-mark,
button.forge-btn--ai .forge-ai-mark {
  flex-shrink: 0;
  display: block;
  filter: brightness(0) invert(1);
}
.forge-ai-action-marker {
  display: inline-flex;
  align-items: center;
  margin-left: 0;
  padding: 3px 5px;
  border: 1px solid rgba(255, 255, 255, .42);
  border-radius: 4px;
  color: inherit;
  background: rgba(13, 39, 66, .12);
  font: 700 9px/1 var(--font-body);
  letter-spacing: .06em;
}
.q-btn.forge-btn--ai.is-processing {
  animation: pulse-ring 1.6s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.q-btn.forge-btn--ai.disabled,
.q-btn.forge-btn--ai[disabled],
button.forge-btn--ai[disabled],
button.forge-btn.forge-btn--ai[disabled] {
  background: var(--border-strong) !important;
  border-color: var(--border-strong) !important;
  color: var(--button-ai-text) !important;
  box-shadow: none;
  opacity: 0.7 !important;
  cursor: not-allowed;
}
.forge-btn--ai:focus-visible,
.q-btn.forge-btn--ai:focus-visible,
.q-btn.forge-btn--ai.no-outline:focus-visible,
button.forge-btn--ai:focus-visible,
button.forge-btn.forge-btn--ai:focus-visible {
  outline: 2px solid var(--focus-ring) !important;
  outline-offset: 2px !important;
  box-shadow: var(--button-ai-focus) !important;
}

/* Button taxonomy (Plan 87) â€” ghost / primary / danger.
   `button(tone=...)` in frontend/components/shared.py applies these classes;
   without rules here Quasar fills the gap with its default blue, so every
   non-AI button renders blue regardless of tone. All three are scoped to
   `.q-btn` so they win against Quasar's base button styles. */
.q-btn.forge-btn--ghost {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: transparent !important;
  background: var(--button-secondary-bg) !important;
  border: 1px solid var(--button-secondary-border) !important;
  color: var(--button-secondary-text) !important;
  box-shadow: none;
  transition:
    background 0.14s var(--ease-out-quart),
    border-color 0.14s var(--ease-out-quart),
    color 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--ghost:not(.disabled):hover {
  background: var(--button-secondary-bg-hover) !important;
  border-color: var(--button-secondary-bg-hover) !important;
  color: var(--button-secondary-text-hover) !important;
}
.q-btn.forge-btn--ghost.disabled,
.q-btn.forge-btn--ghost[disabled] {
  opacity: 0.55 !important;
}
.q-btn.forge-btn--ghost:focus-visible {
  outline: 2px solid var(--border-strong);
  outline-offset: 2px;
}

.q-btn.forge-btn--primary {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: var(--button-primary-bg) !important;
  border: 1px solid var(--button-primary-border) !important;
  color: var(--button-primary-text) !important;
  box-shadow: none;
  transition:
    filter 0.14s var(--ease-out-quart),
    transform 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--primary:not(.disabled):hover {
  background: var(--button-primary-bg-hover) !important;
  border-color: var(--button-primary-bg-hover) !important;
  filter: none;
}
.q-btn.forge-btn--primary:active {
  background: var(--button-primary-bg-active) !important;
  border-color: var(--button-primary-bg-active) !important;
  transform: translateY(0.5px);
}
.q-btn.forge-btn--primary.disabled,
.q-btn.forge-btn--primary[disabled] {
  opacity: 0.6 !important;
}
.q-btn.forge-btn--primary:focus-visible {
  outline: 2px solid var(--button-primary-bg);
  outline-offset: 2px;
}

.q-btn.forge-btn--danger {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: var(--button-danger-bg) !important;
  border: 1px solid var(--button-danger-border) !important;
  color: var(--button-danger-text) !important;
  box-shadow: none;
  transition:
    background 0.14s var(--ease-out-quart),
    filter 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--danger:not(.disabled):hover {
  background: var(--button-danger-bg-hover) !important;
}
.q-btn.forge-btn--danger.disabled,
.q-btn.forge-btn--danger[disabled] {
  opacity: 0.55 !important;
}
.q-btn.forge-btn--danger:focus-visible {
  outline: 2px solid var(--brand-red);
  outline-offset: 2px;
}

.q-btn.forge-btn--success {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: var(--tint-green) !important;
  border: 1px solid color-mix(in srgb, var(--brand-green) 42%, var(--border)) !important;
  color: var(--brand-green) !important;
  box-shadow: none;
  transition: background 0.14s var(--ease-out-quart), border-color 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--success:not(.disabled):hover {
  background: color-mix(in srgb, var(--tint-green) 70%, var(--brand-green)) !important;
  border-color: var(--brand-green) !important;
}
.q-btn.forge-btn--success.disabled,
.q-btn.forge-btn--success[disabled] {
  opacity: 0.55 !important;
}
.q-btn.forge-btn--success:focus-visible {
  outline: 2px solid var(--brand-green);
  outline-offset: 2px;
}

.q-btn.forge-btn--warning {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: var(--tint-amber) !important;
  border: 1px solid color-mix(in srgb, var(--brand-amber) 42%, var(--border)) !important;
  color: var(--brand-amber-text) !important;
  box-shadow: none;
  transition: background 0.14s var(--ease-out-quart), border-color 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--warning:not(.disabled):hover {
  background: color-mix(in srgb, var(--tint-amber) 70%, var(--brand-amber)) !important;
  border-color: var(--brand-amber) !important;
}
.q-btn.forge-btn--warning.disabled,
.q-btn.forge-btn--warning[disabled] {
  opacity: 0.55 !important;
}
.q-btn.forge-btn--warning:focus-visible {
  outline: 2px solid var(--brand-amber);
  outline-offset: 2px;
}

.q-btn.forge-btn--manual {
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  background: transparent !important;
  border: 1px solid var(--brand-brown) !important;
  color: var(--button-secondary-text) !important;
  box-shadow: none;
  transition:
    background 0.14s var(--ease-out-quart),
    border-color 0.14s var(--ease-out-quart),
    color 0.14s var(--ease-out-quart);
}
.q-btn.forge-btn--manual:not(.disabled):hover {
  background: color-mix(in srgb, var(--brand-brown) 10%, var(--bg-card)) !important;
}
.q-btn.forge-btn--manual.disabled,
.q-btn.forge-btn--manual[disabled] {
  opacity: 0.55 !important;
}
.q-btn.forge-btn--manual:focus-visible {
  outline: 2px solid var(--brand-brown);
  outline-offset: 2px;
}
/* Canonical action geometry. Tone rules above own color and emphasis only. */
:root {
  --forge-control-height-sm: 32px;
  --forge-control-height-md: 36px;
  --forge-control-padding-sm: 0 10px;
  --forge-control-padding-md: 0 12px;
  --forge-control-font-sm: 13px;
  --forge-control-font-md: 14px;
  --forge-control-icon-sm: 14px;
  --forge-control-icon-md: 16px;
}
.q-btn.forge-btn,
.forge-btn {
  width: auto;
  min-width: 0;
  max-width: none;
  flex: 0 0 auto;
  align-self: flex-start;
  justify-self: start;
  white-space: nowrap;
}
.q-btn.forge-btn .q-btn__content {
  white-space: inherit;
}
.q-btn.forge-btn--sm,
.forge-btn--sm {
  box-sizing: border-box;
  height: var(--forge-control-height-sm);
  min-height: var(--forge-control-height-sm);
  max-height: var(--forge-control-height-sm);
  padding: var(--forge-control-padding-sm);
  font-size: var(--forge-control-font-sm);
}
.q-btn.forge-btn--md,
.forge-btn--md {
  box-sizing: border-box;
  height: var(--forge-control-height-md);
  min-height: var(--forge-control-height-md);
  max-height: var(--forge-control-height-md);
  padding: var(--forge-control-padding-md);
  font-size: var(--forge-control-font-md);
}
.q-btn.forge-btn .material-icons,
.forge-btn .material-icons {
  font-size: var(--forge-control-icon-md);
}
.q-btn.forge-btn .q-icon,
.forge-btn .q-icon,
.forge-btn__icon {
  font-size: var(--forge-control-icon-md);
}
.q-btn.forge-btn--sm .material-icons,
.forge-btn--sm .material-icons {
  font-size: var(--forge-control-icon-sm);
}
.q-btn.forge-btn--sm .q-icon,
.forge-btn--sm .q-icon,
.forge-btn--sm .forge-btn__icon {
  font-size: var(--forge-control-icon-sm);
}
.q-btn.forge-btn .forge-ai-mark,
.forge-btn .forge-ai-mark {
  width: var(--forge-control-icon-md);
  height: var(--forge-control-icon-md);
}
.q-btn.forge-btn--md .forge-ai-mark,
.forge-btn--md .forge-ai-mark {
  width: var(--forge-control-icon-md);
  height: var(--forge-control-icon-md);
}
.q-btn.forge-btn--sm .forge-ai-mark,
.forge-btn--sm .forge-ai-mark {
  width: var(--forge-control-icon-sm);
  height: var(--forge-control-icon-sm);
}
.q-btn.forge-btn--icon-only,
.forge-btn--icon-only {
  width: var(--forge-control-height-md);
  min-width: var(--forge-control-height-md);
  padding: 0;
}
.q-btn.forge-btn--sm.forge-btn--icon-only,
.forge-btn--sm.forge-btn--icon-only {
  width: var(--forge-control-height-sm);
  min-width: var(--forge-control-height-sm);
}
.q-btn.forge-btn--sm .q-btn__content,
.q-btn.forge-btn--md .q-btn__content {
  line-height: 1;
}
.q-dialog__close {
  box-sizing: border-box;
  width: var(--forge-control-height-sm);
  min-width: var(--forge-control-height-sm);
  height: var(--forge-control-height-sm);
  min-height: var(--forge-control-height-sm);
  max-height: var(--forge-control-height-sm);
  padding: 0;
}
.q-dialog__close .material-icons {
  font-size: var(--forge-control-icon-sm);
}
.forge-pill-toggle--sm .forge-pill-toggle__seg {
  box-sizing: border-box;
  height: var(--forge-control-height-sm);
  gap: 6px;
  padding: var(--forge-control-padding-sm);
  font-size: var(--forge-control-font-sm);
  line-height: 1;
}
.forge-pill-toggle--sm .forge-pill-toggle__seg.has-icon {
  gap: 4px;
  padding: var(--forge-control-padding-sm);
}
.forge-pill-toggle--sm .forge-pill-toggle__icon {
  font-size: var(--forge-control-icon-sm);
}
.forge-pill-toggle--md .forge-pill-toggle__seg {
  box-sizing: border-box;
  height: var(--forge-control-height-md);
  gap: 6px;
  padding: var(--forge-control-padding-md);
  font-size: var(--forge-control-font-md);
  line-height: 1;
}
.forge-pill-toggle--md .forge-pill-toggle__seg.has-icon {
  gap: 4px;
  padding: var(--forge-control-padding-md);
}
.forge-pill-toggle--md .forge-pill-toggle__icon {
  font-size: var(--forge-control-icon-md);
}
@media (prefers-reduced-motion: reduce) {
  .q-btn.forge-btn--ai,
  button.forge-btn--ai,
  button.forge-btn.forge-btn--ai {
    transition: none;
  }
  .q-btn.forge-btn--ai:not(.disabled):hover,
  .q-btn.forge-btn--ai:active,
  button.forge-btn.forge-btn--ai:not([disabled]):hover,
  button.forge-btn.forge-btn--ai:active {
    transform: none;
  }
}

/* Native HTML actions (button_html and action links) â€” mirror Plan 87 Quasar tones. */
.forge-btn {
  appearance: none;
  font-family: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-sizing: border-box;
  text-decoration: none;
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-display);
  letter-spacing: 0;
  transition:
    background 0.14s var(--ease-out-quart),
    border-color 0.14s var(--ease-out-quart),
    color 0.14s var(--ease-out-quart),
    filter 0.14s var(--ease-out-quart),
    transform 0.14s var(--ease-out-quart);
}
.forge-btn--ghost {
  background: var(--button-secondary-bg);
  border: 1px solid var(--button-secondary-border);
  color: var(--button-secondary-text);
}
.forge-btn--ghost:not([disabled]):not([aria-disabled="true"]):hover {
  background: var(--button-secondary-bg-hover);
  border-color: var(--button-secondary-bg-hover);
  color: var(--button-secondary-text-hover);
}
.forge-btn--ghost[disabled],
.forge-btn--ghost[aria-disabled="true"] {
  opacity: 0.55;
  cursor: not-allowed;
}
.forge-btn--ghost:focus-visible {
  outline: 2px solid var(--border-strong);
  outline-offset: 2px;
}
.forge-btn--primary {
  background: var(--button-primary-bg);
  border: 1px solid var(--button-primary-border);
  color: var(--button-primary-text);
}
.forge-btn--primary:not([disabled]):not([aria-disabled="true"]):hover {
  background: var(--button-primary-bg-hover);
  border-color: var(--button-primary-bg-hover);
  filter: none;
}
.forge-btn--primary:active {
  background: var(--button-primary-bg-active);
  border-color: var(--button-primary-bg-active);
  transform: translateY(0.5px);
}
.forge-btn--primary[disabled],
.forge-btn--primary[aria-disabled="true"] {
  opacity: 0.6;
  cursor: not-allowed;
}
.forge-btn--primary:focus-visible {
  outline: 2px solid var(--button-primary-bg);
  outline-offset: 2px;
}
.forge-btn--danger {
  background: var(--button-danger-bg);
  border: 1px solid var(--button-danger-border);
  color: var(--button-danger-text);
}
.forge-btn--danger:not([disabled]):not([aria-disabled="true"]):hover {
  background: var(--button-danger-bg-hover);
}
.forge-btn--danger[disabled],
.forge-btn--danger[aria-disabled="true"] {
  opacity: 0.55;
  cursor: not-allowed;
}
.forge-btn--danger:focus-visible {
  outline: 2px solid var(--brand-red);
  outline-offset: 2px;
}
.forge-btn--success {
  background: var(--tint-green);
  border: 1px solid color-mix(in srgb, var(--brand-green) 42%, var(--border));
  color: var(--brand-green);
}
.forge-btn--success:not([disabled]):not([aria-disabled="true"]):hover {
  background: color-mix(in srgb, var(--tint-green) 70%, var(--brand-green));
  border-color: var(--brand-green);
}
.forge-btn--success[disabled],
.forge-btn--success[aria-disabled="true"] {
  opacity: 0.55;
  cursor: not-allowed;
}
.forge-btn--success:focus-visible {
  outline: 2px solid var(--brand-green);
  outline-offset: 2px;
}
.forge-btn--warning {
  background: var(--tint-amber);
  border: 1px solid color-mix(in srgb, var(--brand-amber) 42%, var(--border));
  color: var(--brand-amber-text);
}
.forge-btn--warning:not([disabled]):not([aria-disabled="true"]):hover {
  background: color-mix(in srgb, var(--tint-amber) 70%, var(--brand-amber));
  border-color: var(--brand-amber);
}
.forge-btn--warning[disabled],
.forge-btn--warning[aria-disabled="true"] {
  opacity: 0.55;
  cursor: not-allowed;
}
.forge-btn--warning:focus-visible {
  outline: 2px solid var(--brand-amber);
  outline-offset: 2px;
}
.forge-btn--manual {
  background: transparent;
  border: 1px solid var(--brand-brown);
  color: var(--button-secondary-text);
}
.forge-btn--manual:not([disabled]):not([aria-disabled="true"]):hover {
  background: color-mix(in srgb, var(--brand-brown) 10%, var(--bg-card));
}
.forge-btn--manual[disabled],
.forge-btn--manual[aria-disabled="true"] {
  opacity: 0.55;
  cursor: not-allowed;
}
.forge-btn--manual:focus-visible {
  outline: 2px solid var(--brand-brown);
  outline-offset: 2px;
}
/* NOTE: the ghost / primary / danger tone rules live in the Plan 87 block
 * above (search ".q-btn.forge-btn--ghost"). An earlier Plan 56 duplicate of
 * those three blocks was removed here â€” two `!important` definitions of the
 * same selector made the resolved style depend on source order, which let
 * Quasar's default blue leak through on some buttons. One selector, one
 * definition. */

/* -- Segmented pill toggle --------------------------------------- */
.forge-pill-toggle {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-width: 0;
  border-radius: 999px;
  padding: 0;
  gap: 4px;
  background: transparent;
  overflow-x: auto;
  scrollbar-width: thin;
}
.forge-pill-toggle__seg {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  border-radius: 999px;
  font-weight: 600;
  text-decoration: none;
  color: var(--text-secondary);
  background: transparent;
  border: none;
  cursor: pointer;
  transition:
    background 0.12s,
    color 0.12s;
}
.forge-pill-toggle__seg.is-active {
  background: var(--surface-control-active);
  color: var(--text-primary);
}
.forge-pill-toggle__seg:not(.is-active):hover {
  background: var(--bg-hover, rgba(var(--navy-rgb), 0.04));
  color: var(--text-primary);
}
.forge-pill-toggle__seg:focus-visible {
  outline: 2px solid var(--border-strong);
  outline-offset: 2px;
}
.forge-pill-toggle__seg.has-icon {
}
.forge-pill-toggle__icon {
  line-height: 1;
  opacity: 0.8;
}
.forge-pill-toggle__seg.is-active .forge-pill-toggle__icon {
  opacity: 1;
}
.forge-pill-toggle__label {
  line-height: 1;
}
.forge-compliance-track-summary {
  margin: -2px 0 10px;
  color: var(--text-secondary);
  font-size: 0.84rem;
  line-height: 1.45;
}

/* ================================================================ */

/* News feed â€” table-internal bulk selection bar (Plan 204). Sits at the
 * top of ``.feed-rows`` so bulk actions read as row-list chrome, not a
 * standalone band above the data surface. */
.feed-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Regulatory Monitor â€” mapped-signal cards */
.reg-impact-path {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
}
.reg-impact-path-node {
  display: inline-flex;
  align-items: center;
  max-width: 260px;
  padding: 4px 8px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.reg-impact-path-node + .reg-impact-path-node::before {
  content: "\2192";
  color: var(--text-muted);
  margin-right: 8px;
  margin-left: -3px;
}
.reg-mapped-signals-title {
  display: flex;
  flex-direction: column;
  min-width: 220px;
  margin-right: 4px;
  padding: 8px 12px;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
}
.reg-mapped-signals-title strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}
.reg-mapped-signals-title span {
  color: var(--text-muted);
  font-size: var(--text-xs);
}
.reg-ai-verdict,
.reg-ai-confidence {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: var(--font-weight-display);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.reg-ai-verdict {
  color: var(--brand-blue);
  background: var(--tint-blue);
  border: 1px solid var(--border);
}
.reg-ai-confidence {
  color: var(--text-secondary);
  background: var(--tint-slate);
  border: 1px solid var(--border);
}
.reg-ai-reason,
.reg-ai-suggestion {
  margin-top: 8px;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.45;
}
.reg-ai-reason strong,
.reg-ai-suggestion strong {
  color: var(--text-primary);
}
.reg-ai-suggestion {
  padding: 8px 10px;
  background: var(--tint-blue);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
}
.reg-ai-evidence {
  gap: 4px;
}
.reg-evidence-quote {
  display: block;
  margin-top: 4px;
  padding: 4px 10px;
  border-left: 3px solid var(--border-strong);
  color: var(--text-muted);
  font-size: var(--text-sm);
  font-style: italic;
  line-height: 1.45;
}

@media (max-width: 760px) {
}

.feed-facet-group {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 10px 12px;
}
.feed-facet-title {
  font-size: var(--text-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--brand-blue);
  margin-bottom: 8px;
}
.feed-facet-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-size: var(--text-sm);
  color: var(--text-primary);
  cursor: pointer;
}
.feed-facet-option input {
  accent-color: var(--brand-blue);
  cursor: pointer;
}
.feed-facet-option .count {
  margin-left: auto;
  font-size: var(--text-xs);
  color: var(--text-muted);
  font-weight: 600;
}
.feed-empty {
  font-size: var(--text-sm);
}

/* Toggle-pill list (jurisdiction / category) inside facet groups */
.facet-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.facet-pill {
  appearance: none;
  font-family: inherit;
  border: 1px solid var(--border);
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 600;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition:
    background 0.12s cubic-bezier(0.25, 0, 0, 1),
    color 0.12s cubic-bezier(0.25, 0, 0, 1),
    border-color 0.12s cubic-bezier(0.25, 0, 0, 1);
}
.facet-pill:hover {
  color: var(--text-primary);
  border-color: var(--border-strong);
}
.facet-pill.active {
  background: var(--tint-blue);
  color: var(--brand-blue);
  border-color: color-mix(in srgb, var(--brand-blue) 35%, transparent);
}

/* Inline status pill (clickable to cycle) in the action plan table */

/* Owner field (client-stub) */

/* Keep the shared section header spaced like a distinct Roadmap block. */

/* ----------------------------------------------------------------
 * Shared panel shell â€” identical frame every Monitor tab renders
 * into. Left rail + body column; toolbar sits at the top of the
 * body column (NOT above the rail) so the rail can stay tall and
 * scroll independently on deep tables.
 * ---------------------------------------------------------------- */
/* Products page needs a wider rail than the Monitor (more facet groups). */
.product-picker-layout {
  grid-template-columns: minmax(0, 280px) minmax(0, 1fr);
}
/* Narrow the facet rail on mid-sized viewports so the Gantt /
 * matrix body gets more horizontal budget. Below ~980 px the rail
 * collapses to a single column (see full-collapse rule below). */
@media (max-width: 1360px) {
  .product-picker-layout {
    grid-template-columns: minmax(0, 260px) minmax(0, 1fr);
  }
}
@media (max-width: 1200px) {
  .product-picker-layout {
    grid-template-columns: minmax(0, 230px) minmax(0, 1fr);
  }
}

/* Plan 41 â€” .product-picker-scope-row retired. The owner-scope and
   view-mode pill toggles now mount inside render_page_header's right-
   aligned actions slot; the layout chrome that wrapped them is no
   longer needed. */

/* Two-row toolbar variant: controls row on top, chip ribbon below,
 * both inside a single white bordered card. The modifier overrides
 * the single-row flex layout so the card stacks vertically and
 * stretches its children to full width. */

/* Timestamp shown after a successful fetch-news cycle */
.forge-ai-action-meta {
  font-size: var(--text-sm);
  color: var(--text-muted);
  white-space: nowrap;
}

/* Impact regulation chip ribbon â€” pill-row that lives just below
 * the toolbar. Default state shows up to ``--rm-chip-row-cap``
 * pixels (â‰ˆ one row of pills); the trailing "+N more" toggle in
 * the same row flips ``data-expanded="1"`` to reveal the rest
 * inline. We use ``max-height`` (not ``display:none`` per chip)
 * so the transition is smooth and the chips remain in DOM order
 * for tab/keyboard navigation. */

/* Roadmap "showing X of Y" + filter-hint messaging (sits in the
 * toolbar left slot; separates cleanly from any view toggle on
 * the right). */

/* Demo polish: skeleton shimmer for KPI tiles whose backing data
 * is still loading â€” replaces the old "â€”" + "loadingâ€¦" placeholder
 * so first paint on Overview doesn't look broken. See kpi_tile.py
 * ``skeleton=True`` path. */
.kpi-skeleton {
  position: relative;
  display: block;
  border-radius: var(--radius-xs);
  background: var(--border);
  overflow: hidden;
}
.kpi-skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(var(--card-rgb), 0.4) 50%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: kpiShimmerSlide 1.4s ease-in-out infinite;
}
.kpi-skeleton-value {
  height: 1.6rem;
  width: 70%;
}
.kpi-skeleton-sublabel {
  height: 0.7rem;
  width: 45%;
  margin-top: 6px;
}
@media (prefers-reduced-motion: reduce) {
  .kpi-skeleton {
    animation: none;
    opacity: 0.5;
  }
  .kpi-skeleton::after {
    animation: none;
  }
  .forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-value::after,
  .forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-label::after,
  .forge-kpi-pane .kpi-strip[aria-busy="true"] .kpi-meta::after {
    animation: none;
  }
}
/* Industry Benchmark two-column page layout: main content + sticky
 * 320px Market Activity rail. CSS Grid keeps the rail anchored in its
 * column regardless of main-content height changes (tab switching).
 * Collapses to a single column below 900px. */
.benchmark-layout {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 24px;
  align-items: start;
}
@media (max-width: 900px) {
  .benchmark-layout {
    grid-template-columns: 1fr;
  }
}
.benchmark-th {
  padding: 12px 16px;
  color: var(--text-secondary);
  font-weight: 600;
  font-size: 0.75rem;
  text-transform: uppercase;
  background: var(--bg-page);
  border-bottom: 1px solid var(--border);
}
.benchmark-th--left {
  text-align: left;
}
.benchmark-th--right {
  text-align: right;
}
.benchmark-row--self {
  background: var(--tint-blue);
}
.benchmark-rank {
  width: 48px;
  color: var(--text-muted);
  font-weight: 600;
}
.benchmark-company {
  font-weight: 500;
  color: var(--text-primary);
}
.benchmark-company--self {
  font-weight: 700;
  color: var(--brand-blue);
}
.benchmark-num {
  text-align: right;
  color: var(--text-secondary);
}
.benchmark-strong {
  font-weight: 600;
  color: var(--text-primary);
}
.benchmark-muted {
  font-size: 0.75rem;
  color: var(--text-muted);
}
.benchmark-updated {
  color: var(--text-muted);
  font-size: 0.8rem;
}
.benchmark-metric-cell {
  text-align: right;
}
.benchmark-metric {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}
.benchmark-metric .progress-bar {
  flex: 0 0 80px;
  max-width: 80px;
}
.benchmark-metric-value {
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--text-primary);
}
/* ---------------------------------------------------------------------
 * Briefing hero â€” the page's headline AI moment, mounted above the
 * KPI strip on the manager dashboard. While the simulated stream is
 * active a status row with a pulsing dot surfaces work-in-progress
 * messages; once a "done" event lands the caller flips streaming off
 * and the typewriter caret hides.
 * ------------------------------------------------------------------- */
.ai-insights-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 16px 20px;
  width: 100%;
  box-sizing: border-box;
}
.ai-insights-card__label {
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
  font-weight: 700;
  margin-bottom: 8px;
}
.ai-insights-card__empty {
  font-size: 0.88rem;
  color: var(--text-primary);
}
.ai-insights-footer {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.ai-insight-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 6px 0;
  font-size: 0.88rem;
  color: var(--text-primary);
  line-height: 1.4;
  flex-wrap: wrap;
}
.ai-insight-row__text {
  flex: 1;
  min-width: 0;
}
.briefing-link {
  color: var(--brand-blue);
  text-decoration: none;
  border-bottom: 1px dotted var(--brand-blue);
  padding-bottom: 1px;
  transition:
    color 120ms cubic-bezier(0.25, 0, 0, 1),
    border-color 120ms cubic-bezier(0.25, 0, 0, 1);
}
.briefing-link:hover,
.briefing-link:focus-visible {
  color: var(--brand-blue-bright);
  border-bottom-color: var(--brand-blue-bright);
  box-shadow: var(--focus-ring);
  outline: none;
}

/* ---------------------------------------------------------------------
 * Activity dock â€” persistent "what is Osperan working on?" indicator
 * mounted from frame() and visible across every authenticated page.
 * Collapsed state is a small bottom-right pill; click expands a panel
 * listing every active AI task with its current step, elapsed time,
 * and an optional drilldown anchor.
 * ------------------------------------------------------------------- */
.activity-dock-host {
  position: relative;
  z-index: 0;
}
/* Keep scroll targets clear of the fixed activity dock without adding a
   permanent visible footer band to short pages. */
.q-page {
  scroll-padding-bottom: 96px;
}
.activity-dock {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 60;
  font-family: inherit;
  pointer-events: none;
}
.activity-dock-pill,
.activity-dock-panel {
  pointer-events: auto;
}

/* Modal dialogs own pointer interaction; keep the fixed dock from covering
   Quasar menu options that extend beneath its bottom-right footprint. */
body:has(.q-dialog[aria-modal="true"]) .activity-dock {
  visibility: hidden;
}
.activity-dock-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-md, 0 6px 18px rgba(var(--navy-rgb), 0.08));
  color: var(--text-primary);
  font-weight: 600;
  cursor: pointer;
  max-width: 360px;
  transition:
    transform 140ms cubic-bezier(0.25, 0, 0, 1),
    box-shadow 140ms cubic-bezier(0.25, 0, 0, 1);
}
.activity-dock-pill:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(var(--navy-rgb), 0.12);
}
.activity-dock-pill:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
.activity-dock-pill-icon {
  color: var(--brand-blue);
  flex: 0 0 auto;
}
.activity-dock-pill-summary {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1 1 auto;
}
.activity-dock-pill-chev {
  color: var(--text-secondary);
  flex: 0 0 auto;
  transition: transform 160ms cubic-bezier(0.25, 0, 0, 1);
}
.activity-dock[data-expanded="true"] .activity-dock-pill-chev {
  transform: rotate(180deg);
}
.activity-dock-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brand-blue);
  box-shadow: 0 0 0 0 var(--brand-ai-glow);
  animation: activity-dock-pulse 1.6s ease-out infinite;
  flex: 0 0 auto;
}
@keyframes activity-dock-pulse {
  0% {
    box-shadow: 0 0 0 0 var(--brand-ai-glow);
  }
  70% {
    box-shadow: 0 0 0 8px transparent;
  }
  100% {
    box-shadow: 0 0 0 0 transparent;
  }
}
.activity-dock-panel {
  position: absolute;
  right: 0;
  bottom: calc(100% + 10px);
  width: 360px;
  max-height: 460px;
  overflow-y: auto;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  box-shadow: 0 18px 36px rgba(var(--navy-rgb), 0.16);
  display: none;
  flex-direction: column;
}
.activity-dock[data-expanded="true"] .activity-dock-panel {
  display: flex;
}
.activity-dock-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  background: var(--bg-card);
  z-index: 1;
}
.activity-dock-panel-title {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  font-size: var(--text-sm);
  color: var(--text-primary);
}
.activity-dock-panel-title .material-icons {
  color: var(--brand-blue);
  font-size: var(--text-md);
}
.activity-dock-close {
  border: none;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  border-radius: var(--radius-md);
}
.cmdk-trigger {
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text-secondary);
  cursor: pointer;
}
.activity-dock-close:hover {
  background: var(--tint-slate);
}
.activity-dock-close:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 1px;
}
.activity-dock-list {
  display: flex;
  flex-direction: column;
}
.activity-dock-section-title {
  margin: 0;
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.activity-dock-section .activity-dock-entry {
  padding-top: 8px;
  padding-bottom: 8px;
}
.activity-dock-ask {
  margin-top: 8px;
}
.activity-dock-entry {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}
.activity-dock-entry:last-child {
  border-bottom: none;
}
.activity-dock-entry-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--text-sm);
  color: var(--text-primary);
  font-weight: 700;
}
.activity-dock-entry-icon {
  color: var(--brand-blue);
  font-size: var(--text-base);
  flex: 0 0 auto;
}
.activity-dock-entry-title {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.activity-dock-entry-elapsed {
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  flex: 0 0 auto;
}
.activity-dock-entry-step {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--text-sm);
  color: var(--text-secondary);
  line-height: 1.4;
}
.activity-dock-entry-target {
  font-size: var(--text-xs);
}
.activity-dock-target {
  color: var(--brand-blue);
  text-decoration: none;
  border-bottom: 1px dotted var(--brand-blue);
}
.activity-dock-target:hover,
.activity-dock-target:focus-visible {
  color: var(--brand-blue-bright);
  border-bottom-color: var(--brand-blue-bright);
  box-shadow: var(--focus-ring);
  outline: none;
}
.activity-dock-empty {
  padding: 18px 14px;
  font-size: var(--text-sm);
  color: var(--text-secondary);
  text-align: center;
}
@media (max-width: 720px) {
  .activity-dock {
    position: static;
    width: 100%;
    box-sizing: border-box;
    display: flex;
    justify-content: flex-end;
    padding: 12px;
    pointer-events: none;
    right: 12px;
    bottom: 12px;
  }
  .activity-dock-panel {
    width: calc(100vw - 24px);
    max-width: 360px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .activity-dock-pulse {
    animation: none;
  }
}

/* ===========================================================================
   AI provenance footer â€” canonical disclosure for LLM-rendered surfaces.
   Mirrors forge-product-integrity.mdc: every AI surface discloses model +
   timestamp + input hash. Used by ai_provenance_footer.summary_meta_footer_html;
   classes are consumed verbatim from that helper.
   ========================================================================== */
.forge-ai-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 16px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
  color: var(--text-secondary);
}
.forge-ai-footer-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--brand-ai-tint);
  border: 1px solid var(--brand-ai);
  color: var(--brand-ai);
}
.forge-ai-footer-chip .material-icons {
  color: var(--brand-ai);
}
.forge-ai-footer-meta {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}
.forge-ai-footer-key {
  color: var(--text-secondary);
}
.forge-ai-footer-value {
  color: var(--text-primary);
  word-break: break-word;
  min-width: 0;
}
.forge-ai-footer[data-forge-ai-footer="placeholder"] .forge-ai-footer-value {
  color: var(--text-secondary);
}
@media (max-width: 720px) {
  .forge-ai-footer {
    gap: 6px 12px;
  }
}

.forge-manager-decision-row {
  display: grid;
  grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr) auto;
  gap: var(--space-3);
  align-items: center;
}

.forge-manager-decision-row__object {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: var(--space-1);
}

.forge-manager-decision-row__meta,
.forge-manager-decision-row__evidence {
  color: var(--text-secondary);
}

.forge-manager-decision-row__status,
.forge-manager-decision-row__actions {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.forge-manager-decision-row__status {
  min-width: 0;
  justify-content: flex-start;
}

.forge-manager-decision-row__actions {
  justify-content: flex-end;
}

.forge-manager-decision-status {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.forge-manager-decision-status__detail {
  min-width: 0;
  color: var(--text-secondary);
}

@media (max-width: 720px) {
  .forge-manager-decision-row {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
  }

  .forge-manager-decision-row__object {
    grid-column: 1 / -1;
  }

  .forge-manager-decision-row__status {
    grid-column: 1;
  }

  .forge-manager-decision-row__actions {
    grid-column: 2;
  }
}

@keyframes manager-attention-pulse {
  0% {
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--brand-blue) 45%, transparent);
  }
  70% {
    box-shadow: 0 0 0 6px transparent;
  }
  100% {
    box-shadow: 0 0 0 0 transparent;
  }
}

/* ===========================================================================
   Ripple set-piece overlay (Plan 61 Phase E)
   ========================================================================== */

@keyframes ripple-overlay-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Plan 62: ripple footer button when DoC preview hand-off is wired */

/* ===========================================================================
   EU DoC / DoP side-by-side preview (Plan 62)
   ========================================================================== */

/* Screen-reader-only label for changed lines so AT announce the diff. */

@media (max-width: 880px) {

}

/* Source-document actions use current workspace controls. */

.forge-source-intake {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 4px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  box-sizing: border-box;
  margin-top: 16px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text-primary);
}
.forge-source-intake--standalone {
  margin-top: 12px;
}
.forge-source-intake--clickable {
  cursor: pointer;
}
.forge-source-intake--clickable:hover,
.forge-source-intake--clickable:focus-visible {
  border-color: var(--brand-blue);
  box-shadow: inset 3px 0 0 var(--brand-blue);
}
.forge-source-intake.is-dragover {
  background: color-mix(in srgb, var(--tint-blue) 44%, var(--bg-card));
  border-color: var(--brand-blue);
  box-shadow: inset 3px 0 0 var(--brand-blue);
}
.forge-source-intake__copy {
  min-width: 0;
  overflow: hidden;
}
.forge-source-intake__title {
  font-size: 0.9rem;
  font-weight: var(--font-weight-display);
  color: var(--text-primary);
  line-height: 1.35;
}
.forge-source-intake__hint {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.forge-source-intake__controls {
  margin: 8px 0 2px;
}
.forge-source-intake .forge-btn {
  justify-self: end;
}
.forge-source-upload-row {
  position: relative;
  display: block;
  width: 100%;
}
.forge-source-upload-row .q-uploader {
  min-width: 0;
}
.forge-source-intake__uploader.q-uploader {
  width: 100%;
  height: 112px;
  min-height: 112px;
  max-height: 112px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg-subtle);
  box-shadow: none;
}
.forge-source-intake__uploader.q-uploader--dnd,
.forge-source-intake__uploader.q-uploader:hover {
  border-color: var(--brand-blue);
  background: var(--tint-blue);
}
.forge-source-intake__uploader .q-uploader__header {
  display: none;
}
.forge-source-intake__uploader .q-uploader__header {
  background: var(--bg-soft) !important;
  color: var(--text-primary) !important;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-source-intake__uploader:not(:has(.q-uploader__file)) .q-uploader__header {
  display: none;
}
.forge-source-intake__uploader .q-uploader__list {
  min-height: 74px;
  background: transparent;
}
.forge-source-intake__uploader:not(:has(.q-uploader__file)) .q-uploader__list {
  display: grid;
  place-items: center;
}
.forge-source-intake__uploader:not(:has(.q-uploader__file)) .q-uploader__list::before {
  content: "Drop a file here";
  color: var(--text-secondary);
  font-size: var(--text-sm);
}
.forge-source-intake__uploader .q-uploader__list {
  min-height: 108px;
  background: transparent;
}
.forge-source-intake__uploader .q-uploader__list::before {
  content: none;
}
.forge-source-intake__uploader:not(:has(.q-uploader__file)) .q-uploader__list::before {
  content: none;
}
.forge-source-dropzone__content {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  pointer-events: none;
}
.forge-source-dropzone__prompt {
  color: var(--text-secondary);
  font-size: var(--text-sm);
  text-align: center;
}
.forge-source-dropzone__content .forge-btn {
  pointer-events: auto;
}
.forge-source-upload-row:has(.q-uploader__file) .forge-source-dropzone__content {
  display: none;
}
.forge-source-upload-feedback:empty {
  display: none;
}
@media (max-width: 640px) {
  .forge-source-intake__uploader.q-uploader {
    height: var(--layout-source-intake-mobile-uploader-block-size);
    min-height: var(--layout-source-intake-mobile-uploader-block-size);
    max-height: var(--layout-source-intake-mobile-uploader-block-size);
  }
  .forge-source-dropzone__content {
    flex-direction: column;
    gap: 8px;
  }
}

.forge-upload-dialog-drop {
  margin-top: 4px;
  padding: 12px;
  gap: 10px;
  border: 1px dashed color-mix(in srgb, var(--border) 78%, var(--text-secondary));
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--bg-card) 74%, var(--bg-page));
}
.forge-upload-dialog-drop__copy {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}
.forge-upload-dialog-drop__title {
  font-size: var(--text-sm);
  font-weight: var(--font-weight-display);
  color: var(--text-primary);
  line-height: 1.35;
}
.forge-upload-dialog-drop__hint,
.forge-upload-dialog-drop__file {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  line-height: 1.35;
}
.forge-upload-dialog-drop__uploader {
  width: 100%;
}
.forge-upload-dialog-drop__uploader.q-uploader,
.forge-upload-dialog-drop__uploader .q-uploader {
  width: 100%;
  min-height: var(--layout-upload-dialog-min-block-size);
  max-height: 112px;
  border: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  box-shadow: none;
}
.forge-upload-dialog-drop__uploader.q-uploader .q-uploader__header,
.forge-upload-dialog-drop__uploader .q-uploader__header {
  min-height: 34px;
  background: transparent;
  color: var(--text-primary);
  border-bottom: 1px solid var(--border);
}
.forge-upload-dialog-drop__uploader.q-uploader .q-uploader__list,
.forge-upload-dialog-drop__uploader .q-uploader__list {
  min-height: 20px;
  max-height: 58px;
  background: transparent;
}
.forge-upload-dialog-drop__actions {
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.forge-feedback-dialog__supporting-text,
.forge-feedback-dialog__context-summary,
.forge-feedback-dialog__file {
  color: var(--text-muted);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  line-height: 1.45;
}
.forge-feedback-dialog__file {
  overflow-wrap: anywhere;
}
.forge-feedback-dialog .forge-upload-dialog-drop__uploader.q-uploader,
.forge-feedback-dialog .forge-upload-dialog-drop__uploader .q-uploader {
  min-height: var(--layout-upload-dialog-min-block-size);
  max-height: var(--layout-feedback-upload-max-block-size);
  border: 0;
  border-radius: 0;
  background: transparent;
}
.forge-feedback-dialog .forge-upload-dialog-drop__uploader.q-uploader .q-uploader__header,
.forge-feedback-dialog .forge-upload-dialog-drop__uploader .q-uploader__header {
  border-bottom: 0;
}
.forge-feedback-dialog .forge-upload-dialog-drop__uploader.q-uploader .q-uploader__list,
.forge-feedback-dialog .forge-upload-dialog-drop__uploader .q-uploader__list {
  max-height: 36px;
}

@media (max-width: 700px) {
  .forge-upload-dialog-drop__copy {
    grid-template-columns: minmax(0, 1fr);
  }
  .forge-upload-dialog-drop__actions {
    align-items: flex-start;
    flex-direction: column;
  }
}

.forge-product-review-action {
  margin: 14px 0 18px;
  padding: 14px 0 18px;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-product-review-action__copy {
  flex: 1 1 28rem;
  min-width: 0;
}
.forge-product-review-action__copy .forge-section-header {
  align-items: flex-start;
  justify-content: flex-start;
  gap: 4px;
}
.forge-product-review-action__copy .forge-section-copy {
  display: grid;
  gap: 4px;
}
.forge-product-review-action__copy .forge-section-eyebrow {
  color: var(--text-primary);
  font-size: 0.95rem;
  font-weight: 650;
  line-height: 1.35;
}
.forge-product-quality-monitoring {
  margin: 8px 0 2px;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-product-quality-monitoring > .q-expansion-item__container > .q-item {
  min-height: 42px;
  padding-inline: 0;
  color: var(--text-primary);
}
.forge-product-quality-monitoring .q-item__label {
  font-size: var(--text-sm);
  font-weight: 600;
}

@media (max-width: 700px) {
  .forge-product-review-action {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* ===========================================================================
   Plan 65 Phase B â€” Source-document QA receipt
   The Sources library row is a <details> so click-to-expand reveals
   document-level receipts and source datapoints.
   =========================================================================== */
details.forge-source-card {
  display: block;
}
details.forge-source-card > summary {
  list-style: none;
  cursor: pointer;
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(180px, 0.8fr) auto;
  align-items: center;
  gap: 20px;
}
details.forge-source-card > summary::-webkit-details-marker {
  display: none;
}
.forge-source-data-points-panel {
  margin-top: 10px;
}
.forge-source-data-points-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.forge-source-data-point {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid var(--border);
}
.forge-source-data-point__main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.forge-source-data-point__meta {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 6px;
  color: var(--text-muted);
  font-size: var(--text-xs);
  text-align: right;
  white-space: nowrap;
}
.forge-source-data-point__confidence {
  color: var(--text-secondary);
}
@media (max-width: 760px) {
  details.forge-source-card > summary {
    grid-template-columns: minmax(0, 1fr);
  }
  .forge-source-data-point {
    grid-template-columns: minmax(0, 1fr);
  }
  .forge-source-data-point__meta {
    justify-content: flex-start;
    text-align: left;
    white-space: normal;
  }
}
.forge-qa-receipt-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  flex-wrap: wrap;
}
.forge-qa-receipt-pill {
  /* Inherits .pill .pill-green / .pill-red palette; no overrides needed. */
  font-weight: 600;
  letter-spacing: 0.01em;
}
.forge-qa-receipt-delta {
  font-size: var(--text-xs);
  color: var(--text-muted);
  max-width: 240px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.forge-qa-receipt-expansion {
  grid-column: 1 / -1;
  padding: 14px 18px 16px;
  border-top: 1px solid var(--border-subtle);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: 14px;
  border-radius: 0 0 10px 10px;
  margin-top: 8px;
}
.forge-qa-receipt-id {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px 18px;
  font-size: var(--text-sm);
}
.forge-qa-receipt-id .kicker {
  display: block;
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  margin-bottom: 2px;
}
.forge-qa-receipt-fields {
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px dashed var(--border-subtle);
  padding-top: 12px;
}
.forge-qa-receipt-field {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) minmax(180px, 2fr) auto;
  gap: 12px;
  align-items: center;
  font-size: var(--text-sm);
}
.forge-qa-receipt-field-name {
  color: var(--text-muted);
  font-weight: 500;
}
.forge-qa-receipt-field-value {
  color: var(--text-primary);
  word-break: break-word;
}
.forge-qa-receipt-gates {
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px dashed var(--border-subtle);
  padding-top: 12px;
}
.forge-qa-receipt-gate {
  display: grid;
  grid-template-columns: 22px minmax(140px, 1fr) minmax(200px, 3fr);
  gap: 10px;
  align-items: baseline;
  font-size: var(--text-sm);
  padding: 6px 8px;
  border-radius: var(--radius-sm);
}
.forge-qa-receipt-gate.is-passed {
  background: color-mix(in srgb, var(--brand-green) 6%, transparent);
}
.forge-qa-receipt-gate.is-failed {
  background: color-mix(in srgb, var(--brand-red) 7%, transparent);
}
.forge-qa-receipt-gate-icon {
  font-weight: 700;
  text-align: center;
}
.forge-qa-receipt-gate.is-passed .forge-qa-receipt-gate-icon {
  color: var(--brand-green);
}
.forge-qa-receipt-gate.is-failed .forge-qa-receipt-gate-icon {
  color: var(--text-primary);
}
.forge-qa-receipt-gate-label {
  font-weight: 600;
  color: var(--text-primary);
}
.forge-qa-receipt-gate-note {
  color: var(--text-muted);
}
.forge-qa-receipt-provenance {
  font-size: var(--text-xs);
  color: var(--text-muted);
  border-top: 1px dashed var(--border-subtle);
  padding-top: 10px;
}
@media (max-width: 720px) {
  .forge-qa-receipt-field {
    grid-template-columns: 1fr;
    gap: 4px;
  }
  .forge-qa-receipt-gate {
    grid-template-columns: 22px 1fr;
  }
  .forge-qa-receipt-gate-note {
    grid-column: 2 / -1;
  }
}

/* ===========================================================================
   Plan 65 Phase D â€” Supplier-validate streamed overlay
   Mirrors the ripple overlay's frame/positioning conventions so the two
   set-pieces feel like siblings rather than two unrelated dialogs.
   The Identify -> Extract -> Gates -> Verdict sections stack vertically
   inside the card and animate in as the stream advances.
   =========================================================================== */
.forge-supplier-validate-host {
  position: relative;
  z-index: 1500;
}
.forge-supplier-validate-overlay {
  position: fixed;
  inset: 0;
  z-index: 1500;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  animation: ripple-overlay-in 200ms ease-out;
}
.forge-supplier-validate-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(var(--navy-rgb), 0.45);
  backdrop-filter: blur(2px);
  cursor: pointer;
}
.forge-supplier-validate-card {
  position: relative;
  width: min(720px, 100%);
  max-height: calc(100vh - 48px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: var(--bg-card);
  border-radius: var(--radius-xl);
  box-shadow: 0 28px 80px rgba(var(--navy-rgb), 0.32);
  padding: 20px 24px 20px;
  overflow-y: auto;
}
.forge-supplier-validate-head {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.forge-supplier-validate-head-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-sm);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--brand-blue);
  font-weight: 600;
}
.forge-supplier-validate-head-eyebrow .material-icons {
  font-size: var(--text-base);
}
.forge-supplier-validate-head-titlebar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding-right: 36px;
}
.forge-supplier-validate-head-title {
  margin: 0;
  font-size: var(--text-md);
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1.3;
}
.forge-supplier-validate-doc-chip {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  background: var(--tint-blue, color-mix(in srgb, var(--brand-slate) 10%, transparent));
  color: var(--brand-blue);
  font-weight: 700;
  letter-spacing: 0.06em;
}
.forge-supplier-validate-head-meta {
  color: var(--text-muted);
  font-size: var(--text-sm);
}
.forge-supplier-validate-close {
  position: absolute;
  top: -4px;
  right: -6px;
  border-radius: var(--radius-pill);
  border: 0;
  background: transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
}
.forge-supplier-validate-close:hover {
  background: rgba(var(--navy-rgb), 0.06);
}
.forge-supplier-validate-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--brand-slate) 8%, transparent);
  color: var(--brand-blue);
  font-size: var(--text-sm);
  align-self: flex-start;
}
.forge-supplier-validate-pulse {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  background: var(--brand-blue);
  animation: manager-attention-pulse 1.6s ease-in-out infinite;
}
.forge-supplier-validate-section-head {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  font-weight: 600;
  margin-bottom: 6px;
}
.forge-supplier-validate-section-head .material-icons {
  font-size: var(--text-base);
}
.forge-supplier-validate-extract-list,
.forge-supplier-validate-gates-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.forge-supplier-validate-extract-item {
  display: grid;
  grid-template-columns: minmax(140px, 220px) 1fr 88px;
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  border-radius: var(--radius-md);
  background: rgba(var(--navy-rgb), 0.03);
  font-size: var(--text-sm);
}
.forge-supplier-validate-extract-name {
  font-family: var(--font-mono, ui-monospace, "SF Mono", monospace);
  font-size: var(--text-sm);
  color: var(--text-muted);
}
.forge-supplier-validate-extract-value {
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.forge-supplier-validate-extract-conf {
  display: flex;
  justify-content: flex-end;
}
.forge-supplier-validate-gate {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 10px;
  align-items: start;
  padding: 8px 10px;
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  font-size: var(--text-sm);
}
.forge-supplier-validate-gate.is-passed {
  background: color-mix(in srgb, var(--brand-green) 6%, transparent);
  border-color: color-mix(in srgb, var(--brand-green) 18%, transparent);
}
.forge-supplier-validate-gate.is-failed {
  background: color-mix(in srgb, var(--brand-red) 7%, transparent);
  border-color: color-mix(in srgb, var(--brand-red) 20%, transparent);
}
.forge-supplier-validate-gate-icon {
  font-size: var(--text-md);
}
.forge-supplier-validate-gate.is-passed .forge-supplier-validate-gate-icon {
  color: var(--brand-green);
}
.forge-supplier-validate-gate.is-failed .forge-supplier-validate-gate-icon {
  color: var(--text-primary);
}
.forge-supplier-validate-gate-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.forge-supplier-validate-gate-label {
  font-weight: 600;
  color: var(--text-primary);
}
.forge-supplier-validate-gate-note {
  color: var(--text-muted);
}
.forge-supplier-validate-verdict {
  margin-top: 4px;
  padding: 12px 14px;
  border-radius: var(--radius-card);
  border: 1px solid transparent;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.forge-supplier-validate-verdict.is-recommend {
  background: color-mix(in srgb, var(--brand-green) 8%, transparent);
  border-color: color-mix(in srgb, var(--brand-green) 22%, transparent);
}
.forge-supplier-validate-verdict.is-reject {
  background: color-mix(in srgb, var(--brand-red) 8%, transparent);
  border-color: color-mix(in srgb, var(--brand-red) 22%, transparent);
}
.forge-supplier-validate-verdict-head {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  font-size: var(--text-base);
}
.forge-supplier-validate-verdict.is-recommend
  .forge-supplier-validate-verdict-head {
  color: var(--brand-green);
}
.forge-supplier-validate-verdict.is-reject
  .forge-supplier-validate-verdict-head {
  color: var(--text-primary);
}
.forge-supplier-validate-verdict-body {
  margin: 0;
  color: var(--text-primary);
  font-size: var(--text-sm);
  line-height: 1.45;
}
.forge-supplier-validate-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 6px;
  border-top: 1px solid var(--border-subtle);
  padding-top: 12px;
}
.forge-supplier-validate-footer-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  background: var(--button-primary-bg);
  color: var(--button-primary-text);
  text-decoration: none;
  font-weight: 600;
  font-size: var(--text-sm);
}
.forge-supplier-validate-footer-cta:hover {
  background: var(--button-primary-bg-hover);
}
.forge-supplier-validate-footer-secondary {
  border: 0;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  padding: 8px 12px;
  border-radius: var(--radius-pill);
  font-size: var(--text-sm);
}
.forge-supplier-validate-footer-secondary:hover {
  background: rgba(var(--navy-rgb), 0.06);
}
@media (max-width: 720px) {
  .forge-supplier-validate-extract-item {
    grid-template-columns: 1fr;
  }
  .forge-supplier-validate-extract-conf {
    justify-content: flex-start;
  }
}

/* Catalog picker container */
.catalog-picker {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.catalog-picker--empty {
  padding: 24px 20px;
  color: var(--text-muted);
  font-size: var(--text-sm);
}

/* Individual catalog row */
.catalog-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--bg-card);
  border-bottom: 1px solid var(--border-subtle);
  transition: background 0.12s;
}
.catalog-row:last-child {
  border-bottom: 0;
}
.catalog-row:hover {
  background: var(--bg-hover);
}

.catalog-row--watching {
  border-left: 3px solid var(--brand-green);
  padding-left: 13px;
  background: color-mix(in srgb, var(--brand-green) 6%, transparent);
}
.catalog-row--watching .catalog-code {
  background: color-mix(in srgb, var(--brand-green) 12%, transparent);
  color: var(--brand-green-dark);
}
.catalog-row--coming-soon .catalog-name {
  color: var(--text-muted);
}
.catalog-row--coming-soon .catalog-code {
  opacity: 0.55;
}

.catalog-section-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px 8px;
  background: var(--bg-page);
  border-bottom: 1px solid var(--border-subtle);
}
.catalog-section-label {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
}
.catalog-section-count {
  display: inline-flex;
  min-width: 1.5rem;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: 700;
  background: var(--border);
  color: var(--text-secondary);
}

/* Info wrapper (NiceGUI ui.html div) â€” stretches to fill the row */
.catalog-row-info {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
}

/* ============================================================
   Shared regulation code chip â€” one class used across every surface
   that shows a regulation short code (product picker,
   feed/proposal rows, roadmap, workstation, â€¦).
   Visual treatment matches .catalog-code so the same regulation always
   looks the same everywhere. Use .reg-code-chip--unconfirmed for
   pending / unconfirmed matches.
   ============================================================ */
.reg-code-chip {
  display: inline-block;
  flex-shrink: 0;
  padding: var(--space-1) var(--space-2);
  color: var(--text-muted);
  background: var(--bg-subtle);
  border-radius: var(--radius-xs);
  white-space: nowrap;
  vertical-align: middle;
}
.reg-code-chip.reg-code-chip--unconfirmed {
  color: var(--brand-amber-text);
  background: color-mix(in srgb, var(--brand-amber) 10%, transparent);
}
.reg-code-chip--upcoming {
  color: var(--text-muted);
  background: transparent;
  border: 1px dashed var(--border-strong);
  padding: 1px 6px;
}
.reg-code-chip__upcoming-label {
  opacity: 0.75;
  text-transform: none;
}

/* Short code prefix (e.g. "cpr") */
.catalog-code {
  flex-shrink: 0;
  min-width: 48px;
  font-size: var(--text-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  padding: 2px 6px;
  background: var(--bg-subtle);
  border-radius: var(--radius-xs);
}

/* Regulation full name */
.catalog-name {
  flex: 1;
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--text-primary);
  line-height: 1.35;
}

/* Status badge */
.catalog-badge {
  flex-shrink: 0;
  display: inline-block;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: 600;
}
.catalog-badge--watching {
  background: color-mix(in srgb, var(--brand-green) 12%, transparent);
  color: var(--brand-green);
}
.catalog-badge--idle {
  background: transparent;
  color: var(--text-muted);
}
.catalog-badge--coming-soon {
  background: color-mix(in srgb, var(--brand-slate) 10%, transparent);
  color: var(--text-muted);
  cursor: default;
}

/* Action column */
.catalog-actions {
  flex-shrink: 0;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
}
.catalog-toggle {
  padding: 4px 12px;
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius-pill);
  font-size: var(--text-sm);
  font-weight: 600;
  cursor: pointer;
  transition:
    background 0.12s,
    color 0.12s;
}
.catalog-toggle--add {
  border: 1px solid var(--button-primary-border);
  background: var(--button-primary-bg);
  color: var(--button-primary-text);
}
.catalog-toggle--add:hover {
  background: var(--button-primary-bg-hover);
}
.catalog-toggle--remove {
  border: 1px solid var(--border-subtle);
  background: transparent;
  color: var(--text-muted);
}
.catalog-toggle--remove:hover {
  background: color-mix(in srgb, var(--brand-red) 8%, transparent);
  border-color: var(--text-primary);
  color: var(--text-primary);
}

/* Expandable catalog row (Plan 580) */
.catalog-row--collapsible {
  display: block;
}
.catalog-row--collapsible .catalog-row-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  cursor: pointer;
  user-select: none;
  transition: background 0.12s;
}
.catalog-row--collapsible .catalog-row-header:hover {
  background: var(--bg-hover);
}
.catalog-row--collapsible.catalog-row--expanded .catalog-row-header {
  background: var(--bg-subtle);
}
.catalog-row-chevron {
  flex-shrink: 0;
  font-size: 1rem;
  color: var(--text-muted);
  transition: transform 0.18s;
  display: inline-block;
  margin-left: 2px;
  transform: rotate(0deg);
}
.catalog-row--expanded .catalog-row-chevron {
  transform: rotate(90deg);
}
.catalog-row-detail {
  padding: 10px 16px 14px 40px;
  background: var(--bg-subtle);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm, 0.875rem);
  color: var(--text-secondary);
}
.catalog-detail-title {
  font-weight: 600;
  color: var(--text-primary);
  margin: 0 0 4px;
  font-size: 0.875rem;
}
.catalog-detail-description {
  margin: 0 0 10px;
  color: var(--text-secondary);
  font-size: var(--text-sm, 0.875rem);
  line-height: 1.55;
}
.catalog-detail-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 4px 0;
}
.catalog-detail-label {
  font-size: var(--text-xs, 0.75rem);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  flex-shrink: 0;
  min-width: 110px;
}
.catalog-detail-label--section {
  display: block;
  margin: 10px 0 4px;
}
.catalog-detail-value {
  color: var(--text-secondary);
}
.catalog-detail-link {
  color: var(--brand-blue);
  text-decoration: none;
}
.catalog-detail-link:hover {
  text-decoration: underline;
}
.catalog-detail-obligations {
  margin: 0;
  padding: 0 0 0 14px;
  list-style: disc;
}
.catalog-detail-obligation {
  margin: 3px 0;
  color: var(--text-secondary);
  font-size: var(--text-sm, 0.875rem);
}

/* ============================================================
   Plan 177 â€” Proposals toolbar defer group
   ============================================================ */

/* Key-value rows inside drawer sections */
.kv-row {
  display: flex;
  gap: 8px;
  font-size: var(--text-sm);
  padding: 3px 0;
  border-bottom: 1px solid var(--border-subtle);
}
.kv-row:last-child {
  border-bottom: none;
}
.kv-key {
  font-weight: 600;
  color: var(--text-muted);
  min-width: 80px;
  flex-shrink: 0;
}

/* â”€â”€ Proposals status tabs (Plan 237) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-proposals-status-tab {
  padding: 4px 14px;
  font-size: var(--text-sm);
  font-weight: 600;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s,
    border-color 0.15s;
}
.forge-proposals-status-tab:hover {
  background: var(--tint-slate);
  color: var(--text-primary);
}
.forge-proposals-status-tab.is-active {
  background: var(--surface-control-active);
  border-color: var(--border-strong);
  color: var(--text-primary);
}

/* â”€â”€ Tone utility classes (Plan 278) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
 * Used by Python HTML builders to set semantic colors without embedding
 * hex literals. Prefer these over inline style="color:â€¦" for all new code.
 */
.color-red {
  color: var(--text-primary);
}
.color-amber {
  color: var(--brand-amber-text);
}
.color-green {
  color: var(--brand-green);
}
.color-blue {
  color: var(--brand-blue);
}
.color-muted {
  color: var(--text-secondary);
}

/* â”€â”€ Osperan error card (Plan 278) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-error-card {
  padding: 16px 20px;
  border-radius: var(--radius-md);
  background: var(--tint-red);
  border-left: 3px solid var(--brand-red);
  color: var(--text-primary);
  font-size: var(--text-sm);
}
.forge-error-card .forge-error-title {
  font-weight: 700;
  margin-bottom: 4px;
}
.forge-error-card .forge-error-body {
  color: var(--text-secondary);
  font-size: var(--text-sm);
}

/* â”€â”€ Summary card tokens (Plan 278 / header.py) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-summary-card {
  background: var(--bg-card);
  color: var(--text-secondary);
  border-radius: var(--radius-md);
  padding: 12px 16px;
}

/* â”€â”€ Bulk review modal lanes (Plan 285) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* .forge-review-lane base is defined earlier; this --workflow variant adds
   the flex column layout used in the Plan 285 summary drawer. */
.forge-review-lane,
.forge-review-lane--workflow {
  flex: 1;
  min-width: 0;
  background: var(--bg-card);
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  padding: 12px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.forge-review-lane-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 4px;
}
.forge-review-lane-title {
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--lane-fg, var(--text-primary));
}
.forge-review-lane-count {
  background: var(--lane-color, var(--brand-blue));
  color: var(--color-white);
  border-radius: var(--radius-pill);
  padding: 2px 8px;
  font-size: var(--text-xs);
  font-weight: 700;
}
.forge-review-lane-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: var(--text-sm);
  padding: 4px 0;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-lane-row:first-child {
  border-top: none;
}
.forge-review-lane-row-id {
  font-weight: 600;
  color: var(--lane-fg, var(--text-primary));
  flex: none;
}
.forge-review-lane-row-reason {
  color: var(--lane-fg, var(--text-secondary));
  opacity: 0.85;
  font-size: var(--text-xs);
  text-align: right;
}
.forge-review-empty {
  font-size: var(--text-sm);
  color: var(--text-muted);
  font-style: italic;
}

/* â”€â”€ Banner variants (Plan 286) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* Plan 803: deliberate 6px left-flush stripe replaces the 3px accent border.
 * The border-radius is removed on the left side so the stripe reads as a
 * structural element rather than a decorative accent.
 * Do not revert to border-left; see Plan 803 in TASKS.md. */
/* Plan 803: Banner redesign â€” icon-first treatment replaces the lazy
 * border-left accent stripe. Each variant now opens with a 16px solid
 * circle icon (provided by the icon slot class), removing the
 * asymmetric border-radius. The background tint alone carries the
 * color signal; the icon adds clear semantic intent. */
.forge-banner {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 12px 16px;
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.forge-banner__icon {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  margin-top: 1px;
  display: inline-block;
}
.forge-banner--info {
  background: var(--tint-info);
  border-color: var(--color-info-border);
  color: var(--text-primary);
}
.forge-banner--info .forge-banner__icon {
  background: var(--brand-blue);
  box-shadow: 0 0 0 3px var(--tint-info);
}
.forge-banner--warning {
  background: var(--tint-amber);
  border-color: var(--color-warning-border);
  color: var(--text-primary);
}
.forge-banner--warning .forge-banner__icon {
  background: var(--brand-amber-bright);
  box-shadow: 0 0 0 3px var(--color-warning-surface);
}
.forge-banner--spaced {
  margin-top: 8px;
}
.forge-banner--neutral {
  background: var(--tint-slate);
  border-color: var(--border);
  color: var(--text-secondary);
}
.forge-banner--neutral .forge-banner__icon {
  background: var(--text-muted);
  box-shadow: 0 0 0 3px var(--tint-slate);
}
.forge-banner--success {
  background: var(--tint-green);
  border-color: var(--border-green);
  color: var(--text-primary);
}
.forge-banner--success .forge-banner__icon {
  background: var(--brand-green);
  box-shadow: 0 0 0 3px var(--tint-green);
}
.forge-banner--danger {
  background: var(--tint-red);
  border-color: var(--border-danger);
  color: var(--text-primary);
}
.forge-banner--danger .forge-banner__icon {
  background: var(--brand-red);
  box-shadow: 0 0 0 3px var(--tint-red);
}
/* Plan 308 â€” slate/informational banner variant (EPD notice, neutral guidance). */
.forge-banner--slate {
  background: var(--tint-slate);
  border-color: var(--border);
  color: var(--text-primary);
}
.forge-banner--slate .forge-banner__icon {
  background: var(--text-muted);
  box-shadow: 0 0 0 3px var(--tint-slate);
}
/* Plan 957 â€” banner inner-element classes; eliminate inline style= attributes. */
.forge-banner__title {
  font-weight: 700;
  color: var(--text-primary);
}
.forge-banner__desc {
  color: var(--text-secondary);
  margin-top: 1px;
}
.forge-banner__material-icon--warning {
  color: var(--text-primary);
}
.forge-banner__material-icon--neutral {
  color: var(--text-muted);
}
/* Plan 957 â€” Settings page read-only hint box. */
.forge-settings-readonly-hint {
  padding: 18px 22px;
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  background: var(--bg-page);
  color: var(--text-muted);
  font-size: 0.85rem;
  max-width: 640px;
  margin-top: 8px;
}
.forge-settings-readonly-field {
  display: grid;
  min-width: 0;
  gap: 4px;
  margin: 0;
  padding-block: var(--space-2) var(--space-3);
  padding-inline: var(--space-0);
  border-bottom: 1px solid var(--border-subtle);
  background: transparent;
}
.forge-settings-readonly-field__label {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 600;
  line-height: 1.35;
}
.forge-settings-readonly-field__value {
  min-width: 0;
  margin: 0;
  color: var(--text-primary);
  font-size: var(--text-sm);
  line-height: 1.45;
  overflow-wrap: anywhere;
}
/* Plan 314 — deadline urgency cell highlight. */
.forge-deadline-cell {
  white-space: nowrap;
  font-size: 0.8125rem;
  color: var(--text-secondary);
}
.forge-deadline--urgent {
  color: var(--text-primary);
  font-weight: 600;
}
/* Plan 313 â€” match confidence badge + reasons expander. */
.forge-match-cell {
  white-space: nowrap;
  font-size: 0.8125rem;
}
.forge-match-confidence {
  display: inline-block;
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--surface-accent);
  color: var(--brand-blue);
}
.forge-match-confidence--unknown {
  background: var(--surface-muted);
  color: var(--text-secondary);
  font-weight: 400;
}
.forge-match-reasons {
  margin: 0.375rem 0 0;
  padding-left: 1.25rem;
  font-size: 0.75rem;
  color: var(--text-secondary);
  list-style: disc;
}
/* Plan 318 â€” summary-only scan quality warning badge. */
.forge-scan-quality-warn {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.0625rem 0.3125rem;
  border-radius: 0.25rem;
  font-size: 0.6875rem;
  font-weight: 600;
  background: var(--surface-amber);
  color: var(--text-primary);
  white-space: nowrap;
}
/* Plan 68 â€” status_banner_html body + action control. The action is a real
 * button / link, never a button faked as an underlined text link. */
.forge-banner__body {
  flex: 1;
  min-width: 0;
  font-size: 0.875rem;
}
.forge-banner-action {
  flex-shrink: 0;
  background: none;
  border: 1px solid currentColor;
  border-radius: var(--radius-pill);
  color: inherit;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition:
    background 0.15s ease,
    color 0.15s ease;
}
.forge-banner-action:hover {
  background: var(--text-primary);
  color: var(--color-white);
  border-color: var(--text-primary);
}

/* â”€â”€ Plan 300 â€” Module Overview tab: activity feed + pending breakdown â”€â”€â”€â”€â”€â”€ */
/* Outer wrapper rendered by activity_feed_tab() in tab_bodies.py. */
.forge-module-overview {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: var(--space-6);
  padding: var(--space-4) var(--space-0);
}
.forge-module-overview-section {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  background: var(--bg-card);
  border: var(--border-width-default) var(--border-style-default) var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}
.forge-module-overview-section-header {
  color: var(--text-secondary);
  margin-bottom: var(--space-1);
}

@container forge-page (max-width: 600px) {
  .forge-module-overview {
    grid-template-columns: var(--layout-responsive-card-grid-columns);
    gap: var(--space-4);
  }

  .forge-module-overview-section {
    min-width: 0;
  }
}

/* Activity feed rows: type 110px / product 1fr / regulation 100px / actor 80px / time 56px */
.forge-activity-feed {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
/* Modifier: empty state â€” pure selector target, inherits layout from parent. */
.forge-activity-filter-toolbar,
.forge-activity-load-more-holder {
  margin-top: var(--space-2);
}
.forge-activity-list-holder {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-top: var(--space-3);
}
.forge-activity-filter-chips {
  flex-wrap: wrap;
}
.forge-activity-feed--empty {
  opacity: 0.6;
}

.forge-activity-row {
  display: grid;
  grid-template-columns: 110px 1fr 90px 130px 56px;
  gap: var(--space-2);
  align-items: center;
  padding: var(--space-1) var(--space-0);
  border-bottom: var(--border-width-default) var(--border-style-default) var(--border-subtle);
}
.forge-activity-product {
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.forge-activity-regulation {
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-activity-actor {
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-activity-time {
  color: var(--text-muted);
  text-align: right;
  white-space: nowrap;
}

/* Pending breakdown buckets: direct fix for count/label run-together bug (Plan 300). */
.forge-pending-breakdown {
  display: flex;
  flex-direction: column;
  gap: 0;
}
/* Modifier â€” empty state; pure selector target, no extra styles needed. */
.forge-pending-breakdown--empty {
  opacity: 0.6;
}

.forge-pending-breakdown-header {
  color: var(--text-secondary);
  border-bottom: var(--border-width-default) var(--border-style-default) var(--border);
  padding-bottom: var(--space-2);
  margin-bottom: var(--space-2);
}
.forge-pending-bucket {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-1);
  border-bottom: var(--border-width-default) var(--border-style-default) var(--border-subtle);
}
.forge-pending-bucket:hover {
  background: var(--tint-slate);
  border-radius: var(--radius-xs);
}
.forge-pending-bucket-label {
  color: var(--text-primary);
  text-decoration: none;
}
.forge-pending-bucket-label:hover {
  text-decoration: underline;
}
.forge-pending-bucket-count {
  min-width: 2ch;
  text-align: right;
}
/* Tone variants matching the kpi-tile tone vocabulary. */
.forge-pending-bucket-count--green {
  color: var(--brand-green);
}
.forge-pending-bucket-count--amber {
  color: var(--text-primary);
}
.forge-pending-bucket-count--red {
  color: var(--text-primary);
}
.forge-pending-bucket-count--slate {
  color: var(--text-secondary);
}
.forge-pending-empty-msg {
  padding: var(--space-3) var(--space-0);
  color: var(--text-muted);
}

/* Queue table helpers used by tab_bodies.py (Plan 300 â€” extend scan scope). */
/* forge-module-queue-empty is the no-items paragraph class. */
.forge-module-queue-empty {
  color: var(--text-secondary);
  font-size: 0.875rem;
  text-align: center;
}
/* forge-module-queue-expansion-cell: expandable row detail cell. */
.forge-module-queue-expansion-cell {
  padding: 8px 16px;
  background: var(--surface-alt);
  font-size: 0.8125rem;
  color: var(--text-secondary);
}
/* Rows with data-href are keyboard-addressable navigation affordances. */
.forge-queue-table__row--clickable {
  cursor: pointer;
}
.forge-queue-table__row--clickable:focus-visible {
  outline: 2px solid var(--brand-ai);
  outline-offset: -2px;
}

/* Grouped queue wrapper and hooks emitted by the shared queue table renderer. */
.forge-queue-grouped {
  width: 100%;
  border-collapse: collapse;
}
.forge-queue-table__caret-cell {
  width: 32px;
  text-align: center;
  padding: 4px;
}
.forge-queue-table__caret {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--text-secondary);
  border-radius: var(--radius-sm);
  transition: background 0.1s;
}
.forge-queue-table__caret:hover {
  background: var(--tint-slate);
}
.forge-queue-table__caret::before {
  content: "â–¶";
  display: inline-block;
  font-size: 0.6rem;
  transition: transform 0.2s;
}
.forge-queue-table__caret.is-open::before {
  transform: rotate(90deg);
}
.forge-queue-table__group-header {
  font-weight: 600;
}
.forge-queue-table__group--expandable .forge-queue-table__caret {
  opacity: 1;
}
.forge-queue-table__group:last-child .forge-queue-table__group-header:last-child td,
.forge-queue-table__group:last-child .forge-queue-table__child:last-child td {
  border-bottom: none;
}
.forge-queue-table__child {
  background: var(--surface-alt);
}

/* Execution progress bar layout. */
.forge-exec-progress {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

/* forge-exec-queue: execution module queue wrapper; mirrors forge-module-queue. */
.forge-exec-queue {
  width: 100%;
}
.forge-exec-queue .forge-data-table__row--clickable {
  cursor: default;
}

/* forge-tab-anatomy: root mounting div for tab-anatomy assemblers (Plan 182);
   pure JS/Python hook, no visual rule needed. */
.forge-tab-anatomy {
  display: contents;
}
/* forge-tab-viz-body: scrollable body inside a tab viz panel. */
.forge-tab-viz-body {
  overflow: auto;
  max-height: 480px;
}

/* â”€â”€ AI confidence bar (Plan 288) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-confidence-bar {
  display: inline-block;
  width: 64px;
  height: 4px;
  border-radius: var(--radius-pill);
  background: var(--tint-blue);
  position: relative;
  vertical-align: middle;
}
.forge-confidence-bar-fill {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  border-radius: var(--radius-pill);
  background: var(--brand-blue);
}

/* â”€â”€ Toggle switch (Sources page) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-toggle {
  position: relative;
  display: inline-flex;
  width: 40px;
  height: 22px;
  flex-shrink: 0;
}
.forge-toggle input {
  opacity: 0;
  width: 0;
  height: 0;
  position: absolute;
}
.forge-toggle input:focus-visible + .forge-toggle-track {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
.forge-toggle-track {
  position: absolute;
  inset: 0;
  background: var(--border-strong);
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition: background 0.18s cubic-bezier(0.25, 0, 0, 1);
}
.forge-toggle input:checked + .forge-toggle-track {
  background: var(--brand-green);
}
.forge-toggle input:disabled + .forge-toggle-track {
  opacity: 0.45;
  cursor: not-allowed;
}
.forge-toggle-thumb {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  background: var(--bg-card);
  border-radius: 50%;
  box-shadow: var(--shadow-sm);
  transition: transform 0.18s cubic-bezier(0.25, 0, 0, 1);
  pointer-events: none;
}
.forge-toggle input:checked ~ .forge-toggle-thumb {
  transform: translateX(18px);
}

/* â”€â”€ Sources page â€” connector card (May 2026 redesign) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
 * Layout per card: top row (category pill + title + description on the left,
 * status chip pinned right), optional last-sync line, action row at bottom
 * with toggle + primary CTA. Built by _connector_card_html() in sources.py.
 * â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.forge-connector-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
  padding: var(--space-5);
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.forge-connector-card:hover {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-md);
}

.forge-conn-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  min-width: 0;
}
.forge-conn-title-block {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
  flex: 1 1 auto;
}
.forge-conn-cat {
  align-self: flex-start;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-pill);
  background: var(--tint-blue);
  color: var(--brand-blue);
}
.forge-conn-title-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}
.forge-conn-title {
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.forge-conn-desc {
  min-width: 0;
  max-width: 100%;
  color: var(--text-muted);
  overflow-wrap: anywhere;
}
.forge-conn-meta,
.forge-conn-note {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.forge-conn-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-3);
  margin-top: var(--space-1);
}

/* â”€â”€ Source-document Actions dropdown (.sd-actions / .sd-menu) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
 * The menu is HTML-rendered inside table cells. Without explicit
 * positioning it paints behind adjacent Quasar cards.
 * â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
details.sd-actions {
  position: relative;
  display: inline-block;
}
details.sd-actions > summary {
  list-style: none;
  cursor: pointer;
  padding: 3px 10px;
  font-size: var(--text-sm);
  font-weight: 600;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-card);
  color: var(--text-primary);
  user-select: none;
  white-space: nowrap;
}
details.sd-actions > summary::-webkit-details-marker {
  display: none;
}
details.sd-actions > summary::after {
  content: " â–¾";
  font-size: 0.7em;
  color: var(--text-muted);
}
.sd-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  min-width: 148px;
  z-index: 500;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 4px 0;
  display: flex;
  flex-direction: column;
}
.sd-menu .forge-btn.sd-btn {
  text-align: left;
  border: none;
  background: transparent;
  color: var(--text-primary);
  cursor: pointer;
}
.sd-menu .sd-btn:hover {
  background: var(--tint-slate);
}
.sd-menu .sd-btn.sd-del-btn {
  color: var(--text-primary);
}
.sd-menu .sd-btn.sd-del-btn:hover {
  background: var(--tint-red);
}
/* JS adds this class when the menu would extend past the viewport bottom */
details.sd-actions.sd-flip-up .sd-menu {
  top: auto;
  bottom: calc(100% + 4px);
}

/* -------------------------------------------------------------------------
 * Plan 803 â€” .forge-banner component
 * Replaces the border-left accent pattern with icon-driven colour signalling.
 * The coloured icon (16px inline flex child) carries the semantic tone;
 * the tinted background reinforces it without a distracting stripe.
 * Usage: <div class="forge-banner forge-banner--info"><span class="forge-banner__icon material-icons">info</span> â€¦</div>
 * ------------------------------------------------------------------------- */
.forge-banner {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 12px 16px;
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  line-height: 1.55;
}
.forge-banner__icon {
  font-size: 16px;
  flex-shrink: 0;
  margin-top: 1px;
  display: inline-flex;
}
.forge-banner--info {
  background: var(--tint-info);
  color: var(--text-primary);
}
.forge-banner--info .forge-banner__icon {
  color: var(--brand-info);
}
.forge-banner--warning {
  background: var(--tint-amber);
  color: var(--text-primary);
}
.forge-banner--warning .forge-banner__icon {
  color: var(--text-primary);
}
.forge-banner--neutral {
  background: var(--tint-slate);
  color: var(--text-secondary);
}
.forge-banner--neutral .forge-banner__icon {
  color: var(--text-secondary);
}
.forge-banner--error {
  background: var(--tint-red);
  color: var(--text-primary);
}
.forge-banner--error .forge-banner__icon {
  color: var(--brand-red-dark);
}
/* Compact variant â€” tighter padding for inline/inline-block contexts */
.forge-banner--compact {
  padding: 8px 12px;
}
/* AI-review gate banner â€” displayed when unreviewed AI fields block sign-off */
.forge-ai-review-gate {
  margin-bottom: 16px;
}

/* Plan 284: Fields tab toolbar â€” wraps search + filter chips */
.forge-fields-toolbar {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Plan 284: "Review now â†’" CTA inside the sign-off banner */
.forge-banner-cta {
  margin-left: auto;
  flex-shrink: 0;
}

/* ===========================================================================
 * Product overview card â€” forge-product-overview-*
 * Header zone rendered by header.py; wraps the status banner, KPI strip,
 * apply-regulation button, and the obligations tab row slot.
 * =========================================================================== */
.forge-product-overview-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: 20px 24px 16px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: 100%;
}
.forge-product-overview-headrow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  min-height: 28px;
}
.forge-product-overview-heading {
  font-size: var(--text-xs);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--brand-blue);
}
.forge-product-overview-owner {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
/* Bottom slot that holds the obligations tab row */
.forge-product-overview-obligations {
  padding-top: 6px;
  border-top: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.forge-product-facts {
  width: 100%;
  container: product-facts / inline-size;
}
.forge-product-facts-editor {
  width: min(720px, calc(100vw - 32px));
  max-height: calc(100vh - 64px);
  overflow: auto;
  border-radius: 8px;
}
.forge-product-facts-list {
  display: grid;
  gap: 10px;
  margin: 0;
}
.forge-product-fact {
  display: grid;
  gap: 4px;
  align-items: baseline;
}
.forge-product-fact dt {
  color: var(--text-secondary);
  font-size: 0.7rem;
  font-weight: 650;
  line-height: 1.3;
}
.forge-product-fact dd {
  min-width: 0;
  margin: 0;
  color: var(--text-primary);
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.forge-product-facts-row {
  display: grid;
  grid-template-columns:
    minmax(190px, 1.3fr)
    minmax(160px, 1fr)
    minmax(180px, 1fr)
    minmax(110px, 0.6fr);
  gap: 16px;
  align-items: center;
  padding: 12px 14px;
  border-top: 1px solid var(--border-subtle);
  color: var(--text-primary);
}
.forge-product-facts-row:first-child {
  border-top: 0;
}
.forge-product-facts-row--head {
  background: var(--bg-soft);
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
  text-transform: uppercase;
}
.forge-product-facts-row--summary {
  grid-template-columns: minmax(190px, 0.5fr) minmax(240px, 1.5fr);
}
.forge-product-facts-row--summary span:first-child {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
  text-transform: uppercase;
}
.forge-product-facts-row span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.forge-product-facts-row strong {
  display: block;
  font-size: var(--text-sm);
}
.forge-product-facts-row small {
  display: block;
  margin-top: 2px;
  color: var(--text-muted);
  font-size: var(--text-xs);
}

.forge-product-facts-overview {
  display: grid;
  gap: 14px;
  width: 100%;
}

.forge-product-facts-overview > .forge-section-header {
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-product-facts-overview-secondary {
  margin-top: 2px;
}

.forge-product-facts-groups {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 28px;
  align-items: start;
}

.forge-product-facts-groups--balanced {
  grid-template-columns: minmax(0, 1.5fr) minmax(240px, 0.9fr);
}

.forge-product-fact-group--identity .forge-product-facts-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 24px;
}

.forge-product-facts-secondary-groups {
  display: grid;
  gap: 20px;
  min-width: 0;
}

.forge-product-fact-group {
  min-width: 0;
}

.forge-product-facts-empty,
.forge-product-characteristics-empty {
  display: grid;
  gap: 4px;
  padding: 12px 0;
  color: var(--text-secondary);
}

.forge-product-facts-empty strong,
.forge-product-characteristics-empty strong {
  color: var(--text-primary);
  font-size: 0.82rem;
  font-weight: 850;
}

.forge-product-facts-empty span,
.forge-product-characteristics-empty span {
  max-width: 520px;
  color: var(--text-muted);
  font-size: 0.74rem;
  font-weight: 650;
  line-height: 1.4;
}

.forge-product-characteristics-empty {
  padding: 14px 0 2px;
}

.forge-reg-ledger {
  display: grid;
  gap: 12px;
  width: 100%;
}

.forge-reg-ledger-head {
  display: flex;
  align-items: flex-start;
  padding-right: 150px;
}

.forge-reg-ledger-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 0.3fr);
  gap: 16px;
  align-items: start;
}

.forge-reg-ledger-main,
.forge-reg-ledger-rail,
.forge-overview-rail-section,
.forge-reg-candidate-list,
.forge-ledger-source-list {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.forge-reg-ledger-rail {
  position: sticky;
  top: 92px;
  gap: 10px;
  color: var(--text-secondary);
}

.forge-reg-ledger-section {
  min-width: 0;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
}

.forge-overview-rail-section {
  gap: 10px;
  border-color: var(--border-subtle);
  background: transparent;
  padding: 0 0 12px;
  border-width: 0 0 1px;
  border-radius: 0;
}

.forge-reg-ledger-section {
  overflow: hidden;
}

.forge-overview-empty-ledger {
  min-height: 148px;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.forge-overview-empty-prompt {
  display: grid;
  justify-items: center;
  gap: 8px;
  max-width: 440px;
}

.forge-overview-empty-prompt strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 850;
}

.forge-overview-empty-prompt span {
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.4;
}

.forge-reg-ledger-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border-subtle);
  background: transparent;
}

.forge-ledger-row td:first-child strong,
.forge-product-characteristics-table td:first-child strong,
.forge-overview-row-copy strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.82rem;
  font-weight: 850;
  line-height: 1.25;
}

.forge-ledger-row td:first-child span,
.forge-product-characteristics-table td:first-child small,
.forge-overview-row-copy span {
  display: block;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 700;
  line-height: 1.35;
}

.forge-overview-status {
  max-width: 100%;
  white-space: normal;
}

.forge-overview-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.forge-overview-list-item {
  background: var(--bg-card);
}

.forge-ledger-action {
  display: inline-flex;
  align-items: center;
  color: var(--brand-blue);
  font-weight: 850;
  text-decoration: none;
}

.forge-ledger-action:hover {
  text-decoration: underline;
}

.forge-ledger-muted {
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 800;
}

@media (max-width: 1120px) {
  .forge-reg-ledger-grid {
    grid-template-columns: 1fr;
  }

  .forge-reg-ledger-head {
    padding-right: 150px;
  }

  .forge-reg-ledger-rail {
    position: static;
  }
}

@media (max-width: 860px) {
  .forge-reg-ledger-grid,
  .forge-reg-ledger-head {
    padding-right: 0;
  }
}

@media (max-width: 760px) {
  .forge-product-facts-row,
  .forge-product-fact,
  .forge-overview-row {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .forge-product-facts-row--head {
    display: none;
  }
}

/* ===========================================================================
 * Product compliance graph â€” read-only ProductComplianceWorkspace projection
 * =========================================================================== */
.forge-gap-detail-block {
  display: grid;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-muted);
}

.forge-ai-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 5px 7px;
  border: 1px solid var(--border-subtle);
  border-radius: 999px;
  background: var(--tint-slate);
  color: var(--text-secondary);
  font-size: 0.66rem;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}

.forge-ai-chip--green {
  background: var(--tint-green);
  color: var(--brand-green);
}

.forge-ai-chip--amber {
  background: var(--tint-amber);
  color: var(--text-primary);
}

.forge-ai-chip--red {
  background: var(--tint-red);
  color: var(--text-primary);
}

.forge-ai-progress {
  width: 100%;
  height: 4px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--border-subtle);
}

.forge-ai-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--text-muted);
}

.forge-ai-progress--green span {
  background: var(--brand-green);
}

.forge-ai-progress--amber span {
  background: var(--brand-amber);
}

.forge-ai-progress--red span {
  background: var(--brand-red);
}

.source-doc-view-btn {
  white-space: nowrap;
}

.source-doc-review-chain {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--text-secondary);
  font-size: 0.72rem;
  line-height: 1.35;
}

.source-doc-review-chain-item {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
}

.source-doc-review-alias,
.source-doc-review-value,
.source-doc-target-link {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.source-doc-review-findings {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.source-doc-review-related-evidence {
  display: block;
  margin-top: 4px;
  color: var(--text-muted);
  font-size: var(--text-sm);
}

.source-doc-review-findings-card {
  display: grid;
  gap: 12px;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.source-doc-review-finding {
  scroll-margin-top: 96px;
}

/* ===========================================================================
 * Obligation tab strip â€” forge-oblig-*
 * Rendered by obligations_row.py; one clickable pill-card per obligation.
 * Each tab defaults --oblig-accent to --brand-slate; rules below use it as
 * one control point for the tab's presentation.
 * =========================================================================== */

/* --- Outer flex row -------------------------------------------------------- */
.forge-oblig-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  width: 100%;
  align-items: stretch;
}
.forge-oblig-tabs.is-overflow {
  flex-wrap: nowrap;
  overflow-x: auto;
  scrollbar-width: thin;
  padding-bottom: 4px;
}
.forge-oblig-tabs.is-overflow::-webkit-scrollbar {
  height: 4px;
}
.forge-oblig-tabs.is-overflow::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: var(--radius-xs);
}

/* --- Individual tab pill --------------------------------------------------- */
.forge-oblig-tab {
  --oblig-accent: var(--oblig-slate);
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 12px 14px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background: var(--bg-card);
  flex: 1 1 var(--layout-card-min-width);
  min-width: var(--layout-card-min-width);
  position: relative;
  outline: none;
  transition:
    box-shadow 0.14s cubic-bezier(0.25, 0, 0, 1),
    border-color 0.14s cubic-bezier(0.25, 0, 0, 1),
    background 0.14s cubic-bezier(0.25, 0, 0, 1),
    transform 0.14s cubic-bezier(0.25, 0, 0, 1);
}

/* Focused (selected) tab â€” ring + tinted background */
.forge-oblig-tab.is-focused {
  border-color: var(--oblig-accent);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--oblig-accent) 22%, transparent);
  background: color-mix(in srgb, var(--oblig-accent) 5%, var(--bg-card));
}
/* "SELECTED" micro-badge â€” top-right corner; signals the active cert */
.forge-oblig-tab.is-focused::after {
  content: "SELECTED";
  position: absolute;
  top: 7px;
  right: 10px;
  font-size: 0.6rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--oblig-accent);
  opacity: 0.75;
}

/* Unfocused interactive tab */
.forge-oblig-tab.is-clickable:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
  border-color: var(--border-strong);
}
.forge-oblig-tab.is-clickable:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}

/* Text layers inside each tab */
.forge-oblig-tab-label {
  font-size: var(--text-sm);
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.2;
}
.forge-oblig-tab-status {
  font-size: var(--text-base);
  font-weight: 700;
  color: var(--oblig-accent);
  line-height: 1.25;
}
.forge-oblig-tab-reason {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  line-height: 1.3;
}

/* Unverified regulation badge â€” amber pill rendered inside a tab */
.forge-oblig-unverified-badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  background: var(--tint-amber);
  color: var(--brand-amber-text);
  font-size: var(--text-xs);
  font-weight: 700;
  border: 1px solid color-mix(in srgb, var(--brand-amber) 18%, transparent);
  white-space: nowrap;
}

/* Manual-override badge â€” blue pill */
.forge-oblig-manual-badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  background: var(--tint-info);
  color: var(--brand-blue);
  font-size: var(--text-xs);
  font-weight: 700;
  border: 1px solid var(--color-info-border);
  white-space: nowrap;
}

/* --- Inline Current / Upcoming divider ------------------------------------ */
.forge-oblig-divider {
  display: flex;
  align-self: center;
  align-items: center;
  gap: 6px;
  padding: 0 6px;
  flex-shrink: 0;
}
.forge-oblig-divider-label {
  font-size: var(--text-xs);
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
}

/* --- Multi-regulation grouped layout -------------------------------------- */
.forge-oblig-grouped {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  width: 100%;
  align-items: flex-start;
}
.forge-oblig-reg-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 200px;
}
.forge-oblig-reg-header {
  display: flex;
  align-items: center;
  gap: 8px;
}
.forge-oblig-reg-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--text-xs);
  font-weight: 700;
  color: var(--brand-blue);
  white-space: nowrap;
}
.forge-oblig-reg-badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--brand-blue);
  flex-shrink: 0;
}
.forge-oblig-reg-upcoming-badge {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  border-radius: var(--radius-pill);
  background: var(--tint-slate);
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 700;
}
.forge-oblig-reg-rule {
  flex: 1;
  height: 1px;
  background: var(--border);
  min-width: 12px;
}
.forge-oblig-reg-pills {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* --- Active filter chip above the tabs ------------------------------------ */
.forge-oblig-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  background: var(--tint-info);
  border: 1px solid var(--color-info-border);
  font-size: var(--text-xs);
  cursor: pointer;
  transition: background 0.12s cubic-bezier(0.25, 0, 0, 1);
}
.forge-oblig-filter-chip:hover {
  background: var(--bg-hover);
}
.forge-oblig-filter-eyebrow {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.forge-oblig-filter-label {
  color: var(--brand-blue);
  font-weight: 700;
}
.forge-oblig-filter-meta {
  color: var(--text-muted);
  font-weight: 600;
}
.forge-oblig-filter-clear {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 1px 8px;
  border-radius: var(--radius-pill);
  border: none;
  background: var(--button-secondary-bg-hover);
  color: var(--button-secondary-text-hover);
  font-size: var(--text-xs);
  font-weight: 700;
  cursor: pointer;
  line-height: 1.4;
  transition: background 0.12s cubic-bezier(0.25, 0, 0, 1);
}
.forge-oblig-filter-clear:hover {
  background: var(--button-secondary-bg-hover);
  color: var(--button-secondary-text-hover);
}

/* --- Reduced motion ------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .forge-oblig-tab {
    transition: none;
  }
  .forge-oblig-tab.is-clickable:hover {
    transform: none;
  }
}

/* ===========================================================================
 * Obligation panel cards â€” forge-oblig-panel-*
 * Rendered by obligations.py; card chrome (title + status pill) +
 * Pattern A (field-workflow) or Pattern B (doc-checklist) body.
 * =========================================================================== */
.forge-oblig-panel-chrome {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px 8px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-oblig-panel-selected {
  background: color-mix(in srgb, var(--brand-amber) 5%, var(--bg-card));
}

/* Title and status within chrome */
.forge-oblig-panel-title {
  font-size: var(--text-sm);
  font-weight: 800;
  color: var(--text-primary);
  margin-right: auto;
  letter-spacing: 0.02em;
}
.forge-oblig-panel-status {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: 700;
  background: var(--tint-slate);
  color: var(--text-secondary);
  border: 1px solid var(--border);
  white-space: nowrap;
}
.forge-oblig-panel-status-amber {
  background: var(--tint-amber);
  color: var(--brand-amber-text);
  border-color: color-mix(in srgb, var(--brand-amber) 18%, transparent);
}
.forge-oblig-panel-status-red {
  background: var(--tint-red);
  color: var(--text-primary);
  border-color: color-mix(in srgb, var(--brand-red) 18%, transparent);
}
.forge-oblig-panel-status-green {
  background: var(--tint-green);
  color: var(--brand-green-dark);
  border-color: color-mix(in srgb, var(--brand-green) 20%, transparent);
}
.forge-oblig-panel-status-blue {
  background: var(--tint-info);
  color: var(--brand-blue);
  border-color: var(--color-info-border);
}
.forge-oblig-panel-status-slate {
  background: var(--tint-slate);
  color: var(--text-secondary);
  border-color: var(--border);
}

/* Pattern A / B card body */
.forge-oblig-panel-body {
  padding: 10px 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.forge-oblig-panel-progress {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}
.forge-oblig-panel-gaps {
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--brand-amber-text);
}
.forge-oblig-panel-docs-count {
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--text-primary);
}
.forge-oblig-panel-validity {
  font-size: var(--text-xs);
  color: var(--text-muted);
}
.forge-oblig-panel-missing-list {
  margin: 4px 0 0 0;
  padding: 0 0 0 14px;
  font-size: var(--text-xs);
  color: var(--text-secondary);
}
.forge-oblig-panel-missing-item {
  line-height: 1.5;
}

/* Empty / not-yet-effective card states */
.forge-oblig-panel-soft-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: var(--radius-lg);
  border: 1px dashed var(--border-strong);
  background: var(--bg-card);
  color: var(--text-muted);
  font-size: var(--text-sm);
}
.forge-oblig-panel-not-yet-effective {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background: var(--bg-card);
  font-size: var(--text-sm);
  color: var(--text-primary);
}
.forge-oblig-panel-cta {
  font-size: var(--text-xs);
  color: var(--brand-blue);
  font-weight: 700;
  margin-left: auto;
}
.forge-oblig-panel-starts-label {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin-left: auto;
}

/* Pattern A / B modifier hooks on top of forge-oblig-panel-body.
   No visual difference today â€” classes exist so CSS coverage ratchet passes
   and per-pattern overrides can be added here without touching Python. */
.forge-oblig-panel-body-pattern-a {
  /* field-workflow â€” no extra rules yet */
}
.forge-oblig-panel-body-pattern-b {
  /* doc-checklist â€” no extra rules yet */
}

/* "Add voluntary obligation" trailing chip */
.forge-oblig-add-voluntary {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 10px;
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 600;
  cursor: pointer;
  border: 1px dashed var(--border);
  transition:
    border-color 0.12s ease,
    color 0.12s ease;
}
.forge-oblig-add-voluntary:hover {
  border-color: var(--border-strong);
  color: var(--text-secondary);
}

/* ======================================================================
 * Shared inline banners â€” forge-info-banner / forge-error-banner
 * Use for degraded-data notices, configuration warnings, and status alerts.
 * Never embed hex colors or non-token CSS variable names inline â€” use these classes.
 * ====================================================================== */
.forge-info-banner,
.forge-error-banner {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin: 4px 0 12px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg-card);
  font-size: var(--text-sm);
  color: var(--text-primary);
}
.forge-info-banner {
  border-left: 4px solid var(--brand-amber-bright);
}
.forge-error-banner {
  border-left: 4px solid var(--brand-red);
}
.forge-info-banner .forge-banner-icon,
.forge-error-banner .forge-banner-icon {
  font-size: 18px;
  flex-shrink: 0;
  margin-top: 1px;
}
.forge-info-banner .forge-banner-icon {
  color: var(--text-primary);
}
.forge-error-banner .forge-banner-icon {
  color: var(--text-primary);
}

/* ======================================================================
 * Shared empty state â€” forge-empty-state
 * Returned by empty_state_html() in layout.py for use inside ui.html() chunks.
 * For live NiceGUI component trees use render_empty_state() from empty_state.py instead.
 * ====================================================================== */
.forge-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: var(--space-5) var(--space-4);
  gap: var(--space-1);
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}
.forge-empty-title {
  color: var(--text-primary);
}
.forge-empty-hint {
  color: var(--text-secondary);
  max-width: 420px;
}
.forge-empty-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  margin-top: 8px;
  font-family: inherit;
  font-weight: var(--font-weight-display);
  color: var(--button-primary-text);
  border: 1px solid var(--button-primary-border);
  border-radius: var(--radius-pill);
  background: var(--button-primary-bg);
  text-decoration: none;
  cursor: pointer;
  transition:
    background 0.14s var(--ease-out-quart),
    border-color 0.14s var(--ease-out-quart),
    color 0.14s var(--ease-out-quart),
    transform 0.14s var(--ease-out-quart);
}
.source-doc-preview-unavailable .forge-empty-cta {
  align-self: center;
  margin-inline: auto;
}
.forge-empty-cta:hover {
  background: var(--button-primary-bg-hover);
}

.forge-product-characteristics-empty,
.forge-product-context-empty {
  display: grid;
  align-items: center;
  padding: 14px 18px;
  gap: 2px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-soft);
  text-align: left;
}

.forge-product-characteristics-empty {
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
}

.forge-product-characteristics-empty .forge-empty-icon {
  grid-column: 1;
  grid-row: 1 / span 2;
  margin: 0;
  font-size: 22px;
}

.forge-product-context-empty {
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
}

.forge-product-characteristics-empty .forge-empty-title,
.forge-product-context-empty .forge-empty-title {
  grid-column: 2;
  grid-row: 1;
  justify-self: start;
}

.forge-product-characteristics-empty .forge-empty-hint,
.forge-product-context-empty .forge-empty-hint {
  grid-column: 2;
  grid-row: 2;
  max-width: none;
  margin: 0;
}

.forge-product-context-empty .forge-empty-title,
.forge-product-context-empty .forge-empty-hint {
  grid-column: 1;
}

.forge-product-characteristics-empty .forge-empty-cta,
.forge-product-context-empty .forge-empty-cta {
  grid-column: 3;
  grid-row: 1 / span 2;
  justify-self: end;
  align-self: center;
  min-height: 32px;
  margin: 0;
  padding: 5px 12px;
}

.forge-product-context-empty .forge-empty-cta {
  grid-column: 2;
}

@container product-facts (max-width: 700px) {
  .forge-product-facts-groups--balanced {
    grid-template-columns: minmax(0, 1fr);
  }

  .forge-product-fact-group--identity .forge-product-facts-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 900px) {
  .forge-product-characteristics-empty {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .forge-product-characteristics-empty .forge-empty-cta {
    grid-column: 2;
    grid-row: 3;
    justify-self: start;
    margin-top: 6px;
  }

  .forge-product-context-empty {
    grid-template-columns: minmax(0, 1fr);
  }

  .forge-product-context-empty .forge-empty-cta {
    grid-column: 1;
    grid-row: 3;
    justify-self: start;
    margin-top: 6px;
  }
}

/* Plan 73 â€” loading + error modes for empty_state_html. */
.forge-empty-state--error {
  border-style: solid;
  border-color: var(--text-primary);
  background: var(--tint-red);
}
.forge-empty-state--filtered,
.forge-empty-state--loading {
  padding-block: var(--space-4);
  background: var(--bg-soft);
  border-color: var(--border-subtle);
}
.forge-empty-state--error .forge-empty-title {
  color: var(--brand-red-dark, var(--brand-red));
}
.forge-empty-spinner {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 3px solid var(--border);
  border-top-color: var(--brand-blue);
  animation: forge-empty-spin 0.8s linear infinite;
}
@keyframes forge-empty-spin {
  to {
    transform: rotate(360deg);
  }
}
.forge-empty-skeleton {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  max-width: 420px;
  margin-top: 8px;
}
.forge-empty-skeleton span {
  height: 12px;
  border-radius: var(--radius-sm);
  background: linear-gradient(
    90deg,
    var(--bg-soft) 0%,
    var(--tint-slate) 50%,
    var(--bg-soft) 100%
  );
  background-size: 200% 100%;
  animation: forge-empty-shimmer 1.4s ease-in-out infinite;
}
.forge-empty-skeleton span:nth-child(2) {
  width: 80%;
  align-self: center;
}
.forge-empty-skeleton span:nth-child(3) {
  width: 60%;
  align-self: center;
}
@keyframes forge-empty-shimmer {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .forge-empty-spinner,
  .forge-empty-skeleton span {
    animation: none;
  }
}

/* ======================================================================
 * Corpus inventory strip â€” forge-corpus-*
 * Rendered by _corpus_strip_html() in
 * frontend/views/product_page/stages/sources.py
 * ====================================================================== */
.forge-corpus-strip {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-card);
  overflow: hidden;
}
.forge-corpus-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
}
.forge-corpus-row:last-child {
  border-bottom: none;
}
.forge-corpus-source-type {
  font-weight: 600;
  color: var(--text-primary);
  min-width: 80px;
}
.forge-corpus-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--text-secondary);
  min-width: 90px;
}
.forge-corpus-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.forge-corpus-time {
  color: var(--text-muted);
  margin-left: auto;
  font-size: var(--text-xs);
}

/* ===========================================================================
 * Plan 22 â€” Stage cards above the product page rail
 *
 * Three top-level workflow cards (01 Sources / 02 Requirements / 03 Tasks)
 * that switch the main pane between the corresponding stage bodies. Rail
 * navigation continues to live below the cards and is untouched.
 * =========================================================================== */

.forge-stage-cards {
  --timeline-count: 3;
  display: grid;
  grid-template-columns: repeat(var(--timeline-count, 3), minmax(0, 1fr));
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
}

.forge-stage-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  background: var(--bg-panel);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
  padding: 14px 16px;
  cursor: pointer;
  font: inherit;
  text-align: left;
  color: var(--text-primary);
  transition:
    border-color 120ms ease-out,
    box-shadow 120ms ease-out;
}

.forge-stage-card:hover {
  border-color: var(--brand-blue);
}

.forge-stage-card:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}

.forge-stage-card--active {
  border-color: var(--brand-blue);
  box-shadow: inset 0 -3px 0 0 var(--brand-blue);
}

.forge-stage-card-index {
  font-size: var(--text-xs, 0.72rem);
  color: var(--text-muted);
  font-weight: 600;
  letter-spacing: 0.04em;
}

.forge-stage-card-label {
  font-size: var(--text-base, 0.95rem);
  font-weight: 700;
  color: var(--text-primary);
}

.forge-stage-card-sub {
  font-size: var(--text-xs, 0.78rem);
  color: var(--text-secondary);
}

/* Read-only chips listing the regulations applied to this product. */

.forge-reg-labels {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.forge-reg-label {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--bg-muted);
  color: var(--text-secondary);
  font-size: var(--text-xs, 0.72rem);
  font-weight: 600;
  border: 1px solid var(--border-subtle);
}

/* Plan 2242 â€” scope-not-confirmed banner on product workspace (replaces per-product checklist). */

.forge-scope-banner > div:last-child {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.forge-scope-banner .forge-scope-banner__apply {
  align-self: flex-start;
}

.forge-banner__link {
  color: var(--brand-blue);
  font-weight: 600;
  text-decoration: none;
}

.forge-banner__link:hover {
  text-decoration: underline;
}

/* Plan 22 stage placeholders (replaced by Plans 23/24 stage bodies). */

.forge-stage-placeholder {
  padding: 32px;
  text-align: center;
  border: 1px dashed var(--border-subtle);
  border-radius: var(--radius-md, 8px);
  background: var(--bg-muted);
}

.forge-stage-placeholder-title {
  font-size: var(--text-lg, 1.1rem);
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 6px;
}

.forge-stage-placeholder-body {
  color: var(--text-secondary);
  font-size: var(--text-sm, 0.85rem);
  max-width: 480px;
  margin: 0 auto;
}
/* ===========================================================================
 * Plan 23 - Requirements stage body
 *
 * Obligation table with regulation + status filters, plus a per-cert
 * generate-document section. Row tones flag urgency: red for missing,
 * amber for expired.
 * =========================================================================== */

.forge-req-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-end;
  padding: 8px 0;
}

.forge-req-toolbar-control {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 200px;
}

.forge-req-toolbar-label {
  font-size: var(--text-xs, 0.72rem);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}

.forge-req-toolbar-select {
  padding: 6px 10px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-panel);
  color: var(--text-primary);
  font-size: var(--text-sm, 0.85rem);
  cursor: pointer;
}

.forge-req-toolbar-select:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 1px;
}

.forge-req-row {
  display: grid;
  grid-template-columns:
    minmax(0, 2.2fr) minmax(0, 1.2fr) minmax(0, 0.9fr)
    minmax(0, 1.4fr);
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-top: 1px solid var(--border-subtle);
}

.forge-req-row:first-child {
  border-top: 0;
}

.forge-req-row--header {
  background: var(--bg-muted);
  font-size: var(--text-xs, 0.72rem);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 700;
}

.forge-req-row--danger {
  background: var(--tint-red);
}

.forge-req-row--warning {
  background: var(--tint-amber);
}

.forge-req-cell {
  font-size: var(--text-sm, 0.85rem);
  color: var(--text-primary);
  min-width: 0;
}

.forge-req-cell-title {
  font-weight: 600;
}

.forge-req-cell-basis {
  color: var(--text-secondary);
}

.forge-req-cell-cert {
  font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
  color: var(--text-secondary);
  font-weight: 600;
  text-transform: uppercase;
  font-size: var(--text-xs, 0.78rem);
}

.forge-req-cell-status {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.forge-req-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: var(--text-xs, 0.72rem);
  font-weight: 600;
  border: 1px solid transparent;
}

.forge-req-status-pill--verified {
  background: var(--tint-green);
  color: var(--brand-green-dark);
  border-color: var(--brand-green);
}

.forge-req-status-pill--missing {
  background: var(--tint-red);
  color: var(--brand-red-dark);
  border-color: var(--text-primary);
}

.forge-req-status-pill--expired {
  background: var(--tint-amber);
  color: var(--brand-amber-dark);
  border-color: var(--text-primary);
}

.forge-req-status-pill--in-progress {
  background: var(--tint-info);
  color: var(--brand-blue-dark);
  border-color: var(--brand-blue);
}

.forge-req-expiry {
  font-size: var(--text-xs, 0.72rem);
  color: var(--text-muted);
}

.forge-req-empty {
  padding: 24px;
  text-align: center;
  color: var(--text-muted);
  background: var(--bg-muted);
  border: 1px dashed var(--border-subtle);
  border-radius: var(--radius-md, 8px);
}

/* Generate-documents section. */

.forge-req-generate {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
  background: var(--bg-panel);
}

.forge-req-generate-title {
  font-size: var(--text-base, 0.95rem);
  font-weight: 700;
  color: var(--text-primary);
}

.forge-req-generate-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr) auto;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  border-top: 1px solid var(--border-subtle);
}

.forge-req-generate-row:first-of-type {
  border-top: 0;
}

.forge-req-generate-label {
  font-weight: 700;
  font-size: var(--text-sm, 0.85rem);
  color: var(--text-primary);
  text-transform: uppercase;
  font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
}

.forge-req-generate-count {
  color: var(--text-secondary);
  font-size: var(--text-sm, 0.85rem);
}

.forge-req-generate-cta {
  padding: 6px 14px;
  border-radius: var(--radius-sm, 6px);
  background: var(--button-primary-bg);
  color: var(--button-primary-text);
  font-weight: 600;
  border: 0;
  cursor: pointer;
  font-size: var(--text-sm, 0.85rem);
}

.forge-req-generate-cta--ready {
  background: var(--button-primary-bg);
}

.forge-req-generate-cta:hover {
  background: var(--button-primary-bg-hover);
  filter: none;
}

.forge-req-generate-cta:focus-visible {
  outline: 2px solid var(--button-primary-bg);
  outline-offset: 2px;
}

.forge-req-generate-blocking {
  color: var(--brand-amber-dark);
  font-weight: 600;
  font-size: var(--text-sm, 0.85rem);
  text-decoration: underline;
}
/* ===========================================================================
 * Plan 24 - Tasks stage body
 *
 * Four-section split: Unassigned / Assigned / Waiting for signature / Done.
 * Each row carries a compliance_stage badge (Plan 21) so the operator can
 * see at a glance whether a task is Sources work or Requirements work.
 * =========================================================================== */

.forge-task-section {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 18px;
}

.forge-task-section-header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 4px 0;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-task-section-label {
  font-size: var(--text-sm, 0.85rem);
  font-weight: 700;
  color: var(--text-primary);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.forge-task-section-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--bg-muted);
  color: var(--text-secondary);
  font-size: var(--text-xs, 0.72rem);
  font-weight: 700;
}

.forge-task-section-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.forge-task-section-empty {
  padding: 12px 14px;
  color: var(--text-muted);
  font-size: var(--text-sm, 0.85rem);
  font-style: italic;
  background: var(--bg-muted);
  border: 1px dashed var(--border-subtle);
  border-radius: var(--radius-sm, 6px);
}

.forge-task-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1.3fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  background: var(--bg-panel);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
}

.forge-task-row-main {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.forge-task-title {
  font-weight: 600;
  color: var(--text-primary);
  font-size: var(--text-sm, 0.9rem);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forge-task-row-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--text-secondary);
  font-size: var(--text-xs, 0.78rem);
  flex-wrap: wrap;
}

.forge-task-owner {
  font-weight: 600;
  color: var(--text-primary);
}

.forge-task-owner--unassigned {
  color: var(--text-muted);
  font-style: italic;
  font-weight: 500;
}

.forge-task-due {
  color: var(--text-muted);
}

.forge-task-status {
  color: var(--text-muted);
  text-transform: capitalize;
}

/* Compliance-stage badge (Plan 21 wire-up). */

.forge-task-stage-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: var(--text-xs, 0.72rem);
  font-weight: 600;
  border: 1px solid transparent;
  flex-shrink: 0;
}

.forge-task-stage-badge--sources {
  background: var(--tint-info);
  color: var(--brand-blue-dark);
  border-color: var(--brand-blue);
}

.forge-task-stage-badge--requirements {
  background: var(--tint-amber);
  color: var(--brand-amber-dark);
  border-color: var(--text-primary);
}

.forge-task-stage-badge--other {
  background: var(--bg-muted);
  color: var(--text-muted);
  border-color: var(--border-subtle);
}

/* Section-specific CTAs. */

.forge-task-cta {
  padding: 4px 10px;
  border-radius: var(--radius-sm, 6px);
  border: 1px solid var(--border-strong);
  background: var(--bg-panel);
  color: var(--text-primary);
  font-size: var(--text-xs, 0.78rem);
  font-weight: 600;
  cursor: pointer;
}

.forge-task-cta:hover {
  border-color: var(--button-primary-border);
  color: var(--button-primary-text);
  background: var(--button-primary-bg);
}

.forge-task-cta:focus-visible {
  outline: 2px solid var(--button-primary-bg);
  outline-offset: 2px;
}

.forge-task-cta--assign {
  background: var(--button-primary-bg);
  color: var(--button-primary-text);
  border-color: var(--button-primary-border);
}

.forge-task-cta--assign:hover {
  background: var(--button-primary-bg-hover);
  border-color: var(--button-primary-bg-hover);
  color: var(--button-primary-text);
  filter: none;
}

.forge-task-cta--resend {
  /* uses base styling */
}

.forge-task-cta--mark-signed {
  background: var(--brand-green);
  color: var(--text-on-brand);
  border-color: var(--brand-green);
}

.forge-task-cta--mark-signed:hover {
  color: var(--text-on-brand);
  filter: brightness(1.05);
}

.forge-task-signing-actions {
  display: flex;
  gap: 6px;
}

/* â”€â”€ Next-action callout (amber strip) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-next-action {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--tint-amber);
  border: 1px solid var(--border-amber);
  border-radius: var(--radius-md, 8px);
  font-weight: 600;
  color: var(--text-amber);
  cursor: pointer;
  margin-top: 6px;
  transition: background 100ms ease-out;
}

.forge-next-action:hover {
  background: var(--tint-amber-hover);
}

/* â”€â”€ Header zone (constrained reading width) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-product-header-zone {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0;
  padding: 0;
}

.forge-owner-row {
  margin: 0;
  padding: 0;
}

/* â”€â”€ Main stage content holder â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-product-main {
  transition: opacity 120ms ease-out;
}

.forge-product-main.is-swapping {
  opacity: 0;
}

/* â”€â”€ Stage zero-state (no regulations applied) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* â”€â”€ Regulations bar (header zone) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/*
 * Plan 29 retired the bespoke regulation-chip primitive (forge-reg-chip*)
 * in favour of canonical badge_html(..., dismiss_onclick=...). The outer
 * container was renamed forge-regulations-bar to drop the bespoke
 * literal entirely. The badges inside are styled by .badge / .badge-{color}
 * + .badge--dismissable / .badge-dismiss (see layout.css).
 */

/* Plan 282: compact inline container â€” no background, no full-bleed border */
.forge-regulations-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 4px 0;
}

/* forge-regulations-bar-label is no longer emitted (Plan 282) but the rule
   is kept so existing renders that haven't refreshed don't break visually. */
.forge-regulations-bar-label {
  font-size: var(--text-xs, 0.75rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  margin-right: 4px;
}

.forge-regulations-bar-chips {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.forge-regulations-bar-empty {
  font-size: var(--text-sm, 0.82rem);
  color: var(--text-muted);
  font-style: italic;
}

.forge-regulations-bar .forge-apply-reg-btn {
  margin-left: auto;
}

/* â”€â”€ Declare stage cert cards â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-stage-item.forge-declare-obligation,
.forge-declare-cert-card {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin-bottom: 0;
}

.forge-standards-catalog-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 0 14px;
  margin: -4px 0 4px;
  color: var(--text-muted);
}

.forge-standards-catalog-main {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.forge-standards-catalog-title {
  color: var(--text-secondary);
  font-size: var(--text-xs, 0.75rem);
  font-weight: 700;
}

.forge-standards-catalog-pill {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  border: 1px solid var(--border-subtle);
  background: var(--bg-panel);
  font-size: var(--text-xs, 0.72rem);
  font-weight: 700;
}

.forge-standards-catalog-pill--good {
  color: var(--brand-green);
  background: var(--tint-green);
  border-color: var(--border-green);
}

.forge-standards-catalog-pill--warn {
  color: var(--text-amber);
  background: var(--tint-amber);
  border-color: var(--border-amber);
}

.forge-standards-catalog-pill--bad {
  color: var(--text-danger);
  background: var(--tint-danger);
  border-color: var(--border-danger);
}

.forge-standards-catalog-meta {
  color: var(--text-muted);
  font-size: var(--text-xs, 0.75rem);
  line-height: 1.35;
  white-space: nowrap;
}

.forge-declare-cert-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-declare-cert-label {
  font-size: var(--text-base, 0.95rem);
  font-weight: 700;
  color: var(--text-primary);
}

.forge-declare-reg-label {
  font-size: var(--text-xs, 0.75rem);
  color: var(--text-muted);
}

.forge-declare-cert-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: -4px 0 10px;
}

/* Plan 291: harmonised standard sub-row in cert card header */
.forge-declare-hs-badge {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-xs, 0.75rem);
  color: var(--text-secondary);
  margin: 2px 0 6px;
}

/* Plan 291: harmonised standard strip in Sources stage */
.forge-sources-hs-strip {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  margin: 6px 0 4px;
  background: var(--bg-subtle);
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  font-size: var(--text-sm, 0.875rem);
}

.forge-sources-hs-label {
  color: var(--text-muted);
  font-size: var(--text-xs, 0.75rem);
  white-space: nowrap;
}

.forge-sources-hs-ref {
  font-weight: 500;
  color: var(--text-primary);
}

.forge-declare-cert-obligation-title {
  font-size: var(--text-xs, 0.78rem);
  color: var(--text-secondary);
  line-height: 1.35;
  flex: 1 1 auto;
  min-width: 0;
}

.forge-declare-cert-deadline {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--bg-muted);
  border: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: var(--text-xs, 0.7rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
  flex: 0 0 auto;
}

.forge-declare-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: var(--text-xs, 0.72rem);
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  margin-left: auto;
}

.forge-declare-pill--empty {
  background: var(--bg-muted);
  color: var(--text-muted);
  border: 1px solid var(--border-subtle);
}

.forge-declare-pill--needs-data {
  background: var(--tint-amber);
  color: var(--text-amber);
  border: 1px solid var(--border-amber);
}

.forge-declare-pill--ready {
  background: var(--tint-green);
  color: var(--brand-green);
  border: 1px solid var(--border-green);
}

.forge-declare-pill--under-review {
  background: var(--color-info-surface);
  color: var(--brand-info);
  border: 1px solid var(--color-info-border);
}

.forge-declare-pill--published {
  background: var(--tint-green);
  color: var(--brand-green);
  border: 1px solid var(--border-green);
}

.forge-declare-pill--needs-recert {
  background: var(--tint-amber);
  color: var(--text-amber);
  border: 1px solid var(--border-amber);
}

.forge-declare-pill--na {
  background: var(--bg-muted);
  color: var(--text-muted);
  border: 1px solid var(--border-subtle);
}

/* Plan 898 â€” stale-cert sign guard modal card. */
.forge-stale-sign-guard {
  min-inline-size: var(--layout-dialog-min-inline-size);
  max-inline-size: var(--layout-dialog-standard-max-inline-size);
}
.forge-ps-confirm-sign-dialog {
  min-inline-size: var(--layout-dialog-min-inline-size);
  max-inline-size: var(--layout-dialog-compact-max-inline-size);
}
.forge-ps-sign-layout-header-holder {
  gap: var(--space-2);
}
.forge-ps-sign-layout-action-holder {
  margin-top: var(--space-2);
}
.forge-ps-sign-layout-history-holder {
  margin-top: var(--space-4);
}
.forge-ps-sign-header-row,
.forge-ps-sign-status-row {
  gap: var(--space-3);
}
.forge-ps-dialog-actions {
  gap: var(--space-2);
  margin-top: var(--space-3);
}
.forge-ps-confirmation-dialog {
  box-sizing: border-box;
  padding: var(--space-5);
}
.forge-ps-confirmation-dialog--archive {
  min-inline-size: var(--layout-dialog-settings-archive-min-inline-size);
  max-inline-size: min(var(--layout-dialog-settings-archive-max-inline-size), calc(100vw - var(--space-8)));
}
.forge-ps-confirmation-dialog--applicability {
  min-inline-size: var(--layout-dialog-settings-applicability-min-inline-size);
  max-inline-size: min(var(--layout-dialog-settings-applicability-max-inline-size), calc(100vw - var(--space-8)));
}
.forge-ps-confirmation-dialog--restore {
  min-inline-size: var(--layout-dialog-settings-restore-min-inline-size);
  max-inline-size: min(var(--layout-dialog-settings-restore-max-inline-size), calc(100vw - var(--space-8)));
}
.forge-ps-sign-actions {
  margin-top: var(--space-1);
}
.forge-ps-sign-section-spacer {
  block-size: var(--space-3);
}

/* Plan 902 â€” cert-pill row: one pill per obligation type (DoPC / DPP / EPD â€¦) */
.cert-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: var(--text-xs, 0.75rem);
  font-weight: 600;
  line-height: 1.4;
}
.cert-pill--dopc {
  color: var(--brand-primary);
  background: var(--tint-primary);
}
.cert-pill--dop {
  color: var(--brand-primary);
  background: var(--tint-primary);
}
.cert-pill--epd {
  color: var(--brand-green);
  background: var(--tint-success);
}
.cert-pill--dpp {
  color: var(--text-primary);
  background: var(--tint-amber);
}
.cert-pill--ce {
  color: var(--text-secondary);
  background: var(--tint-secondary);
}
.cert-pill--ppwr {
  color: var(--brand-info);
  background: var(--tint-info);
}
.cert-pill--cbam {
  color: var(--brand-red);
  background: var(--tint-danger);
}
.cert-pill--fallback {
  color: var(--text-muted);
  background: var(--bg-muted);
}
/* â”€â”€ Declare progress bar â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* â”€â”€ Declare CTA row â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-declare-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 0;
}

.forge-declare-cta-body {
  font-size: var(--text-sm, 0.87rem);
  color: var(--text-secondary);
}

.forge-declare-goto-gaps {
  white-space: nowrap;
}

/* Plan 281 â€” harmonised standard CTA row inside Declare stage DoPC card */
.forge-declare-hs-cta {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  flex-wrap: wrap;
}

.forge-declare-hs-cta-label {
  font-size: var(--text-sm, 0.87rem);
  color: var(--text-muted);
  margin-right: auto;
}

.forge-declare-add-hs-btn,
.forge-declare-declare-std-btn {
  white-space: nowrap;
}

.forge-declaration-workspace {
  display: grid;
  grid-template-columns: minmax(280px, 420px) minmax(0, 1fr);
  align-items: stretch;
  gap: 24px;
  width: 100%;
}

.forge-product-declaration-warning-actions {
  margin-top: var(--space-3);
}

.forge-product-declaration-review-dialog {
  width: var(--layout-declaration-review-dialog-inline-size);
  max-height: var(--layout-declaration-review-dialog-max-block-size);
}

.forge-product-declaration-review-scroll {
  height: var(--layout-declaration-review-scroll-block-size);
}

.forge-product-declaration-review-actions {
  margin-top: var(--space-2);
}

.forge-declaration-work-lane,
.forge-declaration-document-lane {
  min-width: 0;
}

.forge-declaration-work-lane {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.forge-declaration-document-lane {
  align-self: stretch;
}

.forge-declaration-workspace.is-focused .forge-declaration-document-lane {
  outline: 2px solid color-mix(in srgb, var(--brand-blue) 24%, transparent);
  outline-offset: 2px;
  border-radius: var(--radius-md, 8px);
}

.forge-declaration-readiness-panel {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.forge-declaration-readiness-row {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 26px;
}

.forge-declaration-readiness-text {
  color: var(--text-primary);
  font-size: var(--text-sm, 0.875rem);
  line-height: 1.35;
}

.forge-declaration-readiness-slot {
  justify-self: end;
  min-width: 0;
}

.forge-declaration-readiness-action {
  color: var(--brand-brown);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.forge-declaration-readiness-action:hover {
  text-decoration: underline;
}

.forge-declaration-work-lane .forge-ai-action-cluster--inline {
  width: auto;
  justify-content: flex-start;
  gap: 10px;
}

.forge-declaration-empty-draft {
  min-height: 188px;
  height: 100%;
  border-style: solid;
  border-radius: var(--radius-md, 8px);
  background: var(--bg-subtle);
}

.forge-declare-standards-context {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  margin: 0 0 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm, 6px);
  background: var(--bg-panel);
}

.forge-declare-context-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--text-primary);
  font-size: var(--text-sm, 0.875rem);
  font-weight: 700;
}

.forge-declare-context-heading strong {
  min-width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--tint-amber);
  color: var(--text-amber);
  font-size: var(--text-xs, 0.75rem);
}

.forge-declare-standard-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
  padding: 8px 0;
  border-top: 1px solid var(--border-subtle);
}

.forge-declare-standard-row--coverage {
  border-top: 0;
}

.forge-declare-standard-ref {
  color: var(--text-primary);
  font-size: var(--text-sm, 0.875rem);
  font-weight: 700;
  line-height: 1.35;
}

.forge-declare-standard-meta {
  color: var(--text-muted);
  font-size: var(--text-xs, 0.75rem);
  line-height: 1.35;
}

.forge-declare-standard-actions {
  min-height: 32px;
}

.forge-declare-coverage-expansion {
  border-top: 1px solid var(--border-subtle);
}

@media (max-width: 640px) {
  .forge-standards-catalog-status {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .forge-standards-catalog-meta {
    white-space: normal;
  }

  .forge-declaration-workspace {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .forge-declaration-document-lane {
    position: static;
  }

  .forge-declaration-readiness-row {
    grid-template-columns: 10px minmax(0, 1fr);
  }

  .forge-declaration-readiness-slot {
    grid-column: 2;
    justify-self: start;
  }
}

@container product-workspace (max-width: 520px) {
  .forge-product-content .forge-source-intake__uploader.q-uploader {
    height: var(--layout-source-intake-mobile-uploader-block-size);
    min-height: var(--layout-source-intake-mobile-uploader-block-size);
    max-height: var(--layout-source-intake-mobile-uploader-block-size);
  }
  .forge-product-content .forge-source-dropzone__content {
    flex-direction: column;
    gap: 8px;
  }
}

/* ── Declare zero state ─────────────────────────────────────────────────── */

.forge-declare-zero-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 48px 24px;
  text-align: center;
}

.forge-declare-zero-icon {
  font-size: 2.5rem !important;
  color: var(--text-muted);
}

.forge-declare-zero-title {
  font-size: var(--text-base, 1rem);
  font-weight: 700;
  color: var(--text-primary);
}

.forge-declare-zero-body {
  font-size: var(--text-sm, 0.87rem);
  color: var(--text-secondary);
  max-width: 340px;
}

/* â”€â”€ Settings drawer â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-settings-drawer {
  display: flex;
  flex-direction: column;
}

.forge-settings-drawer-header {
  padding: 16px 20px;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-settings-drawer-body {
  padding: 0;
  overflow-y: auto;
  flex: 1;
}

.forge-settings-drawer-section {
  padding: 16px 20px;
}

.forge-settings-trigger {
  /* no extra styles needed â€” uses flat button base */
}

/* â”€â”€ Page header zone â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.forge-page-header-zone {
  /* The band lives inside page_root (capped at 1600px, centered in
       .forge-page), so margins alone cannot escape to .forge-content's
       full width on wide viewports. Instead we draw the background
       with a ::before pseudo-element that extends 100vw to each side;
       .forge-content has overflow-x: clip, so the bg is cleanly cut
       at the sidebar's right edge and the viewport's right edge.
       Negative top margin absorbs .forge-page's 24px top padding so
       the band sits flush against the topbar. Horizontal negative
       margins (-32px) escape .forge-page's gutter for narrow viewports
       where the pseudo-element would otherwise look narrow.
       Caveat: the assistant conversation drawer and activity dock are fixed outside this page flow.

       WIDTH REQUIREMENT (Plan 86): this element must keep width:auto. The
       browser then resolves auto-width = parent_width - margin-left -
       margin-right = page_root_width + 64px, and the 32px horizontal padding
       brings content back to the page_root edges. Never add `w-full`
       (width:100%) to the NiceGUI element in render_page_header â€” it overrides
       auto and shifts content 64px left of the KPI/main content edges. */
  position: relative;
  background: var(--bg-page-header);
  margin: -24px -32px 4px -32px;
  padding: 24px 32px 8px;
  box-shadow:
    -100vmax 0 0 var(--bg-page-header),
    100vmax 0 0 var(--bg-page-header);
}
@media (max-width: 1100px) {
  .forge-page-header-zone {
    /* layout.css:1027 narrows forge-page padding to 16px 20px 40px */
    margin: -16px -20px 4px -20px;
    padding: 20px 20px 6px;
  }
}

.forge-page-eyebrow {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--text-muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

/* Plan 36 â€” banners slot. Hosts read-only banners, degraded-data
   callouts, empty-state notices, and any other status row that
   otherwise floats as a sibling between Zone 1 and Zone 2. */
.forge-page-banners {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}

.forge-page-banners:empty {
  display: none;
}

/* â”€â”€ Interactive primitives (opt-in via class) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Inert utility classes. Add to any element that should feel pickup-able
   (.lift / .glow-hover), tactile on press (.press), row-hover-able (.row-hover),
   or have an animated underline on hover (.story-link). All transitions use
   the shared --motion-* / --ease-* tokens so the rhythm is consistent.
   Reduced-motion overrides live in the prefers-reduced-motion block in
   tokens.css. */
.lift,
.glow-hover {
  transition:
    background-color var(--motion-base) var(--ease-out-quart),
    border-color var(--motion-base) var(--ease-out-quart),
    box-shadow var(--motion-base) var(--ease-out-quart),
    transform var(--motion-base) var(--ease-out-quart);
}
.lift:hover,
.glow-hover:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
  border-color: var(--border-strong);
}
.lift:active,
.glow-hover:active {
  transform: translateY(0);
  box-shadow: var(--shadow-sm);
}

.press {
  transition:
    transform 150ms var(--ease-out-quart),
    box-shadow 150ms var(--ease-out-quart);
}
.press:active {
  transform: scale(0.985);
}

.row-hover {
  transition: background-color var(--motion-fast) var(--ease-out-quart);
}
.row-hover:hover {
  background-color: var(--bg-hover);
}

.story-link {
  position: relative;
  display: inline-block;
}
.story-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  height: 1px;
  width: 100%;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 240ms var(--ease-out-quart);
}
.story-link:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

/* ======================================================================
 * Inline chip-filter bar â€” `inline_filter_bar_html()` in layout.py
 * Replaces the LHS `.rm-facets` filter rail on top-level views.
 * Spec: docs/engineering/specs/2026-05-24-inline-chip-filter-bar.md
 * ====================================================================== */

.forge-fbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) 0;
}

.forge-fbar--has-fields {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  overflow: visible;
}
.forge-fbar--has-fields > .forge-fbar-chip-wrap,
.forge-fbar--has-fields > .forge-fbar-more {
  flex: 0 0 auto;
}
.forge-fbar-field-chip > .forge-fbar-popover {
  min-width: 240px;
}
.forge-fbar--has-fields > .forge-fbar-chip-wrap {
  position: relative;
}
.forge-fbar-field-popover-controls {
  position: relative;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px;
}
.forge-fbar-field-popover-controls .forge-fbar-search-input {
  border-radius: 6px;
}
.forge-fbar-date-range {
  align-items: stretch;
  flex-direction: column;
}
.forge-fbar-date-range label {
  display: grid;
  gap: 4px;
  color: var(--text-secondary);
  font-size: 12px;
}
.forge-fbar-date-range input {
  box-sizing: border-box;
  min-height: 32px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-card);
  padding: 5px 8px;
  color: var(--text-primary);
}

.forge-search {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.forge-search__icon {
  position: absolute;
  left: 10px;
  color: var(--text-muted);
  font-size: 18px;
  pointer-events: none;
}
.forge-search .forge-search__input {
  width: 100%;
  height: var(--forge-control-height-sm);
  min-width: 0;
  padding: 6px 10px 6px 32px;
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: var(--forge-control-font-sm);
  box-sizing: border-box;
}
.forge-search .forge-search__input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}
.forge-search .forge-search__input:focus-visible {
  outline: none;
  border-color: var(--brand-blue);
  box-shadow: var(--focus-ring);
}
.forge-search.q-field {
  display: inline-flex;
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  font-family: var(--font-body);
}
.forge-search.q-field .q-field__control {
  min-height: var(--forge-control-height-sm);
  height: var(--forge-control-height-sm);
  border-radius: var(--radius-pill);
  padding: var(--forge-control-padding-sm);
  color: var(--text-primary);
}
.forge-search.q-field.q-field--outlined .q-field__control:before {
  border-color: var(--border);
}
.forge-search.q-field.q-field--outlined .q-field__control:hover:before {
  border-color: var(--border-strong);
}
.forge-search.q-field .q-field__native,
.forge-search.q-field .q-field__input {
  min-width: 0;
  font-size: var(--forge-control-font-sm);
}
.forge-search.q-field .q-field__prepend {
  color: var(--text-muted);
}
.forge-search.q-field.q-field--focused .q-field__control:after {
  border-color: var(--brand-blue);
  box-shadow: var(--focus-ring);
}
.forge-field.q-field {
  min-width: 0;
  max-width: 100%;
  background: var(--bg-card);
  color: var(--text-primary);
  font-family: var(--font-body);
}
.forge-field.q-field .q-field__control {
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: var(--font-body);
}
.forge-field.q-field.q-field--outlined .q-field__control:before {
  border-color: var(--border);
}
.forge-field.q-field.q-field--outlined .q-field__control:hover:before {
  border-color: var(--border-strong);
}
.forge-field.q-field .q-field__native,
.forge-field.q-field .q-field__input,
.forge-field.q-field .q-field__label {
  font-family: var(--font-body);
  color: var(--text-primary);
}
.forge-field.q-field .q-field__native::placeholder,
.forge-field.q-field .q-field__input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}
.forge-field.q-field.q-field--focused .q-field__control:after {
  border-color: var(--brand-blue);
  box-shadow: var(--focus-ring);
}
.forge-checkbox,
.forge-radio {
  color: var(--text-primary);
  font-family: var(--font-body);
}
.forge-checkbox .q-checkbox__inner,
.forge-radio .q-radio__inner {
  color: var(--brand-blue);
}
.forge-checkbox:focus-visible,
.forge-radio:focus-visible,
.forge-checkbox .q-checkbox__inner:focus-visible,
.forge-radio .q-radio__inner:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}
.forge-fbar-search {
  display: inline-flex;
  flex: 1 1 240px;
  max-width: 28rem;
  min-width: 0;
}
.forge-fbar-search-input {
  flex: 1 1 auto;
}

.forge-fbar-chip-wrap,
.forge-fbar-more,
.forge-fbar-sort {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.forge-fbar-chip,
.forge-fbar-more-btn,
.forge-fbar-sort-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  border: 1px dashed var(--border);
  background: transparent;
  color: var(--text-secondary);
  font-weight: 500;
  cursor: pointer;
  box-sizing: border-box;
  transition:
    background var(--motion-fast, 120ms) var(--ease-out-quart),
    border-color var(--motion-fast, 120ms) var(--ease-out-quart),
    color var(--motion-fast, 120ms) var(--ease-out-quart);
}
.forge-fbar-chip:hover,
.forge-fbar-more-btn:hover,
.forge-fbar-sort-btn:hover {
  background: var(--border-subtle);
  color: var(--text-primary);
}
.forge-fbar-chip:focus-visible,
.forge-fbar-more-btn:focus-visible,
.forge-fbar-sort-btn:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.forge-fbar-chip--add {
  /* dashed border + muted color signals "add a filter" */
}
.forge-fbar-chip--active {
  border-style: solid;
  border-color: var(--border-strong);
  background: var(--surface-control-selected);
  color: var(--text-primary);
}
.forge-fbar-chip--active:hover {
  background: var(--surface-control-hover);
}
.forge-fbar-chip-label {
  white-space: nowrap;
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-fbar-chip-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 2px;
  border: 0;
  background: transparent;
  color: inherit;
  opacity: 0.6;
  cursor: pointer;
  border-radius: 50%;
}
.forge-fbar-chip-clear:hover {
  opacity: 1;
  background: rgba(var(--navy-rgb), 0.06);
}

.forge-fbar-popover,
.forge-fbar-more-menu,
.forge-fbar-sort-menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 60;
  min-width: 220px;
  max-width: 320px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 8px);
  box-shadow: 0 8px 24px rgba(var(--navy-rgb), 0.08);
  padding: 6px;
  animation: fade-in var(--motion-fast, 120ms) var(--ease-out-quart);
}
.forge-fbar-popover[hidden],
.forge-fbar-more-menu[hidden],
.forge-fbar-sort-menu[hidden] {
  display: none;
}
.forge-fbar-popover-search {
  padding: 4px 4px 6px;
  border-bottom: 1px solid var(--border-subtle);
  margin-bottom: 4px;
}
.forge-fbar-popover-search-input {
  width: 100%;
  height: 28px;
  padding: 4px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-card);
  font-size: 12px;
  box-sizing: border-box;
}
.forge-fbar-popover-options {
  display: flex;
  flex-direction: column;
  max-height: 320px;
  overflow-y: auto;
}
.forge-fbar-popover-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
  color: var(--text-primary);
}
.forge-fbar-popover-option:hover {
  background: var(--border-subtle);
}
.forge-fbar-popover-option input[type="checkbox"] {
  margin: 0;
  accent-color: var(--brand-blue);
}
.forge-fbar-popover-option-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.5;
}
/* Per-option urgency dot palette â€” threaded via FacetOption.extra_class
 * (urg-high / urg-medium / urg-low) by view code that needs a colored
 * dot per value (for example, the compliance roadmap Priority chip). */
.forge-fbar-popover-option.urg-high .forge-fbar-popover-option-dot {
  background: var(--brand-red);
  opacity: 1;
}
.forge-fbar-popover-option.urg-medium .forge-fbar-popover-option-dot {
  background: var(--brand-amber-bright);
  opacity: 1;
}
.forge-fbar-popover-option.urg-low .forge-fbar-popover-option-dot {
  background: var(--brand-green);
  opacity: 1;
}
.forge-fbar-popover-option-label {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-fbar-popover-option-count {
  color: var(--text-muted);
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
}

.forge-fbar-more-menu {
  min-width: 200px;
}
.forge-fbar-more-entry {
  position: relative;
}
.forge-btn.forge-fbar-more-entry-btn {
  align-items: center;
  border: 0;
  background: transparent;
  border-radius: 6px;
  color: var(--text-primary);
  cursor: pointer;
  text-align: left;
}
.forge-fbar-more-entry-btn:hover {
  background: var(--border-subtle);
}
.forge-fbar-more-entry[data-fbar-active="1"] .forge-fbar-more-entry-btn {
  color: var(--brand-blue);
  font-weight: 600;
}
.forge-fbar-more-entry .forge-fbar-popover {
  /* Nested popovers anchor to the menu entry, not the menu itself. */
  left: calc(100% + 6px);
  top: 0;
}
.forge-fbar-more-caret,
.forge-fbar-sort-caret {
  color: var(--text-muted);
}
.forge-fbar-more-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  margin-left: 2px;
  padding: 0 5px;
  background: var(--brand-blue);
  color: var(--bg-card);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
}

.forge-fbar-sort {
  align-items: stretch;
}
.forge-fbar-sort-btn {
  border-style: solid;
  border-color: var(--border);
  color: var(--text-primary);
}
.forge-fbar-sort-label {
  color: var(--text-muted);
  margin-right: 2px;
}
.forge-fbar-sort-value {
  font-weight: 600;
}
.forge-fbar-sort-menu {
  right: 0;
  left: auto;
}
.forge-fbar-sort-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
}
.forge-fbar-sort-option:hover {
  background: var(--border-subtle);
}
.forge-fbar-sort-option input[type="radio"] {
  accent-color: var(--brand-blue);
}

.forge-fbar-spacer {
  flex: 1 1 0;
  min-width: 0;
}

.forge-fbar-count {
  color: var(--text-muted);
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
.forge-fbar-count-value {
  color: var(--text-primary);
  font-weight: 600;
}

.forge-fbar-clear-all {
  border: 0;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  border-radius: 4px;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 2px;
}
.forge-ask-followup {
  border: 1px solid var(--border-subtle);
  border-radius: 999px;
  background: var(--bg-page);
  color: var(--text-secondary);
  cursor: pointer;
}
.forge-ask-followup:hover {
  color: var(--text-primary);
  border-color: var(--border-strong);
}
.forge-fbar-clear-all:hover {
  color: var(--text-primary);
  text-decoration-color: currentColor;
}
.forge-fbar-clear-all:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}
.forge-fbar--has-fields > .forge-fbar-clear-all {
  align-self: center;
  min-height: 34px;
  padding: 6px 12px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg-card);
  color: var(--text-secondary);
  text-decoration: none;
}
.forge-fbar--has-fields > .forge-fbar-clear-all:hover {
  border-color: var(--border-strong);
  background: var(--border-subtle);
  color: var(--text-primary);
}

@media (max-width: 1100px) {
  .forge-fbar-search {
    flex-basis: 100%;
    max-width: none;
  }
}

/* ======================================================================
 * Triage hint chips â€” slice 4 of generic document ingest pipeline.
 * Renders the labelled-for-UI subset of canonical source-document facts
 * inline on the unassigned-row in document_registry.
 * Per forge-product-integrity.mdc, AI-generated triage hints carry an
 * inline label with model + extracted_at + input_sha256.
 * ====================================================================== */
.forge-doc-hints {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
}

.forge-doc-hint__chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--brand-ai-tint);
  color: var(--brand-ai-hover);
  border: 1px solid var(--brand-ai);
  font-size: 11.5px;
  line-height: 1.4;
  white-space: nowrap;
  max-width: 320px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.forge-doc-hint__label {
  font-weight: 600;
  color: var(--brand-ai);
  text-transform: uppercase;
  font-size: 10px;
  letter-spacing: 0.04em;
}

.forge-doc-hint__value {
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
}

.forge-doc-hints__ai-label {
  margin-left: 4px;
  font-size: 10.5px;
  color: var(--text-muted);
  font-style: italic;
}

/* ---------------------------------------------------------------------------
   Multi-obligation readiness â€” header breakdown + shared-identity block
   (product_page/header.py, stages/data.py)
--------------------------------------------------------------------------- */

.forge-readiness-breakdown {
  width: 100%;
  margin-top: 2px;
  font-size: 0.8rem;
}

.forge-readiness-summary {
  cursor: pointer;
  color: var(--text-secondary);
  font-weight: 600;
  list-style: none;
  padding: 2px 0;
  user-select: none;
}

.forge-readiness-summary::-webkit-details-marker {
  display: none;
}

.forge-readiness-summary::before {
  content: "\25B8";
  display: inline-block;
  margin-right: 6px;
  transition: transform 120ms ease-out;
  color: var(--text-muted);
}

.forge-readiness-breakdown[open] .forge-readiness-summary::before {
  transform: rotate(90deg);
}

.forge-readiness-rows {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 6px;
}

.forge-readiness-row {
  display: grid;
  grid-template-columns: minmax(80px, 1fr) auto auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 4px 8px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
}

.forge-readiness-row-label {
  font-weight: 600;
  color: var(--text-primary);
}

.forge-readiness-row-score {
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
}

.forge-readiness-row-pill {
  color: var(--text-secondary);
  font-size: 0.74rem;
}

.forge-readiness-row-meta {
  color: var(--text-muted);
  font-size: 0.74rem;
  text-align: right;
}

/* Plan 280 â€” obligation toggle strip below the KPI 4-tile strip */
.forge-readiness-obligation-toggle {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 4px 0;
}

/* Plan 281 â€” breadcrumb back-link variant used in confirm stage */
.forge-back-link--breadcrumb {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.8rem;
  color: var(--text-muted);
  text-decoration: none;
}

.forge-back-link--breadcrumb:hover {
  color: var(--text-body);
  text-decoration: underline;
}

.forge-shared-identity {
  width: 100%;
  border: 1px solid var(--border-subtle);
  border-radius: 12px;
  background: var(--bg-card);
  padding: 12px 16px;
  margin-bottom: 12px;
}

.forge-shared-identity-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: 8px;
}

.forge-shared-identity-hint {
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--text-muted);
}

.forge-shared-identity-rows {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 6px 18px;
}

.forge-shared-identity-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.84rem;
}

.forge-shared-identity-label {
  color: var(--text-secondary);
  min-width: 110px;
}

.forge-shared-identity-value {
  color: var(--text-primary);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Single-tile readiness KPI strip in the product header (Zone 2). */
.forge-product-readiness-strip {
  width: 100%;
}

/* Plan 113 â€” single primary "Next" CTA beneath the readiness KPI. */
.forge-next-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  border-radius: var(--radius-md);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 600;
  text-decoration: none;
  line-height: 1.2;
  transition:
    background 0.18s ease-out,
    color 0.18s ease-out,
    box-shadow 0.18s ease-out,
    transform 0.18s ease-out;
}

.forge-next-cta:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.forge-next-cta--primary {
  background: var(--button-primary-bg);
  color: var(--button-primary-text);
  box-shadow: var(--shadow-sm);
}

.forge-next-cta--primary:hover {
  background: var(--button-primary-bg-hover);
  transform: translateY(-1px);
}

.forge-next-cta--reissue {
  background: transparent;
  color: var(--brand-blue);
  padding: 6px 0;
  font-weight: 500;
}

.forge-next-cta--reissue:hover {
  color: var(--brand-blue-bright);
  text-decoration: underline;
}

.forge-next-cta-label {
  white-space: nowrap;
}

/* Plan 134 â€” module queue + overview matrix */
.forge-module-queue {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}

.forge-module-queue-row:last-child td,
.forge-module-queue-row:last-child th {
  border-bottom: none;
}

.forge-module-queue-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.84rem;
}

.forge-module-queue-actions-col {
  text-align: right;
  white-space: nowrap;
}

.settings-template-cell {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.settings-template-cell > span {
  color: var(--text-muted);
  font-size: 0.78rem;
}

.settings-template-code {
  background: var(--bg-soft);
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  color: var(--text-primary);
  font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
  font-size: 0.82rem;
  padding: 2px 6px;
}

.settings-template-override-row {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
  padding: 10px 12px;
}

.settings-template-draft {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md, 8px);
}

/* Monitoring interpretations â€” fixed columns {
  table-layout: fixed;
  width: 100%;
}
.forge-exec-head-row .forge-exec-product {
  font-weight: 600;
}
.forge-exec-select-col,
.forge-exec-caret-col {
  width: 28px;
  text-align: center;
}
.forge-exec-caret {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 0.9rem;
  line-height: 1;
  padding: 2px;
  transition: transform 0.12s ease;
}
.forge-exec-group.is-expanded .forge-exec-caret {
  transform: rotate(90deg);
}
.forge-exec-actions-col {
  text-align: right;
  white-space: nowrap;
}
.forge-exec-overflow-col {
  width: 32px;
  text-align: center;
}
.forge-exec-overflow {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 1rem;
  line-height: 1;
  padding: 2px 6px;
}
.forge-exec-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--text-primary);
}
.forge-exec-deadline--red {
  color: var(--text-primary);
  font-weight: 600;
}
.forge-exec-deadline--amber {
  color: var(--text-primary);
}
.forge-exec-deadline--green {
  color: var(--brand-green);
}
.forge-exec-deadline--slate {
  color: var(--text-muted);
}
.forge-exec-muted {
  color: var(--text-muted);
}
.forge-exec-unassigned {
  color: var(--text-muted);
  font-size: 0.84rem;
}
.forge-exec-action-cell {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
  width: 100%;
}
.forge-exec-overflow-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.forge-exec-field-source {
  margin-left: 8px;
}
.forge-exec-field-label {
  padding-left: 32px !important;
  color: var(--text-primary);
}
.forge-exec-field-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: 0.72rem;
  font-weight: 600;
}
.forge-exec-field-chip--red {
  background: var(--tint-red);
  color: var(--brand-red-dark);
}
.forge-exec-field-chip--amber {
  background: var(--tint-amber);
  color: var(--text-primary);
}
.forge-exec-field-chip--blue {
  background: var(--tint-info);
  color: var(--brand-blue);
}
.forge-exec-field-chip--green {
  background: var(--tint-green);
  color: var(--brand-green-dark);
}

.forge-module-matrix {
  width: 100%;
  overflow-x: auto;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 8px);
  box-shadow: 0 1px 3px rgba(var(--navy-rgb), 0.04);
}

.forge-module-matrix-product {
  font-weight: 600;
  text-align: left;
  padding: 10px 16px;
}

.forge-module-cell {
  text-align: center;
  padding: 10px 8px;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-module-cell span {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--text-muted);
}

/* Module-overview matrix dot tones (moved out of per-view <style> blocks). */
.forge-module-dot--green {
  background: var(--brand-green) !important;
}
.forge-module-dot--amber {
  background: var(--brand-amber-bright) !important;
}
.forge-module-dot--red {
  background: var(--brand-red) !important;
}
.forge-module-dot--blue {
  background: var(--brand-blue) !important;
}
.forge-module-dot--grey {
  background: var(--text-muted) !important;
}

/* Plan 117 â€” product deep-dive first-paint skeleton */
.forge-shell-skeleton {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}

.forge-shell-skeleton-header {
  height: 64px;
  border-radius: var(--radius-lg);
}

.forge-shell-skeleton-kpi {
  height: 96px;
  border-radius: var(--radius-card);
}

.forge-shell-skeleton-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 4px 0;
}

.forge-shell-skeleton-line {
  height: 20px;
  border-radius: var(--radius-sm);
}

.forge-shell-skeleton-line:nth-child(2) {
  width: 85%;
}

.forge-shell-skeleton-line:nth-child(3) {
  width: 60%;
}

@media (prefers-reduced-motion: reduce) {
  .forge-next-cta {
    transition: none;
  }
  .forge-next-cta--primary:hover {
    transform: none;
  }
}

/* â”€â”€ Tab archetype markers â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   These classes establish archetype identity on the root container of every
   tab body. They do not add layout on their own â€” the panel shells (forge-
   analysis-panel, forge-execution-panel, etc.) own their dimensions. They
   exist so CSS tooling, the ratchet, and future theming layers can target a
   specific archetype without reaching into individual view HTML.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* Queue â€” vertically stacked row list (review queues, sign-off queues) */
.forge-tab-queue {
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

/* Matrix â€” structured grid / table surface (overview dashboards) */
.forge-tab-matrix {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
}

/* Feed â€” chronological scrolling stream (news, proposals) */
.forge-tab-feed {
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
}

/* Catalog â€” card-based browseable collection */
.forge-tab-catalog {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
}

/* Gallery â€” multi-column card grid (data connectors, regulatory feeds) */
.forge-tab-gallery {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
}

.forge-tab-gallery-grid {
  display: grid;
  grid-template-columns: var(--layout-responsive-card-grid-columns);
  gap: var(--space-4, 16px);
  min-width: 0;
}

/* Visualization — full-bleed canvas or D3 chart */
.forge-tab-viz {
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow: hidden;
}

/* confirm_requirements.py â€” proposed/confirmed requirement-row badges and the
   inline "AI proposal:" label. Pill chrome mirrors .catalog-badge tints. */
.forge-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-pill);
  white-space: nowrap;
  background: color-mix(in srgb, var(--brand-slate) 10%, transparent);
  color: var(--text-secondary);
}
.forge-badge--green {
  background: color-mix(in srgb, var(--brand-green) 12%, transparent);
  color: var(--brand-green);
}
.forge-badge--amber {
  background: color-mix(in srgb, var(--brand-amber) 12%, transparent);
  color: var(--text-primary);
}
.forge-badge--blue {
  background: var(--tint-blue);
  color: var(--brand-blue);
}
.forge-badge--red {
  background: var(--tint-red);
  color: var(--brand-red);
}
.forge-badge--slate {
  background: var(--tint-slate);
  color: var(--text-secondary);
}
.forge-badge--ai {
  background: var(--brand-ai-tint);
  color: var(--brand-ai);
}
.forge-ai-review-cta {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block-start: var(--space-2);
}
.forge-ai-review-cta__link {
  color: var(--brand-blue);
  text-decoration: none;
  white-space: nowrap;
}
.forge-ai-review-cta__link:hover,
.forge-ai-review-cta__link:focus-visible {
  text-decoration: underline;
}
.forge-product-impact-stack,
.forge-product-priority {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
}
.forge-product-priority--compact {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
}
.forge-product-deadline {
  display: block;
}
.forge-product-priority__rationale {
  margin-block-start: var(--space-1);
}
.forge-product-regulation-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
  min-width: 0;
}
.forge-product-owner-select {
  padding: var(--space-1) var(--space-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  background: var(--bg-card);
}
.forge-product-owner-select:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 1px;
}
.forge-product-owner-select--bulk,
.forge-product-owner-select--row {
  min-width: 0;
  max-width: 100%;
}
.forge-product-owner-cell__control {
  min-width: 0;
}
.forge-product-list__family {
  min-width: 0;
  overflow-wrap: anywhere;
}
.forge-ai-label {
  font-weight: 600;
  color: var(--brand-ai);
}

/* Queue checkbox column (Plan 1519) */
.forge-queue-checkbox {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--brand-blue);
  flex-shrink: 0;
}

/* Queue product cell â€” separated name / regulation / badge (Plan 1519) */
.forge-queue-product-cell {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.forge-queue-product-name {
  font-weight: 500;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-queue-product-reg {
  font-size: 0.78rem;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-queue-status-badge {
  align-self: flex-start;
  margin-top: 2px;
}

/* Extraction evidence components (Plan 1502) */
.forge-status-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-xs);
}
.forge-status-badge--blue {
  background: var(--tint-blue);
  color: var(--brand-blue);
}
.forge-status-badge--green {
  background: var(--tint-green);
  color: var(--text-primary);
}
.forge-status-badge--green.forge-type--caption {
  color: var(--text-primary);
}
.forge-status-badge--amber {
  background: var(--tint-amber);
  color: var(--brand-amber-dark);
}
.forge-status-badge--amber.forge-type--caption {
  color: var(--brand-amber-dark);
}
.forge-status-badge--red {
  background: var(--tint-red);
  color: var(--text-primary);
}
.forge-status-badge--red.forge-type--caption {
  color: var(--text-primary);
}
.forge-status-badge--neutral {
  background: var(--surface-secondary);
  color: var(--text-muted);
}
.forge-registration-status-link {
  align-items: center;
  border-radius: var(--radius-pill);
  display: inline-flex;
  justify-content: center;
  text-decoration: none;
}
.forge-registration-status-link:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
.forge-extraction-evidence-panel {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  background: var(--surface-secondary);
  border-radius: 6px;
}
.forge-extraction-panel-title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-secondary);
  margin: 0 0 4px;
}
.forge-extraction-field-row {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) 2fr auto;
  align-items: start;
  gap: 8px;
  padding: 4px 0;
  border-bottom: 1px solid var(--border);
}
.forge-extraction-label {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--text-muted);
}
.forge-extraction-value {
  font-size: 0.85rem;
  color: var(--text-primary);
  word-break: break-word;
}
.forge-source-quote {
  grid-column: 1 / -1;
  margin: 2px 0 0;
  padding: 4px 8px;
  font-size: 0.75rem;
  color: var(--text-muted);
  border-left: 3px solid var(--border-strong);
  background: var(--surface-primary);
}

.forge-urgency-list {
  margin: 4px 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.forge-banner-dismiss {
  /* Extends .forge-banner-action; applies dismiss-specific styling. */
  margin-left: auto;
}

/* â”€â”€ Plan 1565 â€” Team member row action buttons (extracted from team.py) */
.forge-row-action {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  background: var(--surface-primary);
  color: var(--text-primary);
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
  transition: background 0.15s ease;
}

.forge-row-action:hover {
  background: var(--surface-hover);
}

.forge-row-action--ghost {
  background: transparent;
  border-color: transparent;
  color: var(--text-muted);
}

.forge-row-action--ghost:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
}

/* Plan 2165: Document Registry queue table primitives */
.forge-doc-registry-tabs {
  margin: 0 0 14px 0;
}
.forge-seg-tab-link {
  text-decoration: none;
}
.forge-reporting-documents-tabs-area,
.forge-reporting-documents-table-area {
  margin: var(--space-0);
  gap: var(--space-0);
}
.forge-reporting-documents-table-area {
  margin-block-start: var(--space-0);
}

.forge-doc-queue-status-dot {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.forge-doc-queue-score-bar {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-width: var(--layout-document-queue-score-min-inline-size);
}
.forge-doc-queue-score-track {
  flex: 1;
  display: block;
  width: 100%;
  height: 6px;
}
.forge-doc-queue-score-track-background {
  fill: var(--border);
}
.forge-doc-queue-score-fill {
  display: block;
}
.forge-doc-queue-score-fill--high { fill: var(--brand-green); }
.forge-doc-queue-score-fill--medium { fill: var(--brand-amber-bright); }
.forge-doc-queue-score-fill--low { fill: var(--brand-red); }
.forge-doc-queue-score-pct {
  color: var(--text-secondary);
  width: 32px;
  text-align: right;
}
.forge-doc-queue-muted {
  color: var(--text-muted);
}
.forge-doc-queue-valid-until--expiring {
  color: var(--text-primary);
}
.forge-doc-queue-valid-until--expired {
  color: var(--text-primary);
}
.forge-fact-review-field-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
}
.forge-fact-review-field-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.875rem;
}

/* Monitoring retains the public `?tab=radar` deep link while tabs use current IDs. */

.forge-manager-review,
.forge-manager-review-section,
.forge-manager-review-facts,
.forge-manager-review-fact,
.forge-manager-review-impact {
  min-width: 0;
  max-width: 100%;
}
.forge-manager-review-fact {
  display: grid;
  grid-template-columns: minmax(7rem, 0.34fr) minmax(0, 1fr);
  column-gap: 1rem;
  row-gap: 0.35rem;
  align-items: start;
}
.forge-manager-review-value {
  display: grid;
  grid-column: 2;
  gap: 0.35rem;
  min-width: 0;
  margin: 0;
}
.forge-manager-review-value-line {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.4rem 0.65rem;
  min-width: 0;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  white-space: pre-wrap;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line-height);
}
.forge-manager-review-value-label {
  flex: 0 0 auto;
  color: var(--text-secondary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
}
.forge-manager-review-outcome dd {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  grid-column: 2;
  margin: 0;
}
.forge-manager-review-outcome-label {
  color: var(--text-primary);
  font-weight: var(--type-body-weight);
}
.forge-manager-review {
  display: grid;
  gap: 0;
  overflow: hidden;
}
.forge-manager-review-section {
  display: grid;
  gap: 0.55rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-manager-review-information { padding-top: 0; }
.forge-manager-review-source { border-bottom: 0; padding-bottom: 0; }
.forge-manager-review-section > .forge-review-section-title { margin-bottom: 0.15rem; }
.forge-manager-review-regulation {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
}
.forge-manager-review-heading {
  color: var(--text-primary);
  font-size: var(--type-section-title-size);
  font-weight: var(--type-section-title-weight);
  line-height: var(--type-section-title-line-height);
  letter-spacing: var(--type-section-title-letter-spacing);
}
.forge-manager-review-status {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.9rem 1.25rem;
  margin: 0.1rem 0 0;
  color: var(--text-muted);
  font-size: var(--type-body-secondary-size);
}
.forge-manager-review-status-item {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 0;
}
.forge-manager-review-status-item > span:first-child {
  color: var(--text-secondary);
  font-size: var(--type-field-label-size);
  font-weight: var(--type-field-label-weight);
}
.forge-manager-review-facts {
  display: grid;
  gap: 0;
  margin: 0;
}
.forge-manager-review-fact,
.forge-manager-review-impact {
  padding: 1rem 0;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-manager-review-fact:first-child { padding-top: 0; }
.forge-manager-review-fact:last-child { border-bottom: 0; }
.forge-manager-review-fact dt,
.forge-manager-review-impact strong {
  color: var(--text-primary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
}
.forge-manager-review-fact dt { grid-column: 1; }
.forge-manager-review-impact p,
.forge-manager-review-location {
  margin: 0.35rem 0 0;
  color: var(--text-primary);
  overflow-wrap: anywhere;
  white-space: pre-wrap;
  font-size: var(--type-body-size);
}
.forge-manager-review-current {
  color: var(--text-secondary);
}
.forge-manager-review-value-line.forge-manager-review-proposed {
  font-weight: var(--type-body-weight);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line-height);
  max-width: 72ch;
}
.forge-manager-review-source .forge-manager-review-location {
  width: fit-content;
  max-width: 100%;
  margin: 0.1rem 0 0.35rem;
  padding: 0.25rem 0.6rem;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
  line-height: var(--type-body-emphasis-line-height);
  white-space: normal;
}
.forge-manager-review-source {
  display: grid;
  align-content: start;
  gap: 0.55rem;
}
.forge-review-quote {
  max-width: 72ch;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line-height);
}
.forge-manager-review-assessment { max-width: 100%; white-space: normal; }
.monitoring-review-filters { min-width: 0; max-width: 100%; }
.forge-review-workspace {
  width: 100%;
  max-width: min(96rem, 100%);
  min-width: 0;
}
.forge-review-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(17rem, 20rem);
  grid-template-areas: "content decision";
  align-items: start;
  gap: 1.25rem;
  min-width: 0;
}
.forge-review-card {
  min-width: 0;
  max-width: 100%;
  padding: clamp(1rem, 2.2vw, 1.6rem);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-card);
  color: var(--text-primary);
  font-family: var(--type-body-family);
  font-size: var(--type-body-size);
  overflow: hidden;
}
.forge-review-card h1,
.forge-review-card h2,
.forge-review-card h3,
.forge-review-card h4,
.forge-review-card h5,
.forge-review-card h6,
.forge-review-card .q-btn,
.forge-review-card .q-btn__content {
  font-family: var(--type-body-family);
}
.forge-review-card h1 {
  font-family: var(--type-page-title-family);
  font-size: var(--type-page-title-size);
  font-weight: var(--type-page-title-weight);
  line-height: var(--type-page-title-line-height);
}
.forge-review-card h2 {
  font-size: var(--type-section-title-size);
  font-weight: var(--type-section-title-weight);
  line-height: var(--type-section-title-line-height);
}
.forge-review-card h3 {
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
  line-height: var(--type-panel-title-line-height);
}
.forge-review-card h4 {
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
  line-height: var(--type-body-emphasis-line-height);
}
.forge-review-card h5 {
  font-size: var(--type-body-secondary-size);
  font-weight: var(--type-body-secondary-weight);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-card h6 {
  font-size: var(--type-caption-size);
  font-weight: var(--type-caption-weight);
  line-height: var(--type-caption-line-height);
}
.forge-review-card .forge-manager-review-heading {
  margin: 0;
  font-size: var(--type-section-title-size);
  font-weight: var(--type-section-title-weight);
  letter-spacing: var(--type-section-title-letter-spacing);
  line-height: var(--type-section-title-line-height);
}
.forge-review-card--content {
  grid-area: content;
  display: grid;
  gap: 1.25rem;
}
.forge-review-sidebar {
  grid-area: decision;
  display: grid;
  align-content: start;
  gap: 0.85rem;
  min-width: 0;
  position: sticky;
  top: 1rem;
}
.forge-review-card--decision {
  display: grid;
  gap: 0.85rem;
  min-width: 0;
}
.forge-review-status-title {
  margin: 0;
  color: var(--text-primary);
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
}
.forge-review-action-mount {
  min-width: 0;
}
.forge-review-proposal-edit-panel {
  min-width: 0;
  overflow-wrap: anywhere;
}
.forge-review-proposal-edit-panel > .q-expansion-item__container {
  min-width: 0;
}
.forge-review-workspace-header {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.25rem 0 0.5rem;
}
.forge-review-workspace-meta {
  color: var(--text-muted);
}
.forge-review-parent-proposal {
  display: grid;
  gap: 0.75rem;
  padding: 1rem 0 0.25rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-degraded-evidence {
  display: grid;
  gap: 0.6rem;
  padding: 0.75rem 0 0.75rem 0.9rem;
  border-inline-start: 3px solid var(--border-amber);
  background: transparent;
}
.forge-review-inline-section {
  margin-top: 0.5rem;
  padding: 1rem 0 0.25rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-fact-review-field-label {
  justify-content: space-between;
  min-height: 1.8rem;
  color: var(--text-primary);
}
.forge-review-section-title {
  margin: 0;
  color: var(--text-primary);
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
  line-height: var(--type-panel-title-line-height);
}

.forge-review-source-meta dt {
  color: var(--text-secondary);
  font-size: var(--type-field-label-size);
  font-weight: var(--type-field-label-weight);
}
.forge-review-source-meta dd {
  margin: 0.25rem 0 0;
  color: var(--text-primary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
  overflow-wrap: anywhere;
}
.forge-review-source-meta {
  display: grid;
  gap: 0.45rem;
  overflow-wrap: anywhere;
}
.forge-review-source-meta .forge-review-source-title { margin: 0; }
.forge-review-source-name {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
  line-height: var(--type-body-emphasis-line-height);
}
.forge-review-source-meta > a,
.forge-review-source-meta > span { width: fit-content; }
.forge-review-source-meta dd {
  font-size: var(--type-body-secondary-size);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-source-details {
  display: grid;
  gap: 0;
  margin: 0.25rem 0 0;
}
.forge-review-source-details > div {
  display: grid;
  grid-template-columns: minmax(6rem, 0.7fr) minmax(0, 1.3fr);
  align-items: baseline;
  gap: 0.75rem;
  padding: 0.35rem 0;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-source-details dt {
  color: var(--text-secondary);
  font-size: var(--type-field-label-size);
  font-weight: var(--type-field-label-weight);
}
.forge-review-source-details dd {
  margin: 0;
  font-size: var(--type-body-secondary-size);
  font-weight: var(--type-body-secondary-weight);
}
.forge-manager-review-impact {
  padding: 0.75rem 0 0;
  border: 0;
}
.forge-review-approval-details {
  display: grid;
  gap: 0.75rem;
  margin-top: 0.35rem;
  padding: 0.9rem;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-page);
}
.forge-review-activity {
  min-width: 0;
}
.forge-review-activity h3 {
  margin: 0 0 0.5rem;
  color: var(--text-primary);
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
  line-height: var(--type-panel-title-line-height);
}
.forge-review-activity ol {
  display: grid;
  gap: 0.55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.forge-review-activity li {
  min-width: 0;
  padding-top: 0.55rem;
  border-top: 1px solid var(--border-subtle);
  overflow-wrap: anywhere;
}
.forge-review-activity-heading {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.5rem;
}
.forge-review-activity-heading time,
.forge-review-activity-actor {
  color: var(--text-muted);
  font-size: var(--type-body-secondary-size);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-activity-actor,
.forge-review-activity-reason {
  margin: 0.2rem 0 0;
  overflow-wrap: anywhere;
}
.forge-review-activity-reason {
  color: var(--text-secondary);
  font-size: var(--type-body-secondary-size);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-activity-empty {
  color: var(--text-muted);
  font-size: var(--type-body-secondary-size);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-proposal-preview {
  margin-top: 0.75rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-concern-evidence {
  display: grid;
  gap: 0.75rem;
}
.forge-review-concern-evidence article {
  display: grid;
  gap: 0.35rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-concern-evidence blockquote {
  margin: 0;
  padding: 0.35rem 0 0.35rem 0.85rem;
  border-inline-start: 2px solid var(--border-subtle);
  background: transparent;
  color: var(--text-primary);
}
.forge-review-quote {
  margin: 0;
  padding: 0.85rem 1rem;
  border: 0;
  border-left: 3px solid var(--brand-blue-bright);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  background: var(--bg-card);
  color: var(--text-primary);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line-height);
}
.forge-review-warning {
  color: var(--brand-red-dark);
  margin: 0;
}
.forge-review-reason {
  display: grid;
  gap: 0.6rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-action-status:empty {
  display: none;
}
.forge-review-workspace-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 0.55rem;
  width: 100%;
}
.forge-review-rejection-form {
  display: grid;
  gap: 0.6rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border-subtle);
}
.forge-review-card .forge-review-section-title,
.forge-review-card .forge-review-activity h3 {
  font-family: var(--type-panel-title-family);
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
  line-height: var(--type-panel-title-line-height);
}
.forge-review-card h5.forge-review-section-title {
  font-size: var(--type-body-secondary-size);
  font-weight: var(--type-body-secondary-weight);
  line-height: var(--type-body-secondary-line-height);
}
.forge-review-card .forge-review-section-title[aria-level="4"] {
  font-size: var(--type-body-emphasis-size);
  font-weight: var(--type-body-emphasis-weight);
  line-height: var(--type-body-emphasis-line-height);
}
.forge-review-card .forge-review-status-title {
  font-family: var(--type-panel-title-family);
  font-size: var(--type-panel-title-size);
  font-weight: var(--type-panel-title-weight);
  line-height: var(--type-panel-title-line-height);
}
.forge-review-status-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: var(--text-sm);
  font-weight: 600;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.forge-review-status-badge--neutral {
  background: var(--bg-muted);
  color: var(--text-secondary);
}
.forge-review-status-badge--green {
  background: var(--tint-green);
  color: var(--text-primary);
}
.forge-review-status-badge--amber {
  background: var(--tint-amber);
  color: var(--brand-amber-dark);
}
.forge-review-status-badge--red {
  background: var(--tint-red);
  color: var(--text-primary);
}
@media (max-width: 1100px) {
  .forge-review-layout {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "content" "decision";
  }
  .forge-review-sidebar {
    position: static;
  }
}
@media (max-width: 720px) {
  .forge-review-layout {
    gap: 0.85rem;
  }
  .forge-review-card {
    padding: 1rem;
  }
  .forge-review-degraded-evidence,
  .forge-review-inline-section {
    padding: 0.9rem;
  }

  .forge-manager-review-fact {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.3rem;
  }
  .forge-manager-review-fact dt,
  .forge-manager-review-fact dd { grid-column: 1; }
  .forge-manager-review-value { grid-column: 1; }
}
/* Source-document review workspace */
.source-doc-section-title {
  color: var(--text-primary);
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.25;
}
.source-doc-overview-card {
  margin-top: 0;
}
.source-doc-overview-fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  margin-block: var(--space-2) var(--space-5);
}
.source-doc-overview-fields > .forge-card-header {
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border-subtle);
}
.source-doc-overview-section {
  min-width: 0;
}
.source-doc-overview-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.source-doc-overview-section h2 {
  margin: 0;
  padding: 0 0 10px;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-primary);
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.25;
}
.source-doc-overview-row {
  display: grid;
  grid-template-columns: minmax(150px, 31%) minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  min-height: 54px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border-subtle);
}
.source-doc-overview-row__label {
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.35;
}
.source-doc-overview-row__copy {
  min-width: 0;
}
.source-doc-overview-row__value {
  color: var(--text-primary);
  font-size: 0.88rem;
  font-weight: 600;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-overview-row__detail {
  margin-top: 2px;
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.35;
}
.source-doc-overview-row--readonly {
  background: var(--surface-muted);
  border: 1px solid var(--border-subtle);
}
.source-doc-overview-row--readonly + .source-doc-overview-row--readonly {
  border-top: 0;
}
.source-doc-overview-row--readonly:nth-child(2) {
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}
.source-doc-overview-row--readonly:last-child {
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}
.source-doc-overview-row--readonly .source-doc-overview-row__value,
.source-doc-overview-row--readonly .source-doc-overview-row__detail {
  color: var(--text-muted);
}
.source-doc-overview-row__action {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.source-doc-overview-row__edit {
  flex: none;
}
.source-doc-assignment-conflict {
  border: 1px solid var(--color-warning-border);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  background: var(--color-warning-surface);
  color: var(--text-primary);
}
.source-doc-bundle-link,
.source-doc-bundle-parts {
  display: grid;
  gap: 10px;
  margin-bottom: 16px;
}
.source-doc-bundle-link {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 12px;
  background: var(--bg-card);
}
.source-doc-bundle-link-body {
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.35;
}
.source-doc-bundle-link-body a,
.source-doc-part-title {
  color: var(--brand-blue);
  font-weight: 700;
  text-decoration: none;
}
.source-doc-bundle-link-body a:hover,
.source-doc-part-title:hover {
  text-decoration: underline;
}
.source-doc-part-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.source-doc-part-tab {
  display: grid;
  gap: 2px;
  min-width: 140px;
  max-width: 260px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  background: var(--bg-subtle);
  color: var(--text-secondary);
  text-decoration: none;
}
.source-doc-part-tab.is-active {
  border-color: var(--border-strong);
  background: var(--bg-card);
  color: var(--text-primary);
}
.source-doc-part-tab__label {
  font-weight: 700;
  line-height: 1.2;
  overflow-wrap: anywhere;
}
.source-doc-part-tab__meta {
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.2;
}
.source-doc-bundle-overview-parts {
  display: grid;
  gap: 8px;
  margin-top: 16px;
}
.source-doc-bundle-overview-parts__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.source-doc-bundle-part-summary {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) max-content max-content max-content;
  gap: 12px;
  align-items: center;
  border-top: 1px solid var(--border-subtle);
  padding: 10px 0;
}
.source-doc-bundle-part-summary__title {
  color: var(--text-primary);
  font-weight: 700;
  text-decoration: none;
  overflow-wrap: anywhere;
}
.source-doc-bundle-part-summary__title:hover {
  text-decoration: underline;
}
.source-doc-bundle-part-summary__meta,
.source-doc-bundle-part-summary__state {
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.3;
}
.source-doc-bundle-part-summary__state {
  color: var(--text-primary);
  font-weight: 600;
}
.source-doc-artifact-assessment {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.35;
}
.source-doc-artifact-assessment__label {
  color: var(--text-primary);
  font-weight: 600;
}
.source-doc-artifact-assessment__detail {
  overflow-wrap: anywhere;
}
@media (max-width: 760px) {
  .source-doc-bundle-part-summary {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}
.source-doc-part-card {
  display: grid;
  gap: 6px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 12px;
  background: var(--bg-card);
}
.source-doc-part-meta,
.source-doc-part-state,
.source-doc-part-reasons {
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-overview-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--border-subtle);
}
.source-doc-summary-tile {
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  background: var(--bg-muted);
}
.source-doc-summary-value {
  color: var(--text-primary);
  font-size: 1.15rem;
  font-weight: 800;
  line-height: 1.1;
}
.source-doc-summary-label {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.76rem;
  font-weight: 700;
  line-height: 1.25;
  text-transform: uppercase;
}
.source-doc-review-queue {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.source-doc-external-artifacts-unavailable {
  margin-block: 12px;
  padding: 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-muted);
  color: var(--text-secondary);
}
.source-doc-review-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 32%);
  gap: 12px 16px;
  padding: 14px 0;
  border-top: 1px solid var(--border-subtle);
}
.source-doc-review-item:first-of-type {
  border-top: 0;
}
.source-doc-review-item:hover {
  background: color-mix(in srgb, var(--brand-blue) 7%, transparent);
}
.source-doc-review-item--selected {
  background: color-mix(in srgb, var(--brand-blue) 10%, transparent);
  box-shadow: inset 3px 0 0 var(--brand-blue);
}
.source-doc-review-item--pinned {
  background: color-mix(in srgb, var(--brand-blue) 13%, transparent);
  box-shadow: inset 3px 0 0 var(--brand-blue);
}
.source-doc-review-findings .source-doc-review-filters {
  position: sticky;
  top: 84px;
  z-index: 4;
  padding: 8px 0;
  background: var(--bg-card);
}
.source-doc-review-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 6px;
  white-space: normal;
}
.source-doc-review-part {
  color: var(--text-muted);
  font-size: 0.82rem;
  font-weight: 500;
}
.source-doc-review-quality-warning {
  color: var(--text-muted);
  display: block;
  font-size: 0.78rem;
  font-weight: 500;
  margin-top: 2px;
}
.source-doc-review-normalized {
  color: var(--text-muted);
  font-size: 0.82rem;
  font-weight: 500;
}
.source-doc-detail-preview--focused {
  border-radius: var(--radius-md);
  outline: 2px solid var(--brand-blue);
  outline-offset: 3px;
  transition: outline-color 0.18s ease, outline-offset 0.18s ease;
}
.source-doc-detail-grid {
  display: grid;
  /* Size the rail against page content (.forge-page is a size container),
     not viewport vw â€” sidebar + padding made viewport 980px collapse early. */
  grid-template-columns: minmax(0, 1fr) minmax(320px, 36%);
  gap: 16px;
  align-items: stretch;
  width: 100%;
}
.source-doc-detail-grid--without-preview {
  grid-template-columns: minmax(0, 1fr);
}
.source-doc-detail-main {
  min-width: 0;
}
.source-doc-detail-preview {
  min-width: 0;
  display: flex;
  align-self: stretch;
}
.source-doc-detail-preview > * {
  flex: 1 1 auto;
}
.source-doc-detail-preview .forge-content-box {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  height: 100%;
}
.source-doc-detail-preview .source-doc-preview-unavailable {
  flex: 1 1 auto;
  width: 100%;
}
@container forge-page (max-width: 1100px) {
  .source-doc-detail-grid {
    grid-template-columns: minmax(0, 1fr) 320px;
  }
  .source-doc-detail-grid.source-doc-detail-grid--without-preview {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 760px) {
  .source-doc-detail-grid {
    grid-template-columns: 1fr;
  }
  .source-doc-detail-preview {
    position: static;
  }
}
.source-doc-preview-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.source-doc-preview-title {
  color: var(--text-primary);
  font-weight: 700;
  line-height: 1.25;
}
.source-doc-hover-panel {
  margin-bottom: 10px;
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  background: var(--bg-muted);
}
.source-doc-hover-title {
  color: var(--text-primary);
  font-weight: 700;
  line-height: 1.3;
}
.source-doc-hover-meta {
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.35;
}
.source-doc-hover-quote {
  margin: 8px 0 0;
  padding-left: 10px;
  border-left: 3px solid var(--brand-blue);
  color: var(--text-primary);
  font-size: 0.9rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-pdf-viewer {
  position: relative;
  width: 100%;
  height: calc(100vh - 260px);
  min-height: 520px;
  overflow: auto;
  border: 1px solid var(--border-subtle);
  background: var(--bg-muted);
}
.source-doc-pdf-viewer__status {
  position: sticky;
  top: 0;
  z-index: 3;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  background: var(--bg-card);
  font-size: 0.84rem;
  line-height: 1.35;
}
.source-doc-pdf-viewer__status[data-state="error"],
.source-doc-pdf-viewer__status[data-state="fallback"] {
  color: var(--text-primary);
  background: var(--tint-red);
}
.source-doc-pdf-viewer__pages {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 14px;
}
.source-doc-pdf-page {
  --source-doc-pdf-page-width: 900px;
  --source-doc-pdf-page-aspect-ratio: 1 / 1.4142;

  position: relative;
  width: min(100%, var(--source-doc-pdf-page-width));
  aspect-ratio: var(--source-doc-pdf-page-aspect-ratio);
  max-width: 100%;
  overflow: hidden;
  background: var(--bg-card);
  box-shadow: 0 0 0 1px var(--border-subtle), var(--shadow-sm);
}
.source-doc-pdf-page--active {
  box-shadow: 0 0 0 2px var(--brand-blue), var(--shadow-md);
}
.source-doc-pdf-page__canvas,
.source-doc-pdf-page__text,
.source-doc-pdf-page__overlay {
  position: absolute;
  inset: 0;
}
.source-doc-pdf-page__canvas {
  width: 100%;
  height: 100%;
}
.source-doc-pdf-page__text {
  --scale-factor: 1;

  opacity: 0;
  color: transparent;
  pointer-events: none;
  user-select: text;
  /* pdf.js TextLayer positions use var(--scale-factor); viewer sets it per page. */
}
.source-doc-pdf-page__overlay {
  pointer-events: none;
}
.source-doc-pdf-highlight {
  position: absolute;
  min-width: 8px;
  min-height: 8px;
  border: 2px solid var(--brand-blue);
  background: color-mix(in srgb, var(--brand-blue) 22%, transparent);
  box-shadow: 0 0 0 1px var(--bg-card);
}
.source-doc-pdf-highlight--quote {
  border-color: var(--brand-ai);
  border-style: dashed;
  background: color-mix(in srgb, var(--brand-ai) 16%, transparent);
}
.source-doc-pdf-highlight--pinned {
  border-width: 3px;
}

.source-doc-processing-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-3);
}
.source-doc-processing-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}
.source-doc-shared-run {
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-muted);
  color: var(--text-secondary);
}
.source-doc-processing-stage {
  display: flex;
  min-height: 100%;
}
.source-doc-processing-card {
  box-sizing: border-box;
  flex: 1 1 auto;
  height: 100%;
}
.source-doc-processing-card > .source-doc-overview-section:first-child {
  margin-top: var(--space-2);
}
.source-doc-processing-note {
  margin: 0 0 14px;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.45;
}
.source-doc-processing-action-hint {
  color: var(--text-muted);
  font-size: 0.84rem;
  line-height: 1.35;
}
.source-doc-processing-technical,
.source-doc-processing-observation-outcomes,
.source-doc-processing-observation-critic {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border-subtle);
}
.source-doc-processing-technical summary,
.source-doc-processing-observation-outcomes summary,
.source-doc-processing-observation-critic summary {
  cursor: pointer;
  color: var(--text-primary);
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.3;
}
.source-doc-extracted-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.source-doc-review-main {
  display: grid;
  grid-template-columns: minmax(150px, 0.75fr) minmax(180px, 1fr);
  gap: 12px;
  min-width: 0;
}
.source-doc-review-label {
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
}
.source-doc-review-title {
  color: var(--text-primary);
  font-size: 0.94rem;
  font-weight: 700;
  line-height: 1.35;
}
.source-doc-review-observed {
  color: var(--text-primary);
  font-size: 0.94rem;
  font-weight: 600;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-review-value {
  display: grid;
  min-width: 0;
  gap: 4px;
}
.source-doc-review-detail > summary {
  width: fit-content;
  color: var(--text-link);
  cursor: pointer;
  font-size: var(--text-xs);
  line-height: 1.3;
}
.source-doc-review-detail > summary:focus-visible {
  border-radius: var(--radius-xs);
  box-shadow: var(--focus-ring);
}
.source-doc-review-detail dl {
  display: grid;
  gap: 8px;
  margin: 8px 0 0;
  padding: 10px;
  border-left: 2px solid var(--border-subtle);
  background: var(--bg-card);
}
.source-doc-review-detail dl > div {
  display: grid;
  grid-template-columns: minmax(130px, 0.35fr) minmax(0, 1fr);
  gap: 8px;
}
.source-doc-review-detail dt {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 650;
}
.source-doc-review-detail dd {
  min-width: 0;
  margin: 0;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.source-doc-review-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  grid-column: 1 / -1;
}
.source-doc-pill {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 24px;
  padding: 3px 8px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill);
  color: var(--text-secondary);
  background: var(--bg-muted);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.2;
}
.source-doc-pill--review {
  color: var(--brand-blue);
  background: color-mix(in srgb, var(--brand-blue) 12%, transparent);
  border-color: color-mix(in srgb, var(--brand-blue) 28%, var(--border-subtle));
}
.source-doc-pill--confidence {
  color: var(--text-primary);
  background: var(--bg-card);
}
.source-doc-pill--danger {
  color: var(--text-primary);
  background: var(--tint-red);
  border-color: color-mix(in srgb, var(--brand-red) 35%, var(--border-subtle));
}
.source-doc-review-evidence {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.source-doc-evidence {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.source-doc-evidence-page {
  color: var(--brand-blue);
  font-size: 0.82rem;
  font-weight: 700;
}
.source-doc-evidence-page--muted,
.source-doc-evidence-empty,
.source-doc-review-empty,
.source-doc-review-rationale {
  color: var(--text-muted);
}
.source-doc-evidence-quote {
  display: -webkit-box;
  max-width: 100%;
  margin: 0;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  color: var(--text-primary);
  font-size: 0.88rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.source-doc-evidence-empty {
  font-size: 0.86rem;
}
.source-doc-review-rationale {
  font-size: 0.82rem;
  line-height: 1.35;
}
.source-doc-conflict-note {
  padding: 8px 10px;
  border-left: 3px solid var(--brand-red);
  color: var(--text-primary);
  background: var(--tint-red);
  font-size: 0.84rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-review-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  grid-column: 1 / -1;
}
.source-doc-review-empty {
  font-size: 0.84rem;
}
.source-doc-review-part {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.3;
}
.source-doc-review-conflict-values {
  display: grid;
  gap: 10px;
}
.source-doc-review-conflict-value {
  min-width: 0;
}
.source-doc-review-conflict-meta,
.source-doc-review-conflict-quote,
.source-doc-review-quote,
.source-doc-review-normalized {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.8rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.source-doc-summary-blockers {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.source-doc-summary-blockers li {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill, 999px);
  background: var(--bg-card);
  color: var(--text-primary);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.2;
  padding: 6px 10px;
}
.source-doc-summary-decisions,
.source-doc-summary-found {
  display: grid;
  gap: 10px;
  margin-top: 18px;
}
.source-doc-summary-decision {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
}
.source-doc-summary-decision__field,
.source-doc-summary-found__list {
  color: var(--text-primary);
  font-weight: 600;
}
.source-doc-summary-decision__values,
.source-doc-summary-decision__ask,
.source-doc-summary-found__list {
  color: var(--text-secondary);
  font-size: 0.86rem;
  line-height: 1.4;
}
.source-doc-summary-found__list {
  margin: 0;
  padding-left: 1.1rem;
  font-weight: 400;
}
.source-doc-review-filters {
  display: grid;
  gap: 8px;
  margin: 4px 0 12px;
}
.source-doc-review-filter-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
}
.source-doc-review-filters > p {
  margin: 0;
}
.source-doc-review-filter {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill, 999px);
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.2;
  padding: 6px 10px;
}
.source-doc-review-filter.is-active {
  border-color: var(--brand-blue);
  color: var(--text-primary);
  background: color-mix(in srgb, var(--brand-blue) 10%, var(--bg-card));
}
.source-doc-scoped-facts,
.source-doc-consistency-findings {
  display: grid;
  gap: 10px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border-subtle);
}
.source-doc-scope-card,
.source-doc-finding-card {
  display: grid;
  gap: 6px;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-muted);
}
.source-doc-scope-card--review {
  border-color: color-mix(in srgb, var(--brand-amber) 32%, var(--border-subtle));
  background: var(--tint-amber);
}
.source-doc-scope-card__field,
.source-doc-finding-card__type {
  color: var(--text-primary);
  font-size: 0.92rem;
  font-weight: 750;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.source-doc-scope-card__meta,
.source-doc-finding-card__severity {
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.3;
}
.source-doc-scope-card__rationale,
.source-doc-scope-card__fields,
.source-doc-finding-card__values,
.source-doc-finding-card__parts,
.source-doc-finding-card__evidence,
.source-doc-finding-card__decision {
  color: var(--text-secondary);
  font-size: 0.84rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.source-doc-finding-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 2px;
}
.source-doc-authority-review {
  display: grid;
  gap: 12px;
}
.source-doc-interpretation-review,
.source-doc-interpretation-review-card {
  display: grid;
  gap: 12px;
}
.source-doc-interpretation-card {
  display: grid;
  gap: var(--space-2);
  min-width: 0;
  padding: var(--space-2) 0;
  border: 0;
  border-bottom: 1px solid var(--border-subtle);
}
.source-doc-interpretation-edit {
  display: grid;
  gap: 6px;
  color: var(--text-secondary);
  font-size: 0.84rem;
}
.source-doc-interpretation-error {
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.source-doc-interpretation-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.source-doc-authority-card {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-2) 0;
  border: 0;
  border-bottom: 1px solid var(--border-subtle);
}
.source-doc-authority-card__topline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.source-doc-authority-card__title {
  color: var(--text-primary);
  font-size: 0.95rem;
  font-weight: 700;
}
.source-doc-authority-card__claim,
.source-doc-authority-evidence {
  color: var(--text-secondary);
  font-size: 0.84rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.source-doc-authority-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.source-doc-authority-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px;
}
.source-doc-authority-grid div {
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--surface-muted);
}
.source-doc-authority-grid span {
  display: block;
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
}
.source-doc-authority-grid strong {
  display: block;
  margin-top: 3px;
  color: var(--text-primary);
  font-size: 0.84rem;
  font-weight: 700;
  overflow-wrap: anywhere;
}
@media (max-width: 1100px) {
  .source-doc-review-item,
  .source-doc-review-main {
    grid-template-columns: 1fr;
  }
  .source-doc-review-actions {
    justify-content: flex-start;
  }
}
@container forge-page (max-width: 1050px) {
  .source-doc-overview-row {
    grid-template-columns: minmax(120px, 28%) minmax(0, 1fr) auto;
    gap: 12px;
  }
}
@media (max-width: 640px) {
  .source-doc-overview-row {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 12px;
  }
  .source-doc-overview-row__label {
    grid-column: 1 / -1;
  }
  .source-doc-overview-row__copy {
    grid-column: 1;
  }
  .source-doc-overview-row__action {
    grid-column: 2;
    grid-row: 2;
  }
}

/* Product Requirements stage — obligation fulfillment workbench. */
.forge-requirements-workbenches {
  display: grid;
  gap: 6px;
  margin: 2px 0 18px;
}

.forge-requirements-accounting-summary {
  margin: 8px 0 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.forge-requirements-context-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: 0.82rem;
}

.forge-requirements-context-row span {
  white-space: nowrap;
}

.forge-requirements-context-row strong {
  color: var(--text-primary);
  font-weight: 750;
}

.forge-requirements-section {
  display: grid;
  gap: 10px;
  margin-top: 24px;
}

.forge-requirements-section-toggle {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 6px;
  align-items: start;
  cursor: pointer;
}

.forge-requirements-section-toggle:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 3px;
  border-radius: 6px;
}

.forge-requirements-section-chevron {
  color: var(--text-muted);
  font-size: 20px;
  line-height: 1;
  margin-top: 2px;
}

.forge-requirements-section .forge-section-header {
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border-subtle);
}

.forge-requirements-alias strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.95rem;
  line-height: 1.25;
}

.forge-requirements-list {
  display: grid;
  gap: 8px;
}

.forge-requirements-native-surface {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.forge-requirements-native-surface .forge-requirements-actions {
  min-width: 0;
  display: flex;
}

.forge-requirements-native-surface .forge-requirements-actions {
  flex-wrap: wrap;
}

.forge-requirements-row {
  display: grid;
  gap: 10px;
  padding: 16px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-soft);
}

.forge-requirements-row-main {
  display: grid;
  grid-template-columns: minmax(180px, 240px) minmax(0, 1fr) minmax(132px, max-content);
  gap: 18px;
  align-items: start;
}

.forge-requirements-rationale {
  color: var(--text-primary);
  font-size: 0.84rem;
  line-height: 1.4;
}

.forge-requirements-rationale-note {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.35;
}

/* Requirements and Data share the same requirement-led review table geometry. */
.forge-product-review-decision,
.forge-product-review-rationale,
.forge-product-review-source,
.forge-product-review-meta {
  min-width: 0;
  line-height: 1.4;
}
.forge-product-review-decision { color: var(--text-primary); font-size: 0.82rem; }
.forge-product-review-decision > strong { font-weight: 650; }
.forge-product-review-rationale,
.forge-product-review-source,
.forge-product-review-meta {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.74rem;
}
.forge-product-review-source > strong { color: var(--text-secondary); font-weight: 600; }
.forge-product-review-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; }
.forge-product-review-meta .forge-work-surface-pill { margin: 0; }

.forge-requirements-filters {
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin: 10px 0 14px;
  min-width: 0;
}

.forge-requirements-decision-support {
  display: grid;
  gap: 10px 20px;
  grid-template-columns: repeat(2, minmax(180px, 1fr));
  margin-top: 0;
  color: var(--text-secondary);
  font-size: 0.83rem;
  line-height: 1.45;
}

.forge-requirements-decision-line {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.forge-requirements-decision-line--wide {
  grid-column: 1 / -1;
}

.forge-requirements-decision-line strong,
.forge-requirements-history-summary strong,
.forge-requirements-decision-support > div > strong {
  display: block;
  margin-bottom: 2px;
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0;
}

.forge-requirements-decision-line span {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--text-primary);
}

.forge-requirements-target-bindings {
  display: grid;
  gap: 5px;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}

.forge-requirements-target-bindings li {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  align-items: center;
  min-width: 0;
}

.forge-requirements-target-label {
  color: var(--text-primary);
  font-weight: 650;
}

.forge-requirements-target-ref,
.forge-requirements-target-role {
  color: var(--text-muted);
  font-size: 0.74rem;
}

.forge-requirements-target-role {
  padding: 1px 6px;
  border: 1px solid var(--border-subtle);
  border-radius: 4px;
  background: var(--bg-subtle);
}

.forge-requirements-stale {
  margin-top: 6px;
}

.forge-requirements-confidence {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.forge-requirements-pill {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 2px 7px;
  border: 1px solid var(--border-subtle);
  border-radius: 4px;
  color: var(--text-secondary);
  background: var(--bg-subtle);
}

.forge-requirements-uncertainties,
.forge-requirements-certainty {
  display: grid;
  gap: 3px;
  margin: 0;
  padding-left: 16px;
  color: var(--text-secondary);
}

.forge-requirements-history-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.35;
}

.forge-requirements-decision-warning {
  max-width: 280px;
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.3;
  text-align: right;
}

.forge-requirements-tags,
.forge-requirements-review {
  min-width: 0;
}

.forge-requirements-tags,
.forge-requirements-actions,
.forge-requirements-attestation-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}

.forge-requirements-actions {
  justify-content: flex-end;
  min-width: 142px;
}

.forge-requirements-actions--locked {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  justify-content: end;
}

.forge-requirements-actions--locked .forge-btn {
  opacity: 0.52;
  cursor: not-allowed;
}

.forge-requirements-lock-hint {
  grid-column: 1 / -1;
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.3;
  text-align: right;
}

.forge-requirements-review-state {
  display: inline-flex;
  align-items: center;
}

.forge-requirements-assignee,
.forge-requirements-blocks-sign {
  display: grid;
  gap: 4px;
  justify-items: start;
  min-width: 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
}

.forge-requirements-assignee strong {
  color: var(--text-primary);
  font-size: 0.84rem;
  font-weight: 700;
}

.forge-requirements-detail {
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.45;
}

.forge-requirements-detail summary {
  cursor: pointer;
  color: var(--text-muted);
  font-weight: 650;
}

.forge-requirements-detail[open] {
  padding-top: 8px;
  border-top: 1px solid var(--border-subtle);
}

.forge-requirements-source-citations {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-left: 4px;
}

.forge-requirements-source-citations span {
  padding: 2px 6px;
  border: 1px solid var(--border-subtle);
  border-radius: 4px;
  color: var(--text-muted);
  background: var(--bg-subtle);
}

.forge-requirements-document-impact {
  display: grid;
  gap: 6px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border-subtle);
}

.forge-requirements-document-impact-row {
  display: grid;
  gap: 2px;
}

.forge-requirements-document-impact-row strong {
  color: var(--text-primary);
}

.forge-requirements-document-impact-row span {
  color: var(--text-muted);
}

.forge-requirements-empty {
  padding: 16px 0;
  color: var(--text-muted);
  font-size: 0.86rem;
}

.forge-requirements-validation {
  display: grid;
  gap: 10px;
  margin: 0 0 14px;
}

.forge-requirements-validation-panel {
  display: grid;
  gap: 8px;
}

.forge-requirements-validation-findings {
  display: grid;
  gap: 4px;
  margin: 0;
  padding-left: 18px;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.4;
}

.forge-error-details {
  margin-top: 8px;
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.45;
}

.forge-error-details summary {
  cursor: pointer;
  color: var(--text-muted);
  font-weight: 650;
}

.forge-error-details code {
  display: block;
  margin-top: 6px;
  padding: 8px;
  overflow-wrap: anywhere;
  border: 1px solid var(--border-subtle);
  border-radius: 4px;
  background: var(--bg-subtle);
  color: var(--text-primary);
  font-size: 0.76rem;
}

@media (max-width: 900px) {
  .forge-requirements-table-header {
    display: none;
  }

  .forge-requirements-row-main {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .forge-requirements-actions {
    justify-content: flex-start;
  }

  .forge-requirements-actions--locked {
    justify-content: start;
  }

  .forge-requirements-decision-support {
    grid-template-columns: 1fr;
  }

  .forge-requirements-decision-warning {
    max-width: none;
    text-align: left;
  }

  .forge-requirements-lock-hint {
    text-align: left;
  }

}

.scope-decision-brief {
  margin-top: 12px;
  color: var(--text-primary);
}

.scope-decision-review {
  margin-top: 12px;
  color: var(--text-primary);
}

.scope-decision-review__authority {
  margin-bottom: 4px;
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 700;
}

.scope-decision-review__basis,
.scope-decision-review__body,
.scope-decision-review__human-decision {
  margin: 0 0 6px;
  color: var(--text-secondary);
  font-size: 0.86rem;
  line-height: 1.45;
}

.scope-decision-review__summary {
  display: grid;
  gap: 0 18px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  margin: 10px 0 12px;
}

.scope-decision-review__summary-item {
  border-top: 1px solid var(--border);
  padding: 8px 0;
}

.scope-decision-review__summary-label {
  margin: 0 0 4px;
  color: var(--text-primary);
  font-size: 0.78rem;
  font-weight: 800;
}

.scope-decision-review__summary-item p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.84rem;
  line-height: 1.4;
}

.scope-decision-brief__heading {
  margin: 0 0 8px;
  font-size: 0.86rem;
  font-weight: 800;
}

.scope-decision-brief__lead,
.scope-decision-brief__body {
  margin: 0 0 8px;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.55;
}

.scope-decision-brief__lead {
  color: var(--text-primary);
  font-weight: 650;
}

.scope-source-chip {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  margin-left: 4px;
  padding: 1px 7px;
  border: 1px solid var(--border-subtle);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--text-secondary);
  font-size: 0.74rem;
  font-weight: 650;
  vertical-align: baseline;
}

.scope-decision-brief__section {
  margin-top: 8px;
  color: var(--text-secondary);
  font-size: 0.84rem;
}

.scope-decision-brief__section summary {
  cursor: pointer;
  color: var(--text-primary);
  font-weight: 750;
}

.scope-decision-brief__list {
  margin: 6px 0 0 18px;
  padding: 0;
  line-height: 1.5;
}

.scope-decision-brief__list li {
  margin: 6px 0;
}

.scope-decision-brief__trace {
  display: grid;
  grid-template-columns: minmax(120px, max-content) 1fr;
  gap: 4px 12px;
  margin: 8px 0 0;
}

.scope-decision-brief__trace dt {
  color: var(--text-muted);
  font-weight: 700;
}

.scope-decision-brief__trace dd {
  margin: 0;
}

@media (max-width: 900px) {
  .forge-requirements-context-row {
    align-items: flex-start;
  }
}
.forge-gap-qa-thinking {
  font-size: 0.78rem;
  color: var(--text-muted);
  padding: 6px 0;
}
.forge-gap-qa-suggestion {
  border-color: var(--border-subtle);
  color: var(--text-secondary);
  font-size: 0.72rem;
}
.supplier-picker {
  font-size: 0.74rem;
  max-width: 180px;
}
.forge-voluntary-disclosure-header {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  font-weight: 600;
}
.forge-voluntary-disclosure-label {
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--text-primary);
}
.forge-voluntary-disclosure-value {
  font-size: 0.85rem;
  color: var(--text-secondary);
  white-space: pre-wrap;
}
.forge-voluntary-disclosure-empty {
  font-size: 0.8rem;
  color: var(--text-muted);
  font-style: italic;
}
.forge-voluntary-disclosure-quote {
  font-size: 0.78rem;
  color: var(--text-muted);
  font-style: italic;
  margin-top: 2px;
}
.forge-voluntary-disclosure-section {
  gap: 6px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--border-subtle);
}
.forge-source-stale-banner {
  background: var(--tint-amber-hover);
  border: 1px solid var(--brand-amber-bright);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 0.82rem;
  line-height: 1.5;
  color: var(--brand-amber-text);
  margin-bottom: 8px;
}
.forge-source-stale-banner strong {
  font-weight: 700;
}
.forge-source-stale-banner__detail {
  margin-top: 4px;
}
.forge-observed-panel-intro {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin: 0 0 8px;
}
.forge-observed-panel-review-link {
  font-size: 0.8rem;
  margin: 8px 0 0;
}
.forge-field-chip-sm {
  font-size: 0.72rem;
}
.forge-field-banner-icon {
  font-size: 18px;
}
.forge-field-banner-icon--amber {
  color: var(--text-primary);
}
.forge-field-banner-icon--muted {
  color: var(--text-muted);
  user-select: none;
}
.forge-field-activity-row {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  padding: 5px 0;
  font-size: 0.78rem;
  border-bottom: 1px solid var(--border-subtle);
}
.forge-field-activity-icon {
  flex-shrink: 0;
  font-size: 1rem;
  color: var(--text-muted);
}
.forge-fields-export-link {
  color: var(--text-secondary);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 0.78rem;
}
.forge-fields-diff-empty {
  font-size: 0.82rem;
  color: var(--text-muted);
}
.forge-fields-diff-summary {
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.forge-fields-diff-row {
  font-size: 0.78rem;
  color: var(--text-primary);
}
.forge-fields-diff-more {
  font-size: 0.75rem;
  color: var(--text-muted);
}
.forge-fields-empty-filter {
  padding: 32px 0;
  text-align: center;
  color: var(--text-muted);
  font-size: 0.85rem;
}
.forge-harmonized-warning-icon {
  font-size: 1rem;
  color: var(--text-primary);
  vertical-align: middle;
}

/* Plan 2547 â€” Activity, Scope rationale, Settings export cards */
.forge-applicability-label {
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}
.forge-applicability-meta {
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.forge-applicability-rationale-list {
  margin: 0;
  padding-left: 18px;
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.forge-applicability-snippet {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin-top: 6px;
  padding: 8px 10px;
  border-radius: 6px;
  background: var(--bg-soft);
}
.forge-applicability-footnote {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 2px;
}
.forge-stub-banner {
  margin-top: 8px;
  flex-direction: column;
  gap: 8px;
}
.forge-stub-banner__row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.forge-stub-banner__icon { color: var(--text-muted); }
.forge-stub-banner__title {
  font-weight: 700;
  color: var(--text-primary);
}
.forge-stub-banner__body {
  color: var(--text-secondary);
  line-height: 1.45;
}
.forge-stub-banner__link {
  font-size: 0.82rem;
  color: var(--brand-blue);
  text-decoration: none;
  font-weight: 600;
}
.forge-scope-banner__actions {
  margin-top: 8px;
}
.forge-scope-regulation-eyebrow {
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--text-muted);
}
.forge-scope-regulation-title {
  font-size: 1rem;
  font-weight: 750;
  color: var(--text-primary);
}
.forge-scope-regulation-meta {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 0.82rem;
  color: var(--text-secondary);
}
.forge-scope-detail-section-title {
  color: var(--text-primary);
  font-size: 0.9rem;
  font-weight: 760;
}
.forge-scope-regulation-status {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-secondary);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.2;
  padding: 4px 8px;
  white-space: nowrap;
}
.forge-scope-regulation-status--applied {
  border-color: color-mix(in srgb, var(--brand-green) 36%, var(--border));
  color: var(--brand-green);
}
.forge-scope-regulation-status--review {
  border-color: color-mix(in srgb, var(--brand-amber) 48%, var(--border));
  color: var(--text-primary);
}
.forge-scope-regulation-status--history,
.forge-scope-regulation-status--deferred {
  color: var(--text-muted);
}
.forge-scope-regulation-heading { flex-wrap: wrap; }
.forge-scope-regulation-topline { flex-wrap: wrap; }
.forge-scope-regulation-topline > .q-column { flex: 1 1 420px; min-width: 0; }
.forge-scope-regulation-topline > .q-row.scope-row-rhs-actions { flex: 0 1 auto; }
.forge-scope-regulation-detail {
  min-width: 0;
  width: 100%;
  gap: 12px;
}
.forge-scope-stage-tabs {
  box-sizing: border-box;
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-secondary);
  padding: 0;
}
.forge-scope-stage-tabs .q-tabs__content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  width: 100%;
  align-items: stretch;
  gap: 0;
  overflow: visible;
}
.forge-scope-stage-tabs .q-tab {
  box-sizing: border-box;
  position: relative;
  width: 100%;
  max-width: none;
  flex: none;
  min-width: 0;
  min-height: 72px;
  padding: 12px;
  border: 0;
  border-radius: 0;
  background: var(--surface-secondary);
  color: var(--text-primary);
  text-align: left;
  transition: background-color 160ms ease, border-color 160ms ease;
}
.forge-scope-stage-tabs .q-tab:first-child { border-right: 1px solid var(--border); }
.forge-scope-stage-tabs .q-tab__content {
  position: absolute;
  top: 14px;
  right: 10px;
  left: 46px;
  display: flex;
  min-width: 0;
  align-items: flex-start;
  justify-content: flex-start;
  text-align: left;
}
.forge-scope-stage-tabs .q-tab__label {
  overflow: hidden;
  color: inherit;
  font-size: var(--text-sm);
  font-weight: 650;
  letter-spacing: normal;
  line-height: 1.25;
  text-overflow: ellipsis;
  text-transform: none;
  white-space: nowrap;
}
.forge-scope-stage-tabs .q-tab::before {
  position: absolute;
  top: 14px;
  left: 14px;
  display: grid;
  width: 20px;
  height: 20px;
  place-items: center;
  border: 1px solid var(--border-strong);
  border-radius: 50%;
  background: var(--surface-primary);
  color: var(--text-secondary);
  content: "1";
  font-size: var(--text-xs);
  font-weight: 700;
  line-height: 1;
}
.forge-scope-stage-tabs .q-tab:nth-child(2)::before { content: "2"; }
.forge-scope-stage-tabs .q-tab::after {
  position: absolute;
  right: 10px;
  bottom: 11px;
  left: 46px;
  overflow: hidden;
  color: var(--text-secondary);
  content: attr(data-stage-detail);
  font-size: var(--text-xs);
  font-weight: 450;
  letter-spacing: normal;
  line-height: 1.2;
  text-align: left;
  text-overflow: ellipsis;
  text-transform: none;
  white-space: nowrap;
}
.forge-scope-stage-tabs .q-tab--active {
  background: var(--surface-primary);
  box-shadow: inset 0 -3px var(--brand-blue);
  color: var(--brand-blue);
}
.forge-scope-stage-tabs .q-tab--active .q-tab__label {
  color: var(--brand-blue);
  font-weight: 750;
}
.forge-scope-stage-tabs .q-tab--active::before {
  border-color: var(--brand-blue);
  background: var(--brand-blue);
  color: var(--surface-primary);
}
.forge-scope-stage-tabs .q-tab--active::after {
  color: var(--text-primary);
  font-weight: 600;
}
.forge-scope-stage-tabs[data-applicability-complete="true"] .q-tab:first-child:not(.q-tab--active) {
  background: color-mix(in srgb, var(--brand-green) 7%, var(--surface-primary));
}
.forge-scope-stage-tabs[data-applicability-complete="true"] .q-tab:first-child::before {
  border-color: var(--brand-green);
  background: var(--brand-green);
  color: var(--surface-primary);
}
.forge-scope-stage-tabs[data-applicability-complete="true"] .q-tab:first-child.q-tab--active {
  background: color-mix(in srgb, var(--brand-blue) 7%, var(--surface-primary));
}
.forge-scope-stage-tabs .q-tab--disabled {
  cursor: not-allowed;
  background: var(--surface-secondary);
  color: var(--text-muted);
}
.forge-scope-stage-tabs .q-tab--disabled .q-tab__label,
.forge-scope-stage-tabs .q-tab--disabled::after { color: var(--text-muted); }
.forge-scope-stage-tabs .q-tab--disabled::before {
  border-color: var(--border);
  background: var(--surface-secondary);
  color: var(--text-muted);
}
.forge-scope-stage-tabs .q-tab__indicator { display: none; }
.forge-scope-stage-tabs .q-tab:focus-visible {
  position: relative;
  z-index: 1;
  border-radius: 0;
  box-shadow: inset 0 0 0 2px var(--brand-blue);
}
@media (max-width: 540px) {
  .forge-scope-stage-tabs .q-tab {
    min-height: 76px;
    padding-right: 8px;
    padding-left: 8px;
  }
  .forge-scope-stage-tabs .q-tab__content { right: 6px; left: 38px; }
  .forge-scope-stage-tabs .q-tab::before { left: 10px; }
  .forge-scope-stage-tabs .q-tab::after { right: 6px; left: 38px; }
}
.forge-scope-review-panels {
  background: transparent;
}
.forge-scope-step-lock-hint {
  color: var(--text-secondary);
  font-size: var(--text-sm);
  margin-top: -6px;
}
.forge-scope-obligations.forge-scope-obligation-step {
  background: transparent;
  border: 0;
  border-radius: 0;
  overflow: visible;
  padding: 0;
}
.forge-scope-review-panel {
  padding: 12px 0 0;
}
.forge-scope-regulation-card,
.forge-scope-obligations {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.forge-scope-regulation-card {
  gap: 16px;
  padding: 20px;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.forge-scope-obligations {
  background: var(--bg-soft);
}
.forge-scope-obligations-toolbar {
  padding-bottom: 10px;
}
.forge-scope-obligation-empty {
  color: var(--text-secondary);
  margin: 0;
}
.scope-decision-review__evidence,
.scope-review-card__evidence {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 10px 12px;
}
.scope-decision-review__evidence > summary,
.scope-review-card__evidence > summary {
  color: var(--text-primary);
  cursor: pointer;
  font-weight: 650;
}
.scope-decision-review__evidence[open],
.scope-review-card__evidence[open] {
  display: grid;
  gap: 10px;
}
.scope-row-rhs-actions {
  flex: 0 0 auto;
  min-width: max-content;
}
.scope-review-card {
  width: 100%;
  margin-top: var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.scope-review-card > summary {
  list-style: none;
  cursor: pointer;
  display: grid;
  grid-template-columns: minmax(0, 1fr) max-content;
  gap: var(--space-3);
  align-items: start;
  padding: 12px 14px;
}
.scope-review-card > summary::-webkit-details-marker {
  display: none;
}
.scope-review-card[open] > summary {
  border-bottom: 1px solid var(--border);
}
.scope-review-card__main {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.scope-review-card__title {
  color: var(--text-primary);
  font-size: 0.96rem;
  font-weight: 760;
}
.scope-review-card__line {
  color: var(--text-secondary);
  font-size: 0.86rem;
  line-height: 1.42;
  max-width: 78ch;
}
.scope-review-card__meta {
  color: var(--text-muted);
  font-size: 0.8rem;
  line-height: 1.35;
}
.scope-review-card__status {
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-secondary);
  font-size: 0.76rem;
  font-weight: 750;
  line-height: 1;
  padding: 6px 9px;
  white-space: nowrap;
}
.scope-review-card__detail {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 18px;
  padding: 12px 14px 14px;
}
.scope-review-card__detail section {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.scope-review-card__detail h4 {
  color: var(--text-primary);
  font-size: 0.8rem;
  font-weight: 800;
  margin: 0;
}
.scope-review-card__detail p,
.scope-review-card__detail ul {
  color: var(--text-secondary);
  font-size: 0.84rem;
  line-height: 1.45;
  margin: 0;
}
.scope-review-card__detail ul {
  padding-left: 18px;
}
.scope-review-card__uncertainty {
  display: grid;
  gap: 8px;
}
.scope-review-card__issue-group {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.scope-review-card__investigation-details {
  border-top: 1px solid var(--border-subtle);
  padding-top: 10px;
}
.scope-review-card__investigation-details > summary {
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 0.82rem;
  font-weight: 700;
}
.scope-review-card__investigation-details[open] > summary { margin-bottom: 10px; }
.forge-stage-header-actions-live,
.scope-obligation-row__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  min-width: 0;
}
.forge-stage-header-actions-live {
  flex: 0 0 auto;
  gap: var(--space-2);
}
.forge-declare-stage-header-row {
  margin-bottom: var(--space-2);
}
.scope-obligation-row__actions {
  flex: 0 0 auto;
  max-width: 100%;
}
.forge-scope-obligations-heading {
  margin-top: 0;
  font-size: 0.82rem;
  font-weight: 800;
  color: var(--text-primary);
}
.forge-scope-obligation-decision-panel {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.forge-scope-obligations-toolbar {
  margin-top: 14px;
}
.forge-scope-obligation-decision-body {
  display: grid;
  gap: 8px;
}
.forge-scope-obligation-decision-row {
  margin-top: 0;
}
.forge-scope-obligation-decision-main {
  min-width: 0;
}
.forge-scope-obligation-decision-main p {
  color: var(--text-secondary);
  margin: 4px 0 0;
  max-width: 72ch;
}
.forge-scope-obligation-decision-state {
  color: var(--text-secondary);
  font-weight: 700;
  white-space: nowrap;
}
.forge-scope-obligation-decision-actions {
  margin-top: 8px;
  gap: 6px;
}
.forge-scope-obligation-decision-actions__label {
  color: var(--text-secondary);
  font-size: 0.8rem;
  font-weight: 700;
}
.forge-scope-obligation-row-decision {
  align-items: flex-end;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 124px;
}
.forge-dialog-surface {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: min(420px, calc(100vw - 32px));
  padding: 16px;
}
.forge-reporting-generate-action {
  white-space: nowrap;
}
@media (max-width: 720px) {
  .forge-scope-regulation-heading { align-items: flex-start; }
  .forge-scope-regulation-detail > .q-row { flex-wrap: wrap; }
  .scope-review-card > summary,
  .scope-review-card__detail {
    grid-template-columns: minmax(0, 1fr);
  }
  .scope-review-card__status {
    justify-self: start;
  }
  .scope-row-rhs-actions {
    flex-wrap: wrap;
    justify-content: flex-start;
    min-width: 0;
  }
}

.scope-investigation-stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-top: var(--space-3);
}
.scope-investigation-stack__header {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.scope-investigation-stack__eyebrow {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.scope-investigation-stack__title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-primary);
}
.scope-investigation-stack__meta,
.scope-investigation-stack__authority {
  font-size: 0.82rem;
  color: var(--text-secondary);
  line-height: 1.45;
}
.scope-investigation-panel {
  padding: var(--space-3);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-raised);
}
.scope-investigation-panel__title {
  margin: 0 0 var(--space-2);
  font-size: 0.82rem;
  font-weight: 800;
  color: var(--text-primary);
}
.scope-investigation-panel__lead,
.scope-investigation-panel__status,
.scope-investigation-panel__meta {
  margin: 0 0 var(--space-2);
  font-size: 0.82rem;
  color: var(--text-secondary);
  line-height: 1.45;
}
.scope-investigation-panel__list {
  margin: 0;
  padding-left: 1.1rem;
  font-size: 0.82rem;
  color: var(--text-secondary);
}
.scope-investigation-criteria {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}
.scope-investigation-trace {
  margin: var(--space-2) 0 var(--space-3);
  font-size: 0.82rem;
  color: var(--text-secondary);
}
.scope-investigation-trace__heading {
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: var(--space-1);
}

/* Plan 2716 â€” product-stage UI contract drain */
.forge-expand-icon {
  font-size: 16px;
  color: var(--text-muted);
}
.forge-banner-detail {
  margin-top: 4px;
  font-size: 0.82rem;
}
.forge-presign-readiness {
  margin-bottom: 12px;
}
.forge-presign-heading {
  font-size: 0.82rem;
  font-weight: 700;
  margin-bottom: 6px;
}
.forge-ps-hint {
  font-size: 0.82rem;
  color: var(--text-secondary);
  margin-top: 4px;
}
.forge-ps-hint--muted {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 6px;
}

.forge-draft-drawer-backdrop[hidden],
.forge-draft-drawer[hidden] {
  display: none !important;
}
.forge-draft-drawer-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1600;
  background: var(--overlay-scrim);
}
.forge-draft-drawer-open {
  overflow: hidden;
}
.forge-draft-drawer {
  position: fixed;
  inset-block: var(--space-1);
  inset-inline-end: var(--space-1);
  z-index: 1601;
  display: none;
  flex-direction: column;
  width: var(--layout-draft-preview-drawer-width);
  min-width: 0;
  border-inline-start: 1px solid var(--border-subtle);
  background: var(--bg-card);
  box-shadow: var(--shadow-xl);
}
.forge-draft-drawer--open {
  display: flex;
}
.forge-draft-drawer__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
}
.forge-draft-drawer__heading {
  display: grid;
  gap: var(--space-1);
  min-width: 0;
}
.forge-draft-drawer__subtitle {
  overflow-wrap: anywhere;
}
.forge-draft-drawer__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: var(--space-3);
  min-height: 0;
  overflow: auto;
  padding: var(--space-4);
}
.forge-draft-drawer__preview-frame {
  display: block;
  flex: 1 1 auto;
  width: 100%;
  min-height: var(--layout-document-preview-height);
  border: none;
  background: var(--bg-page);
}
.forge-draft-drawer__fallback {
  padding: var(--space-3);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--tint-amber);
}
.forge-draft-drawer__download-link {
  color: var(--brand-blue);
}
.forge-draft-drawer__footer {
  flex: 0 0 auto;
  border-top: 1px solid var(--border-subtle);
  padding: var(--space-3) var(--space-4);
}
.forge-ps-review-cols {
  display: flex;
  gap: 12px;
  padding: 10px 0 6px;
  border-bottom: 1px solid var(--border-cool);
  margin-top: 6px;
}
.forge-ps-review-col {
  font-size: 0.68rem;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.forge-ps-review-col--field {
  width: 230px;
  flex: none;
}
.forge-ps-review-col--data {
  width: 80px;
  flex: none;
}
.forge-ps-review-col--review {
  width: 100px;
  flex: none;
}
.forge-ps-review-col--value {
  flex: auto;
}
.forge-ps-field-name {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--text-primary);
}
.forge-ps-field-sub {
  font-size: 0.68rem;
  color: var(--text-muted);
  margin-top: 1px;
}
.forge-ps-field-value {
  font-size: 0.85rem;
  color: var(--text-primary);
  word-break: break-word;
}
.forge-ps-validation {
  font-size: 0.76rem;
  font-weight: 700;
  margin-top: 2px;
}

.forge-ps-draft-fallback {
  padding: 10px 20px;
  font-size: 0.78rem;
}
.forge-ps-stale-banner {
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 0.82rem;
  line-height: 1.5;
  background: var(--tint-amber);
  border: 1px solid var(--brand-amber);
  color: var(--brand-amber-text);
}
.forge-ps-stale-banner__summary { margin-block-start: var(--space-1); }
.forge-ps-stale-banner__action { margin-block-start: var(--space-2); }
.forge-ps-stale-regen {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 4px 10px;
  border: 1px solid var(--brand-amber);
  border-radius: var(--radius-sm, 4px);
  color: var(--brand-amber-text);
  background: var(--surface-primary);
  font-weight: 700;
  text-decoration: none;
}
.forge-ps-stale-regen--warning:hover {
  background: var(--tint-amber-hover);
}

.forge-ps-card {
  margin-top: 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  padding: 10px 12px;
  background: var(--bg-subtle);
}
.forge-ps-card--qa {
  gap: 8px;
}
.forge-ps-kicker {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.forge-ps-source {
  font-size: 0.75rem;
  color: var(--text-secondary);
}
.forge-ps-snippet {
  font-size: 0.78rem;
  color: var(--text-primary);
  font-style: italic;
  margin-top: 4px;
  line-height: 1.4;
}
.forge-ps-confidence {
  font-size: 0.72rem;
  color: var(--text-muted);
  margin-top: 4px;
}
.forge-ps-empty {
  font-size: 0.78rem;
  color: var(--text-muted);
}

.forge-ps-suggestion-card {
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 8px;
}
.forge-work-surface-empty--compact {
  margin: 0;
}
.forge-ps-col-info {
  cursor: help;
  font-size: 0.85em;
  color: var(--text-muted);
}
.forge-ps-annex-empty {
  padding: var(--space-3) var(--space-4);
  color: var(--text-secondary);
}
.forge-ps-annex-empty-card {
  padding: var(--space-4);
}
.forge-ps-annex-tree {
  overflow: hidden;
}
.forge-ps-annex-row__summary {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  cursor: pointer;
  list-style: none;
}
.forge-ps-annex-row {
  border-top: 1px solid var(--border);
}
.forge-ps-annex-row__content {
  background: var(--tint-slate);
}
.forge-ps-annex-row__key {
  min-width: var(--space-4);
}
.forge-ps-annex-row__label {
  flex: 1;
  min-width: 0;
}
.forge-ps-annex-entry {
  padding: var(--space-3) var(--space-4);
  border-top: 1px dashed var(--border-cool);
  display: grid;
  grid-template-columns: 2fr 1.5fr 1.5fr 1fr 0.8fr;
  gap: var(--space-2);
  align-items: start;
}
.forge-ps-annex-label {
  color: var(--text-muted);
  display: block;
}
.forge-ps-annex-ref {
  color: var(--text-primary);
}
.forge-ps-annex-badge {
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-pill);
}
.forge-ps-annex-badge--complete {
  color: var(--tint-green-fg);
  background: var(--tint-green);
}
.forge-ps-annex-badge--pending {
  color: var(--text-muted);
  background: var(--tint-slate);
}
.forge-ps-annex-intro {
  padding: var(--space-3) var(--space-4);
  background: var(--tint-slate);
  border-bottom: 1px solid var(--border);
}
.forge-ps-th {
  padding: 8px 14px;
  text-align: left;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-secondary);
  background: var(--tint-slate);
  border-bottom: 1px solid var(--border);
}
.forge-ps-td {
  padding: 8px 14px;
  font-size: 0.84rem;
  color: var(--text-primary);
  border-bottom: 1px solid var(--border);
}

.forge-ps-ai-pill {
  font-size: 0.72rem;
  font-weight: 700;
}
.forge-ps-ai-link {
  font-size: 0.74rem;
  color: var(--brand-blue);
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
}
.forge-ps-deadline {
  color: var(--text-secondary);
  font-size: 0.82rem;
  white-space: nowrap;
}
.forge-ps-priority-rationale {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.25;
}
.forge-btn.forge-ps-sort-btn {
  all: unset;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.forge-ps-sort-arrow {
  font-size: 0.72rem;
}
.forge-btn.forge-product-delete-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--brand-red);
  border-radius: 4px;
  box-shadow: none;
}
.forge-product-delete-btn--card {
  position: absolute;
  top: 8px;
  right: 8px;
}
.forge-ps-phr-pill {
  background: var(--tint-amber);
  color: var(--brand-amber-text);
  border-radius: 10px;
  padding: 1px 7px;
  font-size: 0.68rem;
  font-weight: 700;
  white-space: nowrap;
  margin-left: 4px;
}
.forge-ps-reg-line {
  font-size: 0.78rem;
  margin-top: 4px;
}
.forge-ps-unassigned-hint {
  margin-top: 6px;
  font-size: 0.78rem;
  color: var(--text-muted);
}

.forge-ps-card-title {
  font-weight: 700;
  color: var(--text-primary);
  font-size: 0.95rem;
  text-decoration: none;
  min-width: 0;
}
.forge-ps-card-sku,
.forge-ps-row-sku {
  font-size: 0.74rem;
  color: var(--text-muted);
}
.forge-ps-row-sku {
  font-size: 0.75rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 320px;
}
.forge-ps-card-owner {
  font-size: 0.74rem;
  color: var(--text-secondary);
  margin-top: 4px;
}
.forge-ps-row-owner {
  font-size: 0.82rem;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.forge-ps-skeleton-row {
  height: 14px;
  border-radius: 4px;
  background: var(--tint-slate);
  margin-bottom: 10px;
  animation: skeletonPulse 1.4s ease-in-out infinite;
}

.forge-ps-diff-empty,
.forge-ps-diff-none {
  font-size: 0.82rem;
  color: var(--text-muted);
}
.forge-ps-diff-empty {
  padding: 8px 0;
}
.forge-ps-diff-meta {
  font-size: 0.78rem;
  color: var(--text-secondary);
  margin-top: 4px;
}
.forge-ps-diff-td {
  padding: 6px 10px;
  font-size: 0.78rem;
}
.forge-ps-diff-th {
  padding: 6px 10px;
  text-align: left;
  font-size: 0.72rem;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.forge-ps-diff-more {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: 4px;
}

.forge-ps-dialog-title {
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--text-primary);
  margin-bottom: 8px;
}
.forge-ps-dialog-title--lg {
  font-size: 1rem;
}
.forge-ps-dialog-body {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.5;
  margin-bottom: 10px;
}
.forge-ps-secondary {
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.forge-ps-na-warn {
  font-size: var(--type-body-secondary-size);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  margin-bottom: var(--space-3);
}
.forge-ps-na-warn--attention {
  color: var(--text-primary);
  background: var(--color-warning-surface);
  border: var(--border-width-default) var(--border-style-default) var(--color-warning-border);
}
.forge-ps-audit-stat {
  border-radius: 10px;
  padding: 14px 18px;
}
.forge-ps-audit-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.forge-ps-audit-stat-value {
  font-size: 1.6rem;
  font-weight: 700;
  margin: 4px 0 2px;
}
.forge-ps-export-link {
  flex: none;
  white-space: nowrap;
  color: var(--button-primary-text);
  text-decoration: none;
  padding: var(--space-1) var(--space-2);
  border: var(--border-width-default) var(--border-style-default) var(--button-primary-border);
  background: var(--button-primary-bg);
  border-radius: var(--radius-sm);
}
.forge-ps-version-row {
  gap: var(--space-3);
}
.forge-ps-version-list {
  margin-top: var(--space-3);
  gap: var(--space-3);
}
.forge-ps-status-title--red { color: var(--text-primary); }
.forge-ps-status-title--amber { color: var(--brand-amber-dark); }
.forge-ps-status-title--blue { color: var(--brand-blue); }
.forge-ps-status-title--green { color: var(--text-primary); }
.forge-ps-status-title--slate { color: var(--text-muted); }
.forge-ps-muted {
  color: var(--text-muted);
}
.forge-ps-blocker,
.forge-ps-conformity,
.forge-ps-issued-card {
  border-radius: 8px;
  padding: 12px 14px;
  gap: 8px;
  margin-block-end: var(--space-3);
}
.forge-ps-attestation-blocker { margin-block-end: var(--space-3); }
.forge-ps-blocker--environmental-data {
  background: var(--tint-red);
  border: var(--border-width-default) var(--border-style-default) var(--brand-red);
}
.forge-ps-issued-card {
  padding: 10px 14px;
  margin-block-end: var(--space-2);
}
.forge-ps-issued-card--published {
  background: var(--tint-green);
  border: var(--border-width-default) var(--border-style-default) var(--brand-green);
}
.forge-ps-conformity {
  background-color: var(--color-warning-surface);
  border: var(--border-width-default) var(--border-style-default) var(--color-warning-border);
}
.forge-ps-conformity-body,
.forge-ps-issued-body,
.forge-ps-reissue-copy {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.forge-ps-issued-body {
  display: block;
}
.forge-ps-reissue-copy {
  margin-block-end: var(--space-3);
}
.forge-ps-checklist-title {
  color: var(--text-primary);
  margin-bottom: var(--space-1);
}
.forge-ps-sign-hint {
  color: var(--text-secondary);
  margin: var(--space-2) 0 var(--space-1);
}
.forge-ps-final-signer { margin-block-end: var(--space-2); }
.forge-ps-dialog-body--stale-summary { margin-block-end: var(--space-3); }
.forge-ps-issued-kicker {
  margin-bottom: var(--space-1);
}
.forge-ps-issued-meta {
  margin-top: var(--space-1);
}

.forge-ps-version-num {
  color: var(--text-primary);
  min-width: 60px;
}
.forge-ps-version-meta {
  color: var(--text-muted);
}
.forge-ps-version-pill {
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-pill);
}
.forge-ps-version-pill--published {
  color: var(--brand-green);
  background: var(--tint-green);
}
.forge-ps-version-pill--draft {
  color: var(--brand-info-bright);
  background: var(--tint-info);
}
.forge-ps-version-pill--default {
  color: var(--text-muted);
  background: var(--bg-soft);
}
.forge-ps-version-when {
  color: var(--text-muted);
  margin-left: auto;
}
.forge-ps-version-gaps {
  color: var(--text-muted);
}

.forge-ps-scan-result {
  position: relative;
  overflow: hidden;
  margin: 0 0 12px;
  padding: 14px 16px 14px 18px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  box-shadow: 0 1px 2px rgba(var(--navy-rgb), 0.04);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.forge-ps-scan-accent {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
}
.forge-ps-scan-result[data-tone="green"] .forge-ps-scan-accent {
  background: var(--brand-green);
}
.forge-ps-scan-result[data-tone="amber"] .forge-ps-scan-accent {
  background: var(--brand-amber);
}
.forge-ps-scan-result[data-tone="slate"] .forge-ps-scan-accent {
  background: var(--text-muted);
}
.forge-ps-scan-message {
  margin-top: 5px;
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.45;
}
.forge-ps-scan-metric {
  min-width: 112px;
  padding: 8px 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-muted);
}
.forge-ps-scan-metric-value {
  font-size: 1.15rem;
  line-height: 1.1;
  font-weight: 750;
  color: var(--text-primary);
}
.forge-ps-scan-result[data-tone="green"] .forge-ps-scan-metric-value {
  color: var(--brand-green);
}
.forge-ps-scan-result[data-tone="amber"] .forge-ps-scan-metric-value {
  color: var(--text-primary);
}
.forge-ps-scan-metric-label {
  margin-top: 4px;
  font-size: 0.72rem;
  color: var(--text-secondary);
}
.forge-ps-scan-dismiss .material-icons {
  font-size: 15px;
  line-height: 1;
}
.forge-ps-scan-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.forge-exec-work-type,
.forge-sources-hs-detail,
.forge-reg-ledger-section--candidates,
.forge-help-text,
.forge-declare-release-panel,
.forge-declare-release-title,
.forge-declare-release-subtitle {
  min-width: 0;
}

.forge-help-text {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.4;
}

.forge-declare-release-panel {
  display: grid;
  gap: 10px;
}

.forge-declare-release-title {
  color: var(--text-primary);
  font-weight: 800;
}

.forge-declare-release-title {
  font-size: 1rem;
}

.forge-declare-release-subtitle {
  color: var(--text-primary);
  font-size: 0.84rem;
  font-weight: 800;
}

.forge-sources-hs-detail {
  color: var(--text-muted);
}.forge-empty-diagnostics,
.settings-template-empty,
.source-doc-profile-match,
.source-doc-profile-match__label,
.source-doc-profile-match__title,
.source-doc-profile-match__meta,
.source-doc-review-target,
.source-doc-review-target__label,
.source-doc-review-target__detail {
  min-width: 0;
}

.forge-empty-diagnostics {
  margin-top: 8px;
}

.source-doc-profile-match,
.source-doc-review-target {
  display: grid;
  gap: 4px;
}

.source-doc-profile-match__label,
.source-doc-review-target__label {
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
}

.source-doc-profile-match__title {
  color: var(--text-primary);
  font-weight: 800;
}

.source-doc-profile-match__meta,
.source-doc-review-target__detail {
  color: var(--text-secondary);
  font-size: 0.78rem;
}

.monitoring-source-scan-empty {
  width: 100%;
}

/* Temporary Product Dossier prototype. */
.forge-work-surface-full-page {
  min-height: 100vh;
  width: 100%;
  box-sizing: border-box;
  background: var(--bg-page);
  color: var(--text-primary);
  padding: 18px 28px 32px;
}

.forge-work-surface-full-topbar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 24px;
  align-items: center;
  max-width: 1760px;
  margin: 0 auto 18px;
}

.forge-work-surface-full-brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 220px;
}

.forge-work-surface-full-brand strong,
.forge-work-surface-full-brand small {
  display: block;
}

.forge-work-surface-full-brand strong {
  font-size: var(--text-md);
  line-height: 1.2;
}

.forge-work-surface-full-brand small {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
  line-height: 1.2;
  text-transform: uppercase;
}

.forge-work-surface-full-nav {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
}

.forge-work-surface-full-nav span {
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  font-weight: 850;
  padding: 9px 12px;
}

.forge-work-surface-full-nav span:hover {
  border-color: var(--border-subtle);
  background: var(--bg-card);
}

.forge-work-surface-full-nav span.is-active {
  border-color: var(--border);
  background: var(--bg-card);
  color: var(--text-primary);
  box-shadow: var(--shadow-sm);
}

.forge-work-surface-full-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 24px;
  align-items: end;
  max-width: 1760px;
  margin: 0 auto 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  padding: 22px 24px;
}

.forge-work-surface-full-hero--compact {
  grid-template-columns: minmax(0, 1fr) auto;
  padding: 16px 20px;
}

.forge-work-surface-full-hero h1 {
  margin: 4px 0 0;
  color: var(--text-primary);
  font-size: 1.85rem;
  line-height: 1.15;
  letter-spacing: 0;
}

.forge-work-surface-full-hero p {
  max-width: 760px;
  margin: 8px 0 0;
  color: var(--text-secondary);
  font-size: var(--text-md);
  line-height: 1.45;
}

.forge-work-surface-full-status {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  min-width: 150px;
}

.forge-work-surface-full-status strong {
  color: var(--text-primary);
  font-size: 1.2rem;
  line-height: 1;
}

.forge-work-surface-full-status span {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
}

.forge-work-surface-full-lanes {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  max-width: 1760px;
  margin: 0 auto 14px;
}

.forge-work-surface-obligation-context {
  display: grid;
  grid-template-columns: minmax(260px, 1.4fr) repeat(4, minmax(0, 1fr));
  gap: 1px;
  max-width: 1760px;
  margin: 0 auto 14px;
  overflow: hidden;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--border-subtle);
}

.forge-work-surface-obligation-context > div {
  display: grid;
  gap: 4px;
  background: var(--bg-card);
  padding: 12px 14px;
}

.forge-work-surface-obligation-context span {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  text-transform: uppercase;
}

.forge-work-surface-obligation-context strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}

.forge-work-surface-obligation-primary strong {
  font-size: var(--text-md);
}

.forge-work-surface-full-lanes div {
  display: grid;
  gap: 4px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  padding: 12px 14px;
}

.forge-work-surface-full-lanes span {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  text-transform: uppercase;
}

.forge-work-surface-full-lanes strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}

.forge-work-surface-full-lanes small {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  line-height: 1.35;
}

.forge-work-surface-hierarchy {
  display: grid;
  grid-template-columns: minmax(180px, 0.55fr) minmax(0, 1.45fr);
  gap: 12px;
  min-width: 0;
  max-width: 1760px;
  margin: 0 auto 12px;
}

.forge-work-surface-shared-inputs-label {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  letter-spacing: 0.04em;
  margin: 0 0 6px;
  text-transform: uppercase;
}

.forge-work-surface-release-strip {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  border-top: 1px solid var(--border-subtle);
  padding-top: 12px;
}

.forge-work-surface-release-strip span {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill);
  background: var(--bg-page);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 800;
  padding: 5px 9px;
}

.forge-work-surface-release-strip strong {
  color: var(--text-primary);
}

.forge-work-surface-full-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  max-width: 1760px;
  margin: 0 auto;
}

.forge-work-surface-template {
  width: 100%;
  max-width: 920px;
  min-height: 1120px;
  justify-self: center;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}

.forge-work-surface-template-head {
  display: grid;
  gap: 10px;
  border-bottom: 1px solid var(--border-subtle);
  background: var(--bg-page);
  padding: 30px 34px 24px;
}

.forge-work-surface-template-mark {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.forge-work-surface-template-head h2 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1.55rem;
  line-height: 1.2;
  letter-spacing: 0;
}

.forge-work-surface-template-context {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.forge-work-surface-template-context span {
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 800;
  padding: 4px 8px;
}

.forge-work-surface-template-section {
  display: grid;
  gap: 14px;
  padding: 26px 34px;
}

.forge-work-surface-template-section + .forge-work-surface-template-section {
  border-top: 1px solid var(--border-subtle);
}

.forge-work-surface-template-section h3 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1rem;
  letter-spacing: 0;
}

.forge-work-surface-template-section p {
  max-width: 72ch;
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.65;
}

.forge-work-surface-template-gap {
  border: 1px solid var(--border-amber);
  border-radius: 8px;
  background: var(--tint-amber);
  padding: 10px 12px;
}

.forge-work-surface-template-fields {
  display: grid;
  gap: 8px;
  margin: 0;
}

.forge-work-surface-template-field {
  display: grid;
  grid-template-columns: minmax(120px, 0.75fr) minmax(180px, 1fr) minmax(140px, 0.9fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  padding: 10px 12px;
}

.forge-work-surface-template-field,
.forge-work-surface-template-section[data-detail-target] {
  outline: none;
  transition:
    border-color var(--motion-fast),
    background var(--motion-fast),
    box-shadow var(--motion-fast);
}

.forge-work-surface-template-field:hover,
.forge-work-surface-template-field:focus-visible,
.forge-work-surface-template-section[data-detail-target]:hover,
.forge-work-surface-template-section[data-detail-target]:focus-visible {
  border-color: var(--border-strong);
  background: var(--bg-card);
  box-shadow: inset 3px 0 0 var(--sidebar-icon-accent);
}

.forge-work-surface-template-field dt,
.forge-work-surface-template-field small {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
}

.forge-work-surface-template-field dd {
  margin: 0;
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 850;
}

.forge-work-surface-template-section--sign {
  grid-template-columns: 1fr 1fr;
}

.forge-work-surface-template-section--sign h3 {
  grid-column: 1 / -1;
}

.forge-work-surface-signature-line span {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
}

.forge-work-surface-signature-line strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}

.forge-work-surface-full-workspace .forge-work-surface-map,
.forge-work-surface-full-workspace .forge-work-surface-evidence {
  position: sticky;
  top: 16px;
}

.forge-work-surface-prototype {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}

.forge-work-surface-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  padding: 16px;
}

.forge-work-surface-eyebrow,
.forge-work-surface-document-eyebrow,
.forge-work-surface-panel-kicker {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.forge-work-surface-hero h1,
.forge-work-surface-document-banner h2,
.forge-work-surface-panel-top h3,
.forge-work-surface-document-section h3 {
  margin: 0;
  color: var(--text-primary);
  letter-spacing: 0;
}

.forge-work-surface-hero h1 {
  margin-top: 4px;
  font-size: 1.35rem;
}

.forge-work-surface-hero p,
.forge-work-surface-document-banner p,
.forge-work-surface-panel-top p,
.forge-work-surface-document-section p {
  margin: 4px 0 0;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.45;
}

.forge-work-surface-readiness {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  min-width: 110px;
}

.forge-work-surface-readiness strong {
  color: var(--text-primary);
  font-size: 1.6rem;
  line-height: 1;
}

.forge-work-surface-readiness span {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 700;
}

.forge-work-surface-flow,
.forge-work-surface-summary {
  display: grid;
  gap: 8px;
}

.forge-work-surface-flow {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.forge-work-surface-flow span {
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  color: var(--text-secondary);
  font-size: var(--text-sm);
  font-weight: 800;
  padding: 10px 12px;
  text-align: center;
}

.forge-work-surface-flow span.is-active {
  border-color: var(--border-strong);
  background: var(--surface-control-selected);
  color: var(--text-primary);
}

.forge-work-surface-summary {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.forge-work-surface-summary div {
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  padding: 12px;
}

.forge-work-surface-summary strong {
  display: block;
  color: var(--text-primary);
  font-size: 1.1rem;
}

.forge-work-surface-summary span {
  color: var(--text-secondary);
  font-size: var(--text-sm);
}

.forge-work-surface-layout {
  display: grid;
  grid-template-columns: minmax(180px, 0.7fr) minmax(420px, 1.85fr) minmax(240px, 0.85fr);
  gap: 14px;
  align-items: start;
  min-width: 0;
}

.forge-work-surface-document-workspace {
  display: grid;
  grid-template-columns: minmax(560px, 1fr) minmax(260px, 0.32fr);
  gap: 14px;
  align-items: start;
  min-width: 0;
}

.forge-work-surface-map,
.forge-work-surface-document,
.forge-work-surface-evidence {
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  min-width: 0;
}

.forge-work-surface-map {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 10px;
}

.forge-work-surface-map-group {
  display: grid;
  gap: 6px;
}

.forge-work-surface-map-group-title {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  letter-spacing: 0.04em;
  padding: 2px 4px;
  text-transform: uppercase;
}

.forge-work-surface-map-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  padding: 10px;
  text-align: left;
}

.forge-work-surface-map-item:hover,
.forge-work-surface-map-item--selected {
  border-color: var(--border);
  background: var(--bg-card);
}

.forge-work-surface-map-copy {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.forge-work-surface-map-label {
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 800;
}

.forge-work-surface-map-detail {
  color: var(--text-muted);
  font-size: var(--text-xs);
  line-height: 1.35;
}

.forge-work-surface-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: 0.68rem;
  font-weight: 800;
  line-height: 1.1;
  min-height: 22px;
  padding: 3px 8px;
  white-space: nowrap;
}

.forge-work-surface-pill--green {
  border-color: var(--border-green);
  background: var(--tint-green);
}

.forge-work-surface-pill--amber {
  border-color: var(--border-amber);
  background: var(--tint-amber);
}

.forge-work-surface-pill--red {
  border-color: var(--border-danger);
  background: var(--tint-red);
}

.forge-work-surface-document {
  overflow: hidden;
}

.forge-work-surface-document-banner {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid var(--border-subtle);
  background: var(--bg-card);
  padding: 18px;
}

.forge-work-surface-document-status {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-content: flex-start;
  justify-content: flex-end;
}

.forge-work-surface-document-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px;
}

.forge-work-surface-document-section + .forge-work-surface-document-section {
  border-top: 1px solid var(--border-subtle);
}

.forge-work-surface-blocker,
.forge-work-surface-evidence-item {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--tint-amber);
  color: var(--text-primary);
  font-size: var(--text-sm);
  padding: 10px;
}

.forge-work-surface-evidence-item--red {
  border-color: var(--border-danger);
  background: var(--tint-red);
}

.forge-work-surface-icon {
  flex: none;
  font-size: 18px;
}

.forge-work-surface-evidence {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 16px;
}

.forge-work-surface-details {
  min-height: 0;
  opacity: 0.74;
}

.forge-work-surface-full-workspace:has([data-detail-target]:hover:not(:has(.forge-data-table__actions:hover))) .forge-work-surface-details,
.forge-work-surface-full-workspace:has([data-detail-target]:focus-visible:not(:has(.forge-data-table__actions :focus-visible))) .forge-work-surface-details,
.forge-work-surface-full-workspace:has([data-detail-target]:focus-within:not(:has(.forge-data-table__actions :focus-within))) .forge-work-surface-details,
.forge-work-surface-full-workspace.is-detail-active .forge-work-surface-details,
.forge-work-surface-full-workspace[data-pinned-detail] .forge-work-surface-details {
  opacity: 1;
}

.forge-work-surface-panel-top h3 {
  margin-top: 4px;
  font-size: 1rem;
}

.forge-work-surface-detail-card {
  display: none;
  flex-direction: column;
  gap: 16px;
}

.forge-work-surface-detail-card--default {
  display: flex;
}

.forge-work-surface-detail-placeholder {
  display: grid;
  gap: 4px;
  border: 1px dashed var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  color: var(--text-secondary);
  padding: 12px;
}

.forge-work-surface-detail-placeholder strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}

.forge-work-surface-detail-placeholder span {
  font-size: var(--text-xs);
  line-height: 1.35;
}

.forge-work-surface-full-workspace:has([data-detail-target]:hover:not(:has(.forge-data-table__actions:hover))) .forge-work-surface-detail-card,
.forge-work-surface-full-workspace:has([data-detail-target]:focus-visible:not(:has(.forge-data-table__actions :focus-visible))) .forge-work-surface-detail-card,
.forge-work-surface-full-workspace:has([data-detail-target]:focus-within:not(:has(.forge-data-table__actions :focus-within))) .forge-work-surface-detail-card,
.forge-work-surface-full-workspace.is-detail-active .forge-work-surface-detail-card,
.forge-work-surface-full-workspace[data-pinned-detail] .forge-work-surface-detail-card {
  display: none;
}

.forge-work-surface-full-workspace:has([data-detail-target="product"]:hover) .forge-work-surface-detail-card--product,
.forge-work-surface-full-workspace:has([data-detail-target="product"]:focus-visible) .forge-work-surface-detail-card--product,
.forge-work-surface-full-workspace:has([data-detail-target="product"]:focus-within) .forge-work-surface-detail-card--product,
.forge-work-surface-full-workspace:has([data-detail-target="model"]:hover) .forge-work-surface-detail-card--model,
.forge-work-surface-full-workspace:has([data-detail-target="model"]:focus-visible) .forge-work-surface-detail-card--model,
.forge-work-surface-full-workspace:has([data-detail-target="model"]:focus-within) .forge-work-surface-detail-card--model,
.forge-work-surface-full-workspace:has([data-detail-target="serial-range"]:hover) .forge-work-surface-detail-card--serial-range,
.forge-work-surface-full-workspace:has([data-detail-target="serial-range"]:focus-visible) .forge-work-surface-detail-card--serial-range,
.forge-work-surface-full-workspace:has([data-detail-target="serial-range"]:focus-within) .forge-work-surface-detail-card--serial-range,
.forge-work-surface-full-workspace:has([data-detail-target="manufacturer"]:hover) .forge-work-surface-detail-card--manufacturer,
.forge-work-surface-full-workspace:has([data-detail-target="manufacturer"]:focus-visible) .forge-work-surface-detail-card--manufacturer,
.forge-work-surface-full-workspace:has([data-detail-target="manufacturer"]:focus-within) .forge-work-surface-detail-card--manufacturer,
.forge-work-surface-full-workspace:has([data-detail-target="address"]:hover) .forge-work-surface-detail-card--address,
.forge-work-surface-full-workspace:has([data-detail-target="address"]:focus-visible) .forge-work-surface-detail-card--address,
.forge-work-surface-full-workspace:has([data-detail-target="address"]:focus-within) .forge-work-surface-detail-card--address,
.forge-work-surface-full-workspace:has([data-detail-target="declaration-statement"]:hover) .forge-work-surface-detail-card--declaration-statement,
.forge-work-surface-full-workspace:has([data-detail-target="declaration-statement"]:focus-visible) .forge-work-surface-detail-card--declaration-statement,
.forge-work-surface-full-workspace:has([data-detail-target="declaration-statement"]:focus-within) .forge-work-surface-detail-card--declaration-statement,
.forge-work-surface-full-workspace .forge-work-surface-detail-card.is-active {
  display: flex;
}

.forge-work-surface-detail-topline {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px 10px;
  align-items: center;
  border-bottom: 1px solid var(--border-subtle);
  padding-bottom: 12px;
}

/* Keep Data row actions stationary when hover selects a taller evidence card.
 * Inactive cards reserve their grid area without accepting focus or clicks. */
.forge-work-surface-full-workspace.forge-work-surface-prototype[data-projection-key="data"] .forge-work-surface-details {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  max-height: min(720px, 75dvh);
}

.forge-work-surface-full-workspace.forge-work-surface-prototype[data-projection-key="data"] .forge-work-surface-detail-card {
  display: flex;
  grid-area: 2 / 1;
  min-height: 0;
  overflow: auto;
  visibility: hidden;
  pointer-events: none;
}

.forge-work-surface-full-workspace.forge-work-surface-prototype[data-projection-key="data"] .forge-work-surface-detail-card--default,
.forge-work-surface-full-workspace.forge-work-surface-prototype[data-projection-key="data"] .forge-work-surface-detail-card.is-active {
  visibility: visible;
  pointer-events: auto;
}

.forge-work-surface-full-workspace.forge-work-surface-prototype[data-projection-key="data"].is-detail-active .forge-work-surface-detail-card--default {
  visibility: hidden;
  pointer-events: none;
}

.forge-work-surface-detail-topline span {
  grid-column: 1 / -1;
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 850;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.forge-work-surface-detail-topline strong {
  color: var(--text-primary);
  font-size: 1.05rem;
  line-height: 1.2;
}

.forge-work-surface-scope-link {
  color: var(--brand-info);
  font-weight: 750;
  text-decoration: underline;
}

.forge-work-surface-requirement-review {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  padding: 10px;
}

.forge-work-surface-evidence-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.forge-work-surface-resolver {
  display: flex;
  flex-direction: column;
  gap: 6px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  padding: 10px;
}

.forge-work-surface-choice-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-page);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  padding: 8px;
}

.forge-work-surface-choice-row--selected {
  border-color: var(--border-strong);
  background: var(--surface-control-selected);
}

.forge-data-table tbody tr.is-selected {
  border-color: var(--border-strong);
  background: var(--surface-control-selected);
}

.forge-work-surface-choice-row strong {
  color: var(--text-primary);
  font-size: var(--text-xs);
  text-align: right;
}

.forge-work-surface-obligation-card {
  display: grid;
  gap: 4px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--tint-blue);
  padding: 10px;
}

.forge-work-surface-obligation-card strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
}

.forge-work-surface-obligation-card span {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  line-height: 1.35;
}

.forge-work-surface-evidence-label {
  color: var(--text-muted);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.forge-work-surface-route-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: var(--text-sm);
  padding: 8px 0;
}

.forge-work-surface-route-row strong {
  color: var(--text-primary);
  font-size: var(--text-xs);
}

.forge-work-surface-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.forge-work-surface-ai-actions {
  display: grid;
  gap: 8px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-card);
  padding: 10px;
}

.forge-work-surface-action-row {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}

.forge-work-surface-action-row small {
  max-width: 24ch;
  color: var(--text-muted);
  font-size: var(--text-xs);
  line-height: 1.25;
}

@media (max-width: 1100px) {
  .forge-work-surface-full-workspace,
  .forge-work-surface-layout,
  .forge-work-surface-hierarchy,
  .forge-work-surface-document-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

  .forge-work-surface-full-workspace .forge-work-surface-map,
  .forge-work-surface-full-workspace .forge-work-surface-evidence {
    position: static;
  }

  .forge-work-surface-details {
    min-height: 0;
  }

  .forge-work-surface-full-lanes,
  .forge-work-surface-obligation-context,
  .forge-work-surface-map {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 700px) {
  .forge-work-surface-prototype,
  .forge-work-surface-obligation-context,
  .forge-work-surface-summary,
  .forge-work-surface-layout,
  .forge-work-surface-document,
  .forge-work-surface-evidence {
    max-width: 100%;
    min-width: 0;
  }

  .forge-work-surface-map-item,
  .forge-work-surface-document-banner,
  .forge-work-surface-route-row,
  .forge-work-surface-choice-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .forge-work-surface-pill {
    white-space: normal;
  }
}

@media (max-width: 720px) {
  .forge-work-surface-full-page {
    padding: 12px;
  }

  .forge-work-surface-full-topbar,
  .forge-work-surface-full-hero {
    grid-template-columns: 1fr;
  }

  .forge-work-surface-full-nav {
    justify-content: flex-start;
    overflow-x: auto;
  }

  .forge-work-surface-full-status {
    align-items: flex-start;
  }

  .forge-work-surface-full-lanes,
  .forge-work-surface-obligation-context,
  .forge-work-surface-choice-row,
  .forge-work-surface-template-field,
  .forge-work-surface-template-section--sign,
  .forge-work-surface-hero,
  .forge-work-surface-document-banner {
    display: grid;
    grid-template-columns: 1fr;
  }

  .forge-work-surface-readiness {
    align-items: flex-start;
  }

  .forge-work-surface-flow,
  .forge-work-surface-summary,
  .forge-work-surface-map,
}
.assessment-rationale {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px;
  margin: 8px 0 12px;
  background: var(--color-white);
}

.assessment-rationale__meta {
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.4;
  margin-bottom: 4px;
}

.assessment-rationale__recommendation {
  font-size: 15px;
  line-height: 1.3;
  margin: 0 0 6px;
  font-weight: 700;
}

.assessment-rationale__summary {
  margin: 0 0 8px;
}

.assessment-rationale__top-answer {
  color: var(--text-primary);
  font-weight: 650;
  margin: 0 0 6px;
}

.assessment-rationale__answer {
  color: var(--text-primary);
  margin: 8px 0 0;
}

.assessment-rationale__coverage {
  margin: 10px 0 6px;
}

.assessment-rationale__section + .assessment-rationale__section {
  margin-top: 12px;
}

.assessment-rationale__empty {
  color: var(--text-secondary);
  margin: 4px 0 0;
}

.assessment-rationale__coverage-grid {
  border: 1px solid var(--border);
  border-radius: 8px;
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(120px, max-content) minmax(72px, max-content);
  overflow: hidden;
}

.assessment-rationale__coverage-grid > * {
  border-top: 1px solid var(--border);
  padding: 6px 8px;
}

.assessment-rationale__coverage-grid > :nth-child(-n + 3) {
  border-top: 0;
}

.assessment-rationale__coverage-head {
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 700;
}

.assessment-rationale__coverage-row {
  display: contents;
}

.assessment-rationale__coverage-criterion {
  color: var(--text-primary);
  font-weight: 600;
}

.assessment-rationale__point {
  border-top: 1px solid var(--border);
  padding: 8px 0;
}

.assessment-rationale__point summary {
  align-items: center;
  cursor: pointer;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.assessment-rationale__point-title {
  flex: 1;
  font-weight: 600;
}

.assessment-rationale__point-result,
.assessment-rationale__point-badge {
  color: var(--text-muted);
  font-size: 12px;
}

.assessment-rationale__basis h6,
.assessment-rationale__blockers h6 {
  font-size: 12px;
  margin: 8px 0 4px;
}

.assessment-rationale__basis ul,
.assessment-rationale__blockers ul {
  margin: 0;
  padding-left: 18px;
}

.assessment-rationale__effect {
  color: var(--text-muted);
  margin: 8px 0 0;
}

.assessment-rationale__details,
.assessment-rationale__technical {
  border-top: 1px solid var(--border);
  margin-top: 4px;
  padding-top: 8px;
}

.assessment-rationale__details > summary,
.assessment-rationale__technical > summary {
  color: var(--text-muted);
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
}

.assessment-rationale__technical dl {
  display: grid;
  gap: 4px 10px;
  grid-template-columns: minmax(120px, max-content) 1fr;
  margin: 8px 0 0;
}

.assessment-rationale__technical dt {
  color: var(--text-muted);
  font-weight: 600;
}

.assessment-rationale__technical dd {
  margin: 0;
}

@media (max-width: 720px) {
  .assessment-rationale__coverage-grid {
    grid-template-columns: minmax(0, 1fr) minmax(80px, max-content) minmax(64px, max-content);
  }
}

/* Plan 3559: AgentOps dashboard chrome moved out of a per-view <style> block. */
.agentops-shell {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.agentops-toolbar {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  flex-wrap: wrap;
  color: var(--text-secondary);
}
.agentops-toolbar select {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: var(--space-1) var(--space-2);
  margin-left: var(--space-2);
  background: var(--surface-primary);
  color: var(--text-primary);
}
.agentops-agent {
  color: var(--text-primary);
}
.agentops-sub {
  color: var(--text-secondary);
  margin-top: var(--space-1);
}
.agentops-metric {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Plan 3576 â€” command palette mount root (was inline display:none) */
.forge-cmdk-root {
  display: none;
}

.forge-activity-load-more {
  margin-top: 8px;
}

.forge-dyn-color { color: var(--forge-dyn-fg); }
.forge-dyn-bg { background: var(--forge-dyn-fill); }
.forge-dyn-border-color { border-color: var(--forge-dyn-stroke); }
.forge-invite-form {
  width: min(100%, 35rem);
  margin: var(--space-8) auto 0;
  padding: 0 var(--space-4);
  gap: var(--space-4);
}

/* Plan 3796 extracted visual styles */

/* Plan 3796: owned selectors for feature semantic classes */
.forge-data-table__cell { vertical-align: top; }
.forge-table-selection__cell { padding: 10px 8px 10px 12px; text-align: left; }
.forge-status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--forge-dyn-fill); }
.forge-reporting-generation-batch {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--bg-subtle);
}
.forge-reporting-generation-language {
  width: 100%;
  min-width: 11rem;
  min-height: 2.5rem;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  color: var(--text-primary);
  font: inherit;
}
.forge-reporting-generation-language:focus-visible,
.forge-reporting-generation-select:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}
.forge-reporting-generation-language:disabled { color: var(--text-muted); background: var(--bg-subtle); }
.forge-reporting-generation-select { width: 1rem; height: 1rem; accent-color: var(--brand-blue); }
.forge-btn.forge-reporting-generation-run { justify-content: center; }
.forge-reporting-generation-refresh { margin-top: var(--space-2); }
.forge-reporting-generation-batch #reporting-generation-preview { margin: 0; color: var(--text-secondary); }
@media (max-width: 640px) {
  .forge-reporting-generation-batch { align-items: stretch; }
}
.forge-portfolio-review-link {
  display: flex;
  align-items: center;
  padding: 10px 16px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--brand-blue);
  text-decoration: none;
  white-space: nowrap;
  border-left: 1px solid var(--border);
}
.forge-ps-draft-fallback { color: var(--brand-amber-text); background: var(--tint-amber); border-bottom: 1px solid var(--brand-amber-bright); }
.forge-status-cell { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.progress-bar .fill { height: 6px; }
.forge-back-link { color: var(--text-secondary); text-decoration: none; }
.forge-callout { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 12px 14px; }
.forge-callout--warning { border-color: var(--text-primary); background: var(--tint-amber); }
.source-document-ocr-guidance { margin-block-end: var(--space-3); }
.source-document-ocr-guidance__detail { margin-block-start: var(--space-1); }
.forge-cert-settings { display: grid; gap: 12px; }
.forge-chip { display: inline-flex; align-items: center; border-radius: 999px; padding: 2px 8px; font-size: 0.75rem; }
.forge-chip--info { background: var(--tint-blue); color: var(--text-primary); }
.forge-col-info { color: var(--text-secondary); }
.forge-conn-intake-link { color: var(--brand-blue); text-decoration: none; }
.forge-declare-step-area { display: grid; gap: 12px; }
.forge-disclaimer-banner { color: var(--text-secondary); }
.forge-exec-bulk-bar { display: flex; align-items: center; gap: 8px; }
.forge-exec-deadline { color: var(--text-muted); font-size: 0.82rem; }
.forge-exec-fill { background: var(--brand-blue); }
.forge-exec-matrix-cell { text-align: center; }
.forge-btn.forge-exec-overflow-action { justify-content: flex-start; }
.forge-exec-overflow-menu { position: relative; }
.forge-extraction-validation { display: grid; gap: 8px; }
.forge-field-row-chevron { color: var(--text-muted); }
.forge-inbox-action { display: inline-flex; }
.forge-module-dot { width: 8px; height: 8px; border-radius: 50%; }
.forge-module-matrix-corner { color: var(--text-muted); }
.forge-pill { display: inline-flex; align-items: center; border-radius: 999px; padding: 2px 8px; }
.forge-presign-blockers { display: grid; gap: 8px; }
.forge-presign-metrics { display: grid; gap: 8px; }
.forge-presign-summary { display: grid; gap: 8px; }
.forge-presign-why { color: var(--text-secondary); }
.forge-product-picker-bulk-bar { display: flex; align-items: center; gap: 8px; }
.forge-product-readiness-kpi { display: grid; gap: 4px; }
.forge-queue-progress { display: flex; align-items: center; gap: 8px; }
.forge-regulatory-classification-needed { display: grid; gap: 8px; }
.forge-regulatory-classification-option { display: flex; gap: 8px; }
.forge-regulatory-classification-unknown { border-style: dashed; color: var(--text-secondary); }
.forge-protected-risk-record { border-style: dashed; }
.forge-requirement-blocker-list { display: grid; gap: 8px; }
.forge-requirement-declare-gate { display: grid; gap: 8px; }
.forge-scope-driver-reason { color: var(--text-secondary); }
.forge-scope-human-decision { display: grid; gap: 8px; }
.forge-scope-human-decision--pending { border-color: var(--text-primary); }
.forge-since-item--change { border-left: 3px solid var(--brand-blue); }
.forge-since-item--reg { border-left: 3px solid var(--brand-amber-bright); }
.forge-source-identity-assign-btn { display: inline-flex; }
.forge-source-identity-reassign { display: inline-flex; }
.forge-source-slot--identity-conflict { border-color: var(--text-primary); }
.forge-source-slot__badge { display: inline-flex; }
.forge-source-slot__badge--warning { background: var(--tint-amber); }
.forge-source-slot__icon { color: var(--text-muted); }
.forge-source-slot__label { color: var(--text-secondary); }
.forge-source-slot__link { color: var(--brand-blue); text-decoration: none; }
.forge-source-summary { color: var(--text-secondary); }
.forge-supplier-validate-extract { display: grid; gap: 8px; }
.forge-supplier-validate-gates { display: grid; gap: 8px; }
.forge-tab-overview { display: grid; gap: 12px; }
.monitoring-interpretations-section { display: grid; gap: 8px; }
.regulation-cb { display: inline-flex; }
.regulation-library-stage-tabs { display: flex; gap: 8px; }
.regulations-proposal__group { margin-block-end: var(--space-4, 16px); }
.regulation-option { display: flex; gap: 8px; align-items: flex-start; }
.regulation-option__check { margin-top: 2px; }
.regulation-option__desc { color: var(--text-secondary); }
.regulation-option__label { font-weight: 650; }
.source-doc-authority-actors { color: var(--text-secondary); }
.source-doc-bundle-review-actions { display: flex; gap: 8px; }
.source-doc-fact-row { display: grid; gap: 4px; }
.source-doc-overview-card--bundle { border-color: var(--border); }
.source-doc-review-name { font-weight: 650; }
.source-doc-part-boundary-review,
.source-doc-part-review-history,
.source-doc-literal-readings {
  display: grid;
  gap: var(--space-3);
}
.source-doc-part-boundary-review-card,
.source-doc-part-review-history-card,
.source-doc-literal-readings-card {
  margin-top: var(--space-4);
}
.source-doc-part-boundary-proposal,
.source-doc-literal-reading,
.source-doc-part-review-history__item {
  padding: var(--space-2) 0;
  border: 0;
  border-bottom: 1px solid var(--border-subtle);
}
.source-doc-part-boundary-proposal blockquote,
.source-doc-literal-reading blockquote {
  margin: var(--space-2) 0;
  padding-inline-start: var(--space-3);
  border-inline-start: 3px solid var(--border-strong);
  color: var(--text-secondary);
}
.source-doc-part-review-history__item + .source-doc-part-review-history__item {
  margin-top: var(--space-2);
}

/* Plan 3796 split-line styles */

/* Readable component styles migrated from the retired visual hash classes. */
/* Manager dashboard revenue timeline and weekly activity drawer. */

/* Data actions remain reachable within the content width left by both rails. */
.forge-work-surface-document-section--data .forge-requirements-actions {
  min-width: 0;
  flex-wrap: wrap;
  justify-content: flex-start;
}
@media (max-width: 1024px) {
  .forge-table-role--actions .forge-requirements-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
  }
  .forge-table-role--actions .forge-requirements-actions .q-btn__content {
    white-space: normal;
    overflow-wrap: anywhere;
  }
}
.ra-eyebrow .material-icons {
  font-size: var(--forge-control-icon-sm);
}

.forge-work-surface-secondary-actions {
  position: relative;
  flex: none;
}
.forge-work-surface-secondary-actions > summary {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  color: var(--text-secondary);
  cursor: pointer;
  list-style: none;
}
.forge-work-surface-secondary-actions > summary::-webkit-details-marker {
  display: none;
}
.forge-work-surface-secondary-actions > summary:focus-visible {
  box-shadow: var(--focus-ring);
}
.forge-work-surface-secondary-actions__panel {
  position: absolute;
  z-index: 20;
  inset: calc(100% + 4px) 0 auto auto;
  display: grid;
  min-width: 180px;
  gap: 4px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  box-shadow: var(--shadow-md);
  padding: 6px;
}
.forge-work-surface-secondary-actions__panel .forge-btn {
  justify-content: flex-start;
}

@media (max-width: 1100px) {
  .forge-work-surface-full-workspace {
    --forge-work-surface-detail-mode: drawer;
  }
  .forge-work-surface-details {
    display: none;
  }
  .forge-work-surface-full-workspace.is-detail-drawer-open::before {
    position: fixed;
    z-index: 999;
    inset: 0;
    background: rgba(var(--navy-rgb), 0.34);
    content: "";
  }
  .forge-work-surface-full-workspace.is-detail-drawer-open .forge-work-surface-details {
    position: fixed;
    z-index: 1000;
    inset: calc(var(--forge-topbar-height, 56px) + 1rem) 1rem 1rem auto;
    display: flex;
    width: min(420px, calc(100vw - 2rem));
    overflow: auto;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md);
    background: var(--bg-page);
    box-shadow: var(--shadow-md);
  }
  .forge-work-surface-details-close {
    position: absolute;
    inset: 0 0 auto auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-sm);
    background: var(--bg-card);
    color: var(--text-primary);
    cursor: pointer;
  }
  .forge-work-surface-details-close:focus-visible {
    box-shadow: var(--focus-ring);
  }
}

/* Canonical private assistant conversation. */
.assistant-drawer { position: relative; display: flex; flex-direction: column; background: var(--bg-card); }
.assistant-drawer .q-btn:focus-visible { box-shadow: var(--focus-ring); }
.assistant-messages { flex: 1 1 auto; min-height: 160px; overflow-y: auto; overscroll-behavior: contain; }
.assistant-jump-latest { position: absolute !important; right: 24px; bottom: 88px; z-index: 2; visibility: hidden; opacity: 0; pointer-events: none; box-shadow: var(--shadow-md); transition: opacity var(--motion-fast) var(--ease-out-quart); }
.assistant-jump-latest.is-visible { visibility: visible; opacity: 1; pointer-events: auto; }
@media (prefers-reduced-motion: reduce) { .assistant-jump-latest { transition: none; } }
.assistant-message { border-bottom: 1px solid var(--border-subtle); padding: 12px 0; overflow-wrap: anywhere; }
.assistant-answer-markdown { line-height: 1.55; overflow-wrap: anywhere; overflow-x: auto; }
.assistant-answer-markdown > :first-child { margin-top: 4px; }
.assistant-answer-markdown > :last-child { margin-bottom: 8px; }
.assistant-answer-markdown p,
.assistant-answer-markdown ul,
.assistant-answer-markdown ol,
.assistant-answer-markdown blockquote,
.assistant-answer-markdown pre,
.assistant-answer-markdown table {
  margin-block: var(--space-1) var(--space-2);
  margin-inline: var(--space-0);
}
.assistant-answer-markdown ul,
.assistant-answer-markdown ol { padding-left: 24px; }
.assistant-answer-markdown pre { overflow-x: auto; padding: 8px; border-radius: 6px; background: var(--bg-subtle); }
.assistant-answer-block strong { font-size: var(--text-xs); color: var(--text-secondary); }
.assistant-limitation { color: var(--text-secondary); }
.assistant-drawer .forge-empty-state { padding: var(--space-6) var(--space-2); }
@media (max-width: 900px) { .assistant-drawer { width: var(--layout-mobile-full-inline-size) !important; max-width: var(--layout-mobile-full-inline-size) !important; } }

.assistant-note { color: var(--text-secondary); }
.assistant-context-attachment { max-width: 100%; overflow-wrap: anywhere; }
@media (max-width: 900px) {
  .q-drawer--right:has(.assistant-drawer) {
    width: var(--layout-mobile-full-inline-size) !important;
    max-width: var(--layout-mobile-full-inline-size) !important;
  }
}

.forge-product-content .q-btn.forge-btn--secondary,
.forge-product-content .forge-btn--secondary,
.forge-product-button-surface .q-btn.forge-btn--secondary,
.forge-product-button-surface .forge-btn--secondary {
  background: var(--bg-hover) !important;
  border: 1px solid var(--border) !important;
  color: var(--text-primary) !important;
  box-shadow: none !important;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease !important;
}
.forge-product-content .q-btn.forge-btn--secondary:not(.disabled):hover,
.forge-product-content .forge-btn--secondary:not([disabled]):not([aria-disabled="true"]):hover,
.forge-product-button-surface .q-btn.forge-btn--secondary:not(.disabled):hover,
.forge-product-button-surface .forge-btn--secondary:not([disabled]):not([aria-disabled="true"]):hover {
  background: color-mix(in srgb, var(--brand-blue) 13%, var(--bg-card)) !important;
  border-color: var(--border-strong) !important;
  color: var(--text-primary) !important;
}
.forge-product-content .q-btn.forge-btn--secondary[aria-pressed="true"] {
  background: var(--button-primary-bg) !important;
  border-color: var(--button-primary-bg) !important;
  color: var(--button-primary-text) !important;
}
.forge-product-content .q-btn.forge-btn--secondary[aria-pressed="true"]:not(.disabled):hover {
  background: var(--button-primary-bg-hover) !important;
  border-color: var(--button-primary-bg-hover) !important;
}

/* Settings section links use the same quiet rail treatment as Product navigation. */
.forge-product-content .q-btn.forge-settings-nav-item,
.forge-product-content .forge-settings-nav-item {
  justify-content: flex-start;
  border: 0 !important;
  border-left: 3px solid transparent !important;
  border-radius: var(--radius-sm) !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--text-primary) !important;
  font-weight: 400;
  text-align: left;
  transition: background-color 140ms ease, color 140ms ease !important;
}
.forge-product-content .q-btn.forge-settings-nav-item::before,
.forge-product-content .forge-settings-nav-item::before {
  border: 0 !important;
  box-shadow: none !important;
}
.forge-product-content .q-btn.forge-settings-nav-item .q-focus-helper,
.forge-product-content .forge-settings-nav-item .q-focus-helper {
  display: none !important;
}
.forge-product-content .q-btn.forge-btn.forge-settings-nav-item .q-btn__content,
.forge-product-content .forge-btn.forge-settings-nav-item .q-btn__content {
  justify-content: flex-start;
  text-align: left;
}
.forge-product-content .q-btn.forge-settings-nav-item:not(.disabled):hover,
.forge-product-content .forge-settings-nav-item:not([disabled]):hover {
  background: var(--bg-hover) !important;
}
.forge-product-content .q-btn.forge-settings-nav-item.is-active,
.forge-product-content .forge-settings-nav-item.is-active {
  border-left-color: var(--brand-blue) !important;
  background: var(--bg-hover) !important;
  color: var(--brand-blue) !important;
  font-weight: 600;
}
.forge-product-content .q-btn.forge-settings-nav-item:focus-visible,
.forge-product-content .forge-settings-nav-item:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: -2px;
}
@media (max-width: 720px) {
  .forge-product-content .q-btn.forge-settings-nav-item.is-active,
  .forge-product-content .forge-settings-nav-item.is-active {
    border-left-color: transparent !important;
    border-bottom: 0 !important;
    box-shadow: inset 0 -2px var(--brand-blue) !important;
  }
}

.forge-product-content .q-btn.forge-btn--danger,
.forge-product-content .forge-btn--danger,
.forge-product-button-surface .q-btn.forge-btn--danger,
.forge-product-button-surface .forge-btn--danger {
  background: var(--tint-red) !important;
  border: 1px solid var(--border-danger) !important;
  color: var(--brand-red) !important;
  box-shadow: none !important;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease !important;
}
.forge-product-content .q-btn.forge-btn--danger:not(.disabled):hover,
.forge-product-content .forge-btn--danger:not([disabled]):not([aria-disabled="true"]):hover,
.forge-product-button-surface .q-btn.forge-btn--danger:not(.disabled):hover,
.forge-product-button-surface .forge-btn--danger:not([disabled]):not([aria-disabled="true"]):hover {
  background: color-mix(in srgb, var(--tint-red) 72%, var(--brand-red)) !important;
  border-color: var(--brand-red) !important;
  color: var(--brand-red) !important;
}

.forge-product-page-header .forge-btn--navigation,
.forge-product-content .forge-btn--navigation,
.forge-scope-banner .forge-btn--navigation,
.forge-product-page-header .forge-back-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-pill);
  color: var(--text-secondary) !important;
  background: var(--bg-card) !important;
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none !important;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}
.forge-product-page-header .forge-btn--navigation:hover,
.forge-product-content .forge-btn--navigation:hover,
.forge-scope-banner .forge-btn--navigation:hover,
.forge-product-page-header .forge-back-link:hover {
  color: var(--text-primary) !important;
  background: var(--bg-hover) !important;
  border-color: var(--border-strong) !important;
  text-decoration: none !important;
}
.forge-product-page-header .forge-btn--navigation:focus-visible,
.forge-product-content .forge-btn--navigation:focus-visible,
.forge-scope-banner .forge-btn--navigation:focus-visible,
.forge-product-page-header .forge-back-link:focus-visible {
  outline: 2px solid var(--brand-brown);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .forge-product-content .q-btn.forge-btn--secondary,
  .forge-product-content .forge-btn--secondary,
  .forge-product-button-surface .q-btn.forge-btn--secondary,
  .forge-product-button-surface .forge-btn--secondary,
  .forge-product-content .q-btn.forge-btn--danger,
  .forge-product-content .forge-btn--danger,
  .forge-product-button-surface .q-btn.forge-btn--danger,
  .forge-product-button-surface .forge-btn--danger,
  .forge-product-page-header .forge-btn--navigation,
  .forge-product-content .forge-btn--navigation,
  .forge-scope-banner .forge-btn--navigation,
  .forge-product-page-header .forge-back-link { transition: none !important; }
}

/* Scope: keep the title/action on one header line and make the two review
   stages read as separate controls rather than a line running through text. */
.forge-stage-surface .forge-scope-stage-header-row {
  position: relative;
  align-items: flex-start !important;
  gap: 16px;
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: 0;
}
.forge-stage-surface .forge-scope-stage-header-row > .forge-scope-stage-header {
  flex: 1 1 100%;
}
.forge-stage-surface .forge-stage-header-row .forge-stage-header-actions-live {
  position: absolute;
  top: -12px;
  right: 0;
}
.forge-scope-regulation-list { gap: 8px; }
.forge-scope-regulation-header { margin-bottom: 8px; }
.forge-scope-status-filter {
  align-self: center;
  margin: 0;
}
.forge-scope-regulation-nav .q-btn.forge-scope-status-filter {
  border-color: transparent !important;
  background: transparent !important;
  color: var(--text-secondary) !important;
  box-shadow: none !important;
  font-weight: 500;
}
.forge-scope-regulation-nav .q-btn.forge-scope-status-filter:hover {
  border-color: transparent !important;
  background: var(--surface-secondary) !important;
  color: var(--text-primary) !important;
}
.forge-scope-status-filter .q-btn__content { gap: 6px; }
.forge-scope-status-menu .q-list {
  min-width: 176px;
  padding: 5px;
}
.forge-scope-status-menu .q-item {
  min-height: 36px;
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 13px;
}
.forge-scope-status-menu .q-item:hover,
.forge-scope-status-menu .q-item:focus-visible {
  background: var(--surface-secondary);
}
.forge-scope-regulation-entry {
  gap: 0;
  padding: 0;
  border: 0;
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
}
.forge-scope-regulation-entry.is-selected {
  border-left-color: var(--brand-blue);
  background: var(--bg-hover);
}
.forge-scope-regulation-entry__button {
  font-weight: 500;
  text-align: left;
}
.forge-scope-regulation-entry__heading .q-btn.forge-scope-regulation-entry__button {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--text-primary) !important;
}
.forge-scope-regulation-entry.is-selected .q-btn.forge-scope-regulation-entry__button {
  color: var(--brand-blue) !important;
  font-weight: 600;
}
.forge-scope-regulation-entry__heading .q-btn.forge-scope-regulation-entry__button:hover {
  background: transparent !important;
}
.forge-scope-regulation-entry__button .q-btn__content {
  justify-content: flex-start;
  text-align: left;
}
.forge-scope-regulation-entry__meta {
  padding: 0 6px;
}
.forge-scope-regulation-entry__heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  flex-wrap: nowrap;
  min-width: 0;
  padding: 2px 8px 2px 6px;
}
.forge-scope-regulation-entry__heading .forge-scope-regulation-nav__status {
  flex: 0 0 auto;
  margin: 0;
  padding: 3px 7px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill);
  background: var(--surface-primary);
  font-size: 10px;
}
.forge-scope-regulation-entry__heading .forge-scope-regulation-nav__status--applied {
  border-color: color-mix(in srgb, var(--brand-green) 28%, var(--border));
  background: color-mix(in srgb, var(--brand-green) 7%, var(--surface-primary));
}
.forge-scope-regulation-entry__reference {
  margin-left: 10px;
  line-height: 1.3;
}
.forge-scope-regulation-nav__title {
  margin-bottom: 0;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.forge-scope-applicability-panel,
.forge-scope-obligations-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.forge-scope-obligations-panel .forge-scope-obligations-toolbar {
  min-height: 36px;
  margin-top: 0;
  padding-bottom: 0;
}
.forge-scope-applicability-panel .scope-decision-review {
  display: grid;
  gap: 10px;
  margin: 0;
  color: var(--text-primary);
}
.forge-scope-applicability-panel .scope-decision-review__authority {
  width: fit-content;
  margin: 0;
  padding: 0;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  font-weight: 650;
}
.forge-scope-applicability-panel .scope-decision-review__body {
  max-width: 72ch;
  margin: 0;
  color: var(--text-primary);
  font-size: var(--text-base);
  line-height: 1.5;
}
.forge-scope-applicability-panel .scope-decision-review__provenance {
  margin: 0;
  padding: 0;
  color: var(--text-secondary);
  font-size: var(--text-xs);
  line-height: 1.45;
}
.forge-scope-applicability-panel .scope-decision-brief__section {
  margin: 2px 0 0;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
}
.forge-scope-applicability-panel .scope-decision-review__evidence {
  margin: 0;
  border-radius: var(--radius-md);
  background: var(--surface-primary);
}
.forge-scope-applicability-panel .scope-decision-review__boundary {
  margin: 0;
  padding: 0;
  color: var(--text-muted);
  font-size: var(--text-sm);
  line-height: 1.45;
}
.forge-scope-applicability-panel .scope-decision-review__blocked {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--brand-amber) 34%, var(--border));
  border-radius: var(--radius-md);
  color: var(--text-primary);
  background: color-mix(in srgb, var(--brand-amber) 7%, var(--surface-primary));
}
.forge-scope-applicability-panel .forge-scope-human-decision {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.45;
}
.forge-scope-decision-actions {
  margin-top: 4px;
  padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
  gap: 4px;
}
.forge-scope-obligation-card {
  gap: 0 !important;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-primary);
}
.forge-scope-obligation-card .forge-scope-obligation-decision-panel,
.forge-scope-obligation-card .forge-scope-obligation-decision-body {
  display: block;
  gap: 0;
}
.forge-scope-obligation-card .scope-review-card {
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.forge-scope-obligation-card .scope-review-card > summary {
  padding: 14px 16px;
}
.forge-scope-obligation-card .forge-scope-obligation-decision-actions {
  margin: 0;
  padding: 10px 16px;
  border-top: 1px solid var(--border-subtle);
}
.forge-scope-obligation-card .forge-scope-obligation-decision-actions__label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  clip-path: inset(50%);
}
.forge-scope-obligation-card .scope-review-card__meta {
  overflow-wrap: anywhere;
}
@media (max-width: 720px) {
  .forge-stage-surface .forge-stage-header-row .forge-stage-header-actions-live {
    position: static;
    justify-content: flex-start;
  }
  .forge-scope-obligation-card .forge-scope-obligation-decision-actions {
    padding: 10px 12px;
  }
}

/* Library catalog shared workspace */
.forge-library-catalog__results { min-width: 0; overflow: hidden; border: 1px solid var(--border-subtle); border-radius: 10px; background: var(--bg-card); }
.forge-data-table-wrap .forge-data-table__expand { margin: 0; }
.forge-expand-cell { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.forge-expand-cell > span { min-width: 0; }
.forge-data-table__expand-icon { transition: transform 0.14s var(--ease-out-quart); }
.forge-data-table__expand[aria-expanded="true"] .forge-data-table__expand-icon { transform: rotate(180deg); }
@media (prefers-reduced-motion: reduce) {
  .forge-data-table__expand-icon { transition: none; }
}
.forge-data-table-wrap [class~="forge-data-table__details"] > td { padding: 0 !important; background: var(--bg-soft); }
.forge-data-table-wrap [class~="forge-data-table__details-panel"] { padding: 16px 20px; white-space: normal; overflow-wrap: anywhere; }
.forge-data-table-wrap[aria-label="Provider feeds"] [class~="forge-data-table__details"] > td { background: transparent; }
.monitoring-provider-feed-scroll {
  width: 100%;
  min-width: 0;
  overflow-x: auto;
}
.monitoring-provider-feed-scroll > div { min-width: max-content; }
.forge-data-table-wrap[aria-label="Provider feeds"] .forge-data-table { table-layout: auto; }
.forge-data-table-wrap[aria-label="Provider feeds"] [class~="forge-data-table__details-panel"] {
  padding: var(--space-0) var(--space-4) var(--space-2) calc(var(--space-8) + var(--space-2));
}
.monitoring-source-family-list { display: grid; }
.monitoring-source-family-row { display: grid; grid-template-columns: var(--layout-monitoring-source-family-grid-columns); align-items: center; gap: 12px; min-height: var(--layout-monitoring-source-family-row-min-block-size); border-top: 1px solid var(--border-subtle); }
.monitoring-source-family-row__selection { display: flex; align-items: center; justify-content: center; }
.monitoring-source-family-row__name { min-width: 0; color: var(--text-primary); }
.monitoring-source-family-row__status { color: var(--text-muted); }
.monitoring-source-family-list__empty { padding: 8px 0; color: var(--text-muted); }

/* Source review findings are semantic table rows; keep legacy row hooks from
   turning each <tr> into a grid and let the shared table own its columns. */
.forge-data-table tbody tr.source-doc-review-item {
  display: table-row;
  grid-template-columns: none;
  gap: 0;
}
.forge-library-catalog__row-details { display: grid; gap: 12px; }
.forge-library-record__tabs { margin:16px 0; }
.forge-library-record__tab-content { display:grid; gap:0; min-width:0; }
.forge-record-facts { display: grid; gap: var(--space-4); min-width: 0; }
.forge-record-facts__list { display: grid; grid-template-columns: var(--layout-responsive-card-grid-columns); gap: var(--space-4); margin: 0; }
.forge-record-facts__item { min-width: 0; }
.forge-record-facts__label { color: var(--text-muted); }
.forge-record-facts__value { margin-block-start: var(--space-1); color: var(--text-primary); overflow-wrap: anywhere; }
.forge-record-facts__value a { color: var(--brand-blue-bright); text-underline-offset: var(--space-0-5); }
.forge-library-catalog__row-details-title { color: var(--text-primary); font-weight: 650; }
.forge-library-catalog__row-details-title:empty { display:none; }
.forge-library-catalog__detail-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: 10px 18px; margin: 0; }
.forge-library-catalog__detail-field { min-width: 0; }
.forge-library-catalog__detail-field dt { color: var(--text-muted); font-size: .72rem; font-weight: 650; }
.forge-library-catalog__detail-field dd { margin: 2px 0 0; color: var(--text-secondary); overflow-wrap: anywhere; }
.forge-library-catalog__detail-links { display: flex; flex-wrap: wrap; gap: 12px; }
.forge-library-catalog__record-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.forge-library-catalog__record-actions > form { flex: 0 0 100%; }
.forge-library-catalog__edit-form, .forge-library-catalog__retire-form { display: grid; gap: 10px; }
.forge-library-catalog__edit-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 10px; }
.forge-library-catalog__edit-field { display: grid; gap: 4px; color: var(--text-muted); font-size: .78rem; }
.forge-library-catalog__edit-field input, .forge-library-catalog__edit-field textarea { box-sizing: border-box; width: 100%; min-width: 0; border: 1px solid var(--border-subtle); border-radius: 6px; padding: 8px 10px; color: var(--text-primary); background: var(--bg-card); font: inherit; }
.forge-library-catalog__edit-field textarea { min-height: 64px; resize: vertical; }
.forge-library-catalog__edit-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.forge-library-catalog__history { display: grid; gap: 8px; border-top: 1px solid var(--border-subtle); padding-top: 12px; color: var(--text-secondary); }
.forge-library-catalog__history ol { display: grid; gap: 10px; margin: 0; padding-inline-start: 20px; }
.forge-library-catalog__history p { margin: 3px 0 0; }
.forge-library-catalog__retire-form details { display: grid; gap: 10px; }
.forge-library-catalog__retire-form summary { width: fit-content; padding: 7px 12px; border: 1px solid var(--border-subtle); border-radius: 999px; color: var(--text-secondary); cursor: pointer; list-style: none; }
.forge-library-catalog__retire-form summary::-webkit-details-marker { display:none; }
.forge-library-catalog__retire-form details[open] summary { margin-bottom: 2px; }
.forge-library-kpis .kpi-strip { --kpi-strip-columns: 4 !important; grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 900px) { .forge-library-kpis .kpi-strip { --kpi-strip-columns: 2 !important; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) {
  .forge-library-kpis .kpi-strip { --kpi-strip-columns: 1 !important; grid-template-columns: minmax(0, 1fr); }
  .forge-draft-drawer {
    inset-inline-start: var(--space-1);
    width: var(--layout-draft-preview-drawer-fluid-inline-size);
  }
}
.forge-regulations-panels, .forge-regulations-panels * { min-width: 0; }

/* Home dashboard: one calm type system, flat sections, and compact data marks. */
.home-dashboard-page .forge-page-title {
  color: var(--text-primary);
}
.home-dashboard-page .forge-section-header,
.home-dashboard-page .home-regulatory-timeline-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px 16px;
  margin: 0 0 12px;
}
.home-dashboard-page .forge-section-copy { display: block; min-width: 0; }
.home-dashboard-page .forge-section-eyebrow,
.home-dashboard-page .home-regulatory-timeline-header h2,
.home-dashboard-page .home-followup-products > h2,
.home-dashboard-page .home-followup-group h3 {
  margin: 0;
  color: var(--text-primary);
}
.home-regulatory-timeline,
.home-lifecycle-status,
.home-followup-products,
.home-workflow-list {
  box-sizing: border-box;
  width: 100%;
  padding: 18px 20px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--bg-card);
  box-shadow: none;
}
.home-regulatory-timeline-header { margin-bottom: 12px; }
.home-regulatory-timeline-header > a,
.home-regulatory-source {
  color: var(--brand-blue);
  text-underline-offset: 3px;
}
.home-regulatory-timeline-items {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.home-regulatory-timeline-items::before {
  position: absolute;
  top: 6px;
  right: 8px;
  left: 8px;
  height: 1px;
  background: var(--border-subtle);
  content: "";
}
.home-regulatory-timeline-items--single::before { display: none; }
.home-regulatory-milestone {
  position: relative;
  display: grid;
  align-content: start;
  justify-items: start;
  gap: 4px;
  min-width: 0;
  padding: 20px 0 0;
}
.home-regulatory-milestone::before {
  position: absolute;
  top: 1px;
  left: 0;
  width: 10px;
  height: 10px;
  border: 2px solid var(--brand-info);
  border-radius: 50%;
  background: var(--bg-page);
  content: "";
}
.home-regulatory-milestone time {
  color: var(--brand-info);
  font-variant-numeric: tabular-nums;
}
.home-regulatory-kind { color: var(--text-muted); }
.home-regulatory-milestone h3 {
  margin: 0;
  color: var(--text-primary);
  overflow-wrap: anywhere;
}
.home-regulatory-milestone p { margin: var(--space-0); color: var(--text-secondary); }
.home-regulatory-timeline-empty.forge-empty-state {
  display: block;
  min-height: 0;
  padding: 2px 0 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
}
.home-workflow-list .home-portfolio-empty.forge-empty-state {
  display: block;
  min-height: 0;
  padding: 8px 0 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
}
.home-workflow-list .home-portfolio-empty .forge-empty-icon { display: none; }
.home-workflow-list .home-portfolio-empty .forge-empty-title {
  color: var(--text-secondary);
}
.home-workflow-list .home-portfolio-empty .forge-empty-hint {
  margin-top: 2px;
  color: var(--text-muted);
}
.home-workflow-list .home-portfolio-empty .forge-empty-cta { margin: 8px 0 0; }
.home-workflow-list-header { margin-bottom: 12px; }
.home-workflow-list-title {
  color: var(--text-primary);
}
.home-regulatory-timeline-empty .forge-empty-icon { display: none; }
.home-regulatory-timeline-empty .forge-empty-title {
  color: var(--text-secondary);
}
.home-regulatory-timeline-empty .forge-empty-hint {
  margin-top: 2px;
  color: var(--text-muted);
}
.home-regulatory-timeline-skeleton { min-height: 42px; background: transparent; }
.home-lifecycle-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.home-lifecycle-total { color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.home-lifecycle-stages {
  position: relative;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  align-items: start;
  width: 100%;
  gap: 16px;
  margin-top: 18px;
}
.home-lifecycle-stages::before {
  position: absolute;
  z-index: 0;
  top: 34px;
  right: 8px;
  left: 8px;
  height: 2px;
  background: var(--border-subtle);
  content: "";
}
.home-lifecycle-stage-lane { position: relative; z-index: 1; display: grid; align-content: start; justify-items: center; min-width: 0; }
.home-lifecycle-stage-lane.is-selected .home-lifecycle-stage-node { box-shadow: 0 0 0 4px var(--bg-page), 0 0 0 6px var(--border-strong); }
.home-lifecycle-stage {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 34px;
  padding: 6px 2px 3px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text-primary);
  text-align: center;
  cursor: pointer;
}
.home-lifecycle-stage:hover { color: var(--brand-blue); }
.home-lifecycle-stage:focus-visible,
.home-lifecycle-product:focus-visible,
.home-lifecycle-more:focus-visible {
  outline: 2px solid var(--border-strong);
  outline-offset: 3px;
}
.home-lifecycle-stage-count {
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
}
.home-lifecycle-stage-node { width: 12px; height: 12px; margin: 8px 0 3px; border-radius: 50%; background: var(--brand-info); }
.home-lifecycle-stage-label {
  min-width: 0;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.home-lifecycle-products {
  display: grid;
  align-content: start;
  gap: 2px;
  min-width: 0;
  padding-top: 6px;
  border-top: 1px solid var(--border-subtle);
}
.home-lifecycle-product {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 4px 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  text-decoration: none;
}
.home-lifecycle-product + .home-lifecycle-product { border-top: 1px solid var(--border-subtle); }
.home-lifecycle-product:hover,
.home-lifecycle-product:focus-visible { background: var(--bg-page); }
.home-lifecycle-product-name { color: var(--text-primary); overflow-wrap: anywhere; }
.home-lifecycle-product-meta { color: var(--text-muted); overflow-wrap: anywhere; }
.home-lifecycle-more {
  justify-self: start;
  height: auto;
  min-height: 0;
  max-height: none;
  padding: 3px 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--brand-blue);
}
.home-lifecycle-stage-skeleton {
  min-height: 142px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--bg-page);
}
.home-lifecycle-footer { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border-subtle); }
.home-lifecycle-footer .forge-fbar { margin: 0; }
.home-followup-products {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: 14px 24px;
}
.home-followup-products > h2 {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--text-secondary);
}
.home-followup-group { min-width: 0; padding: 0; border: 0; background: transparent; }
.home-followup-group h3 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 6px;
  color: var(--text-primary);
}
.home-followup-group .home-lifecycle-products { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0 16px; }
@media (max-width: 1100px) {
  .home-lifecycle-stages { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .home-lifecycle-stages::before { display: none; }
}
@media (max-width: 640px) {
  .home-regulatory-timeline,
  .home-lifecycle-status,
  .home-followup-products,
  .home-workflow-list { padding: 14px 12px; }
  .home-regulatory-timeline-items { grid-template-columns: 1fr; gap: 10px; }
  .home-regulatory-timeline-items::before { top: 0; bottom: 0; left: 5px; width: 1px; height: auto; }
  .home-regulatory-milestone { padding: 0 0 0 22px; }
  .home-regulatory-milestone::before { top: 2px; left: 0; }
  .home-lifecycle-stages { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .home-lifecycle-footer { margin-top: 12px; padding-top: 12px; }
}

/* Current semantic hooks for reviewable product and catalog actions. */
.forge-inline-error,
.source-doc-external-artifacts-unavailable {
  margin-block: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--border-danger);
  border-inline-start: 3px solid var(--brand-red);
  border-radius: var(--radius-md);
  background: var(--tint-red);
  color: var(--text-primary);
}
.forge-product-delete-btn--table,
.forge-source-delete-btn { display: inline-flex; }
.forge-product-rail-track-child { padding-inline-start: var(--space-4); }
.forge-product-track-tabs { display: flex; gap: var(--space-2); }
.forge-scope-applicability-driver,
.forge-scope-assessment-suggestion { margin-block: var(--space-2); }
.forge-library-catalog__action { white-space: nowrap; }
.forge-library-catalog__readonly-note { color: var(--text-secondary); font-size: var(--text-sm); }
.forge-requirements-target-assignment {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}
.forge-attest-stage { min-width: 0; }
.forge-attest-target-card {
  display: grid;
  gap: var(--space-3);
}
.forge-reg-profile-context {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
}

/* Document registry detail drawer */
.forge-doc-drawer-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1190;
  background: var(--overlay-scrim);
}
.forge-doc-drawer {
  position: fixed;
  inset-block: 0;
  inset-inline-end: 0;
  z-index: 1191;
  display: flex;
  flex-direction: column;
  width: var(--layout-drawer-width);
  max-width: var(--layout-drawer-max-inline-size);
  overflow: auto;
  background: var(--bg-card);
  color: var(--text-primary);
  border-inline-start: 1px solid var(--border-subtle);
  box-shadow: var(--shadow-xl);
}
.forge-doc-drawer[hidden],
.forge-doc-drawer-backdrop[hidden] { display: none; }
.forge-doc-drawer__header,
.forge-doc-drawer__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background: var(--bg-card);
}
.forge-doc-drawer__header { border-bottom: 1px solid var(--border-subtle); }
.forge-doc-drawer__heading { flex: 1 1 auto; }
.forge-doc-drawer__title { color: var(--text-primary); }
.forge-doc-drawer__subtitle { margin-top: var(--space-2); }
.forge-doc-drawer__close { flex: none; }
.forge-doc-drawer__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-5);
}
.forge-doc-drawer__placeholder,
.forge-doc-drawer__distribution-state { color: var(--text-secondary); }
.forge-doc-drawer__metadata {
  display: grid;
  grid-template-columns: var(--layout-responsive-card-grid-columns);
  gap: var(--space-4);
}
.forge-doc-drawer__field { display: grid; gap: var(--space-1); }
.forge-doc-drawer__label { color: var(--text-secondary); }
.forge-doc-drawer__value { color: var(--text-primary); overflow-wrap: anywhere; }
.forge-doc-drawer__gaps {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border-amber);
  border-radius: var(--radius-md);
  background: var(--tint-amber);
}
.forge-doc-drawer__gap-link { display: inline-block; margin-top: var(--space-2); }
.forge-doc-drawer__preview { overflow: auto; }
.forge-doc-drawer__preview-frame {
  display: block;
  width: var(--layout-drawer-width);
  max-width: var(--layout-drawer-max-inline-size);
  height: var(--layout-document-preview-height);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}
.forge-doc-drawer__preview-unavailable { color: var(--text-secondary); }
.forge-doc-drawer__footer {
  justify-content: flex-end;
  flex-wrap: wrap;
  border-top: 1px solid var(--border-subtle);
}
.forge-doc-drawer__action { flex-shrink: 1; }
body.forge-doc-drawer-open { overflow: hidden; }

@media (max-width: 720px) {
  .forge-reg-profile-context { flex-wrap: wrap; align-items: flex-start; }
  .forge-doc-drawer__header,
  .forge-doc-drawer__body,
  .forge-doc-drawer__footer { padding-inline: var(--space-4); }
}
.forge-regulation-detail-summary { color: var(--text-secondary); }
.forge-regulation-detail-section { display: grid; gap: var(--space-2); margin-block-start: var(--space-4); }
.forge-regulation-detail-section-title { color: var(--text-muted); }
.forge-regulation-detail-facts { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.forge-regulation-detail-fact { flex: 1 1 var(--layout-card-min-width); padding: var(--space-3); border-radius: var(--radius-md); background: var(--bg-card); }
.forge-regulation-detail-fact-label { margin-block-end: var(--space-1); }
.forge-regulation-detail-fact-value { overflow-wrap: anywhere; }
.forge-regulation-detail-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.forge-regulation-detail-chip { padding: var(--space-1) var(--space-2); border-radius: var(--radius-pill); background: var(--bg-soft); }
.forge-regulation-detail-list { margin-block: var(--space-0); padding-inline-start: var(--space-4); color: var(--text-secondary); }
.forge-regulation-detail-source-spans { display: grid; gap: var(--space-3); }
.forge-regulation-detail-source-span { display: grid; gap: var(--space-1); padding: var(--space-3); border-radius: var(--radius-md); background: var(--bg-soft); }
.forge-regulation-detail-source-span-label { color: var(--text-muted); }
.forge-regulation-detail-source-span-text { color: var(--text-secondary); overflow-wrap: anywhere; }
.forge-regulation-detail-muted { color: var(--text-muted); }
.forge-regulation-detail-profile-link { margin-block-start: var(--space-3); }

/* Shared semantic key/value metadata grid. */
.forge-key-value-grid {
  display: grid;
  grid-template-columns: var(--layout-responsive-card-grid-columns);
  gap: var(--space-4);
}

.forge-key-value-grid__cell {
  display: grid;
  gap: var(--space-1);
}

.forge-key-value-grid__value {
  overflow-wrap: anywhere;
}

html.forge-action-toast-js-ready .q-notification.forge-action-toast-model {
  /* The global head script publishes the same lifecycle through the browser toast. */
  display: none !important;
}

/* Portfolio uses the existing Product workspace and picker surfaces. */
.forge-portfolio-description {
  margin: 0 0 var(--space-2);
}
.forge-portfolio-toolbar {
  flex-wrap: wrap;
  margin-block: var(--space-3);
}
.forge-portfolio-search {
  flex: 1 1 var(--layout-card-min-width);
  min-width: 0;
}
.forge-portfolio-filter {
  flex: 0 1 var(--layout-card-min-width);
  min-width: 0;
}
.forge-portfolio-result-count {
  margin-left: auto;
  white-space: nowrap;
}
.forge-portfolio-subject-grid {
  gap: var(--space-3);
}
.forge-portfolio-subject-card {
  display: flex;
  min-width: 0;
  background: var(--bg-card);
  border: var(--border-width-default) solid var(--border-subtle);
  border-radius: var(--radius-card);
  transition: border-color var(--motion-fast) var(--ease-out-quart),
    box-shadow var(--motion-fast) var(--ease-out-quart);
}
.forge-portfolio-subject-card:hover {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-sm);
}
.forge-card__body,
.forge-portfolio-subject-card__link {
  color: inherit;
  text-decoration: none;
}
.forge-card__body {
  display: block;
  padding: var(--space-4);
}
.forge-portfolio-subject-card__link {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
  padding: var(--space-4);
}
.forge-portfolio-subject-card__link:focus-visible {
  position: relative;
  z-index: 1;
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
  border-radius: var(--radius-card);
}
.forge-card--compact { min-width: var(--layout-card-min-width); }
.forge-portfolio-subject-card__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.forge-status-pill { padding: var(--space-1) var(--space-2); border-radius: var(--radius-pill); background: var(--bg-soft); color: var(--text-secondary); }
.forge-portfolio-subject-overview,
.forge-portfolio-subject-data,
.forge-subject-compliance-summary { min-width: 0; }
.forge-portfolio-use-row { gap: var(--space-3); padding-block: var(--space-2); border-bottom: 1px solid var(--border-subtle); }

/* Clean private-conversation drawer. */
.assistant-drawer-header {
  flex: 0 0 auto;
  padding: var(--space-3) var(--space-4);
}
.assistant-drawer-toolbar {
  flex: 0 0 auto;
  gap: var(--space-1);
  padding-inline: var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
}
.assistant-drawer-toolbar .assistant-toolbar-action {
  border-radius: var(--radius-pill);
}
.assistant-drawer-toolbar .assistant-toolbar-action.is-active {
  background: var(--bg-hover) !important;
  color: var(--text-primary) !important;
}
.assistant-history-view {
  flex: 1;
  gap: var(--space-3);
  overflow: hidden;
  padding: var(--space-4);
}
.assistant-history-title {
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 650;
}
.assistant-history-search .q-field__control {
  min-height: var(--forge-control-height-md);
  border-radius: var(--radius-md);
  background: var(--bg-card);
}
.assistant-history-search .q-field__native,
.assistant-history-search .q-field__input {
  color: var(--text-primary);
  font-size: var(--text-sm);
}
.assistant-history-results {
  flex: 1;
  gap: var(--space-1);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-bottom: var(--space-2);
}
.assistant-history-date {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 650;
}
.assistant-history-row {
  gap: var(--space-1);
  min-width: 0;
  border-radius: var(--radius-md);
  transition: background-color var(--motion-fast) var(--ease-out-quart);
}
.assistant-history-row:hover,
.assistant-history-row:focus-within {
  background: var(--bg-hover);
}
.assistant-history-row .assistant-history-open {
  flex: 1;
  justify-content: flex-start;
  min-width: 0;
  overflow: hidden;
  border: none !important;
  background: transparent !important;
  color: var(--text-primary) !important;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.assistant-history-row .assistant-history-open .q-btn__content {
  justify-content: flex-start;
  overflow: hidden;
  text-overflow: ellipsis;
}
.assistant-history-row .assistant-history-more,
.assistant-history-row .assistant-history-delete {
  min-width: var(--forge-control-height-sm);
  width: var(--forge-control-height-sm);
  padding: 0 !important;
  border: none !important;
  background: transparent !important;
}
.assistant-history-row .assistant-history-delete {
  color: var(--text-secondary) !important;
  opacity: .72;
}
.assistant-history-row .assistant-history-delete:hover {
  color: var(--brand-red) !important;
  background: var(--bg-card) !important;
}
.assistant-history-more-results {
  align-self: flex-start;
}
.assistant-history-inline-error {
  color: var(--text-danger);
  font-size: var(--text-xs);
}
.assistant-messages {
  padding: var(--space-3) var(--space-4);
}
.assistant-progress-status {
  color: var(--text-secondary);
  font-size: var(--text-xs);
}
.assistant-progress-status:empty {
  display: none;
}
.assistant-composer .q-field__control {
  min-height: 54px;
  border-radius: var(--radius-pill);
  background: var(--bg-card);
  box-shadow: var(--shadow-sm);
}
.assistant-composer .q-field__native {
  padding-block: var(--space-2);
  color: var(--text-primary);
}
.assistant-composer-actions .assistant-send-control {
  min-width: var(--forge-control-height-md);
  width: var(--forge-control-height-md);
  height: var(--forge-control-height-md);
  padding: 0 !important;
  border-radius: 50% !important;
}
.assistant-stop-control {
  color: var(--brand-red) !important;
}
.assistant-composer-actions .forge-btn--md:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
@media (hover: none) {
  .assistant-history-row .assistant-history-delete { opacity: 1; }
}
@media (max-width: 600px) {
  .assistant-drawer-header { padding-inline: var(--space-3); }
  .assistant-drawer-toolbar { padding-inline: var(--space-3); }
  .assistant-history-view { padding-inline: var(--space-3); }
  .assistant-messages { padding-inline: var(--space-3); }
}
@media (prefers-reduced-motion: reduce) {
  .assistant-history-row { transition: none; }
}

@media (max-width: 760px) {
  .forge-portfolio-search {
    flex-basis: 100%;
  }
  .forge-portfolio-filter {
    flex: 1 1 0;
  }
  .forge-portfolio-result-count {
    flex-basis: 100%;
    margin-left: 0;
  }
}
