@rackbops/styles 0.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/all.css +14 -0
- package/arcane-obsidian/base.css +46 -0
- package/arcane-obsidian/components/alert.css +28 -0
- package/arcane-obsidian/components/badge.css +33 -0
- package/arcane-obsidian/components/button.css +73 -0
- package/arcane-obsidian/components/card.css +14 -0
- package/arcane-obsidian/components/dialog.css +31 -0
- package/arcane-obsidian/components/eyebrow.css +12 -0
- package/arcane-obsidian/components/form.css +70 -0
- package/arcane-obsidian/components/link.css +46 -0
- package/arcane-obsidian/components/progress.css +40 -0
- package/arcane-obsidian/components/table.css +27 -0
- package/arcane-obsidian/components/tabs.css +45 -0
- package/arcane-obsidian/components/tabstrip.css +35 -0
- package/arcane-obsidian/components/wordmark.css +23 -0
- package/arcane-obsidian/design.md +133 -0
- package/arcane-obsidian/index.css +16 -0
- package/arcane-obsidian/tokens.css +81 -0
- package/arcane-parchment/base.css +46 -0
- package/arcane-parchment/components/alert.css +28 -0
- package/arcane-parchment/components/badge.css +33 -0
- package/arcane-parchment/components/button.css +75 -0
- package/arcane-parchment/components/card.css +14 -0
- package/arcane-parchment/components/dialog.css +31 -0
- package/arcane-parchment/components/eyebrow.css +12 -0
- package/arcane-parchment/components/form.css +70 -0
- package/arcane-parchment/components/link.css +46 -0
- package/arcane-parchment/components/progress.css +40 -0
- package/arcane-parchment/components/table.css +27 -0
- package/arcane-parchment/components/tabs.css +45 -0
- package/arcane-parchment/components/tabstrip.css +35 -0
- package/arcane-parchment/components/wordmark.css +23 -0
- package/arcane-parchment/design.md +89 -0
- package/arcane-parchment/index.css +16 -0
- package/arcane-parchment/tokens.css +78 -0
- package/luminous-precision/base.css +58 -0
- package/luminous-precision/components/alert.css +26 -0
- package/luminous-precision/components/badge.css +19 -0
- package/luminous-precision/components/button.css +88 -0
- package/luminous-precision/components/card.css +12 -0
- package/luminous-precision/components/dialog.css +31 -0
- package/luminous-precision/components/form.css +126 -0
- package/luminous-precision/components/link.css +46 -0
- package/luminous-precision/components/progress.css +41 -0
- package/luminous-precision/components/table.css +28 -0
- package/luminous-precision/components/tabs.css +33 -0
- package/luminous-precision/design.md +124 -0
- package/luminous-precision/index.css +13 -0
- package/luminous-precision/tokens.css +89 -0
- package/manifest.json +39 -0
- package/neon-butterfly/assets/butterfly-circuit.png +0 -0
- package/neon-butterfly/base.css +49 -0
- package/neon-butterfly/components/alert.css +26 -0
- package/neon-butterfly/components/badge.css +17 -0
- package/neon-butterfly/components/button.css +54 -0
- package/neon-butterfly/components/card.css +11 -0
- package/neon-butterfly/components/dialog.css +29 -0
- package/neon-butterfly/components/form.css +124 -0
- package/neon-butterfly/components/link.css +55 -0
- package/neon-butterfly/components/progress.css +41 -0
- package/neon-butterfly/components/table.css +27 -0
- package/neon-butterfly/components/tabs.css +33 -0
- package/neon-butterfly/design.md +103 -0
- package/neon-butterfly/index.css +13 -0
- package/neon-butterfly/tokens.css +89 -0
- package/package.json +60 -0
- package/rackbops-noir/base.css +53 -0
- package/rackbops-noir/components/alert.css +30 -0
- package/rackbops-noir/components/badge.css +39 -0
- package/rackbops-noir/components/button.css +79 -0
- package/rackbops-noir/components/card.css +37 -0
- package/rackbops-noir/components/dialog.css +33 -0
- package/rackbops-noir/components/eyebrow.css +21 -0
- package/rackbops-noir/components/form.css +70 -0
- package/rackbops-noir/components/link.css +31 -0
- package/rackbops-noir/components/principle.css +31 -0
- package/rackbops-noir/components/progress.css +40 -0
- package/rackbops-noir/components/rack.css +93 -0
- package/rackbops-noir/components/table.css +31 -0
- package/rackbops-noir/components/tabs.css +45 -0
- package/rackbops-noir/components/tag.css +20 -0
- package/rackbops-noir/design.md +85 -0
- package/rackbops-noir/index.css +17 -0
- package/rackbops-noir/tokens.css +66 -0
- package/rackbops-studio/assets/boppy.svg +17 -0
- package/rackbops-studio/base.css +53 -0
- package/rackbops-studio/components/alert.css +30 -0
- package/rackbops-studio/components/badge.css +39 -0
- package/rackbops-studio/components/button.css +78 -0
- package/rackbops-studio/components/card.css +37 -0
- package/rackbops-studio/components/dialog.css +33 -0
- package/rackbops-studio/components/eyebrow.css +21 -0
- package/rackbops-studio/components/form.css +70 -0
- package/rackbops-studio/components/link.css +31 -0
- package/rackbops-studio/components/principle.css +31 -0
- package/rackbops-studio/components/progress.css +40 -0
- package/rackbops-studio/components/rack.css +94 -0
- package/rackbops-studio/components/table.css +31 -0
- package/rackbops-studio/components/tabs.css +45 -0
- package/rackbops-studio/components/tag.css +20 -0
- package/rackbops-studio/design.md +157 -0
- package/rackbops-studio/index.css +17 -0
- package/rackbops-studio/tokens.css +77 -0
- package/summer-cloud/base.css +58 -0
- package/summer-cloud/components/alert.css +29 -0
- package/summer-cloud/components/badge.css +49 -0
- package/summer-cloud/components/button.css +109 -0
- package/summer-cloud/components/card.css +35 -0
- package/summer-cloud/components/dialog.css +30 -0
- package/summer-cloud/components/form.css +146 -0
- package/summer-cloud/components/link.css +60 -0
- package/summer-cloud/components/progress.css +43 -0
- package/summer-cloud/components/table.css +34 -0
- package/summer-cloud/components/tabs.css +38 -0
- package/summer-cloud/design.md +165 -0
- package/summer-cloud/index.css +13 -0
- package/summer-cloud/tokens.css +103 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* rackbops-noir — full theme entry point */
|
|
2
|
+
@import "./tokens.css";
|
|
3
|
+
@import "./base.css";
|
|
4
|
+
@import "./components/button.css";
|
|
5
|
+
@import "./components/card.css";
|
|
6
|
+
@import "./components/link.css";
|
|
7
|
+
@import "./components/form.css";
|
|
8
|
+
@import "./components/badge.css";
|
|
9
|
+
@import "./components/alert.css";
|
|
10
|
+
@import "./components/dialog.css";
|
|
11
|
+
@import "./components/tabs.css";
|
|
12
|
+
@import "./components/table.css";
|
|
13
|
+
@import "./components/progress.css";
|
|
14
|
+
@import "./components/eyebrow.css";
|
|
15
|
+
@import "./components/rack.css";
|
|
16
|
+
@import "./components/principle.css";
|
|
17
|
+
@import "./components/tag.css";
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* rackbops-noir — design tokens
|
|
2
|
+
* The dark counterpart of rackbops-studio: the mode rackbops.com toggles into.
|
|
3
|
+
* Same structure, class contract, and component CSS as rackbops-studio
|
|
4
|
+
* (token-driven) — only the palette differs, plus a dark-appropriate accent-fg
|
|
5
|
+
* and a lighter accent ramp. Consume via:
|
|
6
|
+
* @import "@rackbops/styles/rackbops-noir/tokens";
|
|
7
|
+
* or pull the whole theme with ./index.css.
|
|
8
|
+
*
|
|
9
|
+
* Nothing applies until an element carries data-rb-style="rackbops-noir".
|
|
10
|
+
* Palette values match rackbops.com's dark scheme.
|
|
11
|
+
*/
|
|
12
|
+
:where([data-rb-style="rackbops-noir"]) {
|
|
13
|
+
color-scheme: dark;
|
|
14
|
+
|
|
15
|
+
/* color — deep slate canvas, tonal navy surfaces */
|
|
16
|
+
--rb-bg: #0d141d;
|
|
17
|
+
--rb-surface: #141f2a;
|
|
18
|
+
--rb-surface-2: #19242f;
|
|
19
|
+
--rb-surface-sunken: #0f1720; /* progress troughs, insets */
|
|
20
|
+
--rb-text: #e9eff4;
|
|
21
|
+
--rb-text-soft: #a4b4c3;
|
|
22
|
+
--rb-text-faint: #697a8c;
|
|
23
|
+
--rb-border: #243140;
|
|
24
|
+
--rb-border-strong: #31404f;
|
|
25
|
+
|
|
26
|
+
/* accent — vermillion, brighter on the dark ground */
|
|
27
|
+
--rb-accent: #ff5d3d;
|
|
28
|
+
--rb-accent-fg: #0d141d; /* dark ink on the vermillion fill keeps it AA */
|
|
29
|
+
--rb-accent-wash: rgba(255, 93, 61, 0.13);
|
|
30
|
+
|
|
31
|
+
/* the signature gradient — a vertical vermillion ramp (the rack equaliser) */
|
|
32
|
+
--rb-accent-grad: linear-gradient(180deg, #ff5d3d, #ff7a5f);
|
|
33
|
+
|
|
34
|
+
/* semantic — brightened for AA on the dark ground */
|
|
35
|
+
--rb-info: #4c9df0;
|
|
36
|
+
--rb-success: #43c97e;
|
|
37
|
+
--rb-warning: #f2a93b;
|
|
38
|
+
--rb-danger: #f0616d;
|
|
39
|
+
|
|
40
|
+
/* typography — bold editorial sans headlines; mono for eyebrows/nav/tags */
|
|
41
|
+
--rb-font-display: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
42
|
+
--rb-font-body: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
43
|
+
--rb-font-mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;
|
|
44
|
+
--rb-font-weight: 400;
|
|
45
|
+
--rb-font-weight-medium: 600;
|
|
46
|
+
--rb-font-weight-bold: 800; /* heavy headlines — the studio signature */
|
|
47
|
+
--rb-heading-tracking: -0.02em;
|
|
48
|
+
--rb-label-tracking: 0.18em;
|
|
49
|
+
--rb-text-sm: 13.5px;
|
|
50
|
+
|
|
51
|
+
/* shape & effects — soft two-step shadow depth (deeper on dark), roomy radii */
|
|
52
|
+
--rb-radius: 0.6875rem; /* 11px */
|
|
53
|
+
--rb-radius-lg: 0.9375rem; /* 15px */
|
|
54
|
+
--rb-radius-pill: 99px;
|
|
55
|
+
--rb-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
|
|
56
|
+
--rb-shadow-lg: 0 2px 6px rgba(0, 0, 0, 0.4), 0 24px 50px -24px rgba(0, 0, 0, 0.7);
|
|
57
|
+
--rb-blur: 10px;
|
|
58
|
+
--rb-transition: 0.15s;
|
|
59
|
+
|
|
60
|
+
/* spacing — generous, editorial rhythm */
|
|
61
|
+
--rb-space-1: 0.5rem;
|
|
62
|
+
--rb-space-2: 0.75rem;
|
|
63
|
+
--rb-space-3: 1rem;
|
|
64
|
+
--rb-space-4: 1.5rem;
|
|
65
|
+
--rb-space-5: 2.25rem;
|
|
66
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Boppy — the rackbops mascot">
|
|
2
|
+
<rect width="512" height="512" rx="116" fill="#2c4256"/>
|
|
3
|
+
<rect x="80" y="80" width="352" height="44" rx="22" fill="#3d576e" opacity="0.35"/>
|
|
4
|
+
<circle cx="428" cy="86" r="18" fill="#ef4d28"/>
|
|
5
|
+
<circle cx="421" cy="80" r="6" fill="#ff9d84"/>
|
|
6
|
+
<rect x="96" y="150" width="320" height="224" rx="52" fill="#0f1922"/>
|
|
7
|
+
<rect x="110" y="164" width="292" height="196" rx="42" fill="#eef3f6"/>
|
|
8
|
+
<circle cx="196" cy="236" r="36" fill="#16232f"/>
|
|
9
|
+
<circle cx="316" cy="236" r="36" fill="#16232f"/>
|
|
10
|
+
<circle cx="182" cy="222" r="13" fill="#ffffff"/>
|
|
11
|
+
<circle cx="302" cy="222" r="13" fill="#ffffff"/>
|
|
12
|
+
<rect x="187" y="304" width="18" height="22" rx="6" fill="#ef4d28"/>
|
|
13
|
+
<rect x="217" y="288" width="18" height="38" rx="6" fill="#ef4d28"/>
|
|
14
|
+
<rect x="247" y="276" width="18" height="50" rx="6" fill="#ef4d28"/>
|
|
15
|
+
<rect x="277" y="288" width="18" height="38" rx="6" fill="#ef4d28"/>
|
|
16
|
+
<rect x="307" y="304" width="18" height="22" rx="6" fill="#ef4d28"/>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* rackbops-studio — base styles
|
|
2
|
+
* Scoped defaults. Requires tokens.css. Fonts are system stacks — nothing to
|
|
3
|
+
* load. The element carrying data-rb-style is the theme's canvas (page <html>
|
|
4
|
+
* or an embedded island container).
|
|
5
|
+
*/
|
|
6
|
+
:where([data-rb-style="rackbops-studio"]) {
|
|
7
|
+
background-color: var(--rb-bg);
|
|
8
|
+
color: var(--rb-text);
|
|
9
|
+
font-family: var(--rb-font-body);
|
|
10
|
+
font-weight: var(--rb-font-weight);
|
|
11
|
+
font-size: 17px;
|
|
12
|
+
line-height: 1.6;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *),
|
|
16
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *)::before,
|
|
17
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *)::after {
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:where(html[data-rb-style="rackbops-studio"]) body {
|
|
22
|
+
margin: 0;
|
|
23
|
+
min-height: 100vh;
|
|
24
|
+
background-color: var(--rb-bg);
|
|
25
|
+
color: var(--rb-text);
|
|
26
|
+
font-family: var(--rb-font-body);
|
|
27
|
+
font-weight: var(--rb-font-weight);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Heavy, balanced headlines with tight tracking — the studio's editorial voice. */
|
|
31
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *):where(h1, h2, h3) {
|
|
32
|
+
margin: 0;
|
|
33
|
+
font-family: var(--rb-font-display);
|
|
34
|
+
font-weight: var(--rb-font-weight-bold);
|
|
35
|
+
letter-spacing: var(--rb-heading-tracking);
|
|
36
|
+
line-height: 1.08;
|
|
37
|
+
text-wrap: balance;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *):where(a) {
|
|
41
|
+
color: inherit;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *):where(:focus-visible) {
|
|
45
|
+
outline: 2.5px solid var(--rb-accent);
|
|
46
|
+
outline-offset: 3px;
|
|
47
|
+
border-radius: 3px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *)::selection {
|
|
51
|
+
background: var(--rb-accent);
|
|
52
|
+
color: #fff;
|
|
53
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* rackbops-studio — alert
|
|
2
|
+
* A white surface card with a soft resting shadow and a 4px left bar in the
|
|
3
|
+
* semantic colour. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
padding: var(--rb-space-3) var(--rb-space-4);
|
|
9
|
+
background: var(--rb-surface);
|
|
10
|
+
border: 1px solid var(--rb-border);
|
|
11
|
+
border-left: 4px solid var(--rb-accent);
|
|
12
|
+
border-radius: var(--rb-radius);
|
|
13
|
+
box-shadow: var(--rb-shadow-sm);
|
|
14
|
+
color: var(--rb-text);
|
|
15
|
+
}
|
|
16
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert__title {
|
|
17
|
+
font-weight: var(--rb-font-weight-medium);
|
|
18
|
+
}
|
|
19
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert--info {
|
|
20
|
+
border-left-color: var(--rb-info);
|
|
21
|
+
}
|
|
22
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert--success {
|
|
23
|
+
border-left-color: var(--rb-success);
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert--warning {
|
|
26
|
+
border-left-color: var(--rb-warning);
|
|
27
|
+
}
|
|
28
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-alert--danger {
|
|
29
|
+
border-left-color: var(--rb-danger);
|
|
30
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* rackbops-studio — badge
|
|
2
|
+
* A bordered mono pill, like the studio's capability tags. Default is an
|
|
3
|
+
* outline chip; semantic modifiers tint to their hue. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-badge {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
padding: 4px 10px;
|
|
9
|
+
border: 1px solid var(--rb-border);
|
|
10
|
+
border-radius: var(--rb-radius-pill);
|
|
11
|
+
font-family: var(--rb-font-mono);
|
|
12
|
+
font-size: 11.5px;
|
|
13
|
+
letter-spacing: 0.02em;
|
|
14
|
+
color: var(--rb-text-soft);
|
|
15
|
+
background: var(--rb-surface);
|
|
16
|
+
}
|
|
17
|
+
/* Semantic variants: a tint fill + tinted border carry the hue, while the label
|
|
18
|
+
* stays ink so it clears WCAG AA on the light ground (the raw semantic colors as
|
|
19
|
+
* small text on white are ~3.4-4.4:1). */
|
|
20
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-badge--info {
|
|
21
|
+
background: color-mix(in srgb, var(--rb-info) 14%, var(--rb-surface));
|
|
22
|
+
border-color: color-mix(in srgb, var(--rb-info) 45%, var(--rb-border));
|
|
23
|
+
color: var(--rb-text);
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-badge--success {
|
|
26
|
+
background: color-mix(in srgb, var(--rb-success) 14%, var(--rb-surface));
|
|
27
|
+
border-color: color-mix(in srgb, var(--rb-success) 45%, var(--rb-border));
|
|
28
|
+
color: var(--rb-text);
|
|
29
|
+
}
|
|
30
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-badge--warning {
|
|
31
|
+
background: color-mix(in srgb, var(--rb-warning) 16%, var(--rb-surface));
|
|
32
|
+
border-color: color-mix(in srgb, var(--rb-warning) 45%, var(--rb-border));
|
|
33
|
+
color: var(--rb-text);
|
|
34
|
+
}
|
|
35
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-badge--danger {
|
|
36
|
+
background: color-mix(in srgb, var(--rb-danger) 14%, var(--rb-surface));
|
|
37
|
+
border-color: color-mix(in srgb, var(--rb-danger) 45%, var(--rb-border));
|
|
38
|
+
color: var(--rb-text);
|
|
39
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* rackbops-studio — button
|
|
2
|
+
* Primary is an ink fill that warms to vermillion on hover; ghost is a bordered
|
|
3
|
+
* outline. A press dips the button; an optional arrow slides on hover. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--rb-space-2);
|
|
8
|
+
padding: 13px 22px;
|
|
9
|
+
border: 1px solid transparent;
|
|
10
|
+
border-radius: var(--rb-radius);
|
|
11
|
+
font-weight: var(--rb-font-weight-medium);
|
|
12
|
+
font-size: 16px;
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
color: var(--rb-text);
|
|
16
|
+
background: transparent;
|
|
17
|
+
transition:
|
|
18
|
+
transform 0.12s ease,
|
|
19
|
+
background var(--rb-transition) ease,
|
|
20
|
+
border-color var(--rb-transition) ease,
|
|
21
|
+
color var(--rb-transition) ease;
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn:active {
|
|
24
|
+
transform: translateY(1px);
|
|
25
|
+
}
|
|
26
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary {
|
|
27
|
+
background: var(--rb-text);
|
|
28
|
+
color: #f4f7f9;
|
|
29
|
+
}
|
|
30
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary:hover,
|
|
31
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary:focus-visible {
|
|
32
|
+
background: var(--rb-accent);
|
|
33
|
+
color: var(--rb-accent-fg);
|
|
34
|
+
}
|
|
35
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent {
|
|
36
|
+
background: var(--rb-accent);
|
|
37
|
+
color: var(--rb-accent-fg);
|
|
38
|
+
}
|
|
39
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent:hover,
|
|
40
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent:focus-visible {
|
|
41
|
+
background: #c93c1c;
|
|
42
|
+
}
|
|
43
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost {
|
|
44
|
+
background: transparent;
|
|
45
|
+
color: var(--rb-text);
|
|
46
|
+
border-color: var(--rb-border-strong);
|
|
47
|
+
}
|
|
48
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost:hover,
|
|
49
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost:focus-visible {
|
|
50
|
+
border-color: var(--rb-text);
|
|
51
|
+
background: var(--rb-surface-2);
|
|
52
|
+
}
|
|
53
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger {
|
|
54
|
+
background: transparent;
|
|
55
|
+
color: var(--rb-danger);
|
|
56
|
+
border-color: color-mix(in srgb, var(--rb-danger) 45%, var(--rb-border));
|
|
57
|
+
}
|
|
58
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger:hover,
|
|
59
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger:focus-visible {
|
|
60
|
+
border-color: var(--rb-danger);
|
|
61
|
+
}
|
|
62
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn:disabled {
|
|
63
|
+
opacity: 0.5;
|
|
64
|
+
cursor: not-allowed;
|
|
65
|
+
}
|
|
66
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn__arrow {
|
|
67
|
+
transition: transform var(--rb-transition) ease;
|
|
68
|
+
}
|
|
69
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn:hover .rb-btn__arrow {
|
|
70
|
+
transform: translateX(3px);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (prefers-reduced-motion: reduce) {
|
|
74
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn,
|
|
75
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn__arrow {
|
|
76
|
+
transition: none;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* rackbops-studio — card
|
|
2
|
+
* White panel with a soft resting shadow; hovers lift and deepen — the studio's
|
|
3
|
+
* service-card motion. A mono kicker tag can sit at the top. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-card {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
background: var(--rb-surface);
|
|
8
|
+
border: 1px solid var(--rb-border);
|
|
9
|
+
border-radius: var(--rb-radius-lg);
|
|
10
|
+
padding: 26px 24px 28px;
|
|
11
|
+
box-shadow: var(--rb-shadow-sm);
|
|
12
|
+
transition:
|
|
13
|
+
transform 0.16s ease,
|
|
14
|
+
border-color 0.16s ease,
|
|
15
|
+
box-shadow 0.16s ease;
|
|
16
|
+
}
|
|
17
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-card:hover {
|
|
18
|
+
transform: translateY(-4px);
|
|
19
|
+
border-color: var(--rb-border-strong);
|
|
20
|
+
box-shadow: var(--rb-shadow-lg);
|
|
21
|
+
}
|
|
22
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-card__tag {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
font-family: var(--rb-font-mono);
|
|
27
|
+
font-size: 12px;
|
|
28
|
+
letter-spacing: 0.12em;
|
|
29
|
+
text-transform: uppercase;
|
|
30
|
+
color: var(--rb-accent);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@media (prefers-reduced-motion: reduce) {
|
|
34
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-card {
|
|
35
|
+
transition: none;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* rackbops-studio — dialog
|
|
2
|
+
* Native <dialog>: a white pane with the studio's deep lift shadow over a
|
|
3
|
+
* softly dimmed, blurred backdrop; a heavy editorial title. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-dialog {
|
|
5
|
+
padding: 0;
|
|
6
|
+
border: 1px solid var(--rb-border);
|
|
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="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-dialog::backdrop {
|
|
14
|
+
background: rgba(19, 30, 41, 0.4);
|
|
15
|
+
backdrop-filter: blur(var(--rb-blur));
|
|
16
|
+
}
|
|
17
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-dialog__body {
|
|
18
|
+
padding: var(--rb-space-5);
|
|
19
|
+
}
|
|
20
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).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
|
+
font-size: 1.4rem;
|
|
26
|
+
}
|
|
27
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).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,21 @@
|
|
|
1
|
+
/* rackbops-studio — eyebrow (section kicker)
|
|
2
|
+
* The studio's signature label: a mono, uppercase, wide-tracked accent tag with
|
|
3
|
+
* a short leading rule. Sits above every section headline. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-eyebrow {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: 10px;
|
|
8
|
+
font-family: var(--rb-font-mono);
|
|
9
|
+
font-size: 12.5px;
|
|
10
|
+
font-weight: var(--rb-font-weight-medium);
|
|
11
|
+
letter-spacing: var(--rb-label-tracking);
|
|
12
|
+
text-transform: uppercase;
|
|
13
|
+
color: var(--rb-accent);
|
|
14
|
+
}
|
|
15
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-eyebrow::before {
|
|
16
|
+
content: "";
|
|
17
|
+
width: 22px;
|
|
18
|
+
height: 1.5px;
|
|
19
|
+
background: var(--rb-accent);
|
|
20
|
+
display: inline-block;
|
|
21
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* rackbops-studio — form controls
|
|
2
|
+
* White fields on the paper ground; focus is a vermillion border + soft wash.
|
|
3
|
+
* Comfortable, roomy sizing to match the editorial body. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-field {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
}
|
|
9
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-label {
|
|
10
|
+
font-size: var(--rb-text-sm);
|
|
11
|
+
font-weight: var(--rb-font-weight-medium);
|
|
12
|
+
color: var(--rb-text-soft);
|
|
13
|
+
}
|
|
14
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-input,
|
|
15
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-textarea,
|
|
16
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-select {
|
|
17
|
+
width: 100%;
|
|
18
|
+
padding: 12px 14px;
|
|
19
|
+
background: var(--rb-surface);
|
|
20
|
+
border: 1px solid var(--rb-border-strong);
|
|
21
|
+
border-radius: var(--rb-radius);
|
|
22
|
+
color: var(--rb-text);
|
|
23
|
+
font-family: var(--rb-font-body);
|
|
24
|
+
font-size: 16px;
|
|
25
|
+
transition:
|
|
26
|
+
border-color var(--rb-transition),
|
|
27
|
+
box-shadow var(--rb-transition);
|
|
28
|
+
}
|
|
29
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-textarea {
|
|
30
|
+
min-height: 6rem;
|
|
31
|
+
resize: vertical;
|
|
32
|
+
}
|
|
33
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-input:focus-visible,
|
|
34
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-textarea:focus-visible,
|
|
35
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-select:focus-visible {
|
|
36
|
+
outline: none;
|
|
37
|
+
border-color: var(--rb-accent);
|
|
38
|
+
box-shadow: 0 0 0 3px var(--rb-accent-wash);
|
|
39
|
+
}
|
|
40
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-input::placeholder,
|
|
41
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-textarea::placeholder {
|
|
42
|
+
color: var(--rb-text-faint);
|
|
43
|
+
}
|
|
44
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-choice {
|
|
45
|
+
display: inline-flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
gap: var(--rb-space-1);
|
|
48
|
+
font-size: 16px;
|
|
49
|
+
color: var(--rb-text);
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
}
|
|
52
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-checkbox,
|
|
53
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-radio,
|
|
54
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-switch {
|
|
55
|
+
accent-color: var(--rb-accent);
|
|
56
|
+
width: 1.1rem;
|
|
57
|
+
height: 1.1rem;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-switch {
|
|
61
|
+
width: 2.2rem;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-input,
|
|
66
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-textarea,
|
|
67
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-select {
|
|
68
|
+
transition: none;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* rackbops-studio — nav link
|
|
2
|
+
* The header's quiet mono nav: soft ink that fills to a surface pill on hover;
|
|
3
|
+
* accent on the active route. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--rb-space-1);
|
|
8
|
+
padding: 8px 12px;
|
|
9
|
+
border-radius: 8px;
|
|
10
|
+
font-family: var(--rb-font-mono);
|
|
11
|
+
font-size: var(--rb-text-sm);
|
|
12
|
+
color: var(--rb-text-soft);
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
transition:
|
|
16
|
+
color var(--rb-transition),
|
|
17
|
+
background var(--rb-transition);
|
|
18
|
+
}
|
|
19
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link:hover {
|
|
20
|
+
color: var(--rb-text);
|
|
21
|
+
background: var(--rb-surface-2);
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link.rb-link--active {
|
|
24
|
+
color: var(--rb-accent);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@media (prefers-reduced-motion: reduce) {
|
|
28
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link {
|
|
29
|
+
transition: none;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* rackbops-studio — principle (theme extra)
|
|
2
|
+
* The studio's numbered "how we work" list: a mono /0N marker in the accent
|
|
3
|
+
* beside a heading + paragraph, rows divided by hairlines. */
|
|
4
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principles {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
}
|
|
8
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principle {
|
|
9
|
+
display: grid;
|
|
10
|
+
grid-template-columns: 56px 1fr;
|
|
11
|
+
gap: 18px;
|
|
12
|
+
padding: 22px 0;
|
|
13
|
+
border-top: 1px solid var(--rb-border);
|
|
14
|
+
}
|
|
15
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principles > .rb-principle:first-child {
|
|
16
|
+
border-top: 0;
|
|
17
|
+
}
|
|
18
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principle__n {
|
|
19
|
+
font-family: var(--rb-font-mono);
|
|
20
|
+
font-size: 13px;
|
|
21
|
+
font-weight: var(--rb-font-weight-medium);
|
|
22
|
+
color: var(--rb-accent);
|
|
23
|
+
padding-top: 3px;
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principle__body h3 {
|
|
26
|
+
font-size: 1.16rem;
|
|
27
|
+
}
|
|
28
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-principle__body p {
|
|
29
|
+
margin: 7px 0 0;
|
|
30
|
+
color: var(--rb-text-soft);
|
|
31
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* rackbops-studio — progress + spinner
|
|
2
|
+
* A pill trough with a vermillion fill; the spinner is a single accent arc. */
|
|
3
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-progress {
|
|
4
|
+
appearance: none;
|
|
5
|
+
width: 100%;
|
|
6
|
+
height: 8px;
|
|
7
|
+
border: 0;
|
|
8
|
+
border-radius: var(--rb-radius-pill);
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
background: var(--rb-surface-sunken);
|
|
11
|
+
}
|
|
12
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-progress::-webkit-progress-bar {
|
|
13
|
+
background: var(--rb-surface-sunken);
|
|
14
|
+
}
|
|
15
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-progress::-webkit-progress-value {
|
|
16
|
+
background: var(--rb-accent);
|
|
17
|
+
}
|
|
18
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-progress::-moz-progress-bar {
|
|
19
|
+
background: var(--rb-accent);
|
|
20
|
+
}
|
|
21
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-spinner {
|
|
22
|
+
display: inline-block;
|
|
23
|
+
width: 1.25rem;
|
|
24
|
+
height: 1.25rem;
|
|
25
|
+
border: 2px solid var(--rb-border-strong);
|
|
26
|
+
border-top-color: var(--rb-accent);
|
|
27
|
+
border-radius: 50%;
|
|
28
|
+
animation: rb-studio-spin 0.7s linear infinite;
|
|
29
|
+
}
|
|
30
|
+
@keyframes rb-studio-spin {
|
|
31
|
+
to {
|
|
32
|
+
transform: rotate(360deg);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@media (prefers-reduced-motion: reduce) {
|
|
37
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-spinner {
|
|
38
|
+
animation-duration: 2s;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* rackbops-studio — rack panel (theme extra)
|
|
2
|
+
* The studio's visual pun: a dark navy "rack" unit sitting on the light page,
|
|
3
|
+
* with an animated vermillion equaliser (the "bops" — signal) and a pulsing
|
|
4
|
+
* live dot. The inverted panel palette is this theme's own; it is intentionally
|
|
5
|
+
* a fixed dark block regardless of the light canvas.
|
|
6
|
+
*/
|
|
7
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack {
|
|
8
|
+
--rb-rack-panel: #101a24;
|
|
9
|
+
--rb-rack-ink: #e7eef4;
|
|
10
|
+
--rb-rack-faint: #7d90a2;
|
|
11
|
+
--rb-rack-line: #26333f;
|
|
12
|
+
background: var(--rb-rack-panel);
|
|
13
|
+
border: 1px solid var(--rb-rack-line);
|
|
14
|
+
border-radius: 16px;
|
|
15
|
+
padding: 24px;
|
|
16
|
+
box-shadow: var(--rb-shadow-lg);
|
|
17
|
+
color: var(--rb-rack-ink);
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
}
|
|
20
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__top {
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: space-between;
|
|
24
|
+
font-family: var(--rb-font-mono);
|
|
25
|
+
font-size: 11.5px;
|
|
26
|
+
letter-spacing: 0.14em;
|
|
27
|
+
text-transform: uppercase;
|
|
28
|
+
color: var(--rb-rack-faint);
|
|
29
|
+
}
|
|
30
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__live {
|
|
31
|
+
display: inline-flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: 7px;
|
|
34
|
+
color: var(--rb-rack-ink);
|
|
35
|
+
}
|
|
36
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__live::before {
|
|
37
|
+
content: "";
|
|
38
|
+
width: 7px;
|
|
39
|
+
height: 7px;
|
|
40
|
+
border-radius: 50%;
|
|
41
|
+
background: var(--rb-accent);
|
|
42
|
+
animation: rb-studio-pulse 1.8s ease-in-out infinite;
|
|
43
|
+
}
|
|
44
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: flex-end;
|
|
47
|
+
gap: 7px;
|
|
48
|
+
height: 132px;
|
|
49
|
+
margin: 22px 2px 16px;
|
|
50
|
+
}
|
|
51
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i {
|
|
52
|
+
flex: 1;
|
|
53
|
+
background: var(--rb-accent-grad);
|
|
54
|
+
border-radius: 4px 4px 2px 2px;
|
|
55
|
+
transform-origin: bottom;
|
|
56
|
+
animation: rb-studio-bop 1.4s ease-in-out infinite;
|
|
57
|
+
opacity: 0.92;
|
|
58
|
+
}
|
|
59
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(1) { height: 52%; animation-delay: -0.2s; }
|
|
60
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(2) { height: 88%; animation-delay: -1.1s; }
|
|
61
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(3) { height: 34%; animation-delay: -0.6s; }
|
|
62
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(4) { height: 70%; animation-delay: -0.9s; }
|
|
63
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(5) { height: 100%; animation-delay: -0.35s; }
|
|
64
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i:nth-child(6) { height: 46%; animation-delay: -1.3s; }
|
|
65
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__foot {
|
|
66
|
+
display: flex;
|
|
67
|
+
justify-content: space-between;
|
|
68
|
+
gap: 12px;
|
|
69
|
+
border-top: 1px solid var(--rb-rack-line);
|
|
70
|
+
padding-top: 14px;
|
|
71
|
+
font-family: var(--rb-font-mono);
|
|
72
|
+
font-size: 11.5px;
|
|
73
|
+
color: var(--rb-rack-faint);
|
|
74
|
+
letter-spacing: 0.04em;
|
|
75
|
+
}
|
|
76
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__foot b {
|
|
77
|
+
color: var(--rb-rack-ink);
|
|
78
|
+
font-weight: var(--rb-font-weight-medium);
|
|
79
|
+
}
|
|
80
|
+
@keyframes rb-studio-bop {
|
|
81
|
+
0%, 100% { transform: scaleY(0.5); }
|
|
82
|
+
50% { transform: scaleY(1); }
|
|
83
|
+
}
|
|
84
|
+
@keyframes rb-studio-pulse {
|
|
85
|
+
0%, 100% { opacity: 1; }
|
|
86
|
+
50% { opacity: 0.35; }
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@media (prefers-reduced-motion: reduce) {
|
|
90
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__bars > i,
|
|
91
|
+
:where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-rack__live::before {
|
|
92
|
+
animation: none;
|
|
93
|
+
}
|
|
94
|
+
}
|