@duskmoon-dev/core 1.12.3 → 1.13.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.
Files changed (65) hide show
  1. package/dist/cjs/tailwind-plugin.cjs +8 -0
  2. package/dist/components/alert.css +64 -2
  3. package/dist/components/appbar.css +119 -21
  4. package/dist/components/autocomplete.css +63 -3
  5. package/dist/components/avatar.css +22 -2
  6. package/dist/components/button.css +101 -49
  7. package/dist/components/card.css +38 -2
  8. package/dist/components/cascader.css +59 -9
  9. package/dist/components/checkbox.css +15 -5
  10. package/dist/components/chip.css +122 -2
  11. package/dist/components/collapse.css +32 -0
  12. package/dist/components/datepicker.css +79 -6
  13. package/dist/components/file-upload.css +68 -8
  14. package/dist/components/form.css +2 -1
  15. package/dist/components/index.css +1583 -409
  16. package/dist/components/input.css +21 -67
  17. package/dist/components/multi-select.css +59 -9
  18. package/dist/components/otp-input.css +48 -16
  19. package/dist/components/pin-input.css +50 -13
  20. package/dist/components/radio.css +12 -2
  21. package/dist/components/rating.css +35 -3
  22. package/dist/components/segment-control.css +23 -2
  23. package/dist/components/select.css +21 -37
  24. package/dist/components/slider.css +130 -6
  25. package/dist/components/switch.css +27 -4
  26. package/dist/components/textarea.css +21 -96
  27. package/dist/components/time-input.css +61 -12
  28. package/dist/components/toast.css +72 -3
  29. package/dist/components/toggle.css +63 -6
  30. package/dist/components/tooltip.css +84 -0
  31. package/dist/components/tree-select.css +60 -11
  32. package/dist/esm/components/alert.js +64 -2
  33. package/dist/esm/components/appbar.js +119 -21
  34. package/dist/esm/components/autocomplete.js +63 -3
  35. package/dist/esm/components/avatar.js +22 -2
  36. package/dist/esm/components/button.js +101 -49
  37. package/dist/esm/components/card.js +38 -2
  38. package/dist/esm/components/cascader.js +59 -9
  39. package/dist/esm/components/checkbox.js +15 -5
  40. package/dist/esm/components/chip.js +122 -2
  41. package/dist/esm/components/collapse.js +32 -0
  42. package/dist/esm/components/datepicker.js +79 -6
  43. package/dist/esm/components/file-upload.js +68 -8
  44. package/dist/esm/components/form.js +2 -1
  45. package/dist/esm/components/input.js +21 -67
  46. package/dist/esm/components/multi-select.js +59 -9
  47. package/dist/esm/components/otp-input.js +48 -16
  48. package/dist/esm/components/pin-input.js +50 -13
  49. package/dist/esm/components/radio.js +12 -2
  50. package/dist/esm/components/rating.js +35 -3
  51. package/dist/esm/components/segment-control.js +23 -2
  52. package/dist/esm/components/select.js +21 -37
  53. package/dist/esm/components/slider.js +130 -6
  54. package/dist/esm/components/switch.js +27 -4
  55. package/dist/esm/components/textarea.js +21 -96
  56. package/dist/esm/components/time-input.js +61 -12
  57. package/dist/esm/components/toast.js +72 -3
  58. package/dist/esm/components/toggle.js +63 -6
  59. package/dist/esm/components/tooltip.js +84 -0
  60. package/dist/esm/components/tree-select.js +60 -11
  61. package/dist/esm/tailwind-plugin.js +8 -0
  62. package/dist/index.css +1583 -409
  63. package/dist/index.min.css +1 -1
  64. package/dist/types/tailwind-plugin.d.ts.map +1 -1
  65. package/package.json +1 -1
package/dist/index.css CHANGED
@@ -1449,8 +1449,8 @@ html {
1449
1449
  }
1450
1450
 
1451
1451
  .btn:focus-visible {
1452
- outline: 2px solid var(--color-primary);
1453
- outline-offset: 2px;
1452
+ outline: none;
1453
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1454
1454
  }
1455
1455
 
1456
1456
  .btn:disabled {
@@ -1472,10 +1472,6 @@ html {
1472
1472
  filter: none;
1473
1473
  }
1474
1474
 
1475
- .btn-primary:focus-visible {
1476
- outline-color: color-mix(in oklch, var(--color-primary), black 10%);
1477
- }
1478
-
1479
1475
  /* Secondary Button */
1480
1476
  .btn-secondary {
1481
1477
  --btn-text-color: var(--color-secondary-content);
@@ -1489,10 +1485,6 @@ html {
1489
1485
  filter: none;
1490
1486
  }
1491
1487
 
1492
- .btn-secondary:focus-visible {
1493
- outline-color: color-mix(in oklch, var(--color-secondary), black 10%);
1494
- }
1495
-
1496
1488
  /* Tertiary Button */
1497
1489
  .btn-tertiary {
1498
1490
  --btn-text-color: var(--color-tertiary-content);
@@ -1506,92 +1498,102 @@ html {
1506
1498
  filter: none;
1507
1499
  }
1508
1500
 
1509
- .btn-tertiary:focus-visible {
1510
- outline-color: color-mix(in oklch, var(--color-tertiary), black 10%);
1511
- }
1512
-
1513
- /* Outline Variant */
1514
- .btn-outline {
1501
+ /* Outline / Outlined Variant (.btn-outlined is an alias) */
1502
+ .btn-outline,
1503
+ .btn-outlined {
1515
1504
  --btn-text-color: var(--color-on-surface);
1516
1505
  background-color: transparent;
1517
1506
  border: 1px solid var(--color-outline);
1518
1507
  }
1519
1508
 
1520
- .btn-outline:hover {
1509
+ .btn-outline:hover,
1510
+ .btn-outlined:hover {
1521
1511
  background-color: var(--color-surface-container);
1522
1512
  filter: none;
1523
1513
  }
1524
1514
 
1525
- .btn-outline.btn-primary {
1515
+ .btn-outline.btn-primary,
1516
+ .btn-outlined.btn-primary {
1526
1517
  --btn-text-color: var(--color-primary);
1527
1518
  border-color: var(--color-primary);
1528
1519
  }
1529
1520
 
1530
- .btn-outline.btn-primary:hover {
1521
+ .btn-outline.btn-primary:hover,
1522
+ .btn-outlined.btn-primary:hover {
1531
1523
  --btn-text-color: var(--color-primary-content);
1532
1524
  background-color: var(--color-primary);
1533
1525
  }
1534
1526
 
1535
- .btn-outline.btn-secondary {
1527
+ .btn-outline.btn-secondary,
1528
+ .btn-outlined.btn-secondary {
1536
1529
  --btn-text-color: var(--color-secondary);
1537
1530
  border-color: var(--color-secondary);
1538
1531
  }
1539
1532
 
1540
- .btn-outline.btn-secondary:hover {
1533
+ .btn-outline.btn-secondary:hover,
1534
+ .btn-outlined.btn-secondary:hover {
1541
1535
  --btn-text-color: var(--color-secondary-content);
1542
1536
  background-color: var(--color-secondary);
1543
1537
  }
1544
1538
 
1545
- .btn-outline.btn-tertiary {
1539
+ .btn-outline.btn-tertiary,
1540
+ .btn-outlined.btn-tertiary {
1546
1541
  --btn-text-color: var(--color-tertiary);
1547
1542
  border-color: var(--color-tertiary);
1548
1543
  }
1549
1544
 
1550
- .btn-outline.btn-tertiary:hover {
1545
+ .btn-outline.btn-tertiary:hover,
1546
+ .btn-outlined.btn-tertiary:hover {
1551
1547
  --btn-text-color: var(--color-tertiary-content);
1552
1548
  background-color: var(--color-tertiary);
1553
1549
  }
1554
1550
 
1555
- /* Outlined Variant (alias for .btn-outline - documentation aligned) */
1556
- .btn-outlined {
1557
- --btn-text-color: var(--color-on-surface);
1558
- background-color: transparent;
1559
- border: 1px solid var(--color-outline);
1551
+ .btn-outline.btn-info,
1552
+ .btn-outlined.btn-info {
1553
+ --btn-text-color: var(--color-info);
1554
+ border-color: var(--color-info);
1560
1555
  }
1561
1556
 
1562
- .btn-outlined:hover {
1563
- background-color: var(--color-surface-container);
1564
- filter: none;
1557
+ .btn-outline.btn-info:hover,
1558
+ .btn-outlined.btn-info:hover {
1559
+ --btn-text-color: var(--color-info-content);
1560
+ background-color: var(--color-info);
1565
1561
  }
1566
1562
 
1567
- .btn-outlined.btn-primary {
1568
- --btn-text-color: var(--color-primary);
1569
- border-color: var(--color-primary);
1563
+ .btn-outline.btn-success,
1564
+ .btn-outlined.btn-success {
1565
+ --btn-text-color: var(--color-success);
1566
+ border-color: var(--color-success);
1570
1567
  }
1571
1568
 
1572
- .btn-outlined.btn-primary:hover {
1573
- --btn-text-color: var(--color-primary-content);
1574
- background-color: var(--color-primary);
1569
+ .btn-outline.btn-success:hover,
1570
+ .btn-outlined.btn-success:hover {
1571
+ --btn-text-color: var(--color-success-content);
1572
+ background-color: var(--color-success);
1575
1573
  }
1576
1574
 
1577
- .btn-outlined.btn-secondary {
1578
- --btn-text-color: var(--color-secondary);
1579
- border-color: var(--color-secondary);
1575
+ .btn-outline.btn-warning,
1576
+ .btn-outlined.btn-warning {
1577
+ --btn-text-color: var(--color-warning);
1578
+ border-color: var(--color-warning);
1580
1579
  }
1581
1580
 
1582
- .btn-outlined.btn-secondary:hover {
1583
- --btn-text-color: var(--color-secondary-content);
1584
- background-color: var(--color-secondary);
1581
+ .btn-outline.btn-warning:hover,
1582
+ .btn-outlined.btn-warning:hover {
1583
+ --btn-text-color: var(--color-warning-content);
1584
+ background-color: var(--color-warning);
1585
1585
  }
1586
1586
 
1587
- .btn-outlined.btn-tertiary {
1588
- --btn-text-color: var(--color-tertiary);
1589
- border-color: var(--color-tertiary);
1587
+ .btn-outline.btn-error,
1588
+ .btn-outlined.btn-error {
1589
+ --btn-text-color: var(--color-error);
1590
+ border-color: var(--color-error);
1590
1591
  }
1591
1592
 
1592
- .btn-outlined.btn-tertiary:hover {
1593
- --btn-text-color: var(--color-tertiary-content);
1594
- background-color: var(--color-tertiary);
1593
+ .btn-outline.btn-error:hover,
1594
+ .btn-outlined.btn-error:hover {
1595
+ --btn-text-color: var(--color-error-content);
1596
+ background-color: var(--color-error);
1595
1597
  }
1596
1598
 
1597
1599
  /* Ghost Variant */
@@ -1633,6 +1635,31 @@ html {
1633
1635
  background-color: var(--color-tertiary-container);
1634
1636
  }
1635
1637
 
1638
+ .btn-ghost.btn-info { --btn-text-color: var(--color-info); }
1639
+ .btn-ghost.btn-success { --btn-text-color: var(--color-success); }
1640
+ .btn-ghost.btn-warning { --btn-text-color: var(--color-warning); }
1641
+ .btn-ghost.btn-error { --btn-text-color: var(--color-error); }
1642
+
1643
+ .btn-ghost.btn-info:hover {
1644
+ --btn-text-color: var(--color-on-info-container);
1645
+ background-color: var(--color-info-container);
1646
+ }
1647
+
1648
+ .btn-ghost.btn-success:hover {
1649
+ --btn-text-color: var(--color-on-success-container);
1650
+ background-color: var(--color-success-container);
1651
+ }
1652
+
1653
+ .btn-ghost.btn-warning:hover {
1654
+ --btn-text-color: var(--color-on-warning-container);
1655
+ background-color: var(--color-warning-container);
1656
+ }
1657
+
1658
+ .btn-ghost.btn-error:hover {
1659
+ --btn-text-color: var(--color-on-error-container);
1660
+ background-color: var(--color-error-container);
1661
+ }
1662
+
1636
1663
  /* Text Variant (alias for .btn-ghost - documentation aligned) */
1637
1664
  .btn-text {
1638
1665
  --btn-text-color: var(--color-on-surface);
@@ -1672,6 +1699,31 @@ html {
1672
1699
  background-color: var(--color-tertiary-container);
1673
1700
  }
1674
1701
 
1702
+ .btn-text.btn-info { --btn-text-color: var(--color-info); }
1703
+ .btn-text.btn-success { --btn-text-color: var(--color-success); }
1704
+ .btn-text.btn-warning { --btn-text-color: var(--color-warning); }
1705
+ .btn-text.btn-error { --btn-text-color: var(--color-error); }
1706
+
1707
+ .btn-text.btn-info:hover {
1708
+ --btn-text-color: var(--color-on-info-container);
1709
+ background-color: var(--color-info-container);
1710
+ }
1711
+
1712
+ .btn-text.btn-success:hover {
1713
+ --btn-text-color: var(--color-on-success-container);
1714
+ background-color: var(--color-success-container);
1715
+ }
1716
+
1717
+ .btn-text.btn-warning:hover {
1718
+ --btn-text-color: var(--color-on-warning-container);
1719
+ background-color: var(--color-warning-container);
1720
+ }
1721
+
1722
+ .btn-text.btn-error:hover {
1723
+ --btn-text-color: var(--color-on-error-container);
1724
+ background-color: var(--color-error-container);
1725
+ }
1726
+
1675
1727
  /* Tonal Variant - uses container colors for subtle appearance */
1676
1728
  .btn-tonal {
1677
1729
  --btn-text-color: var(--color-on-primary-container);
@@ -2045,6 +2097,42 @@ html {
2045
2097
  color: var(--color-on-tertiary-container);
2046
2098
  }
2047
2099
 
2100
+ .card-info {
2101
+ background-color: var(--color-info-container);
2102
+ color: var(--color-on-info-container);
2103
+ }
2104
+
2105
+ .card-info .card-title {
2106
+ color: var(--color-on-info-container);
2107
+ }
2108
+
2109
+ .card-success {
2110
+ background-color: var(--color-success-container);
2111
+ color: var(--color-on-success-container);
2112
+ }
2113
+
2114
+ .card-success .card-title {
2115
+ color: var(--color-on-success-container);
2116
+ }
2117
+
2118
+ .card-warning {
2119
+ background-color: var(--color-warning-container);
2120
+ color: var(--color-on-warning-container);
2121
+ }
2122
+
2123
+ .card-warning .card-title {
2124
+ color: var(--color-on-warning-container);
2125
+ }
2126
+
2127
+ .card-error {
2128
+ background-color: var(--color-error-container);
2129
+ color: var(--color-on-error-container);
2130
+ }
2131
+
2132
+ .card-error .card-title {
2133
+ color: var(--color-on-error-container);
2134
+ }
2135
+
2048
2136
  /* Glass Effect */
2049
2137
  .card-glass {
2050
2138
  background-color: rgb(255 255 255 / 0.1);
@@ -2072,8 +2160,8 @@ html {
2072
2160
  }
2073
2161
 
2074
2162
  .card-interactive:focus-visible {
2075
- outline: 2px solid var(--color-primary);
2076
- outline-offset: 2px;
2163
+ outline: none;
2164
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2077
2165
  }
2078
2166
 
2079
2167
  /* Full Image Card */
@@ -2119,7 +2207,7 @@ html {
2119
2207
  line-height: 1.5rem;
2120
2208
  background-color: var(--color-surface);
2121
2209
  color: var(--color-on-surface);
2122
- border: 1px solid transparent;
2210
+ border: 1px solid currentColor;
2123
2211
  border-radius: 0.5rem;
2124
2212
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
2125
2213
  }
@@ -2134,8 +2222,7 @@ html {
2134
2222
  }
2135
2223
 
2136
2224
  .input:focus-visible {
2137
- border-color: var(--color-primary);
2138
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
2225
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2139
2226
  outline: none;
2140
2227
  }
2141
2228
 
@@ -2155,70 +2242,17 @@ html {
2155
2242
  border-color: var(--color-outline-variant);
2156
2243
  }
2157
2244
 
2158
- /* Color Variants */
2159
- .input-primary {
2160
- border-color: var(--color-primary);
2161
- }
2162
-
2163
- .input-primary:focus-visible {
2164
- border-color: var(--color-primary);
2165
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
2166
- }
2167
-
2168
- .input-secondary {
2169
- border-color: var(--color-secondary);
2170
- }
2171
-
2172
- .input-secondary:focus-visible {
2173
- border-color: var(--color-secondary);
2174
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
2175
- }
2176
-
2177
- .input-tertiary {
2178
- border-color: var(--color-tertiary);
2179
- }
2180
-
2181
- .input-tertiary:focus-visible {
2182
- border-color: var(--color-tertiary);
2183
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
2184
- }
2245
+ /* Color Variants — base .input:focus-visible uses currentColor 20%, so no per-variant
2246
+ focus-visible overrides needed; setting color: here is sufficient. */
2247
+ .input-primary { color: var(--color-primary); }
2248
+ .input-secondary { color: var(--color-secondary); }
2249
+ .input-tertiary { color: var(--color-tertiary); }
2185
2250
 
2186
2251
  /* Semantic Colors */
2187
- .input-info {
2188
- border-color: var(--color-info);
2189
- }
2190
-
2191
- .input-info:focus-visible {
2192
- border-color: var(--color-info);
2193
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
2194
- }
2195
-
2196
- .input-success {
2197
- border-color: var(--color-success);
2198
- }
2199
-
2200
- .input-success:focus-visible {
2201
- border-color: var(--color-success);
2202
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
2203
- }
2204
-
2205
- .input-warning {
2206
- border-color: var(--color-warning);
2207
- }
2208
-
2209
- .input-warning:focus-visible {
2210
- border-color: var(--color-warning);
2211
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
2212
- }
2213
-
2214
- .input-error {
2215
- border-color: var(--color-error);
2216
- }
2217
-
2218
- .input-error:focus-visible {
2219
- border-color: var(--color-error);
2220
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
2221
- }
2252
+ .input-info { color: var(--color-info); }
2253
+ .input-success { color: var(--color-success); }
2254
+ .input-warning { color: var(--color-warning); }
2255
+ .input-error { color: var(--color-error); }
2222
2256
 
2223
2257
  /* Size Variants */
2224
2258
  .input-xs {
@@ -2254,7 +2288,7 @@ html {
2254
2288
  .input-ghost:focus-visible {
2255
2289
  background-color: var(--color-surface-container);
2256
2290
  border-color: transparent;
2257
- box-shadow: none;
2291
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2258
2292
  }
2259
2293
 
2260
2294
  /* Filled Input */
@@ -2270,6 +2304,14 @@ html {
2270
2304
  box-shadow: none;
2271
2305
  }
2272
2306
 
2307
+ .input-filled.input-primary:focus-visible { border-bottom-color: var(--color-primary); }
2308
+ .input-filled.input-secondary:focus-visible { border-bottom-color: var(--color-secondary); }
2309
+ .input-filled.input-tertiary:focus-visible { border-bottom-color: var(--color-tertiary); }
2310
+ .input-filled.input-info:focus-visible { border-bottom-color: var(--color-info); }
2311
+ .input-filled.input-success:focus-visible { border-bottom-color: var(--color-success); }
2312
+ .input-filled.input-warning:focus-visible { border-bottom-color: var(--color-warning); }
2313
+ .input-filled.input-error:focus-visible { border-bottom-color: var(--color-error); }
2314
+
2273
2315
  /* Input with Icon */
2274
2316
  .input-group {
2275
2317
  display: flex;
@@ -2340,7 +2382,7 @@ html {
2340
2382
  }
2341
2383
 
2342
2384
  .file-input:focus-visible {
2343
- border-color: var(--color-primary);
2385
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2344
2386
  outline: none;
2345
2387
  }
2346
2388
  }
@@ -2360,6 +2402,7 @@ html {
2360
2402
  gap: 0.25rem;
2361
2403
  width: 100%;
2362
2404
  margin-bottom: 1rem;
2405
+ color: var(--color-on-surface);
2363
2406
  }
2364
2407
 
2365
2408
  /* Label */
@@ -2373,7 +2416,7 @@ html {
2373
2416
  .label-text {
2374
2417
  font-size: 0.875rem;
2375
2418
  font-weight: 500;
2376
- color: var(--color-base-content);
2419
+ color: var(--color-on-surface);
2377
2420
  padding-bottom: 0.25rem;
2378
2421
  }
2379
2422
 
@@ -3922,6 +3965,26 @@ html {
3922
3965
  color: var(--color-tertiary-content);
3923
3966
  }
3924
3967
 
3968
+ .avatar-info {
3969
+ background-color: var(--color-info);
3970
+ color: var(--color-info-content);
3971
+ }
3972
+
3973
+ .avatar-success {
3974
+ background-color: var(--color-success);
3975
+ color: var(--color-success-content);
3976
+ }
3977
+
3978
+ .avatar-warning {
3979
+ background-color: var(--color-warning);
3980
+ color: var(--color-warning-content);
3981
+ }
3982
+
3983
+ .avatar-error {
3984
+ background-color: var(--color-error);
3985
+ color: var(--color-error-content);
3986
+ }
3987
+
3925
3988
  /* Ring */
3926
3989
  .avatar-ring {
3927
3990
  outline: 2px solid var(--color-primary);
@@ -3990,8 +4053,8 @@ html {
3990
4053
 
3991
4054
  /* Focus State for Interactive Avatars */
3992
4055
  .avatar:focus-visible {
3993
- outline: 2px solid var(--color-primary);
3994
- outline-offset: 2px;
4056
+ outline: none;
4057
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
3995
4058
  }
3996
4059
  }
3997
4060
 
@@ -4211,8 +4274,8 @@ html {
4211
4274
  }
4212
4275
 
4213
4276
  .chip:focus-visible {
4214
- outline: 2px solid var(--color-primary);
4215
- outline-offset: 2px;
4277
+ outline: none;
4278
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
4216
4279
  }
4217
4280
 
4218
4281
  /* Color Variants - Filled */
@@ -4243,6 +4306,42 @@ html {
4243
4306
  background-color: color-mix(in oklch, var(--color-tertiary), black 10%);
4244
4307
  }
4245
4308
 
4309
+ .chip-info {
4310
+ background-color: var(--color-info);
4311
+ color: var(--color-info-content);
4312
+ }
4313
+
4314
+ .chip-info:hover {
4315
+ background-color: color-mix(in oklch, var(--color-info), black 10%);
4316
+ }
4317
+
4318
+ .chip-success {
4319
+ background-color: var(--color-success);
4320
+ color: var(--color-success-content);
4321
+ }
4322
+
4323
+ .chip-success:hover {
4324
+ background-color: color-mix(in oklch, var(--color-success), black 10%);
4325
+ }
4326
+
4327
+ .chip-warning {
4328
+ background-color: var(--color-warning);
4329
+ color: var(--color-warning-content);
4330
+ }
4331
+
4332
+ .chip-warning:hover {
4333
+ background-color: color-mix(in oklch, var(--color-warning), black 10%);
4334
+ }
4335
+
4336
+ .chip-error {
4337
+ background-color: var(--color-error);
4338
+ color: var(--color-error-content);
4339
+ }
4340
+
4341
+ .chip-error:hover {
4342
+ background-color: color-mix(in oklch, var(--color-error), black 10%);
4343
+ }
4344
+
4246
4345
  /* Outlined Variant */
4247
4346
  .chip-outlined {
4248
4347
  background-color: transparent;
@@ -4280,6 +4379,42 @@ html {
4280
4379
  background-color: var(--color-tertiary-container);
4281
4380
  }
4282
4381
 
4382
+ .chip-outlined.chip-info {
4383
+ border-color: var(--color-info);
4384
+ color: var(--color-info);
4385
+ }
4386
+
4387
+ .chip-outlined.chip-info:hover {
4388
+ background-color: var(--color-info-container);
4389
+ }
4390
+
4391
+ .chip-outlined.chip-success {
4392
+ border-color: var(--color-success);
4393
+ color: var(--color-success);
4394
+ }
4395
+
4396
+ .chip-outlined.chip-success:hover {
4397
+ background-color: var(--color-success-container);
4398
+ }
4399
+
4400
+ .chip-outlined.chip-warning {
4401
+ border-color: var(--color-warning);
4402
+ color: var(--color-warning);
4403
+ }
4404
+
4405
+ .chip-outlined.chip-warning:hover {
4406
+ background-color: var(--color-warning-container);
4407
+ }
4408
+
4409
+ .chip-outlined.chip-error {
4410
+ border-color: var(--color-error);
4411
+ color: var(--color-error);
4412
+ }
4413
+
4414
+ .chip-outlined.chip-error:hover {
4415
+ background-color: var(--color-error-container);
4416
+ }
4417
+
4283
4418
  /* Tonal/Soft Variant */
4284
4419
  .chip-tonal {
4285
4420
  background-color: var(--color-surface-container-high);
@@ -4300,7 +4435,55 @@ html {
4300
4435
  color: var(--color-on-tertiary-container);
4301
4436
  }
4302
4437
 
4303
- /* Size Variants */
4438
+ .chip-tonal.chip-info {
4439
+ background-color: var(--color-info-container);
4440
+ color: var(--color-on-info-container);
4441
+ }
4442
+
4443
+ .chip-tonal.chip-success {
4444
+ background-color: var(--color-success-container);
4445
+ color: var(--color-on-success-container);
4446
+ }
4447
+
4448
+ .chip-tonal.chip-warning {
4449
+ background-color: var(--color-warning-container);
4450
+ color: var(--color-on-warning-container);
4451
+ }
4452
+
4453
+ .chip-tonal.chip-error {
4454
+ background-color: var(--color-error-container);
4455
+ color: var(--color-on-error-container);
4456
+ }
4457
+
4458
+ /* Ghost Variant */
4459
+ .chip-ghost {
4460
+ background-color: transparent;
4461
+ border-color: transparent;
4462
+ }
4463
+
4464
+ .chip-ghost:hover {
4465
+ background-color: var(--color-surface-container);
4466
+ }
4467
+
4468
+ /* Ghost + color sub-variants: transparent bg/border, colored text.
4469
+ Hover uses container color (matches .chip-outlined.chip-*:hover pattern). */
4470
+ .chip-ghost.chip-primary { background-color: transparent; color: var(--color-primary); }
4471
+ .chip-ghost.chip-secondary { background-color: transparent; color: var(--color-secondary); }
4472
+ .chip-ghost.chip-tertiary { background-color: transparent; color: var(--color-tertiary); }
4473
+ .chip-ghost.chip-info { background-color: transparent; color: var(--color-info); }
4474
+ .chip-ghost.chip-success { background-color: transparent; color: var(--color-success); }
4475
+ .chip-ghost.chip-warning { background-color: transparent; color: var(--color-warning); }
4476
+ .chip-ghost.chip-error { background-color: transparent; color: var(--color-error); }
4477
+
4478
+ .chip-ghost.chip-primary:hover { background-color: var(--color-primary-container); }
4479
+ .chip-ghost.chip-secondary:hover { background-color: var(--color-secondary-container); }
4480
+ .chip-ghost.chip-tertiary:hover { background-color: var(--color-tertiary-container); }
4481
+ .chip-ghost.chip-info:hover { background-color: var(--color-info-container); }
4482
+ .chip-ghost.chip-success:hover { background-color: var(--color-success-container); }
4483
+ .chip-ghost.chip-warning:hover { background-color: var(--color-warning-container); }
4484
+ .chip-ghost.chip-error:hover { background-color: var(--color-error-container); }
4485
+
4486
+ /* Size Variants */
4304
4487
  .chip-sm {
4305
4488
  padding: 0.25rem 0.5rem;
4306
4489
  font-size: 0.75rem;
@@ -4801,15 +4984,14 @@ html {
4801
4984
  line-height: 1.5;
4802
4985
  color: var(--color-on-surface);
4803
4986
  background-color: var(--color-surface);
4804
- border: 1px solid var(--color-outline);
4987
+ border: 1px solid currentColor;
4805
4988
  border-radius: 0.5rem;
4806
4989
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
4807
4990
  }
4808
4991
 
4809
4992
  .autocomplete-input:focus {
4810
4993
  outline: none;
4811
- border-color: var(--color-primary);
4812
- box-shadow: 0 0 0 3px var(--color-primary-container);
4994
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
4813
4995
  }
4814
4996
 
4815
4997
  .autocomplete-input:disabled {
@@ -5031,6 +5213,67 @@ html {
5031
5213
  outline: none;
5032
5214
  }
5033
5215
 
5216
+ /* Color Variants */
5217
+ .autocomplete-primary .autocomplete-input {
5218
+ color: var(--color-primary);
5219
+ }
5220
+ .autocomplete-primary .autocomplete-input:focus {
5221
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
5222
+ }
5223
+
5224
+ .autocomplete-secondary .autocomplete-input {
5225
+ color: var(--color-secondary);
5226
+ }
5227
+ .autocomplete-secondary .autocomplete-input:focus {
5228
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
5229
+ }
5230
+
5231
+ .autocomplete-tertiary .autocomplete-input {
5232
+ color: var(--color-tertiary);
5233
+ }
5234
+ .autocomplete-tertiary .autocomplete-input:focus {
5235
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
5236
+ }
5237
+
5238
+ .autocomplete-info .autocomplete-input {
5239
+ color: var(--color-info);
5240
+ }
5241
+ .autocomplete-info .autocomplete-input:focus {
5242
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
5243
+ }
5244
+
5245
+ .autocomplete-success .autocomplete-input {
5246
+ color: var(--color-success);
5247
+ }
5248
+ .autocomplete-success .autocomplete-input:focus {
5249
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
5250
+ }
5251
+
5252
+ .autocomplete-warning .autocomplete-input {
5253
+ color: var(--color-warning);
5254
+ }
5255
+ .autocomplete-warning .autocomplete-input:focus {
5256
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
5257
+ }
5258
+
5259
+ .autocomplete-error .autocomplete-input {
5260
+ color: var(--color-error);
5261
+ }
5262
+ .autocomplete-error .autocomplete-input:focus {
5263
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
5264
+ }
5265
+
5266
+ /* Ghost Variant */
5267
+ .autocomplete-ghost .autocomplete-input {
5268
+ background-color: transparent;
5269
+ border-color: transparent;
5270
+ }
5271
+ .autocomplete-ghost .autocomplete-input:focus {
5272
+ background-color: var(--color-surface-container);
5273
+ border-color: transparent;
5274
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
5275
+ }
5276
+
5034
5277
  /* Size Variants */
5035
5278
  .autocomplete-sm .autocomplete-input {
5036
5279
  padding: 0.5rem 0.75rem;
@@ -5075,20 +5318,19 @@ html {
5075
5318
  line-height: 1.5rem;
5076
5319
  color: var(--color-on-surface);
5077
5320
  background-color: var(--color-surface);
5078
- border: 1px solid var(--color-outline);
5321
+ border: 1px solid currentColor;
5079
5322
  border-radius: 0.5rem;
5080
5323
  cursor: pointer;
5081
5324
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
5082
5325
  }
5083
5326
 
5084
5327
  .cascader-trigger:hover:not(:disabled) {
5085
- border-color: var(--color-on-surface-variant);
5328
+ background-color: var(--color-surface-container);
5086
5329
  }
5087
5330
 
5088
5331
  .cascader-trigger:focus {
5089
5332
  outline: none;
5090
- border-color: var(--color-primary);
5091
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
5333
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
5092
5334
  }
5093
5335
 
5094
5336
  .cascader-trigger:disabled {
@@ -5415,20 +5657,71 @@ html {
5415
5657
  }
5416
5658
 
5417
5659
  .cascader-filled .cascader-trigger:focus {
5418
- border-bottom-color: var(--color-primary);
5660
+ border-bottom-color: currentColor;
5419
5661
  box-shadow: none;
5420
5662
  }
5421
5663
 
5422
- /* Error State */
5423
- .cascader-error .cascader-trigger {
5424
- border-color: var(--color-error);
5664
+ /* Color Variants */
5665
+ .cascader-primary .cascader-trigger {
5666
+ color: var(--color-primary);
5667
+ }
5668
+ .cascader-primary .cascader-trigger:focus {
5669
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
5670
+ }
5671
+
5672
+ .cascader-secondary .cascader-trigger {
5673
+ color: var(--color-secondary);
5674
+ }
5675
+ .cascader-secondary .cascader-trigger:focus {
5676
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
5677
+ }
5678
+
5679
+ .cascader-tertiary .cascader-trigger {
5680
+ color: var(--color-tertiary);
5681
+ }
5682
+ .cascader-tertiary .cascader-trigger:focus {
5683
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
5684
+ }
5685
+
5686
+ .cascader-info .cascader-trigger {
5687
+ color: var(--color-info);
5688
+ }
5689
+ .cascader-info .cascader-trigger:focus {
5690
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
5691
+ }
5692
+
5693
+ .cascader-success .cascader-trigger {
5694
+ color: var(--color-success);
5695
+ }
5696
+ .cascader-success .cascader-trigger:focus {
5697
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
5698
+ }
5699
+
5700
+ .cascader-warning .cascader-trigger {
5701
+ color: var(--color-warning);
5702
+ }
5703
+ .cascader-warning .cascader-trigger:focus {
5704
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
5425
5705
  }
5426
5706
 
5707
+ .cascader-error .cascader-trigger {
5708
+ color: var(--color-error);
5709
+ }
5427
5710
  .cascader-error .cascader-trigger:focus {
5428
- border-color: var(--color-error);
5429
5711
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
5430
5712
  }
5431
5713
 
5714
+ /* Ghost Variant */
5715
+ .cascader-ghost .cascader-trigger {
5716
+ background-color: transparent;
5717
+ border-color: transparent;
5718
+ }
5719
+ .cascader-ghost .cascader-trigger:focus {
5720
+ background-color: var(--color-surface-container);
5721
+ border-color: transparent;
5722
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
5723
+ }
5724
+
5432
5725
  /* Disabled State */
5433
5726
  .cascader-disabled .cascader-trigger {
5434
5727
  cursor: not-allowed;
@@ -5483,6 +5776,7 @@ html {
5483
5776
  --checkbox-size: 1.25rem;
5484
5777
  --checkbox-color: var(--color-primary);
5485
5778
  --checkbox-border-color: var(--color-on-surface-variant);
5779
+ color: var(--color-on-surface);
5486
5780
 
5487
5781
  position: relative;
5488
5782
  display: inline-grid;
@@ -5505,8 +5799,8 @@ html {
5505
5799
  height: 0.35em;
5506
5800
  transform: scale(0) rotate(-45deg);
5507
5801
  transform-origin: center;
5508
- border-bottom: 2px solid var(--color-on-primary);
5509
- border-left: 2px solid var(--color-on-primary);
5802
+ border-bottom: 2px solid var(--color-primary-content);
5803
+ border-left: 2px solid var(--color-primary-content);
5510
5804
  transition: transform 150ms ease-in-out;
5511
5805
  }
5512
5806
 
@@ -5529,7 +5823,7 @@ html {
5529
5823
  .checkbox:indeterminate::before {
5530
5824
  width: 0.5em;
5531
5825
  height: 0;
5532
- border-bottom: 2px solid var(--color-on-primary);
5826
+ border-bottom: 2px solid var(--color-primary-content);
5533
5827
  border-left: 0;
5534
5828
  transform: scale(1) rotate(0deg);
5535
5829
  }
@@ -5547,8 +5841,8 @@ html {
5547
5841
 
5548
5842
  /* Focus State */
5549
5843
  .checkbox:focus-visible {
5550
- outline: 2px solid var(--checkbox-color);
5551
- outline-offset: 2px;
5844
+ outline: none;
5845
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--checkbox-color) 20%, transparent);
5552
5846
  }
5553
5847
 
5554
5848
  /* Disabled State */
@@ -5648,6 +5942,15 @@ html {
5648
5942
  border-color: var(--color-info-content);
5649
5943
  }
5650
5944
 
5945
+ /* Ghost Variant — borderless unchecked state */
5946
+ .checkbox-ghost {
5947
+ --checkbox-border-color: transparent;
5948
+ }
5949
+
5950
+ .checkbox-ghost:hover:not(:disabled):not(:checked) {
5951
+ border-color: transparent;
5952
+ }
5953
+
5651
5954
  /* ========================================
5652
5955
  * Checkbox with Label (wrapper pattern)
5653
5956
  * ======================================== */
@@ -5723,7 +6026,7 @@ html {
5723
6026
  line-height: 1.5;
5724
6027
  color: var(--color-on-surface);
5725
6028
  background-color: var(--color-surface);
5726
- border: 1px solid var(--color-outline);
6029
+ border: 1px solid currentColor;
5727
6030
  border-radius: 0.5rem;
5728
6031
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
5729
6032
  }
@@ -5742,8 +6045,7 @@ html {
5742
6045
 
5743
6046
  .datepicker-input:focus {
5744
6047
  outline: none;
5745
- border-color: var(--color-primary);
5746
- box-shadow: 0 0 0 3px var(--color-primary-container);
6048
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
5747
6049
  }
5748
6050
 
5749
6051
  .datepicker-input:disabled {
@@ -6396,7 +6698,71 @@ html {
6396
6698
  box-shadow: none;
6397
6699
  }
6398
6700
 
6399
- /* Color Variants */
6701
+ /* Input Color Variants */
6702
+ .datepicker-primary .datepicker-input {
6703
+ color: var(--color-primary);
6704
+ }
6705
+ .datepicker-primary .datepicker-input:focus {
6706
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
6707
+ }
6708
+
6709
+ .datepicker-secondary .datepicker-input {
6710
+ color: var(--color-secondary);
6711
+ }
6712
+ .datepicker-secondary .datepicker-input:focus {
6713
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
6714
+ }
6715
+
6716
+ .datepicker-tertiary .datepicker-input {
6717
+ color: var(--color-tertiary);
6718
+ }
6719
+ .datepicker-tertiary .datepicker-input:focus {
6720
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
6721
+ }
6722
+
6723
+ .datepicker-info .datepicker-input {
6724
+ color: var(--color-info);
6725
+ }
6726
+ .datepicker-info .datepicker-input:focus {
6727
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
6728
+ }
6729
+
6730
+ .datepicker-info .datepicker-day-selected,
6731
+ .datepicker-info .datepicker-day-range-start,
6732
+ .datepicker-info .datepicker-day-range-end {
6733
+ background-color: var(--color-info);
6734
+ color: var(--color-info-content);
6735
+ }
6736
+
6737
+ .datepicker-success .datepicker-input {
6738
+ color: var(--color-success);
6739
+ }
6740
+ .datepicker-success .datepicker-input:focus {
6741
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
6742
+ }
6743
+
6744
+ .datepicker-success .datepicker-day-selected,
6745
+ .datepicker-success .datepicker-day-range-start,
6746
+ .datepicker-success .datepicker-day-range-end {
6747
+ background-color: var(--color-success);
6748
+ color: var(--color-success-content);
6749
+ }
6750
+
6751
+ .datepicker-warning .datepicker-input {
6752
+ color: var(--color-warning);
6753
+ }
6754
+ .datepicker-warning .datepicker-input:focus {
6755
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
6756
+ }
6757
+
6758
+ .datepicker-warning .datepicker-day-selected,
6759
+ .datepicker-warning .datepicker-day-range-start,
6760
+ .datepicker-warning .datepicker-day-range-end {
6761
+ background-color: var(--color-warning);
6762
+ color: var(--color-warning-content);
6763
+ }
6764
+
6765
+ /* Day Selected Color Variants */
6400
6766
  .datepicker-primary .datepicker-day-selected,
6401
6767
  .datepicker-primary .datepicker-day-range-start,
6402
6768
  .datepicker-primary .datepicker-day-range-end {
@@ -6421,15 +6787,25 @@ html {
6421
6787
  /* Error State */
6422
6788
  .datepicker-error .datepicker-input,
6423
6789
  .datetime-picker-error .datetime-picker-input {
6424
- border-color: var(--color-error);
6790
+ color: var(--color-error);
6425
6791
  }
6426
6792
 
6427
6793
  .datepicker-error .datepicker-input:focus,
6428
6794
  .datetime-picker-error .datetime-picker-input:focus {
6429
- border-color: var(--color-error);
6430
6795
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
6431
6796
  }
6432
6797
 
6798
+ /* Ghost Variant */
6799
+ .datepicker-ghost .datepicker-input {
6800
+ background-color: transparent;
6801
+ border-color: transparent;
6802
+ }
6803
+ .datepicker-ghost .datepicker-input:focus {
6804
+ background-color: var(--color-surface-container);
6805
+ border-color: transparent;
6806
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
6807
+ }
6808
+
6433
6809
  /* Reduce Motion */
6434
6810
  @media (prefers-reduced-motion: reduce) {
6435
6811
  .datepicker-dropdown,
@@ -6468,25 +6844,25 @@ html {
6468
6844
  min-height: 10rem;
6469
6845
  padding: 2rem;
6470
6846
  background-color: var(--color-surface);
6471
- border: 2px dashed var(--color-outline);
6847
+ border: 2px dashed currentColor;
6472
6848
  border-radius: 0.75rem;
6473
6849
  cursor: pointer;
6474
6850
  transition: border-color 150ms ease-in-out, background-color 150ms ease-in-out;
6475
6851
  }
6476
6852
 
6477
6853
  .file-upload-dropzone:hover {
6478
- border-color: var(--color-primary);
6854
+ border-color: currentColor;
6479
6855
  background-color: var(--color-surface-container);
6480
6856
  }
6481
6857
 
6482
6858
  .file-upload-dropzone:focus-within {
6483
- border-color: var(--color-primary);
6484
- box-shadow: 0 0 0 3px var(--color-primary-container);
6859
+ border-color: currentColor;
6860
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
6485
6861
  }
6486
6862
 
6487
6863
  .file-upload-dropzone.dragging {
6488
- border-color: var(--color-primary);
6489
- background-color: var(--color-primary-container);
6864
+ border-color: currentColor;
6865
+ background-color: color-mix(in oklch, currentColor 10%, var(--color-surface));
6490
6866
  }
6491
6867
 
6492
6868
  .file-upload-dropzone.disabled {
@@ -6511,7 +6887,6 @@ html {
6511
6887
  justify-content: center;
6512
6888
  width: 3rem;
6513
6889
  height: 3rem;
6514
- color: var(--color-primary);
6515
6890
  font-size: 2rem;
6516
6891
  }
6517
6892
 
@@ -6533,7 +6908,7 @@ html {
6533
6908
  }
6534
6909
 
6535
6910
  .file-upload-browse {
6536
- color: var(--color-primary);
6911
+ color: currentColor;
6537
6912
  font-weight: 500;
6538
6913
  text-decoration: underline;
6539
6914
  cursor: pointer;
@@ -6745,6 +7120,67 @@ html {
6745
7120
  cursor: not-allowed;
6746
7121
  }
6747
7122
 
7123
+ /* Color Variants */
7124
+ .file-upload-primary .file-upload-dropzone {
7125
+ color: var(--color-primary);
7126
+ }
7127
+ .file-upload-primary .file-upload-dropzone:focus-within {
7128
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
7129
+ }
7130
+
7131
+ .file-upload-secondary .file-upload-dropzone {
7132
+ color: var(--color-secondary);
7133
+ }
7134
+ .file-upload-secondary .file-upload-dropzone:focus-within {
7135
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
7136
+ }
7137
+
7138
+ .file-upload-tertiary .file-upload-dropzone {
7139
+ color: var(--color-tertiary);
7140
+ }
7141
+ .file-upload-tertiary .file-upload-dropzone:focus-within {
7142
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
7143
+ }
7144
+
7145
+ .file-upload-info .file-upload-dropzone {
7146
+ color: var(--color-info);
7147
+ }
7148
+ .file-upload-info .file-upload-dropzone:focus-within {
7149
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
7150
+ }
7151
+
7152
+ .file-upload-success .file-upload-dropzone {
7153
+ color: var(--color-success);
7154
+ }
7155
+ .file-upload-success .file-upload-dropzone:focus-within {
7156
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
7157
+ }
7158
+
7159
+ .file-upload-warning .file-upload-dropzone {
7160
+ color: var(--color-warning);
7161
+ }
7162
+ .file-upload-warning .file-upload-dropzone:focus-within {
7163
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
7164
+ }
7165
+
7166
+ .file-upload-error .file-upload-dropzone {
7167
+ color: var(--color-error);
7168
+ }
7169
+ .file-upload-error .file-upload-dropzone:focus-within {
7170
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7171
+ }
7172
+
7173
+ /* Ghost Variant */
7174
+ .file-upload-ghost .file-upload-dropzone {
7175
+ background-color: transparent;
7176
+ border-color: transparent;
7177
+ }
7178
+ .file-upload-ghost .file-upload-dropzone:focus-within {
7179
+ background-color: var(--color-surface-container);
7180
+ border-color: transparent;
7181
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
7182
+ }
7183
+
6748
7184
  /* Size Variants */
6749
7185
  .file-upload-sm .file-upload-dropzone {
6750
7186
  min-height: 6rem;
@@ -7133,20 +7569,19 @@ html {
7133
7569
  line-height: 1.5rem;
7134
7570
  color: var(--color-on-surface);
7135
7571
  background-color: var(--color-surface);
7136
- border: 1px solid var(--color-outline);
7572
+ border: 1px solid currentColor;
7137
7573
  border-radius: 0.5rem;
7138
7574
  cursor: pointer;
7139
7575
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
7140
7576
  }
7141
7577
 
7142
7578
  .multi-select-trigger:hover:not(:disabled) {
7143
- border-color: var(--color-on-surface-variant);
7579
+ background-color: var(--color-surface-container);
7144
7580
  }
7145
7581
 
7146
7582
  .multi-select-trigger:focus-within {
7147
7583
  outline: none;
7148
- border-color: var(--color-primary);
7149
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
7584
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
7150
7585
  }
7151
7586
 
7152
7587
  /* Placeholder */
@@ -7540,20 +7975,71 @@ html {
7540
7975
  }
7541
7976
 
7542
7977
  .multi-select-filled .multi-select-trigger:focus-within {
7543
- border-bottom-color: var(--color-primary);
7978
+ border-bottom-color: currentColor;
7544
7979
  box-shadow: none;
7545
7980
  }
7546
7981
 
7547
- /* Error State */
7548
- .multi-select-error .multi-select-trigger {
7549
- border-color: var(--color-error);
7982
+ /* Color Variants */
7983
+ .multi-select-primary .multi-select-trigger {
7984
+ color: var(--color-primary);
7985
+ }
7986
+ .multi-select-primary .multi-select-trigger:focus-within {
7987
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
7550
7988
  }
7551
7989
 
7552
- .multi-select-error .multi-select-trigger:focus-within {
7553
- border-color: var(--color-error);
7990
+ .multi-select-secondary .multi-select-trigger {
7991
+ color: var(--color-secondary);
7992
+ }
7993
+ .multi-select-secondary .multi-select-trigger:focus-within {
7994
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
7995
+ }
7996
+
7997
+ .multi-select-tertiary .multi-select-trigger {
7998
+ color: var(--color-tertiary);
7999
+ }
8000
+ .multi-select-tertiary .multi-select-trigger:focus-within {
8001
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
8002
+ }
8003
+
8004
+ .multi-select-info .multi-select-trigger {
8005
+ color: var(--color-info);
8006
+ }
8007
+ .multi-select-info .multi-select-trigger:focus-within {
8008
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
8009
+ }
8010
+
8011
+ .multi-select-success .multi-select-trigger {
8012
+ color: var(--color-success);
8013
+ }
8014
+ .multi-select-success .multi-select-trigger:focus-within {
8015
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
8016
+ }
8017
+
8018
+ .multi-select-warning .multi-select-trigger {
8019
+ color: var(--color-warning);
8020
+ }
8021
+ .multi-select-warning .multi-select-trigger:focus-within {
8022
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
8023
+ }
8024
+
8025
+ .multi-select-error .multi-select-trigger {
8026
+ color: var(--color-error);
8027
+ }
8028
+ .multi-select-error .multi-select-trigger:focus-within {
7554
8029
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7555
8030
  }
7556
8031
 
8032
+ /* Ghost Variant */
8033
+ .multi-select-ghost .multi-select-trigger {
8034
+ background-color: transparent;
8035
+ border-color: transparent;
8036
+ }
8037
+ .multi-select-ghost .multi-select-trigger:focus-within {
8038
+ background-color: var(--color-surface-container);
8039
+ border-color: transparent;
8040
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
8041
+ }
8042
+
7557
8043
  /* Disabled State */
7558
8044
  .multi-select-disabled .multi-select-trigger {
7559
8045
  cursor: not-allowed;
@@ -7622,7 +8108,7 @@ html {
7622
8108
  text-align: center;
7623
8109
  color: var(--color-on-surface);
7624
8110
  background-color: var(--color-surface);
7625
- border: 2px solid var(--color-outline);
8111
+ border: 2px solid currentColor;
7626
8112
  border-radius: 0.5rem;
7627
8113
  outline: none;
7628
8114
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
@@ -7635,12 +8121,11 @@ html {
7635
8121
  }
7636
8122
 
7637
8123
  .otp-input-field:hover:not(:disabled):not(:focus) {
7638
- border-color: var(--color-on-surface-variant);
8124
+ background-color: var(--color-surface-container);
7639
8125
  }
7640
8126
 
7641
8127
  .otp-input-field:focus {
7642
- border-color: var(--color-primary);
7643
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
8128
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
7644
8129
  }
7645
8130
 
7646
8131
  .otp-input-field:disabled {
@@ -7723,41 +8208,74 @@ html {
7723
8208
  }
7724
8209
 
7725
8210
  /* Color Variants */
8211
+ .otp-input-primary .otp-input-field {
8212
+ color: var(--color-primary);
8213
+ }
8214
+
7726
8215
  .otp-input-primary .otp-input-field:focus {
7727
- border-color: var(--color-primary);
7728
8216
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
7729
8217
  }
7730
8218
 
8219
+ .otp-input-secondary .otp-input-field {
8220
+ color: var(--color-secondary);
8221
+ }
8222
+
7731
8223
  .otp-input-secondary .otp-input-field:focus {
7732
- border-color: var(--color-secondary);
7733
8224
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
7734
8225
  }
7735
8226
 
8227
+ .otp-input-tertiary .otp-input-field {
8228
+ color: var(--color-tertiary);
8229
+ }
8230
+
7736
8231
  .otp-input-tertiary .otp-input-field:focus {
7737
- border-color: var(--color-tertiary);
7738
8232
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
7739
8233
  }
7740
8234
 
7741
- /* Error State */
7742
- .otp-input-error .otp-input-field {
7743
- border-color: var(--color-error);
8235
+ .otp-input-info .otp-input-field {
8236
+ color: var(--color-info);
7744
8237
  }
7745
8238
 
7746
- .otp-input-error .otp-input-field:focus {
7747
- border-color: var(--color-error);
7748
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
8239
+ .otp-input-info .otp-input-field:focus {
8240
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
7749
8241
  }
7750
8242
 
7751
- /* Success State */
7752
8243
  .otp-input-success .otp-input-field {
7753
- border-color: var(--color-success);
8244
+ color: var(--color-success);
7754
8245
  }
7755
8246
 
7756
8247
  .otp-input-success .otp-input-field:focus {
7757
- border-color: var(--color-success);
7758
8248
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
7759
8249
  }
7760
8250
 
8251
+ .otp-input-warning .otp-input-field {
8252
+ color: var(--color-warning);
8253
+ }
8254
+
8255
+ .otp-input-warning .otp-input-field:focus {
8256
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
8257
+ }
8258
+
8259
+ .otp-input-error .otp-input-field {
8260
+ color: var(--color-error);
8261
+ }
8262
+
8263
+ .otp-input-error .otp-input-field:focus {
8264
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
8265
+ }
8266
+
8267
+ /* Ghost Variant */
8268
+ .otp-input-ghost .otp-input-field {
8269
+ background-color: transparent;
8270
+ border-color: transparent;
8271
+ }
8272
+
8273
+ .otp-input-ghost .otp-input-field:focus {
8274
+ background-color: var(--color-surface-container);
8275
+ border-color: transparent;
8276
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
8277
+ }
8278
+
7761
8279
  /* Masked Input (dots) */
7762
8280
  .otp-input-masked .otp-input-field {
7763
8281
  -webkit-text-security: disc;
@@ -7818,7 +8336,7 @@ html {
7818
8336
  text-align: center;
7819
8337
  color: var(--color-on-surface);
7820
8338
  background-color: var(--color-surface);
7821
- border: 2px solid var(--color-outline);
8339
+ border: 2px solid currentColor;
7822
8340
  border-radius: 0.5rem;
7823
8341
  outline: none;
7824
8342
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
@@ -7832,12 +8350,11 @@ html {
7832
8350
  }
7833
8351
 
7834
8352
  .pin-input-field:hover:not(:disabled):not(:focus) {
7835
- border-color: var(--color-on-surface-variant);
8353
+ background-color: var(--color-surface-container);
7836
8354
  }
7837
8355
 
7838
8356
  .pin-input-field:focus {
7839
- border-color: var(--color-primary);
7840
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
8357
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
7841
8358
  }
7842
8359
 
7843
8360
  .pin-input-field:disabled {
@@ -7908,29 +8425,60 @@ html {
7908
8425
  }
7909
8426
 
7910
8427
  /* Color Variants */
8428
+ .pin-input-primary .pin-input-field {
8429
+ color: var(--color-primary);
8430
+ }
8431
+
7911
8432
  .pin-input-primary .pin-input-field:focus {
7912
- border-color: var(--color-primary);
7913
8433
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
7914
8434
  }
7915
8435
 
8436
+ .pin-input-secondary .pin-input-field {
8437
+ color: var(--color-secondary);
8438
+ }
8439
+
7916
8440
  .pin-input-secondary .pin-input-field:focus {
7917
- border-color: var(--color-secondary);
7918
8441
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
7919
8442
  }
7920
8443
 
8444
+ .pin-input-tertiary .pin-input-field {
8445
+ color: var(--color-tertiary);
8446
+ }
8447
+
7921
8448
  .pin-input-tertiary .pin-input-field:focus {
7922
- border-color: var(--color-tertiary);
7923
8449
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
7924
8450
  }
7925
8451
 
7926
- /* Error State */
8452
+ .pin-input-info .pin-input-field {
8453
+ color: var(--color-info);
8454
+ }
8455
+
8456
+ .pin-input-info .pin-input-field:focus {
8457
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
8458
+ }
8459
+
8460
+ .pin-input-success .pin-input-field {
8461
+ color: var(--color-success);
8462
+ }
8463
+
8464
+ .pin-input-success .pin-input-field:focus {
8465
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
8466
+ }
8467
+
8468
+ .pin-input-warning .pin-input-field {
8469
+ color: var(--color-warning);
8470
+ }
8471
+
8472
+ .pin-input-warning .pin-input-field:focus {
8473
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
8474
+ }
8475
+
7927
8476
  .pin-input-error .pin-input-field {
7928
- border-color: var(--color-error);
8477
+ color: var(--color-error);
7929
8478
  animation: pin-shake 300ms ease-in-out;
7930
8479
  }
7931
8480
 
7932
8481
  .pin-input-error .pin-input-field:focus {
7933
- border-color: var(--color-error);
7934
8482
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7935
8483
  }
7936
8484
 
@@ -7940,9 +8488,16 @@ html {
7940
8488
  40%, 80% { transform: translateX(4px); }
7941
8489
  }
7942
8490
 
7943
- /* Success State */
7944
- .pin-input-success .pin-input-field {
7945
- border-color: var(--color-success);
8491
+ /* Ghost Variant */
8492
+ .pin-input-ghost .pin-input-field {
8493
+ background-color: transparent;
8494
+ border-color: transparent;
8495
+ }
8496
+
8497
+ .pin-input-ghost .pin-input-field:focus {
8498
+ background-color: var(--color-surface-container);
8499
+ border-color: transparent;
8500
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
7946
8501
  }
7947
8502
 
7948
8503
  /* PIN Group with Label */
@@ -7994,6 +8549,7 @@ html {
7994
8549
  --radio-size: 1.25rem;
7995
8550
  --radio-color: var(--color-primary);
7996
8551
  --radio-border-color: var(--color-on-surface-variant);
8552
+ color: var(--color-on-surface);
7997
8553
 
7998
8554
  position: relative;
7999
8555
  display: inline-grid;
@@ -8044,8 +8600,8 @@ html {
8044
8600
 
8045
8601
  /* Focus State */
8046
8602
  .radio:focus-visible {
8047
- outline: 2px solid var(--radio-color);
8048
- outline-offset: 2px;
8603
+ outline: none;
8604
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--radio-color) 20%, transparent);
8049
8605
  }
8050
8606
 
8051
8607
  /* Disabled State */
@@ -8110,6 +8666,15 @@ html {
8110
8666
  --radio-color: var(--color-info);
8111
8667
  }
8112
8668
 
8669
+ /* Ghost Variant — borderless unchecked state */
8670
+ .radio-ghost {
8671
+ --radio-border-color: transparent;
8672
+ }
8673
+
8674
+ .radio-ghost:hover:not(:disabled):not(:checked) {
8675
+ border-color: transparent;
8676
+ }
8677
+
8113
8678
  /* ========================================
8114
8679
  * Radio with Label (wrapper pattern)
8115
8680
  * ======================================== */
@@ -8175,6 +8740,7 @@ html {
8175
8740
  display: inline-flex;
8176
8741
  align-items: center;
8177
8742
  gap: 0.125rem;
8743
+ color: var(--color-on-surface);
8178
8744
  }
8179
8745
 
8180
8746
  /* Rating Item */
@@ -8278,6 +8844,21 @@ html {
8278
8844
  color: var(--color-success);
8279
8845
  }
8280
8846
 
8847
+ .rating-tertiary .rating-item.filled {
8848
+ color: var(--color-tertiary);
8849
+ }
8850
+
8851
+ .rating-info .rating-item.filled {
8852
+ color: var(--color-info);
8853
+ }
8854
+
8855
+ /* Note: .rating-warning is explicit even though the default rating filled color is
8856
+ already --color-warning. This allows resetting to warning after applying another
8857
+ color variant (e.g. class="rating rating-primary rating-warning"). */
8858
+ .rating-warning .rating-item.filled {
8859
+ color: var(--color-warning);
8860
+ }
8861
+
8281
8862
  /* Read Only */
8282
8863
  .rating-readonly .rating-item {
8283
8864
  cursor: default;
@@ -8321,13 +8902,29 @@ html {
8321
8902
  color: var(--color-warning);
8322
8903
  }
8323
8904
 
8324
- /* Focus Visible */
8905
+ .rating-primary:not(.rating-readonly):hover .rating-item { color: var(--color-primary); }
8906
+ .rating-secondary:not(.rating-readonly):hover .rating-item { color: var(--color-secondary); }
8907
+ .rating-tertiary:not(.rating-readonly):hover .rating-item { color: var(--color-tertiary); }
8908
+ .rating-info:not(.rating-readonly):hover .rating-item { color: var(--color-info); }
8909
+ .rating-success:not(.rating-readonly):hover .rating-item { color: var(--color-success); }
8910
+ .rating-error:not(.rating-readonly):hover .rating-item { color: var(--color-error); }
8911
+
8912
+ /* Focus Visible — use warning (the default fill color) for the base ring;
8913
+ per-variant overrides below match the active fill color for each variant. */
8325
8914
  .rating-item:focus-visible {
8326
- outline: 2px solid var(--color-primary);
8327
- outline-offset: 2px;
8915
+ outline: none;
8916
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent);
8328
8917
  border-radius: 0.25rem;
8329
8918
  }
8330
8919
 
8920
+ .rating-primary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 20%, transparent); }
8921
+ .rating-secondary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 20%, transparent); }
8922
+ .rating-tertiary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 20%, transparent); }
8923
+ .rating-info .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 20%, transparent); }
8924
+ .rating-success .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 20%, transparent); }
8925
+ .rating-error .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent); }
8926
+ .rating-warning .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent); }
8927
+
8331
8928
  /* Rating Display (static) */
8332
8929
  .rating-display {
8333
8930
  display: inline-flex;
@@ -8405,6 +9002,7 @@ html {
8405
9002
  .segment-control {
8406
9003
  display: inline-flex;
8407
9004
  align-items: stretch;
9005
+ color: var(--color-on-surface);
8408
9006
  background-color: var(--color-surface-container);
8409
9007
  border: 1px solid var(--color-outline);
8410
9008
  border-radius: 1.25rem;
@@ -8438,8 +9036,8 @@ html {
8438
9036
  }
8439
9037
 
8440
9038
  .segment-item:focus-visible {
8441
- outline: 2px solid var(--color-primary);
8442
- outline-offset: 2px;
9039
+ outline: none;
9040
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
8443
9041
  }
8444
9042
 
8445
9043
  .segment-item:disabled {
@@ -8509,6 +9107,26 @@ html {
8509
9107
  color: var(--color-on-tertiary-container);
8510
9108
  }
8511
9109
 
9110
+ .segment-control-info .segment-item-active {
9111
+ background-color: var(--color-info-container);
9112
+ color: var(--color-on-info-container);
9113
+ }
9114
+
9115
+ .segment-control-success .segment-item-active {
9116
+ background-color: var(--color-success-container);
9117
+ color: var(--color-on-success-container);
9118
+ }
9119
+
9120
+ .segment-control-warning .segment-item-active {
9121
+ background-color: var(--color-warning-container);
9122
+ color: var(--color-on-warning-container);
9123
+ }
9124
+
9125
+ .segment-control-error .segment-item-active {
9126
+ background-color: var(--color-error-container);
9127
+ color: var(--color-on-error-container);
9128
+ }
9129
+
8512
9130
  /* Full Width */
8513
9131
  .segment-control-full {
8514
9132
  display: flex;
@@ -8597,7 +9215,7 @@ html {
8597
9215
  line-height: 1.5rem;
8598
9216
  color: var(--color-on-surface);
8599
9217
  background-color: var(--color-surface);
8600
- border: 1px solid var(--color-outline);
9218
+ border: 1px solid currentColor;
8601
9219
  border-radius: 0.5rem;
8602
9220
  outline: none;
8603
9221
  cursor: pointer;
@@ -8610,7 +9228,7 @@ html {
8610
9228
  }
8611
9229
 
8612
9230
  .select:hover:not(:disabled) {
8613
- border-color: var(--color-on-surface-variant);
9231
+ background-color: var(--color-surface-container);
8614
9232
  }
8615
9233
 
8616
9234
  .select:focus {
@@ -8618,8 +9236,7 @@ html {
8618
9236
  }
8619
9237
 
8620
9238
  .select:focus-visible {
8621
- border-color: var(--color-primary);
8622
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
9239
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
8623
9240
  }
8624
9241
 
8625
9242
  .select:disabled {
@@ -8646,6 +9263,14 @@ html {
8646
9263
  box-shadow: none;
8647
9264
  }
8648
9265
 
9266
+ .select-filled.select-primary:focus-visible { border-bottom-color: var(--color-primary); }
9267
+ .select-filled.select-secondary:focus-visible { border-bottom-color: var(--color-secondary); }
9268
+ .select-filled.select-tertiary:focus-visible { border-bottom-color: var(--color-tertiary); }
9269
+ .select-filled.select-info:focus-visible { border-bottom-color: var(--color-info); }
9270
+ .select-filled.select-success:focus-visible { border-bottom-color: var(--color-success); }
9271
+ .select-filled.select-warning:focus-visible { border-bottom-color: var(--color-warning); }
9272
+ .select-filled.select-error:focus-visible { border-bottom-color: var(--color-error); }
9273
+
8649
9274
  /* Outlined Variant (default is outlined) */
8650
9275
  .select-outlined {
8651
9276
  background-color: transparent;
@@ -8653,40 +9278,17 @@ html {
8653
9278
  border-radius: 0.5rem;
8654
9279
  }
8655
9280
 
8656
- /* Color Variants */
8657
- .select-primary:focus-visible {
8658
- border-color: var(--color-primary);
8659
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
8660
- }
8661
-
8662
- .select-secondary:focus-visible {
8663
- border-color: var(--color-secondary);
8664
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
8665
- }
8666
-
8667
- .select-tertiary:focus-visible {
8668
- border-color: var(--color-tertiary);
8669
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
8670
- }
9281
+ /* Color Variants — base .select:focus-visible uses currentColor 20%, so no per-variant
9282
+ focus-visible overrides needed; setting color: here is sufficient. */
9283
+ .select-primary { color: var(--color-primary); }
9284
+ .select-secondary { color: var(--color-secondary); }
9285
+ .select-tertiary { color: var(--color-tertiary); }
8671
9286
 
8672
9287
  /* Semantic Colors */
8673
- .select-error {
8674
- border-color: var(--color-error);
8675
- }
8676
-
8677
- .select-error:focus-visible {
8678
- border-color: var(--color-error);
8679
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
8680
- }
8681
-
8682
- .select-success {
8683
- border-color: var(--color-success);
8684
- }
8685
-
8686
- .select-success:focus-visible {
8687
- border-color: var(--color-success);
8688
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
8689
- }
9288
+ .select-info { color: var(--color-info); }
9289
+ .select-success { color: var(--color-success); }
9290
+ .select-warning { color: var(--color-warning); }
9291
+ .select-error { color: var(--color-error); }
8690
9292
 
8691
9293
  /* Size Variants */
8692
9294
  .select-xs {
@@ -8777,7 +9379,7 @@ html {
8777
9379
  .select-ghost:focus-visible {
8778
9380
  background-color: var(--color-surface-container);
8779
9381
  border-color: transparent;
8780
- box-shadow: none;
9382
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
8781
9383
  }
8782
9384
 
8783
9385
  /* Reduce Motion */
@@ -8803,6 +9405,7 @@ html {
8803
9405
  height: 2.5rem;
8804
9406
  touch-action: none;
8805
9407
  user-select: none;
9408
+ color: var(--color-on-surface);
8806
9409
  }
8807
9410
 
8808
9411
  /* Slider Track */
@@ -8863,7 +9466,7 @@ html {
8863
9466
  margin-bottom: 0.5rem;
8864
9467
  font-size: 0.75rem;
8865
9468
  font-weight: 500;
8866
- color: var(--color-on-primary);
9469
+ color: var(--color-primary-content);
8867
9470
  background-color: var(--color-primary);
8868
9471
  border-radius: 0.25rem;
8869
9472
  white-space: nowrap;
@@ -8917,7 +9520,7 @@ html {
8917
9520
  }
8918
9521
 
8919
9522
  .slider-mark-active {
8920
- background-color: var(--color-on-primary);
9523
+ background-color: var(--color-primary-content);
8921
9524
  }
8922
9525
 
8923
9526
  /* Mark Label */
@@ -8968,6 +9571,27 @@ html {
8968
9571
  }
8969
9572
 
8970
9573
  /* Color Variants */
9574
+ .slider-primary .slider-track-filled,
9575
+ .slider-primary .slider-thumb {
9576
+ background-color: var(--color-primary);
9577
+ }
9578
+
9579
+ .slider-primary .slider-mark-active { background-color: var(--color-primary-content); }
9580
+
9581
+ .slider-primary .slider-thumb:hover,
9582
+ .slider-primary .slider-thumb:focus-visible {
9583
+ box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px rgb(0 0 0 / 0.2);
9584
+ }
9585
+
9586
+ .slider-primary .slider-thumb-label {
9587
+ background-color: var(--color-primary);
9588
+ color: var(--color-primary-content);
9589
+ }
9590
+
9591
+ .slider-primary .slider-thumb-label::after {
9592
+ border-top-color: var(--color-primary);
9593
+ }
9594
+
8971
9595
  .slider-secondary .slider-track-filled,
8972
9596
  .slider-secondary .slider-thumb {
8973
9597
  background-color: var(--color-secondary);
@@ -8978,9 +9602,11 @@ html {
8978
9602
  box-shadow: 0 0 0 8px var(--color-secondary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8979
9603
  }
8980
9604
 
9605
+ .slider-secondary .slider-mark-active { background-color: var(--color-secondary-content); }
9606
+
8981
9607
  .slider-secondary .slider-thumb-label {
8982
9608
  background-color: var(--color-secondary);
8983
- color: var(--color-on-secondary);
9609
+ color: var(--color-secondary-content);
8984
9610
  }
8985
9611
 
8986
9612
  .slider-secondary .slider-thumb-label::after {
@@ -8997,13 +9623,103 @@ html {
8997
9623
  box-shadow: 0 0 0 8px var(--color-tertiary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8998
9624
  }
8999
9625
 
9000
- .slider-tertiary .slider-thumb-label {
9001
- background-color: var(--color-tertiary);
9002
- color: var(--color-on-tertiary);
9626
+ .slider-tertiary .slider-mark-active { background-color: var(--color-tertiary-content); }
9627
+
9628
+ .slider-tertiary .slider-thumb-label {
9629
+ background-color: var(--color-tertiary);
9630
+ color: var(--color-tertiary-content);
9631
+ }
9632
+
9633
+ .slider-tertiary .slider-thumb-label::after {
9634
+ border-top-color: var(--color-tertiary);
9635
+ }
9636
+
9637
+ /* Info */
9638
+ .slider-info .slider-track-filled,
9639
+ .slider-info .slider-thumb {
9640
+ background-color: var(--color-info);
9641
+ }
9642
+
9643
+ .slider-info .slider-thumb:hover,
9644
+ .slider-info .slider-thumb:focus-visible {
9645
+ box-shadow: 0 0 0 8px var(--color-info-container), 0 2px 4px rgb(0 0 0 / 0.2);
9646
+ }
9647
+
9648
+ .slider-info .slider-mark-active { background-color: var(--color-info-content); }
9649
+
9650
+ .slider-info .slider-thumb-label {
9651
+ background-color: var(--color-info);
9652
+ color: var(--color-info-content);
9653
+ }
9654
+
9655
+ .slider-info .slider-thumb-label::after {
9656
+ border-top-color: var(--color-info);
9657
+ }
9658
+
9659
+ /* Success */
9660
+ .slider-success .slider-track-filled,
9661
+ .slider-success .slider-thumb {
9662
+ background-color: var(--color-success);
9663
+ }
9664
+
9665
+ .slider-success .slider-thumb:hover,
9666
+ .slider-success .slider-thumb:focus-visible {
9667
+ box-shadow: 0 0 0 8px var(--color-success-container), 0 2px 4px rgb(0 0 0 / 0.2);
9668
+ }
9669
+
9670
+ .slider-success .slider-mark-active { background-color: var(--color-success-content); }
9671
+
9672
+ .slider-success .slider-thumb-label {
9673
+ background-color: var(--color-success);
9674
+ color: var(--color-success-content);
9675
+ }
9676
+
9677
+ .slider-success .slider-thumb-label::after {
9678
+ border-top-color: var(--color-success);
9679
+ }
9680
+
9681
+ /* Warning */
9682
+ .slider-warning .slider-track-filled,
9683
+ .slider-warning .slider-thumb {
9684
+ background-color: var(--color-warning);
9685
+ }
9686
+
9687
+ .slider-warning .slider-thumb:hover,
9688
+ .slider-warning .slider-thumb:focus-visible {
9689
+ box-shadow: 0 0 0 8px var(--color-warning-container), 0 2px 4px rgb(0 0 0 / 0.2);
9690
+ }
9691
+
9692
+ .slider-warning .slider-mark-active { background-color: var(--color-warning-content); }
9693
+
9694
+ .slider-warning .slider-thumb-label {
9695
+ background-color: var(--color-warning);
9696
+ color: var(--color-warning-content);
9697
+ }
9698
+
9699
+ .slider-warning .slider-thumb-label::after {
9700
+ border-top-color: var(--color-warning);
9701
+ }
9702
+
9703
+ /* Error */
9704
+ .slider-error .slider-track-filled,
9705
+ .slider-error .slider-thumb {
9706
+ background-color: var(--color-error);
9707
+ }
9708
+
9709
+ .slider-error .slider-thumb:hover,
9710
+ .slider-error .slider-thumb:focus-visible {
9711
+ box-shadow: 0 0 0 8px var(--color-error-container), 0 2px 4px rgb(0 0 0 / 0.2);
9712
+ }
9713
+
9714
+ .slider-error .slider-mark-active { background-color: var(--color-error-content); }
9715
+
9716
+ .slider-error .slider-thumb-label {
9717
+ background-color: var(--color-error);
9718
+ color: var(--color-error-content);
9003
9719
  }
9004
9720
 
9005
- .slider-tertiary .slider-thumb-label::after {
9006
- border-top-color: var(--color-tertiary);
9721
+ .slider-error .slider-thumb-label::after {
9722
+ border-top-color: var(--color-error);
9007
9723
  }
9008
9724
 
9009
9725
  /* Disabled State */
@@ -9062,9 +9778,18 @@ html {
9062
9778
  right: 100%;
9063
9779
  transform: translateY(-50%);
9064
9780
  border-top-color: transparent;
9065
- border-right-color: var(--color-primary);
9781
+ border-right-color: var(--color-primary); /* overridden per-variant below */
9066
9782
  }
9067
9783
 
9784
+ /* Variant-specific vertical arrow colors (border-right-color cannot use currentColor
9785
+ since it must match the label background, not the text color) */
9786
+ .slider-secondary.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-secondary); }
9787
+ .slider-tertiary.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-tertiary); }
9788
+ .slider-info.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-info); }
9789
+ .slider-success.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-success); }
9790
+ .slider-warning.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-warning); }
9791
+ .slider-error.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-error); }
9792
+
9068
9793
  .slider-vertical .slider-marks {
9069
9794
  flex-direction: column;
9070
9795
  top: 0;
@@ -9104,7 +9829,8 @@ html {
9104
9829
 
9105
9830
  .slider-input:focus {
9106
9831
  outline: none;
9107
- border-color: var(--color-primary);
9832
+ border-color: currentColor;
9833
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
9108
9834
  }
9109
9835
 
9110
9836
  /* Reduce Motion */
@@ -9129,8 +9855,11 @@ html {
9129
9855
  .switch {
9130
9856
  --switch-width: 3.25rem;
9131
9857
  --switch-height: 2rem;
9858
+ color: var(--color-on-surface);
9132
9859
  --switch-thumb-size: 1rem;
9133
9860
  --switch-color: var(--color-primary);
9861
+ --switch-content-color: var(--color-primary-content);
9862
+ --switch-container-color: var(--color-primary-container);
9134
9863
  --switch-track-color: var(--color-surface-container-highest);
9135
9864
  --switch-border-color: var(--color-outline);
9136
9865
  --switch-thumb-color: var(--color-outline);
@@ -9176,7 +9905,7 @@ html {
9176
9905
  }
9177
9906
 
9178
9907
  .switch:checked::before {
9179
- background-color: var(--color-primary-content);
9908
+ background-color: var(--switch-content-color);
9180
9909
  }
9181
9910
 
9182
9911
  /* Hover State (unchecked) */
@@ -9195,13 +9924,13 @@ html {
9195
9924
  }
9196
9925
 
9197
9926
  .switch:checked:hover:not(:disabled)::before {
9198
- background-color: var(--color-primary-container);
9927
+ background-color: var(--switch-container-color);
9199
9928
  }
9200
9929
 
9201
9930
  /* Focus State */
9202
9931
  .switch:focus-visible {
9203
- outline: 2px solid var(--switch-color);
9204
- outline-offset: 2px;
9932
+ outline: none;
9933
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--switch-color) 20%, transparent);
9205
9934
  }
9206
9935
 
9207
9936
  /* Pressed/Active State - expand thumb slightly */
@@ -9278,30 +10007,50 @@ html {
9278
10007
 
9279
10008
  .switch-primary {
9280
10009
  --switch-color: var(--color-primary);
10010
+ --switch-content-color: var(--color-primary-content);
10011
+ --switch-container-color: var(--color-primary-container);
9281
10012
  }
9282
10013
 
9283
10014
  .switch-secondary {
9284
10015
  --switch-color: var(--color-secondary);
10016
+ --switch-content-color: var(--color-secondary-content);
10017
+ --switch-container-color: var(--color-secondary-container);
9285
10018
  }
9286
10019
 
9287
10020
  .switch-tertiary {
9288
10021
  --switch-color: var(--color-tertiary);
10022
+ --switch-content-color: var(--color-tertiary-content);
10023
+ --switch-container-color: var(--color-tertiary-container);
9289
10024
  }
9290
10025
 
9291
10026
  .switch-success {
9292
10027
  --switch-color: var(--color-success);
10028
+ --switch-content-color: var(--color-success-content);
10029
+ --switch-container-color: var(--color-success-container);
9293
10030
  }
9294
10031
 
9295
10032
  .switch-warning {
9296
10033
  --switch-color: var(--color-warning);
10034
+ --switch-content-color: var(--color-warning-content);
10035
+ --switch-container-color: var(--color-warning-container);
9297
10036
  }
9298
10037
 
9299
10038
  .switch-error {
9300
10039
  --switch-color: var(--color-error);
10040
+ --switch-content-color: var(--color-error-content);
10041
+ --switch-container-color: var(--color-error-container);
9301
10042
  }
9302
10043
 
9303
10044
  .switch-info {
9304
10045
  --switch-color: var(--color-info);
10046
+ --switch-content-color: var(--color-info-content);
10047
+ --switch-container-color: var(--color-info-container);
10048
+ }
10049
+
10050
+ /* Ghost Variant — borderless track */
10051
+ .switch-ghost {
10052
+ --switch-border-color: transparent;
10053
+ --switch-track-color: transparent;
9305
10054
  }
9306
10055
 
9307
10056
  /* ========================================
@@ -9445,7 +10194,7 @@ html {
9445
10194
  font-family: inherit;
9446
10195
  color: var(--color-on-surface);
9447
10196
  background-color: var(--color-surface);
9448
- border: 1px solid var(--color-outline);
10197
+ border: 1px solid currentColor;
9449
10198
  border-radius: 0.5rem;
9450
10199
  outline: none;
9451
10200
  resize: vertical;
@@ -9458,7 +10207,7 @@ html {
9458
10207
  }
9459
10208
 
9460
10209
  .textarea:hover:not(:disabled) {
9461
- border-color: var(--color-on-surface-variant);
10210
+ background-color: var(--color-surface-container);
9462
10211
  }
9463
10212
 
9464
10213
  .textarea:focus {
@@ -9466,8 +10215,7 @@ html {
9466
10215
  }
9467
10216
 
9468
10217
  .textarea:focus-visible {
9469
- border-color: var(--color-primary);
9470
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
10218
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
9471
10219
  }
9472
10220
 
9473
10221
  .textarea:disabled {
@@ -9509,6 +10257,14 @@ html {
9509
10257
  box-shadow: none;
9510
10258
  }
9511
10259
 
10260
+ .textarea-filled.textarea-primary:focus-visible { border-bottom-color: var(--color-primary); }
10261
+ .textarea-filled.textarea-secondary:focus-visible { border-bottom-color: var(--color-secondary); }
10262
+ .textarea-filled.textarea-tertiary:focus-visible { border-bottom-color: var(--color-tertiary); }
10263
+ .textarea-filled.textarea-info:focus-visible { border-bottom-color: var(--color-info); }
10264
+ .textarea-filled.textarea-success:focus-visible { border-bottom-color: var(--color-success); }
10265
+ .textarea-filled.textarea-warning:focus-visible { border-bottom-color: var(--color-warning); }
10266
+ .textarea-filled.textarea-error:focus-visible { border-bottom-color: var(--color-error); }
10267
+
9512
10268
  /* Outlined Variant (default) */
9513
10269
  .textarea-outlined {
9514
10270
  background-color: transparent;
@@ -9530,109 +10286,27 @@ html {
9530
10286
  .textarea-ghost:focus-visible {
9531
10287
  background-color: var(--color-surface-container);
9532
10288
  border-color: transparent;
9533
- box-shadow: none;
10289
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
9534
10290
  }
9535
10291
 
9536
10292
  /* ============================================
9537
10293
  * COLOR VARIANTS
9538
10294
  * ============================================ */
9539
10295
 
9540
- /* Primary */
9541
- .textarea-primary {
9542
- border-color: var(--color-primary);
9543
- }
9544
-
9545
- .textarea-primary:focus-visible {
9546
- border-color: var(--color-primary);
9547
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
9548
- }
9549
-
9550
- .textarea-filled.textarea-primary {
9551
- border-bottom-color: var(--color-primary);
9552
- }
9553
-
9554
- .textarea-filled.textarea-primary:focus-visible {
9555
- border-bottom-color: var(--color-primary);
9556
- }
9557
-
9558
- /* Secondary */
9559
- .textarea-secondary {
9560
- border-color: var(--color-secondary);
9561
- }
9562
-
9563
- .textarea-secondary:focus-visible {
9564
- border-color: var(--color-secondary);
9565
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
9566
- }
9567
-
9568
- .textarea-filled.textarea-secondary {
9569
- border-bottom-color: var(--color-secondary);
9570
- }
9571
-
9572
- .textarea-filled.textarea-secondary:focus-visible {
9573
- border-bottom-color: var(--color-secondary);
9574
- }
9575
-
9576
- /* Tertiary */
9577
- .textarea-tertiary {
9578
- border-color: var(--color-tertiary);
9579
- }
9580
-
9581
- .textarea-tertiary:focus-visible {
9582
- border-color: var(--color-tertiary);
9583
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
9584
- }
9585
-
9586
- .textarea-filled.textarea-tertiary {
9587
- border-bottom-color: var(--color-tertiary);
9588
- }
9589
-
9590
- .textarea-filled.textarea-tertiary:focus-visible {
9591
- border-bottom-color: var(--color-tertiary);
9592
- }
10296
+ /* Color Variants — base .textarea:focus-visible uses currentColor 20%, so no per-variant
10297
+ focus-visible overrides needed; setting color: here is sufficient. */
10298
+ .textarea-primary { color: var(--color-primary); }
10299
+ .textarea-secondary { color: var(--color-secondary); }
10300
+ .textarea-tertiary { color: var(--color-tertiary); }
9593
10301
 
9594
10302
  /* ============================================
9595
10303
  * SEMANTIC COLORS
9596
10304
  * ============================================ */
9597
10305
 
9598
- .textarea-error {
9599
- border-color: var(--color-error);
9600
- }
9601
-
9602
- .textarea-error:focus-visible {
9603
- border-color: var(--color-error);
9604
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
9605
- }
9606
-
9607
- .textarea-filled.textarea-error {
9608
- border-bottom-color: var(--color-error);
9609
- }
9610
-
9611
- .textarea-success {
9612
- border-color: var(--color-success);
9613
- }
9614
-
9615
- .textarea-success:focus-visible {
9616
- border-color: var(--color-success);
9617
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
9618
- }
9619
-
9620
- .textarea-filled.textarea-success {
9621
- border-bottom-color: var(--color-success);
9622
- }
9623
-
9624
- .textarea-warning {
9625
- border-color: var(--color-warning);
9626
- }
9627
-
9628
- .textarea-warning:focus-visible {
9629
- border-color: var(--color-warning);
9630
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
9631
- }
9632
-
9633
- .textarea-filled.textarea-warning {
9634
- border-bottom-color: var(--color-warning);
9635
- }
10306
+ .textarea-info { color: var(--color-info); }
10307
+ .textarea-success { color: var(--color-success); }
10308
+ .textarea-warning { color: var(--color-warning); }
10309
+ .textarea-error { color: var(--color-error); }
9636
10310
 
9637
10311
  /* ============================================
9638
10312
  * SIZE VARIANTS
@@ -10049,9 +10723,9 @@ html {
10049
10723
  font-size: 0.875rem;
10050
10724
  font-weight: 500;
10051
10725
  line-height: 1.25rem;
10052
- color: var(--color-on-surface-variant);
10726
+ color: var(--color-on-surface);
10053
10727
  background-color: transparent;
10054
- border: 1px solid var(--color-outline);
10728
+ border: 1px solid currentColor;
10055
10729
  border-radius: 0.5rem;
10056
10730
  cursor: pointer;
10057
10731
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
@@ -10061,7 +10735,6 @@ html {
10061
10735
  /* Hover state */
10062
10736
  .toggle-btn:hover:not(:disabled) {
10063
10737
  background-color: color-mix(in oklch, var(--color-surface-variant) 50%, transparent);
10064
- border-color: var(--color-outline-variant);
10065
10738
  }
10066
10739
 
10067
10740
  /* Active/Selected state */
@@ -10077,6 +10750,14 @@ html {
10077
10750
  background-color: color-mix(in oklch, var(--color-primary-container) 90%, transparent);
10078
10751
  }
10079
10752
 
10753
+ /* Primary variant */
10754
+ .toggle-btn-primary.toggle-btn-active,
10755
+ .toggle-btn-primary.active {
10756
+ color: var(--color-on-primary-container);
10757
+ background-color: var(--color-primary-container);
10758
+ border-color: var(--color-primary);
10759
+ }
10760
+
10080
10761
  /* Secondary variant */
10081
10762
  .toggle-btn-secondary.toggle-btn-active,
10082
10763
  .toggle-btn-secondary.active {
@@ -10093,10 +10774,60 @@ html {
10093
10774
  border-color: var(--color-tertiary);
10094
10775
  }
10095
10776
 
10777
+ /* Info variant */
10778
+ .toggle-btn-info.toggle-btn-active,
10779
+ .toggle-btn-info.active {
10780
+ color: var(--color-on-info-container);
10781
+ background-color: var(--color-info-container);
10782
+ border-color: var(--color-info);
10783
+ }
10784
+
10785
+ /* Success variant */
10786
+ .toggle-btn-success.toggle-btn-active,
10787
+ .toggle-btn-success.active {
10788
+ color: var(--color-on-success-container);
10789
+ background-color: var(--color-success-container);
10790
+ border-color: var(--color-success);
10791
+ }
10792
+
10793
+ /* Warning variant */
10794
+ .toggle-btn-warning.toggle-btn-active,
10795
+ .toggle-btn-warning.active {
10796
+ color: var(--color-on-warning-container);
10797
+ background-color: var(--color-warning-container);
10798
+ border-color: var(--color-warning);
10799
+ }
10800
+
10801
+ /* Error variant */
10802
+ .toggle-btn-error.toggle-btn-active,
10803
+ .toggle-btn-error.active {
10804
+ color: var(--color-on-error-container);
10805
+ background-color: var(--color-error-container);
10806
+ border-color: var(--color-error);
10807
+ }
10808
+
10809
+ /* Ghost Variant */
10810
+ .toggle-btn-ghost {
10811
+ background-color: transparent;
10812
+ border-color: transparent;
10813
+ }
10814
+ .toggle-btn-ghost:hover:not(:disabled) {
10815
+ background-color: var(--color-surface-container);
10816
+ border-color: transparent;
10817
+ }
10818
+
10819
+ .toggle-btn-ghost.toggle-btn-primary { color: var(--color-primary); }
10820
+ .toggle-btn-ghost.toggle-btn-secondary { color: var(--color-secondary); }
10821
+ .toggle-btn-ghost.toggle-btn-tertiary { color: var(--color-tertiary); }
10822
+ .toggle-btn-ghost.toggle-btn-info { color: var(--color-info); }
10823
+ .toggle-btn-ghost.toggle-btn-success { color: var(--color-success); }
10824
+ .toggle-btn-ghost.toggle-btn-warning { color: var(--color-warning); }
10825
+ .toggle-btn-ghost.toggle-btn-error { color: var(--color-error); }
10826
+
10096
10827
  /* Focus state */
10097
10828
  .toggle-btn:focus-visible {
10098
- outline: 2px solid var(--color-primary);
10099
- outline-offset: 2px;
10829
+ outline: none;
10830
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
10100
10831
  }
10101
10832
 
10102
10833
  /* Disabled state */
@@ -10233,7 +10964,7 @@ html {
10233
10964
  .toggle-filled.toggle-btn-active,
10234
10965
  .toggle-filled.active {
10235
10966
  background-color: var(--color-primary);
10236
- color: var(--color-on-primary);
10967
+ color: var(--color-primary-content);
10237
10968
  }
10238
10969
 
10239
10970
  /* With badge/indicator */
@@ -10329,19 +11060,18 @@ html {
10329
11060
  line-height: 1.5rem;
10330
11061
  color: var(--color-on-surface);
10331
11062
  background-color: var(--color-surface);
10332
- border: 1px solid var(--color-outline);
11063
+ border: 1px solid currentColor;
10333
11064
  border-radius: 0.5rem;
10334
11065
  outline: none;
10335
11066
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
10336
11067
  }
10337
11068
 
10338
11069
  .time-input-field:hover:not(:disabled) {
10339
- border-color: var(--color-on-surface-variant);
11070
+ background-color: var(--color-surface-container);
10340
11071
  }
10341
11072
 
10342
11073
  .time-input-field:focus {
10343
- border-color: var(--color-primary);
10344
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
11074
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
10345
11075
  }
10346
11076
 
10347
11077
  .time-input-field:disabled {
@@ -10370,7 +11100,7 @@ html {
10370
11100
  gap: 0.125rem;
10371
11101
  padding: 0.75rem 1rem;
10372
11102
  background-color: var(--color-surface);
10373
- border: 1px solid var(--color-outline);
11103
+ border: 1px solid currentColor;
10374
11104
  border-radius: 0.5rem;
10375
11105
  }
10376
11106
 
@@ -10463,37 +11193,87 @@ html {
10463
11193
 
10464
11194
  .time-input-filled .time-input-field:focus,
10465
11195
  .time-input-filled .time-input-segments:focus-within {
10466
- border-bottom-color: var(--color-primary);
11196
+ border-bottom-color: currentColor;
10467
11197
  box-shadow: none;
10468
11198
  }
10469
11199
 
10470
11200
  /* Color Variants */
11201
+ .time-input-primary .time-input-field,
11202
+ .time-input-primary .time-input-segments {
11203
+ color: var(--color-primary);
11204
+ }
11205
+
10471
11206
  .time-input-primary .time-input-field:focus {
10472
- border-color: var(--color-primary);
10473
11207
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
10474
11208
  }
10475
11209
 
11210
+ .time-input-secondary .time-input-field,
11211
+ .time-input-secondary .time-input-segments {
11212
+ color: var(--color-secondary);
11213
+ }
11214
+
10476
11215
  .time-input-secondary .time-input-field:focus {
10477
- border-color: var(--color-secondary);
10478
11216
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
10479
11217
  }
10480
11218
 
11219
+ .time-input-tertiary .time-input-field,
11220
+ .time-input-tertiary .time-input-segments {
11221
+ color: var(--color-tertiary);
11222
+ }
11223
+
10481
11224
  .time-input-tertiary .time-input-field:focus {
10482
- border-color: var(--color-tertiary);
10483
11225
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
10484
11226
  }
10485
11227
 
10486
- /* Error State */
11228
+ .time-input-info .time-input-field,
11229
+ .time-input-info .time-input-segments {
11230
+ color: var(--color-info);
11231
+ }
11232
+
11233
+ .time-input-info .time-input-field:focus {
11234
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
11235
+ }
11236
+
11237
+ .time-input-success .time-input-field,
11238
+ .time-input-success .time-input-segments {
11239
+ color: var(--color-success);
11240
+ }
11241
+
11242
+ .time-input-success .time-input-field:focus {
11243
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
11244
+ }
11245
+
11246
+ .time-input-warning .time-input-field,
11247
+ .time-input-warning .time-input-segments {
11248
+ color: var(--color-warning);
11249
+ }
11250
+
11251
+ .time-input-warning .time-input-field:focus {
11252
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
11253
+ }
11254
+
10487
11255
  .time-input-error .time-input-field,
10488
11256
  .time-input-error .time-input-segments {
10489
- border-color: var(--color-error);
11257
+ color: var(--color-error);
10490
11258
  }
10491
11259
 
10492
11260
  .time-input-error .time-input-field:focus {
10493
- border-color: var(--color-error);
10494
11261
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
10495
11262
  }
10496
11263
 
11264
+ /* Ghost Variant */
11265
+ .time-input-ghost .time-input-field,
11266
+ .time-input-ghost .time-input-segments {
11267
+ background-color: transparent;
11268
+ border-color: transparent;
11269
+ }
11270
+
11271
+ .time-input-ghost .time-input-field:focus {
11272
+ background-color: var(--color-surface-container);
11273
+ border-color: transparent;
11274
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11275
+ }
11276
+
10497
11277
  /* Time Picker Dropdown */
10498
11278
  .time-picker-dropdown {
10499
11279
  position: absolute;
@@ -10585,20 +11365,19 @@ html {
10585
11365
  line-height: 1.5rem;
10586
11366
  color: var(--color-on-surface);
10587
11367
  background-color: var(--color-surface);
10588
- border: 1px solid var(--color-outline);
11368
+ border: 1px solid currentColor;
10589
11369
  border-radius: 0.5rem;
10590
11370
  cursor: pointer;
10591
11371
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
10592
11372
  }
10593
11373
 
10594
11374
  .tree-select-trigger:hover:not(:disabled) {
10595
- border-color: var(--color-on-surface-variant);
11375
+ background-color: var(--color-surface-container);
10596
11376
  }
10597
11377
 
10598
11378
  .tree-select-trigger:focus {
10599
11379
  outline: none;
10600
- border-color: var(--color-primary);
10601
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
11380
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
10602
11381
  }
10603
11382
 
10604
11383
  .tree-select-trigger:disabled,
@@ -10615,8 +11394,7 @@ html {
10615
11394
 
10616
11395
  div.tree-select-trigger:focus-visible {
10617
11396
  outline: none;
10618
- border-color: var(--color-primary);
10619
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
11397
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
10620
11398
  }
10621
11399
 
10622
11400
  /* Value Display */
@@ -10933,7 +11711,7 @@ html {
10933
11711
  }
10934
11712
 
10935
11713
  .tree-select-filled .tree-select-trigger:focus {
10936
- border-bottom-color: var(--color-primary);
11714
+ border-bottom-color: currentColor;
10937
11715
  box-shadow: none;
10938
11716
  }
10939
11717
 
@@ -10943,16 +11721,67 @@ html {
10943
11721
  gap: 0.25rem;
10944
11722
  }
10945
11723
 
10946
- /* Error State */
10947
- .tree-select-error .tree-select-trigger {
10948
- border-color: var(--color-error);
11724
+ /* Color Variants */
11725
+ .tree-select-primary .tree-select-trigger {
11726
+ color: var(--color-primary);
11727
+ }
11728
+ .tree-select-primary .tree-select-trigger:focus {
11729
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
11730
+ }
11731
+
11732
+ .tree-select-secondary .tree-select-trigger {
11733
+ color: var(--color-secondary);
11734
+ }
11735
+ .tree-select-secondary .tree-select-trigger:focus {
11736
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
11737
+ }
11738
+
11739
+ .tree-select-tertiary .tree-select-trigger {
11740
+ color: var(--color-tertiary);
11741
+ }
11742
+ .tree-select-tertiary .tree-select-trigger:focus {
11743
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
11744
+ }
11745
+
11746
+ .tree-select-info .tree-select-trigger {
11747
+ color: var(--color-info);
11748
+ }
11749
+ .tree-select-info .tree-select-trigger:focus {
11750
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
11751
+ }
11752
+
11753
+ .tree-select-success .tree-select-trigger {
11754
+ color: var(--color-success);
11755
+ }
11756
+ .tree-select-success .tree-select-trigger:focus {
11757
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
11758
+ }
11759
+
11760
+ .tree-select-warning .tree-select-trigger {
11761
+ color: var(--color-warning);
11762
+ }
11763
+ .tree-select-warning .tree-select-trigger:focus {
11764
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
10949
11765
  }
10950
11766
 
11767
+ .tree-select-error .tree-select-trigger {
11768
+ color: var(--color-error);
11769
+ }
10951
11770
  .tree-select-error .tree-select-trigger:focus {
10952
- border-color: var(--color-error);
10953
11771
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
10954
11772
  }
10955
11773
 
11774
+ /* Ghost Variant */
11775
+ .tree-select-ghost .tree-select-trigger {
11776
+ background-color: transparent;
11777
+ border-color: transparent;
11778
+ }
11779
+ .tree-select-ghost .tree-select-trigger:focus {
11780
+ background-color: var(--color-surface-container);
11781
+ border-color: transparent;
11782
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11783
+ }
11784
+
10956
11785
  /* Disabled State */
10957
11786
  .tree-select-disabled .tree-select-trigger {
10958
11787
  cursor: not-allowed;
@@ -11112,8 +11941,8 @@ html {
11112
11941
  }
11113
11942
 
11114
11943
  .alert-close:focus-visible {
11115
- outline: 2px solid currentColor;
11116
- outline-offset: 2px;
11944
+ outline: none;
11945
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11117
11946
  }
11118
11947
 
11119
11948
  /* Type Variants */
@@ -11129,15 +11958,33 @@ html {
11129
11958
  border-color: transparent;
11130
11959
  }
11131
11960
 
11132
- .alert-warning {
11133
- background-color: var(--color-warning-container);
11134
- color: var(--color-on-warning-container);
11961
+ .alert-warning {
11962
+ background-color: var(--color-warning-container);
11963
+ color: var(--color-on-warning-container);
11964
+ border-color: transparent;
11965
+ }
11966
+
11967
+ .alert-error {
11968
+ background-color: var(--color-error-container);
11969
+ color: var(--color-on-error-container);
11970
+ border-color: transparent;
11971
+ }
11972
+
11973
+ .alert-primary {
11974
+ background-color: var(--color-primary-container);
11975
+ color: var(--color-on-primary-container);
11976
+ border-color: transparent;
11977
+ }
11978
+
11979
+ .alert-secondary {
11980
+ background-color: var(--color-secondary-container);
11981
+ color: var(--color-on-secondary-container);
11135
11982
  border-color: transparent;
11136
11983
  }
11137
11984
 
11138
- .alert-error {
11139
- background-color: var(--color-error-container);
11140
- color: var(--color-on-error-container);
11985
+ .alert-tertiary {
11986
+ background-color: var(--color-tertiary-container);
11987
+ color: var(--color-on-tertiary-container);
11141
11988
  border-color: transparent;
11142
11989
  }
11143
11990
 
@@ -11162,6 +12009,21 @@ html {
11162
12009
  color: var(--color-error-content);
11163
12010
  }
11164
12011
 
12012
+ .alert-filled.alert-primary {
12013
+ background-color: var(--color-primary);
12014
+ color: var(--color-primary-content);
12015
+ }
12016
+
12017
+ .alert-filled.alert-secondary {
12018
+ background-color: var(--color-secondary);
12019
+ color: var(--color-secondary-content);
12020
+ }
12021
+
12022
+ .alert-filled.alert-tertiary {
12023
+ background-color: var(--color-tertiary);
12024
+ color: var(--color-tertiary-content);
12025
+ }
12026
+
11165
12027
  /* Outlined Variants */
11166
12028
  .alert-outlined {
11167
12029
  background-color: transparent;
@@ -11187,6 +12049,35 @@ html {
11187
12049
  color: var(--color-error);
11188
12050
  }
11189
12051
 
12052
+ .alert-outlined.alert-primary {
12053
+ border-color: var(--color-primary);
12054
+ color: var(--color-primary);
12055
+ }
12056
+
12057
+ .alert-outlined.alert-secondary {
12058
+ border-color: var(--color-secondary);
12059
+ color: var(--color-secondary);
12060
+ }
12061
+
12062
+ .alert-outlined.alert-tertiary {
12063
+ border-color: var(--color-tertiary);
12064
+ color: var(--color-tertiary);
12065
+ }
12066
+
12067
+ /* Ghost Variant */
12068
+ .alert-ghost {
12069
+ background-color: transparent;
12070
+ border-color: transparent;
12071
+ }
12072
+
12073
+ .alert-ghost.alert-primary { color: var(--color-primary); }
12074
+ .alert-ghost.alert-secondary { color: var(--color-secondary); }
12075
+ .alert-ghost.alert-tertiary { color: var(--color-tertiary); }
12076
+ .alert-ghost.alert-info { color: var(--color-info); }
12077
+ .alert-ghost.alert-success { color: var(--color-success); }
12078
+ .alert-ghost.alert-warning { color: var(--color-warning); }
12079
+ .alert-ghost.alert-error { color: var(--color-error); }
12080
+
11190
12081
  /* Dismissible */
11191
12082
  .alert-dismissible {
11192
12083
  padding-right: 2.5rem;
@@ -12330,8 +13221,8 @@ html {
12330
13221
  }
12331
13222
 
12332
13223
  .toast-close:focus-visible {
12333
- outline: 2px solid var(--color-primary);
12334
- outline-offset: 2px;
13224
+ outline: none;
13225
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
12335
13226
  }
12336
13227
 
12337
13228
  /* Toast Actions */
@@ -12374,6 +13265,30 @@ html {
12374
13265
  color: var(--color-error);
12375
13266
  }
12376
13267
 
13268
+ .toast-primary {
13269
+ border-color: var(--color-primary);
13270
+ }
13271
+
13272
+ .toast-primary .toast-icon {
13273
+ color: var(--color-primary);
13274
+ }
13275
+
13276
+ .toast-secondary {
13277
+ border-color: var(--color-secondary);
13278
+ }
13279
+
13280
+ .toast-secondary .toast-icon {
13281
+ color: var(--color-secondary);
13282
+ }
13283
+
13284
+ .toast-tertiary {
13285
+ border-color: var(--color-tertiary);
13286
+ }
13287
+
13288
+ .toast-tertiary .toast-icon {
13289
+ color: var(--color-tertiary);
13290
+ }
13291
+
12377
13292
  /* Filled Variants */
12378
13293
  .toast-filled.toast-info {
12379
13294
  background-color: var(--color-info-container);
@@ -12399,13 +13314,58 @@ html {
12399
13314
  color: var(--color-on-error-container);
12400
13315
  }
12401
13316
 
13317
+ .toast-filled.toast-primary {
13318
+ background-color: var(--color-primary-container);
13319
+ border-color: transparent;
13320
+ color: var(--color-on-primary-container);
13321
+ }
13322
+
13323
+ .toast-filled.toast-secondary {
13324
+ background-color: var(--color-secondary-container);
13325
+ border-color: transparent;
13326
+ color: var(--color-on-secondary-container);
13327
+ }
13328
+
13329
+ .toast-filled.toast-tertiary {
13330
+ background-color: var(--color-tertiary-container);
13331
+ border-color: transparent;
13332
+ color: var(--color-on-tertiary-container);
13333
+ }
13334
+
13335
+ /* Filled variant sub-element color inheritance fix.
13336
+ .toast-title and .toast-message have explicit color rules that would otherwise
13337
+ override the filled variant's inherited on-container color. */
13338
+ .toast-filled .toast-title,
13339
+ .toast-filled .toast-message {
13340
+ color: inherit;
13341
+ }
13342
+
13343
+ /* Ghost Variant */
13344
+ .toast-ghost {
13345
+ background-color: transparent;
13346
+ border-color: transparent;
13347
+ }
13348
+
13349
+ .toast-ghost.toast-primary { color: var(--color-primary); }
13350
+ .toast-ghost.toast-secondary { color: var(--color-secondary); }
13351
+ .toast-ghost.toast-tertiary { color: var(--color-tertiary); }
13352
+ .toast-ghost.toast-info { color: var(--color-info); }
13353
+ .toast-ghost.toast-success { color: var(--color-success); }
13354
+ .toast-ghost.toast-warning { color: var(--color-warning); }
13355
+ .toast-ghost.toast-error { color: var(--color-error); }
13356
+
13357
+ .toast-ghost .toast-title,
13358
+ .toast-ghost .toast-message {
13359
+ color: inherit;
13360
+ }
13361
+
12402
13362
  /* Progress Bar (for auto-dismiss) */
12403
13363
  .toast-progress {
12404
13364
  position: absolute;
12405
13365
  bottom: 0;
12406
13366
  left: 0;
12407
13367
  height: 3px;
12408
- background-color: var(--color-primary);
13368
+ background-color: currentColor;
12409
13369
  border-radius: 0 0 0.75rem 0.75rem;
12410
13370
  animation: toast-progress linear forwards;
12411
13371
  }
@@ -12668,6 +13628,90 @@ html {
12668
13628
  border-right-color: var(--color-error);
12669
13629
  }
12670
13630
 
13631
+ .tooltip.tooltip-tertiary .tooltip-content {
13632
+ background-color: var(--color-tertiary);
13633
+ color: var(--color-tertiary-content);
13634
+ }
13635
+
13636
+ .tooltip.tooltip-tertiary .tooltip-content::before {
13637
+ border-top-color: var(--color-tertiary);
13638
+ }
13639
+
13640
+ .tooltip.tooltip-tertiary.tooltip-bottom .tooltip-content::before {
13641
+ border-bottom-color: var(--color-tertiary);
13642
+ }
13643
+
13644
+ .tooltip.tooltip-tertiary.tooltip-left .tooltip-content::before {
13645
+ border-left-color: var(--color-tertiary);
13646
+ }
13647
+
13648
+ .tooltip.tooltip-tertiary.tooltip-right .tooltip-content::before {
13649
+ border-right-color: var(--color-tertiary);
13650
+ }
13651
+
13652
+ .tooltip.tooltip-info .tooltip-content {
13653
+ background-color: var(--color-info);
13654
+ color: var(--color-info-content);
13655
+ }
13656
+
13657
+ .tooltip.tooltip-info .tooltip-content::before {
13658
+ border-top-color: var(--color-info);
13659
+ }
13660
+
13661
+ .tooltip.tooltip-info.tooltip-bottom .tooltip-content::before {
13662
+ border-bottom-color: var(--color-info);
13663
+ }
13664
+
13665
+ .tooltip.tooltip-info.tooltip-left .tooltip-content::before {
13666
+ border-left-color: var(--color-info);
13667
+ }
13668
+
13669
+ .tooltip.tooltip-info.tooltip-right .tooltip-content::before {
13670
+ border-right-color: var(--color-info);
13671
+ }
13672
+
13673
+ .tooltip.tooltip-success .tooltip-content {
13674
+ background-color: var(--color-success);
13675
+ color: var(--color-success-content);
13676
+ }
13677
+
13678
+ .tooltip.tooltip-success .tooltip-content::before {
13679
+ border-top-color: var(--color-success);
13680
+ }
13681
+
13682
+ .tooltip.tooltip-success.tooltip-bottom .tooltip-content::before {
13683
+ border-bottom-color: var(--color-success);
13684
+ }
13685
+
13686
+ .tooltip.tooltip-success.tooltip-left .tooltip-content::before {
13687
+ border-left-color: var(--color-success);
13688
+ }
13689
+
13690
+ .tooltip.tooltip-success.tooltip-right .tooltip-content::before {
13691
+ border-right-color: var(--color-success);
13692
+ }
13693
+
13694
+ .tooltip.tooltip-warning .tooltip-content {
13695
+ background-color: var(--color-warning);
13696
+ color: var(--color-warning-content);
13697
+ }
13698
+
13699
+ .tooltip.tooltip-warning .tooltip-content::before {
13700
+ border-top-color: var(--color-warning);
13701
+ }
13702
+
13703
+ .tooltip.tooltip-warning.tooltip-bottom .tooltip-content::before {
13704
+ border-bottom-color: var(--color-warning);
13705
+ }
13706
+
13707
+ .tooltip.tooltip-warning.tooltip-left .tooltip-content::before {
13708
+ border-left-color: var(--color-warning);
13709
+ }
13710
+
13711
+ .tooltip.tooltip-warning.tooltip-right .tooltip-content::before {
13712
+ border-right-color: var(--color-warning);
13713
+ }
13714
+
12671
13715
  /* Multi-line Tooltip */
12672
13716
  .tooltip-multiline .tooltip-content {
12673
13717
  white-space: normal;
@@ -12826,8 +13870,8 @@ html {
12826
13870
  }
12827
13871
 
12828
13872
  .appbar-nav:focus-visible {
12829
- outline: 2px solid var(--color-primary);
12830
- outline-offset: 2px;
13873
+ outline: none;
13874
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
12831
13875
  }
12832
13876
 
12833
13877
  /* App Bar Title */
@@ -12889,8 +13933,8 @@ html {
12889
13933
  }
12890
13934
 
12891
13935
  .appbar-action:focus-visible {
12892
- outline: 2px solid var(--color-primary);
12893
- outline-offset: 2px;
13936
+ outline: none;
13937
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
12894
13938
  }
12895
13939
 
12896
13940
  /* App Bar Logo/Brand */
@@ -13005,8 +14049,8 @@ html {
13005
14049
  }
13006
14050
 
13007
14051
  .appbar-back:focus-visible {
13008
- outline: 2px solid var(--color-primary);
13009
- outline-offset: 2px;
14052
+ outline: none;
14053
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
13010
14054
  }
13011
14055
 
13012
14056
  /* Search Input (direct on element) */
@@ -13037,64 +14081,162 @@ html {
13037
14081
  /* Color Variants */
13038
14082
  .appbar-primary {
13039
14083
  background-color: var(--color-primary);
13040
- color: var(--color-on-primary);
14084
+ color: var(--color-primary-content);
13041
14085
  }
13042
14086
 
13043
14087
  .appbar-primary .appbar-nav,
13044
- .appbar-primary .appbar-action {
13045
- color: var(--color-on-primary);
14088
+ .appbar-primary .appbar-action,
14089
+ .appbar-primary .appbar-back {
14090
+ color: var(--color-primary-content);
13046
14091
  }
13047
14092
 
13048
14093
  .appbar-primary .appbar-nav:hover,
13049
- .appbar-primary .appbar-action:hover {
14094
+ .appbar-primary .appbar-action:hover,
14095
+ .appbar-primary .appbar-back:hover {
13050
14096
  background-color: var(--color-primary-container);
13051
14097
  color: var(--color-on-primary-container);
13052
14098
  }
13053
14099
 
13054
14100
  .appbar-primary .appbar-subtitle {
13055
- color: var(--color-on-primary);
14101
+ color: var(--color-primary-content);
13056
14102
  opacity: 0.8;
13057
14103
  }
13058
14104
 
13059
14105
  .appbar-secondary {
13060
14106
  background-color: var(--color-secondary);
13061
- color: var(--color-on-secondary);
14107
+ color: var(--color-secondary-content);
13062
14108
  }
13063
14109
 
13064
14110
  .appbar-secondary .appbar-nav,
13065
- .appbar-secondary .appbar-action {
13066
- color: var(--color-on-secondary);
14111
+ .appbar-secondary .appbar-action,
14112
+ .appbar-secondary .appbar-back {
14113
+ color: var(--color-secondary-content);
13067
14114
  }
13068
14115
 
13069
14116
  .appbar-secondary .appbar-nav:hover,
13070
- .appbar-secondary .appbar-action:hover {
14117
+ .appbar-secondary .appbar-action:hover,
14118
+ .appbar-secondary .appbar-back:hover {
13071
14119
  background-color: var(--color-secondary-container);
13072
14120
  color: var(--color-on-secondary-container);
13073
14121
  }
13074
14122
 
13075
14123
  .appbar-secondary .appbar-subtitle {
13076
- color: var(--color-on-secondary);
14124
+ color: var(--color-secondary-content);
13077
14125
  opacity: 0.8;
13078
14126
  }
13079
14127
 
13080
14128
  .appbar-tertiary {
13081
14129
  background-color: var(--color-tertiary);
13082
- color: var(--color-on-tertiary);
14130
+ color: var(--color-tertiary-content);
13083
14131
  }
13084
14132
 
13085
14133
  .appbar-tertiary .appbar-nav,
13086
- .appbar-tertiary .appbar-action {
13087
- color: var(--color-on-tertiary);
14134
+ .appbar-tertiary .appbar-action,
14135
+ .appbar-tertiary .appbar-back {
14136
+ color: var(--color-tertiary-content);
13088
14137
  }
13089
14138
 
13090
14139
  .appbar-tertiary .appbar-nav:hover,
13091
- .appbar-tertiary .appbar-action:hover {
14140
+ .appbar-tertiary .appbar-action:hover,
14141
+ .appbar-tertiary .appbar-back:hover {
13092
14142
  background-color: var(--color-tertiary-container);
13093
14143
  color: var(--color-on-tertiary-container);
13094
14144
  }
13095
14145
 
13096
14146
  .appbar-tertiary .appbar-subtitle {
13097
- color: var(--color-on-tertiary);
14147
+ color: var(--color-tertiary-content);
14148
+ opacity: 0.8;
14149
+ }
14150
+
14151
+ .appbar-info {
14152
+ background-color: var(--color-info);
14153
+ color: var(--color-info-content);
14154
+ }
14155
+
14156
+ .appbar-info .appbar-nav,
14157
+ .appbar-info .appbar-action,
14158
+ .appbar-info .appbar-back {
14159
+ color: var(--color-info-content);
14160
+ }
14161
+
14162
+ .appbar-info .appbar-nav:hover,
14163
+ .appbar-info .appbar-action:hover,
14164
+ .appbar-info .appbar-back:hover {
14165
+ background-color: var(--color-info-container);
14166
+ color: var(--color-on-info-container);
14167
+ }
14168
+
14169
+ .appbar-info .appbar-subtitle {
14170
+ color: var(--color-info-content);
14171
+ opacity: 0.8;
14172
+ }
14173
+
14174
+ .appbar-success {
14175
+ background-color: var(--color-success);
14176
+ color: var(--color-success-content);
14177
+ }
14178
+
14179
+ .appbar-success .appbar-nav,
14180
+ .appbar-success .appbar-action,
14181
+ .appbar-success .appbar-back {
14182
+ color: var(--color-success-content);
14183
+ }
14184
+
14185
+ .appbar-success .appbar-nav:hover,
14186
+ .appbar-success .appbar-action:hover,
14187
+ .appbar-success .appbar-back:hover {
14188
+ background-color: var(--color-success-container);
14189
+ color: var(--color-on-success-container);
14190
+ }
14191
+
14192
+ .appbar-success .appbar-subtitle {
14193
+ color: var(--color-success-content);
14194
+ opacity: 0.8;
14195
+ }
14196
+
14197
+ .appbar-warning {
14198
+ background-color: var(--color-warning);
14199
+ color: var(--color-warning-content);
14200
+ }
14201
+
14202
+ .appbar-warning .appbar-nav,
14203
+ .appbar-warning .appbar-action,
14204
+ .appbar-warning .appbar-back {
14205
+ color: var(--color-warning-content);
14206
+ }
14207
+
14208
+ .appbar-warning .appbar-nav:hover,
14209
+ .appbar-warning .appbar-action:hover,
14210
+ .appbar-warning .appbar-back:hover {
14211
+ background-color: var(--color-warning-container);
14212
+ color: var(--color-on-warning-container);
14213
+ }
14214
+
14215
+ .appbar-warning .appbar-subtitle {
14216
+ color: var(--color-warning-content);
14217
+ opacity: 0.8;
14218
+ }
14219
+
14220
+ .appbar-error {
14221
+ background-color: var(--color-error);
14222
+ color: var(--color-error-content);
14223
+ }
14224
+
14225
+ .appbar-error .appbar-nav,
14226
+ .appbar-error .appbar-action,
14227
+ .appbar-error .appbar-back {
14228
+ color: var(--color-error-content);
14229
+ }
14230
+
14231
+ .appbar-error .appbar-nav:hover,
14232
+ .appbar-error .appbar-action:hover,
14233
+ .appbar-error .appbar-back:hover {
14234
+ background-color: var(--color-error-container);
14235
+ color: var(--color-on-error-container);
14236
+ }
14237
+
14238
+ .appbar-error .appbar-subtitle {
14239
+ color: var(--color-error-content);
13098
14240
  opacity: 0.8;
13099
14241
  }
13100
14242
 
@@ -15525,6 +16667,38 @@ html {
15525
16667
  background-color: var(--color-tertiary-container);
15526
16668
  }
15527
16669
 
16670
+ .collapse-info .collapse-trigger {
16671
+ color: var(--color-info);
16672
+ }
16673
+
16674
+ .collapse-info .collapse-trigger:hover {
16675
+ background-color: var(--color-info-container);
16676
+ }
16677
+
16678
+ .collapse-success .collapse-trigger {
16679
+ color: var(--color-success);
16680
+ }
16681
+
16682
+ .collapse-success .collapse-trigger:hover {
16683
+ background-color: var(--color-success-container);
16684
+ }
16685
+
16686
+ .collapse-warning .collapse-trigger {
16687
+ color: var(--color-warning);
16688
+ }
16689
+
16690
+ .collapse-warning .collapse-trigger:hover {
16691
+ background-color: var(--color-warning-container);
16692
+ }
16693
+
16694
+ .collapse-error .collapse-trigger {
16695
+ color: var(--color-error);
16696
+ }
16697
+
16698
+ .collapse-error .collapse-trigger:hover {
16699
+ background-color: var(--color-error-container);
16700
+ }
16701
+
15528
16702
  /* Size Variants */
15529
16703
  .collapse-sm .collapse-trigger {
15530
16704
  padding: 0.5rem 0.75rem;