/* Suppress the CLI's default metadata frontmatter render — we set the page <title> via docast.metadata; we don't want it duplicated as a visible body frontmatter card. */
dl.metadata{display:none!important}
/* Design tokens — dark theme palette + theme-icon HSL tuning vars consumed by every typed-visual renderer (thesis icons, condition graphs, mini-timelines, etc.). The hue per token comes from each instance's data; saturation/lightness centralized here so a future light-mode override flips the whole site at once. */
:root{
  --bg:#0a0e1a;--bg-card:#0f1524;--bg-elev:#1a2233;--bg-input:#0c1220;
  --fg:#e6eaf2;--fg-dim:#9aa5b8;--fg-faint:#6b7689;
  --accent:#7dd3fc;--accent-2:#38bdf8;--accent-3:#0ea5e9;
  --strong:#34d399;--moderate:#fbbf24;--weak:#64748b;--danger:#f87171;
  --border:#1e293b;--border-soft:#162033;
  --radius:8px;--radius-sm:4px;
  --font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --font-mono:'SF Mono',ui-monospace,Consolas,Menlo,monospace;
  --font-display:'Iowan Old Style','Palatino Linotype',Palatino,'URW Palladio L',serif;
  --theme-arc-saturation:60%;
  --theme-arc-lightness:62%;
  --theme-ring-saturation:28%;
  --theme-ring-lightness:26%;
  --theme-fill-saturation:55%;
  --theme-fill-lightness:18%;
  /* Protocol-level theme bridge — see kanonak.org/universal-derivations@1.7.0#any-resource-stylesheet. A Kanonak Browser host can rebind any of these in its outer stylesheet to retheme without overriding worldview's selectors. */
  --kan-link-color:var(--accent);
  --kan-link-hover-color:var(--accent-2);
  --kan-text-color:var(--fg);
  --kan-muted-color:var(--fg-dim);
  --kan-border-color:var(--border);
  --kan-badge-bg:rgba(125,211,252,0.10);
  --kan-badge-fg:var(--accent);
  --kan-table-header-bg:var(--bg-elev)
}
/* Reset */
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg)}
/* Override the CLI's default light-theme body wrapper (max-width:860px;margin:2rem auto;padding:0 1rem) so our sticky nav can span the full viewport. The article inside has its own max-width centering. */
body{color:var(--fg)!important;font-family:var(--font-sans)!important;line-height:1.55!important;font-size:15px!important;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;max-width:none!important;margin:0!important;padding:0!important}
/* Links */
a{color:var(--accent);text-decoration:none;transition:color 120ms}
a:hover{color:var(--accent-2)}
/* Site nav — sticky, full-bleed, blurred translucent background */
nav.site-nav{background:rgba(15,21,36,0.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:14px 32px;position:sticky;top:0;z-index:10}
/* Anchor-link scroll offset — accounts for the sticky nav so #thesis-X / #any-id lands below the nav with breathing room. Doubles on mobile where the nav wraps to two rows. */
[id]{scroll-margin-top:80px}
@media (max-width:600px){[id]{scroll-margin-top:120px}}
.site-nav-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;gap:32px;flex-wrap:wrap}
a.site-nav-brand{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--accent);font-weight:600}
ul.site-nav-links{display:flex;gap:24px;list-style:none;padding:0;margin:0 0 0 auto}
ul.site-nav-links a{font-size:11px;color:var(--fg-dim);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:0.1em;font-weight:500}
ul.site-nav-links a:hover{color:var(--fg)}
ul.site-nav-links a.active{color:var(--fg)}
@media (max-width:600px){nav.site-nav{padding:12px 20px}.site-nav-inner{gap:16px}ul.site-nav-links{gap:16px;margin-left:0;flex-basis:100%}}
/* Prose paragraph preservation — temporary stand-in for the protocol-level prose property type tracked in kanonak-protocol/typescript#20. Authors put `\n\n` between paragraphs in YAML literal-block scalars; HTML collapses whitespace runs into single spaces by default, so without this rule multi-paragraph prose renders as one wall of text. `pre-line` preserves authored newlines while still letting words wrap. Selectors enumerate every prose class used across this publisher's transformations; new prose-bearing classes should be added here so paragraph rendering stays consistent. */
.hero-narrative,.thesis-statement,.confidence-rationale,.change-rationale,.lead,.invalidation > p,.prose{white-space:pre-line}
/* ===== 2.1.0 distributional / source-aware visual primitives ===== */
/* Beta density curves - filled with theme color at low opacity, stroked at higher */
.viz-beta-density{display:block;width:100%;height:60px}
.viz-beta-density .density-fill{fill:hsl(var(--viz-hue,200),65%,55%);fill-opacity:0.18}
.viz-beta-density .density-stroke{fill:none;stroke:hsl(var(--viz-hue,200),65%,55%);stroke-width:1.5;stroke-opacity:0.9}
.viz-beta-density .density-mean{stroke:hsl(var(--viz-hue,200),65%,75%);stroke-width:1.6;stroke-dasharray:none}
.viz-beta-density .density-ci-band{fill:hsl(var(--viz-hue,200),65%,55%);fill-opacity:0.10}
.viz-beta-density .density-iqr-band{fill:hsl(var(--viz-hue,200),65%,55%);fill-opacity:0.18}
.viz-beta-density .density-axis{stroke:var(--border);stroke-width:1}
.viz-beta-density text{fill:var(--fg-faint);font-size:9px;font-family:var(--font-mono);letter-spacing:0.05em}
/* Fan band charts - for cross-snapshot trajectories */
.viz-fan-chart{display:block;width:100%}
.viz-fan-chart .fan-ci95{fill:hsl(var(--viz-hue,200),60%,55%);fill-opacity:0.15}
.viz-fan-chart .fan-iqr{fill:hsl(var(--viz-hue,200),60%,55%);fill-opacity:0.32}
.viz-fan-chart .fan-median{fill:none;stroke:hsl(var(--viz-hue,200),65%,62%);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.viz-fan-chart .fan-axis{stroke:var(--border);stroke-width:1}
.viz-fan-chart .fan-grid{stroke:var(--border-soft);stroke-width:1;stroke-dasharray:2 3}
.viz-fan-chart text{fill:var(--fg-faint);font-size:10px;font-family:var(--font-mono);letter-spacing:0.05em}
.viz-fan-chart text.fan-thesis-label{fill:var(--fg-dim);font-size:10px}
/* Source chips - colored by sourceHue */
.src-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:10px;font-family:var(--font-mono);font-size:10px;letter-spacing:0.04em;background:hsl(var(--src-hue,200),50%,18%);color:hsl(var(--src-hue,200),60%,80%);border:1px solid hsl(var(--src-hue,200),40%,30%)}
.src-chip-dot{width:6px;height:6px;border-radius:50%;background:hsl(var(--src-hue,200),65%,55%)}
/* Bayesian forest plot - evidence as horizontal strips */
.viz-forest{display:block;width:100%;background:var(--bg-card);border:1px solid var(--border-soft);border-radius:6px;padding:14px 18px;margin:8px 0}
.viz-forest .forest-strip{cursor:pointer;transition:opacity 120ms}
.viz-forest .forest-strip:hover{opacity:0.85}
.viz-forest .forest-strip-bg{fill:var(--bg-elev);fill-opacity:0.5}
.viz-forest .forest-strip-fill{fill-opacity:0.7}
.viz-forest .forest-strip-label{fill:var(--fg-dim);font-size:10px;font-family:var(--font-mono)}
.viz-forest .forest-posterior-bg{fill:var(--bg-elev);fill-opacity:0.6}
.viz-forest .forest-posterior-curve{fill:hsl(var(--viz-hue,200),65%,55%);fill-opacity:0.35;stroke:hsl(var(--viz-hue,200),65%,68%);stroke-width:1.5}
.viz-forest .forest-divider{stroke:var(--border);stroke-width:1;stroke-dasharray:2 3}
.viz-forest .forest-source-bubble{cursor:pointer;transition:fill-opacity 120ms,stroke-opacity 120ms}
.viz-forest .forest-source-bubble:hover{fill-opacity:0.65;stroke-opacity:1}
.viz-forest text.forest-section-label{fill:var(--fg-faint);font-size:10px;font-family:var(--font-mono);letter-spacing:0.18em;text-transform:uppercase}
/* Source diversity sunburst */
.viz-sunburst{display:block;margin:0 auto}
.viz-sunburst .sunburst-arc{stroke:var(--bg-card);stroke-width:1.5;transition:opacity 120ms}
.viz-sunburst .sunburst-arc:hover{opacity:0.85}
.viz-sunburst .sunburst-center{fill:var(--fg);font-family:var(--font-mono);font-weight:700;text-anchor:middle;dominant-baseline:central}
.viz-sunburst .sunburst-center-sub{fill:var(--fg-faint);font-family:var(--font-mono);font-size:9px;text-anchor:middle;letter-spacing:0.1em}
/* Source network graph */
.viz-network{display:block;width:100%;background:var(--bg-card);border:1px solid var(--border-soft);border-radius:8px}
.viz-network .network-edge{stroke:var(--border);stroke-width:1;stroke-opacity:0.35}
.viz-network .network-node{stroke:var(--bg-card);stroke-width:2;cursor:pointer;transition:stroke-width 120ms}
.viz-network .network-node:hover{stroke-width:3.5;stroke:var(--fg)}
.viz-network .network-halo{fill:none;stroke-width:1.5}
.viz-network text.network-label{fill:var(--fg-dim);font-family:var(--font-mono);font-size:9px;text-anchor:middle;pointer-events:none}
/* Trust-reach scatter */
.viz-scatter{display:block;width:100%;background:var(--bg-card);border:1px solid var(--border-soft);border-radius:8px;padding:18px}
.viz-scatter .scatter-axis{stroke:var(--border);stroke-width:1}
.viz-scatter .scatter-grid{stroke:var(--border-soft);stroke-width:1;stroke-dasharray:2 3}
.viz-scatter .scatter-errorbar{stroke-width:1.5;stroke-opacity:0.55}
.viz-scatter .scatter-point{stroke:var(--bg-card);stroke-width:1.5;cursor:pointer}
.viz-scatter text{fill:var(--fg-faint);font-family:var(--font-mono);font-size:10px}
.viz-scatter text.scatter-axis-label{fill:var(--fg-dim);font-size:11px;text-transform:uppercase;letter-spacing:0.12em}
/* Condition tree */
.viz-condition-tree{font-family:var(--font-mono);font-size:12px;background:var(--bg-card);border:1px solid var(--border-soft);border-radius:6px;padding:14px 18px;margin:8px 0;line-height:1.6}
.viz-condition-tree .cond-node{display:block;margin:2px 0}
.viz-condition-tree .cond-operator{color:var(--accent);font-weight:600;letter-spacing:0.05em}
.viz-condition-tree .cond-children{margin-left:20px;border-left:1px dashed var(--border-soft);padding-left:14px}
.viz-condition-tree .cond-prop{color:var(--fg-dim)}
.viz-condition-tree .cond-val{color:var(--fg)}
.viz-condition-tree .cond-leaf{color:var(--fg)}
.viz-condition-tree .cond-status{display:inline-block;padding:1px 6px;border-radius:3px;margin-left:8px;font-size:9px;letter-spacing:0.1em;text-transform:uppercase;font-weight:600}
.viz-condition-tree .cond-status-satisfied{background:rgba(248,113,113,0.15);color:var(--danger)}
.viz-condition-tree .cond-status-partial{background:rgba(251,191,36,0.15);color:var(--moderate)}
.viz-condition-tree .cond-status-unsatisfied{background:rgba(52,211,153,0.15);color:var(--strong)}
.viz-condition-tree .cond-status-unknown{background:rgba(100,116,139,0.15);color:var(--fg-faint)}
/* Falsifiability badge */
.falsif-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;background:var(--bg-elev);border:1px solid var(--border-soft);border-radius:14px;font-family:var(--font-mono);font-size:11px;color:var(--fg-dim);letter-spacing:0.04em}
.falsif-badge .falsif-score{color:var(--fg);font-weight:600}
/* Effective-n badge */
.n-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:rgba(125,211,252,0.08);border:1px solid rgba(125,211,252,0.2);border-radius:10px;font-family:var(--font-mono);font-size:10px;color:var(--accent);letter-spacing:0.04em}
/* Regime fingerprint - violin row on snapshot cards */
.viz-fingerprint{display:flex;gap:2px;align-items:flex-end;height:80px;padding:4px}
.viz-fingerprint .violin-cell{flex:1;height:100%;display:flex;align-items:flex-end;justify-content:center}
.viz-fingerprint .violin-svg{display:block;width:100%;height:100%}
/* Theme radar */
.viz-theme-radar{display:block;margin:0 auto}
.viz-theme-radar .radar-axis{stroke:var(--border-soft);stroke-width:1}
.viz-theme-radar .radar-petal{fill-opacity:0.45;stroke-width:1.5}
.viz-theme-radar text{fill:var(--fg-dim);font-family:var(--font-mono);font-size:10px;text-anchor:middle}
/* Conviction-vs-evidence scatter */
.viz-conviction-scatter{display:block;width:100%;background:var(--bg-card);border:1px solid var(--border-soft);border-radius:8px;padding:18px}
.viz-conviction-scatter .conviction-point{cursor:pointer;stroke:var(--bg-card);stroke-width:1.5;transition:r 120ms}
.viz-conviction-scatter .conviction-point:hover{r:14}
.viz-conviction-scatter text{fill:var(--fg-faint);font-family:var(--font-mono);font-size:10px}
.viz-conviction-scatter .conviction-quadrant-label{fill:var(--fg-faint);font-size:9px;letter-spacing:0.1em;text-transform:uppercase;opacity:0.6}
/* Source mix heatmap */
.viz-source-mix{display:block;width:100%}
.viz-source-mix .mix-cell{stroke:var(--bg);stroke-width:1.5}
.viz-source-mix text{fill:var(--fg-dim);font-family:var(--font-mono);font-size:10px}
.viz-source-mix text.mix-label{font-size:9px}
/* Days-to-decision calendar */
.viz-calendar{display:block;width:100%}
.viz-calendar .cal-cell{fill:var(--bg-elev);stroke:var(--bg);stroke-width:1}
.viz-calendar .cal-event{stroke-width:1.5;cursor:pointer}
.viz-calendar text{fill:var(--fg-dim);font-family:var(--font-mono);font-size:9px}


article.sources{max-width:1280px;margin:0 auto;padding:48px 32px 96px}
.sources header.intro{padding:0 0 32px;border-bottom:1px solid var(--border);position:relative;margin-bottom:32px}
.sources header.intro::before{content:"";position:absolute;top:-12px;left:0;width:48px;height:2px;background:var(--accent)}
.sources .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--accent);margin-bottom:16px;display:block}
.sources h1{font-family:var(--font-display);font-size:40px;font-weight:400;letter-spacing:-0.02em;line-height:1.1;color:var(--fg);margin-bottom:20px}
@media (max-width:760px){.sources h1{font-size:30px}}
.sources .lead{font-size:16px;line-height:1.65;color:var(--fg-dim);font-weight:300;max-width:780px}
.sources .section-title{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:0.18em;color:var(--fg-dim);margin:36px 0 16px;display:flex;align-items:center;gap:12px}
.sources .section-title::after{content:"";flex:1;height:1px;background:var(--border)}
.sources .section-lead{font-size:13px;color:var(--fg-faint);line-height:1.55;margin:0 0 18px;max-width:760px}
.network-host{min-height:640px}
.scatter-host{min-height:440px}
.sources-footer{margin-top:64px;padding-top:24px;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:0.04em;display:flex;gap:24px;flex-wrap:wrap}
.sources-footer a{color:var(--fg-dim);text-decoration:none;border-bottom:1px dotted var(--border)}
.sources-footer a:hover{color:var(--fg);border-bottom-color:var(--accent)}
