/* Generated by tools/build-css.mjs — the token files concatenated for
 * delivery, so the browser makes one request instead of seven. Edit the
 * files in assets/tokens/, or rather edit them in design/ and re-copy. */

/* --- tokens/fonts.css --- */
/* Plan View webfonts — self-hosted.

   Generated by tools/fetch-fonts.mjs. Do not edit by hand; edit the script
   and re-run it. This is the one token file that deliberately diverges from
   the design system copy in design/, which loads the same faces from Google
   Fonts (plan section 2.6).

   Instrument Serif (display), Geist (text/UI), Geist Mono (dimension layer).
   Geist and Geist Mono are variable; one file covers their whole weight range. */

@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/instrument-serif-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/instrument-serif-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/instrument-serif-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/instrument-serif-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url("/fonts/geist-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url("/fonts/geist-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url("/fonts/geist-mono-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url("/fonts/geist-mono-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* The dimension layer's marks. Outside every subset Google declares,
   so requested explicitly — see tools/fetch-fonts.mjs. */
@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url("/fonts/geist-mono-marks.woff2") format("woff2");
  unicode-range: U+2116, U+2192, U+2197, U+2261, U+2315, U+25BE, U+25D0, U+2713;
}

:root {
  --font-display: "Instrument Serif", Georgia, serif;
  --font-sans: "Geist", system-ui, -apple-system, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
}

/* --- tokens/colors.css --- */
:root {
  /* base — sheet (backgrounds) */
  --sheet: #f9f9f7;
  --sheet-2: #efefec;
  --sheet-raised: #ffffff;
  --grid: #dcdcd8;
  --grid-soft: #e9e9e5;
  /* base — ink (foreground) */
  --ink: #141414;
  --ink-2: #4b4b48;
  --ink-3: #6b6b68;
  --ink-4: #9a9a96;
  /* base — accent */
  --blueprint: #2f5fd0;
  --blueprint-hover: #264fb3;
  --blueprint-soft: #dfe6f7;
  --redline: #c23a3a;
  --redline-soft: #f7dfdf;
  --ok: #2f7a4f;
  --ok-soft: #dfeee4;

  /* semantic */
  --bg-page: var(--sheet);
  --bg-subtle: var(--sheet-2);
  --bg-raised: var(--sheet-raised);
  --bg-inverse: var(--ink);
  --text-primary: var(--ink);
  --text-secondary: var(--ink-2);
  --text-tertiary: var(--ink-3);
  --text-disabled: var(--ink-4);
  --text-inverse: var(--sheet);
  --text-accent: var(--blueprint);
  --text-danger: var(--redline);
  --border-default: var(--grid);
  --border-soft: var(--grid-soft);
  --border-strong: var(--ink);
  --border-accent: var(--blueprint);
  --accent: var(--blueprint);
  --accent-hover: var(--blueprint-hover);
  --accent-soft: var(--blueprint-soft);
  --danger: var(--redline);
  --danger-soft: var(--redline-soft);
  --success: var(--ok);
  --success-soft: var(--ok-soft);
  --selection: var(--blueprint-soft);
  --focus-ring: var(--blueprint);
  --scrim: rgba(20, 20, 20, 0.32);
  --hatch: rgba(20, 20, 20, 0.05);
  --grid-line: rgba(20, 20, 20, 0.06);
  --shadow-dialog: 0 24px 48px -24px rgba(20, 20, 20, 0.35), 0 0 0 1px var(--grid);
  --shadow-popover: 0 8px 24px -12px rgba(20, 20, 20, 0.25), 0 0 0 1px var(--grid);

  color-scheme: light;
}

[data-theme="dark"] {
  --sheet: #131312;
  --sheet-2: #1c1c1b;
  --sheet-raised: #202020;
  --grid: #2f2f2d;
  --grid-soft: #262624;
  --ink: #f0f0ec;
  --ink-2: #bdbdb8;
  --ink-3: #8c8c88;
  --ink-4: #5e5e5b;
  --blueprint: #7d9df0;
  --blueprint-hover: #98b2f5;
  --blueprint-soft: #1c2745;
  --redline: #e0706a;
  --redline-soft: #3a1f1e;
  --ok: #6dbb8a;
  --ok-soft: #1c2f24;
  --scrim: rgba(0, 0, 0, 0.55);
  --hatch: rgba(240, 240, 236, 0.06);
  --grid-line: rgba(240, 240, 236, 0.07);
  --shadow-dialog: 0 24px 48px -24px rgba(0, 0, 0, 0.7), 0 0 0 1px var(--grid);
  --shadow-popover: 0 8px 24px -12px rgba(0, 0, 0, 0.6), 0 0 0 1px var(--grid);
  color-scheme: dark;
}

/* --- tokens/typography.css --- */
:root {
  --font-display: "Instrument Serif", Georgia, serif;
  --font-sans: "Geist", system-ui, -apple-system, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* scale — display is deliberately large and airy */
  --text-display-xl: 104px;
  --text-display: 72px;
  --text-h1: 48px;
  --text-h2: 28px;
  --text-h3: 20px;
  --text-lead: 20px;
  --text-body: 16px;
  --text-small: 14px;
  --text-caption: 13px;
  --text-mono: 12px;
  --text-mono-sm: 11px;

  --leading-display: 0.95;
  --leading-tight: 1.15;
  --leading-heading: 1.25;
  --leading-body: 1.6;
  --leading-mono: 1.5;

  --tracking-display: -0.02em;
  --tracking-heading: -0.01em;
  --tracking-mono: 0.02em;

  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;

  --measure: 62ch;
  --measure-narrow: 44ch;
}

/* --- tokens/spacing.css --- */
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 128px;

  --radius-sm: 4px;
  --radius-md: 8px;    /* buttons, inputs */
  --radius-lg: 12px;   /* cards, dialogs */
  --radius-pill: 999px;

  --border-hairline: 1px;

  --container: 1120px;
  --container-narrow: 720px;
  --gutter: 48px;
  --label-column: 160px; /* the mono margin column on sheets */

  --control-h-sm: 32px;
  --control-h-md: 40px;
  --control-h-lg: 48px;
}

/* --- tokens/motion.css --- */
:root {
  --dur-fast: 120ms; /* @kind other */
  --dur-base: 200ms; /* @kind other */
  --dur-slow: 360ms; /* @kind other */
  --ease-out: cubic-bezier(0.2, 0.7, 0.2, 1); /* @kind other */
  --ease-in-out: cubic-bezier(0.6, 0, 0.2, 1); /* @kind other */
  --transition-color: color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}

/* --- tokens/base.css --- */
/* Minimal page resets — everything else is component-level. */
html { background: var(--bg-page); color: var(--text-primary); }
body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--text-body);
  line-height: var(--leading-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
::selection { background: var(--selection); }
a { color: inherit; text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; transition: var(--transition-color); }
a:hover { color: var(--text-accent); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
