@orion-ds/core 1.0.0 → 1.0.2
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 +411 -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,22 @@
|
|
|
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
|
+
/* ─── Text on Dark Backgrounds ─── */
|
|
298
|
+
--text-on-dark: #ffffff;
|
|
299
|
+
--text-on-dark-primary: rgba(255, 255, 255, 0.9);
|
|
300
|
+
--text-on-dark-secondary: rgba(255, 255, 255, 0.7);
|
|
301
|
+
--text-on-dark-tertiary: rgba(255, 255, 255, 0.5);
|
|
302
|
+
|
|
283
303
|
/* ─── Soft State Colors (10-20% opacity for backgrounds) ─── */
|
|
284
304
|
--color-brand-soft: color-mix(in srgb, var(--color-brand-500) 10%, transparent);
|
|
285
305
|
--color-brand-soft-hover: color-mix(in srgb, var(--color-brand-500) 20%, transparent);
|
|
@@ -349,6 +369,22 @@
|
|
|
349
369
|
--status-error-bg: rgba(239, 68, 68, 0.15);
|
|
350
370
|
--status-success-bg: rgba(34, 197, 94, 0.15);
|
|
351
371
|
|
|
372
|
+
/* ─── Section Shadows (for card hover effects) ─── */
|
|
373
|
+
--shadow-card-hover: 0 12px 24px -8px rgba(0, 0, 0, 0.3);
|
|
374
|
+
--shadow-card-sm: 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
375
|
+
--shadow-card-elevated: 0 8px 16px -4px rgba(0, 0, 0, 0.25);
|
|
376
|
+
|
|
377
|
+
/* ─── Overlay Colors (for dark overlays on images) ─── */
|
|
378
|
+
--overlay-dark: rgba(0, 0, 0, 0.6);
|
|
379
|
+
--overlay-dark-heavy: rgba(0, 0, 0, 0.8);
|
|
380
|
+
--overlay-dark-light: rgba(0, 0, 0, 0.4);
|
|
381
|
+
|
|
382
|
+
/* ─── Text on Dark Backgrounds ─── */
|
|
383
|
+
--text-on-dark: #ffffff;
|
|
384
|
+
--text-on-dark-primary: rgba(255, 255, 255, 0.95);
|
|
385
|
+
--text-on-dark-secondary: rgba(255, 255, 255, 0.8);
|
|
386
|
+
--text-on-dark-tertiary: rgba(255, 255, 255, 0.6);
|
|
387
|
+
|
|
352
388
|
/* ─── Soft State Colors (10-20% opacity for backgrounds) ─── */
|
|
353
389
|
--color-brand-soft: color-mix(in srgb, var(--color-brand-500) 15%, transparent);
|
|
354
390
|
--color-brand-soft-hover: color-mix(in srgb, var(--color-brand-500) 25%, transparent);
|
|
@@ -688,6 +724,15 @@
|
|
|
688
724
|
--mode-effect-glass: blur(12px);
|
|
689
725
|
--mode-effect-shadow: var(--shadow-xl);
|
|
690
726
|
--mode-visual-style: "atmospheric";
|
|
727
|
+
|
|
728
|
+
/* Visual System (NEW): Shadows & Interactions */
|
|
729
|
+
--mode-shadow-default: var(--shadow-md);
|
|
730
|
+
--mode-shadow-hover: var(--shadow-lg);
|
|
731
|
+
--mode-shadow-active: var(--shadow-md);
|
|
732
|
+
--mode-hover-lift: -4px;
|
|
733
|
+
--mode-hover-duration: 250ms;
|
|
734
|
+
--mode-glass-enabled: 1;
|
|
735
|
+
--mode-blur-amount: var(--blur-lg);
|
|
691
736
|
}
|
|
692
737
|
|
|
693
738
|
/* ─── Product Mode: SaaS & Dashboards ─── */
|
|
@@ -713,6 +758,15 @@
|
|
|
713
758
|
--mode-effect-glass: none;
|
|
714
759
|
--mode-effect-shadow: var(--shadow-sm);
|
|
715
760
|
--mode-visual-style: "functional";
|
|
761
|
+
|
|
762
|
+
/* Visual System (NEW): Ultra-flat (Linear/Figma style) */
|
|
763
|
+
--mode-shadow-default: var(--shadow-flat);
|
|
764
|
+
--mode-shadow-hover: var(--shadow-sm);
|
|
765
|
+
--mode-shadow-active: none;
|
|
766
|
+
--mode-hover-lift: 0px; /* NO lift in Product mode */
|
|
767
|
+
--mode-hover-duration: 150ms;
|
|
768
|
+
--mode-glass-enabled: 0; /* NO glassmorphism */
|
|
769
|
+
--mode-blur-amount: 0px;
|
|
716
770
|
}
|
|
717
771
|
|
|
718
772
|
/* ─── App Mode: Touch-First Mobile Interfaces ─── */
|
|
@@ -745,6 +799,15 @@
|
|
|
745
799
|
--mode-safe-area-bottom: env(safe-area-inset-bottom, 0);
|
|
746
800
|
--mode-safe-area-left: env(safe-area-inset-left, 0);
|
|
747
801
|
--mode-safe-area-right: env(safe-area-inset-right, 0);
|
|
802
|
+
|
|
803
|
+
/* Visual System (NEW): Native elevation (Material 3) */
|
|
804
|
+
--mode-shadow-default: var(--shadow-md);
|
|
805
|
+
--mode-shadow-hover: var(--shadow-lg);
|
|
806
|
+
--mode-shadow-active: var(--shadow-sm);
|
|
807
|
+
--mode-hover-lift: -2px;
|
|
808
|
+
--mode-hover-duration: 200ms;
|
|
809
|
+
--mode-glass-enabled: 0; /* NO glassmorphism */
|
|
810
|
+
--mode-blur-amount: 0px;
|
|
748
811
|
}
|
|
749
812
|
|
|
750
813
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -927,12 +990,14 @@ body {
|
|
|
927
990
|
}
|
|
928
991
|
|
|
929
992
|
.btn:hover:not(:disabled) {
|
|
930
|
-
transform: translateY(-
|
|
931
|
-
box-shadow: var(--shadow-md);
|
|
993
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
994
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-md));
|
|
995
|
+
transition-duration: var(--mode-hover-duration, 150ms);
|
|
932
996
|
}
|
|
933
997
|
|
|
934
998
|
.btn:active:not(:disabled) {
|
|
935
|
-
transform: translateY(0);
|
|
999
|
+
transform: scale(0.98) translateY(0);
|
|
1000
|
+
box-shadow: var(--mode-shadow-active, none);
|
|
936
1001
|
transition-duration: 100ms;
|
|
937
1002
|
}
|
|
938
1003
|
|
|
@@ -1015,6 +1080,69 @@ body {
|
|
|
1015
1080
|
margin-left: calc(var(--spacing-1) * -1);
|
|
1016
1081
|
}
|
|
1017
1082
|
|
|
1083
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1084
|
+
MODE-AWARE BUTTON SIZING
|
|
1085
|
+
Proportional scaling: Each mode has its own size hierarchy (sm/md/lg)
|
|
1086
|
+
respecting the tri-modal philosophy (Display=spatial, Product=compact, App=tactile)
|
|
1087
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
1088
|
+
|
|
1089
|
+
/* ─── Display Mode: Atmospheric (spacious) ─── */
|
|
1090
|
+
[data-mode="display"] .btn-sm {
|
|
1091
|
+
font-size: var(--font-size-14);
|
|
1092
|
+
padding: var(--spacing-3) var(--spacing-6);
|
|
1093
|
+
min-height: 40px;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
[data-mode="display"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1097
|
+
font-size: var(--font-size-18);
|
|
1098
|
+
padding: var(--spacing-4) var(--spacing-8);
|
|
1099
|
+
min-height: 56px;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
[data-mode="display"] .btn-lg {
|
|
1103
|
+
font-size: var(--font-size-20);
|
|
1104
|
+
padding: var(--spacing-5) var(--spacing-10);
|
|
1105
|
+
min-height: 64px;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
/* ─── Product Mode: Geometric Precision (compact) ─── */
|
|
1109
|
+
[data-mode="product"] .btn-sm {
|
|
1110
|
+
font-size: var(--font-size-12);
|
|
1111
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
1112
|
+
min-height: 28px;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
[data-mode="product"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1116
|
+
font-size: var(--font-size-14);
|
|
1117
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
1118
|
+
min-height: 32px;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
[data-mode="product"] .btn-lg {
|
|
1122
|
+
font-size: var(--font-size-16);
|
|
1123
|
+
padding: var(--spacing-2) var(--spacing-5);
|
|
1124
|
+
min-height: 36px;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
/* ─── App Mode: Tactile (touch-friendly) ─── */
|
|
1128
|
+
[data-mode="app"] .btn-sm {
|
|
1129
|
+
font-size: var(--font-size-14);
|
|
1130
|
+
padding: var(--spacing-2) var(--spacing-5);
|
|
1131
|
+
min-height: 40px;
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
[data-mode="app"] .btn:not(.btn-sm):not(.btn-lg) {
|
|
1135
|
+
font-size: var(--font-size-16);
|
|
1136
|
+
padding: var(--spacing-3) var(--spacing-6);
|
|
1137
|
+
min-height: 44px;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
[data-mode="app"] .btn-lg {
|
|
1141
|
+
font-size: var(--font-size-18);
|
|
1142
|
+
padding: var(--spacing-4) var(--spacing-6);
|
|
1143
|
+
min-height: 48px;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1018
1146
|
.btn .icon:last-child {
|
|
1019
1147
|
margin-right: calc(var(--spacing-1) * -1);
|
|
1020
1148
|
}
|
|
@@ -1294,20 +1422,40 @@ body {
|
|
|
1294
1422
|
display: flex;
|
|
1295
1423
|
flex-direction: column;
|
|
1296
1424
|
width: var(--size-sidebar-width, 280px);
|
|
1297
|
-
background: var(--surface-
|
|
1298
|
-
|
|
1299
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1425
|
+
background: var(--surface-sunken);
|
|
1426
|
+
border: 1px solid var(--border-subtle);
|
|
1300
1427
|
padding: var(--spacing-5);
|
|
1301
1428
|
overflow-y: auto;
|
|
1302
1429
|
}
|
|
1303
1430
|
|
|
1431
|
+
/* Glass effect ONLY in Display mode */
|
|
1432
|
+
[data-mode="display"] .sidebar {
|
|
1433
|
+
background: var(--surface-glass);
|
|
1434
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1435
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
/* Product mode: solid background */
|
|
1439
|
+
[data-mode="product"] .sidebar {
|
|
1440
|
+
background: var(--surface-subtle);
|
|
1441
|
+
border-right: 1px solid var(--border-subtle);
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
/* App mode: no borders */
|
|
1445
|
+
[data-mode="app"] .sidebar {
|
|
1446
|
+
border: none;
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1304
1449
|
/* Variant: Floating (Card Style) */
|
|
1305
1450
|
.sidebar-floating {
|
|
1306
1451
|
border: 1px solid var(--border-subtle);
|
|
1307
1452
|
border-radius: var(--radius-control);
|
|
1308
|
-
box-shadow: var(--shadow-md);
|
|
1309
|
-
|
|
1310
|
-
|
|
1453
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-md));
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
/* Product mode floating */
|
|
1457
|
+
[data-mode="product"] .sidebar-floating {
|
|
1458
|
+
box-shadow: var(--shadow-flat);
|
|
1311
1459
|
}
|
|
1312
1460
|
|
|
1313
1461
|
/* Variant: Classic (Edge-to-Edge) */
|
|
@@ -1369,7 +1517,7 @@ body {
|
|
|
1369
1517
|
COMPONENT BLUEPRINTS — Navigation (Header)
|
|
1370
1518
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
1371
1519
|
|
|
1372
|
-
/* Base Navbar */
|
|
1520
|
+
/* Base Navbar - Mode-aware */
|
|
1373
1521
|
.navbar {
|
|
1374
1522
|
position: fixed;
|
|
1375
1523
|
top: 0;
|
|
@@ -1381,12 +1529,30 @@ body {
|
|
|
1381
1529
|
justify-content: space-between;
|
|
1382
1530
|
height: 64px;
|
|
1383
1531
|
padding: 0 var(--spacing-6);
|
|
1384
|
-
background: var(--surface-
|
|
1385
|
-
|
|
1386
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1532
|
+
background: var(--surface-base);
|
|
1533
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
1387
1534
|
transition: all var(--transition-normal);
|
|
1388
1535
|
}
|
|
1389
1536
|
|
|
1537
|
+
/* Glass effect ONLY in Display mode */
|
|
1538
|
+
[data-mode="display"] .navbar {
|
|
1539
|
+
background: var(--surface-glass);
|
|
1540
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1541
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
/* Product mode: solid background */
|
|
1545
|
+
[data-mode="product"] .navbar {
|
|
1546
|
+
background: var(--surface-base);
|
|
1547
|
+
border-bottom-color: var(--border-subtle);
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
/* App mode: no borders */
|
|
1551
|
+
[data-mode="app"] .navbar {
|
|
1552
|
+
border-bottom: none;
|
|
1553
|
+
background: var(--surface-base);
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1390
1556
|
/* Variant: Classic (Edge-to-Edge) */
|
|
1391
1557
|
.navbar-classic {
|
|
1392
1558
|
width: 100%;
|
|
@@ -1402,7 +1568,12 @@ body {
|
|
|
1402
1568
|
width: auto;
|
|
1403
1569
|
border: 1px solid var(--border-subtle);
|
|
1404
1570
|
border-radius: var(--radius-container);
|
|
1405
|
-
box-shadow: var(--shadow-sm);
|
|
1571
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
/* Product mode floating */
|
|
1575
|
+
[data-mode="product"] .navbar-floating {
|
|
1576
|
+
box-shadow: var(--shadow-flat);
|
|
1406
1577
|
}
|
|
1407
1578
|
|
|
1408
1579
|
/* Navbar Elements */
|
|
@@ -1665,6 +1836,54 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1665
1836
|
border-radius: var(--radius-full);
|
|
1666
1837
|
}
|
|
1667
1838
|
|
|
1839
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1840
|
+
BRAND VISUAL DIFFERENTIATION — Unitec vs Laureate
|
|
1841
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
1842
|
+
|
|
1843
|
+
/* Unitec: Bold & Energetic personality */
|
|
1844
|
+
[data-brand="unitec"] .btn,
|
|
1845
|
+
[data-brand="unitec"] .card {
|
|
1846
|
+
border-width: 2px;
|
|
1847
|
+
/* More prominent borders */
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1850
|
+
[data-brand="unitec"] .card-interactive:hover {
|
|
1851
|
+
box-shadow: 0 12px 20px -4px rgba(246, 139, 31, 0.3);
|
|
1852
|
+
/* Orange-tinted shadow */
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
[data-brand="unitec"] .btn:hover:not(:disabled) {
|
|
1856
|
+
box-shadow: 0 8px 12px -2px rgba(246, 139, 31, 0.25);
|
|
1857
|
+
}
|
|
1858
|
+
|
|
1859
|
+
/* Laureate: Refined & Professional personality */
|
|
1860
|
+
[data-brand="laureate"] .btn,
|
|
1861
|
+
[data-brand="laureate"] .card {
|
|
1862
|
+
border-width: 1px;
|
|
1863
|
+
/* Subtle borders */
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
[data-brand="laureate"] .card-interactive:hover {
|
|
1867
|
+
box-shadow: 0 8px 16px -4px rgba(241, 93, 34, 0.2);
|
|
1868
|
+
/* Red-orange tinted shadow, more subtle */
|
|
1869
|
+
}
|
|
1870
|
+
|
|
1871
|
+
[data-brand="laureate"] .btn:hover:not(:disabled) {
|
|
1872
|
+
box-shadow: 0 6px 10px -2px rgba(241, 93, 34, 0.2);
|
|
1873
|
+
transition-duration: 300ms;
|
|
1874
|
+
/* Slower, more deliberate interaction */
|
|
1875
|
+
}
|
|
1876
|
+
|
|
1877
|
+
[data-brand="laureate"] .btn:active:not(:disabled) {
|
|
1878
|
+
transition-duration: 150ms;
|
|
1879
|
+
/* Slightly slower press response */
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
/* Laureate refined modal appearance */
|
|
1883
|
+
[data-brand="laureate"] .modal {
|
|
1884
|
+
box-shadow: 0 16px 24px -4px rgba(241, 93, 34, 0.15);
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1668
1887
|
.sidebar-item.is-active .sidebar-item-icon {
|
|
1669
1888
|
opacity: 1;
|
|
1670
1889
|
}
|
|
@@ -1687,6 +1906,7 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1687
1906
|
border: 1px solid var(--border-subtle);
|
|
1688
1907
|
border-radius: var(--radius-container);
|
|
1689
1908
|
padding: var(--spacing-6);
|
|
1909
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1690
1910
|
transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1691
1911
|
}
|
|
1692
1912
|
|
|
@@ -1695,31 +1915,51 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
1695
1915
|
}
|
|
1696
1916
|
|
|
1697
1917
|
.card-interactive:hover {
|
|
1698
|
-
transform: translateY(-2px);
|
|
1699
|
-
box-shadow: var(--shadow-lg);
|
|
1918
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
1919
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-lg));
|
|
1700
1920
|
border-color: var(--border-strong);
|
|
1921
|
+
transition-duration: var(--mode-hover-duration, 250ms);
|
|
1701
1922
|
}
|
|
1702
1923
|
|
|
1703
1924
|
.card-interactive:active {
|
|
1704
|
-
transform: translateY(0);
|
|
1925
|
+
transform: scale(0.98) translateY(0);
|
|
1926
|
+
box-shadow: var(--mode-shadow-active, none);
|
|
1705
1927
|
transition-duration: 100ms;
|
|
1706
1928
|
}
|
|
1707
1929
|
|
|
1930
|
+
/* Glass card - Only enabled in Display mode */
|
|
1708
1931
|
.card-glass {
|
|
1709
|
-
background: var(--surface-
|
|
1710
|
-
backdrop-filter: blur(var(--blur-lg));
|
|
1711
|
-
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
1932
|
+
background: var(--surface-base);
|
|
1712
1933
|
border: 1px solid var(--border-subtle);
|
|
1713
1934
|
border-radius: var(--radius-container);
|
|
1714
1935
|
padding: var(--spacing-6);
|
|
1936
|
+
box-shadow: var(--mode-shadow-default, var(--shadow-sm));
|
|
1715
1937
|
transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1716
1938
|
}
|
|
1717
1939
|
|
|
1940
|
+
/* Glass effect ONLY in Display mode */
|
|
1941
|
+
[data-mode="display"] .card-glass {
|
|
1942
|
+
background: var(--surface-glass);
|
|
1943
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1944
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg)));
|
|
1945
|
+
}
|
|
1946
|
+
|
|
1718
1947
|
.card-glass.card-interactive:hover {
|
|
1719
|
-
|
|
1720
|
-
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1948
|
+
transform: translateY(var(--mode-hover-lift, -2px));
|
|
1949
|
+
box-shadow: var(--mode-shadow-hover, var(--shadow-lg));
|
|
1950
|
+
transition-duration: var(--mode-hover-duration, 250ms);
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
/* Product mode: solid background */
|
|
1954
|
+
[data-mode="product"] .card-glass {
|
|
1955
|
+
background: var(--surface-subtle);
|
|
1956
|
+
box-shadow: var(--shadow-flat);
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
/* App mode: no borders */
|
|
1960
|
+
[data-mode="app"] .card-glass {
|
|
1961
|
+
border: none;
|
|
1962
|
+
box-shadow: var(--shadow-md);
|
|
1723
1963
|
}
|
|
1724
1964
|
|
|
1725
1965
|
|
|
@@ -2698,7 +2938,7 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2698
2938
|
-webkit-backdrop-filter: blur(var(--blur-lg));
|
|
2699
2939
|
}
|
|
2700
2940
|
|
|
2701
|
-
/* Modal */
|
|
2941
|
+
/* Modal - Mode-aware backdrop blur */
|
|
2702
2942
|
.modal-backdrop {
|
|
2703
2943
|
position: fixed;
|
|
2704
2944
|
top: 0;
|
|
@@ -2710,11 +2950,18 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2710
2950
|
align-items: center;
|
|
2711
2951
|
justify-content: center;
|
|
2712
2952
|
background: rgba(0, 0, 0, 0.5);
|
|
2713
|
-
backdrop-filter: blur(4px);
|
|
2953
|
+
backdrop-filter: blur(var(--mode-blur-amount, 4px));
|
|
2954
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, 4px));
|
|
2714
2955
|
padding: var(--spacing-4);
|
|
2715
2956
|
animation: fadeIn 200ms ease;
|
|
2716
2957
|
}
|
|
2717
2958
|
|
|
2959
|
+
/* Product mode: no backdrop blur */
|
|
2960
|
+
[data-mode="product"] .modal-backdrop {
|
|
2961
|
+
backdrop-filter: none;
|
|
2962
|
+
-webkit-backdrop-filter: none;
|
|
2963
|
+
}
|
|
2964
|
+
|
|
2718
2965
|
@keyframes fadeIn {
|
|
2719
2966
|
from { opacity: 0; }
|
|
2720
2967
|
to { opacity: 1; }
|
|
@@ -2929,14 +3176,14 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
2929
3176
|
font-size: var(--font-size-48);
|
|
2930
3177
|
font-weight: var(--font-weight-bold);
|
|
2931
3178
|
line-height: var(--line-height-tight);
|
|
2932
|
-
color:
|
|
3179
|
+
color: var(--text-inverse);
|
|
2933
3180
|
margin: 0;
|
|
2934
3181
|
}
|
|
2935
3182
|
|
|
2936
3183
|
.card-visual-text {
|
|
2937
3184
|
font-size: var(--font-size-16);
|
|
2938
3185
|
line-height: var(--line-height-normal);
|
|
2939
|
-
color:
|
|
3186
|
+
color: color-mix(in srgb, var(--text-inverse) 90%, transparent);
|
|
2940
3187
|
margin: 0;
|
|
2941
3188
|
}
|
|
2942
3189
|
|
|
@@ -3231,29 +3478,38 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3231
3478
|
border-width: 4px;
|
|
3232
3479
|
}
|
|
3233
3480
|
|
|
3234
|
-
/* Skeleton */
|
|
3481
|
+
/* ═ Skeleton Loading Framework (Mode-aware) */
|
|
3235
3482
|
.skeleton {
|
|
3236
|
-
background:
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
animation: shimmer 1.5s infinite;
|
|
3242
|
-
border-radius: var(--radius-control);
|
|
3483
|
+
background: var(--surface-layer);
|
|
3484
|
+
border-radius: var(--radius-sm);
|
|
3485
|
+
position: relative;
|
|
3486
|
+
overflow: hidden;
|
|
3487
|
+
animation: skeleton-pulse 1.5s ease-in-out infinite;
|
|
3243
3488
|
}
|
|
3244
3489
|
|
|
3245
|
-
@keyframes
|
|
3246
|
-
0% {
|
|
3247
|
-
|
|
3248
|
-
|
|
3490
|
+
@keyframes skeleton-pulse {
|
|
3491
|
+
0%, 100% { opacity: 1; }
|
|
3492
|
+
50% { opacity: 0.6; }
|
|
3493
|
+
}
|
|
3249
3494
|
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3495
|
+
/* Shimmer effect (Display mode only - high polish) */
|
|
3496
|
+
[data-mode="display"] .skeleton::after {
|
|
3497
|
+
content: "";
|
|
3498
|
+
position: absolute;
|
|
3499
|
+
top: 0; right: 0; bottom: 0; left: 0;
|
|
3500
|
+
transform: translateX(-100%);
|
|
3501
|
+
background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%);
|
|
3502
|
+
animation: skeleton-shimmer 1.5s infinite;
|
|
3503
|
+
}
|
|
3504
|
+
|
|
3505
|
+
@keyframes skeleton-shimmer {
|
|
3506
|
+
100% { transform: translateX(100%); }
|
|
3253
3507
|
}
|
|
3254
3508
|
|
|
3509
|
+
/* Variants - Text */
|
|
3255
3510
|
.skeleton-text {
|
|
3256
3511
|
height: 1em;
|
|
3512
|
+
width: 100%;
|
|
3257
3513
|
margin-bottom: var(--spacing-2);
|
|
3258
3514
|
}
|
|
3259
3515
|
|
|
@@ -3261,25 +3517,32 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3261
3517
|
width: 60%;
|
|
3262
3518
|
}
|
|
3263
3519
|
|
|
3520
|
+
/* Variants - Title */
|
|
3264
3521
|
.skeleton-title {
|
|
3265
|
-
height:
|
|
3266
|
-
width:
|
|
3522
|
+
height: 2em;
|
|
3523
|
+
width: 60%;
|
|
3267
3524
|
margin-bottom: var(--spacing-3);
|
|
3268
3525
|
}
|
|
3269
3526
|
|
|
3527
|
+
/* Variants - Avatar */
|
|
3270
3528
|
.skeleton-avatar {
|
|
3271
|
-
width:
|
|
3272
|
-
height:
|
|
3529
|
+
width: 48px;
|
|
3530
|
+
height: 48px;
|
|
3273
3531
|
border-radius: var(--radius-full);
|
|
3274
3532
|
}
|
|
3275
3533
|
|
|
3534
|
+
/* Variants - Button */
|
|
3276
3535
|
.skeleton-button {
|
|
3277
3536
|
height: 40px;
|
|
3278
|
-
width:
|
|
3537
|
+
width: 120px;
|
|
3538
|
+
border-radius: var(--radius-control);
|
|
3279
3539
|
}
|
|
3280
3540
|
|
|
3541
|
+
/* Variants - Card */
|
|
3281
3542
|
.skeleton-card {
|
|
3282
3543
|
height: 200px;
|
|
3544
|
+
width: 100%;
|
|
3545
|
+
border-radius: var(--radius-container);
|
|
3283
3546
|
}
|
|
3284
3547
|
|
|
3285
3548
|
|
|
@@ -3287,6 +3550,53 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
3287
3550
|
DATA DISPLAY — Table, Empty State
|
|
3288
3551
|
═══════════════════════════════════════════════════════════════════════════ */
|
|
3289
3552
|
|
|
3553
|
+
/* ─── Empty State Framework ─── */
|
|
3554
|
+
.empty-state {
|
|
3555
|
+
display: flex;
|
|
3556
|
+
flex-direction: column;
|
|
3557
|
+
align-items: center;
|
|
3558
|
+
justify-content: center;
|
|
3559
|
+
text-align: center;
|
|
3560
|
+
padding: var(--spacing-32);
|
|
3561
|
+
gap: var(--spacing-6);
|
|
3562
|
+
min-height: 300px;
|
|
3563
|
+
}
|
|
3564
|
+
|
|
3565
|
+
.empty-state-icon {
|
|
3566
|
+
width: 80px;
|
|
3567
|
+
height: 80px;
|
|
3568
|
+
color: var(--text-tertiary);
|
|
3569
|
+
opacity: 0.6;
|
|
3570
|
+
}
|
|
3571
|
+
|
|
3572
|
+
[data-mode="product"] .empty-state-icon {
|
|
3573
|
+
width: 64px;
|
|
3574
|
+
height: 64px;
|
|
3575
|
+
}
|
|
3576
|
+
|
|
3577
|
+
.empty-state-title {
|
|
3578
|
+
font-size: var(--font-size-24);
|
|
3579
|
+
font-weight: var(--font-weight-bold);
|
|
3580
|
+
color: var(--text-primary);
|
|
3581
|
+
margin: 0;
|
|
3582
|
+
}
|
|
3583
|
+
|
|
3584
|
+
.empty-state-description {
|
|
3585
|
+
font-size: var(--font-size-16);
|
|
3586
|
+
color: var(--text-secondary);
|
|
3587
|
+
max-width: 400px;
|
|
3588
|
+
margin: 0;
|
|
3589
|
+
line-height: var(--line-height-relaxed);
|
|
3590
|
+
}
|
|
3591
|
+
|
|
3592
|
+
.empty-state-actions {
|
|
3593
|
+
display: flex;
|
|
3594
|
+
gap: var(--spacing-3);
|
|
3595
|
+
margin-top: var(--spacing-4);
|
|
3596
|
+
flex-wrap: wrap;
|
|
3597
|
+
justify-content: center;
|
|
3598
|
+
}
|
|
3599
|
+
|
|
3290
3600
|
/* Table */
|
|
3291
3601
|
.table-wrapper {
|
|
3292
3602
|
overflow-x: auto;
|
|
@@ -5282,9 +5592,12 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5282
5592
|
box-shadow: 0 0 0 4px var(--color-brand-soft-hover);
|
|
5283
5593
|
}
|
|
5284
5594
|
|
|
5285
|
-
/*
|
|
5286
|
-
|
|
5595
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
5596
|
+
ACCESSIBILITY — Reduced Motion Preferences
|
|
5597
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
5287
5598
|
|
|
5599
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5600
|
+
/* Disable ALL animations and transitions */
|
|
5288
5601
|
*,
|
|
5289
5602
|
*::before,
|
|
5290
5603
|
*::after {
|
|
@@ -5293,6 +5606,30 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5293
5606
|
transition-duration: 0.01ms !important;
|
|
5294
5607
|
scroll-behavior: auto !important;
|
|
5295
5608
|
}
|
|
5609
|
+
|
|
5610
|
+
/* Remove ALL transform-based interactions */
|
|
5611
|
+
.btn:hover:not(:disabled),
|
|
5612
|
+
.btn:active:not(:disabled),
|
|
5613
|
+
.card-interactive:hover,
|
|
5614
|
+
.card-interactive:active,
|
|
5615
|
+
.card-visual:hover,
|
|
5616
|
+
.card-glass.card-interactive:hover {
|
|
5617
|
+
transform: none !important;
|
|
5618
|
+
}
|
|
5619
|
+
|
|
5620
|
+
/* Keep blur effects (not motion-inducing) */
|
|
5621
|
+
[data-mode="display"] .sidebar,
|
|
5622
|
+
[data-mode="display"] .navbar,
|
|
5623
|
+
[data-mode="display"] .card-glass,
|
|
5624
|
+
[data-mode="display"] .modal-backdrop {
|
|
5625
|
+
backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg))) !important;
|
|
5626
|
+
-webkit-backdrop-filter: blur(var(--mode-blur-amount, var(--blur-lg))) !important;
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5629
|
+
/* Reduce skeleton pulse to just opacity change (no motion) */
|
|
5630
|
+
.skeleton {
|
|
5631
|
+
animation: skeleton-pulse 1.5s ease-in-out infinite !important;
|
|
5632
|
+
}
|
|
5296
5633
|
}
|
|
5297
5634
|
|
|
5298
5635
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -5336,24 +5673,8 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
5336
5673
|
min-height: var(--mode-touch-target, 40px);
|
|
5337
5674
|
}
|
|
5338
5675
|
|
|
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
|
-
}
|
|
5676
|
+
/* Mode-aware Buttons - Removed */
|
|
5677
|
+
/* (Replaced with proportional scaling system below) */
|
|
5357
5678
|
|
|
5358
5679
|
/* Mode-aware Cards */
|
|
5359
5680
|
[data-mode="display"] .card {
|
|
@@ -6336,6 +6657,25 @@ a.navbar-link:focus:not(:focus-visible) {
|
|
|
6336
6657
|
display: inline-block;
|
|
6337
6658
|
}
|
|
6338
6659
|
|
|
6660
|
+
/* Brand-aware gradient text (mode & brand aware) */
|
|
6661
|
+
.gradient-text-brand {
|
|
6662
|
+
background: linear-gradient(135deg, var(--color-brand-400), var(--color-brand-600));
|
|
6663
|
+
-webkit-background-clip: text;
|
|
6664
|
+
-webkit-text-fill-color: transparent;
|
|
6665
|
+
background-clip: text;
|
|
6666
|
+
display: inline-block;
|
|
6667
|
+
}
|
|
6668
|
+
|
|
6669
|
+
/* Display mode: more dramatic */
|
|
6670
|
+
[data-mode="display"] .gradient-text-brand {
|
|
6671
|
+
background: linear-gradient(135deg, var(--color-brand-300), var(--color-brand-700));
|
|
6672
|
+
}
|
|
6673
|
+
|
|
6674
|
+
/* Product mode: more subtle */
|
|
6675
|
+
[data-mode="product"] .gradient-text-brand {
|
|
6676
|
+
background: linear-gradient(135deg, var(--color-brand-500), var(--color-brand-600));
|
|
6677
|
+
}
|
|
6678
|
+
|
|
6339
6679
|
|
|
6340
6680
|
/* ─── Section Header ─── */
|
|
6341
6681
|
.section-header {
|