/* ISOTOPE Hadron - Findings (#findings): every estate's findings, searched in the platform database.
   Tokens only: theme colours (tokens.css), the shared severity scale (--hx-sev-*), the categorical palette for the
   estates (--hx-cat-*), the diff scale for what a scan changed (--hx-diff-*), Carbon spacing and the type scale. The
   page header, buttons and KPI tiles are the shared .carbon-page-header, .cds--btn and .carbon-stat-tile. */

/* The page sits on the shell's content gutter like every other view (the breadcrumb's left edge): no gutter of its own. */
.fx-page { padding: 0 0 var(--cds-spacing-09); color: var(--tx); font-family: var(--sans); }
.fx-h2 { font-size: var(--f-lg); font-weight: var(--fw-semibold); margin: 0 0 var(--cds-spacing-03); }
.fx-h3 { font-size: var(--f-sm); font-weight: var(--fw-semibold); color: var(--mut); margin: var(--cds-spacing-05) 0 var(--cds-spacing-02); }
.fx-muted { color: var(--dim); font-size: var(--f-sm); }
.fx-err { color: var(--hx-sev-high-text); font-size: var(--f-sm); }
/* Carbon's shell has no global [hidden] rule, and a component's own display would override the attribute. */
.fx-page [hidden], .fx-toast[hidden] { display: none !important; }

/* Buttons are the shared .cds--btn variants; .fx-btn only adds the gap for an icon and keeps a link from underlining. */
.fx-btn { gap: var(--cds-spacing-03); text-decoration: none; }
.fx-btn[disabled] { opacity: .5; cursor: default; }
/* The header's one actions column: the exports, then the help links under them (right-aligned; left below 672 px). */
.fx-actions { flex-direction: column; align-items: flex-end; gap: var(--cds-spacing-03); }
.fx-exports, .fx-helplinks { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--cds-spacing-03); }
@media (max-width: 671px) {
  .fx-actions { align-items: flex-start; }
  .fx-exports, .fx-helplinks { justify-content: flex-start; }
}
.fx-exports .fx-exports-off { flex-basis: 100%; margin: 0; text-align: right; font-size: var(--f-sm); }
@media (max-width: 671px) { .fx-exports .fx-exports-off { text-align: left; } }
.fx-link { font: inherit; background: none; border: 0; padding: 0; color: var(--cds-link-primary); cursor: pointer; text-align: left; min-height: 24px; }
.fx-link:hover { text-decoration: underline; color: var(--cds-link-primary-hover); }

/* KPI tiles: the shared .carbon-stat-tile (dense); each one filters to its estate. */
.fx-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--cds-spacing-03); margin-bottom: var(--cds-spacing-05); }
.fx-kpis:empty { display: none; }
.fx-kpi { font: inherit; text-align: left; color: var(--tx); cursor: pointer; }
.fx-kpi.is-on { border-color: var(--cds-border-interactive); box-shadow: inset 0 -3px 0 var(--cds-border-interactive); }
.fx-kpi .stat-value { font-family: var(--sans); }
.fx-kpi__meta { font-size: var(--f-xs); color: var(--dim); }
.fx-c { color: var(--hx-sev-critical-text); font-weight: var(--fw-semibold); }

.fx-bar { display: flex; gap: var(--cds-spacing-03); margin-bottom: var(--cds-spacing-03); }
.fx-input, .fx-select { font: inherit; font-size: var(--f-md); height: 40px; background: var(--panel); color: var(--tx); border: 0;
  border-bottom: 1px solid var(--border-strong); padding: 0 var(--cds-spacing-04); border-radius: 0; }
.fx-input { flex: 1 1 auto; min-width: 0; }
.fx-select { flex: 0 0 auto; }

.fx-active { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-02); align-items: center; margin-bottom: var(--cds-spacing-02); }
.fx-active:empty { display: none; }
.fx-facets { display: flex; flex-direction: column; gap: var(--cds-spacing-02); margin-bottom: var(--cds-spacing-04); }
.fx-facet-row { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-02); align-items: center; }
.fx-facet-label { font-size: var(--f-xs); color: var(--dim); min-width: 64px; }
.fx-facet-sev { display: inline-flex; gap: var(--cds-spacing-02); align-items: center; font-size: var(--f-sm); margin-right: var(--cds-spacing-03); }
/* Filter chips: the estates' .nx-fchip look (same height, radius and selected inversion). */
.fx-chip { font-family: var(--sans); font-size: var(--f-sm); font-weight: var(--fw-medium); min-height: 24px; padding: 0 var(--cds-spacing-04); border-radius: var(--hx-radius-lg);
  border: 1px solid var(--cds-border-subtle-02); background: transparent; color: var(--cds-text-secondary); cursor: pointer; display: inline-flex; gap: var(--cds-spacing-02); align-items: center; }
.fx-chip b { color: var(--tx); font-weight: var(--fw-semibold); }
.fx-chip:hover { background: var(--cds-background-hover); color: var(--tx); }
.fx-chip--on { background: var(--cds-text-primary); border-color: transparent; color: var(--cds-background); }
.fx-chip--on b { color: inherit; }
.fx-chip--tag { font-family: var(--mono); }

.fx-banner { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-04); align-items: center; padding: var(--cds-spacing-03) var(--cds-spacing-04); margin-bottom: var(--cds-spacing-03); font-size: var(--f-sm);
  background: var(--accent-bg); border-left: 3px solid var(--accent); }
.fx-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); margin-bottom: var(--cds-spacing-03); overflow-x: auto; }
.fx-tab { font: inherit; font-size: var(--f-md); background: none; border: 0; border-bottom: 2px solid transparent; color: var(--mut);
  padding: var(--cds-spacing-04) var(--cds-spacing-05); cursor: pointer; white-space: nowrap; }
.fx-tab:hover { color: var(--tx); background: var(--cds-layer-hover-01); }
.fx-tab[aria-selected="true"] { color: var(--tx); border-bottom-color: var(--cds-interactive); font-weight: var(--fw-semibold); }
.fx-status { font-size: var(--f-sm); color: var(--mut); min-height: 20px; margin-bottom: var(--cds-spacing-03); display: flex; gap: var(--cds-spacing-03); align-items: center; }
.fx-spin { width: 12px; height: 12px; border: 2px solid var(--border-strong); border-top-color: var(--accent); border-radius: var(--hx-radius-round);
  animation: fx-spin var(--cds-motion-blink) linear infinite; }
@keyframes fx-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .fx-spin { animation: none; } }

.fx-split { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: var(--cds-spacing-05); align-items: start; }
@media (max-width: 1055px) { .fx-split { grid-template-columns: 1fr; } .fx-detail { position: static; max-height: none; } }
.fx-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.fx-item { background: var(--panel); padding: var(--cds-spacing-04) var(--cds-spacing-05); cursor: pointer; border-left: 3px solid transparent; }
.fx-item:hover { background: var(--cds-background-hover); }
.fx-item.is-on { border-left-color: var(--cds-border-interactive); background: var(--cds-background-selected); }
.fx-item__top { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-03); align-items: center; margin-bottom: var(--cds-spacing-02); }
.fx-item__title { font-size: var(--f-md); font-weight: var(--fw-semibold); line-height: var(--lh-snug); }
.fx-item__snip { font-size: var(--f-sm); color: var(--mut); margin-top: var(--cds-spacing-01); line-height: var(--lh-normal); }
.fx-item__snip mark, .fx-feed mark { background: var(--hx-diff-chg-bg); color: var(--tx); padding: 0 1px; }
.fx-item__meta { font-size: var(--f-xs); color: var(--dim); margin-top: var(--cds-spacing-02); display: flex; flex-wrap: wrap; gap: var(--cds-spacing-02); align-items: center; }
.fx-item__meta code, .fx-dl code { font-family: var(--mono); font-size: var(--f-xs); color: var(--mut); }
.fx-where { font-family: var(--mono); word-break: break-all; }
.fx-tagmini { font-family: var(--mono); font-size: var(--f-xs); padding: 0 var(--cds-spacing-02); border: 1px solid var(--border); border-radius: var(--hx-radius-md); color: var(--mut); }
.fx-repo { font-size: var(--f-xs); color: var(--mut); font-family: var(--mono); }
.fx-prio { font-size: var(--f-xs); color: var(--dim); margin-left: auto; }
.fx-more { padding: var(--cds-spacing-04) 0; }
/* [V7] DAMA's citation under a list or record that shows a DAMA-DMBOK tag; a long URL wraps, never overflows. */
.fx-cite { margin: var(--cds-spacing-04) 0 0; font-size: var(--f-xs); overflow-wrap: anywhere; }
.fx-cite cite { font-style: italic; }

/* Severity: the shared scale, the level written on the chip (colour never carries it alone). */
.fx-sev { font-size: var(--f-xs); font-weight: var(--fw-semibold); letter-spacing: .32px; padding: 0 var(--cds-spacing-02); border-radius: var(--hx-radius-xs);
  background: var(--border); color: var(--tx); text-transform: capitalize; }
.fx-sev--critical { background: var(--hx-sev-critical); color: var(--hx-sev-critical-on); }
.fx-sev--high { background: var(--hx-sev-high); color: var(--hx-sev-high-on); }
.fx-sev--medium { background: var(--hx-sev-medium); color: var(--hx-sev-medium-on); }
.fx-sev--low { background: var(--hx-sev-low); color: var(--hx-sev-low-on); }
.fx-sev--info { background: var(--hx-sev-info); color: var(--hx-sev-info-on); }
/* [V7] a severity word no scale knows: neutral, outlined, never mistaken for a rated one */
.fx-sev--unrated { background: transparent; color: var(--cds-text-secondary); box-shadow: inset 0 0 0 1px var(--cds-border-strong-01); }
.fx-sev-word { font-size: var(--f-xs); }
/* Estates: the name in the theme's text colour, a categorical edge per estate (the same order on every surface). */
.fx-estate { font-size: var(--f-xs); font-weight: var(--fw-semibold); letter-spacing: .32px; padding: 0 var(--cds-spacing-02); border: 1px solid var(--border-strong);
  border-left: 3px solid var(--k, var(--border-strong)); border-radius: var(--hx-radius-xs); color: var(--mut); }
.fx-estate--network { --k: var(--hx-cat-0); } .fx-estate--experience { --k: var(--hx-cat-1); } .fx-estate--domain { --k: var(--hx-cat-6); }
.fx-estate--code { --k: var(--hx-cat-7); } .fx-estate--data { --k: var(--hx-cat-2); } .fx-estate--security { --k: var(--hx-cat-4); }

.fx-detail { position: sticky; top: calc(var(--topbar, 48px) + var(--cds-spacing-04)); max-height: calc(100vh - var(--topbar, 48px) - var(--cds-spacing-06)); overflow: auto; }
.fx-detail__empty, .fx-card { background: var(--panel); padding: var(--cds-spacing-05) var(--cds-spacing-06); }
.fx-card__title { font-size: var(--f-xl); font-weight: var(--fw-regular); margin: var(--cds-spacing-02) 0 var(--cds-spacing-04); line-height: var(--lh-snug); }
.fx-dl { display: grid; grid-template-columns: max-content 1fr; gap: var(--cds-spacing-02) var(--cds-spacing-05); font-size: var(--f-sm); margin: 0; }
.fx-dl dt { color: var(--dim); } .fx-dl dd { margin: 0; min-width: 0; }
.fx-tags { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-02); margin-top: var(--cds-spacing-04); }
.fx-prose { font-size: var(--f-md); line-height: var(--lh-relaxed); margin: 0; white-space: pre-wrap; }
.fx-card__actions { display: flex; flex-wrap: wrap; gap: var(--cds-spacing-03); margin-top: var(--cds-spacing-05); }
.fx-history { list-style: none; padding: 0; margin: 0; font-size: var(--f-sm); display: flex; flex-direction: column; gap: var(--cds-spacing-02); }
.fx-raw { margin-top: var(--cds-spacing-05); font-size: var(--f-sm); }
.fx-raw summary { cursor: pointer; color: var(--mut); }
.fx-raw pre { font-family: var(--mono); font-size: var(--f-xs); background: var(--bg); padding: var(--cds-spacing-04); overflow: auto; max-height: 360px; }
.fx-page time[title] { text-decoration: underline dotted var(--border-strong); text-underline-offset: 2px; }

/* What a scan changed: the shared diff scale (new, reopened, escalated read as added risk; resolved as removed). */
.fx-ev { font-size: var(--f-xs); font-weight: var(--fw-semibold); letter-spacing: .32px; padding: 0 var(--cds-spacing-02); border-radius: var(--hx-radius-xs); background: var(--border); text-transform: capitalize; }
.fx-ev--new, .fx-ev--reopened, .fx-ev--escalated { background: var(--hx-diff-del-bg); color: var(--hx-diff-del-text); }
.fx-ev--resolved, .fx-ev--deescalated { background: var(--hx-diff-add-bg); color: var(--hx-diff-add-text); }

.fx-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr)); gap: var(--cds-spacing-05); }
/* Narrow: the search takes its own row, the severity filter the next. */
/* Below 672 px each control takes a row, and the field-help button the help drawer puts before it shares that row
   (a 100% basis pushed each info button onto a row of its own). */
@media (max-width: 671px) {
  .fx-bar { flex-wrap: wrap; align-items: center; }
  .fx-input, .fx-select { flex: 1 1 calc(100% - 3rem); min-width: 0; }
}
.fx-panel { background: var(--panel); padding: var(--cds-spacing-05) var(--cds-spacing-06); min-width: 0; overflow-x: auto; }
.fx-panel--wide { grid-column: 1 / -1; }
.fx-panel--wide td:first-child { min-width: 240px; }
.fx-rowcount { margin: 0 0 var(--cds-spacing-02); }
.fx-tablewrap { overflow-x: auto; }
.fx-tablewrap--tall { max-height: 70vh; overflow: auto; }
.fx-table { width: 100%; border-collapse: collapse; font-size: var(--f-sm); }
.fx-table th { text-align: left; font-weight: var(--fw-semibold); color: var(--mut); padding: 0 var(--cds-spacing-03); border-bottom: 1px solid var(--border-strong); white-space: nowrap;
  position: sticky; top: 0; z-index: var(--cds-z-surface); background: var(--panel); }
.fx-table td { padding: var(--cds-spacing-03); border-bottom: 1px solid var(--border); vertical-align: top; }
.fx-table td.fx-num, .fx-table th.fx-num { text-align: right; font-variant-numeric: tabular-nums; }
.fx-th-sort { font: inherit; color: inherit; background: none; border: 0; padding: var(--cds-spacing-03) 0; min-height: 32px; cursor: pointer; display: inline-flex; gap: var(--cds-spacing-02); align-items: center; }
.fx-th-sort:hover, .fx-th-sort.is-on { color: var(--tx); }
/* [V7] A header that carries a field-help button (help_drawer.js .hh-fieldbtn--in, absolute in its top-right corner)
   keeps room for it, so the sort label never runs under the button in a narrow column. */
.fx-table th[data-help-bound] { padding-inline-end: var(--cds-spacing-07); }
.fx-sort-ind { font-size: var(--f-xs); min-width: 1ch; }
.fx-table--score td:not(:first-child), .fx-table--score th:not(:first-child) { text-align: center; }
.fx-grade { display: inline-block; min-width: 24px; padding: 0 var(--cds-spacing-02); font-weight: var(--fw-semibold); border-radius: var(--hx-radius-xs); background: var(--border); }
.fx-grade--a { background: var(--hx-diff-add-bg); } .fx-grade--b { background: color-mix(in srgb, var(--hx-status-ok) 18%, transparent); }
.fx-grade--c { background: var(--hx-diff-chg-bg); } .fx-grade--d { background: color-mix(in srgb, var(--hx-sev-medium) 30%, transparent); }
.fx-grade--f { background: var(--hx-diff-del-bg); }

.fx-feed { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.fx-feed__item { background: var(--panel); padding: var(--cds-spacing-03) var(--cds-spacing-04); display: flex; flex-wrap: wrap; gap: var(--cds-spacing-03); align-items: center; font-size: var(--f-sm); }
.fx-feed__title { flex: 1 1 280px; min-width: 0; }
.fx-live { display: inline-block; width: 8px; height: 8px; border-radius: var(--hx-radius-round); background: var(--hx-status-ok); margin-right: var(--cds-spacing-02); }

.fx-empty { background: var(--panel); padding: var(--cds-spacing-07); text-align: left; max-width: 760px; }
/* Only when the shared notification area is missing (a page embedding the view on its own). */
.fx-toast { position: fixed; right: var(--cds-spacing-06); bottom: var(--cds-spacing-06); z-index: var(--cds-z-drawer); background: var(--cds-background-inverse); color: var(--cds-text-inverse);
  padding: var(--cds-spacing-04) var(--cds-spacing-05); font-size: var(--f-sm); border-left: 3px solid var(--hx-status-ok); box-shadow: var(--cds-elevation-02); }
.fx-toast--bad { border-left-color: var(--hx-status-down); }

/* Hostile text - a 220-character token, a Windows path, a 140-character repository name, a dotted id, CJK without
   spaces - wraps inside its box on this page instead of widening it: chips, KPI labels, list items, the detail card and
   the activity feed. Tabs and table headers stay on one line (they are nowrap); tables still scroll in .fx-tablewrap. */
.fx-page { overflow-wrap: anywhere; }
.fx-kpi, .fx-chip, .fx-item, .fx-card, .fx-feed__item > *, .fx-item__top > *, .fx-item__meta > *, .fx-card__actions > * { min-width: 0; max-width: 100%; }
.fx-chip, .fx-btn { text-align: left; }
.fx-card__actions .cds--btn { height: auto; min-height: 2rem; padding-block: var(--cds-spacing-02); line-height: var(--lh-snug); }
.fx-chip b, .fx-kpi__value, .fx-prio { flex-shrink: 0; white-space: nowrap; overflow-wrap: normal; }   /* a count never splits */
