css-is-awesome 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +343 -0
- package/CHANGELOG.md +1036 -0
- package/CLAUDE.md +9 -0
- package/CONTRACT.md +580 -0
- package/GEMINI.md +9 -0
- package/LICENSE +21 -0
- package/LICENSE-third-party +88 -0
- package/MIGRATION.md +312 -0
- package/README.md +380 -0
- package/ROADMAP.md +714 -0
- package/THEMING.md +290 -0
- package/THREE-TIERS.md +158 -0
- package/VERSIONING.md +200 -0
- package/_index.scss +34 -0
- package/api.scss +16 -0
- package/bin/README.md +57 -0
- package/bin/cia.cjs +114 -0
- package/bin/migrate-bootstrap.cjs +427 -0
- package/bin/migrate-tailwind.cjs +832 -0
- package/css-is-awesome.instructions.md +533 -0
- package/dist/css-is-awesome.core.css +598 -0
- package/dist/css-is-awesome.core.min.css +1 -0
- package/dist/css-is-awesome.css +3733 -0
- package/dist/css-is-awesome.min.css +1 -0
- package/dist/css-is-awesome.utilities.css +2445 -0
- package/dist/css-is-awesome.utilities.min.css +1 -0
- package/dist/tokens.css +508 -0
- package/dist/tokens.d.ts +266 -0
- package/dist/tokens.min.css +1 -0
- package/figma-tokens/README.md +57 -0
- package/figma-tokens/primitives-brand.scss +121 -0
- package/figma-tokens/semantic-dark.scss +61 -0
- package/figma-tokens/semantic-light.scss +61 -0
- package/figma-tokens/tokens.json +144 -0
- package/llm.txt +183 -0
- package/mcp/server.cjs +1495 -0
- package/package.json +199 -0
- package/public/icons/README.md +278 -0
- package/public/icons/arrow-right.svg +4 -0
- package/public/icons/check.svg +4 -0
- package/public/icons/chevron-down.svg +4 -0
- package/public/icons/close.svg +4 -0
- package/public/icons/core/arrow-down.svg +13 -0
- package/public/icons/core/arrow-left.svg +13 -0
- package/public/icons/core/arrow-right.svg +13 -0
- package/public/icons/core/arrow-up.svg +13 -0
- package/public/icons/core/bell.svg +13 -0
- package/public/icons/core/calendar.svg +15 -0
- package/public/icons/core/check.svg +12 -0
- package/public/icons/core/chevron-down.svg +12 -0
- package/public/icons/core/chevron-left.svg +12 -0
- package/public/icons/core/chevron-right.svg +12 -0
- package/public/icons/core/chevron-up.svg +12 -0
- package/public/icons/core/clock.svg +13 -0
- package/public/icons/core/close.svg +13 -0
- package/public/icons/core/copy.svg +13 -0
- package/public/icons/core/download.svg +14 -0
- package/public/icons/core/edit.svg +13 -0
- package/public/icons/core/error.svg +14 -0
- package/public/icons/core/external-link.svg +14 -0
- package/public/icons/core/eye-off.svg +15 -0
- package/public/icons/core/eye.svg +13 -0
- package/public/icons/core/filter.svg +12 -0
- package/public/icons/core/heart.svg +12 -0
- package/public/icons/core/help.svg +14 -0
- package/public/icons/core/home.svg +13 -0
- package/public/icons/core/info.svg +14 -0
- package/public/icons/core/loading.svg +12 -0
- package/public/icons/core/lock.svg +13 -0
- package/public/icons/core/mail.svg +13 -0
- package/public/icons/core/menu.svg +14 -0
- package/public/icons/core/message.svg +12 -0
- package/public/icons/core/minus.svg +12 -0
- package/public/icons/core/more-horizontal.svg +14 -0
- package/public/icons/core/pause.svg +13 -0
- package/public/icons/core/play.svg +12 -0
- package/public/icons/core/plus.svg +13 -0
- package/public/icons/core/refresh.svg +15 -0
- package/public/icons/core/save.svg +14 -0
- package/public/icons/core/search.svg +13 -0
- package/public/icons/core/settings.svg +13 -0
- package/public/icons/core/share.svg +14 -0
- package/public/icons/core/sort.svg +15 -0
- package/public/icons/core/star.svg +12 -0
- package/public/icons/core/success.svg +13 -0
- package/public/icons/core/trash.svg +16 -0
- package/public/icons/core/unlock.svg +13 -0
- package/public/icons/core/upload.svg +14 -0
- package/public/icons/core/user.svg +13 -0
- package/public/icons/core/users.svg +15 -0
- package/public/icons/core/warning.svg +14 -0
- package/public/icons/download.svg +4 -0
- package/public/icons/edit.svg +4 -0
- package/public/icons/menu.svg +4 -0
- package/public/icons/search.svg +4 -0
- package/public/theme.css +4179 -0
- package/public/themes/README.md +102 -0
- package/public/themes/boilerplate/theme.css +154 -0
- package/public/themes/boilerplate-dark/theme.css +171 -0
- package/public/themes/boilerplate-light/theme.css +171 -0
- package/public/themes/cupertino/theme.css +165 -0
- package/public/themes/cupertino-dark/theme.css +200 -0
- package/public/themes/cupertino-light/theme.css +227 -0
- package/public/themes/glass/theme.css +190 -0
- package/public/themes/glass-dark/theme.css +201 -0
- package/public/themes/glass-light/theme.css +229 -0
- package/public/themes/graphite/theme.css +155 -0
- package/public/themes/graphite-dark/theme.css +223 -0
- package/public/themes/graphite-light/theme.css +191 -0
- package/public/themes/press/theme.css +189 -0
- package/public/themes/press-dark/theme.css +199 -0
- package/public/themes/press-light/theme.css +235 -0
- package/public/themes/prism/theme.css +159 -0
- package/public/themes/prism-dark/theme.css +185 -0
- package/public/themes/prism-light/theme.css +188 -0
- package/public/themes/sketchbook/theme.css +152 -0
- package/public/themes/sketchbook-dark/theme.css +194 -0
- package/public/themes/sketchbook-light/theme.css +188 -0
- package/public/themes/terminal/theme.css +159 -0
- package/public/themes/terminal-dark/theme.css +229 -0
- package/public/themes/terminal-light/theme.css +152 -0
- package/scripts/README.md +70 -0
- package/scripts/icon-contract.json +67 -0
- package/scripts/icon-validator.js +205 -0
- package/scripts/prepare-dist.mjs +65 -0
- package/scripts/theme-a11y.js +415 -0
- package/scripts/theme-contract.json +171 -0
- package/scripts/theme-validator.js +674 -0
- package/scss/README.md +55 -0
- package/scss/_animations-utilities.scss +107 -0
- package/scss/_animations.scss +248 -0
- package/scss/_app-styles.scss +15 -0
- package/scss/_generator.scss +174 -0
- package/scss/_icons.scss +475 -0
- package/scss/_index.scss +17 -0
- package/scss/_layout.scss +597 -0
- package/scss/_mixins.scss +1036 -0
- package/scss/_system.scss +291 -0
- package/scss/_utilities.scss +377 -0
- package/scss/api.scss +61 -0
- package/scss/components/_accordion.scss +72 -0
- package/scss/components/_buttons.scss +171 -0
- package/scss/components/_copy-button.scss +69 -0
- package/scss/components/_data.scss +190 -0
- package/scss/components/_feedback.scss +197 -0
- package/scss/components/_forms.scss +272 -0
- package/scss/components/_index.scss +17 -0
- package/scss/components/_navigation.scss +186 -0
- package/scss/components/_overlay.scss +259 -0
- package/scss/components/_stepper.scss +159 -0
- package/scss/components/_tabs.scss +72 -0
- package/scss/core.scss +54 -0
- package/scss/examples/_theming.scss +107 -0
- package/scss/examples/_usage.scss +317 -0
- package/scss/main.scss +64 -0
- package/scss/recipes/README.md +110 -0
- package/scss/recipes/_bare-tags.scss +232 -0
- package/scss/recipes/_recipe-template.md +119 -0
- package/scss/recipes/combobox.md +509 -0
- package/scss/recipes/dialog.md +265 -0
- package/scss/recipes/print-to-pdf.md +263 -0
- package/scss/theme/README.md +67 -0
- package/scss/theme/_brand.scss +18 -0
- package/scss/theme/_colors-dark.scss +68 -0
- package/scss/theme/_colors-light.scss +70 -0
- package/scss/theme/_components.scss +94 -0
- package/scss/theme/_icons.scss +104 -0
- package/scss/theme/_index.scss +62 -0
- package/scss/theme/_shadows.scss +65 -0
- package/scss/theme/_shape.scss +13 -0
- package/scss/theme/_typography.scss +9 -0
- package/scss/theme/registry.json +447 -0
- package/scss/themes/boilerplate-dark.scss +212 -0
- package/scss/themes/boilerplate-light.scss +209 -0
- package/scss/themes/boilerplate.scss +181 -0
- package/scss/themes/cupertino-dark.scss +238 -0
- package/scss/themes/cupertino-light.scss +266 -0
- package/scss/themes/cupertino.scss +194 -0
- package/scss/themes/glass-dark.scss +238 -0
- package/scss/themes/glass-light.scss +266 -0
- package/scss/themes/glass.scss +220 -0
- package/scss/themes/graphite-dark.scss +260 -0
- package/scss/themes/graphite-light.scss +228 -0
- package/scss/themes/graphite.scss +182 -0
- package/scss/themes/press-dark.scss +237 -0
- package/scss/themes/press-light.scss +273 -0
- package/scss/themes/press.scss +241 -0
- package/scss/themes/prism-dark.scss +217 -0
- package/scss/themes/prism-light.scss +220 -0
- package/scss/themes/prism.scss +190 -0
- package/scss/themes/sketchbook-dark.scss +231 -0
- package/scss/themes/sketchbook-light.scss +231 -0
- package/scss/themes/sketchbook.scss +178 -0
- package/scss/themes/terminal-dark.scss +267 -0
- package/scss/themes/terminal-light.scss +175 -0
- package/scss/themes/terminal.scss +185 -0
- package/scss/tokens.scss +23 -0
- package/scss/utilities-only.scss +4 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# public/themes
|
|
2
|
+
|
|
3
|
+
Runtime theme files shipped with css-is-awesome. One file per theme, no
|
|
4
|
+
build step. Each `theme.css` declares the full **127-token contract**
|
|
5
|
+
(see `scripts/theme-contract.json`, plus 36 optional tokens) under a
|
|
6
|
+
`:root, :root[data-theme="<name>"]` selector.
|
|
7
|
+
|
|
8
|
+
The bare `:root` half is the point: **dropping a single theme file in
|
|
9
|
+
restyles the page with no markup change.** Link it — or copy it over your
|
|
10
|
+
own `theme.css` — and you're done:
|
|
11
|
+
|
|
12
|
+
```html
|
|
13
|
+
<link rel="stylesheet" href="/themes/press-dark/theme.css">
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Setting `<html data-theme="press-dark">` is optional in that case. It is
|
|
17
|
+
**required** only for the consolidated bundle (see below), where every
|
|
18
|
+
theme shares one file and the attribute is the only thing telling them
|
|
19
|
+
apart.
|
|
20
|
+
|
|
21
|
+
Library default tokens emit under `:where(:root)` (specificity `0,0,0`),
|
|
22
|
+
so a theme's declarations win regardless of load order.
|
|
23
|
+
|
|
24
|
+
All shipped themes pass the WCAG 2.2 AA contrast audit (22 audited pairs
|
|
25
|
+
per theme).
|
|
26
|
+
|
|
27
|
+
## Shipped themes
|
|
28
|
+
|
|
29
|
+
**24 themes: 8 families × 3 files.** Each family ships a dual-mode base
|
|
30
|
+
(`<family>`, both modes in one file via `light-dark()`) plus single-mode
|
|
31
|
+
`<family>-light` and `<family>-dark` variants for `<link media>` pairing.
|
|
32
|
+
All pass WCAG 2.2 AA.
|
|
33
|
+
|
|
34
|
+
| Family | Base modes | Mood |
|
|
35
|
+
| ------------ | ------------- | ----------------------------------------------------------------- |
|
|
36
|
+
| sketchbook | light + dark | Warm washi paper, sumi ink, indigo accent (brand default) |
|
|
37
|
+
| press | light + dark | Editorial newsprint, Playfair serif, press-red accent |
|
|
38
|
+
| graphite | light + dark | Space-gray aluminum, system blue |
|
|
39
|
+
| glass | light + dark | visionOS glassmorphism, iOS indigo, dual-rim highlights |
|
|
40
|
+
| cupertino | light + dark | macOS Sonoma window, SF Pro, system blue |
|
|
41
|
+
| terminal | dark only | VT100 phosphor, zero radii, CRT glow |
|
|
42
|
+
| prism | light + dark | Brand-system showcase, vivid accents |
|
|
43
|
+
| boilerplate | light + dark | Neutral starter (system fonts, slate ramp) — copy and override |
|
|
44
|
+
|
|
45
|
+
`terminal`'s base is dark-only by design; `terminal-light` is its
|
|
46
|
+
daylight companion.
|
|
47
|
+
|
|
48
|
+
## Layout
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
public/themes/
|
|
52
|
+
<family>/theme.css ← both modes via light-dark()
|
|
53
|
+
<family>-light/theme.css ← light only
|
|
54
|
+
<family>-dark/theme.css ← dark only
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Every folder holds one `theme.css` with the same selector shape, so any
|
|
58
|
+
of the 24 can be dropped in standalone.
|
|
59
|
+
|
|
60
|
+
## Consolidated bundle
|
|
61
|
+
|
|
62
|
+
`public/theme.css` is the **all-in-one** bundle: all 24 theme blocks in a
|
|
63
|
+
single file, generated by `scripts/build-theme-bundle.mjs` (run via
|
|
64
|
+
`npm run build:css:themes`). Consumers pick:
|
|
65
|
+
|
|
66
|
+
- `<link href="/theme.css">` — one request, every theme available;
|
|
67
|
+
**`data-theme` required**, since bundled blocks emit only
|
|
68
|
+
`:root[data-theme="<name>"]` (no bare `:root`, or they'd collide)
|
|
69
|
+
- `<link href="/themes/<name>/theme.css">` — only the theme you want;
|
|
70
|
+
`data-theme` optional
|
|
71
|
+
|
|
72
|
+
This is the `$standalone` argument on the `theme()` mixin:
|
|
73
|
+
`@mixin theme($name, $scheme: light dark, $standalone: true)`. The
|
|
74
|
+
bundle builds with `$standalone: false`.
|
|
75
|
+
|
|
76
|
+
## Spacing is themeable
|
|
77
|
+
|
|
78
|
+
Themes declare the **numbered** scale `--space-0` … `--space-9`, which is
|
|
79
|
+
what `cia.space(4)` reads (`var(--space-4)`). The six t-shirt names
|
|
80
|
+
(`--space-2xs/xs/sm/md/lg/xl`) are optional and the library emits them as
|
|
81
|
+
references (`--space-md: var(--space-4)`), so they follow the numbered
|
|
82
|
+
scale automatically. A theme can ship its own rhythm without any
|
|
83
|
+
component change.
|
|
84
|
+
|
|
85
|
+
## Validator gate
|
|
86
|
+
|
|
87
|
+
Every theme MUST:
|
|
88
|
+
|
|
89
|
+
1. Declare all 127 required tokens in `scripts/theme-contract.json`.
|
|
90
|
+
2. Pass WCAG 2.2 AA on the 22 audited token pairs (`scripts/theme-a11y.js`),
|
|
91
|
+
which include the five `--code-*` pairs graded against `--code-bg`.
|
|
92
|
+
|
|
93
|
+
CI runs `npm run validate-themes` and fails the PR on either gap.
|
|
94
|
+
`--border-default` is the one decorative pair (WCAG 2.2 SC 1.4.11) and is
|
|
95
|
+
reported as `info`, never `fail`.
|
|
96
|
+
|
|
97
|
+
CI also runs `npm run check:theme-drift`, which rebuilds the themes into
|
|
98
|
+
a scratch copy and fails if the committed `theme.css` artifacts (or the
|
|
99
|
+
bundle) no longer match their SCSS sources.
|
|
100
|
+
|
|
101
|
+
Full authoring + PR flow lives in
|
|
102
|
+
[`CONTRIBUTING-THEMES.md`](../../CONTRIBUTING-THEMES.md).
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
:root, :root[data-theme=boilerplate] {
|
|
3
|
+
color-scheme: light dark;
|
|
4
|
+
/* Surfaces */
|
|
5
|
+
--paper: light-dark(#fff, #0f172a);
|
|
6
|
+
--paper-raised: light-dark(#f2f2f2, #1e293b);
|
|
7
|
+
--paper-sunk: light-dark(#f8fafc, #020617);
|
|
8
|
+
--paper-glass: light-dark(rgba(255, 255, 255, 0.85), rgba(15, 23, 42, 0.85));
|
|
9
|
+
/* Ink — slate neutral ramp */
|
|
10
|
+
--ink: light-dark(#0f172a, #f8fafc);
|
|
11
|
+
--ink-soft: light-dark(#1e293b, #e2e8f0);
|
|
12
|
+
--ink-faint: light-dark(#475569, #94a3b8);
|
|
13
|
+
--graphite: light-dark(#0f172a, #f1f5f9);
|
|
14
|
+
--muted: light-dark(#64748b, #64748b);
|
|
15
|
+
/* Lines */
|
|
16
|
+
--guide: light-dark(#cbd5e1, #334155);
|
|
17
|
+
--guide-soft: light-dark(#e2e8f0, #1e293b);
|
|
18
|
+
--hair: light-dark(#e2e8f0, #1e293b);
|
|
19
|
+
--hair-soft: light-dark(#f1f5f9, #0f172a);
|
|
20
|
+
/* Primary accent */
|
|
21
|
+
--ai: light-dark(#2563eb, #3b82f6);
|
|
22
|
+
--ai-ink: light-dark(#1d4ed8, #60a5fa);
|
|
23
|
+
--ai-wash: light-dark(#eff6ff, #1e3a8a);
|
|
24
|
+
/* Seal — red */
|
|
25
|
+
--shu: light-dark(#dc2626, #ef4444);
|
|
26
|
+
--shu-wash: light-dark(#fef2f2, #450a0a);
|
|
27
|
+
/* Tertiary — amber */
|
|
28
|
+
--ochre: light-dark(#d97706, #f59e0b);
|
|
29
|
+
--ochre-wash: light-dark(#fffbeb, #422006);
|
|
30
|
+
/* Code surface */
|
|
31
|
+
--code-bg: light-dark(#f8fafc, #020617);
|
|
32
|
+
--code-ink: light-dark(#0f172a, #e2e8f0);
|
|
33
|
+
--code-muted: light-dark(#5E6D83, #6F8098);
|
|
34
|
+
--code-accent: light-dark(#C1410C, #fb923c);
|
|
35
|
+
--code-green: light-dark(#147C3B, #4ade80);
|
|
36
|
+
--code-blue: light-dark(#2362EB, #60a5fa);
|
|
37
|
+
/* Typography — system stacks, no @import, identical */
|
|
38
|
+
--font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
39
|
+
--font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
40
|
+
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
|
|
41
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
42
|
+
--font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
43
|
+
/* Radius — identical */
|
|
44
|
+
--r-sm: 4px;
|
|
45
|
+
--r-md: 6px;
|
|
46
|
+
--r-lg: 8px;
|
|
47
|
+
/* Shadow — subtle, neutral slate / heavier on dark */
|
|
48
|
+
--shadow-sm: 0 1px 2px light-dark(rgba(15, 23, 42, 0.04), rgba(0, 0, 0, 0.30));
|
|
49
|
+
--shadow-md: 0 1px 3px light-dark(rgba(15, 23, 42, 0.06), rgba(0, 0, 0, 0.40)),
|
|
50
|
+
0 1px 2px light-dark(rgba(15, 23, 42, 0.04), rgba(0, 0, 0, 0.30));
|
|
51
|
+
--shadow-lg: 0 4px 12px -2px light-dark(rgba(15, 23, 42, 0.08), rgba(0, 0, 0, 0.55)),
|
|
52
|
+
0 2px 4px -2px light-dark(rgba(15, 23, 42, 0.05), rgba(0, 0, 0, 0.30));
|
|
53
|
+
--shadow-xl: 0 12px 24px -8px light-dark(rgba(15, 23, 42, 0.10), rgba(0, 0, 0, 0.65)),
|
|
54
|
+
0 4px 8px -4px light-dark(rgba(15, 23, 42, 0.06), rgba(0, 0, 0, 0.40));
|
|
55
|
+
--shadow-2xl: 0 24px 48px -12px light-dark(rgba(15, 23, 42, 0.15), rgba(0, 0, 0, 0.75));
|
|
56
|
+
/* Blur / glow — none */
|
|
57
|
+
--blur-sm: none;
|
|
58
|
+
--blur-md: none;
|
|
59
|
+
--blur-lg: none;
|
|
60
|
+
--glow-sm: 0 0 0 transparent;
|
|
61
|
+
--glow-md: 0 0 0 transparent;
|
|
62
|
+
--glow-lg: 0 0 0 transparent;
|
|
63
|
+
/* Motion — identical */
|
|
64
|
+
--duration-fast: 120ms;
|
|
65
|
+
--duration-normal: 180ms;
|
|
66
|
+
--duration-slow: 280ms;
|
|
67
|
+
--ease: cubic-bezier(.4, 0, .2, 1);
|
|
68
|
+
/* Semantic aliases */
|
|
69
|
+
--background-default: var(--paper);
|
|
70
|
+
--background-subtle: var(--paper-sunk);
|
|
71
|
+
--background-navbar: light-dark(var(--paper), var(--paper-raised));
|
|
72
|
+
--surface-default: var(--paper);
|
|
73
|
+
--surface-raised: var(--paper-raised);
|
|
74
|
+
--surface-sunk: var(--paper-sunk);
|
|
75
|
+
--surface-muted: var(--paper-sunk);
|
|
76
|
+
--surface-subtle: light-dark(var(--paper-sunk), var(--paper-raised));
|
|
77
|
+
--surface-emphasis: var(--ink);
|
|
78
|
+
--surface-glass: var(--paper-glass);
|
|
79
|
+
--text-primary: var(--ink);
|
|
80
|
+
--text-secondary: var(--ink-soft);
|
|
81
|
+
--text-muted: var(--ink-faint);
|
|
82
|
+
--text-tertiary: var(--muted);
|
|
83
|
+
--text-inverse: var(--paper);
|
|
84
|
+
--text-link: var(--ai);
|
|
85
|
+
--text-link-hover: var(--ai-ink);
|
|
86
|
+
--border-default: var(--hair);
|
|
87
|
+
--border-subtle: var(--hair-soft);
|
|
88
|
+
--border-emphasis: var(--guide);
|
|
89
|
+
--border-focus: var(--ai);
|
|
90
|
+
--interactive-hover: light-dark(rgba(15, 23, 42, 0.04), rgba(248, 250, 252, 0.05));
|
|
91
|
+
--interactive-active: light-dark(rgba(15, 23, 42, 0.08), rgba(248, 250, 252, 0.10));
|
|
92
|
+
--brand-primary: var(--ai);
|
|
93
|
+
--brand-primary-hover: var(--ai-ink);
|
|
94
|
+
--action-primary-default: var(--ai);
|
|
95
|
+
--action-primary-hover: var(--ai-ink);
|
|
96
|
+
--action-primary-active: var(--ai-ink);
|
|
97
|
+
--action-primary-wash: var(--ai-wash);
|
|
98
|
+
--action-secondary-default: var(--shu);
|
|
99
|
+
--action-secondary-hover: var(--shu);
|
|
100
|
+
--action-secondary-active: var(--shu);
|
|
101
|
+
--action-secondary-wash: var(--shu-wash);
|
|
102
|
+
--action-tertiary-default: var(--ochre);
|
|
103
|
+
--action-tertiary-hover: var(--ochre);
|
|
104
|
+
--action-tertiary-active: var(--ochre);
|
|
105
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
106
|
+
--feedback-info: var(--ai);
|
|
107
|
+
--feedback-success: light-dark(#16a34a, #22c55e);
|
|
108
|
+
--feedback-warning: var(--ochre);
|
|
109
|
+
--feedback-error: var(--shu);
|
|
110
|
+
--info-default: var(--ai);
|
|
111
|
+
--info-subtle: var(--ai-wash);
|
|
112
|
+
--info-text: light-dark(var(--ai-ink), #85BFFF);
|
|
113
|
+
--success-default: light-dark(#16a34a, #22c55e);
|
|
114
|
+
--success-subtle: light-dark(#f0fdf4, #14532d);
|
|
115
|
+
--success-text: light-dark(#15803d, #4ade80);
|
|
116
|
+
--warning-default: var(--ochre);
|
|
117
|
+
--warning-subtle: var(--ochre-wash);
|
|
118
|
+
--warning-text: light-dark(#b45309, #fbbf24);
|
|
119
|
+
--error-default: var(--shu);
|
|
120
|
+
--error-subtle: var(--shu-wash);
|
|
121
|
+
--error-text: light-dark(#b91c1c, #fca5a5);
|
|
122
|
+
/* Library scales — identical */
|
|
123
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
124
|
+
The numbered scale is the source of truth: every component reads
|
|
125
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
126
|
+
are emitted by the library as references to these, so they follow
|
|
127
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
128
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
129
|
+
--space-0: 0; /* flush */
|
|
130
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
131
|
+
--space-2: 0.75rem; /* control padding */
|
|
132
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
133
|
+
--space-4: 1rem; /* default rhythm */
|
|
134
|
+
--space-5: 1.5rem; /* section gap */
|
|
135
|
+
--space-6: 2rem; /* block gap */
|
|
136
|
+
--space-7: 3rem; /* major gap */
|
|
137
|
+
--space-8: 4rem; /* page section */
|
|
138
|
+
--space-9: 6rem; /* hero rhythm */
|
|
139
|
+
--radius-sm: var(--r-sm);
|
|
140
|
+
--radius-md: var(--r-md);
|
|
141
|
+
--radius-lg: var(--r-lg);
|
|
142
|
+
--radius-xl: 12px;
|
|
143
|
+
--radius-full: 9999px;
|
|
144
|
+
--font-primary: var(--font-sans);
|
|
145
|
+
--font-size-base: 1rem;
|
|
146
|
+
--line-height-normal: 1.5;
|
|
147
|
+
--font-weight-medium: 500;
|
|
148
|
+
--z-sticky: 1020;
|
|
149
|
+
--z-dropdown: 1030;
|
|
150
|
+
--z-backdrop: 1040;
|
|
151
|
+
--z-modal: 1050;
|
|
152
|
+
--z-popover: 1060;
|
|
153
|
+
--z-tooltip: 1070;
|
|
154
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
:root, :root[data-theme=boilerplate-dark] {
|
|
3
|
+
color-scheme: dark;
|
|
4
|
+
/* Surfaces — slate dark ramp */
|
|
5
|
+
--paper: #0f172a;
|
|
6
|
+
--paper-raised: #1e293b;
|
|
7
|
+
--paper-sunk: #020617;
|
|
8
|
+
--paper-glass: rgba(15, 23, 42, 0.85);
|
|
9
|
+
/* Ink — inverted slate */
|
|
10
|
+
--ink: #f8fafc;
|
|
11
|
+
--ink-soft: #e2e8f0;
|
|
12
|
+
--ink-faint: #94a3b8;
|
|
13
|
+
--graphite: #f1f5f9;
|
|
14
|
+
--muted: #64748b;
|
|
15
|
+
/* Lines — dark slate borders */
|
|
16
|
+
--guide: #334155;
|
|
17
|
+
--guide-soft: #1e293b;
|
|
18
|
+
--hair: #1e293b;
|
|
19
|
+
--hair-soft: #0f172a;
|
|
20
|
+
/* Primary accent — brighter blue for dark surfaces */
|
|
21
|
+
--ai: #3b82f6;
|
|
22
|
+
--ai-ink: #60a5fa;
|
|
23
|
+
--ai-wash: #1e3a8a;
|
|
24
|
+
/* Seal — red */
|
|
25
|
+
--shu: #ef4444;
|
|
26
|
+
--shu-wash: #450a0a;
|
|
27
|
+
/* Tertiary — amber */
|
|
28
|
+
--ochre: #f59e0b;
|
|
29
|
+
--ochre-wash: #422006;
|
|
30
|
+
/* Code — neutral dark syntax surface */
|
|
31
|
+
--code-bg: #020617;
|
|
32
|
+
--code-ink: #e2e8f0;
|
|
33
|
+
--code-muted: #708198;
|
|
34
|
+
--code-accent: #fb923c;
|
|
35
|
+
--code-green: #4ade80;
|
|
36
|
+
--code-blue: #60a5fa;
|
|
37
|
+
/* Typography — system stacks only (no @import) */
|
|
38
|
+
--font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
39
|
+
--font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
40
|
+
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
|
|
41
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
42
|
+
--font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
43
|
+
/* Radius */
|
|
44
|
+
--r-sm: 4px;
|
|
45
|
+
--r-md: 6px;
|
|
46
|
+
--r-lg: 8px;
|
|
47
|
+
/* Shadow — heavier on dark, neutral black */
|
|
48
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, .30);
|
|
49
|
+
--shadow-md: 0 2px 4px rgba(0, 0, 0, .40);
|
|
50
|
+
--shadow-lg: 0 6px 16px -4px rgba(0, 0, 0, .55);
|
|
51
|
+
--shadow-xl: 0 16px 32px -8px rgba(0, 0, 0, .65);
|
|
52
|
+
--shadow-2xl: 0 24px 48px -12px rgba(0, 0, 0, .75);
|
|
53
|
+
/* Blur */
|
|
54
|
+
--blur-sm: none;
|
|
55
|
+
--blur-md: none;
|
|
56
|
+
--blur-lg: none;
|
|
57
|
+
/* Glow */
|
|
58
|
+
--glow-sm: 0 0 0 transparent;
|
|
59
|
+
--glow-md: 0 0 0 transparent;
|
|
60
|
+
--glow-lg: 0 0 0 transparent;
|
|
61
|
+
/* Motion */
|
|
62
|
+
--duration-fast: 120ms;
|
|
63
|
+
--duration-normal: 180ms;
|
|
64
|
+
--duration-slow: 280ms;
|
|
65
|
+
--ease: cubic-bezier(.4, 0, .2, 1);
|
|
66
|
+
/* Backgrounds */
|
|
67
|
+
--background-default: var(--paper);
|
|
68
|
+
--background-subtle: var(--paper-sunk);
|
|
69
|
+
--background-navbar: var(--paper-raised);
|
|
70
|
+
/* Surfaces (semantic) */
|
|
71
|
+
--surface-default: var(--paper);
|
|
72
|
+
--surface-raised: var(--paper-raised);
|
|
73
|
+
--surface-sunk: var(--paper-sunk);
|
|
74
|
+
--surface-muted: var(--paper-sunk);
|
|
75
|
+
--surface-subtle: var(--paper-raised);
|
|
76
|
+
--surface-emphasis: var(--ink);
|
|
77
|
+
--surface-glass: var(--paper-glass);
|
|
78
|
+
/* Text */
|
|
79
|
+
--text-primary: var(--ink);
|
|
80
|
+
--text-secondary: var(--ink-soft);
|
|
81
|
+
--text-muted: var(--ink-faint);
|
|
82
|
+
--text-tertiary: var(--muted);
|
|
83
|
+
--text-inverse: var(--paper);
|
|
84
|
+
--text-link: var(--ai);
|
|
85
|
+
--text-link-hover: var(--ai-ink);
|
|
86
|
+
/* Borders */
|
|
87
|
+
--border-default: var(--hair);
|
|
88
|
+
--border-subtle: var(--hair-soft);
|
|
89
|
+
--border-emphasis: var(--guide);
|
|
90
|
+
--border-focus: var(--ai);
|
|
91
|
+
/* Interactive overlays — light wash on dark */
|
|
92
|
+
--interactive-hover: rgba(248, 250, 252, 0.05);
|
|
93
|
+
--interactive-active: rgba(248, 250, 252, 0.10);
|
|
94
|
+
/* Brand */
|
|
95
|
+
--brand-primary: var(--ai);
|
|
96
|
+
--brand-primary-hover: var(--ai-ink);
|
|
97
|
+
/* Action triplets */
|
|
98
|
+
--action-primary-default: var(--ai);
|
|
99
|
+
--action-primary-hover: var(--ai-ink);
|
|
100
|
+
--action-primary-active: var(--ai-ink);
|
|
101
|
+
--action-primary-wash: var(--ai-wash);
|
|
102
|
+
--action-secondary-default: var(--shu);
|
|
103
|
+
--action-secondary-hover: var(--shu);
|
|
104
|
+
--action-secondary-active: var(--shu);
|
|
105
|
+
--action-secondary-wash: var(--shu-wash);
|
|
106
|
+
--action-tertiary-default: var(--ochre);
|
|
107
|
+
--action-tertiary-hover: var(--ochre);
|
|
108
|
+
--action-tertiary-active: var(--ochre);
|
|
109
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
110
|
+
/* Feedback */
|
|
111
|
+
--feedback-info: var(--ai);
|
|
112
|
+
--feedback-success: #22c55e;
|
|
113
|
+
--feedback-warning: var(--ochre);
|
|
114
|
+
--feedback-error: var(--shu);
|
|
115
|
+
/* Status — info */
|
|
116
|
+
--info-default: var(--ai);
|
|
117
|
+
--info-subtle: var(--ai-wash);
|
|
118
|
+
--info-text: #85BFFF;
|
|
119
|
+
/* Status — success */
|
|
120
|
+
--success-default: #22c55e;
|
|
121
|
+
--success-subtle: #14532d;
|
|
122
|
+
--success-text: #4ade80;
|
|
123
|
+
/* Status — warning */
|
|
124
|
+
--warning-default: var(--ochre);
|
|
125
|
+
--warning-subtle: var(--ochre-wash);
|
|
126
|
+
--warning-text: #fbbf24;
|
|
127
|
+
/* Status — error */
|
|
128
|
+
--error-default: var(--shu);
|
|
129
|
+
--error-subtle: var(--shu-wash);
|
|
130
|
+
--error-text: #fca5a5;
|
|
131
|
+
/* Space scale */
|
|
132
|
+
--space-2xs: 0.25rem;
|
|
133
|
+
--space-xs: 0.5rem;
|
|
134
|
+
--space-sm: 0.75rem;
|
|
135
|
+
--space-md: 1rem;
|
|
136
|
+
--space-lg: 1.5rem;
|
|
137
|
+
--space-xl: 2rem;
|
|
138
|
+
/* Radius alias */
|
|
139
|
+
--radius-sm: var(--r-sm);
|
|
140
|
+
--radius-md: var(--r-md);
|
|
141
|
+
--radius-lg: var(--r-lg);
|
|
142
|
+
--radius-xl: 12px;
|
|
143
|
+
--radius-full: 9999px;
|
|
144
|
+
/* Typography */
|
|
145
|
+
--font-primary: var(--font-sans);
|
|
146
|
+
--font-size-base: 1rem;
|
|
147
|
+
--line-height-normal: 1.5;
|
|
148
|
+
--font-weight-medium: 500;
|
|
149
|
+
/* Z-index layers */
|
|
150
|
+
--z-sticky: 1020;
|
|
151
|
+
--z-dropdown: 1030;
|
|
152
|
+
--z-backdrop: 1040;
|
|
153
|
+
--z-modal: 1050;
|
|
154
|
+
--z-popover: 1060;
|
|
155
|
+
--z-tooltip: 1070;
|
|
156
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
157
|
+
The numbered scale is the source of truth: every component reads
|
|
158
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
159
|
+
are emitted by the library as references to these, so they follow
|
|
160
|
+
automatically. Change a value here and the whole page re-proportions. */
|
|
161
|
+
--space-0: 0;
|
|
162
|
+
--space-1: 0.5rem;
|
|
163
|
+
--space-2: 0.75rem;
|
|
164
|
+
--space-3: 0.875rem;
|
|
165
|
+
--space-4: 1rem;
|
|
166
|
+
--space-5: 1.5rem;
|
|
167
|
+
--space-6: 2rem;
|
|
168
|
+
--space-7: 3rem;
|
|
169
|
+
--space-8: 4rem;
|
|
170
|
+
--space-9: 6rem;
|
|
171
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
:root, :root[data-theme=boilerplate-light] {
|
|
3
|
+
color-scheme: light;
|
|
4
|
+
/* Surfaces — off-white paper, light gray sunk */
|
|
5
|
+
--paper: #fff;
|
|
6
|
+
--paper-raised: #f2f2f2;
|
|
7
|
+
--paper-sunk: #f8fafc;
|
|
8
|
+
--paper-glass: rgba(255, 255, 255, 0.85);
|
|
9
|
+
/* Ink — slate neutral ramp */
|
|
10
|
+
--ink: #0f172a;
|
|
11
|
+
--ink-soft: #1e293b;
|
|
12
|
+
--ink-faint: #475569;
|
|
13
|
+
--graphite: #0f172a;
|
|
14
|
+
--muted: #64748b;
|
|
15
|
+
/* Lines — light slate borders */
|
|
16
|
+
--guide: #cbd5e1;
|
|
17
|
+
--guide-soft: #e2e8f0;
|
|
18
|
+
--hair: #e2e8f0;
|
|
19
|
+
--hair-soft: #f1f5f9;
|
|
20
|
+
/* Primary accent — clean, recognizable blue */
|
|
21
|
+
--ai: #2563eb;
|
|
22
|
+
--ai-ink: #1d4ed8;
|
|
23
|
+
--ai-wash: #eff6ff;
|
|
24
|
+
/* Seal — red (used for error / secondary action) */
|
|
25
|
+
--shu: #dc2626;
|
|
26
|
+
--shu-wash: #fef2f2;
|
|
27
|
+
/* Tertiary — amber (used for warning) */
|
|
28
|
+
--ochre: #d97706;
|
|
29
|
+
--ochre-wash: #fffbeb;
|
|
30
|
+
/* Code — neutral light syntax surface */
|
|
31
|
+
--code-bg: #f8fafc;
|
|
32
|
+
--code-ink: #0f172a;
|
|
33
|
+
--code-muted: #64748b;
|
|
34
|
+
--code-accent: #c2410c;
|
|
35
|
+
--code-green: #15803d;
|
|
36
|
+
--code-blue: #2563eb;
|
|
37
|
+
/* Typography — system stacks only (no @import) */
|
|
38
|
+
--font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
39
|
+
--font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
40
|
+
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
|
|
41
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
42
|
+
--font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
43
|
+
/* Radius — standard, unsurprising */
|
|
44
|
+
--r-sm: 4px;
|
|
45
|
+
--r-md: 6px;
|
|
46
|
+
--r-lg: 8px;
|
|
47
|
+
/* Shadow — subtle, neutral slate */
|
|
48
|
+
--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);
|
|
49
|
+
--shadow-md: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);
|
|
50
|
+
--shadow-lg: 0 4px 12px -2px rgba(15, 23, 42, .08), 0 2px 4px -2px rgba(15, 23, 42, .05);
|
|
51
|
+
--shadow-xl: 0 12px 24px -8px rgba(15, 23, 42, .10), 0 4px 8px -4px rgba(15, 23, 42, .06);
|
|
52
|
+
--shadow-2xl: 0 24px 48px -12px rgba(15, 23, 42, .15);
|
|
53
|
+
/* Blur — Boilerplate doesn't use frosted surfaces */
|
|
54
|
+
--blur-sm: none;
|
|
55
|
+
--blur-md: none;
|
|
56
|
+
--blur-lg: none;
|
|
57
|
+
/* Glow — Boilerplate doesn't use glow effects */
|
|
58
|
+
--glow-sm: 0 0 0 transparent;
|
|
59
|
+
--glow-md: 0 0 0 transparent;
|
|
60
|
+
--glow-lg: 0 0 0 transparent;
|
|
61
|
+
/* Motion — moderate, not flashy */
|
|
62
|
+
--duration-fast: 120ms;
|
|
63
|
+
--duration-normal: 180ms;
|
|
64
|
+
--duration-slow: 280ms;
|
|
65
|
+
--ease: cubic-bezier(.4, 0, .2, 1);
|
|
66
|
+
/* Backgrounds */
|
|
67
|
+
--background-default: var(--paper);
|
|
68
|
+
--background-subtle: var(--paper-sunk);
|
|
69
|
+
--background-navbar: var(--paper);
|
|
70
|
+
/* Surfaces (semantic) */
|
|
71
|
+
--surface-default: var(--paper);
|
|
72
|
+
--surface-raised: var(--paper-raised);
|
|
73
|
+
--surface-sunk: var(--paper-sunk);
|
|
74
|
+
--surface-muted: var(--paper-sunk);
|
|
75
|
+
--surface-subtle: var(--paper-sunk);
|
|
76
|
+
--surface-emphasis: var(--ink);
|
|
77
|
+
--surface-glass: var(--paper-glass);
|
|
78
|
+
/* Text */
|
|
79
|
+
--text-primary: var(--ink);
|
|
80
|
+
--text-secondary: var(--ink-soft);
|
|
81
|
+
--text-muted: var(--ink-faint);
|
|
82
|
+
--text-tertiary: var(--muted);
|
|
83
|
+
--text-inverse: var(--paper);
|
|
84
|
+
--text-link: var(--ai);
|
|
85
|
+
--text-link-hover: var(--ai-ink);
|
|
86
|
+
/* Borders */
|
|
87
|
+
--border-default: var(--hair);
|
|
88
|
+
--border-subtle: var(--hair-soft);
|
|
89
|
+
--border-emphasis: var(--guide);
|
|
90
|
+
--border-focus: var(--ai);
|
|
91
|
+
/* Interactive overlays */
|
|
92
|
+
--interactive-hover: rgba(15, 23, 42, 0.04);
|
|
93
|
+
--interactive-active: rgba(15, 23, 42, 0.08);
|
|
94
|
+
/* Brand */
|
|
95
|
+
--brand-primary: var(--ai);
|
|
96
|
+
--brand-primary-hover: var(--ai-ink);
|
|
97
|
+
/* Action triplets */
|
|
98
|
+
--action-primary-default: var(--ai);
|
|
99
|
+
--action-primary-hover: var(--ai-ink);
|
|
100
|
+
--action-primary-active: var(--ai-ink);
|
|
101
|
+
--action-primary-wash: var(--ai-wash);
|
|
102
|
+
--action-secondary-default: var(--shu);
|
|
103
|
+
--action-secondary-hover: var(--shu);
|
|
104
|
+
--action-secondary-active: var(--shu);
|
|
105
|
+
--action-secondary-wash: var(--shu-wash);
|
|
106
|
+
--action-tertiary-default: var(--ochre);
|
|
107
|
+
--action-tertiary-hover: var(--ochre);
|
|
108
|
+
--action-tertiary-active: var(--ochre);
|
|
109
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
110
|
+
/* Feedback */
|
|
111
|
+
--feedback-info: var(--ai);
|
|
112
|
+
--feedback-success: #16a34a;
|
|
113
|
+
--feedback-warning: var(--ochre);
|
|
114
|
+
--feedback-error: var(--shu);
|
|
115
|
+
/* Status — info */
|
|
116
|
+
--info-default: var(--ai);
|
|
117
|
+
--info-subtle: var(--ai-wash);
|
|
118
|
+
--info-text: var(--ai-ink);
|
|
119
|
+
/* Status — success */
|
|
120
|
+
--success-default: #16a34a;
|
|
121
|
+
--success-subtle: #f0fdf4;
|
|
122
|
+
--success-text: #15803d;
|
|
123
|
+
/* Status — warning */
|
|
124
|
+
--warning-default: var(--ochre);
|
|
125
|
+
--warning-subtle: var(--ochre-wash);
|
|
126
|
+
--warning-text: #b45309;
|
|
127
|
+
/* Status — error */
|
|
128
|
+
--error-default: var(--shu);
|
|
129
|
+
--error-subtle: var(--shu-wash);
|
|
130
|
+
--error-text: #b91c1c;
|
|
131
|
+
/* Space scale */
|
|
132
|
+
--space-2xs: 0.25rem;
|
|
133
|
+
--space-xs: 0.5rem;
|
|
134
|
+
--space-sm: 0.75rem;
|
|
135
|
+
--space-md: 1rem;
|
|
136
|
+
--space-lg: 1.5rem;
|
|
137
|
+
--space-xl: 2rem;
|
|
138
|
+
/* Radius alias */
|
|
139
|
+
--radius-sm: var(--r-sm);
|
|
140
|
+
--radius-md: var(--r-md);
|
|
141
|
+
--radius-lg: var(--r-lg);
|
|
142
|
+
--radius-xl: 12px;
|
|
143
|
+
--radius-full: 9999px;
|
|
144
|
+
/* Typography */
|
|
145
|
+
--font-primary: var(--font-sans);
|
|
146
|
+
--font-size-base: 1rem;
|
|
147
|
+
--line-height-normal: 1.5;
|
|
148
|
+
--font-weight-medium: 500;
|
|
149
|
+
/* Z-index layers */
|
|
150
|
+
--z-sticky: 1020;
|
|
151
|
+
--z-dropdown: 1030;
|
|
152
|
+
--z-backdrop: 1040;
|
|
153
|
+
--z-modal: 1050;
|
|
154
|
+
--z-popover: 1060;
|
|
155
|
+
--z-tooltip: 1070;
|
|
156
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
157
|
+
The numbered scale is the source of truth: every component reads
|
|
158
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
159
|
+
are emitted by the library as references to these, so they follow
|
|
160
|
+
automatically. Change a value here and the whole page re-proportions. */
|
|
161
|
+
--space-0: 0;
|
|
162
|
+
--space-1: 0.5rem;
|
|
163
|
+
--space-2: 0.75rem;
|
|
164
|
+
--space-3: 0.875rem;
|
|
165
|
+
--space-4: 1rem;
|
|
166
|
+
--space-5: 1.5rem;
|
|
167
|
+
--space-6: 2rem;
|
|
168
|
+
--space-7: 3rem;
|
|
169
|
+
--space-8: 4rem;
|
|
170
|
+
--space-9: 6rem;
|
|
171
|
+
}
|