/* TensorCash sites on the Bob Labs system.
   dark + light: ds/boblabs/tokens.css as published.
   sober + sober-dark: the same token names in greyscale. Status hues stay,
   because a verdict must still read at a glance; the TensorCash mark keeps its
   own greens, so in the sober pair the only colour on the page is theirs. */

[data-theme="sober"] {
  --bg: #ffffff; --surface: #fafafa; --raised: #ffffff; --hover: #f0f0f0; --user: #f0f0f0;
  --line: #e2e2e2; --edge: #8a8a8a; --fg: #111111; --muted: #666666; --faint: #b3b3b3;
  --accent: #111111; --accent-hover: #3a3a3a; --accent-2: #8a8a8a; --on-accent: #ffffff; --accent-soft: #1111110f;
  --ok: #1f7a3d; --ok-soft: #1f7a3d14; --warn: #8a5d00; --warn-soft: #9a6a0014; --danger: #b3261e; --danger-soft: #b3261e12;
  --scrim: #11111159; --veil: #ffffffd9; --grid: #1111110a; --grid-strong: #11111112;
  --shadow-pop: 0 12px 32px -10px #11111133, 0 0 0 1px #e2e2e2;
  --focus-ring: 0 0 0 2px #ffffff, 0 0 0 4px #111111;
  --mark-ground: #111111; --mark-b: #ffffff; --mark-l: #8a8a8a;
}
[data-theme="sober-dark"] {
  --bg: #111111; --surface: #161616; --raised: #1a1a1a; --hover: #222222; --user: #222222;
  --line: #2c2c2c; --edge: #6e6e6e; --fg: #f2f2f2; --muted: #8f8f8f; --faint: #4a4a4a;
  --accent: #f2f2f2; --accent-hover: #ffffff; --accent-2: #8f8f8f; --on-accent: #111111; --accent-soft: #f2f2f214;
  --ok: #4fbf73; --ok-soft: #4fbf731f; --warn: #d6a43a; --warn-soft: #d6a43a1f; --danger: #e5675f; --danger-soft: #e5675f1f;
  --scrim: #000000b3; --veil: #111111d9; --grid: #ffffff08; --grid-strong: #ffffff10;
  --shadow-pop: 0 16px 40px -12px #000000e6, 0 0 0 1px #2c2c2c;
  --focus-ring: 0 0 0 2px #111111, 0 0 0 4px #f2f2f2;
  --mark-ground: #f2f2f2; --mark-b: #111111; --mark-l: #7a7a7a;
}

/* the mark: colour in dark and light, ink or paper in the sober pair.
   The gradient's two stops become ground and grey: b takes the page colour, L the grey. */
.tc-mk-g { fill: var(--mark-ground); }
.tc-mk-b { fill: var(--mark-b); }
.tc-mk-l { fill: var(--mark-l); }
svg.tc-mark-mono, .bl-lockup svg.tc-mark-mono { display: none; }
[data-theme^="sober"] svg.tc-mark-color, [data-theme^="sober"] .bl-lockup svg.tc-mark-color { display: none; }
[data-theme^="sober"] svg.tc-mark-mono, [data-theme^="sober"] .bl-lockup svg.tc-mark-mono { display: block; }
.tc-tcmark { display: block; width: 13px; height: 16px; flex: none; }

/* page shell */
.tc-page { min-height: 100vh; display: flex; flex-direction: column; background: var(--bg); color: var(--fg);
  font: 400 15px/1.6 var(--font-sans); -webkit-font-smoothing: antialiased;
  transition: background-color .25s ease, color .25s ease; }
.tc-wrap { width: 100%; max-width: 1120px; margin: 0 auto; padding-inline: 24px; box-sizing: border-box; }
@media (max-width: 720px) {
  .tc-wrap { padding-inline: 16px; }
  .tc-hide-sm { display: none !important; }
}

/* four-way theme cycle: the ThemeSwitch track with one stop per theme */
.tc-cycle { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 8px; border: 0; background: none;
  cursor: pointer; font: 500 11px/1 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted);
  white-space: nowrap; transition: color .2s ease; }
.tc-cycle:hover { color: var(--fg); }
.tc-cycle .track { position: relative; width: 34px; height: 12px; border: 1px solid var(--edge); border-radius: 999px; flex: none; }
.tc-cycle:hover .track { border-color: var(--accent); }
.tc-cycle .knob { position: absolute; top: 2px; left: 2px; width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
  transition: transform .25s cubic-bezier(.2,.7,.2,1); }

/* shared type */
.tc-eyebrow { font: 500 11px/16px var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.tc-h1 { margin: 0; max-width: 21ch; font: 500 clamp(30px, 4.4vw, 48px)/1.1 var(--font-sans); letter-spacing: -.025em; text-wrap: balance; }
.tc-lead { margin: 0; max-width: 60ch; color: var(--muted); font-size: 16px; line-height: 1.6; }

/* hub: tool cards */
.tc-tools { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 12px; }
.tc-tool { display: flex; flex-direction: column; gap: 10px; min-height: 200px; padding: 20px; box-sizing: border-box;
  background: var(--raised); border: 1px solid var(--line); border-radius: 14px; color: inherit; text-decoration: none;
  transition: border-color .2s ease, transform .2s ease; }
.tc-tool:hover, .tc-tool:focus-visible { border-color: var(--accent); transform: translateY(-2px); }
.tc-tool .ic { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); color: var(--accent); }
.tc-tool .name { font: 600 19px/24px var(--font-sans); letter-spacing: -.015em; }
.tc-tool .desc { color: var(--muted); font-size: 14px; line-height: 1.55; }
.tc-tool .go { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 12px;
  border-top: 1px solid var(--line); font: 400 12px/16px var(--font-mono); color: var(--muted); transition: color .2s ease; }
.tc-tool:hover .go { color: var(--accent); }
.tc-tool-wide { grid-column: span 2; }
.tc-tool .terms { font: 400 12.5px/18px var(--font-mono); color: var(--fg); }
@media (max-width: 700px) { .tc-tool-wide { grid-column: auto; } }

/* hub: who's who */
.tc-who { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 1px; overflow: hidden;
  border: 1px solid var(--line); border-radius: 14px; background: var(--line); }
.tc-who > div { display: flex; flex-direction: column; gap: 12px; padding: 24px; background: var(--surface); }
.tc-who h3 { margin: 0; font: 600 20px/26px var(--font-sans); letter-spacing: -.015em; }
.tc-who p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.6; }
.tc-who ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
.tc-who li { display: flex; gap: 10px; }
.tc-who li::before { content: "—"; color: var(--faint); }

/* pool */
.tc-terms { display: grid; grid-template-columns: max-content 1fr; gap: 6px 20px; margin: 0; font: 400 13px/20px var(--font-mono); }
.tc-terms dt { color: var(--muted); }
.tc-terms dd { margin: 0; color: var(--fg); }
.tc-big { font: 600 40px/1 var(--font-sans); letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.tc-big small { margin-left: 6px; font: 400 14px/1 var(--font-mono); letter-spacing: 0; color: var(--muted); }
.tc-chart { display: block; width: 100%; overflow: visible; }
.tc-line { fill: none; stroke: var(--accent); stroke-width: 1.6; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.tc-area { fill: var(--accent-soft); stroke: none; }
.tc-gridline { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.tc-sec { display: flex; flex-direction: column; gap: 14px; scroll-margin-top: 72px; }
.tc-sechead { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px;
  padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.tc-sechead h2 { margin: 0; font: 500 22px/28px var(--font-sans); letter-spacing: -.02em; }
.tc-req { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 16px; }
.tc-req li { display: flex; flex-direction: column; gap: 4px; }
.tc-req p { margin: 0; font-size: 14px; line-height: 1.55; }
.tc-cmd { margin: 0; padding: 14px 16px; overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; background: var(--surface);
  font: 400 13px/22px var(--font-mono); color: var(--fg); white-space: pre; }
.tc-cmd .p { color: var(--faint); user-select: none; }
.tc-mini { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.tc-mini .cur { font: 600 22px/28px var(--font-sans); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.tc-mini .cur small { margin-left: 4px; font: 400 12px/1 var(--font-mono); letter-spacing: 0; color: var(--muted); }
.tc-mini .cap { font-size: 12.5px; line-height: 18px; color: var(--muted); }
