/* Hallmark · pre-emit critique: P5 H5 E5 S5 R5 V5
 * genre: editorial · macrostructure: Index-First · tone: technical-utilitarian · anchor hue: signal-orange
 * theme: studied-DNA (source: https://btcdca.me/) · nav: N3 side-rail · footer: Ft4 dense typographic
 * display: EB Garamond · body/data: IBM Plex Sans · outlier: Space Mono (inventory + data labels) · enrichment: none · motion: functional only
 * variation: current-cycle evidence freezes the five-asset base/flow/news/final multiplier chain beneath the execution ledger
 * contrast: pass (40–41) · slop: 58/58 pass · honest: pass (46) · chrome: pass (47)
 * tokens: pass (48) · responsive: pass (49) · mobile: pass (34, 49, 50–57) · icons: pass (30)
 */
@import url("./tokens.css");

*,
*::before,
*::after { box-sizing: border-box; }

html {
  overflow-x: clip;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--space-3xl) + var(--space-lg));
}

body {
  margin: 0;
  overflow-x: clip;
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}

button,
input,
select { font: inherit; }

button,
a,
summary,
input,
select { -webkit-tap-highlight-color: var(--color-transparent); }

a {
  color: inherit;
  text-decoration-thickness: var(--rule-hair);
  text-underline-offset: 0.125em;
}

h1,
h2,
h3,
h4,
p { margin-block-start: 0; }

h1,
h2,
h3,
h4 {
  min-width: 0;
  overflow-wrap: anywhere;
  font-family: var(--font-display);
  font-style: normal;
  line-height: 1.08;
  letter-spacing: -0.025em;
}

h1 {
  max-width: 13ch;
  margin-bottom: var(--space-lg);
  font-size: var(--text-display);
  font-weight: 600;
}

h2 {
  margin-bottom: var(--space-xs);
  font-size: var(--text-2xl);
  font-weight: 600;
}

h3 {
  margin-bottom: var(--space-xs);
  font-size: var(--text-lg);
  font-weight: 600;
}

h4 {
  margin-bottom: var(--space-xs);
  font-size: var(--text-md);
  font-weight: 600;
}

code {
  font-family: var(--font-data);
  font-size: var(--text-sm);
}

[hidden] { display: none !important; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

:focus { outline: none; }

:focus-visible {
  outline: var(--rule-medium) solid var(--color-focus);
  outline-offset: var(--space-2xs);
}

.site-nav {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky-nav);
  border-bottom: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
  color: var(--color-ink);
}

.site-nav__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-md);
  width: min(100%, var(--page-max));
  min-height: 4rem;
  margin-inline: auto;
  padding-inline: var(--page-gutter);
}

.wordmark {
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  min-height: 2.75rem;
  justify-content: start;
  gap: 0 var(--space-xs);
  width: fit-content;
  color: var(--color-ink);
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
}

.wordmark small {
  grid-column: 2;
  margin-top: var(--space-2xs);
  color: var(--color-neutral);
  font-family: var(--font-body);
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.11em;
}

.wordmark__mark {
  grid-row: 1 / span 2;
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border: var(--rule-medium) solid var(--color-ink);
  background: var(--color-ink);
  color: var(--color-focus-on-ink);
  font-family: var(--font-body);
  font-size: var(--text-md);
}

.site-nav__center { display: none; }

.site-nav__center a,
.site-nav__action {
  min-height: 2.75rem;
  align-items: center;
  white-space: nowrap;
}

.site-nav__center a {
  color: var(--color-muted);
  font-size: var(--text-sm);
  font-weight: 500;
  text-decoration: none;
}

.site-nav__action {
  display: inline-flex;
  justify-self: end;
  justify-content: center;
  padding-inline: var(--space-md);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-ink);
  color: var(--color-paper);
  font-size: var(--text-sm);
  font-weight: 600;
  text-decoration: none;
}

.market-ticker {
  display: flex;
  gap: var(--space-md);
  min-height: 2.25rem;
  padding: var(--space-xs) var(--page-gutter);
  overflow-x: auto;
  border-top: var(--rule-hair) solid var(--color-rule);
  background: var(--color-paper);
  color: var(--color-muted);
  font-family: var(--font-data);
  font-size: 0.6875rem;
  font-variant-numeric: tabular-nums;
  scrollbar-width: none;
}

.market-ticker::-webkit-scrollbar { display: none; }

.ticker-item {
  display: inline-flex;
  flex: none;
  align-items: center;
  gap: var(--space-xs);
  white-space: nowrap;
}

.ticker-item::before {
  content: "";
  width: var(--space-xs);
  height: var(--space-xs);
  background: var(--asset-color);
}

.ticker-item--btc { --asset-color: var(--color-btc); }
.ticker-item--gold { --asset-color: var(--color-gold); }
.ticker-item--nasdaq { --asset-color: var(--color-nasdaq); }
.ticker-item--sp500 { --asset-color: var(--color-sp500); }
.ticker-item--hs300 { --asset-color: var(--color-hs300); }

.hero,
.market-section,
.flow-section,
.planner-section,
.method-section,
.reference-section,
.site-footer {
  width: min(100%, var(--page-max));
  margin-inline: auto;
  padding-inline: var(--page-gutter);
}

.hero {
  display: grid;
  gap: var(--space-xl);
  padding-block: var(--space-2xl) var(--space-3xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.inventory-line,
.data-label {
  color: var(--color-neutral);
  font-family: var(--font-outlier);
  font-size: var(--text-xs);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.08em;
}

.hero__lede {
  max-width: 62ch;
  color: var(--color-muted);
  font-size: var(--text-md);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-md);
  margin-block: var(--space-xl) var(--space-md);
}

.privacy-note {
  display: flex;
  align-items: flex-start;
  gap: var(--space-xs);
  max-width: 65ch;
  margin: 0;
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.privacy-note span,
.local-only span { color: var(--color-success); }

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--control-height);
  padding: var(--space-sm) var(--space-lg);
  border: var(--rule-hair) solid var(--color-ink);
  border-radius: var(--radius-sm);
  background: var(--color-paper);
  color: var(--color-ink);
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color var(--dur-short) var(--ease-out),
    color var(--dur-short) var(--ease-out),
    transform var(--dur-micro) var(--ease-out);
}

.button--ink {
  background: var(--color-ink);
  color: var(--color-paper);
}

.button--outline { background: var(--color-transparent); }

.button:active { transform: translateY(1px); }

button:disabled,
.button:disabled,
.button[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  background: var(--color-paper-3);
}

.button[data-state="loading"] { cursor: progress; }
.button[data-state="error"] { border-color: var(--color-error); }
.button[data-state="success"] { border-color: var(--color-success); }
.button:not(.button--ink)[data-state="error"] { color: var(--color-error); }
.button:not(.button--ink)[data-state="success"] { color: var(--color-success); }

.text-link,
.text-button {
  color: var(--color-ink);
  font-weight: 600;
  white-space: nowrap;
}

.text-button:active { color: var(--color-accent); }

.text-button {
  min-height: 2.75rem;
  padding: 0;
  border: 0;
  background: var(--color-transparent);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 0.22em;
}

.hero__status {
  align-self: end;
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.status-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-lg);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.status-head h2 {
  margin: 0;
  font-size: var(--text-xl);
}

.source-badge,
.signal {
  display: inline-flex;
  align-items: center;
  min-height: 1.75rem;
  padding-inline: var(--space-xs);
  border: var(--rule-hair) solid var(--color-rule-strong);
  border-radius: var(--radius-round);
  font-size: var(--text-xs);
  font-weight: 600;
  white-space: nowrap;
}

.source-badge[data-state="live"],
.source-badge[data-state="success"] { border-color: var(--color-success); color: var(--color-success); }
.source-badge[data-state="cache"] { border-color: var(--color-warning); color: var(--color-warning); }
.source-badge[data-state="error"] { border-color: var(--color-error); color: var(--color-error); }

.status-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}

.status-grid > div {
  min-width: 0;
  padding: var(--space-md) var(--space-lg);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.status-grid > div:nth-child(odd) { border-inline-end: var(--rule-hair) solid var(--color-rule); }
.status-grid > div:last-child:nth-child(odd) {
  grid-column: 1 / -1;
  border-inline-end: 0;
}

.status-grid dt {
  color: var(--color-neutral);
  font-size: var(--text-sm);
}

.status-grid dd {
  margin: var(--space-xs) 0 0;
  font-family: var(--font-data);
  font-size: var(--text-md);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

.hero__status > p {
  margin: 0;
  padding: var(--space-md) var(--space-lg);
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.market-section {
  padding-block: var(--space-3xl) var(--space-4xl);
}

.section-head {
  display: grid;
  gap: var(--space-md);
  margin-bottom: var(--space-xl);
}

.section-head p {
  max-width: 70ch;
  margin: 0;
  color: var(--color-muted);
}

.section-head > div > h1,
.method-intro > h1 {
  max-width: 20ch;
  margin-bottom: var(--space-sm);
  font-size: var(--text-3xl);
}

.market-grid {
  display: grid;
  grid-auto-columns: minmax(17.5rem, calc(100% - 2rem));
  grid-auto-flow: column;
  gap: var(--space-md);
  margin-inline: calc(0rem - var(--page-gutter));
  padding-inline: var(--page-gutter);
  overflow-x: auto;
  scroll-padding-inline: var(--page-gutter);
  scroll-snap-type: x mandatory;
  scrollbar-color: var(--color-rule-strong) var(--color-paper-3);
}

.market-card,
.market-skeleton {
  min-width: 0;
  min-height: 25rem;
  scroll-snap-align: start;
}

.market-card {
  --asset-color: var(--color-accent);
  position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr auto;
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.market-card--btc { --asset-color: var(--color-btc); }
.market-card--gold { --asset-color: var(--color-gold); }
.market-card--nasdaq { --asset-color: var(--color-nasdaq); }
.market-card--sp500 { --asset-color: var(--color-sp500); }
.market-card--hs300 { --asset-color: var(--color-hs300); }

.market-card__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.asset-symbol {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  margin: 0 0 var(--space-xs);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.08em;
}

.asset-symbol::before {
  content: "";
  width: var(--space-sm);
  height: var(--space-sm);
  background: var(--asset-color);
}

.market-card h3 {
  margin: 0;
  font-size: var(--text-xl);
}

.market-card__instrument {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  align-items: center;
  gap: var(--space-lg);
  padding: var(--space-lg) var(--space-md);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.score-gauge {
  --score: 0;
  display: grid;
  place-items: center;
  width: 7rem;
  aspect-ratio: 1;
  border-radius: var(--radius-round);
  background: conic-gradient(var(--asset-color) calc(var(--score) * 1%), var(--color-paper-4) 0);
}

.score-gauge::before {
  content: "";
  grid-area: 1 / 1;
  width: 5.4rem;
  aspect-ratio: 1;
  border-radius: var(--radius-round);
  background: var(--color-paper-2);
}

.score-gauge__value {
  position: relative;
  z-index: var(--z-raised);
  grid-area: 1 / 1;
  text-align: center;
}

.score-gauge__value strong {
  display: block;
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.score-gauge__value small {
  color: var(--color-neutral);
  font-size: 0.625rem;
}

.instrument-copy p { margin-bottom: var(--space-sm); }

.market-price {
  color: var(--color-ink);
  font-family: var(--font-data);
  font-size: var(--text-md);
  font-variant-numeric: tabular-nums;
}

.multiplier-line {
  display: flex;
  align-items: baseline;
  gap: var(--space-xs);
  margin: 0;
}

.multiplier-line strong {
  color: var(--asset-color);
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.multiplier-line span {
  color: var(--color-neutral);
  font-size: var(--text-sm);
}

.market-metrics,
.indicator-list,
.budget-ledger,
.cash-preview dl { margin: 0; }

.market-metrics {
  padding: 0 var(--space-md);
}

.market-metrics > div,
.indicator-list > div,
.budget-ledger > div,
.cash-preview dl > div {
  display: flex;
  justify-content: space-between;
  gap: var(--space-lg);
  padding-block: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.market-metrics dt,
.indicator-list dt,
.budget-ledger dt,
.cash-preview dt { color: var(--color-muted); }

.market-metrics dd,
.indicator-list dd,
.budget-ledger dd,
.cash-preview dd {
  margin: 0;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  text-align: end;
}

.market-card__open {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 3.25rem;
  padding: var(--space-sm) var(--space-md);
  border: 0;
  border-top: var(--rule-hair) solid var(--color-ink);
  background: var(--color-transparent);
  color: var(--color-ink);
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color var(--dur-short) var(--ease-out),
    color var(--dur-short) var(--ease-out),
    transform var(--dur-micro) var(--ease-out);
}

.market-card__open:active { transform: translateY(1px); }

.step-rail button:active,
.asset-dialog__close:active,
.undo button:active { background: var(--color-paper-3); }

.market-error {
  grid-column: 1 / -1;
  padding: var(--space-xl);
  border: var(--rule-hair) solid var(--color-error);
  background: var(--color-error-soft);
  color: var(--color-ink);
}

.market-skeleton {
  border: var(--rule-hair) solid var(--color-rule);
  background: var(--color-paper-3);
  opacity: 0.65;
  animation: skeleton-pulse 1.2s var(--ease-in-out) infinite alternate;
}

@keyframes skeleton-pulse {
  to { opacity: 0.35; }
}

.source-line {
  max-width: 75ch;
  margin: var(--space-lg) 0 0;
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.flow-section {
  padding-block: var(--space-3xl);
  border-top: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-3);
}

.section-head--flow { align-items: end; }

.section-head--flow h1,
.section-head--flow h2 { margin-bottom: var(--space-sm); }

.flow-boundary,
.integration-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 2rem;
  padding-inline: var(--space-sm);
  border: var(--rule-hair) solid var(--color-ink);
  border-radius: var(--radius-round);
  font-size: var(--text-xs);
  font-weight: 600;
  white-space: nowrap;
}

.capital-flow-content { display: grid; gap: var(--space-lg); }

.flow-empty {
  padding: var(--space-xl);
  border: var(--rule-hair) solid var(--color-rule-strong);
  background: var(--color-paper-2);
}

.flow-empty p { max-width: 62ch; margin: 0; color: var(--color-muted); }

.flow-overview,
.flow-detail-grid {
  display: grid;
  gap: var(--space-lg);
}

.flow-regime,
.flow-tilt,
.flow-history,
.signaldesk-card {
  min-width: 0;
  padding: var(--space-xl);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.flow-regime {
  border-inline-start: var(--rule-hair) solid var(--color-accent);
}

.flow-regime[data-regime="defensive"],
.flow-regime[data-regime="risk_off"] { border-inline-start-color: var(--color-gold); }
.flow-regime[data-regime="risk_on"] { border-inline-start-color: var(--color-success); }
.flow-regime[data-regime="liquidity_shock"] { border-inline-start-color: var(--color-error); }

.flow-regime h3,
.flow-tilt h3,
.flow-history h3,
.signaldesk-card h3 {
  margin-bottom: var(--space-sm);
  font-size: var(--text-xl);
}

.flow-regime > p:not(.data-label),
.flow-tilt > p,
.flow-history p,
.signaldesk-card p { color: var(--color-muted); }

.flow-regime dl {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: var(--space-xl) 0 0;
  border-top: var(--rule-hair) solid var(--color-rule-strong);
}

.flow-regime dl > div {
  min-width: 0;
  padding: var(--space-md) var(--space-sm) 0 0;
}

.flow-regime dt { color: var(--color-neutral); font-size: var(--text-xs); }
.flow-regime dd {
  margin: var(--space-xs) 0 0;
  font-family: var(--font-data);
  font-size: var(--text-sm);
  font-weight: 700;
  overflow-wrap: anywhere;
}

.flow-tilt ul {
  margin: var(--space-lg) 0;
  padding: 0;
  border-top: var(--rule-hair) solid var(--color-rule-strong);
  list-style: none;
}

.flow-tilt li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: baseline;
  gap: var(--space-sm);
  padding-block: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.flow-tilt li strong { font-family: var(--font-data); font-size: var(--text-sm); }
.flow-tilt li small { color: var(--color-neutral); }
.flow-tilt > p:last-child { margin: 0; font-size: var(--text-sm); }

.flow-evidence-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.flow-evidence {
  display: grid;
  align-content: space-between;
  gap: var(--space-sm);
  min-width: 0;
  min-height: 6.75rem;
  padding: var(--space-md);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.flow-evidence:nth-child(odd) { border-inline-end: var(--rule-hair) solid var(--color-rule); }
.flow-evidence:last-child:nth-child(odd) { grid-column: 1 / -1; border-inline-end: 0; }
.flow-evidence span { color: var(--color-neutral); font-size: var(--text-xs); }
.flow-evidence strong { font-family: var(--font-data); font-size: var(--text-sm); overflow-wrap: anywhere; }
.flow-evidence[data-state="defensive"] strong { color: var(--color-warning); }
.flow-evidence[data-state="risk"] strong { color: var(--color-success); }

.flow-history { display: grid; gap: var(--space-lg); }

.table-scroll {
  max-width: 100%;
  overflow-x: auto;
  border: var(--rule-hair) solid var(--color-rule-strong);
}

.flow-history table {
  width: 100%;
  min-width: 38rem;
  border-collapse: collapse;
  font-size: var(--text-sm);
}

.flow-history th,
.flow-history td {
  padding: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule);
  text-align: start;
  font-variant-numeric: tabular-nums;
}

.flow-history thead th { background: var(--color-paper-3); color: var(--color-neutral); }
.flow-history tbody th { font-weight: 500; }
.flow-source { margin: 0; font-size: var(--text-xs); }

.signaldesk-card {
  border-color: var(--color-ink);
  background: var(--color-ink);
  color: var(--color-paper);
}

.signaldesk-card .data-label,
.signaldesk-card p { color: var(--color-rule); }
.signaldesk-card ul { padding-inline-start: var(--space-lg); }
.signaldesk-card li { margin-block: var(--space-xs); }
.integration-badge { border-color: var(--color-focus-on-ink); color: var(--color-focus-on-ink); }

.planner-section {
  padding-block: var(--space-3xl);
  border-top: var(--rule-hair) solid var(--color-ink);
  border-bottom: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-3);
  color: var(--color-ink);
}

.section-head--planner {
  padding-bottom: var(--space-lg);
  border-bottom: var(--rule-hair) solid var(--color-rule-strong);
}

.local-only {
  align-self: start;
  justify-self: start;
  padding: var(--space-xs) var(--space-sm);
  border: var(--rule-hair) solid var(--color-rule-strong);
  border-radius: var(--radius-round);
  background: var(--color-paper);
  font-size: var(--text-sm);
  white-space: nowrap;
}

.planner-layout {
  display: grid;
  gap: var(--space-lg);
}

.planner-console,
.plan-result {
  min-width: 0;
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.step-rail {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.step-rail button {
  display: grid;
  justify-items: center;
  gap: var(--space-2xs);
  min-width: 0;
  min-height: 3.75rem;
  padding: var(--space-xs);
  border: 0;
  border-inline-end: var(--rule-hair) solid var(--color-rule);
  background: var(--color-paper-2);
  color: var(--color-muted);
  font-size: var(--text-xs);
  cursor: pointer;
  white-space: nowrap;
}

.step-rail button:last-child { border-inline-end: 0; }

.step-rail button span {
  display: grid;
  place-items: center;
  width: 1.5rem;
  height: 1.5rem;
  border: var(--rule-hair) solid var(--color-rule-strong);
  border-radius: var(--radius-round);
  font-variant-numeric: tabular-nums;
}

.step-rail button[aria-current="step"] {
  background: var(--color-ink);
  color: var(--color-paper);
}

.step-rail button[aria-current="step"] span {
  border-color: var(--color-focus-on-ink);
  color: var(--color-focus-on-ink);
}

.planner-form { padding: var(--space-lg); }

.planner-form fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.planner-form legend {
  width: 100%;
  margin-bottom: var(--space-sm);
  padding: 0;
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 600;
  line-height: 1.1;
}

.step-intro {
  max-width: 62ch;
  margin-bottom: var(--space-xl);
  color: var(--color-muted);
}

.field-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-lg);
}

.field {
  display: grid;
  align-content: start;
  gap: var(--space-xs);
  min-width: 0;
}

.field label {
  font-size: var(--text-sm);
  font-weight: 600;
}

.field input,
.field select,
.allocation-grid input,
.holding-grid input {
  width: 100%;
  min-height: var(--control-height);
  padding: var(--space-sm) var(--space-xl) var(--space-sm) var(--space-sm);
  border: var(--rule-hair) solid var(--color-rule-strong);
  border-radius: var(--radius-sm);
  outline: var(--rule-medium) solid var(--color-transparent);
  outline-offset: var(--rule-hair);
  background: var(--color-paper);
  color: var(--color-ink);
  font-variant-numeric: tabular-nums;
}

.field input::placeholder { color: var(--color-neutral); opacity: 1; }

.field input:focus-visible,
.field select:focus-visible,
.allocation-grid input:focus-visible,
.holding-grid input:focus-visible {
  border-color: var(--color-ink-2);
  outline-color: var(--color-focus);
}

.field input:disabled,
.field select:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.field input[aria-invalid="true"],
.allocation-grid input[aria-invalid="true"],
.holding-grid input[aria-invalid="true"] {
  border-color: var(--color-error);
  background: var(--color-error-soft);
}

.field input[data-state="success"] { border-color: var(--color-success); }
.field input[data-state="loading"] { cursor: progress; }

.field__help {
  min-height: 1lh;
  margin: 0;
  color: var(--color-neutral);
  font-size: var(--text-xs);
}

.allocation-grid {
  display: grid;
  gap: var(--space-sm);
}

.allocation-grid label {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 7rem;
  align-items: center;
  gap: var(--space-md);
  padding-block: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule);
  font-weight: 600;
}

.allocation-grid label span {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-xs);
}

.allocation-grid input {
  min-width: 0;
  padding-inline: var(--space-xs);
  text-align: end;
}

.allocation-total {
  margin: var(--space-md) 0;
  color: var(--color-success);
  font-weight: 600;
}

.allocation-total[data-state="error"] { color: var(--color-error); }

.holding-panel {
  margin: var(--space-xl) 0;
  padding-top: var(--space-xl);
  border-top: var(--rule-hair) solid var(--color-ink);
}

.holding-panel__head h3 { font-size: var(--text-lg); }
.holding-panel__head p { margin: var(--space-xs) 0 var(--space-md); color: var(--color-muted); font-size: var(--text-sm); }
.holding-grid { display: grid; gap: var(--space-xs); }
.holding-grid label { display: grid; grid-template-columns: minmax(0, 1fr) 8rem; align-items: center; gap: var(--space-md); }
.holding-grid input { min-width: 0; padding-inline: var(--space-xs); text-align: end; }

.persist-control {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-2xs) var(--space-sm);
  padding: var(--space-md);
  border: var(--rule-hair) solid var(--color-rule);
  background: var(--color-paper);
  cursor: pointer;
}

.persist-control input {
  grid-row: 1 / span 2;
  width: 1.25rem;
  height: 1.25rem;
  margin-top: var(--space-2xs);
  accent-color: var(--color-accent);
}

.persist-control span { font-weight: 600; }
.persist-control small { color: var(--color-muted); }

.step-actions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-sm);
  margin-top: var(--space-xl);
  padding-top: var(--space-md);
  border-top: var(--rule-hair) solid var(--color-rule);
}

.step-actions > span {
  color: var(--color-neutral);
  font-size: var(--text-sm);
  text-align: center;
  white-space: nowrap;
}

.form-utilities {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--space-sm);
}

.form-message {
  min-height: 1.6em;
  margin: var(--space-sm) 0 0;
  color: var(--color-neutral);
  font-size: var(--text-sm);
}

.form-message[data-state="error"] { color: var(--color-error); }
.form-message[data-state="success"] { color: var(--color-success); }

.plan-result { align-self: start; }

.cash-preview {
  padding: var(--space-lg);
  border-bottom: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-3);
}

.cash-preview__head {
  display: flex;
  justify-content: space-between;
  gap: var(--space-md);
}

.cash-preview__head span {
  color: var(--color-neutral);
  font-size: var(--text-xs);
}

.empty-result,
.result-head {
  padding: var(--space-xl);
}

.empty-result h3,
.result-head h3 { font-size: var(--text-xl); }

.empty-result p:last-child,
.result-head p { color: var(--color-muted); }

.result-total {
  margin: var(--space-md) 0;
  color: var(--color-ink) !important;
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.budget-ledger { padding-inline: var(--space-xl); }

.asset-plan-list {
  display: grid;
  gap: 0;
  margin: var(--space-xl) 0 0;
  padding: 0;
  border-top: var(--rule-hair) solid var(--color-ink);
  list-style: none;
}

.asset-plan {
  padding: var(--space-md) var(--space-xl);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.asset-plan__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
}

.asset-plan__head span { display: grid; }
.asset-plan__head small { color: var(--color-neutral); }
.asset-plan__head > strong { font-variant-numeric: tabular-nums; }

.asset-plan p {
  margin: var(--space-xs) 0 0;
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.asset-plan__bar {
  width: 100%;
  height: var(--space-xs);
  margin-top: var(--space-sm);
  accent-color: var(--color-accent);
}

.asset-plan__hold {
  display: inline-block;
  margin-top: var(--space-sm);
  color: var(--color-muted);
  font-size: var(--text-sm);
  font-weight: 600;
}

.plan-schedule {
  padding: var(--space-xl);
  border-top: var(--rule-hair) solid var(--color-ink);
}

.plan-schedule__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
}

.plan-schedule__head h4 { margin: var(--space-2xs) 0 0; }
.plan-schedule__head > span { color: var(--color-neutral); font-size: var(--text-xs); white-space: nowrap; }

.plan-schedule__list {
  margin: var(--space-lg) 0;
  padding: 0;
  border-top: var(--rule-hair) solid var(--color-rule-strong);
  list-style: none;
}

.plan-schedule__day {
  display: grid;
  grid-template-columns: minmax(7.5rem, 0.45fr) minmax(0, 1fr);
  gap: var(--space-md);
  padding-block: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.plan-schedule__day time { color: var(--color-muted); font-size: var(--text-sm); font-weight: 600; }
.plan-schedule__day ul { display: grid; gap: var(--space-xs); margin: 0; padding: 0; list-style: none; }
.plan-schedule__day li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--text-sm);
}
.plan-schedule__day strong { font-variant-numeric: tabular-nums; white-space: nowrap; }
.plan-schedule__record {
  min-height: 2.75rem;
  padding-inline: var(--space-xs);
  border: 0;
  background: var(--color-transparent);
  color: var(--color-ink);
  font: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: var(--rule-hair);
  text-underline-offset: var(--space-2xs);
  white-space: nowrap;
  cursor: pointer;
}
.plan-schedule__record:active { background: var(--color-accent-soft); }
.plan-schedule__record:disabled { opacity: 0.55; cursor: not-allowed; background: var(--color-paper-3); }
.plan-schedule__record[data-state="loading"] { cursor: progress; }
.plan-schedule__record[data-state="error"] { color: var(--color-error); }
.plan-schedule__record[data-state="success"] { color: var(--color-success); }
.plan-schedule__actions { display: grid; gap: var(--space-xs); }
.plan-schedule__actions > * { width: 100%; }
.plan-schedule__download { width: 100%; }
.plan-schedule__note { margin: var(--space-sm) 0 0; color: var(--color-muted); font-size: var(--text-xs); line-height: 1.55; }

@media (max-width: 39.99rem) {
  .plan-schedule { padding-inline: var(--space-lg); }
  .plan-schedule__head,
  .plan-schedule__day { grid-template-columns: 1fr; }
  .plan-schedule__head { display: grid; }
  .plan-schedule__head > span { white-space: normal; }
}

@media (min-width: 40rem) {
  .plan-schedule__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plan-schedule__download { grid-column: 1 / -1; }
}

.plan-warnings {
  padding: var(--space-xl);
  border-top: var(--rule-hair) solid var(--color-ink);
  background: var(--color-warning-soft);
  color: var(--color-ink);
}

.plan-flow-note,
.plan-holdings-note {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-xs) var(--space-md);
  margin: var(--space-xl);
  padding: var(--space-md);
  border: var(--rule-hair) solid var(--color-gold);
  background: var(--color-warning-soft);
}

.plan-holdings-note { border-color: var(--color-accent); background: var(--color-accent-soft); }
.plan-flow-note span,
.plan-holdings-note span { color: var(--color-muted); }
.plan-flow-note strong,
.plan-holdings-note strong { text-align: end; }
.plan-flow-note p,
.plan-holdings-note p { grid-column: 1 / -1; margin: 0; color: var(--color-muted); font-size: var(--text-sm); }

.plan-warnings ul { margin-bottom: 0; padding-inline-start: var(--space-lg); }

.method-section {
  padding-block: var(--space-4xl) var(--space-3xl);
}

.method-intro {
  max-width: 70ch;
  margin-bottom: var(--space-2xl);
}

.method-intro p {
  color: var(--color-muted);
  font-size: var(--text-md);
}

.method-intro .method-source {
  margin: var(--space-md) 0 0;
  font-size: var(--text-sm);
}

.method-source a {
  color: var(--color-ink);
  font-weight: 600;
  white-space: nowrap;
}

.method-steps {
  margin: 0;
  padding: 0;
  border-top: var(--rule-hair) solid var(--color-ink);
  list-style: none;
}

.method-steps li {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr);
  gap: var(--space-md);
  padding-block: var(--space-xl);
  border-bottom: var(--rule-hair) solid var(--color-rule-strong);
}

.method-steps li > span {
  color: var(--color-neutral);
  font-family: var(--font-data);
  font-size: var(--text-sm);
  font-variant-numeric: tabular-nums;
}

.method-steps h3 { font-size: var(--text-xl); }
.method-steps p { max-width: 62ch; margin: 0; color: var(--color-muted); }

.calculation-notes {
  margin-top: var(--space-3xl);
  padding-top: var(--space-xl);
  border-top: var(--rule-medium) solid var(--color-ink);
}

.calculation-notes__head {
  display: grid;
  gap: var(--space-sm);
  max-width: 70ch;
  margin-bottom: var(--space-xl);
}

.calculation-notes__head h3 {
  margin: 0;
  font-size: var(--text-2xl);
}

.calculation-notes__head p {
  max-width: 62ch;
  margin: 0;
  color: var(--color-muted);
  font-size: var(--text-md);
}

.calculation-ledger {
  margin: 0;
  border-top: var(--rule-hair) solid var(--color-rule-strong);
}

.calculation-ledger > div {
  display: grid;
  gap: var(--space-sm);
  padding-block: var(--space-lg);
  border-bottom: var(--rule-hair) solid var(--color-rule-strong);
}

.calculation-ledger dt {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 600;
  line-height: 1.1;
}

.calculation-ledger dd {
  display: grid;
  gap: var(--space-xs);
  min-width: 0;
  margin: 0;
}

.calculation-ledger code {
  color: var(--color-ink);
  font-size: var(--text-sm);
  font-weight: 700;
  overflow-wrap: anywhere;
}

.calculation-ledger span {
  max-width: 62ch;
  color: var(--color-muted);
}

.formula-ledger {
  display: grid;
  margin-top: var(--space-3xl);
  border: var(--rule-hair) solid var(--color-ink);
}

.formula-ledger article {
  padding: var(--space-xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.formula-ledger article:last-child { border-bottom: 0; }
.formula-ledger p { margin: 0; color: var(--color-muted); }

.reference-section {
  padding-block: var(--space-3xl);
  border-top: var(--rule-hair) solid var(--color-ink);
}

.reference-head {
  display: grid;
  gap: var(--space-sm);
  margin-bottom: var(--space-xl);
}

.reference-head p { margin: 0; color: var(--color-muted); }

.reference-list {
  border-top: var(--rule-hair) solid var(--color-rule-strong);
}

.reference-list p {
  display: grid;
  gap: var(--space-xs);
  margin: 0;
  padding-block: var(--space-md);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.reference-list a {
  font-weight: 600;
  white-space: nowrap;
}

.reference-list span { color: var(--color-muted); }

.disclaimer {
  max-width: 75ch;
  margin: var(--space-xl) 0 0;
  padding: var(--space-md);
  border: var(--rule-hair) solid var(--color-error);
  background: var(--color-error-soft);
  color: var(--color-ink);
}

.site-footer {
  padding-block: var(--space-lg) calc(var(--bottom-nav-height) + var(--space-xl));
  border-top: var(--rule-hair) solid var(--color-ink);
}

.site-footer p {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin: 0;
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.site-footer strong {
  color: var(--color-ink);
  font-family: var(--font-display);
  font-size: var(--text-md);
}

.mobile-nav {
  position: fixed;
  inset: auto 0 0;
  z-index: var(--z-sticky);
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  min-height: var(--bottom-nav-height);
  padding-bottom: env(safe-area-inset-bottom);
  border-top: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.mobile-nav a {
  display: grid;
  place-content: center;
  justify-items: center;
  gap: var(--space-2xs);
  min-width: 0;
  min-height: var(--bottom-nav-height);
  color: var(--color-muted);
  text-decoration: none;
  white-space: nowrap;
}

.mobile-nav a span {
  color: var(--color-ink);
  font-size: var(--text-md);
  line-height: 1;
}

.mobile-nav a small { font-size: 0.6875rem; }
.mobile-nav a[aria-current="location"] { background: var(--color-ink); color: var(--color-paper); }
.mobile-nav a[aria-current="location"] span { color: var(--color-focus-on-ink); }

.asset-dialog {
  position: fixed;
  inset: 0;
  width: min(calc(100% - 2rem), 48rem);
  height: fit-content;
  max-height: min(88dvh, 52rem);
  margin: auto;
  padding: 0;
  overflow: hidden;
  border: var(--rule-hair) solid var(--color-ink);
  border-radius: var(--radius-lg);
  background: var(--color-paper-2);
  color: var(--color-ink);
  box-shadow: 0 1.5rem 4rem var(--color-shadow);
}

.asset-dialog::backdrop { background: var(--color-backdrop); }

.asset-dialog__panel {
  position: relative;
  max-height: min(88dvh, 52rem);
  overflow-y: auto;
}

.asset-dialog__close {
  position: sticky;
  top: var(--space-sm);
  z-index: var(--z-raised);
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: var(--space-sm) var(--space-sm) 0 auto;
  border: var(--rule-hair) solid var(--color-ink);
  border-radius: var(--radius-round);
  background: var(--color-paper-2);
  color: var(--color-ink);
  font-size: var(--text-lg);
  cursor: pointer;
}

.asset-detail { --asset-color: var(--color-accent); }
.asset-detail--btc { --asset-color: var(--color-btc); }
.asset-detail--gold { --asset-color: var(--color-gold); }
.asset-detail--nasdaq { --asset-color: var(--color-nasdaq); }
.asset-detail--sp500 { --asset-color: var(--color-sp500); }
.asset-detail--hs300 { --asset-color: var(--color-hs300); }

.asset-detail__hero {
  display: grid;
  gap: var(--space-lg);
  padding: var(--space-sm) var(--space-xl) var(--space-xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.asset-detail__hero h2 { font-size: var(--text-3xl); }

.asset-detail__readout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: var(--rule-hair) solid var(--color-ink);
}

.asset-detail__readout div {
  padding: var(--space-md);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}

.asset-detail__readout div:nth-child(odd) { border-inline-end: var(--rule-hair) solid var(--color-rule); }
.asset-detail__readout div:nth-last-child(-n + 2) { border-bottom: 0; }
.asset-detail__readout span { color: var(--color-neutral); font-size: var(--text-xs); }
.asset-detail__readout strong { display: block; margin-top: var(--space-xs); font-family: var(--font-data); font-variant-numeric: tabular-nums; }
.asset-detail__body { padding: var(--space-xl); }
.asset-detail__body h3 { margin-top: var(--space-xl); }
.asset-detail__body h3:first-child { margin-top: 0; }

.issue-list {
  margin: var(--space-md) 0 0;
  padding: var(--space-md) var(--space-lg);
  border: var(--rule-hair) solid var(--color-warning);
  background: var(--color-warning-soft);
  color: var(--color-ink);
}

.quality-ok {
  margin-top: var(--space-md);
  color: var(--color-success);
}

.upstream-note {
  margin: var(--space-md) 0 0;
  color: var(--color-muted);
  font-size: var(--text-sm);
}

.undo {
  position: fixed;
  inset: auto var(--space-md) calc(var(--bottom-nav-height) + var(--space-md)) var(--space-md);
  z-index: var(--z-toast);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
  max-width: 24rem;
  padding: var(--space-sm) var(--space-md);
  border: var(--rule-hair) solid var(--color-paper);
  background: var(--color-ink);
  color: var(--color-paper);
}

.undo button {
  min-height: 2.75rem;
  border: 0;
  background: var(--color-transparent);
  color: var(--color-focus-on-ink);
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}

@media (hover: hover) and (pointer: fine) {
  .site-nav__center a:hover,
  .text-link:hover,
  .text-button:hover { color: var(--color-accent); }

  .site-nav__action:hover,
  .button--ink:hover {
    background: var(--color-ink-2);
  }

  .button--outline:hover,
  .market-card__open:hover {
    background: var(--color-paper-3);
  }

  .field input:hover,
  .field select:hover,
  .allocation-grid input:hover { background: var(--color-paper-3); }

  .step-rail button:hover { background: var(--color-paper-3); }
  .step-rail button[aria-current="step"]:hover { background: var(--color-ink); color: var(--color-paper); }
}

@media (min-width: 40rem) {
  .site-nav__inner { grid-template-columns: minmax(0, 1fr) auto; }
  .section-head { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .section-head--planner { align-items: start; }
  .field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .market-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-columns: auto;
    grid-auto-flow: row;
    margin-inline: 0;
    padding-inline: 0;
    overflow: visible;
    scroll-snap-type: none;
  }
  .reference-list p { grid-template-columns: minmax(15rem, 0.8fr) minmax(0, 1.2fr); gap: var(--space-xl); }
  .flow-evidence-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .flow-evidence { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .flow-evidence:nth-child(odd) { border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .flow-evidence:last-child:nth-child(odd),
  .flow-evidence:last-child { grid-column: auto; border-inline-end: 0; }
  .formula-ledger { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .formula-ledger article { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-ink); }
  .formula-ledger article:last-child { border-inline-end: 0; }
  .asset-detail__hero { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); align-items: end; }
  .undo { inset-inline-start: auto; bottom: var(--space-md); }
}

@media (min-width: 60rem) {
  html { scroll-padding-top: calc(var(--space-3xl) + var(--space-sm)); }
  .site-nav__inner { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
  .site-nav__center { display: flex; align-items: center; justify-content: center; gap: var(--space-md); }
  .hero { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-3xl); align-items: end; }
  .hero__status { border-inline-start-width: var(--rule-medium); }
  .market-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .flow-overview { grid-template-columns: minmax(0, 7fr) minmax(18rem, 5fr); }
  .flow-detail-grid { grid-template-columns: minmax(0, 8fr) minmax(18rem, 4fr); align-items: stretch; }
  .market-card:nth-child(4) { grid-column: 1 / 2; }
  .planner-layout { grid-template-columns: minmax(0, 7fr) minmax(20rem, 5fr); gap: var(--space-xl); align-items: start; }
  .plan-result { position: sticky; top: 7.25rem; max-height: calc(100dvh - 8.5rem); overflow-y: auto; }
  .method-steps li { grid-template-columns: 6rem minmax(0, 1fr); gap: var(--space-xl); }
  .method-steps li > div { display: grid; grid-template-columns: minmax(12rem, 0.7fr) minmax(0, 1.3fr); gap: var(--space-2xl); align-items: baseline; }
  .calculation-ledger > div { grid-template-columns: minmax(12rem, 0.7fr) minmax(0, 1.3fr); gap: var(--space-2xl); align-items: baseline; }
  .site-footer { padding-bottom: var(--space-lg); }
  .mobile-nav { display: none; }
  .undo { bottom: var(--space-md); }
}

@media (min-width: 90rem) {
  .market-card,
  .market-skeleton { min-height: 26rem; }
  .planner-form { padding: var(--space-xl); }
}

@media (pointer: coarse) {
  .button,
  .text-button,
  .site-nav__action,
  .site-nav__center a,
  .market-card__open { min-height: 3rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after {
    animation-duration: 150ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 150ms !important;
    transform: none !important;
  }
}

/* Index-first research workspace · v0.5 */
.rail-toggle {
  position: fixed;
  inset: var(--space-sm) auto auto var(--space-sm);
  z-index: var(--z-modal);
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  min-height: var(--control-height);
  padding-inline: var(--space-sm);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
  color: var(--color-ink);
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);
}

.rail-toggle:active { transform: translateY(1px); }
.rail-toggle[aria-expanded="true"] { background: var(--color-ink); color: var(--color-paper); }

.research-rail {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: var(--z-rail);
  display: flex;
  flex-direction: column;
  width: min(var(--rail-width), 88%);
  padding: calc(var(--space-2xl) + var(--space-lg)) var(--space-lg) var(--space-xl);
  border-inline-end: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
  color: var(--color-ink);
  overflow-y: auto;
  overscroll-behavior: contain;
  transform: translateX(-102%);
  transition: transform var(--dur-short) var(--ease-out);
}

.research-rail[data-open="true"] { transform: translateX(0); }

.research-rail__wordmark {
  display: grid;
  align-content: center;
  gap: var(--space-3xs);
  min-height: 2.75rem;
  margin-bottom: var(--space-xl);
  font-family: var(--font-wordmark);
  font-size: var(--text-lg);
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
}

.research-rail__wordmark small {
  color: var(--color-neutral);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 400;
  letter-spacing: 0.08em;
}

.research-rail__groups { display: grid; gap: var(--space-xl); }
.research-rail__groups section { display: grid; gap: var(--space-2xs); }
.research-rail__groups h2 {
  margin: 0 0 var(--space-xs);
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
}

.research-rail__groups a {
  display: flex;
  align-items: center;
  min-height: 2.75rem;
  padding-inline: var(--space-xs);
  border-bottom: var(--rule-hair) solid var(--color-rule);
  font-size: var(--text-sm);
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);
}

.research-rail__groups a[aria-current="page"] {
  background: var(--color-accent-soft);
  color: var(--color-ink);
  font-weight: 600;
}

.research-rail__groups a[aria-current="page"]::before {
  content: "";
  width: var(--space-2xs);
  height: var(--space-2xs);
  margin-inline-end: var(--space-xs);
  background: var(--color-accent);
}

.research-rail__note {
  margin: auto 0 0;
  padding-top: var(--space-xl);
  color: var(--color-muted);
  font-size: var(--text-xs);
  line-height: 1.5;
}

.site-nav__inner { padding-inline-start: calc(var(--space-2xl) + var(--space-lg) + var(--space-2xs)); }
.site-nav__center,
.site-nav__action { display: none; }
.mobile-nav { display: none !important; }

body[data-route="home"] #legacy-app > section:not(.hero):not(.module-index):not(.market-section),
body[data-route="planner"] #legacy-app > section:not(.planner-section),
body[data-route="flow"] #legacy-app > section:not(.flow-section),
body[data-route="method"] #legacy-app > section:not(.method-section):not(.reference-section) { display: none; }

body[data-route]:not([data-route="home"]):not([data-route="planner"]):not([data-route="flow"]):not([data-route="method"]) #legacy-app { display: none; }

body[data-route="planner"] .planner-section,
body[data-route="flow"] .flow-section,
body[data-route="method"] .method-section { padding-top: var(--space-2xl); }

.module-index {
  max-width: var(--page-max);
  margin-inline: auto;
  padding: var(--space-2xl) var(--page-gutter) var(--space-3xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.module-index__intro {
  display: grid;
  gap: var(--space-sm);
  margin-bottom: var(--space-xl);
}

.module-index__intro p { max-width: 68ch; margin: 0; color: var(--color-muted); }

.index-ledger { border-top: var(--rule-medium) solid var(--color-ink); }

.index-ledger a {
  display: grid;
  grid-template-columns: minmax(4.5rem, 0.4fr) minmax(0, 1.2fr);
  gap: var(--space-xs) var(--space-md);
  padding: var(--space-md) 0;
  border-bottom: var(--rule-hair) solid var(--color-rule-strong);
  color: var(--color-ink);
  text-decoration: none;
  transition: background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);
}

.index-ledger span,
.index-ledger b {
  font-family: var(--font-data);
  font-size: var(--text-xs);
  font-variant-numeric: tabular-nums;
}

.index-ledger strong { font-family: var(--font-display); font-size: var(--text-md); }
.index-ledger small { grid-column: 2; color: var(--color-muted); font-size: var(--text-sm); }
.index-ledger b { grid-column: 2; color: var(--color-neutral); font-weight: 400; }

.route-view {
  width: min(100%, calc(var(--page-max) + var(--page-gutter) * 2));
  min-height: calc(100dvh - 8rem);
  margin-inline: auto;
  padding: var(--space-2xl) var(--page-gutter) var(--space-4xl);
}

.route-header {
  display: grid;
  gap: var(--space-lg);
  padding-bottom: var(--space-xl);
  border-bottom: var(--rule-medium) solid var(--color-ink);
}

.route-header h1 {
  max-width: 18ch;
  margin: var(--space-sm) 0 var(--space-sm);
  font-size: var(--text-display-s);
}

.route-header p { max-width: 65ch; margin: 0; color: var(--color-muted); }
.route-back,
.text-link { min-height: 2.75rem; display: inline-flex; align-items: center; width: fit-content; white-space: nowrap; }
.route-header__meta { font-family: var(--font-data); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }

.research-section {
  padding-block: var(--space-3xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.research-section__head { display: grid; gap: var(--space-sm); margin-bottom: var(--space-xl); }
.research-section__head p { max-width: 72ch; margin: 0; color: var(--color-muted); }

.asset-overview {
  --asset-route-color: var(--color-accent);
  display: grid;
  gap: var(--space-xl);
  padding-block: var(--space-2xl);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}

.asset-overview--btc { --asset-route-color: var(--color-btc); }
.asset-overview--gold { --asset-route-color: var(--color-gold); }
.asset-overview--nasdaq { --asset-route-color: var(--color-nasdaq); }
.asset-overview--sp500 { --asset-route-color: var(--color-sp500); }
.asset-overview--hs300 { --asset-route-color: var(--color-hs300); }

.asset-overview__score {
  display: grid;
  align-content: start;
  width: fit-content;
  min-width: 11rem;
  padding-top: var(--space-sm);
  border-top: var(--rule-medium) solid var(--asset-route-color);
}

.asset-overview__score span,
.asset-overview__score small { color: var(--color-muted); font-size: var(--text-sm); }
.asset-overview__score strong { font-family: var(--font-data); font-size: var(--text-4xl); line-height: 1; font-variant-numeric: tabular-nums; }
.asset-overview dl,
.detail-ledger { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: var(--rule-hair) solid var(--color-rule-strong); }
.asset-overview dl div,
.detail-ledger div { padding: var(--space-md) 0; border-bottom: var(--rule-hair) solid var(--color-rule); }
.asset-overview dt,
.detail-ledger dt { color: var(--color-muted); font-size: var(--text-sm); }
.asset-overview dd,
.detail-ledger dd { margin: var(--space-2xs) 0 0; font-family: var(--font-data); font-variant-numeric: tabular-nums; }

.shadow-confirmation-section { background: var(--color-paper-2); }
.shadow-confirmation-summary {
  display: grid;
  gap: var(--space-xl);
  margin-bottom: var(--space-xl);
  padding-block: var(--space-lg);
  border-block: var(--rule-hair) solid var(--color-ink);
}
.shadow-confirmation-summary > div:first-child {
  display: grid;
  align-content: start;
  width: fit-content;
  min-width: 11rem;
  padding-top: var(--space-sm);
  border-top: var(--rule-medium) solid var(--color-warning);
}
.shadow-confirmation-summary[data-state="strong"] > div:first-child,
.shadow-confirmation-summary[data-state="candidate"] > div:first-child { border-top-color: var(--color-success); }
.shadow-confirmation-summary span,
.shadow-confirmation-summary small { color: var(--color-muted); font-size: var(--text-sm); }
.shadow-confirmation-summary strong { font-family: var(--font-data); font-size: var(--text-4xl); line-height: 1; font-variant-numeric: tabular-nums; }
.shadow-confirmation-summary dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: var(--rule-hair) solid var(--color-rule-strong); }
.shadow-confirmation-summary dl div { min-width: 0; padding: var(--space-sm) 0; border-bottom: var(--rule-hair) solid var(--color-rule); }
.shadow-confirmation-summary dt { color: var(--color-muted); font-size: var(--text-xs); }
.shadow-confirmation-summary dd { margin: var(--space-3xs) 0 0; font-family: var(--font-data); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.shadow-validation-section { border-top: var(--rule-medium) solid var(--color-ink); }

.table-wrap { width: 100%; overflow-x: auto; }
.research-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.research-table th,
.research-table td { padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); text-align: start; vertical-align: top; }
.research-table thead th { border-bottom-color: var(--color-ink); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); font-weight: 600; }
.research-table tbody th { font-weight: 600; }
.research-table td { font-family: var(--font-data); font-size: var(--text-sm); }
.dimension-table td:last-child { max-width: 30ch; font-family: var(--font-body); }

.indicator-evidence { display: grid; gap: var(--space-2xl); }
.indicator-radar { min-width: 0; margin: 0; }
.indicator-radar figcaption { margin-bottom: var(--space-sm); font-weight: 600; }
.indicator-radar .research-chart { height: 19rem; }
.indicator-radar p { max-width: 62ch; margin: var(--space-sm) 0 0; color: var(--color-muted); font-size: var(--text-sm); }

.backtest-controls,
.filter-bar,
.record-tools { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-md); margin-bottom: var(--space-xl); }
.backtest-controls label,
.filter-bar label { display: grid; gap: var(--space-xs); color: var(--color-muted); font-size: var(--text-sm); }
.backtest-controls label small { min-height: 1lh; max-width: 28ch; color: var(--color-neutral); font-size: var(--text-xs); }
.backtest-controls input,
.backtest-controls select,
.filter-bar input,
.filter-bar select {
  min-height: var(--control-height);
  padding-inline: var(--space-sm);
  border: var(--rule-hair) solid var(--color-rule-strong);
  outline: var(--rule-medium) solid var(--color-transparent);
  outline-offset: var(--rule-hair);
  background: var(--color-paper-2);
  color: var(--color-ink);
}

.backtest-controls input:focus-visible,
.backtest-controls select:focus-visible,
.filter-bar input:focus-visible,
.filter-bar select:focus-visible { outline-color: var(--color-focus); }
.backtest-controls input:disabled,
.backtest-controls select:disabled { opacity: 0.55; cursor: not-allowed; background: var(--color-paper-3); }

.stat-strip {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-block: var(--rule-hair) solid var(--color-ink);
}
.stat-strip div { display: grid; gap: var(--space-2xs); padding: var(--space-md) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
.stat-strip b { font-family: var(--font-data); font-size: var(--text-md); font-variant-numeric: tabular-nums; }
.stat-strip span { color: var(--color-muted); font-size: var(--text-xs); }

.chart-pair { display: grid; gap: var(--space-xl); margin-top: var(--space-xl); }
.chart-pair figure { min-width: 0; margin: 0; }
.chart-pair figcaption { margin-bottom: var(--space-sm); font-weight: 600; }
.research-chart { display: block; width: 100%; height: 20rem; border-block: var(--rule-hair) solid var(--color-rule-strong); }
.chart-pair__wide { grid-column: 1 / -1; }
.price-only-chart { min-width: 0; margin: var(--space-xl) 0 0; }
.price-only-chart figcaption { margin-bottom: var(--space-sm); font-weight: 600; }

.backtest-analysis { margin-top: var(--space-3xl); padding-top: var(--space-xl); border-top: var(--rule-medium) solid var(--color-ink); }
.asset-risk-ledger {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: var(--space-xl);
  border-block: var(--rule-hair) solid var(--color-rule-strong);
}
.asset-risk-ledger span { display: grid; gap: var(--space-2xs); padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
.asset-risk-ledger b { font-family: var(--font-data); font-size: var(--text-sm); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.asset-risk-ledger span { color: var(--color-muted); font-size: var(--text-xs); }
.stress-table th small { display: block; margin-top: var(--space-2xs); color: var(--color-muted); font-family: var(--font-data); font-weight: 400; }

.annual-ledger { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: var(--space-xl); }
.annual-ledger h3 { flex-basis: 100%; }
.annual-ledger span { display: inline-flex; gap: var(--space-xs); padding: var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); font-family: var(--font-data); font-size: var(--text-sm); }
.trailing-table td small { display: block; margin-top: var(--space-2xs); color: var(--color-muted); font-family: var(--font-data); }
.return-calendar { display: grid; gap: var(--space-xl); }
.return-calendar__year { display: grid; gap: var(--space-sm); }
.return-calendar__year h4 { margin: 0; font-family: var(--font-data); font-size: var(--text-md); font-variant-numeric: tabular-nums; }
.return-calendar__months { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-xs); }
.return-month {
  min-width: 0;
  padding: var(--space-sm) var(--space-xs);
  border-block: var(--rule-hair) solid var(--color-rule-strong);
  background: var(--color-paper-3);
  color: var(--color-ink);
}
.return-month[data-state="positive"] { background: var(--color-success-soft); }
.return-month[data-state="negative"] { background: var(--color-error-soft); }
.return-month span,
.return-month b,
.return-month small { display: block; overflow-wrap: anywhere; }
.return-month span { color: var(--color-muted); font-size: var(--text-xs); }
.return-month b { margin-top: var(--space-2xs); font-family: var(--font-data); font-size: var(--text-sm); font-variant-numeric: tabular-nums; white-space: nowrap; overflow-wrap: normal; }
.return-month small { margin-top: var(--space-3xs); color: var(--color-neutral); font-size: var(--text-xs); }
.distribution-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: var(--space-xl);
  border-block: var(--rule-hair) solid var(--color-ink);
}
.distribution-summary span { display: grid; gap: var(--space-2xs); padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); color: var(--color-muted); font-size: var(--text-xs); }
.distribution-summary b { color: var(--color-ink); font-family: var(--font-data); font-size: var(--text-md); font-variant-numeric: tabular-nums; }
.return-distribution { display: grid; gap: var(--space-sm); }
.return-distribution__row { display: grid; grid-template-columns: minmax(6.5rem, 0.7fr) minmax(0, 1.3fr); align-items: center; gap: var(--space-xs) var(--space-md); }
.return-distribution__row > span { color: var(--color-muted); font-size: var(--text-sm); }
.return-distribution__row > b { grid-column: 2; font-family: var(--font-data); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
.return-distribution__track {
  width: 100%;
  height: var(--space-xs);
  overflow: clip;
  border: 0;
  appearance: none;
  background: var(--color-paper-4);
}
.return-distribution__track::-webkit-progress-bar { background: var(--color-paper-4); }
.return-distribution__track::-webkit-progress-value { background: var(--color-ink); }
.return-distribution__track::-moz-progress-bar { background: var(--color-ink); }
.research-notes { max-width: 75ch; margin: var(--space-xl) 0 0; color: var(--color-muted); }
.research-notes li + li { margin-top: var(--space-xs); }
.signal-quality { margin-top: var(--space-3xl); padding-top: var(--space-xl); border-top: var(--rule-medium) solid var(--color-ink); }

.research-empty {
  max-width: 70ch;
  padding: var(--space-2xl) 0;
  border-block: var(--rule-hair) solid var(--color-rule-strong);
}
.research-empty p { max-width: 65ch; color: var(--color-muted); }
.quality-section .issue-list { max-width: 70ch; }
.data-caveat { max-width: 75ch; padding: var(--space-md); border: var(--rule-hair) solid var(--color-warning); background: var(--color-warning-soft); color: var(--color-ink); }

.segmented { display: flex; gap: 0; min-height: var(--control-height); border: var(--rule-hair) solid var(--color-ink); }
.segmented button { min-height: var(--control-height); padding-inline: var(--space-sm); border: 0; background: var(--color-paper-2); color: var(--color-ink); cursor: pointer; white-space: nowrap; }
.segmented button[aria-pressed="true"] { background: var(--color-ink); color: var(--color-paper); }

.table-link {
  display: inline-grid;
  gap: var(--space-3xs);
  min-height: 2.75rem;
  padding: 0;
  border: 0;
  background: var(--color-transparent);
  color: var(--color-ink);
  font: inherit;
  text-align: start;
  text-decoration: underline;
  text-decoration-thickness: var(--rule-hair);
  text-underline-offset: var(--space-2xs);
  cursor: pointer;
}
.table-link small { color: var(--color-muted); font-family: var(--font-data); font-weight: 400; }
.table-link--danger { color: var(--color-error); }

.research-dialog {
  position: fixed;
  inset: 0;
  width: min(44rem, calc(100% - 2 * var(--space-xs)));
  max-width: none;
  max-height: min(calc(100dvh - 2 * var(--space-xs)), 48rem);
  margin: auto;
  padding: clamp(var(--space-md), 4vw, var(--space-xl));
  border: var(--rule-medium) solid var(--color-ink);
  background: var(--color-paper-2);
  color: var(--color-ink);
  overflow: auto;
}
.research-dialog::backdrop { background: var(--color-backdrop); }
.research-dialog .dialog-close { margin-top: var(--space-xl); }
.research-dialog h3 { margin-top: var(--space-2xl); }
.research-dialog h3 small { color: var(--color-muted); font-family: var(--font-data); font-size: var(--text-xs); font-weight: 400; }

@media (max-width: 39.999rem) {
  .holdings-detail-table tbody tr {
    display: grid;
    grid-template-columns: 2rem 4.5rem minmax(0, 1fr) 4rem;
    align-items: center;
    gap: var(--space-xs);
  }

  .holdings-detail-table tbody th,
  .holdings-detail-table tbody td {
    display: block;
    width: auto;
    min-width: 0;
    padding: var(--space-sm) 0;
  }

  .holdings-detail-table [data-label]::before { display: none; }
  .holdings-detail-table tbody td:last-child { text-align: end; }
}

.portfolio-source-status { max-width: 78ch; margin: 0 0 var(--space-xl); color: var(--color-muted); font-size: var(--text-sm); }
.fund-table td small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); }
.fund-performance-chart { min-width: 0; margin: var(--space-2xl) 0; }
.fund-performance-chart figcaption { margin-bottom: var(--space-sm); font-weight: 600; }
.fund-performance-chart p { margin: var(--space-sm) 0 0; color: var(--color-muted); font-size: var(--text-xs); }

.allocation-ledger { display: grid; gap: var(--space-sm); }
.allocation-ledger div { display: grid; grid-template-columns: minmax(9rem, 1fr) minmax(5rem, 2fr) auto; align-items: center; gap: var(--space-sm); }
.allocation-ledger i { display: block; height: var(--space-xs); background: var(--color-paper-4); }
.allocation-ledger i::before { content: ""; display: block; width: calc(var(--allocation) * 1%); height: 100%; background: var(--color-accent); }
.allocation-ledger b { font-family: var(--font-data); font-variant-numeric: tabular-nums; }

.record-layout { display: grid; gap: var(--space-xl); padding-block: var(--space-3xl); border-bottom: var(--rule-hair) solid var(--color-ink); }
.record-form,
.record-summary { min-width: 0; }
.record-summary { padding-top: var(--space-xl); border-top: var(--rule-hair) solid var(--color-ink); }
.review-policy { padding-bottom: 0; }
.review-steps { margin-top: var(--space-xl); }
.review-summary h3 { margin-top: var(--space-2xl); }
.review-summary .research-empty { padding-top: 0; }
.review-allocation { margin-top: var(--space-md); }
.review-metrics dd { overflow-wrap: anywhere; }
.snapshot-table td { font-variant-numeric: tabular-nums; }
.snapshot-table code { font-size: var(--text-xs); }
.record-table td { font-variant-numeric: tabular-nums; }
.record-timing { font-family: var(--font-body); font-weight: 600; white-space: nowrap; }
.record-timing[data-state="on-time"] { color: var(--color-success); }
.record-timing[data-state="shifted"] { color: var(--color-warning); }
.current-cycle-section { border-bottom: var(--rule-medium) solid var(--color-ink); }
.current-cycle__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding-block: var(--space-sm);
  border-block: var(--rule-hair) solid var(--color-ink);
}
.current-cycle__summary h3 { margin: var(--space-2xs) 0 0; font-size: var(--text-lg); line-height: 1.15; }
.current-cycle__summary > strong {
  font-family: var(--font-data);
  font-size: var(--text-xl);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.current-cycle__progress {
  display: block;
  width: 100%;
  height: var(--space-xs);
  margin-block: var(--space-lg);
  border: 0;
  accent-color: var(--color-accent);
}
.current-cycle__facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0 0 var(--space-xl);
  border-block: var(--rule-hair) solid var(--color-rule-strong);
}
.current-cycle__facts div { min-width: 0; padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
.current-cycle__facts dt { color: var(--color-muted); font-size: var(--text-xs); }
.current-cycle__facts dd { margin: var(--space-3xs) 0 0; font-family: var(--font-data); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.current-cycle-tools { margin-top: var(--space-xl); margin-bottom: var(--space-md); }
.current-plan-message:empty { display: none; }
.decision-evidence {
  margin: 0 0 var(--space-xl);
  border-block: var(--rule-hair) solid var(--color-ink);
}
.decision-evidence > summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--space-sm);
  min-height: var(--control-height);
  padding-block: var(--space-sm);
  cursor: pointer;
  list-style: none;
  font-weight: 600;
}
.decision-evidence > summary span,
.decision-evidence > summary small { white-space: nowrap; }
.decision-evidence > summary::-webkit-details-marker { display: none; }
.decision-evidence > summary small { color: var(--color-muted); font-family: var(--font-data); font-size: var(--text-xs); font-weight: 400; font-variant-numeric: tabular-nums; }
.decision-evidence > summary::after { content: "展开"; color: var(--color-muted); font-size: var(--text-xs); font-weight: 400; white-space: nowrap; }
.decision-evidence[open] > summary::after { content: "收起"; }
.decision-evidence__meta {
  display: grid;
  gap: var(--space-sm);
  padding-block: var(--space-lg);
  border-top: var(--rule-hair) solid var(--color-rule-strong);
}
.decision-evidence__meta div { display: grid; gap: var(--space-3xs); min-width: 0; }
.decision-evidence__meta span,
.decision-evidence__facts dt { color: var(--color-muted); font-size: var(--text-xs); }
.decision-evidence__meta strong { overflow-wrap: anywhere; font-size: var(--text-sm); }
.decision-evidence__facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0 0 var(--space-lg);
  border-block: var(--rule-hair) solid var(--color-rule-strong);
}
.decision-evidence__facts div { min-width: 0; padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
.decision-evidence__facts dd { margin: var(--space-3xs) 0 0; font-family: var(--font-data); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.decision-evidence__table th small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font-size: var(--text-xs); font-weight: 400; }
.decision-evidence__table td small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); }
.decision-evidence--legacy { padding-block: var(--space-md); }
.decision-evidence--legacy h4 { margin: 0; }
.decision-evidence--legacy p { max-width: 70ch; margin: var(--space-xs) 0 0; color: var(--color-muted); }
.current-cycle__events { margin: 0; padding: 0; border-top: var(--rule-medium) solid var(--color-ink); list-style: none; }
.current-cycle__event {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-xs) var(--space-md);
  padding-block: var(--space-sm);
  border-bottom: var(--rule-hair) solid var(--color-rule-strong);
}
.current-cycle__event time,
.current-cycle__event b { font-family: var(--font-data); font-variant-numeric: tabular-nums; }
.current-cycle__event > span:first-of-type { display: grid; min-width: 0; }
.current-cycle__event small { color: var(--color-muted); }
.current-cycle__state { justify-self: end; color: var(--color-muted); font-size: var(--text-sm); font-weight: 600; white-space: nowrap; }
.current-cycle__event[data-state="complete"] .current-cycle__state { color: var(--color-success); }
.current-cycle__event[data-state="partial"] .current-cycle__state { color: var(--color-warning); }
.current-cycle__event[data-state="overdue"] .current-cycle__state,
.current-cycle__event[data-state="due"] .current-cycle__state { color: var(--color-warning); }
.current-cycle__record { grid-column: 1 / -1; width: 100%; }
.current-cycle__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-md); margin-top: var(--space-lg); }
.field textarea {
  width: 100%;
  min-height: 7rem;
  padding: var(--space-sm);
  resize: vertical;
  border: var(--rule-hair) solid var(--color-ink);
  outline: var(--rule-medium) solid var(--color-transparent);
  outline-offset: var(--rule-hair);
  background: var(--color-paper-2);
  color: var(--color-ink);
  font: inherit;
}
.field textarea:focus-visible { outline-color: var(--color-focus); }
.file-button { position: relative; overflow: clip; cursor: pointer; }
.file-button input { position: absolute; inline-size: 1px; block-size: 1px; opacity: 0; }
.record-undo {
  position: fixed;
  inset: auto var(--space-md) var(--space-md) var(--space-md);
  z-index: var(--z-toast);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
  max-width: 24rem;
  padding: var(--space-sm) var(--space-md);
  border: var(--rule-hair) solid var(--color-paper);
  background: var(--color-ink);
  color: var(--color-paper);
}
.record-undo button { min-height: 2.75rem; border: 0; background: var(--color-transparent); color: var(--color-focus-on-ink); font-weight: 600; cursor: pointer; }

.execution-steps { list-style: none; margin: 0; padding: 0; border-top: var(--rule-medium) solid var(--color-ink); }
.execution-steps li { display: grid; grid-template-columns: 4rem minmax(0, 1fr); gap: var(--space-md); padding-block: var(--space-xl); border-bottom: var(--rule-hair) solid var(--color-rule-strong); }
.execution-steps > li > span { font-family: var(--font-data); color: var(--color-accent); }
.execution-steps p { max-width: 65ch; margin: 0; color: var(--color-muted); }

.site-footer--dense {
  border-top: var(--rule-medium) solid var(--color-ink);
  background: var(--color-paper-3);
  color: var(--color-ink);
  font-family: var(--font-data);
  font-size: var(--text-xs);
  line-height: 1.7;
}
.site-footer--dense p { max-width: 75ch; }

.research-loading { display: grid; gap: var(--space-md); padding-block: var(--space-3xl); }
.research-loading div { height: 4rem; background: var(--color-paper-3); opacity: 0.72; }

.flow-regime { border-inline-start-width: var(--rule-hair); }

.signal-asset-list,
.matrix-availability {
  display: grid;
  gap: 0;
  margin: var(--space-md) 0;
  padding: 0;
  border-top: var(--rule-hair) solid currentColor;
  list-style: none;
}

.signal-gate {
  margin-block: var(--space-md);
  padding-block: var(--space-sm);
  border-block: var(--rule-hair) solid currentColor;
}

.signal-gate strong {
  font-family: var(--font-data);
  font-size: var(--text-xs);
  letter-spacing: 0.04em;
}

.signal-gate ul { margin-block: var(--space-xs) 0; }

.signal-asset-list li,
.matrix-availability li {
  display: grid;
  grid-template-columns: minmax(4rem, 0.5fr) minmax(0, 1fr);
  gap: var(--space-xs) var(--space-sm);
  padding-block: var(--space-xs);
  border-bottom: var(--rule-hair) solid currentColor;
}

.signal-asset-list small { grid-column: 1 / -1; }
.matrix-availability strong { font-family: var(--font-data); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
.matrix-availability li[data-state="missing"] { color: var(--color-muted); }

.flow-matrix {
  margin-top: var(--space-xl);
  padding: var(--space-xl);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper-2);
}

.flow-matrix table { width: 100%; min-width: 58rem; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.flow-matrix th,
.flow-matrix td { padding: var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-rule-strong); text-align: start; vertical-align: top; }
.flow-matrix thead th { color: var(--color-muted); font-size: var(--text-xs); }
.flow-matrix tbody th { font-family: var(--font-data); }
.flow-matrix tbody td { font-family: var(--font-data); font-size: var(--text-sm); }
.signal-history-head { margin-top: var(--space-2xl); }
.signal-history-chart { min-width: 0; margin: 0 0 var(--space-2xl); }
.signal-history-chart figcaption { margin-bottom: var(--space-sm); font-weight: 600; }
.signal-history-chart .research-chart { height: 20rem; }
.signal-history-table { min-width: 76rem; }
.signal-history-table td small,
.optimization-table td small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); line-height: 1.45; }
.signal-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-md); margin-top: var(--space-xl); }
.signal-pagination p { margin: 0; color: var(--color-muted); font-family: var(--font-data); font-size: var(--text-sm); }
.signal-pagination div { display: flex; gap: var(--space-sm); }
.optimization-section { background: var(--color-paper-2); }
.optimization-state { display: inline-block; color: var(--color-warning); font-family: var(--font-data); font-size: var(--text-xs); font-weight: 600; }
.optimization-state[data-state="keep-current"],
.optimization-state[data-state="review-candidate"] { color: var(--color-success); }
.optimization-state[data-state="rejected-on-holdout"],
.optimization-state[data-state="rejected-vs-current"] { color: var(--color-error); }
.optimization-rules { display: grid; gap: var(--space-xs); max-width: 78ch; margin: var(--space-xl) 0 0; padding-inline-start: var(--space-lg); color: var(--color-muted); font-size: var(--text-sm); }
.validation-table td { font-variant-numeric: tabular-nums; }
.validation-table td small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); }
.validation-policy { background: var(--color-paper-2); }
.validation-stat-strip b { overflow-wrap: anywhere; }
.readiness-section { padding-top: var(--space-3xl); }
.readiness-grid { display: grid; gap: var(--space-xl); }
.readiness-card { border-top: var(--rule-medium) solid var(--color-ink); }
.readiness-card[data-state="ready"] { border-top-color: var(--color-success); }
.readiness-card > header { display: flex; align-items: end; justify-content: space-between; gap: var(--space-md); padding-block: var(--space-md); border-bottom: var(--rule-hair) solid var(--color-ink); }
.readiness-card > header span { color: var(--color-muted); font-size: var(--text-xs); }
.readiness-card > header h3 { margin: var(--space-3xs) 0 0; }
.readiness-card > header b { font-family: var(--font-data); font-size: var(--text-lg); font-variant-numeric: tabular-nums; white-space: nowrap; }
.readiness-card ul { margin: 0; padding: 0; list-style: none; }
.readiness-card li { display: grid; grid-template-columns: 4rem minmax(0, 1fr); gap: var(--space-sm); padding-block: var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-rule); }
.readiness-card li > span { color: var(--color-warning); font-family: var(--font-data); font-size: var(--text-xs); }
.readiness-card li[data-state="pass"] > span { color: var(--color-success); }
.readiness-card li div { display: grid; gap: var(--space-3xs); }
.readiness-card li small { color: var(--color-muted); line-height: 1.5; }
.integration-badge[data-state="live"] { border-color: var(--color-success); }
.integration-badge[data-state="cache"] { border-color: var(--color-warning); }

.health-summary {
  display: grid;
  gap: var(--space-xl);
  border-top: var(--rule-medium) solid var(--color-success);
  background: var(--color-paper-2);
}

.health-summary[data-state="warn"] { border-top-color: var(--color-warning); }
.health-summary[data-state="fail"] { border-top-color: var(--color-error); }
.health-summary__lead { display: grid; align-content: start; gap: var(--space-xs); }
.health-summary__lead > span { color: var(--color-muted); font-family: var(--font-data); font-size: var(--text-xs); letter-spacing: 0.08em; }
.health-summary__lead h2,
.health-summary__lead p { margin: 0; }
.health-summary__lead p { max-width: 58ch; color: var(--color-muted); }
.health-summary__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: var(--rule-hair) solid var(--color-ink); }
.health-summary__facts div { padding-block: var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-rule); }
.health-summary__facts dt { color: var(--color-muted); font-size: var(--text-xs); }
.health-summary__facts dd { margin: var(--space-3xs) 0 0; font-family: var(--font-data); font-size: var(--text-sm); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.health-grid { display: grid; gap: var(--space-lg); }
.health-step { border-top: var(--rule-medium) solid var(--color-success); }
.health-step[data-state="warn"] { border-top-color: var(--color-warning); }
.health-step[data-state="fail"] { border-top-color: var(--color-error); }
.health-step > header { display: flex; align-items: start; justify-content: space-between; gap: var(--space-sm); padding-block: var(--space-md); border-bottom: var(--rule-hair) solid var(--color-ink); }
.health-step > header span { color: var(--color-muted); font-size: var(--text-xs); }
.health-step > header h3 { margin: var(--space-3xs) 0 0; }
.health-step > header b { color: var(--color-success); font-family: var(--font-data); font-size: var(--text-xs); white-space: nowrap; }
.health-step[data-state="warn"] > header b { color: var(--color-warning); }
.health-step[data-state="fail"] > header b { color: var(--color-error); }
.health-step dl { margin: 0; }
.health-step dl div { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-sm); padding-block: var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
.health-step dt { color: var(--color-muted); font-size: var(--text-xs); }
.health-step dd { margin: 0; font-family: var(--font-data); font-size: var(--text-sm); font-variant-numeric: tabular-nums; text-align: end; }
.health-step > p { color: var(--color-muted); font-size: var(--text-sm); }
.health-step footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-xs); padding-top: var(--space-sm); color: var(--color-muted); font-size: var(--text-xs); }
.health-step footer strong { color: var(--color-error); }
.health-history-section { padding-top: var(--space-3xl); }
.health-run-band {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--space-xs);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}
.health-run-band li {
  min-width: 0;
  padding: var(--space-xs);
  border-block: var(--rule-hair) solid var(--color-success);
  background: var(--color-success-soft);
}
.health-run-band li[data-state="degraded"] { border-block-color: var(--color-warning); background: var(--color-warning-soft); }
.health-run-band li[data-state="failed"] { border-block-color: var(--color-error); background: var(--color-error-soft); }
.health-run-band li[data-state="recovered"] { border-block-color: var(--color-accent); background: var(--color-accent-soft); }
.health-run-band time,
.health-run-band span,
.health-run-band small { display: block; overflow-wrap: anywhere; }
.health-run-band time { font-family: var(--font-data); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
.health-run-band span { margin-top: var(--space-2xs); font-weight: 600; }
.health-run-band small { margin-top: var(--space-3xs); color: var(--color-muted); font-size: var(--text-xs); }
.health-history-empty { margin-top: var(--space-xl); }
.health-boundary { background: var(--color-paper-2); }

:where(input, select, textarea):disabled {
  opacity: 0.55;
  cursor: not-allowed;
  background: var(--color-paper-3);
}

.table-link:active,
.segmented button:active,
.research-rail a:active,
.index-ledger a:active,
.route-back:active,
.text-link:active,
.plan-schedule__record:active { background: var(--color-accent-soft); }

/* Mobile-first table and form layout; restored to tabular rows at 40rem. */
.research-table thead { display: none; }
.research-table,
.research-table tbody,
.research-table tr,
.research-table th,
.research-table td { display: block; width: 100%; }
.research-table tr { padding-block: var(--space-sm); border-bottom: var(--rule-hair) solid var(--color-ink); }
.research-table th,
.research-table td { display: grid; grid-template-columns: minmax(6.5rem, 0.7fr) minmax(0, 1.3fr); gap: var(--space-sm); padding-block: var(--space-xs); border: 0; }
.research-table [data-label]::before { content: attr(data-label); color: var(--color-muted); font-family: var(--font-body); font-size: var(--text-xs); font-weight: 400; }
.research-table [data-label] > small { grid-column: 2; min-width: 0; }
.dimension-table td:last-child { max-width: none; }
.backtest-controls > *,
.filter-bar > * { width: 100%; }
.backtest-controls input,
.backtest-controls select,
.filter-bar input,
.filter-bar select,
.backtest-controls .button { width: 100%; }
.segmented button { flex: 1; }
.allocation-ledger div { grid-template-columns: minmax(0, 1fr) 4rem; }
.allocation-ledger i { grid-column: 1 / -1; grid-row: 2; }
.execution-steps li { grid-template-columns: 3rem minmax(0, 1fr); }

@media (hover: hover) and (pointer: fine) {
  .rail-toggle:hover,
  .research-rail__groups a:hover,
  .index-ledger a:hover { background: var(--color-accent-soft); }
  .backtest-controls input:hover,
  .backtest-controls select:hover { background: var(--color-paper-3); }
  .table-link:hover { text-decoration-thickness: var(--rule-medium); }
  .plan-schedule__record:hover { background: var(--color-paper-3); text-decoration-thickness: var(--rule-medium); }
  .segmented button:hover { background: var(--color-paper-3); }
  .segmented button[aria-pressed="true"]:hover { background: var(--color-ink-2); }
}

@media (min-width: 40rem) {
  .module-index__intro,
  .route-header,
  .research-section__head { grid-template-columns: minmax(0, 7fr) minmax(14rem, 5fr); align-items: end; }
  .index-ledger a { grid-template-columns: minmax(5rem, 0.35fr) minmax(12rem, 0.9fr) minmax(0, 1.4fr) auto; align-items: baseline; }
  .index-ledger small,
  .index-ledger b { grid-column: auto; }
  .asset-overview { grid-template-columns: minmax(12rem, 0.4fr) minmax(0, 1.6fr); align-items: start; }
  .shadow-confirmation-summary { grid-template-columns: minmax(12rem, 0.4fr) minmax(0, 1.6fr); align-items: start; }
  .asset-overview dl,
  .detail-ledger { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .shadow-confirmation-summary dl { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .indicator-radar .research-chart { height: 24rem; }
  .stat-strip--five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .stat-strip div { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .stat-strip div:last-child { border-inline-end: 0; }
  .chart-pair { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .return-calendar__months { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .distribution-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .distribution-summary span { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .distribution-summary span:last-child { border-inline-end: 0; }
  .return-distribution__row { grid-template-columns: minmax(7.5rem, 0.35fr) minmax(0, 1.25fr) minmax(8rem, 0.4fr); }
  .return-distribution__row > b { grid-column: auto; }
  .asset-risk-ledger { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .asset-risk-ledger span { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .asset-risk-ledger span:last-child { border-inline-end: 0; }
  .record-layout { grid-template-columns: minmax(0, 7fr) minmax(18rem, 5fr); align-items: start; }
  .record-summary { padding-top: 0; padding-inline-start: var(--space-xl); border-top: 0; border-inline-start: var(--rule-hair) solid var(--color-ink); }
  .current-cycle__facts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .current-cycle__facts div { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .current-cycle__facts div:last-child { border-inline-end: 0; }
  .decision-evidence__meta { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .decision-evidence__facts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .decision-evidence__facts div { border-bottom: 0; border-inline-end: var(--rule-hair) solid var(--color-rule); }
  .decision-evidence__facts div:last-child { border-inline-end: 0; }
  .decision-evidence__table { min-width: 62rem; }
  .current-cycle__event { grid-template-columns: 7rem minmax(8rem, 1fr) auto minmax(6rem, auto) auto; }
  .current-cycle__record { grid-column: auto; width: auto; }
  .record-undo { inset-inline-start: auto; }
  .matrix-availability { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .matrix-availability li { display: grid; padding-inline: var(--space-sm); border-inline-end: var(--rule-hair) solid var(--color-rule-strong); }
  .matrix-availability li:last-child { border-inline-end: 0; }
  .research-table { display: table; width: 100%; }
  .research-table thead { display: table-header-group; }
  .research-table tbody { display: table-row-group; width: auto; }
  .research-table tr { display: table-row; width: auto; padding: 0; border: 0; }
  .research-table th,
  .research-table td { display: table-cell; width: auto; padding: var(--space-sm) var(--space-xs); border-bottom: var(--rule-hair) solid var(--color-rule); }
  .research-table [data-label]::before { display: none; }
  .optimization-table { min-width: 72rem; }
  .validation-table { min-width: 78rem; }
  .dimension-table td:last-child { max-width: 30ch; }
  .backtest-controls > *,
  .filter-bar > * { width: auto; }
  .backtest-controls input,
  .backtest-controls select,
  .filter-bar input,
  .filter-bar select,
  .backtest-controls .button { width: auto; }
  .segmented button { flex: 0 1 auto; }
  .allocation-ledger div { grid-template-columns: minmax(9rem, 1fr) minmax(5rem, 2fr) auto; }
  .allocation-ledger i { grid-column: auto; grid-row: auto; }
  .execution-steps li { grid-template-columns: 4rem minmax(0, 1fr); }
  .health-summary { grid-template-columns: minmax(0, 7fr) minmax(18rem, 5fr); align-items: start; }
  .health-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .health-run-band { grid-template-columns: repeat(10, minmax(0, 1fr)); }
}

@media (max-width: 24rem) {
  .current-cycle__summary { flex-direction: column; align-items: flex-start; }
  .current-cycle__summary > strong { font-size: var(--text-lg); }
}

@media (min-width: 60rem) {
  body { padding-inline-start: var(--rail-width); }
  .rail-toggle { display: none; }
  .research-rail { width: var(--rail-width); transform: none; }
  .research-rail { padding-top: var(--space-xl); }
  .site-nav__inner { display: none; }
  .site-nav { top: 0; }
  .route-view { padding-top: var(--space-3xl); }
  .route-header { grid-template-columns: minmax(0, 8fr) minmax(12rem, 4fr); }
  .route-header__meta { justify-self: end; }
  .return-calendar__months { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .health-run-band { grid-template-columns: repeat(15, minmax(0, 1fr)); }
  .indicator-evidence { grid-template-columns: minmax(20rem, 5fr) minmax(0, 7fr); align-items: start; }
  .readiness-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (pointer: coarse) {
  .rail-toggle,
  .research-rail__groups a,
  .segmented button,
  .table-link,
  .record-undo button { min-height: 3rem; }
}
