@elsapiens/styles 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,796 @@
1
+ /* @elsapiens/sdk CSS Variables */
2
+ /* Theme colors using CSS custom properties */
3
+
4
+ :root {
5
+ /* Primary - Wisteria Blue (matches design system: #eef1f6 to #0c1018) */
6
+ --primary-50: 218 31% 95%;
7
+ --primary-100: 218 31% 90%;
8
+ --primary-200: 218 32% 80%;
9
+ --primary-300: 218 34% 70%;
10
+ --primary-400: 218 34% 60%;
11
+ --primary-500: 218 33% 50%;
12
+ --primary-600: 218 33% 40%;
13
+ --primary-700: 218 33% 30%;
14
+ --primary-800: 218 33% 20%;
15
+ --primary-900: 218 33% 10%;
16
+ --primary-950: 220 33% 7%;
17
+
18
+ /* Semantic - Neutral text colors (no theme tint) */
19
+ --background: 0 0% 100%;
20
+ --foreground: 0 0% 9%;
21
+ --card: 0 0% 100%;
22
+ --card-foreground: 0 0% 9%;
23
+ --popover: 0 0% 100%;
24
+ --popover-foreground: 0 0% 9%;
25
+ --primary: 218 33% 50%;
26
+ --primary-foreground: 0 0% 100%;
27
+ --secondary: 0 0% 96%;
28
+ --secondary-foreground: 0 0% 20%;
29
+ --muted: 0 0% 96%;
30
+ --muted-foreground: 0 0% 45%;
31
+ --accent: 0 0% 96%;
32
+ --accent-foreground: 0 0% 20%;
33
+ --destructive: 0 84% 60%;
34
+ --destructive-foreground: 0 0% 100%;
35
+ --border: 0 0% 90%;
36
+ --input: 0 0% 90%;
37
+ --ring: 218 33% 50%;
38
+
39
+ /* Surfaces - Neutral */
40
+ --surface: 0 0% 100%;
41
+ --surface-elevated: 0 0% 100%;
42
+ --surface-sunken: 0 0% 96%;
43
+
44
+ /* Neutral Gray Scale (never changes with color scheme) */
45
+ --neutral-50: 0 0% 98%;
46
+ --neutral-100: 0 0% 96%;
47
+ --neutral-200: 0 0% 90%;
48
+ --neutral-300: 0 0% 83%;
49
+ --neutral-400: 0 0% 64%;
50
+ --neutral-500: 0 0% 45%;
51
+ --neutral-600: 0 0% 32%;
52
+ --neutral-700: 0 0% 25%;
53
+ --neutral-800: 0 0% 15%;
54
+ --neutral-900: 0 0% 9%;
55
+ --neutral-950: 0 0% 4%;
56
+
57
+ /* Status colors */
58
+ --success: 142 71% 45%;
59
+ --success-foreground: 0 0% 100%;
60
+ --warning: 38 92% 50%;
61
+ --warning-foreground: 0 0% 100%;
62
+ --error: 0 84% 60%;
63
+ --error-foreground: 0 0% 100%;
64
+ --info: 217 91% 60%;
65
+ --info-foreground: 0 0% 100%;
66
+
67
+ /* Help system */
68
+ --help-icon-color: var(--primary-400);
69
+ --help-icon-hover-color: var(--primary-600);
70
+ --help-panel-width: 400px;
71
+ --help-panel-bg: var(--surface);
72
+
73
+ /* Shadows */
74
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
75
+ --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
76
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
77
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
78
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
79
+
80
+ /* Radius */
81
+ --radius: 0.5rem;
82
+ --radius-sm: 0.25rem;
83
+ --radius-md: 0.5rem;
84
+ --radius-lg: 0.75rem;
85
+ --radius-xl: 1rem;
86
+ --radius-full: 9999px;
87
+
88
+ /* Transitions */
89
+ --transition-fast: 150ms;
90
+ --transition-normal: 200ms;
91
+ --transition-slow: 300ms;
92
+
93
+ /* ============================================
94
+ Layout Variables (Normal - Default)
95
+ ============================================ */
96
+
97
+ /* Sidebar */
98
+ --sidebar-width: 220px;
99
+ --sidebar-collapsed-width: 56px;
100
+ --sidebar-padding: 0.75rem;
101
+ --sidebar-item-padding-x: 0.75rem;
102
+ --sidebar-item-padding-y: 0.5rem;
103
+ --sidebar-item-gap: 0.375rem;
104
+ --sidebar-icon-size: 1.125rem;
105
+ --sidebar-font-size: 0.875rem;
106
+
107
+ /* Topbar */
108
+ --topbar-height: 48px;
109
+ --topbar-padding-x: 1rem;
110
+ --topbar-padding-y: 0.5rem;
111
+ --topbar-gap: 0.75rem;
112
+ --topbar-icon-size: 1.125rem;
113
+ --topbar-font-size: 0.875rem;
114
+
115
+ /* Page header */
116
+ --page-header-height: 56px;
117
+ --page-header-padding: 1rem;
118
+ --page-title-size: 1.25rem;
119
+
120
+ /* Menu / Dropdown */
121
+ --menu-padding: 0.25rem;
122
+ --menu-item-padding-x: 0.75rem;
123
+ --menu-item-padding-y: 0.5rem;
124
+ --menu-item-gap: 0.5rem;
125
+ --menu-icon-size: 1rem;
126
+ --menu-font-size: 0.875rem;
127
+
128
+ /* Notification / Toast */
129
+ --toast-padding: 0.875rem;
130
+ --toast-gap: 0.75rem;
131
+ --toast-icon-size: 1.125rem;
132
+ --toast-font-size: 0.875rem;
133
+ --toast-title-size: 0.875rem;
134
+
135
+ /* Card */
136
+ --card-padding-sm: 0.75rem;
137
+ --card-padding-md: 1rem;
138
+ --card-padding-lg: 1.25rem;
139
+ --card-gap: 0.75rem;
140
+ --card-header-gap: 0.375rem;
141
+
142
+ /* Modal */
143
+ --modal-padding: 1.25rem;
144
+ --modal-gap: 1rem;
145
+ --modal-header-gap: 0.5rem;
146
+
147
+ /* Table */
148
+ --table-cell-padding-x: 0.75rem;
149
+ --table-cell-padding-y: 0.625rem;
150
+ --table-header-padding-y: 0.5rem;
151
+ --table-font-size: 0.875rem;
152
+
153
+ /* ============================================
154
+ Form Element Variables (Normal - Default)
155
+ Use: default, or data-spacing="normal"
156
+ ============================================ */
157
+
158
+ /* Typography */
159
+ --el-font-size-sm: 0.8125rem; /* 13px */
160
+ --el-font-size-md: 0.875rem; /* 14px */
161
+ --el-font-size-lg: 1rem; /* 16px */
162
+ --el-line-height: 1.5;
163
+ --el-font-weight-normal: 400;
164
+ --el-font-weight-medium: 500;
165
+ --el-font-weight-semibold: 600;
166
+
167
+ /* Spacing (internal padding for inputs) */
168
+ --el-spacing-px-sm: 0.5rem; /* 8px */
169
+ --el-spacing-px-md: 0.625rem; /* 10px */
170
+ --el-spacing-px-lg: 0.75rem; /* 12px */
171
+ --el-spacing-py-sm: 0.375rem; /* 6px */
172
+ --el-spacing-py-md: 0.5rem; /* 8px */
173
+ --el-spacing-py-lg: 0.625rem; /* 10px */
174
+
175
+ /* Input heights (includes padding + font) */
176
+ --el-input-height-sm: 1.75rem; /* 28px */
177
+ --el-input-height-md: 2rem; /* 32px */
178
+ --el-input-height-lg: 2.5rem; /* 40px */
179
+
180
+ /* Min heights for textareas */
181
+ --el-textarea-min-height-sm: 4rem; /* 64px */
182
+ --el-textarea-min-height-md: 5.5rem; /* 88px */
183
+ --el-textarea-min-height-lg: 7rem; /* 112px */
184
+
185
+ /* Checkbox/Radio sizes */
186
+ --el-checkbox-size-sm: 0.875rem; /* 14px */
187
+ --el-checkbox-size-md: 1rem; /* 16px */
188
+ --el-checkbox-size-lg: 1.25rem; /* 20px */
189
+
190
+ /* Gap between elements */
191
+ --el-gap-sm: 0.375rem; /* 6px */
192
+ --el-gap-md: 0.5rem; /* 8px */
193
+ --el-gap-lg: 0.75rem; /* 12px */
194
+
195
+ /* Message area height */
196
+ --el-message-min-height: 1.125rem; /* 18px */
197
+ --el-message-font-size: 0.75rem; /* 12px */
198
+
199
+ /* Button padding */
200
+ --el-btn-px-sm: 0.625rem; /* 10px */
201
+ --el-btn-px-md: 0.875rem; /* 14px */
202
+ --el-btn-px-lg: 1.25rem; /* 20px */
203
+ --el-btn-py-sm: 0.25rem; /* 4px */
204
+ --el-btn-py-md: 0.375rem; /* 6px */
205
+ --el-btn-py-lg: 0.5rem; /* 8px */
206
+
207
+ /* Toggle sizes */
208
+ --el-toggle-sm-width: 32px;
209
+ --el-toggle-sm-height: 18px;
210
+ --el-toggle-sm-knob: 12px;
211
+ --el-toggle-md-width: 38px;
212
+ --el-toggle-md-height: 20px;
213
+ --el-toggle-md-knob: 14px;
214
+ --el-toggle-lg-width: 44px;
215
+ --el-toggle-lg-height: 24px;
216
+ --el-toggle-lg-knob: 18px;
217
+
218
+ /* ============================================
219
+ Additional UI Component Variables (Normal)
220
+ ============================================ */
221
+
222
+ /* Dropdown/Popover */
223
+ --el-dropdown-padding: 0.5rem;
224
+ --el-dropdown-item-px: 0.75rem;
225
+ --el-dropdown-item-py: 0.5rem;
226
+ --el-dropdown-width-sm: 12rem; /* 192px */
227
+ --el-dropdown-width-md: 16rem; /* 256px */
228
+ --el-dropdown-width-lg: 18rem; /* 288px */
229
+ --el-dropdown-max-height: 18rem; /* 288px */
230
+
231
+ /* Badge */
232
+ --el-badge-px-sm: 0.375rem;
233
+ --el-badge-py-sm: 0.125rem;
234
+ --el-badge-px-md: 0.5rem;
235
+ --el-badge-py-md: 0.125rem;
236
+ --el-badge-px-lg: 0.625rem;
237
+ --el-badge-py-lg: 0.25rem;
238
+ --el-badge-font-size-sm: 0.6875rem;
239
+ --el-badge-font-size-md: 0.75rem;
240
+ --el-badge-font-size-lg: 0.8125rem;
241
+ --el-badge-icon-size: 0.75rem;
242
+
243
+ /* Tabs */
244
+ --el-tabs-padding: 0.25rem;
245
+ --el-tabs-gap: 0.25rem;
246
+ --el-tab-px: 0.75rem;
247
+ --el-tab-py: 0.375rem;
248
+ --el-tab-content-mt: 1rem;
249
+
250
+ /* Avatar */
251
+ --el-avatar-size-xs: 1.5rem;
252
+ --el-avatar-size-sm: 2rem;
253
+ --el-avatar-size-md: 2.5rem;
254
+ --el-avatar-size-lg: 3rem;
255
+ --el-avatar-size-xl: 4rem;
256
+
257
+ /* Stepper */
258
+ --el-stepper-circle-sm: 1.5rem;
259
+ --el-stepper-circle-md: 2rem;
260
+ --el-stepper-circle-lg: 2.5rem;
261
+ --el-stepper-gap: 0.5rem;
262
+
263
+ /* Filter bar */
264
+ --el-filter-pill-px: 0.75rem;
265
+ --el-filter-pill-py: 0.375rem;
266
+ --el-filter-gap: 0.5rem;
267
+
268
+ /* Icon sizes */
269
+ --el-icon-size-xs: 0.75rem;
270
+ --el-icon-size-sm: 1rem;
271
+ --el-icon-size-md: 1.25rem;
272
+ --el-icon-size-lg: 1.5rem;
273
+
274
+ /* Tooltip */
275
+ --el-tooltip-px: 0.75rem;
276
+ --el-tooltip-py: 0.375rem;
277
+
278
+ /* Progress */
279
+ --el-progress-height-sm: 0.25rem;
280
+ --el-progress-height-md: 0.5rem;
281
+ --el-progress-height-lg: 0.75rem;
282
+
283
+ /* Slider */
284
+ --el-slider-track-height-sm: 0.25rem;
285
+ --el-slider-track-height-md: 0.5rem;
286
+ --el-slider-track-height-lg: 0.75rem;
287
+ --el-slider-thumb-size-sm: 0.75rem;
288
+ --el-slider-thumb-size-md: 1rem;
289
+ --el-slider-thumb-size-lg: 1.25rem;
290
+
291
+ /* Rating */
292
+ --el-rating-size-sm: 1rem;
293
+ --el-rating-size-md: 1.25rem;
294
+ --el-rating-size-lg: 1.5rem;
295
+ --el-rating-gap-sm: 0.125rem;
296
+ --el-rating-gap-md: 0.25rem;
297
+ --el-rating-gap-lg: 0.375rem;
298
+
299
+ /* File Upload */
300
+ --el-upload-padding: 1.5rem;
301
+ --el-upload-gap: 0.5rem;
302
+
303
+ /* ============================================
304
+ Layout Gap Variables (Normal - Default)
305
+ For flex/grid gaps across layouts
306
+ ============================================ */
307
+ --el-layout-gap-xs: 0.5rem; /* 8px */
308
+ --el-layout-gap-sm: 1rem; /* 16px */
309
+ --el-layout-gap-md: 1.5rem; /* 24px */
310
+ --el-layout-gap-lg: 2rem; /* 32px */
311
+ --el-layout-gap-xl: 3rem; /* 48px */
312
+ --el-layout-gap-2xl: 4rem; /* 64px */
313
+
314
+ /* Section/Content spacing */
315
+ --el-section-gap: 1.5rem; /* Between major sections */
316
+ --el-content-gap: 1rem; /* Between content blocks */
317
+ --el-inline-gap: 0.5rem; /* Between inline elements */
318
+ --el-field-grid-gap: calc(var(--el-spacing-px-md) * 1.5); /* 1.5x padding */
319
+
320
+ /* Control gaps - for button groups, form field rows, inline controls */
321
+ --el-control-gap-xs: 0.25rem; /* 4px */
322
+ --el-control-gap-sm: 0.5rem; /* 8px */
323
+ --el-control-gap-md: 0.75rem; /* 12px */
324
+ --el-control-gap-lg: 1rem; /* 16px */
325
+ --el-control-gap-xl: 1.5rem; /* 24px */
326
+ }
327
+
328
+ /* ============================================
329
+ Compact Mode (Shopify-style)
330
+ Use: <html data-spacing="compact">
331
+ ============================================ */
332
+ [data-spacing="compact"] {
333
+ /* Layout - Compact */
334
+ --sidebar-width: 200px;
335
+ --sidebar-collapsed-width: 48px;
336
+ --sidebar-padding: 0.5rem;
337
+ --sidebar-item-padding-x: 0.5rem;
338
+ --sidebar-item-padding-y: 0.375rem;
339
+ --sidebar-item-gap: 0.25rem;
340
+ --sidebar-icon-size: 1rem;
341
+ --sidebar-font-size: 0.8125rem;
342
+
343
+ --topbar-height: 40px;
344
+ --topbar-padding-x: 0.75rem;
345
+ --topbar-padding-y: 0.375rem;
346
+ --topbar-gap: 0.5rem;
347
+ --topbar-icon-size: 1rem;
348
+ --topbar-font-size: 0.8125rem;
349
+
350
+ --page-header-height: 44px;
351
+ --page-header-padding: 0.75rem;
352
+ --page-title-size: 1.125rem;
353
+
354
+ --menu-padding: 0.125rem;
355
+ --menu-item-padding-x: 0.5rem;
356
+ --menu-item-padding-y: 0.375rem;
357
+ --menu-item-gap: 0.375rem;
358
+ --menu-icon-size: 0.875rem;
359
+ --menu-font-size: 0.8125rem;
360
+
361
+ --toast-padding: 0.625rem;
362
+ --toast-gap: 0.5rem;
363
+ --toast-icon-size: 1rem;
364
+ --toast-font-size: 0.8125rem;
365
+ --toast-title-size: 0.8125rem;
366
+
367
+ --card-padding-sm: 0.5rem;
368
+ --card-padding-md: 0.75rem;
369
+ --card-padding-lg: 1rem;
370
+ --card-gap: 0.5rem;
371
+ --card-header-gap: 0.25rem;
372
+
373
+ --modal-padding: 0.875rem;
374
+ --modal-gap: 0.75rem;
375
+ --modal-header-gap: 0.375rem;
376
+
377
+ --table-cell-padding-x: 0.5rem;
378
+ --table-cell-padding-y: 0.375rem;
379
+ --table-header-padding-y: 0.375rem;
380
+ --table-font-size: 0.8125rem;
381
+
382
+ /* Typography - Compact */
383
+ --el-font-size-sm: 0.6875rem; /* 11px */
384
+ --el-font-size-md: 0.75rem; /* 12px */
385
+ --el-font-size-lg: 0.8125rem; /* 13px */
386
+ --el-line-height: 1.4;
387
+
388
+ /* Spacing - Compact */
389
+ --el-spacing-px-sm: 0.375rem; /* 6px */
390
+ --el-spacing-px-md: 0.5rem; /* 8px */
391
+ --el-spacing-px-lg: 0.625rem; /* 10px */
392
+ --el-spacing-py-sm: 0.1875rem; /* 3px */
393
+ --el-spacing-py-md: 0.25rem; /* 4px */
394
+ --el-spacing-py-lg: 0.375rem; /* 6px */
395
+
396
+ /* Input heights - Compact */
397
+ --el-input-height-sm: 1.375rem; /* 22px */
398
+ --el-input-height-md: 1.625rem; /* 26px */
399
+ --el-input-height-lg: 2rem; /* 32px */
400
+
401
+ /* Textareas - Compact */
402
+ --el-textarea-min-height-sm: 3rem; /* 48px */
403
+ --el-textarea-min-height-md: 4rem; /* 64px */
404
+ --el-textarea-min-height-lg: 5rem; /* 80px */
405
+
406
+ /* Checkbox/Radio - Compact */
407
+ --el-checkbox-size-sm: 0.75rem; /* 12px */
408
+ --el-checkbox-size-md: 0.875rem; /* 14px */
409
+ --el-checkbox-size-lg: 1rem; /* 16px */
410
+
411
+ /* Gaps - Compact */
412
+ --el-gap-sm: 0.25rem; /* 4px */
413
+ --el-gap-md: 0.375rem; /* 6px */
414
+ --el-gap-lg: 0.5rem; /* 8px */
415
+
416
+ /* Message - Compact */
417
+ --el-message-min-height: 0.875rem; /* 14px */
418
+ --el-message-font-size: 0.6875rem; /* 11px */
419
+
420
+ /* Button - Compact */
421
+ --el-btn-px-sm: 0.5rem; /* 8px */
422
+ --el-btn-px-md: 0.625rem; /* 10px */
423
+ --el-btn-px-lg: 0.875rem; /* 14px */
424
+ --el-btn-py-sm: 0.125rem; /* 2px */
425
+ --el-btn-py-md: 0.1875rem; /* 3px */
426
+ --el-btn-py-lg: 0.25rem; /* 4px */
427
+
428
+ /* Toggle - Compact */
429
+ --el-toggle-sm-width: 24px;
430
+ --el-toggle-sm-height: 14px;
431
+ --el-toggle-sm-knob: 10px;
432
+ --el-toggle-md-width: 28px;
433
+ --el-toggle-md-height: 16px;
434
+ --el-toggle-md-knob: 12px;
435
+ --el-toggle-lg-width: 34px;
436
+ --el-toggle-lg-height: 18px;
437
+ --el-toggle-lg-knob: 14px;
438
+
439
+ /* Dropdown/Popover - Compact */
440
+ --el-dropdown-padding: 0.25rem;
441
+ --el-dropdown-item-px: 0.5rem;
442
+ --el-dropdown-item-py: 0.25rem;
443
+ --el-dropdown-width-sm: 10rem;
444
+ --el-dropdown-width-md: 14rem;
445
+ --el-dropdown-width-lg: 16rem;
446
+ --el-dropdown-max-height: 14rem;
447
+
448
+ /* Badge - Compact */
449
+ --el-badge-px-sm: 0.25rem;
450
+ --el-badge-py-sm: 0.0625rem;
451
+ --el-badge-px-md: 0.375rem;
452
+ --el-badge-py-md: 0.0625rem;
453
+ --el-badge-px-lg: 0.5rem;
454
+ --el-badge-py-lg: 0.125rem;
455
+ --el-badge-font-size-sm: 0.5625rem;
456
+ --el-badge-font-size-md: 0.625rem;
457
+ --el-badge-font-size-lg: 0.6875rem;
458
+ --el-badge-icon-size: 0.625rem;
459
+
460
+ /* Tabs - Compact */
461
+ --el-tabs-padding: 0.125rem;
462
+ --el-tabs-gap: 0.125rem;
463
+ --el-tab-px: 0.5rem;
464
+ --el-tab-py: 0.25rem;
465
+ --el-tab-content-mt: 0.75rem;
466
+
467
+ /* Avatar - Compact */
468
+ --el-avatar-size-xs: 1.25rem;
469
+ --el-avatar-size-sm: 1.5rem;
470
+ --el-avatar-size-md: 2rem;
471
+ --el-avatar-size-lg: 2.5rem;
472
+ --el-avatar-size-xl: 3rem;
473
+
474
+ /* Stepper - Compact */
475
+ --el-stepper-circle-sm: 1.25rem;
476
+ --el-stepper-circle-md: 1.5rem;
477
+ --el-stepper-circle-lg: 2rem;
478
+ --el-stepper-gap: 0.375rem;
479
+
480
+ /* Filter bar - Compact */
481
+ --el-filter-pill-px: 0.5rem;
482
+ --el-filter-pill-py: 0.25rem;
483
+ --el-filter-gap: 0.375rem;
484
+
485
+ /* Icon sizes - Compact */
486
+ --el-icon-size-xs: 0.625rem;
487
+ --el-icon-size-sm: 0.75rem;
488
+ --el-icon-size-md: 1rem;
489
+ --el-icon-size-lg: 1.25rem;
490
+
491
+ /* Tooltip - Compact */
492
+ --el-tooltip-px: 0.5rem;
493
+ --el-tooltip-py: 0.25rem;
494
+
495
+ /* Progress - Compact */
496
+ --el-progress-height-sm: 0.125rem;
497
+ --el-progress-height-md: 0.25rem;
498
+ --el-progress-height-lg: 0.5rem;
499
+
500
+ /* Slider - Compact */
501
+ --el-slider-track-height-sm: 0.125rem;
502
+ --el-slider-track-height-md: 0.25rem;
503
+ --el-slider-track-height-lg: 0.5rem;
504
+ --el-slider-thumb-size-sm: 0.625rem;
505
+ --el-slider-thumb-size-md: 0.75rem;
506
+ --el-slider-thumb-size-lg: 1rem;
507
+
508
+ /* Rating - Compact */
509
+ --el-rating-size-sm: 0.75rem;
510
+ --el-rating-size-md: 1rem;
511
+ --el-rating-size-lg: 1.25rem;
512
+ --el-rating-gap-sm: 0.0625rem;
513
+ --el-rating-gap-md: 0.125rem;
514
+ --el-rating-gap-lg: 0.25rem;
515
+
516
+ /* File Upload - Compact */
517
+ --el-upload-padding: 1rem;
518
+ --el-upload-gap: 0.375rem;
519
+
520
+ /* Layout Gaps - Compact */
521
+ --el-layout-gap-xs: 0.25rem; /* 4px */
522
+ --el-layout-gap-sm: 0.5rem; /* 8px */
523
+ --el-layout-gap-md: 1rem; /* 16px */
524
+ --el-layout-gap-lg: 1.5rem; /* 24px */
525
+ --el-layout-gap-xl: 2rem; /* 32px */
526
+ --el-layout-gap-2xl: 3rem; /* 48px */
527
+
528
+ /* Section/Content spacing - Compact */
529
+ --el-section-gap: 1rem;
530
+ --el-content-gap: 0.75rem;
531
+ --el-inline-gap: 0.375rem;
532
+ --el-field-grid-gap: calc(var(--el-spacing-px-md) * 1.5); /* 1.5x padding */
533
+
534
+ /* Control gaps - Compact */
535
+ --el-control-gap-xs: 0.125rem; /* 2px */
536
+ --el-control-gap-sm: 0.25rem; /* 4px */
537
+ --el-control-gap-md: 0.5rem; /* 8px */
538
+ --el-control-gap-lg: 0.75rem; /* 12px */
539
+ --el-control-gap-xl: 1rem; /* 16px */
540
+ }
541
+
542
+ /* ============================================
543
+ Spacious Mode (More breathing room)
544
+ Use: <html data-spacing="spacious">
545
+ ============================================ */
546
+ [data-spacing="spacious"] {
547
+ /* Layout - Spacious */
548
+ --sidebar-width: 260px;
549
+ --sidebar-collapsed-width: 64px;
550
+ --sidebar-padding: 1rem;
551
+ --sidebar-item-padding-x: 1rem;
552
+ --sidebar-item-padding-y: 0.75rem;
553
+ --sidebar-item-gap: 0.5rem;
554
+ --sidebar-icon-size: 1.25rem;
555
+ --sidebar-font-size: 1rem;
556
+
557
+ --topbar-height: 56px;
558
+ --topbar-padding-x: 1.25rem;
559
+ --topbar-padding-y: 0.75rem;
560
+ --topbar-gap: 1rem;
561
+ --topbar-icon-size: 1.25rem;
562
+ --topbar-font-size: 1rem;
563
+
564
+ --page-header-height: 72px;
565
+ --page-header-padding: 1.5rem;
566
+ --page-title-size: 1.5rem;
567
+
568
+ --menu-padding: 0.375rem;
569
+ --menu-item-padding-x: 1rem;
570
+ --menu-item-padding-y: 0.75rem;
571
+ --menu-item-gap: 0.75rem;
572
+ --menu-icon-size: 1.125rem;
573
+ --menu-font-size: 1rem;
574
+
575
+ --toast-padding: 1.25rem;
576
+ --toast-gap: 1rem;
577
+ --toast-icon-size: 1.25rem;
578
+ --toast-font-size: 1rem;
579
+ --toast-title-size: 1rem;
580
+
581
+ --card-padding-sm: 1rem;
582
+ --card-padding-md: 1.5rem;
583
+ --card-padding-lg: 2rem;
584
+ --card-gap: 1rem;
585
+ --card-header-gap: 0.5rem;
586
+
587
+ --modal-padding: 1.75rem;
588
+ --modal-gap: 1.25rem;
589
+ --modal-header-gap: 0.75rem;
590
+
591
+ --table-cell-padding-x: 1rem;
592
+ --table-cell-padding-y: 0.875rem;
593
+ --table-header-padding-y: 0.75rem;
594
+ --table-font-size: 1.125rem; /* 18px */
595
+
596
+ /* Typography - Spacious */
597
+ --el-font-size-sm: 0.9375rem; /* 15px */
598
+ --el-font-size-md: 1.125rem; /* 18px */
599
+ --el-font-size-lg: 1.3125rem; /* 21px */
600
+ --el-line-height: 1.6;
601
+
602
+ /* Spacing - Spacious */
603
+ --el-spacing-px-sm: 0.75rem; /* 12px */
604
+ --el-spacing-px-md: 1rem; /* 16px */
605
+ --el-spacing-px-lg: 1.25rem; /* 20px */
606
+ --el-spacing-py-sm: 0.5rem; /* 8px */
607
+ --el-spacing-py-md: 0.75rem; /* 12px */
608
+ --el-spacing-py-lg: 1rem; /* 16px */
609
+
610
+ /* Input heights - Spacious */
611
+ --el-input-height-sm: 2.25rem; /* 36px */
612
+ --el-input-height-md: 2.75rem; /* 44px */
613
+ --el-input-height-lg: 3.25rem; /* 52px */
614
+
615
+ /* Textareas - Spacious */
616
+ --el-textarea-min-height-sm: 5rem; /* 80px */
617
+ --el-textarea-min-height-md: 7rem; /* 112px */
618
+ --el-textarea-min-height-lg: 9rem; /* 144px */
619
+
620
+ /* Checkbox/Radio - Spacious */
621
+ --el-checkbox-size-sm: 1rem; /* 16px */
622
+ --el-checkbox-size-md: 1.25rem; /* 20px */
623
+ --el-checkbox-size-lg: 1.5rem; /* 24px */
624
+
625
+ /* Gaps - Spacious */
626
+ --el-gap-sm: 0.5rem; /* 8px */
627
+ --el-gap-md: 0.75rem; /* 12px */
628
+ --el-gap-lg: 1rem; /* 16px */
629
+
630
+ /* Message - Spacious */
631
+ --el-message-min-height: 1.25rem; /* 20px */
632
+ --el-message-font-size: 0.875rem; /* 14px */
633
+
634
+ /* Button - Spacious */
635
+ --el-btn-px-sm: 1rem; /* 16px */
636
+ --el-btn-px-md: 1.25rem; /* 20px */
637
+ --el-btn-px-lg: 1.5rem; /* 24px */
638
+ --el-btn-py-sm: 0.5rem; /* 8px */
639
+ --el-btn-py-md: 0.625rem; /* 10px */
640
+ --el-btn-py-lg: 0.75rem; /* 12px */
641
+
642
+ /* Toggle - Spacious */
643
+ --el-toggle-sm-width: 40px;
644
+ --el-toggle-sm-height: 22px;
645
+ --el-toggle-sm-knob: 16px;
646
+ --el-toggle-md-width: 48px;
647
+ --el-toggle-md-height: 26px;
648
+ --el-toggle-md-knob: 20px;
649
+ --el-toggle-lg-width: 56px;
650
+ --el-toggle-lg-height: 30px;
651
+ --el-toggle-lg-knob: 24px;
652
+
653
+ /* Dropdown/Popover - Spacious */
654
+ --el-dropdown-padding: 0.75rem;
655
+ --el-dropdown-item-px: 1rem;
656
+ --el-dropdown-item-py: 0.75rem;
657
+ --el-dropdown-width-sm: 14rem;
658
+ --el-dropdown-width-md: 18rem;
659
+ --el-dropdown-width-lg: 22rem;
660
+ --el-dropdown-max-height: 22rem;
661
+
662
+ /* Badge - Spacious */
663
+ --el-badge-px-sm: 0.5rem;
664
+ --el-badge-py-sm: 0.1875rem;
665
+ --el-badge-px-md: 0.625rem;
666
+ --el-badge-py-md: 0.25rem;
667
+ --el-badge-px-lg: 0.75rem;
668
+ --el-badge-py-lg: 0.375rem;
669
+ --el-badge-font-size-sm: 0.75rem;
670
+ --el-badge-font-size-md: 0.8125rem;
671
+ --el-badge-font-size-lg: 0.875rem;
672
+ --el-badge-icon-size: 0.875rem;
673
+
674
+ /* Tabs - Spacious */
675
+ --el-tabs-padding: 0.375rem;
676
+ --el-tabs-gap: 0.375rem;
677
+ --el-tab-px: 1rem;
678
+ --el-tab-py: 0.625rem;
679
+ --el-tab-content-mt: 1.5rem;
680
+
681
+ /* Avatar - Spacious */
682
+ --el-avatar-size-xs: 2rem;
683
+ --el-avatar-size-sm: 2.5rem;
684
+ --el-avatar-size-md: 3rem;
685
+ --el-avatar-size-lg: 4rem;
686
+ --el-avatar-size-xl: 5rem;
687
+
688
+ /* Stepper - Spacious */
689
+ --el-stepper-circle-sm: 2rem;
690
+ --el-stepper-circle-md: 2.5rem;
691
+ --el-stepper-circle-lg: 3rem;
692
+ --el-stepper-gap: 0.75rem;
693
+
694
+ /* Filter bar - Spacious */
695
+ --el-filter-pill-px: 1rem;
696
+ --el-filter-pill-py: 0.5rem;
697
+ --el-filter-gap: 0.75rem;
698
+
699
+ /* Icon sizes - Spacious */
700
+ --el-icon-size-xs: 1rem;
701
+ --el-icon-size-sm: 1.25rem;
702
+ --el-icon-size-md: 1.5rem;
703
+ --el-icon-size-lg: 2rem;
704
+
705
+ /* Tooltip - Spacious */
706
+ --el-tooltip-px: 1rem;
707
+ --el-tooltip-py: 0.5rem;
708
+
709
+ /* Progress - Spacious */
710
+ --el-progress-height-sm: 0.375rem;
711
+ --el-progress-height-md: 0.75rem;
712
+ --el-progress-height-lg: 1rem;
713
+
714
+ /* Slider - Spacious */
715
+ --el-slider-track-height-sm: 0.375rem;
716
+ --el-slider-track-height-md: 0.75rem;
717
+ --el-slider-track-height-lg: 1rem;
718
+ --el-slider-thumb-size-sm: 1rem;
719
+ --el-slider-thumb-size-md: 1.25rem;
720
+ --el-slider-thumb-size-lg: 1.5rem;
721
+
722
+ /* Rating - Spacious */
723
+ --el-rating-size-sm: 1.25rem;
724
+ --el-rating-size-md: 1.5rem;
725
+ --el-rating-size-lg: 2rem;
726
+ --el-rating-gap-sm: 0.25rem;
727
+ --el-rating-gap-md: 0.375rem;
728
+ --el-rating-gap-lg: 0.5rem;
729
+
730
+ /* File Upload - Spacious */
731
+ --el-upload-padding: 2rem;
732
+ --el-upload-gap: 0.75rem;
733
+
734
+ /* Layout Gaps - Spacious */
735
+ --el-layout-gap-xs: 0.75rem; /* 12px */
736
+ --el-layout-gap-sm: 1.5rem; /* 24px */
737
+ --el-layout-gap-md: 2rem; /* 32px */
738
+ --el-layout-gap-lg: 3rem; /* 48px */
739
+ --el-layout-gap-xl: 4rem; /* 64px */
740
+ --el-layout-gap-2xl: 5rem; /* 80px */
741
+
742
+ /* Section/Content spacing - Spacious */
743
+ --el-section-gap: 2rem;
744
+ --el-content-gap: 1.5rem;
745
+ --el-inline-gap: 0.75rem;
746
+ --el-field-grid-gap: calc(var(--el-spacing-px-md) * 1.5); /* 1.5x padding */
747
+
748
+ /* Control gaps - Spacious */
749
+ --el-control-gap-xs: 0.5rem; /* 8px */
750
+ --el-control-gap-sm: 0.75rem; /* 12px */
751
+ --el-control-gap-md: 1rem; /* 16px */
752
+ --el-control-gap-lg: 1.5rem; /* 24px */
753
+ --el-control-gap-xl: 2rem; /* 32px */
754
+ }
755
+
756
+ /* Dark mode - Neutral text colors (no theme tint) */
757
+ .dark {
758
+ --background: 0 0% 7%;
759
+ --foreground: 0 0% 95%;
760
+ --card: 0 0% 12%;
761
+ --card-foreground: 0 0% 95%;
762
+ --popover: 0 0% 12%;
763
+ --popover-foreground: 0 0% 95%;
764
+ --primary: 218 34% 60%;
765
+ --primary-foreground: 0 0% 100%;
766
+ --secondary: 0 0% 15%;
767
+ --secondary-foreground: 0 0% 85%;
768
+ --muted: 0 0% 15%;
769
+ --muted-foreground: 0 0% 60%;
770
+ --accent: 0 0% 15%;
771
+ --accent-foreground: 0 0% 85%;
772
+ --destructive: 0 62% 50%;
773
+ --destructive-foreground: 0 0% 100%;
774
+ --border: 0 0% 20%;
775
+ --input: 0 0% 20%;
776
+ --ring: 218 34% 60%;
777
+
778
+ --surface: 0 0% 7%;
779
+ --surface-elevated: 0 0% 12%;
780
+ --surface-sunken: 0 0% 5%;
781
+
782
+ /* Neutral Gray Scale for dark mode */
783
+ --neutral-50: 0 0% 15%;
784
+ --neutral-100: 0 0% 18%;
785
+ --neutral-200: 0 0% 22%;
786
+ --neutral-300: 0 0% 30%;
787
+ --neutral-400: 0 0% 45%;
788
+ --neutral-500: 0 0% 55%;
789
+ --neutral-600: 0 0% 70%;
790
+ --neutral-700: 0 0% 80%;
791
+ --neutral-800: 0 0% 90%;
792
+ --neutral-900: 0 0% 95%;
793
+ --neutral-950: 0 0% 98%;
794
+
795
+ --help-panel-bg: var(--surface-elevated);
796
+ }