@duskmoon-dev/core 1.14.2 → 1.16.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 (126) hide show
  1. package/dist/cjs/tailwind-plugin.cjs +38 -79
  2. package/dist/components/accordion.css +7 -7
  3. package/dist/components/alert.css +2 -2
  4. package/dist/components/appbar.css +5 -5
  5. package/dist/components/autocomplete.css +7 -7
  6. package/dist/components/avatar.css +5 -5
  7. package/dist/components/badge.css +3 -3
  8. package/dist/components/bottom-navigation.css +7 -7
  9. package/dist/components/bottomsheet.css +12 -12
  10. package/dist/components/button.css +19 -19
  11. package/dist/components/card.css +9 -2
  12. package/dist/components/cascader.css +9 -9
  13. package/dist/components/checkbox.css +1 -1
  14. package/dist/components/chip.css +12 -10
  15. package/dist/components/circle-menu.css +324 -0
  16. package/dist/components/code-block.css +133 -0
  17. package/dist/components/collapse.css +9 -9
  18. package/dist/components/datepicker.css +22 -22
  19. package/dist/components/dialog.css +5 -5
  20. package/dist/components/drawer.css +13 -13
  21. package/dist/components/file-upload.css +12 -12
  22. package/dist/components/form-group.css +162 -1
  23. package/dist/components/form.css +159 -22
  24. package/dist/components/index.css +1026 -385
  25. package/dist/components/input.css +23 -14
  26. package/dist/components/list.css +3 -3
  27. package/dist/components/markdown-body.css +6 -6
  28. package/dist/components/modal.css +7 -7
  29. package/dist/components/multi-select.css +16 -16
  30. package/dist/components/navigation.css +20 -20
  31. package/dist/components/nested-menu.css +5 -5
  32. package/dist/components/otp-input.css +5 -5
  33. package/dist/components/pin-input.css +5 -5
  34. package/dist/components/popover.css +15 -15
  35. package/dist/components/progress.css +2 -2
  36. package/dist/components/radio.css +2 -2
  37. package/dist/components/rating.css +1 -1
  38. package/dist/components/segment-control.css +6 -6
  39. package/dist/components/select.css +7 -7
  40. package/dist/components/skeleton.css +11 -11
  41. package/dist/components/slider.css +16 -16
  42. package/dist/components/snackbar.css +5 -5
  43. package/dist/components/stepper.css +9 -9
  44. package/dist/components/switch.css +1 -1
  45. package/dist/components/table.css +3 -3
  46. package/dist/components/textarea.css +5 -5
  47. package/dist/components/theme-controller.css +4 -4
  48. package/dist/components/time-input.css +10 -10
  49. package/dist/components/timeline.css +6 -6
  50. package/dist/components/toast.css +3 -3
  51. package/dist/components/toggle.css +8 -8
  52. package/dist/components/tooltip.css +1 -1
  53. package/dist/components/tree-select.css +14 -14
  54. package/dist/esm/components/accordion.js +7 -7
  55. package/dist/esm/components/alert.js +2 -2
  56. package/dist/esm/components/appbar.js +5 -5
  57. package/dist/esm/components/autocomplete.js +7 -7
  58. package/dist/esm/components/avatar.js +5 -5
  59. package/dist/esm/components/badge.js +3 -3
  60. package/dist/esm/components/bottom-navigation.js +7 -7
  61. package/dist/esm/components/bottomsheet.js +12 -12
  62. package/dist/esm/components/button.js +19 -19
  63. package/dist/esm/components/card.js +9 -2
  64. package/dist/esm/components/cascader.js +9 -9
  65. package/dist/esm/components/checkbox.js +1 -1
  66. package/dist/esm/components/chip.js +12 -10
  67. package/dist/esm/components/circle-menu.js +331 -0
  68. package/dist/esm/components/code-block.js +140 -0
  69. package/dist/esm/components/collapse.js +9 -9
  70. package/dist/esm/components/datepicker.js +22 -22
  71. package/dist/esm/components/dialog.js +5 -5
  72. package/dist/esm/components/drawer.js +13 -13
  73. package/dist/esm/components/file-upload.js +12 -12
  74. package/dist/esm/components/form-group.js +162 -1
  75. package/dist/esm/components/form.js +159 -22
  76. package/dist/esm/components/input.js +23 -14
  77. package/dist/esm/components/list.js +3 -3
  78. package/dist/esm/components/markdown-body.js +6 -6
  79. package/dist/esm/components/modal.js +7 -7
  80. package/dist/esm/components/multi-select.js +16 -16
  81. package/dist/esm/components/navigation.js +20 -20
  82. package/dist/esm/components/nested-menu.js +5 -5
  83. package/dist/esm/components/otp-input.js +5 -5
  84. package/dist/esm/components/pin-input.js +5 -5
  85. package/dist/esm/components/popover.js +15 -15
  86. package/dist/esm/components/progress.js +2 -2
  87. package/dist/esm/components/radio.js +2 -2
  88. package/dist/esm/components/rating.js +1 -1
  89. package/dist/esm/components/segment-control.js +6 -6
  90. package/dist/esm/components/select.js +7 -7
  91. package/dist/esm/components/skeleton.js +11 -11
  92. package/dist/esm/components/slider.js +16 -16
  93. package/dist/esm/components/snackbar.js +5 -5
  94. package/dist/esm/components/stepper.js +9 -9
  95. package/dist/esm/components/switch.js +1 -1
  96. package/dist/esm/components/table.js +3 -3
  97. package/dist/esm/components/textarea.js +5 -5
  98. package/dist/esm/components/theme-controller.js +4 -4
  99. package/dist/esm/components/time-input.js +10 -10
  100. package/dist/esm/components/timeline.js +6 -6
  101. package/dist/esm/components/toast.js +3 -3
  102. package/dist/esm/components/toggle.js +8 -8
  103. package/dist/esm/components/tooltip.js +1 -1
  104. package/dist/esm/components/tree-select.js +14 -14
  105. package/dist/esm/tailwind-plugin.js +38 -79
  106. package/dist/index.css +1435 -1137
  107. package/dist/index.min.css +1 -1
  108. package/dist/themes/{forest.css → generated/forest.css} +26 -94
  109. package/dist/themes/generated/moonlight.css +77 -0
  110. package/dist/themes/{ocean.css → generated/ocean.css} +26 -103
  111. package/dist/themes/generated/spacing.css +36 -0
  112. package/dist/themes/{sunset.css → generated/sunset.css} +26 -95
  113. package/dist/themes/generated/sunshine.css +77 -0
  114. package/dist/types/tailwind-plugin.d.ts +1 -0
  115. package/dist/types/tailwind-plugin.d.ts.map +1 -1
  116. package/dist/types/themes/generated/ts/types.d.ts +76 -0
  117. package/dist/types/themes/generated/ts/types.d.ts.map +1 -0
  118. package/dist/types/types/index.d.ts +1 -1
  119. package/dist/types/types/index.d.ts.map +1 -1
  120. package/dist/types/types/plugin.d.ts +1 -1
  121. package/dist/types/types/plugin.d.ts.map +1 -1
  122. package/dist/types/types/theme.d.ts +5 -152
  123. package/dist/types/types/theme.d.ts.map +1 -1
  124. package/package.json +11 -6
  125. package/dist/themes/moonlight.css +0 -271
  126. package/dist/themes/sunshine.css +0 -252
@@ -76,7 +76,7 @@
76
76
  cursor: pointer;
77
77
  user-select: none;
78
78
  border: 1px solid transparent;
79
- border-radius: 0.5rem;
79
+ border-radius: var(--radius-sm);
80
80
  transition: all 150ms ease-in-out;
81
81
  background-color: var(--color-surface-container);
82
82
  color: var(--btn-text-color);
@@ -149,7 +149,7 @@
149
149
  .btn-outlined {
150
150
  --btn-text-color: var(--color-on-surface);
151
151
  background-color: transparent;
152
- border: 1px solid var(--color-outline);
152
+ border-color: var(--color-outline);
153
153
  }
154
154
 
155
155
  .btn-outline:hover,
@@ -161,7 +161,7 @@
161
161
  .btn-outline.btn-primary,
162
162
  .btn-outlined.btn-primary {
163
163
  --btn-text-color: var(--color-primary);
164
- border-color: var(--color-primary);
164
+ border-color: currentColor;
165
165
  }
166
166
 
167
167
  .btn-outline.btn-primary:hover,
@@ -173,7 +173,7 @@
173
173
  .btn-outline.btn-secondary,
174
174
  .btn-outlined.btn-secondary {
175
175
  --btn-text-color: var(--color-secondary);
176
- border-color: var(--color-secondary);
176
+ border-color: currentColor;
177
177
  }
178
178
 
179
179
  .btn-outline.btn-secondary:hover,
@@ -185,7 +185,7 @@
185
185
  .btn-outline.btn-tertiary,
186
186
  .btn-outlined.btn-tertiary {
187
187
  --btn-text-color: var(--color-tertiary);
188
- border-color: var(--color-tertiary);
188
+ border-color: currentColor;
189
189
  }
190
190
 
191
191
  .btn-outline.btn-tertiary:hover,
@@ -197,7 +197,7 @@
197
197
  .btn-outline.btn-info,
198
198
  .btn-outlined.btn-info {
199
199
  --btn-text-color: var(--color-info);
200
- border-color: var(--color-info);
200
+ border-color: currentColor;
201
201
  }
202
202
 
203
203
  .btn-outline.btn-info:hover,
@@ -209,7 +209,7 @@
209
209
  .btn-outline.btn-success,
210
210
  .btn-outlined.btn-success {
211
211
  --btn-text-color: var(--color-success);
212
- border-color: var(--color-success);
212
+ border-color: currentColor;
213
213
  }
214
214
 
215
215
  .btn-outline.btn-success:hover,
@@ -221,7 +221,7 @@
221
221
  .btn-outline.btn-warning,
222
222
  .btn-outlined.btn-warning {
223
223
  --btn-text-color: var(--color-warning);
224
- border-color: var(--color-warning);
224
+ border-color: currentColor;
225
225
  }
226
226
 
227
227
  .btn-outline.btn-warning:hover,
@@ -233,7 +233,7 @@
233
233
  .btn-outline.btn-error,
234
234
  .btn-outlined.btn-error {
235
235
  --btn-text-color: var(--color-error);
236
- border-color: var(--color-error);
236
+ border-color: currentColor;
237
237
  }
238
238
 
239
239
  .btn-outline.btn-error:hover,
@@ -471,7 +471,7 @@
471
471
  --btn-py: 0.25rem;
472
472
  font-size: 0.75rem;
473
473
  line-height: 1rem;
474
- border-radius: 0.25rem;
474
+ border-radius: var(--radius-xs);
475
475
  }
476
476
 
477
477
  .btn-sm {
@@ -479,7 +479,7 @@
479
479
  --btn-py: 0.375rem;
480
480
  font-size: 0.8125rem;
481
481
  line-height: 1.125rem;
482
- border-radius: 0.375rem;
482
+ border-radius: var(--radius-xs);
483
483
  }
484
484
 
485
485
  .btn-md {
@@ -487,7 +487,7 @@
487
487
  --btn-py: 0.625rem;
488
488
  font-size: 0.875rem;
489
489
  line-height: 1.25rem;
490
- border-radius: 0.5rem;
490
+ border-radius: var(--radius-sm);
491
491
  }
492
492
 
493
493
  .btn-lg {
@@ -495,7 +495,7 @@
495
495
  --btn-py: 0.875rem;
496
496
  font-size: 1rem;
497
497
  line-height: 1.5rem;
498
- border-radius: 0.625rem;
498
+ border-radius: var(--radius-sm);
499
499
  }
500
500
 
501
501
  /* Block Button */
@@ -514,13 +514,13 @@
514
514
  }
515
515
 
516
516
  .btn-group .btn:first-child {
517
- border-top-left-radius: 0.5rem;
518
- border-bottom-left-radius: 0.5rem;
517
+ border-top-left-radius: var(--radius-sm);
518
+ border-bottom-left-radius: var(--radius-sm);
519
519
  }
520
520
 
521
521
  .btn-group .btn:last-child {
522
- border-top-right-radius: 0.5rem;
523
- border-bottom-right-radius: 0.5rem;
522
+ border-top-right-radius: var(--radius-sm);
523
+ border-bottom-right-radius: var(--radius-sm);
524
524
  }
525
525
 
526
526
  .btn-group .btn:not(:first-child) {
@@ -541,7 +541,7 @@
541
541
  height: 1rem;
542
542
  border: 2px solid var(--btn-text-color);
543
543
  border-right-color: transparent;
544
- border-radius: 50%;
544
+ border-radius: var(--radius-full);
545
545
  animation: btn-spin 0.6s linear infinite;
546
546
  }
547
547
 
@@ -555,7 +555,7 @@
555
555
  .btn-circle {
556
556
  --btn-p: 0.625rem;
557
557
  --btn-py: 0.625rem;
558
- border-radius: 50%;
558
+ border-radius: var(--radius-full);
559
559
  aspect-ratio: 1;
560
560
  }
561
561
 
@@ -591,7 +591,7 @@
591
591
  flex-direction: column;
592
592
  position: relative;
593
593
  overflow: hidden;
594
- border-radius: 1rem;
594
+ border-radius: var(--radius-lg);
595
595
  background-color: var(--color-surface);
596
596
  color: var(--color-on-surface);
597
597
  box-shadow: var(--shadow-sm);
@@ -825,7 +825,7 @@
825
825
  .card-full-image .card-body {
826
826
  position: relative;
827
827
  z-index: 1;
828
- background: linear-gradient(to top, rgb(0 0 0 / 0.7), transparent);
828
+ background: linear-gradient(to top, color-mix(in srgb, var(--color-shadow) 70%, transparent), transparent);
829
829
  color: white;
830
830
  margin-top: auto;
831
831
  min-height: 50%;
@@ -834,6 +834,13 @@
834
834
  .card-full-image .card-title {
835
835
  color: white;
836
836
  }
837
+
838
+ /* Reduce Motion */
839
+ @media (prefers-reduced-motion: reduce) {
840
+ .card {
841
+ transition: none;
842
+ }
843
+ }
837
844
  }
838
845
 
839
846
 
@@ -854,7 +861,7 @@
854
861
  background-color: var(--color-surface);
855
862
  color: var(--color-on-surface);
856
863
  border: 1px solid currentColor;
857
- border-radius: 0.5rem;
864
+ border-radius: var(--radius-sm);
858
865
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
859
866
  }
860
867
 
@@ -905,7 +912,7 @@
905
912
  padding: 0.375rem 0.625rem;
906
913
  font-size: 0.75rem;
907
914
  line-height: 1rem;
908
- border-radius: 0.25rem;
915
+ border-radius: var(--radius-xs);
909
916
  height: 1.75rem;
910
917
  }
911
918
 
@@ -913,7 +920,7 @@
913
920
  padding: 0.5rem 0.75rem;
914
921
  font-size: 0.875rem;
915
922
  line-height: 1.25rem;
916
- border-radius: 0.375rem;
923
+ border-radius: var(--radius-xs);
917
924
  height: 2.25rem;
918
925
  }
919
926
 
@@ -921,7 +928,7 @@
921
928
  padding: 1rem 1.25rem;
922
929
  font-size: 1.125rem;
923
930
  line-height: 1.75rem;
924
- border-radius: 0.625rem;
931
+ border-radius: var(--radius-sm);
925
932
  height: 3.5rem;
926
933
  }
927
934
 
@@ -942,7 +949,7 @@
942
949
  background-color: var(--color-surface-container);
943
950
  border-color: transparent;
944
951
  border-bottom: 2px solid var(--color-outline);
945
- border-radius: 0.5rem 0.5rem 0 0;
952
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
946
953
  }
947
954
 
948
955
  .input-filled:focus-visible {
@@ -970,13 +977,13 @@
970
977
  }
971
978
 
972
979
  .input-group > .input:first-child {
973
- border-top-left-radius: 0.5rem;
974
- border-bottom-left-radius: 0.5rem;
980
+ border-top-left-radius: var(--radius-sm);
981
+ border-bottom-left-radius: var(--radius-sm);
975
982
  }
976
983
 
977
984
  .input-group > .input:last-child {
978
- border-top-right-radius: 0.5rem;
979
- border-bottom-right-radius: 0.5rem;
985
+ border-top-right-radius: var(--radius-sm);
986
+ border-bottom-right-radius: var(--radius-sm);
980
987
  }
981
988
 
982
989
  .input-group-text {
@@ -990,14 +997,14 @@
990
997
  }
991
998
 
992
999
  .input-group-text:first-child {
993
- border-top-left-radius: 0.5rem;
994
- border-bottom-left-radius: 0.5rem;
1000
+ border-top-left-radius: var(--radius-sm);
1001
+ border-bottom-left-radius: var(--radius-sm);
995
1002
  border-right: none;
996
1003
  }
997
1004
 
998
1005
  .input-group-text:last-child {
999
- border-top-right-radius: 0.5rem;
1000
- border-bottom-right-radius: 0.5rem;
1006
+ border-top-right-radius: var(--radius-sm);
1007
+ border-bottom-right-radius: var(--radius-sm);
1001
1008
  border-left: none;
1002
1009
  }
1003
1010
 
@@ -1008,7 +1015,7 @@
1008
1015
  padding: 0;
1009
1016
  background-color: var(--color-surface);
1010
1017
  border: 1px solid var(--color-outline);
1011
- border-radius: 0.5rem;
1018
+ border-radius: var(--radius-sm);
1012
1019
  overflow: hidden;
1013
1020
  cursor: pointer;
1014
1021
  }
@@ -1031,6 +1038,15 @@
1031
1038
  box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1032
1039
  outline: none;
1033
1040
  }
1041
+
1042
+ /* Reduce Motion */
1043
+ @media (prefers-reduced-motion: reduce) {
1044
+ .input,
1045
+ .input-filled,
1046
+ .file-input {
1047
+ transition: none;
1048
+ }
1049
+ }
1034
1050
  }
1035
1051
 
1036
1052
 
@@ -1077,7 +1093,7 @@
1077
1093
  width: 1.25rem;
1078
1094
  height: 1.25rem;
1079
1095
  border: 2px solid var(--color-outline);
1080
- border-radius: 0.25rem;
1096
+ border-radius: var(--radius-xs);
1081
1097
  background-color: transparent;
1082
1098
  cursor: pointer;
1083
1099
  transition: all 150ms ease-in-out;
@@ -1106,8 +1122,8 @@
1106
1122
  }
1107
1123
 
1108
1124
  .checkbox:focus-visible {
1109
- outline: 2px solid var(--color-primary);
1110
- outline-offset: 2px;
1125
+ outline: none;
1126
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1111
1127
  }
1112
1128
 
1113
1129
  .checkbox:disabled {
@@ -1131,6 +1147,21 @@
1131
1147
  border-color: var(--color-success);
1132
1148
  }
1133
1149
 
1150
+ .checkbox-tertiary:checked {
1151
+ background-color: var(--color-tertiary);
1152
+ border-color: var(--color-tertiary);
1153
+ }
1154
+
1155
+ .checkbox-info:checked {
1156
+ background-color: var(--color-info);
1157
+ border-color: var(--color-info);
1158
+ }
1159
+
1160
+ .checkbox-warning:checked {
1161
+ background-color: var(--color-warning);
1162
+ border-color: var(--color-warning);
1163
+ }
1164
+
1134
1165
  .checkbox-error:checked {
1135
1166
  background-color: var(--color-error);
1136
1167
  border-color: var(--color-error);
@@ -1158,7 +1189,7 @@
1158
1189
  width: 1.25rem;
1159
1190
  height: 1.25rem;
1160
1191
  border: 2px solid var(--color-outline);
1161
- border-radius: 50%;
1192
+ border-radius: var(--radius-full);
1162
1193
  background-color: transparent;
1163
1194
  cursor: pointer;
1164
1195
  transition: all 150ms ease-in-out;
@@ -1181,13 +1212,13 @@
1181
1212
  width: 0.5rem;
1182
1213
  height: 0.5rem;
1183
1214
  background-color: var(--color-primary);
1184
- border-radius: 50%;
1215
+ border-radius: var(--radius-full);
1185
1216
  transform: translate(-50%, -50%);
1186
1217
  }
1187
1218
 
1188
1219
  .radio:focus-visible {
1189
- outline: 2px solid var(--color-primary);
1190
- outline-offset: 2px;
1220
+ outline: none;
1221
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1191
1222
  }
1192
1223
 
1193
1224
  .radio:disabled {
@@ -1212,12 +1243,52 @@
1212
1243
  background-color: var(--color-secondary);
1213
1244
  }
1214
1245
 
1246
+ .radio-tertiary:checked {
1247
+ border-color: var(--color-tertiary);
1248
+ }
1249
+
1250
+ .radio-tertiary:checked::after {
1251
+ background-color: var(--color-tertiary);
1252
+ }
1253
+
1254
+ .radio-info:checked {
1255
+ border-color: var(--color-info);
1256
+ }
1257
+
1258
+ .radio-info:checked::after {
1259
+ background-color: var(--color-info);
1260
+ }
1261
+
1262
+ .radio-success:checked {
1263
+ border-color: var(--color-success);
1264
+ }
1265
+
1266
+ .radio-success:checked::after {
1267
+ background-color: var(--color-success);
1268
+ }
1269
+
1270
+ .radio-warning:checked {
1271
+ border-color: var(--color-warning);
1272
+ }
1273
+
1274
+ .radio-warning:checked::after {
1275
+ background-color: var(--color-warning);
1276
+ }
1277
+
1278
+ .radio-error:checked {
1279
+ border-color: var(--color-error);
1280
+ }
1281
+
1282
+ .radio-error:checked::after {
1283
+ background-color: var(--color-error);
1284
+ }
1285
+
1215
1286
  /* Toggle/Switch */
1216
1287
  .toggle {
1217
1288
  appearance: none;
1218
1289
  width: 3rem;
1219
1290
  height: 1.5rem;
1220
- border-radius: 1rem;
1291
+ border-radius: var(--radius-lg);
1221
1292
  background-color: var(--color-surface-container-highest);
1222
1293
  cursor: pointer;
1223
1294
  transition: all 150ms ease-in-out;
@@ -1233,7 +1304,7 @@
1233
1304
  width: 1rem;
1234
1305
  height: 1rem;
1235
1306
  background-color: var(--color-on-surface-variant);
1236
- border-radius: 50%;
1307
+ border-radius: var(--radius-full);
1237
1308
  transition: all 150ms ease-in-out;
1238
1309
  }
1239
1310
 
@@ -1247,8 +1318,8 @@
1247
1318
  }
1248
1319
 
1249
1320
  .toggle:focus-visible {
1250
- outline: 2px solid var(--color-primary);
1251
- outline-offset: 2px;
1321
+ outline: none;
1322
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1252
1323
  }
1253
1324
 
1254
1325
  .toggle:disabled {
@@ -1301,8 +1372,8 @@
1301
1372
  line-height: 1.5rem;
1302
1373
  background-color: var(--color-surface);
1303
1374
  color: var(--color-on-surface);
1304
- border: 1px solid var(--color-outline);
1305
- border-radius: 0.5rem;
1375
+ border: 1px solid currentColor;
1376
+ border-radius: var(--radius-sm);
1306
1377
  cursor: pointer;
1307
1378
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
1308
1379
  background-position: right 0.75rem center;
@@ -1367,8 +1438,8 @@
1367
1438
  line-height: 1.5rem;
1368
1439
  background-color: var(--color-surface);
1369
1440
  color: var(--color-on-surface);
1370
- border: 1px solid var(--color-outline);
1371
- border-radius: 0.5rem;
1441
+ border: 1px solid currentColor;
1442
+ border-radius: var(--radius-sm);
1372
1443
  resize: vertical;
1373
1444
  transition: border-color 150ms ease-in-out;
1374
1445
  }
@@ -1400,8 +1471,17 @@
1400
1471
  .form-control.error .input,
1401
1472
  .form-control.error .select,
1402
1473
  .form-control.error .textarea,
1403
- .input-error {
1474
+ .input-error,
1475
+ .select-error,
1476
+ .textarea-error {
1477
+ border-color: var(--color-error);
1478
+ }
1479
+
1480
+ .form-control.error .input:focus-visible,
1481
+ .form-control.error .select:focus-visible,
1482
+ .form-control.error .textarea:focus-visible {
1404
1483
  border-color: var(--color-error);
1484
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
1405
1485
  }
1406
1486
 
1407
1487
  .form-control.error .label-text {
@@ -1410,14 +1490,64 @@
1410
1490
 
1411
1491
  .form-control.success .input,
1412
1492
  .form-control.success .select,
1413
- .form-control.success .textarea {
1493
+ .form-control.success .textarea,
1494
+ .input-success,
1495
+ .select-success,
1496
+ .textarea-success {
1414
1497
  border-color: var(--color-success);
1415
1498
  }
1416
1499
 
1500
+ .form-control.success .input:focus-visible,
1501
+ .form-control.success .select:focus-visible,
1502
+ .form-control.success .textarea:focus-visible {
1503
+ border-color: var(--color-success);
1504
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
1505
+ }
1506
+
1417
1507
  .form-control.success .label-text {
1418
1508
  color: var(--color-success);
1419
1509
  }
1420
1510
 
1511
+ .form-control.warning .input,
1512
+ .form-control.warning .select,
1513
+ .form-control.warning .textarea,
1514
+ .input-warning,
1515
+ .select-warning,
1516
+ .textarea-warning {
1517
+ border-color: var(--color-warning);
1518
+ }
1519
+
1520
+ .form-control.warning .input:focus-visible,
1521
+ .form-control.warning .select:focus-visible,
1522
+ .form-control.warning .textarea:focus-visible {
1523
+ border-color: var(--color-warning);
1524
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
1525
+ }
1526
+
1527
+ .form-control.warning .label-text {
1528
+ color: var(--color-warning);
1529
+ }
1530
+
1531
+ .form-control.info .input,
1532
+ .form-control.info .select,
1533
+ .form-control.info .textarea,
1534
+ .input-info,
1535
+ .select-info,
1536
+ .textarea-info {
1537
+ border-color: var(--color-info);
1538
+ }
1539
+
1540
+ .form-control.info .input:focus-visible,
1541
+ .form-control.info .select:focus-visible,
1542
+ .form-control.info .textarea:focus-visible {
1543
+ border-color: var(--color-info);
1544
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
1545
+ }
1546
+
1547
+ .form-control.info .label-text {
1548
+ color: var(--color-info);
1549
+ }
1550
+
1421
1551
  /* Helper Text */
1422
1552
  .helper-text {
1423
1553
  font-size: 0.75rem;
@@ -1433,6 +1563,17 @@
1433
1563
  color: var(--color-success);
1434
1564
  }
1435
1565
 
1566
+ .helper-text.warning {
1567
+ color: var(--color-warning);
1568
+ }
1569
+
1570
+ .helper-text.info {
1571
+ color: var(--color-info);
1572
+ }
1573
+
1574
+ /* Native HTML Validation (:user-invalid/:user-valid, :invalid/:valid, ARIA)
1575
+ * is handled in form-group.css to avoid duplication. */
1576
+
1436
1577
  /* Required Field Indicator */
1437
1578
  .label-text.required::after {
1438
1579
  content: ' *';
@@ -1445,7 +1586,7 @@
1445
1586
  width: 100%;
1446
1587
  height: 0.5rem;
1447
1588
  background-color: var(--color-surface-container-highest);
1448
- border-radius: 0.25rem;
1589
+ border-radius: var(--radius-xs);
1449
1590
  cursor: pointer;
1450
1591
  }
1451
1592
 
@@ -1454,7 +1595,7 @@
1454
1595
  width: 1.25rem;
1455
1596
  height: 1.25rem;
1456
1597
  background-color: var(--color-primary);
1457
- border-radius: 50%;
1598
+ border-radius: var(--radius-full);
1458
1599
  cursor: pointer;
1459
1600
  transition: transform 150ms ease-in-out;
1460
1601
  }
@@ -1468,13 +1609,25 @@
1468
1609
  height: 1.25rem;
1469
1610
  background-color: var(--color-primary);
1470
1611
  border: none;
1471
- border-radius: 50%;
1612
+ border-radius: var(--radius-full);
1472
1613
  cursor: pointer;
1473
1614
  }
1474
1615
 
1475
1616
  .range:focus-visible {
1476
- outline: 2px solid var(--color-primary);
1477
- outline-offset: 2px;
1617
+ outline: none;
1618
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1619
+ }
1620
+
1621
+ /* Reduce Motion */
1622
+ @media (prefers-reduced-motion: reduce) {
1623
+ .form-control,
1624
+ .input,
1625
+ .select,
1626
+ .textarea,
1627
+ .range,
1628
+ .label-float .form-control ~ label {
1629
+ transition: none;
1630
+ }
1478
1631
  }
1479
1632
  }
1480
1633
 
@@ -1546,7 +1699,7 @@
1546
1699
  font-size: 0.875rem;
1547
1700
  color: var(--color-on-surface);
1548
1701
  text-decoration: none;
1549
- border-radius: 0.5rem;
1702
+ border-radius: var(--radius-sm);
1550
1703
  cursor: pointer;
1551
1704
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
1552
1705
  white-space: nowrap;
@@ -1561,8 +1714,8 @@
1561
1714
  .menu li > a:focus-visible,
1562
1715
  .menu li > button:focus-visible,
1563
1716
  .menu-item:focus-visible {
1564
- outline: 2px solid var(--color-primary);
1565
- outline-offset: -2px;
1717
+ outline: none;
1718
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1566
1719
  }
1567
1720
 
1568
1721
  .menu li > a.active,
@@ -1698,9 +1851,9 @@
1698
1851
  }
1699
1852
 
1700
1853
  .breadcrumb-link:focus-visible {
1701
- outline: 2px solid var(--color-primary);
1702
- outline-offset: 2px;
1703
- border-radius: 0.25rem;
1854
+ outline: none;
1855
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1856
+ border-radius: var(--radius-xs);
1704
1857
  }
1705
1858
 
1706
1859
  /* Separator - Default shows "/" */
@@ -1782,7 +1935,7 @@
1782
1935
  color: var(--color-on-surface-variant);
1783
1936
  background-color: transparent;
1784
1937
  border: none;
1785
- border-radius: 0.25rem;
1938
+ border-radius: var(--radius-xs);
1786
1939
  cursor: pointer;
1787
1940
  transition: background-color 150ms ease-in-out;
1788
1941
  }
@@ -1838,7 +1991,7 @@
1838
1991
  .breadcrumbs-contained {
1839
1992
  padding: 0.75rem 1rem;
1840
1993
  background-color: var(--color-surface-container);
1841
- border-radius: 0.5rem;
1994
+ border-radius: var(--radius-sm);
1842
1995
  }
1843
1996
 
1844
1997
  /* No Wrap Variant */
@@ -1887,8 +2040,8 @@
1887
2040
  }
1888
2041
 
1889
2042
  .tab:focus-visible {
1890
- outline: 2px solid var(--color-primary);
1891
- outline-offset: -2px;
2043
+ outline: none;
2044
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
1892
2045
  }
1893
2046
 
1894
2047
  .tab.tab-active,
@@ -1905,13 +2058,13 @@
1905
2058
  /* Tabs Boxed */
1906
2059
  .tabs-boxed {
1907
2060
  background-color: var(--color-surface-container);
1908
- border-radius: 0.5rem;
2061
+ border-radius: var(--radius-sm);
1909
2062
  padding: 0.25rem;
1910
2063
  border: none;
1911
2064
  }
1912
2065
 
1913
2066
  .tabs-boxed .tab {
1914
- border-radius: 0.375rem;
2067
+ border-radius: var(--radius-xs);
1915
2068
  border-bottom: none;
1916
2069
  margin-bottom: 0;
1917
2070
  }
@@ -1931,7 +2084,7 @@
1931
2084
  .tabs-lifted .tab {
1932
2085
  border: 1px solid transparent;
1933
2086
  border-bottom: none;
1934
- border-radius: 0.5rem 0.5rem 0 0;
2087
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
1935
2088
  margin-bottom: -1px;
1936
2089
  }
1937
2090
 
@@ -1971,7 +2124,7 @@
1971
2124
  padding: 0.5rem;
1972
2125
  background-color: var(--color-surface);
1973
2126
  border: 1px solid var(--color-outline);
1974
- border-radius: 0.5rem;
2127
+ border-radius: var(--radius-sm);
1975
2128
  box-shadow: var(--shadow-lg);
1976
2129
  opacity: 0;
1977
2130
  visibility: hidden;
@@ -2038,7 +2191,7 @@
2038
2191
  color: var(--color-on-surface);
2039
2192
  background-color: transparent;
2040
2193
  border: 1px solid var(--color-outline);
2041
- border-radius: 0.5rem;
2194
+ border-radius: var(--radius-sm);
2042
2195
  cursor: pointer;
2043
2196
  transition: all 150ms ease-in-out;
2044
2197
  white-space: nowrap;
@@ -2080,8 +2233,8 @@
2080
2233
  .pagination-next:focus-visible,
2081
2234
  .pagination li > a:focus-visible,
2082
2235
  .pagination li > button:focus-visible {
2083
- outline: 2px solid var(--color-primary);
2084
- outline-offset: 2px;
2236
+ outline: none;
2237
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2085
2238
  }
2086
2239
 
2087
2240
  .pagination-item:disabled,
@@ -2139,7 +2292,7 @@
2139
2292
  color: var(--color-on-surface);
2140
2293
  background-color: var(--color-surface);
2141
2294
  border: 1px solid var(--color-outline);
2142
- border-radius: 0.375rem;
2295
+ border-radius: var(--radius-xs);
2143
2296
  }
2144
2297
 
2145
2298
  .pagination-input input:focus {
@@ -2193,12 +2346,12 @@
2193
2346
 
2194
2347
  .pagination-compact .pagination-item:first-child,
2195
2348
  .pagination-compact .pagination-prev {
2196
- border-radius: 0.5rem 0 0 0.5rem;
2349
+ border-radius: var(--radius-sm) 0 0 var(--radius-sm);
2197
2350
  }
2198
2351
 
2199
2352
  .pagination-compact .pagination-item:last-child,
2200
2353
  .pagination-compact .pagination-next {
2201
- border-radius: 0 0.5rem 0.5rem 0;
2354
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
2202
2355
  }
2203
2356
 
2204
2357
  /* Pagination Responsive */
@@ -2255,7 +2408,7 @@
2255
2408
  padding: 1.5rem;
2256
2409
  background-color: var(--color-surface);
2257
2410
  color: var(--color-on-surface);
2258
- border-radius: 1rem;
2411
+ border-radius: var(--radius-lg);
2259
2412
  box-shadow: var(--shadow-2xl);
2260
2413
  overflow-y: auto;
2261
2414
  transform: scale(0.95);
@@ -2272,7 +2425,7 @@
2272
2425
  position: fixed;
2273
2426
  inset: 0;
2274
2427
  z-index: -1;
2275
- background-color: rgb(0 0 0 / 0.5);
2428
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
2276
2429
  cursor: pointer;
2277
2430
  }
2278
2431
 
@@ -2354,7 +2507,7 @@
2354
2507
  color: var(--color-on-surface-variant);
2355
2508
  background-color: transparent;
2356
2509
  border: none;
2357
- border-radius: 50%;
2510
+ border-radius: var(--radius-full);
2358
2511
  cursor: pointer;
2359
2512
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
2360
2513
  }
@@ -2365,8 +2518,8 @@
2365
2518
  }
2366
2519
 
2367
2520
  .modal-close:focus-visible {
2368
- outline: 2px solid var(--color-primary);
2369
- outline-offset: 2px;
2521
+ outline: none;
2522
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2370
2523
  }
2371
2524
 
2372
2525
  /* Modal Header */
@@ -2404,7 +2557,7 @@
2404
2557
  max-width: 100%;
2405
2558
  max-height: 90vh;
2406
2559
  margin: 0;
2407
- border-radius: 1rem 1rem 0 0;
2560
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
2408
2561
  }
2409
2562
  }
2410
2563
 
@@ -2458,7 +2611,7 @@
2458
2611
  display: flex;
2459
2612
  align-items: center;
2460
2613
  justify-content: center;
2461
- border-radius: 50%;
2614
+ border-radius: var(--radius-full);
2462
2615
  font-size: 2rem;
2463
2616
  }
2464
2617
 
@@ -2530,7 +2683,7 @@
2530
2683
  position: relative;
2531
2684
  width: 3rem;
2532
2685
  height: 3rem;
2533
- border-radius: 50%;
2686
+ border-radius: var(--radius-full);
2534
2687
  overflow: hidden;
2535
2688
  background-color: var(--color-surface-container);
2536
2689
  color: var(--color-on-surface);
@@ -2588,7 +2741,7 @@
2588
2741
 
2589
2742
  /* Shape Variants */
2590
2743
  .avatar-rounded {
2591
- border-radius: 0.5rem;
2744
+ border-radius: var(--radius-sm);
2592
2745
  }
2593
2746
 
2594
2747
  .avatar-square {
@@ -2633,8 +2786,8 @@
2633
2786
 
2634
2787
  /* Ring */
2635
2788
  .avatar-ring {
2636
- outline: 2px solid var(--color-primary);
2637
- outline-offset: 2px;
2789
+ outline: none;
2790
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
2638
2791
  }
2639
2792
 
2640
2793
  .avatar-ring-primary {
@@ -2660,7 +2813,7 @@
2660
2813
  height: 25%;
2661
2814
  min-width: 0.5rem;
2662
2815
  min-height: 0.5rem;
2663
- border-radius: 50%;
2816
+ border-radius: var(--radius-full);
2664
2817
  border: 2px solid var(--color-surface);
2665
2818
  }
2666
2819
 
@@ -2720,7 +2873,7 @@
2720
2873
  font-weight: 500;
2721
2874
  line-height: 1rem;
2722
2875
  white-space: nowrap;
2723
- border-radius: 9999px;
2876
+ border-radius: var(--radius-full);
2724
2877
  background-color: var(--color-surface-container);
2725
2878
  color: var(--color-on-surface);
2726
2879
  }
@@ -2870,7 +3023,7 @@
2870
3023
  transform: translateY(-50%);
2871
3024
  width: 0.375rem;
2872
3025
  height: 0.375rem;
2873
- border-radius: 50%;
3026
+ border-radius: var(--radius-full);
2874
3027
  background-color: currentColor;
2875
3028
  }
2876
3029
 
@@ -2879,7 +3032,7 @@
2879
3032
  width: 0.5rem;
2880
3033
  height: 0.5rem;
2881
3034
  padding: 0;
2882
- border-radius: 50%;
3035
+ border-radius: var(--radius-full);
2883
3036
  }
2884
3037
  }
2885
3038
 
@@ -2898,10 +3051,10 @@
2898
3051
  font-size: 0.875rem;
2899
3052
  font-weight: 500;
2900
3053
  line-height: 1.25rem;
2901
- border-radius: 0.5rem;
3054
+ border-radius: var(--radius-sm);
2902
3055
  background-color: var(--color-surface-container);
2903
3056
  color: var(--color-on-surface);
2904
- border: 1px solid transparent;
3057
+ border: 1px solid currentColor;
2905
3058
  cursor: default;
2906
3059
  transition: all 150ms ease-in-out;
2907
3060
  }
@@ -2928,6 +3081,7 @@
2928
3081
  .chip-primary {
2929
3082
  background-color: var(--color-primary);
2930
3083
  color: var(--color-primary-content);
3084
+ border-color: var(--color-primary);
2931
3085
  }
2932
3086
 
2933
3087
  .chip-primary:hover {
@@ -2937,6 +3091,7 @@
2937
3091
  .chip-secondary {
2938
3092
  background-color: var(--color-secondary);
2939
3093
  color: var(--color-secondary-content);
3094
+ border-color: var(--color-secondary);
2940
3095
  }
2941
3096
 
2942
3097
  .chip-secondary:hover {
@@ -2946,6 +3101,7 @@
2946
3101
  .chip-tertiary {
2947
3102
  background-color: var(--color-tertiary);
2948
3103
  color: var(--color-tertiary-content);
3104
+ border-color: var(--color-tertiary);
2949
3105
  }
2950
3106
 
2951
3107
  .chip-tertiary:hover {
@@ -2955,6 +3111,7 @@
2955
3111
  .chip-info {
2956
3112
  background-color: var(--color-info);
2957
3113
  color: var(--color-info-content);
3114
+ border-color: var(--color-info);
2958
3115
  }
2959
3116
 
2960
3117
  .chip-info:hover {
@@ -2964,6 +3121,7 @@
2964
3121
  .chip-success {
2965
3122
  background-color: var(--color-success);
2966
3123
  color: var(--color-success-content);
3124
+ border-color: var(--color-success);
2967
3125
  }
2968
3126
 
2969
3127
  .chip-success:hover {
@@ -2973,6 +3131,7 @@
2973
3131
  .chip-warning {
2974
3132
  background-color: var(--color-warning);
2975
3133
  color: var(--color-warning-content);
3134
+ border-color: var(--color-warning);
2976
3135
  }
2977
3136
 
2978
3137
  .chip-warning:hover {
@@ -2982,6 +3141,7 @@
2982
3141
  .chip-error {
2983
3142
  background-color: var(--color-error);
2984
3143
  color: var(--color-error-content);
3144
+ border-color: var(--color-error);
2985
3145
  }
2986
3146
 
2987
3147
  .chip-error:hover {
@@ -2999,7 +3159,6 @@
2999
3159
  }
3000
3160
 
3001
3161
  .chip-outlined.chip-primary {
3002
- border-color: var(--color-primary);
3003
3162
  color: var(--color-primary);
3004
3163
  }
3005
3164
 
@@ -3008,7 +3167,6 @@
3008
3167
  }
3009
3168
 
3010
3169
  .chip-outlined.chip-secondary {
3011
- border-color: var(--color-secondary);
3012
3170
  color: var(--color-secondary);
3013
3171
  }
3014
3172
 
@@ -3017,7 +3175,6 @@
3017
3175
  }
3018
3176
 
3019
3177
  .chip-outlined.chip-tertiary {
3020
- border-color: var(--color-tertiary);
3021
3178
  color: var(--color-tertiary);
3022
3179
  }
3023
3180
 
@@ -3026,7 +3183,6 @@
3026
3183
  }
3027
3184
 
3028
3185
  .chip-outlined.chip-info {
3029
- border-color: var(--color-info);
3030
3186
  color: var(--color-info);
3031
3187
  }
3032
3188
 
@@ -3035,7 +3191,6 @@
3035
3191
  }
3036
3192
 
3037
3193
  .chip-outlined.chip-success {
3038
- border-color: var(--color-success);
3039
3194
  color: var(--color-success);
3040
3195
  }
3041
3196
 
@@ -3044,7 +3199,6 @@
3044
3199
  }
3045
3200
 
3046
3201
  .chip-outlined.chip-warning {
3047
- border-color: var(--color-warning);
3048
3202
  color: var(--color-warning);
3049
3203
  }
3050
3204
 
@@ -3053,7 +3207,6 @@
3053
3207
  }
3054
3208
 
3055
3209
  .chip-outlined.chip-error {
3056
- border-color: var(--color-error);
3057
3210
  color: var(--color-error);
3058
3211
  }
3059
3212
 
@@ -3064,6 +3217,7 @@
3064
3217
  /* Tonal/Soft Variant */
3065
3218
  .chip-tonal {
3066
3219
  background-color: var(--color-surface-container-high);
3220
+ border-color: transparent;
3067
3221
  }
3068
3222
 
3069
3223
  .chip-tonal.chip-primary {
@@ -3170,7 +3324,7 @@
3170
3324
  opacity: 0.7;
3171
3325
  background-color: transparent;
3172
3326
  border: none;
3173
- border-radius: 50%;
3327
+ border-radius: var(--radius-full);
3174
3328
  cursor: pointer;
3175
3329
  transition: opacity 150ms ease-in-out;
3176
3330
  }
@@ -3183,6 +3337,7 @@
3183
3337
  .chip-selected {
3184
3338
  background-color: var(--color-primary);
3185
3339
  color: var(--color-primary-content);
3340
+ border-color: var(--color-primary);
3186
3341
  }
3187
3342
 
3188
3343
  .chip-selected.chip-outlined {
@@ -3256,8 +3411,8 @@
3256
3411
  }
3257
3412
 
3258
3413
  .list-item:focus-visible {
3259
- outline: 2px solid var(--color-primary);
3260
- outline-offset: -2px;
3414
+ outline: none;
3415
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
3261
3416
  background-color: var(--color-surface-container);
3262
3417
  }
3263
3418
 
@@ -3304,7 +3459,7 @@
3304
3459
  /* List Variants */
3305
3460
  .list-bordered {
3306
3461
  border: 1px solid var(--color-outline);
3307
- border-radius: 0.5rem;
3462
+ border-radius: var(--radius-sm);
3308
3463
  padding: 0;
3309
3464
  }
3310
3465
 
@@ -3479,7 +3634,7 @@
3479
3634
  /* Bordered Table */
3480
3635
  .table-bordered {
3481
3636
  border: 1px solid var(--color-outline);
3482
- border-radius: 0.5rem;
3637
+ border-radius: var(--radius-sm);
3483
3638
  overflow: hidden;
3484
3639
  }
3485
3640
 
@@ -3599,8 +3754,8 @@
3599
3754
  /* Focus State for Interactive Tables */
3600
3755
  .table tr:focus-visible,
3601
3756
  .table-row:focus-visible {
3602
- outline: 2px solid var(--color-primary);
3603
- outline-offset: -2px;
3757
+ outline: none;
3758
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
3604
3759
  }
3605
3760
  }
3606
3761
 
@@ -3631,7 +3786,7 @@
3631
3786
  color: var(--color-on-surface);
3632
3787
  background-color: var(--color-surface);
3633
3788
  border: 1px solid currentColor;
3634
- border-radius: 0.5rem;
3789
+ border-radius: var(--radius-sm);
3635
3790
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
3636
3791
  }
3637
3792
 
@@ -3658,7 +3813,7 @@
3658
3813
  margin-top: 0.25rem;
3659
3814
  background-color: var(--color-surface);
3660
3815
  border: 1px solid var(--color-outline);
3661
- border-radius: 0.5rem;
3816
+ border-radius: var(--radius-sm);
3662
3817
  box-shadow: var(--shadow-lg);
3663
3818
  overflow-y: auto;
3664
3819
  opacity: 0;
@@ -3740,7 +3895,7 @@
3740
3895
  background-color: var(--color-primary-container);
3741
3896
  color: var(--color-on-primary-container);
3742
3897
  font-weight: 600;
3743
- border-radius: 0.125rem;
3898
+ border-radius: var(--radius-xs);
3744
3899
  }
3745
3900
 
3746
3901
  /* Group Header */
@@ -3786,7 +3941,7 @@
3786
3941
  color: var(--color-on-surface-variant);
3787
3942
  background-color: transparent;
3788
3943
  border: none;
3789
- border-radius: 50%;
3944
+ border-radius: var(--radius-full);
3790
3945
  cursor: pointer;
3791
3946
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
3792
3947
  }
@@ -3811,7 +3966,7 @@
3811
3966
  min-height: 2.75rem;
3812
3967
  background-color: var(--color-surface);
3813
3968
  border: 1px solid var(--color-outline);
3814
- border-radius: 0.5rem;
3969
+ border-radius: var(--radius-sm);
3815
3970
  }
3816
3971
 
3817
3972
  .autocomplete-tags:focus-within {
@@ -3827,7 +3982,7 @@
3827
3982
  font-size: 0.75rem;
3828
3983
  background-color: var(--color-primary-container);
3829
3984
  color: var(--color-on-primary-container);
3830
- border-radius: 0.25rem;
3985
+ border-radius: var(--radius-xs);
3831
3986
  }
3832
3987
 
3833
3988
  .autocomplete-tag-remove {
@@ -3840,7 +3995,7 @@
3840
3995
  background-color: transparent;
3841
3996
  border: none;
3842
3997
  cursor: pointer;
3843
- border-radius: 50%;
3998
+ border-radius: var(--radius-full);
3844
3999
  transition: background-color 150ms ease-in-out;
3845
4000
  }
3846
4001
 
@@ -3965,7 +4120,7 @@
3965
4120
  color: var(--color-on-surface);
3966
4121
  background-color: var(--color-surface);
3967
4122
  border: 1px solid currentColor;
3968
- border-radius: 0.5rem;
4123
+ border-radius: var(--radius-sm);
3969
4124
  cursor: pointer;
3970
4125
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
3971
4126
  }
@@ -4044,7 +4199,7 @@
4044
4199
  color: var(--color-on-surface-variant);
4045
4200
  background-color: transparent;
4046
4201
  border: none;
4047
- border-radius: 50%;
4202
+ border-radius: var(--radius-full);
4048
4203
  cursor: pointer;
4049
4204
  flex-shrink: 0;
4050
4205
  transition: background-color 150ms ease-in-out;
@@ -4064,7 +4219,7 @@
4064
4219
  margin-top: 0.25rem;
4065
4220
  background-color: var(--color-surface);
4066
4221
  border: 1px solid var(--color-outline-variant);
4067
- border-radius: 0.5rem;
4222
+ border-radius: var(--radius-sm);
4068
4223
  box-shadow: var(--shadow-md);
4069
4224
  overflow: hidden;
4070
4225
  }
@@ -4165,7 +4320,7 @@
4165
4320
  color: var(--color-on-surface);
4166
4321
  background-color: transparent;
4167
4322
  border: none;
4168
- border-radius: 0.375rem;
4323
+ border-radius: var(--radius-xs);
4169
4324
  cursor: pointer;
4170
4325
  text-align: left;
4171
4326
  width: 100%;
@@ -4235,7 +4390,7 @@
4235
4390
  color: var(--color-on-surface);
4236
4391
  background-color: var(--color-surface-container);
4237
4392
  border: none;
4238
- border-radius: 0.375rem;
4393
+ border-radius: var(--radius-xs);
4239
4394
  outline: none;
4240
4395
  }
4241
4396
 
@@ -4259,7 +4414,7 @@
4259
4414
  .cascader-sm .cascader-trigger {
4260
4415
  padding: 0.5rem 0.75rem;
4261
4416
  font-size: 0.875rem;
4262
- border-radius: 0.375rem;
4417
+ border-radius: var(--radius-xs);
4263
4418
  }
4264
4419
 
4265
4420
  .cascader-sm .cascader-panel {
@@ -4275,7 +4430,7 @@
4275
4430
  .cascader-lg .cascader-trigger {
4276
4431
  padding: 1rem 1.25rem;
4277
4432
  font-size: 1.125rem;
4278
- border-radius: 0.625rem;
4433
+ border-radius: var(--radius-sm);
4279
4434
  }
4280
4435
 
4281
4436
  .cascader-lg .cascader-panel {
@@ -4299,7 +4454,7 @@
4299
4454
  background-color: var(--color-surface-container);
4300
4455
  border: none;
4301
4456
  border-bottom: 2px solid var(--color-outline);
4302
- border-radius: 0.5rem 0.5rem 0 0;
4457
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
4303
4458
  }
4304
4459
 
4305
4460
  .cascader-filled .cascader-trigger:focus {
@@ -4386,7 +4541,7 @@
4386
4541
  height: 1rem;
4387
4542
  border: 2px solid var(--color-outline);
4388
4543
  border-top-color: var(--color-primary);
4389
- border-radius: 50%;
4544
+ border-radius: var(--radius-full);
4390
4545
  animation: cascader-spin 0.8s linear infinite;
4391
4546
  }
4392
4547
 
@@ -4434,7 +4589,7 @@
4434
4589
  appearance: none;
4435
4590
  background-color: transparent;
4436
4591
  border: 2px solid var(--checkbox-border-color);
4437
- border-radius: 0.125rem;
4592
+ border-radius: var(--radius-xs);
4438
4593
  transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out;
4439
4594
  }
4440
4595
 
@@ -4673,7 +4828,7 @@
4673
4828
  color: var(--color-on-surface);
4674
4829
  background-color: var(--color-surface);
4675
4830
  border: 1px solid currentColor;
4676
- border-radius: 0.5rem;
4831
+ border-radius: var(--radius-sm);
4677
4832
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
4678
4833
  }
4679
4834
 
@@ -4743,7 +4898,7 @@
4743
4898
  padding: 0;
4744
4899
  background: transparent;
4745
4900
  border: none;
4746
- border-radius: 50%;
4901
+ border-radius: var(--radius-full);
4747
4902
  cursor: pointer;
4748
4903
  color: var(--color-on-surface-variant);
4749
4904
  transition: background-color 150ms ease-in-out;
@@ -4767,7 +4922,7 @@
4767
4922
  margin-top: 0.25rem;
4768
4923
  background-color: var(--color-surface);
4769
4924
  border: 1px solid var(--color-outline);
4770
- border-radius: 0.75rem;
4925
+ border-radius: var(--radius-md);
4771
4926
  box-shadow: var(--shadow-lg);
4772
4927
  opacity: 0;
4773
4928
  visibility: hidden;
@@ -4793,7 +4948,7 @@
4793
4948
  min-width: 18rem;
4794
4949
  background-color: var(--color-surface);
4795
4950
  border: 1px solid var(--color-outline);
4796
- border-radius: 0.75rem;
4951
+ border-radius: var(--radius-md);
4797
4952
  box-shadow: var(--shadow-lg);
4798
4953
  }
4799
4954
 
@@ -4826,7 +4981,7 @@
4826
4981
  color: var(--color-on-surface-variant);
4827
4982
  background-color: transparent;
4828
4983
  border: none;
4829
- border-radius: 50%;
4984
+ border-radius: var(--radius-full);
4830
4985
  cursor: pointer;
4831
4986
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
4832
4987
  }
@@ -4883,7 +5038,7 @@
4883
5038
  color: var(--color-on-surface);
4884
5039
  background-color: transparent;
4885
5040
  border: none;
4886
- border-radius: 50%;
5041
+ border-radius: var(--radius-full);
4887
5042
  cursor: pointer;
4888
5043
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
4889
5044
  }
@@ -4893,8 +5048,8 @@
4893
5048
  }
4894
5049
 
4895
5050
  .datepicker-day:focus-visible {
4896
- outline: 2px solid var(--color-primary);
4897
- outline-offset: 2px;
5051
+ outline: none;
5052
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
4898
5053
  }
4899
5054
 
4900
5055
  .datepicker-day-other-month {
@@ -4908,7 +5063,7 @@
4908
5063
 
4909
5064
  .datepicker-day-selected {
4910
5065
  background-color: var(--color-primary);
4911
- color: var(--color-on-primary);
5066
+ color: var(--color-primary-content);
4912
5067
  }
4913
5068
 
4914
5069
  .datepicker-day-selected:hover {
@@ -4931,14 +5086,14 @@
4931
5086
 
4932
5087
  .datepicker-day-range-start {
4933
5088
  background-color: var(--color-primary);
4934
- color: var(--color-on-primary);
4935
- border-radius: 50% 0 0 50%;
5089
+ color: var(--color-primary-content);
5090
+ border-radius: var(--radius-full) 0 0 var(--radius-full);
4936
5091
  }
4937
5092
 
4938
5093
  .datepicker-day-range-end {
4939
5094
  background-color: var(--color-primary);
4940
- color: var(--color-on-primary);
4941
- border-radius: 0 50% 50% 0;
5095
+ color: var(--color-primary-content);
5096
+ border-radius: 0 var(--radius-full) var(--radius-full) 0;
4942
5097
  }
4943
5098
 
4944
5099
  /* Month/Year View */
@@ -4961,7 +5116,7 @@
4961
5116
  color: var(--color-on-surface);
4962
5117
  background-color: transparent;
4963
5118
  border: none;
4964
- border-radius: 0.5rem;
5119
+ border-radius: var(--radius-sm);
4965
5120
  cursor: pointer;
4966
5121
  transition: background-color 150ms ease-in-out;
4967
5122
  }
@@ -4976,7 +5131,7 @@
4976
5131
  .datepicker-year.selected,
4977
5132
  .datepicker-year-selected {
4978
5133
  background-color: var(--color-primary);
4979
- color: var(--color-on-primary);
5134
+ color: var(--color-primary-content);
4980
5135
  }
4981
5136
 
4982
5137
  .datepicker-day-disabled {
@@ -5013,7 +5168,7 @@
5013
5168
  color: var(--color-on-surface);
5014
5169
  background-color: var(--color-surface-container);
5015
5170
  border: 1px solid var(--color-outline);
5016
- border-radius: 0.25rem;
5171
+ border-radius: var(--radius-xs);
5017
5172
  }
5018
5173
 
5019
5174
  .datepicker-time-input:focus {
@@ -5046,17 +5201,17 @@
5046
5201
  }
5047
5202
 
5048
5203
  .datepicker-time-period-btn:first-child {
5049
- border-radius: 0.25rem 0.25rem 0 0;
5204
+ border-radius: var(--radius-xs) var(--radius-xs) 0 0;
5050
5205
  }
5051
5206
 
5052
5207
  .datepicker-time-period-btn:last-child {
5053
- border-radius: 0 0 0.25rem 0.25rem;
5208
+ border-radius: 0 0 var(--radius-xs) var(--radius-xs);
5054
5209
  border-top: none;
5055
5210
  }
5056
5211
 
5057
5212
  .datepicker-time-period-btn.active {
5058
5213
  background-color: var(--color-primary);
5059
- color: var(--color-on-primary);
5214
+ color: var(--color-primary-content);
5060
5215
  border-color: var(--color-primary);
5061
5216
  }
5062
5217
 
@@ -5118,7 +5273,7 @@
5118
5273
  color: var(--color-on-surface);
5119
5274
  background-color: transparent;
5120
5275
  border: none;
5121
- border-radius: 0.375rem;
5276
+ border-radius: var(--radius-xs);
5122
5277
  cursor: pointer;
5123
5278
  text-align: left;
5124
5279
  transition: background-color 150ms ease-in-out;
@@ -5185,7 +5340,7 @@
5185
5340
  color: var(--color-on-surface);
5186
5341
  background-color: var(--color-surface);
5187
5342
  border: 1px solid var(--color-outline);
5188
- border-radius: 0.5rem;
5343
+ border-radius: var(--radius-sm);
5189
5344
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
5190
5345
  }
5191
5346
 
@@ -5291,7 +5446,7 @@
5291
5446
  color: var(--color-on-surface);
5292
5447
  background-color: var(--color-surface);
5293
5448
  border: 1px solid var(--color-outline);
5294
- border-radius: 0.5rem;
5449
+ border-radius: var(--radius-sm);
5295
5450
  transition: border-color 150ms ease-in-out;
5296
5451
  }
5297
5452
 
@@ -5491,7 +5646,7 @@
5491
5646
  padding: 2rem;
5492
5647
  background-color: var(--color-surface);
5493
5648
  border: 2px dashed currentColor;
5494
- border-radius: 0.75rem;
5649
+ border-radius: var(--radius-md);
5495
5650
  cursor: pointer;
5496
5651
  transition: border-color 150ms ease-in-out, background-color 150ms ease-in-out;
5497
5652
  }
@@ -5574,7 +5729,7 @@
5574
5729
  gap: 0.75rem;
5575
5730
  padding: 0.75rem;
5576
5731
  background-color: var(--color-surface-container);
5577
- border-radius: 0.5rem;
5732
+ border-radius: var(--radius-sm);
5578
5733
  }
5579
5734
 
5580
5735
  .file-upload-item-icon {
@@ -5585,7 +5740,7 @@
5585
5740
  height: 2.5rem;
5586
5741
  background-color: var(--color-primary-container);
5587
5742
  color: var(--color-on-primary-container);
5588
- border-radius: 0.5rem;
5743
+ border-radius: var(--radius-sm);
5589
5744
  font-size: 1.25rem;
5590
5745
  flex-shrink: 0;
5591
5746
  }
@@ -5618,7 +5773,7 @@
5618
5773
  color: var(--color-on-surface-variant);
5619
5774
  background-color: transparent;
5620
5775
  border: none;
5621
- border-radius: 50%;
5776
+ border-radius: var(--radius-full);
5622
5777
  cursor: pointer;
5623
5778
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
5624
5779
  flex-shrink: 0;
@@ -5635,7 +5790,7 @@
5635
5790
  height: 0.25rem;
5636
5791
  margin-top: 0.5rem;
5637
5792
  background-color: var(--color-surface-container-highest);
5638
- border-radius: 9999px;
5793
+ border-radius: var(--radius-full);
5639
5794
  overflow: hidden;
5640
5795
  }
5641
5796
 
@@ -5645,7 +5800,7 @@
5645
5800
  left: 0;
5646
5801
  height: 100%;
5647
5802
  background-color: var(--color-primary);
5648
- border-radius: 9999px;
5803
+ border-radius: var(--radius-full);
5649
5804
  transition: width 150ms ease-in-out;
5650
5805
  }
5651
5806
 
@@ -5685,7 +5840,7 @@
5685
5840
  .file-upload-preview-item {
5686
5841
  position: relative;
5687
5842
  aspect-ratio: 1;
5688
- border-radius: 0.5rem;
5843
+ border-radius: var(--radius-sm);
5689
5844
  overflow: hidden;
5690
5845
  background-color: var(--color-surface-container);
5691
5846
  }
@@ -5708,7 +5863,7 @@
5708
5863
  background-color: var(--color-on-surface);
5709
5864
  color: var(--color-surface);
5710
5865
  border: none;
5711
- border-radius: 50%;
5866
+ border-radius: var(--radius-full);
5712
5867
  cursor: pointer;
5713
5868
  opacity: 0;
5714
5869
  transition: opacity 150ms ease-in-out;
@@ -5744,10 +5899,10 @@
5744
5899
  padding: 0.75rem 1.5rem;
5745
5900
  font-size: 0.875rem;
5746
5901
  font-weight: 500;
5747
- color: var(--color-on-primary);
5902
+ color: var(--color-primary-content);
5748
5903
  background-color: var(--color-primary);
5749
5904
  border: none;
5750
- border-radius: 0.5rem;
5905
+ border-radius: var(--radius-sm);
5751
5906
  cursor: pointer;
5752
5907
  transition: background-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
5753
5908
  }
@@ -5757,8 +5912,8 @@
5757
5912
  }
5758
5913
 
5759
5914
  .file-upload-button:focus-visible {
5760
- outline: 2px solid var(--color-primary);
5761
- outline-offset: 2px;
5915
+ outline: none;
5916
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
5762
5917
  }
5763
5918
 
5764
5919
  .file-upload-button:disabled {
@@ -5970,7 +6125,7 @@
5970
6125
  padding: 1rem;
5971
6126
  margin: 0;
5972
6127
  border: 1px solid var(--color-outline-variant);
5973
- border-radius: 0.5rem;
6128
+ border-radius: var(--radius-sm);
5974
6129
  background-color: transparent;
5975
6130
  }
5976
6131
 
@@ -6182,11 +6337,172 @@
6182
6337
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
6183
6338
  }
6184
6339
 
6340
+ /* Info State on Form Group */
6341
+ .form-group-info .form-label {
6342
+ color: var(--color-info);
6343
+ }
6344
+
6345
+ .form-group-info .input,
6346
+ .form-group-info .select,
6347
+ .form-group-info .textarea {
6348
+ border-color: var(--color-info);
6349
+ }
6350
+
6351
+ .form-group-info .input:focus-visible,
6352
+ .form-group-info .select:focus-visible,
6353
+ .form-group-info .textarea:focus-visible {
6354
+ border-color: var(--color-info);
6355
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
6356
+ }
6357
+
6185
6358
  /* Disabled Form Group */
6186
6359
  .form-group-disabled {
6187
6360
  opacity: 0.5;
6188
6361
  pointer-events: none;
6189
6362
  }
6363
+
6364
+ /* ARIA-based validation states — mirrors class-based states for native form validation */
6365
+ .input[aria-invalid="true"],
6366
+ .select[aria-invalid="true"],
6367
+ .textarea[aria-invalid="true"] {
6368
+ border-color: var(--color-error);
6369
+ color: var(--color-error);
6370
+ }
6371
+
6372
+ .input[aria-invalid="true"]:focus-visible,
6373
+ .select[aria-invalid="true"]:focus-visible,
6374
+ .textarea[aria-invalid="true"]:focus-visible {
6375
+ border-color: var(--color-error);
6376
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
6377
+ }
6378
+
6379
+ /* ARIA-based validation for checkbox, radio, switch, file-input
6380
+ (frameworks like React Hook Form / Angular set aria-invalid programmatically) */
6381
+ .checkbox[aria-invalid="true"],
6382
+ .radio[aria-invalid="true"],
6383
+ .file-input[aria-invalid="true"] {
6384
+ border-color: var(--color-error);
6385
+ }
6386
+
6387
+ .checkbox[aria-invalid="true"]:focus-visible,
6388
+ .radio[aria-invalid="true"]:focus-visible,
6389
+ .file-input[aria-invalid="true"]:focus-visible {
6390
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
6391
+ }
6392
+
6393
+ .switch[aria-invalid="true"] {
6394
+ border-color: var(--color-error);
6395
+ }
6396
+
6397
+ .switch[aria-invalid="true"]:focus-visible {
6398
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
6399
+ }
6400
+
6401
+ /* ARIA required indicator for labels */
6402
+ .form-label[aria-required="true"]::after,
6403
+ label[aria-required="true"]::after {
6404
+ content: ' *';
6405
+ color: var(--color-error);
6406
+ }
6407
+
6408
+ /* Native :invalid pseudo-class (opt-in with .validate class to avoid red on page load) */
6409
+ .validate .input:invalid,
6410
+ .validate .select:invalid,
6411
+ .validate .textarea:invalid {
6412
+ border-color: var(--color-error);
6413
+ }
6414
+
6415
+ .validate .input:valid,
6416
+ .validate .select:valid,
6417
+ .validate .textarea:valid {
6418
+ border-color: var(--color-success);
6419
+ }
6420
+
6421
+ /* :user-invalid — fires only after user interaction (no .validate wrapper needed) */
6422
+ .input:user-invalid,
6423
+ .select:user-invalid,
6424
+ .textarea:user-invalid {
6425
+ border-color: var(--color-error);
6426
+ }
6427
+
6428
+ .input:user-invalid:focus-visible,
6429
+ .select:user-invalid:focus-visible,
6430
+ .textarea:user-invalid:focus-visible {
6431
+ border-color: var(--color-error);
6432
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
6433
+ }
6434
+
6435
+ .input:user-valid,
6436
+ .select:user-valid,
6437
+ .textarea:user-valid {
6438
+ border-color: var(--color-success);
6439
+ }
6440
+
6441
+ .input:user-valid:focus-visible,
6442
+ .select:user-valid:focus-visible,
6443
+ .textarea:user-valid:focus-visible {
6444
+ border-color: var(--color-success);
6445
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
6446
+ }
6447
+
6448
+ /* Checkbox & Radio — validation pseudo-classes */
6449
+ .checkbox:user-invalid,
6450
+ .radio:user-invalid {
6451
+ border-color: var(--color-error);
6452
+ }
6453
+
6454
+ .checkbox:user-invalid:focus-visible,
6455
+ .radio:user-invalid:focus-visible {
6456
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
6457
+ }
6458
+
6459
+ .checkbox:user-valid:checked,
6460
+ .radio:user-valid:checked {
6461
+ border-color: var(--color-success);
6462
+ background-color: var(--color-success);
6463
+ }
6464
+
6465
+ /* Switch — validation pseudo-classes (required but unchecked) */
6466
+ .switch:user-invalid {
6467
+ border-color: var(--color-error);
6468
+ }
6469
+
6470
+ .switch:user-invalid:focus-visible {
6471
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
6472
+ }
6473
+
6474
+ .switch:user-valid:checked {
6475
+ background-color: var(--color-success);
6476
+ border-color: var(--color-success);
6477
+ }
6478
+
6479
+ /* File Input — validation pseudo-classes */
6480
+ .file-input:user-invalid {
6481
+ border-color: var(--color-error);
6482
+ }
6483
+
6484
+ .file-input:user-invalid:focus-visible {
6485
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
6486
+ }
6487
+
6488
+ /* Filled Input — validation with bottom border */
6489
+ .input-filled:user-invalid {
6490
+ border-bottom-color: var(--color-error);
6491
+ }
6492
+
6493
+ .input-filled:user-invalid:focus-visible {
6494
+ border-bottom-color: var(--color-error);
6495
+ box-shadow: none;
6496
+ }
6497
+
6498
+ .input-filled:user-valid {
6499
+ border-bottom-color: var(--color-success);
6500
+ }
6501
+
6502
+ .input-filled:user-valid:focus-visible {
6503
+ border-bottom-color: var(--color-success);
6504
+ box-shadow: none;
6505
+ }
6190
6506
  }
6191
6507
 
6192
6508
  /**
@@ -6216,7 +6532,7 @@
6216
6532
  color: var(--color-on-surface);
6217
6533
  background-color: var(--color-surface);
6218
6534
  border: 1px solid currentColor;
6219
- border-radius: 0.5rem;
6535
+ border-radius: var(--radius-sm);
6220
6536
  cursor: pointer;
6221
6537
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
6222
6538
  }
@@ -6258,7 +6574,7 @@
6258
6574
  line-height: 1.25rem;
6259
6575
  background-color: var(--color-surface-container-high);
6260
6576
  color: var(--color-on-surface);
6261
- border-radius: 1rem;
6577
+ border-radius: var(--radius-lg);
6262
6578
  }
6263
6579
 
6264
6580
  .multi-select-tag-text {
@@ -6278,7 +6594,7 @@
6278
6594
  color: inherit;
6279
6595
  background-color: transparent;
6280
6596
  border: none;
6281
- border-radius: 50%;
6597
+ border-radius: var(--radius-full);
6282
6598
  cursor: pointer;
6283
6599
  opacity: 0.7;
6284
6600
  transition: opacity 150ms ease-in-out, background-color 150ms ease-in-out;
@@ -6310,7 +6626,7 @@
6310
6626
  line-height: 1.25rem;
6311
6627
  background-color: var(--color-surface-container);
6312
6628
  color: var(--color-on-surface-variant);
6313
- border-radius: 1rem;
6629
+ border-radius: var(--radius-lg);
6314
6630
  }
6315
6631
 
6316
6632
  /* Inline Search Input */
@@ -6358,7 +6674,7 @@
6358
6674
  color: var(--color-on-surface-variant);
6359
6675
  background-color: transparent;
6360
6676
  border: none;
6361
- border-radius: 50%;
6677
+ border-radius: var(--radius-full);
6362
6678
  cursor: pointer;
6363
6679
  flex-shrink: 0;
6364
6680
  transition: background-color 150ms ease-in-out;
@@ -6380,7 +6696,7 @@
6380
6696
  margin-top: 0.25rem;
6381
6697
  background-color: var(--color-surface);
6382
6698
  border: 1px solid var(--color-outline-variant);
6383
- border-radius: 0.5rem;
6699
+ border-radius: var(--radius-sm);
6384
6700
  box-shadow: var(--shadow-md);
6385
6701
  overflow: hidden;
6386
6702
  }
@@ -6417,7 +6733,7 @@
6417
6733
  color: var(--color-on-surface);
6418
6734
  background-color: var(--color-surface-container);
6419
6735
  border: none;
6420
- border-radius: 0.375rem;
6736
+ border-radius: var(--radius-xs);
6421
6737
  outline: none;
6422
6738
  }
6423
6739
 
@@ -6448,7 +6764,7 @@
6448
6764
  color: var(--color-on-surface);
6449
6765
  background-color: transparent;
6450
6766
  border: none;
6451
- border-radius: 0.375rem;
6767
+ border-radius: var(--radius-xs);
6452
6768
  cursor: pointer;
6453
6769
  text-align: left;
6454
6770
  transition: background-color 150ms ease-in-out;
@@ -6489,7 +6805,7 @@
6489
6805
  height: 1rem;
6490
6806
  background-color: transparent;
6491
6807
  border: 2px solid var(--color-on-surface-variant);
6492
- border-radius: 0.125rem;
6808
+ border-radius: var(--radius-xs);
6493
6809
  flex-shrink: 0;
6494
6810
  }
6495
6811
 
@@ -6499,7 +6815,7 @@
6499
6815
  }
6500
6816
 
6501
6817
  .multi-select-option-selected .multi-select-option-checkbox svg {
6502
- color: var(--color-on-primary);
6818
+ color: var(--color-primary-content);
6503
6819
  }
6504
6820
 
6505
6821
  /* Option Icon */
@@ -6562,7 +6878,7 @@
6562
6878
  color: var(--color-primary);
6563
6879
  background-color: transparent;
6564
6880
  border: none;
6565
- border-radius: 0.375rem;
6881
+ border-radius: var(--radius-xs);
6566
6882
  cursor: pointer;
6567
6883
  transition: background-color 150ms ease-in-out;
6568
6884
  }
@@ -6583,7 +6899,7 @@
6583
6899
  font-weight: 600;
6584
6900
  color: var(--color-primary-content);
6585
6901
  background-color: var(--color-primary);
6586
- border-radius: 0.625rem;
6902
+ border-radius: var(--radius-sm);
6587
6903
  }
6588
6904
 
6589
6905
  /* Size Variants */
@@ -6591,7 +6907,7 @@
6591
6907
  min-height: 2.25rem;
6592
6908
  padding: 0.375rem 0.5rem;
6593
6909
  font-size: 0.875rem;
6594
- border-radius: 0.375rem;
6910
+ border-radius: var(--radius-xs);
6595
6911
  }
6596
6912
 
6597
6913
  .multi-select-sm .multi-select-tag {
@@ -6603,7 +6919,7 @@
6603
6919
  min-height: 3.25rem;
6604
6920
  padding: 0.625rem 1rem;
6605
6921
  font-size: 1.125rem;
6606
- border-radius: 0.625rem;
6922
+ border-radius: var(--radius-sm);
6607
6923
  }
6608
6924
 
6609
6925
  /* Outlined Variant (Default) */
@@ -6617,7 +6933,7 @@
6617
6933
  background-color: var(--color-surface-container);
6618
6934
  border: none;
6619
6935
  border-bottom: 2px solid var(--color-outline);
6620
- border-radius: 0.5rem 0.5rem 0 0;
6936
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
6621
6937
  }
6622
6938
 
6623
6939
  .multi-select-filled .multi-select-trigger:focus-within {
@@ -6708,7 +7024,7 @@
6708
7024
  height: 1rem;
6709
7025
  border: 2px solid var(--color-outline);
6710
7026
  border-top-color: var(--color-primary);
6711
- border-radius: 50%;
7027
+ border-radius: var(--radius-full);
6712
7028
  animation: multi-select-spin 0.8s linear infinite;
6713
7029
  }
6714
7030
 
@@ -6755,7 +7071,7 @@
6755
7071
  color: var(--color-on-surface);
6756
7072
  background-color: var(--color-surface);
6757
7073
  border: 2px solid currentColor;
6758
- border-radius: 0.5rem;
7074
+ border-radius: var(--radius-sm);
6759
7075
  outline: none;
6760
7076
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
6761
7077
  caret-color: var(--color-primary);
@@ -6794,7 +7110,7 @@
6794
7110
  width: 1rem;
6795
7111
  height: 0.25rem;
6796
7112
  background-color: var(--color-outline);
6797
- border-radius: 0.125rem;
7113
+ border-radius: var(--radius-xs);
6798
7114
  }
6799
7115
 
6800
7116
  /* Size Variants */
@@ -6802,14 +7118,14 @@
6802
7118
  width: 2.5rem;
6803
7119
  height: 3rem;
6804
7120
  font-size: 1.25rem;
6805
- border-radius: 0.375rem;
7121
+ border-radius: var(--radius-xs);
6806
7122
  }
6807
7123
 
6808
7124
  .otp-input-lg .otp-input-field {
6809
7125
  width: 3.5rem;
6810
7126
  height: 4rem;
6811
7127
  font-size: 1.75rem;
6812
- border-radius: 0.625rem;
7128
+ border-radius: var(--radius-sm);
6813
7129
  }
6814
7130
 
6815
7131
  /* Compact Gap */
@@ -6827,7 +7143,7 @@
6827
7143
  background-color: var(--color-surface-container);
6828
7144
  border: none;
6829
7145
  border-bottom: 2px solid var(--color-outline);
6830
- border-radius: 0.5rem 0.5rem 0 0;
7146
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
6831
7147
  }
6832
7148
 
6833
7149
  .otp-input-filled .otp-input-field:focus {
@@ -6983,7 +7299,7 @@
6983
7299
  color: var(--color-on-surface);
6984
7300
  background-color: var(--color-surface);
6985
7301
  border: 2px solid currentColor;
6986
- border-radius: 0.5rem;
7302
+ border-radius: var(--radius-sm);
6987
7303
  outline: none;
6988
7304
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
6989
7305
  caret-color: var(--color-primary);
@@ -7019,14 +7335,14 @@
7019
7335
  width: 2.5rem;
7020
7336
  height: 3rem;
7021
7337
  font-size: 1.25rem;
7022
- border-radius: 0.375rem;
7338
+ border-radius: var(--radius-xs);
7023
7339
  }
7024
7340
 
7025
7341
  .pin-input-lg .pin-input-field {
7026
7342
  width: 3.5rem;
7027
7343
  height: 4rem;
7028
7344
  font-size: 1.75rem;
7029
- border-radius: 0.625rem;
7345
+ border-radius: var(--radius-sm);
7030
7346
  }
7031
7347
 
7032
7348
  /* Compact Gap */
@@ -7039,7 +7355,7 @@
7039
7355
  background-color: var(--color-surface-container);
7040
7356
  border: none;
7041
7357
  border-bottom: 2px solid var(--color-outline);
7042
- border-radius: 0.5rem 0.5rem 0 0;
7358
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
7043
7359
  }
7044
7360
 
7045
7361
  .pin-input-filled .pin-input-field:focus {
@@ -7051,7 +7367,7 @@
7051
7367
  .pin-input-circle .pin-input-field {
7052
7368
  width: 3rem;
7053
7369
  height: 3rem;
7054
- border-radius: 50%;
7370
+ border-radius: var(--radius-full);
7055
7371
  }
7056
7372
 
7057
7373
  .pin-input-circle.pin-input-sm .pin-input-field {
@@ -7207,7 +7523,7 @@
7207
7523
  appearance: none;
7208
7524
  background-color: transparent;
7209
7525
  border: 2px solid var(--radio-border-color);
7210
- border-radius: 50%;
7526
+ border-radius: var(--radius-full);
7211
7527
  transition: border-color 150ms ease-in-out;
7212
7528
  }
7213
7529
 
@@ -7216,7 +7532,7 @@
7216
7532
  content: "";
7217
7533
  width: 0.5em;
7218
7534
  height: 0.5em;
7219
- border-radius: 50%;
7535
+ border-radius: var(--radius-full);
7220
7536
  background-color: var(--radio-color);
7221
7537
  transform: scale(0);
7222
7538
  transition: transform 150ms ease-in-out;
@@ -7560,7 +7876,7 @@
7560
7876
  .rating-item:focus-visible {
7561
7877
  outline: none;
7562
7878
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent);
7563
- border-radius: 0.25rem;
7879
+ border-radius: var(--radius-xs);
7564
7880
  }
7565
7881
 
7566
7882
  .rating-primary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 20%, transparent); }
@@ -7651,7 +7967,7 @@
7651
7967
  color: var(--color-on-surface);
7652
7968
  background-color: var(--color-surface-container);
7653
7969
  border: 1px solid var(--color-outline);
7654
- border-radius: 1.25rem;
7970
+ border-radius: var(--radius-xl);
7655
7971
  padding: 0.25rem;
7656
7972
  gap: 0.25rem;
7657
7973
  }
@@ -7670,7 +7986,7 @@
7670
7986
  color: var(--color-on-surface);
7671
7987
  background-color: transparent;
7672
7988
  border: none;
7673
- border-radius: 1rem;
7989
+ border-radius: var(--radius-lg);
7674
7990
  cursor: pointer;
7675
7991
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
7676
7992
  user-select: none;
@@ -7714,27 +8030,27 @@
7714
8030
  .segment-control-sm {
7715
8031
  padding: 0.125rem;
7716
8032
  gap: 0.125rem;
7717
- border-radius: 1rem;
8033
+ border-radius: var(--radius-lg);
7718
8034
  }
7719
8035
 
7720
8036
  .segment-control-sm .segment-item {
7721
8037
  padding: 0.375rem 0.75rem;
7722
8038
  font-size: 0.75rem;
7723
8039
  line-height: 1rem;
7724
- border-radius: 0.75rem;
8040
+ border-radius: var(--radius-md);
7725
8041
  }
7726
8042
 
7727
8043
  .segment-control-lg {
7728
8044
  padding: 0.375rem;
7729
8045
  gap: 0.375rem;
7730
- border-radius: 1.5rem;
8046
+ border-radius: var(--radius-2xl);
7731
8047
  }
7732
8048
 
7733
8049
  .segment-control-lg .segment-item {
7734
8050
  padding: 0.75rem 1.5rem;
7735
8051
  font-size: 1rem;
7736
8052
  line-height: 1.5rem;
7737
- border-radius: 1.25rem;
8053
+ border-radius: var(--radius-xl);
7738
8054
  }
7739
8055
 
7740
8056
  /* Color Variants */
@@ -7862,7 +8178,7 @@
7862
8178
  color: var(--color-on-surface);
7863
8179
  background-color: var(--color-surface);
7864
8180
  border: 1px solid currentColor;
7865
- border-radius: 0.5rem;
8181
+ border-radius: var(--radius-sm);
7866
8182
  outline: none;
7867
8183
  cursor: pointer;
7868
8184
  appearance: none;
@@ -7896,7 +8212,7 @@
7896
8212
  background-color: var(--color-surface-container);
7897
8213
  border: none;
7898
8214
  border-bottom: 2px solid var(--color-outline);
7899
- border-radius: 0.5rem 0.5rem 0 0;
8215
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
7900
8216
  }
7901
8217
 
7902
8218
  .select-filled:hover:not(:disabled) {
@@ -7921,7 +8237,7 @@
7921
8237
  .select-outlined {
7922
8238
  background-color: transparent;
7923
8239
  border: 1px solid var(--color-outline);
7924
- border-radius: 0.5rem;
8240
+ border-radius: var(--radius-sm);
7925
8241
  }
7926
8242
 
7927
8243
  /* Color Variants — base .select:focus-visible uses currentColor 20%, so no per-variant
@@ -7941,7 +8257,7 @@
7941
8257
  padding: 0.375rem 2rem 0.375rem 0.625rem;
7942
8258
  font-size: 0.75rem;
7943
8259
  line-height: 1rem;
7944
- border-radius: 0.25rem;
8260
+ border-radius: var(--radius-xs);
7945
8261
  background-size: 1rem 1rem;
7946
8262
  }
7947
8263
 
@@ -7949,7 +8265,7 @@
7949
8265
  padding: 0.5rem 2.25rem 0.5rem 0.75rem;
7950
8266
  font-size: 0.875rem;
7951
8267
  line-height: 1.25rem;
7952
- border-radius: 0.375rem;
8268
+ border-radius: var(--radius-xs);
7953
8269
  background-size: 1.125rem 1.125rem;
7954
8270
  }
7955
8271
 
@@ -7957,7 +8273,7 @@
7957
8273
  padding: 1rem 3rem 1rem 1.25rem;
7958
8274
  font-size: 1.125rem;
7959
8275
  line-height: 1.75rem;
7960
- border-radius: 0.625rem;
8276
+ border-radius: var(--radius-sm);
7961
8277
  background-size: 1.5rem 1.5rem;
7962
8278
  background-position: right 1rem center;
7963
8279
  }
@@ -8003,7 +8319,7 @@
8003
8319
 
8004
8320
  .select-multiple option {
8005
8321
  padding: 0.5rem 0.75rem;
8006
- border-radius: 0.25rem;
8322
+ border-radius: var(--radius-xs);
8007
8323
  }
8008
8324
 
8009
8325
  .select-multiple option:checked {
@@ -8060,7 +8376,7 @@
8060
8376
  width: 100%;
8061
8377
  height: 0.25rem;
8062
8378
  background-color: var(--color-surface-container-highest);
8063
- border-radius: 9999px;
8379
+ border-radius: var(--radius-full);
8064
8380
  }
8065
8381
 
8066
8382
  /* Slider Track Filled (Progress) */
@@ -8070,7 +8386,7 @@
8070
8386
  left: 0;
8071
8387
  height: 100%;
8072
8388
  background-color: var(--color-primary);
8073
- border-radius: 9999px;
8389
+ border-radius: var(--radius-full);
8074
8390
  }
8075
8391
 
8076
8392
  /* Slider Thumb */
@@ -8081,20 +8397,20 @@
8081
8397
  height: 1.25rem;
8082
8398
  background-color: var(--color-primary);
8083
8399
  border: none;
8084
- border-radius: 50%;
8085
- box-shadow: 0 2px 4px rgb(0 0 0 / 0.2);
8400
+ border-radius: var(--radius-full);
8401
+ box-shadow: 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8086
8402
  transform: translate(-50%, -50%);
8087
8403
  cursor: grab;
8088
8404
  transition: box-shadow 150ms ease-in-out, transform 150ms ease-in-out;
8089
8405
  }
8090
8406
 
8091
8407
  .slider-thumb:hover {
8092
- box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8408
+ box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8093
8409
  }
8094
8410
 
8095
8411
  .slider-thumb:focus-visible {
8096
8412
  outline: none;
8097
- box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8413
+ box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8098
8414
  }
8099
8415
 
8100
8416
  .slider-thumb:active {
@@ -8114,7 +8430,7 @@
8114
8430
  font-weight: 500;
8115
8431
  color: var(--color-primary-content);
8116
8432
  background-color: var(--color-primary);
8117
- border-radius: 0.25rem;
8433
+ border-radius: var(--radius-xs);
8118
8434
  white-space: nowrap;
8119
8435
  opacity: 0;
8120
8436
  visibility: hidden;
@@ -8162,7 +8478,7 @@
8162
8478
  width: 0.125rem;
8163
8479
  height: 0.5rem;
8164
8480
  background-color: var(--color-outline);
8165
- border-radius: 9999px;
8481
+ border-radius: var(--radius-full);
8166
8482
  }
8167
8483
 
8168
8484
  .slider-mark-active {
@@ -8226,7 +8542,7 @@
8226
8542
 
8227
8543
  .slider-primary .slider-thumb:hover,
8228
8544
  .slider-primary .slider-thumb:focus-visible {
8229
- box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8545
+ box-shadow: 0 0 0 8px var(--color-primary-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8230
8546
  }
8231
8547
 
8232
8548
  .slider-primary .slider-thumb-label {
@@ -8245,7 +8561,7 @@
8245
8561
 
8246
8562
  .slider-secondary .slider-thumb:hover,
8247
8563
  .slider-secondary .slider-thumb:focus-visible {
8248
- box-shadow: 0 0 0 8px var(--color-secondary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8564
+ box-shadow: 0 0 0 8px var(--color-secondary-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8249
8565
  }
8250
8566
 
8251
8567
  .slider-secondary .slider-mark-active { background-color: var(--color-secondary-content); }
@@ -8266,7 +8582,7 @@
8266
8582
 
8267
8583
  .slider-tertiary .slider-thumb:hover,
8268
8584
  .slider-tertiary .slider-thumb:focus-visible {
8269
- box-shadow: 0 0 0 8px var(--color-tertiary-container), 0 2px 4px rgb(0 0 0 / 0.2);
8585
+ box-shadow: 0 0 0 8px var(--color-tertiary-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8270
8586
  }
8271
8587
 
8272
8588
  .slider-tertiary .slider-mark-active { background-color: var(--color-tertiary-content); }
@@ -8288,7 +8604,7 @@
8288
8604
 
8289
8605
  .slider-info .slider-thumb:hover,
8290
8606
  .slider-info .slider-thumb:focus-visible {
8291
- box-shadow: 0 0 0 8px var(--color-info-container), 0 2px 4px rgb(0 0 0 / 0.2);
8607
+ box-shadow: 0 0 0 8px var(--color-info-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8292
8608
  }
8293
8609
 
8294
8610
  .slider-info .slider-mark-active { background-color: var(--color-info-content); }
@@ -8310,7 +8626,7 @@
8310
8626
 
8311
8627
  .slider-success .slider-thumb:hover,
8312
8628
  .slider-success .slider-thumb:focus-visible {
8313
- box-shadow: 0 0 0 8px var(--color-success-container), 0 2px 4px rgb(0 0 0 / 0.2);
8629
+ box-shadow: 0 0 0 8px var(--color-success-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8314
8630
  }
8315
8631
 
8316
8632
  .slider-success .slider-mark-active { background-color: var(--color-success-content); }
@@ -8332,7 +8648,7 @@
8332
8648
 
8333
8649
  .slider-warning .slider-thumb:hover,
8334
8650
  .slider-warning .slider-thumb:focus-visible {
8335
- box-shadow: 0 0 0 8px var(--color-warning-container), 0 2px 4px rgb(0 0 0 / 0.2);
8651
+ box-shadow: 0 0 0 8px var(--color-warning-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8336
8652
  }
8337
8653
 
8338
8654
  .slider-warning .slider-mark-active { background-color: var(--color-warning-content); }
@@ -8354,7 +8670,7 @@
8354
8670
 
8355
8671
  .slider-error .slider-thumb:hover,
8356
8672
  .slider-error .slider-thumb:focus-visible {
8357
- box-shadow: 0 0 0 8px var(--color-error-container), 0 2px 4px rgb(0 0 0 / 0.2);
8673
+ box-shadow: 0 0 0 8px var(--color-error-container), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
8358
8674
  }
8359
8675
 
8360
8676
  .slider-error .slider-mark-active { background-color: var(--color-error-content); }
@@ -8470,7 +8786,7 @@
8470
8786
  color: var(--color-on-surface);
8471
8787
  background-color: var(--color-surface);
8472
8788
  border: 1px solid var(--color-outline);
8473
- border-radius: 0.375rem;
8789
+ border-radius: var(--radius-xs);
8474
8790
  }
8475
8791
 
8476
8792
  .slider-input:focus {
@@ -8536,7 +8852,7 @@
8536
8852
  width: var(--switch-thumb-size);
8537
8853
  height: var(--switch-thumb-size);
8538
8854
  background-color: var(--switch-thumb-color);
8539
- border-radius: 50%;
8855
+ border-radius: var(--radius-full);
8540
8856
  /* Use !important to override global * { transition } rules */
8541
8857
  transition: background-color 200ms ease-in-out !important,
8542
8858
  width 200ms ease-in-out !important,
@@ -8841,7 +9157,7 @@
8841
9157
  color: var(--color-on-surface);
8842
9158
  background-color: var(--color-surface);
8843
9159
  border: 1px solid currentColor;
8844
- border-radius: 0.5rem;
9160
+ border-radius: var(--radius-sm);
8845
9161
  outline: none;
8846
9162
  resize: vertical;
8847
9163
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
@@ -8890,7 +9206,7 @@
8890
9206
  background-color: var(--color-surface-container);
8891
9207
  border: none;
8892
9208
  border-bottom: 2px solid var(--color-outline);
8893
- border-radius: 0.5rem 0.5rem 0 0;
9209
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
8894
9210
  }
8895
9211
 
8896
9212
  .textarea-filled:hover:not(:disabled) {
@@ -8915,7 +9231,7 @@
8915
9231
  .textarea-outlined {
8916
9232
  background-color: transparent;
8917
9233
  border: 1px solid var(--color-outline);
8918
- border-radius: 0.5rem;
9234
+ border-radius: var(--radius-sm);
8919
9235
  }
8920
9236
 
8921
9237
  /* Ghost Variant */
@@ -8963,7 +9279,7 @@
8963
9279
  padding: 0.5rem 0.75rem;
8964
9280
  font-size: 0.875rem;
8965
9281
  line-height: 1.25rem;
8966
- border-radius: 0.375rem;
9282
+ border-radius: var(--radius-xs);
8967
9283
  }
8968
9284
 
8969
9285
  .textarea-lg {
@@ -8971,7 +9287,7 @@
8971
9287
  padding: 1rem 1.25rem;
8972
9288
  font-size: 1.125rem;
8973
9289
  line-height: 1.75rem;
8974
- border-radius: 0.625rem;
9290
+ border-radius: var(--radius-sm);
8975
9291
  }
8976
9292
 
8977
9293
  /* ============================================
@@ -9126,8 +9442,8 @@
9126
9442
 
9127
9443
  /* Focus-visible ring on the label when its radio is focused */
9128
9444
  .theme-controller-item:focus-visible + .theme-controller-label {
9129
- outline: 2px solid var(--color-primary);
9130
- outline-offset: 2px;
9445
+ outline: none;
9446
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
9131
9447
  }
9132
9448
 
9133
9449
  /* Active/checked state */
@@ -9233,8 +9549,8 @@
9233
9549
  }
9234
9550
 
9235
9551
  .theme-controller-trigger:focus-visible {
9236
- outline: 2px solid var(--color-primary);
9237
- outline-offset: 2px;
9552
+ outline: none;
9553
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
9238
9554
  }
9239
9555
 
9240
9556
  /* Chevron indicator */
@@ -9372,7 +9688,7 @@
9372
9688
  color: var(--color-on-surface);
9373
9689
  background-color: transparent;
9374
9690
  border: 1px solid currentColor;
9375
- border-radius: 0.5rem;
9691
+ border-radius: var(--radius-sm);
9376
9692
  cursor: pointer;
9377
9693
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
9378
9694
  user-select: none;
@@ -9503,7 +9819,7 @@
9503
9819
  align-items: center;
9504
9820
  gap: 0;
9505
9821
  border: 1px solid var(--color-outline);
9506
- border-radius: 0.5rem;
9822
+ border-radius: var(--radius-sm);
9507
9823
  padding: 0.25rem;
9508
9824
  background-color: color-mix(in oklch, var(--color-surface-variant) 30%, transparent);
9509
9825
  }
@@ -9511,7 +9827,7 @@
9511
9827
  /* Toggle buttons in group */
9512
9828
  .toggle-group .toggle-btn {
9513
9829
  border: none;
9514
- border-radius: 0.375rem;
9830
+ border-radius: var(--radius-xs);
9515
9831
  margin: 0;
9516
9832
  }
9517
9833
 
@@ -9562,14 +9878,14 @@
9562
9878
  gap: 0;
9563
9879
  background-color: var(--color-surface);
9564
9880
  border: 1px solid var(--color-outline-variant);
9565
- border-radius: 0.5rem;
9881
+ border-radius: var(--radius-sm);
9566
9882
  padding: 0.25rem;
9567
9883
  }
9568
9884
 
9569
9885
  .toggle-segmented .toggle-btn {
9570
9886
  border: none;
9571
9887
  background-color: transparent;
9572
- border-radius: 0.375rem;
9888
+ border-radius: var(--radius-xs);
9573
9889
  }
9574
9890
 
9575
9891
  .toggle-segmented .toggle-btn.toggle-btn-active,
@@ -9581,7 +9897,7 @@
9581
9897
 
9582
9898
  /* Chip-like toggle */
9583
9899
  .toggle-chip {
9584
- border-radius: 1rem;
9900
+ border-radius: var(--radius-lg);
9585
9901
  padding: 0.5rem 1rem;
9586
9902
  }
9587
9903
 
@@ -9626,7 +9942,7 @@
9626
9942
  width: 0.5rem;
9627
9943
  height: 0.5rem;
9628
9944
  background-color: var(--color-error);
9629
- border-radius: 50%;
9945
+ border-radius: var(--radius-full);
9630
9946
  border: 2px solid var(--color-surface);
9631
9947
  }
9632
9948
 
@@ -9660,7 +9976,7 @@
9660
9976
  margin-left: -0.5rem;
9661
9977
  border: 2px solid currentColor;
9662
9978
  border-top-color: transparent;
9663
- border-radius: 50%;
9979
+ border-radius: var(--radius-full);
9664
9980
  animation: toggle-spin 0.6s linear infinite;
9665
9981
  }
9666
9982
 
@@ -9707,7 +10023,7 @@
9707
10023
  color: var(--color-on-surface);
9708
10024
  background-color: var(--color-surface);
9709
10025
  border: 1px solid currentColor;
9710
- border-radius: 0.5rem;
10026
+ border-radius: var(--radius-sm);
9711
10027
  outline: none;
9712
10028
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
9713
10029
  }
@@ -9747,7 +10063,7 @@
9747
10063
  padding: 0.75rem 1rem;
9748
10064
  background-color: var(--color-surface);
9749
10065
  border: 1px solid currentColor;
9750
- border-radius: 0.5rem;
10066
+ border-radius: var(--radius-sm);
9751
10067
  }
9752
10068
 
9753
10069
  .time-input-segment {
@@ -9759,7 +10075,7 @@
9759
10075
  color: var(--color-on-surface);
9760
10076
  background-color: transparent;
9761
10077
  border: none;
9762
- border-radius: 0.25rem;
10078
+ border-radius: var(--radius-xs);
9763
10079
  outline: none;
9764
10080
  transition: background-color 150ms ease-in-out;
9765
10081
  }
@@ -9780,7 +10096,7 @@
9780
10096
  display: inline-flex;
9781
10097
  margin-left: 0.5rem;
9782
10098
  background-color: var(--color-surface-container);
9783
- border-radius: 0.375rem;
10099
+ border-radius: var(--radius-xs);
9784
10100
  padding: 0.125rem;
9785
10101
  }
9786
10102
 
@@ -9791,7 +10107,7 @@
9791
10107
  color: var(--color-on-surface-variant);
9792
10108
  background-color: transparent;
9793
10109
  border: none;
9794
- border-radius: 0.25rem;
10110
+ border-radius: var(--radius-xs);
9795
10111
  cursor: pointer;
9796
10112
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
9797
10113
  }
@@ -9809,7 +10125,7 @@
9809
10125
  .time-input-sm .time-input-field {
9810
10126
  padding: 0.5rem 2rem 0.5rem 0.75rem;
9811
10127
  font-size: 0.875rem;
9812
- border-radius: 0.375rem;
10128
+ border-radius: var(--radius-xs);
9813
10129
  }
9814
10130
 
9815
10131
  .time-input-sm .time-input-segment {
@@ -9820,7 +10136,7 @@
9820
10136
  .time-input-lg .time-input-field {
9821
10137
  padding: 1rem 3rem 1rem 1.25rem;
9822
10138
  font-size: 1.125rem;
9823
- border-radius: 0.625rem;
10139
+ border-radius: var(--radius-sm);
9824
10140
  }
9825
10141
 
9826
10142
  .time-input-lg .time-input-segment {
@@ -9834,7 +10150,7 @@
9834
10150
  background-color: var(--color-surface-container);
9835
10151
  border: none;
9836
10152
  border-bottom: 2px solid var(--color-outline);
9837
- border-radius: 0.5rem 0.5rem 0 0;
10153
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
9838
10154
  }
9839
10155
 
9840
10156
  .time-input-filled .time-input-field:focus,
@@ -9932,7 +10248,7 @@
9932
10248
  padding: 0.5rem;
9933
10249
  background-color: var(--color-surface);
9934
10250
  border: 1px solid var(--color-outline-variant);
9935
- border-radius: 0.5rem;
10251
+ border-radius: var(--radius-sm);
9936
10252
  box-shadow: var(--shadow-md);
9937
10253
  }
9938
10254
 
@@ -9961,7 +10277,7 @@
9961
10277
  color: var(--color-on-surface);
9962
10278
  background-color: transparent;
9963
10279
  border: none;
9964
- border-radius: 0.25rem;
10280
+ border-radius: var(--radius-xs);
9965
10281
  cursor: pointer;
9966
10282
  transition: background-color 150ms ease-in-out;
9967
10283
  }
@@ -10012,7 +10328,7 @@
10012
10328
  color: var(--color-on-surface);
10013
10329
  background-color: var(--color-surface);
10014
10330
  border: 1px solid currentColor;
10015
- border-radius: 0.5rem;
10331
+ border-radius: var(--radius-sm);
10016
10332
  cursor: pointer;
10017
10333
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
10018
10334
  }
@@ -10093,7 +10409,7 @@
10093
10409
  color: var(--color-on-surface-variant);
10094
10410
  background-color: transparent;
10095
10411
  border: none;
10096
- border-radius: 50%;
10412
+ border-radius: var(--radius-full);
10097
10413
  cursor: pointer;
10098
10414
  flex-shrink: 0;
10099
10415
  transition: background-color 150ms ease-in-out;
@@ -10121,7 +10437,7 @@
10121
10437
  padding: 0.5rem;
10122
10438
  background-color: var(--color-surface);
10123
10439
  border: 1px solid var(--color-outline-variant);
10124
- border-radius: 0.5rem;
10440
+ border-radius: var(--radius-sm);
10125
10441
  box-shadow: var(--shadow-md);
10126
10442
  overflow-y: auto;
10127
10443
  }
@@ -10173,7 +10489,7 @@
10173
10489
  color: var(--color-on-surface);
10174
10490
  background-color: var(--color-surface-container);
10175
10491
  border: none;
10176
- border-radius: 0.375rem;
10492
+ border-radius: var(--radius-xs);
10177
10493
  outline: none;
10178
10494
  }
10179
10495
 
@@ -10196,7 +10512,7 @@
10196
10512
  font-size: 0.875rem;
10197
10513
  color: var(--color-on-surface);
10198
10514
  background-color: transparent;
10199
- border-radius: 0.375rem;
10515
+ border-radius: var(--radius-xs);
10200
10516
  cursor: pointer;
10201
10517
  transition: background-color 150ms ease-in-out;
10202
10518
  }
@@ -10230,7 +10546,7 @@
10230
10546
  color: var(--color-on-surface-variant);
10231
10547
  background-color: transparent;
10232
10548
  border: none;
10233
- border-radius: 0.25rem;
10549
+ border-radius: var(--radius-xs);
10234
10550
  cursor: pointer;
10235
10551
  flex-shrink: 0;
10236
10552
  transition: transform 150ms ease-in-out;
@@ -10302,7 +10618,7 @@
10302
10618
  height: 1rem;
10303
10619
  background-color: transparent;
10304
10620
  border: 2px solid var(--color-on-surface-variant);
10305
- border-radius: 0.125rem;
10621
+ border-radius: var(--radius-xs);
10306
10622
  transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out;
10307
10623
  }
10308
10624
 
@@ -10316,7 +10632,7 @@
10316
10632
  display: block;
10317
10633
  width: 0.375rem;
10318
10634
  height: 0.625rem;
10319
- border: 2px solid var(--color-on-primary);
10635
+ border: 2px solid var(--color-primary-content);
10320
10636
  border-width: 0 2px 2px 0;
10321
10637
  transform: rotate(45deg) translateY(-1px);
10322
10638
  }
@@ -10333,13 +10649,13 @@
10333
10649
  .tree-select-sm .tree-select-trigger {
10334
10650
  padding: 0.5rem 0.75rem;
10335
10651
  font-size: 0.875rem;
10336
- border-radius: 0.375rem;
10652
+ border-radius: var(--radius-xs);
10337
10653
  }
10338
10654
 
10339
10655
  .tree-select-lg .tree-select-trigger {
10340
10656
  padding: 1rem 1.25rem;
10341
10657
  font-size: 1.125rem;
10342
- border-radius: 0.625rem;
10658
+ border-radius: var(--radius-sm);
10343
10659
  }
10344
10660
 
10345
10661
  /* Outlined Variant (Default) */
@@ -10353,7 +10669,7 @@
10353
10669
  background-color: var(--color-surface-container);
10354
10670
  border: none;
10355
10671
  border-bottom: 2px solid var(--color-outline);
10356
- border-radius: 0.5rem 0.5rem 0 0;
10672
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
10357
10673
  }
10358
10674
 
10359
10675
  .tree-select-filled .tree-select-trigger:focus {
@@ -10446,7 +10762,7 @@
10446
10762
  height: 1rem;
10447
10763
  border: 2px solid var(--color-outline);
10448
10764
  border-top-color: var(--color-primary);
10449
- border-radius: 50%;
10765
+ border-radius: var(--radius-full);
10450
10766
  animation: tree-select-spin 0.8s linear infinite;
10451
10767
  }
10452
10768
 
@@ -10470,7 +10786,7 @@
10470
10786
  font-size: 0.75rem;
10471
10787
  background-color: var(--color-primary-container);
10472
10788
  color: var(--color-on-primary-container);
10473
- border-radius: 1rem;
10789
+ border-radius: var(--radius-lg);
10474
10790
  }
10475
10791
 
10476
10792
  .tree-select-tag-remove {
@@ -10483,7 +10799,7 @@
10483
10799
  color: inherit;
10484
10800
  background-color: transparent;
10485
10801
  border: none;
10486
- border-radius: 50%;
10802
+ border-radius: var(--radius-full);
10487
10803
  cursor: pointer;
10488
10804
  opacity: 0.7;
10489
10805
  }
@@ -10525,7 +10841,7 @@
10525
10841
  align-items: flex-start;
10526
10842
  gap: 0.75rem;
10527
10843
  padding: 1rem;
10528
- border-radius: 0.5rem;
10844
+ border-radius: var(--radius-sm);
10529
10845
  background-color: var(--color-surface-container);
10530
10846
  color: var(--color-on-surface);
10531
10847
  border: 1px solid var(--color-outline);
@@ -10575,7 +10891,7 @@
10575
10891
  opacity: 0.7;
10576
10892
  background-color: transparent;
10577
10893
  border: none;
10578
- border-radius: 0.25rem;
10894
+ border-radius: var(--radius-xs);
10579
10895
  cursor: pointer;
10580
10896
  transition: opacity 150ms ease-in-out;
10581
10897
  flex-shrink: 0;
@@ -10793,14 +11109,14 @@
10793
11109
  max-height: calc(100vh - 4rem);
10794
11110
  background-color: var(--color-surface);
10795
11111
  color: var(--color-on-surface);
10796
- border-radius: 1.5rem;
11112
+ border-radius: var(--radius-2xl);
10797
11113
  box-shadow: var(--shadow-2xl);
10798
11114
  overflow: hidden;
10799
11115
  }
10800
11116
 
10801
11117
  /* Dialog Backdrop (native ::backdrop) */
10802
11118
  dialog.dialog::backdrop {
10803
- background-color: rgb(0 0 0 / 0.5);
11119
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
10804
11120
  }
10805
11121
 
10806
11122
  /* Dialog Box - inner container for flex layout */
@@ -10839,7 +11155,7 @@
10839
11155
  color: var(--color-on-surface-variant);
10840
11156
  background-color: transparent;
10841
11157
  border: none;
10842
- border-radius: 50%;
11158
+ border-radius: var(--radius-full);
10843
11159
  cursor: pointer;
10844
11160
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
10845
11161
  flex-shrink: 0;
@@ -10851,8 +11167,8 @@
10851
11167
  }
10852
11168
 
10853
11169
  .dialog-close:focus-visible {
10854
- outline: 2px solid var(--color-primary);
10855
- outline-offset: 2px;
11170
+ outline: none;
11171
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
10856
11172
  }
10857
11173
 
10858
11174
  /* Dialog Body */
@@ -10961,7 +11277,7 @@
10961
11277
  width: 100%;
10962
11278
  height: 0.5rem;
10963
11279
  background-color: var(--color-surface-container-highest);
10964
- border-radius: 9999px;
11280
+ border-radius: var(--radius-full);
10965
11281
  overflow: hidden;
10966
11282
  }
10967
11283
 
@@ -10972,7 +11288,7 @@
10972
11288
  left: 0;
10973
11289
  height: 100%;
10974
11290
  background-color: var(--color-primary);
10975
- border-radius: 9999px;
11291
+ border-radius: var(--radius-full);
10976
11292
  transition: width 300ms ease-in-out;
10977
11293
  }
10978
11294
 
@@ -11197,7 +11513,7 @@
11197
11513
  /* Base Skeleton */
11198
11514
  .skeleton {
11199
11515
  background-color: var(--color-surface-container-high);
11200
- border-radius: 0.25rem;
11516
+ border-radius: var(--radius-xs);
11201
11517
  animation: skeleton-pulse 2s ease-in-out infinite;
11202
11518
  }
11203
11519
 
@@ -11205,20 +11521,20 @@
11205
11521
  .skeleton-text {
11206
11522
  height: 1rem;
11207
11523
  width: 100%;
11208
- border-radius: 0.25rem;
11524
+ border-radius: var(--radius-xs);
11209
11525
  }
11210
11526
 
11211
11527
  .skeleton-circle {
11212
- border-radius: 50%;
11528
+ border-radius: var(--radius-full);
11213
11529
  aspect-ratio: 1;
11214
11530
  }
11215
11531
 
11216
11532
  .skeleton-rect {
11217
- border-radius: 0.5rem;
11533
+ border-radius: var(--radius-sm);
11218
11534
  }
11219
11535
 
11220
11536
  .skeleton-rounded {
11221
- border-radius: 0.5rem;
11537
+ border-radius: var(--radius-sm);
11222
11538
  }
11223
11539
 
11224
11540
  /* Size Variants */
@@ -11246,7 +11562,7 @@
11246
11562
  .skeleton-avatar {
11247
11563
  width: 3rem;
11248
11564
  height: 3rem;
11249
- border-radius: 50%;
11565
+ border-radius: var(--radius-full);
11250
11566
  }
11251
11567
 
11252
11568
  .skeleton-avatar-sm {
@@ -11262,18 +11578,18 @@
11262
11578
  .skeleton-button {
11263
11579
  height: 2.5rem;
11264
11580
  width: 6rem;
11265
- border-radius: 0.5rem;
11581
+ border-radius: var(--radius-sm);
11266
11582
  }
11267
11583
 
11268
11584
  .skeleton-image {
11269
11585
  aspect-ratio: 16 / 9;
11270
11586
  width: 100%;
11271
- border-radius: 0.5rem;
11587
+ border-radius: var(--radius-sm);
11272
11588
  }
11273
11589
 
11274
11590
  .skeleton-card {
11275
11591
  width: 100%;
11276
- border-radius: 1rem;
11592
+ border-radius: var(--radius-lg);
11277
11593
  padding: 1rem;
11278
11594
  }
11279
11595
 
@@ -11282,7 +11598,7 @@
11282
11598
  height: 0.875rem;
11283
11599
  width: 100%;
11284
11600
  margin-bottom: 0.5rem;
11285
- border-radius: 0.25rem;
11601
+ border-radius: var(--radius-xs);
11286
11602
  }
11287
11603
 
11288
11604
  .skeleton-line:last-child {
@@ -11376,7 +11692,7 @@
11376
11692
  .skeleton-table-cell {
11377
11693
  flex: 1;
11378
11694
  height: 1rem;
11379
- border-radius: 0.25rem;
11695
+ border-radius: var(--radius-xs);
11380
11696
  }
11381
11697
 
11382
11698
  /* List Skeleton */
@@ -11471,7 +11787,7 @@
11471
11787
  padding: 0.875rem 1rem;
11472
11788
  background-color: var(--color-surface-container-highest);
11473
11789
  color: var(--color-on-surface);
11474
- border-radius: 0.5rem;
11790
+ border-radius: var(--radius-sm);
11475
11791
  box-shadow: var(--shadow-md);
11476
11792
  pointer-events: auto;
11477
11793
  opacity: 0;
@@ -11578,7 +11894,7 @@
11578
11894
  color: var(--color-primary);
11579
11895
  background-color: transparent;
11580
11896
  border: none;
11581
- border-radius: 0.25rem;
11897
+ border-radius: var(--radius-xs);
11582
11898
  cursor: pointer;
11583
11899
  transition: background-color 150ms ease-in-out;
11584
11900
  white-space: nowrap;
@@ -11590,8 +11906,8 @@
11590
11906
  }
11591
11907
 
11592
11908
  .snackbar-action:focus-visible {
11593
- outline: 2px solid var(--color-primary);
11594
- outline-offset: 2px;
11909
+ outline: none;
11910
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11595
11911
  }
11596
11912
 
11597
11913
  /* Snackbar Close */
@@ -11605,7 +11921,7 @@
11605
11921
  color: var(--color-on-surface-variant);
11606
11922
  background-color: transparent;
11607
11923
  border: none;
11608
- border-radius: 50%;
11924
+ border-radius: var(--radius-full);
11609
11925
  cursor: pointer;
11610
11926
  transition: background-color 150ms ease-in-out;
11611
11927
  flex-shrink: 0;
@@ -11784,7 +12100,7 @@
11784
12100
  background-color: var(--color-surface);
11785
12101
  color: var(--color-on-surface);
11786
12102
  border: 1px solid var(--color-outline);
11787
- border-radius: 0.75rem;
12103
+ border-radius: var(--radius-md);
11788
12104
  box-shadow: var(--shadow-lg);
11789
12105
  pointer-events: auto;
11790
12106
  opacity: 0;
@@ -11854,7 +12170,7 @@
11854
12170
  color: var(--color-on-surface-variant);
11855
12171
  background-color: transparent;
11856
12172
  border: none;
11857
- border-radius: 0.25rem;
12173
+ border-radius: var(--radius-xs);
11858
12174
  cursor: pointer;
11859
12175
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
11860
12176
  flex-shrink: 0;
@@ -12012,7 +12328,7 @@
12012
12328
  left: 0;
12013
12329
  height: 3px;
12014
12330
  background-color: currentColor;
12015
- border-radius: 0 0 0.75rem 0.75rem;
12331
+ border-radius: 0 0 var(--radius-md) var(--radius-md);
12016
12332
  animation: toast-progress linear forwards;
12017
12333
  }
12018
12334
 
@@ -12061,7 +12377,7 @@
12061
12377
  white-space: nowrap;
12062
12378
  background-color: var(--color-on-surface);
12063
12379
  color: var(--color-surface);
12064
- border-radius: 0.25rem;
12380
+ border-radius: var(--radius-xs);
12065
12381
  box-shadow: var(--shadow-md);
12066
12382
  opacity: 0;
12067
12383
  visibility: hidden;
@@ -12505,7 +12821,7 @@
12505
12821
  color: var(--color-on-surface);
12506
12822
  background-color: transparent;
12507
12823
  border: none;
12508
- border-radius: 50%;
12824
+ border-radius: var(--radius-full);
12509
12825
  cursor: pointer;
12510
12826
  transition: background-color 150ms ease-in-out;
12511
12827
  flex-shrink: 0;
@@ -12568,7 +12884,7 @@
12568
12884
  color: var(--color-on-surface-variant);
12569
12885
  background-color: transparent;
12570
12886
  border: none;
12571
- border-radius: 50%;
12887
+ border-radius: var(--radius-full);
12572
12888
  cursor: pointer;
12573
12889
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
12574
12890
  }
@@ -12684,7 +13000,7 @@
12684
13000
  color: var(--color-on-surface);
12685
13001
  background-color: transparent;
12686
13002
  border: none;
12687
- border-radius: 50%;
13003
+ border-radius: var(--radius-full);
12688
13004
  cursor: pointer;
12689
13005
  transition: background-color 150ms ease-in-out;
12690
13006
  flex-shrink: 0;
@@ -12709,7 +13025,7 @@
12709
13025
  color: var(--color-on-surface);
12710
13026
  background-color: var(--color-surface-container);
12711
13027
  border: none;
12712
- border-radius: 9999px;
13028
+ border-radius: var(--radius-full);
12713
13029
  transition: background-color 150ms ease-in-out;
12714
13030
  }
12715
13031
 
@@ -12967,7 +13283,7 @@
12967
13283
  color: var(--color-on-surface);
12968
13284
  background-color: var(--color-surface-container);
12969
13285
  border: none;
12970
- border-radius: 9999px;
13286
+ border-radius: var(--radius-full);
12971
13287
  transition: background-color 150ms ease-in-out;
12972
13288
  }
12973
13289
 
@@ -13389,7 +13705,7 @@
13389
13705
  min-height: 5rem;
13390
13706
  padding-bottom: env(safe-area-inset-bottom, 0);
13391
13707
  background-color: var(--color-surface);
13392
- box-shadow: 0 -1px 3px 0 rgb(0 0 0 / 0.1);
13708
+ box-shadow: 0 -1px 3px 0 color-mix(in srgb, var(--color-shadow) 10%, transparent);
13393
13709
  }
13394
13710
 
13395
13711
  /* Navigation Item */
@@ -13420,8 +13736,8 @@
13420
13736
  }
13421
13737
 
13422
13738
  .bottom-nav-item:focus-visible .bottom-nav-indicator {
13423
- outline: 2px solid var(--color-primary);
13424
- outline-offset: 2px;
13739
+ outline: none;
13740
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
13425
13741
  }
13426
13742
 
13427
13743
  /* Active State */
@@ -13437,7 +13753,7 @@
13437
13753
  justify-content: center;
13438
13754
  width: 4rem;
13439
13755
  height: 2rem;
13440
- border-radius: 1rem;
13756
+ border-radius: var(--radius-lg);
13441
13757
  transition: background-color 150ms ease-in-out;
13442
13758
  }
13443
13759
 
@@ -13483,9 +13799,9 @@
13483
13799
  font-size: 0.625rem;
13484
13800
  font-weight: 600;
13485
13801
  line-height: 1rem;
13486
- color: var(--color-on-error);
13802
+ color: var(--color-error-content);
13487
13803
  background-color: var(--color-error);
13488
- border-radius: 9999px;
13804
+ border-radius: var(--radius-full);
13489
13805
  text-align: center;
13490
13806
  }
13491
13807
 
@@ -13500,7 +13816,7 @@
13500
13816
 
13501
13817
  /* Variants */
13502
13818
  .bottom-nav-elevated {
13503
- box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1);
13819
+ box-shadow: 0 -4px 6px -1px color-mix(in srgb, var(--color-shadow) 10%, transparent);
13504
13820
  }
13505
13821
 
13506
13822
  .bottom-nav-bordered {
@@ -13634,6 +13950,331 @@
13634
13950
  }
13635
13951
  }
13636
13952
 
13953
+ /**
13954
+ * Circle Menu Component Styles
13955
+ * DuskMoonUI - Radial circular navigation menu with CSS-only checkbox toggle
13956
+ *
13957
+ * Usage:
13958
+ * <nav class="circle-menu">
13959
+ * <input type="checkbox" class="circle-menu-toggler" id="cm-1">
13960
+ * <label class="circle-menu-label" for="cm-1"></label>
13961
+ * <ul class="circle-menu-list">
13962
+ * <li class="circle-menu-item"><a href="#">icon</a></li>
13963
+ * </ul>
13964
+ * </nav>
13965
+ */
13966
+
13967
+ @layer components {
13968
+ /* === Container === */
13969
+ .circle-menu {
13970
+ --circle-menu-size: 3rem;
13971
+ --circle-menu-item-size: 3rem;
13972
+ --circle-menu-radius: 5.5rem;
13973
+ --circle-menu-icon-size: 1.25rem;
13974
+ --circle-menu-bar-width: 1.125rem;
13975
+ --circle-menu-bar-height: 0.1875rem;
13976
+ --circle-menu-bar-gap: 0.375rem;
13977
+
13978
+ /* Color tokens (overridden by variants) */
13979
+ --circle-menu-btn-bg: var(--color-primary-container);
13980
+ --circle-menu-bar-color: var(--color-on-primary-container);
13981
+ --circle-menu-item-bg: var(--color-primary-container);
13982
+ --circle-menu-item-color: var(--color-on-primary-container);
13983
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-primary) 30%, transparent);
13984
+
13985
+ position: relative;
13986
+ display: inline-flex;
13987
+ align-items: center;
13988
+ justify-content: center;
13989
+ width: var(--circle-menu-size);
13990
+ height: var(--circle-menu-size);
13991
+ }
13992
+
13993
+ /* === Hidden checkbox toggler === */
13994
+ .circle-menu-toggler {
13995
+ position: absolute;
13996
+ inset: 0;
13997
+ margin: auto;
13998
+ width: var(--circle-menu-size);
13999
+ height: var(--circle-menu-size);
14000
+ z-index: 10;
14001
+ opacity: 0;
14002
+ cursor: pointer;
14003
+ }
14004
+
14005
+ /* === Circular toggle button (label) === */
14006
+ .circle-menu-label {
14007
+ position: absolute;
14008
+ inset: 0;
14009
+ margin: auto;
14010
+ display: block;
14011
+ width: var(--circle-menu-size);
14012
+ height: var(--circle-menu-size);
14013
+ border-radius: var(--radius-full);
14014
+ background-color: var(--circle-menu-btn-bg);
14015
+ z-index: 1;
14016
+ pointer-events: none;
14017
+ transition: background-color 0.3s ease;
14018
+ }
14019
+
14020
+ /* Top bar of hamburger icon */
14021
+ .circle-menu-label::before {
14022
+ content: '';
14023
+ position: absolute;
14024
+ top: 50%;
14025
+ left: 50%;
14026
+ width: var(--circle-menu-bar-width);
14027
+ height: var(--circle-menu-bar-height);
14028
+ border-radius: var(--radius-full);
14029
+ background-color: var(--circle-menu-bar-color);
14030
+ /* Box-shadow creates middle + bottom bars */
14031
+ box-shadow:
14032
+ 0 var(--circle-menu-bar-gap) 0 var(--circle-menu-bar-color),
14033
+ 0 calc(-1 * var(--circle-menu-bar-gap)) 0 var(--circle-menu-bar-color);
14034
+ transform: translate(-50%, -50%);
14035
+ transition:
14036
+ transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
14037
+ box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1);
14038
+ }
14039
+
14040
+ /* Second diagonal of X (hidden by default) */
14041
+ .circle-menu-label::after {
14042
+ content: '';
14043
+ position: absolute;
14044
+ top: 50%;
14045
+ left: 50%;
14046
+ width: var(--circle-menu-bar-width);
14047
+ height: var(--circle-menu-bar-height);
14048
+ border-radius: var(--radius-full);
14049
+ background-color: var(--circle-menu-bar-color);
14050
+ transform: translate(-50%, -50%) rotate(-45deg);
14051
+ opacity: 0;
14052
+ transition: opacity 0.25s ease;
14053
+ }
14054
+
14055
+ /* Hover: lighten the toggle button */
14056
+ .circle-menu-toggler:hover + .circle-menu-label {
14057
+ background-color: color-mix(in oklch, var(--circle-menu-btn-bg) 80%, var(--circle-menu-bar-color));
14058
+ }
14059
+
14060
+ /* Focus visible ring on toggle button */
14061
+ .circle-menu-toggler:focus-visible + .circle-menu-label {
14062
+ outline: none;
14063
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
14064
+ }
14065
+
14066
+ /* === Checked: hamburger → X === */
14067
+ .circle-menu-toggler:checked + .circle-menu-label::before {
14068
+ box-shadow: none;
14069
+ transform: translate(-50%, -50%) rotate(45deg);
14070
+ }
14071
+
14072
+ .circle-menu-toggler:checked + .circle-menu-label::after {
14073
+ opacity: 1;
14074
+ }
14075
+
14076
+ /* === Menu list === */
14077
+ .circle-menu-list {
14078
+ position: absolute;
14079
+ inset: 0;
14080
+ margin: 0;
14081
+ padding: 0;
14082
+ list-style: none;
14083
+ pointer-events: none;
14084
+ }
14085
+
14086
+ /* === Menu items (collapsed at center) === */
14087
+ .circle-menu-item {
14088
+ position: absolute;
14089
+ inset: 0;
14090
+ margin: auto;
14091
+ width: var(--circle-menu-item-size);
14092
+ height: var(--circle-menu-item-size);
14093
+ opacity: 0;
14094
+ transition:
14095
+ transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
14096
+ opacity 0.3s ease;
14097
+ }
14098
+
14099
+ /* Item anchor/button — circular shape */
14100
+ .circle-menu-item a,
14101
+ .circle-menu-item button {
14102
+ display: flex;
14103
+ align-items: center;
14104
+ justify-content: center;
14105
+ width: 100%;
14106
+ height: 100%;
14107
+ border-radius: var(--radius-full);
14108
+ text-decoration: none;
14109
+ font-size: var(--circle-menu-icon-size);
14110
+ color: var(--circle-menu-item-color);
14111
+ background-color: var(--circle-menu-item-bg);
14112
+ border: none;
14113
+ cursor: pointer;
14114
+ pointer-events: none;
14115
+ transition:
14116
+ box-shadow 0.2s ease,
14117
+ background-color 0.2s ease;
14118
+ }
14119
+
14120
+ .circle-menu-item a:hover,
14121
+ .circle-menu-item button:hover {
14122
+ background-color: color-mix(in oklch, var(--circle-menu-item-bg) 80%, var(--circle-menu-item-color));
14123
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
14124
+ }
14125
+
14126
+ .circle-menu-item a:focus-visible,
14127
+ .circle-menu-item button:focus-visible {
14128
+ outline: none;
14129
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
14130
+ }
14131
+
14132
+ /* Counter-rotate icons to stay upright as item container rotates */
14133
+ .circle-menu-item:nth-child(1) a,
14134
+ .circle-menu-item:nth-child(1) button { transform: rotate(0deg); }
14135
+ .circle-menu-item:nth-child(2) a,
14136
+ .circle-menu-item:nth-child(2) button { transform: rotate(-60deg); }
14137
+ .circle-menu-item:nth-child(3) a,
14138
+ .circle-menu-item:nth-child(3) button { transform: rotate(-120deg); }
14139
+ .circle-menu-item:nth-child(4) a,
14140
+ .circle-menu-item:nth-child(4) button { transform: rotate(-180deg); }
14141
+ .circle-menu-item:nth-child(5) a,
14142
+ .circle-menu-item:nth-child(5) button { transform: rotate(-240deg); }
14143
+ .circle-menu-item:nth-child(6) a,
14144
+ .circle-menu-item:nth-child(6) button { transform: rotate(-300deg); }
14145
+
14146
+ /* === Checked: fan items out in a circle === */
14147
+ .circle-menu-toggler:checked ~ .circle-menu-list {
14148
+ pointer-events: auto;
14149
+ }
14150
+
14151
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item {
14152
+ opacity: 1;
14153
+ }
14154
+
14155
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item a,
14156
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item button {
14157
+ pointer-events: auto;
14158
+ }
14159
+
14160
+ /* Radial positions for up to 6 items (rotate + translate along rotated X axis) */
14161
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(1) {
14162
+ transform: rotate(0deg) translateX(calc(-1 * var(--circle-menu-radius)));
14163
+ }
14164
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(2) {
14165
+ transform: rotate(60deg) translateX(calc(-1 * var(--circle-menu-radius)));
14166
+ }
14167
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(3) {
14168
+ transform: rotate(120deg) translateX(calc(-1 * var(--circle-menu-radius)));
14169
+ }
14170
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(4) {
14171
+ transform: rotate(180deg) translateX(calc(-1 * var(--circle-menu-radius)));
14172
+ }
14173
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(5) {
14174
+ transform: rotate(240deg) translateX(calc(-1 * var(--circle-menu-radius)));
14175
+ }
14176
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(6) {
14177
+ transform: rotate(300deg) translateX(calc(-1 * var(--circle-menu-radius)));
14178
+ }
14179
+
14180
+ /* === Size variants === */
14181
+ .circle-menu-sm {
14182
+ --circle-menu-size: 2.5rem;
14183
+ --circle-menu-item-size: 2.5rem;
14184
+ --circle-menu-radius: 4.5rem;
14185
+ --circle-menu-icon-size: 1rem;
14186
+ --circle-menu-bar-width: 0.9375rem;
14187
+ --circle-menu-bar-gap: 0.3125rem;
14188
+ }
14189
+
14190
+ .circle-menu-lg {
14191
+ --circle-menu-size: 3.5rem;
14192
+ --circle-menu-item-size: 3.5rem;
14193
+ --circle-menu-radius: 6.5rem;
14194
+ --circle-menu-icon-size: 1.5rem;
14195
+ --circle-menu-bar-width: 1.3125rem;
14196
+ --circle-menu-bar-gap: 0.4375rem;
14197
+ }
14198
+
14199
+ /* === Color variants === */
14200
+ .circle-menu-primary {
14201
+ --circle-menu-btn-bg: var(--color-primary);
14202
+ --circle-menu-bar-color: var(--color-primary-content);
14203
+ --circle-menu-item-bg: var(--color-primary);
14204
+ --circle-menu-item-color: var(--color-primary-content);
14205
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-primary) 40%, transparent);
14206
+ }
14207
+
14208
+ .circle-menu-secondary {
14209
+ --circle-menu-btn-bg: var(--color-secondary);
14210
+ --circle-menu-bar-color: var(--color-secondary-content);
14211
+ --circle-menu-item-bg: var(--color-secondary);
14212
+ --circle-menu-item-color: var(--color-secondary-content);
14213
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-secondary) 40%, transparent);
14214
+ }
14215
+
14216
+ .circle-menu-tertiary {
14217
+ --circle-menu-btn-bg: var(--color-tertiary);
14218
+ --circle-menu-bar-color: var(--color-tertiary-content);
14219
+ --circle-menu-item-bg: var(--color-tertiary);
14220
+ --circle-menu-item-color: var(--color-tertiary-content);
14221
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-tertiary) 40%, transparent);
14222
+ }
14223
+
14224
+ .circle-menu-info {
14225
+ --circle-menu-btn-bg: var(--color-info);
14226
+ --circle-menu-bar-color: var(--color-info-content);
14227
+ --circle-menu-item-bg: var(--color-info);
14228
+ --circle-menu-item-color: var(--color-info-content);
14229
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-info) 40%, transparent);
14230
+ }
14231
+
14232
+ .circle-menu-success {
14233
+ --circle-menu-btn-bg: var(--color-success);
14234
+ --circle-menu-bar-color: var(--color-success-content);
14235
+ --circle-menu-item-bg: var(--color-success);
14236
+ --circle-menu-item-color: var(--color-success-content);
14237
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-success) 40%, transparent);
14238
+ }
14239
+
14240
+ .circle-menu-warning {
14241
+ --circle-menu-btn-bg: var(--color-warning);
14242
+ --circle-menu-bar-color: var(--color-warning-content);
14243
+ --circle-menu-item-bg: var(--color-warning);
14244
+ --circle-menu-item-color: var(--color-warning-content);
14245
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-warning) 40%, transparent);
14246
+ }
14247
+
14248
+ .circle-menu-error {
14249
+ --circle-menu-btn-bg: var(--color-error);
14250
+ --circle-menu-bar-color: var(--color-error-content);
14251
+ --circle-menu-item-bg: var(--color-error);
14252
+ --circle-menu-item-color: var(--color-error-content);
14253
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-error) 40%, transparent);
14254
+ }
14255
+
14256
+ /* === Reduced motion === */
14257
+ @media (prefers-reduced-motion: reduce) {
14258
+ .circle-menu-label {
14259
+ transition: none;
14260
+ }
14261
+
14262
+ .circle-menu-label::before,
14263
+ .circle-menu-label::after {
14264
+ transition: none;
14265
+ }
14266
+
14267
+ .circle-menu-item {
14268
+ transition: none;
14269
+ }
14270
+
14271
+ .circle-menu-item a,
14272
+ .circle-menu-item button {
14273
+ transition: none;
14274
+ }
14275
+ }
14276
+ }
14277
+
13637
14278
  /**
13638
14279
  * Drawer Component Styles
13639
14280
  * DuskMoonUI - Material Design 3 inspired navigation drawer system
@@ -13645,7 +14286,7 @@
13645
14286
  position: fixed;
13646
14287
  inset: 0;
13647
14288
  z-index: 1100;
13648
- background-color: rgb(0 0 0 / 0.5);
14289
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
13649
14290
  opacity: 0;
13650
14291
  visibility: hidden;
13651
14292
  transition: opacity 300ms ease-out, visibility 300ms ease-out;
@@ -13692,7 +14333,7 @@
13692
14333
  width: 20rem;
13693
14334
  max-width: calc(100vw - 3.5rem);
13694
14335
  transform: translateX(-100%);
13695
- border-radius: 0 1rem 1rem 0;
14336
+ border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
13696
14337
  }
13697
14338
 
13698
14339
  .drawer-left.drawer-open {
@@ -13706,7 +14347,7 @@
13706
14347
  width: 20rem;
13707
14348
  max-width: calc(100vw - 3.5rem);
13708
14349
  transform: translateX(100%);
13709
- border-radius: 1rem 0 0 1rem;
14350
+ border-radius: var(--radius-lg) 0 0 var(--radius-lg);
13710
14351
  }
13711
14352
 
13712
14353
  .drawer-right.drawer-open {
@@ -13720,7 +14361,7 @@
13720
14361
  height: auto;
13721
14362
  max-height: 80vh;
13722
14363
  transform: translateY(-100%);
13723
- border-radius: 0 0 1rem 1rem;
14364
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
13724
14365
  }
13725
14366
 
13726
14367
  .drawer-top.drawer-open {
@@ -13734,7 +14375,7 @@
13734
14375
  height: auto;
13735
14376
  max-height: 80vh;
13736
14377
  transform: translateY(100%);
13737
- border-radius: 1rem 1rem 0 0;
14378
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
13738
14379
  }
13739
14380
 
13740
14381
  .drawer-bottom.drawer-open {
@@ -13767,7 +14408,7 @@
13767
14408
  color: var(--color-on-surface-variant);
13768
14409
  background-color: transparent;
13769
14410
  border: none;
13770
- border-radius: 50%;
14411
+ border-radius: var(--radius-full);
13771
14412
  cursor: pointer;
13772
14413
  transition: background-color 150ms ease-in-out;
13773
14414
  }
@@ -13777,8 +14418,8 @@
13777
14418
  }
13778
14419
 
13779
14420
  .drawer-close:focus-visible {
13780
- outline: 2px solid var(--color-primary);
13781
- outline-offset: 2px;
14421
+ outline: none;
14422
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
13782
14423
  }
13783
14424
 
13784
14425
  /* Drawer Body (main content area) */
@@ -13809,7 +14450,7 @@
13809
14450
  color: var(--color-on-surface-variant);
13810
14451
  background-color: transparent;
13811
14452
  border: none;
13812
- border-radius: 1.75rem;
14453
+ border-radius: var(--radius-2xl);
13813
14454
  cursor: pointer;
13814
14455
  text-decoration: none;
13815
14456
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
@@ -13822,8 +14463,8 @@
13822
14463
  }
13823
14464
 
13824
14465
  .drawer-item:focus-visible {
13825
- outline: 2px solid var(--color-primary);
13826
- outline-offset: 2px;
14466
+ outline: none;
14467
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
13827
14468
  }
13828
14469
 
13829
14470
  /* Active Item States */
@@ -13861,7 +14502,7 @@
13861
14502
  font-weight: 500;
13862
14503
  background-color: var(--color-error-container);
13863
14504
  color: var(--color-on-error-container);
13864
- border-radius: 9999px;
14505
+ border-radius: var(--radius-full);
13865
14506
  margin-left: auto;
13866
14507
  }
13867
14508
 
@@ -13903,7 +14544,7 @@
13903
14544
  .drawer-profile-avatar {
13904
14545
  width: 2.5rem;
13905
14546
  height: 2.5rem;
13906
- border-radius: 50%;
14547
+ border-radius: var(--radius-full);
13907
14548
  background-color: var(--color-primary-container);
13908
14549
  display: flex;
13909
14550
  align-items: center;
@@ -14069,8 +14710,8 @@
14069
14710
 
14070
14711
  .nested-menu li > a:focus-visible,
14071
14712
  .nested-menu li > button:focus-visible {
14072
- outline: 2px solid var(--color-primary);
14073
- outline-offset: -2px;
14713
+ outline: none;
14714
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
14074
14715
  }
14075
14716
 
14076
14717
  /* Active state */
@@ -14134,8 +14775,8 @@
14134
14775
  }
14135
14776
 
14136
14777
  .nested-menu summary:focus-visible {
14137
- outline: 2px solid var(--color-primary);
14138
- outline-offset: -2px;
14778
+ outline: none;
14779
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
14139
14780
  }
14140
14781
 
14141
14782
  /* Chevron indicator */
@@ -14231,7 +14872,7 @@
14231
14872
  background-color: var(--color-surface);
14232
14873
  border: 1px solid var(--color-outline-variant);
14233
14874
  border-radius: var(--radius-card, 0.75rem);
14234
- box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
14875
+ box-shadow: var(--shadow-sm);
14235
14876
  }
14236
14877
 
14237
14878
  /* Compact — tighter padding throughout */
@@ -14326,8 +14967,8 @@
14326
14967
  }
14327
14968
 
14328
14969
  .stepper-step-button:focus-visible .stepper-step-icon {
14329
- outline: 2px solid var(--color-primary);
14330
- outline-offset: 2px;
14970
+ outline: none;
14971
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
14331
14972
  }
14332
14973
 
14333
14974
  /* Step Icon (Number/Icon Circle) */
@@ -14342,26 +14983,26 @@
14342
14983
  color: var(--color-on-surface-variant);
14343
14984
  background-color: var(--color-surface);
14344
14985
  border: 2px solid var(--color-outline-variant);
14345
- border-radius: 50%;
14986
+ border-radius: var(--radius-full);
14346
14987
  transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out, color 150ms ease-in-out;
14347
14988
  }
14348
14989
 
14349
14990
  .stepper-step-active .stepper-step-icon {
14350
14991
  background-color: var(--color-primary);
14351
14992
  border-color: var(--color-primary);
14352
- color: var(--color-on-primary);
14993
+ color: var(--color-primary-content);
14353
14994
  }
14354
14995
 
14355
14996
  .stepper-step-completed .stepper-step-icon {
14356
14997
  background-color: var(--color-primary);
14357
14998
  border-color: var(--color-primary);
14358
- color: var(--color-on-primary);
14999
+ color: var(--color-primary-content);
14359
15000
  }
14360
15001
 
14361
15002
  .stepper-step-error .stepper-step-icon {
14362
15003
  background-color: var(--color-error);
14363
15004
  border-color: var(--color-error);
14364
- color: var(--color-on-error);
15005
+ color: var(--color-error-content);
14365
15006
  }
14366
15007
 
14367
15008
  .stepper-step-disabled .stepper-step-icon {
@@ -14450,7 +15091,7 @@
14450
15091
  .stepper-secondary .stepper-step-completed .stepper-step-icon {
14451
15092
  background-color: var(--color-secondary);
14452
15093
  border-color: var(--color-secondary);
14453
- color: var(--color-on-secondary);
15094
+ color: var(--color-secondary-content);
14454
15095
  }
14455
15096
 
14456
15097
  .stepper-secondary .stepper-step-completed .stepper-step-connector {
@@ -14465,7 +15106,7 @@
14465
15106
  .stepper-tertiary .stepper-step-completed .stepper-step-icon {
14466
15107
  background-color: var(--color-tertiary);
14467
15108
  border-color: var(--color-tertiary);
14468
- color: var(--color-on-tertiary);
15109
+ color: var(--color-tertiary-content);
14469
15110
  }
14470
15111
 
14471
15112
  .stepper-tertiary .stepper-step-completed .stepper-step-connector {
@@ -14532,7 +15173,7 @@
14532
15173
 
14533
15174
  .stepper-dots .stepper-step-active .stepper-step-icon {
14534
15175
  width: 1.5rem;
14535
- border-radius: 9999px;
15176
+ border-radius: var(--radius-full);
14536
15177
  background-color: var(--color-primary);
14537
15178
  }
14538
15179
 
@@ -14597,7 +15238,7 @@
14597
15238
  .accordion {
14598
15239
  display: flex;
14599
15240
  flex-direction: column;
14600
- border-radius: 0.75rem;
15241
+ border-radius: var(--radius-md);
14601
15242
  overflow: hidden;
14602
15243
  }
14603
15244
 
@@ -14610,13 +15251,13 @@
14610
15251
 
14611
15252
  .accordion-item:first-child {
14612
15253
  margin-top: 0;
14613
- border-top-left-radius: 0.75rem;
14614
- border-top-right-radius: 0.75rem;
15254
+ border-top-left-radius: var(--radius-md);
15255
+ border-top-right-radius: var(--radius-md);
14615
15256
  }
14616
15257
 
14617
15258
  .accordion-item:last-child {
14618
- border-bottom-left-radius: 0.75rem;
14619
- border-bottom-right-radius: 0.75rem;
15259
+ border-bottom-left-radius: var(--radius-md);
15260
+ border-bottom-right-radius: var(--radius-md);
14620
15261
  }
14621
15262
 
14622
15263
  /* Accordion Header */
@@ -14642,7 +15283,7 @@
14642
15283
  .accordion-header:focus-visible {
14643
15284
  outline: none;
14644
15285
  background-color: var(--color-surface-container);
14645
- box-shadow: inset 0 0 0 2px var(--color-primary);
15286
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
14646
15287
  }
14647
15288
 
14648
15289
  .accordion-item.open .accordion-header {
@@ -14727,7 +15368,7 @@
14727
15368
  /* Separated Variant */
14728
15369
  .accordion-separated .accordion-item {
14729
15370
  margin-top: 0.5rem;
14730
- border-radius: 0.75rem;
15371
+ border-radius: var(--radius-md);
14731
15372
  }
14732
15373
 
14733
15374
  .accordion-separated .accordion-item:first-child {
@@ -14843,7 +15484,7 @@
14843
15484
  position: fixed;
14844
15485
  inset: 0;
14845
15486
  z-index: 1100;
14846
- background-color: rgb(0 0 0 / 0.5);
15487
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
14847
15488
  opacity: 0;
14848
15489
  visibility: hidden;
14849
15490
  transition: opacity 300ms ease-out, visibility 300ms ease-out;
@@ -14865,8 +15506,8 @@
14865
15506
  flex-direction: column;
14866
15507
  max-height: 90vh;
14867
15508
  background-color: var(--color-surface);
14868
- border-radius: 1.75rem 1.75rem 0 0;
14869
- box-shadow: 0 -25px 50px -12px rgb(0 0 0 / 0.25);
15509
+ border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;
15510
+ box-shadow: 0 -25px 50px -12px color-mix(in srgb, var(--color-shadow) 25%, transparent);
14870
15511
  transform: translateY(100%);
14871
15512
  transition: transform 300ms ease-out;
14872
15513
  padding-bottom: env(safe-area-inset-bottom, 0);
@@ -14890,7 +15531,7 @@
14890
15531
  width: 2rem;
14891
15532
  height: 0.25rem;
14892
15533
  background-color: var(--color-outline-variant);
14893
- border-radius: 9999px;
15534
+ border-radius: var(--radius-full);
14894
15535
  }
14895
15536
 
14896
15537
  .bottomsheet-handle:active {
@@ -14922,7 +15563,7 @@
14922
15563
  color: var(--color-on-surface-variant);
14923
15564
  background-color: transparent;
14924
15565
  border: none;
14925
- border-radius: 50%;
15566
+ border-radius: var(--radius-full);
14926
15567
  cursor: pointer;
14927
15568
  transition: background-color 150ms ease-in-out;
14928
15569
  }
@@ -14932,8 +15573,8 @@
14932
15573
  }
14933
15574
 
14934
15575
  .bottomsheet-close:focus-visible {
14935
- outline: 2px solid var(--color-primary);
14936
- outline-offset: 2px;
15576
+ outline: none;
15577
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
14937
15578
  }
14938
15579
 
14939
15580
  /* Bottom Sheet Content */
@@ -15037,7 +15678,7 @@
15037
15678
  color: var(--color-on-surface);
15038
15679
  background-color: transparent;
15039
15680
  border: none;
15040
- border-radius: 0.75rem;
15681
+ border-radius: var(--radius-md);
15041
15682
  cursor: pointer;
15042
15683
  transition: background-color 150ms ease-in-out;
15043
15684
  }
@@ -15054,7 +15695,7 @@
15054
15695
  height: 3rem;
15055
15696
  font-size: 1.5rem;
15056
15697
  background-color: var(--color-surface-container-high);
15057
- border-radius: 50%;
15698
+ border-radius: var(--radius-full);
15058
15699
  color: var(--color-on-surface-variant);
15059
15700
  }
15060
15701
 
@@ -15076,7 +15717,7 @@
15076
15717
  /* Persistent (non-modal) */
15077
15718
  .bottomsheet-persistent {
15078
15719
  position: absolute;
15079
- box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1);
15720
+ box-shadow: 0 -4px 6px -1px color-mix(in srgb, var(--color-shadow) 10%, transparent);
15080
15721
  }
15081
15722
 
15082
15723
  /* Expandable Heights */
@@ -15107,7 +15748,7 @@
15107
15748
  width: 0.25rem;
15108
15749
  height: 1rem;
15109
15750
  background-color: var(--color-outline-variant);
15110
- border-radius: 9999px;
15751
+ border-radius: var(--radius-full);
15111
15752
  cursor: pointer;
15112
15753
  }
15113
15754
 
@@ -15142,7 +15783,7 @@
15142
15783
  width: 24rem;
15143
15784
  max-width: calc(100vw - 3.5rem);
15144
15785
  max-height: 100vh;
15145
- border-radius: 1rem 0 0 1rem;
15786
+ border-radius: var(--radius-lg) 0 0 var(--radius-lg);
15146
15787
  transform: translateX(100%);
15147
15788
  }
15148
15789
 
@@ -15177,7 +15818,7 @@
15177
15818
  .collapse {
15178
15819
  display: flex;
15179
15820
  flex-direction: column;
15180
- border-radius: 0.5rem;
15821
+ border-radius: var(--radius-sm);
15181
15822
  background-color: var(--color-surface);
15182
15823
  /* Override Tailwind's visibility: collapse utility */
15183
15824
  visibility: visible !important;
@@ -15205,8 +15846,8 @@
15205
15846
  }
15206
15847
 
15207
15848
  .collapse-trigger:focus-visible {
15208
- outline: 2px solid var(--color-primary);
15209
- outline-offset: -2px;
15849
+ outline: none;
15850
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
15210
15851
  }
15211
15852
 
15212
15853
  /* Collapse Icon */
@@ -15293,7 +15934,7 @@
15293
15934
  border: none;
15294
15935
  cursor: pointer;
15295
15936
  transition: background-color 150ms ease-in-out;
15296
- border-radius: 0.5rem;
15937
+ border-radius: var(--radius-sm);
15297
15938
  }
15298
15939
 
15299
15940
  .collapse-toggle:hover {
@@ -15301,8 +15942,8 @@
15301
15942
  }
15302
15943
 
15303
15944
  .collapse-toggle:focus-visible {
15304
- outline: 2px solid var(--color-primary);
15305
- outline-offset: 2px;
15945
+ outline: none;
15946
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
15306
15947
  }
15307
15948
 
15308
15949
  /* Toggle Icon */
@@ -15323,7 +15964,7 @@
15323
15964
  .collapse-card {
15324
15965
  background-color: var(--color-surface);
15325
15966
  border: 1px solid var(--color-outline-variant);
15326
- border-radius: 0.75rem;
15967
+ border-radius: var(--radius-md);
15327
15968
  overflow: hidden;
15328
15969
  box-shadow: var(--shadow-sm);
15329
15970
  }
@@ -15351,7 +15992,7 @@
15351
15992
  /* Bordered Variant */
15352
15993
  .collapse-bordered {
15353
15994
  border: 1px solid var(--color-outline-variant);
15354
- border-radius: 0.5rem;
15995
+ border-radius: var(--radius-sm);
15355
15996
  }
15356
15997
 
15357
15998
  /* Ghost Variant */
@@ -15475,7 +16116,7 @@
15475
16116
  margin-left: 0.5rem;
15476
16117
  border: 2px solid var(--color-outline);
15477
16118
  border-top-color: var(--color-primary);
15478
- border-radius: 50%;
16119
+ border-radius: var(--radius-full);
15479
16120
  animation: collapse-spin 0.8s linear infinite;
15480
16121
  }
15481
16122
 
@@ -15675,7 +16316,7 @@
15675
16316
  padding: 1rem;
15676
16317
  background-color: var(--color-surface);
15677
16318
  border: 1px solid var(--color-outline-variant);
15678
- border-radius: 0.75rem;
16319
+ border-radius: var(--radius-md);
15679
16320
  box-shadow: var(--shadow-lg);
15680
16321
  opacity: 0;
15681
16322
  visibility: hidden;
@@ -15710,7 +16351,7 @@
15710
16351
  padding: 1rem;
15711
16352
  background-color: var(--color-surface);
15712
16353
  border: 1px solid var(--color-outline-variant);
15713
- border-radius: 0.75rem;
16354
+ border-radius: var(--radius-md);
15714
16355
  box-shadow: var(--shadow-lg);
15715
16356
  opacity: 0;
15716
16357
  visibility: hidden;
@@ -15876,7 +16517,7 @@
15876
16517
  color: var(--color-on-surface-variant);
15877
16518
  background-color: transparent;
15878
16519
  border: none;
15879
- border-radius: 0.25rem;
16520
+ border-radius: var(--radius-xs);
15880
16521
  cursor: pointer;
15881
16522
  transition: background-color 150ms ease-in-out;
15882
16523
  }
@@ -15886,8 +16527,8 @@
15886
16527
  }
15887
16528
 
15888
16529
  .popover-close:focus-visible {
15889
- outline: 2px solid var(--color-primary);
15890
- outline-offset: 2px;
16530
+ outline: none;
16531
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
15891
16532
  }
15892
16533
 
15893
16534
  /* Popover Body */
@@ -16109,7 +16750,7 @@
16109
16750
  color: var(--color-on-surface);
16110
16751
  background-color: transparent;
16111
16752
  border: none;
16112
- border-radius: 0.5rem;
16753
+ border-radius: var(--radius-sm);
16113
16754
  cursor: pointer;
16114
16755
  text-align: left;
16115
16756
  transition: background-color 150ms ease-in-out;
@@ -16120,8 +16761,8 @@
16120
16761
  }
16121
16762
 
16122
16763
  .popover-menu-item:focus-visible {
16123
- outline: 2px solid var(--color-primary);
16124
- outline-offset: -2px;
16764
+ outline: none;
16765
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
16125
16766
  }
16126
16767
 
16127
16768
  .popover-menu-item-icon {
@@ -16164,7 +16805,7 @@
16164
16805
  margin: 0;
16165
16806
  background-color: var(--color-surface);
16166
16807
  border: 1px solid var(--color-outline-variant);
16167
- border-radius: 0.75rem;
16808
+ border-radius: var(--radius-md);
16168
16809
  box-shadow: var(--shadow-lg);
16169
16810
  opacity: 0;
16170
16811
  transform: scale(0.95);
@@ -16188,33 +16829,33 @@
16188
16829
 
16189
16830
  /* Native popover backdrop */
16190
16831
  .popover[popover]::backdrop {
16191
- background-color: rgb(0 0 0 / 0);
16832
+ background-color: transparent;
16192
16833
  transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
16193
16834
  }
16194
16835
 
16195
16836
  .popover[popover]:popover-open::backdrop {
16196
- background-color: rgb(0 0 0 / 0.1);
16837
+ background-color: color-mix(in srgb, var(--color-scrim) 10%, transparent);
16197
16838
  }
16198
16839
 
16199
16840
  @starting-style {
16200
16841
  .popover[popover]:popover-open::backdrop {
16201
- background-color: rgb(0 0 0 / 0);
16842
+ background-color: transparent;
16202
16843
  }
16203
16844
  }
16204
16845
 
16205
16846
  /* Native popover with modal backdrop */
16206
16847
  .popover-modal[popover]::backdrop {
16207
- background-color: rgb(0 0 0 / 0);
16848
+ background-color: transparent;
16208
16849
  transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
16209
16850
  }
16210
16851
 
16211
16852
  .popover-modal[popover]:popover-open::backdrop {
16212
- background-color: rgb(0 0 0 / 0.3);
16853
+ background-color: color-mix(in srgb, var(--color-scrim) 30%, transparent);
16213
16854
  }
16214
16855
 
16215
16856
  @starting-style {
16216
16857
  .popover-modal[popover]:popover-open::backdrop {
16217
- background-color: rgb(0 0 0 / 0);
16858
+ background-color: transparent;
16218
16859
  }
16219
16860
  }
16220
16861
 
@@ -16433,7 +17074,7 @@
16433
17074
  height: 2.5rem;
16434
17075
  background-color: var(--color-surface);
16435
17076
  border: 2px solid var(--color-outline-variant);
16436
- border-radius: 50%;
17077
+ border-radius: var(--radius-full);
16437
17078
  flex-shrink: 0;
16438
17079
  z-index: 1;
16439
17080
  }
@@ -16447,7 +17088,7 @@
16447
17088
  width: 0.75rem;
16448
17089
  height: 0.75rem;
16449
17090
  background-color: var(--color-outline-variant);
16450
- border-radius: 50%;
17091
+ border-radius: var(--radius-full);
16451
17092
  }
16452
17093
 
16453
17094
  /* Timeline Content */
@@ -16480,7 +17121,7 @@
16480
17121
  .timeline-card {
16481
17122
  padding: 1rem;
16482
17123
  background-color: var(--color-surface-container);
16483
- border-radius: 0.75rem;
17124
+ border-radius: var(--radius-md);
16484
17125
  margin-top: 0.5rem;
16485
17126
  }
16486
17127
 
@@ -16535,7 +17176,7 @@
16535
17176
  }
16536
17177
 
16537
17178
  .timeline-item.completed .timeline-marker-icon {
16538
- color: var(--color-on-primary);
17179
+ color: var(--color-primary-content);
16539
17180
  }
16540
17181
 
16541
17182
  /* Active State */
@@ -16547,8 +17188,8 @@
16547
17188
 
16548
17189
  .timeline-item.active .timeline-marker-icon,
16549
17190
  .timeline-item.active .timeline-marker-dot {
16550
- color: var(--color-on-primary);
16551
- background-color: var(--color-on-primary);
17191
+ color: var(--color-primary-content);
17192
+ background-color: var(--color-primary-content);
16552
17193
  }
16553
17194
 
16554
17195
  /* Size Variants */
@@ -16758,7 +17399,7 @@
16758
17399
 
16759
17400
  .code-block {
16760
17401
  border: 1px solid var(--color-outline);
16761
- border-radius: 0.5rem;
17402
+ border-radius: var(--radius-sm);
16762
17403
  overflow: hidden;
16763
17404
  }
16764
17405
 
@@ -16804,7 +17445,7 @@
16804
17445
  gap: 0.375rem;
16805
17446
  padding: 0.25rem 0.5rem;
16806
17447
  border: none;
16807
- border-radius: 0.25rem;
17448
+ border-radius: var(--radius-xs);
16808
17449
  background: transparent;
16809
17450
  color: var(--color-on-surface-variant);
16810
17451
  font-size: 0.75rem;
@@ -16961,8 +17602,8 @@
16961
17602
  }
16962
17603
 
16963
17604
  .markdown-body a:focus-visible {
16964
- outline: 2px solid var(--color-primary);
16965
- outline-offset: 2px;
17605
+ outline: none;
17606
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
16966
17607
  }
16967
17608
 
16968
17609
  /* Emphasis */
@@ -17056,7 +17697,7 @@
17056
17697
  padding-block: 0.2em;
17057
17698
  padding-inline: 0.4em;
17058
17699
  background-color: var(--color-surface-container-high);
17059
- border-radius: 6px;
17700
+ border-radius: var(--radius-xs);
17060
17701
  }
17061
17702
 
17062
17703
  /* Code blocks */
@@ -17068,7 +17709,7 @@
17068
17709
  margin-block-end: 1rem;
17069
17710
  overflow-x: auto;
17070
17711
  background-color: var(--color-surface-container);
17071
- border-radius: 6px;
17712
+ border-radius: var(--radius-xs);
17072
17713
  }
17073
17714
 
17074
17715
  /* Reset code inside pre */
@@ -17087,7 +17728,7 @@
17087
17728
  padding-inline: 0.4em;
17088
17729
  background-color: var(--color-surface-container);
17089
17730
  border: 1px solid var(--color-outline-variant);
17090
- border-radius: 6px;
17731
+ border-radius: var(--radius-xs);
17091
17732
  box-shadow: inset 0 -1px 0 var(--color-outline-variant);
17092
17733
  }
17093
17734
 
@@ -17244,7 +17885,7 @@
17244
17885
  color: var(--color-on-tertiary-container);
17245
17886
  padding-block: 0.1em;
17246
17887
  padding-inline: 0.2em;
17247
- border-radius: 2px;
17888
+ border-radius: var(--radius-xs);
17248
17889
  }
17249
17890
 
17250
17891
  /* Details/Summary */