/* =============================================================================
   SectraTEK Lab: research.css
   Styles for the research pages (index, topic, LAB-0001, LAB-0002). Loaded after lab.css through the
   extra_css front-matter field. Tokens only; no inline styles; motion sits behind the reduced-motion guard.

   Contents
     1  Article frame, evidence and cite     5  Category map (LAB-0002 Figure 1)
     2  Timeline figure (LAB-0001 Figure 1)  6  Report matrix (LAB-0002 Figure 2)
     3  Linked records (LAB-0001 Figure 2)   7  Downloads, references, tables
     4  Indicator table (LAB-0001 Figure 3)  8  Research index and topic page
   ============================================================================= */

/* 1 Article frame ----------------------------------------------------------- */
.rs-article { min-width: 0; }
.rs-top { display: grid; gap: var(--space-5); align-items: start; margin-block-end: var(--space-8); }
@media (min-width: 52em) { .rs-top .lab-stack { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: var(--space-5); align-items: start; } }
.rs-sec { margin-block-start: clamp(2.75rem, 2rem + 3vw, 4.5rem); }
.rs-sec:first-of-type, .rs-top + .rs-sec { margin-block-start: 0; }
.rs-sec > * + * { margin-block-start: var(--space-6); }
.rs-sec .lab-prose > h2:first-child { margin-block-start: 0; }
.rs-sec .lab-prose h3 { scroll-margin-top: 6rem; }
.rs-sec .lab-prose .lab-callout { margin-block: var(--space-6) 0; }
.rs-sec .lab-prose .lab-callout ul { margin: var(--space-2) 0 0; padding-inline-start: 1.2em; }
.rs-sec .lab-prose .lab-callout li { margin-block: 0.3em; }
.rs-wide { min-width: 0; }
.rs-sec .table-wrap { margin: 0; }
.lab-head .lab-meta-line { margin-block-start: var(--space-6); align-items: center; }
.rs-snip { margin: var(--space-5) 0 0; padding: var(--space-4) var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-2); font-family: var(--font-mono); font-size: 0.875rem; line-height: 1.7; overflow-x: auto; white-space: pre; letter-spacing: 0; }
.rs-snip code { background: none; padding: 0; font-size: inherit; }
.rs-details { margin-block-start: var(--space-4); }
.rs-details > summary { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; cursor: pointer; font-size: var(--text-ui); font-weight: var(--weight-medium); color: var(--link); }
.rs-details > summary::marker { color: var(--muted); }
.rs-details[open] > summary { margin-block-end: var(--space-3); }
.rs-note { margin: 0; padding: var(--space-3) var(--space-5) var(--space-4); font-size: var(--text-caption); line-height: 1.5; color: var(--on-navy-2); }
.rs-note--light { color: var(--muted); }
.rs-code { display: inline-block; margin-inline-start: 0.5em; padding: 0 0.45em; border: 1px solid var(--navy-line); border-radius: var(--radius-xs); font-family: var(--font-mono); font-size: 0.8em; font-weight: var(--weight-medium); letter-spacing: 0; color: var(--navy-accent); vertical-align: 0.05em; }
.rs-figbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3) var(--space-5); padding: var(--space-4) var(--space-5); border-block-end: 1px solid var(--navy-line); }
.rs-figbar--light { border-block-end-color: var(--line); }
.rs-figbar__label { font-size: var(--text-small); font-weight: var(--weight-medium); color: var(--on-navy-2); }
.rs-legend { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-5); margin: 0; padding: 0; list-style: none; font-size: var(--text-small); color: var(--on-navy); }
.rs-legend li { display: inline-flex; align-items: center; gap: 8px; margin: 0; }
.rs-figbar--light .rs-legend { color: var(--ink-2); }
.rs-key { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--navy-accent); }
.rs-key--reset { background: var(--navy-accent); }

/* 2 Timeline figure ---------------------------------------------------------- */
.rs-tl { padding-block-end: var(--space-6); }
.rs-tl > li { flex: 1 1 0; min-width: 8.5rem; }
.rs-tl .lab-tl__label strong { display: block; font-weight: var(--weight-semibold); }
.rs-tl .lab-tl__label { display: grid; gap: 4px; justify-items: start; }
.rs-tl .lab-tl__label .rs-code { margin-inline-start: 0; }
.rs-tl .lab-tl__node.rs-node--reset::before { background: var(--navy-accent); border-color: var(--navy-accent); }
.rs-tl .lab-tl__node.rs-node--sim::before { background: var(--navy-2); border-color: var(--navy-accent); }
.rs-tl .lab-tl__node.rs-node--reset[aria-pressed="true"]::before { background: var(--navy-accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.rs-tl .lab-tl__node.rs-node--sim[aria-pressed="true"]::before { background: var(--accent-soft); box-shadow: 0 0 0 3px var(--accent-soft); }
.rs-tl .lab-tl__t { min-height: 1.4em; }
.rs-keys { display: grid; gap: 0 var(--space-6); }
@media (min-width: 48em) { .rs-keys { grid-template-columns: repeat(3, minmax(0, 1fr)); } .rs-keys .rs-keys__wide { grid-column: 1 / -1; } }
.rs-keys > div { grid-template-columns: 1fr; gap: 4px; align-content: start; border-block-end-color: var(--navy-line); }
.rs-keys dt { color: var(--on-navy-2); }
.rs-keys dd { color: var(--on-navy); overflow-wrap: anywhere; font-size: 0.9375rem; }
.rs-keys code { font-size: 0.9rem; background: none; padding: 0; color: var(--on-navy); }
.rs-keys .rs-keys__wide { border-block-end: 0; }
.rs-panel-foot { margin: var(--space-4) 0 0; font-size: var(--text-small); }
@media (max-width: 47.99em) {
  .rs-tl { flex-direction: column; gap: var(--space-5); overflow: visible; padding-inline: var(--space-5); }
  .rs-tl::before { inset-inline: auto; inset-inline-start: calc(var(--space-5) + 11px); inset-block: calc(var(--space-6) + 12px) calc(var(--space-6) + 12px); width: 1px; height: auto; }
  .rs-tl > li { flex: none; grid-template-columns: 24px minmax(0, 1fr); column-gap: var(--space-3); align-items: center; min-width: 0; }
  .rs-tl .lab-tl__node { grid-row: 1 / span 2; }
  .rs-tl .lab-tl__t { align-self: end; }
  .rs-tl .lab-tl__label { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; align-self: start; }
  .rs-tl .lab-tl__label strong { display: inline; }
}

/* 3 Linked records (Figure 2) ------------------------------------------------ */
.rs-codes { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.rs-codebtn { min-height: 34px; padding-inline: var(--space-3); font-family: var(--font-mono); font-size: var(--text-small); }
.rs-link { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-5); padding: var(--space-5); }
@media (min-width: 52em) { .rs-link { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--space-6); } }
.rs-col { min-width: 0; }
.rs-file { margin: 0 0 var(--space-3); font-family: var(--font-mono); font-size: var(--text-caption); font-weight: var(--weight-medium); letter-spacing: 0.01em; color: var(--navy-accent); }
.rs-ents { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
.rs-ent { border: 1px solid var(--navy-line); border-inline-start: 3px solid var(--navy-line); border-radius: var(--radius-sm); background: transparent; }
.rs-ent pre { margin: 0; padding: var(--space-3) var(--space-4); overflow-x: auto; font-family: var(--font-mono); font-size: 0.8125rem; line-height: 1.6; color: var(--on-navy); letter-spacing: 0; white-space: pre; }
.rs-ent--none pre { color: var(--on-navy-2); font-style: italic; }
.rs-codetok { font-weight: var(--weight-bold); color: var(--navy-accent); }
.rs-ent.is-on { border-color: var(--navy-accent); background: var(--accent-soft); }
.rs-ent.is-dim { opacity: 0.38; }
@media (prefers-reduced-motion: no-preference) { html:not([data-motion="reduce"]) .rs-ent { transition: opacity var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); } }

/* 4 Indicator table (Figure 3) ----------------------------------------------- */
.rs-tablefig { background: var(--surface); }
.rs-tablefig .table-wrap { border: 0; border-radius: 0; }
.rs-ind { font-size: 0.875rem; }
.rs-ind th, .rs-ind td { vertical-align: top; padding-block: var(--space-4); line-height: 1.5; }
.rs-ind { table-layout: fixed; min-width: 0; }
.rs-ind col, .rs-ind th, .rs-ind td { min-width: 0; overflow-wrap: break-word; }
.rs-ind code { font-size: 0.85em; overflow-wrap: anywhere; background: none; padding: 0; }
.rs-ind thead th:nth-child(1) { width: 20%; }
.rs-ind thead th:nth-child(2) { width: 19%; }
.rs-ind thead th:nth-child(3) { width: 21%; }
.rs-ind thead th:nth-child(4) { width: 12%; }
.rs-ind tbody th { font-weight: var(--weight-semibold); }
.rs-limit { display: block; margin-block-start: 4px; color: var(--muted); }
.rs-str { display: inline-flex; align-items: flex-start; gap: 8px; font-weight: var(--weight-medium); }
.rs-dots, .rs-tile__dots { display: inline-flex; gap: 3px; }
.rs-str .rs-dots { margin-block-start: 0.45em; }
.rs-dot { width: 7px; height: 7px; border-radius: 50%; border: 1px solid var(--line-strong); }
.rs-dot.is-on { background: var(--accent-fill); border-color: var(--accent-fill); }
.rs-tile__dots .rs-dot, .rs-panel__n .rs-dot { border-color: var(--navy-line); }
.rs-tile__dots .rs-dot.is-on, .rs-panel__n .rs-dot.is-on { background: var(--navy-accent); border-color: var(--navy-accent); }
@media (max-width: 74.99em) {
  .rs-ind thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .rs-ind, .rs-ind tbody, .rs-ind tr, .rs-ind th, .rs-ind td { display: block; width: 100%; }
  .rs-ind tr { padding: var(--space-4) var(--space-4); border-block-end: 1px solid var(--line); }
  .rs-ind tr:last-child { border-block-end: 0; }
  .rs-ind th, .rs-ind td { padding: 4px 0; border: 0; min-width: 0; }
  .rs-ind tbody th { font-size: 1.0625rem; padding-block-end: var(--space-2); }
  .rs-ind td::before { content: attr(data-label); display: block; font-size: var(--text-micro); letter-spacing: var(--track-eyebrow); text-transform: uppercase; font-weight: var(--weight-semibold); color: var(--muted); margin-block-start: var(--space-2); }
}

/* 5 Category map (LAB-0002 Figure 1) ----------------------------------------- */
.rs-map { display: grid; gap: var(--space-5); padding: var(--space-5); }
@media (min-width: 56em) { .rs-map { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-6); padding: var(--space-6); } }
.rs-map__tiles { display: grid; gap: var(--space-5); align-content: start; }
.rs-group__h { margin: 0 0 var(--space-2); font-size: var(--text-micro); letter-spacing: var(--track-eyebrow); text-transform: uppercase; font-weight: var(--weight-semibold); color: var(--navy-accent); }
.rs-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); gap: var(--space-2); }
.rs-tile { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: 44px; padding: 8px var(--space-3); border: 1px solid var(--navy-line); border-radius: var(--radius-md); background: transparent; color: var(--on-navy); font: inherit; font-size: var(--text-ui); line-height: 1.25; text-align: start; cursor: pointer; }
.rs-tile:hover { border-color: var(--navy-accent); }
.rs-tile[aria-pressed="true"] { background: var(--accent-soft); border-color: var(--navy-accent); color: var(--white); }
.rs-tile__name { min-width: 0; }
@media (prefers-reduced-motion: no-preference) { html:not([data-motion="reduce"]) .rs-tile { transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); } }
.rs-map__panel { min-width: 0; }
@media (min-width: 56em) { .rs-map__panel { position: sticky; inset-block-start: calc(var(--header-h) + var(--space-5)); align-self: start; } }
.rs-panel { border: 1px solid var(--navy-line); border-radius: var(--radius-card); padding: var(--space-5); }
.lab-instrument .rs-panel { border-block-start: 1px solid var(--navy-line); background: var(--white-12); }
.rs-panel__fam { margin: 0 0 var(--space-1); font-size: var(--text-micro); letter-spacing: var(--track-eyebrow); text-transform: uppercase; font-weight: var(--weight-semibold); color: var(--navy-accent); }
.rs-panel h3 { margin: 4px 0 0; font-size: 1.5rem; line-height: 1.15; letter-spacing: -0.02em; }
.rs-panel__lead { margin: var(--space-3) 0 0; color: var(--on-navy); line-height: 1.5; }
.rs-panel__grid { display: grid; gap: var(--space-4) var(--space-5); margin-block-start: var(--space-4); }
.rs-panel h4 { margin: 0 0 var(--space-2); font-size: var(--text-micro); letter-spacing: var(--track-eyebrow); text-transform: uppercase; font-weight: var(--weight-semibold); color: var(--on-navy-2); }
.rs-panel ul { margin: 0; padding-inline-start: 1.1em; color: var(--on-navy); font-size: var(--text-small); line-height: 1.5; }
.rs-panel li { margin-block: 0.3em; }
.rs-panel p { margin: 0; font-size: var(--text-small); line-height: 1.5; color: var(--on-navy); }
.rs-panel__limit { margin-block: var(--space-4) var(--space-4); padding-block-start: var(--space-4); border-block-start: 1px solid var(--navy-line); }
.rs-panel p.rs-panel__n { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-block-start: var(--space-2); font-size: var(--text-caption); color: var(--on-navy-2); }
.rs-panel code { background: none; padding: 0; color: var(--on-navy); }
.rs-stats { margin-block: var(--space-5); }
.rs-stats { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); }
.rs-stats .lab-stat__value { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem); line-height: 1.1; }

/* 6 Report matrix (LAB-0002 Figure 2) ---------------------------------------- */
.rs-controls { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); }
.rs-matrix-wrap { border: 0; border-radius: 0; overflow-x: auto; }
.rs-matrix { min-width: 36rem; }
.rs-matrix th, .rs-matrix td { padding-inline: 10px; }
.rs-matrix th, .rs-matrix td { vertical-align: middle; }
.rs-matrix thead th { text-align: start; vertical-align: bottom; }
.rs-matrix tbody th[scope="row"], .rs-matrix tfoot th { position: sticky; inset-inline-start: 0; z-index: 1; background: var(--surface); font-weight: var(--weight-medium); max-width: 12rem; min-width: 8rem; }
.rs-rep { display: block; font-weight: var(--weight-semibold); }
.rs-rep__sub { display: block; font-size: var(--text-caption); font-weight: var(--weight-regular); color: var(--muted); }
.rs-grouprow th { padding-block: var(--space-4) var(--space-2); font-size: var(--text-micro); letter-spacing: var(--track-eyebrow); text-transform: uppercase; font-weight: var(--weight-semibold); color: var(--muted); background: var(--surface-2); text-align: start; }
.rs-cell { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px 2px 8px; border-radius: var(--radius-pill); font-size: var(--text-caption); font-weight: var(--weight-medium); white-space: nowrap; line-height: 1.5; }
.rs-cell::before { content: ""; width: 8px; height: 8px; border-radius: 50%; flex: none; }
.rs-cell--y { background: var(--accent-soft); color: var(--info-ink); }
.rs-cell--y::before { background: var(--accent-fill); }
.rs-cell--c { background: var(--warning-soft); color: var(--warning-ink); }
.rs-cell--c::before { background: linear-gradient(90deg, var(--warning) 50%, transparent 50%); border: 1.5px solid var(--warning); }
.rs-cell--n { border: 1px dashed var(--line-strong); color: var(--muted); }
.rs-cell--n::before { border: 1.5px solid var(--line-strong); }
.rs-foot td { text-align: start; }
.rs-foot th, .rs-foot td { border-block-start: 1px solid var(--line); color: var(--ink-2); font-variant-numeric: tabular-nums; }
.rs-matrix tr[hidden] { display: none; }

/* 7 Downloads, references ------------------------------------------------------ */
.rs-dls { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; border-block-start: 1px solid var(--line); }
.rs-dl { display: grid; gap: var(--space-3) var(--space-5); align-items: start; padding-block: var(--space-5); border-block-end: 1px solid var(--line); }
@media (min-width: 48em) { .rs-dl { grid-template-columns: minmax(0, 1fr) auto; } }
.rs-dl__name { margin: 0; font-size: 1.0625rem; font-weight: var(--weight-medium); }
.rs-dl__name code { background: none; padding: 0; font-size: 1rem; }
.rs-dl__desc { margin: 4px 0 0; color: var(--ink-2); font-size: var(--text-ui); line-height: 1.5; max-width: 40rem; }
.rs-dl__meta { margin: var(--space-3) 0 var(--space-1); font-size: var(--text-caption); color: var(--muted); }
.rs-dl .hash { max-width: 40rem; }
.rs-refs li > span { overflow-wrap: anywhere; }
.rs-refs { max-width: var(--lab-read); }

/* 8 Research index and topic page ---------------------------------------------- */
.rs-list { align-items: start; }
.rs-list > li { list-style: none; }
.rs-index .lab-filterbar__label, [data-rs-index] .lab-filterbar__label { min-width: 8.5rem; }
.rs-planned { border-style: dashed; background: transparent; }
.rs-planned .lab-card__title { color: var(--ink-2); font-size: 1.25rem; }
.rs-topicnote { margin-block-start: var(--space-4); padding: var(--space-4) var(--space-5); border-radius: var(--radius-card); background: var(--accent-soft); }
.rs-topicnote p { margin: 0; color: var(--ink-2); }
.rs-topicnote p + p { margin-block-start: var(--space-2); }
.rs-topicnote strong { color: var(--ink); }
.rs-foot { margin-block-start: var(--space-6); max-width: 40rem; }
.rs-topic { display: grid; gap: clamp(2.5rem, 2rem + 2vw, 4rem); max-width: 52rem; }
.rs-tsec h2 { margin: 0 0 var(--space-4); font-size: clamp(1.5rem, 1.2rem + 1vw, 1.875rem); line-height: 1.18; letter-spacing: -0.024em; }
.rs-tsec .lab-prose p:last-child { margin-block-end: 0; }
.rs-tsec__lead { margin: calc(-1 * var(--space-2)) 0 var(--space-4); color: var(--ink-2); }
.rs-terms dd { color: var(--ink-2); }
.rs-steps, .rs-open { margin: 0; padding-inline-start: 1.3em; display: grid; gap: var(--space-3); font-size: 1.0625rem; line-height: 1.55; }
.rs-steps li, .rs-open li { padding-inline-start: 0.3em; margin: 0; }
.rs-open + .lab-sm { margin-block-start: var(--space-4); }
.rs-topic .rs-tsec .lab-grid { align-items: start; }
.rs-steps li::marker { color: var(--muted); font-weight: var(--weight-semibold); }

@media (forced-colors: active) {
  .rs-tile[aria-pressed="true"], .rs-ent.is-on { outline: 2px solid Highlight; }
  .rs-cell { border: 1px solid CanvasText; }
  .rs-dot.is-on { background: CanvasText; }
  .rs-tl .lab-tl__node.rs-node--reset::before { background: CanvasText; }
}
