@actabldesign/bellhop-styles 0.0.3

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.
Files changed (54) hide show
  1. package/README.md +185 -0
  2. package/base/normalize.css +101 -0
  3. package/components/appbar.css +167 -0
  4. package/components/autocomplete-menu.css +142 -0
  5. package/components/avatar-add.css +112 -0
  6. package/components/avatar.css +253 -0
  7. package/components/badge-dot.css +78 -0
  8. package/components/badge.css +337 -0
  9. package/components/bar-chart-card.css +261 -0
  10. package/components/bar-chart.css +149 -0
  11. package/components/breadcrumbs.css +136 -0
  12. package/components/button.css +266 -0
  13. package/components/chart-tooltip.css +96 -0
  14. package/components/checkbox-label.css +53 -0
  15. package/components/checkbox.css +127 -0
  16. package/components/container-footer.css +22 -0
  17. package/components/container.css +17 -0
  18. package/components/date-picker-content.css +337 -0
  19. package/components/date-picker.css +103 -0
  20. package/components/date-range-picker-content.css +85 -0
  21. package/components/date-range-picker.css +72 -0
  22. package/components/dropdown-menu.css +204 -0
  23. package/components/dropdown.css +126 -0
  24. package/components/empty-state.css +83 -0
  25. package/components/featured-icon.css +194 -0
  26. package/components/illustrations.css +120 -0
  27. package/components/input-autocomplete.css +158 -0
  28. package/components/input-number.css +2 -0
  29. package/components/input-verification.css +137 -0
  30. package/components/input.css +374 -0
  31. package/components/loader-spinner.css +421 -0
  32. package/components/logo-box.css +85 -0
  33. package/components/month-picker-content.css +190 -0
  34. package/components/month-picker.css +83 -0
  35. package/components/nav-item.css +110 -0
  36. package/components/notification.css +262 -0
  37. package/components/page-navigation.css +294 -0
  38. package/components/picker-menu.css +43 -0
  39. package/components/pie-chart-card.css +213 -0
  40. package/components/pie-chart.css +80 -0
  41. package/components/product-switcher.css +127 -0
  42. package/components/property-switcher.css +95 -0
  43. package/components/radio-button-label.css +53 -0
  44. package/components/radio-button.css +134 -0
  45. package/components/sidebar.css +178 -0
  46. package/components/skeleton-loader.css +47 -0
  47. package/components/tag.css +214 -0
  48. package/components/textarea.css +211 -0
  49. package/components/toggle.css +298 -0
  50. package/components/tooltip.css +85 -0
  51. package/components/trend-chart-card.css +189 -0
  52. package/components/trend-chart.css +94 -0
  53. package/index.css +8115 -0
  54. package/package.json +32 -0
@@ -0,0 +1,214 @@
1
+ /* Tag Base Styles */
2
+ .tag {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--spacing-sm);
7
+ font-family: var(--font-inter);
8
+ font-weight: var(--weight-medium);
9
+ background-color: var(--color-white);
10
+ border: 1px solid var(--color-neutral-200);
11
+ border-radius: var(--radius-sm);
12
+ white-space: nowrap;
13
+ cursor: default;
14
+ user-select: none;
15
+ }
16
+
17
+ /* Clickable Tags */
18
+ .tag-dismissible {
19
+ cursor: pointer;
20
+ }
21
+
22
+ /* Tags that act as counters or are interactive */
23
+ .tag-clickable {
24
+ cursor: pointer;
25
+ }
26
+
27
+ /* Size Variants */
28
+ .tag-sm {
29
+ padding: var(--spacing-xxs) var(--spacing-md);
30
+ font-size: var(--text-sm-size);
31
+ line-height: var(--text-sm-line);
32
+ }
33
+
34
+ .tag-sm.tag-dismissible {
35
+ padding: var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs)
36
+ var(--spacing-md);
37
+ }
38
+
39
+ .tag-md {
40
+ padding: var(--spacing-xxs) var(--spacing-md);
41
+ font-size: var(--text-md-size);
42
+ line-height: var(--text-md-line);
43
+ }
44
+
45
+ .tag-md.tag-dismissible {
46
+ padding: var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs)
47
+ var(--spacing-md);
48
+ }
49
+
50
+ .tag-lg {
51
+ padding: var(--spacing-xs) var(--spacing-lg);
52
+ font-size: var(--text-md-size);
53
+ line-height: var(--text-md-line);
54
+ }
55
+
56
+ .tag-lg.tag-dismissible {
57
+ padding: var(--spacing-xs) var(--spacing-xs) var(--spacing-xs)
58
+ var(--spacing-lg);
59
+ }
60
+
61
+ /* Content Layout */
62
+ .tag-content {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--spacing-xs);
66
+ }
67
+
68
+ /* Dot Variant - specific adjustments */
69
+ .tag-dot .tag-content {
70
+ gap: var(--spacing-xs);
71
+ }
72
+
73
+ /* Avatar Variant - specific adjustments */
74
+ .tag-avatar .tag-content {
75
+ gap: var(--spacing-sm);
76
+ }
77
+
78
+ .tag-sm.tag-dot {
79
+ padding-left: var(--spacing-sm);
80
+ }
81
+
82
+ .tag-sm.tag-dot.tag-dismissible {
83
+ padding-left: var(--spacing-sm);
84
+ }
85
+
86
+ .tag-md.tag-dot {
87
+ padding-left: var(--spacing-sm);
88
+ }
89
+
90
+ .tag-md.tag-dot.tag-dismissible {
91
+ padding-left: var(--spacing-sm);
92
+ }
93
+
94
+ .tag-lg.tag-dot {
95
+ padding-left: var(--spacing-md);
96
+ }
97
+
98
+ .tag-lg.tag-dot.tag-dismissible {
99
+ padding-left: var(--spacing-md);
100
+ }
101
+
102
+ /* Avatar Variant - specific adjustments */
103
+ .tag-sm.tag-avatar {
104
+ padding-left: var(--spacing-xs);
105
+ }
106
+
107
+ .tag-sm.tag-avatar.tag-dismissible {
108
+ padding-left: var(--spacing-xs);
109
+ }
110
+
111
+ .tag-md.tag-avatar {
112
+ padding-left: var(--spacing-sm);
113
+ }
114
+
115
+ .tag-md.tag-avatar.tag-dismissible {
116
+ padding-left: var(--spacing-sm);
117
+ }
118
+
119
+ .tag-lg.tag-avatar {
120
+ padding-left: var(--spacing-sm);
121
+ }
122
+
123
+ .tag-lg.tag-avatar.tag-dismissible {
124
+ padding-left: var(--spacing-sm);
125
+ }
126
+
127
+ /* Label wrapper for tooltip positioning */
128
+ .tag-label-wrapper {
129
+ position: relative;
130
+ display: inline-flex;
131
+ align-items: center;
132
+ max-width: 100%;
133
+ }
134
+
135
+ /* Label */
136
+ .tag-label {
137
+ color: var(--color-neutral-700);
138
+ white-space: nowrap;
139
+ overflow: hidden;
140
+ text-overflow: ellipsis;
141
+ }
142
+
143
+ /* Badge Dot Component */
144
+ .tag-content .tag-dot-component {
145
+ flex-shrink: 0;
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: center;
149
+ }
150
+
151
+ /* Avatar Component */
152
+ .tag-content .tag-avatar-component {
153
+ flex-shrink: 0;
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: center;
157
+ }
158
+
159
+ /* Dismiss Button */
160
+ .tag-dismiss {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: center;
164
+ background: none;
165
+ border: none;
166
+ cursor: pointer;
167
+ padding: var(--spacing-xxs);
168
+ border-radius: var(--radius-xs);
169
+ transition: background-color 0.2s ease;
170
+ width: var(--spacing-xl);
171
+ height: var(--spacing-xl);
172
+ flex-shrink: 0;
173
+ }
174
+
175
+ .tag-lg .tag-dismiss {
176
+ padding: var(--spacing-xs);
177
+ width: var(--spacing-2xl);
178
+ height: var(--spacing-2xl);
179
+ }
180
+
181
+ .tag-dismiss:hover {
182
+ background-color: var(--color-neutral-100);
183
+ }
184
+
185
+ .tag-dismiss:disabled {
186
+ cursor: not-allowed;
187
+ opacity: 0.5;
188
+ }
189
+
190
+ .tag-dismiss-icon {
191
+ font-size: var(--text-sm-size);
192
+ color: var(--color-neutral-500);
193
+ line-height: 1;
194
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
195
+ }
196
+
197
+ .tag-lg .tag-dismiss-icon {
198
+ font-size: var(--text-md-size);
199
+ }
200
+
201
+ /* Disabled State */
202
+ .tag-disabled {
203
+ opacity: 0.5;
204
+ cursor: not-allowed;
205
+ }
206
+
207
+ /* Hover State for Dismissible Tags */
208
+ .tag:hover {
209
+ border-color: var(--color-neutral-300);
210
+ }
211
+
212
+ .tag-disabled:hover {
213
+ border-color: var(--color-neutral-200);
214
+ }
@@ -0,0 +1,211 @@
1
+ /* ==========================================================================
2
+ TEXTAREA COMPONENT STYLES
3
+ ========================================================================== */
4
+
5
+ .textarea-wrapper {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: var(--spacing-sm);
9
+ width: 400px;
10
+ }
11
+
12
+ .textarea-with-label {
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: var(--spacing-sm);
16
+ }
17
+
18
+ /* Label Section */
19
+ .label-wrapper {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ }
24
+
25
+ .label {
26
+ font-family: var(--font-inter);
27
+ font-weight: 500;
28
+ font-size: var(--text-sm-size);
29
+ line-height: 1.4285714285714286;
30
+ color: var(--color-neutral-700);
31
+ }
32
+
33
+ .asterisk {
34
+ font-family: var(--font-inter);
35
+ font-weight: 400;
36
+ font-size: var(--text-sm-size);
37
+ line-height: 1.4285714285714286;
38
+ color: var(--color-error-600);
39
+ }
40
+
41
+ /* Material Symbols Support */
42
+ .material-symbols-outlined {
43
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
44
+ }
45
+
46
+ /* Container */
47
+ .textarea-container {
48
+ position: relative;
49
+ display: flex;
50
+ flex-direction: column;
51
+ background: var(--color-white);
52
+ border: 1px solid var(--color-neutral-300);
53
+ border-radius: 8px;
54
+ box-shadow: 0px 1px 2px rgba(64, 73, 104, 0.06);
55
+ transition: all 0.2s ease-in-out;
56
+ min-height: 128px;
57
+ }
58
+
59
+ .textarea-container:hover:not(.textarea-container-disabled):not(
60
+ .textarea-container-focused
61
+ ) {
62
+ border-color: var(--color-brand-500);
63
+ }
64
+
65
+ .textarea-container-focused {
66
+ border-color: var(--color-brand-500);
67
+ box-shadow: 0 0 0 1px var(--color-brand-500);
68
+ }
69
+
70
+ .textarea-container-error {
71
+ border-color: var(--color-error-300);
72
+ }
73
+
74
+ .textarea-container-error:hover:not(.textarea-container-focused) {
75
+ border-color: var(--color-error-500);
76
+ }
77
+
78
+ .textarea-container-error.textarea-container-focused {
79
+ border-color: var(--color-brand-500);
80
+ box-shadow: 0 0 0 1px var(--color-brand-500);
81
+ }
82
+
83
+ .textarea-container-disabled {
84
+ opacity: 0.5;
85
+ cursor: not-allowed;
86
+ background: var(--color-neutral-50);
87
+ }
88
+
89
+ /* Textarea */
90
+ .textarea {
91
+ box-sizing: border-box;
92
+ padding: 12px 14px;
93
+ background: transparent;
94
+ border: none;
95
+ outline: none;
96
+ font-family: var(--font-inter);
97
+ font-weight: 400;
98
+ font-size: var(--text-md-size);
99
+ line-height: 1.5;
100
+ color: var(--color-neutral-900);
101
+ width: 100%;
102
+ min-height: 96px;
103
+ resize: none;
104
+ caret-color: var(--color-brand-500);
105
+ flex: 1;
106
+ box-shadow: none;
107
+ }
108
+
109
+ .textarea:focus {
110
+ outline: none;
111
+ border: none;
112
+ box-shadow: none;
113
+ }
114
+
115
+ .textarea::placeholder {
116
+ color: var(--color-neutral-400);
117
+ }
118
+
119
+ .textarea:disabled {
120
+ cursor: not-allowed;
121
+ color: var(--color-neutral-400);
122
+ }
123
+
124
+ /* Tags and text integrated container */
125
+ .textarea-content {
126
+ width: 100%;
127
+ }
128
+
129
+ .tags-and-text-container {
130
+ padding: 12px 14px;
131
+ min-height: 96px;
132
+ width: 100%;
133
+ }
134
+
135
+ .text-and-tags-flow {
136
+ display: flex;
137
+ flex-direction: column;
138
+ align-items: flex-start;
139
+ gap: var(--spacing-xs);
140
+ height: 100%;
141
+ }
142
+
143
+ .tags-flow {
144
+ display: flex;
145
+ flex-wrap: wrap;
146
+ gap: var(--spacing-xs);
147
+ align-items: center;
148
+ }
149
+
150
+ .textarea-editable {
151
+ width: 100%;
152
+ min-height: 24px;
153
+ outline: none;
154
+ border: none;
155
+ background: transparent;
156
+ font-family: var(--font-inter);
157
+ font-weight: 400;
158
+ font-size: var(--text-md-size);
159
+ line-height: 1.5;
160
+ color: var(--color-neutral-900);
161
+ caret-color: var(--color-brand-500);
162
+ word-wrap: break-word;
163
+ white-space: pre-wrap;
164
+ box-shadow: none;
165
+ }
166
+
167
+ .textarea-editable:focus {
168
+ outline: none;
169
+ border: none;
170
+ box-shadow: none;
171
+ }
172
+
173
+ .textarea-editable:empty:before {
174
+ content: attr(data-placeholder);
175
+ color: var(--color-neutral-400);
176
+ pointer-events: none;
177
+ }
178
+
179
+ .textarea-editable:disabled {
180
+ cursor: not-allowed;
181
+ color: var(--color-neutral-400);
182
+ }
183
+
184
+ /* Hint Text */
185
+ .hint-text {
186
+ font-family: var(--font-inter);
187
+ font-weight: 400;
188
+ font-size: var(--text-sm-size);
189
+ line-height: 1.4285714285714286;
190
+ color: var(--color-neutral-600);
191
+ }
192
+
193
+ .hint-text.hint-error {
194
+ color: var(--color-error-600);
195
+ }
196
+
197
+ /* Autocomplete positioning */
198
+ .autocomplete-wrapper {
199
+ position: absolute;
200
+ top: 100%;
201
+ left: 0;
202
+ right: 0;
203
+ z-index: 1000;
204
+ }
205
+
206
+ /* Responsive adjustments */
207
+ @media (max-width: 768px) {
208
+ .textarea {
209
+ font-size: 16px; /* Prevent zoom on iOS */
210
+ }
211
+ }
@@ -0,0 +1,298 @@
1
+ /* ==========================================================================
2
+ TOGGLE COMPONENT - Material You (Android 12) Design
3
+ Shared styles for all frameworks
4
+ ========================================================================== */
5
+
6
+ /* Toggle Wrapper */
7
+ .toggle-wrapper {
8
+ display: flex;
9
+ align-items: center;
10
+ gap: 0;
11
+ }
12
+
13
+ .toggle-with-text.toggle-size-sm {
14
+ gap: var(--spacing-md);
15
+ }
16
+
17
+ .toggle-with-text.toggle-size-md {
18
+ gap: var(--spacing-lg);
19
+ }
20
+
21
+ /* Toggle Switch Base - Material You specs */
22
+ .toggle-switch {
23
+ position: relative;
24
+ display: inline-block;
25
+ border-radius: var(--radius-full);
26
+ cursor: pointer;
27
+ transition: background-color var(--animation-duration-fast) var(--animation-ease-smooth);
28
+ outline: none;
29
+ border: 2px solid transparent;
30
+ background: transparent;
31
+ overflow: visible;
32
+ padding: 0;
33
+ }
34
+
35
+ .toggle-switch:focus {
36
+ outline: none;
37
+ }
38
+
39
+ .toggle-switch.toggle-disabled {
40
+ cursor: not-allowed;
41
+ opacity: 0.38;
42
+ }
43
+
44
+ /* Toggle Switch Sizes - Material You dimensions */
45
+ .toggle-switch.toggle-sm {
46
+ width: 40px;
47
+ height: 24px;
48
+ }
49
+
50
+ .toggle-switch.toggle-md {
51
+ width: 52px;
52
+ height: 32px;
53
+ }
54
+
55
+ /* Toggle Switch States - Unpressed (False) */
56
+ .toggle-switch.toggle-unpressed {
57
+ background-color: var(--color-neutral-200);
58
+ border-color: transparent;
59
+ }
60
+
61
+ .toggle-switch.toggle-unpressed.toggle-hover {
62
+ background-color: var(--color-neutral-300);
63
+ border-color: transparent;
64
+ }
65
+
66
+ .toggle-switch.toggle-unpressed.toggle-focus {
67
+ background-color: var(--color-neutral-200);
68
+ border-color: transparent;
69
+ }
70
+
71
+ /* Focus ring for unpressed state - on the knob */
72
+ .toggle-switch.toggle-unpressed.toggle-focus .toggle-button::after {
73
+ content: '';
74
+ position: absolute;
75
+ top: -6px;
76
+ left: -6px;
77
+ right: -6px;
78
+ bottom: -6px;
79
+ border-radius: var(--radius-full);
80
+ background: var(--color-neutral-600);
81
+ opacity: 0.12;
82
+ pointer-events: none;
83
+ }
84
+
85
+ .toggle-switch.toggle-unpressed.toggle-disabled {
86
+ background-color: var(--color-neutral-100);
87
+ border-color: transparent;
88
+ }
89
+
90
+ /* Toggle Switch States - Pressed (True) */
91
+ .toggle-switch.toggle-pressed {
92
+ background-color: var(--color-brand-600);
93
+ border-color: var(--color-brand-600);
94
+ }
95
+
96
+ .toggle-switch.toggle-pressed.toggle-hover {
97
+ background-color: var(--color-brand-700);
98
+ border-color: var(--color-brand-700);
99
+ }
100
+
101
+ .toggle-switch.toggle-pressed.toggle-focus {
102
+ background-color: var(--color-brand-600);
103
+ border-color: var(--color-brand-600);
104
+ }
105
+
106
+ /* Focus ring for pressed state - on the knob */
107
+ .toggle-switch.toggle-pressed.toggle-focus .toggle-button::after {
108
+ content: '';
109
+ position: absolute;
110
+ top: -6px;
111
+ left: -6px;
112
+ right: -6px;
113
+ bottom: -6px;
114
+ border-radius: var(--radius-full);
115
+ background: var(--color-brand-100);
116
+ opacity: 0.24;
117
+ pointer-events: none;
118
+ }
119
+
120
+ .toggle-switch.toggle-pressed.toggle-disabled {
121
+ background-color: var(--color-neutral-200);
122
+ border-color: var(--color-neutral-200);
123
+ }
124
+
125
+ .toggle-switch.toggle-pressed.toggle-disabled .toggle-button {
126
+ background-color: var(--color-neutral-100);
127
+ }
128
+
129
+ /* Toggle Button (Handle) - Material You specs */
130
+ .toggle-button {
131
+ position: absolute;
132
+ top: 50%;
133
+ transform: translateY(-50%);
134
+ border-radius: var(--radius-full);
135
+ background-color: var(--color-neutral-600);
136
+ transition: all var(--animation-duration-fast) var(--animation-ease-smooth);
137
+ /* box-shadow removed */
138
+ /* Position relative for ::after pseudo-element */
139
+ position: absolute;
140
+ }
141
+
142
+ /* Toggle Button States - Unpressed */
143
+ .toggle-switch.toggle-unpressed .toggle-button {
144
+ background-color: var(--color-neutral-600);
145
+ }
146
+
147
+ .toggle-switch.toggle-sm.toggle-unpressed .toggle-button {
148
+ width: 16px;
149
+ height: 16px;
150
+ left: 4px;
151
+ }
152
+
153
+ .toggle-switch.toggle-md.toggle-unpressed .toggle-button {
154
+ width: 16px;
155
+ height: 16px;
156
+ left: 4px;
157
+ }
158
+
159
+ .toggle-switch.toggle-unpressed.toggle-hover .toggle-button {
160
+ background-color: var(--color-neutral-700);
161
+ }
162
+
163
+ /* Toggle Button States - Pressed */
164
+ .toggle-switch.toggle-pressed .toggle-button {
165
+ background-color: var(--color-white);
166
+ }
167
+
168
+ .toggle-switch.toggle-sm.toggle-pressed .toggle-button {
169
+ width: 20px;
170
+ height: 20px;
171
+ left: calc(100% - 20px - 4px); /* 40px - 20px - 4px = 16px from left */
172
+ }
173
+
174
+ .toggle-switch.toggle-md.toggle-pressed .toggle-button {
175
+ width: 24px;
176
+ height: 24px;
177
+ left: calc(100% - 24px - 4px); /* 52px - 24px - 4px = 24px from left */
178
+ }
179
+
180
+ .toggle-switch.toggle-pressed.toggle-hover .toggle-button {
181
+ background-color: var(--color-white);
182
+ }
183
+
184
+ /* Toggle Button Sizes - Keep consistent for Material You */
185
+ .toggle-button.toggle-button-sm,
186
+ .toggle-button.toggle-button-md {
187
+ /* Sizes are controlled by state, not by size variant in Material You */
188
+ }
189
+
190
+ /* Toggle Button Disabled State */
191
+ .toggle-switch.toggle-disabled .toggle-button {
192
+ background-color: var(--color-neutral-400);
193
+ box-shadow: none;
194
+ }
195
+
196
+ .toggle-switch.toggle-sm.toggle-unpressed.toggle-disabled .toggle-button {
197
+ width: 16px;
198
+ height: 16px;
199
+ left: 4px;
200
+ background-color: var(--color-neutral-400);
201
+ }
202
+
203
+ .toggle-switch.toggle-md.toggle-unpressed.toggle-disabled .toggle-button {
204
+ width: 16px;
205
+ height: 16px;
206
+ left: 4px;
207
+ background-color: var(--color-neutral-400);
208
+ }
209
+
210
+ .toggle-switch.toggle-sm.toggle-pressed.toggle-disabled .toggle-button {
211
+ width: 20px;
212
+ height: 20px;
213
+ left: calc(100% - 20px - 4px);
214
+ background-color: var(--color-neutral-100);
215
+ }
216
+
217
+ .toggle-switch.toggle-md.toggle-pressed.toggle-disabled .toggle-button {
218
+ width: 24px;
219
+ height: 24px;
220
+ left: calc(100% - 24px - 4px);
221
+ background-color: var(--color-neutral-100);
222
+ }
223
+
224
+ /* Toggle Text Container */
225
+ .toggle-text {
226
+ display: flex;
227
+ flex-direction: column;
228
+ flex: 1;
229
+ }
230
+
231
+ /* Toggle Label */
232
+ .toggle-label {
233
+ color: var(--color-neutral-700);
234
+ font-family: var(--font-inter);
235
+ font-weight: var(--weight-medium);
236
+ text-align: left;
237
+ margin: 0;
238
+ line-height: 1.5;
239
+ }
240
+
241
+ .toggle-label.toggle-label-sm {
242
+ font-size: var(--text-sm-size);
243
+ line-height: var(--text-sm-line);
244
+ }
245
+
246
+ .toggle-label.toggle-label-md {
247
+ font-size: var(--text-md-size);
248
+ line-height: var(--text-md-line);
249
+ }
250
+
251
+ /* Toggle Supporting Text */
252
+ .toggle-supporting-text {
253
+ color: var(--color-neutral-600);
254
+ font-family: var(--font-inter);
255
+ font-weight: var(--weight-regular);
256
+ font-size: var(--text-sm-size);
257
+ line-height: var(--text-sm-line);
258
+ text-align: left;
259
+ margin: 0;
260
+ margin-top: var(--spacing-xxs);
261
+ }
262
+
263
+ /* ==========================================================================
264
+ ACCESSIBILITY & RESPONSIVE BEHAVIOR
265
+ ========================================================================== */
266
+
267
+ /* Accessibility */
268
+ @media (prefers-reduced-motion: reduce) {
269
+ .toggle-switch,
270
+ .toggle-button {
271
+ transition: none;
272
+ }
273
+ }
274
+
275
+ /* High contrast mode support */
276
+ @media (prefers-contrast: high) {
277
+ .toggle-switch.toggle-unpressed {
278
+ border: 2px solid currentColor;
279
+ }
280
+
281
+ .toggle-switch.toggle-pressed {
282
+ border: 2px solid currentColor;
283
+ }
284
+ }
285
+
286
+ /* Focus visible for better keyboard navigation - on the knob */
287
+ .toggle-switch:focus-visible .toggle-button::after {
288
+ content: '';
289
+ position: absolute;
290
+ top: -6px;
291
+ left: -6px;
292
+ right: -6px;
293
+ bottom: -6px;
294
+ border-radius: var(--radius-full);
295
+ background: currentColor;
296
+ opacity: 0.24;
297
+ pointer-events: none;
298
+ }