/*
 * Design tokens. Every value in the design system resolves to one of these.
 * Nothing in this file selects an element — it only defines custom properties.
 */

/* Geist, self-hosted as a single variable-weight file (covers 100-900 in
   one request instead of a separate static file per weight). Served from
   our own static/fonts/, not a Google Fonts CDN link, so page loads never
   depend on a third-party host. */
@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/geist-latin-wght-normal.a147f99cd533.woff2") format("woff2");
}

:root {
  /* Surfaces */
  --c-bg: #f7f7f6;
  --c-surface: #ffffff;
  --c-surface-2: #fafaf9;
  --c-surface-hover: #f4f4f2;

  /* Lines */
  --c-border: #e8e8e6;
  --c-border-strong: #d8d8d4;

  /* Text */
  --c-text: #1a1a1a;
  --c-text-2: #5c5c5a;
  --c-text-muted: #8a8a86;
  --c-text-invert: #ffffff;

  /* Accents. Used only to carry meaning, never for decoration. */
  --c-link: #2f6feb;
  --c-pos: #1f7a4d;
  --c-pos-bg: #e9f5ee;
  --c-pos-bd: #cfe8db;
  --c-neg: #b3261e;
  --c-neg-bg: #fdeceb;
  --c-neg-bd: #f5d2cf;
  --c-warn: #8a5a00;
  --c-warn-bg: #fdf4e3;
  --c-warn-bd: #f2e3c3;
  --c-info: #1e4f9c;
  --c-info-bg: #eaf1fd;
  --c-info-bd: #d3e2fb;
  --c-neutral-bg: #f2f2f0;
  --c-neutral-bd: #e4e4e1;

  /* Space, on a 4px scale */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 20px;
  --s-6: 24px;
  --s-8: 32px;
  --s-10: 40px;
  --s-12: 48px;
  --s-16: 64px;

  /* Radius */
  --r-pill: 999px;
  --r-sm: 6px;
  --r-md: 8px;
  --r-lg: 12px;

  /* Type. Geist first (self-hosted, see @font-face above), then the system
     stack as a fallback for the brief window before it loads. */
  --f-sans: "Geist", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif;
  --f-mono: ui-monospace, sfmono-regular, "SF Mono", menlo, consolas, monospace;
  --t-11: 11px;
  --t-12: 12px;
  --t-13: 13px;
  --t-14: 14px;
  --t-16: 16px;
  --t-20: 20px;
  --t-24: 24px;
  --t-30: 30px;
  --lh-tight: 1.25;
  --lh-base: 1.5;
  --fw-normal: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --ls-caps: 0.04em;

  /* Shadow */
  --sh-xs: 0 1px 1px rgb(16 16 16 / 4%);
  --sh-sm: 0 1px 2px rgb(16 16 16 / 6%), 0 1px 1px rgb(16 16 16 / 4%);
  --sh-md: 0 4px 12px rgb(16 16 16 / 8%);
  --sh-lg: 0 10px 40px rgb(16 16 16 / 14%);
  --sh-focus: 0 0 0 3px rgb(47 111 235 / 20%);

  /* Motion. Kept short and eased so it reads as responsive, not decorative. */
  --drawer-duration: 180ms;
  --drawer-ease: cubic-bezier(0.2, 0, 0, 1);

  /* Layout. --h-topbar is load-bearing: the sticky table header offsets
     against it, so it has to be a real fixed number. */
  --w-content: 1120px;
  --w-narrow: 460px;
  --w-drawer: 460px;
  --h-topbar: 52px;
  --z-topbar: 20;
  --z-thead: 10;
  --z-drawer-backdrop: 30;
  --z-drawer: 31;
}
