/* ─────────────────────────────────────────────────────────────────────────
 * design-systems/huggingface/tokens.css
 *
 * Structured token bindings for "Design System Inspired by Hugging Face".
 * ML community hub: sunshine yellow badge accent, monospace identity,
 * crisp 1px borders, brutalist-adjacent low radius, dense power-user layout.
 *
 * Key brand decisions encoded here:
 *   - HF Yellow (#ffd21e) as the lone saturated accent — badge/badge/header strip
 *   - Ink on off-white: deep slate (#0d1117) text on #fafafa canvas
 *   - IBM Plex Mono for headings and tags — "config file is the README" vibe
 *   - Source Sans Pro for body prose — contrasting readable counterpart
 *   - 4–6px radii — closer to brutalist than rounded
 *   - Crisp 1px borders (#e5e7eb) — borders that announce themselves
 *   - Dense tables and tight padding — built for power users
 * ─────────────────────────────────────────────────────────────────── */

:root {
  /* ─── Surface ─────────────────────────────────────────────────────
   * Off-white canvas with white cards — the yellow accent on a
   * neutral foundation maximizes its signal impact. */
  --bg: #fafafa;             /* Canvas Subtle — the default off-white hub background */
  --surface: #ffffff;        /* Canvas — card surfaces, white panels */
  --surface-warm: #fff4cc;   /* HF Yellow Soft — callout backgrounds, warm tint */

  /* ─── Foreground ──────────────────────────────────────────────────
   * Deep slate — dark, readable, technical. */
  --fg: #0d1117;             /* Ink Primary — primary text, headings */
  --fg-2: #374151;           /* Ink Secondary — body prose */
  --muted: #6b7280;          /* Ink Muted — captions, file paths, model authors */
  --meta: var(--muted);      /* alias — same muted for metadata */

  /* ─── Border ──────────────────────────────────────────────────────
   * Crisp, visible borders — they announce themselves rather than hiding. */
  --border: #e5e7eb;         /* Border Default — standard 1px hairline */
  --border-soft: #f3f4f6;    /* Border Subtle — inner divider, row separator */

  /* ─── Accent ──────────────────────────────────────────────────────
   * HF Yellow — the sunshine yellow that makes Hugging Face instantly
   * recognizable. Used for "new" pill, model-card header strip, badges.
   * Dark text on yellow (--accent-on: #0d1117) for contrast. */
  --accent: #ffd21e;
  --accent-on: #0d1117;      /* Dark text on yellow — sufficient contrast */
  --accent-hover: #f59e0b;   /* HF Yellow Deep — hover/active */
  --accent-active: color-mix(in oklab, var(--accent), black 20%);

  /* ─── Semantic ────────────────────────────────────────────────────
   * Task-category colors used for model badges. Success uses vision green.
   * Warning uses HF Yellow Deep (same as hover — reinforces the brand). */
  --success: #16a34a;        /* Vision Green — also "build succeeded" */
  --warn: #f59e0b;           /* HF Yellow Deep — warning / rate limit */
  --danger: #dc2626;         /* Error Red — failed build, broken model */

  /* ─── Typography ──────────────────────────────────────────────────
   * IBM Plex Mono for headings and tags — they look like code strings.
   * Source Sans Pro for body — readable, prose-optimized counterpart.
   * Weight cap at 600 — 700 is too loud against yellow. */
  --font-display: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --font-body: "Source Sans Pro", Inter, system-ui, -apple-system, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Type scale — DESIGN.md §3. Display 48px, H1 32px, H2 24px, H3 18px. */
  --text-xs: 12px;           /* Tag / Badge — IBM Plex Mono */
  --text-sm: 13px;           /* Caption — author byline, timestamp */
  --text-base: 15px;         /* Body — standard prose, model card */
  --text-lg: 18px;           /* Body Large / H3 — sub-section */
  --text-xl: 24px;           /* H2 — section heading */
  --text-2xl: 32px;          /* H1 — page heading, model name */
  --text-3xl: 40px;          /* Display — for marketing contexts */
  --text-4xl: 48px;          /* Display Hero — marketing hero */

  --leading-body: 1.55;      /* Source Sans Pro body reading */
  --leading-tight: 1.1;      /* IBM Plex Mono display */
  --tracking-display: -0.01em;

  /* ─── Spacing ─────────────────────────────────────────────────────
   * 4px base unit. Dense table padding (8px 16px per cell).
   * Section rhythm 64–96px — community hub needs breathing room. */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;

  --section-y-desktop: 80px;
  --section-y-tablet: 48px;
  --section-y-phone: 32px;

  /* ─── Radius ──────────────────────────────────────────────────────
   * 4–6px — brutalist-adjacent. Borders announce themselves.
   * Do not round cards to 12px+ — the crisp geometry is intentional. */
  --radius-sm: 4px;          /* Tags, small chips — nearest to sharp */
  --radius-md: 6px;          /* Cards, inputs, buttons — the primary radius */
  --radius-lg: 8px;          /* Slightly larger containers */
  --radius-pill: 9999px;     /* Model task badges, status pills */

  /* ─── Elevation ───────────────────────────────────────────────────
   * Border-based containment — 1px borders are the primary depth cue.
   * Table row hover uses background shift (#f3f4f6). */
  --elev-flat: none;
  --elev-ring: 0 0 0 1px var(--border);
  --elev-raised: 0 2px 8px color-mix(in oklab, var(--fg), transparent 90%);

  /* ─── Focus ring ──────────────────────────────────────────────────
   * Dark ring matching the primary ink color. */
  --focus-ring: 0 0 0 3px rgba(13, 17, 23, 0.1);

  /* ─── Motion ──────────────────────────────────────────────────────
   * Quick hover (120ms) — community hub interactions should feel snappy.
   * Tag pop at 1.05× scale is the only exception to flat-on-hover. */
  --motion-fast: 120ms;
  --motion-base: 200ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);

  /* ─── Layout ──────────────────────────────────────────────────────
   * 1280px container with 280px sidebar for model browser.
   * 24px gutter — content-dense layout. */
  --container-max: 1280px;
  --container-gutter-desktop: 24px;
  --container-gutter-tablet: 16px;
  --container-gutter-phone: 12px;
}
