.module-nqc {
  --nqc-accent: 91 205 198;
  --nqc-blue: 93 155 255;
  --nqc-ok: 83 214 151;
  --nqc-warn: 240 190 80;
  --nqc-danger: 230 86 111;
  --nqc-bg: #071019;
  --nqc-surface: #0d1926;
  --nqc-raised: #122334;
  --nqc-border: rgba(117, 201, 255, .18);
  --nqc-soft-border: rgba(255, 255, 255, .07);
  --nqc-text: rgba(244, 250, 255, .97);
  --nqc-soft: rgba(204, 224, 241, .85);
  --nqc-muted: rgba(148, 174, 198, .72);
  width: 100%; min-width: 0; color: var(--nqc-text);
  font: 12px/1.45 Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* PATCH 2026-08-25 17:12 | Read-only EMC Sample Design provenance in NQC. */
.module-nqc .nqc-governed-design { margin-top: 1rem; padding: 1rem; border: 1px solid rgba(74, 144, 122, .3); border-radius: 1rem; background: rgba(255, 255, 255, .34); min-width: 0; }
.module-nqc .nqc-governed-design > header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.module-nqc .nqc-governed-design h4 { margin: .55rem 0 0; }
.module-nqc .nqc-governed-design > header dl { display: flex; gap: 1rem; margin: 0; }
.module-nqc .nqc-governed-design > header dl div { min-width: 0; }
.module-nqc .nqc-governed-design dt { color: var(--nqc-muted, #7886a4); font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; }
.module-nqc .nqc-governed-design dd { margin: .2rem 0 0; }
.module-nqc .nqc-governed-design code { display: inline-block; max-width: 15rem; overflow: hidden; text-overflow: ellipsis; vertical-align: bottom; }
.module-nqc .nqc-design-state { display: block; color: var(--nqc-muted, #7886a4); font-size: .72rem; }
@media (max-width: 760px) { .module-nqc .nqc-governed-design > header, .module-nqc .nqc-governed-design > header dl { flex-direction: column; } }
.module-nqc, .module-nqc * { box-sizing: border-box; }
.module-nqc button, .module-nqc input, .module-nqc select, .module-nqc textarea { font: inherit; }
.module-nqc h2, .module-nqc h3, .module-nqc h4, .module-nqc p { margin-top: 0; }
.module-nqc code { font-family: "IBM Plex Mono", "JetBrains Mono", monospace; }
/* .nqc-shell { padding: 12px; border: 1px solid var(--nqc-border); border-radius: 20px; background: radial-gradient(circle at 10% 0, rgba(var(--nqc-accent), .15), transparent 38%), linear-gradient(180deg, #111e2c, var(--nqc-bg)); box-shadow: 0 22px 55px rgba(0,0,0,.46); } */
.nqc-header, .nqc-section-heading, .nqc-actions, .nqc-title-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
/* PATCH 2026-08-31 | Single coherent module header on the ZAR Datasets header
   structure. .nqc-header is one clean band: heading stack (kicker + title line
   + subtitle) on the left, .nqc-status pinned top-right, a hairline divider
   below. All hooks unchanged. */
.nqc-header { padding: 2px 2px 11px; margin-bottom: 10px; align-items: flex-start; border-bottom: 1px solid var(--nqc-soft-border); }
.nqc-heading { display: grid; gap: 3px; min-width: 0; }
.nqc-eyebrow, .nqc-section-heading span:first-child { color: rgb(var(--nqc-accent)); font-size: .58rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.nqc-title-row { justify-content: flex-start; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; }
.nqc-title-row h2 { margin: 1px 0; font-size: 1.02rem; letter-spacing: -.02em; }
/* Lead-in label stays muted inline; the resolved version renders as a pill
   (ZAR Datasets .zom-datasets-ver reference). [data-nqc-release-version] is the
   canonical version hook set by the shared release client — styled, never renamed. */
.nqc-version { color: var(--nqc-muted); font-size: .58rem; }
.nqc-version [data-nqc-release-version] {
  display: inline-flex;
  align-items: center;
  margin-left: 4px;
  padding: 2px 7px;
  border: 1px solid rgba(var(--nqc-accent), .32);
  border-radius: 999px;
  background: rgba(var(--nqc-accent), .10);
  color: rgb(var(--nqc-accent));
  font: 700 .62rem/1 "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;
  letter-spacing: .02em;
}
.nqc-header p, .nqc-subtitle { margin: 0; color: var(--nqc-muted); font-size: .67rem; }
.nqc-header .nqc-status { align-self: flex-end; }

/* When Normalization & QC is the active MARSS dock tool it owns one coherent
   header:
   1) the shared dock chrome strip (nav/partials/gb-marss-dock.php) is taken out
      of the column flow so it reserves no space and leaves no empty band;
   2) normalization_qc.init.js re-parents the shared close control into
      .nqc-header (top-right, on the GENEBEAN · MARSS row) and swaps its text to
      "−". It is the SAME button element — [data-gb-marss-tool-slide-close] hook,
      click handler and aria-label are untouched — and both parent and text are
      restored when another MARSS tool becomes active. Here it is styled as a
      minimal flat window control: no box, no background, hover changes only the
      glyph colour. NQC-scoped; other MARSS modules are unaffected. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .gb-marss-tool-slide__header {
  position: absolute;
  inset: 0 0 auto auto;
  padding: 0;
  border-bottom: none;
  background: none;
  pointer-events: none;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .gb-marss-tool-slide__header > div {
  display: none;
}

/* Fixed NQC header + owned scroll viewport -----------------------------------
   BEFORE: .gb-marss-tool-slide__body (the shared dock body) owned overflow-y
   for the whole NQC panel, so its scrollbar ran the full card height — beside
   the header and across the rounded top corners.

   AFTER: for NQC only, the shared body stops scrolling and becomes a flex
   column that just clips. Scroll ownership moves to .nqc-scroll — the smallest
   safe structural wrapper, added in normalization_qc.php around the four
   non-header children of .nqc-shell. .nqc-header is a flex:none sibling ABOVE
   it, genuinely outside the scroll track. The flex + min-height:0 chain carries
   the panel's bounded height down to .nqc-scroll so it can scroll.

   All NQC hooks, IDs, telemetry, stages and status/version hooks are untouched
   — .nqc-scroll is transparent to the descendant selectors JS uses. NQC-scoped;
   other MARSS modules keep the shared body scrollbar. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .gb-marss-tool-slide__body {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 0;
  overflow: hidden;                        /* no scrolling here any more */
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .gb-marss-tool-view[data-gb-marss-tool-view="normalization_qc"],
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .module-nqc,
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-shell {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
/* file_reader_main.css sets `.gb-marss-tool-slide .zom-widget { display: block
   !important }` on EVERY widget in the slide — this one included. That single
   !important severs the NQC height chain at the widget level, so nothing below
   it gets a bounded height and .nqc-scroll grows instead of scrolls. Re-assert
   the flex column here; `display` is the only property that needs !important. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .zom-widget--genebean-normalization-qc {
  display: flex !important;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}

/* Header — outside the scroll track, flush at the panel top. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header {
  flex: 0 0 auto;
  position: relative;                      /* containing block for the − control */
  z-index: 30;                             /* header shadow paints over .nqc-scroll */
  margin-bottom: 0;
  padding: 12px 12px 11px;                 /* folds in the 10px the shared body used to provide → no shift */
  /* background: var(--nqc-bg);              */  /*removed, so the header is transparent */
  border-bottom: 1px solid var(--nqc-soft-border);
  box-shadow: 0 4px 10px -6px rgba(24, 43, 82, 0.22);
}

/* .nqc-scroll — the scroll owner. Starts immediately below the header and ends
   at the bottom of the panel; it never runs beside the header or across the
   rounded top corners because the header sits above it, not inside it.
   Scrollbar: muted to nothing at rest, revealed on hover / focus-within (CSS)
   or for ~800ms after a scroll (the .is-scrolling class toggled in
   normalization_qc.init.js). Gutter always reserved → no reflow on reveal.
   Matches the existing file_reader / row_namer console-scrollbar pattern. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;            /* wheel past the end doesn't scroll the page */
  padding: 10px;                           /* == the shared body's old inset → no horizontal shift */
  scrollbar-gutter: stable;                /* Firefox: reserve the gutter */
  scrollbar-width: thin;                   /* Firefox */
  scrollbar-color: transparent transparent;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll:hover,
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll:focus-within,
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll.is-scrolling {
  scrollbar-color: rgba(91, 112, 179, 0.42) transparent;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll::-webkit-scrollbar-track {
  background: transparent;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll::-webkit-scrollbar-thumb {
  border: 3px solid transparent;
  border-radius: 999px;
  background-clip: padding-box;
  background-color: transparent;           /* invisible at rest; gutter still reserved */
  transition: background-color 0.2s ease;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll:hover::-webkit-scrollbar-thumb,
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll:focus-within::-webkit-scrollbar-thumb,
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll.is-scrolling::-webkit-scrollbar-thumb {
  background-color: rgba(91, 112, 179, 0.4);
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-scroll::-webkit-scrollbar-thumb:hover {
  background-color: rgba(91, 112, 179, 0.6);
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header > .gb-marss-tool-slide__close {
  position: absolute;
  top: 10px;
  right: 12px;
  width: auto;
  height: auto;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0 2px;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  color: var(--nqc-muted);
  font-family: inherit;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1;
  cursor: pointer;
  pointer-events: auto;
  transition: color 120ms ease;
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header > .gb-marss-tool-slide__close:hover {
  background: none;
  color: var(--nqc-text);
}
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header > .gb-marss-tool-slide__close:focus-visible {
  outline: 2px solid rgba(var(--nqc-accent), 0.55);
  outline-offset: 2px;
}
/* Keep the "Ready for review" pill clear of the corner control. */
[data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header .nqc-status {
  margin-top: 16px;
}

/* Mobile: the "Ready for review" pill collapses to a bare tick, taken out of
   flow (position: absolute) so it can never squeeze the "Normalization & QC"
   title. The label is not lost — it moves to the shared NQC tooltip overlay via
   data-tooltip on the span (normalization_qc.php). NQC-scoped, mobile only;
   desktop keeps the full pill. */
@media (max-width: 760px) {
  [data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header .nqc-status--ready {
    position: absolute;
    top: 12px;
    right: 34px;              /* left of the − minimize control (right: 12px) */
    z-index: 1;
    margin: 0;
    padding: 0;
    gap: 0;
    border: 0;
    background: none;
    font-size: 0;             /* hide the " Ready for review" text; the icon sets its own size */
    line-height: 0;
  }
  [data-gb-marss-dock-wrapper][data-active-tool="normalization_qc"] .nqc-header .nqc-status--ready > i {
    font-size: 15px;
    line-height: 1;
    color: rgb(var(--nqc-ok));
  }
}
.nqc-status, .nqc-pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid var(--nqc-soft-border); border-radius: 999px; font-size: .58rem; font-weight: 800; white-space: nowrap; }
.nqc-status--ready { color: rgb(var(--nqc-ok)); background: rgba(var(--nqc-ok), .08); }
.nqc-status--warning { color: rgb(var(--nqc-warn)); background: rgba(var(--nqc-warn), .08); }
.nqc-pill { color: rgb(var(--nqc-accent)); background: rgba(var(--nqc-accent), .08); }
/* PATCH 2026-08-25 22:56 | NQC RUN SUMMARY UNSTUCK — was sticky/top:0, pinned over scrolled table rows in the module body. */
.nqc-run-summary { position: static; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1px; overflow: hidden; margin-bottom: 10px; border: 1px solid var(--nqc-border); border-radius: 12px; background: var(--nqc-soft-border); box-shadow: 0 8px 20px rgba(0,0,0,.24); }
.nqc-run-summary div { min-width: 0; padding: 7px 9px; background: rgba(7,16,25,.96); }
.nqc-run-summary span { display: block; color: var(--nqc-muted); font-size: .52rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.nqc-run-summary strong { display: block; overflow: hidden; margin-top: 2px; color: var(--nqc-soft); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.nqc-run-summary .nqc-ok { color: rgb(var(--nqc-ok)); }
.nqc-stage-nav { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 5px; margin-bottom: 10px; }
.nqc-stage-nav button { display: flex; align-items: center; justify-content: center; gap: 5px; min-height: 36px; padding: 6px; border: 1px solid var(--nqc-soft-border); border-radius: 9px; color: var(--nqc-muted); background: rgba(17,31,47,.56); cursor: pointer; }
.nqc-stage-nav button span { display: grid; width: 18px; height: 18px; place-items: center; border-radius: 50%; background: rgba(255,255,255,.06); font-size: .56rem; }
.nqc-stage-nav button.is-active { border-color: rgba(var(--nqc-accent),.45); color: var(--nqc-text); background: rgba(var(--nqc-accent),.11); }
.nqc-stage-nav button.is-active span { background: rgb(var(--nqc-accent)); color: #061315; }
.nqc-stage { padding: 11px; border: 1px solid var(--nqc-soft-border); border-radius: 14px; background: rgba(6,14,23,.76); }
.nqc-stage[hidden] { display: none !important; }
.nqc-section-heading { margin-bottom: 10px; align-items: flex-end; }
.nqc-section-heading h3 { margin: 1px 0 0; color: rgb(var(--nqc-accent)); font-size: .82rem; }
.nqc-link-btn, .nqc-toolbar button, .nqc-plot-card header button { border: 0; color: rgb(var(--nqc-blue)); background: transparent; cursor: pointer; font-size: .59rem; }
.nqc-artifact-card { margin-bottom: 8px; padding: 10px; border: 1px solid var(--nqc-soft-border); border-radius: 11px; background: rgba(17,31,47,.62); }
.nqc-artifact-card.is-selected { border-color: rgba(var(--nqc-accent),.42); box-shadow: inset 3px 0 0 rgb(var(--nqc-accent)); }
.nqc-artifact-card.is-disabled { opacity: .58; }
.nqc-artifact-main { display: flex; gap: 8px; align-items: center; }
.nqc-artifact-main strong, .nqc-artifact-main small { display: block; }
.nqc-artifact-main small, .nqc-checksum { color: var(--nqc-muted); font-size: .58rem; }
.nqc-radio-dot { width: 10px; height: 10px; border: 3px solid rgb(var(--nqc-accent)); border-radius: 50%; box-shadow: 0 0 8px rgba(var(--nqc-accent),.55); }
.nqc-artifact-meta { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0; }
.nqc-artifact-meta span { padding: 3px 6px; border-radius: 7px; color: var(--nqc-soft); background: rgba(255,255,255,.05); font-size: .55rem; }
.nqc-block-reason { margin-top: 7px; color: rgb(var(--nqc-warn)); font-size: .6rem; }
.nqc-validation-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; margin-top: 10px; }
.nqc-validation-item { border: 1px solid var(--nqc-soft-border); border-radius: 9px; background: rgba(17,31,47,.46); }
.nqc-validation-item summary { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 7px; align-items: center; padding: 8px; cursor: pointer; list-style: none; }
.nqc-validation-item summary i, .nqc-validation-item summary strong { color: rgb(var(--nqc-ok)); }
.nqc-validation-item p { margin: 0; padding: 0 9px 9px 29px; color: var(--nqc-muted); font-size: .59rem; }
.nqc-actions { margin-top: 12px; justify-content: flex-end; }
.nqc-btn { padding: 7px 11px; border: 1px solid var(--nqc-border); border-radius: 9px; color: var(--nqc-soft); background: rgba(17,31,47,.8); cursor: pointer; font-weight: 800; }
.nqc-btn--primary { border-color: rgba(var(--nqc-accent),.45); color: #061315; background: rgb(var(--nqc-accent)); }
.nqc-btn:disabled { cursor: not-allowed; opacity: .45; }
.nqc-two-column, .nqc-config-grid, .nqc-review-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.nqc-field { display: grid; gap: 4px; margin-bottom: 8px; color: var(--nqc-muted); font-size: .58rem; font-weight: 750; }
.nqc-field select, .nqc-field input, .nqc-field textarea, .nqc-table select { width: 100%; min-width: 0; padding: 7px 8px; border: 1px solid var(--nqc-border); border-radius: 8px; color: var(--nqc-text); background: #0b1723; }
.nqc-design-map { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px; }
.nqc-design-map div { display: grid; grid-template-columns: auto 1fr; gap: 2px 6px; padding: 7px; border-radius: 8px; background: rgba(255,255,255,.04); }
.nqc-design-map small { grid-column: 2; color: var(--nqc-muted); }
.nqc-swatch { width: 9px; height: 9px; margin-top: 3px; border-radius: 50%; background: rgb(var(--nqc-blue)); }
.nqc-swatch--control { background: rgb(var(--nqc-ok)); }.nqc-swatch--two { background: rgb(var(--nqc-warn)); }.nqc-swatch--three { background: rgb(var(--nqc-accent)); }
.nqc-warning-card { display: flex; gap: 9px; padding: 10px; border: 1px solid rgba(var(--nqc-warn),.24); border-radius: 10px; color: rgb(var(--nqc-warn)); background: rgba(var(--nqc-warn),.06); }
.nqc-warning-card p { margin: 4px 0 0; color: var(--nqc-soft); font-size: .6rem; }
.nqc-table-wrap { overflow-x: auto; margin-top: 10px; border: 1px solid var(--nqc-soft-border); border-radius: 10px; }
.nqc-table { width: 100%; border-collapse: collapse; color: var(--nqc-soft); font-size: .59rem; }
.nqc-table th, .nqc-table td { padding: 7px 8px; border-bottom: 1px solid var(--nqc-soft-border); text-align: left; white-space: nowrap; }
.nqc-table th { color: var(--nqc-muted); background: rgba(var(--nqc-accent),.06); text-transform: uppercase; }
.nqc-config-card, .nqc-review-grid article, .nqc-candidate-compare { padding: 10px; border: 1px solid var(--nqc-soft-border); border-radius: 11px; background: rgba(17,31,47,.55); }
.nqc-config-card h4, .nqc-review-grid h4, .nqc-candidate-compare h4 { margin-bottom: 5px; color: rgb(var(--nqc-accent)); }
.nqc-config-card > p, .nqc-note { color: var(--nqc-muted); font-size: .6rem; }
.nqc-config-card details { padding: 7px; border-radius: 8px; background: rgba(0,0,0,.18); color: var(--nqc-soft); }
.nqc-preview-strip {
    margin-bottom: 8px;
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 6px;
    margin-top: 8px;
}
.nqc-preview-strip div { padding: 8px; border-radius: 9px; background: rgba(var(--nqc-accent),.06); }
.nqc-preview-strip span, .nqc-preview-strip strong { display: block; }.nqc-preview-strip span { color: var(--nqc-muted); font-size: .54rem; }.nqc-preview-strip strong { margin-top: 2px; font-size: .78rem; }
.nqc-science-help { display: inline-grid; place-items: center; width: 17px; height: 17px; margin-left: 3px; padding: 0; border: 1px solid var(--nqc-soft-border); border-radius: 50%; color: var(--nqc-soft); background: transparent; cursor: help; font-size: .55rem; font-weight: 850; line-height: 1; vertical-align: middle; }
.nqc-science-help:focus-visible { outline: 2px solid #5576bd; outline-offset: 2px; }
.nqc-advanced-values { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin-top: 7px; }
.nqc-advanced-values > span { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; padding: 6px 7px; border: 1px solid var(--nqc-soft-border); border-radius: 7px; }
.nqc-advanced-values strong { min-width: 0; }
.nqc-parameter-snapshot { margin: 8px 0 0; padding: 7px 9px; border: 1px solid var(--nqc-soft-border); border-radius: 8px; color: var(--nqc-muted); background: rgba(var(--nqc-accent),.05); font-size: .58rem; overflow-wrap: anywhere; }
.nqc-toolbar { display: flex; flex-wrap: wrap; gap: 4px; }
.nqc-toolbar button { padding: 5px 7px; border: 1px solid var(--nqc-soft-border); border-radius: 7px; color: var(--nqc-soft); background: rgba(17,31,47,.65); }
.nqc-toolbar button.is-active { border-color: rgba(var(--nqc-accent),.45); color: rgb(var(--nqc-accent)); }
.nqc-qc-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.nqc-plot-card, .nqc-inspector { min-width: 0; padding: 9px; border: 1px solid var(--nqc-soft-border); border-radius: 10px; background: rgba(17,31,47,.55); }
.nqc-plot-card header { display: flex; justify-content: space-between; gap: 8px; }.nqc-plot-card h4 { margin-bottom: 0; }.nqc-plot-card small { color: var(--nqc-muted); }
.nqc-bars { display: flex; align-items: flex-end; gap: 10px; height: 150px; padding: 18px 12px 8px; border-bottom: 1px solid var(--nqc-border); }
.nqc-bars i { flex: 1; height: var(--h); border-radius: 5px 5px 0 0; background: linear-gradient(rgb(var(--nqc-accent)), rgba(var(--nqc-blue),.46)); }
.nqc-distribution, .nqc-scatter { display: block; width: 100%; height: 170px; margin-top: 6px; overflow: visible; }
.nqc-distribution path { fill: none; stroke: rgb(var(--nqc-blue)); stroke-width: 3; }.nqc-distribution path + path { stroke: rgb(var(--nqc-accent)); }
.nqc-plot-card--large { grid-column: 1 / 2; }.nqc-scatter { height: 230px; }.nqc-scatter line { stroke: var(--nqc-muted); stroke-width: 1; }.nqc-scatter circle { fill: rgb(var(--nqc-blue)); stroke: #071019; stroke-width: 3; cursor: pointer; }.nqc-scatter .control circle { fill: rgb(var(--nqc-ok)); }.nqc-scatter .two circle { fill: rgb(var(--nqc-warn)); }.nqc-scatter .warning circle { fill: rgb(var(--nqc-danger)); }.nqc-scatter text { fill: rgb(var(--nqc-warn)); font-size: 12px; }
.nqc-inspector dl, .nqc-review-grid dl { margin: 8px 0; }.nqc-inspector dl div, .nqc-review-grid dl div { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; padding: 5px 0; border-bottom: 1px solid var(--nqc-soft-border); }.nqc-inspector dt, .nqc-review-grid dt { color: var(--nqc-muted); }.nqc-inspector dd, .nqc-review-grid dd { margin: 0; text-align: right; }
.nqc-warning-list { display: grid; gap: 6px; margin-top: 8px; }
.nqc-warning-list article {
    display: grid;
    /* this was intentionally removed,  
       to allow the warning list articles to adapt more flexibly
       to different screen sizes and content lengths */
    /* grid-template-columns: auto minmax(0,1fr) auto; */
    gap: 8px;
    padding: 8px;
    border: 1px solid rgba(var(--nqc-warn),.22);
    border-radius: 9px;
    background: rgba(var(--nqc-warn),.05);
}
.nqc-warning-list i { color: rgb(var(--nqc-warn)); }.nqc-warning-list p { margin: 2px 0 0; color: var(--nqc-muted); font-size: .58rem; }
.nqc-candidate-compare { margin-top: 9px; }.nqc-candidate-compare > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }.nqc-candidate-compare span { padding: 8px; border: 1px solid var(--nqc-soft-border); border-radius: 8px; }.nqc-candidate-compare span.is-selected { border-color: rgba(var(--nqc-accent),.45); }.nqc-candidate-compare strong, .nqc-candidate-compare small { display: block; }.nqc-candidate-compare small { color: var(--nqc-muted); }
.nqc-handoff { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin-top: 9px; }.nqc-handoff article { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 8px; align-items: center; padding: 9px; border: 1px solid var(--nqc-soft-border); border-radius: 10px; background: rgba(17,31,47,.48); }.nqc-handoff p { margin: 2px 0 0; color: var(--nqc-muted); font-size: .58rem; }
.nqc-handoff button {
    /* padding removed to allow for more flexible button sizing */
    /* padding: 5px 7px; */
    border: 1px solid var(--nqc-soft-border);
    border-radius: 7px;
    color: var(--nqc-muted);
    background: rgba(0,0,0,.2);
}
.nqc-plot-card.is-fullscreen-mock { grid-column: 1 / -1; }
@media (max-width: 760px) { .nqc-run-summary { grid-template-columns: repeat(2,minmax(0,1fr)); }.nqc-stage-nav { grid-template-columns: 1fr; }.nqc-stage-nav button { justify-content: flex-start; }.nqc-validation-grid,.nqc-two-column,.nqc-config-grid,.nqc-review-grid,.nqc-qc-grid,.nqc-handoff { grid-template-columns: 1fr; }.nqc-preview-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }.nqc-plot-card--large { grid-column: auto; }.nqc-header,.nqc-section-heading { align-items: flex-start; flex-direction: column; }
.nqc-warning-list article, .nqc-handoff article {
    display: flex;
    /* chosen display flex instead of grid for better responsiveness */
    /* grid-template-columns: auto 1fr; */
}
.nqc-warning-list label,.nqc-handoff button { grid-column: 2; } }
@media (max-width: 430px) { .nqc-advanced-values { grid-template-columns: 1fr; } }

/* =========================================================
   NORMALIZATION & QC — FILE READER VISUAL SYSTEM

   Visual update only:
   - light scientific workspace shell
   - dark contained technical/status surfaces
   - mint success and active states
   - preserves all layout and workflow behavior
========================================================= */

.module-nqc {
  --nqc-accent: 84 180 151;
  --nqc-blue: 91 112 179;
  --nqc-ok: 84 180 151;
  --nqc-warn: 204 157 65;
  --nqc-danger: 201 73 101;

  --nqc-bg: #eef3fc;
  --nqc-surface: rgba(244, 247, 254, 0.96);
  --nqc-raised: rgba(225, 232, 248, 0.98);

  --nqc-border: rgba(72, 94, 157, 0.26);
  --nqc-soft-border: rgba(72, 94, 157, 0.14);

  --nqc-text: #18213a;
  --nqc-soft: rgba(47, 61, 96, 0.82);
  --nqc-muted: rgba(67, 80, 113, 0.62);

  color: var(--nqc-text);
}

/* =========================================================
   MAIN MODULE SHELL
========================================================= */

/* .nqc-shell {
  border-color: var(--nqc-border);

  background:
    linear-gradient(
      rgba(77, 101, 166, 0.04) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(77, 101, 166, 0.04) 1px,
      transparent 1px
    ),
    radial-gradient(
      circle at 10% 0%,
      rgba(143, 212, 189, 0.11),
      transparent 40%
    ),
    radial-gradient(
      circle at 88% 0%,
      rgba(127, 181, 255, 0.10),
      transparent 42%
    ),
    linear-gradient(
      155deg,
      rgba(250, 252, 255, 0.99),
      rgba(225, 232, 248, 0.98)
    );

  background-size:
    24px 24px,
    24px 24px,
    auto,
    auto,
    auto;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.94),
    inset 0 -1px 0 rgba(49, 66, 112, 0.10),
    0 0 0 1px rgba(7, 13, 30, 0.08);
} */

/* =========================================================
   HEADER
========================================================= */

.nqc-eyebrow,
.nqc-section-heading span:first-child {
  color: #55729f;
}

.nqc-title-row h2 {
  color: #18213a;
}

.nqc-version {
  color: rgba(67, 80, 113, 0.52);
}

.nqc-header p {
  color: rgba(54, 68, 103, 0.64);
}

.nqc-status--ready {
  border-color: rgba(84, 180, 151, 0.24);
  background: rgba(84, 180, 151, 0.10);
  color: #427966;
}

.nqc-status--warning {
  border-color: rgba(204, 157, 65, 0.24);
  background: rgba(204, 157, 65, 0.10);
  color: #80652d;
}

.nqc-pill {
  border-color: rgba(72, 94, 157, 0.18);
  background: rgba(91, 112, 179, 0.08);
  color: #53639a;
}

/* =========================================================
   RUN SUMMARY — DARK TECHNICAL STRIP
========================================================= */

.nqc-run-summary {
  border-color: rgba(72, 94, 157, 0.24);

  background:
    rgba(72, 94, 157, 0.16);

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.nqc-run-summary div {
  background:
    linear-gradient(
      180deg,
      rgba(20, 34, 52, 0.98),
      rgba(10, 20, 34, 0.99)
    );
}

.nqc-run-summary span {
  color: rgba(161, 180, 207, 0.72);
}

.nqc-run-summary strong {
  color: rgba(225, 234, 248, 0.90);
}

.nqc-run-summary .nqc-ok {
  color: #74cbb1;
}

/* =========================================================
   STAGE NAVIGATION
========================================================= */

.nqc-stage-nav button {
  border-color: rgba(72, 94, 157, 0.16);

  background:
    linear-gradient(
      180deg,
      rgba(240, 244, 253, 0.96),
      rgba(218, 226, 244, 0.94)
    );

  color: rgba(67, 80, 113, 0.62);

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.90);
}

.nqc-stage-nav button span {
  background: rgba(91, 112, 179, 0.08);
  color: #53639a;
}

.nqc-stage-nav button.is-active {
  border-color: rgba(84, 180, 151, 0.38);

  background:
    linear-gradient(
      180deg,
      rgba(230, 248, 241, 0.98),
      rgba(194, 229, 215, 0.96)
    );

  color: #315f53;
}

.nqc-stage-nav button.is-active span {
  background: #74cbb1;
  color: #17372e;
}

/* =========================================================
   STAGE WORKSPACE
========================================================= */

.nqc-stage {
  border-color: rgba(72, 94, 157, 0.18);

  background:
    linear-gradient(
      rgba(77, 101, 166, 0.025) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(77, 101, 166, 0.025) 1px,
      transparent 1px
    ),
    linear-gradient(
      180deg,
      rgba(241, 245, 253, 0.97),
      rgba(223, 231, 247, 0.96)
    );

  background-size:
    22px 22px,
    22px 22px,
    auto;
}

.nqc-section-heading h3 {
  color: #3f8b78;
}

.nqc-link-btn,
.nqc-toolbar button,
.nqc-plot-card header button {
  color: #536fba;
}

/* =========================================================
   ARTIFACT CARDS
========================================================= */

.nqc-artifact-card {
  border-color: rgba(72, 94, 157, 0.18);

  background:
    linear-gradient(
      180deg,
      rgba(248, 250, 255, 0.98),
      rgba(227, 234, 248, 0.96)
    );

  color: #18213a;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.nqc-artifact-card.is-selected {
  border-color: rgba(84, 180, 151, 0.44);

  box-shadow:
    inset 3px 0 0 #74cbb1,
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.nqc-artifact-main strong {
  color: #18213a;
}

.nqc-artifact-main small,
.nqc-checksum {
  color: rgba(67, 80, 113, 0.58);
}

.nqc-radio-dot {
  border-color: #74cbb1;
  box-shadow: none;
}

.nqc-artifact-meta span {
  background: rgba(91, 112, 179, 0.08);
  color: #53617f;
}

.nqc-block-reason {
  color: #80652d;
}

/* =========================================================
   VALIDATION CARDS
========================================================= */

.nqc-validation-item {
  border-color: rgba(72, 94, 157, 0.16);

  background:
    linear-gradient(
      180deg,
      rgba(248, 250, 255, 0.98),
      rgba(228, 235, 248, 0.96)
    );
}

.nqc-validation-item summary {
  color: #2f3f68;
}

.nqc-validation-item summary i,
.nqc-validation-item summary strong {
  color: #427966;
}

.nqc-validation-item p {
  color: rgba(67, 80, 113, 0.62);
}

/* =========================================================
   BUTTONS
========================================================= */

.nqc-btn {
  border-color: rgba(72, 94, 157, 0.26);

  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.96),
      rgba(211, 221, 244, 0.94)
    );

  color: #33436f;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.94);
}

.nqc-btn--primary {
  border-color: rgba(84, 180, 151, 0.38);

  background:
    linear-gradient(
      180deg,
      rgba(160, 229, 210, 0.98),
      rgba(99, 197, 170, 0.96)
    );

  color: #15392f;
}

/* =========================================================
   FIELDS
========================================================= */

.nqc-field {
  color: rgba(67, 80, 113, 0.64);
}

.nqc-field select,
.nqc-field input,
.nqc-field textarea,
.nqc-table select {
  border-color: rgba(72, 94, 157, 0.24);

  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.98),
      rgba(224, 231, 246, 0.96)
    );

  color: #28375f;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.94);

  color-scheme: light;
}

.nqc-field select:focus,
.nqc-field input:focus,
.nqc-field textarea:focus,
.nqc-table select:focus {
  outline: none;

  border-color: rgba(91, 112, 179, 0.56);

  box-shadow:
    0 0 0 2px rgba(91, 112, 179, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.96);
}

/* =========================================================
   DESIGN MAP
========================================================= */

.nqc-design-map div {
  border: 1px solid rgba(72, 94, 157, 0.12);

  background:
    rgba(239, 243, 252, 0.82);

  color: #33436f;
}

.nqc-design-map small {
  color: rgba(67, 80, 113, 0.58);
}

/* =========================================================
   WARNING CARD
========================================================= */

.nqc-warning-card {
  border-color: rgba(204, 157, 65, 0.26);

  background:
    linear-gradient(
      180deg,
      rgba(255, 248, 226, 0.96),
      rgba(240, 224, 184, 0.94)
    );

  color: #80652d;
}

.nqc-warning-card p {
  color: rgba(90, 70, 34, 0.76);
}

/* =========================================================
   TABLE
========================================================= */

.nqc-table-wrap {
  border-color: rgba(72, 94, 157, 0.18);

  background:
    rgba(247, 249, 254, 0.96);
}

.nqc-table {
  color: rgba(45, 58, 92, 0.82);
}

.nqc-table th,
.nqc-table td {
  border-bottom-color: rgba(73, 91, 134, 0.10);
}

.nqc-table th {
  background:
    linear-gradient(
      180deg,
      rgba(239, 244, 254, 0.99),
      rgba(219, 227, 245, 0.98)
    );

  color: #53639a;
}

/* Frozen header: split thead/tbody into independent block boxes so only
   the body scrolls and the native scrollbar tracks the body, not the header. */
.nqc-governed-design .nqc-table { display: block; }
.nqc-governed-design .nqc-table thead,
.nqc-governed-design .nqc-table tbody { display: block; width: 100%; }
.nqc-governed-design .nqc-table tr { display: table; width: 100%; table-layout: fixed; }
.nqc-governed-design .nqc-table th,
.nqc-governed-design .nqc-table td { overflow: hidden; text-overflow: ellipsis; }
.nqc-governed-design .nqc-table th:nth-child(1), .nqc-governed-design .nqc-table td:nth-child(1) { width: 20%; }
.nqc-governed-design .nqc-table th:nth-child(2), .nqc-governed-design .nqc-table td:nth-child(2) { width: 22%; }
.nqc-governed-design .nqc-table th:nth-child(3), .nqc-governed-design .nqc-table td:nth-child(3) { width: 14%; }
.nqc-governed-design .nqc-table th:nth-child(4), .nqc-governed-design .nqc-table td:nth-child(4) { width: 14%; }
.nqc-governed-design .nqc-table th:nth-child(5), .nqc-governed-design .nqc-table td:nth-child(5) { width: 16%; }
.nqc-governed-design .nqc-table th:nth-child(6), .nqc-governed-design .nqc-table td:nth-child(6) { width: 14%; }
.nqc-governed-design .nqc-table tbody {
  max-height: 260px;
  overflow-y: auto;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: rgba(83, 99, 154, 0.4) transparent;
}
.nqc-governed-design .nqc-table tbody::-webkit-scrollbar { width: 6px; height: 6px; }
.nqc-governed-design .nqc-table tbody::-webkit-scrollbar-track { background: transparent; }
.nqc-governed-design .nqc-table tbody::-webkit-scrollbar-thumb { background: rgba(83, 99, 154, 0.4); border-radius: 4px; }
.nqc-governed-design .nqc-table tbody::-webkit-scrollbar-thumb:hover { background: rgba(83, 99, 154, 0.6); }
/* Reserve the same gutter width on the header (invisible) so header/body columns
   stay pixel-aligned even though only tbody actually shows a scrollbar. */
.nqc-governed-design .nqc-table thead {
  overflow-y: scroll;
  scrollbar-width: none;
  scrollbar-color: transparent transparent;
}
.nqc-governed-design .nqc-table thead::-webkit-scrollbar { width: 6px; height: 0; }
.nqc-governed-design .nqc-table thead::-webkit-scrollbar-track { background: transparent; }
.nqc-governed-design .nqc-table thead::-webkit-scrollbar-thumb { background: transparent; }

/* =========================================================
   CONFIGURATION / REVIEW CARDS
========================================================= */

.nqc-config-card,
.nqc-review-grid article,
.nqc-candidate-compare,
.nqc-plot-card,
.nqc-inspector {
  border-color: rgba(72, 94, 157, 0.16);

  background:white;

  color: #18213a;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.90);
}

.nqc-config-card h4,
.nqc-review-grid h4,
.nqc-candidate-compare h4 {
  color: #55729f;
}

.nqc-config-card > p,
.nqc-note,
.nqc-plot-card small {
  color: rgba(67, 80, 113, 0.60);
}

.nqc-config-card details {
  border: 1px solid rgba(72, 94, 157, 0.12);

  background:
    rgba(236, 241, 251, 0.84);

  color: #43527d;
}

/* =========================================================
   PREVIEW STRIP
========================================================= */

.nqc-preview-strip div {
  border: 1px solid rgba(72, 94, 157, 0.12);

  background:
    rgba(231, 237, 249, 0.88);
}

.nqc-preview-strip span {
  color: rgba(67, 80, 113, 0.58);
}

.nqc-preview-strip strong {
  color: #28375f;
}

/* =========================================================
   TOOLBAR
========================================================= */

.nqc-toolbar button {
  border-color: rgba(72, 94, 157, 0.18);

  background:
    linear-gradient(
      180deg,
      rgba(249, 251, 255, 0.96),
      rgba(221, 229, 246, 0.94)
    );

  color: #53617f;
}

.nqc-toolbar button.is-active {
  border-color: rgba(84, 180, 151, 0.40);

  background:
    rgba(84, 180, 151, 0.10);

  color: #427966;
}

/* =========================================================
   CHARTS
========================================================= */

.nqc-bars {
  border-bottom-color: rgba(72, 94, 157, 0.18);
}

.nqc-scatter line {
  stroke: rgba(67, 80, 113, 0.42);
}

.nqc-scatter circle {
  stroke: #eef3fc;
}

.nqc-scatter text {
  fill: #80652d;
}

/* =========================================================
   INSPECTOR / REVIEW VALUES
========================================================= */

.nqc-inspector dl div,
.nqc-review-grid dl div {
  border-bottom-color: rgba(72, 94, 157, 0.10);
}

.nqc-inspector dt,
.nqc-review-grid dt {
  color: rgba(67, 80, 113, 0.62);
}

.nqc-inspector dd,
.nqc-review-grid dd {
  color: #33436f;
}

/* =========================================================
   WARNINGS / HANDOFF
========================================================= */

.nqc-warning-list article {
  border-color: rgba(204, 157, 65, 0.22);

  background:
    rgba(255, 246, 219, 0.74);
}

.nqc-warning-list p {
  color: rgba(90, 70, 34, 0.68);
}

.nqc-candidate-compare span {
  border-color: rgba(72, 94, 157, 0.16);

  background:
    rgba(239, 243, 252, 0.82);
}

.nqc-candidate-compare span.is-selected {
  border-color: rgba(84, 180, 151, 0.42);
  background: rgba(84, 180, 151, 0.08);
}

.nqc-candidate-compare small {
  color: rgba(67, 80, 113, 0.58);
}

.nqc-handoff article {
  border-color: rgba(72, 94, 157, 0.16);

  background:
    linear-gradient(
      180deg,
      rgba(248, 250, 255, 0.98),
      rgba(228, 235, 248, 0.96)
    );
}

.nqc-handoff p {
  color: rgba(67, 80, 113, 0.58);
}

.nqc-handoff button {
  border-color: rgba(72, 94, 157, 0.18);

  background:
    rgba(230, 236, 248, 0.92);

  color: #53617f;
}

.nqc-plotly { width: 100%; min-height: 360px; touch-action: none; }
.nqc-plot-tools { display: flex; align-items: center; gap: .4rem; margin-left: auto; flex-wrap: wrap; }
.nqc-plot-tools button, .nqc-plot-tools summary { border: 1px solid rgba(77,106,165,.28); border-radius: .55rem; background: rgba(255,255,255,.72); color: #48629a; padding: .4rem .65rem; cursor: pointer; font: inherit; }
.nqc-plot-tools details { position: relative; }
.nqc-plot-settings { position: absolute; z-index: 20; right: 0; top: calc(100% + .4rem); width: min(320px,82vw); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; padding: .8rem; border: 1px solid rgba(77,106,165,.25); border-radius: .75rem; background: #f9fbff; box-shadow: 0 12px 32px rgba(24,43,82,.18); }
.nqc-plot-settings label { display: grid; gap: .2rem; color: #53688d; font-size: .8rem; }
.nqc-plot-settings input[type="number"] { width: 100%; min-width: 0; padding: .35rem; border: 1px solid #bdc9df; border-radius: .35rem; }
.nqc-plot-settings input[type="text"] { width: 100%; min-width: 0; padding: .35rem; border: 1px solid #bdc9df; border-radius: .35rem; }
.nqc-plot-settings .nqc-plot-setting-toggle { display: flex; align-items: center; gap: .3rem; }
.nqc-inspector-note { margin-top: .8rem; color: var(--nqc-muted); font-size: .78rem; }
.nqc-plot-card:fullscreen { overflow: auto; background: #edf3ff; padding: 1rem; }
.nqc-plot-card:fullscreen .nqc-plotly { min-height: calc(100vh - 110px); }
@media (max-width:760px) { .nqc-plotly { min-height: 300px; } .nqc-plot-tools { width: 100%; margin-top: .5rem; } .nqc-plot-settings { left: 0; right: auto; } }

/* Persistent process monitor: scoped to Normalization & QC. */
.module-nqc .nqc-process-monitor { margin-bottom: 10px; overflow: hidden; border: 1px solid rgba(72,94,157,.24); border-radius: 12px; background: #101d2d; color: #dce8f8; }
.nqc-process-monitor__summary { display: grid; grid-template-columns: auto minmax(0,1fr) auto auto; gap: 10px; align-items: center; padding: 10px 12px; }
.nqc-process-monitor__summary strong,.nqc-process-monitor__summary small { display: block; }.nqc-process-monitor__summary small { margin-top: 2px; color: #93a8c4; }
.nqc-process-monitor__signal { width: 12px; height: 12px; border: 3px solid #74cbb1; border-radius: 50%; }
.nqc-process-monitor__elapsed { font: 700 .72rem/1.2 "IBM Plex Mono","JetBrains Mono",monospace; }
.nqc-process-monitor__toggle,.nqc-process-console button { padding: 5px 9px; border: 1px solid #415474; border-radius: 7px; background: transparent; color: #dce8f8; cursor: pointer; }
.nqc-process-monitor__progress { height: 5px; background: #263650; }.nqc-process-monitor__progress span { display: block; width: 0; height: 100%; background: #74cbb1; transition: width .2s ease; }
.nqc-process-monitor__details { padding: 8px 12px 12px; }.nqc-process-monitor__details > div { display: flex; justify-content: space-between; margin-bottom: 7px; color: #93a8c4; font-size: .68rem; }
.nqc-process-console { overflow: hidden; border: 1px solid #263b5d; border-radius: 8px; background: #07111e; }
.nqc-process-console header { display: flex; align-items: center; justify-content: space-between; padding: 7px 9px; border-bottom: 1px solid #263b5d; }
.nqc-process-console ol { max-height: 190px; overflow: auto; margin: 0; padding: 8px 10px; list-style: none; font: .69rem/1.55 "IBM Plex Mono","JetBrains Mono",monospace; }
.nqc-process-console li { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 8px; }.nqc-process-console time { color: #6f91bc; }.nqc-process-console li[data-level="success"] span { color: #78dab7; }.nqc-process-console li[data-level="warning"] span { color: #e1bd68; }.nqc-process-console li[data-level="error"] span { color: #f08ca1; }
.nqc-process-console.is-collapsed ol { display: none; }.nqc-process-console.is-collapsed header { border-bottom: 0; }
.nqc-process-monitor.is-monitor-minimized .nqc-process-monitor__progress,.nqc-process-monitor.is-monitor-minimized .nqc-process-monitor__details { display: none; }
.nqc-process-monitor.is-complete .nqc-process-monitor__signal { border-color: #74cbb1; }.nqc-process-monitor.has-warning .nqc-process-monitor__signal { border-color: #e1bd68; }.nqc-process-monitor.is-failed .nqc-process-monitor__signal { border-color: #f08ca1; }
.nqc-process-monitor button:focus-visible,.nqc-qc-tabs button:focus-visible { outline: 2px solid #5576bd; outline-offset: 2px; }

/* Stage 4 uses one full-width panel at a time. Existing cards and plot hooks remain intact. */
.nqc-qc-tabs { display: flex; gap: 5px; margin-bottom: 8px; overflow-x: auto; scrollbar-width: thin; }
.nqc-qc-tabs button { flex: 0 0 auto; padding: 7px 10px; border: 1px solid rgba(72,94,157,.2); border-radius: 8px; background: #edf2fb; color: #53617f; cursor: pointer; white-space: nowrap; }
.nqc-qc-tabs button[aria-selected="true"] { border-color: rgba(84,180,151,.55); background: #dcefe8; color: #315f53; }
.nqc-qc-grid { display: block; min-width: 0; }
.nqc-qc-grid > [data-nqc-qc-panel] { width: 100%; min-width: 0; }
.nqc-qc-grid > [data-nqc-qc-panel][hidden] { display: none !important; }
.nqc-qc-grid .nqc-plot-card--large { grid-column: auto; }
.nqc-qc-grid .nqc-plot-card header { align-items: flex-start; flex-wrap: wrap; }
.nqc-qc-grid .nqc-plotly { width: 100%; min-height: clamp(330px,52vh,620px); }
.nqc-qc-grid .nqc-inspector { min-height: 280px; }

@media (max-width:760px) {
  .nqc-process-monitor__summary { grid-template-columns: auto minmax(0,1fr) auto; }
  .nqc-process-monitor__elapsed { grid-column: 2; }.nqc-process-monitor__toggle { grid-column: 3; grid-row: 1 / span 2; }
  .nqc-qc-tabs { padding-bottom: 3px; }
  .nqc-qc-grid .nqc-plotly { min-height: 320px; }
  .nqc-qc-grid .nqc-plot-tools { justify-content: flex-start; margin-left: 0; }
}
@media (prefers-reduced-motion:reduce) { .nqc-process-monitor__progress span { transition: none; } }

/* Stage 1 UX and containment patch: scoped to NQC input only. */
.module-nqc,
.module-nqc .nqc-shell,
.module-nqc .nqc-stage,
.module-nqc .nqc-artifact-card,
.module-nqc .nqc-artifact-main,
.module-nqc .nqc-artifact-main > div,
.module-nqc .nqc-governed-design,
.module-nqc .nqc-governed-design > header > div,
.module-nqc .nqc-governed-design > header dl,
.module-nqc .nqc-table-wrap {
  min-width: 0;
  max-width: 100%;
}
.module-nqc .nqc-shell,
.module-nqc .nqc-stage { overflow-x: clip; }
.module-nqc .nqc-artifact-main strong,
.module-nqc .nqc-artifact-main small,
.module-nqc .nqc-checksum,
.module-nqc .nqc-block-reason,
.module-nqc .nqc-governed-design > p,
.module-nqc .nqc-governed-design dd,
.module-nqc .nqc-governed-design code {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.module-nqc .nqc-governed-design code {
  max-width: min(24rem, 100%);
  white-space: normal;
}
.module-nqc .nqc-table-wrap {
  width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}
.module-nqc .nqc-governed-design .nqc-table { min-width: 720px; }
.module-nqc .nqc-intentional-block { opacity: 1; border-style: dashed; background: rgba(239,243,252,.72); }
.module-nqc .nqc-intentional-block .nqc-artifact-main,
.module-nqc .nqc-intentional-block .nqc-block-reason { opacity: .72; }

.module-nqc .nqc-help-affordance, .module-nqc .nqc-validation-toggle {
    display: inline-grid;
    flex: 0 0 auto;
    width: 1.8rem;
    height: 1.8rem;
    padding: 0;
    place-items: center;
    border: 1px solid rgb(72 94 157 / 0%);
    border-radius: 50%;
    /* background: rgba(255,255,255,.72); */
    color: #536fba;
    cursor: help;
}
.module-nqc .nqc-validation-row {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto auto;
  gap: 7px;
  align-items: center;
  padding: 8px;
  color: #2f3f68;
}
.module-nqc .nqc-validation-row > i,
.module-nqc .nqc-validation-row > strong { color: #427966; }
.module-nqc .nqc-validation-item p { padding: 0 42px 9px 29px; }
.module-nqc .nqc-validation-toggle { cursor: pointer; }
.module-nqc .nqc-validation-toggle i { transition: transform .16s ease; }
.module-nqc .nqc-validation-toggle i.fa-rotate-180 { transform: rotate(180deg); }
.module-nqc .nqc-tooltip { position: relative; }
.module-nqc .nqc-tooltip::after {
  content: attr(data-tooltip);
  position: absolute;
  z-index: 80;
  right: 0;
  bottom: calc(100% + 9px);
  width: max-content;
  max-width: min(290px, calc(100vw - 32px));
  padding: 7px 9px;
  border: 1px solid rgba(90,112,179,.28);
  border-radius: 7px;
  background: #101d2d;
  color: #eef4ff;
  box-shadow: 0 8px 24px rgba(21,34,62,.22);
  font-size: .7rem;
  font-weight: 600;
  line-height: 1.35;
  text-align: left;
  white-space: normal;
  opacity: 0;
  pointer-events: none;
  transform: translateY(3px);
  transition: opacity .14s ease, transform .14s ease;
}
.module-nqc .nqc-tooltip:hover::after,
.module-nqc .nqc-tooltip:focus-visible::after { opacity: 1; transform: translateY(0); }
.module-nqc .nqc-tooltip:disabled::after { display: none; }
.module-nqc .nqc-link-btn:disabled { cursor: not-allowed; opacity: .45; }
.module-nqc .nqc-help-affordance:focus-visible,
.module-nqc .nqc-validation-toggle:focus-visible,
.module-nqc .nqc-link-btn:focus-visible { outline: 2px solid #5576bd; outline-offset: 2px; }

@media (max-width: 760px) {
  .module-nqc .nqc-shell { padding-inline: 8px; }
  .module-nqc .nqc-stage { padding-inline: 8px; }
  .module-nqc .nqc-stage-nav { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .module-nqc .nqc-stage-nav button { justify-content: center; min-width: 0; }
  .module-nqc .nqc-governed-design > header,
  .module-nqc .nqc-governed-design > header dl { width: 100%; align-items: stretch; }
  .module-nqc .nqc-governed-design > header dl { gap: .65rem; }
  .module-nqc .nqc-governed-design > header dl div { width: 100%; }
  .module-nqc .nqc-section-heading .nqc-tooltip::after { left: 0; right: auto; }
  .module-nqc .nqc-artifact-main { align-items: flex-start; }
  .module-nqc .nqc-artifact-meta span { max-width: 100%; overflow-wrap: anywhere; }
  .module-nqc .nqc-actions { flex-wrap: wrap; }
  .module-nqc .nqc-actions .nqc-btn { max-width: 100%; }
  .module-nqc .nqc-governed-design .nqc-table tbody { max-height: 200px; }
  .module-nqc .nqc-governed-design .nqc-table th,
  .module-nqc .nqc-governed-design .nqc-table td { padding: 5px 6px; font-size: .56rem; }
}

@media (max-width: 430px) {
  .module-nqc .nqc-stage-nav { grid-template-columns: 1fr; }
  .module-nqc .nqc-validation-grid { grid-template-columns: 1fr; }
  .module-nqc .nqc-validation-row { grid-template-columns: auto minmax(0,1fr) auto auto; }
  .module-nqc .nqc-actions { align-items: stretch; flex-direction: column-reverse; }
  .module-nqc .nqc-actions .nqc-btn { width: 100%; }
  .module-nqc .nqc-tooltip::after { right: auto; left: 0; max-width: min(250px, calc(100vw - 28px)); }
}

@media (prefers-reduced-motion: reduce) {
  .module-nqc .nqc-validation-toggle i,
  .module-nqc .nqc-tooltip::after { transition: none; }
}

/* PATCH 2026-08-25 21:07 | Authenticated Stage 1 status, evidence and provenance refinement. */
.module-nqc .nqc-tooltip::before,
.module-nqc .nqc-tooltip::after { content: none !important; display: none !important; }
/* =========================================================
   PATCH 2026-08-25 22:48 | NQC TOOLTIP Z-INDEX FIX

   Raised above .gb-marss-dock-wrapper (99970) so the body-appended
   overlay no longer paints under the dock/slide-panel.
========================================================= */
.nqc-tooltip-overlay {
  position: fixed; z-index: 99975; box-sizing: border-box; max-width: calc(100vw - 24px);
  padding: 8px 10px; border: 1px solid rgba(90,112,179,.34); border-radius: 8px;
  background: #101d2d; color: #eef4ff; box-shadow: 0 10px 28px rgba(11,25,49,.3);
  font: 600 11px/1.4 Inter, system-ui, sans-serif; text-align: left; overflow-wrap: anywhere;
  pointer-events: none;
}
.nqc-tooltip-overlay[hidden] { display: none; }

.module-nqc .nqc-validation-panel {
  margin-top: 12px; overflow: hidden; border: 1px solid rgba(116,147,205,.28); border-radius: 13px;
  background: #0c1929; color: #eaf1ff; box-shadow: inset 0 1px rgba(255,255,255,.04);
}
.module-nqc .nqc-validation-panel__header {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 11px 13px; border-bottom: 1px solid rgba(129,158,211,.2); background: rgba(17,33,53,.92);
}
.module-nqc .nqc-validation-panel__header > div { display: flex; align-items: center; gap: 9px; min-width: 0; }
.module-nqc .nqc-validation-panel__header strong,
.module-nqc .nqc-validation-panel__header small { display: block; }
.module-nqc .nqc-validation-panel__header small { margin-top: 2px; color: #98abc7; font-size: 10px; }
.module-nqc .nqc-validation-panel__header > span { flex: 0 0 auto; color: #7ed9bd; font-weight: 800; }
.module-nqc .nqc-validation-panel__signal { width: 9px; height: 9px; border: 2px solid #76d8ba; border-radius: 50%; }
.module-nqc .nqc-validation-panel__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
.module-nqc .nqc-validation-check {
  display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 9px; align-items: start;
  min-width: 0; padding: 10px 12px; border-bottom: 1px solid rgba(129,158,211,.13);
}
.module-nqc .nqc-validation-check:nth-child(odd) { border-right: 1px solid rgba(129,158,211,.13); }
.module-nqc .nqc-validation-check > i { margin-top: 3px; color: #647795; }
.module-nqc .nqc-validation-check span,
.module-nqc .nqc-validation-check small { display: block; min-width: 0; }
.module-nqc .nqc-validation-check span { color: #e7effc; font-weight: 750; }
.module-nqc .nqc-validation-check small { margin-top: 3px; color: #96a8c3; line-height: 1.35; overflow-wrap: anywhere; }
.module-nqc .nqc-validation-check > strong { color: #9aabc4; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.module-nqc .nqc-validation-check[data-status="pass"] > i,
.module-nqc .nqc-validation-check[data-status="pass"] > strong { color: #72d5b6; }

.module-nqc .nqc-governed-design__provenance { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 10px; }
.module-nqc .nqc-governed-design__provenance dl { display: grid; grid-template-columns: max-content minmax(12rem,1fr); gap: 10px; width: 100%; min-width: 0; margin: 0; }
.module-nqc .nqc-governed-design__provenance dl > div { min-width: 0; }
.module-nqc .nqc-governed-design__provenance dd { margin: 2px 0 0; }
.module-nqc .nqc-governed-design__fingerprint dd {
  max-width: 100%; overflow-x: auto; overflow-y: hidden; padding: 3px 6px; border-radius: 6px;
  background: rgba(219,228,248,.55); scrollbar-width: thin; overscroll-behavior-inline: contain;
}
.module-nqc .nqc-governed-design__fingerprint code {
  display: block; width: max-content; max-width: none; white-space: nowrap; overflow-wrap: normal; word-break: normal;
}
.module-nqc .nqc-governed-design__intro { margin-top: 10px; }
.module-nqc .nqc-governed-design__intro h4 { margin: 0; }
.module-nqc .nqc-governed-design__intro p { margin: 4px 0 0; color: var(--nqc-muted,#7886a4); }

@media (max-width:760px) {
  .module-nqc .nqc-validation-panel__grid { grid-template-columns: 1fr; }
  .module-nqc .nqc-validation-check:nth-child(odd) { border-right: 0; }
  .module-nqc .nqc-governed-design__provenance { grid-template-columns: 1fr; align-items: start; }
  .module-nqc .nqc-governed-design__provenance dl { grid-template-columns: 1fr; }
}
@media (max-width:430px) {
  .module-nqc .nqc-validation-panel__header { align-items: flex-start; flex-direction: column; }
  .module-nqc .nqc-validation-check { grid-template-columns: auto minmax(0,1fr); }
  .module-nqc .nqc-validation-check > strong { grid-column: 2; }
}

/* PATCH 2026-08-26 | Stage 2 fixed-control honesty. */
.module-nqc .nqc-fixed-setting {
    margin-bottom: 8px;
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 3px 12px;
    align-items: center;
    margin-top: 10px;
    padding: 10px 12px;
    border: 1px solid rgba(96,127,184,.22);
    border-radius: 10px;
    background: rgba(231,238,250,.52);
    min-width: 0;
}
.module-nqc .nqc-fixed-setting > span { color: var(--nqc-muted,#7886a4); font-size: .72rem; font-weight: 750; }
.module-nqc .nqc-fixed-setting > strong { color: var(--nqc-ink,#1b2943); font-size: .82rem; overflow-wrap: anywhere; text-align: right; }
.module-nqc .nqc-fixed-setting > small { grid-column: 1 / -1; color: var(--nqc-muted,#7886a4); font-size: .67rem; }
.module-nqc .nqc-advanced-values .nqc-fixed-setting { margin-top: 0; }
@media (max-width:430px) {
  .module-nqc .nqc-fixed-setting { grid-template-columns: 1fr; }
  .module-nqc .nqc-fixed-setting > strong { text-align: left; }
}

/* PATCH 2026-08-26 | Stage 4 governed review and commit truth. */
.module-nqc .nqc-review-grid dt {
  display: inline-flex; align-items: center; gap: 4px; min-width: 0;
}
.module-nqc .nqc-review-grid dd,
.module-nqc .nqc-handoff p,
.module-nqc .nqc-downstream-state { overflow-wrap: anywhere; }
.module-nqc .nqc-field-error {
  display: block; margin-top: 4px; color: rgb(var(--nqc-danger)); font-size: .68rem; font-weight: 750;
}
.module-nqc .nqc-field-error[hidden] { display: none; }
.module-nqc [data-nqc-warning-required-marker] { color: rgb(var(--nqc-danger)); font-weight: 900; }
.module-nqc [data-nqc-warning-justification][aria-invalid="true"] {
  border-color: rgba(var(--nqc-danger),.72); box-shadow: 0 0 0 2px rgba(var(--nqc-danger),.12);
}
.module-nqc .nqc-downstream-state {
  align-self: center; flex: 0 0 auto; max-width: 12rem; padding: 7px 9px; border: 1px solid rgba(91,120,178,.25);
  border-radius: 9px; color: var(--nqc-muted,#7886a4); background: rgba(232,238,250,.68); font-size: .68rem; font-weight: 750; text-align: center;
}
.module-nqc [data-nqc-gbtox-readiness][data-state="ready"] + .nqc-downstream-state,
.module-nqc .nqc-handoff article:has([data-nqc-gbtox-readiness][data-state="ready"]) .nqc-downstream-state {
  border-color: rgba(var(--nqc-ok),.35); color: rgb(var(--nqc-ok)); background: rgba(var(--nqc-ok),.08);
}
@media (max-width:760px) {
  .module-nqc .nqc-review-grid { grid-template-columns: minmax(0,1fr); }
  .module-nqc .nqc-review-grid article,
  .module-nqc .nqc-review-grid dl,
  .module-nqc .nqc-review-grid dd { min-width: 0; max-width: 100%; }
  .module-nqc .nqc-handoff article { align-items: flex-start; flex-wrap: wrap; }
  .module-nqc .nqc-downstream-state { max-width: 100%; }
}
