1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/* rustio-admin — hand-written stylesheet, split for contributors.
*
* Six-variable theme; project overrides via Admin::theme(...) and
* its `_theme.html` partial that injects `html { --rio-* … }`.
* Mobile-first, three breakpoints. Light-only — the framework
* ships a single palette and ignores the OS colour-scheme
* preference.
*
* Source layout follows the Primer / Carbon convention:
*
* tokens → base → layout → components →
* pages → responsive → print
*
* Each fragment is a stand-alone CSS file with its own section
* header; admin.css is the manifest that wires them in cascade
* order. See DESIGN_DOCTRINE.md for the visual identity behind the
* tokens — what every colour, weight, and surface lift means and
* when to use them.
*
* --- Delivery ---------------------------------------------------
*
* The framework binary concatenates every fragment at compile time
* (see `ADMIN_CSS` in `src/admin/routes.rs`) and serves one bundle
* at `/static/admin.css`. The `@import` statements below are the
* contributor-facing source of truth for cascade order. **If you
* add a fragment, update BOTH this manifest AND the `concat!`
* list in routes.rs** — they must stay in lock-step or the served
* bundle will silently drift.
*
* --- Self-hosted fonts (SIL OFL-1.1) ----------------------------
*
* Latin / UI — Geist Variable (wght 100..900, primary identity)
* Latin fallback — Inter Variable (wght 100..900, Latin-ext +
* Cyrillic + Greek + Vietnamese coverage)
* Code — Geist Mono Variable (wght 100..900)
* Arabic — Noto Naskh Arabic Variable (wght 400..700, primary
* reading face across the framework)
* Arabic accent — Tajawal 400 / 500 / 700 (geometric display use,
* opt-in via .rio-arabic-display)
* Thai — Noto Sans Thai Variable (wght 100..900, auto)
* Devanagari — Noto Sans Devanagari Variable (wght 100..900, auto)
* Japanese — Noto Sans JP Regular (lang-gated)
* Korean — Noto Sans KR Regular (lang-gated)
* Simpl. Chinese — Noto Sans SC Regular (lang-gated)
*
* The font binaries are baked into the rustio-admin binary; no CDN
* round-trip, no FOUT, no GDPR/tracking surface. @font-face
* declarations live in base/typography.css (Latin + Arabic) and
* base/typography-i18n.css (Thai, Devanagari, CJK).
*/
/* ---- Design tokens — single source of truth for the visual scale. */
/* ---- Base — reset, body, typography, utilities. */
/* ---- Layout shell — topbar / sidebar / main / footer. */
/* ---- Components — concrete UI primitives. */
/* ---- Pages — anything specific to one screen. */
/* ---- Responsive — mobile-first overrides; MUST come after layout
* and components so its rules win the cascade on small screens. */
/* ---- Print — drop chrome, keep ink. */