/* Minimal design system — generated by build.py from design/_ds/. Do not edit. */

/* --- tokens/fonts.css --- */
:root{
  /* Sans is a system stack by design: the reference brand ships a licensed grotesque we do not have. */
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Helvetica,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* --- tokens/colors.css --- */
:root{
  /* Neutral ramp — the whole product lives here. */
  --n-0:#ffffff;
  --n-25:#fcfcfc;
  --n-50:#fafafa;
  --n-100:#f4f4f5;
  --n-150:#ededee;
  --n-200:#e4e4e6;
  --n-300:#d3d3d6;
  --n-400:#a8a8ad;
  --n-500:#78787d;
  --n-600:#5b5b60;
  --n-700:#3f3f43;
  --n-800:#27272a;
  --n-900:#171718;
  --n-1000:#000000;

  /* Accent — links and focus only. Primary actions are black. */
  --blue-50:#eef4ff;
  --blue-200:#c3d7fe;
  --blue-500:#3b76f6;
  --blue-600:#2563eb;
  --blue-700:#1d4fd0;

  /* Semantic hues — used sparingly, at small sizes */
  --green-50:#effaf3;
  --green-600:#16a34a;
  --green-700:#12813c;
  --amber-50:#fff8eb;
  --amber-600:#d97706;
  --amber-700:#b45309;
  --red-50:#fef2f2;
  --red-600:#dc2626;
  --red-700:#b91c1c;

  /* ---- Semantic aliases: use these in components ---- */
  --bg-page:var(--n-0);
  --bg-subtle:var(--n-50);
  --bg-sunken:var(--n-100);
  --surface-card:var(--n-0);
  --surface-raised:var(--n-0);
  --surface-inverted:var(--n-900);
  --surface-hover:var(--n-50);
  --surface-active:var(--n-100);
  --surface-code:var(--n-900);

  --text-primary:var(--n-900);
  --text-secondary:var(--n-500);
  --text-tertiary:var(--n-400);
  --text-inverted:var(--n-0);
  --text-link:var(--blue-600);
  --text-link-hover:var(--blue-700);
  --text-code:#e8e8ea;

  --border-subtle:var(--n-150);
  --border-default:var(--n-200);
  --border-strong:var(--n-300);
  --border-inverted:rgba(255,255,255,.14);

  --action-primary-bg:var(--n-900);
  --action-primary-bg-hover:var(--n-1000);
  --action-primary-fg:var(--n-0);
  --action-secondary-bg:var(--n-0);
  --action-secondary-bg-hover:var(--n-50);
  --action-secondary-fg:var(--n-900);

  --focus-ring:var(--blue-500);
  --focus-ring-alpha:rgba(59,118,246,.28);

  --status-success-fg:var(--green-700);
  --status-success-bg:var(--green-50);
  --status-warning-fg:var(--amber-700);
  --status-warning-bg:var(--amber-50);
  --status-danger-fg:var(--red-700);
  --status-danger-bg:var(--red-50);
  --status-info-fg:var(--blue-700);
  --status-info-bg:var(--blue-50);
}
[data-theme="dark"]{
  --bg-page:#0c0c0d;
  --bg-subtle:#131314;
  --bg-sunken:#191919;
  --surface-card:#111112;
  --surface-raised:#1a1a1b;
  --surface-inverted:var(--n-0);
  --surface-hover:#1a1a1b;
  --surface-active:#212122;
  --surface-code:#000000;
  --text-primary:#f2f2f3;
  --text-secondary:#96969b;
  --text-tertiary:#6c6c71;
  --text-inverted:var(--n-900);
  --text-link:#7ba4fb;
  --text-link-hover:#a5c1fd;
  --border-subtle:#1f1f21;
  --border-default:#2a2a2d;
  --border-strong:#3a3a3e;
  --action-primary-bg:#f2f2f3;
  --action-primary-bg-hover:#ffffff;
  --action-primary-fg:#0c0c0d;
  --action-secondary-bg:#111112;
  --action-secondary-bg-hover:#1a1a1b;
  --action-secondary-fg:#f2f2f3;
  --status-success-bg:rgba(22,163,74,.14);
  --status-success-fg:#4ade80;
  --status-warning-bg:rgba(217,119,6,.14);
  --status-warning-fg:#fbbf24;
  --status-danger-bg:rgba(220,38,38,.14);
  --status-danger-fg:#f87171;
  --status-info-bg:rgba(37,99,235,.16);
  --status-info-fg:#93b4fc;
}

/* --- tokens/typography.css --- */
:root{
  --text-2xs:11px;
  --text-xs:12px;
  --text-sm:13px;
  --text-base:15px;
  --text-md:16px;
  --text-lg:18px;
  --text-xl:21px;
  --text-2xl:26px;
  --text-3xl:32px;
  --text-4xl:40px;
  --text-5xl:52px;
  --text-6xl:66px;

  --leading-tight:1.06;
  --leading-snug:1.2;
  --leading-normal:1.5;
  --leading-relaxed:1.65;

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

  --tracking-tight:-0.03em;
  --tracking-snug:-0.015em;
  --tracking-normal:0em;
  --tracking-wide:0.04em;

  /* Composed roles */
  --type-display:var(--weight-semibold) var(--text-6xl)/var(--leading-tight) var(--font-sans);
  --type-h1:var(--weight-semibold) var(--text-4xl)/var(--leading-snug) var(--font-sans);
  --type-h2:var(--weight-semibold) var(--text-2xl)/var(--leading-snug) var(--font-sans);
  --type-h3:var(--weight-medium) var(--text-lg)/var(--leading-snug) var(--font-sans);
  --type-body:var(--weight-regular) var(--text-base)/var(--leading-relaxed) var(--font-sans);
  --type-body-sm:var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-sans);
  --type-label:var(--weight-medium) var(--text-sm)/1.2 var(--font-sans);
  --type-mono:var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-mono);
  --type-mono-sm:var(--weight-regular) var(--text-xs)/var(--leading-normal) var(--font-mono);
}

/* --- tokens/spacing.css --- */
:root{
  --space-0:0px;
  --space-1:2px;
  --space-2:4px;
  --space-3:6px;
  --space-4:8px;
  --space-5:12px;
  --space-6:16px;
  --space-7:20px;
  --space-8:24px;
  --space-9:32px;
  --space-10:40px;
  --space-11:56px;
  --space-12:72px;
  --space-13:96px;
  --space-14:128px;

  --gutter:20px;
  --page-max:1120px;
  --prose-max:680px;
  --header-h:56px;
  --section-y:var(--space-13);
}

/* --- tokens/radius.css --- */
:root{
  --radius-xs:4px;
  --radius-sm:6px;
  --radius-md:8px;
  --radius-lg:12px;
  --radius-xl:16px;
  --radius-pill:999px;
  --radius-control:var(--radius-md);
  --radius-card:var(--radius-lg);
  --radius-code:var(--radius-md);
}

/* --- tokens/border.css --- */
:root{
  --border-w:1px;
  --border-w-strong:1.5px;
  --border-hairline:var(--border-w) solid var(--border-default);
  --border-hairline-subtle:var(--border-w) solid var(--border-subtle);
  --focus-shadow:0 0 0 3px var(--focus-ring-alpha);
}

/* --- tokens/shadows.css --- */
:root{
  /* Shadows are near-absent by design: borders do the work. */
  --shadow-none:none;
  --shadow-xs:0 1px 2px rgba(9,9,11,.05);
  --shadow-sm:0 1px 2px rgba(9,9,11,.06),0 1px 1px rgba(9,9,11,.04);
  --shadow-md:0 4px 12px rgba(9,9,11,.07);
  --shadow-overlay:0 12px 40px rgba(9,9,11,.14);
  --shadow-inset-top:inset 0 1px 0 rgba(255,255,255,.06);
  --scrim:rgba(12,12,13,.42);
}

/* --- tokens/motion.css --- */
:root{
  --dur-instant:80ms; /* @kind other */
  --dur-fast:120ms; /* @kind other */
  --dur-base:180ms; /* @kind other */
  --dur-slow:280ms; /* @kind other */
  --ease-standard:cubic-bezier(.2,0,.2,1); /* @kind other */
  --ease-out:cubic-bezier(0,0,.2,1); /* @kind other */
  --ease-in-out:cubic-bezier(.4,0,.2,1); /* @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),box-shadow var(--dur-fast) var(--ease-standard);
}
@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 */}}

/* --- tokens/base.css --- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg-page);color:var(--text-primary);font:var(--type-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,p{margin:0}
h1{font:var(--type-h1);letter-spacing:var(--tracking-tight)}
h2{font:var(--type-h2);letter-spacing:var(--tracking-snug)}
h3{font:var(--type-h3);letter-spacing:var(--tracking-snug)}
a{color:var(--text-link);text-decoration:none;transition:color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover);text-decoration:underline;text-underline-offset:2px}
code,kbd,pre,samp{font-family:var(--font-mono);font-size:.92em}
button{font:inherit}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
::selection{background:var(--n-900);color:var(--n-0)}
[data-theme="dark"] ::selection{background:var(--n-0);color:var(--n-900)}
hr{border:0;border-top:var(--border-hairline-subtle);margin:0}
