@santi020k/lumen 0.2.0 → 0.4.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.
package/styles.css CHANGED
@@ -26,6 +26,22 @@
26
26
  --success: 142 71% 36%;
27
27
  --warning: 38 92% 50%;
28
28
  --danger: 0 84% 60%;
29
+ --chart-axis: var(--ink-muted);
30
+ --chart-diverging-mid: 220 13% 91%;
31
+ --chart-diverging-negative: 0 84% 60%;
32
+ --chart-diverging-positive: 221 83% 53%;
33
+ --chart-grid: var(--line);
34
+ --chart-sequential-high: 221 83% 40%;
35
+ --chart-sequential-low: 218 100% 97%;
36
+ --chart-sequential-mid: 221 83% 67%;
37
+ --chart-series-1: 221 83% 53%;
38
+ --chart-series-2: 168 76% 36%;
39
+ --chart-series-3: 280 72% 56%;
40
+ --chart-series-4: 25 95% 53%;
41
+ --chart-series-5: 340 82% 55%;
42
+ --chart-series-6: 190 82% 42%;
43
+ --chart-series-7: 52 92% 45%;
44
+ --chart-series-8: 215 16% 47%;
29
45
  --ui-on-danger: 0 0% 0%;
30
46
  --ui-radius: 0.625rem;
31
47
  --ui-radius-sm: 0.375rem;
@@ -49,7 +65,7 @@
49
65
  0 1px 2px hsl(222 47% 11% / 0.08),
50
66
  0 12px 32px hsl(222 47% 11% / 0.12),
51
67
  0 32px 80px hsl(222 47% 11% / 0.14);
52
- --ui-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
68
+ --ui-font: "Montserrat", "Avenir Next", "Segoe UI", sans-serif;
53
69
  --ui-duration-fast: 120ms;
54
70
  --ui-duration: 160ms;
55
71
  --ui-duration-slow: 300ms;
@@ -75,6 +91,22 @@
75
91
  --success: 142 69% 45%;
76
92
  --warning: 38 92% 55%;
77
93
  --danger: 0 84% 65%;
94
+ --chart-axis: var(--ink-muted);
95
+ --chart-diverging-mid: 222 14% 22%;
96
+ --chart-diverging-negative: 0 84% 65%;
97
+ --chart-diverging-positive: 199 91% 56%;
98
+ --chart-grid: var(--line);
99
+ --chart-sequential-high: 199 91% 66%;
100
+ --chart-sequential-low: 199 84% 16%;
101
+ --chart-sequential-mid: 199 72% 42%;
102
+ --chart-series-1: 199 91% 56%;
103
+ --chart-series-2: 166 76% 43%;
104
+ --chart-series-3: 285 82% 72%;
105
+ --chart-series-4: 31 96% 62%;
106
+ --chart-series-5: 342 88% 68%;
107
+ --chart-series-6: 188 86% 54%;
108
+ --chart-series-7: 52 94% 58%;
109
+ --chart-series-8: 215 18% 68%;
78
110
  --ui-on-danger: var(--canvas);
79
111
  --ui-shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.18);
80
112
  --ui-shadow-md: 0 12px 32px hsl(0 0% 0% / 0.24);
@@ -243,6 +275,7 @@
243
275
  .ui-skeleton,
244
276
  .ui-slider,
245
277
  .ui-sonner,
278
+ .ui-sparkline,
246
279
  .ui-spinner,
247
280
  .ui-switch,
248
281
  .ui-table-wrap,
@@ -264,7 +297,7 @@
264
297
  font-family: var(--ui-font);
265
298
  }
266
299
 
267
- :where(.ui-button, .ui-back-to-top, .ui-code__copy, .ui-input, .ui-language-toggle, .ui-link, .ui-select, .ui-skip-link, .ui-textarea, .ui-checkbox, .ui-switch, .ui-toggle, .ui-slider, .ui-color-picker, .ui-resizable__handle):focus-visible {
300
+ :where(.ui-button, .ui-back-to-top, .ui-code__copy, .ui-input, .ui-language-toggle, .ui-link, .ui-select, .ui-skip-link, .ui-textarea, .ui-checkbox, .ui-switch, .ui-toggle, .ui-theme-toggle, .ui-slider, .ui-color-picker, .ui-resizable__handle):focus-visible {
268
301
  outline: 2px solid hsl(var(--brand));
269
302
  outline-offset: 2px;
270
303
  }
@@ -957,21 +990,20 @@
957
990
  min-height: 12rem;
958
991
  overflow: hidden;
959
992
  border-radius: var(--ui-radius-lg);
960
- background-color: hsl(var(--surface-muted));
961
- background-image:
962
- radial-gradient(circle, hsl(var(--brand) / 0.34) 0 2px, transparent 2.5px),
963
- radial-gradient(circle, hsl(var(--accent) / 0.28) 0 1.5px, transparent 2px),
964
- radial-gradient(circle, hsl(var(--ink) / 0.14) 0 1px, transparent 1.5px);
965
- background-position: 1rem 1rem, 3.5rem 2.5rem, 6rem 4rem;
966
- background-size: 7rem 7rem, 9rem 9rem, 5rem 5rem;
967
- }
968
-
969
- .ui-particles[data-ui-particles="low"] {
970
- background-size: 11rem 11rem, 14rem 14rem, 9rem 9rem;
993
+ background: transparent;
971
994
  }
972
995
 
973
- .ui-particles[data-ui-particles="high"] {
974
- background-size: 4.5rem 4.5rem, 6rem 6rem, 3.5rem 3.5rem;
996
+ .ui-particles__particle {
997
+ position: absolute;
998
+ top: var(--ui-particle-top);
999
+ left: var(--ui-particle-left);
1000
+ width: var(--ui-particle-size);
1001
+ height: var(--ui-particle-size);
1002
+ border-radius: 50%;
1003
+ background: hsl(var(--ui-particle-tone) / 0.25);
1004
+ box-shadow: 0 0 var(--ui-particle-size) hsl(var(--ui-particle-tone) / 0.15);
1005
+ opacity: 0;
1006
+ animation: ui-particle-drift var(--ui-particle-duration) ease-in-out var(--ui-particle-delay) infinite;
975
1007
  }
976
1008
 
977
1009
  .ui-motion-duration-fast {
@@ -1716,16 +1748,28 @@
1716
1748
 
1717
1749
  .ui-accordion {
1718
1750
  display: grid;
1719
- gap: 0.5rem;
1751
+ gap: 0.75rem;
1720
1752
  }
1721
1753
 
1722
1754
  .ui-accordion details,
1723
1755
  .ui-collapsible {
1756
+ overflow: clip;
1724
1757
  border: 1px solid hsl(var(--line));
1725
- border-radius: var(--ui-radius);
1758
+ border-radius: var(--ui-radius-lg);
1726
1759
  background: hsl(var(--surface));
1727
1760
  color: hsl(var(--ink-soft));
1728
- padding: 0.85rem 1rem;
1761
+ box-shadow: var(--ui-shadow-sm);
1762
+ transition:
1763
+ border-color var(--ui-duration-fast) var(--ui-ease),
1764
+ box-shadow var(--ui-duration-fast) var(--ui-ease);
1765
+ }
1766
+
1767
+ .ui-accordion details[open],
1768
+ .ui-collapsible[open] {
1769
+ border-color: hsl(var(--brand) / 0.38);
1770
+ box-shadow:
1771
+ 0 0 0 1px hsl(var(--brand) / 0.08),
1772
+ var(--ui-shadow-sm);
1729
1773
  }
1730
1774
 
1731
1775
  .ui-accordion--flush {
@@ -1734,11 +1778,18 @@
1734
1778
  }
1735
1779
 
1736
1780
  .ui-accordion--flush details {
1781
+ overflow: visible;
1737
1782
  border: 0;
1738
1783
  border-bottom: 1px solid hsl(var(--line));
1739
1784
  border-radius: 0;
1740
1785
  background: transparent;
1741
- padding: 1.25rem 0;
1786
+ box-shadow: none;
1787
+ }
1788
+
1789
+ .ui-accordion--flush details[open] {
1790
+ border-color: hsl(var(--line));
1791
+ background: transparent;
1792
+ box-shadow: none;
1742
1793
  }
1743
1794
 
1744
1795
  .ui-accordion summary,
@@ -1751,6 +1802,32 @@
1751
1802
  list-style: none;
1752
1803
  color: hsl(var(--ink));
1753
1804
  font-weight: 650;
1805
+ line-height: 1.35;
1806
+ min-height: 3.5rem;
1807
+ padding: 1rem 1.125rem;
1808
+ transition:
1809
+ background-color var(--ui-duration-fast) var(--ui-ease),
1810
+ color var(--ui-duration-fast) var(--ui-ease);
1811
+ }
1812
+
1813
+ .ui-accordion summary:hover,
1814
+ .ui-collapsible summary:hover {
1815
+ background: hsl(var(--surface-muted));
1816
+ }
1817
+
1818
+ .ui-accordion details[open] > summary,
1819
+ .ui-collapsible[open] > summary {
1820
+ color: hsl(var(--brand));
1821
+ }
1822
+
1823
+ .ui-accordion details[open],
1824
+ .ui-collapsible[open] {
1825
+ padding-block-end: 1rem;
1826
+ }
1827
+
1828
+ .ui-accordion details > :not(summary),
1829
+ .ui-collapsible > :not(summary) {
1830
+ margin-inline: 1.125rem;
1754
1831
  }
1755
1832
 
1756
1833
  .ui-accordion summary::-webkit-details-marker,
@@ -1765,33 +1842,90 @@
1765
1842
  border-right: 1.5px solid hsl(var(--ink-muted));
1766
1843
  border-bottom: 1.5px solid hsl(var(--ink-muted));
1767
1844
  content: "";
1845
+ border-radius: 1px;
1846
+ box-shadow: 0 0 0 0.45rem hsl(var(--surface-muted));
1768
1847
  transform: rotate(45deg) translate(-0.1rem, -0.1rem);
1769
- transition: transform var(--ui-duration-fast) var(--ui-ease-standard);
1848
+ transition:
1849
+ border-color var(--ui-duration-fast) var(--ui-ease),
1850
+ box-shadow var(--ui-duration-fast) var(--ui-ease),
1851
+ transform var(--ui-duration-fast) var(--ui-ease);
1770
1852
  }
1771
1853
 
1772
1854
  .ui-accordion details[open] > summary::after,
1773
1855
  .ui-collapsible[open] > summary::after {
1856
+ border-color: hsl(var(--brand));
1857
+ box-shadow: 0 0 0 0.45rem hsl(var(--brand-soft));
1774
1858
  transform: rotate(225deg) translate(-0.1rem, -0.1rem);
1775
1859
  }
1776
1860
 
1777
1861
  .ui-accordion summary:hover::after,
1778
1862
  .ui-collapsible summary:hover::after {
1779
1863
  border-color: hsl(var(--brand));
1864
+ box-shadow: 0 0 0 0.45rem hsl(var(--brand-soft));
1780
1865
  }
1781
1866
 
1782
1867
  .ui-accordion summary:focus-visible,
1783
1868
  .ui-collapsible summary:focus-visible {
1784
- border-radius: calc(var(--ui-radius) * 0.6);
1869
+ border-radius: calc(var(--ui-radius-lg) - 1px);
1785
1870
  outline: 2px solid hsl(var(--brand));
1786
- outline-offset: 0.35rem;
1871
+ outline-offset: -3px;
1872
+ }
1873
+
1874
+ .ui-accordion--flush details[open] {
1875
+ padding-block-end: 1.25rem;
1876
+ }
1877
+
1878
+ .ui-accordion--flush summary {
1879
+ min-height: 4rem;
1880
+ padding: 1.125rem 0.25rem;
1881
+ }
1882
+
1883
+ .ui-accordion--flush summary:hover {
1884
+ border-radius: var(--ui-radius);
1885
+ background: hsl(var(--surface-muted) / 0.72);
1886
+ box-shadow: 0 0 0 0.625rem hsl(var(--surface-muted) / 0.72);
1887
+ }
1888
+
1889
+ .ui-accordion--flush details[open] > summary {
1890
+ color: hsl(var(--ink));
1891
+ }
1892
+
1893
+ .ui-accordion--flush details > :not(summary) {
1894
+ margin-inline: 0.25rem;
1895
+ }
1896
+
1897
+ .ui-accordion--flush details[open] > summary::before {
1898
+ width: 0.2rem;
1899
+ height: 1.25rem;
1900
+ border-radius: 999px;
1901
+ background: hsl(var(--brand));
1902
+ content: "";
1903
+ position: absolute;
1904
+ inset-inline-start: -0.875rem;
1905
+ }
1906
+
1907
+ .ui-accordion--flush summary {
1908
+ position: relative;
1787
1909
  }
1788
1910
 
1789
1911
  .ui-accordion p,
1790
1912
  .ui-collapsible p {
1913
+ color: hsl(var(--ink-soft));
1791
1914
  margin-block-end: 0;
1792
1915
  line-height: 1.6;
1793
1916
  }
1794
1917
 
1918
+ @media (prefers-reduced-motion: reduce) {
1919
+ .ui-accordion details,
1920
+ .ui-collapsible,
1921
+ .ui-accordion summary,
1922
+ .ui-collapsible summary,
1923
+ .ui-accordion summary::after,
1924
+ .ui-collapsible summary::after {
1925
+ transition: none;
1926
+ }
1927
+ }
1928
+
1795
1929
  .ui-dialog,
1796
1930
  .ui-alert-dialog,
1797
1931
  .ui-drawer,
@@ -1817,6 +1951,19 @@
1817
1951
  transform: translate(-50%, -50%);
1818
1952
  }
1819
1953
 
1954
+ .ui-dialog--fullscreen {
1955
+ inset: 0;
1956
+ width: 100%;
1957
+ max-width: none;
1958
+ height: 100dvh;
1959
+ max-height: none;
1960
+ margin: 0;
1961
+ border: 0;
1962
+ border-radius: 0;
1963
+ padding: 0;
1964
+ transform: none;
1965
+ }
1966
+
1820
1967
  .ui-dialog::backdrop,
1821
1968
  .ui-alert-dialog::backdrop,
1822
1969
  .ui-drawer::backdrop,
@@ -2178,6 +2325,96 @@
2178
2325
  color: hsl(var(--ink-soft));
2179
2326
  }
2180
2327
 
2328
+ .ui-code-tabs {
2329
+ display: block;
2330
+ overflow: hidden;
2331
+ border: 1px solid hsl(var(--line));
2332
+ border-radius: var(--ui-radius-lg);
2333
+ background: hsl(var(--surface-muted));
2334
+ }
2335
+
2336
+ .ui-code-tabs .ui-code-tabs__list {
2337
+ display: flex;
2338
+ width: auto;
2339
+ gap: 0.25rem;
2340
+ border: 0;
2341
+ border-bottom: 1px solid hsl(var(--line));
2342
+ border-radius: 0;
2343
+ background: hsl(var(--surface));
2344
+ padding: 0.375rem;
2345
+ }
2346
+
2347
+ .ui-code-tabs .ui-code-tabs__tab {
2348
+ min-width: 4.25rem;
2349
+ border: 0;
2350
+ border-radius: var(--ui-radius-sm);
2351
+ background: transparent;
2352
+ color: hsl(var(--ink-muted));
2353
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
2354
+ font-size: 0.8125rem;
2355
+ font-weight: 500;
2356
+ padding: 0.5rem 0.875rem;
2357
+ transition:
2358
+ background-color 150ms ease,
2359
+ color 150ms ease;
2360
+ }
2361
+
2362
+ .ui-code-tabs .ui-code-tabs__tab:hover {
2363
+ background: hsl(var(--surface-muted));
2364
+ color: hsl(var(--ink));
2365
+ }
2366
+
2367
+ .ui-code-tabs .ui-code-tabs__tab[aria-selected="true"] {
2368
+ background: hsl(var(--brand-soft));
2369
+ box-shadow: none;
2370
+ color: hsl(var(--brand));
2371
+ }
2372
+
2373
+ .ui-code-tabs .ui-code-tabs__tab:focus-visible {
2374
+ outline: 2px solid hsl(var(--brand));
2375
+ outline-offset: 1px;
2376
+ }
2377
+
2378
+ .ui-code-tabs .ui-code-tabs__panel {
2379
+ color: hsl(var(--ink));
2380
+ }
2381
+
2382
+ .ui-code-tabs .ui-code--block {
2383
+ margin: 0;
2384
+ border: 0;
2385
+ border-radius: 0;
2386
+ background: transparent;
2387
+ box-shadow: none;
2388
+ }
2389
+
2390
+ .ui-code-tabs .ui-code__header {
2391
+ position: absolute;
2392
+ z-index: 1;
2393
+ inset-block-start: 0.75rem;
2394
+ inset-inline-end: 0.75rem;
2395
+ display: block;
2396
+ min-height: 0;
2397
+ border: 0;
2398
+ background: transparent;
2399
+ padding: 0;
2400
+ }
2401
+
2402
+ .ui-code-tabs .ui-code__dots,
2403
+ .ui-code-tabs .ui-code__meta {
2404
+ display: none;
2405
+ }
2406
+
2407
+ .ui-code-tabs .ui-code--block :where(pre) {
2408
+ min-height: 3.5rem;
2409
+ padding: 1rem 3.75rem 1rem 1.25rem;
2410
+ }
2411
+
2412
+ @media (prefers-reduced-motion: reduce) {
2413
+ .ui-code-tabs .ui-code-tabs__tab {
2414
+ transition: none;
2415
+ }
2416
+ }
2417
+
2181
2418
  .ui-table-wrap,
2182
2419
  .ui-data-table {
2183
2420
  width: 100%;
@@ -3188,6 +3425,11 @@
3188
3425
  gap: 0.75rem;
3189
3426
  }
3190
3427
 
3428
+ .ui-chart__heading {
3429
+ display: grid;
3430
+ gap: 0.25rem;
3431
+ }
3432
+
3191
3433
  .ui-chart h2,
3192
3434
  .ui-chart h3,
3193
3435
  .ui-chart p {
@@ -3208,6 +3450,24 @@
3208
3450
  color: hsl(var(--brand));
3209
3451
  }
3210
3452
 
3453
+ .ui-chart__plot {
3454
+ min-width: 0;
3455
+ overflow-x: auto;
3456
+ }
3457
+
3458
+ .ui-chart__empty {
3459
+ min-height: 10rem;
3460
+ display: grid;
3461
+ margin: 0;
3462
+ color: hsl(var(--ink-muted));
3463
+ place-items: center;
3464
+ text-align: center;
3465
+ }
3466
+
3467
+ .ui-chart__plot > svg {
3468
+ min-width: 32rem;
3469
+ }
3470
+
3211
3471
  .ui-chart svg :where(path, polyline, line) {
3212
3472
  vector-effect: non-scaling-stroke;
3213
3473
  stroke-linecap: round;
@@ -3220,6 +3480,273 @@
3220
3480
  line-height: 1.5;
3221
3481
  }
3222
3482
 
3483
+ .ui-chart__legend {
3484
+ display: flex;
3485
+ flex-wrap: wrap;
3486
+ gap: 0.5rem 1rem;
3487
+ margin: 0;
3488
+ padding: 0;
3489
+ color: hsl(var(--ink-soft));
3490
+ font-size: 0.75rem;
3491
+ list-style: none;
3492
+ }
3493
+
3494
+ .ui-chart__legend li {
3495
+ display: inline-flex;
3496
+ align-items: center;
3497
+ gap: 0.4rem;
3498
+ }
3499
+
3500
+ .ui-chart__legend li > span {
3501
+ width: 0.65rem;
3502
+ height: 0.65rem;
3503
+ border: 2px solid var(--ui-chart-color);
3504
+ border-radius: 999px;
3505
+ background: color-mix(in srgb, var(--ui-chart-color) 30%, transparent);
3506
+ }
3507
+
3508
+ .ui-chart__grid line {
3509
+ stroke: hsl(var(--chart-grid) / 0.72);
3510
+ stroke-width: 1;
3511
+ }
3512
+
3513
+ .ui-chart__grid text,
3514
+ .ui-chart__axis-labels text {
3515
+ fill: hsl(var(--chart-axis));
3516
+ font-size: 0.6875rem;
3517
+ }
3518
+
3519
+ .ui-chart__grid text {
3520
+ dominant-baseline: middle;
3521
+ text-anchor: end;
3522
+ }
3523
+
3524
+ .ui-chart__reference {
3525
+ stroke: hsl(var(--ink-muted));
3526
+ stroke-dasharray: 5 5;
3527
+ stroke-width: 1.5;
3528
+ }
3529
+
3530
+ .ui-chart__data {
3531
+ border-top: 1px solid hsl(var(--line));
3532
+ color: hsl(var(--ink-soft));
3533
+ font-size: 0.8125rem;
3534
+ padding-block-start: 0.75rem;
3535
+ }
3536
+
3537
+ .ui-chart__data summary {
3538
+ width: fit-content;
3539
+ border-radius: var(--ui-radius-sm);
3540
+ color: hsl(var(--brand));
3541
+ cursor: pointer;
3542
+ font-weight: 700;
3543
+ }
3544
+
3545
+ .ui-chart__data summary:focus-visible {
3546
+ outline: 2px solid hsl(var(--brand) / 0.72);
3547
+ outline-offset: 0.2rem;
3548
+ }
3549
+
3550
+ .ui-chart__data > div {
3551
+ overflow-x: auto;
3552
+ margin-block-start: 0.75rem;
3553
+ }
3554
+
3555
+ .ui-chart__data table {
3556
+ width: 100%;
3557
+ border-collapse: collapse;
3558
+ }
3559
+
3560
+ .ui-chart__data :where(th, td) {
3561
+ border-bottom: 1px solid hsl(var(--line));
3562
+ padding: 0.5rem;
3563
+ text-align: end;
3564
+ white-space: nowrap;
3565
+ }
3566
+
3567
+ .ui-chart__data :where(th, td):first-child {
3568
+ text-align: start;
3569
+ }
3570
+
3571
+ .ui-chart__data th {
3572
+ color: hsl(var(--ink));
3573
+ font-weight: 700;
3574
+ }
3575
+
3576
+ .ui-chart-tone--series-1 {
3577
+ --ui-chart-color: hsl(var(--chart-series-1));
3578
+ }
3579
+
3580
+ .ui-chart-tone--series-2 {
3581
+ --ui-chart-color: hsl(var(--chart-series-2));
3582
+ }
3583
+
3584
+ .ui-chart-tone--series-3 {
3585
+ --ui-chart-color: hsl(var(--chart-series-3));
3586
+ }
3587
+
3588
+ .ui-chart-tone--series-4 {
3589
+ --ui-chart-color: hsl(var(--chart-series-4));
3590
+ }
3591
+
3592
+ .ui-chart-tone--series-5 {
3593
+ --ui-chart-color: hsl(var(--chart-series-5));
3594
+ }
3595
+
3596
+ .ui-chart-tone--series-6 {
3597
+ --ui-chart-color: hsl(var(--chart-series-6));
3598
+ }
3599
+
3600
+ .ui-chart-tone--series-7 {
3601
+ --ui-chart-color: hsl(var(--chart-series-7));
3602
+ }
3603
+
3604
+ .ui-chart-tone--series-8 {
3605
+ --ui-chart-color: hsl(var(--chart-series-8));
3606
+ }
3607
+
3608
+ .ui-chart-tone--brand {
3609
+ --ui-chart-color: hsl(var(--brand));
3610
+ }
3611
+
3612
+ .ui-chart-tone--accent {
3613
+ --ui-chart-color: hsl(var(--accent));
3614
+ }
3615
+
3616
+ .ui-chart-tone--success {
3617
+ --ui-chart-color: hsl(var(--success));
3618
+ }
3619
+
3620
+ .ui-chart-tone--warning {
3621
+ --ui-chart-color: hsl(var(--warning));
3622
+ }
3623
+
3624
+ .ui-chart-tone--danger {
3625
+ --ui-chart-color: hsl(var(--danger));
3626
+ }
3627
+
3628
+ .ui-chart-tone--neutral {
3629
+ --ui-chart-color: hsl(var(--ink-muted));
3630
+ }
3631
+
3632
+ .ui-bar-chart__marks rect {
3633
+ fill: var(--ui-chart-color);
3634
+ }
3635
+
3636
+ .ui-pie-chart__plot {
3637
+ position: relative;
3638
+ display: grid;
3639
+ overflow: visible;
3640
+ place-items: center;
3641
+ }
3642
+
3643
+ .ui-pie-chart__plot > svg {
3644
+ z-index: 0;
3645
+ grid-area: 1 / 1;
3646
+ width: min(100%, 20rem);
3647
+ min-width: 0;
3648
+ min-height: 0;
3649
+ aspect-ratio: 1;
3650
+ }
3651
+
3652
+ .ui-pie-chart__slices path {
3653
+ fill: var(--ui-chart-color);
3654
+ stroke: hsl(var(--surface));
3655
+ stroke-width: 2;
3656
+ }
3657
+
3658
+ .ui-pie-chart__center {
3659
+ z-index: 1;
3660
+ display: grid;
3661
+ grid-area: 1 / 1;
3662
+ max-width: 7rem;
3663
+ gap: 0.2rem;
3664
+ place-items: center;
3665
+ text-align: center;
3666
+ pointer-events: none;
3667
+ }
3668
+
3669
+ .ui-pie-chart__center strong {
3670
+ color: hsl(var(--ink));
3671
+ font-size: clamp(1.35rem, 5vw, 2rem);
3672
+ line-height: 1;
3673
+ }
3674
+
3675
+ .ui-pie-chart__center span {
3676
+ color: hsl(var(--ink-muted));
3677
+ font-size: 0.75rem;
3678
+ line-height: 1.25;
3679
+ }
3680
+
3681
+ .ui-line-chart__line,
3682
+ .ui-sparkline__line {
3683
+ fill: none;
3684
+ stroke: var(--ui-chart-color);
3685
+ stroke-width: 2.5;
3686
+ }
3687
+
3688
+ .ui-line-chart__area,
3689
+ .ui-sparkline__area {
3690
+ fill: color-mix(in srgb, var(--ui-chart-color) 18%, transparent);
3691
+ stroke: none;
3692
+ }
3693
+
3694
+ .ui-line-chart__point,
3695
+ .ui-sparkline__endpoint {
3696
+ fill: hsl(var(--surface));
3697
+ stroke: var(--ui-chart-color);
3698
+ stroke-width: 2;
3699
+ }
3700
+
3701
+ .ui-line-chart__series.ui-chart-tone--series-2 .ui-line-chart__line {
3702
+ stroke-dasharray: 8 5;
3703
+ }
3704
+
3705
+ .ui-line-chart__series.ui-chart-tone--series-3 .ui-line-chart__line {
3706
+ stroke-dasharray: 3 4;
3707
+ }
3708
+
3709
+ .ui-line-chart__series.ui-chart-tone--series-4 .ui-line-chart__line {
3710
+ stroke-dasharray: 10 4 2 4;
3711
+ }
3712
+
3713
+ .ui-line-chart__series:is(
3714
+ .ui-chart-tone--series-5,
3715
+ .ui-chart-tone--series-6,
3716
+ .ui-chart-tone--series-7,
3717
+ .ui-chart-tone--series-8
3718
+ ) .ui-line-chart__line {
3719
+ stroke-dasharray: 2 5;
3720
+ }
3721
+
3722
+ .ui-sparkline {
3723
+ display: inline-flex;
3724
+ width: 8rem;
3725
+ height: 2.5rem;
3726
+ color: hsl(var(--ink));
3727
+ }
3728
+
3729
+ .ui-sparkline svg {
3730
+ display: block;
3731
+ width: 100%;
3732
+ height: 100%;
3733
+ overflow: visible;
3734
+ }
3735
+
3736
+ @media (prefers-reduced-motion: no-preference) {
3737
+ .ui-pie-chart__slices path {
3738
+ transition:
3739
+ opacity var(--ui-duration-fast) var(--ui-ease),
3740
+ transform var(--ui-duration-fast) var(--ui-ease);
3741
+ transform-box: fill-box;
3742
+ transform-origin: center;
3743
+ }
3744
+
3745
+ .ui-pie-chart__slices path:hover {
3746
+ transform: scale(1.025);
3747
+ }
3748
+ }
3749
+
3223
3750
  .ui-sonner {
3224
3751
  position: fixed;
3225
3752
  z-index: 50;
@@ -3848,6 +4375,7 @@
3848
4375
  .ui-date-picker-field--glass .ui-date-picker__popover,
3849
4376
  .ui-select-field--glass .ui-select__list,
3850
4377
  .ui-sidebar--glass,
4378
+ .ui-stat--glass,
3851
4379
  .ui-table-wrap--glass,
3852
4380
  .ui-tabs--glass,
3853
4381
  .ui-theme-builder--glass,
@@ -4045,6 +4573,7 @@
4045
4573
  .ui-date-picker-field--glass .ui-date-picker__popover,
4046
4574
  .ui-select-field--glass .ui-select__list,
4047
4575
  .ui-sidebar--glass,
4576
+ .ui-stat--glass,
4048
4577
  .ui-table-wrap--glass,
4049
4578
  .ui-tabs--glass,
4050
4579
  .ui-theme-builder--glass,
@@ -4110,6 +4639,16 @@
4110
4639
  }
4111
4640
  }
4112
4641
 
4642
+ .ui-dialog--fullscreen:not([open]) {
4643
+ transform: none;
4644
+ }
4645
+
4646
+ @starting-style {
4647
+ .ui-dialog--fullscreen[open] {
4648
+ transform: none;
4649
+ }
4650
+ }
4651
+
4113
4652
  .ui-drawer {
4114
4653
  transition:
4115
4654
  opacity var(--ui-duration) var(--ui-ease),
@@ -4491,10 +5030,10 @@
4491
5030
  opacity: 0;
4492
5031
  }
4493
5032
  10% {
4494
- opacity: 0.15;
5033
+ opacity: 0.9;
4495
5034
  }
4496
5035
  90% {
4497
- opacity: 0.1;
5036
+ opacity: 0.7;
4498
5037
  }
4499
5038
  100% {
4500
5039
  transform: translateY(-100vh) translateX(20px);
@@ -4502,6 +5041,13 @@
4502
5041
  }
4503
5042
  }
4504
5043
 
5044
+ @media (prefers-reduced-motion: reduce) {
5045
+ .ui-particles__particle {
5046
+ display: none;
5047
+ animation: none;
5048
+ }
5049
+ }
5050
+
4505
5051
  .ui-stat {
4506
5052
  display: flex;
4507
5053
  flex-direction: column;
@@ -4511,6 +5057,32 @@
4511
5057
  border: 1px solid hsl(var(--line));
4512
5058
  border-radius: 0.5rem;
4513
5059
  }
5060
+
5061
+ .ui-stat--accent,
5062
+ .ui-stat--glass {
5063
+ gap: 0.5rem;
5064
+ padding: 1.25rem;
5065
+ border-radius: var(--ui-radius-lg);
5066
+ }
5067
+
5068
+ .ui-stat--accent {
5069
+ border-color: hsl(var(--brand) / 0.2);
5070
+ background: linear-gradient(145deg, hsl(var(--surface)), hsl(var(--brand-soft) / 0.28));
5071
+ box-shadow: var(--ui-shadow-sm);
5072
+ }
5073
+
5074
+ .ui-stat--accent .ui-stat-value,
5075
+ .ui-stat--glass .ui-stat-value {
5076
+ font-size: 2rem;
5077
+ font-weight: 700;
5078
+ line-height: 1.1;
5079
+ letter-spacing: -0.025em;
5080
+ }
5081
+
5082
+ .ui-stat--accent .ui-stat-value {
5083
+ color: hsl(var(--brand));
5084
+ }
5085
+
4514
5086
  .ui-stat-label {
4515
5087
  font-size: 0.875rem;
4516
5088
  color: hsl(var(--ink-muted));
@@ -4675,6 +5247,17 @@
4675
5247
  white-space: nowrap;
4676
5248
  }
4677
5249
 
5250
+ .ui-pill--brand {
5251
+ border-color: hsl(var(--brand) / 0.34);
5252
+ background: hsl(var(--brand-soft) / 0.72);
5253
+ color: hsl(var(--brand));
5254
+ }
5255
+
5256
+ .ui-pill--outline {
5257
+ background: transparent;
5258
+ color: hsl(var(--ink-soft));
5259
+ }
5260
+
4678
5261
  .ui-pill__count {
4679
5262
  margin-left: 0.5rem;
4680
5263
  padding-left: 0.5rem;
@@ -4687,6 +5270,7 @@
4687
5270
 
4688
5271
  a.ui-pill {
4689
5272
  cursor: pointer;
5273
+ min-height: 2.75rem;
4690
5274
  text-decoration: none;
4691
5275
  }
4692
5276
 
@@ -4695,6 +5279,47 @@ a.ui-pill:hover {
4695
5279
  color: hsl(var(--brand-solid));
4696
5280
  }
4697
5281
 
5282
+ a.ui-pill--brand:hover {
5283
+ border-color: hsl(var(--brand) / 0.6);
5284
+ background: hsl(var(--brand-solid));
5285
+ color: hsl(var(--canvas));
5286
+ }
5287
+
5288
+ a.ui-pill:focus-visible {
5289
+ outline: 2px solid hsl(var(--brand));
5290
+ outline-offset: 2px;
5291
+ }
5292
+
5293
+ .ui-scroll-progress {
5294
+ position: fixed;
5295
+ inset: 0 0 auto;
5296
+ z-index: 9999;
5297
+ height: 0.1875rem;
5298
+ overflow: hidden;
5299
+ pointer-events: none;
5300
+ background: hsl(var(--surface-strong) / 0.48);
5301
+ }
5302
+
5303
+ .ui-scroll-progress--bottom {
5304
+ inset: auto 0 0;
5305
+ }
5306
+
5307
+ .ui-scroll-progress__bar {
5308
+ display: block;
5309
+ width: 100%;
5310
+ height: 100%;
5311
+ transform: scaleX(0);
5312
+ transform-origin: left;
5313
+ background: hsl(var(--brand-solid));
5314
+ will-change: transform;
5315
+ }
5316
+
5317
+ @media (prefers-reduced-motion: reduce) {
5318
+ .ui-scroll-progress__bar {
5319
+ transition: none;
5320
+ }
5321
+ }
5322
+
4698
5323
  /* CoverImage hover lift + bottom gradient overlay */
4699
5324
  .ui-cover-image--hover {
4700
5325
  transition: transform 300ms ease;
@@ -5034,6 +5659,16 @@ a.ui-pill:hover {
5034
5659
  text-decoration: none;
5035
5660
  font-size: 0.875rem;
5036
5661
  }
5662
+ .ui-anchor a[data-depth="3"] {
5663
+ padding-inline-start: 1.5rem;
5664
+ font-size: 0.8125rem;
5665
+ }
5666
+ .ui-anchor a[data-depth="4"],
5667
+ .ui-anchor a[data-depth="5"],
5668
+ .ui-anchor a[data-depth="6"] {
5669
+ padding-inline-start: 2.25rem;
5670
+ font-size: 0.8125rem;
5671
+ }
5037
5672
  .ui-anchor a:hover {
5038
5673
  color: hsl(var(--ink));
5039
5674
  }