@orion-ds/core 1.0.0 → 1.0.4
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.
- package/dist/theme.css +427 -71
- package/package.json +1 -1
package/dist/theme.css
CHANGED
|
@@ -221,9 +221,13 @@
|
|
|
221
221
|
--size-calendar-time-col: 80px;
|
|
222
222
|
|
|
223
223
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
224
|
-
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.
|
|
225
|
-
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.
|
|
226
|
-
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.
|
|
224
|
+
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08);
|
|
225
|
+
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08);
|
|
226
|
+
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.06), 0 8px 10px -6px rgba(0, 0, 0, 0.06);
|
|
227
|
+
|
|
228
|
+
/* Minimal shadows for Product mode (ultra-flat) */
|
|
229
|
+
--shadow-flat: 0 1px 3px 0 rgba(0, 0, 0, 0.04);
|
|
230
|
+
--shadow-none: none;
|
|
227
231
|
|
|
228
232
|
/* ─── Transitions ─── */
|
|
229
233
|
--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -280,6 +284,30 @@
|
|
|
280
284
|
--status-error-bg: rgba(239, 68, 68, 0.1);
|
|
281
285
|
--status-success-bg: rgba(34, 197, 94, 0.1);
|
|
282
286
|
|
|
287
|
+
/* ─── Section Shadows (for card hover effects) ─── */
|
|
288
|
+
--shadow-card-hover: 0 12px 24px -8px rgba(0, 0, 0, 0.15);
|
|
289
|
+
--shadow-card-sm: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
290
|
+
--shadow-card-elevated: 0 8px 16px -4px rgba(0, 0, 0, 0.1);
|
|
291
|
+
|
|
292
|
+
/* ─── Overlay Colors (for dark overlays on images) ─── */
|
|
293
|
+
--overlay-dark: rgba(0, 0, 0, 0.5);
|
|
294
|
+
--overlay-dark-heavy: rgba(0, 0, 0, 0.7);
|
|
295
|
+
--overlay-dark-light: rgba(0, 0, 0, 0.3);
|
|
296
|
+
|
|
297
|
+
/* ─── Overlay Colors (for light overlays on dark backgrounds) ─── */
|
|
298
|
+
--overlay-light: rgba(255, 255, 255, 0.2);
|
|
299
|
+
--overlay-light-subtle: rgba(255, 255, 255, 0.1);
|
|
300
|
+
--overlay-light-strong: rgba(255, 255, 255, 0.3);
|
|
301
|
+
|
|
302
|
+
/* ─── Text on Dark Backgrounds ─── */
|
|
303
|
+
--text-on-dark: #ffffff;
|
|
304
|
+
--text-on-dark-primary: rgba(255, 255, 255, 0.9);
|
|
305
|
+
--text-on-dark-secondary: rgba(255, 255, 255, 0.7);
|
|
306
|
+
--text-on-dark-tertiary: rgba(255, 255, 255, 0.5);
|
|
307
|
+
|
|
308
|
+
/* ─── Text on Brand Backgrounds ─── */
|
|
309
|
+
--text-on-brand: #ffffff;
|
|
310
|
+
|
|
283
311
|
/* ─── Soft State Colors (10-20% opacity for backgrounds) ─── */
|
|
284
312
|
--color-brand-soft: color-mix(in srgb, var(--color-brand-500) 10%, transparent);
|
|
285
313
|
--color-brand-soft-hover: color-mix(in srgb, var(--color-brand-500) 20%, transparent);
|
|
@@ -349,6 +377,30 @@
|
|
|
349
377
|
--status-error-bg: rgba(239, 68, 68, 0.15);
|
|
350
378
|
--status-success-bg: rgba(34, 197, 94, 0.15);
|
|
351
379
|
|
|
380
|
+
/* ─── Section Shadows (for card hover effects) ─── */
|
|
381
|
+
--shadow-card-hover: 0 12px 24px -8px rgba(0, 0, 0, 0.3);
|
|
382
|
+
--shadow-card-sm: 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
383
|
+
--shadow-card-elevated: 0 8px 16px -4px rgba(0, 0, 0, 0.25);
|
|
384
|
+
|
|
385
|
+
/* ─── Overlay Colors (for dark overlays on images) ─── */
|
|
386
|
+
--overlay-dark: rgba(0, 0, 0, 0.6);
|
|
387
|
+
--overlay-dark-heavy: rgba(0, 0, 0, 0.8);
|
|
388
|
+
--overlay-dark-light: rgba(0, 0, 0, 0.4);
|
|
389
|
+
|
|
390
|
+
/* ─── Overlay Colors (for light overlays on dark backgrounds) ─── */
|
|
391
|
+
--overlay-light: rgba(255, 255, 255, 0.15);
|
|
392
|
+
--overlay-light-subtle: rgba(255, 255, 255, 0.08);
|
|
393
|
+
--overlay-light-strong: rgba(255, 255, 255, 0.25);
|
|
394
|
+
|
|
395
|
+
/* ─── Text on Dark Backgrounds ─── */
|
|
396
|
+
--text-on-dark: #ffffff;
|
|
397
|
+
--text-on-dark-primary: rgba(255, 255, 255, 0.95);
|
|
398
|
+
--text-on-dark-secondary: rgba(255, 255, 255, 0.8);
|
|
399
|
+
--text-on-dark-tertiary: rgba(255, 255, 255, 0.6);
|
|
400
|
+
|
|
401
|
+
/* ─── Text on Brand Backgrounds ─── */
|
|
402
|
+
--text-on-brand: #ffffff;
|
|
403
|
+
|
|
352
404
|
/* ─── Soft State Colors (10-20% opacity for backgrounds) ─── */
|
|
353
405
|
--color-brand-soft: color-mix(in srgb, var(--color-brand-500) 15%, transparent);
|
|
354
406
|
--color-brand-soft-hover: color-mix(in srgb, var(--color-brand-500) 25%, transparent);
|
|
@@ -688,6 +740,15 @@
|
|
|
688
740
|
--mode-effect-glass: blur(12px);
|
|
689
741
|
--mode-effect-shadow: var(--shadow-xl);
|
|
690
742
|
--mode-visual-style: "atmospheric";
|
|
743
|
+
|
|
744
|
+
/* Visual System (NEW): Shadows & Interactions */
|
|
745
|
+
--mode-shadow-default: var(--shadow-md);
|
|
746
|
+
--mode-shadow-hover: var(--shadow-lg);
|
|
747
|
+
--mode-shadow-active: var(--shadow-md);
|
|
748
|
+
--mode-hover-lift: -4px;
|
|
749
|
+
--mode-hover-duration: 250ms;
|
|
750
|
+
--mode-glass-enabled: 1;
|
|
751
|
+
--mode-blur-amount: var(--blur-lg);
|
|
691
752
|
}
|
|
692
753
|
|
|
693
754
|
/* ─── Product Mode: SaaS & Dashboards ─── */
|
|
@@ -713,6 +774,15 @@
|
|
|
713
774
|
--mode-effect-glass: none;
|
|
714
775
|
--mode-effect-shadow: var(--shadow-sm);
|
|
715
776
|
--mode-visual-style: "functional";
|
|
777
|
+
|
|
778
|
+
/* Visual System (NEW): Ultra-flat (Linear/Figma style) */
|
|
779
|
+
--mode-shadow-default: var(--shadow-flat);
|
|
780
|
+
--mode-shadow-hover: var(--shadow-sm);
|
|
781
|
+
--mode-shadow-active: none;
|
|
782
|
+
--mode-hover-lift: 0px; /* NO lift in Product mode */
|
|
783
|
+
--mode-hover-duration: 150ms;
|
|
784
|
+
--mode-glass-enabled: 0; /* NO glassmorphism */
|
|
785
|
+
--mode-blur-amount: 0px;
|
|
716
786
|
}
|
|
717
787
|
|
|
718
788
|
/* ─── App Mode: Touch-First Mobile Interfaces ─── */
|
|
@@ -745,6 +815,15 @@
|
|
|
745
815
|
--mode-safe-area-bottom: env(safe-area-inset-bottom, 0);
|
|
746
816
|
--mode-safe-area-left: env(safe-area-inset-left, 0);
|
|
747
817
|
--mode-safe-area-right: env(safe-area-inset-right, 0);
|
|
818
|
+
|
|
819
|
+
/* Visual System (NEW): Native elevation (Material 3) */
|
|
820
|
+
--mode-shadow-default: var(--shadow-md);
|
|
821
|
+
--mode-shadow-hover: var(--shadow-lg);
|
|
822
|
+
--mode-shadow-active: var(--shadow-sm);
|
|
823
|
+
--mode-hover-lift: -2px;
|
|
824
|
+
--mode-hover-duration: 200ms;
|
|
825
|
+
--mode-glass-enabled: 0; /* NO glassmorphism */
|
|
826
|
+
--mode-blur-amount: 0px;
|
|
748
827
|
}
|
|
749
828
|
|
|
750
829
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -927,12 +1006,14 @@ body {
|
|
|
927
1006
|
}
|
|
928
1007
|
|
|
929
1008
|
.btn:hover:not(:disabled) {
|
|
930
|
-
transform: translateY(-
|
|
931
|
-
box-shadow: var(--shadow-md);
|
|
1009
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
1010
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-md));
|
|
1011
|
+
transition-duration: var(--mode-hover-duration, 150ms);
|
|
932
1012
|
}
|
|
933
1013
|
|
|
934
1014
|
.btn:active:not(:disabled) {
|
|
935
|
-
transform: translateY(0);
|
|
1015
|
+
transform: scale(0.98) translateY(0);
|
|
1016
|
+
box-shadow: var(--mode-shadow-active, none);
|
|
936
1017
|
transition-duration: 100ms;
|
|
937
1018
|
}
|
|
938
1019
|
|
|
@@ -1015,6 +1096,69 @@ body {
|
|
|
1015
1096
|
margin-left: calc(var(--spacing-1) * -1);
|
|
1016
1097
|
}
|
|
1017
1098
|
|
|
1099
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1100
|
+
MODE-AWARE BUTTON SIZING
|
|
1101
|
+
Proportional scaling: Each mode has its own size hierarchy (sm/md/lg)
|
|
1102
|
+
respecting the tri-modal philosophy (Display=spatial, Product=compact, App=tactile)
|
|
1103
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
1104
|
+
|
|
1105
|
+
/* ─── Display Mode: Atmospheric (spacious) ─── */
|
|
1106
|
+
[data-mode="display"] .btn-sm {
|
|
1107
|
+
font-size: var(--font-size-14);
|
|
1108
|
+
padding: var(--spacing-3) var(--spacing-6);
|
|
1109
|
+
min-height: 40px;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
[data-mode="display"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1113
|
+
font-size: var(--font-size-18);
|
|
1114
|
+
padding: var(--spacing-4) var(--spacing-8);
|
|
1115
|
+
min-height: 56px;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
[data-mode="display"] .btn-lg {
|
|
1119
|
+
font-size: var(--font-size-20);
|
|
1120
|
+
padding: var(--spacing-5) var(--spacing-10);
|
|
1121
|
+
min-height: 64px;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
/* ─── Product Mode: Geometric Precision (compact) ─── */
|
|
1125
|
+
[data-mode="product"] .btn-sm {
|
|
1126
|
+
font-size: var(--font-size-12);
|
|
1127
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
1128
|
+
min-height: 28px;
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
[data-mode="product"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1132
|
+
font-size: var(--font-size-14);
|
|
1133
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
1134
|
+
min-height: 32px;
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
[data-mode="product"] .btn-lg {
|
|
1138
|
+
font-size: var(--font-size-16);
|
|
1139
|
+
padding: var(--spacing-2) var(--spacing-5);
|
|
1140
|
+
min-height: 36px;
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
/* ─── App Mode: Tactile (touch-friendly) ─── */
|
|
1144
|
+
[data-mode="app"] .btn-sm {
|
|
1145
|
+
font-size: var(--font-size-14);
|
|
1146
|
+
padding: var(--spacing-2) var(--spacing-5);
|
|
1147
|
+
min-height: 40px;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
[data-mode="app"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1151
|
+
font-size: var(--font-size-16);
|
|
1152
|
+
padding: var(--spacing-3) var(--spacing-6);
|
|
1153
|
+
min-height: 44px;
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
[data-mode="app"] .btn-lg {
|
|
1157
|
+
font-size: var(--font-size-18);
|
|
1158
|
+
padding: var(--spacing-4) var(--spacing-6);
|
|
1159
|
+
min-height: 48px;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1018
1162
|
.btn .icon:last-child {
|
|
1019
1163
|
margin-right: calc(var(--spacing-1) * -1);
|
|
1020
1164
|
}
|
|
@@ -1294,20 +1438,40 @@ body {
|
|
|
1294
1438
|
display: flex;
|
|
1295
1439
|
flex-direction: column;
|
|
1296
1440
|
width: var(--size-sidebar-width, 280px);
|
|
1297
|
-
background: var(--surface-
|
|
1298
|
-
|
|
1299
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1441
|
+
background: var(--surface-sunken);
|
|
1442
|
+
border: 1px solid var(--border-subtle);
|
|
1300
1443
|
padding: var(--spacing-5);
|
|
1301
1444
|
overflow-y: auto;
|
|
1302
1445
|
}
|
|
1303
1446
|
|
|
1447
|
+
/* Glass effect ONLY in Display mode */
|
|
1448
|
+
[data-mode="display"] .sidebar {
|
|
1449
|
+
background: var(--surface-glass);
|
|
1450
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1451
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/* Product mode: solid background */
|
|
1455
|
+
[data-mode="product"] .sidebar {
|
|
1456
|
+
background: var(--surface-subtle);
|
|
1457
|
+
border-right: 1px solid var(--border-subtle);
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
/* App mode: no borders */
|
|
1461
|
+
[data-mode="app"] .sidebar {
|
|
1462
|
+
border: none;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1304
1465
|
/* Variant: Floating (Card Style) */
|
|
1305
1466
|
.sidebar-floating {
|
|
1306
1467
|
border: 1px solid var(--border-subtle);
|
|
1307
1468
|
border-radius: var(--radius-control);
|
|
1308
|
-
box-shadow: var(--shadow-md);
|
|
1309
|
-
|
|
1310
|
-
|
|
1469
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-md));
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
/* Product mode floating */
|
|
1473
|
+
[data-mode="product"] .sidebar-floating {
|
|
1474
|
+
box-shadow: var(--shadow-flat);
|
|
1311
1475
|
}
|
|
1312
1476
|
|
|
1313
1477
|
/* Variant: Classic (Edge-to-Edge) */
|
|
@@ -1369,7 +1533,7 @@ body {
|
|
|
1369
1533
|
COMPONENT BLUEPRINTS — Navigation (Header)
|
|
1370
1534
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
1371
1535
|
|
|
1372
|
-
/* Base Navbar */
|
|
1536
|
+
/* Base Navbar - Mode-aware */
|
|
1373
1537
|
.navbar {
|
|
1374
1538
|
position: fixed;
|
|
1375
1539
|
top: 0;
|
|
@@ -1381,12 +1545,30 @@ body {
|
|
|
1381
1545
|
justify-content: space-between;
|
|
1382
1546
|
height: 64px;
|
|
1383
1547
|
padding: 0 var(--spacing-6);
|
|
1384
|
-
background: var(--surface-
|
|
1385
|
-
|
|
1386
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1548
|
+
background: var(--surface-base);
|
|
1549
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
1387
1550
|
transition: all var(--transition-normal);
|
|
1388
1551
|
}
|
|
1389
1552
|
|
|
1553
|
+
/* Glass effect ONLY in Display mode */
|
|
1554
|
+
[data-mode="display"] .navbar {
|
|
1555
|
+
background: var(--surface-glass);
|
|
1556
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1557
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
/* Product mode: solid background */
|
|
1561
|
+
[data-mode="product"] .navbar {
|
|
1562
|
+
background: var(--surface-base);
|
|
1563
|
+
border-bottom-color: var(--border-subtle);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
/* App mode: no borders */
|
|
1567
|
+
[data-mode="app"] .navbar {
|
|
1568
|
+
border-bottom: none;
|
|
1569
|
+
background: var(--surface-base);
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1390
1572
|
/* Variant: Classic (Edge-to-Edge) */
|
|
1391
1573
|
.navbar-classic {
|
|
1392
1574
|
width: 100%;
|
|
@@ -1402,7 +1584,12 @@ body {
|
|
|
1402
1584
|
width: auto;
|
|
1403
1585
|
border: 1px solid var(--border-subtle);
|
|
1404
1586
|
border-radius: var(--radius-container);
|
|
1405
|
-
box-shadow: var(--shadow-sm);
|
|
1587
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
/* Product mode floating */
|
|
1591
|
+
[data-mode="product"] .navbar-floating {
|
|
1592
|
+
box-shadow: var(--shadow-flat);
|
|
1406
1593
|
}
|
|
1407
1594
|
|
|
1408
1595
|
/* Navbar Elements */
|
|
@@ -1665,6 +1852,54 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1665
1852
|
border-radius: var(--radius-full);
|
|
1666
1853
|
}
|
|
1667
1854
|
|
|
1855
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1856
|
+
BRAND VISUAL DIFFERENTIATION — Unitec vs Laureate
|
|
1857
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
1858
|
+
|
|
1859
|
+
/* Unitec: Bold & Energetic personality */
|
|
1860
|
+
[data-brand="unitec"] .btn,
|
|
1861
|
+
[data-brand="unitec"] .card {
|
|
1862
|
+
border-width: 2px;
|
|
1863
|
+
/* More prominent borders */
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
[data-brand="unitec"] .card-interactive:hover {
|
|
1867
|
+
box-shadow: 0 12px 20px -4px rgba(246, 139, 31, 0.3);
|
|
1868
|
+
/* Orange-tinted shadow */
|
|
1869
|
+
}
|
|
1870
|
+
|
|
1871
|
+
[data-brand="unitec"] .btn:hover:not(:disabled) {
|
|
1872
|
+
box-shadow: 0 8px 12px -2px rgba(246, 139, 31, 0.25);
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
/* Laureate: Refined & Professional personality */
|
|
1876
|
+
[data-brand="laureate"] .btn,
|
|
1877
|
+
[data-brand="laureate"] .card {
|
|
1878
|
+
border-width: 1px;
|
|
1879
|
+
/* Subtle borders */
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
[data-brand="laureate"] .card-interactive:hover {
|
|
1883
|
+
box-shadow: 0 8px 16px -4px rgba(241, 93, 34, 0.2);
|
|
1884
|
+
/* Red-orange tinted shadow, more subtle */
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1887
|
+
[data-brand="laureate"] .btn:hover:not(:disabled) {
|
|
1888
|
+
box-shadow: 0 6px 10px -2px rgba(241, 93, 34, 0.2);
|
|
1889
|
+
transition-duration: 300ms;
|
|
1890
|
+
/* Slower, more deliberate interaction */
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
[data-brand="laureate"] .btn:active:not(:disabled) {
|
|
1894
|
+
transition-duration: 150ms;
|
|
1895
|
+
/* Slightly slower press response */
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
/* Laureate refined modal appearance */
|
|
1899
|
+
[data-brand="laureate"] .modal {
|
|
1900
|
+
box-shadow: 0 16px 24px -4px rgba(241, 93, 34, 0.15);
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1668
1903
|
.sidebar-item.is-active .sidebar-item-icon {
|
|
1669
1904
|
opacity: 1;
|
|
1670
1905
|
}
|
|
@@ -1687,6 +1922,7 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1687
1922
|
border: 1px solid var(--border-subtle);
|
|
1688
1923
|
border-radius: var(--radius-container);
|
|
1689
1924
|
padding: var(--spacing-6);
|
|
1925
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1690
1926
|
transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1691
1927
|
}
|
|
1692
1928
|
|
|
@@ -1695,31 +1931,51 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1695
1931
|
}
|
|
1696
1932
|
|
|
1697
1933
|
.card-interactive:hover {
|
|
1698
|
-
transform: translateY(-2px);
|
|
1699
|
-
box-shadow: var(--shadow-lg);
|
|
1934
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
1935
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-lg));
|
|
1700
1936
|
border-color: var(--border-strong);
|
|
1937
|
+
transition-duration: var(--mode-hover-duration, 250ms);
|
|
1701
1938
|
}
|
|
1702
1939
|
|
|
1703
1940
|
.card-interactive:active {
|
|
1704
|
-
transform: translateY(0);
|
|
1941
|
+
transform: scale(0.98) translateY(0);
|
|
1942
|
+
box-shadow: var(--mode-shadow-active, none);
|
|
1705
1943
|
transition-duration: 100ms;
|
|
1706
1944
|
}
|
|
1707
1945
|
|
|
1946
|
+
/* Glass card - Only enabled in Display mode */
|
|
1708
1947
|
.card-glass {
|
|
1709
|
-
background: var(--surface-
|
|
1710
|
-
backdrop-filter: blur(var(--blur-lg));
|
|
1711
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1948
|
+
background: var(--surface-base);
|
|
1712
1949
|
border: 1px solid var(--border-subtle);
|
|
1713
1950
|
border-radius: var(--radius-container);
|
|
1714
1951
|
padding: var(--spacing-6);
|
|
1952
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1715
1953
|
transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1716
1954
|
}
|
|
1717
1955
|
|
|
1956
|
+
/* Glass effect ONLY in Display mode */
|
|
1957
|
+
[data-mode="display"] .card-glass {
|
|
1958
|
+
background: var(--surface-glass);
|
|
1959
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1960
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1961
|
+
}
|
|
1962
|
+
|
|
1718
1963
|
.card-glass.card-interactive:hover {
|
|
1719
|
-
|
|
1720
|
-
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1964
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
1965
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-lg));
|
|
1966
|
+
transition-duration: var(--mode-hover-duration, 250ms);
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
/* Product mode: solid background */
|
|
1970
|
+
[data-mode="product"] .card-glass {
|
|
1971
|
+
background: var(--surface-subtle);
|
|
1972
|
+
box-shadow: var(--shadow-flat);
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
/* App mode: no borders */
|
|
1976
|
+
[data-mode="app"] .card-glass {
|
|
1977
|
+
border: none;
|
|
1978
|
+
box-shadow: var(--shadow-md);
|
|
1723
1979
|
}
|
|
1724
1980
|
|
|
1725
1981
|
|
|
@@ -2698,7 +2954,7 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2698
2954
|
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
2699
2955
|
}
|
|
2700
2956
|
|
|
2701
|
-
/* Modal */
|
|
2957
|
+
/* Modal - Mode-aware backdrop blur */
|
|
2702
2958
|
.modal-backdrop {
|
|
2703
2959
|
position: fixed;
|
|
2704
2960
|
top: 0;
|
|
@@ -2710,11 +2966,18 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2710
2966
|
align-items: center;
|
|
2711
2967
|
justify-content: center;
|
|
2712
2968
|
background: rgba(0, 0, 0, 0.5);
|
|
2713
|
-
backdrop-filter: blur(4px);
|
|
2969
|
+
backdrop-filter: blur(var(--mode-blur-amount, 4px));
|
|
2970
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, 4px));
|
|
2714
2971
|
padding: var(--spacing-4);
|
|
2715
2972
|
animation: fadeIn 200ms ease;
|
|
2716
2973
|
}
|
|
2717
2974
|
|
|
2975
|
+
/* Product mode: no backdrop blur */
|
|
2976
|
+
[data-mode="product"] .modal-backdrop {
|
|
2977
|
+
backdrop-filter: none;
|
|
2978
|
+
-webkit-backdrop-filter: none;
|
|
2979
|
+
}
|
|
2980
|
+
|
|
2718
2981
|
@keyframes fadeIn {
|
|
2719
2982
|
from { opacity: 0; }
|
|
2720
2983
|
to { opacity: 1; }
|
|
@@ -2929,14 +3192,14 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2929
3192
|
font-size: var(--font-size-48);
|
|
2930
3193
|
font-weight: var(--font-weight-bold);
|
|
2931
3194
|
line-height: var(--line-height-tight);
|
|
2932
|
-
color:
|
|
3195
|
+
color: var(--text-inverse);
|
|
2933
3196
|
margin: 0;
|
|
2934
3197
|
}
|
|
2935
3198
|
|
|
2936
3199
|
.card-visual-text {
|
|
2937
3200
|
font-size: var(--font-size-16);
|
|
2938
3201
|
line-height: var(--line-height-normal);
|
|
2939
|
-
color:
|
|
3202
|
+
color: color-mix(in srgb, var(--text-inverse) 90%, transparent);
|
|
2940
3203
|
margin: 0;
|
|
2941
3204
|
}
|
|
2942
3205
|
|
|
@@ -3231,29 +3494,38 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3231
3494
|
border-width: 4px;
|
|
3232
3495
|
}
|
|
3233
3496
|
|
|
3234
|
-
/* Skeleton */
|
|
3497
|
+
/* ═ Skeleton Loading Framework (Mode-aware) */
|
|
3235
3498
|
.skeleton {
|
|
3236
|
-
background:
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
animation: shimmer 1.5s infinite;
|
|
3242
|
-
border-radius: var(--radius-control);
|
|
3499
|
+
background: var(--surface-layer);
|
|
3500
|
+
border-radius: var(--radius-sm);
|
|
3501
|
+
position: relative;
|
|
3502
|
+
overflow: hidden;
|
|
3503
|
+
animation: skeleton-pulse 1.5s ease-in-out infinite;
|
|
3243
3504
|
}
|
|
3244
3505
|
|
|
3245
|
-
@keyframes
|
|
3246
|
-
0% {
|
|
3247
|
-
|
|
3248
|
-
|
|
3506
|
+
@keyframes skeleton-pulse {
|
|
3507
|
+
0%, 100% { opacity: 1; }
|
|
3508
|
+
50% { opacity: 0.6; }
|
|
3509
|
+
}
|
|
3249
3510
|
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3511
|
+
/* Shimmer effect (Display mode only - high polish) */
|
|
3512
|
+
[data-mode="display"] .skeleton::after {
|
|
3513
|
+
content: "";
|
|
3514
|
+
position: absolute;
|
|
3515
|
+
top: 0; right: 0; bottom: 0; left: 0;
|
|
3516
|
+
transform: translateX(-100%);
|
|
3517
|
+
background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%);
|
|
3518
|
+
animation: skeleton-shimmer 1.5s infinite;
|
|
3253
3519
|
}
|
|
3254
3520
|
|
|
3521
|
+
@keyframes skeleton-shimmer {
|
|
3522
|
+
100% { transform: translateX(100%); }
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
/* Variants - Text */
|
|
3255
3526
|
.skeleton-text {
|
|
3256
3527
|
height: 1em;
|
|
3528
|
+
width: 100%;
|
|
3257
3529
|
margin-bottom: var(--spacing-2);
|
|
3258
3530
|
}
|
|
3259
3531
|
|
|
@@ -3261,25 +3533,32 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3261
3533
|
width: 60%;
|
|
3262
3534
|
}
|
|
3263
3535
|
|
|
3536
|
+
/* Variants - Title */
|
|
3264
3537
|
.skeleton-title {
|
|
3265
|
-
height:
|
|
3266
|
-
width:
|
|
3538
|
+
height: 2em;
|
|
3539
|
+
width: 60%;
|
|
3267
3540
|
margin-bottom: var(--spacing-3);
|
|
3268
3541
|
}
|
|
3269
3542
|
|
|
3543
|
+
/* Variants - Avatar */
|
|
3270
3544
|
.skeleton-avatar {
|
|
3271
|
-
width:
|
|
3272
|
-
height:
|
|
3545
|
+
width: 48px;
|
|
3546
|
+
height: 48px;
|
|
3273
3547
|
border-radius: var(--radius-full);
|
|
3274
3548
|
}
|
|
3275
3549
|
|
|
3550
|
+
/* Variants - Button */
|
|
3276
3551
|
.skeleton-button {
|
|
3277
3552
|
height: 40px;
|
|
3278
|
-
width:
|
|
3553
|
+
width: 120px;
|
|
3554
|
+
border-radius: var(--radius-control);
|
|
3279
3555
|
}
|
|
3280
3556
|
|
|
3557
|
+
/* Variants - Card */
|
|
3281
3558
|
.skeleton-card {
|
|
3282
3559
|
height: 200px;
|
|
3560
|
+
width: 100%;
|
|
3561
|
+
border-radius: var(--radius-container);
|
|
3283
3562
|
}
|
|
3284
3563
|
|
|
3285
3564
|
|
|
@@ -3287,6 +3566,53 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3287
3566
|
DATA DISPLAY — Table, Empty State
|
|
3288
3567
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
3289
3568
|
|
|
3569
|
+
/* ─── Empty State Framework ─── */
|
|
3570
|
+
.empty-state {
|
|
3571
|
+
display: flex;
|
|
3572
|
+
flex-direction: column;
|
|
3573
|
+
align-items: center;
|
|
3574
|
+
justify-content: center;
|
|
3575
|
+
text-align: center;
|
|
3576
|
+
padding: var(--spacing-32);
|
|
3577
|
+
gap: var(--spacing-6);
|
|
3578
|
+
min-height: 300px;
|
|
3579
|
+
}
|
|
3580
|
+
|
|
3581
|
+
.empty-state-icon {
|
|
3582
|
+
width: 80px;
|
|
3583
|
+
height: 80px;
|
|
3584
|
+
color: var(--text-tertiary);
|
|
3585
|
+
opacity: 0.6;
|
|
3586
|
+
}
|
|
3587
|
+
|
|
3588
|
+
[data-mode="product"] .empty-state-icon {
|
|
3589
|
+
width: 64px;
|
|
3590
|
+
height: 64px;
|
|
3591
|
+
}
|
|
3592
|
+
|
|
3593
|
+
.empty-state-title {
|
|
3594
|
+
font-size: var(--font-size-24);
|
|
3595
|
+
font-weight: var(--font-weight-bold);
|
|
3596
|
+
color: var(--text-primary);
|
|
3597
|
+
margin: 0;
|
|
3598
|
+
}
|
|
3599
|
+
|
|
3600
|
+
.empty-state-description {
|
|
3601
|
+
font-size: var(--font-size-16);
|
|
3602
|
+
color: var(--text-secondary);
|
|
3603
|
+
max-width: 400px;
|
|
3604
|
+
margin: 0;
|
|
3605
|
+
line-height: var(--line-height-relaxed);
|
|
3606
|
+
}
|
|
3607
|
+
|
|
3608
|
+
.empty-state-actions {
|
|
3609
|
+
display: flex;
|
|
3610
|
+
gap: var(--spacing-3);
|
|
3611
|
+
margin-top: var(--spacing-4);
|
|
3612
|
+
flex-wrap: wrap;
|
|
3613
|
+
justify-content: center;
|
|
3614
|
+
}
|
|
3615
|
+
|
|
3290
3616
|
/* Table */
|
|
3291
3617
|
.table-wrapper {
|
|
3292
3618
|
overflow-x: auto;
|
|
@@ -5282,9 +5608,12 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5282
5608
|
box-shadow: 0 0 0 4px var(--color-brand-soft-hover);
|
|
5283
5609
|
}
|
|
5284
5610
|
|
|
5285
|
-
/*
|
|
5286
|
-
|
|
5611
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
5612
|
+
ACCESSIBILITY — Reduced Motion Preferences
|
|
5613
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
5287
5614
|
|
|
5615
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5616
|
+
/* Disable ALL animations and transitions */
|
|
5288
5617
|
*,
|
|
5289
5618
|
*::before,
|
|
5290
5619
|
*::after {
|
|
@@ -5293,6 +5622,30 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5293
5622
|
transition-duration: 0.01ms !important;
|
|
5294
5623
|
scroll-behavior: auto !important;
|
|
5295
5624
|
}
|
|
5625
|
+
|
|
5626
|
+
/* Remove ALL transform-based interactions */
|
|
5627
|
+
.btn:hover:not(:disabled),
|
|
5628
|
+
.btn:active:not(:disabled),
|
|
5629
|
+
.card-interactive:hover,
|
|
5630
|
+
.card-interactive:active,
|
|
5631
|
+
.card-visual:hover,
|
|
5632
|
+
.card-glass.card-interactive:hover {
|
|
5633
|
+
transform: none !important;
|
|
5634
|
+
}
|
|
5635
|
+
|
|
5636
|
+
/* Keep blur effects (not motion-inducing) */
|
|
5637
|
+
[data-mode="display"] .sidebar,
|
|
5638
|
+
[data-mode="display"] .navbar,
|
|
5639
|
+
[data-mode="display"] .card-glass,
|
|
5640
|
+
[data-mode="display"] .modal-backdrop {
|
|
5641
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg))) !important;
|
|
5642
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg))) !important;
|
|
5643
|
+
}
|
|
5644
|
+
|
|
5645
|
+
/* Reduce skeleton pulse to just opacity change (no motion) */
|
|
5646
|
+
.skeleton {
|
|
5647
|
+
animation: skeleton-pulse 1.5s ease-in-out infinite !important;
|
|
5648
|
+
}
|
|
5296
5649
|
}
|
|
5297
5650
|
|
|
5298
5651
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -5336,24 +5689,8 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5336
5689
|
min-height: var(--mode-touch-target, 40px);
|
|
5337
5690
|
}
|
|
5338
5691
|
|
|
5339
|
-
/* Mode-aware Buttons */
|
|
5340
|
-
|
|
5341
|
-
font-size: var(--font-size-18);
|
|
5342
|
-
padding: var(--spacing-4) var(--spacing-8);
|
|
5343
|
-
min-height: 56px;
|
|
5344
|
-
}
|
|
5345
|
-
|
|
5346
|
-
[data-mode="product"] .btn {
|
|
5347
|
-
font-size: var(--font-size-14);
|
|
5348
|
-
padding: var(--spacing-2) var(--spacing-4);
|
|
5349
|
-
min-height: 32px;
|
|
5350
|
-
}
|
|
5351
|
-
|
|
5352
|
-
[data-mode="app"] .btn {
|
|
5353
|
-
font-size: var(--font-size-16);
|
|
5354
|
-
padding: var(--spacing-3) var(--spacing-6);
|
|
5355
|
-
min-height: 44px;
|
|
5356
|
-
}
|
|
5692
|
+
/* Mode-aware Buttons - Removed */
|
|
5693
|
+
/* (Replaced with proportional scaling system below) */
|
|
5357
5694
|
|
|
5358
5695
|
/* Mode-aware Cards */
|
|
5359
5696
|
[data-mode="display"] .card {
|
|
@@ -6336,6 +6673,25 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
6336
6673
|
display: inline-block;
|
|
6337
6674
|
}
|
|
6338
6675
|
|
|
6676
|
+
/* Brand-aware gradient text (mode & brand aware) */
|
|
6677
|
+
.gradient-text-brand {
|
|
6678
|
+
background: linear-gradient(135deg, var(--color-brand-400), var(--color-brand-600));
|
|
6679
|
+
-webkit-background-clip: text;
|
|
6680
|
+
-webkit-text-fill-color: transparent;
|
|
6681
|
+
background-clip: text;
|
|
6682
|
+
display: inline-block;
|
|
6683
|
+
}
|
|
6684
|
+
|
|
6685
|
+
/* Display mode: more dramatic */
|
|
6686
|
+
[data-mode="display"] .gradient-text-brand {
|
|
6687
|
+
background: linear-gradient(135deg, var(--color-brand-300), var(--color-brand-700));
|
|
6688
|
+
}
|
|
6689
|
+
|
|
6690
|
+
/* Product mode: more subtle */
|
|
6691
|
+
[data-mode="product"] .gradient-text-brand {
|
|
6692
|
+
background: linear-gradient(135deg, var(--color-brand-500), var(--color-brand-600));
|
|
6693
|
+
}
|
|
6694
|
+
|
|
6339
6695
|
|
|
6340
6696
|
/* ─── Section Header ─── */
|
|
6341
6697
|
.section-header {
|