// Specimen page — type + color disclosure rendered well { const { LENSES } = window.PL_DATA; function Specimen() { return (
{/* hero */}
Specimen · v1.2.0 · type & color

The system,
laid out.

{/* Type — display */}
Display
General Sans
500 / 600 / 700
Aa Bb Rr  0–9
"200+ reproductive bills. 18 became law."
{/* Type — body */}
Body
Inter Tight
300 / 400 / 500 / 600 / 700

Higher composite score = the state is more aligned with the lens's editorial direction. That's the rule.

We measure what legislatures are doing right now — what's being introduced, what's passing, which direction those bills move policy, and at what magnitude. Not a snapshot of effective law.

Smallest reading size, used for caption-tier copy and dense table rows. Inter Tight at 14/22 in body weight stays clean down to 12px when needed.

{/* Type — mono */}
Mono
JetBrains Mono
tabular nums, meta labels, evidence quotes
TX-HB1004 · composite_passed = 14.2
{Array.from({length:10}).map((_,i) => ( {String((i*9.4).toFixed(1)).padStart(4, " ")} ))}
{/* Type scale */}
Display scale · roles
{[ ["Hero", "124px / 0.95 / -0.03em", "Atlas →"], ["Page", "84px / 0.95 / -0.03em", "Texas"], ["Section", "56px / 1.0 / -0.02em", "Where Texas sits."], ["Big number", "96px / 0.85 / -0.04em", "200+"], ["Card", "26px / 1.1 / -0.01em", "Reproductive"], ["Body", "16/24 (Inter Tight)", "We measure motion, not effective law."], ["Mono meta", "11px (mono, 0.08em)", "COMPOSITE_PASSED · v1.2.0"], ].map(([role, spec, sample]) => (
{role}
{spec}
{sample}
))}
{/* COLOR — diverging palette */}
Diverging data palette

Saturated, decisive.

Five stops, applied to composite scores 0–100. Restrictive end on the left. Used everywhere a score appears: tile maps, ranked lists, spectrum bars.

{[ ["#5a2a1f", "rust", "0–19", "most restrictive"], ["#b85a4a", "terracotta", "20–41", "restrictive"], ["#475569", "slate", "42–57", "neutral"], ["#6b9b94", "jade", "58–77", "protective"], ["#2a6b66", "teal", "78–100","most protective"], ].map(([hex, name, range, label]) => (
{label}
{name}
{hex}
composite {range}
))}
{/* COLOR — system */}
Foreground / background

Off-white. Confident.

{[ ["#f8f8f5", "bg", "var(--ink)"], ["#efefe9", "bg-2", "var(--ink)"], ["#e6e5dd", "bg-3", "var(--ink)"], ["#0e1116", "ink", "#f8f8f5"], ].map(([hex, name, fg]) => (
{name}
{hex}
))}
Brand & alarm

Used in blocks. Not as text accents.

{[ ["#c2410c", "accent · electric copper", "#fff"], ["#5e1e2c", "alarm · deep wine", "#fff"], ].map(([hex, name, fg]) => (
{name.split(" · ")[0]}
{name.split(" · ")[1]}
{hex}
))}
{/* Component samples */}
Component slice

The pieces, in context.

{/* Buttons */}
Buttons
{/* Pills */}
Status pills
Passed Engrossed Introduced Failed
{/* Score chip */}
Score chip + spectrum
{[14.2, 38.6, 50.1, 66.8, 89.4].map(v => { const c = window.PL_COLOR(v); return (
{v}
); })}
{["#5a2a1f","#b85a4a","#475569","#6b9b94","#2a6b66"].map(c => (
))}
); } window.PL_Specimen = Specimen; }