body { max-width: 70ch; margin-inline: auto; }
.sitenav { margin-block-end: 1.5rem; padding-block-end: 0.5rem; border-bottom: 1px solid currentColor; }
.sitenav ul { list-style: none; display: flex; flex-wrap: wrap; gap: 1rem; margin: 0; padding: 0; }
.sitenav [aria-current="page"] { font-weight: bold; }
.langpicker { text-align: right; font-size: 0.8rem; margin-block-end: 0.35rem; }
.langpicker a, .langpicker [aria-current="page"] { margin-inline-start: 0.7rem; }
.langpicker [aria-current="page"] { font-weight: bold; }
.tab { display: none; }
.tab:target { display: block; }
.tabs:not(:has(:target)) #zec { display: block; }
.charts-css.column { display: block; max-width: 36rem; margin-block: 1rem; overflow-x: auto; }
.charts-css.column caption { caption-side: top; text-align: start; font-weight: bold; padding-bottom: 0.25rem; display: block; }
.charts-css.column tbody { display: flex; align-items: stretch; gap: 0.5rem; height: 13rem; border-bottom: 1px solid currentColor; }
.charts-css.column tbody tr { flex: 1 1 0; min-width: 3.25rem; display: grid; grid-template-rows: 1fr auto; }
.charts-css.column td { grid-row: 1; align-self: end; height: calc(var(--size, 0) * 100%); background: var(--bar-color, #5a3eaf); border-radius: 3px 3px 0 0; display: flex; align-items: flex-start; justify-content: center; }
.charts-css.column th { grid-row: 2; font-weight: normal; font-size: 0.72rem; text-align: center; padding-top: 0.25rem; word-break: break-word; }
.charts-css.column .data { font-size: 0.7rem; color: #fff; padding: 0.1rem 0.2rem; white-space: nowrap; }
.charts-css.column.volume-chart td:hover .data { font-size: 0.85rem; font-weight: bold; outline: 1px solid currentColor; }
.charts-css.column.ref-line tbody { position: relative; }
.charts-css.column.ref-line td { height: calc(var(--size, 0) * 80%); }
.charts-css.column.ref-line tbody::after { content: ""; position: absolute; left: 0; right: 0; bottom: calc(var(--ref, 1) * 100%); border-top: 2px dashed currentColor; pointer-events: none; }
.history h3 { font-size: 1rem; margin-block: 1.25rem 0.25rem; }
.history h4 { font-size: 0.8rem; font-weight: normal; margin-block: 0.75rem 0.25rem; }
.history-empty { font-style: italic; }
.history-chart { display: grid; grid-template-columns: 3.5rem 1fr 3.5rem; grid-template-rows: 14rem 5rem auto; gap: 0.25rem; max-width: 44rem; margin-block: 0.5rem 1.5rem; grid-template-areas: "data-1-axis stocks data-2-axis" "data-1-axis volume data-2-axis" "primary-axis primary-axis primary-axis"; }
.history-chart .charts-css { display: block; width: 100%; height: 100%; position: relative; }
.history-chart .charts-css.area, .history-chart .charts-css.line { grid-area: stocks; }
.history-chart .charts-css.column { grid-area: volume; max-width: none; margin-block: 0; }
.history-chart .primary-axis { grid-area: primary-axis; font-size: 0.68rem; text-align: center; padding-top: 0.25rem; border-top: 1px solid currentColor; }
.history-chart .data-1-axis { grid-area: data-1-axis; writing-mode: vertical-rl; transform: rotate(180deg); font-size: 0.68rem; text-align: center; align-self: center; }
.history-chart .data-2-axis { grid-area: data-2-axis; writing-mode: vertical-rl; font-size: 0.68rem; text-align: center; align-self: center; }
.history-chart .charts-css.area tbody, .history-chart .charts-css.line tbody { display: flex; flex-direction: row; align-items: stretch; width: 100%; height: 100%; }
.history-chart .charts-css.area tbody tr, .history-chart .charts-css.line tbody tr { position: relative; flex: 1 1 0; min-width: 0; }
.history-chart .charts-css.area td, .history-chart .charts-css.line td { position: absolute; inset: 0; }
.history-chart .charts-css.area td::before, .history-chart .charts-css.line td::before { content: ""; position: absolute; inset: 0; }
.history-chart .charts-css.area td::before { z-index: -1; background: linear-gradient(rgba(90, 62, 175, 0.30), rgba(90, 62, 175, 0)); clip-path: polygon(0% calc(100% * (1 - var(--start, var(--size)))), 100% calc(100% * (1 - var(--size))), 100% 100%, 0% 100%); }
.history-chart .charts-css.line { --line-size: 2px; }
.history-chart .charts-css.line td::before { clip-path: polygon(0% calc(100% * (1 - var(--start, var(--size)))), 100% calc(100% * (1 - var(--size))), 100% calc(100% * (1 - var(--size)) - var(--line-size)), 0% calc(100% * (1 - var(--start, var(--size))) - var(--line-size))); }
.history-chart .charts-css.line.src-bitfinex td::before { background: #2e8b57; }
.history-chart .charts-css.line.src-kraken td::before { background: #4060d0; }
.history-chart .charts-css.line.src-coinbase td::before { background: #d07000; }
.history-chart .charts-css.line.src-binance td::before { background: #b03090; }
.history-chart .charts-css.line.src-coingecko td::before { background: #707070; }
.history-chart .charts-css.line td.gap::before, .history-chart .charts-css.area td.gap::before { content: none; }
.history-chart .charts-css.column tbody { display: flex; flex-direction: row; align-items: flex-end; gap: 1px; width: 100%; height: 100%; border-bottom: 0; }
.history-chart .charts-css.column tbody tr { flex: 1 1 0; min-width: 0; display: flex; align-items: flex-end; }
.history-chart .charts-css.column td { width: 100%; height: calc(var(--size, 0) * 100%); background: #9a8fc0; border-radius: 0; }
.history-chart .charts-css .data { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); border: 0; }
.charts-css.bar { display: block; max-width: 36rem; margin-block: 1rem; }
.charts-css.bar caption { caption-side: top; text-align: start; font-weight: bold; padding-bottom: 0.25rem; }
.charts-css.bar tbody { display: block; }
.charts-css.bar tr { display: grid; grid-template-columns: 11rem 1fr 4.5rem; gap: 0.5rem; align-items: center; margin-block: 3px; }
.charts-css.bar th { font-weight: normal; font-size: 0.72rem; text-align: start; overflow-wrap: anywhere; }
.charts-css.bar td.bar { position: relative; height: 1rem; }
.charts-css.bar td.bar::before { content: ""; position: absolute; inset-block: 0; inset-inline-start: 0; width: calc(var(--size, 0) * 100%); background: #5a3eaf; border-radius: 3px; }
.charts-css.bar td.val { text-align: end; font-size: 0.72rem; font-variant-numeric: tabular-nums; }
.node-chart { max-width: 40rem; margin-block: 0.5rem 1.5rem; }
.node-chart figcaption { font-size: 0.85rem; font-weight: bold; margin-block: 0.75rem 0.25rem; }
.node-plot { display: grid; height: 10rem; border-bottom: 1px solid currentColor; }
.node-plot .charts-css { grid-area: 1 / 1; display: block; width: 100%; height: 100%; position: relative; }
.node-plot .charts-css.line tbody { display: flex; flex-direction: row; align-items: stretch; width: 100%; height: 100%; }
.node-plot .charts-css.line tbody tr { position: relative; flex: 1 1 0; min-width: 0; }
.node-plot .charts-css.line td { position: absolute; inset: 0; }
.node-plot .charts-css.line { --line-size: 2px; }
.node-plot .charts-css.line td::before { content: ""; position: absolute; inset: 0; clip-path: polygon(0% calc(100% * (1 - var(--start, var(--size)))), 100% calc(100% * (1 - var(--size))), 100% calc(100% * (1 - var(--size)) - var(--line-size)), 0% calc(100% * (1 - var(--start, var(--size))) - var(--line-size))); }
.node-plot .charts-css.line.ds-1 td::before { background: #2e8b57; }
.node-plot .charts-css.line.ds-2 td::before { background: #4060d0; }
.node-plot .charts-css.line td.gap::before { content: none; }
.node-axis { display: flex; justify-content: space-between; font-size: 0.68rem; padding-top: 0.25rem; }
.node-plot .charts-css .data { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); border: 0; }
ol.timeline { --timeline-accent: currentColor; list-style: none; position: relative; padding-left: 2.6rem; scroll-snap-type: y proximity; }
ol.timeline::before { content: ""; position: absolute; left: 0.82rem; top: 0.4rem; bottom: 0.4rem; width: 3px; border-radius: 3px; opacity: 0.55; background: linear-gradient(to bottom, transparent 0, var(--timeline-accent) 7%, var(--timeline-accent) 93%, transparent 100%); }
ol.timeline > li { position: relative; margin: 0 0 1.6rem 0; padding: 0.7rem 0.9rem; border: 1px solid transparent; border-radius: 7px; scroll-snap-align: start; }
ol.timeline > li::before { content: ""; position: absolute; left: -2.05rem; top: 0.95rem; width: 13px; height: 13px; border-radius: 50%; background: var(--timeline-accent); box-shadow: 0 0 7px var(--timeline-accent); }
ol.timeline > li:hover, ol.timeline > li:focus-within, ol.timeline > li:target { transform: scale(1.02); border-color: var(--timeline-accent); box-shadow: 0 0 0 1px var(--timeline-accent), 0 0 14px var(--timeline-accent); }
@media (prefers-reduced-motion: no-preference) {
 ol.timeline > li { transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
 ol.timeline > li::before { animation: zs-timeline-node-pulse 3.2s ease-in-out infinite; }
 @keyframes zs-timeline-node-pulse { 0%, 100% { box-shadow: 0 0 6px var(--timeline-accent); } 50% { box-shadow: 0 0 13px var(--timeline-accent); } }
}
.home { margin-block: 1.5rem; }
.home-hero { margin-block: 1rem 1.75rem; }
.home-hero .tagline { margin-block: 0 0.4rem; }
.home-hero p { margin-block: 0.5rem; }
.home-sections { list-style: none; padding: 0; margin-block: 1.75rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; align-items: stretch; }
.home-sections > li { display: flex; flex-direction: column; padding: 0.9rem 1.1rem; border: 1px solid currentColor; border-radius: 8px; }
.home-sections h3 { margin-block: 0 0.3rem; }
.home-sections h3 a { text-decoration: none; }
.home-sections .sec-desc { margin-block: 0; font-size: 0.9rem; opacity: 0.85; }
.home-notes { margin-block-start: 2rem; }
.home-notes p { font-size: 0.85rem; margin-block: 0.55rem; }
.home-foot { opacity: 0.7; }
body { max-width: min(84ch, 94vw); padding: 1.5rem clamp(1rem, 4vw, 3rem) 3rem; }
.sitenav ul { gap: 0; }
.sitenav li { flex: 1 1 0; display: flex; }
.sitenav a, .sitenav [aria-current="page"] { flex: 1; text-align: center; padding: 0.3em 0.4em; }
table:not(.charts-css) { display: block; overflow-x: auto; max-width: 100%; border-collapse: collapse; font-size: 0.85rem; margin-block: 0.7rem 1.4rem; }
table:not(.charts-css) caption { text-align: start; font-weight: bold; padding-bottom: 0.3rem; }
table:not(.charts-css) th, table:not(.charts-css) td { white-space: nowrap; }
table:not(.charts-css) th { text-align: start; font-size: 0.78rem; letter-spacing: 0.02em; border-block-end: 1px solid currentColor; padding: 0.25rem 0.5rem; }
table:not(.charts-css) td { padding: 0.22rem 0.5rem; border-block-end: 1px solid currentColor; font-variant-numeric: tabular-nums; }
table:not(.charts-css) tr:hover td { outline: 1px solid currentColor; }
table:not(.charts-css) tr.summary td { border-block-start: 1px solid currentColor; font-weight: bold; }
.news-pagination ul { list-style: none; display: flex; flex-wrap: wrap; gap: 0.3rem; padding: 0; margin: 1.5rem 0; }
.news-pagination li { flex: 1 1 0; display: flex; }
.news-pagination a, .news-pagination [aria-current="page"] { flex: 1; text-align: center; padding: 0.2em 0.4em; border: 1px solid currentColor; text-decoration: none; }
.news-pagination a:hover, .news-pagination a:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
.news-pagination [aria-current="page"] { font-weight: bold; border-width: 2px; }
.themepicker { box-sizing: border-box; width: 100%; display: flex; flex-wrap: wrap; gap: 0.4rem; margin-block-start: 2rem; padding-top: 1rem; border-top: 1px solid currentColor; }
.themepicker a { flex: 1 1 0; text-align: center; margin: 0; padding: 0.3em 0.4em; border: 1px solid currentColor; text-decoration: none; }
.themepicker a:hover, .themepicker a:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
.themepicker a.t-default { font-weight: bold; border-width: 2px; }
.charts-css caption, .node-chart figcaption { width: 100%; }
.charts-css.column, .charts-css.bar, .history-chart, .node-chart, .node-plot { max-width: 100%; }
.node-plot .charts-css .data, .history-chart .charts-css .data { position: absolute; top: 0; left: 50%; transform: translateX(-50%); margin-top: 2px; width: auto; height: auto; padding: 0.04em 0.35em; clip-path: none; overflow: visible; background: #fff; color: #000; border: 1px solid currentColor; font-size: 0.7rem; line-height: 1.3; white-space: nowrap; opacity: 0; pointer-events: none; z-index: 20; }
.node-plot .charts-css td:hover .data, .node-plot .charts-css td:focus-within .data, .history-chart .charts-css td:hover .data, .history-chart .charts-css td:focus-within .data { opacity: 1; }
/* network-address footer (ZS-221) — SHARED row layout (inherited by every theme except plain) */
.netfooter { margin-top: 3rem; font-size: 0.9rem; text-align: center; }
.netaddr { list-style: none; display: flex; flex-wrap: nowrap; width: 100%; gap: 0; margin: 0; padding: 0; }
.netaddr li { flex: 1 1 0; margin: 0; text-align: center; min-width: 0; }
.nf-source { margin: 0.6rem 0 0; font-size: 0.74em; opacity: 0.6; }
/* ============================================================================
   pipboy — "RobCo TermLink" amber-phosphor treatment  (preview-opus)
   Pure CSS within I-1: gradients / clip-path / box-shadow / pseudo-elements /
   Unicode only — zero external resource loads or font/image functions (I-1).
   All motion gated behind prefers-reduced-motion. Aesthetic theme (Z-8): the
   monochrome-amber discipline is intentional — a single-gun CRT shows one hue.
   ============================================================================ */

:root {
  --phos:        #ffb642;   /* amber phosphor — primary text/UI */
  --phos-bright: #ffd89b;   /* highlight / emphasis */
  --phos-dim:    #b9802f;   /* secondary / labels */
  --phos-faint:  rgba(255, 182, 66, 0.10);
  --phos-glow:   rgba(255, 182, 66, 0.55);
}

/* ---- Screen ground + reading measure ------------------------------------ */
html { background: #000; }
body {
  max-width: min(84ch, 94vw);  /* fill the laptop; cap so prose doesn't run edge-to-edge on big monitors */
  margin-inline: auto;
  padding: 2.4rem clamp(1rem, 4vw, 3rem) 4rem;
  font-family: ui-monospace, "Cascadia Mono", "DejaVu Sans Mono", Menlo, Consolas, monospace;
  font-size: 1.02rem;
  line-height: 1.62;          /* base left this unset → too tight for mono on dark */
  color: var(--phos);
  background-color: #000;
  background-image: none;     /* scanlines move to the full-screen glass overlay */
}

/* ---- CRT glass: full-viewport scanlines + edge curvature (decorative) ---- */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  background:
    repeating-linear-gradient(to bottom,
      rgba(0,0,0,0) 0, rgba(0,0,0,0) 2px,
      rgba(0,0,0,0.16) 3px, rgba(0,0,0,0) 4px),
    radial-gradient(ellipse 130% 110% at 50% 50%,
      transparent 58%, rgba(0,0,0,0.50) 100%);
}
@media (prefers-reduced-motion: no-preference) {
  @keyframes crt-flicker { 0%, 100% { opacity: 1; } 50% { opacity: 0.95; } }
  body { animation: crt-flicker 4s steps(40, end) infinite; }
}

/* ---- Masthead: terminal banner ------------------------------------------ */
/* ZS-141: stack the masthead as a column and lift the langpicker above the RobCo seal
   (.masthead::before) so the picker sits at the very top, not in the gap under the seal. */
.masthead { display: flex; flex-direction: column; }
.langpicker { order: -1; }
/* Per-section emblem (C1, ZS-101). Mechanism A: pipboy paints its OWN seal on
   .masthead::before — a first-party data: SVG — not a shared inline slot (the
   atomic-raygun .emblem was removed in ZS-107 when raygun-gothic was deferred).
   ::before sits above the RobCo tagline + title, matching the frozen design; the
   per-section swap keys on the hrefless current-nav link, exactly like the matrix taglines do. */
.masthead::before {
  content: ""; display: block;
  width: 72px; height: 72px; margin: 0 auto 0.5rem;
  background-repeat: no-repeat; background-position: center; background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Cg%20transform=%22rotate(0,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(30,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(60,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(90,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(120,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(150,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(180,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(210,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(240,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(270,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(300,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Cg%20transform=%22rotate(330,50,50)%22%3E%3Crect%20x=%2246.5%22%20y=%226%22%20width=%227%22%20height=%229%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/g%3E%3Ccircle%20cx=%2250%22%20cy=%2250%22%20r=%2240%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2250%22%20cy=%2250%22%20r=%2231%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2275.0%22%20cy=%2250.0%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2267.7%22%20cy=%2267.7%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2250.0%22%20cy=%2275.0%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2232.3%22%20cy=%2267.7%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2225.0%22%20cy=%2250.0%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2232.3%22%20cy=%2232.3%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2250.0%22%20cy=%2225.0%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2267.7%22%20cy=%2232.3%22%20r=%222.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Cline%20x1=%2236.1%22%20y1=%2244.4%22%20x2=%2263.9%22%20y2=%2255.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2244.1%22%20y1=%2236.2%22%20x2=%2255.9%22%20y2=%2263.8%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2255.6%22%20y1=%2236.1%22%20x2=%2244.4%22%20y2=%2263.9%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2263.8%22%20y1=%2244.1%22%20x2=%2236.2%22%20y2=%2255.9%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2250%22%20cy=%2250%22%20r=%227%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/svg%3E");
  filter: drop-shadow(0 0 5px var(--phos-glow));
}
body:not(:has(.sitenav a[href$="news/index.html"])) .masthead::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Crect%20x=%2214%22%20y=%2238%22%20width=%2272%22%20height=%2246%22%20rx=%225%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2234%22%20cy=%2261%22%20r=%2213%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2234%22%20cy=%2261%22%20r=%228%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2234%22%20cy=%2261%22%20r=%224%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Crect%20x=%2254%22%20y=%2248%22%20width=%2226%22%20height=%2211%22%20rx=%222%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2258%22%20y1=%2270%22%20x2=%2280%22%20y2=%2270%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2262%22%20cy=%2276%22%20r=%223.5%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2274%22%20cy=%2276%22%20r=%223.5%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2270%22%20y1=%2238%22%20x2=%2284%22%20y2=%2218%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpath%20d=%22M87.0,12.0%20a6,6%200%200%201%202.4,8.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpath%20d=%22M89.5,7.0%20a11,11%200%200%201%204.4,15.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpath%20d=%22M92.0,2.0%20a16,16%200%200%201%206.4,22.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/svg%3E"); }
body:not(:has(.sitenav a[href$="market.html"])) .masthead::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Ccircle%20cx=%2250%22%20cy=%2250%22%20r=%2240%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2250%22%20cy=%2250%22%20r=%2231%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2281.0%22%20y1=%2250.0%22%20x2=%2290.0%22%20y2=%2250.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2279.9%22%20y1=%2258.0%22%20x2=%2288.6%22%20y2=%2260.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2276.8%22%20y1=%2265.5%22%20x2=%2284.6%22%20y2=%2270.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2271.9%22%20y1=%2271.9%22%20x2=%2278.3%22%20y2=%2278.3%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2265.5%22%20y1=%2276.8%22%20x2=%2270.0%22%20y2=%2284.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2258.0%22%20y1=%2279.9%22%20x2=%2260.4%22%20y2=%2288.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2250.0%22%20y1=%2281.0%22%20x2=%2250.0%22%20y2=%2290.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2242.0%22%20y1=%2279.9%22%20x2=%2239.6%22%20y2=%2288.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2234.5%22%20y1=%2276.8%22%20x2=%2230.0%22%20y2=%2284.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2228.1%22%20y1=%2271.9%22%20x2=%2221.7%22%20y2=%2278.3%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2223.2%22%20y1=%2265.5%22%20x2=%2215.4%22%20y2=%2270.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2220.1%22%20y1=%2258.0%22%20x2=%2211.4%22%20y2=%2260.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2219.0%22%20y1=%2250.0%22%20x2=%2210.0%22%20y2=%2250.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2220.1%22%20y1=%2242.0%22%20x2=%2211.4%22%20y2=%2239.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2223.2%22%20y1=%2234.5%22%20x2=%2215.4%22%20y2=%2230.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2228.1%22%20y1=%2228.1%22%20x2=%2221.7%22%20y2=%2221.7%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2234.5%22%20y1=%2223.2%22%20x2=%2230.0%22%20y2=%2215.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2242.0%22%20y1=%2220.1%22%20x2=%2239.6%22%20y2=%2211.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2250.0%22%20y1=%2219.0%22%20x2=%2250.0%22%20y2=%2210.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2258.0%22%20y1=%2220.1%22%20x2=%2260.4%22%20y2=%2211.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2265.5%22%20y1=%2223.2%22%20x2=%2270.0%22%20y2=%2215.4%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2271.9%22%20y1=%2228.1%22%20x2=%2278.3%22%20y2=%2221.7%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2276.8%22%20y1=%2234.5%22%20x2=%2284.6%22%20y2=%2230.0%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2279.9%22%20y1=%2242.0%22%20x2=%2288.6%22%20y2=%2239.6%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpolygon%20points=%2250.0,34.0%2054.1,44.3%2065.2,45.1%2056.7,52.2%2059.4,62.9%2050.0,57.0%2040.6,62.9%2043.3,52.2%2034.8,45.1%2045.9,44.3%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3C/svg%3E"); }
body:not(:has(.sitenav a[href$="node.html"])) .masthead::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Crect%20x=%2216%22%20y=%2216%22%20width=%2268%22%20height=%2250%22%20rx=%225%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Crect%20x=%2222%22%20y=%2222%22%20width=%2256%22%20height=%2238%22%20rx=%222%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cpolyline%20points=%2228,30%2035,37%2028,44%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2240%22%20y1=%2244%22%20x2=%2258%22%20y2=%2244%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2228%22%20y1=%2252%22%20x2=%2262%22%20y2=%2252%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Crect%20x=%2266%22%20y=%2248%22%20width=%226%22%20height=%227%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Crect%20x=%2240%22%20y=%2266%22%20width=%2220%22%20height=%228%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Crect%20x=%2228%22%20y=%2280%22%20width=%2244%22%20height=%225%22%20rx=%222%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/svg%3E"); }
body:not(:has(.sitenav a[href$="education/index.html"])) .masthead::before { background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Crect%20x=%2214%22%20y=%2226%22%20width=%2272%22%20height=%2248%22%20rx=%226%22%20fill=%22none%22%20stroke=%22%23ffb642%22%20stroke-width=%223%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Crect%20x=%2222%22%20y=%2233%22%20width=%2256%22%20height=%2219%22%20rx=%222%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2236%22%20cy=%2262%22%20r=%227%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2236%22%20cy=%2262%22%20r=%222.2%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Ccircle%20cx=%2264%22%20cy=%2262%22%20r=%227%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%222.2%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Ccircle%20cx=%2264%22%20cy=%2262%22%20r=%222.2%22%20fill=%22%23ffb642%22%20stroke=%22none%22/%3E%3Cline%20x1=%2243%22%20y1=%2262%22%20x2=%2257%22%20y2=%2262%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2227%22%20y1=%2239%22%20x2=%2273%22%20y2=%2239%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3Cline%20x1=%2227%22%20y1=%2245%22%20x2=%2260%22%20y2=%2245%22%20stroke=%22%23ffb642%22%20fill=%22none%22%20stroke-width=%221.5%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22/%3E%3C/svg%3E"); }
/* situational Vault-Boy illustrations — decorative inline SVG, aria-hidden, line-art */
.vboy {
  float: right; width: 90px; height: auto;
  margin: 0.2rem 0 0.6rem 1.2rem; color: var(--phos);
  filter: drop-shadow(0 0 4px var(--phos-glow));
}
@media (max-width: 32rem) { .vboy { float: none; display: block; margin: 0.4rem auto 0.8rem; } }
/* wider situational scenes (figure + props) */
.vscene {
  float: right; width: 160px; height: auto;
  margin: 0.2rem 0 0.6rem 1.4rem; color: var(--phos);
  filter: drop-shadow(0 0 4px var(--phos-glow));
}
@media (max-width: 34rem) { .vscene { float: none; display: block; margin: 0.6rem auto; width: min(80%, 220px); } }
/* dormant decorative slot: per-section icons are redundant now the mascot figure carries the topic;
   keep the markup for reuse in other layouts. [hidden] (0,2,0) outranks the responsive .vboy display:block. */
.vboy[hidden], .vscene[hidden] { display: none; }
h1, h2, h3 { letter-spacing: 0.06em; text-shadow: 0 0 6px currentColor; }
h1 {
  font-size: 1.85rem;
  text-transform: uppercase;
  text-align: center;
  color: var(--phos-bright);
  text-shadow: 0 0 9px var(--phos), 0 0 2px var(--phos-bright);
  margin-block: 0.1rem 1.3rem;
}
h1::before {
  content: "RobCo Industries (TM) TermLink";
  display: block;
  font-size: 0.6rem;
  letter-spacing: 0.32em;
  color: var(--phos-dim);
  text-shadow: none;
  margin-bottom: 0.5rem;
}
h1::after { content: "_"; margin-left: 0.1em; color: var(--phos-bright); }
@media (prefers-reduced-motion: no-preference) {
  @keyframes crt-caret { 0%, 50% { opacity: 1; } 50.01%, 100% { opacity: 0; } }
  h1::after { animation: crt-caret 1.1s steps(1) infinite; }
}
h2 { font-size: 1.16rem; text-transform: uppercase; color: var(--phos-bright); margin-block: 1.6rem 0.5rem; }
h2::before { content: "▌ "; color: var(--phos); }
h3 { font-size: 1.0rem; text-transform: uppercase; color: var(--phos); margin-block: 1.2rem 0.4rem; }
h3::before { content: "» "; color: var(--phos-dim); }

/* ---- Links: select-to-invert, like a terminal list entry ---------------- */
a { color: var(--phos); text-decoration: underline; text-underline-offset: 2px; }
a:visited { color: var(--phos-dim); }
a:hover, a:focus-visible {
  background: var(--phos); color: #000;
  text-decoration: none; box-shadow: 0 0 8px var(--phos-glow);
}
:focus-visible { outline: 2px solid var(--phos-bright); outline-offset: 2px; }

/* ---- Primary nav: Pip-Boy tab strip ------------------------------------- */
.sitenav { border-block-end: 1px solid var(--phos); padding-block-end: 0.45rem; margin-block-end: 1.6rem; }
.sitenav ul { gap: 0.35rem; }
.sitenav li { flex: 1 1 0; display: flex; }      /* equal-width tabs across the full width */
.sitenav a, .sitenav [aria-current="page"] {
  flex: 1; text-align: center; padding: 0.16em 0.4em;
  text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.82rem;
  border: 1px solid transparent;
}
.sitenav a { text-decoration: none; }
.sitenav a:hover, .sitenav a:focus-visible {
  background: var(--phos-faint); color: var(--phos);
  border-color: var(--phos-dim); box-shadow: none;
}
.sitenav [aria-current="page"] {
  background: var(--phos); color: #000;
  box-shadow: 0 0 10px var(--phos-glow); font-weight: bold;
}
.sitenav [aria-current="page"]::before { content: ""; }   /* drop base "> " — the inverted block IS the cue */

/* ---- Education sub-nav: vertical terminal TOC (C5) ----------------------- */
.education { flex: 1 1 240px; margin: 0; }
.education ul { list-style: none; display: block; border-block-end: none; padding: 0; margin: 0 0 1.5rem; }
.education li { display: block; margin: 0.18rem 0; }
.education a, .education [aria-current="page"] {
  display: block; padding: 0.12em 0.5em;
  font-size: 0.92rem; text-transform: uppercase; letter-spacing: 0.06em;
  border: 1px solid transparent;
}
.education a::before, .education [aria-current="page"]::before { content: "> "; opacity: 0.6; }
.education a { color: var(--phos-dim); text-decoration: none; }
.education a:hover, .education a:focus-visible { background: var(--phos-faint); color: var(--phos); border-color: var(--phos-dim); box-shadow: none; }
.education [aria-current="page"] { background: var(--phos); color: #000; border-color: var(--phos); font-weight: bold; }

/* ---- Education home: terminal TOC + decorative mascot ------------------- */
/* Per-theme decorative-imagery pattern — see docs/design/04-render-themes.md.   */
/* The mascot ships `hidden` in shared HTML; pipboy reveals it (emblem trick).*/
.eduhome { display: flex; gap: 1.4rem; align-items: flex-start; flex-wrap: wrap; margin: 0 0 1.6rem; }
.mascot[hidden] {                 /* reveal hidden decorative figure (the emblem pattern) */
  display: block; flex: 0 0 280px; text-align: center;
  color: var(--phos); filter: drop-shadow(0 0 4px var(--phos-glow));
}
.mascot svg { width: auto; height: 420px; max-width: 100%; }
.mascot .credit { font-size: 0.7rem; color: var(--phos-dim); margin: 0.4rem 0 0; }
.mascot .credit a { color: var(--phos-dim); }
@media (max-width: 42rem) { .mascot[hidden] { display: none; } }   /* drop figure on narrow screens */
/* current-section markers are focusable (tabindex=0) so keyboard users land on "you are here" */
.sitenav [aria-current="page"]:focus-visible,
.education [aria-current="page"]:focus-visible { outline: 2px solid var(--phos-bright); outline-offset: 2px; }

/* ---- Market: sub-tabs --------------------------------------------------- */
.tabnav { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-block: 1rem 0; border-block-end: 1px solid var(--phos-dim); }
.tabnav a {
  padding: 0.22em 0.95em; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.82rem;
  border: 1px solid var(--phos-dim); border-block-end: none; color: var(--phos-dim); text-decoration: none;
}
.tabnav a:hover, .tabnav a:focus-visible { background: var(--phos-faint); color: var(--phos); box-shadow: none; }
.tab { padding-block: 0.6rem; }

/* ---- "As-of" status line ------------------------------------------------ */
.asof {
  color: var(--phos-dim); font-size: 0.8rem;
  border-inline-start: 2px solid var(--phos-dim); padding-inline-start: 0.6rem;
  margin-block: 0.8rem 1.3rem;
}
.asof::before { content: "◉ "; color: var(--phos); }

/* ---- Node: stat readout panels ------------------------------------------ */
.node-stats {
  display: grid; grid-template-columns: max-content 1fr; gap: 0.2rem 1.1rem;
  border: 1px solid var(--phos-dim); background: var(--phos-faint);
  padding: 0.7rem 0.9rem; margin-block: 0.8rem 1.5rem;
}
.node-stats dt { color: var(--phos-dim); text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.8rem; }
.node-stats dt::before { content: "› "; }
.node-stats dd { margin: 0; color: var(--phos-bright); font-variant-numeric: tabular-nums; }

/* ---- News: log entries -------------------------------------------------- */
.news-feed { list-style: none; padding: 0; margin: 0; }
.news-item {
  border: 1px solid var(--phos-dim); border-inline-start-width: 3px;
  background: var(--phos-faint); padding: 0.7rem 0.9rem; margin-block: 0.7rem;
}
.news-item:hover, .news-item:focus-within { border-color: var(--phos); box-shadow: 0 0 10px var(--phos-faint); }
.news-title { font-size: 1.0rem; text-transform: none; letter-spacing: 0; margin: 0 0 0.3rem; color: var(--phos-bright); text-shadow: none; }
.news-title::before { content: "▸ "; color: var(--phos); }
.news-title a { text-decoration: none; color: var(--phos-bright); }
.news-meta, .news-metrics { color: var(--phos-dim); font-size: 0.75rem; margin: 0.1rem 0; }
.news-metrics { opacity: 0.85; }
.news-excerpt { font-size: 0.86rem; margin: 0.35rem 0 0; color: var(--phos); }
/* pagination: inline row of Pip-Boy page buttons, not a bullet list */
.news-pagination ul { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.3rem; padding: 0; margin: 1.5rem 0; }
.news-pagination a, .news-pagination [aria-current="page"] {
  display: inline-block; min-width: 1.7em; text-align: center;
  padding: 0.15em 0.55em; font-size: 0.82rem; border: 1px solid var(--phos-dim);
}
.news-pagination a { color: var(--phos-dim); text-decoration: none; }
.news-pagination a:hover, .news-pagination a:focus-visible { background: var(--phos-faint); color: var(--phos); box-shadow: none; }
.news-pagination [aria-current="page"] { background: var(--phos); color: #000; border-color: var(--phos); box-shadow: 0 0 8px var(--phos-glow); }
.news-disclaimer { margin-block: 1.8rem 0; padding-block-start: 0.9rem; border-block-start: 1px solid var(--phos-dim); font-size: 0.76rem; color: var(--phos-dim); }

/* ---- Data tables (market) — 8 cols overrun the column, so let them scroll */
table:not(.charts-css) { display: block; overflow-x: auto; max-width: 100%; border-collapse: collapse; font-size: 0.78rem; margin-block: 0.7rem 1.4rem; }
table:not(.charts-css) th, table:not(.charts-css) td { white-space: nowrap; }
table:not(.charts-css) caption { text-align: start; text-transform: uppercase; letter-spacing: 0.07em; color: var(--phos-bright); padding-bottom: 0.3rem; }
table:not(.charts-css) th { text-align: start; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.04em; color: var(--phos-dim); border-block-end: 1px solid var(--phos-dim); padding: 0.25rem 0.45rem; }
table:not(.charts-css) td { padding: 0.22rem 0.45rem; border-block-end: 1px solid var(--phos-faint); font-variant-numeric: tabular-nums; }
table:not(.charts-css) tr:hover td { background: var(--phos-faint); }
table:not(.charts-css) tr.summary td { border-block-start: 1px solid var(--phos); color: var(--phos-bright); font-weight: bold; }

/* ---- Charts: amber bars, phosphor glow, monochrome lines ---------------- */
.charts-css caption, .node-chart figcaption {
  display: block; width: 100%;   /* the chart tables are display:block, which shrink-wraps a table-caption */
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--phos-bright);
}
.charts-css.column tbody { border-block-end-color: var(--phos); }
.charts-css.column td { --bar-color: var(--phos); background: var(--phos); box-shadow: 0 0 7px var(--phos-glow); }
.charts-css.column .data { color: #000; }
.charts-css.bar td.bar { background: var(--phos-faint); box-shadow: inset 0 0 0 1px var(--phos-dim); }   /* meter track */
.charts-css.bar td.bar::before { background: var(--phos); box-shadow: 0 0 6px var(--phos-glow); }
.charts-css.bar td.val { color: var(--phos-bright); }

/* monochrome discipline: one phosphor gun renders every source as an amber luminance step */
.history-chart .charts-css.line.src-bitfinex  td::before { background: #ffd89b; }
.history-chart .charts-css.line.src-kraken    td::before { background: #ffb642; }
.history-chart .charts-css.line.src-coinbase  td::before { background: #d9962f; }
.history-chart .charts-css.line.src-binance   td::before { background: #a06a1d; }
.history-chart .charts-css.line.src-coingecko td::before { background: #6e4a14; }
.history-chart .charts-css.area td::before { background: linear-gradient(rgba(255,182,66,0.30), rgba(255,182,66,0)); }
.history-chart .charts-css.column td { background: var(--phos-dim); }
.node-plot .charts-css.line.ds-1 td::before { background: var(--phos); }
.node-plot .charts-css.line.ds-2 td::before { background: var(--phos-dim); }
.history-chart .primary-axis, .history-chart .data-1-axis, .history-chart .data-2-axis, .node-axis { color: var(--phos-dim); }

/* keep every chart inside the reading column (history-chart's 44rem overran ~40rem) */
.charts-css.column, .charts-css.bar, .history-chart, .node-chart, .node-plot { max-width: 100%; }

/* axis legend: wrap each "YYYY-MM-DD HH:MM" at its space so the time sits under the date */
.node-axis { font-size: 0.66rem; gap: 0.2rem; }
.node-axis span { flex: 0 1 auto; width: 4.6rem; text-align: center; white-space: normal; line-height: 1.2; }
.node-axis span:first-child { text-align: start; }
.node-axis span:last-child  { text-align: end; }

/* ---- Targeting-reticle corners on chart panels -------------------------- */
.history-chart, .node-chart { position: relative; }
.history-chart::before, .node-chart::before,
.history-chart::after,  .node-chart::after {
  content: ""; position: absolute; width: 14px; height: 14px;
  border-color: var(--phos); border-style: solid; pointer-events: none;
}
.history-chart::before, .node-chart::before { top: -6px; inset-inline-start: -8px; border-width: 2px 0 0 2px; }
.history-chart::after,  .node-chart::after  { bottom: -6px; inset-inline-end: -8px; border-width: 0 2px 2px 0; }

/* ---- Timeline (Education) — Linux man-page: running header + [NN] section heads --- */
ol.timeline { counter-reset: ms; list-style: none; position: relative; padding-inline-start: 0; }
ol.timeline::before {                      /* man-page running header (replaces base rail) */
  content: "ZCASH-HISTORY(7)                          A TIMELINE OF ZCASH                          ZCASH-HISTORY(7)";
  position: static; width: auto; height: auto; background: none; border-radius: 0; box-shadow: none; opacity: 1;
  display: block; white-space: pre; overflow: hidden; text-align: center;
  color: var(--phos-dim); font-size: 0.74rem; letter-spacing: 0.01em;
  border-bottom: 1px solid rgba(255,182,66,0.25); padding-bottom: 0.35rem; margin-bottom: 1.25rem;
}
ol.timeline > li::before { content: none; display: none; }   /* no node diamond (replaces base) */
ol.timeline > li { counter-increment: ms; position: relative; background: none; border: none; box-shadow: none;
  padding: 0 0 0 6ch; margin: 0 0 1.4rem; }                    /* hanging indent */
ol.timeline > li > p { margin: 0; }
ol.timeline > li > p > strong:first-child { display: block; margin-left: -6ch; color: var(--phos-bright);
  text-transform: uppercase; letter-spacing: 0.03em; margin-bottom: 0.2rem; }
ol.timeline > li > p > strong:first-child::before { content: "[" counter(ms, decimal-leading-zero) "]  "; color: var(--phos); font-weight: normal; }
@media (prefers-reduced-motion: no-preference) {
  ol.timeline > li > p > strong:first-child, ol.timeline > li > p > strong:first-child::before { transition: color .2s ease, text-shadow .2s ease; }
}
ol.timeline > li:hover > p > strong:first-child, ol.timeline > li:focus-within > p > strong:first-child, ol.timeline > li:target > p > strong:first-child {
  color: #fff; text-shadow: 0 0 8px var(--phos-glow), 0 0 2px var(--phos-bright);
}
ol.timeline > li:hover > p > strong:first-child::before, ol.timeline > li:focus-within > p > strong:first-child::before, ol.timeline > li:target > p > strong:first-child::before {
  color: var(--phos-bright); text-shadow: 0 0 8px var(--phos-glow);
}

/* ---- CSS-only value tooltips: reveal the sr-only .data on point hover ---- */
.history-chart .charts-css td:hover > .data,
.node-plot .charts-css td:hover > .data {
  position: absolute; left: 50%; bottom: 100%;
  width: auto; height: auto; margin: 0; padding: 0.08rem 0.3rem;
  overflow: visible; clip-path: none; transform: translate(-50%, -3px);
  background: #000; color: var(--phos); border: 1px solid var(--phos);
  font-size: 0.62rem; line-height: 1.3; white-space: nowrap;
  box-shadow: 0 0 6px var(--phos-glow); z-index: 6; pointer-events: none;
}

/* ---- Prose -------------------------------------------------------------- */
p { margin-block: 0.8rem; }
ul { list-style: square; padding-inline-start: 1.4rem; }
li::marker { color: var(--phos-dim); }
strong { color: var(--phos-bright); }
code {
  font-family: inherit; background: var(--phos-faint);
  border: 1px solid var(--phos-dim); border-radius: 2px;
  padding: 0 0.25em; color: var(--phos-bright);
}

/* ---- Footer: display-mode picker + Fallout "caps" seal ------------------ */
.themepicker {
  position: relative; box-sizing: border-box; width: 100%;
  margin-block-start: 2.6rem; padding-block-start: 1.1rem;
  border-block-start: 1px solid var(--phos-dim);
  display: flex; flex-wrap: wrap; gap: 0.4rem;
  padding-block-end: 4.6rem;            /* reserve room for the absolutely-positioned cap seal below */
}
.themepicker::before {
  content: "Select display mode";
  flex-basis: 100%; display: block;
  text-transform: uppercase; letter-spacing: 0.2em; font-size: 0.64rem; color: var(--phos-dim);
  margin-bottom: 0.6rem;
}
.themepicker a {
  flex: 1 1 0; text-align: center;
  margin: 0; padding: 0.3em 0.4em;
  font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em;
  border: 1px solid var(--phos-dim); color: var(--phos-dim); text-decoration: none;
}
.themepicker a:hover, .themepicker a:focus-visible { background: var(--phos-faint); color: var(--phos); box-shadow: none; }
.themepicker a.t-pipboy { background: var(--phos); color: #000; border-color: var(--phos); box-shadow: 0 0 8px var(--phos-glow); }
.themepicker::after {                       /* bottle-cap seal — taken out of flex flow so it is NOT stretched and NOT pulled into the chip row */
  content: ""; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  width: 44px; height: 44px; margin: 0; border-radius: 50%;
  background:
    radial-gradient(circle, var(--phos-bright) 0 12%, transparent 13%),
    radial-gradient(circle, var(--phos) 0 66%, transparent 67%),
    repeating-conic-gradient(var(--phos) 0 11deg, #1a1000 11deg 22deg);
  box-shadow: 0 0 0 2px var(--phos-dim), 0 0 12px var(--phos-glow);
}
.figure-credit[hidden] { display: block; margin: 1.8rem 0 0; padding-top: 0.5rem; border-top: 1px solid var(--phos-dim); font-size: 0.7rem; color: var(--phos); }
.figure-credit a { color: inherit; }
@media (max-width: 42rem) { .figure-credit[hidden] { display: none; } }
.home-hero .tagline::after { content: "_"; opacity: 0.8; }
.home-sections { display: block; }
.home-sections > li { border: 0; border-radius: 0; padding: 0; margin-block: 0.75rem; }
.home-sections > li:first-child { margin-block-start: 0; }
.home-sections h3 { letter-spacing: 0.04em; }
.home-sections h3::before { content: "> "; }
.home-sections .sec-desc { padding-left: 1.7ch; opacity: 0.78; }
/* footer (ZS-221) — amber-phosphor monospace divided cells */
.netfooter { font-family: ui-monospace, "Cascadia Mono", "DejaVu Sans Mono", monospace; color: var(--phos); text-shadow: 0 0 6px var(--phos-glow); border-top: 1px solid var(--phos-dim); margin-top: 2.5rem; padding-top: 0.6rem; }
.netaddr { text-transform: uppercase; letter-spacing: 0.08em; }
.netaddr a { color: var(--phos-bright); text-shadow: 0 0 6px var(--phos-glow); }
.netaddr li + li { border-left: 1px solid var(--phos-faint); }
.nf-source { text-transform: uppercase; letter-spacing: 0.1em; opacity: 0.7; }
.nf-source a { color: var(--phos-dim); text-shadow: none; }
