125 lines
7.9 KiB
CSS
125 lines
7.9 KiB
CSS
/* ─────────────────────────────────────────────────────────────────────────
|
||||
|
|
* 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;
|
|||
|
|
}
|