@actabldesign/bellhop-styles 0.0.4 → 0.0.12

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 (60) hide show
  1. package/README.md +105 -70
  2. package/dist/index.css +33 -0
  3. package/dist/utilities.css +5730 -0
  4. package/llms.txt +2765 -119
  5. package/package.json +6 -1
  6. package/rollup.config.js +39 -24
  7. package/src/bh-tokens/_primitives.scss +296 -0
  8. package/src/bh-tokens/_semantic.scss +158 -0
  9. package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
  10. package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
  11. package/src/bh-tokens/components/_badge.tokens.scss +61 -0
  12. package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
  13. package/src/bh-tokens/components/_button.tokens.scss +185 -0
  14. package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
  15. package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
  16. package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
  17. package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
  18. package/src/bh-tokens/components/_input.tokens.scss +86 -0
  19. package/src/bh-tokens/components/_label.tokens.scss +37 -0
  20. package/src/bh-tokens/components/_modal.tokens.scss +42 -0
  21. package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
  22. package/src/bh-tokens/components/_password.tokens.scss +63 -0
  23. package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
  24. package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
  25. package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
  26. package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
  27. package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
  28. package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
  29. package/src/bh-tokens/components/avatar.scss +288 -0
  30. package/src/bh-tokens/components/badge-dot.scss +177 -0
  31. package/src/bh-tokens/components/badge.scss +497 -0
  32. package/src/bh-tokens/components/button-icon.scss +227 -0
  33. package/src/bh-tokens/components/button.scss +640 -0
  34. package/src/bh-tokens/components/checkbox.scss +254 -0
  35. package/src/bh-tokens/components/dropdown.scss +231 -0
  36. package/src/bh-tokens/components/featured-icon.scss +219 -0
  37. package/src/bh-tokens/components/input-number.scss +147 -0
  38. package/src/bh-tokens/components/input.scss +271 -0
  39. package/src/bh-tokens/components/label.scss +176 -0
  40. package/src/bh-tokens/components/modal.scss +103 -0
  41. package/src/bh-tokens/components/pagination.scss +324 -0
  42. package/src/bh-tokens/components/password.scss +193 -0
  43. package/src/bh-tokens/components/progress-bar.scss +124 -0
  44. package/src/bh-tokens/components/progress-spinner.scss +130 -0
  45. package/src/bh-tokens/components/radiobutton.scss +193 -0
  46. package/src/bh-tokens/components/skeleton.scss +50 -0
  47. package/src/bh-tokens/components/textarea.scss +228 -0
  48. package/src/bh-tokens/components/toggle.scss +320 -0
  49. package/src/mixins/_responsive.scss +167 -0
  50. package/src/tokens/bellhop-typography.css +34 -0
  51. package/src/utilities/_breakpoints.scss +19 -0
  52. package/src/utilities/_flex.scss +228 -0
  53. package/src/utilities/_grid.scss +189 -0
  54. package/src/utilities/_index.scss +32 -0
  55. package/src/utilities/_scrollable.scss +239 -0
  56. package/src/utilities/_sizing.scss +229 -0
  57. package/src/utilities/_spacing.scss +187 -0
  58. package/src/utilities/_truncation.scss +126 -0
  59. package/src/utilities/_visibility.scss +117 -0
  60. package/src/utilities.scss +32 -0
@@ -0,0 +1,130 @@
1
+ /* ==========================================================================
2
+ BH-PROGRESS-SPINNER COMPONENT STYLES
3
+ Uses tokens from _progress-spinner.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './_progress-spinner.tokens.scss';
7
+
8
+ :host {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ }
13
+
14
+ /* ==========================================================================
15
+ OVERLAY STYLES
16
+ ========================================================================== */
17
+
18
+ .bh-progress-spinner-overlay {
19
+ position: fixed;
20
+ top: 0;
21
+ left: 0;
22
+ width: 100%;
23
+ height: 100%;
24
+ background-color: var(--bh-progress-spinner-overlay-bg);
25
+ backdrop-filter: var(--bh-progress-spinner-overlay-backdrop-blur);
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ z-index: var(--bh-progress-spinner-overlay-z-index);
30
+ }
31
+
32
+ .bh-progress-spinner-overlay-content {
33
+ display: flex;
34
+ flex-direction: column;
35
+ align-items: center;
36
+ gap: var(--bh-progress-spinner-overlay-gap);
37
+ }
38
+
39
+ /* ==========================================================================
40
+ CONTAINER STYLES
41
+ ========================================================================== */
42
+
43
+ .bh-progress-spinner-container {
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ gap: var(--bh-progress-spinner-gap);
48
+ }
49
+
50
+ /* ==========================================================================
51
+ MESSAGE STYLES
52
+ ========================================================================== */
53
+
54
+ .bh-progress-spinner-message {
55
+ color: var(--bh-progress-spinner-message-color);
56
+ font-size: var(--bh-progress-spinner-message-font-size);
57
+ line-height: var(--bh-progress-spinner-message-line-height);
58
+ font-weight: var(--bh-progress-spinner-message-font-weight);
59
+ text-align: center;
60
+ margin-top: var(--bh-progress-spinner-message-margin-top);
61
+ }
62
+
63
+ .bh-progress-spinner-overlay .bh-progress-spinner-message {
64
+ color: var(--bh-progress-spinner-message-color-overlay);
65
+ }
66
+
67
+ /* ==========================================================================
68
+ SVG WRAPPER
69
+ ========================================================================== */
70
+
71
+ .bh-progress-spinner-svg-wrapper {
72
+ animation: bh-spinner-rotate var(--bh-progress-spinner-rotation-duration) linear infinite;
73
+ will-change: transform;
74
+ backface-visibility: hidden;
75
+ perspective: 1000px;
76
+ }
77
+
78
+ .bh-progress-spinner-svg {
79
+ display: block;
80
+ transform-origin: 50% 50%;
81
+ transform: translateZ(0);
82
+ }
83
+
84
+ /* ==========================================================================
85
+ CIRCLE ANIMATION
86
+ ========================================================================== */
87
+
88
+ .bh-progress-spinner-circle {
89
+ stroke-dasharray: 90, 150;
90
+ stroke-dashoffset: 0;
91
+ animation: bh-spinner-dash var(--bh-progress-spinner-dash-duration) ease-in-out infinite;
92
+ transform-origin: 50% 50%;
93
+ }
94
+
95
+ /* ==========================================================================
96
+ ANIMATIONS
97
+ ========================================================================== */
98
+
99
+ @keyframes bh-spinner-rotate {
100
+ 100% {
101
+ transform: rotate(360deg);
102
+ }
103
+ }
104
+
105
+ @keyframes bh-spinner-dash {
106
+ 0% {
107
+ stroke-dasharray: 1, 150;
108
+ stroke-dashoffset: 0;
109
+ }
110
+ 50% {
111
+ stroke-dasharray: 90, 150;
112
+ stroke-dashoffset: -35;
113
+ }
114
+ 100% {
115
+ stroke-dasharray: 90, 150;
116
+ stroke-dashoffset: -124;
117
+ }
118
+ }
119
+
120
+ /* ==========================================================================
121
+ HOVER EFFECTS
122
+ ========================================================================== */
123
+
124
+ .bh-progress-spinner-container:hover .bh-progress-spinner-svg-wrapper {
125
+ animation-duration: var(--bh-progress-spinner-rotation-duration-hover);
126
+ }
127
+
128
+ .bh-progress-spinner-container:hover .bh-progress-spinner-circle {
129
+ animation-duration: var(--bh-progress-spinner-dash-duration-hover);
130
+ }
@@ -0,0 +1,193 @@
1
+ /**
2
+ * RadioButton Component Styles
3
+ * BEM naming with tokens from _radiobutton.tokens.scss
4
+ */
5
+
6
+ @use './_radiobutton.tokens.scss';
7
+
8
+ :host {
9
+ display: inline-flex;
10
+ }
11
+
12
+ /* ================================
13
+ Container & Wrapper
14
+ ================================ */
15
+
16
+ .radiobutton-wrapper {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ gap: var(--bh-radiobutton-label-gap);
20
+ cursor: pointer;
21
+ user-select: none;
22
+ }
23
+
24
+ .radiobutton-container {
25
+ position: relative;
26
+ display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ width: var(--bh-radiobutton-size-md);
30
+ height: var(--bh-radiobutton-size-md);
31
+ background-color: var(--bh-radiobutton-bg);
32
+ border: var(--bh-radiobutton-border-width) solid var(--bh-radiobutton-border);
33
+ border-radius: var(--bh-radiobutton-border-radius);
34
+ transition: var(--bh-radiobutton-transition);
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ /* ================================
39
+ Size Variants
40
+ ================================ */
41
+
42
+ .radiobutton-container-small {
43
+ width: var(--bh-radiobutton-size-sm);
44
+ height: var(--bh-radiobutton-size-sm);
45
+ }
46
+
47
+ .radiobutton-container-large {
48
+ width: var(--bh-radiobutton-size-md);
49
+ height: var(--bh-radiobutton-size-md);
50
+ }
51
+
52
+ /* ================================
53
+ Indicator (inner circle/dot)
54
+ ================================ */
55
+
56
+ .radiobutton-indicator {
57
+ width: var(--bh-radiobutton-indicator-size);
58
+ height: var(--bh-radiobutton-indicator-size);
59
+ background-color: var(--bh-radiobutton-indicator);
60
+ border-radius: 50%;
61
+ opacity: 0;
62
+ transform: scale(0);
63
+ transition: var(--bh-radiobutton-transition);
64
+ }
65
+
66
+ .radiobutton-container-small .radiobutton-indicator {
67
+ width: var(--bh-radiobutton-indicator-size-sm);
68
+ height: var(--bh-radiobutton-indicator-size-sm);
69
+ }
70
+
71
+ /* ================================
72
+ Checked State
73
+ ================================ */
74
+
75
+ .radiobutton-container-checked {
76
+ background-color: var(--bh-radiobutton-bg-checked);
77
+ border-color: var(--bh-radiobutton-border-checked);
78
+ }
79
+
80
+ .radiobutton-container-checked .radiobutton-indicator {
81
+ opacity: 1;
82
+ transform: scale(1);
83
+ }
84
+
85
+ /* ================================
86
+ Hover State
87
+ ================================ */
88
+
89
+ .radiobutton-container-hovered:not(.radiobutton-container-disabled) {
90
+ background-color: var(--bh-radiobutton-bg-hover);
91
+ border-color: var(--bh-radiobutton-border-hover);
92
+ }
93
+
94
+ .radiobutton-container-checked.radiobutton-container-hovered:not(.radiobutton-container-disabled) {
95
+ background-color: var(--bh-radiobutton-bg-checked-hover);
96
+ border-color: var(--bh-radiobutton-border-checked-hover);
97
+ }
98
+
99
+ /* ================================
100
+ Focus State
101
+ ================================ */
102
+
103
+ .radiobutton-container-focused {
104
+ border-color: var(--bh-radiobutton-border-focus);
105
+ outline: 3px solid var(--bh-radiobutton-outline-focus);
106
+ outline-offset: var(--bh-radiobutton-outline-offset);
107
+ }
108
+
109
+ /* ================================
110
+ Disabled State
111
+ ================================ */
112
+
113
+ .radiobutton-container-disabled {
114
+ background-color: var(--bh-radiobutton-bg-disabled);
115
+ border-color: var(--bh-radiobutton-border-disabled);
116
+ cursor: not-allowed;
117
+ opacity: 0.6;
118
+ }
119
+
120
+ .radiobutton-container-disabled.radiobutton-container-checked {
121
+ background-color: var(--bh-radiobutton-bg-checked-disabled);
122
+ border-color: var(--bh-radiobutton-border-disabled);
123
+ }
124
+
125
+ .radiobutton-container-disabled .radiobutton-indicator {
126
+ background-color: var(--bh-radiobutton-indicator-disabled);
127
+ }
128
+
129
+ .radiobutton-wrapper-disabled {
130
+ cursor: not-allowed;
131
+ }
132
+
133
+ .radiobutton-wrapper-disabled .radiobutton-label {
134
+ color: var(--bh-radiobutton-label-disabled);
135
+ }
136
+
137
+ /* ================================
138
+ Invalid State
139
+ ================================ */
140
+
141
+ .radiobutton-container-invalid {
142
+ border-color: var(--bh-radiobutton-border-invalid);
143
+ }
144
+
145
+ .radiobutton-container-invalid.radiobutton-container-hovered:not(.radiobutton-container-disabled) {
146
+ border-color: var(--bh-radiobutton-border-invalid-hover);
147
+ }
148
+
149
+ .radiobutton-container-invalid.radiobutton-container-focused {
150
+ outline-color: var(--bh-radiobutton-outline-invalid);
151
+ }
152
+
153
+ /* ================================
154
+ Filled Variant
155
+ ================================ */
156
+
157
+ .radiobutton-container-filled {
158
+ background-color: var(--bh-radiobutton-filled-bg);
159
+ }
160
+
161
+ .radiobutton-container-filled:not(.radiobutton-container-disabled):hover {
162
+ background-color: var(--bh-radiobutton-filled-bg-hover);
163
+ }
164
+
165
+ .radiobutton-container-filled.radiobutton-container-checked {
166
+ background-color: var(--bh-radiobutton-filled-bg-checked);
167
+ border-color: var(--bh-radiobutton-filled-border-checked);
168
+ }
169
+
170
+ /* ================================
171
+ Label
172
+ ================================ */
173
+
174
+ .radiobutton-label {
175
+ color: var(--bh-neutral-900);
176
+ font-size: var(--bh-font-size-md);
177
+ line-height: var(--bh-line-height-md);
178
+ cursor: pointer;
179
+ user-select: none;
180
+ }
181
+
182
+ /* ================================
183
+ Hidden Native Input
184
+ ================================ */
185
+
186
+ .radiobutton-input {
187
+ position: absolute;
188
+ opacity: 0;
189
+ width: 1px;
190
+ height: 1px;
191
+ pointer-events: none;
192
+ z-index: -1;
193
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Skeleton Loader Component Styles
3
+ * BEM naming convention: bh-skeleton
4
+ */
5
+
6
+ @use './_skeleton.tokens.scss';
7
+
8
+ /* --- BASE --- */
9
+ .bh-skeleton {
10
+ position: relative;
11
+ overflow: hidden;
12
+ background-color: var(--bh-skeleton-bg);
13
+ border-radius: var(--bh-skeleton-border-radius);
14
+
15
+ &::before {
16
+ content: '';
17
+ position: absolute;
18
+ top: 0;
19
+ left: -150%;
20
+ width: 150%;
21
+ height: 100%;
22
+ background: linear-gradient(
23
+ 90deg,
24
+ var(--bh-skeleton-shimmer-from) 0%,
25
+ var(--bh-skeleton-shimmer-via) 50%,
26
+ var(--bh-skeleton-shimmer-to) 100%
27
+ );
28
+ animation: shimmer var(--bh-skeleton-animation-duration)
29
+ var(--bh-skeleton-animation-timing) infinite;
30
+ }
31
+ }
32
+
33
+ /* --- SHAPE VARIANTS --- */
34
+ .bh-skeleton-circle {
35
+ border-radius: var(--bh-skeleton-circle-border-radius);
36
+ }
37
+
38
+ .bh-skeleton-rectangle {
39
+ border-radius: var(--bh-skeleton-border-radius);
40
+ }
41
+
42
+ /* --- ANIMATION --- */
43
+ @keyframes shimmer {
44
+ 0% {
45
+ left: -150%;
46
+ }
47
+ 100% {
48
+ left: 100%;
49
+ }
50
+ }
@@ -0,0 +1,228 @@
1
+ /* ==========================================================================
2
+ BH-TEXTAREA COMPONENT STYLES
3
+ Uses tokens from _textarea.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './_textarea.tokens.scss';
7
+
8
+ :host {
9
+ display: inline-block;
10
+ }
11
+
12
+ /* ==========================================================================
13
+ TEXTAREA WRAPPER
14
+ ========================================================================== */
15
+
16
+ .textarea-wrapper {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--bh-textarea-wrapper-gap);
20
+ width: 100%;
21
+ }
22
+
23
+ /* ==========================================================================
24
+ LABEL
25
+ ========================================================================== */
26
+
27
+ .input-label {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: var(--bh-textarea-label-gap);
31
+ font-family: var(--bh-textarea-font-family);
32
+ font-weight: var(--bh-textarea-label-font-weight);
33
+ font-size: var(--bh-textarea-label-font-size);
34
+ line-height: 1.43;
35
+ color: var(--bh-textarea-label-color);
36
+ }
37
+
38
+ .required-indicator {
39
+ color: var(--bh-textarea-label-required-color);
40
+ }
41
+
42
+ .help-icon-button {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ padding: 0;
47
+ border: none;
48
+ background: transparent;
49
+ cursor: pointer;
50
+ color: var(--bh-textarea-help-icon-color);
51
+ transition: var(--bh-textarea-transition);
52
+ }
53
+
54
+ .help-icon-button:hover {
55
+ color: var(--bh-textarea-help-icon-color-hover);
56
+ }
57
+
58
+ /* ==========================================================================
59
+ TEXTAREA CONTAINER
60
+ ========================================================================== */
61
+
62
+ .textarea-container {
63
+ display: flex;
64
+ align-items: flex-start;
65
+ gap: var(--bh-textarea-container-gap);
66
+ padding: var(--bh-textarea-padding-md);
67
+ min-height: var(--bh-textarea-min-height-md);
68
+ width: 100%;
69
+ background: var(--bh-textarea-bg);
70
+ border: var(--bh-textarea-border-width) solid var(--bh-textarea-border);
71
+ border-radius: var(--bh-textarea-border-radius);
72
+ transition: var(--bh-textarea-transition);
73
+ cursor: text;
74
+ box-sizing: border-box;
75
+ }
76
+
77
+ /* ==========================================================================
78
+ TEXTAREA SIZES
79
+ ========================================================================== */
80
+
81
+ .textarea-container.textarea-container-small {
82
+ padding: var(--bh-textarea-padding-sm);
83
+ min-height: var(--bh-textarea-min-height-sm);
84
+ }
85
+
86
+ .textarea-container.textarea-container-large {
87
+ padding: var(--bh-textarea-padding-lg);
88
+ min-height: var(--bh-textarea-min-height-lg);
89
+ }
90
+
91
+ /* ==========================================================================
92
+ TEXTAREA VARIANTS
93
+ ========================================================================== */
94
+
95
+ .textarea-container.textarea-container-filled {
96
+ background: var(--bh-textarea-filled-bg);
97
+ border-color: var(--bh-textarea-filled-border);
98
+ }
99
+
100
+ .textarea-container.textarea-container-filled:not(.textarea-container-disabled):hover {
101
+ background: var(--bh-textarea-filled-bg-hover);
102
+ }
103
+
104
+ .textarea-container.textarea-container-filled.textarea-container-focused {
105
+ background: var(--bh-textarea-filled-bg-focused);
106
+ border-color: var(--bh-textarea-filled-border-focused);
107
+ }
108
+
109
+ /* ==========================================================================
110
+ TEXTAREA FLUID
111
+ ========================================================================== */
112
+
113
+ .textarea-container.textarea-container-fluid {
114
+ width: 100%;
115
+ }
116
+
117
+ /* ==========================================================================
118
+ TEXTAREA STATES
119
+ ========================================================================== */
120
+
121
+ .textarea-container.textarea-container-hover {
122
+ border-color: var(--bh-textarea-border-hover);
123
+ }
124
+
125
+ .textarea-container.textarea-container-focused {
126
+ border-color: var(--bh-textarea-border-focused);
127
+ box-shadow: var(--bh-textarea-focus-shadow);
128
+ }
129
+
130
+ .textarea-container.textarea-container-disabled {
131
+ opacity: var(--bh-textarea-opacity-disabled);
132
+ cursor: not-allowed;
133
+ background: var(--bh-textarea-bg-disabled);
134
+ }
135
+
136
+ .textarea-container.textarea-container-invalid {
137
+ border-color: var(--bh-textarea-border-invalid);
138
+ }
139
+
140
+ .textarea-container.textarea-container-invalid.textarea-container-hover {
141
+ border-color: var(--bh-textarea-border-invalid-hover);
142
+ }
143
+
144
+ .textarea-container.textarea-container-invalid.textarea-container-focused {
145
+ border-color: var(--bh-textarea-border-invalid-focused);
146
+ }
147
+
148
+ /* ==========================================================================
149
+ TEXTAREA ELEMENT
150
+ ========================================================================== */
151
+
152
+ .textarea-element {
153
+ flex: 1;
154
+ width: 100%;
155
+ min-height: 60px;
156
+ border: none;
157
+ outline: none;
158
+ background: transparent;
159
+ font-family: var(--bh-textarea-font-family);
160
+ font-weight: var(--bh-textarea-font-weight);
161
+ font-size: var(--bh-textarea-font-size);
162
+ line-height: var(--bh-textarea-line-height);
163
+ color: var(--bh-textarea-text-color);
164
+ padding: 0;
165
+ resize: vertical;
166
+ box-sizing: border-box;
167
+ }
168
+
169
+ .textarea-element:focus {
170
+ outline: none;
171
+ border: none;
172
+ box-shadow: none;
173
+ }
174
+
175
+ .textarea-element::placeholder {
176
+ color: var(--bh-textarea-placeholder-color);
177
+ }
178
+
179
+ .textarea-element:disabled {
180
+ cursor: not-allowed;
181
+ resize: none;
182
+ }
183
+
184
+ /* ==========================================================================
185
+ TEXTAREA AUTORESIZE
186
+ ========================================================================== */
187
+
188
+ .textarea-container[data-autoresize='true'] .textarea-element {
189
+ resize: none;
190
+ overflow: hidden;
191
+ }
192
+
193
+ /* ==========================================================================
194
+ HINT TEXT
195
+ ========================================================================== */
196
+
197
+ .hint-text {
198
+ font-family: var(--bh-textarea-font-family);
199
+ font-weight: var(--bh-textarea-font-weight);
200
+ font-size: var(--bh-textarea-hint-font-size);
201
+ line-height: 1.43;
202
+ color: var(--bh-textarea-hint-color);
203
+ }
204
+
205
+ .hint-text.hint-error {
206
+ color: var(--bh-textarea-hint-error-color);
207
+ }
208
+
209
+ /* ==========================================================================
210
+ MATERIAL SYMBOLS
211
+ ========================================================================== */
212
+
213
+ .material-symbols-outlined {
214
+ font-family: 'Material Symbols Outlined';
215
+ font-weight: normal;
216
+ font-style: normal;
217
+ font-size: 20px;
218
+ line-height: 1;
219
+ letter-spacing: normal;
220
+ text-transform: none;
221
+ display: inline-block;
222
+ white-space: nowrap;
223
+ word-wrap: normal;
224
+ direction: ltr;
225
+ font-feature-settings: 'liga';
226
+ -webkit-font-smoothing: antialiased;
227
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
228
+ }