@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,147 @@
1
+ /* ==========================================================================
2
+ BH-INPUT-NUMBER COMPONENT STYLES
3
+ Uses tokens from _input-number.tokens.scss
4
+ Extends base input styles
5
+ ========================================================================== */
6
+
7
+ @use './input-number.tokens' as *;
8
+ @use './input.scss' as *;
9
+
10
+ :host {
11
+ display: block;
12
+ font-family: var(--bh-input-font-family);
13
+ }
14
+
15
+ /* ==========================================================================
16
+ INPUT NUMBER CONTAINER
17
+ ========================================================================== */
18
+
19
+ .input-number-container {
20
+ display: flex;
21
+ align-items: center;
22
+ gap: var(--bh-input-number-container-gap);
23
+ padding: var(--bh-input-number-container-padding-md);
24
+ height: var(--bh-input-number-height-md);
25
+ background: var(--bh-input-number-bg);
26
+ border: var(--bh-input-number-border-width) solid var(--bh-input-number-border);
27
+ border-radius: var(--bh-input-number-radius);
28
+ transition: var(--bh-input-number-transition);
29
+ cursor: text;
30
+ box-sizing: border-box;
31
+ }
32
+
33
+ /* ==========================================================================
34
+ INPUT NUMBER SIZES
35
+ ========================================================================== */
36
+
37
+ .input-number-container.input-number-container-small {
38
+ height: var(--bh-input-number-height-sm);
39
+ padding: var(--bh-input-number-container-padding-sm);
40
+ font-size: var(--bh-input-font-size-sm);
41
+ }
42
+
43
+ .input-number-container.input-number-container-large {
44
+ height: var(--bh-input-number-height-lg);
45
+ padding: var(--bh-input-number-container-padding-lg);
46
+ font-size: var(--bh-input-font-size-lg);
47
+ }
48
+
49
+ /* ==========================================================================
50
+ INPUT NUMBER VARIANTS
51
+ ========================================================================== */
52
+
53
+ .input-number-container.input-number-container-filled {
54
+ background: var(--bh-input-filled-bg);
55
+ border-color: var(--bh-input-filled-border);
56
+ }
57
+
58
+ .input-number-container.input-number-container-filled:not(.input-number-container-disabled):hover {
59
+ background: var(--bh-input-filled-bg-hover);
60
+ }
61
+
62
+ .input-number-container.input-number-container-filled.input-number-container-focused {
63
+ background: var(--bh-input-filled-bg-focused);
64
+ border-color: var(--bh-input-filled-border-focused);
65
+ }
66
+
67
+ /* ==========================================================================
68
+ FLUID (FULL-WIDTH)
69
+ ========================================================================== */
70
+
71
+ .input-number-container.input-number-container-fluid {
72
+ width: 100%;
73
+ }
74
+
75
+ /* ==========================================================================
76
+ INPUT NUMBER STATES
77
+ ========================================================================== */
78
+
79
+ .input-number-container.input-number-container-hover {
80
+ border-color: var(--bh-input-border-hover);
81
+ }
82
+
83
+ .input-number-container.input-number-container-focused {
84
+ border-color: var(--bh-input-border-focused);
85
+ box-shadow: var(--bh-input-shadow-focused);
86
+ }
87
+
88
+ .input-number-container.input-number-container-disabled {
89
+ opacity: var(--bh-input-opacity-disabled);
90
+ cursor: not-allowed;
91
+ background: var(--bh-input-bg-disabled);
92
+ }
93
+
94
+ .input-number-container.input-number-container-invalid {
95
+ border-color: var(--bh-input-border-invalid);
96
+ }
97
+
98
+ .input-number-container.input-number-container-invalid.input-number-container-hover {
99
+ border-color: var(--bh-input-border-invalid-hover);
100
+ }
101
+
102
+ .input-number-container.input-number-container-invalid.input-number-container-focused {
103
+ border-color: var(--bh-input-border-invalid-focused);
104
+ }
105
+
106
+ /* ==========================================================================
107
+ INPUT NUMBER BUTTONS
108
+ ========================================================================== */
109
+
110
+ .input-number-button {
111
+ display: inline-flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ width: var(--bh-input-number-button-size);
115
+ height: var(--bh-input-number-button-size);
116
+ padding: 0;
117
+ border: none;
118
+ background: var(--bh-input-number-button-bg);
119
+ color: var(--bh-input-number-button-color);
120
+ cursor: pointer;
121
+ border-radius: var(--bh-input-number-button-radius);
122
+ transition: var(--bh-input-number-button-transition);
123
+ flex-shrink: 0;
124
+ }
125
+
126
+ .input-number-button[aria-label="Clear value"] {
127
+ background: var(--bh-input-number-clear-button-bg);
128
+ border-radius: var(--bh-input-number-clear-button-radius) !important;
129
+ }
130
+
131
+ .input-number-button:hover:not(:disabled) {
132
+ background: var(--bh-input-number-button-bg-hover);
133
+ color: var(--bh-input-number-button-color-hover);
134
+ }
135
+
136
+ .input-number-button:active:not(:disabled) {
137
+ background: var(--bh-input-number-button-bg-active);
138
+ }
139
+
140
+ .input-number-button:disabled {
141
+ opacity: var(--bh-input-number-button-opacity-disabled);
142
+ cursor: not-allowed;
143
+ }
144
+
145
+ .input-number-button .material-symbols-outlined {
146
+ font-size: var(--bh-input-number-icon-size);
147
+ }
@@ -0,0 +1,271 @@
1
+ /* ==========================================================================
2
+ BH-INPUT COMPONENT STYLES
3
+ Uses tokens from _input.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './input.tokens' as *;
7
+
8
+ :host {
9
+ display: block;
10
+ font-family: var(--bh-input-font-family);
11
+ }
12
+
13
+ /* ==========================================================================
14
+ INPUT WRAPPER
15
+ ========================================================================== */
16
+
17
+ .input-wrapper {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--bh-input-wrapper-gap);
21
+ width: 100%;
22
+ }
23
+
24
+ /* ==========================================================================
25
+ LABEL
26
+ ========================================================================== */
27
+
28
+ .input-label {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: var(--bh-input-label-gap);
32
+ font-family: inherit;
33
+ font-weight: var(--bh-input-label-font-weight);
34
+ font-size: var(--bh-input-label-font-size);
35
+ line-height: 1.43;
36
+ color: var(--bh-input-label-color);
37
+ }
38
+
39
+ .required-indicator {
40
+ color: var(--bh-input-label-required-color);
41
+ }
42
+
43
+ .help-icon-button {
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ padding: 0;
48
+ border: none;
49
+ background: transparent;
50
+ cursor: pointer;
51
+ color: var(--bh-input-help-icon-color);
52
+ transition: var(--bh-input-transition);
53
+ }
54
+
55
+ .help-icon-button:hover {
56
+ color: var(--bh-input-help-icon-color-hover);
57
+ }
58
+
59
+ /* ==========================================================================
60
+ INPUT CONTAINER
61
+ ========================================================================== */
62
+
63
+ .input-container {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: var(--bh-input-container-gap);
67
+ padding: var(--bh-input-padding-md);
68
+ height: var(--bh-input-height-md);
69
+ width: 100%;
70
+ background: var(--bh-input-bg);
71
+ border: var(--bh-input-border-width) solid var(--bh-input-border);
72
+ border-radius: var(--bh-input-radius);
73
+ transition: var(--bh-input-transition);
74
+ cursor: text;
75
+ box-sizing: border-box;
76
+ }
77
+
78
+ .input-container.input-container-with-leading {
79
+ padding: var(--bh-input-padding-with-leading-sm);
80
+ }
81
+
82
+ /* ==========================================================================
83
+ INPUT SIZES
84
+ ========================================================================== */
85
+
86
+ .input-container.input-container-small {
87
+ height: var(--bh-input-height-sm);
88
+ padding: var(--bh-input-padding-sm);
89
+ font-size: var(--bh-input-font-size-sm);
90
+ }
91
+
92
+ .input-container.input-container-small.input-container-with-leading {
93
+ padding: var(--bh-input-padding-with-leading-sm);
94
+ }
95
+
96
+ .input-container.input-container-medium {
97
+ height: var(--bh-input-height-md);
98
+ padding: var(--bh-input-padding-md);
99
+ font-size: var(--bh-input-font-size-md);
100
+ }
101
+
102
+ .input-container.input-container-medium.input-container-with-leading {
103
+ padding: var(--bh-input-padding-with-leading-md);
104
+ }
105
+
106
+ /* ==========================================================================
107
+ INPUT VARIANTS
108
+ ========================================================================== */
109
+
110
+ .input-container.input-container-filled {
111
+ background: var(--bh-input-filled-bg);
112
+ border-color: var(--bh-input-filled-border);
113
+ }
114
+
115
+ .input-container.input-container-filled:not(.input-container-disabled):hover {
116
+ background: var(--bh-input-filled-bg-hover);
117
+ }
118
+
119
+ .input-container.input-container-filled.input-container-focused {
120
+ background: var(--bh-input-filled-bg-focused);
121
+ border-color: var(--bh-input-filled-border-focused);
122
+ }
123
+
124
+ /* ==========================================================================
125
+ FLUID (FULL-WIDTH)
126
+ ========================================================================== */
127
+
128
+ .input-container.input-container-fluid {
129
+ width: 100%;
130
+ }
131
+
132
+ /* ==========================================================================
133
+ INPUT STATES
134
+ ========================================================================== */
135
+
136
+ .input-container.input-container-hover {
137
+ border-color: var(--bh-input-border-hover);
138
+ }
139
+
140
+ .input-container.input-container-focused {
141
+ border-color: var(--bh-input-border-focused);
142
+ box-shadow: var(--bh-input-shadow-focused);
143
+ }
144
+
145
+ .input-container.input-container-disabled {
146
+ opacity: var(--bh-input-opacity-disabled);
147
+ cursor: not-allowed;
148
+ background: var(--bh-input-bg-disabled);
149
+ }
150
+
151
+ .input-container.input-container-invalid {
152
+ border-color: var(--bh-input-border-invalid);
153
+ }
154
+
155
+ .input-container.input-container-invalid.input-container-hover {
156
+ border-color: var(--bh-input-border-invalid-hover);
157
+ }
158
+
159
+ .input-container.input-container-invalid.input-container-focused {
160
+ border-color: var(--bh-input-border-invalid-focused);
161
+ }
162
+
163
+ /* ==========================================================================
164
+ INPUT CONTENT
165
+ ========================================================================== */
166
+
167
+ .input-content {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: var(--bh-input-content-gap);
171
+ flex: 1;
172
+ height: 100%;
173
+ min-width: 0;
174
+ }
175
+
176
+ /* ==========================================================================
177
+ INPUT ELEMENT
178
+ ========================================================================== */
179
+
180
+ .input-element {
181
+ flex: 1;
182
+ height: 100%;
183
+ border: none;
184
+ outline: none;
185
+ background: transparent;
186
+ font-family: inherit;
187
+ font-weight: var(--bh-input-font-weight);
188
+ font-size: var(--bh-input-font-size-md);
189
+ line-height: 1.43;
190
+ color: var(--bh-input-text);
191
+ min-width: 60px;
192
+ padding: 0;
193
+ }
194
+
195
+ .input-element:focus {
196
+ outline: none;
197
+ border: none;
198
+ box-shadow: none;
199
+ }
200
+
201
+ .input-element::placeholder {
202
+ color: var(--bh-input-placeholder);
203
+ }
204
+
205
+ .input-element:disabled {
206
+ cursor: not-allowed;
207
+ }
208
+
209
+ .input-container-small .input-element {
210
+ font-size: var(--bh-input-font-size-sm);
211
+ }
212
+
213
+ .input-container-large .input-element {
214
+ font-size: var(--bh-input-font-size-md);
215
+ }
216
+
217
+ /* ==========================================================================
218
+ ICONS
219
+ ========================================================================== */
220
+
221
+ .leading-icon,
222
+ .trailing-icon {
223
+ font-size: var(--bh-input-icon-size);
224
+ color: var(--bh-input-icon-color);
225
+ user-select: none;
226
+ flex-shrink: 0;
227
+ cursor: default;
228
+ transition: var(--bh-input-transition);
229
+ }
230
+
231
+ .input-container-focused .leading-icon,
232
+ .input-container-focused .trailing-icon {
233
+ color: var(--bh-input-icon-color-focused);
234
+ }
235
+
236
+ /* ==========================================================================
237
+ HINT TEXT
238
+ ========================================================================== */
239
+
240
+ .hint-text {
241
+ font-family: inherit;
242
+ font-weight: var(--bh-input-hint-font-weight);
243
+ font-size: var(--bh-input-hint-font-size);
244
+ line-height: 1.43;
245
+ color: var(--bh-input-hint-color);
246
+ }
247
+
248
+ .hint-text.hint-error {
249
+ color: var(--bh-input-hint-error-color);
250
+ }
251
+
252
+ /* ==========================================================================
253
+ MATERIAL SYMBOLS
254
+ ========================================================================== */
255
+
256
+ .material-symbols-outlined {
257
+ font-family: 'Material Symbols Outlined';
258
+ font-weight: normal;
259
+ font-style: normal;
260
+ font-size: 20px;
261
+ line-height: 1;
262
+ letter-spacing: normal;
263
+ text-transform: none;
264
+ display: inline-block;
265
+ white-space: nowrap;
266
+ word-wrap: normal;
267
+ direction: ltr;
268
+ font-feature-settings: 'liga';
269
+ -webkit-font-smoothing: antialiased;
270
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
271
+ }
@@ -0,0 +1,176 @@
1
+ /* ==========================================================================
2
+ BH-LABEL COMPONENT STYLES
3
+ Uses tokens from _label.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './_label.tokens.scss';
7
+
8
+ :host {
9
+ display: block;
10
+ font-family: var(--bh-font-family);
11
+ }
12
+
13
+ /* ==========================================================================
14
+ LABEL CONTAINER
15
+ ========================================================================== */
16
+
17
+ .label-container {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--bh-label-gap-block);
21
+ }
22
+
23
+ .label-container.layout-block {
24
+ flex-direction: column;
25
+ }
26
+
27
+ .label-container.layout-inline {
28
+ flex-direction: row;
29
+ align-items: flex-start;
30
+ gap: var(--bh-label-gap-inline);
31
+ }
32
+
33
+ .label-container.layout-inline .label-wrapper {
34
+ flex-shrink: 0;
35
+ }
36
+
37
+ .label-container.layout-inline-start {
38
+ flex-direction: row;
39
+ align-items: flex-start;
40
+ gap: var(--bh-label-gap-inline);
41
+ }
42
+
43
+ .label-container.layout-inline-start .label-content {
44
+ flex-shrink: 0;
45
+ width: auto;
46
+ }
47
+
48
+ .label-container.layout-inline-start .label-text-group {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: 2px;
52
+ }
53
+
54
+ .label-container.layout-inline-start .label-wrapper {
55
+ gap: var(--bh-label-wrapper-gap);
56
+ }
57
+
58
+ .label-container.layout-inline-start .label-text {
59
+ font-size: var(--bh-label-inline-start-font-size);
60
+ color: var(--bh-label-inline-start-color);
61
+ cursor: pointer;
62
+ }
63
+
64
+ .label-container.layout-inline-space-between {
65
+ flex-direction: row;
66
+ align-items: flex-start;
67
+ justify-content: space-between;
68
+ gap: var(--bh-label-gap-inline);
69
+ }
70
+
71
+ .label-container.layout-inline-space-between .label-wrapper {
72
+ flex-shrink: 0;
73
+ }
74
+
75
+ .label-container.layout-inline-space-between .label-content {
76
+ flex-grow: 1;
77
+ display: flex;
78
+ justify-content: flex-end;
79
+ }
80
+
81
+ /* ==========================================================================
82
+ LABEL WRAPPER
83
+ ========================================================================== */
84
+
85
+ .label-wrapper {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: var(--bh-label-wrapper-gap);
89
+ }
90
+
91
+ /* ==========================================================================
92
+ LABEL TEXT
93
+ ========================================================================== */
94
+
95
+ .label-text {
96
+ font-family: inherit;
97
+ font-weight: var(--bh-label-text-font-weight);
98
+ font-size: var(--bh-label-text-font-size);
99
+ line-height: var(--bh-label-text-line-height);
100
+ color: var(--bh-label-text-color);
101
+ margin: 0;
102
+ cursor: default;
103
+ }
104
+
105
+ .label-text.disabled {
106
+ color: var(--bh-label-text-color-disabled);
107
+ }
108
+
109
+ /* ==========================================================================
110
+ REQUIRED ASTERISK
111
+ ========================================================================== */
112
+
113
+ .asterisk {
114
+ font-family: inherit;
115
+ font-weight: var(--bh-label-asterisk-font-weight);
116
+ font-size: var(--bh-label-asterisk-font-size);
117
+ line-height: var(--bh-label-asterisk-line-height);
118
+ color: var(--bh-label-asterisk-color);
119
+ }
120
+
121
+ /* ==========================================================================
122
+ LABEL CONTENT SLOT
123
+ ========================================================================== */
124
+
125
+ .label-content {
126
+ width: 100%;
127
+ }
128
+
129
+ /* ==========================================================================
130
+ HELP ICON
131
+ ========================================================================== */
132
+
133
+ .icon-with-tooltip {
134
+ position: relative;
135
+ display: flex;
136
+ align-items: center;
137
+ flex-shrink: 0;
138
+ margin-left: auto;
139
+ }
140
+
141
+ .help-icon {
142
+ font-size: var(--bh-label-help-icon-size);
143
+ color: var(--bh-label-help-icon-color);
144
+ cursor: pointer;
145
+ user-select: none;
146
+ transition: var(--bh-label-help-icon-transition);
147
+ }
148
+
149
+ .help-icon:hover {
150
+ color: var(--bh-label-help-icon-color-hover);
151
+ }
152
+
153
+ .disabled .help-icon {
154
+ color: var(--bh-label-help-icon-color-disabled);
155
+ cursor: not-allowed;
156
+ }
157
+
158
+ /* ==========================================================================
159
+ MATERIAL SYMBOLS
160
+ ========================================================================== */
161
+
162
+ .material-symbols-outlined {
163
+ font-family: 'Material Symbols Outlined';
164
+ font-weight: normal;
165
+ font-style: normal;
166
+ line-height: 1;
167
+ letter-spacing: normal;
168
+ text-transform: none;
169
+ display: inline-block;
170
+ white-space: nowrap;
171
+ word-wrap: normal;
172
+ direction: ltr;
173
+ font-feature-settings: 'liga';
174
+ -webkit-font-smoothing: antialiased;
175
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
176
+ }
@@ -0,0 +1,103 @@
1
+ /* ==========================================================================
2
+ BH-MODAL COMPONENT STYLES
3
+ Uses tokens from _modal.tokens.scss
4
+ ========================================================================== */
5
+
6
+ @use './_modal.tokens.scss';
7
+
8
+ :host {
9
+ display: block;
10
+ }
11
+
12
+ /* ==========================================================================
13
+ MODAL WRAPPER
14
+ ========================================================================== */
15
+
16
+ .modal-wrapper {
17
+ position: fixed;
18
+ top: 0;
19
+ left: 0;
20
+ right: 0;
21
+ bottom: 0;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ padding: var(--bh-modal-wrapper-padding);
26
+ z-index: var(--bh-modal-z-index);
27
+ }
28
+
29
+ /* ==========================================================================
30
+ BACKDROP OVERLAY
31
+ ========================================================================== */
32
+
33
+ .modal-overlay {
34
+ position: absolute;
35
+ inset: 0;
36
+ background: var(--bh-modal-overlay-bg);
37
+ backdrop-filter: var(--bh-modal-overlay-backdrop-blur);
38
+ -webkit-backdrop-filter: var(--bh-modal-overlay-backdrop-blur);
39
+ }
40
+
41
+ /* ==========================================================================
42
+ MODAL CONTAINER
43
+ ========================================================================== */
44
+
45
+ .modal {
46
+ position: relative;
47
+ display: flex;
48
+ flex-direction: column;
49
+ align-items: center;
50
+ width: 100%;
51
+ max-width: var(--bh-modal-max-width);
52
+ background: var(--bh-modal-bg);
53
+ border-radius: var(--bh-modal-radius);
54
+ box-shadow: var(--bh-modal-shadow);
55
+ overflow: hidden;
56
+ z-index: var(--bh-modal-content-z-index);
57
+ }
58
+
59
+ /* ==========================================================================
60
+ RESPONSIVE ADJUSTMENTS
61
+ ========================================================================== */
62
+
63
+ @media (max-width: 480px) {
64
+ .modal-wrapper {
65
+ padding: var(--bh-modal-wrapper-padding-mobile);
66
+ }
67
+
68
+ .modal {
69
+ max-width: var(--bh-modal-max-width-mobile);
70
+ }
71
+ }
72
+
73
+ /* ==========================================================================
74
+ ANIMATIONS
75
+ ========================================================================== */
76
+
77
+ @keyframes modalFadeIn {
78
+ from {
79
+ opacity: 0;
80
+ transform: scale(0.95);
81
+ }
82
+ to {
83
+ opacity: 1;
84
+ transform: scale(1);
85
+ }
86
+ }
87
+
88
+ @keyframes overlayFadeIn {
89
+ from {
90
+ opacity: 0;
91
+ }
92
+ to {
93
+ opacity: 1;
94
+ }
95
+ }
96
+
97
+ .modal {
98
+ animation: modalFadeIn var(--bh-modal-animation-duration) var(--bh-modal-animation-timing);
99
+ }
100
+
101
+ .modal-overlay {
102
+ animation: overlayFadeIn var(--bh-modal-animation-duration) var(--bh-modal-animation-timing);
103
+ }