@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,146 @@
|
|
|
1
|
+
/* summer-cloud — form controls: input, textarea, select, checkbox, radio, switch
|
|
2
|
+
* Fields are sunken (no resting border) and bloom a sky-blue ring on focus. */
|
|
3
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-input,
|
|
4
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-select,
|
|
5
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-textarea {
|
|
6
|
+
display: block;
|
|
7
|
+
width: 100%;
|
|
8
|
+
padding: 0.75rem var(--rb-space-3);
|
|
9
|
+
background: var(--rb-surface-sunken);
|
|
10
|
+
border: 1px solid transparent;
|
|
11
|
+
border-radius: var(--rb-radius);
|
|
12
|
+
color: var(--rb-text);
|
|
13
|
+
font-family: var(--rb-font-body);
|
|
14
|
+
font-weight: var(--rb-font-weight);
|
|
15
|
+
font-size: 16px;
|
|
16
|
+
transition: border-color var(--rb-transition), box-shadow var(--rb-transition);
|
|
17
|
+
}
|
|
18
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-select {
|
|
19
|
+
appearance: none;
|
|
20
|
+
padding-right: 2.25rem;
|
|
21
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23484457' stroke-width='1.5'/%3E%3C/svg%3E");
|
|
22
|
+
background-repeat: no-repeat;
|
|
23
|
+
background-position: right 0.75rem center;
|
|
24
|
+
}
|
|
25
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-input::placeholder,
|
|
26
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-textarea::placeholder {
|
|
27
|
+
color: var(--rb-outline);
|
|
28
|
+
}
|
|
29
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-input:focus,
|
|
30
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-select:focus,
|
|
31
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-textarea:focus {
|
|
32
|
+
outline: none;
|
|
33
|
+
border-color: var(--rb-accent-2);
|
|
34
|
+
box-shadow: 0 0 0 4px var(--rb-accent-2-glow);
|
|
35
|
+
}
|
|
36
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-input[aria-invalid="true"],
|
|
37
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-textarea[aria-invalid="true"] {
|
|
38
|
+
border-color: var(--rb-danger);
|
|
39
|
+
}
|
|
40
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-input[aria-invalid="true"]:focus,
|
|
41
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-textarea[aria-invalid="true"]:focus {
|
|
42
|
+
box-shadow: 0 0 0 4px rgba(255, 77, 77, 0.2);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Labels are the mono voice: small, tracked, utility-grade. */
|
|
46
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-label {
|
|
47
|
+
display: block;
|
|
48
|
+
margin-bottom: var(--rb-space-1);
|
|
49
|
+
padding-left: var(--rb-space-1);
|
|
50
|
+
color: var(--rb-text-faint);
|
|
51
|
+
font-family: var(--rb-font-mono);
|
|
52
|
+
font-size: 12px;
|
|
53
|
+
font-weight: 500;
|
|
54
|
+
letter-spacing: var(--rb-label-tracking);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-field {
|
|
58
|
+
margin-bottom: var(--rb-space-3);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* checkbox & radio */
|
|
62
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-checkbox,
|
|
63
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-radio {
|
|
64
|
+
appearance: none;
|
|
65
|
+
width: 1.25rem;
|
|
66
|
+
height: 1.25rem;
|
|
67
|
+
margin: 0;
|
|
68
|
+
vertical-align: text-bottom;
|
|
69
|
+
background: var(--rb-surface-sunken);
|
|
70
|
+
border: 1px solid var(--rb-outline);
|
|
71
|
+
border-radius: var(--rb-radius-sm);
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
transition: background var(--rb-transition), border-color var(--rb-transition),
|
|
74
|
+
box-shadow var(--rb-transition);
|
|
75
|
+
}
|
|
76
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-radio {
|
|
77
|
+
border-radius: 50%;
|
|
78
|
+
}
|
|
79
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-checkbox:checked,
|
|
80
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-radio:checked {
|
|
81
|
+
background: var(--rb-accent);
|
|
82
|
+
border-color: var(--rb-accent);
|
|
83
|
+
}
|
|
84
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-checkbox:checked {
|
|
85
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1 5l3.5 3.5L11 1.5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
|
|
86
|
+
background-repeat: no-repeat;
|
|
87
|
+
background-position: center;
|
|
88
|
+
}
|
|
89
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-radio:checked {
|
|
90
|
+
box-shadow: inset 0 0 0 4px var(--rb-surface);
|
|
91
|
+
}
|
|
92
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-checkbox:focus-visible,
|
|
93
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-radio:focus-visible,
|
|
94
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch:focus-visible {
|
|
95
|
+
outline: none;
|
|
96
|
+
border-color: var(--rb-accent-2);
|
|
97
|
+
box-shadow: 0 0 0 4px var(--rb-accent-2-glow);
|
|
98
|
+
}
|
|
99
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-choice {
|
|
100
|
+
display: inline-flex;
|
|
101
|
+
align-items: center;
|
|
102
|
+
gap: var(--rb-space-2);
|
|
103
|
+
color: var(--rb-text);
|
|
104
|
+
font-size: var(--rb-text-sm);
|
|
105
|
+
cursor: pointer;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* switch — the cloud-toggle: oversized, squishy, green when live */
|
|
109
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch {
|
|
110
|
+
appearance: none;
|
|
111
|
+
width: 3rem;
|
|
112
|
+
height: 1.75rem;
|
|
113
|
+
margin: 0;
|
|
114
|
+
vertical-align: text-bottom;
|
|
115
|
+
background: var(--rb-surface-sunken);
|
|
116
|
+
border: 1px solid var(--rb-outline);
|
|
117
|
+
border-radius: var(--rb-radius-pill);
|
|
118
|
+
cursor: pointer;
|
|
119
|
+
position: relative;
|
|
120
|
+
transition: background var(--rb-transition), border-color var(--rb-transition);
|
|
121
|
+
}
|
|
122
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch::after {
|
|
123
|
+
content: "";
|
|
124
|
+
position: absolute;
|
|
125
|
+
top: 2px;
|
|
126
|
+
left: 2px;
|
|
127
|
+
width: calc(1.75rem - 6px);
|
|
128
|
+
height: calc(1.75rem - 6px);
|
|
129
|
+
border-radius: 50%;
|
|
130
|
+
background: #fff;
|
|
131
|
+
box-shadow: 0 2px 6px rgba(93, 43, 255, 0.2);
|
|
132
|
+
transition: transform var(--rb-transition) var(--rb-ease-bounce);
|
|
133
|
+
}
|
|
134
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch:checked {
|
|
135
|
+
background: var(--rb-success);
|
|
136
|
+
border-color: var(--rb-success);
|
|
137
|
+
}
|
|
138
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch:checked::after {
|
|
139
|
+
transform: translateX(1.25rem);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@media (prefers-reduced-motion: reduce) {
|
|
143
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-switch::after {
|
|
144
|
+
transition: none;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* summer-cloud — nav link: pill that fills with sky tint, arrow slides out */
|
|
2
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--rb-space-2);
|
|
6
|
+
padding: var(--rb-space-2) var(--rb-space-3);
|
|
7
|
+
border: 1px solid transparent;
|
|
8
|
+
border-radius: var(--rb-radius-pill);
|
|
9
|
+
color: var(--rb-text-faint);
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
font-family: var(--rb-font-display);
|
|
12
|
+
font-weight: var(--rb-font-weight-medium);
|
|
13
|
+
font-size: var(--rb-text-sm);
|
|
14
|
+
transition:
|
|
15
|
+
background var(--rb-transition),
|
|
16
|
+
color var(--rb-transition);
|
|
17
|
+
}
|
|
18
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link::after {
|
|
19
|
+
content: "→";
|
|
20
|
+
color: var(--rb-accent-2);
|
|
21
|
+
transition: transform var(--rb-transition);
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:hover,
|
|
24
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:focus-visible {
|
|
25
|
+
background: var(--rb-sky-tint);
|
|
26
|
+
color: var(--rb-accent);
|
|
27
|
+
outline: none;
|
|
28
|
+
}
|
|
29
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:hover::after,
|
|
30
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:focus-visible::after {
|
|
31
|
+
transform: translateX(4px);
|
|
32
|
+
}
|
|
33
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:active {
|
|
34
|
+
transform: scale(0.95);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Current page: violet with the underline rule from the top nav. */
|
|
38
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link--active,
|
|
39
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link[aria-current="page"] {
|
|
40
|
+
background: none;
|
|
41
|
+
border-radius: 0;
|
|
42
|
+
border-bottom: 2px solid var(--rb-accent);
|
|
43
|
+
color: var(--rb-accent);
|
|
44
|
+
}
|
|
45
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link--active::after,
|
|
46
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link[aria-current="page"]::after {
|
|
47
|
+
content: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@media (prefers-reduced-motion: reduce) {
|
|
51
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link,
|
|
52
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link::after {
|
|
53
|
+
transition: none;
|
|
54
|
+
}
|
|
55
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:hover::after,
|
|
56
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:focus-visible::after,
|
|
57
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-link:active {
|
|
58
|
+
transform: none;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* summer-cloud — progress bar & spinner: glowing violet indicators */
|
|
2
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-progress {
|
|
3
|
+
display: block;
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 0.5rem;
|
|
6
|
+
background: var(--rb-bg-blend);
|
|
7
|
+
border-radius: var(--rb-radius-pill);
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
}
|
|
10
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-progress__bar {
|
|
11
|
+
height: 100%;
|
|
12
|
+
background: var(--rb-accent);
|
|
13
|
+
border-radius: var(--rb-radius-pill);
|
|
14
|
+
box-shadow: 0 0 10px rgba(69, 0, 217, 0.5);
|
|
15
|
+
transition: width var(--rb-transition);
|
|
16
|
+
}
|
|
17
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-progress__bar--accent {
|
|
18
|
+
background: var(--rb-accent-2);
|
|
19
|
+
box-shadow: 0 0 10px rgba(12, 179, 255, 0.5);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-spinner {
|
|
23
|
+
display: inline-block;
|
|
24
|
+
width: 1.5rem;
|
|
25
|
+
height: 1.5rem;
|
|
26
|
+
border: 2px solid var(--rb-outline);
|
|
27
|
+
border-top-color: var(--rb-accent);
|
|
28
|
+
border-radius: 50%;
|
|
29
|
+
animation: rb-sc-spin 0.8s linear infinite;
|
|
30
|
+
}
|
|
31
|
+
@keyframes rb-sc-spin {
|
|
32
|
+
to {
|
|
33
|
+
transform: rotate(360deg);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
@media (prefers-reduced-motion: reduce) {
|
|
37
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-spinner {
|
|
38
|
+
animation-duration: 2s;
|
|
39
|
+
}
|
|
40
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-progress__bar {
|
|
41
|
+
transition: none;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/* summer-cloud — table: mono header labels, sky-tint row hover */
|
|
2
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table {
|
|
3
|
+
width: 100%;
|
|
4
|
+
border-collapse: collapse;
|
|
5
|
+
font-size: var(--rb-text-sm);
|
|
6
|
+
color: var(--rb-text);
|
|
7
|
+
}
|
|
8
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table th {
|
|
9
|
+
padding: var(--rb-space-3);
|
|
10
|
+
border-bottom: 1px solid var(--rb-outline);
|
|
11
|
+
color: var(--rb-text-faint);
|
|
12
|
+
text-align: left;
|
|
13
|
+
text-transform: uppercase;
|
|
14
|
+
font-family: var(--rb-font-mono);
|
|
15
|
+
font-size: 12px;
|
|
16
|
+
font-weight: 500;
|
|
17
|
+
letter-spacing: var(--rb-label-tracking);
|
|
18
|
+
}
|
|
19
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table td {
|
|
20
|
+
padding: var(--rb-space-3);
|
|
21
|
+
border-bottom: 1px solid rgba(201, 195, 218, 0.4);
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table tbody tr {
|
|
24
|
+
transition: background var(--rb-transition);
|
|
25
|
+
}
|
|
26
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table tbody tr:hover {
|
|
27
|
+
background: var(--rb-sky-tint);
|
|
28
|
+
}
|
|
29
|
+
/* Numeric cells take the mono voice — prices and data read as utility-grade. */
|
|
30
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table td.rb-num,
|
|
31
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-table th.rb-num {
|
|
32
|
+
font-family: var(--rb-font-mono);
|
|
33
|
+
text-align: right;
|
|
34
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* summer-cloud — tabs: violet underline on the active tab, sky tint on hover */
|
|
2
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tabs {
|
|
3
|
+
display: flex;
|
|
4
|
+
gap: var(--rb-space-2);
|
|
5
|
+
border-bottom: 1px solid var(--rb-outline);
|
|
6
|
+
}
|
|
7
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tab {
|
|
8
|
+
padding: var(--rb-space-2) var(--rb-space-3);
|
|
9
|
+
margin-bottom: -1px;
|
|
10
|
+
background: none;
|
|
11
|
+
border: none;
|
|
12
|
+
border-bottom: 2px solid transparent;
|
|
13
|
+
border-radius: var(--rb-radius-sm) var(--rb-radius-sm) 0 0;
|
|
14
|
+
color: var(--rb-text-faint);
|
|
15
|
+
font-family: var(--rb-font-display);
|
|
16
|
+
font-weight: var(--rb-font-weight-medium);
|
|
17
|
+
font-size: var(--rb-text-sm);
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
transition: color var(--rb-transition), background var(--rb-transition),
|
|
20
|
+
border-color var(--rb-transition);
|
|
21
|
+
}
|
|
22
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tab:hover {
|
|
23
|
+
background: var(--rb-sky-tint);
|
|
24
|
+
color: var(--rb-accent);
|
|
25
|
+
}
|
|
26
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tab:focus-visible {
|
|
27
|
+
outline: none;
|
|
28
|
+
box-shadow: 0 0 0 4px var(--rb-accent-2-glow);
|
|
29
|
+
}
|
|
30
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tab--active,
|
|
31
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tab[aria-selected="true"] {
|
|
32
|
+
color: var(--rb-accent);
|
|
33
|
+
border-bottom-color: var(--rb-accent);
|
|
34
|
+
font-weight: var(--rb-font-weight-bold);
|
|
35
|
+
}
|
|
36
|
+
:where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-tabpanel {
|
|
37
|
+
padding: var(--rb-space-3) 0;
|
|
38
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# summer-cloud
|
|
2
|
+
|
|
3
|
+
> **Source & attribution.** Ported from
|
|
4
|
+
> [`nazuraki/ui-std-lib`](https://github.com/nazuraki/ui-std-lib)'s
|
|
5
|
+
> `@nazuraki/styles` "summer-cloud" theme (MIT, Copyright (c) 2026 nazuraki — see
|
|
6
|
+
> the repo [`NOTICE`](../../NOTICE)), re-namespaced from `--nb-*` / `.nb-*` /
|
|
7
|
+
> `data-nb-style` to the rackbops `--rb-*` contract. The aesthetic below is
|
|
8
|
+
> nazuraki's; only the token/class names changed.
|
|
9
|
+
|
|
10
|
+
Light, airy, high-velocity retail aesthetic — "Airy Energetic." Frosted white
|
|
11
|
+
glass floating on a sky gradient, with a vivid violet doing all the work of
|
|
12
|
+
emphasis. Where neon-butterfly is a command console, summer-cloud is a summer
|
|
13
|
+
storefront: weightless, optimistic, effortless. Nothing sits flat on the page;
|
|
14
|
+
everything hovers.
|
|
15
|
+
|
|
16
|
+
Derived from the Stitch project *Summer Cloud UI System*
|
|
17
|
+
(`15973631330153907862`): Style Guide, Components Showcase, Retail Dashboard.
|
|
18
|
+
|
|
19
|
+
## Token mapping (dual accent + tinted shadows)
|
|
20
|
+
|
|
21
|
+
summer-cloud is a two-accent design; the rackbops baseline carries a single
|
|
22
|
+
`--rb-accent`. It also ships real shadow/tracking/pill tokens that fill baseline
|
|
23
|
+
slots the darker themes had to synthesize:
|
|
24
|
+
|
|
25
|
+
| Role | rackbops token | Value |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| Primary / brand voice (violet) | `--rb-accent` (+ `--rb-accent-fg`, `--rb-accent-bright`, `--rb-accent-glow`, `--rb-accent-border`) | `#4500d9` |
|
|
28
|
+
| Active / secondary (sky blue) | `--rb-accent-2` (+ `--rb-accent-2-glow`, `--rb-accent-2-deep`) — theme extras | `#0cb3ff` |
|
|
29
|
+
| Glass tiers | `--rb-surface-glass` / `--rb-surface-glass-high` — extras | `0.6` / `0.8` white |
|
|
30
|
+
| Tinted shadows | `--rb-shadow-sm` / `--rb-shadow-lg` (+ `--rb-shadow-raised`, `--rb-shadow-raised-hover` extras) | primary-tinted |
|
|
31
|
+
| Display tracking | `--rb-heading-tracking` | `-0.02em` |
|
|
32
|
+
|
|
33
|
+
summer-cloud's shadow scale is airy by design: `--rb-shadow-sm` is a soft
|
|
34
|
+
`0 10px 30px` ambient (not the tight 1–3px the console themes use), and `.rb-card`
|
|
35
|
+
wears `--rb-shadow-lg` at rest — the "everything hovers" look. A shared component
|
|
36
|
+
written against the usual sm=resting / lg=elevated convention will read heavier
|
|
37
|
+
here; that is intended, not a bug.
|
|
38
|
+
|
|
39
|
+
## Color
|
|
40
|
+
|
|
41
|
+
| Role | Value | Usage |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| Background | `#f6fafe` | Flat page ground; the `.rb-bg` sky gradient runs `--rb-sky-start` `#f0f4f8` → `--rb-sky-end` `#c9e6ff` at 135°, `fixed` |
|
|
44
|
+
| Surface | `#ffffff` | Dialogs and fully opaque panels |
|
|
45
|
+
| Surface sunken | `#f0f4f8` | Inset form fields |
|
|
46
|
+
| Surface glass | `rgba(255,255,255,0.6)` + 12px blur | Cards, alerts (Level 1) |
|
|
47
|
+
| Surface glass high | `rgba(255,255,255,0.8)` + 20px blur | Floating/hover cards, modals (Level 2) |
|
|
48
|
+
| Text | `#171c1f` | Body text |
|
|
49
|
+
| Text faint | `#484457` | Secondary text, labels, idle nav |
|
|
50
|
+
| Accent (violet) | `#4500d9` | Headings, CTAs, active states, prices, progress |
|
|
51
|
+
| Accent bright | `#5d2bff` | Shadow/glow tint and primary hover fill |
|
|
52
|
+
| Accent-2 (sky blue) | `#0cb3ff` | Focus rings, secondary path, info — the interactive signal |
|
|
53
|
+
| Accent-2 deep | `#006492` | Sky blue as *text* (the bright value fails contrast) |
|
|
54
|
+
| Info | `#0cb3ff` | Informational callouts and badges |
|
|
55
|
+
| Success | `#30e330` | Switch "on" state — deliberately vibrant, the one high-energy pop |
|
|
56
|
+
| Warning | `#f2c025` | Caution states, "New" badges |
|
|
57
|
+
| Danger | `#ff4d4d` (retail red) | Errors, "Sale" badges, alert rules — carries dark text, never white |
|
|
58
|
+
| Danger deep | `#cc1f1f` | Danger where white text sits on it (destructive buttons) |
|
|
59
|
+
| Border | `rgba(255,255,255,0.4)` | Glass edges — the highlight that makes glass read as glass |
|
|
60
|
+
| Outline | `#c9c3da` | Hairlines on opaque surfaces (chips, table rules, checkboxes) |
|
|
61
|
+
| Sky tint | `rgba(255,255,255,0.7)` | Hover wash on ghost/nav elements |
|
|
62
|
+
|
|
63
|
+
Rules: the violet is the only loud color and carries emphasis alone — resting UI
|
|
64
|
+
is faint grey on white glass. Sky blue means "you can interact with this" (focus,
|
|
65
|
+
secondary actions, info). Never use pure black; never use a grey shadow. The
|
|
66
|
+
gradient is not decoration — on a flat white page the glass has nothing to be
|
|
67
|
+
glass against, and the theme collapses.
|
|
68
|
+
|
|
69
|
+
## Typography
|
|
70
|
+
|
|
71
|
+
Three voices, per the project's design system:
|
|
72
|
+
|
|
73
|
+
- **Display & headings:** Plus Jakarta Sans (600/700/800), letter-spacing
|
|
74
|
+
`-0.02em` (`--rb-heading-tracking`) at display sizes — friendly rounded
|
|
75
|
+
terminals, tucked in tight.
|
|
76
|
+
- **Body:** Inter 400, 16px/24px. Sentence case, always.
|
|
77
|
+
- **Data & labels:** JetBrains Mono 500, 12px, tracking `0.05em`
|
|
78
|
+
(`--rb-label-tracking`). Field labels, badges, table headers, prices, metadata.
|
|
79
|
+
Uppercase for badges and table headers (furniture); sentence case for field
|
|
80
|
+
labels, which people read as words.
|
|
81
|
+
|
|
82
|
+
Interactive text (buttons, links, tabs) is Plus Jakarta Sans 600 at 14px,
|
|
83
|
+
sentence case. Uppercase never appears outside the mono voice.
|
|
84
|
+
|
|
85
|
+
The three webfonts are declared in `styles/manifest.json` (`summer-cloud.fonts`);
|
|
86
|
+
consumers load that stylesheet or self-host. Every stack falls back to a system
|
|
87
|
+
family.
|
|
88
|
+
|
|
89
|
+
## Shape & effects
|
|
90
|
+
|
|
91
|
+
- Radius `1rem` (16px) for cards, panels, and fields; **pills**
|
|
92
|
+
(`--rb-radius-pill`) for every button, badge, and chip; `--rb-radius-sm`
|
|
93
|
+
(`0.25rem`) minimum anywhere else. Never 0.
|
|
94
|
+
- Depth is **blur + tinted shadow**, never grey drop shadows. Shadows are tinted
|
|
95
|
+
with `#5d2bff`: `--rb-shadow-lg` (`0 20px 40px rgba(93,43,255,0.08)`) at rest,
|
|
96
|
+
`--rb-shadow-raised` (`0 4px 14px rgba(93,43,255,0.39)`) for raised CTAs.
|
|
97
|
+
- Two elevation tiers only — Level 1 glass (0.6 white / 12px blur) for content,
|
|
98
|
+
Level 2 (0.8 white / 20px blur + lift) for interactive and floating things.
|
|
99
|
+
- **Bouncy, not linear.** Buttons scale to 1.03 on hover and 0.95 on press with
|
|
100
|
+
`--rb-ease-bounce` (`cubic-bezier(0.34,1.56,0.64,1)`); floating cards translate
|
|
101
|
+
`-4px`.
|
|
102
|
+
- Focus is a 4px sky-blue ring (`0 0 0 4px rgba(12,179,255,0.2)`), never an
|
|
103
|
+
outline suppression without a replacement.
|
|
104
|
+
- Spacing is strictly multiples of 8px. When in doubt, add 8.
|
|
105
|
+
- Respect `prefers-reduced-motion` — every transform is dropped.
|
|
106
|
+
|
|
107
|
+
## Components
|
|
108
|
+
|
|
109
|
+
Class prefix `rb-` (shared across themes so `@rackbops/ui-react` stays
|
|
110
|
+
theme-agnostic). Variants use BEM-ish modifiers (`rb-btn--primary`).
|
|
111
|
+
|
|
112
|
+
- **Card** `.rb-card` — glass panel; `--floating` adds the Level 2 hover lift.
|
|
113
|
+
- **NavLink** `.rb-link` — pill, sky-tint wash, `→` slides 4px on hover;
|
|
114
|
+
`--active` / `[aria-current=page]` becomes the violet underline rule.
|
|
115
|
+
- **Button** `.rb-btn` — glass by default; `--primary` (solid violet CTA, one
|
|
116
|
+
per view), `--accent` (sky-edged glass), `--ghost`, `--danger`.
|
|
117
|
+
- **Form** `.rb-input`, `.rb-textarea`, `.rb-select`, `.rb-label`, `.rb-field`,
|
|
118
|
+
`.rb-checkbox`, `.rb-radio`, `.rb-switch`, `.rb-choice` — sunken fields, no
|
|
119
|
+
resting border, sky-blue ring on focus. The switch is the oversized
|
|
120
|
+
"cloud-toggle": squishy, and green when live.
|
|
121
|
+
- **Badge** `.rb-badge` + semantic modifiers — solid pills, mono uppercase.
|
|
122
|
+
**Chip** `.rb-chip` — outlined filter chip; `--selected` fills violet (a
|
|
123
|
+
summer-cloud extra, beyond the shared component set).
|
|
124
|
+
- **Alert** `.rb-alert` — glass card with a 4px semantic left rule.
|
|
125
|
+
- **Dialog** `.rb-dialog` — native `<dialog>`, opaque white, blurred backdrop.
|
|
126
|
+
- **Tabs** `.rb-tabs`/`.rb-tab`/`.rb-tabpanel` — violet underline when active.
|
|
127
|
+
- **Table** `.rb-table` — mono uppercase headers, sky-tint row hover; add
|
|
128
|
+
`.rb-num` to numeric cells for the mono/right-aligned treatment.
|
|
129
|
+
- **Progress** `.rb-progress`, **Spinner** `.rb-spinner` — glowing violet.
|
|
130
|
+
|
|
131
|
+
This port carries nazuraki's original component set (plus its `.rb-chip` and
|
|
132
|
+
`.rb-card--floating` extras); the rackbops-specific `eyebrow`, `tabstrip`,
|
|
133
|
+
`wordmark`, and `card--raised` surfaces are not part of it.
|
|
134
|
+
|
|
135
|
+
## Deviations from the Stitch source
|
|
136
|
+
|
|
137
|
+
*(nazuraki's own authoring record for this theme, carried over with the port — it
|
|
138
|
+
describes nazuraki's decisions when building summer-cloud, not the rackbops copy.)*
|
|
139
|
+
|
|
140
|
+
- The generated screens flattened all three type voices to Plus Jakarta Sans.
|
|
141
|
+
This theme follows the project's written design system instead (Inter body,
|
|
142
|
+
JetBrains Mono labels), the richer and intended spec.
|
|
143
|
+
- The project's stored theme carried an earlier palette (near-black primary
|
|
144
|
+
`#01020e`, lavender secondary `#7248ae`). The rendered screens — all three, in
|
|
145
|
+
agreement — use violet `#4500d9` and sky blue `#0cb3ff`. This theme matches the
|
|
146
|
+
screens, since that is what Summer Cloud actually looks like.
|
|
147
|
+
- Tabs, table, dialog, and spinner do not appear in the source screens; they are
|
|
148
|
+
extrapolated from the rules above to complete the component inventory.
|
|
149
|
+
- The source screens set white text on retail red (`#ff4d4d`), which is 3.27:1 —
|
|
150
|
+
below AA at badge and button sizes. This theme keeps the vivid red and puts
|
|
151
|
+
dark text on it (4.97:1), and uses `--rb-danger-deep` for the solid destructive
|
|
152
|
+
button (5.55:1 on white). Every other foreground/background pair in the palette
|
|
153
|
+
clears AA.
|
|
154
|
+
|
|
155
|
+
## Code syntax
|
|
156
|
+
|
|
157
|
+
Tokens `--rb-code-*` (theme extra). Palette hues deepened for contrast on white:
|
|
158
|
+
violet keywords, deep-green strings, deep-amber numbers, accent-deep functions,
|
|
159
|
+
deep-teal types, danger-deep variables, muted-faint comments, faint meta.
|
|
160
|
+
|
|
161
|
+
## Scoping
|
|
162
|
+
|
|
163
|
+
Every rule is guarded by `data-rb-style="summer-cloud"` (self or ancestor),
|
|
164
|
+
wrapped in zero-specificity `:where()`. Set the attribute on `<html>` for a page
|
|
165
|
+
or on a container for an embedded island.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* summer-cloud — 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/button.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";
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/* summer-cloud — design tokens
|
|
2
|
+
* Ported from nazuraki/ui-std-lib's @nazuraki/styles "summer-cloud" theme (MIT,
|
|
3
|
+
* Copyright (c) 2026 nazuraki — see the repo NOTICE), re-namespaced to the
|
|
4
|
+
* rackbops (--rb-*) contract. Consume via:
|
|
5
|
+
* @import "@rackbops/styles/summer-cloud/tokens";
|
|
6
|
+
* or pull the whole theme with ./index.css.
|
|
7
|
+
*
|
|
8
|
+
* Nothing applies until an element carries data-rb-style="summer-cloud" — 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
|
+
* Names marked (extra) are additions beyond the baseline set that only this
|
|
13
|
+
* theme's own component CSS relies on. summer-cloud is a dual-accent light
|
|
14
|
+
* design: violet is the brand voice (baseline --rb-accent); sky blue marks
|
|
15
|
+
* active paths (the --rb-accent-2 extra). Depth is a primary-tinted soft shadow,
|
|
16
|
+
* never grey — its shadow-soft/shadow map onto baseline --rb-shadow-sm/-lg.
|
|
17
|
+
*/
|
|
18
|
+
:where([data-rb-style="summer-cloud"]) {
|
|
19
|
+
color-scheme: light;
|
|
20
|
+
|
|
21
|
+
/* color — airy off-white ground */
|
|
22
|
+
--rb-bg: #f6fafe;
|
|
23
|
+
--rb-bg-blend: #eaeef2; /* (extra) */
|
|
24
|
+
--rb-surface: #ffffff;
|
|
25
|
+
--rb-surface-2: #eef3f9; /* tinted raised panel */
|
|
26
|
+
--rb-surface-sunken: #f0f4f8; /* inset fields */
|
|
27
|
+
--rb-surface-glass: rgba(255, 255, 255, 0.6); /* (extra) glass panes */
|
|
28
|
+
--rb-surface-glass-high: rgba(255, 255, 255, 0.8); /* (extra) floating tier */
|
|
29
|
+
--rb-text: #171c1f;
|
|
30
|
+
--rb-text-soft: #2f2b3a; /* secondary body copy, above faint */
|
|
31
|
+
--rb-text-faint: #484457; /* labels, meta */
|
|
32
|
+
--rb-border: rgba(255, 255, 255, 0.4); /* on glass */
|
|
33
|
+
--rb-border-strong: rgba(255, 255, 255, 0.7); /* lit top edge of glass panes */
|
|
34
|
+
--rb-outline: #c9c3da; /* (extra) hairline on opaque surfaces */
|
|
35
|
+
|
|
36
|
+
/* accent — violet is the brand voice */
|
|
37
|
+
--rb-accent: #4500d9;
|
|
38
|
+
--rb-accent-fg: #ffffff; /* white ink on the solid violet fill */
|
|
39
|
+
--rb-accent-wash: rgba(69, 0, 217, 0.1); /* light violet tint */
|
|
40
|
+
--rb-accent-grad: linear-gradient(120deg, #4500d9, #0cb3ff); /* violet → sky */
|
|
41
|
+
--rb-accent-bright: #5d2bff; /* (extra) shadow/glow tint */
|
|
42
|
+
--rb-accent-glow: rgba(93, 43, 255, 0.4); /* (extra) */
|
|
43
|
+
--rb-accent-border: rgba(69, 0, 217, 0.2); /* (extra) */
|
|
44
|
+
|
|
45
|
+
/* accent-2 (extra) — sky blue: active states, links, focus */
|
|
46
|
+
--rb-accent-2: #0cb3ff;
|
|
47
|
+
--rb-accent-2-glow: rgba(12, 179, 255, 0.2);
|
|
48
|
+
--rb-accent-2-deep: #006492; /* readable accent text on white */
|
|
49
|
+
|
|
50
|
+
/* semantic */
|
|
51
|
+
--rb-info: #0cb3ff;
|
|
52
|
+
--rb-success: #30e330;
|
|
53
|
+
--rb-warning: #f2c025;
|
|
54
|
+
--rb-danger: #ff4d4d;
|
|
55
|
+
--rb-danger-deep: #cc1f1f; /* (extra) danger where white text sits on it */
|
|
56
|
+
|
|
57
|
+
/* sky gradient (extra) */
|
|
58
|
+
--rb-sky-start: #f0f4f8;
|
|
59
|
+
--rb-sky-end: #c9e6ff;
|
|
60
|
+
--rb-sky-tint: rgba(255, 255, 255, 0.7);
|
|
61
|
+
|
|
62
|
+
/* code syntax (extra) — deepened palette hues for contrast on white */
|
|
63
|
+
--rb-code-keyword: #4500d9;
|
|
64
|
+
--rb-code-string: #157a2a;
|
|
65
|
+
--rb-code-number: #9a6b00;
|
|
66
|
+
--rb-code-comment: #6e6880;
|
|
67
|
+
--rb-code-function: #006492;
|
|
68
|
+
--rb-code-variable: #cc1f1f;
|
|
69
|
+
--rb-code-type: #00877a;
|
|
70
|
+
--rb-code-meta: #484457;
|
|
71
|
+
|
|
72
|
+
/* typography */
|
|
73
|
+
--rb-font-display: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
|
|
74
|
+
--rb-font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
|
|
75
|
+
--rb-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
76
|
+
--rb-font-weight: 400;
|
|
77
|
+
--rb-font-weight-medium: 600;
|
|
78
|
+
--rb-font-weight-bold: 700;
|
|
79
|
+
--rb-heading-tracking: -0.02em; /* display sizes */
|
|
80
|
+
--rb-label-tracking: 0.05em;
|
|
81
|
+
--rb-text-sm: 14px;
|
|
82
|
+
|
|
83
|
+
/* shape & effects — big soft radii, primary-tinted soft shadows */
|
|
84
|
+
--rb-radius: 1rem;
|
|
85
|
+
--rb-radius-sm: 0.25rem; /* (extra) */
|
|
86
|
+
--rb-radius-lg: 1.5rem; /* cards and large containers */
|
|
87
|
+
--rb-radius-pill: 9999px; /* chips, badges, switches */
|
|
88
|
+
--rb-shadow-sm: 0 10px 30px rgba(0, 100, 146, 0.05); /* soft ambient */
|
|
89
|
+
--rb-shadow-lg: 0 20px 40px rgba(93, 43, 255, 0.08); /* large ambient */
|
|
90
|
+
--rb-shadow-raised: 0 4px 14px rgba(93, 43, 255, 0.39); /* (extra) raised button */
|
|
91
|
+
--rb-shadow-raised-hover: 0 6px 20px rgba(93, 43, 255, 0.5); /* (extra) */
|
|
92
|
+
--rb-blur: 12px;
|
|
93
|
+
--rb-blur-high: 20px; /* (extra) */
|
|
94
|
+
--rb-transition: 0.3s;
|
|
95
|
+
--rb-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); /* (extra) */
|
|
96
|
+
|
|
97
|
+
/* spacing */
|
|
98
|
+
--rb-space-1: 0.25rem;
|
|
99
|
+
--rb-space-2: 0.5rem;
|
|
100
|
+
--rb-space-3: 1rem;
|
|
101
|
+
--rb-space-4: 1.5rem;
|
|
102
|
+
--rb-space-5: 2rem;
|
|
103
|
+
}
|