@shift-css/core 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/shift.css CHANGED
@@ -359,14 +359,15 @@
359
359
  --_surface-bg: var(--s-surface-base);
360
360
  --_surface-padding: var(--s-space-4);
361
361
  --_surface-radius: var(--s-radius-lg);
362
+ --_surface-depth: 0;
362
363
  background-color: var(--_surface-bg);
363
364
  padding: var(--_surface-padding);
364
365
  border-radius: var(--_surface-radius);
365
366
  color: var(--s-text-primary);
366
- container-type: inline-size;
367
+ container: surface / inline-size;
367
368
 
368
369
  @supports (color: oklch(from red l c h)) {
369
- color: oklch(from var(--_surface-bg) clamp(.15, calc((.6 - l) * 1000 + .15), .95) 0 0);
370
+ color: oklch(from var(--_surface-bg) clamp(.15, calc((.55 - l) * 1000 + .15), .95) 0 0);
370
371
  }
371
372
 
372
373
  @supports (color: contrast-color(red)) {
@@ -376,20 +377,24 @@
376
377
 
377
378
  [s-surface="flat"] {
378
379
  --_surface-bg: var(--s-surface-base);
380
+ --_surface-depth: 0;
379
381
  }
380
382
 
381
383
  [s-surface="sunken"] {
382
384
  --_surface-bg: var(--s-surface-sunken);
385
+ --_surface-depth: -1;
383
386
  box-shadow: var(--s-shadow-inner);
384
387
  }
385
388
 
386
389
  [s-surface="raised"] {
387
390
  --_surface-bg: var(--s-surface-raised);
391
+ --_surface-depth: 1;
388
392
  box-shadow: var(--s-shadow-md);
389
393
  }
390
394
 
391
395
  [s-surface="floating"] {
392
396
  --_surface-bg: var(--s-surface-raised);
397
+ --_surface-depth: 2;
393
398
  box-shadow: var(--s-shadow-xl);
394
399
  }
395
400
 
@@ -410,36 +415,56 @@
410
415
  box-shadow: var(--s-shadow-sm);
411
416
  transform: translateY(0);
412
417
  }
418
+
419
+ &:focus-visible {
420
+ outline: 2px solid var(--s-focus-ring);
421
+ outline-offset: 2px;
422
+ }
413
423
  }
414
424
 
415
425
  [s-surface="primary"] {
416
- --_surface-bg: var(--s-primary-500);
426
+ --_surface-bg: var(--s-primary-700);
427
+ background-color: #06a;
428
+ background-color: var(--_surface-bg);
429
+ color: #fff;
417
430
  }
418
431
 
419
432
  [s-surface="secondary"] {
420
- --_surface-bg: var(--s-secondary-500);
433
+ --_surface-bg: var(--s-secondary-700);
434
+ background-color: #64a;
435
+ background-color: var(--_surface-bg);
436
+ color: #fff;
421
437
  }
422
438
 
423
439
  [s-surface="accent"] {
424
- --_surface-bg: var(--s-accent-500);
440
+ --_surface-bg: var(--s-accent-700);
441
+ background-color: #a46;
442
+ background-color: var(--_surface-bg);
443
+ color: #fff;
425
444
  }
426
445
 
427
446
  [s-surface="success"] {
428
447
  --_surface-bg: var(--s-state-success-bg);
448
+ background-color: #d4edda;
449
+ background-color: var(--_surface-bg);
429
450
  border-left: 4px solid var(--s-state-success);
430
- color: var(--s-text-primary);
451
+ color: #1a1a1a;
431
452
  }
432
453
 
433
454
  [s-surface="warning"] {
434
455
  --_surface-bg: var(--s-state-warning-bg);
456
+ background-color: #fff3cd;
457
+ background-color: var(--_surface-bg);
435
458
  border-left: 4px solid var(--s-state-warning);
436
- color: var(--s-text-primary);
459
+ color: #1a1a1a;
437
460
  }
438
461
 
439
462
  [s-surface="danger"] {
440
463
  --_surface-bg: var(--s-state-danger-bg);
464
+ background-color: #f8d7da;
465
+ background-color: var(--_surface-bg);
441
466
  border-left: 4px solid var(--s-state-danger);
442
- color: var(--s-text-primary);
467
+ color: #1a1a1a;
443
468
  }
444
469
 
445
470
  @container (width <= 20rem) {
@@ -473,7 +498,7 @@
473
498
  display: inline-flex;
474
499
 
475
500
  @supports (color: oklch(from red l c h)) {
476
- color: oklch(from var(--_btn-bg) clamp(.15, calc((.6 - l) * 1000 + .15), .95) 0 0);
501
+ color: oklch(from var(--_btn-bg) clamp(.15, calc((.55 - l) * 1000 + .15), .95) 0 0);
477
502
  }
478
503
 
479
504
  @supports (color: contrast-color(red)) {
@@ -485,11 +510,20 @@
485
510
  user-select: none;
486
511
 
487
512
  &:hover:not(:disabled) {
488
- --_btn-bg: var(--s-interactive-primary-hover);
513
+ background-color: var(--s-interactive-primary-hover);
514
+
515
+ @supports (color: oklch(from red l c h)) and (color: light-dark(red, blue)) {
516
+ background-color: light-dark(oklch(from var(--_btn-bg) calc(l * .92) c h), oklch(from var(--_btn-bg) min(calc(l * 1.1), .95) c h));
517
+ }
489
518
  }
490
519
 
491
520
  &:active:not(:disabled) {
492
- --_btn-bg: var(--s-interactive-primary-active);
521
+ background-color: var(--s-interactive-primary-active);
522
+
523
+ @supports (color: oklch(from red l c h)) and (color: light-dark(red, blue)) {
524
+ background-color: light-dark(oklch(from var(--_btn-bg) calc(l * .85) c h), oklch(from var(--_btn-bg) min(calc(l * 1.2), .98) c h));
525
+ }
526
+
493
527
  transform: scale(.98);
494
528
  }
495
529
 
@@ -508,14 +542,6 @@
508
542
  [s-btn="primary"] {
509
543
  --_btn-bg: var(--s-interactive-primary);
510
544
  --_btn-text: var(--s-text-inverse);
511
-
512
- &:hover:not(:disabled) {
513
- --_btn-bg: var(--s-interactive-primary-hover);
514
- }
515
-
516
- &:active:not(:disabled) {
517
- --_btn-bg: var(--s-interactive-primary-active);
518
- }
519
545
  }
520
546
 
521
547
  [s-btn="secondary"] {
@@ -523,10 +549,6 @@
523
549
  --_btn-text: var(--s-text-primary);
524
550
  --_btn-border: var(--s-border-default);
525
551
  color: var(--_btn-text);
526
-
527
- &:hover:not(:disabled) {
528
- --_btn-bg: var(--s-surface-sunken);
529
- }
530
552
  }
531
553
 
532
554
  [s-btn="ghost"] {
@@ -561,45 +583,21 @@
561
583
 
562
584
  &:hover:not(:disabled) {
563
585
  --_btn-bg: var(--s-interactive-primary);
564
- --_btn-text: var(--s-text-inverse);
565
- color: var(--_btn-text);
586
+ background-color: var(--s-interactive-primary);
587
+ color: var(--s-text-inverse);
566
588
  }
567
589
  }
568
590
 
569
591
  [s-btn="danger"] {
570
592
  --_btn-bg: var(--s-state-danger);
571
-
572
- &:hover:not(:disabled) {
573
- --_btn-bg: var(--s-danger-800);
574
- }
575
-
576
- &:active:not(:disabled) {
577
- --_btn-bg: var(--s-danger-900);
578
- }
579
593
  }
580
594
 
581
595
  [s-btn="success"] {
582
596
  --_btn-bg: var(--s-state-success);
583
-
584
- &:hover:not(:disabled) {
585
- --_btn-bg: var(--s-success-800);
586
- }
587
-
588
- &:active:not(:disabled) {
589
- --_btn-bg: var(--s-success-900);
590
- }
591
597
  }
592
598
 
593
599
  [s-btn="warning"] {
594
600
  --_btn-bg: var(--s-state-warning);
595
-
596
- &:hover:not(:disabled) {
597
- --_btn-bg: var(--s-warning-800);
598
- }
599
-
600
- &:active:not(:disabled) {
601
- --_btn-bg: var(--s-warning-900);
602
- }
603
601
  }
604
602
 
605
603
  [s-btn][s-size="sm"] {
@@ -627,7 +625,7 @@
627
625
  }
628
626
 
629
627
  [s-btn][s-loading] {
630
- color: #0000;
628
+ color: var(--_btn-bg);
631
629
  pointer-events: none;
632
630
  position: relative;
633
631
 
@@ -671,6 +669,31 @@
671
669
  }
672
670
  }
673
671
 
672
+ @supports (container-type: inline-size) {
673
+ @container surface style(--_surface-depth: 1) {
674
+ :where([s-btn="secondary"]) {
675
+ --_btn-border: var(--s-border-strong);
676
+ }
677
+ }
678
+
679
+ @container surface style(--_surface-depth: 2) {
680
+ :where([s-btn="secondary"]) {
681
+ --_btn-border: var(--s-border-strong);
682
+ --_btn-bg: var(--s-surface-base);
683
+ }
684
+
685
+ :where([s-btn="ghost"]) {
686
+ --_btn-border: var(--s-border-muted);
687
+ }
688
+ }
689
+
690
+ @container surface style(--_surface-depth: -1) {
691
+ :where([s-btn="secondary"]) {
692
+ --_btn-bg: var(--s-surface-base);
693
+ }
694
+ }
695
+ }
696
+
674
697
  :where([s-card]) {
675
698
  --_card-bg: var(--s-surface-raised);
676
699
  --_card-border: var(--s-border-muted);
@@ -688,7 +711,7 @@
688
711
  container-type: inline-size;
689
712
 
690
713
  @supports (color: oklch(from red l c h)) {
691
- color: oklch(from var(--_card-bg) clamp(.15, calc((.6 - l) * 1000 + .15), .95) 0 0);
714
+ color: oklch(from var(--_card-bg) clamp(.15, calc((.55 - l) * 1000 + .15), .95) 0 0);
692
715
  }
693
716
  }
694
717
 
@@ -737,12 +760,12 @@
737
760
 
738
761
  [s-card="elevated"], [s-card][s-surface="raised"] {
739
762
  --_card-shadow: var(--s-shadow-lg);
740
- --_card-border: transparent;
763
+ --_card-border: oklch(0% 0 0 / 0);
741
764
  }
742
765
 
743
766
  [s-card][s-surface="floating"] {
744
767
  --_card-shadow: var(--s-shadow-xl);
745
- --_card-border: transparent;
768
+ --_card-border: oklch(0% 0 0 / 0);
746
769
  }
747
770
 
748
771
  [s-card="outline"] {
@@ -753,11 +776,15 @@
753
776
 
754
777
  [s-card][s-interactive] {
755
778
  cursor: pointer;
756
- transition: transform var(--s-duration-200) var(--s-ease-out), box-shadow var(--s-duration-200) var(--s-ease-out);
779
+ transition: transform var(--s-duration-200) var(--s-ease-out), box-shadow var(--s-duration-200) var(--s-ease-out), border-color var(--s-duration-200) var(--s-ease-out);
757
780
 
758
781
  &:hover {
759
782
  --_card-shadow: var(--s-shadow-xl);
760
783
  transform: translateY(-4px);
784
+
785
+ @supports (color: oklch(from red l c h)) {
786
+ border-color: oklch(from var(--_card-border) max(calc(l - .1), .05) c h);
787
+ }
761
788
  }
762
789
 
763
790
  &:active {
@@ -832,6 +859,27 @@
832
859
  display: flex;
833
860
  }
834
861
 
862
+ @supports (container-type: inline-size) {
863
+ @container surface style(--_surface-depth: 1) {
864
+ :where([s-card]) {
865
+ --_card-shadow: var(--s-shadow-sm);
866
+ }
867
+ }
868
+
869
+ @container surface style(--_surface-depth: 2) {
870
+ :where([s-card]) {
871
+ --_card-shadow: none;
872
+ --_card-border: var(--s-border-default);
873
+ }
874
+ }
875
+
876
+ @container surface style(--_surface-depth: -1) {
877
+ :where([s-card]) {
878
+ --_card-shadow: var(--s-shadow-md);
879
+ }
880
+ }
881
+ }
882
+
835
883
  :where([s-input]) {
836
884
  --_input-bg: var(--s-surface-base);
837
885
  --_input-border: var(--s-border-default);
@@ -854,14 +902,18 @@
854
902
  color: var(--_input-placeholder);
855
903
  }
856
904
 
857
- &:hover:not(:disabled):not(:focus) {
905
+ &:hover:not(:disabled):not(:focus-visible) {
858
906
  --_input-border: var(--s-border-strong);
859
907
  }
860
908
 
861
- &:focus {
909
+ &:focus-visible {
862
910
  --_input-border: var(--s-interactive-primary);
863
- box-shadow: 0 0 0 3px oklch(from var(--s-interactive-primary) l c h / .2);
864
- outline: none;
911
+ outline: 2px solid var(--s-focus-ring);
912
+ outline-offset: 2px;
913
+
914
+ @supports (color: oklch(from red l c h)) {
915
+ outline-color: oklch(from var(--s-interactive-primary) l c h / .3);
916
+ }
865
917
  }
866
918
 
867
919
  &:disabled {
@@ -873,8 +925,8 @@
873
925
  &:invalid:not(:placeholder-shown), &[aria-invalid="true"] {
874
926
  --_input-border: var(--s-state-danger);
875
927
 
876
- &:focus {
877
- box-shadow: 0 0 0 3px oklch(from var(--s-state-danger) l c h / .2);
928
+ &:focus-visible {
929
+ outline-color: var(--s-state-danger);
878
930
  }
879
931
  }
880
932
  }
@@ -1063,6 +1115,1110 @@
1063
1115
  }
1064
1116
  }
1065
1117
  }
1118
+
1119
+ @supports (container-type: inline-size) {
1120
+ @container surface style(--_surface-depth: 1) {
1121
+ :where([s-input]) {
1122
+ --_input-bg: var(--s-surface-sunken);
1123
+ }
1124
+
1125
+ :where([s-checkbox]) input, :where([s-radio]) input {
1126
+ background-color: var(--s-surface-sunken);
1127
+ }
1128
+ }
1129
+
1130
+ @container surface style(--_surface-depth: 2) {
1131
+ :where([s-input]) {
1132
+ --_input-bg: var(--s-surface-sunken);
1133
+ --_input-border: var(--s-border-strong);
1134
+ }
1135
+
1136
+ :where([s-checkbox]) input, :where([s-radio]) input {
1137
+ background-color: var(--s-surface-sunken);
1138
+ border-color: var(--s-border-strong);
1139
+ }
1140
+ }
1141
+
1142
+ @container surface style(--_surface-depth: -1) {
1143
+ :where([s-input]) {
1144
+ --_input-bg: var(--s-surface-raised);
1145
+ --_input-border: var(--s-border-muted);
1146
+ }
1147
+
1148
+ :where([s-checkbox]) input, :where([s-radio]) input {
1149
+ background-color: var(--s-surface-raised);
1150
+ }
1151
+ }
1152
+ }
1153
+
1154
+ dialog[s-modal]:not([open]) {
1155
+ display: none;
1156
+ }
1157
+
1158
+ :where(dialog[s-modal]) {
1159
+ --_modal-bg: var(--s-surface-raised);
1160
+ --_modal-border: var(--s-border-muted);
1161
+ --_modal-radius: var(--s-radius-xl);
1162
+ --_modal-shadow: var(--s-shadow-2xl);
1163
+ --_modal-padding: var(--s-space-4);
1164
+ --_modal-max-width: 32rem;
1165
+ width: min(var(--_modal-max-width), calc(100vw - var(--s-space-4) * 2));
1166
+ max-height: calc(100vh - var(--s-space-4) * 2);
1167
+ max-width: var(--_modal-max-width);
1168
+ background-color: var(--_modal-bg);
1169
+ border-radius: var(--_modal-radius);
1170
+ box-shadow: var(--_modal-shadow);
1171
+ border: none;
1172
+ margin: auto;
1173
+ padding: 0;
1174
+
1175
+ &[open] {
1176
+ flex-direction: column;
1177
+ display: flex;
1178
+ }
1179
+
1180
+ color: var(--s-text-primary);
1181
+ }
1182
+
1183
+ dialog[s-modal][open] {
1184
+ animation: s-modal-scale-in var(--s-duration-200) var(--s-ease-out);
1185
+ }
1186
+
1187
+ dialog[s-modal]:focus-visible {
1188
+ outline: 2px solid var(--s-focus-ring);
1189
+ outline-offset: 2px;
1190
+ }
1191
+
1192
+ @keyframes s-modal-scale-in {
1193
+ from {
1194
+ opacity: 0;
1195
+ transform: scale(.95)translateY(-10px);
1196
+ }
1197
+
1198
+ to {
1199
+ opacity: 1;
1200
+ transform: scale(1)translateY(0);
1201
+ }
1202
+ }
1203
+
1204
+ dialog[s-modal]::backdrop {
1205
+ backdrop-filter: blur(4px);
1206
+ animation: s-modal-backdrop-in var(--s-duration-200) var(--s-ease-out);
1207
+ background: oklch(0% 0 0 / .5);
1208
+
1209
+ @supports (color: oklch(from red l c h)) {
1210
+ background: oklch(from var(--s-primary-500) .1 .02 h / .5);
1211
+ }
1212
+ }
1213
+
1214
+ @keyframes s-modal-backdrop-in {
1215
+ from {
1216
+ opacity: 0;
1217
+ }
1218
+
1219
+ to {
1220
+ opacity: 1;
1221
+ }
1222
+ }
1223
+
1224
+ dialog[s-modal][s-size="sm"] {
1225
+ --_modal-max-width: 25rem;
1226
+ }
1227
+
1228
+ dialog[s-modal][s-size="lg"] {
1229
+ --_modal-max-width: 43.75rem;
1230
+ }
1231
+
1232
+ dialog[s-modal][s-size="full"] {
1233
+ --_modal-max-width: 100vw;
1234
+ --_modal-radius: 0;
1235
+ width: 100vw;
1236
+ height: 100vh;
1237
+ max-height: 100vh;
1238
+ }
1239
+
1240
+ dialog[s-modal][s-position="top"] {
1241
+ margin-top: var(--s-space-8);
1242
+ margin-bottom: auto;
1243
+ }
1244
+
1245
+ dialog[s-modal][s-position="bottom"] {
1246
+ margin-top: auto;
1247
+ margin-bottom: var(--s-space-8);
1248
+ }
1249
+
1250
+ dialog[s-modal][s-position="left"] {
1251
+ border-radius: 0 var(--_modal-radius) var(--_modal-radius) 0;
1252
+ margin-left: 0;
1253
+ margin-right: auto;
1254
+ }
1255
+
1256
+ @media (width >= 640px) {
1257
+ dialog[s-modal][s-position="left"] {
1258
+ margin-left: var(--s-space-8);
1259
+ border-radius: var(--_modal-radius);
1260
+ }
1261
+ }
1262
+
1263
+ dialog[s-modal][s-position="right"] {
1264
+ border-radius: var(--_modal-radius) 0 0 var(--_modal-radius);
1265
+ margin-left: auto;
1266
+ margin-right: 0;
1267
+ }
1268
+
1269
+ @media (width >= 640px) {
1270
+ dialog[s-modal][s-position="right"] {
1271
+ margin-right: var(--s-space-8);
1272
+ border-radius: var(--_modal-radius);
1273
+ }
1274
+ }
1275
+
1276
+ :where([s-modal-header]) {
1277
+ justify-content: space-between;
1278
+ align-items: center;
1279
+ gap: var(--s-space-4);
1280
+ padding: var(--_modal-padding, var(--s-space-4));
1281
+ border-bottom: 1px solid var(--s-border-muted);
1282
+ display: flex;
1283
+
1284
+ & > h1, & > h2, & > h3 {
1285
+ font-size: var(--s-text-lg);
1286
+ font-weight: var(--s-font-semibold);
1287
+ color: inherit;
1288
+ margin: 0;
1289
+ line-height: 1.25;
1290
+ }
1291
+ }
1292
+
1293
+ :where([s-modal-body]) {
1294
+ padding: var(--_modal-padding, var(--s-space-4));
1295
+ overscroll-behavior: contain;
1296
+ flex: 1;
1297
+ overflow-y: auto;
1298
+ }
1299
+
1300
+ :where([s-modal-footer]) {
1301
+ justify-content: flex-end;
1302
+ align-items: center;
1303
+ gap: var(--s-space-3);
1304
+ padding: var(--_modal-padding, var(--s-space-4));
1305
+ border-top: 1px solid var(--s-border-muted);
1306
+ display: flex;
1307
+ }
1308
+
1309
+ :where([s-modal-close]) {
1310
+ cursor: pointer;
1311
+ border-radius: var(--s-radius-full);
1312
+ min-width: 2.75rem;
1313
+ min-height: 2.75rem;
1314
+ font-size: var(--s-text-xl);
1315
+ color: var(--s-text-secondary);
1316
+ transition: background-color var(--s-duration-150) var(--s-ease-out), color var(--s-duration-150) var(--s-ease-out);
1317
+ background: none;
1318
+ border: none;
1319
+ justify-content: center;
1320
+ align-items: center;
1321
+ padding: 0;
1322
+ line-height: 1;
1323
+ display: inline-flex;
1324
+
1325
+ &:hover {
1326
+ background-color: var(--s-surface-sunken);
1327
+ color: var(--s-text-primary);
1328
+ }
1329
+
1330
+ &:focus-visible {
1331
+ outline: 2px solid var(--s-focus-ring);
1332
+ outline-offset: 2px;
1333
+ }
1334
+
1335
+ &:active {
1336
+ background-color: var(--s-border-default);
1337
+ }
1338
+ }
1339
+
1340
+ @media (forced-colors: active) {
1341
+ dialog[s-modal] {
1342
+ border: 2px solid canvastext;
1343
+ }
1344
+
1345
+ dialog[s-modal]::backdrop {
1346
+ backdrop-filter: none;
1347
+ background: #000000bf;
1348
+ }
1349
+
1350
+ [s-modal-header], [s-modal-footer] {
1351
+ border-color: canvastext;
1352
+ }
1353
+
1354
+ [s-modal-close] {
1355
+ border: 1px solid buttontext;
1356
+ }
1357
+ }
1358
+
1359
+ :where([s-prose]) {
1360
+ --_prose-body: var(--s-text-base);
1361
+ --_prose-body-weight: var(--s-font-normal);
1362
+ --_prose-leading: var(--s-leading-relaxed);
1363
+ --_prose-link-color: var(--s-primary-600);
1364
+ --_prose-link-hover: var(--s-primary-700);
1365
+ --_prose-code-bg: var(--s-neutral-100);
1366
+ --_prose-code-color: var(--s-danger-600);
1367
+ --_prose-pre-bg: var(--s-neutral-900);
1368
+ --_prose-pre-color: var(--s-neutral-100);
1369
+ --_prose-border-color: var(--s-border-default);
1370
+ --_prose-quote-border: var(--s-primary-500);
1371
+ font-size: var(--_prose-body);
1372
+ font-weight: var(--_prose-body-weight);
1373
+ line-height: var(--_prose-leading);
1374
+ color: var(--s-text-primary);
1375
+ max-width: 65ch;
1376
+ }
1377
+
1378
+ [s-prose="full"] {
1379
+ max-width: none;
1380
+ }
1381
+
1382
+ :where([s-prose]) :where(h1, h2, h3, h4, h5, h6) {
1383
+ color: var(--s-text-primary);
1384
+ font-weight: var(--s-font-bold);
1385
+ line-height: var(--s-leading-tight);
1386
+ margin-top: 1.5em;
1387
+ margin-bottom: .5em;
1388
+ }
1389
+
1390
+ :where([s-prose]) :where(h1) {
1391
+ font-size: var(--s-text-4xl);
1392
+ margin-top: 0;
1393
+ }
1394
+
1395
+ :where([s-prose]) :where(h2) {
1396
+ font-size: var(--s-text-3xl);
1397
+ border-bottom: 1px solid var(--_prose-border-color);
1398
+ padding-bottom: .25em;
1399
+ }
1400
+
1401
+ :where([s-prose]) :where(h3) {
1402
+ font-size: var(--s-text-2xl);
1403
+ }
1404
+
1405
+ :where([s-prose]) :where(h4) {
1406
+ font-size: var(--s-text-xl);
1407
+ }
1408
+
1409
+ :where([s-prose]) :where(h5) {
1410
+ font-size: var(--s-text-lg);
1411
+ }
1412
+
1413
+ :where([s-prose]) :where(h6) {
1414
+ font-size: var(--s-text-base);
1415
+ color: var(--s-text-secondary);
1416
+ }
1417
+
1418
+ :where([s-prose]) :where(p) {
1419
+ margin-bottom: 1.25em;
1420
+ }
1421
+
1422
+ :where([s-prose]) :where(strong, b) {
1423
+ font-weight: var(--s-font-semibold);
1424
+ color: var(--s-text-primary);
1425
+ }
1426
+
1427
+ :where([s-prose]) :where(em, i) {
1428
+ font-style: italic;
1429
+ }
1430
+
1431
+ :where([s-prose]) :where(small) {
1432
+ font-size: var(--s-text-sm);
1433
+ }
1434
+
1435
+ :where([s-prose]) :where(a) {
1436
+ color: var(--_prose-link-color);
1437
+ text-underline-offset: 2px;
1438
+ transition: color var(--s-duration-150) var(--s-ease-out);
1439
+ text-decoration: underline 1px;
1440
+
1441
+ &:hover {
1442
+ color: var(--_prose-link-hover);
1443
+ }
1444
+ }
1445
+
1446
+ :where([s-prose]) :where(ul, ol) {
1447
+ margin-bottom: 1.25em;
1448
+ padding-left: 1.5em;
1449
+ }
1450
+
1451
+ :where([s-prose]) :where(ul) {
1452
+ list-style-type: disc;
1453
+ }
1454
+
1455
+ :where([s-prose]) :where(ol) {
1456
+ list-style-type: decimal;
1457
+ }
1458
+
1459
+ :where([s-prose]) :where(li) {
1460
+ margin-bottom: .5em;
1461
+
1462
+ &::marker {
1463
+ color: var(--s-text-tertiary);
1464
+ }
1465
+ }
1466
+
1467
+ :where([s-prose]) :where(li > ul, li > ol) {
1468
+ margin-top: .5em;
1469
+ margin-bottom: 0;
1470
+ }
1471
+
1472
+ :where([s-prose]) :where(dl) {
1473
+ margin-bottom: 1.25em;
1474
+ }
1475
+
1476
+ :where([s-prose]) :where(dt) {
1477
+ font-weight: var(--s-font-semibold);
1478
+ margin-top: 1em;
1479
+ }
1480
+
1481
+ :where([s-prose]) :where(dd) {
1482
+ margin-bottom: .5em;
1483
+ margin-left: 1.5em;
1484
+ }
1485
+
1486
+ :where([s-prose]) :where(blockquote) {
1487
+ border-left: 4px solid var(--_prose-quote-border);
1488
+ background-color: var(--s-surface-sunken);
1489
+ border-radius: 0 var(--s-radius-md) var(--s-radius-md) 0;
1490
+ color: var(--s-text-secondary);
1491
+ margin: 1.5em 0;
1492
+ padding: .5em 1em;
1493
+ font-style: italic;
1494
+
1495
+ & p:last-child {
1496
+ margin-bottom: 0;
1497
+ }
1498
+ }
1499
+
1500
+ :where([s-prose]) :where(code) {
1501
+ font-family: var(--s-font-mono);
1502
+ background-color: var(--_prose-code-bg);
1503
+ color: var(--_prose-code-color);
1504
+ border-radius: var(--s-radius-sm);
1505
+ padding: .125em .375em;
1506
+ font-size: .875em;
1507
+ }
1508
+
1509
+ :where([s-prose]) :where(pre) {
1510
+ background-color: var(--_prose-pre-bg);
1511
+ color: var(--_prose-pre-color);
1512
+ border-radius: var(--s-radius-lg);
1513
+ font-size: var(--s-text-sm);
1514
+ line-height: var(--s-leading-normal);
1515
+ margin: 1.5em 0;
1516
+ padding: 1em;
1517
+ overflow-x: auto;
1518
+
1519
+ & code {
1520
+ color: inherit;
1521
+ font-size: inherit;
1522
+ background: none;
1523
+ border-radius: 0;
1524
+ padding: 0;
1525
+ }
1526
+ }
1527
+
1528
+ :where([s-prose]) :where(kbd) {
1529
+ font-family: var(--s-font-mono);
1530
+ background-color: var(--s-neutral-200);
1531
+ color: var(--s-text-primary);
1532
+ border-radius: var(--s-radius-sm);
1533
+ border: 1px solid var(--s-neutral-300);
1534
+ box-shadow: 0 1px 0 var(--s-neutral-400);
1535
+ padding: .125em .375em;
1536
+ font-size: .875em;
1537
+ }
1538
+
1539
+ :where([s-prose]) :where(hr) {
1540
+ border: none;
1541
+ border-top: 1px solid var(--_prose-border-color);
1542
+ margin: 2em 0;
1543
+ }
1544
+
1545
+ :where([s-prose]) :where(img) {
1546
+ border-radius: var(--s-radius-lg);
1547
+ max-width: 100%;
1548
+ height: auto;
1549
+ }
1550
+
1551
+ :where([s-prose]) :where(figure) {
1552
+ margin: 1.5em 0;
1553
+ }
1554
+
1555
+ :where([s-prose]) :where(figcaption) {
1556
+ font-size: var(--s-text-sm);
1557
+ color: var(--s-text-secondary);
1558
+ text-align: center;
1559
+ margin-top: .75em;
1560
+ }
1561
+
1562
+ :where([s-prose]) :where(table) {
1563
+ border-collapse: collapse;
1564
+ width: 100%;
1565
+ font-size: var(--s-text-sm);
1566
+ margin: 1.5em 0;
1567
+ }
1568
+
1569
+ :where([s-prose]) :where(thead) {
1570
+ border-bottom: 2px solid var(--_prose-border-color);
1571
+ }
1572
+
1573
+ :where([s-prose]) :where(th) {
1574
+ font-weight: var(--s-font-semibold);
1575
+ text-align: left;
1576
+ background-color: var(--s-surface-sunken);
1577
+ padding: .75em 1em;
1578
+ }
1579
+
1580
+ :where([s-prose]) :where(td) {
1581
+ border-bottom: 1px solid var(--_prose-border-color);
1582
+ padding: .75em 1em;
1583
+ }
1584
+
1585
+ :where([s-prose]) :where(tbody tr:hover) {
1586
+ background-color: var(--s-surface-sunken);
1587
+ }
1588
+
1589
+ [s-prose][s-size="sm"] {
1590
+ --_prose-body: var(--s-text-sm);
1591
+ }
1592
+
1593
+ [s-prose][s-size="lg"] {
1594
+ --_prose-body: var(--s-text-lg);
1595
+ }
1596
+
1597
+ @media (prefers-color-scheme: dark) {
1598
+ :where([s-prose]) {
1599
+ --_prose-link-color: var(--s-primary-400);
1600
+ --_prose-link-hover: var(--s-primary-300);
1601
+ --_prose-code-bg: var(--s-neutral-800);
1602
+ --_prose-code-color: var(--s-danger-400);
1603
+ --_prose-pre-bg: var(--s-neutral-950);
1604
+ --_prose-pre-color: var(--s-neutral-200);
1605
+ }
1606
+
1607
+ :where([s-prose]) :where(kbd) {
1608
+ background-color: var(--s-neutral-700);
1609
+ border-color: var(--s-neutral-600);
1610
+ box-shadow: 0 1px 0 var(--s-neutral-500);
1611
+ }
1612
+ }
1613
+
1614
+ :root[style*="color-scheme: dark"] :where([s-prose]), :root[style*="color-scheme:dark"] :where([s-prose]) {
1615
+ --_prose-link-color: var(--s-primary-400);
1616
+ --_prose-link-hover: var(--s-primary-300);
1617
+ --_prose-code-bg: var(--s-neutral-800);
1618
+ --_prose-code-color: var(--s-danger-400);
1619
+ --_prose-pre-bg: var(--s-neutral-950);
1620
+ --_prose-pre-color: var(--s-neutral-200);
1621
+ }
1622
+
1623
+ :where([s-skip-link]) {
1624
+ --_skip-bg: var(--s-primary-600);
1625
+ --_skip-color: white;
1626
+ --_skip-radius: var(--s-radius-md);
1627
+ --_skip-shadow: var(--s-shadow-lg);
1628
+ --_skip-z: 9999;
1629
+ z-index: var(--_skip-z);
1630
+ align-items: center;
1631
+ gap: var(--s-space-2);
1632
+ padding: var(--s-space-3) var(--s-space-6);
1633
+ background-color: var(--_skip-bg);
1634
+ color: var(--_skip-color);
1635
+ font-size: var(--s-text-sm);
1636
+ font-weight: var(--s-font-semibold);
1637
+ border-radius: var(--_skip-radius);
1638
+ box-shadow: var(--_skip-shadow);
1639
+ white-space: nowrap;
1640
+ transition: top var(--s-duration-200) var(--s-ease-out), opacity var(--s-duration-200) var(--s-ease-out);
1641
+ opacity: 0;
1642
+ text-decoration: none;
1643
+ display: inline-flex;
1644
+ position: fixed;
1645
+ top: -100%;
1646
+ left: 50%;
1647
+ transform: translateX(-50%);
1648
+ }
1649
+
1650
+ [s-skip-link]:focus, [s-skip-link]:focus-visible {
1651
+ top: var(--s-space-4);
1652
+ opacity: 1;
1653
+ box-shadow: var(--_skip-shadow), 0 0 0 3px white, 0 0 0 5px var(--_skip-bg);
1654
+ outline: none;
1655
+ }
1656
+
1657
+ [s-skip-link-group] {
1658
+ z-index: 9999;
1659
+ align-items: center;
1660
+ gap: var(--s-space-2);
1661
+ padding: var(--s-space-2);
1662
+ flex-direction: column;
1663
+ display: flex;
1664
+ position: fixed;
1665
+ top: 0;
1666
+ left: 50%;
1667
+ transform: translateX(-50%);
1668
+ }
1669
+
1670
+ [s-skip-link-group] [s-skip-link] {
1671
+ position: relative;
1672
+ top: -200%;
1673
+ left: 0;
1674
+ transform: none;
1675
+ }
1676
+
1677
+ [s-skip-link-group] [s-skip-link]:focus, [s-skip-link-group] [s-skip-link]:focus-visible {
1678
+ top: 0;
1679
+ }
1680
+
1681
+ [s-skip-link="secondary"] {
1682
+ --_skip-bg: var(--s-neutral-800);
1683
+ }
1684
+
1685
+ [s-skip-link="contrast"] {
1686
+ --_skip-bg: var(--s-neutral-950);
1687
+ --_skip-color: var(--s-neutral-50);
1688
+ }
1689
+
1690
+ @media (prefers-reduced-motion: reduce) {
1691
+ [s-skip-link] {
1692
+ transition: none;
1693
+ }
1694
+ }
1695
+
1696
+ @media (prefers-color-scheme: dark) {
1697
+ :where([s-skip-link]:not([s-skip-link="secondary"]):not([s-skip-link="contrast"])) {
1698
+ --_skip-bg: var(--s-primary-500);
1699
+ }
1700
+
1701
+ [s-skip-link]:focus, [s-skip-link]:focus-visible {
1702
+ box-shadow: var(--_skip-shadow), 0 0 0 3px var(--s-neutral-900), 0 0 0 5px var(--_skip-bg);
1703
+ }
1704
+ }
1705
+
1706
+ :root[style*="color-scheme: dark"] :where([s-skip-link]:not([s-skip-link="secondary"]):not([s-skip-link="contrast"])), :root[style*="color-scheme:dark"] :where([s-skip-link]:not([s-skip-link="secondary"]):not([s-skip-link="contrast"])) {
1707
+ --_skip-bg: var(--s-primary-500);
1708
+ }
1709
+
1710
+ :where([s-badge]) {
1711
+ --_badge-bg: var(--s-neutral-200);
1712
+ --_badge-text: var(--s-text-primary);
1713
+ justify-content: center;
1714
+ align-items: center;
1715
+ gap: var(--s-space-1);
1716
+ padding: var(--s-space-1) var(--s-space-2);
1717
+ border-radius: var(--s-radius-sm);
1718
+ font-weight: var(--s-font-medium);
1719
+ font-size: var(--s-text-xs);
1720
+ white-space: nowrap;
1721
+ vertical-align: middle;
1722
+ background-color: var(--_badge-bg);
1723
+ color: var(--_badge-text);
1724
+ line-height: 1.25;
1725
+ display: inline-flex;
1726
+
1727
+ @supports (color: oklch(from red l c h)) {
1728
+ color: oklch(from var(--_badge-bg) clamp(.15, calc((.55 - l) * 1000 + .15), .95) 0 0);
1729
+ }
1730
+
1731
+ @supports (color: contrast-color(red)) {
1732
+ color: contrast-color(var(--_badge-bg));
1733
+ }
1734
+ }
1735
+
1736
+ [s-badge="primary"] {
1737
+ --_badge-bg: var(--s-primary-700);
1738
+ background-color: var(--s-primary-700);
1739
+ color: #fff;
1740
+ }
1741
+
1742
+ [s-badge="secondary"] {
1743
+ --_badge-bg: var(--s-neutral-700);
1744
+ background-color: var(--s-neutral-700);
1745
+ color: #fff;
1746
+ }
1747
+
1748
+ [s-badge="success"] {
1749
+ --_badge-bg: var(--s-success-700);
1750
+ background-color: var(--s-success-700);
1751
+ color: #fff;
1752
+ }
1753
+
1754
+ [s-badge="warning"] {
1755
+ --_badge-bg: var(--s-warning-400);
1756
+ background-color: var(--s-warning-400);
1757
+ color: var(--s-warning-950);
1758
+ }
1759
+
1760
+ [s-badge="danger"] {
1761
+ --_badge-bg: var(--s-danger-700);
1762
+ background-color: var(--s-danger-700);
1763
+ color: #fff;
1764
+ }
1765
+
1766
+ [s-badge="accent"] {
1767
+ --_badge-bg: var(--s-accent-700);
1768
+ background-color: var(--s-accent-700);
1769
+ color: #fff;
1770
+ }
1771
+
1772
+ [s-badge="outline"] {
1773
+ --_badge-bg: transparent;
1774
+ color: var(--s-text-primary);
1775
+ box-shadow: inset 0 0 0 1px var(--s-border-default);
1776
+ background-color: #0000;
1777
+ }
1778
+
1779
+ [s-badge="outline-primary"] {
1780
+ --_badge-bg: transparent;
1781
+ background-color: oklch(from var(--s-primary-500) l c h / .1);
1782
+ color: light-dark(var(--s-primary-700), var(--s-primary-300));
1783
+ box-shadow: inset 0 0 0 1px light-dark(var(--s-primary-500), var(--s-primary-400));
1784
+ }
1785
+
1786
+ [s-badge="outline-success"] {
1787
+ --_badge-bg: transparent;
1788
+ background-color: oklch(from var(--s-success-500) l c h / .1);
1789
+ color: light-dark(var(--s-success-700), var(--s-success-300));
1790
+ box-shadow: inset 0 0 0 1px light-dark(var(--s-success-500), var(--s-success-400));
1791
+ }
1792
+
1793
+ [s-badge="outline-warning"] {
1794
+ --_badge-bg: transparent;
1795
+ background-color: oklch(from var(--s-warning-500) l c h / .1);
1796
+ color: light-dark(var(--s-warning-800), var(--s-warning-300));
1797
+ box-shadow: inset 0 0 0 1px light-dark(var(--s-warning-500), var(--s-warning-400));
1798
+ }
1799
+
1800
+ [s-badge="outline-danger"] {
1801
+ --_badge-bg: transparent;
1802
+ background-color: oklch(from var(--s-danger-500) l c h / .1);
1803
+ color: light-dark(var(--s-danger-800), var(--s-danger-300));
1804
+ box-shadow: inset 0 0 0 1px light-dark(var(--s-danger-500), var(--s-danger-400));
1805
+ }
1806
+
1807
+ [s-badge][s-size="sm"] {
1808
+ padding: .125rem .375rem;
1809
+ font-size: .625rem;
1810
+ }
1811
+
1812
+ [s-badge][s-size="lg"] {
1813
+ padding: var(--s-space-2) var(--s-space-4);
1814
+ font-size: var(--s-text-sm);
1815
+ }
1816
+
1817
+ [s-badge][s-pill] {
1818
+ border-radius: var(--s-radius-full);
1819
+ }
1820
+
1821
+ [s-badge][s-dot] {
1822
+ border-radius: var(--s-radius-full);
1823
+ width: .5rem;
1824
+ height: .5rem;
1825
+ padding: 0;
1826
+ }
1827
+
1828
+ [s-badge][s-dot][s-size="sm"] {
1829
+ width: .375rem;
1830
+ height: .375rem;
1831
+ }
1832
+
1833
+ [s-badge][s-dot][s-size="lg"] {
1834
+ width: .75rem;
1835
+ height: .75rem;
1836
+ }
1837
+
1838
+ @media (forced-colors: active) {
1839
+ [s-badge] {
1840
+ border: 1px solid canvastext;
1841
+ }
1842
+ }
1843
+
1844
+ @supports (container-type: inline-size) {
1845
+ @container surface style(--_surface-depth: 1) {
1846
+ :where([s-badge=""]) {
1847
+ --_badge-bg: var(--s-neutral-300);
1848
+ }
1849
+
1850
+ :where([s-badge="outline"]) {
1851
+ box-shadow: inset 0 0 0 1px var(--s-border-strong);
1852
+ }
1853
+ }
1854
+
1855
+ @container surface style(--_surface-depth: 2) {
1856
+ :where([s-badge=""]) {
1857
+ --_badge-bg: var(--s-neutral-300);
1858
+ box-shadow: var(--s-shadow-sm);
1859
+ }
1860
+
1861
+ :where([s-badge="outline"]) {
1862
+ box-shadow: inset 0 0 0 1px var(--s-border-strong);
1863
+ }
1864
+ }
1865
+
1866
+ @container surface style(--_surface-depth: -1) {
1867
+ :where([s-badge=""]) {
1868
+ --_badge-bg: var(--s-neutral-100);
1869
+ }
1870
+ }
1871
+ }
1872
+
1873
+ :where([s-tooltip]) {
1874
+ --_tooltip-bg: var(--s-surface-overlay);
1875
+ --_tooltip-text: var(--s-text-inverse);
1876
+ --_tooltip-radius: var(--s-radius-md);
1877
+ --_tooltip-padding-x: var(--s-space-3);
1878
+ --_tooltip-padding-y: var(--s-space-1_5);
1879
+ --_tooltip-offset: var(--s-space-2);
1880
+ --_tooltip-max-width: 200px;
1881
+ --_tooltip-arrow-size: 6px;
1882
+ position: relative;
1883
+ }
1884
+
1885
+ :where([s-tooltip]):after {
1886
+ content: attr(s-tooltip);
1887
+ visibility: hidden;
1888
+ opacity: 0;
1889
+ z-index: 9999;
1890
+ margin-bottom: var(--_tooltip-offset);
1891
+ background-color: var(--_tooltip-bg);
1892
+ color: var(--_tooltip-text);
1893
+ padding: var(--_tooltip-padding-y) var(--_tooltip-padding-x);
1894
+ border-radius: var(--_tooltip-radius);
1895
+ box-shadow: var(--s-shadow-md);
1896
+ position: absolute;
1897
+ bottom: 100%;
1898
+ left: 50%;
1899
+ transform: translateX(-50%)translateY(4px);
1900
+
1901
+ @supports (color: oklch(from red l c h)) {
1902
+ border: 1px solid oklch(from var(--_tooltip-bg) max(calc(l - .1), .05) c h);
1903
+ }
1904
+
1905
+ font-size: var(--s-text-xs);
1906
+ font-weight: var(--s-font-medium);
1907
+ line-height: var(--s-leading-tight);
1908
+ text-align: center;
1909
+ text-wrap: balance;
1910
+ min-width: min(100%, var(--_tooltip-max-width));
1911
+ max-width: var(--_tooltip-max-width);
1912
+ pointer-events: none;
1913
+ transition: opacity var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out);
1914
+ }
1915
+
1916
+ :where([s-tooltip]):before {
1917
+ content: "";
1918
+ visibility: hidden;
1919
+ opacity: 0;
1920
+ z-index: 9999;
1921
+ margin-bottom: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
1922
+ border-left: var(--_tooltip-arrow-size) solid transparent;
1923
+ border-right: var(--_tooltip-arrow-size) solid transparent;
1924
+ border-top: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
1925
+ pointer-events: none;
1926
+ transition: opacity var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out);
1927
+ position: absolute;
1928
+ bottom: 100%;
1929
+ left: 50%;
1930
+ transform: translateX(-50%)translateY(4px);
1931
+ }
1932
+
1933
+ [s-tooltip]:hover:after, [s-tooltip]:hover:before, [s-tooltip]:focus-visible:after, [s-tooltip]:focus-visible:before {
1934
+ visibility: visible;
1935
+ opacity: 1;
1936
+ transform: translateX(-50%)translateY(0);
1937
+ }
1938
+
1939
+ [s-tooltip-pos="bottom"]:after {
1940
+ margin-bottom: 0;
1941
+ margin-top: var(--_tooltip-offset);
1942
+ top: 100%;
1943
+ bottom: auto;
1944
+ transform: translateX(-50%)translateY(-4px);
1945
+ }
1946
+
1947
+ [s-tooltip-pos="bottom"]:before {
1948
+ margin-bottom: 0;
1949
+ margin-top: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
1950
+ border-top: none;
1951
+ border-bottom: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
1952
+ top: 100%;
1953
+ bottom: auto;
1954
+ transform: translateX(-50%)translateY(-4px);
1955
+ }
1956
+
1957
+ [s-tooltip-pos="bottom"]:hover:after, [s-tooltip-pos="bottom"]:hover:before, [s-tooltip-pos="bottom"]:focus-visible:after, [s-tooltip-pos="bottom"]:focus-visible:before {
1958
+ transform: translateX(-50%)translateY(0);
1959
+ }
1960
+
1961
+ [s-tooltip-pos="left"]:after {
1962
+ margin-bottom: 0;
1963
+ margin-right: var(--_tooltip-offset);
1964
+ inset: 50% 100% auto auto;
1965
+ transform: translateY(-50%)translateX(4px);
1966
+ }
1967
+
1968
+ [s-tooltip-pos="left"]:before {
1969
+ margin-bottom: 0;
1970
+ margin-right: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
1971
+ border-top: var(--_tooltip-arrow-size) solid transparent;
1972
+ border-bottom: var(--_tooltip-arrow-size) solid transparent;
1973
+ border-left: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
1974
+ border-right: none;
1975
+ inset: 50% 100% auto auto;
1976
+ transform: translateY(-50%)translateX(4px);
1977
+ }
1978
+
1979
+ [s-tooltip-pos="left"]:hover:after, [s-tooltip-pos="left"]:hover:before, [s-tooltip-pos="left"]:focus-visible:after, [s-tooltip-pos="left"]:focus-visible:before {
1980
+ transform: translateY(-50%)translateX(0);
1981
+ }
1982
+
1983
+ [s-tooltip-pos="right"]:after {
1984
+ margin-bottom: 0;
1985
+ margin-left: var(--_tooltip-offset);
1986
+ top: 50%;
1987
+ bottom: auto;
1988
+ left: 100%;
1989
+ transform: translateY(-50%)translateX(-4px);
1990
+ }
1991
+
1992
+ [s-tooltip-pos="right"]:before {
1993
+ margin-bottom: 0;
1994
+ margin-left: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
1995
+ border-top: var(--_tooltip-arrow-size) solid transparent;
1996
+ border-bottom: var(--_tooltip-arrow-size) solid transparent;
1997
+ border-right: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
1998
+ border-left: none;
1999
+ top: 50%;
2000
+ bottom: auto;
2001
+ left: 100%;
2002
+ transform: translateY(-50%)translateX(-4px);
2003
+ }
2004
+
2005
+ [s-tooltip-pos="right"]:hover:after, [s-tooltip-pos="right"]:hover:before, [s-tooltip-pos="right"]:focus-visible:after, [s-tooltip-pos="right"]:focus-visible:before {
2006
+ transform: translateY(-50%)translateX(0);
2007
+ }
2008
+
2009
+ @media (prefers-reduced-motion: reduce) {
2010
+ [s-tooltip]:after, [s-tooltip]:before {
2011
+ transition: none;
2012
+ }
2013
+ }
2014
+
2015
+ @media (forced-colors: active) {
2016
+ [s-tooltip]:after {
2017
+ color: canvastext;
2018
+ background-color: canvas;
2019
+ border: 1px solid canvastext;
2020
+ }
2021
+
2022
+ [s-tooltip]:before {
2023
+ display: none;
2024
+ }
2025
+ }
2026
+
2027
+ :where([s-menu]) {
2028
+ --_menu-bg: var(--s-surface-raised);
2029
+ --_menu-border: var(--s-border-muted);
2030
+ --_menu-radius: var(--s-radius-lg);
2031
+ --_menu-shadow: var(--s-shadow-lg);
2032
+ --_menu-min-width: 10rem;
2033
+ --_menu-padding: var(--s-space-1);
2034
+ --_menu-offset: var(--s-space-1);
2035
+ }
2036
+
2037
+ [s-menu] {
2038
+ anchor-scope: --menu-trigger;
2039
+ display: inline-block;
2040
+ position: relative;
2041
+ }
2042
+
2043
+ [s-menu]::marker {
2044
+ display: none;
2045
+ }
2046
+
2047
+ [s-menu] ::-webkit-details-marker {
2048
+ display: none;
2049
+ }
2050
+
2051
+ [s-menu-trigger] {
2052
+ cursor: pointer;
2053
+ anchor-name: --menu-trigger;
2054
+ list-style: none;
2055
+ }
2056
+
2057
+ [s-menu-trigger]::-webkit-details-marker {
2058
+ display: none;
2059
+ }
2060
+
2061
+ [s-menu-items] {
2062
+ z-index: 9999;
2063
+ margin-top: var(--_menu-offset);
2064
+ background-color: var(--_menu-bg);
2065
+ border: 1px solid var(--_menu-border);
2066
+ border-radius: var(--_menu-radius);
2067
+ box-shadow: var(--_menu-shadow);
2068
+ min-width: var(--_menu-min-width);
2069
+ padding: var(--_menu-padding);
2070
+ font-size: var(--s-text-sm);
2071
+ color: var(--s-text-primary);
2072
+ opacity: 0;
2073
+ visibility: hidden;
2074
+ transition: opacity var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150);
2075
+ flex-direction: column;
2076
+ display: flex;
2077
+ position: absolute;
2078
+ top: 100%;
2079
+ left: 0;
2080
+ transform: scale(.95)translateY(-4px);
2081
+ }
2082
+
2083
+ [s-menu][open] > [s-menu-items] {
2084
+ opacity: 1;
2085
+ visibility: visible;
2086
+ transform: scale(1)translateY(0);
2087
+ }
2088
+
2089
+ [s-menu="end"] > [s-menu-items] {
2090
+ left: auto;
2091
+ right: 0;
2092
+ }
2093
+
2094
+ [s-menu="top"] > [s-menu-items] {
2095
+ margin-top: 0;
2096
+ margin-bottom: var(--_menu-offset);
2097
+ top: auto;
2098
+ bottom: 100%;
2099
+ transform: scale(.95)translateY(4px);
2100
+ }
2101
+
2102
+ [s-menu="top"][open] > [s-menu-items] {
2103
+ transform: scale(1)translateY(0);
2104
+ }
2105
+
2106
+ [s-menu="top-end"] > [s-menu-items] {
2107
+ margin-top: 0;
2108
+ margin-bottom: var(--_menu-offset);
2109
+ inset: auto 0 100% auto;
2110
+ transform: scale(.95)translateY(4px);
2111
+ }
2112
+
2113
+ [s-menu="top-end"][open] > [s-menu-items] {
2114
+ transform: scale(1)translateY(0);
2115
+ }
2116
+
2117
+ @supports (anchor-scope: all) {
2118
+ [s-menu-items] {
2119
+ position-anchor: --menu-trigger;
2120
+ inset: auto;
2121
+ margin: 0;
2122
+ position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
2123
+ margin-block-start: var(--_menu-offset);
2124
+ position: absolute;
2125
+ inset-block-start: anchor(end);
2126
+ inset-inline-start: anchor(start);
2127
+ }
2128
+
2129
+ [s-menu="end"] > [s-menu-items] {
2130
+ inset-inline-start: auto;
2131
+ inset-inline-end: anchor(end);
2132
+ }
2133
+
2134
+ [s-menu="top"] > [s-menu-items] {
2135
+ margin-block-start: 0;
2136
+ margin-block-end: var(--_menu-offset);
2137
+ inset-block-start: auto;
2138
+ inset-block-end: anchor(start);
2139
+ }
2140
+
2141
+ [s-menu="top-end"] > [s-menu-items] {
2142
+ margin-block-start: 0;
2143
+ margin-block-end: var(--_menu-offset);
2144
+ inset-block-start: auto;
2145
+ inset-block-end: anchor(start);
2146
+ inset-inline-start: auto;
2147
+ inset-inline-end: anchor(end);
2148
+ }
2149
+ }
2150
+
2151
+ [s-menu-item] {
2152
+ align-items: center;
2153
+ gap: var(--s-space-2);
2154
+ width: 100%;
2155
+ padding: var(--s-space-2) var(--s-space-3);
2156
+ border-radius: var(--s-radius-md);
2157
+ color: var(--s-text-primary);
2158
+ font-size: inherit;
2159
+ text-align: start;
2160
+ cursor: pointer;
2161
+ transition: background-color var(--s-duration-100) var(--s-ease-out);
2162
+ background: none;
2163
+ border: none;
2164
+ display: flex;
2165
+ }
2166
+
2167
+ [s-menu-item]:hover {
2168
+ background-color: var(--s-surface-sunken);
2169
+ }
2170
+
2171
+ [s-menu-item]:focus-visible {
2172
+ outline: 2px solid var(--s-focus-ring);
2173
+ outline-offset: -2px;
2174
+ }
2175
+
2176
+ [s-menu-item]:disabled {
2177
+ opacity: .5;
2178
+ cursor: not-allowed;
2179
+ }
2180
+
2181
+ [s-menu-item][s-danger] {
2182
+ color: var(--s-state-danger);
2183
+ }
2184
+
2185
+ [s-menu-item][s-danger]:hover {
2186
+ background-color: var(--s-state-danger-bg);
2187
+ }
2188
+
2189
+ [s-menu-divider] {
2190
+ height: 1px;
2191
+ margin: var(--s-space-1) 0;
2192
+ background-color: var(--s-border-muted);
2193
+ border: none;
2194
+ }
2195
+
2196
+ [s-menu-label] {
2197
+ padding: var(--s-space-2) var(--s-space-3);
2198
+ font-size: var(--s-text-xs);
2199
+ font-weight: var(--s-font-semibold);
2200
+ color: var(--s-text-secondary);
2201
+ text-transform: uppercase;
2202
+ letter-spacing: var(--s-tracking-wide);
2203
+ display: block;
2204
+ }
2205
+
2206
+ @media (prefers-reduced-motion: reduce) {
2207
+ [s-menu-items] {
2208
+ transition: none;
2209
+ }
2210
+ }
2211
+
2212
+ @media (forced-colors: active) {
2213
+ [s-menu-items] {
2214
+ border: 2px solid canvastext;
2215
+ }
2216
+
2217
+ [s-menu-item]:hover {
2218
+ color: highlighttext;
2219
+ background-color: highlight;
2220
+ }
2221
+ }
1066
2222
  }
1067
2223
 
1068
2224
  @layer shift.utils {
@@ -1433,7 +2589,7 @@
1433
2589
  overflow: hidden;
1434
2590
  }
1435
2591
 
1436
- [s-sr-only="focusable"]:focus, [s-sr-only="focusable"]:focus-within {
2592
+ [s-sr-only="focusable"]:focus, [s-sr-only="focusable"]:focus-within, [s-not-sr-only], [s-focus\:not-sr-only]:focus, [s-focus\:not-sr-only]:focus-visible, [s-focus-within\:not-sr-only]:focus-within {
1437
2593
  clip: auto;
1438
2594
  white-space: normal;
1439
2595
  width: auto;