/* DYOR analytical-object grammar. Loaded after the palette contract. */
:root {
  --viz-bg: #111111;
  --viz-iron: #202020;
  --viz-paper: #f2f2f2;
  --viz-orange: #ff4d00;
  --viz-positive: rgb(22, 215, 170);
  --viz-grid: rgba(142,142,142,.32);
  --viz-line: rgba(242,242,242,.28);
  --viz-gap: 1px;
}

/* Statistical objects */
:where(.metric-card,.network-metric-card,.development-metric,.compare-metric,.universe-stat-card,.report-kpi,.mini-metric,.data-tile) {
  position: relative;
  border: 1px solid var(--viz-line) !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
  font-variant-numeric: tabular-nums lining-nums;
}
:where(.metric-card,.network-metric-card,.development-metric,.compare-metric,.universe-stat-card,.report-kpi,.mini-metric,.data-tile) > :where(strong,b,.metric-value) {
  color: var(--viz-paper) !important;
  font-size: clamp(1.8rem,3.6vw,4.4rem);
  font-weight: 650;
  letter-spacing: -.055em;
  line-height: .92;
}
:where(.metric-card,.network-metric-card,.development-metric,.compare-metric,.universe-stat-card,.report-kpi,.mini-metric,.data-tile) :where(small,.label,.metric-source-badge) {
  color: var(--viz-iron) !important;
  font-family: var(--font-mono,monospace);
  letter-spacing: .06em;
}
:where(.positive,.change-positive,.movement-up,.price-read.up,.score-history-delta.positive) { color: var(--viz-positive) !important; }
:where(.negative,.change-negative,.movement-down,.price-read.down,.score-history-delta.negative) { color: var(--viz-orange) !important; }

/* Chart frames, grids and interaction */
:where(.chart-panel,.compare-performance-chart,.asset-history-chart,.liquidity-depth-chart,.report-visual,.heat-matrix,.network-metric-visual,.watchlist-mini-chart) {
  position: relative;
  border: 1px solid var(--viz-line) !important;
  border-radius: 0 !important;
  background:
    linear-gradient(var(--viz-grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--viz-grid) 1px,transparent 1px),
    var(--viz-bg) !important;
  background-size: 48px 48px !important;
  color: var(--viz-paper) !important;
}
:where(.chart-panel,.compare-performance-chart,.asset-history-chart,.liquidity-depth-chart,.report-visual,.heat-matrix) svg { overflow: visible; }
:where(.chart-panel,.compare-performance-chart,.asset-history-chart,.liquidity-depth-chart,.report-visual,.heat-matrix) svg line { stroke: var(--viz-iron); stroke-opacity: .34; }
.history-price-line.positive { stroke: var(--viz-positive) !important; }
.history-price-line.negative { stroke: var(--viz-orange) !important; }
.history-price-line.neutral { stroke: var(--viz-paper) !important; }
.history-volume rect { fill: var(--viz-iron) !important; opacity: .48; }
.explorer-pin { fill: var(--viz-orange) !important; stroke: var(--viz-bg) !important; }
.chart-selection { border-color: var(--viz-orange) !important; background: rgba(255,77,0,.15) !important; }
.chart-crosshair { background: var(--viz-paper) !important; }
.chart-tooltip {
  border: 1px solid var(--viz-paper) !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
  box-shadow: 6px 6px 0 var(--viz-orange) !important;
}
.chart-tooltip :where(strong,span,small) { color: var(--viz-paper) !important; }
.compare-chart-legend { border-top: 1px solid var(--viz-line); padding-top: 12px; }
.compare-chart-legend span { color: var(--viz-paper) !important; }
.compare-chart-legend i { border-radius: 0 !important; }
.chart-series-primary { stroke-width: 3px !important; }
.chart-series-secondary { stroke-width: 2px !important; }
.chart-series-benchmark { stroke-width: 1.5px !important; }

/* Workbench syntax */
:where(.decision-workbench,.discover-workbench,#research-workbench-mount,.research-terminal,.ownership-flow-terminal) {
  border: 1px solid var(--viz-iron) !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
  box-shadow: none !important;
}
:where(.decision-workbench,.discover-workbench,#research-workbench-mount,.research-terminal,.ownership-flow-terminal) :where(h1,h2,h3,h4,strong,b,p,span,small,label) { color: var(--viz-paper) !important; }
:where(.decision-workbench-grid,.discover-workbench-grid,.research-workbench-grid) {
  gap: var(--viz-gap) !important;
  border: 1px solid var(--viz-iron);
  background: var(--viz-iron);
}
:where(.decision-card,.workbench-module,.workbench-card) {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
}
:where(.decision-card,.workbench-module,.workbench-card):is(:hover,:focus-within,.active) { box-shadow: inset 5px 0 0 var(--viz-orange) !important; }
:where(.workbench-toolbar,.workbench-tool-rail,.research-mode-bar) {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-iron) !important;
  color: var(--viz-bg) !important;
}
:where(.workbench-toolbar,.workbench-tool-rail,.research-mode-bar) :where(strong,b,p,span,small,label) { color: var(--viz-bg) !important; }

/* Diagram and flow syntax */
:where(.ownership-flow-grid,.report-flow-grid,.investor-flow-grid,.demo-flow-grid,.research-flow-nav,.showcase-flow-strip) {
  position: relative;
  gap: var(--viz-gap) !important;
  background: var(--viz-iron);
}
:where(.ownership-flow-card,.report-flow-grid>article,.investor-flow-grid>button,.demo-flow-grid>button,.research-flow-nav>button,.showcase-flow-strip>button,.flow-node) {
  position: relative;
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
}
:where(.ownership-flow-card,.report-flow-grid>article,.investor-flow-grid>button,.demo-flow-grid>button,.research-flow-nav>button,.showcase-flow-strip>button,.flow-node) :where(strong,b,p,span,small) { color: var(--viz-paper) !important; }
:where(.ownership-flow-card,.report-flow-grid>article,.investor-flow-grid>button,.demo-flow-grid>button,.research-flow-nav>button,.showcase-flow-strip>button,.flow-node):is(.active,[aria-pressed="true"],:hover,:focus-visible) {
  background: var(--viz-orange) !important;
  color: var(--viz-bg) !important;
}
:where(.ownership-flow-card,.report-flow-grid>article,.investor-flow-grid>button,.demo-flow-grid>button,.research-flow-nav>button,.showcase-flow-strip>button,.flow-node):is(.active,[aria-pressed="true"],:hover,:focus-visible) * { color: var(--viz-bg) !important; }
.flow-pressure-track { border: 1px solid var(--viz-iron) !important; border-radius: 0 !important; background: transparent !important; }
.flow-pressure-track span { background: var(--viz-orange) !important; }
.flow-connection,
[data-flow-state="verified"] { border-style: solid !important; border-color: var(--viz-paper) !important; }
[data-flow-state="calculated"] { border-style: dashed !important; border-color: var(--viz-iron) !important; }
[data-flow-state="pending"],
[data-flow-state="unavailable"] { border-style: dotted !important; border-color: var(--viz-iron) !important; }
[data-flow-direction="positive"] { color: var(--viz-positive) !important; }
[data-flow-direction="negative"] { color: var(--viz-orange) !important; }

/* Report adaptations retain the paper-led publication language. */
#report-view :where(.report-kpi,.report-visual,.report-flow-grid>article) {
  border-color: var(--viz-bg) !important;
  background-color: var(--viz-paper) !important;
  color: var(--viz-bg) !important;
}
#report-view :where(.report-kpi,.report-visual,.report-flow-grid>article) :where(h2,h3,h4,strong,b,p,span,small) { color: var(--viz-bg) !important; }
#report-view .report-kpi:nth-child(2) { background-color: var(--viz-orange) !important; }

/* Provenance footer shared by analytical objects */
:where(.metric-source-badge,.source-stage-badge,.chart-source,.flow-source,.data-provenance) {
  border-left: 3px solid var(--viz-iron) !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--viz-iron) !important;
  font-family: var(--font-mono,monospace);
}

@media (max-width: 760px) {
  :where(.decision-workbench-grid,.discover-workbench-grid,.research-workbench-grid,.ownership-flow-grid,.report-flow-grid,.investor-flow-grid,.demo-flow-grid) { grid-template-columns: 1fr !important; }
}

@media (prefers-reduced-motion: reduce) {
  :where(.chart-panel,.compare-performance-chart,.asset-history-chart,.decision-workbench,.ownership-flow-grid) * { animation: none !important; transform: none !important; transition: none !important; }
}

/* Surface hierarchy: spacing and inversion replace decorative borders and elevation. */
:where(.page-heading,.asset-browser-panel,.support-blog-hero) {
  border: 0 !important;
  box-shadow: none !important;
}
:where(.panel,.research-engine-surface,.discover-filter-rail,.discover-results-panel,.discover-ranking-panel,.live-discovery-panel,.watchlist-main,.portfolio-overview,.portfolio-holdings,.portfolio-stress,.portfolio-factor,.portfolio-liquidity) {
  border: 0 !important;
  box-shadow: none !important;
}

/* Homepage finding cards: iron cards on the black section canvas. */
.entrance :where(.signals-scene,#feature-1,.signal-stack) { background-color: var(--viz-bg) !important; }
.entrance .signal-stack > article {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-iron) !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
.entrance .signal-stack > article :where(h2,h3,strong,b,p,span,small,dt,li,time) { color: var(--viz-bg) !important; }
.entrance .signal-stack > article header span,
.entrance .signal-stack > article a { color: var(--viz-orange) !important; }
.entrance .signal-stack > article dl dd {
  width: fit-content;
  margin-left: auto;
  padding: 3px 7px;
  background: var(--viz-bg);
  color: var(--viz-paper) !important;
}
.entrance .signal-stack > article dl dd.positive { color: var(--viz-positive) !important; }
.entrance .signal-stack > article dl dd.negative { color: var(--viz-orange) !important; }
.entrance .signal-stack > article:is(:hover,:focus-within) { transform: none !important; box-shadow: inset 5px 0 0 var(--viz-orange) !important; }

/* Research Engine results follow the same surface and CTA rules. */
#discover-view :where(.re-result-list,.re-divergence-list,.re-condition-list) { gap: 1px !important; background: var(--viz-bg); }
#discover-view .re-result-card {
  margin: 0;
  padding: clamp(20px,3vw,34px) !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-iron) !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
#discover-view .re-result-card :where(h2,h3,h4,strong,b,p,span,small,li,label) { color: var(--viz-bg) !important; }
#discover-view .re-result-card :where(.primary-button,.text-button,button[data-asset]) {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-orange) !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
#discover-view .re-result-card :where(.source-stage-badge,.signal-pill,.pill) {
  border: 0 !important;
  border-left: 4px solid var(--viz-orange) !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
}

/* Discover canvas and Radar: one black field with iron event objects. */
#discover-view,
#discover-view :where(.discover-workbench,.research-engine-surface,.live-discovery-panel,.radar-shell,.radar-timeline,.discover-results-panel) {
  border: 0 !important;
  background-color: var(--viz-bg) !important;
  box-shadow: none !important;
}
#discover-view .radar-timeline { padding-left: clamp(24px,3vw,42px) !important; }
#discover-view .radar-event {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-iron) !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
#discover-view .radar-event :where(h2,h3,h4,strong,b,p,span,small,li,time,a) { color: var(--viz-bg) !important; }
#discover-view .radar-event[open],
#discover-view .radar-event:is(:hover,:focus-within) { transform: none !important; box-shadow: inset 5px 0 0 var(--viz-orange) !important; }
#discover-view .radar-event :where(.radar-event-topline span,.radar-dimensions span) {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
}
#discover-view .radar-event :where(.radar-before-after div,.radar-evidence-list li) {
  border: 0 !important;
  background: var(--viz-bg) !important;
}
#discover-view .radar-event :where(.radar-before-after div,.radar-evidence-list li) :where(strong,b,p,span,small,a) { color: var(--viz-paper) !important; }
#discover-view .radar-event .radar-uncertainty { border: 0 !important; border-left: 5px solid var(--viz-orange) !important; background: rgba(255,77,0,.1) !important; }
#discover-view .radar-summary { gap: 1px !important; border: 0 !important; background: var(--viz-iron) !important; }
#discover-view .radar-summary article { border: 0 !important; border-radius: 0 !important; box-shadow: none !important; }

/* Inputs keep one boundary; interactive focus keeps one orange outline. */
#discover-view :where(input,select,textarea) { border: 1px solid var(--viz-iron) !important; box-shadow: none !important; }
#discover-view :where(button,a,summary,input,select,textarea):focus-visible { outline: 3px solid var(--viz-orange) !important; outline-offset: 3px !important; box-shadow: none !important; }

/* Universal component-family contract: annotations apply to every semantic sibling. */

/* Large composition surfaces are black fields, never elevated cards. */
:where([class$="-panel"],[class*="-panel "],[class$="-surface"],[class*="-surface "],[class$="-workbench"],[class*="-workbench "],[class$="-terminal"],[class*="-terminal "],[class$="-shell"],[class*="-shell "]) {
  border: 0 !important;
  background-color: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
  box-shadow: none !important;
}
:where([class$="-panel"],[class*="-panel "],[class$="-surface"],[class*="-surface "],[class$="-workbench"],[class*="-workbench "],[class$="-terminal"],[class*="-terminal "],[class$="-shell"],[class*="-shell "]) :where(h1,h2,h3,h4,p,li,dt,label,strong,b) { color: var(--viz-paper) !important; }

/* Contained content objects are iron, flat and borderless everywhere. */
:where(article,[class$="-card"],[class*="-card "],[class$="-tile"],[class*="-tile "],[class$="-result"],[class*="-result "],[class$="-event"],[class*="-event "],[class$="-module"],[class*="-module "]) {
  border: 0 !important;
  border-radius: 0 !important;
  background-color: var(--viz-iron) !important;
  background-image: none !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
:where(article,[class$="-card"],[class*="-card "],[class$="-tile"],[class*="-tile "],[class$="-result"],[class*="-result "],[class$="-event"],[class*="-event "],[class$="-module"],[class*="-module "]) :where(h1,h2,h3,h4,p,li,dt,label,strong,b) { color: var(--viz-bg) !important; }

/* Analytical objects nested inside iron cards invert back to black. */
:where([class$="-card"],[class*="-card "],[class$="-event"],[class*="-event "]) :where([class*="chart"],[class*="metric"],[class*="data-chip"],[class*="evidence-list"],[class*="before-after"] > *) {
  background-color: var(--viz-bg) !important;
  color: var(--viz-paper) !important;
}

/* Every primary/action CTA uses identity orange. Green remains data-only. */
:where(.primary-button,button.primary,[data-primary-action],button[data-asset],.nav-cta,.entrance-button,.save-button,[class$="-cta"],[class*="-cta "]) {
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--viz-orange) !important;
  color: var(--viz-bg) !important;
  box-shadow: none !important;
}
:where(.primary-button,button.primary,[data-primary-action],button[data-asset],.nav-cta,.entrance-button,.save-button,[class$="-cta"],[class*="-cta "]):is(:hover,:active,:focus-visible) {
  background: var(--viz-orange) !important;
  color: var(--viz-bg) !important;
  filter: brightness(1.08);
  transform: none !important;
}

/* Selection gets one orange edge; never a border-plus-shadow stack. */
:where(article,[class$="-card"],[class*="-card "],[class$="-event"],[class*="-event "],[class$="-result"],[class*="-result "]):is(.active,.selected,[aria-selected="true"],[aria-current="true"],[open],:focus-within) { box-shadow: inset 5px 0 0 var(--viz-orange) !important; }

/* Directional colour is semantic and wins inside every component family. */
:where(.positive,.change-positive,.movement-up,.price-read.up,[data-direction="positive"],[data-trend="up"]) { color: var(--viz-positive) !important; }
:where(.negative,.change-negative,.movement-down,.price-read.down,[data-direction="negative"],[data-trend="down"]) { color: var(--viz-orange) !important; }

/* Reports deliberately retain their paper-led publication mode. */
#report-view :where(article,[class$="-card"],[class*="-card "],[class$="-tile"],[class*="-tile "]) {
  background-color: var(--viz-paper) !important;
  color: var(--viz-bg) !important;
}
