:root{
/* --- ink / ground: warm near-neutrals, sampled from the wordmark ------------ */
--ink-900:#0B0B0B;--ink-800:#101010;--ink-700:#161616;--ink-600:#1C1C1B;--ink-500:#232322;--ink-400:#2E2E2C;--ink-300:#3C3C39;
--paper-000:#FFFFFF;--paper-100:#F7F6F4;--paper-200:#EFEDE9;--paper-300:#E3E0DA;--paper-400:#D3CFC7;
--grey-500:#9A9791;--grey-600:#78756F;--grey-700:#555350;

/* --- accent: the taupe of the logo S. One accent, desaturated. ------------- */
--taupe-100:#E4DDD7;--taupe-200:#C8BCB2;--taupe-300:#A89A91;--taupe-400:#8B7A70;--taupe-500:#73635A;--taupe-600:#584B44;

/* --- semantic: quiet, never saturated ------------------------------------- */
--signal-pos:#4C6452;--signal-pos-dim:#E2E8E3;
--signal-warn:#7A6730;--signal-warn-dim:#EDE7D6;
--signal-neg:#8A4B3E;--signal-neg-dim:#F0E2DE;

/* === semantic aliases: paper is the default ground ======================== */
--bg-page:var(--paper-100);--bg-surface:var(--paper-000);--bg-raised:var(--paper-000);--bg-inset:var(--paper-200);
--bg-accent:var(--taupe-500);--bg-accent-soft:rgba(115,99,90,.09);
--text-primary:var(--ink-800);--text-secondary:var(--grey-700);--text-tertiary:var(--grey-600);--text-inverse:var(--paper-100);
--text-accent:var(--taupe-500);--text-figure:var(--ink-800);
--border-hairline:rgba(11,11,11,.10);--border-default:rgba(11,11,11,.16);--border-strong:rgba(11,11,11,.34);
--border-accent:rgba(115,99,90,.5);
--grid-line:rgba(11,11,11,.05);
--focus-ring:rgba(115,99,90,.65);
--overlay-scrim:rgba(64,58,54,.28);
}

/* Dark ground — opt in with data-ground="dark" on any element or <body>. */
[data-ground="dark"]{
--bg-page:var(--ink-900);--bg-surface:var(--ink-800);--bg-raised:var(--ink-700);--bg-inset:#070707;
--bg-accent:var(--taupe-400);--bg-accent-soft:rgba(139,122,112,.14);
--text-primary:#F2F0ED;--text-secondary:#B4B0AA;--text-tertiary:#7E7B76;--text-inverse:var(--ink-900);
--text-accent:var(--taupe-300);--text-figure:#EDEAE6;
--border-hairline:rgba(242,240,237,.10);--border-default:rgba(242,240,237,.16);--border-strong:rgba(242,240,237,.30);
--border-accent:rgba(168,154,145,.55);
--grid-line:rgba(242,240,237,.055);
--focus-ring:rgba(200,188,178,.75);
--overlay-scrim:rgba(7,7,7,.72);
--signal-pos:#6C8470;--signal-pos-dim:#3A463C;
--signal-warn:#9A8449;--signal-warn-dim:#4A4029;
--signal-neg:#9A5F53;--signal-neg-dim:#452A25;
}

/* Explicit paper scope — for a light island inside a dark surface. */
[data-ground="paper"]{
--bg-page:var(--paper-100);--bg-surface:var(--paper-000);--bg-raised:var(--paper-000);--bg-inset:var(--paper-200);
--bg-accent:var(--taupe-500);--bg-accent-soft:rgba(115,99,90,.09);
--text-primary:var(--ink-800);--text-secondary:var(--grey-700);--text-tertiary:var(--grey-600);--text-inverse:var(--paper-100);
--text-accent:var(--taupe-500);--text-figure:var(--ink-800);
--border-hairline:rgba(11,11,11,.10);--border-default:rgba(11,11,11,.16);--border-strong:rgba(11,11,11,.34);
--border-accent:rgba(115,99,90,.5);
--grid-line:rgba(11,11,11,.05);
--focus-ring:rgba(115,99,90,.65);
--overlay-scrim:rgba(64,58,54,.28);
--signal-pos:#4C6452;--signal-pos-dim:#E2E8E3;
--signal-warn:#7A6730;--signal-warn-dim:#EDE7D6;
--signal-neg:#8A4B3E;--signal-neg-dim:#F0E2DE;
}

:root{
--font-sans:"Instrument Sans","Helvetica Neue",Helvetica,sans-serif;
--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
--font-ui:var(--font-sans);--font-figure:var(--font-mono);

/* scale — 1.25 major third, tight tracking on display sizes */
--size-display-1:76px;--size-display-2:56px;--size-display-3:42px;
--size-h1:32px;--size-h2:25px;--size-h3:20px;
--size-body-lg:17px;--size-body:15px;--size-body-sm:13.5px;
--size-caption:12px;--size-micro:10.5px;

--lh-display:1.02; /* @kind other */
--lh-heading:1.16; /* @kind other */
--lh-body:1.55; /* @kind other */
--lh-tight:1.3; /* @kind other */

--track-display:-0.028em;--track-heading:-0.018em;--track-body:-0.005em;
--track-label:0.08em;--track-eyebrow:0.18em;

--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;

/* figures: always tabular, always mono */
--figure-variant:tabular-nums; /* @kind other */
}
.ws-display-1{font:var(--weight-medium) var(--size-display-1)/var(--lh-display) var(--font-sans);letter-spacing:var(--track-display)}
.ws-display-2{font:var(--weight-medium) var(--size-display-2)/var(--lh-display) var(--font-sans);letter-spacing:var(--track-display)}
.ws-display-3{font:var(--weight-medium) var(--size-display-3)/1.08 var(--font-sans);letter-spacing:var(--track-display)}
.ws-h1{font:var(--weight-semibold) var(--size-h1)/var(--lh-heading) var(--font-sans);letter-spacing:var(--track-heading)}
.ws-h2{font:var(--weight-semibold) var(--size-h2)/var(--lh-heading) var(--font-sans);letter-spacing:var(--track-heading)}
.ws-h3{font:var(--weight-semibold) var(--size-h3)/var(--lh-tight) var(--font-sans);letter-spacing:var(--track-heading)}
.ws-body-lg{font:var(--weight-regular) var(--size-body-lg)/var(--lh-body) var(--font-sans);letter-spacing:var(--track-body)}
.ws-body{font:var(--weight-regular) var(--size-body)/var(--lh-body) var(--font-sans);letter-spacing:var(--track-body)}
.ws-body-sm{font:var(--weight-regular) var(--size-body-sm)/1.5 var(--font-sans);letter-spacing:var(--track-body)}
.ws-eyebrow{font:var(--weight-medium) var(--size-micro)/1.2 var(--font-mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase}
.ws-label{font:var(--weight-medium) var(--size-caption)/1.3 var(--font-mono);letter-spacing:var(--track-label);text-transform:uppercase}
.ws-figure{font-family:var(--font-mono);font-variant-numeric:var(--figure-variant);font-feature-settings:"tnum" 1;letter-spacing:-0.01em}
.ws-figure-xl{font:var(--weight-light,300) 54px/1 var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-0.03em}
.ws-unit{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);letter-spacing:var(--track-body)}

:root{
/* 4px base; the grid the whole system measures against */
--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;
--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--space-32:128px;

--gutter:24px;--page-pad:32px;
--measure-prose:64ch;--measure-narrow:46ch;
--content-max:1180px;--content-wide:1420px;

--control-h-sm:28px;--control-h-md:36px;--control-h-lg:44px;
--hairline:1px;
}

:root{
/* Engineered, not friendly: near-square. Nothing in the system is a pill except a status dot. */
--radius-0:0px;--radius-1:2px;--radius-2:3px;--radius-3:4px;--radius-4:6px;--radius-round:999px;
--radius-control:var(--radius-2);--radius-card:var(--radius-3);--radius-surface:var(--radius-4);
}

:root{
/* Cards are defined by hairlines, not shadows. Shadows only lift true overlays. */
--shadow-none:none;
--shadow-inset-hairline:inset 0 0 0 1px var(--border-hairline);
--shadow-raised:0 1px 2px rgba(11,11,11,.05),0 0 0 1px var(--border-hairline);
--shadow-overlay:0 18px 44px -14px rgba(11,11,11,.26),0 0 0 1px var(--border-default);
--shadow-paper:0 1px 2px rgba(11,11,11,.06),0 8px 28px -18px rgba(11,11,11,.22);
--blur-scrim:blur(10px); /* @kind other */
/* measurement grid background, 24px */
--pattern-grid:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px); /* @kind other */
--pattern-grid-size:24px 24px; /* @kind other */
}
[data-ground="dark"]{
--shadow-raised:0 1px 0 rgba(0,0,0,.4),0 0 0 1px var(--border-hairline);
--shadow-overlay:0 18px 48px -12px rgba(0,0,0,.72),0 0 0 1px var(--border-default);
}

:root{
/* Quiet motion: opacity and 1-2px offsets. No bounce, no spring, no scale-up. */
--ease-standard:cubic-bezier(.22,.61,.36,1); /* @kind other */
--ease-exit:cubic-bezier(.4,0,1,1); /* @kind other */
--ease-linear:linear; /* @kind other */
--dur-instant:80ms; /* @kind other */
--dur-fast:140ms; /* @kind other */
--dur-base:200ms; /* @kind other */
--dur-slow:320ms; /* @kind other */
--transition-control:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),opacity var(--dur-fast) var(--ease-standard); /* @kind other */
}
@media (prefers-reduced-motion:reduce){:root{--dur-instant:0ms; /* @kind other */
--dur-fast:0ms; /* @kind other */
--dur-base:0ms; /* @kind other */
--dur-slow:0ms; /* @kind other */}}

*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg-page);color:var(--text-primary);font:var(--weight-regular) var(--size-body)/var(--lh-body) var(--font-sans);letter-spacing:var(--track-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--text-primary);text-decoration:none;border-bottom:1px solid var(--border-accent);transition:var(--transition-control)}
a:hover{color:var(--text-accent);border-bottom-color:var(--text-accent)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:2px}
::selection{background:var(--taupe-400);color:var(--paper-100)}
h1,h2,h3,h4,p,figure,blockquote{margin:0}
table{border-collapse:collapse}
code,kbd,samp,pre{font-family:var(--font-mono)}
hr{border:0;border-top:1px solid var(--border-hairline);margin:var(--space-8) 0}
.ws-grid-bg{background-image:var(--pattern-grid);background-size:var(--pattern-grid-size)}
