:root{
 color-scheme:light;
 /* Landing palette (user decision 2026-11-03, matching /Users/jad/telltale-landing site.css): warm paper and ink.
  * Ink is the interface colour (buttons, the selected item, links, focus). Telltale red is the brand signature (logo and
  * tiny brand marks only); clay is brand warmth (illustrations, empty states, the report cover, the sign-in panel, the
  * trial line, one highlight in a non-verdict chart). Neither is ever a button or a status. Verdict colours stay the only
  * colour in data. Muted text is checked on all surfaces (test/token-contrast.test.js). */
 --ink:#161615;--ink-2:#35352f;--blue:var(--h-800);--line:#deddd8;--line-strong:#c5c1b7;--muted:#65625d;--faint:#65625d;
 --signature:#ea3325;--signature-ink:#bd3024;
 --clay:#a6422e;--clay-soft:#f3e3dd;--clay-wash:#faf2ee;
 --brand-ink:var(--clay);--brand-soft:var(--clay-soft);
 /* Boundaries of interactive controls (inputs, selects, secondary buttons, switch track): at least 3:1 on every surface. */
 --control-line:#817c72;
 --bg:#fefefe;--surface:#fefefe;--surface-2:#f4f2ed;--surface-3:#f1efe8;--sidebar:#f5f4f0;
 /* The interface ramp (formerly Harbour): warm neutrals to ink. 50 is the landing wash, 200 its line, 800 its ink. */
 --h-50:#f5f4f0;--h-100:#ebe9e3;--h-200:#deddd8;--h-300:#aeaa9f;--h-400:#8f8b82;--h-500:#716e67;--h-600:#54524d;--h-700:#363531;--h-800:#161615;--h-900:#0b0b0a;
 --accent:var(--h-800);--accent-hover:#33322e;--accent-ink:var(--h-800);--accent-mark:var(--h-600);--accent-line:var(--line-strong);--accent-wash:var(--h-50);
 --on-accent:#fff;--accent-soft:var(--h-100);--focus:var(--h-800);--scrim:rgb(0 0 0/.32);
 /* Washes: a tinted region says why it is tinted (one answer band per page, status callouts, the agent row in a timeline). */
 --human-wash:#f2f9f5;--agent-wash:#f3f6fe;--unknown-wash:#fff8e6;--brand-wash:var(--clay-wash);--good-wash:#f4f2ed;
 /* Non-verdict magnitude: the warm ordinal ramp, light to dark (charts that are not verdicts); clay is the one highlight. */
 --ord-1:var(--h-300);--ord-2:var(--h-400);--ord-3:var(--h-500);--ord-4:var(--h-600);--ord-5:var(--h-700);
 --shadow-1:0 1px 2px rgb(0 0 0/.18);
 --shadow-2:0 12px 32px -8px rgb(0 0 0/.16),0 2px 6px rgb(0 0 0/.05);
 /* Verdicts. Fill + text + glyph; each text colour passes 4.5:1 on its fill. */
 --human-fg:#1d6b45;--human-bg:#e6f4ec;--human-mark:#1f8a55;
 --agent-fg:#1f4fd1;--agent-bg:#e8eefe;--agent-mark:#2d62ef;
 /* Marks are graphics: each passes 3:1 on the surfaces (Unknown #b07a00 is 3.73:1 on white). */
 --unknown-fg:#7a4f00;--unknown-bg:#fff3d6;--unknown-mark:#b07a00;--unknown-line:#8a5c00;
 /* Attribution strength is a neutral text chip: shape and word carry it, not colour. */
 --signed-fg:#000;--signed-bg:#fff;--signed-line:#858585;
 --weak-fg:#404040;--weak-bg:#f5f5f5;--weak-line:#d4d4d4;
 --unattr-fg:#525252;--unattr-line:#a3a3a3;
 /* One colour per meaning (2026-10-26). Green is Human only, amber is Unknown only. Allowed / done / on is neutral ink with a
  * check; Held / waiting for a person is fuchsia with a clock; a warning is neutral (dark grey alert icon + word, 2026-10-27); Denied / failed is red.
  * Status always carries its icon and word. Marks pass 3:1 on white; text passes 4.5:1 on its fill. */
 --good:#404040;--good-bg:#f0f0f0;
 --held-fg:#86198f;--held-bg:#fbeefc;--held-line:#e9b0ef;--held-mark:#a21caf;
 --warn-fg:#262626;--warn-bg:#f5f5f5;--warn-line:#d4d4d4;--warn-mark:#262626;
 --danger:#c4272c;--danger-bg:#fdeded;--danger-line:#f1b2b4;
 --mixed-mark:#5c5c5c;
 /* Warm greys for neutral magnitude; non-verdict ordinal series use --ord-*. */
 --seq-0:#f5f4f0;--seq-1:#deddd8;--seq-2:#bdb9b0;--seq-3:#8f8b82;--seq-4:#5c5a54;--seq-5:#262523;
 --bar:#54524d;--grid:#ebe9e3;
 --radius-s:6px;--radius-m:8px;--radius-l:12px;
 --font:ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--mono:ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,monospace;
 --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
 /* Short and functional: 150 ms hover and row highlight, 200 ms drawer, 120 ms command menu and press. */
 --dur-press:120ms;--dur-fast:150ms;--dur-base:200ms;--dur-drawer:200ms;--dur-menu:120ms;
}
/* The public accuracy page (/accuracy, src/accuracy-page.js). Served after the landing-palette tokens (the light :root block of
 * public/style.css §1), so every colour here is a token. Light only. Verdict colours are the only colour in data:
 * AI agent blue (high solid, medium the lighter step), Unknown amber, Human green; ink and warm neutrals for the page itself. */
:root{--agent-medium:#7b98f3}/* medium confidence: the lighter agent step (ordinal pair with --agent-mark, validated) */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 var(--font);font-feature-settings:"kern"}
a{color:var(--accent-ink);text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:3px}
a:hover{text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}
code,pre{font-family:var(--mono);font-size:.875em}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em;text-wrap:balance}
p{margin:0}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--accent);color:var(--on-accent);padding:8px 12px;border-radius:var(--radius-s);z-index:2}
.skip:focus{top:12px}
.muted{color:var(--muted)}

/* Page frame. */
.top,main,.foot{max-width:1120px;margin:0 auto;padding-left:16px;padding-right:16px}
@media (min-width:720px){.top,main,.foot{padding-left:32px;padding-right:32px}}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:20px;padding-bottom:20px;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:600;text-decoration:none}
.top nav{display:flex;gap:20px;font-size:14px;flex-wrap:wrap}
/* Polish 2026-11-05: on phones the two file links live in the footer only, so the header stays one row. */
@media (max-width:639px){.top .top-file{display:none}}

/* Answer band: the one tinted region, holding the headline and the page's lead chart. */
.band{background:var(--accent-wash);border:1px solid var(--line);border-radius:var(--radius-l);padding:28px 20px 24px;margin-bottom:8px}
@media (min-width:720px){.band{padding:48px 48px 36px}}
.kicker{color:var(--accent-ink);font-size:14px;font-weight:500;margin-bottom:20px}
.headline{display:grid;gap:6px;font-weight:600}
.hl-row{display:grid;grid-template-columns:1fr;align-items:baseline;column-gap:24px}
.hl-num{font-size:clamp(64px,13vw,136px);line-height:.92;letter-spacing:-.045em;color:var(--ink)}
.hl-words{font-size:clamp(20px,2.6vw,30px);line-height:1.2;letter-spacing:-.015em;color:var(--ink-2);font-weight:500;margin-top:4px}
@media (min-width:720px){.headline{grid-template-columns:auto 1fr;column-gap:24px;row-gap:2px;align-items:baseline}.hl-row{display:contents}.hl-num{text-align:right}.hl-words{margin-top:0;padding-bottom:.18em}}
.smallprint{margin-top:14px;max-width:70ch;color:var(--muted);font-size:14px}
.caveat{margin-top:22px;max-width:62ch;color:var(--ink-2);font-size:16px}
.hero-fig{margin:32px 0 0}
.hero-fig .stack{display:block}

/* Figures. */
figure{margin:0}
.fig-cap{font-size:14px;color:var(--muted);margin-bottom:10px}
.legend{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 20px;font-size:14px;color:var(--ink-2)}
.legend li{display:inline-flex;align-items:center;gap:7px}
.legend-top{margin:0 0 14px}
.g{flex:none}
.g-high,.g-agent{fill:var(--agent-mark)}
.g-medium{fill:var(--agent-medium)}
.g-unknown{fill:var(--unknown-mark);stroke:var(--unknown-line);stroke-width:1}
.g-human{fill:var(--human-mark)}

/* Stacked bars: parts drawn with a 2 px surface stroke, which is the gap between parts. */
.stack{display:block;overflow:visible}
.stack rect{stroke:var(--surface);stroke-width:2}
.band .stack rect{stroke:var(--accent-wash)}
.s-high{fill:var(--agent-mark)}
.s-medium{fill:var(--agent-medium)}
.s-unknown{fill:var(--unknown-mark)}
.s-human{fill:var(--human-mark)}
.seg-label{font:600 13px/1 var(--font);pointer-events:none}
.band .seg-label{font-size:14px}
.s-high-label{fill:#fff}
.s-medium-label{fill:var(--ink)}
.s-unknown-label{fill:var(--ink)}

/* Sections: the answer in words on the left, the figure on the right; stacked on phones. */
.sec{display:grid;gap:20px;padding:44px 0;border-top:1px solid var(--line)}
.band+.sec{border-top:0}
@media (min-width:960px){.sec{grid-template-columns:minmax(0,1fr) minmax(0,1.85fr);gap:56px;padding:64px 0}}
.sec-text{display:grid;gap:14px;align-content:start;max-width:60ch}
.sec-text h2{font-size:24px;line-height:1.2}
.sec-text p{color:var(--ink-2)}
.big-line{font-size:22px;line-height:1.3;color:var(--ink)!important}
.big-line b{font-weight:600}
.sec-fig{min-width:0}
.sec h3{font-size:16px;margin:28px 0 8px}

/* Per-agent ranked bars. */
.axis,.ag-row{display:grid;grid-template-columns:120px minmax(0,1fr) 104px;align-items:center;column-gap:14px}
.axis{font-size:12px;color:var(--muted);margin-bottom:4px}
.axis-scale{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:4px;font-variant-numeric:tabular-nums}
.axis-rate{text-align:right}
.ag-list{list-style:none;margin:0;padding:0}
.ag-row{padding:9px 0;border-bottom:1px solid var(--grid)}
.ag-name{font-size:15px;font-weight:500}
.ag-rate{text-align:right;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ag-rate b{font-size:16px;font-weight:600;display:block;line-height:1.2}
.ag-rate .muted{font-size:12px}
@media (max-width:519px){.axis,.ag-row{grid-template-columns:minmax(0,1fr) 84px}.ag-row .ag-name{grid-column:1/-1;margin-bottom:4px}.ag-row .stack{grid-column:1}.ag-row .ag-rate{grid-column:2}.axis>span:first-child{display:none}}

/* Unit charts: one mark per person or run. */
.units{display:block;width:100%;height:auto}
.u-high,.u-agent{fill:var(--agent-mark)}
.u-medium{fill:var(--agent-medium)}
.u-unknown{fill:var(--unknown-mark)}
.u-human{fill:var(--human-mark)}
.units-people{max-width:560px}

/* Disguised agents across versions. */
.hist-list{list-style:none;margin:0;padding:0}
.hist-row{display:grid;grid-template-columns:5.5em minmax(0,280px) 1fr;column-gap:18px;row-gap:4px;align-items:center;padding:12px 0;border-bottom:1px solid var(--grid)}
.hist-row .units-row{max-width:280px}
.hist-ver b{font-weight:600;font-variant-numeric:tabular-nums}
.now{display:inline-block;margin-left:4px;font-size:12px;color:var(--accent-ink);background:var(--accent-soft);border-radius:999px;padding:0 7px;line-height:1.6}
.hist-count{font-size:13px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:2px 12px;font-variant-numeric:tabular-nums}
.hist-change{grid-column:2/-1;font-size:13px;color:var(--muted)}
.is-now .hist-ver b{color:var(--accent-ink)}
@media (max-width:640px){.hist-row{grid-template-columns:5em minmax(0,1fr)}.hist-count,.hist-change{grid-column:2}}

/* Speed: one column of 20 marks per checkpoint. */
.sp-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;max-width:520px}
.sp-col{display:grid;justify-items:center;gap:6px;text-align:center}
.sp-col .units-col{max-width:64px}
.sp-n{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.sp-n b{font-size:18px;color:var(--ink);font-weight:600}
.sp-s{font-size:13px;color:var(--muted);border-top:1px solid var(--line);padding-top:4px;width:100%}

/* Confidence ladder. */
.tbl-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px}
caption{text-align:left;font-weight:600;padding:0 0 8px;color:var(--ink)}
th,td{text-align:left;vertical-align:top;padding:10px 12px 10px 0;border-bottom:1px solid var(--line)}
thead th{font-weight:500;color:var(--muted);font-size:13px;white-space:nowrap}
.num{text-align:right;font-variant-numeric:tabular-nums}
.ladder td,.ladder th[scope=row]{padding-top:16px;padding-bottom:16px}
.ladder td.num{min-width:7em}
.ladder td.num b{font-size:18px;font-weight:600;display:block;margin-bottom:6px}
.band-name{display:inline-flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}
.strength{display:inline-flex;align-items:flex-end;gap:2px;height:14px}
.strength i{display:block;width:4px;border-radius:1px;background:var(--line-strong)}
.strength i:nth-child(1){height:6px}.strength i:nth-child(2){height:10px}.strength i:nth-child(3){height:14px}
.strength-high i{background:var(--ink)}
.strength-medium i:nth-child(-n+2){background:var(--ink)}
.act{display:inline-flex;gap:8px;align-items:flex-start}
.ic{flex:none;margin-top:2px;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ic-block{stroke:var(--danger)}
.ic-hold{stroke:var(--held-mark)}
.ic-bill,.ic-nobill{stroke:var(--ink-2)}
.meter{display:block}
.meter-track{fill:var(--surface-3)}
.note{margin-top:14px;font-size:14px;color:var(--ink-2);display:flex;gap:8px;align-items:baseline}
.note .g{position:relative;top:1px}
@media (max-width:640px){.ladder thead{display:none}.ladder,.ladder tbody{display:block}.ladder tr{display:grid;grid-template-columns:minmax(0,1fr) 7em;column-gap:16px;border-bottom:1px solid var(--line);padding:14px 0}
 .ladder th,.ladder td{border:0;padding:3px 0!important}.ladder th[scope=row]{grid-column:1;grid-row:1}.ladder td.num{grid-column:2;grid-row:1/span 2;min-width:0}.ladder td:not(.num){grid-column:1/-1}.ladder td:nth-child(2){grid-column:1;grid-row:2;color:var(--ink-2)}}

/* "Show as a table". */
.as-table{margin-top:18px;font-size:14px}
.as-table summary{cursor:pointer;color:var(--accent-ink);text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:3px;width:max-content;min-height:24px}
.as-table summary:hover{text-decoration-color:currentColor}
.as-table[open] summary{margin-bottom:12px}
.as-table table{background:var(--surface)}

/* Method. */
.steps{margin:0;padding-left:1.4em;display:grid;gap:14px;color:var(--ink-2)}
.steps b{color:var(--ink);font-weight:600}
.steps pre{margin:10px 0;padding:12px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-m);overflow-x:auto;white-space:pre-wrap;word-break:break-all;color:var(--ink)}
.steps code{word-break:break-all}
.not-yet{margin:0;padding-left:1.2em;color:var(--ink-2);display:grid;gap:6px}
.recognised{color:var(--ink)!important}
.sec-text h3{margin:10px 0 -6px}

/* For researchers: collapsed by default; the reproduce commands live here. */
.sec-research{border-top:1px solid var(--line);padding:24px 0 40px}
.researchers summary{cursor:pointer;color:var(--accent-ink);font-weight:500;text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:3px;width:max-content;max-width:100%;min-height:24px}
.researchers summary:hover{text-decoration-color:currentColor}
.researchers-body{display:grid;gap:12px;margin-top:16px;max-width:80ch;color:var(--ink-2);font-size:14px}
.researchers-body code{word-break:break-all}
.researchers-body pre{margin:0;padding:12px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-m);overflow-x:auto;white-space:pre-wrap;word-break:break-all;color:var(--ink)}

.foot{border-top:1px solid var(--line);padding-top:24px;padding-bottom:48px;font-size:14px;color:var(--muted);display:grid;gap:8px}
.foot p:last-child{display:flex;gap:20px;flex-wrap:wrap}

@media (forced-colors:active){.stack rect,.units *,.g,.meter rect{forced-color-adjust:none}}
@media print{
 body{background:#fff;font-size:12px}
 .top nav,.skip,.as-table summary{display:none}
 .band{border-color:var(--line);background:#fff}
 .sec{display:block;padding:20px 0;break-inside:auto}
 .sec-text{margin-bottom:14px;max-width:none}
 .band,.hero-fig,.ag-row,.hist-row,.sp-list,.units,.ladder tr,.steps li{break-inside:avoid}
 h2{break-after:avoid}
 .tbl-wrap{overflow:visible}
 .hist-row{grid-template-columns:5em 280px 1fr}.hist-change{grid-column:2/-1}
 .as-table{display:none}
 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 a{color:var(--ink);text-decoration:none}
 .hl-num{font-size:72px}
}
/* The next step (cohesion review WD-10): the live demo and the trial, in the header and the footer. */
.next{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:14px}
.next a{color:var(--ink)}
.next .cta{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:6px;background:var(--ink);color:var(--surface,#fff);font-weight:600;text-decoration:none}
@media print{.next{display:none}}
