@rackbops/styles 0.1.0 → 0.1.1
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/all.css +5 -0
- package/amber-ember/base.css +61 -0
- package/amber-ember/components/alert.css +30 -0
- package/amber-ember/components/badge.css +32 -0
- package/amber-ember/components/button.css +90 -0
- package/amber-ember/components/card.css +24 -0
- package/amber-ember/components/dialog.css +33 -0
- package/amber-ember/components/form.css +72 -0
- package/amber-ember/components/link.css +47 -0
- package/amber-ember/components/log.css +19 -0
- package/amber-ember/components/muted.css +7 -0
- package/amber-ember/components/nav-rail.css +14 -0
- package/amber-ember/components/pre.css +13 -0
- package/amber-ember/components/progress.css +42 -0
- package/amber-ember/components/stepper.css +87 -0
- package/amber-ember/components/table.css +50 -0
- package/amber-ember/components/tabs.css +46 -0
- package/amber-ember/design.md +78 -0
- package/amber-ember/index.css +18 -0
- package/amber-ember/tokens.css +72 -0
- package/amber-hearth/base.css +61 -0
- package/amber-hearth/components/alert.css +30 -0
- package/amber-hearth/components/badge.css +32 -0
- package/amber-hearth/components/button.css +90 -0
- package/amber-hearth/components/card.css +24 -0
- package/amber-hearth/components/dialog.css +33 -0
- package/amber-hearth/components/form.css +72 -0
- package/amber-hearth/components/link.css +47 -0
- package/amber-hearth/components/log.css +19 -0
- package/amber-hearth/components/muted.css +7 -0
- package/amber-hearth/components/nav-rail.css +14 -0
- package/amber-hearth/components/pre.css +13 -0
- package/amber-hearth/components/progress.css +42 -0
- package/amber-hearth/components/stepper.css +87 -0
- package/amber-hearth/components/table.css +50 -0
- package/amber-hearth/components/tabs.css +46 -0
- package/amber-hearth/design.md +146 -0
- package/amber-hearth/index.css +18 -0
- package/amber-hearth/tokens.css +77 -0
- package/arcane-obsidian/base.css +20 -0
- package/arcane-obsidian/components/button.css +15 -0
- package/arcane-obsidian/components/log.css +19 -0
- package/arcane-obsidian/components/muted.css +7 -0
- package/arcane-obsidian/components/nav-rail.css +14 -0
- package/arcane-obsidian/components/pre.css +13 -0
- package/arcane-obsidian/components/stepper.css +87 -0
- package/arcane-obsidian/components/table.css +14 -0
- package/arcane-obsidian/design.md +30 -2
- package/arcane-obsidian/index.css +5 -0
- package/arcane-parchment/base.css +20 -0
- package/arcane-parchment/components/button.css +15 -0
- package/arcane-parchment/components/log.css +19 -0
- package/arcane-parchment/components/muted.css +7 -0
- package/arcane-parchment/components/nav-rail.css +14 -0
- package/arcane-parchment/components/pre.css +13 -0
- package/arcane-parchment/components/stepper.css +87 -0
- package/arcane-parchment/components/table.css +14 -0
- package/arcane-parchment/design.md +10 -6
- package/arcane-parchment/index.css +5 -0
- package/concrete-signal/base.css +57 -0
- package/concrete-signal/components/alert.css +44 -0
- package/concrete-signal/components/badge.css +38 -0
- package/concrete-signal/components/button.css +98 -0
- package/concrete-signal/components/card.css +21 -0
- package/concrete-signal/components/dialog.css +33 -0
- package/concrete-signal/components/form.css +138 -0
- package/concrete-signal/components/link.css +44 -0
- package/concrete-signal/components/log.css +19 -0
- package/concrete-signal/components/muted.css +7 -0
- package/concrete-signal/components/nav-rail.css +15 -0
- package/concrete-signal/components/pre.css +14 -0
- package/concrete-signal/components/progress.css +44 -0
- package/concrete-signal/components/stepper.css +83 -0
- package/concrete-signal/components/table.css +48 -0
- package/concrete-signal/components/tabs.css +49 -0
- package/concrete-signal/design.md +171 -0
- package/concrete-signal/index.css +18 -0
- package/concrete-signal/tokens.css +75 -0
- package/concrete-signal-light/base.css +57 -0
- package/concrete-signal-light/components/alert.css +44 -0
- package/concrete-signal-light/components/badge.css +38 -0
- package/concrete-signal-light/components/button.css +98 -0
- package/concrete-signal-light/components/card.css +21 -0
- package/concrete-signal-light/components/dialog.css +33 -0
- package/concrete-signal-light/components/form.css +138 -0
- package/concrete-signal-light/components/link.css +44 -0
- package/concrete-signal-light/components/log.css +19 -0
- package/concrete-signal-light/components/muted.css +7 -0
- package/concrete-signal-light/components/nav-rail.css +15 -0
- package/concrete-signal-light/components/pre.css +14 -0
- package/concrete-signal-light/components/progress.css +44 -0
- package/concrete-signal-light/components/stepper.css +84 -0
- package/concrete-signal-light/components/table.css +48 -0
- package/concrete-signal-light/components/tabs.css +49 -0
- package/concrete-signal-light/design.md +82 -0
- package/concrete-signal-light/index.css +18 -0
- package/concrete-signal-light/tokens.css +75 -0
- package/css-side-effect.d.ts +5 -0
- package/luminous-precision/base.css +12 -0
- package/luminous-precision/components/button.css +25 -0
- package/luminous-precision/components/link.css +8 -0
- package/luminous-precision/components/log.css +19 -0
- package/luminous-precision/components/muted.css +7 -0
- package/luminous-precision/components/nav-rail.css +17 -0
- package/luminous-precision/components/pre.css +14 -0
- package/luminous-precision/components/progress.css +14 -5
- package/luminous-precision/components/stepper.css +89 -0
- package/luminous-precision/components/table.css +17 -0
- package/luminous-precision/design.md +44 -9
- package/luminous-precision/index.css +5 -0
- package/manifest.json +20 -0
- package/mono-field/base.css +59 -0
- package/mono-field/components/alert.css +35 -0
- package/mono-field/components/badge.css +34 -0
- package/mono-field/components/button.css +101 -0
- package/mono-field/components/card.css +20 -0
- package/mono-field/components/dialog.css +34 -0
- package/mono-field/components/form.css +91 -0
- package/mono-field/components/link.css +47 -0
- package/mono-field/components/log.css +19 -0
- package/mono-field/components/muted.css +7 -0
- package/mono-field/components/nav-rail.css +14 -0
- package/mono-field/components/pre.css +13 -0
- package/mono-field/components/progress.css +42 -0
- package/mono-field/components/stepper.css +86 -0
- package/mono-field/components/table.css +47 -0
- package/mono-field/components/tabs.css +48 -0
- package/mono-field/design.md +151 -0
- package/mono-field/index.css +18 -0
- package/mono-field/tokens.css +76 -0
- package/neon-butterfly/base.css +18 -0
- package/neon-butterfly/components/button.css +26 -0
- package/neon-butterfly/components/link.css +10 -0
- package/neon-butterfly/components/log.css +19 -0
- package/neon-butterfly/components/muted.css +7 -0
- package/neon-butterfly/components/nav-rail.css +17 -0
- package/neon-butterfly/components/pre.css +13 -0
- package/neon-butterfly/components/progress.css +14 -5
- package/neon-butterfly/components/stepper.css +89 -0
- package/neon-butterfly/components/table.css +15 -0
- package/neon-butterfly/design.md +40 -4
- package/neon-butterfly/index.css +5 -0
- package/package.json +61 -32
- package/rackbops-noir/base.css +11 -2
- package/rackbops-noir/components/button.css +16 -0
- package/rackbops-noir/components/card.css +9 -0
- package/rackbops-noir/components/log.css +19 -0
- package/rackbops-noir/components/muted.css +7 -0
- package/rackbops-noir/components/nav-rail.css +14 -0
- package/rackbops-noir/components/pre.css +13 -0
- package/rackbops-noir/components/principle.css +1 -0
- package/rackbops-noir/components/stepper.css +87 -0
- package/rackbops-noir/components/table.css +18 -0
- package/rackbops-noir/design.md +6 -3
- package/rackbops-noir/index.css +5 -0
- package/rackbops-studio/base.css +11 -2
- package/rackbops-studio/components/button.css +16 -0
- package/rackbops-studio/components/card.css +9 -0
- package/rackbops-studio/components/log.css +19 -0
- package/rackbops-studio/components/muted.css +7 -0
- package/rackbops-studio/components/nav-rail.css +14 -0
- package/rackbops-studio/components/pre.css +13 -0
- package/rackbops-studio/components/principle.css +1 -0
- package/rackbops-studio/components/stepper.css +87 -0
- package/rackbops-studio/components/table.css +18 -0
- package/rackbops-studio/design.md +29 -2
- package/rackbops-studio/index.css +5 -0
- package/summer-cloud/base.css +13 -1
- package/summer-cloud/components/button.css +17 -0
- package/summer-cloud/components/log.css +19 -0
- package/summer-cloud/components/muted.css +8 -0
- package/summer-cloud/components/nav-rail.css +17 -0
- package/summer-cloud/components/pre.css +16 -0
- package/summer-cloud/components/progress.css +14 -8
- package/summer-cloud/components/stepper.css +90 -0
- package/summer-cloud/components/table.css +11 -0
- package/summer-cloud/design.md +41 -3
- package/summer-cloud/index.css +5 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* amber-ember — tabs
|
|
2
|
+
* Normal-case text tabs; the active tab carries accent text, underlined with
|
|
3
|
+
* the theme's one rationed gradient — amber -> clay -> gold. This is the only
|
|
4
|
+
* place --rb-accent-grad appears in this theme. */
|
|
5
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tabs {
|
|
6
|
+
display: flex;
|
|
7
|
+
gap: var(--rb-space-2);
|
|
8
|
+
border-bottom: 1px solid var(--rb-border);
|
|
9
|
+
}
|
|
10
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tab {
|
|
11
|
+
position: relative;
|
|
12
|
+
padding: var(--rb-space-2) var(--rb-space-4);
|
|
13
|
+
background: transparent;
|
|
14
|
+
border: 0;
|
|
15
|
+
color: var(--rb-text-soft);
|
|
16
|
+
font-family: var(--rb-font-body);
|
|
17
|
+
font-weight: var(--rb-font-weight-medium);
|
|
18
|
+
font-size: var(--rb-text-sm);
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
transition: color var(--rb-transition);
|
|
21
|
+
}
|
|
22
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tab:hover {
|
|
23
|
+
color: var(--rb-text);
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tab.rb-tab--active {
|
|
26
|
+
color: var(--rb-accent);
|
|
27
|
+
}
|
|
28
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tab.rb-tab--active::after {
|
|
29
|
+
content: "";
|
|
30
|
+
position: absolute;
|
|
31
|
+
left: var(--rb-space-3);
|
|
32
|
+
right: var(--rb-space-3);
|
|
33
|
+
bottom: -1px;
|
|
34
|
+
height: 2px;
|
|
35
|
+
border-radius: var(--rb-radius-pill);
|
|
36
|
+
background: var(--rb-accent-grad);
|
|
37
|
+
}
|
|
38
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tabpanel {
|
|
39
|
+
padding: var(--rb-space-4) 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media (prefers-reduced-motion: reduce) {
|
|
43
|
+
:where([data-rb-style="amber-ember"], [data-rb-style="amber-ember"] *).rb-tab {
|
|
44
|
+
transition: none;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# amber-ember
|
|
2
|
+
|
|
3
|
+
The dark, espresso-ground counterpart of **amber-hearth**. Same warm,
|
|
4
|
+
hand-crafted editorial design language — clay/amber accent, the library's only
|
|
5
|
+
serif display voice (system serif for headings and titles over a humanist
|
|
6
|
+
system-ui body), the most generously rounded shape language in the library, and
|
|
7
|
+
warm-toned diffused shadows — rendered on a deep espresso ground instead of
|
|
8
|
+
warm cream. It ships the identical `rb-*` component set as amber-hearth — the
|
|
9
|
+
components are token-driven, so only the palette differs — and swaps in with a
|
|
10
|
+
single attribute flip.
|
|
11
|
+
|
|
12
|
+
## Color
|
|
13
|
+
|
|
14
|
+
| Role | Value | Usage |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Background | `#1c130c` (espresso) | Page canvas |
|
|
17
|
+
| Surface | `#26190f` | Cards, dialogs, panels |
|
|
18
|
+
| Surface 2 | `#331f13` | Raised/hover surface, active-tab wash base |
|
|
19
|
+
| Surface sunken | `#150e08` | Inset fields, progress troughs |
|
|
20
|
+
| Text | `#f5e9da` | Body text |
|
|
21
|
+
| Text soft | `#c9b39a` | Secondary text |
|
|
22
|
+
| Text faint | `#a68a6c` | Labels, table headers, meta |
|
|
23
|
+
| Border | `#40291a` | Resting hairline borders |
|
|
24
|
+
| Border strong | `#5a3a24` | Dialog edges, header rules |
|
|
25
|
+
| Accent | `#e08a3f` (warm amber) | The sole brand voice: emphasis, active state, focus |
|
|
26
|
+
| Accent fg | `#1c130c` | Dark espresso ink on the solid amber fill |
|
|
27
|
+
| Accent wash | `rgba(224,138,63,.18)` | Active/hover tint behind accent text |
|
|
28
|
+
| Info | `#5a9fc4` | Informational chips |
|
|
29
|
+
| Success | `#6ba26e` | Healthy/live status |
|
|
30
|
+
| Warning | `#dba748` | Caution status |
|
|
31
|
+
| Danger | `#d1614a` | Destructive actions, errors |
|
|
32
|
+
|
|
33
|
+
**Rules.** Colour is functional. Resting UI is espresso, near-black wells, and
|
|
34
|
+
warm neutral ink; amber appears only on interaction, focus, active state, and
|
|
35
|
+
emphasis. Colour beyond the accent is *earned* — severity and status badges are
|
|
36
|
+
the one place other hues appear. The one gradient (`--rb-accent-grad`, amber ->
|
|
37
|
+
clay -> gold) is rationed to exactly one place across the whole theme — the
|
|
38
|
+
active-tab underline — never spent twice.
|
|
39
|
+
|
|
40
|
+
## Typography
|
|
41
|
+
|
|
42
|
+
Identical to amber-hearth: a system serif stack (`"Iowan Old Style", "Palatino
|
|
43
|
+
Linotype", Palatino, Georgia, serif`) for headings, card titles, and dialog
|
|
44
|
+
titles at weight 700 with tight tracking (`-0.01em`) — the library's only serif
|
|
45
|
+
voice — over a `system-ui` body at weight 400. Labels stay normal-case, weight
|
|
46
|
+
600, tracked `0.04em`.
|
|
47
|
+
|
|
48
|
+
## Shape & effects
|
|
49
|
+
|
|
50
|
+
Identical to amber-hearth — see its `design.md` for the full detail. Radius
|
|
51
|
+
`0.875rem` (14px) for buttons/inputs/rows, `1.25rem` (20px) for cards/dialogs,
|
|
52
|
+
true pills for badges/progress; warm-toned diffused shadows (deepened to
|
|
53
|
+
near-black for the dark ground); transitions `0.18s`; 4px spacing rhythm; the
|
|
54
|
+
one gradient rationed to the active-tab underline only.
|
|
55
|
+
|
|
56
|
+
## Components
|
|
57
|
+
|
|
58
|
+
Class prefix `rb-`; the full amber-hearth inventory, styled identically from
|
|
59
|
+
tokens: `.rb-btn` (+ `--primary/--accent/--danger/--ghost`, `--sm` compact size, `.rb-icon-btn` icon-only square), `.rb-card` (+
|
|
60
|
+
`--raised`), `.rb-link` (+ `--active`), `.rb-nav-rail`, the form set (`.rb-input` /
|
|
61
|
+
`.rb-textarea` / `.rb-select` / `.rb-label` / `.rb-field` / `.rb-choice` /
|
|
62
|
+
`.rb-checkbox` / `.rb-radio` / `.rb-switch`), `.rb-badge`, `.rb-alert`,
|
|
63
|
+
`.rb-dialog`, `.rb-tabs` / `.rb-tab` / `.rb-tabpanel`, `.rb-table` (+
|
|
64
|
+
`.rb-num`, `--interactive`), `.rb-progress` / `.rb-spinner` (keyframe `rb-ember-spin`), `.rb-stepper`,
|
|
65
|
+
`.rb-muted`, `.rb-pre` (+ `.rb-log`). See amber-hearth's `design.md` for the per-component
|
|
66
|
+
notes — the behaviour is the same; only the palette is dark.
|
|
67
|
+
|
|
68
|
+
## Light counterpart
|
|
69
|
+
|
|
70
|
+
`amber-hearth` — the primary, light look. This theme and it share the same
|
|
71
|
+
`--rb-*` baseline and `rb-*` classes, so switching `data-rb-style` between them
|
|
72
|
+
restyles a page without touching markup.
|
|
73
|
+
|
|
74
|
+
## Scoping
|
|
75
|
+
|
|
76
|
+
Every rule is guarded by `data-rb-style="amber-ember"` (self or ancestor),
|
|
77
|
+
wrapped in zero-specificity `:where()`. Set the attribute on `<html>` for a page
|
|
78
|
+
or on a container for an embedded island.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* amber-ember — full theme entry point */
|
|
2
|
+
@import "./tokens.css";
|
|
3
|
+
@import "./base.css";
|
|
4
|
+
@import "./components/card.css";
|
|
5
|
+
@import "./components/link.css";
|
|
6
|
+
@import "./components/nav-rail.css";
|
|
7
|
+
@import "./components/button.css";
|
|
8
|
+
@import "./components/form.css";
|
|
9
|
+
@import "./components/badge.css";
|
|
10
|
+
@import "./components/alert.css";
|
|
11
|
+
@import "./components/dialog.css";
|
|
12
|
+
@import "./components/tabs.css";
|
|
13
|
+
@import "./components/table.css";
|
|
14
|
+
@import "./components/progress.css";
|
|
15
|
+
@import "./components/stepper.css";
|
|
16
|
+
@import "./components/muted.css";
|
|
17
|
+
@import "./components/pre.css";
|
|
18
|
+
@import "./components/log.css";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* amber-ember — design tokens
|
|
2
|
+
* The dark counterpart of amber-hearth: same warm hand-crafted editorial
|
|
3
|
+
* voice — clay-terracotta accent, the library's only serif display voice — on
|
|
4
|
+
* an espresso ground instead of warm cream. Consume via:
|
|
5
|
+
* @import "@rackbops/styles/amber-ember/tokens";
|
|
6
|
+
* or pull the whole theme with ./index.css.
|
|
7
|
+
*
|
|
8
|
+
* Nothing applies until an element carries data-rb-style="amber-ember" — set it
|
|
9
|
+
* on <html> for a page, or on any container for an embedded island. The :where()
|
|
10
|
+
* keeps specificity at zero, so any consumer rule overrides.
|
|
11
|
+
*
|
|
12
|
+
* Every theme declares the same baseline token set (styles/test enforces
|
|
13
|
+
* parity); this theme adds nothing beyond it. It ships the identical `rb-*`
|
|
14
|
+
* component set as amber-hearth — the components are token-driven, so only the
|
|
15
|
+
* palette differs. See amber-hearth/design.md for the light, primary look.
|
|
16
|
+
*/
|
|
17
|
+
:where([data-rb-style="amber-ember"]) {
|
|
18
|
+
color-scheme: dark;
|
|
19
|
+
|
|
20
|
+
/* color — espresso ground, warm amber accent */
|
|
21
|
+
--rb-bg: #1c130c;
|
|
22
|
+
--rb-surface: #26190f;
|
|
23
|
+
--rb-surface-2: #331f13;
|
|
24
|
+
--rb-surface-sunken: #150e08;
|
|
25
|
+
--rb-text: #f5e9da;
|
|
26
|
+
--rb-text-soft: #c9b39a;
|
|
27
|
+
--rb-text-faint: #a68a6c;
|
|
28
|
+
--rb-border: #40291a;
|
|
29
|
+
--rb-border-strong: #5a3a24;
|
|
30
|
+
|
|
31
|
+
/* accent — warm amber is the sole brand voice */
|
|
32
|
+
--rb-accent: #e08a3f;
|
|
33
|
+
--rb-accent-fg: #1c130c;
|
|
34
|
+
--rb-accent-wash: rgba(224, 138, 63, 0.18);
|
|
35
|
+
|
|
36
|
+
/* the ONE gradient — rationed to the active-tab underline only */
|
|
37
|
+
--rb-accent-grad: linear-gradient(120deg, #e08a3f, #c1592f 50%, #f2c15a);
|
|
38
|
+
|
|
39
|
+
/* semantic */
|
|
40
|
+
--rb-info: #5a9fc4;
|
|
41
|
+
--rb-success: #6ba26e;
|
|
42
|
+
--rb-warning: #dba748;
|
|
43
|
+
--rb-danger: #d1614a;
|
|
44
|
+
|
|
45
|
+
/* typography — the library's only serif display voice, over a sans body */
|
|
46
|
+
--rb-font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
|
|
47
|
+
--rb-font-body: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
48
|
+
--rb-font-mono: ui-monospace, "Cascadia Code", "Cascadia Mono", "Segoe UI Mono", Consolas, Menlo, monospace;
|
|
49
|
+
--rb-font-weight: 400;
|
|
50
|
+
--rb-font-weight-medium: 600;
|
|
51
|
+
--rb-font-weight-bold: 700;
|
|
52
|
+
--rb-heading-tracking: -0.01em;
|
|
53
|
+
--rb-label-tracking: 0.04em;
|
|
54
|
+
--rb-text-sm: 13px;
|
|
55
|
+
|
|
56
|
+
/* shape & effects — the most generously rounded theme in the roster, warm
|
|
57
|
+
* diffused shadows (deepened for the dark ground), unhurried transitions */
|
|
58
|
+
--rb-radius: 0.875rem;
|
|
59
|
+
--rb-radius-lg: 1.25rem;
|
|
60
|
+
--rb-radius-pill: 999px;
|
|
61
|
+
--rb-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.35);
|
|
62
|
+
--rb-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5);
|
|
63
|
+
--rb-blur: 12px;
|
|
64
|
+
--rb-transition: 0.18s;
|
|
65
|
+
|
|
66
|
+
/* spacing — 4px rhythm */
|
|
67
|
+
--rb-space-1: 0.25rem;
|
|
68
|
+
--rb-space-2: 0.5rem;
|
|
69
|
+
--rb-space-3: 0.75rem;
|
|
70
|
+
--rb-space-4: 1rem;
|
|
71
|
+
--rb-space-5: 1.5rem;
|
|
72
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* amber-hearth — base styles
|
|
2
|
+
* Scoped defaults. Requires tokens.css. Fonts are system stacks (a system serif
|
|
3
|
+
* for display, system-ui for body) — nothing to load, no webfont network hop.
|
|
4
|
+
*
|
|
5
|
+
* The element carrying data-rb-style is the theme's canvas: it gets the
|
|
6
|
+
* background, text color, and body font — whether that is <html> for a page
|
|
7
|
+
* or a mount container for an embedded island. Page-only rules (body margin,
|
|
8
|
+
* viewport height) apply only when the attribute sits on <html>.
|
|
9
|
+
*/
|
|
10
|
+
:where([data-rb-style="amber-hearth"]) {
|
|
11
|
+
background-color: var(--rb-bg);
|
|
12
|
+
color: var(--rb-text);
|
|
13
|
+
font-family: var(--rb-font-body);
|
|
14
|
+
font-weight: var(--rb-font-weight);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *),
|
|
18
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *)::before,
|
|
19
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *)::after {
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where(html[data-rb-style="amber-hearth"]) body {
|
|
24
|
+
margin: 0;
|
|
25
|
+
min-height: 100vh;
|
|
26
|
+
background-color: var(--rb-bg);
|
|
27
|
+
color: var(--rb-text);
|
|
28
|
+
font-family: var(--rb-font-body);
|
|
29
|
+
font-weight: var(--rb-font-weight);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Headings and titles are the one place this theme goes serif — the library's
|
|
33
|
+
* only serif display voice. Body copy and UI chrome (buttons, labels, table
|
|
34
|
+
* text) stay on the sans body font. */
|
|
35
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *):where(h1, h2, h3, h4, h5, h6) {
|
|
36
|
+
margin: 0 0 var(--rb-space-3);
|
|
37
|
+
font-family: var(--rb-font-display);
|
|
38
|
+
font-weight: var(--rb-font-weight-bold);
|
|
39
|
+
letter-spacing: var(--rb-heading-tracking);
|
|
40
|
+
line-height: 1.2;
|
|
41
|
+
text-wrap: balance;
|
|
42
|
+
color: var(--rb-text);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *):where(p) {
|
|
46
|
+
margin: 0 0 var(--rb-space-3);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *):where(ul, ol) {
|
|
50
|
+
margin: 0 0 var(--rb-space-3);
|
|
51
|
+
padding-inline-start: var(--rb-space-4);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *):where(a) {
|
|
55
|
+
color: var(--rb-accent);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *)::selection {
|
|
59
|
+
background: var(--rb-accent);
|
|
60
|
+
color: var(--rb-accent-fg);
|
|
61
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* amber-hearth — alert
|
|
2
|
+
* A surface panel with a 3px left bar carrying the semantic colour. */
|
|
3
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: var(--rb-space-1);
|
|
7
|
+
padding: var(--rb-space-3) var(--rb-space-4);
|
|
8
|
+
background: var(--rb-surface);
|
|
9
|
+
border: 1px solid var(--rb-border);
|
|
10
|
+
border-left: 3px solid var(--rb-accent);
|
|
11
|
+
border-radius: var(--rb-radius);
|
|
12
|
+
color: var(--rb-text);
|
|
13
|
+
font-family: var(--rb-font-body);
|
|
14
|
+
font-size: var(--rb-text-sm);
|
|
15
|
+
}
|
|
16
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert__title {
|
|
17
|
+
font-weight: var(--rb-font-weight-medium);
|
|
18
|
+
}
|
|
19
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert--info {
|
|
20
|
+
border-left-color: var(--rb-info);
|
|
21
|
+
}
|
|
22
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert--success {
|
|
23
|
+
border-left-color: var(--rb-success);
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert--warning {
|
|
26
|
+
border-left-color: var(--rb-warning);
|
|
27
|
+
}
|
|
28
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-alert--danger {
|
|
29
|
+
border-left-color: var(--rb-danger);
|
|
30
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* amber-hearth — badge / status chip
|
|
2
|
+
* A true pill: a 16%-alpha tint of its hue behind full-strength text. Normal
|
|
3
|
+
* case, medium weight — this theme has no uppercase-shouty labels. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-badge {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
padding: 2px var(--rb-space-2);
|
|
9
|
+
border-radius: var(--rb-radius-pill);
|
|
10
|
+
font-family: var(--rb-font-body);
|
|
11
|
+
font-size: 12px;
|
|
12
|
+
font-weight: var(--rb-font-weight-medium);
|
|
13
|
+
letter-spacing: var(--rb-label-tracking);
|
|
14
|
+
background: var(--rb-accent-wash);
|
|
15
|
+
color: var(--rb-accent);
|
|
16
|
+
}
|
|
17
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-badge--info {
|
|
18
|
+
background: color-mix(in srgb, var(--rb-info) 16%, transparent);
|
|
19
|
+
color: var(--rb-info);
|
|
20
|
+
}
|
|
21
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-badge--success {
|
|
22
|
+
background: color-mix(in srgb, var(--rb-success) 16%, transparent);
|
|
23
|
+
color: var(--rb-success);
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-badge--warning {
|
|
26
|
+
background: color-mix(in srgb, var(--rb-warning) 16%, transparent);
|
|
27
|
+
color: var(--rb-warning);
|
|
28
|
+
}
|
|
29
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-badge--danger {
|
|
30
|
+
background: color-mix(in srgb, var(--rb-danger) 16%, transparent);
|
|
31
|
+
color: var(--rb-danger);
|
|
32
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/* amber-hearth — button
|
|
2
|
+
* Soft surface-2 ghost by default; --primary is the one solid clay fill. Buttons
|
|
3
|
+
* stay on the sans body voice (serif is reserved for headings/titles). Hover
|
|
4
|
+
* lifts via a softer shadow, never a hard transform — cozy, not snappy. */
|
|
5
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn {
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
gap: var(--rb-space-2);
|
|
10
|
+
padding: var(--rb-space-2) var(--rb-space-4);
|
|
11
|
+
background: var(--rb-surface-2);
|
|
12
|
+
border: 1px solid var(--rb-border);
|
|
13
|
+
border-radius: var(--rb-radius);
|
|
14
|
+
color: var(--rb-text);
|
|
15
|
+
font-family: var(--rb-font-body);
|
|
16
|
+
font-weight: var(--rb-font-weight-medium);
|
|
17
|
+
font-size: var(--rb-text-sm);
|
|
18
|
+
line-height: 1;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
transition:
|
|
21
|
+
background var(--rb-transition),
|
|
22
|
+
border-color var(--rb-transition),
|
|
23
|
+
color var(--rb-transition),
|
|
24
|
+
box-shadow var(--rb-transition);
|
|
25
|
+
}
|
|
26
|
+
/* --sm: compact size for inline/table-row actions (composes with any variant) */
|
|
27
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--sm {
|
|
28
|
+
padding: var(--rb-space-1) var(--rb-space-3);
|
|
29
|
+
font-size: calc(var(--rb-text-sm) - 1px);
|
|
30
|
+
}
|
|
31
|
+
/* --icon: square icon-only hit target (>=2rem); pair with .rb-btn (+ an
|
|
32
|
+
* optional color variant) — inherits color/border/hover/focus from it. */
|
|
33
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-icon-btn {
|
|
34
|
+
padding: var(--rb-space-2);
|
|
35
|
+
min-width: 2rem;
|
|
36
|
+
min-height: 2rem;
|
|
37
|
+
gap: 0;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
line-height: 1;
|
|
40
|
+
}
|
|
41
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn:hover,
|
|
42
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn:focus-visible {
|
|
43
|
+
border-color: var(--rb-border-strong);
|
|
44
|
+
outline: none;
|
|
45
|
+
}
|
|
46
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--primary {
|
|
47
|
+
background: var(--rb-accent);
|
|
48
|
+
border-color: var(--rb-accent);
|
|
49
|
+
color: var(--rb-accent-fg);
|
|
50
|
+
box-shadow: var(--rb-shadow-sm);
|
|
51
|
+
}
|
|
52
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--primary:hover,
|
|
53
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--primary:focus-visible {
|
|
54
|
+
box-shadow: var(--rb-shadow-lg);
|
|
55
|
+
}
|
|
56
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--accent {
|
|
57
|
+
background: var(--rb-accent-wash);
|
|
58
|
+
border-color: transparent;
|
|
59
|
+
color: var(--rb-accent);
|
|
60
|
+
}
|
|
61
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--danger {
|
|
62
|
+
background: transparent;
|
|
63
|
+
border-color: color-mix(in srgb, var(--rb-danger) 40%, var(--rb-border));
|
|
64
|
+
color: var(--rb-danger);
|
|
65
|
+
}
|
|
66
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--danger:hover,
|
|
67
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--danger:focus-visible {
|
|
68
|
+
border-color: var(--rb-danger);
|
|
69
|
+
}
|
|
70
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--ghost {
|
|
71
|
+
background: transparent;
|
|
72
|
+
border-color: transparent;
|
|
73
|
+
color: var(--rb-text-soft);
|
|
74
|
+
}
|
|
75
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--ghost:hover,
|
|
76
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn--ghost:focus-visible {
|
|
77
|
+
background: var(--rb-surface-2);
|
|
78
|
+
border-color: var(--rb-border);
|
|
79
|
+
color: var(--rb-text);
|
|
80
|
+
}
|
|
81
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn:disabled {
|
|
82
|
+
opacity: 0.5;
|
|
83
|
+
cursor: not-allowed;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@media (prefers-reduced-motion: reduce) {
|
|
87
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-btn {
|
|
88
|
+
transition: none;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* amber-hearth — card
|
|
2
|
+
* Solid raised panel, generously rounded, warm diffused shadow. A heading
|
|
3
|
+
* (h1-h3) inside a card is the theme's serif display voice, styled bold. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-card {
|
|
5
|
+
background: var(--rb-surface);
|
|
6
|
+
border: 1px solid var(--rb-border);
|
|
7
|
+
border-radius: var(--rb-radius-lg);
|
|
8
|
+
padding: var(--rb-space-5);
|
|
9
|
+
color: var(--rb-text);
|
|
10
|
+
box-shadow: var(--rb-shadow-sm);
|
|
11
|
+
}
|
|
12
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-card--raised {
|
|
13
|
+
background: var(--rb-surface-2);
|
|
14
|
+
box-shadow: var(--rb-shadow-lg);
|
|
15
|
+
}
|
|
16
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-card > :where(h1, h2, h3):first-child {
|
|
17
|
+
margin-top: 0;
|
|
18
|
+
}
|
|
19
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-card :where(h1, h2, h3) {
|
|
20
|
+
font-family: var(--rb-font-display);
|
|
21
|
+
font-weight: var(--rb-font-weight-bold);
|
|
22
|
+
letter-spacing: var(--rb-heading-tracking);
|
|
23
|
+
color: var(--rb-text);
|
|
24
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* amber-hearth — dialog
|
|
2
|
+
* Native <dialog>: a raised, generously rounded panel over a blurred backdrop.
|
|
3
|
+
* The title is the theme's serif display voice, set bold. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-dialog {
|
|
5
|
+
padding: 0;
|
|
6
|
+
border: 1px solid var(--rb-border-strong);
|
|
7
|
+
border-radius: var(--rb-radius-lg);
|
|
8
|
+
background: var(--rb-surface);
|
|
9
|
+
color: var(--rb-text);
|
|
10
|
+
box-shadow: var(--rb-shadow-lg);
|
|
11
|
+
max-width: min(92vw, 34rem);
|
|
12
|
+
}
|
|
13
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-dialog::backdrop {
|
|
14
|
+
background: rgba(43, 31, 20, 0.4);
|
|
15
|
+
backdrop-filter: blur(var(--rb-blur));
|
|
16
|
+
}
|
|
17
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-dialog__body {
|
|
18
|
+
padding: var(--rb-space-5);
|
|
19
|
+
}
|
|
20
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-dialog__title {
|
|
21
|
+
margin: 0 0 var(--rb-space-3);
|
|
22
|
+
font-family: var(--rb-font-display);
|
|
23
|
+
font-weight: var(--rb-font-weight-bold);
|
|
24
|
+
letter-spacing: var(--rb-heading-tracking);
|
|
25
|
+
color: var(--rb-text);
|
|
26
|
+
}
|
|
27
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-dialog__actions {
|
|
28
|
+
display: flex;
|
|
29
|
+
justify-content: flex-end;
|
|
30
|
+
gap: var(--rb-space-2);
|
|
31
|
+
padding: var(--rb-space-3) var(--rb-space-5);
|
|
32
|
+
border-top: 1px solid var(--rb-border);
|
|
33
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* amber-hearth — form controls
|
|
2
|
+
* Sunken fields on the warm cream ground; focus swaps the border for the accent
|
|
3
|
+
* plus a soft accent-wash ring. Labels stay normal-case, medium weight, sans. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-field {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
}
|
|
9
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-label {
|
|
10
|
+
font-family: var(--rb-font-body);
|
|
11
|
+
font-size: var(--rb-text-sm);
|
|
12
|
+
font-weight: var(--rb-font-weight-medium);
|
|
13
|
+
color: var(--rb-text-soft);
|
|
14
|
+
}
|
|
15
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-input,
|
|
16
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-textarea,
|
|
17
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-select {
|
|
18
|
+
width: 100%;
|
|
19
|
+
padding: var(--rb-space-2) var(--rb-space-3);
|
|
20
|
+
background: var(--rb-surface-sunken);
|
|
21
|
+
border: 1px solid var(--rb-border);
|
|
22
|
+
border-radius: var(--rb-radius);
|
|
23
|
+
color: var(--rb-text);
|
|
24
|
+
font-family: var(--rb-font-body);
|
|
25
|
+
font-size: var(--rb-text-sm);
|
|
26
|
+
transition:
|
|
27
|
+
border-color var(--rb-transition),
|
|
28
|
+
box-shadow var(--rb-transition);
|
|
29
|
+
}
|
|
30
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-textarea {
|
|
31
|
+
min-height: 5rem;
|
|
32
|
+
resize: vertical;
|
|
33
|
+
}
|
|
34
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-input:focus-visible,
|
|
35
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-textarea:focus-visible,
|
|
36
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-select:focus-visible {
|
|
37
|
+
outline: none;
|
|
38
|
+
border-color: var(--rb-accent);
|
|
39
|
+
box-shadow: 0 0 0 3px var(--rb-accent-wash);
|
|
40
|
+
}
|
|
41
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-input::placeholder,
|
|
42
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-textarea::placeholder {
|
|
43
|
+
color: var(--rb-text-faint);
|
|
44
|
+
}
|
|
45
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-choice {
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: var(--rb-space-2);
|
|
49
|
+
font-family: var(--rb-font-body);
|
|
50
|
+
font-size: var(--rb-text-sm);
|
|
51
|
+
color: var(--rb-text);
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
}
|
|
54
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-checkbox,
|
|
55
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-radio,
|
|
56
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-switch {
|
|
57
|
+
accent-color: var(--rb-accent);
|
|
58
|
+
width: 1rem;
|
|
59
|
+
height: 1rem;
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
}
|
|
62
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-switch {
|
|
63
|
+
width: 2rem;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@media (prefers-reduced-motion: reduce) {
|
|
67
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-input,
|
|
68
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-textarea,
|
|
69
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-select {
|
|
70
|
+
transition: none;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* amber-hearth — nav link (tree/sidebar row)
|
|
2
|
+
* A list row; hover fills to surface-2 and lights a soft, fully-rounded accent
|
|
3
|
+
* bar on the left edge — round, not a hard-edged rule, to match the theme's
|
|
4
|
+
* rounded character. Active carries the accent wash. */
|
|
5
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link {
|
|
6
|
+
position: relative;
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
gap: var(--rb-space-2);
|
|
10
|
+
padding: var(--rb-space-2) var(--rb-space-3);
|
|
11
|
+
border-radius: var(--rb-radius);
|
|
12
|
+
color: var(--rb-text);
|
|
13
|
+
font-size: var(--rb-text-sm);
|
|
14
|
+
text-decoration: none;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
transition:
|
|
17
|
+
background var(--rb-transition),
|
|
18
|
+
color var(--rb-transition);
|
|
19
|
+
}
|
|
20
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link:hover {
|
|
21
|
+
background: var(--rb-surface-2);
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link::before {
|
|
24
|
+
content: "";
|
|
25
|
+
position: absolute;
|
|
26
|
+
left: 0;
|
|
27
|
+
top: 8px;
|
|
28
|
+
bottom: 8px;
|
|
29
|
+
width: 3px;
|
|
30
|
+
border-radius: var(--rb-radius-pill);
|
|
31
|
+
background: transparent;
|
|
32
|
+
transition: background var(--rb-transition);
|
|
33
|
+
}
|
|
34
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link:hover::before,
|
|
35
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link.rb-link--active::before {
|
|
36
|
+
background: var(--rb-accent);
|
|
37
|
+
}
|
|
38
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link.rb-link--active {
|
|
39
|
+
background: var(--rb-accent-wash);
|
|
40
|
+
color: var(--rb-accent);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@media (prefers-reduced-motion: reduce) {
|
|
44
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-link {
|
|
45
|
+
transition: none;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* amber-hearth — log / terminal block
|
|
2
|
+
* Pairs with .rb-pre for the shared look (surface-sunken well, hairline
|
|
3
|
+
* border, radius, small mono) -- .rb-log itself only adds what changes for
|
|
4
|
+
* multi-line streaming output: a capped height with vertical scroll, wrapped
|
|
5
|
+
* long lines instead of .rb-pre's horizontal scroll, and a touch more
|
|
6
|
+
* line-height so dense text stays readable. Use together on one element:
|
|
7
|
+
* <pre class="rb-pre rb-log">. */
|
|
8
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-log {
|
|
9
|
+
max-height: 16rem;
|
|
10
|
+
overflow-y: auto;
|
|
11
|
+
white-space: pre-wrap;
|
|
12
|
+
overflow-wrap: anywhere;
|
|
13
|
+
line-height: 1.5;
|
|
14
|
+
}
|
|
15
|
+
/* Specificity-pinned (not import-order-dependent) override of .rb-pre's
|
|
16
|
+
* overflow-x: auto -- .rb-log wraps instead of scrolling horizontally. */
|
|
17
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-pre.rb-log {
|
|
18
|
+
overflow-x: hidden;
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* amber-hearth — muted / empty-state text
|
|
2
|
+
* Faint secondary text — captions, meta, "No results yet." style empty
|
|
3
|
+
* states. Italic fits this warm, hand-crafted, unhurried editorial voice. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-muted {
|
|
5
|
+
color: var(--rb-text-faint);
|
|
6
|
+
font-style: italic;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* amber-hearth — nav rail (vertical sidebar container)
|
|
2
|
+
* Flush edge chrome, not a floating card: fixed-width flex column, surface
|
|
3
|
+
* background, a hairline right edge. Composes with .rb-link for items --
|
|
4
|
+
* active/hover are entirely that component's own tokens, nothing new here. */
|
|
5
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-nav-rail {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
gap: var(--rb-space-1);
|
|
10
|
+
width: 14rem;
|
|
11
|
+
padding: var(--rb-space-3);
|
|
12
|
+
background: var(--rb-surface);
|
|
13
|
+
border-right: 1px solid var(--rb-border);
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* amber-hearth — command / log block
|
|
2
|
+
* Styled <pre> for shell commands or short log output: sunken well,
|
|
3
|
+
* hairline border, small mono, scrolls horizontally instead of wrapping. */
|
|
4
|
+
:where([data-rb-style="amber-hearth"], [data-rb-style="amber-hearth"] *).rb-pre {
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: var(--rb-space-3) var(--rb-space-4);
|
|
7
|
+
background: var(--rb-surface-sunken);
|
|
8
|
+
border: 1px solid var(--rb-border);
|
|
9
|
+
border-radius: var(--rb-radius);
|
|
10
|
+
font-family: var(--rb-font-mono);
|
|
11
|
+
font-size: var(--rb-text-sm);
|
|
12
|
+
overflow-x: auto;
|
|
13
|
+
}
|