@actabldesign/bellhop-styles 0.0.3 → 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 (127) hide show
  1. package/README.md +105 -70
  2. package/dist/index.css +1538 -0
  3. package/dist/utilities.css +5730 -0
  4. package/llms.txt +2852 -0
  5. package/package.json +29 -20
  6. package/project.json +29 -0
  7. package/rollup.config.js +44 -0
  8. package/{base → src/base}/normalize.css +4 -0
  9. package/src/bh-tokens/_primitives.scss +296 -0
  10. package/src/bh-tokens/_semantic.scss +158 -0
  11. package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
  12. package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
  13. package/src/bh-tokens/components/_badge.tokens.scss +61 -0
  14. package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
  15. package/src/bh-tokens/components/_button.tokens.scss +185 -0
  16. package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
  17. package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
  18. package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
  19. package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
  20. package/src/bh-tokens/components/_input.tokens.scss +86 -0
  21. package/src/bh-tokens/components/_label.tokens.scss +37 -0
  22. package/src/bh-tokens/components/_modal.tokens.scss +42 -0
  23. package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
  24. package/src/bh-tokens/components/_password.tokens.scss +63 -0
  25. package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
  26. package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
  27. package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
  28. package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
  29. package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
  30. package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
  31. package/src/bh-tokens/components/avatar.scss +288 -0
  32. package/src/bh-tokens/components/badge-dot.scss +177 -0
  33. package/src/bh-tokens/components/badge.scss +497 -0
  34. package/src/bh-tokens/components/button-icon.scss +227 -0
  35. package/src/bh-tokens/components/button.scss +640 -0
  36. package/src/bh-tokens/components/checkbox.scss +254 -0
  37. package/src/bh-tokens/components/dropdown.scss +231 -0
  38. package/src/bh-tokens/components/featured-icon.scss +219 -0
  39. package/src/bh-tokens/components/input-number.scss +147 -0
  40. package/src/bh-tokens/components/input.scss +271 -0
  41. package/src/bh-tokens/components/label.scss +176 -0
  42. package/src/bh-tokens/components/modal.scss +103 -0
  43. package/src/bh-tokens/components/pagination.scss +324 -0
  44. package/src/bh-tokens/components/password.scss +193 -0
  45. package/src/bh-tokens/components/progress-bar.scss +124 -0
  46. package/src/bh-tokens/components/progress-spinner.scss +130 -0
  47. package/src/bh-tokens/components/radiobutton.scss +193 -0
  48. package/src/bh-tokens/components/skeleton.scss +50 -0
  49. package/src/bh-tokens/components/textarea.scss +228 -0
  50. package/src/bh-tokens/components/toggle.scss +320 -0
  51. package/src/index.css +22 -0
  52. package/src/mixins/_responsive.scss +167 -0
  53. package/src/tokens/bellhop-animations.css +392 -0
  54. package/src/tokens/bellhop-global.css +175 -0
  55. package/src/tokens/bellhop-icons.css +77 -0
  56. package/src/tokens/bellhop-layout.css +216 -0
  57. package/src/tokens/bellhop-primary-colors.css +96 -0
  58. package/src/tokens/bellhop-radius.css +14 -0
  59. package/src/tokens/bellhop-secondary-colors.css +154 -0
  60. package/src/tokens/bellhop-shadows.css +55 -0
  61. package/src/tokens/bellhop-spacing.css +66 -0
  62. package/src/tokens/bellhop-styles.css +174 -0
  63. package/src/tokens/bellhop-typography.css +146 -0
  64. package/src/tokens/colors.json +737 -0
  65. package/src/tokens/colors.mdx +59 -0
  66. package/src/tokens/index.css +17 -0
  67. package/src/utilities/_breakpoints.scss +19 -0
  68. package/src/utilities/_flex.scss +228 -0
  69. package/src/utilities/_grid.scss +189 -0
  70. package/src/utilities/_index.scss +32 -0
  71. package/src/utilities/_scrollable.scss +239 -0
  72. package/src/utilities/_sizing.scss +229 -0
  73. package/src/utilities/_spacing.scss +187 -0
  74. package/src/utilities/_truncation.scss +126 -0
  75. package/src/utilities/_visibility.scss +117 -0
  76. package/src/utilities.scss +32 -0
  77. package/components/appbar.css +0 -167
  78. package/components/autocomplete-menu.css +0 -142
  79. package/components/avatar-add.css +0 -112
  80. package/components/avatar.css +0 -253
  81. package/components/badge-dot.css +0 -78
  82. package/components/badge.css +0 -337
  83. package/components/bar-chart-card.css +0 -261
  84. package/components/bar-chart.css +0 -149
  85. package/components/breadcrumbs.css +0 -136
  86. package/components/button.css +0 -266
  87. package/components/chart-tooltip.css +0 -96
  88. package/components/checkbox-label.css +0 -53
  89. package/components/checkbox.css +0 -127
  90. package/components/container-footer.css +0 -22
  91. package/components/container.css +0 -17
  92. package/components/date-picker-content.css +0 -337
  93. package/components/date-picker.css +0 -103
  94. package/components/date-range-picker-content.css +0 -85
  95. package/components/date-range-picker.css +0 -72
  96. package/components/dropdown-menu.css +0 -204
  97. package/components/dropdown.css +0 -126
  98. package/components/empty-state.css +0 -83
  99. package/components/featured-icon.css +0 -194
  100. package/components/illustrations.css +0 -120
  101. package/components/input-autocomplete.css +0 -158
  102. package/components/input-number.css +0 -2
  103. package/components/input-verification.css +0 -137
  104. package/components/input.css +0 -374
  105. package/components/loader-spinner.css +0 -421
  106. package/components/logo-box.css +0 -85
  107. package/components/month-picker-content.css +0 -190
  108. package/components/month-picker.css +0 -83
  109. package/components/nav-item.css +0 -110
  110. package/components/notification.css +0 -262
  111. package/components/page-navigation.css +0 -294
  112. package/components/picker-menu.css +0 -43
  113. package/components/pie-chart-card.css +0 -213
  114. package/components/pie-chart.css +0 -80
  115. package/components/product-switcher.css +0 -127
  116. package/components/property-switcher.css +0 -95
  117. package/components/radio-button-label.css +0 -53
  118. package/components/radio-button.css +0 -134
  119. package/components/sidebar.css +0 -178
  120. package/components/skeleton-loader.css +0 -47
  121. package/components/tag.css +0 -214
  122. package/components/textarea.css +0 -211
  123. package/components/toggle.css +0 -298
  124. package/components/tooltip.css +0 -85
  125. package/components/trend-chart-card.css +0 -189
  126. package/components/trend-chart.css +0 -94
  127. package/index.css +0 -8115
package/dist/index.css ADDED
@@ -0,0 +1,1538 @@
1
+
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
3
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
4
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap');
5
+ @import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200');
6
+ /* Bellhop Shared Styles - Design Tokens & Utilities */
7
+ /* Import Google Fonts */
8
+ /* Base normalization - import first */
9
+ /* Base normalization for consistent rendering across frameworks */
10
+ /* Ensure consistent font rendering */
11
+ * {
12
+ -webkit-font-smoothing: antialiased;
13
+ -moz-osx-font-smoothing: grayscale;
14
+ text-rendering: optimizeLegibility;
15
+ }
16
+ /* Set default font family with proper fallbacks */
17
+ body {
18
+ font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
19
+ }
20
+ /* Ensure consistent box sizing */
21
+ *,
22
+ *::before,
23
+ *::after {
24
+ box-sizing: border-box;
25
+ }
26
+ /* Remove default margins */
27
+ body,
28
+ h1,
29
+ h2,
30
+ h3,
31
+ h4,
32
+ h5,
33
+ h6,
34
+ p,
35
+ figure,
36
+ blockquote,
37
+ dl,
38
+ dd {
39
+ margin: 0;
40
+ }
41
+ /* Set core root defaults */
42
+ html {
43
+ font-size: 16px; /* Explicit base font size for consistent rem calculations */
44
+ }
45
+ html:focus-within {
46
+ scroll-behavior: smooth;
47
+ }
48
+ /* Set core body defaults */
49
+ body {
50
+ min-height: 100vh;
51
+ text-rendering: optimizeSpeed;
52
+ line-height: 1.5;
53
+ }
54
+ /* Make images easier to work with */
55
+ img,
56
+ picture,
57
+ video,
58
+ canvas,
59
+ svg {
60
+ display: block;
61
+ max-width: 100%;
62
+ }
63
+ /* Inherit fonts for inputs and buttons */
64
+ input,
65
+ button,
66
+ textarea,
67
+ select {
68
+ font: inherit;
69
+ }
70
+ /* Remove native browser focus outlines for form elements */
71
+ /* Components should provide their own focus styling */
72
+ input,
73
+ textarea,
74
+ button,
75
+ select {
76
+ outline: none;
77
+ box-shadow: none;
78
+ }
79
+ input:focus,
80
+ textarea:focus,
81
+ button:focus,
82
+ select:focus {
83
+ outline: none;
84
+ border: none;
85
+ box-shadow: none;
86
+ }
87
+ /* Remove all animations, transitions and smooth scroll for people that prefer not to see them */
88
+ @media (prefers-reduced-motion: reduce) {
89
+ html:focus-within {
90
+ scroll-behavior: auto;
91
+ }
92
+
93
+ *,
94
+ *::before,
95
+ *::after {
96
+ animation-duration: 0.01ms !important;
97
+ animation-iteration-count: 1 !important;
98
+ transition-duration: 0.01ms !important;
99
+ scroll-behavior: auto !important;
100
+ }
101
+ }
102
+ /* Design Tokens - Foundation */
103
+ /* ==========================================================================
104
+ BELLHOP DESIGN TOKENS
105
+ Shared design system tokens for all frameworks
106
+ ========================================================================== */
107
+ /* Import all design token files */
108
+ :root {
109
+ /* Base */
110
+ --color-white: hsl(0, 0%, 100%);
111
+ --color-black: hsl(0, 0%, 0%);
112
+ --color-transparent: hsla(0, 0%, 100%, 0.0);
113
+
114
+ /* Neutral (from gray in colors.json) */
115
+ --color-neutral-25: hsl(240, 20%, 99%);
116
+ --color-neutral-50: hsl(240, 20%, 98%);
117
+ --color-neutral-100: hsl(220, 23%, 95%);
118
+ --color-neutral-200: hsl(227, 25%, 89%);
119
+ --color-neutral-300: hsl(224, 24%, 78%);
120
+ --color-neutral-400: hsl(226, 24%, 59%);
121
+ --color-neutral-500: hsl(226, 24%, 48%);
122
+ --color-neutral-600: hsl(226, 24%, 38%);
123
+ --color-neutral-700: hsl(227, 24%, 33%);
124
+ --color-neutral-800: hsl(226, 24%, 25%);
125
+ --color-neutral-900: hsl(233, 33%, 10%);
126
+ --color-neutral-950: hsl(231, 32%, 8%);
127
+
128
+ /* Brand (from indigo in colors.json) */
129
+ --color-brand-25: hsl(220, 82%, 98%);
130
+ --color-brand-50: hsl(222, 87%, 97%);
131
+ --color-brand-100: hsl(221, 94%, 94%);
132
+ --color-brand-200: hsl(222, 92%, 86%);
133
+ --color-brand-300: hsl(224, 95%, 77%);
134
+ --color-brand-400: hsl(224, 94%, 72%);
135
+ --color-brand-500: hsl(230, 67%, 59%);
136
+ --color-brand-600: hsl(230, 69%, 48%);
137
+ --color-brand-700: hsl(230, 74%, 38%);
138
+ --color-brand-800: hsl(237, 69%, 34%);
139
+ --color-brand-900: hsl(237, 69%, 28%);
140
+ --color-brand-950: hsl(237, 61%, 20%);
141
+
142
+ /* Accent (guava/rose) */
143
+ --color-accent-25: hsl(7, 60%, 97%);
144
+ --color-accent-50: hsl(9, 62%, 96%);
145
+ --color-accent-100: hsl(2, 57%, 91%);
146
+ --color-accent-200: hsl(1, 58%, 85%);
147
+ --color-accent-300: hsl(356, 59%, 79%);
148
+ --color-accent-400: hsl(357, 61%, 72%);
149
+ --color-accent-500: hsl(356, 67%, 66%);
150
+ --color-accent-600: hsl(353, 58%, 58%);
151
+ --color-accent-700: hsl(353, 52%, 51%);
152
+ --color-accent-800: hsl(350, 58%, 41%);
153
+ --color-accent-900: hsl(350, 56%, 28%);
154
+
155
+ /* Error */
156
+ --color-error-25: hsl(12, 100%, 99%);
157
+ --color-error-50: hsl(13, 90%, 96%);
158
+ --color-error-100: hsl(0, 81%, 94%);
159
+ --color-error-200: hsl(0, 84%, 90%);
160
+ --color-error-300: hsl(0, 83%, 82%);
161
+ --color-error-400: hsl(0, 91%, 71%);
162
+ --color-error-500: hsl(1, 84%, 63%);
163
+ --color-error-600: hsl(7, 75%, 48%);
164
+ --color-error-700: hsl(7, 78%, 42%);
165
+ --color-error-800: hsl(0, 62%, 37%);
166
+ --color-error-900: hsl(3, 64%, 27%);
167
+ --color-error-950: hsl(8, 75%, 19%);
168
+
169
+ /* Warning */
170
+ --color-warning-25: hsl(42, 100%, 98%);
171
+ --color-warning-50: hsl(45, 100%, 96%);
172
+ --color-warning-100: hsl(45, 96%, 89%);
173
+ --color-warning-200: hsl(44, 98%, 77%);
174
+ --color-warning-300: hsl(42, 99%, 65%);
175
+ --color-warning-400: hsl(39, 98%, 56%);
176
+ --color-warning-500: hsl(34, 94%, 50%);
177
+ --color-warning-600: hsl(28, 97%, 44%);
178
+ --color-warning-700: hsl(22, 92%, 37%);
179
+ --color-warning-800: hsl(19, 84%, 31%);
180
+ --color-warning-900: hsl(18, 79%, 27%);
181
+ --color-warning-950: hsl(17, 79%, 17%);
182
+
183
+ /* Success */
184
+ --color-success-25: hsl(142, 80%, 98%);
185
+ --color-success-50: hsl(145, 81%, 96%);
186
+ --color-success-100: hsl(140, 75%, 92%);
187
+ --color-success-200: hsl(144, 68%, 80%);
188
+ --color-success-300: hsl(148, 63%, 67%);
189
+ --color-success-400: hsl(150, 57%, 54%);
190
+ --color-success-500: hsl(152, 77%, 39%);
191
+ --color-success-600: hsl(153, 91%, 30%);
192
+ --color-success-700: hsl(155, 90%, 24%);
193
+ --color-success-800: hsl(155, 84%, 20%);
194
+ --color-success-900: hsl(156, 83%, 16%);
195
+ --color-success-950: hsl(157, 82%, 11%);
196
+
197
+ --alpha-80: 0.8;
198
+ --alpha-60: 0.6;
199
+ --alpha-40: 0.4;
200
+ --alpha-20: 0.2;
201
+ --alpha-10: 0.1;
202
+ --alpha-5: 0.05;
203
+ }
204
+ :root {
205
+ /* Gray Cool */
206
+ --color-graycool-25: hsl(240, 20%, 99%);
207
+ --color-graycool-50: hsl(240, 20%, 98%);
208
+ --color-graycool-100: hsl(240, 17%, 95%);
209
+ --color-graycool-200: hsl(227, 25%, 89%);
210
+ --color-graycool-300: hsl(224, 24%, 78%);
211
+ --color-graycool-400: hsl(226, 24%, 59%);
212
+ --color-graycool-500: hsl(226, 24%, 48%);
213
+ --color-graycool-600: hsl(226, 24%, 38%);
214
+ --color-graycool-700: hsl(227, 24%, 33%);
215
+ --color-graycool-800: hsl(233, 33%, 10%);
216
+ --color-graycool-900: hsl(231, 32%, 8%);
217
+ --color-graycool-950: hsl(231, 32%, 8%);
218
+
219
+ /* Lime */
220
+ --color-lime-25: hsl(100, 60%, 98%);
221
+ --color-lime-50: hsl(96, 91%, 96%);
222
+ --color-lime-100: hsl(97, 87%, 91%);
223
+ --color-lime-200: hsl(90, 89%, 82%);
224
+ --color-lime-300: hsl(94, 87%, 71%);
225
+ --color-lime-400: hsl(94, 73%, 56%);
226
+ --color-lime-500: hsl(94, 75%, 44%);
227
+ --color-lime-600: hsl(95, 85%, 35%);
228
+ --color-lime-700: hsl(96, 78%, 27%);
229
+ --color-lime-800: hsl(96, 69%, 23%);
230
+ --color-lime-900: hsl(98, 61%, 20%);
231
+ --color-lime-950: hsl(99, 61%, 10%);
232
+
233
+ /* Teal */
234
+ --color-teal-25: hsl(165, 80%, 98%);
235
+ --color-teal-50: hsl(162, 76%, 97%);
236
+ --color-teal-100: hsl(165, 85%, 89%);
237
+ --color-teal-200: hsl(166, 84%, 78%);
238
+ --color-teal-300: hsl(169, 76%, 64%);
239
+ --color-teal-400: hsl(170, 65%, 50%);
240
+ --color-teal-500: hsl(171, 79%, 40%);
241
+ --color-teal-600: hsl(173, 83%, 32%);
242
+ --color-teal-700: hsl(173, 76%, 26%);
243
+ --color-teal-800: hsl(174, 68%, 22%);
244
+ --color-teal-900: hsl(174, 61%, 19%);
245
+ --color-teal-950: hsl(174, 61%, 10%);
246
+
247
+ /* Blue */
248
+ --color-blue-25: hsl(210, 100%, 98%);
249
+ --color-blue-50: hsl(206, 100%, 97%);
250
+ --color-blue-100: hsl(209, 100%, 91%);
251
+ --color-blue-200: hsl(206, 100%, 85%);
252
+ --color-blue-300: hsl(206, 100%, 76%);
253
+ --color-blue-400: hsl(207, 98%, 66%);
254
+ --color-blue-500: hsl(211, 95%, 58%);
255
+ --color-blue-600: hsl(215, 87%, 51%);
256
+ --color-blue-700: hsl(218, 80%, 46%);
257
+ --color-blue-800: hsl(220, 75%, 38%);
258
+ --color-blue-900: hsl(218, 68%, 31%);
259
+ --color-blue-950: hsl(218, 69%, 20%);
260
+
261
+ /* Indigo */
262
+ --color-indigo-25: hsl(222, 100%, 98%);
263
+ --color-indigo-50: hsl(219, 100%, 97%);
264
+ --color-indigo-100: hsl(221, 100%, 94%);
265
+ --color-indigo-200: hsl(223, 96%, 89%);
266
+ --color-indigo-300: hsl(224, 96%, 82%);
267
+ --color-indigo-400: hsl(228, 91%, 74%);
268
+ --color-indigo-500: hsl(233, 86%, 67%);
269
+ --color-indigo-600: hsl(237, 77%, 59%);
270
+ --color-indigo-700: hsl(239, 60%, 51%);
271
+ --color-indigo-800: hsl(238, 57%, 41%);
272
+ --color-indigo-900: hsl(236, 49%, 34%);
273
+ --color-indigo-950: hsl(236, 49%, 24%);
274
+
275
+ /* Purple */
276
+ --color-purple-25: hsl(240, 100%, 99%);
277
+ --color-purple-50: hsl(245, 100%, 98%);
278
+ --color-purple-100: hsl(246, 91%, 95%);
279
+ --color-purple-200: hsl(244, 95%, 92%);
280
+ --color-purple-300: hsl(247, 97%, 85%);
281
+ --color-purple-400: hsl(253, 93%, 76%);
282
+ --color-purple-500: hsl(257, 92%, 66%);
283
+ --color-purple-600: hsl(265, 85%, 58%);
284
+ --color-purple-700: hsl(265, 72%, 50%);
285
+ --color-purple-800: hsl(265, 71%, 42%);
286
+ --color-purple-900: hsl(265, 69%, 35%);
287
+ --color-purple-950: hsl(257, 70%, 22%);
288
+
289
+ /* Purple Lavender */
290
+ --color-plavender-25: hsl(240, 100%, 99%);
291
+ --color-plavender-50: hsl(245, 100%, 98%);
292
+ --color-plavender-100: hsl(246, 91%, 95%);
293
+ --color-plavender-200: hsl(244, 95%, 92%);
294
+ --color-plavender-300: hsl(247, 97%, 85%);
295
+ --color-plavender-400: hsl(249, 93%, 76%);
296
+ --color-plavender-500: hsl(252, 92%, 66%);
297
+ --color-plavender-600: hsl(256, 85%, 58%);
298
+ --color-plavender-700: hsl(257, 72%, 50%);
299
+ --color-plavender-800: hsl(257, 71%, 42%);
300
+ --color-plavender-900: hsl(257, 69%, 35%);
301
+ --color-plavender-950: hsl(257, 70%, 22%);
302
+
303
+ /* Pink */
304
+ --color-pink-25: hsl(323, 80%, 98%);
305
+ --color-pink-50: hsl(327, 73%, 97%);
306
+ --color-pink-100: hsl(326, 78%, 93%);
307
+ --color-pink-200: hsl(326, 80%, 88%);
308
+ --color-pink-300: hsl(327, 82%, 80%);
309
+ --color-pink-400: hsl(330, 80%, 72%);
310
+ --color-pink-500: hsl(331, 71%, 59%);
311
+ --color-pink-600: hsl(331, 71%, 46%);
312
+ --color-pink-700: hsl(331, 71%, 42%);
313
+ --color-pink-800: hsl(331, 71%, 37%);
314
+ --color-pink-900: hsl(331, 72%, 25%);
315
+ --color-pink-950: hsl(328, 71%, 18%);
316
+
317
+ /* Guava (rose) */
318
+ --color-guava-25: hsl(7, 60%, 97%);
319
+ --color-guava-50: hsl(9, 62%, 96%);
320
+ --color-guava-100: hsl(2, 57%, 91%);
321
+ --color-guava-200: hsl(1, 58%, 85%);
322
+ --color-guava-300: hsl(356, 59%, 79%);
323
+ --color-guava-400: hsl(357, 61%, 72%);
324
+ --color-guava-500: hsl(356, 67%, 66%);
325
+ --color-guava-600: hsl(353, 58%, 58%);
326
+ --color-guava-700: hsl(353, 52%, 51%);
327
+ --color-guava-800: hsl(350, 58%, 41%);
328
+ --color-guava-900: hsl(350, 56%, 28%);
329
+
330
+ /* Orange */
331
+ --color-orange-25: hsl(33, 82%, 98%);
332
+ --color-orange-50: hsl(30, 89%, 96%);
333
+ --color-orange-100: hsl(30, 90%, 92%);
334
+ --color-orange-200: hsl(36, 86%, 83%);
335
+ --color-orange-300: hsl(27, 89%, 72%);
336
+ --color-orange-400: hsl(23, 88%, 61%);
337
+ --color-orange-500: hsl(21, 87%, 53%);
338
+ --color-orange-600: hsl(17, 82%, 48%);
339
+ --color-orange-700: hsl(13, 80%, 40%);
340
+ --color-orange-800: hsl(11, 71%, 34%);
341
+ --color-orange-900: hsl(11, 68%, 28%);
342
+ --color-orange-950: hsl(7, 79%, 19%);
343
+
344
+ /* Yellow */
345
+ --color-yellow-25: hsl(56, 88%, 97%);
346
+ --color-yellow-50: hsl(52, 92%, 95%);
347
+ --color-yellow-100: hsl(53, 97%, 88%);
348
+ --color-yellow-200: hsl(53, 98%, 77%);
349
+ --color-yellow-300: hsl(55, 99%, 67%);
350
+ --color-yellow-400: hsl(48, 97%, 72%);
351
+ --color-yellow-500: hsl(45, 93%, 47%);
352
+ --color-yellow-600: hsl(39, 96%, 40%);
353
+ --color-yellow-700: hsl(33, 92%, 33%);
354
+ --color-yellow-800: hsl(30, 81%, 29%);
355
+ --color-yellow-900: hsl(26, 73%, 26%);
356
+ --color-yellow-950: hsl(26, 73%, 19%);
357
+ }
358
+ /* =========================
359
+ IMPORT FONT
360
+ ========================= */
361
+ /* =========================
362
+ TYPOGRAPHY TOKENS
363
+ ========================= */
364
+ :root {
365
+ /* Families */
366
+ --font-inter: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI',
367
+ Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Apple Color Emoji',
368
+ 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
369
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
370
+ 'Liberation Mono', 'Courier New', monospace;
371
+
372
+ /* Weights */
373
+ --weight-regular: 400;
374
+ --weight-medium: 500;
375
+ --weight-semibold: 600;
376
+ --weight-bold: 700;
377
+
378
+ /* Sizes (font-size) */
379
+ /* Display Sizes */
380
+ --display-xl-size: 2.625rem; /* 42px */
381
+ --display-lg-size: 2.5rem; /* 40px */
382
+ --display-md-size: 2.25rem; /* 36px */
383
+ --display-sm-size: 1.875rem; /* 30px */
384
+ --display-xs-size: 1.5rem; /* 24px */
385
+ /* Text Sizes */
386
+ --text-xl-size: 1.25rem; /* 20px */
387
+ --text-lg-size: 1.125rem; /* 18px */
388
+ --text-md-size: 1rem; /* 16px */
389
+ --text-sm-size: 0.875rem; /* 14px */
390
+ --text-xs-size: 0.75rem; /* 12px */
391
+
392
+ /* Line heights */
393
+ --text-xl-line: 1.875rem; /* 30px */
394
+ --text-lg-line: 1.75rem; /* 28px */
395
+ --text-md-line: 1.5rem; /* 24px */
396
+ --text-sm-line: 1.25rem; /* 20px */
397
+ --text-xs-line: 1.125rem; /* 18px */
398
+
399
+ /* Numbers (data tables) — use tabular figures */
400
+ --num-sm-size: var(--text-sm-size); /* 14px */
401
+ --num-sm-line: var(--text-sm-line); /* 20px */
402
+ --num-xs-size: var(--text-xs-size); /* 12px */
403
+ --num-xs-line: var(--text-xs-line); /* 18px */
404
+ }
405
+ /* =========================
406
+ BASE / WEIGHT UTILITIES
407
+ ========================= */
408
+ .font-inter {
409
+ font-family: var(--font-inter);
410
+ }
411
+ .font-mono {
412
+ font-family: var(--font-mono);
413
+ }
414
+ .weight-regular {
415
+ font-weight: var(--weight-regular);
416
+ }
417
+ .weight-medium {
418
+ font-weight: var(--weight-medium);
419
+ }
420
+ .weight-semibold {
421
+ font-weight: var(--weight-semibold);
422
+ }
423
+ .weight-bold {
424
+ font-weight: var(--weight-bold);
425
+ }
426
+ /* =========================
427
+ SIZE UTILITIES
428
+ ========================= */
429
+ .text-xl {
430
+ font-size: var(--text-xl-size);
431
+ line-height: var(--text-xl-line);
432
+ }
433
+ .text-lg {
434
+ font-size: var(--text-lg-size);
435
+ line-height: var(--text-lg-line);
436
+ }
437
+ .text-md {
438
+ font-size: var(--text-md-size);
439
+ line-height: var(--text-md-line);
440
+ }
441
+ .text-sm {
442
+ font-size: var(--text-sm-size);
443
+ line-height: var(--text-sm-line);
444
+ }
445
+ .text-xs {
446
+ font-size: var(--text-xs-size);
447
+ line-height: var(--text-xs-line);
448
+ }
449
+ /* =========================
450
+ NUMERIC (DATA TABLES)
451
+ ========================= */
452
+ .num-sm {
453
+ font-size: var(--num-sm-size);
454
+ line-height: var(--num-sm-line);
455
+ font-variant-numeric: tabular-nums;
456
+ font-family: var(--font-inter);
457
+ }
458
+ .num-xs {
459
+ font-size: var(--num-xs-size);
460
+ line-height: var(--num-xs-line);
461
+ font-variant-numeric: tabular-nums;
462
+ font-family: var(--font-mono);
463
+ }
464
+ /* =========================
465
+ TEXT COLOR UTILITIES
466
+ ========================= */
467
+ .text-primary {
468
+ color: var(--bh-text-primary);
469
+ }
470
+ .text-secondary {
471
+ color: var(--bh-text-secondary);
472
+ }
473
+ .text-tertiary {
474
+ color: var(--bh-text-tertiary);
475
+ }
476
+ .text-brand {
477
+ color: var(--bh-text-brand);
478
+ }
479
+ .text-disabled {
480
+ color: var(--bh-text-disabled);
481
+ }
482
+ .text-inverse {
483
+ color: var(--bh-text-inverse);
484
+ }
485
+ .text-error {
486
+ color: var(--bh-text-error);
487
+ }
488
+ .text-warning {
489
+ color: var(--bh-text-warning);
490
+ }
491
+ .text-success {
492
+ color: var(--bh-text-success);
493
+ }
494
+ .text-highlight {
495
+ color: var(--bh-text-highlight);
496
+ }
497
+ :root {
498
+ /* PRIMITIVES — one unit = 0.25rem (4px) */
499
+ --sp-0: 0rem; /* 0px */
500
+ --sp-0-5: 0.125rem; /* 2px */
501
+ --sp-1: 0.25rem; /* 4px */
502
+ --sp-1-5: 0.375rem; /* 6px */
503
+ --sp-2: 0.5rem; /* 8px */
504
+ --sp-3: 0.75rem; /* 12px */
505
+ --sp-4: 1rem; /* 16px */
506
+ --sp-5: 1.25rem; /* 20px */
507
+ --sp-6: 1.5rem; /* 24px */
508
+ --sp-8: 2rem; /* 32px */
509
+ --sp-10: 2.5rem; /* 40px */
510
+ --sp-12: 3rem; /* 48px */
511
+ --sp-16: 4rem; /* 64px */
512
+ --sp-20: 5rem; /* 80px */
513
+ --sp-24: 6rem; /* 96px */
514
+ --sp-32: 8rem; /* 128px */
515
+ --sp-40: 10rem; /* 160px */
516
+ --sp-48: 12rem; /* 192px */
517
+ --sp-56: 14rem; /* 224px */
518
+ --sp-64: 16rem; /* 256px */
519
+ --sp-80: 20rem; /* 320px */
520
+ --sp-96: 24rem; /* 384px */
521
+ --sp-120: 30rem; /* 480px */
522
+ --sp-140: 35rem; /* 560px */
523
+ --sp-160: 40rem; /* 640px */
524
+ --sp-180: 45rem; /* 720px */
525
+ --sp-192: 48rem; /* 768px */
526
+ --sp-256: 64rem; /* 1024px */
527
+ --sp-320: 80rem; /* 1280px */
528
+ --sp-360: 90rem; /* 1440px */
529
+ --sp-400: 100rem; /* 1600px */
530
+ --sp-480: 120rem; /* 1920px */
531
+
532
+ /* SEMANTIC SPACING — use these in UI; they reference primitives */
533
+ --spacing-none: var(--sp-0); /* 0rem */
534
+ --spacing-xxs: var(--sp-0-5); /* 0.125rem */
535
+ --spacing-xs: var(--sp-1); /* 0.25rem */
536
+ --spacing-sm: var(--sp-1-5); /* 0.375rem */
537
+ --spacing-md: var(--sp-2); /* 0.5rem */
538
+ --spacing-lg: var(--sp-3); /* 0.75rem */
539
+ --spacing-xl: var(--sp-4); /* 1rem */
540
+ --spacing-2xl: var(--sp-5); /* 1.25rem */
541
+ --spacing-3xl: var(--sp-6); /* 1.5rem */
542
+ --spacing-4xl: var(--sp-8); /* 2rem */
543
+ --spacing-5xl: var(--sp-10); /* 2.5rem */
544
+ --spacing-6xl: var(--sp-12); /* 3rem */
545
+ --spacing-7xl: var(--sp-16); /* 4rem */
546
+ --spacing-8xl: var(--sp-20); /* 5rem */
547
+ --spacing-9xl: var(--sp-24); /* 6rem */
548
+ --spacing-10xl: var(--sp-32); /* 8rem */
549
+ --spacing-11xl: var(--sp-40); /* 10rem */
550
+
551
+ /* BUTTON PADDINGS — consistent padding sizes for button components */
552
+ --btn-padding-sm: var(--spacing-sm); /* 0.375rem / 6px */
553
+ --btn-padding-md: var(--spacing-md); /* 0.5rem / 8px */
554
+ --btn-padding-lg: var(--spacing-lg); /* 0.75rem / 12px */
555
+ --btn-padding-xl: var(--spacing-xl); /* 1rem / 16px */
556
+
557
+ /* ICON COMPENSATION — complete padding values for components with icons */
558
+ --icon-compensation-xs-btn: calc(var(--spacing-lg) - var(--spacing-xs)); /* 12px - 4px = 8px - for xs buttons */
559
+ --icon-compensation-sm-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for sm buttons */
560
+ --icon-compensation-md-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for md buttons */
561
+ --icon-compensation-lg-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for lg buttons */
562
+ }
563
+ :root {
564
+ /* Radius scale */
565
+ --radius-none: 0rem; /* 0px */
566
+ --radius-xxs: 0.125rem; /* 2px */
567
+ --radius-xs: 0.25rem; /* 4px */
568
+ --radius-sm: 0.375rem; /* 6px */
569
+ --radius-md: 0.5rem; /* 8px */
570
+ --radius-lg: 0.625rem; /* 10px */
571
+ --radius-xl: 0.75rem; /* 12px */
572
+ --radius-2xl: 1rem; /* 16px */
573
+ --radius-3xl: 1.25rem; /* 20px */
574
+ --radius-4xl: 1.5rem; /* 24px */
575
+ --radius-full: 9999px; /* Full / pill / circle */
576
+ }
577
+ :root {
578
+ /* Shadow colors derived from neutral color scale */
579
+ --shadow-color-base: var(
580
+ --color-neutral-600
581
+ ); /* #4A5578 - base shadow color */
582
+ --shadow-color-06: color-mix(
583
+ in srgb,
584
+ var(--shadow-color-base) 6%,
585
+ transparent
586
+ ); /* 0.06 opacity */
587
+ --shadow-color-10: color-mix(
588
+ in srgb,
589
+ var(--shadow-color-base) 10%,
590
+ transparent
591
+ ); /* 0.1 opacity */
592
+ --shadow-color-14: color-mix(
593
+ in srgb,
594
+ var(--shadow-color-base) 14%,
595
+ transparent
596
+ ); /* 0.14 opacity */
597
+ --shadow-color-18: color-mix(
598
+ in srgb,
599
+ var(--shadow-color-base) 18%,
600
+ transparent
601
+ ); /* 0.18 opacity */
602
+
603
+ /* Shadow scale - using consistent color variables */
604
+ --shadow-xs: 0px 0px 2px 1px var(--shadow-color-06);
605
+ --shadow-sm: 0px 3px 4px 0px var(--shadow-color-10),
606
+ 0px 0px 1px 1px var(--shadow-color-10);
607
+ --shadow-md: 0px 4px 8px 0px var(--shadow-color-10),
608
+ 0px 0px 4px 0px var(--shadow-color-10);
609
+ --shadow-lg: 0px 12px 16px -2px var(--shadow-color-10),
610
+ 0px 0px 1px 1px var(--shadow-color-10);
611
+ --shadow-xl: 0px 20px 24px -4px var(--shadow-color-10),
612
+ 0px 0px 1px 1px var(--shadow-color-10);
613
+ --shadow-2xl: 0px 24px 48px -12px var(--shadow-color-18),
614
+ 0px 0px 1px 1px var(--shadow-color-10);
615
+ --shadow-3xl: 0px 0px 1px 1px var(--shadow-color-10),
616
+ 0px 32px 64px -12px var(--shadow-color-14);
617
+
618
+ /* Semantic shadows - use these in UI components */
619
+ --shadow-none: none;
620
+ --shadow-subtle: var(
621
+ --shadow-xs
622
+ ); /* Very subtle shadow for minimal elevation */
623
+ --shadow-card: var(--shadow-sm); /* Cards and panels */
624
+ --shadow-dropdown: var(--shadow-md); /* Dropdowns and small overlays */
625
+ --shadow-modal: var(--shadow-lg); /* Modals and dialogs */
626
+ --shadow-popover: var(--shadow-xl); /* Popovers and tooltips */
627
+ --shadow-drawer: var(--shadow-2xl); /* Side drawers and large overlays */
628
+ --shadow-floating: var(
629
+ --shadow-3xl
630
+ ); /* Floating action buttons and high elevation */
631
+ }
632
+ /* Bellhop Animation System */
633
+ /* Animation Variables */
634
+ :root {
635
+ /* Timing */
636
+ --animation-duration-fast: 150ms;
637
+ --animation-duration-normal: 200ms;
638
+ --animation-duration-slow: 300ms;
639
+
640
+ /* Easing Functions */
641
+ --animation-ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
642
+ --animation-ease-exit: cubic-bezier(0.4, 0, 1, 1);
643
+ --animation-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
644
+ --animation-ease-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
645
+
646
+ /* Transform Values */
647
+ --animation-slide-distance: 8px;
648
+ --animation-scale-start: 0.96;
649
+ --animation-scale-end: 1;
650
+ }
651
+ /* Dropdown Animations */
652
+ .animate-dropdown-enter {
653
+ animation: dropdownEnter var(--animation-duration-normal)
654
+ var(--animation-ease-enter) forwards;
655
+ }
656
+ .animate-dropdown-exit {
657
+ animation: dropdownExit var(--animation-duration-fast)
658
+ var(--animation-ease-exit) forwards;
659
+ }
660
+ @keyframes dropdownEnter {
661
+ 0% {
662
+ opacity: 0;
663
+ transform: scale(var(--animation-scale-start));
664
+ }
665
+ 100% {
666
+ opacity: 1;
667
+ transform: scale(var(--animation-scale-end));
668
+ }
669
+ }
670
+ @keyframes dropdownExit {
671
+ 0% {
672
+ opacity: 1;
673
+ transform: translateY(0) scale(var(--animation-scale-end));
674
+ }
675
+ 100% {
676
+ opacity: 0;
677
+ transform: translateY(calc(-1 * var(--animation-slide-distance)))
678
+ scale(var(--animation-scale-start));
679
+ }
680
+ }
681
+ /* Modal Animations */
682
+ .animate-modal-enter {
683
+ animation: modalEnter var(--animation-duration-normal)
684
+ var(--animation-ease-enter) forwards;
685
+ }
686
+ .animate-modal-exit {
687
+ animation: modalExit var(--animation-duration-fast) var(--animation-ease-exit)
688
+ forwards;
689
+ }
690
+ @keyframes modalEnter {
691
+ 0% {
692
+ opacity: 0;
693
+ transform: translateY(16px) scale(var(--animation-scale-start));
694
+ }
695
+ 100% {
696
+ opacity: 1;
697
+ transform: translateY(0) scale(var(--animation-scale-end));
698
+ }
699
+ }
700
+ @keyframes modalExit {
701
+ 0% {
702
+ opacity: 1;
703
+ transform: translateY(0) scale(var(--animation-scale-end));
704
+ }
705
+ 100% {
706
+ opacity: 0;
707
+ transform: translateY(16px) scale(var(--animation-scale-start));
708
+ }
709
+ }
710
+ /* Chevron Icon Animations */
711
+ .chevron-icon-rotate {
712
+ transition: transform var(--animation-duration-fast)
713
+ var(--animation-ease-smooth);
714
+ }
715
+ .chevron-icon-rotate.expanded {
716
+ transform: rotate(180deg);
717
+ }
718
+ /* Alternative with direct elements */
719
+ .chevron-expand {
720
+ display: inline-flex;
721
+ transition: transform var(--animation-duration-fast)
722
+ var(--animation-ease-smooth);
723
+ }
724
+ .chevron-expand.open {
725
+ transform: rotate(180deg);
726
+ }
727
+ /* Toast Animations */
728
+ .animate-toast-enter {
729
+ animation: toastEnter var(--animation-duration-normal)
730
+ var(--animation-ease-enter) forwards;
731
+ }
732
+ .animate-toast-exit {
733
+ animation: toastExit var(--animation-duration-fast) var(--animation-ease-exit)
734
+ forwards;
735
+ }
736
+ @keyframes toastEnter {
737
+ 0% {
738
+ opacity: 0;
739
+ transform: translateX(100%) scale(var(--animation-scale-start));
740
+ }
741
+ 100% {
742
+ opacity: 1;
743
+ transform: translateX(0) scale(var(--animation-scale-end));
744
+ }
745
+ }
746
+ @keyframes toastExit {
747
+ 0% {
748
+ opacity: 1;
749
+ transform: translateX(0) scale(var(--animation-scale-end));
750
+ }
751
+ 100% {
752
+ opacity: 0;
753
+ transform: translateX(100%) scale(var(--animation-scale-start));
754
+ }
755
+ }
756
+ /* Fade Animations */
757
+ .animate-fade-enter {
758
+ animation: fadeEnter var(--animation-duration-normal)
759
+ var(--animation-ease-enter) forwards;
760
+ }
761
+ .animate-fade-exit {
762
+ animation: fadeExit var(--animation-duration-fast) var(--animation-ease-exit)
763
+ forwards;
764
+ }
765
+ @keyframes fadeEnter {
766
+ 0% {
767
+ opacity: 0;
768
+ }
769
+ 100% {
770
+ opacity: 1;
771
+ }
772
+ }
773
+ @keyframes fadeExit {
774
+ 0% {
775
+ opacity: 1;
776
+ }
777
+ 100% {
778
+ opacity: 0;
779
+ }
780
+ }
781
+ /* Scale Animations */
782
+ .animate-scale-enter {
783
+ animation: scaleEnter var(--animation-duration-normal)
784
+ var(--animation-ease-enter) forwards;
785
+ }
786
+ .animate-scale-exit {
787
+ animation: scaleExit var(--animation-duration-fast) var(--animation-ease-exit)
788
+ forwards;
789
+ }
790
+ @keyframes scaleEnter {
791
+ 0% {
792
+ opacity: 0;
793
+ transform: scale(var(--animation-scale-start));
794
+ }
795
+ 100% {
796
+ opacity: 1;
797
+ transform: scale(var(--animation-scale-end));
798
+ }
799
+ }
800
+ @keyframes scaleExit {
801
+ 0% {
802
+ opacity: 1;
803
+ transform: scale(var(--animation-scale-end));
804
+ }
805
+ 100% {
806
+ opacity: 0;
807
+ transform: scale(var(--animation-scale-start));
808
+ }
809
+ }
810
+ /* Slide Animations */
811
+ .animate-slide-up-enter {
812
+ animation: slideUpEnter var(--animation-duration-normal)
813
+ var(--animation-ease-enter) forwards;
814
+ }
815
+ .animate-slide-up-exit {
816
+ animation: slideUpExit var(--animation-duration-fast)
817
+ var(--animation-ease-exit) forwards;
818
+ }
819
+ .animate-slide-down-enter {
820
+ animation: slideDownEnter var(--animation-duration-normal)
821
+ var(--animation-ease-enter) forwards;
822
+ }
823
+ .animate-slide-down-exit {
824
+ animation: slideDownExit var(--animation-duration-fast)
825
+ var(--animation-ease-exit) forwards;
826
+ }
827
+ @keyframes slideUpEnter {
828
+ 0% {
829
+ opacity: 0;
830
+ transform: translateY(var(--animation-slide-distance));
831
+ }
832
+ 100% {
833
+ opacity: 1;
834
+ transform: translateY(0);
835
+ }
836
+ }
837
+ @keyframes slideUpExit {
838
+ 0% {
839
+ opacity: 1;
840
+ transform: translateY(0);
841
+ }
842
+ 100% {
843
+ opacity: 0;
844
+ transform: translateY(var(--animation-slide-distance));
845
+ }
846
+ }
847
+ @keyframes slideDownEnter {
848
+ 0% {
849
+ opacity: 0;
850
+ transform: translateY(calc(-1 * var(--animation-slide-distance)));
851
+ }
852
+ 100% {
853
+ opacity: 1;
854
+ transform: translateY(0);
855
+ }
856
+ }
857
+ @keyframes slideDownExit {
858
+ 0% {
859
+ opacity: 1;
860
+ transform: translateY(0);
861
+ }
862
+ 100% {
863
+ opacity: 0;
864
+ transform: translateY(calc(-1 * var(--animation-slide-distance)));
865
+ }
866
+ }
867
+ /* Base Animation Classes */
868
+ .animate-base {
869
+ transform-origin: top center;
870
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
871
+ }
872
+ .animate-base-modal {
873
+ transform-origin: center center;
874
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
875
+ }
876
+ .animate-base-toast {
877
+ transform-origin: right center;
878
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
879
+ }
880
+ /* Dismiss Animations */
881
+ .animate-dismiss {
882
+ animation: dismiss var(--animation-duration-normal) var(--animation-ease-exit)
883
+ forwards;
884
+ }
885
+ @keyframes dismiss {
886
+ 0% {
887
+ opacity: 1;
888
+ transform: scale(1);
889
+ }
890
+ 60% {
891
+ opacity: 0.3;
892
+ transform: scale(0.94);
893
+ }
894
+ 100% {
895
+ opacity: 0;
896
+ transform: scale(0.88);
897
+ }
898
+ }
899
+ /* Chart Animations */
900
+ .animate-chart-segment-enter {
901
+ animation: chartSegmentEnter 600ms var(--animation-ease-enter) forwards;
902
+ }
903
+ .animate-chart-segment-hover {
904
+ transition: all var(--animation-duration-fast) var(--animation-ease-smooth);
905
+ }
906
+ .animate-chart-segment-hover:hover {
907
+ opacity: 0.85;
908
+ transform: scale(1.02);
909
+ filter: brightness(1.1);
910
+ }
911
+ @keyframes chartSegmentEnter {
912
+ 0% {
913
+ opacity: 0;
914
+ transform: scale(0.2) rotate(-45deg);
915
+ }
916
+ 25% {
917
+ opacity: 0.3;
918
+ transform: scale(0.5) rotate(-22deg);
919
+ }
920
+ 50% {
921
+ opacity: 0.6;
922
+ transform: scale(0.8) rotate(-8deg);
923
+ }
924
+ 75% {
925
+ opacity: 0.9;
926
+ transform: scale(1.05) rotate(2deg);
927
+ }
928
+ 100% {
929
+ opacity: 1;
930
+ transform: scale(1) rotate(0deg);
931
+ }
932
+ }
933
+ /* Pie Chart Segment Animation */
934
+ .animate-pie-segment-enter {
935
+ animation: pieSegmentEnter 700ms var(--animation-ease-enter) forwards;
936
+ }
937
+ @keyframes pieSegmentEnter {
938
+ 0% {
939
+ opacity: 0;
940
+ transform: scale(0.3) rotate(-90deg);
941
+ }
942
+ 15% {
943
+ opacity: 0.2;
944
+ transform: scale(0.4) rotate(-60deg);
945
+ }
946
+ 30% {
947
+ opacity: 0.5;
948
+ transform: scale(0.6) rotate(-30deg);
949
+ }
950
+ 60% {
951
+ opacity: 0.8;
952
+ transform: scale(0.95) rotate(-5deg);
953
+ }
954
+ 80% {
955
+ opacity: 0.95;
956
+ transform: scale(1.02) rotate(2deg);
957
+ }
958
+ 100% {
959
+ opacity: 1;
960
+ transform: scale(1) rotate(0deg);
961
+ }
962
+ }
963
+ /* Utility Classes */
964
+ .animate-duration-fast {
965
+ animation-duration: var(--animation-duration-fast) !important;
966
+ }
967
+ .animate-duration-normal {
968
+ animation-duration: var(--animation-duration-normal) !important;
969
+ }
970
+ .animate-duration-slow {
971
+ animation-duration: var(--animation-duration-slow) !important;
972
+ }
973
+ .animate-ease-bounce {
974
+ animation-timing-function: var(--animation-ease-bounce) !important;
975
+ }
976
+ /* ==========================================================================
977
+ BELLHOPOS LAYOUT SYSTEM
978
+ Essential layout classes for dashboard applications
979
+ ========================================================================== */
980
+ /* Main App Layout */
981
+ .app-layout {
982
+ display: grid;
983
+ grid-template-columns: auto 1fr;
984
+ height: 100vh;
985
+ overflow: hidden;
986
+ font-family: var(--font-inter);
987
+ }
988
+ /* Sidebar - Always visible, spans full height */
989
+ .app-sidebar {
990
+ background-color: var(--color-white);
991
+ border-right: 1px solid var(--color-neutral-100);
992
+ overflow-y: auto;
993
+ overflow-x: hidden;
994
+ z-index: 100;
995
+ width: 64px;
996
+ min-width: 64px;
997
+ height: 100vh;
998
+ }
999
+ /* Main Content Area */
1000
+ .app-main {
1001
+ display: flex;
1002
+ flex-direction: column;
1003
+ height: 100vh;
1004
+ overflow: hidden;
1005
+ }
1006
+ /* Header */
1007
+ .app-header {
1008
+ background-color: var(--color-white);
1009
+ z-index: 1000;
1010
+ flex-shrink: 0;
1011
+ }
1012
+ /* Page Navigation Container - Smooth motion */
1013
+ .page-nav {
1014
+ flex-shrink: 0;
1015
+ width: 280px;
1016
+ overflow: hidden;
1017
+ transition: all 0.4s cubic-bezier(0.08, 0.52, 0.52, 1);
1018
+ transform: translateX(0);
1019
+ opacity: 1;
1020
+ }
1021
+ .page-nav.collapsed {
1022
+ width: 0;
1023
+ transform: translateX(-20px);
1024
+ opacity: 0;
1025
+ }
1026
+ /* Sample Content Grid */
1027
+ .content-grid {
1028
+ display: grid;
1029
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
1030
+ gap: var(--spacing-2xl);
1031
+ margin-top: var(--spacing-3xl);
1032
+ }
1033
+ .content-card {
1034
+ background-color: var(--color-white);
1035
+ border-radius: var(--radius-lg);
1036
+ padding: var(--spacing-2xl);
1037
+ box-shadow: var(--shadow-sm);
1038
+ transition: all 0.2s ease;
1039
+ border: 1px solid var(--color-neutral-100);
1040
+ }
1041
+ .content-card:hover {
1042
+ box-shadow: var(--shadow-md);
1043
+ transform: translateY(-1px);
1044
+ }
1045
+ .content-card h3 {
1046
+ font-size: var(--text-lg-size);
1047
+ font-weight: var(--weight-semibold);
1048
+ color: var(--color-neutral-800);
1049
+ margin-bottom: var(--spacing-sm);
1050
+ }
1051
+ .content-card p {
1052
+ font-size: var(--text-sm-size);
1053
+ color: var(--color-neutral-500);
1054
+ line-height: var(--text-sm-line);
1055
+ margin-bottom: 0;
1056
+ }
1057
+ /* Responsive Design */
1058
+ @media (max-width: 1024px) {
1059
+ .page-nav {
1060
+ display: none;
1061
+ }
1062
+
1063
+ .content-grid {
1064
+ grid-template-columns: 1fr;
1065
+ gap: var(--spacing-lg);
1066
+ }
1067
+ }
1068
+ @media (max-width: 768px) {
1069
+ .app-sidebar {
1070
+ position: fixed;
1071
+ left: 0;
1072
+ top: 0;
1073
+ height: 100vh;
1074
+ z-index: 1001;
1075
+ box-shadow: var(--shadow-lg);
1076
+ }
1077
+
1078
+ .app-main {
1079
+ margin-left: 0;
1080
+ }
1081
+ }
1082
+ @media (max-width: 480px) {
1083
+ .content-card {
1084
+ padding: var(--spacing-lg);
1085
+ }
1086
+
1087
+ .content-grid {
1088
+ gap: var(--spacing-md);
1089
+ }
1090
+ }
1091
+ /* Scrollbar Styling */
1092
+ .app-sidebar::-webkit-scrollbar,
1093
+ .page-nav::-webkit-scrollbar,
1094
+ .bellhop-content-area::-webkit-scrollbar {
1095
+ width: 6px;
1096
+ }
1097
+ .app-sidebar::-webkit-scrollbar-track,
1098
+ .page-nav::-webkit-scrollbar-track,
1099
+ .bellhop-content-area::-webkit-scrollbar-track {
1100
+ background: var(--color-neutral-50);
1101
+ }
1102
+ .app-sidebar::-webkit-scrollbar-thumb,
1103
+ .page-nav::-webkit-scrollbar-thumb,
1104
+ .bellhop-content-area::-webkit-scrollbar-thumb {
1105
+ background: var(--color-neutral-300);
1106
+ border-radius: 3px;
1107
+ }
1108
+ .app-sidebar::-webkit-scrollbar-thumb:hover,
1109
+ .page-nav::-webkit-scrollbar-thumb:hover,
1110
+ .bellhop-content-area::-webkit-scrollbar-thumb:hover {
1111
+ background: var(--color-neutral-400);
1112
+ }
1113
+ /* Focus styles for accessibility */
1114
+ .content-card:focus-visible {
1115
+ outline: 2px solid var(--color-brand-500);
1116
+ outline-offset: 2px;
1117
+ }
1118
+ /* Additional utility classes for dashboard layouts */
1119
+ .dashboard-container {
1120
+ padding: var(--spacing-2xl);
1121
+ max-width: 1200px;
1122
+ margin: 0 auto;
1123
+ }
1124
+ .dashboard-section {
1125
+ margin-bottom: var(--spacing-3xl);
1126
+ }
1127
+ .dashboard-header {
1128
+ display: flex;
1129
+ align-items: center;
1130
+ justify-content: space-between;
1131
+ margin-bottom: var(--spacing-xl);
1132
+ }
1133
+ .dashboard-title {
1134
+ font-size: var(--text-2xl-size);
1135
+ font-weight: var(--weight-bold);
1136
+ color: var(--color-neutral-800);
1137
+ margin: 0;
1138
+ }
1139
+ /* Stats grid for dashboard metrics */
1140
+ .stats-grid {
1141
+ display: grid;
1142
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1143
+ gap: var(--spacing-lg);
1144
+ margin-bottom: var(--spacing-2xl);
1145
+ }
1146
+ .stat-card {
1147
+ background: var(--color-white);
1148
+ padding: var(--spacing-xl);
1149
+ border-radius: var(--radius-lg);
1150
+ border: 1px solid var(--color-neutral-200);
1151
+ text-align: center;
1152
+ }
1153
+ .stat-value {
1154
+ font-size: var(--text-3xl-size);
1155
+ font-weight: var(--weight-bold);
1156
+ color: var(--color-brand-600);
1157
+ display: block;
1158
+ margin-bottom: var(--spacing-xs);
1159
+ }
1160
+ .stat-label {
1161
+ font-size: var(--text-sm-size);
1162
+ color: var(--color-neutral-600);
1163
+ font-weight: var(--weight-medium);
1164
+ }
1165
+ /* ============================================
1166
+ Bellhop Icon System
1167
+ ============================================ */
1168
+ :root {
1169
+ /* Icon Sizes */
1170
+ --icon-size-xs: 16px;
1171
+ --icon-size-sm: 18px;
1172
+ --icon-size-md: 20px;
1173
+ --icon-size-lg: 24px;
1174
+ --icon-size-xl: 28px;
1175
+ --icon-size-2xl: 32px;
1176
+ }
1177
+ /* Base Material Symbols Configuration */
1178
+ .material-symbols-outlined,
1179
+ .material-icons,
1180
+ .material-icons-outlined {
1181
+ font-family: 'Material Symbols Outlined';
1182
+ font-weight: normal;
1183
+ font-style: normal;
1184
+ font-size: var(--icon-size-md);
1185
+ line-height: 1;
1186
+ display: inline-block;
1187
+ vertical-align: middle;
1188
+ color: var(--color-neutral-500);
1189
+ -webkit-font-smoothing: antialiased;
1190
+ font-feature-settings: 'liga';
1191
+ }
1192
+ /* Icon Size Classes */
1193
+ .icon-xs {
1194
+ font-size: var(--icon-size-xs);
1195
+ }
1196
+ .icon-sm {
1197
+ font-size: var(--icon-size-sm);
1198
+ }
1199
+ .icon-md {
1200
+ font-size: var(--icon-size-md);
1201
+ }
1202
+ .icon-lg {
1203
+ font-size: var(--icon-size-lg);
1204
+ }
1205
+ .icon-xl {
1206
+ font-size: var(--icon-size-xl);
1207
+ }
1208
+ .icon-2xl {
1209
+ font-size: var(--icon-size-2xl);
1210
+ }
1211
+ /* Icon Color Classes */
1212
+ .icon-primary {
1213
+ color: var(--color-brand-500);
1214
+ }
1215
+ .icon-secondary {
1216
+ color: var(--color-neutral-500);
1217
+ }
1218
+ .icon-success {
1219
+ color: var(--color-success-500);
1220
+ }
1221
+ .icon-error {
1222
+ color: var(--color-error-500);
1223
+ }
1224
+ .icon-warning {
1225
+ color: var(--color-warning-500);
1226
+ }
1227
+ /* Rotating Icons */
1228
+ @keyframes icon-spin {
1229
+ to {
1230
+ transform: rotate(360deg);
1231
+ }
1232
+ }
1233
+ .icon-spin {
1234
+ animation: icon-spin 1s linear infinite;
1235
+ }
1236
+ /* ==========================================================================
1237
+ BELLHOP GLOBAL STYLES
1238
+ ========================================================================== */
1239
+ /* Import all Bellhop design system styles */
1240
+ /* ==========================================================================
1241
+ FOCUS MANAGEMENT
1242
+ ========================================================================== */
1243
+ /* 1. Reset the outline for all focusable elements when a mouse is used. */
1244
+ *:focus:not(:focus-visible) {
1245
+ outline: none;
1246
+ }
1247
+ /* 2. Apply a custom outline that will only appear during keyboard navigation. */
1248
+ *:focus-visible {
1249
+ outline: 2px solid var(--color-brand-500); /* Using bellhop brand color */
1250
+ outline-offset: 2px;
1251
+ }
1252
+ /* ==========================================================================
1253
+ ACCESSIBILITY IMPROVEMENTS
1254
+ ========================================================================== */
1255
+ /* Ensure focus is visible on interactive elements */
1256
+ button:focus-visible,
1257
+ input:focus-visible,
1258
+ select:focus-visible,
1259
+ textarea:focus-visible,
1260
+ a:focus-visible,
1261
+ [tabindex]:focus-visible {
1262
+ outline: 2px solid var(--color-brand-500);
1263
+ outline-offset: 2px;
1264
+ }
1265
+ /* ==========================================================================
1266
+ UTILITY CLASSES
1267
+ ========================================================================== */
1268
+ /* Prevent text selection */
1269
+ .no-select {
1270
+ user-select: none;
1271
+ -webkit-user-select: none;
1272
+ -moz-user-select: none;
1273
+ -ms-user-select: none;
1274
+ }
1275
+ /* Screen reader only content */
1276
+ .sr-only {
1277
+ position: absolute;
1278
+ width: 1px;
1279
+ height: 1px;
1280
+ padding: 0;
1281
+ margin: -1px;
1282
+ overflow: hidden;
1283
+ clip: rect(0, 0, 0, 0);
1284
+ white-space: nowrap;
1285
+ border: 0;
1286
+ }
1287
+ /* ==========================================================================
1288
+ CONTENT LAYOUT UTILITIES
1289
+ ========================================================================== */
1290
+ /* Content Container - Main flex container for page navigation and content area */
1291
+ .bellhop-content-container {
1292
+ display: flex;
1293
+ flex: 1;
1294
+ overflow: hidden;
1295
+ background-color: var(--color-white);
1296
+ }
1297
+ /* Content Area - Scrollable main content region */
1298
+ .bellhop-content-area {
1299
+ flex: 1;
1300
+ overflow-y: auto;
1301
+ overflow-x: hidden;
1302
+ background-color: var(--color-white);
1303
+ }
1304
+ /* Content Wrapper - Inner content container with padding and max-width */
1305
+ .bellhop-content-wrapper {
1306
+ padding: var(--spacing-4xl);
1307
+ /*max-width: 1200px;*/
1308
+ margin: 0 auto;
1309
+ font-family: var(--font-inter);
1310
+ }
1311
+ /* Content Wrapper Variants */
1312
+ .bellhop-content-wrapper-sm {
1313
+ padding: var(--spacing-2xl);
1314
+ /*max-width: 800px;*/
1315
+ margin: 0 auto;
1316
+ font-family: var(--font-inter);
1317
+ }
1318
+ .bellhop-content-wrapper-lg {
1319
+ padding: var(--spacing-5xl);
1320
+ /*max-width: 1400px;*/
1321
+ margin: 0 auto;
1322
+ font-family: var(--font-inter);
1323
+ }
1324
+ .bellhop-content-wrapper-full {
1325
+ padding: var(--spacing-4xl);
1326
+ max-width: none;
1327
+ margin: 0;
1328
+ font-family: var(--font-inter);
1329
+ }
1330
+ /* Content Typography - Standard content headings and text */
1331
+ .bellhop-content-wrapper h1,
1332
+ .bellhop-content-wrapper-sm h1,
1333
+ .bellhop-content-wrapper-lg h1,
1334
+ .bellhop-content-wrapper-full h1 {
1335
+ font-size: var(--text-3xl-size);
1336
+ font-weight: var(--weight-bold);
1337
+ line-height: var(--text-3xl-line);
1338
+ color: var(--color-neutral-800);
1339
+ margin-bottom: var(--spacing-md);
1340
+ }
1341
+ .bellhop-content-wrapper p,
1342
+ .bellhop-content-wrapper-sm p,
1343
+ .bellhop-content-wrapper-lg p,
1344
+ .bellhop-content-wrapper-full p {
1345
+ font-size: var(--text-md-size);
1346
+ font-weight: var(--weight-regular);
1347
+ line-height: var(--text-md-line);
1348
+ color: var(--color-neutral-600);
1349
+ margin-bottom: var(--spacing-2xl);
1350
+ }
1351
+ /* Responsive adjustments for content wrappers */
1352
+ @media (max-width: 768px) {
1353
+ .bellhop-content-wrapper,
1354
+ .bellhop-content-wrapper-sm,
1355
+ .bellhop-content-wrapper-lg,
1356
+ .bellhop-content-wrapper-full {
1357
+ padding: var(--spacing-xl);
1358
+ }
1359
+
1360
+ .bellhop-content-wrapper h1,
1361
+ .bellhop-content-wrapper-sm h1,
1362
+ .bellhop-content-wrapper-lg h1,
1363
+ .bellhop-content-wrapper-full h1 {
1364
+ font-size: var(--text-2xl-size);
1365
+ line-height: var(--text-2xl-line);
1366
+ }
1367
+ }
1368
+ @media (max-width: 480px) {
1369
+ .bellhop-content-wrapper,
1370
+ .bellhop-content-wrapper-sm,
1371
+ .bellhop-content-wrapper-lg,
1372
+ .bellhop-content-wrapper-full {
1373
+ padding: var(--spacing-md);
1374
+ }
1375
+
1376
+ .bellhop-content-wrapper h1,
1377
+ .bellhop-content-wrapper-sm h1,
1378
+ .bellhop-content-wrapper-lg h1,
1379
+ .bellhop-content-wrapper-full h1 {
1380
+ font-size: var(--text-xl-size);
1381
+ line-height: var(--text-xl-line);
1382
+ }
1383
+ }
1384
+ /* ==========================================================================
1385
+ BELLHOPOS ANGULAR LIBRARY STYLES
1386
+ Main entry point for all Bellhop design system styles
1387
+ ========================================================================== */
1388
+ /* Import Google Fonts - Inter and Material Symbols */
1389
+ /* Import all Bellhop design system styles */
1390
+ /* ==========================================================================
1391
+ GLOBAL RESETS AND DEFAULTS
1392
+ ========================================================================== */
1393
+ /* Reset the outline for all focusable elements when a mouse is used. */
1394
+ *:focus:not(:focus-visible) {
1395
+ outline: none;
1396
+ }
1397
+ /* Apply a custom outline that will only appear during keyboard navigation. */
1398
+ *:focus-visible {
1399
+ outline: 2px solid var(--color-brand-500);
1400
+ outline-offset: 2px;
1401
+ }
1402
+ /* Ensure focus is visible on interactive elements */
1403
+ button:focus-visible,
1404
+ input:focus-visible,
1405
+ select:focus-visible,
1406
+ textarea:focus-visible,
1407
+ a:focus-visible,
1408
+ [tabindex]:focus-visible {
1409
+ outline: 2px solid var(--color-brand-500);
1410
+ outline-offset: 2px;
1411
+ }
1412
+ /* ==========================================================================
1413
+ UTILITY CLASSES
1414
+ ========================================================================== */
1415
+ /* Prevent text selection */
1416
+ .no-select {
1417
+ user-select: none;
1418
+ -webkit-user-select: none;
1419
+ -moz-user-select: none;
1420
+ -ms-user-select: none;
1421
+ }
1422
+ /* Screen reader only content */
1423
+ .sr-only {
1424
+ position: absolute;
1425
+ width: 1px;
1426
+ height: 1px;
1427
+ padding: 0;
1428
+ margin: -1px;
1429
+ overflow: hidden;
1430
+ clip: rect(0, 0, 0, 0);
1431
+ white-space: nowrap;
1432
+ border: 0;
1433
+ }
1434
+ /* ==========================================================================
1435
+ CONTENT LAYOUT UTILITIES
1436
+ ========================================================================== */
1437
+ /* Content Container - Main flex container for page navigation and content area */
1438
+ .bellhop-content-container {
1439
+ display: flex;
1440
+ flex: 1;
1441
+ overflow: hidden;
1442
+ background-color: var(--color-white);
1443
+ }
1444
+ /* Content Area - Scrollable main content region */
1445
+ .bellhop-content-area {
1446
+ flex: 1;
1447
+ overflow-y: auto;
1448
+ overflow-x: hidden;
1449
+ background-color: var(--color-white);
1450
+ }
1451
+ /* Content Wrapper - Inner content container with padding and max-width */
1452
+ .bellhop-content-wrapper {
1453
+ padding: var(--spacing-4xl);
1454
+ margin: 0 auto;
1455
+ font-family: var(--font-inter);
1456
+ }
1457
+ /* Content Wrapper Variants */
1458
+ .bellhop-content-wrapper-sm {
1459
+ padding: var(--spacing-2xl);
1460
+ margin: 0 auto;
1461
+ font-family: var(--font-inter);
1462
+ }
1463
+ .bellhop-content-wrapper-lg {
1464
+ padding: var(--spacing-5xl);
1465
+ margin: 0 auto;
1466
+ font-family: var(--font-inter);
1467
+ }
1468
+ .bellhop-content-wrapper-full {
1469
+ padding: var(--spacing-4xl);
1470
+ max-width: none;
1471
+ margin: 0;
1472
+ font-family: var(--font-inter);
1473
+ }
1474
+ /* Content Typography - Standard content headings and text */
1475
+ .bellhop-content-wrapper h1,
1476
+ .bellhop-content-wrapper-sm h1,
1477
+ .bellhop-content-wrapper-lg h1,
1478
+ .bellhop-content-wrapper-full h1 {
1479
+ font-size: var(--text-3xl-size);
1480
+ font-weight: var(--weight-bold);
1481
+ line-height: var(--text-3xl-line);
1482
+ color: var(--color-neutral-800);
1483
+ margin-bottom: var(--spacing-md);
1484
+ }
1485
+ .bellhop-content-wrapper p,
1486
+ .bellhop-content-wrapper-sm p,
1487
+ .bellhop-content-wrapper-lg p,
1488
+ .bellhop-content-wrapper-full p {
1489
+ font-size: var(--text-md-size);
1490
+ font-weight: var(--weight-regular);
1491
+ line-height: var(--text-md-line);
1492
+ color: var(--color-neutral-600);
1493
+ margin-bottom: var(--spacing-2xl);
1494
+ }
1495
+ /* Responsive adjustments for content wrappers */
1496
+ @media (max-width: 768px) {
1497
+ .bellhop-content-wrapper,
1498
+ .bellhop-content-wrapper-sm,
1499
+ .bellhop-content-wrapper-lg,
1500
+ .bellhop-content-wrapper-full {
1501
+ padding: var(--spacing-xl);
1502
+ }
1503
+
1504
+ .bellhop-content-wrapper h1,
1505
+ .bellhop-content-wrapper-sm h1,
1506
+ .bellhop-content-wrapper-lg h1,
1507
+ .bellhop-content-wrapper-full h1 {
1508
+ font-size: var(--text-2xl-size);
1509
+ line-height: var(--text-2xl-line);
1510
+ }
1511
+ }
1512
+ @media (max-width: 480px) {
1513
+ .bellhop-content-wrapper,
1514
+ .bellhop-content-wrapper-sm,
1515
+ .bellhop-content-wrapper-lg,
1516
+ .bellhop-content-wrapper-full {
1517
+ padding: var(--spacing-md);
1518
+ }
1519
+
1520
+ .bellhop-content-wrapper h1,
1521
+ .bellhop-content-wrapper-sm h1,
1522
+ .bellhop-content-wrapper-lg h1,
1523
+ .bellhop-content-wrapper-full h1 {
1524
+ font-size: var(--text-xl-size);
1525
+ line-height: var(--text-xl-line);
1526
+ }
1527
+ }
1528
+ /*
1529
+ * Note: Component styles are no longer included here.
1530
+ * All component styles are bundled with their respective Stencil components
1531
+ * in the @actabldesign/bellhop-core package using Shadow DOM encapsulation.
1532
+ *
1533
+ * This package now provides only:
1534
+ * - Design tokens (colors, typography, spacing, shadows, radius, etc.)
1535
+ * - Base normalization
1536
+ * - Layout utilities
1537
+ * - Animations
1538
+ */