rustio-admin 0.32.0

Django Admin, but for Rust. A small, focused admin framework.
Documentation
/* ============================================================
   RustIO — Typography tokens (Visual Contract v2.0)
   · Display + Body/UI — Inter — one clean, legible Latin face for both
               titles and body (the contract has no serif). Page titles,
               hero, stat values, body, inputs, tables.
   · Mono    — SFMono / Consolas system stack — code, CLI, IDs, prices,
               labels. (Self-hosted JetBrains Mono remains baked for brand
               overrides that select it, e.g. the shop example.)

   Numerals are always Western (0–9); lining + tabular figures are
   enforced in base.css. The prior Spectral (serif) + Hanken Grotesk
   pairing was retired with the contract.
   ============================================================ */

:root {
  /* --- Families ---
     Visual Contract v2.0: Inter is the single Latin face for both body and
     display (titles are sans, no serif). The contract's Inter / SFMono stacks
     are used verbatim; the framework's per-script Arabic fallbacks (Naskh for
     display, Tajawal for body/mono) are preserved so a single stack still
     handles any language a developer types — Latin uses Inter, Arabic falls
     through per glyph (the @font-face unicode-ranges keep them off Latin). */
  --rio-font-display: "Inter", "Noto Naskh Arabic", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --rio-font-mono:    "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", Menlo, "Tajawal", monospace;
  --rio-font-body:    "Inter", "Tajawal", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  /* --- Type scale (px) ---
     12 · 13 · 14 · 15 · 17 · 20 · 24 · 30 · 38 · 48 · 64 · display-clamp */
  /* Operator-comfort scale: body sits at 16px, the reading sizes lift to
     match, and the large end opens back up. Judged by appearance, not the
     token name — every value here is the px it actually renders. */
  --rio-text-12: 0.9375rem;   /* 15 — small text nudged up (+1px) for readability */
  --rio-text-13: 0.9375rem;   /* 15 — fine print, nudged up to match */
  --rio-text-14: 1rem;        /* 16 — product base (body, inputs, tables) */
  --rio-text-15: 1rem;        /* 16 */
  --rio-text-17: 1.09375rem;  /* 17.5 — sidebar nav */
  --rio-text-20: 1.375rem;    /* 22 — lead / section title */
  --rio-text-24: 1.625rem;    /* 26 — card title */
  --rio-text-30: 1.9375rem;   /* 31 — h3 / stat value */
  --rio-text-38: 2.375rem;    /* 38 — h2 */
  --rio-text-48: 3rem;        /* 48 — h1 / page title */
  --rio-text-64: 3.75rem;     /* 60 — display */
  --rio-text-display: clamp(2.5rem, 5vw, 4.25rem); /* hero — smaller, refined */

  /* --- Weights --- */
  --rio-weight-regular:  400;
  --rio-weight-medium:   500;
  --rio-weight-semibold: 600;
  --rio-weight-bold:     700;
  --rio-weight-display:  600; /* display family weight (titles use 800, see base.css) */

  /* --- Line heights — generous for comfortable reading --- */
  --rio-leading-display: 1.1;  /* serif display / headlines */
  --rio-leading-tight:   1.22; /* sub-heads */
  --rio-leading-snug:    1.45; /* leads */
  --rio-leading-body:    1.62; /* body copy */
  --rio-leading-relaxed: 1.72; /* long-form */

  /* --- Letter spacing ---
     Inter reads refined with a hair of negative tracking at display + UI sizes. */
  --rio-tracking-display: -0.006em; /* display headlines */
  --rio-tracking-tight:   -0.008em; /* UI / body — crisp */
  --rio-tracking-normal:  0em;
  --rio-tracking-wide:    0.01em;
  --rio-tracking-mono:    0.005em;  /* mono labels */
  --rio-tracking-caps:    0.085em;  /* uppercase eyebrows */

  /* --- Multi-script stacks (framework addition; @font-face in
     base/fonts.css + base/typography-i18n.css). Latin renders in the
     brand face above; these are the per-script fallbacks the framework
     supports beyond the DS's Latin+Arabic. --- */
  --rio-font-arabic:      "Noto Naskh Arabic", "Tajawal", system-ui, sans-serif;
  --rio-font-arabic-body: "Noto Naskh Arabic", "Tajawal", serif;
  --rio-font-japanese:    "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Meiryo", sans-serif;
  --rio-font-korean:      "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  --rio-font-chinese:     "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --rio-font-thai:        "Noto Sans Thai", "Sukhumvit Set", "Leelawadee UI", sans-serif;
  --rio-font-devanagari:  "Noto Sans Devanagari", "Hindi Sangam MN", "Nirmala UI", sans-serif;
}