/* ============================================================
   ARGUS — public site
   Palantir-style: dense, monochrome, institutional, data-first.
   ============================================================ */

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
:root { --font-display: 'Geist', 'Inter', ui-sans-serif, system-ui, sans-serif; }
h1, h2, h3, h4 { font-family: var(--font-display); font-feature-settings: "ss01","cv11","tnum"; }

:root {
  /* Override design system to a near-black warm canvas (Palantir vibe).
     We keep the design system OKLCH tokens and just override surfaces. */
  --bg-app:        oklch(0.13 0.005 264);
  --bg-card:       oklch(0.165 0.008 264);
  --bg-elevated:   oklch(0.195 0.011 264);
  --bg-hover:      oklch(0.225 0.013 264);
  --bg-input:      oklch(0.165 0.008 264);
  --bg-surface:    oklch(0.155 0.006 264);

  --text-primary:   oklch(0.96 0.005 255);
  --text-secondary: oklch(0.70 0.018 258);
  --text-tertiary:  oklch(0.55 0.022 264);
  --text-muted:     oklch(0.45 0.020 264);

  --border-color:   oklch(0.28 0.014 261);
  --border-strong:  oklch(0.40 0.018 261);
  --border-faint:   oklch(0.22 0.011 261);

  --accent-blue:    oklch(0.68 0.16 245);
  --accent-cyan:    oklch(0.78 0.13 211);
  --accent-amber:   oklch(0.78 0.16 70);
  --accent-red:     oklch(0.66 0.21 25);
  --accent-green:   oklch(0.72 0.15 162);

  --hairline: 1px solid var(--border-color);
  --hairline-faint: 1px solid var(--border-faint);

  /* logo swap — dark theme uses the light-on-dark mark */
  --logo-mark: url('assets/argus_mark.png');
  --logo-wordmark: url('assets/argus_logo.png');

  /* grid-pattern color (used for decorative backgrounds) */
  --grid-line: oklch(1 0 0 / 0.035);
  --panel-bg: oklch(0.15 0.008 264 / 0.85);

  /* deepen: a direction of 'more contrast than the app bg'.
     In dark mode we go darker (black); in light mode we tint toward a cool gray. */
  --deepen-color: #000;
  --deepen-soft: 18%;
  --deepen-med:  25%;
  --deepen-strong: 30%;
}

/* ============== LIGHT THEME ============== */
html[data-theme="light"] {
  --bg-app:        oklch(0.985 0.002 258);
  --bg-card:       oklch(1 0 0);
  --bg-elevated:   oklch(1 0 0);
  --bg-hover:      oklch(0.955 0.004 258);
  --bg-input:      oklch(0.975 0.003 258);
  --bg-surface:    oklch(0.965 0.004 258);

  --text-primary:   oklch(0.18 0.014 260);
  --text-secondary: oklch(0.42 0.022 258);
  --text-tertiary:  oklch(0.55 0.025 258);
  --text-muted:     oklch(0.66 0.022 258);

  --border-color:   oklch(0.88 0.010 258);
  --border-strong:  oklch(0.74 0.015 258);
  --border-faint:   oklch(0.93 0.006 258);

  --accent-blue:    oklch(0.52 0.18 252);
  --accent-cyan:    oklch(0.62 0.12 210);
  --accent-amber:   oklch(0.68 0.16 65);
  --accent-red:     oklch(0.56 0.21 25);
  --accent-green:   oklch(0.58 0.14 160);

  --logo-mark: url('assets/argus_mark.png');
  --logo-wordmark: url('assets/argus_logo.png');

  --grid-line: oklch(0 0 0 / 0.04);
  --panel-bg: oklch(1 0 0 / 0.85);

  /* In light mode, deepen means mix toward a darker neutral — use a cool slate,
     not pure black, so surfaces read as paper not as bruises. */
  --deepen-color: oklch(0.88 0.010 258);
  --deepen-soft: 55%;
  --deepen-med:  75%;
  --deepen-strong: 90%;

  color-scheme: light;
}

html, body {
  background: var(--bg-app);
  color: var(--text-primary);
  font-family: var(--font-sans);
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss01", "cv11";
  font-size: 16px;
  line-height: 1.5;
}

a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }

:focus { outline: none; }
:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
  border-radius: var(--radius);
}

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

/* ===== shared atoms ===== */

.logo-mark {
  display: inline-block;
  background-image: var(--logo-mark);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  width: 26px;
  height: 26px;
  flex-shrink: 0;
}
/* Dark mode (default): invert the blue mark to near-white for contrast on the dark panel */
.logo-mark {
  filter: brightness(0) invert(1) opacity(0.92);
}
html[data-theme="light"] .logo-mark {
  filter: none;
}

.eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  font-weight: 500;
}
.eyebrow-dot::before {
  content: '';
  display: inline-block;
  width: 6px; height: 6px;
  background: var(--accent-amber);
  margin-right: 8px;
  vertical-align: middle;
  transform: translateY(-1px);
}
.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

.serif { font-family: var(--font-serif); font-weight: 400; letter-spacing: -0.01em; }
.serif-italic { font-family: var(--font-serif); font-style: italic; font-weight: 400; }

.btn {
  display: inline-flex; align-items: center; gap: 8px;
  height: 44px; padding: 0 18px;
  background: var(--text-primary);
  color: var(--bg-app);
  border: 1px solid var(--text-primary);
  border-radius: 0;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.005em;
  transition: background 120ms ease-out, color 120ms ease-out;
}
.btn:hover { background: transparent; color: var(--text-primary); }
.btn--ghost {
  background: transparent;
  color: var(--text-primary);
  border-color: var(--border-strong);
}
.btn--ghost:hover { background: var(--bg-hover); border-color: var(--text-secondary); }
.btn--sm { height: 36px; padding: 0 14px; font-size: 13px; }
.btn .arrow { font-family: var(--font-mono); transform: translateX(0); transition: transform 160ms ease-out; }
.btn:hover .arrow { transform: translateX(3px); }

.tag {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 8px;
  background: transparent;
  border: 1px solid var(--border-color);
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.tag-dot { width: 6px; height: 6px; display: inline-block; }
.tag-dot--green  { background: var(--accent-green); }
.tag-dot--amber  { background: var(--accent-amber); }
.tag-dot--red    { background: var(--accent-red); }
.tag-dot--blue   { background: var(--accent-blue); }
.tag-dot--cyan   { background: var(--accent-cyan); }

/* ===== layout ===== */

.container {
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 32px;
}

@media (max-width: 720px) {
  .container { padding: 0 20px; }
}

/* hairline grid lines that run full width */
.section {
  border-top: var(--hairline);
}

.section-head {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 64px;
  padding: 56px 0 40px;
  align-items: start;
}
.section-head .label {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.section-head .label-num {
  display: block;
  margin-bottom: 8px;
  color: var(--text-muted);
}
.section-head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(34px, 4.4vw, 60px);
  line-height: 1.02;
  letter-spacing: -0.028em;
  color: var(--text-primary);
}
.section-head h2 em { font-style: normal; color: var(--text-secondary); }
.section-head p {
  margin: 20px 0 0;
  max-width: 56ch;
  color: var(--text-secondary);
  font-size: 16px;
  line-height: 1.55;
}

@media (max-width: 900px) {
  .section-head { grid-template-columns: 1fr; gap: 24px; padding: 40px 0 28px; }
}

/* =========================================================
   NAV
   ========================================================= */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in oklch, var(--bg-app), transparent 8%);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: var(--hairline);
}
.nav-inner {
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 32px;
  height: 60px;
  display: flex;
  align-items: center;
  gap: 48px;
}
.nav-brand {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: 0.01em;
}
.nav-brand .mark {
  width: 22px; height: 22px;
  display: grid; place-items: center;
}
.nav-brand .mark svg { width: 100%; height: 100%; }
.nav-brand .holdings {
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  border-left: 1px solid var(--border-color);
  margin-left: 12px;
  padding-left: 12px;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 28px;
  flex: 1;
}
.nav-links a {
  font-size: 13px;
  color: var(--text-secondary);
  transition: color 120ms;
  position: relative;
  padding: 4px 0;
}
.nav-links a:hover { color: var(--text-primary); }
.nav-links a.active { color: var(--text-primary); }
.nav-links a.active::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -19px;
  height: 1px;
  background: var(--text-primary);
}

.nav-right {
  display: flex; align-items: center; gap: 16px;
}

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px; height: 30px;
  padding: 0;
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--border-color);
  border-radius: 0;
  transition: color 120ms ease-out, border-color 120ms ease-out, background 120ms ease-out;
}
.theme-toggle:hover {
  color: var(--text-primary);
  border-color: var(--border-strong);
  background: var(--bg-hover);
}
.theme-toggle .theme-icon { display: none; }
html[data-theme="light"] .theme-toggle .theme-icon--moon { display: block; }
html:not([data-theme="light"]) .theme-toggle .theme-icon--sun { display: block; }

/* ===== language switcher ===== */
.lang-switch { position: relative; }
.lang-btn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 10px;
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--border-color);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: color 120ms ease-out, border-color 120ms ease-out, background 120ms ease-out;
}
.lang-btn:hover {
  color: var(--text-primary);
  border-color: var(--border-strong);
  background: var(--bg-hover);
}
.lang-btn .lang-caret { font-size: 10px; transform: translateY(-1px); opacity: 0.7; }
.lang-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 160px;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  box-shadow: 0 12px 32px rgba(0,0,0,0.25);
  display: none;
  z-index: 60;
  padding: 4px;
}
.lang-switch.open .lang-menu { display: block; }
.lang-menu button {
  display: flex; align-items: center; gap: 10px;
  width: 100%;
  height: 32px;
  padding: 0 10px;
  background: transparent;
  color: var(--text-secondary);
  border: 0;
  text-align: left;
  font-family: var(--font-sans);
  font-size: 12.5px;
}
.lang-menu button:hover {
  background: var(--bg-hover);
  color: var(--text-primary);
}
.lang-menu button .ck {
  font-family: var(--font-mono);
  color: transparent;
  width: 10px;
  display: inline-block;
  text-align: center;
}
.lang-menu button.active {
  color: var(--text-primary);
}
.lang-menu button.active .ck {
  color: var(--accent-green);
}

/* CJK-aware body rendering */
html[lang="zh-TW"], html[lang="zh-TW"] body { font-family: 'Noto Sans TC', var(--font-sans); }
html[lang="ja"], html[lang="ja"] body { font-family: 'Noto Sans JP', var(--font-sans); }
/* Keep mono/display selectors intact for data + headings */
html[lang="zh-TW"] h1, html[lang="zh-TW"] h2, html[lang="zh-TW"] h3, html[lang="zh-TW"] h4,
html[lang="ja"]    h1, html[lang="ja"]    h2, html[lang="ja"]    h3, html[lang="ja"]    h4 {
  font-family: var(--font-display), 'Noto Sans TC', 'Noto Sans JP', sans-serif;
}
.nav-right .clock {
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--text-secondary);
  letter-spacing: 0.02em;
}
.nav-right .status-dot {
  width: 6px; height: 6px;
  background: var(--accent-green);
  border-radius: 50%;
  display: inline-block;
  margin-right: 6px;
  box-shadow: 0 0 0 0 color-mix(in oklch, var(--accent-green), transparent 60%);
  animation: pulse 2.4s ease-out infinite;
}
@keyframes pulse {
  0%   { box-shadow: 0 0 0 0 color-mix(in oklch, var(--accent-green), transparent 40%); }
  60%  { box-shadow: 0 0 0 6px color-mix(in oklch, var(--accent-green), transparent 100%); }
  100% { box-shadow: 0 0 0 0 color-mix(in oklch, var(--accent-green), transparent 100%); }
}

@media (max-width: 900px) {
  .nav-links { display: none; }
  .nav-right .clock { display: none; }
}

/* =========================================================
   HERO
   ========================================================= */
.hero {
  position: relative;
  padding: 88px 0 0;
  border-top: none;
  overflow: hidden;
}
.hero-grid-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(to right, var(--border-faint) 1px, transparent 1px) 0 0 / 80px 80px,
    linear-gradient(to bottom, var(--border-faint) 1px, transparent 1px) 0 0 / 80px 80px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 30%, transparent 80%);
  opacity: 0.55;
}

.hero-inner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: 64px;
  padding-bottom: 56px;
}

.hero-meta {
  display: flex; align-items: center; gap: 16px;
  margin-bottom: 28px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.hero-meta .sep {
  width: 32px; height: 1px; background: var(--border-strong);
}
.hero-meta .live {
  color: var(--accent-green);
  display: inline-flex; align-items: center; gap: 8px;
}
.hero-meta .live::before {
  content: '';
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent-green);
  animation: pulse 2.4s ease-out infinite;
}

.hero h1 {
  margin: 0 0 28px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(40px, 5.6vw, 80px);
  line-height: 0.98;
  letter-spacing: -0.042em;
  max-width: 18ch;
}
.hero h1 em { font-style: normal; color: var(--text-secondary); }
.hero h1 .small {
  display: block;
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: 400;
  font-size: 0.32em;
  line-height: 1.3;
  letter-spacing: -0.005em;
  color: var(--text-secondary);
  margin-top: 24px;
  max-width: 28ch;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 36px;
}

.hero-stats {
  margin-top: 56px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  border-top: var(--hairline);
  border-bottom: var(--hairline);
}
.hero-stat {
  padding: 24px 28px 22px 0;
  border-right: var(--hairline-faint);
}
.hero-stat:last-child { border-right: none; }
.hero-stat .num { font-family: var(--font-display); font-size: 44px; font-weight: 400; line-height: 1.05; letter-spacing: -0.028em; color: var(--text-primary); display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; }
.hero-stat .num small {
  font-family: var(--font-sans);
  font-size: 14px;
  color: var(--text-tertiary);
  letter-spacing: normal;
  line-height: 1.4;
}
.hero-stat .label {
  margin-top: 14px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  line-height: 1.4;
}

@media (max-width: 900px) {
  .hero-inner { grid-template-columns: 1fr; gap: 48px; }
  .hero-stats { grid-template-columns: repeat(2, 1fr); }
  .hero-stat:nth-child(2) { border-right: none; }
}

/* ----- live feed (right side of hero) ----- */
.feed {
  border: var(--hairline);
  background: var(--bg-card);
  position: relative;
  display: flex;
  flex-direction: column;
  height: 540px;
  font-family: var(--font-mono);
  font-size: 12px;
}
.feed-head {
  display: flex; align-items: center; justify-content: space-between;
  height: 38px;
  padding: 0 14px;
  border-bottom: var(--hairline);
  background: var(--bg-elevated);
}
.feed-head .title {
  display: flex; align-items: center; gap: 10px;
  color: var(--text-secondary);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.feed-head .controls {
  display: flex; align-items: center; gap: 8px;
}
.feed-head .pill {
  border: 1px solid var(--border-color);
  padding: 2px 8px;
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.feed-head .pill.on {
  color: var(--accent-green);
  border-color: color-mix(in oklch, var(--accent-green), transparent 60%);
}
.feed-head .dotbtn {
  width: 18px; height: 18px;
  border: 1px solid var(--border-color);
  display: grid; place-items: center;
  color: var(--text-tertiary);
  background: transparent;
}

.feed-body {
  flex: 1;
  overflow: hidden;
  position: relative;
}
.feed-track {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  gap: 0;
}
.feed-row {
  display: grid;
  grid-template-columns: 70px 72px 1fr auto;
  gap: 12px;
  align-items: baseline;
  padding: 12px 14px;
  border-bottom: var(--hairline-faint);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  opacity: 0;
  animation: rowIn 360ms ease-out forwards;
}
.feed-row .tag-mini { display: inline-block; min-width: 0; }
@keyframes rowIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.feed-row .ts { color: var(--text-muted); font-size: 11px; }
.feed-row .tag-mini {
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 1px 5px;
  border: 1px solid var(--border-color);
  color: var(--text-secondary);
  text-align: center;
}
.feed-row .tag-mini.crit { color: var(--accent-red); border-color: color-mix(in oklch, var(--accent-red), transparent 50%); }
.feed-row .tag-mini.high { color: var(--accent-amber); border-color: color-mix(in oklch, var(--accent-amber), transparent 50%); }
.feed-row .tag-mini.med  { color: var(--accent-cyan); border-color: color-mix(in oklch, var(--accent-cyan), transparent 50%); }
.feed-row .tag-mini.low  { color: var(--accent-green); border-color: color-mix(in oklch, var(--accent-green), transparent 50%); }
.feed-row .body-text {
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 12.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.feed-row .body-text .reg {
  color: var(--text-tertiary);
  font-family: var(--font-mono);
  font-size: 11px;
  margin-right: 6px;
}
.feed-row .right {
  font-size: 11px;
  color: var(--text-muted);
}

.feed-foot {
  height: 30px;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 14px;
  border-top: var(--hairline);
  font-size: 11px;
  color: var(--text-tertiary);
  background: var(--bg-elevated);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.feed-foot .count { color: var(--text-secondary); }

/* =========================================================
   STRIP — partner / coverage marquee
   ========================================================= */
.strip {
  border-top: var(--hairline);
  border-bottom: var(--hairline);
  background: color-mix(in oklch, var(--bg-app), var(--deepen-color) var(--deepen-strong));
  padding: 22px 0;
  overflow: hidden;
}
.strip-inner {
  display: flex;
  align-items: center;
  gap: 64px;
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  white-space: nowrap;
  animation: marquee 60s linear infinite;
}
.strip-inner span.dot { color: var(--text-muted); }
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* =========================================================
   PIPELINE
   ========================================================= */
.pipeline {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border: var(--hairline);
  border-bottom: none;
  margin-bottom: 80px;
}
.pipe-step {
  border-right: var(--hairline);
  padding: 28px 24px 32px;
  display: flex; flex-direction: column; gap: 14px;
  background: var(--bg-card);
  position: relative;
}
.pipe-step:last-child { border-right: none; }
.pipe-step .head {
  display: flex; align-items: center; justify-content: space-between;
}
.pipe-step .num {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  color: var(--text-tertiary);
}
.pipe-step .glyph {
  width: 28px; height: 28px;
  border: 1px solid var(--border-color);
  display: grid; place-items: center;
  color: var(--accent-blue);
}
.pipe-step h4 { margin: 0; font-family: var(--font-display); font-weight: 500; font-size: 22px; line-height: 1.15; letter-spacing: -0.02em; }
.pipe-step .desc {
  color: var(--text-secondary);
  font-size: 13px;
  line-height: 1.55;
}
.pipe-step .meta {
  margin-top: auto;
  display: flex; flex-wrap: wrap; gap: 6px;
}

@media (max-width: 900px) {
  .pipeline { grid-template-columns: 1fr 1fr; }
  .pipe-step:nth-child(2) { border-right: none; }
  .pipe-step:nth-child(1), .pipe-step:nth-child(2) { border-bottom: var(--hairline); }
}
@media (max-width: 540px) {
  .pipeline { grid-template-columns: 1fr; }
  .pipe-step { border-right: none; border-bottom: var(--hairline); }
  .pipe-step:last-child { border-bottom: none; }
}

/* =========================================================
   CAPABILITIES — split panel switcher
   ========================================================= */
.cap-wrap {
  display: grid;
  grid-template-columns: 360px 1fr;
  border: var(--hairline);
  margin-bottom: 80px;
  background: var(--bg-card);
  min-height: 720px;
}
.cap-list {
  border-right: var(--hairline);
  display: flex; flex-direction: column;
}
.cap-item {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 22px 22px;
  border-bottom: var(--hairline-faint);
  background: transparent;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  text-align: left;
  transition: background 140ms ease-out;
  position: relative;
}
.cap-item:last-child { border-bottom: none; }
.cap-item:hover { background: var(--bg-hover); }
.cap-item.active { background: var(--bg-elevated); }
.cap-item.active::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 2px;
  background: var(--accent-blue);
}
.cap-item .num {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-tertiary);
  width: 24px;
  flex-shrink: 0;
  letter-spacing: 0.05em;
  padding-top: 2px;
}
.cap-item .lbl {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.cap-item .lbl .t {
  font-size: 14px;
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: -0.005em;
}
.cap-item .lbl .s {
  font-size: 12px;
  color: var(--text-tertiary);
  line-height: 1.4;
}

.cap-panel {
  padding: 32px;
  position: relative;
  overflow: hidden;
}
.cap-panel-inner { position: relative; height: 100%; }

.cap-content {
  display: none;
  flex-direction: column;
  height: 100%;
  gap: 24px;
}
.cap-content.active { display: flex; animation: fadeUp 360ms ease-out; }
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.cap-content h3 { margin: 0; font-family: var(--font-display); font-weight: 500; font-size: 34px; line-height: 1.05; letter-spacing: -0.028em; }
.cap-content > p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 15px;
  line-height: 1.55;
  max-width: 56ch;
}

.cap-viz {
  flex: 1;
  border: var(--hairline);
  background: color-mix(in oklch, var(--bg-app), var(--deepen-color) var(--deepen-soft));
  position: relative;
  overflow: hidden;
  min-height: 240px;
}

@media (max-width: 900px) {
  .cap-wrap { grid-template-columns: 1fr; min-height: 0; }
  .cap-list { border-right: none; border-bottom: var(--hairline); }
}

/* ---- Cap viz: monitoring (bills running ticker) ---- */
.viz-monitor {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  font-family: var(--font-mono); font-size: 12px;
}
.viz-monitor .row {
  display: grid;
  grid-template-columns: 72px 84px 1fr 96px;
  gap: 14px;
  padding: 9px 16px;
  border-bottom: var(--hairline-faint);
  align-items: center;
  white-space: nowrap; overflow: hidden;
}
.viz-monitor .row.h {
  background: var(--bg-elevated);
  font-size: 10px;
  padding: 20px 16px 16px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-tertiary);
  border-bottom: var(--hairline);
}
.viz-monitor .row.h > div { overflow: visible; }
.viz-monitor .ts { color: var(--text-muted); font-size: 11px; }
.viz-monitor .reg { color: var(--text-secondary); font-size: 11px; }
.viz-monitor .body-text { color: var(--text-primary); font-family: var(--font-sans); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; }
.viz-monitor .pos { color: var(--accent-amber); font-family: var(--font-sans); font-size: 11.5px; }
.viz-monitor .pos.crit { color: var(--accent-red); }
.viz-monitor .pos.med { color: var(--accent-cyan); }

/* ---- Cap viz: graph (mini knowledge graph) ---- */
.viz-graph { position: absolute; inset: 0; }

/* ---- Cap viz: forecasting ---- */
.viz-forecast { position: absolute; inset: 0; padding: 20px 24px; display: flex; flex-direction: column; gap: 16px; }
.viz-forecast .chart-row {
  display: grid;
  grid-template-columns: 140px 1fr 60px;
  gap: 12px;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 11.5px;
}
.viz-forecast .chart-row .lbl { color: var(--text-secondary); font-size: 12px; }
.viz-forecast .chart-row .bar {
  height: 8px;
  background: color-mix(in oklch, var(--bg-elevated), var(--deepen-color) 10%);
  position: relative;
  overflow: hidden;
}
.viz-forecast .chart-row .bar .fill {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: var(--accent-blue);
  transition: width 600ms ease-out;
}
.viz-forecast .chart-row .bar .marker {
  position: absolute; top: -3px; bottom: -3px; width: 1px;
  background: var(--text-secondary);
  opacity: 0.7;
}
.viz-forecast .chart-row .pct { text-align: right; color: var(--text-primary); }
.viz-forecast .legend {
  margin-top: 12px;
  display: flex; gap: 24px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.viz-forecast .legend .swatch { display: inline-block; width: 12px; height: 8px; vertical-align: middle; margin-right: 6px; }

/* ---- Cap viz: dossier ---- */
.viz-dossier { position: absolute; inset: 0; padding: 20px 22px; display: flex; flex-direction: column; gap: 14px; overflow: hidden; }
.viz-dossier .head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding-bottom: 14px;
  border-bottom: var(--hairline-faint);
}
.viz-dossier .head .id { font-family: var(--font-mono); font-size: 11px; color: var(--text-tertiary); }
.viz-dossier .head .name { font-family: var(--font-display); font-weight: 500; font-size: 22px; line-height: 1.15; letter-spacing: -0.02em; }
.viz-dossier .head .sub { color: var(--text-secondary); font-size: 12px; margin-top: 4px; }
.viz-dossier .head .risk-pill {
  font-family: var(--font-mono);
  font-size: 11px;
  padding: 3px 8px;
  border: 1px solid var(--accent-red);
  color: var(--accent-red);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.viz-dossier .grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
}
.viz-dossier .field .k {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  margin-bottom: 6px;
}
.viz-dossier .field .v {
  font-size: 13px;
  color: var(--text-primary);
}
.viz-dossier .field .v .mono { font-size: 12px; color: var(--text-secondary); }
.viz-dossier .timeline { border-top: var(--hairline-faint); padding-top: 12px; }
.viz-dossier .tl-row {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 12px;
  font-size: 12px;
  padding: 5px 0;
  color: var(--text-secondary);
}
.viz-dossier .tl-row .d { color: var(--text-muted); font-family: var(--font-mono); font-size: 11px; }

/* ---- Cap viz: ipac (jurisdictions) ---- */
.viz-juris { position: absolute; inset: 0; padding: 20px 22px; overflow: hidden; }
.viz-juris h5 {
  margin: 0 0 14px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.viz-juris .grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--border-faint);
}
.viz-juris .cell {
  background: var(--bg-card);
  padding: 12px 12px;
  display: flex; flex-direction: column; gap: 4px;
  min-height: 64px;
  position: relative;
}
.viz-juris .cell .iso {
  font-family: var(--font-mono);
  font-size: 10.5px;
  color: var(--text-tertiary);
  letter-spacing: 0.06em;
}
.viz-juris .cell .nm {
  font-size: 12px;
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: -0.005em;
}
.viz-juris .cell .ct {
  margin-top: auto;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-secondary);
}
.viz-juris .cell .heat {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3px;
}

/* =========================================================
   KNOWLEDGE GRAPH + ENTITY INTELLIGENCE (dark sections)
   ========================================================= */
.dark-section {
  background: #0e131c;
  color: #fff;
  padding: 96px 0;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.dark-section + .dark-section { border-top: 0; padding-top: 24px; }
.dark-section .container { max-width: 1240px; margin: 0 auto; padding: 0 32px; }
.dark-section .ds-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 28px; }
.dark-section .ds-eyebrow .rule { width: 48px; height: 1px; background: rgba(255,255,255,0.3); }
.dark-section .ds-eyebrow .lbl {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.6);
}
.dark-section h2.ds-h {
  font-family: var(--font-display);
  font-weight: 400;
  font-style: normal;
  font-size: clamp(34px, 4.4vw, 60px);
  line-height: 1.02;
  letter-spacing: -0.028em;
  color: #fff;
  margin: 0 0 24px;
  max-width: 760px;
}
.dark-section h2.ds-h em { font-style: normal; color: rgba(255,255,255,0.55); }
.dark-section .ds-p {
  font-size: 17px;
  line-height: 1.6;
  color: rgba(255,255,255,0.6);
  margin: 0 0 56px;
  max-width: 760px;
}

/* ---- Knowledge Graph viz ---- */
.kgv-stage {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 380px;
  gap: 24px;
  align-items: stretch;
}
@media (max-width: 980px) {
  .kgv-stage { grid-template-columns: 1fr; gap: 24px; }
}
.kgv-wrap {
  position: relative;
  background: #0e131c;
  overflow: hidden;
  height: 600px;
  border: 1px solid rgba(255,255,255,0.06);
}
@media (max-width: 720px) { .kgv-wrap { height: 500px; } }
.kgv-stage .dossier { max-height: 600px; overflow-y: auto; }
@media (max-width: 720px) { .kgv-stage .dossier { max-height: 500px; } }
.kgv-svg { width: 100%; height: 100%; user-select: none; cursor: default; touch-action: none; display: block; }
.kgv-svg.grabbing, .kgv-svg.grabbing * { cursor: grabbing !important; }
.kgv-tooltip {
  position: absolute; pointer-events: none; z-index: 50;
  background: rgba(26,31,46,0.95); border: 1px solid rgba(255,255,255,0.2);
  padding: 5px 10px;
  font-family: var(--font-mono); font-size: 10px;
  transform: translate(-50%, -100%);
  white-space: nowrap;
  display: none;
}
.kgv-tooltip .ttype { text-transform: uppercase; letter-spacing: 0.08em; color: rgba(255,255,255,0.4); }
.kgv-tooltip .tsep { margin: 0 6px; color: rgba(255,255,255,0.2); }
.kgv-tooltip .tlabel { color: rgba(255,255,255,0.85); }
.kgv-legend {
  position: absolute; top: 16px; left: 16px;
  background: rgba(26,31,46,0.9); border: 1px solid rgba(255,255,255,0.1);
  padding: 14px 16px;
  min-width: 200px;
  font-family: var(--font-mono);
  user-select: none;
  z-index: 20;
}
.kgv-legend .lhead { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.kgv-legend .lhead .ic {
  width: 26px; height: 26px;
  background: rgba(96,165,250,0.18); border: 1px solid rgba(96,165,250,0.32);
  display: grid; place-items: center;
}
.kgv-legend .lhead .ttl { color: #fff; font-size: 11px; font-weight: 500; }
.kgv-legend .lhead .sub { color: rgba(255,255,255,0.4); font-size: 9px; margin-top: 2px; }
.kgv-legend .bytype { font-size: 9px; text-transform: uppercase; letter-spacing: 0.12em; color: rgba(255,255,255,0.4); margin-bottom: 8px; }
.kgv-legend .row {
  display: flex; align-items: center; gap: 8px; padding: 3px 0;
  cursor: pointer; background: transparent; border: 0; width: 100%;
  font-family: inherit;
}
.kgv-legend .row.off { opacity: 0.3; }
.kgv-legend .row .sw { width: 10px; height: 10px; flex-shrink: 0; }
.kgv-legend .row .sw.circle { border-radius: 50%; }
.kgv-legend .row .sw.diamond { transform: rotate(45deg); }
.kgv-legend .row .nm { font-size: 9px; text-transform: uppercase; letter-spacing: 0.1em; color: rgba(255,255,255,0.6); width: 84px; text-align: left; }
.kgv-legend .row .bar { flex: 1; height: 6px; background: rgba(255,255,255,0.05); }
.kgv-legend .row .bar > span { display: block; height: 100%; }
.kgv-legend .row .ct { font-size: 9px; color: rgba(255,255,255,0.5); width: 28px; text-align: right; }
.kgv-legend .pinned {
  margin-top: 12px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,0.1);
  display: flex; align-items: center; gap: 6px;
  font-size: 9px;
}
.kgv-legend .pinned .star { color: #f59e0b; }
.kgv-legend .pinned .lbl { color: rgba(245,158,11,0.8); text-transform: uppercase; letter-spacing: 0.1em; }
.kgv-reset {
  position: absolute; top: 16px; right: 16px;
  background: rgba(26,31,46,0.9); border: 1px solid rgba(255,255,255,0.1);
  padding: 6px 12px;
  font-family: var(--font-mono);
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em;
  color: rgba(255,255,255,0.6);
  cursor: pointer;
  z-index: 20;
  display: none;
}
.kgv-reset:hover { color: rgba(255,255,255,0.9); border-color: rgba(255,255,255,0.3); }
.kgv-reset.on { display: block; }
.kgv-hint {
  position: absolute; bottom: 12px; right: 16px;
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: rgba(255,255,255,0.25);
  pointer-events: none;
}

@keyframes kgv-pulse { 0%, 100% { opacity: 0.7; } 50% { opacity: 1; } }
@keyframes kgv-edge-glow { 0%, 100% { stroke-opacity: 0.15; } 50% { stroke-opacity: 0.5; } }

/* ---- Entity Intelligence ---- */
.entity-grid {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: 56px;
  align-items: start;
}
@media (max-width: 980px) {
  .entity-grid { grid-template-columns: 1fr; gap: 32px; }
}
.entity-grid .e-intro h2.ds-h { margin-top: 0; }
.entity-grid .e-intro .ds-p { margin-bottom: 0; }

.dossier {
  background: #1a1f2e;
  border: 1px solid rgba(255,255,255,0.1);
  font-family: var(--font-mono);
  color: #fff;
}
.dossier .d-head {
  padding: 18px 20px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  display: flex; align-items: center; gap: 12px;
}
.dossier .d-head .ic { width: 40px; height: 40px; display: grid; place-items: center; flex-shrink: 0; }
.dossier .d-head .nm { font-size: 14px; font-weight: 500; letter-spacing: 0.02em; }
.dossier .d-head .chip {
  display: inline-block;
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.16em;
  padding: 2px 8px; margin-left: 8px;
}
.dossier .empty { padding: 64px 20px; text-align: center; }
.dossier .empty .h { font-size: 11px; color: rgba(255,255,255,0.4); margin-bottom: 4px; }
.dossier .empty .s { font-size: 10px; color: rgba(255,255,255,0.2); }
.dossier .scores { padding: 16px 20px; border-bottom: 1px solid rgba(255,255,255,0.1); }
.dossier .scores .row + .row { margin-top: 12px; }
.dossier .score-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.dossier .score-h .lbl { font-size: 10px; text-transform: uppercase; letter-spacing: 0.16em; color: rgba(255,255,255,0.4); }
.dossier .score-h .val { font-size: 12px; font-weight: 500; }
.dossier .bar { width: 100%; height: 6px; background: rgba(255,255,255,0.05); }
.dossier .bar > span { display: block; height: 100%; }
.dossier .stats {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.dossier .stats .cell { padding: 12px 16px; border-right: 1px solid rgba(255,255,255,0.1); }
.dossier .stats .cell:last-child { border-right: 0; }
.dossier .stats .k { font-size: 9px; text-transform: uppercase; letter-spacing: 0.16em; color: rgba(255,255,255,0.4); margin-bottom: 4px; }
.dossier .stats .v { font-size: 12px; color: rgba(255,255,255,0.9); }
.dossier .tabs {
  display: flex; overflow-x: auto;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  scrollbar-width: none;
}
.dossier .tabs::-webkit-scrollbar { display: none; }
.dossier .tabs button {
  padding: 10px 14px;
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em;
  background: transparent; border: 0;
  color: rgba(255,255,255,0.4);
  cursor: pointer; white-space: nowrap; flex-shrink: 0;
  font-family: inherit;
  border-bottom: 1px solid transparent;
}
.dossier .tabs button:hover:not([disabled]) { color: rgba(255,255,255,0.6); }
.dossier .tabs button.active { color: #fff; background: rgba(255,255,255,0.05); border-bottom-color: #fff; }
.dossier .tabs button[disabled] { color: rgba(255,255,255,0.15); cursor: not-allowed; }
.dossier .tab-body { padding: 16px 20px; min-height: 220px; }
.dossier .empty-tab { padding: 32px 0; text-align: center; font-size: 11px; color: rgba(255,255,255,0.3); }
.dossier .sec-h { font-size: 10px; text-transform: uppercase; letter-spacing: 0.16em; color: rgba(255,255,255,0.4); margin-bottom: 8px; }
.dossier .alt-names { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.dossier .alt-names .pill {
  font-size: 11px; padding: 4px 10px;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.5);
  border: 1px solid rgba(255,255,255,0.05);
}
.dossier .alt-names .empty-pill { font-size: 11px; color: rgba(255,255,255,0.3); }
.dossier .attrs { border: 1px solid rgba(255,255,255,0.05); margin-bottom: 16px; }
.dossier .attrs .at-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 12px; border-bottom: 1px solid rgba(255,255,255,0.05);
}
.dossier .attrs .at-row:last-child { border-bottom: 0; }
.dossier .attrs .ak { font-size: 11px; color: rgba(255,255,255,0.6); }
.dossier .attrs .av { font-size: 11px; color: rgba(255,255,255,0.3); letter-spacing: 0.04em; }
.dossier .dq-h { display: flex; justify-content: space-between; margin-bottom: 6px; }
.dossier .dq-h .lbl { font-size: 10px; text-transform: uppercase; letter-spacing: 0.16em; color: rgba(255,255,255,0.4); }
.dossier .dq-h .val { font-size: 10px; font-weight: 500; color: #10b981; }
.dossier .net-svg { width: 100%; max-height: 250px; }
.dossier .tl { position: relative; padding-left: 0; }
.dossier .tl .vline { position: absolute; left: 11px; top: 8px; bottom: 8px; width: 1px; background: rgba(255,255,255,0.1); }
.dossier .tl .row { display: flex; gap: 12px; position: relative; padding: 6px 0; }
.dossier .tl .icn { width: 22px; height: 22px; flex-shrink: 0; display: grid; place-items: center; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); font-size: 10px; color: rgba(255,255,255,0.6); position: relative; z-index: 2; }
.dossier .tl .body { flex: 1; min-width: 0; }
.dossier .tl .ttl { font-size: 11px; color: rgba(255,255,255,0.8); line-height: 1.4; }
.dossier .tl .meta { display: flex; gap: 8px; align-items: center; margin-top: 4px; }
.dossier .tl .date { font-size: 9px; color: rgba(255,255,255,0.3); }
.dossier .tl .src { font-size: 9px; padding: 2px 6px; background: rgba(255,255,255,0.04); color: rgba(255,255,255,0.25); border: 1px solid rgba(255,255,255,0.05); }
.dossier .docs .doc-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  margin-bottom: 8px;
}
.dossier .docs .doc-row:last-child { margin-bottom: 0; }
.dossier .docs .ttl { font-size: 11px; color: rgba(255,255,255,0.7); }
.dossier .docs .date { font-size: 9px; color: rgba(255,255,255,0.3); margin-top: 2px; }
.dossier .docs .tag { font-size: 9px; padding: 2px 6px; background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.4); border: 1px solid rgba(255,255,255,0.05); margin-left: 8px; }
.dossier .anly .row + .row { margin-top: 12px; }
.dossier .anly .h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.dossier .anly .lbl { font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: rgba(255,255,255,0.4); }
.dossier .anly .val { font-size: 10px; font-weight: 500; }
.dossier .media-row {
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  margin-bottom: 8px;
}
.dossier .media-row:last-child { margin-bottom: 0; }
.dossier .media-row .top { display: flex; justify-content: space-between; margin-bottom: 4px; }
.dossier .media-row .src { font-size: 10px; color: rgba(255,255,255,0.5); }
.dossier .media-row .tone { font-size: 9px; padding: 2px 6px; border: 1px solid; }
.dossier .media-row .ttl { font-size: 11px; color: rgba(255,255,255,0.7); line-height: 1.4; }
.dossier .media-row .date { font-size: 9px; color: rgba(255,255,255,0.25); margin-top: 4px; }
.dossier .soc-row {
  padding: 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  margin-bottom: 12px;
}
.dossier .soc-row:last-child { margin-bottom: 0; }
.dossier .soc-row .top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.dossier .soc-row .pl-line { display: flex; align-items: center; gap: 8px; }
.dossier .soc-row .pl { font-size: 10px; font-weight: 500; color: rgba(255,255,255,0.6); }
.dossier .soc-row .sentiment { font-size: 9px; padding: 2px 6px; border: 1px solid; }
.dossier .soc-row .date { font-size: 9px; color: rgba(255,255,255,0.25); }
.dossier .soc-row .text { font-size: 11px; color: rgba(255,255,255,0.5); line-height: 1.5; margin-bottom: 8px; }
.dossier .soc-row .tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; }
.dossier .soc-row .tag { font-size: 9px; color: rgba(96,165,250,0.6); }
.dossier .soc-row .ftr { display: flex; justify-content: space-between; align-items: center; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.05); }
.dossier .soc-row .eng { font-size: 9px; color: rgba(255,255,255,0.25); }
.dossier .soc-row .rel { font-size: 9px; padding: 2px 6px; border: 1px solid; }

/* ===== knowledge graph nodes ===== */
.knode {
  position: absolute;
  transform: translate(-50%, -50%);
  display: flex; flex-direction: column; align-items: center;
  cursor: grab;
  z-index: 2;
  touch-action: none;
}
.knode.dragging { cursor: grabbing; }
.knode .ring {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--text-secondary);
  background: var(--bg-app);
  display: grid; place-items: center;
  transition: all 200ms ease-out;
  position: relative;
}
.knode .ring::after {
  content: '';
  position: absolute; inset: -6px;
  border: 1px solid transparent;
  border-radius: 50%;
  transition: border-color 200ms;
}
.knode:hover .ring::after { border-color: color-mix(in oklch, var(--text-secondary), transparent 50%); }
.knode.sel .ring::after { border-color: var(--accent-blue); }
.knode .ring .core {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--text-secondary);
}
.knode .lbl {
  margin-top: 6px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
  white-space: nowrap;
  background: color-mix(in oklch, var(--bg-card), transparent 20%);
  padding: 1px 5px;
  pointer-events: none;
}
.knode.k-person .ring { border-color: var(--accent-blue); } .knode.k-person .ring .core { background: var(--accent-blue); }
.knode.k-org    .ring { border-color: var(--accent-amber); } .knode.k-org    .ring .core { background: var(--accent-amber); }
.knode.k-bill   .ring { border-color: var(--accent-cyan); } .knode.k-bill   .ring .core { background: var(--accent-cyan); }
.knode.k-event  .ring { border-color: var(--accent-red); } .knode.k-event  .ring .core { background: var(--accent-red); }
.knode.k-juris  .ring { border-color: var(--accent-green); } .knode.k-juris  .ring .core { background: var(--accent-green); }
.knode.sel .lbl { color: var(--text-primary); }
.knode.sel .ring { transform: scale(1.15); }

/* =========================================================
   PRINCIPLES
   ========================================================= */
.principles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border: var(--hairline);
  background: var(--bg-card);
  margin-bottom: 80px;
}
.principle {
  padding: 36px 32px 40px;
  border-right: var(--hairline);
  display: flex; flex-direction: column; gap: 16px;
}
.principle:last-child { border-right: none; }
.principle .num {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--text-tertiary);
}
.principle h4 { margin: 0; font-family: var(--font-display); font-style: normal; font-weight: 500; font-size: 24px; line-height: 1.18; letter-spacing: -0.022em; color: var(--text-primary); }
.principle p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 13.5px;
  line-height: 1.6;
}
.principle .rule {
  width: 32px; height: 1px;
  background: var(--accent-blue);
  margin-top: 4px;
}

@media (max-width: 900px) {
  .principles { grid-template-columns: 1fr; }
  .principle { border-right: none; border-bottom: var(--hairline); }
  .principle:last-child { border-bottom: none; }
}

/* =========================================================
   ARCH
   ========================================================= */
.arch {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0, 1fr);
  gap: 64px;
  padding-bottom: 80px;
  align-items: start;
}
.arch-stack {
  border: var(--hairline);
  background: var(--bg-card);
}
.arch-layer {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 18px;
  padding: 18px 20px;
  border-bottom: var(--hairline-faint);
  align-items: baseline;
}
.arch-layer:last-child { border-bottom: none; }
.arch-layer .ord {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  color: var(--text-tertiary);
  text-transform: uppercase;
}
.arch-layer .name {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 14px;
  letter-spacing: -0.005em;
  color: var(--text-primary);
}
.arch-layer .desc {
  margin-top: 4px;
  color: var(--text-secondary);
  font-size: 12.5px;
  line-height: 1.55;
}
.arch-side {
  display: flex; flex-direction: column; gap: 28px;
}
.arch-side .blurb h3 { margin: 0 0 14px; font-family: var(--font-display); font-weight: 500; font-size: 26px; line-height: 1.15; letter-spacing: -0.022em; }
.arch-side .blurb p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 14px;
  line-height: 1.6;
}
.arch-trust {
  border: var(--hairline);
  background: var(--bg-card);
}
.arch-trust .row {
  display: grid;
  grid-template-columns: 1fr auto;
  padding: 14px 18px;
  border-bottom: var(--hairline-faint);
  font-size: 13px;
  align-items: center;
  gap: 12px;
}
.arch-trust .row:last-child { border-bottom: none; }
.arch-trust .row .l {
  color: var(--text-secondary);
  display: flex; align-items: center; gap: 10px;
}
.arch-trust .row .l .ck {
  width: 14px; height: 14px;
  display: grid; place-items: center;
  color: var(--accent-green);
}
.arch-trust .row .v {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-tertiary);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

@media (max-width: 1000px) {
  .arch { grid-template-columns: 1fr; gap: 32px; }
}

/* =========================================================
   QUOTE — dossier-card aesthetic
   ========================================================= */
.quote {
  padding: 96px 0;
  border-top: var(--hairline);
  border-bottom: var(--hairline);
  background: color-mix(in oklch, var(--bg-app), var(--deepen-color) var(--deepen-med));
}
.quote-inner {
  max-width: 980px;
  margin: 0 auto;
  padding: 0 32px;
}
.quote-card {
  position: relative;
  background: var(--bg-card);
  border: var(--hairline);
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.quote-card::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 2px;
  background: var(--accent-blue);
}

.qc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 24px;
  border-bottom: var(--hairline-faint);
  background: var(--bg-elevated);
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-tertiary);
}
.qc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.qc-meta .mono { color: var(--text-secondary); letter-spacing: 0.06em; }
.qc-sep { color: var(--text-muted); }
.qc-pill {
  padding: 3px 8px;
  border: 1px solid color-mix(in oklch, var(--accent-green), transparent 50%);
  color: var(--accent-green);
  letter-spacing: 0.1em;
  font-size: 10px;
  white-space: nowrap;
}

.qc-body {
  margin: 0;
  padding: 40px 56px 36px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(24px, 3vw, 38px);
  line-height: 1.18;
  letter-spacing: -0.024em;
  color: var(--text-primary);
}
.qc-body em {
  font-style: normal;
  color: var(--accent-blue);
}

.qc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 18px 24px 18px 56px;
  border-top: var(--hairline-faint);
  background: color-mix(in oklch, var(--bg-card), var(--deepen-color) 4%);
}
.qc-attr .qc-role {
  font-size: 13px;
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: -0.005em;
}
.qc-attr .qc-org {
  margin-top: 2px;
  font-size: 12px;
  color: var(--text-secondary);
}
.qc-stamp {
  font-size: 10.5px;
  letter-spacing: 0.1em;
  color: var(--text-tertiary);
  text-transform: uppercase;
  text-align: right;
}

@media (max-width: 720px) {
  .qc-head { padding: 12px 18px 12px 22px; font-size: 10px; }
  .qc-body { padding: 28px 22px 24px; }
  .qc-foot { padding: 14px 18px 14px 22px; flex-direction: column; align-items: flex-start; gap: 10px; }
  .qc-stamp { text-align: left; }
}

/* =========================================================
   DEPLOY / CTA
   ========================================================= */
.deploy {
  padding: 80px 0 96px;
  border-top: var(--hairline);
  position: relative;
}
.deploy-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 64px;
  align-items: end;
}
.deploy h2 { margin: 0 0 24px; font-family: var(--font-display); font-weight: 400; font-size: clamp(34px, 4.4vw, 60px); line-height: 1.02; letter-spacing: -0.028em; }
.deploy h2 em { font-style: normal; color: var(--text-secondary); }
.deploy p {
  margin: 0 0 28px;
  color: var(--text-secondary);
  font-size: 16px;
  line-height: 1.55;
  max-width: 50ch;
}
.deploy-actions { display: flex; gap: 12px; flex-wrap: wrap; }

.deploy-card {
  border: var(--hairline);
  padding: 24px;
  background: var(--bg-card);
}
.deploy-card .label {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  margin-bottom: 14px;
}
.deploy-card .row {
  display: grid;
  grid-template-columns: 1fr auto;
  padding: 8px 0;
  font-size: 13px;
  color: var(--text-secondary);
  border-top: var(--hairline-faint);
}
.deploy-card .row:first-of-type { border-top: none; }
.deploy-card .row .v {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--text-primary);
}
.deploy-card .row .v.green { color: var(--accent-green); }

@media (max-width: 900px) {
  .deploy-grid { grid-template-columns: 1fr; gap: 40px; }
}

/* =========================================================
   FOOTER
   ========================================================= */
.foot {
  border-top: var(--hairline);
  padding: 24px 0 20px;
}
.foot-inner {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 48px;
}
.foot h6 {
  margin: 0 0 14px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-tertiary);
  font-weight: 500;
}
.foot ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.foot li a { font-size: 13px; color: var(--text-secondary); }
.foot li a:hover { color: var(--text-primary); }
.foot .col-brand .blurb { color: var(--text-secondary); font-size: 13px; line-height: 1.55; max-width: 36ch; margin: 14px 0 0; }
.foot .col-brand .foot-contact { margin: 12px 0 0; font-size: 13px; }
.foot .col-brand .foot-contact a { color: var(--text-secondary); text-decoration: none; }
.foot .col-brand .foot-contact a:hover { color: var(--text-primary); }
.foot-bot {
  margin-top: 32px;
  padding-top: 16px;
  border-top: var(--hairline);
  display: flex; align-items: center; justify-content: space-between;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-tertiary);
  letter-spacing: 0.04em;
}
.foot-bot .right { display: flex; gap: 18px; }

@media (max-width: 900px) {
  .foot-inner { grid-template-columns: 1fr 1fr; gap: 32px; }
  .foot-bot { flex-direction: column; gap: 12px; align-items: flex-start; }
}

/* small SVG icon helper */
.ico { width: 16px; height: 16px; }
.ico-sm { width: 12px; height: 12px; }
.ico-lg { width: 20px; height: 20px; }

/* Parent badge hover */
.holdings:hover { color: var(--text-secondary); }

/* About section */
.about-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 16px;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
  transition: color 120ms;
}
.about-link:hover { color: var(--text-primary); }
.about-link .arrow {
  font-family: var(--font-mono);
  transition: transform 160ms ease-out;
}
.about-link:hover .arrow { transform: translateX(3px); }
.sibling-strip {
  padding: 0 0 48px;
}
