@stackoverflow/stacks 1.9.5 → 1.10.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 (38) hide show
  1. package/README.md +4 -3
  2. package/dist/css/stacks.css +81 -102
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +33 -69
  5. package/lib/atomic/border.less +3 -3
  6. package/lib/atomic/misc.less +4 -4
  7. package/lib/atomic/typography.less +1 -1
  8. package/lib/base/body.less +1 -1
  9. package/lib/base/reset-normalize.less +3 -3
  10. package/lib/components/anchor/anchor.a11y.test.ts +42 -0
  11. package/lib/components/anchor/anchor.less +5 -2
  12. package/lib/components/anchor/anchor.visual.test.ts +53 -0
  13. package/lib/components/avatar/avatar.less +1 -1
  14. package/lib/components/banner/banner.less +10 -17
  15. package/lib/components/block-link/block-link.a11y.test.ts +7 -6
  16. package/lib/components/block-link/block-link.less +1 -1
  17. package/lib/components/block-link/block-link.visual.test.ts +7 -6
  18. package/lib/components/button/button.less +31 -46
  19. package/lib/components/card/card.visual.test.ts +7 -6
  20. package/lib/components/input-fill/input-fill.less +2 -2
  21. package/lib/components/input-icon/input-icon.less +1 -1
  22. package/lib/components/input_textarea/input_textarea.less +2 -2
  23. package/lib/components/link/link.a11y.test.ts +36 -0
  24. package/lib/components/link/link.less +1 -0
  25. package/lib/components/link/link.visual.test.ts +32 -0
  26. package/lib/components/navigation/navigation.less +1 -1
  27. package/lib/components/notice/notice.less +1 -1
  28. package/lib/components/page-title/page-title.less +1 -1
  29. package/lib/components/select/select.less +2 -2
  30. package/lib/components/sidebar-widget/sidebar-widget.less +3 -3
  31. package/lib/components/spinner/spinner.less +1 -1
  32. package/lib/components/table/table.less +3 -3
  33. package/lib/components/toast/toast.test.ts +24 -23
  34. package/lib/components/topbar/topbar.less +6 -6
  35. package/lib/exports/constants-colors.less +1 -1
  36. package/lib/exports/constants-helpers.less +3 -3
  37. package/lib/exports/constants-type.less +5 -3
  38. package/package.json +28 -28
package/README.md CHANGED
@@ -89,9 +89,10 @@ npm run test:unit:watch
89
89
 
90
90
  ### Visual Regression Tests
91
91
 
92
- **Prerequisite:**
93
- In order to pull and upload baseline images you need to have `git lfs` installed in your local machine. Please follow [this guide](https://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage) to install that.
94
-
92
+ **Prerequisites:**
93
+ - `git lfs` ([installation docs](https://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage))
94
+ - `docker` ([installation docs](https://docs.docker.com/engine/install/))
95
+ - `pwsh` ([Installation docs](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.3))
95
96
 
96
97
  This [Web Test Runner plugin](https://www.npmjs.com/package/@web/test-runner-visual-regression) is used to run visual regression tests. [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro).
97
98
  Visual regression tests end with this suffix `*.visual.test.ts`.
@@ -58,7 +58,7 @@ main {
58
58
  * Add the correct margin in IE 8.
59
59
  */
60
60
  figure {
61
- margin: 1em 40px;
61
+ margin: 1em calc(var(--su-static32) + var(--su-static8));
62
62
  }
63
63
  /**
64
64
  * 1. Add the correct box sizing in Firefox.
@@ -264,7 +264,7 @@ button:-moz-focusring,
264
264
  [type="button"]:-moz-focusring,
265
265
  [type="reset"]:-moz-focusring,
266
266
  [type="submit"]:-moz-focusring {
267
- outline: 1px dotted ButtonText;
267
+ outline: var(--su-static1) dotted ButtonText;
268
268
  }
269
269
  /**
270
270
  * Correct the padding in Firefox.
@@ -333,8 +333,7 @@ textarea {
333
333
  [type="search"] {
334
334
  -webkit-appearance: textfield;
335
335
  /* 1 */
336
- outline-offset: -2px;
337
- /* 2 */
336
+ outline-offset: calc(var(--su-static2) * -1);
338
337
  }
339
338
  /**
340
339
  * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
@@ -443,6 +442,9 @@ body.theme-highcontrast .s-activity-indicator {
443
442
  --_ai-bg: var(--yellow-600);
444
443
  --_ai-focus-ring: var(--focus-ring-warning);
445
444
  }
445
+ .s-anchors {
446
+ --_an-a-fc-visited: var(--_an-a-fc);
447
+ }
446
448
  .s-anchors.s-anchors__underlined a:not(.s-link),
447
449
  .s-anchors.s-anchors__underlined .s-btn.s-btn__link {
448
450
  text-decoration: underline;
@@ -454,6 +456,7 @@ body.theme-highcontrast .s-activity-indicator {
454
456
  .s-anchors.s-anchors__default {
455
457
  --_an-a-fc: var(--theme-link-color);
456
458
  --_an-a-fc-hover: var(--theme-link-color-hover);
459
+ --_an-a-fc-visited: var(--theme-link-color-visited);
457
460
  }
458
461
  .s-anchors.s-anchors__grayscale {
459
462
  --_an-a-fc: var(--black-700);
@@ -467,6 +470,18 @@ body.theme-highcontrast .s-activity-indicator {
467
470
  --_an-a-fc: var(--black-500);
468
471
  --_an-a-fc-hover: var(--black-400);
469
472
  }
473
+ .s-anchors.s-anchors__danger a:not(.s-link),
474
+ .s-anchors.s-anchors__default a:not(.s-link),
475
+ .s-anchors.s-anchors__grayscale a:not(.s-link),
476
+ .s-anchors.s-anchors__inherit a:not(.s-link),
477
+ .s-anchors.s-anchors__muted a:not(.s-link),
478
+ .s-anchors.s-anchors__danger .s-btn.s-btn__link,
479
+ .s-anchors.s-anchors__default .s-btn.s-btn__link,
480
+ .s-anchors.s-anchors__grayscale .s-btn.s-btn__link,
481
+ .s-anchors.s-anchors__inherit .s-btn.s-btn__link,
482
+ .s-anchors.s-anchors__muted .s-btn.s-btn__link {
483
+ color: var(--_an-a-fc, inherit);
484
+ }
470
485
  .s-anchors.s-anchors__danger a:not(.s-link):hover,
471
486
  .s-anchors.s-anchors__default a:not(.s-link):hover,
472
487
  .s-anchors.s-anchors__grayscale a:not(.s-link):hover,
@@ -509,16 +524,6 @@ body.theme-highcontrast .s-activity-indicator {
509
524
  .s-anchors.s-anchors__muted .s-btn.s-btn__link:active:visited {
510
525
  color: var(--_an-a-fc-hover);
511
526
  }
512
- .s-anchors.s-anchors__danger a:not(.s-link),
513
- .s-anchors.s-anchors__default a:not(.s-link),
514
- .s-anchors.s-anchors__grayscale a:not(.s-link),
515
- .s-anchors.s-anchors__inherit a:not(.s-link),
516
- .s-anchors.s-anchors__muted a:not(.s-link),
517
- .s-anchors.s-anchors__danger .s-btn.s-btn__link,
518
- .s-anchors.s-anchors__default .s-btn.s-btn__link,
519
- .s-anchors.s-anchors__grayscale .s-btn.s-btn__link,
520
- .s-anchors.s-anchors__inherit .s-btn.s-btn__link,
521
- .s-anchors.s-anchors__muted .s-btn.s-btn__link,
522
527
  .s-anchors.s-anchors__danger a:not(.s-link):visited,
523
528
  .s-anchors.s-anchors__default a:not(.s-link):visited,
524
529
  .s-anchors.s-anchors__grayscale a:not(.s-link):visited,
@@ -529,7 +534,7 @@ body.theme-highcontrast .s-activity-indicator {
529
534
  .s-anchors.s-anchors__grayscale .s-btn.s-btn__link:visited,
530
535
  .s-anchors.s-anchors__inherit .s-btn.s-btn__link:visited,
531
536
  .s-anchors.s-anchors__muted .s-btn.s-btn__link:visited {
532
- color: var(--_an-a-fc, inherit);
537
+ color: var(--_an-a-fc-visited, inherit);
533
538
  }
534
539
  .s-avatar {
535
540
  --_av-size: var(--su-static16);
@@ -549,7 +554,7 @@ body.theme-highcontrast .s-activity-indicator {
549
554
  }
550
555
  body.theme-highcontrast .s-avatar {
551
556
  background-color: var(--black);
552
- box-shadow: 0 0 0 1px var(--black);
557
+ box-shadow: 0 0 0 var(--su-static1) var(--black);
553
558
  color: var(--white);
554
559
  }
555
560
  body.theme-highcontrast .s-avatar .s-avatar--letter {
@@ -854,12 +859,12 @@ a.s-badge:hover {
854
859
  color: var(--_no-fc);
855
860
  border-style: solid;
856
861
  font-size: var(--fs-body1);
857
- border-width: var(--su-static1) 0;
862
+ border-width: 0 0 var(--su-static1);
858
863
  inset: 0 0 auto 0;
859
864
  padding: var(--su12);
860
865
  position: fixed;
861
- -webkit-transform: translate3d(0, var(--_no-x-offset), 0);
862
- transform: translate3d(0, var(--_no-x-offset), 0);
866
+ -webkit-transform: translate3d(0, calc(var(--theme-topbar-height) * var(--_no-x-offset)), 0);
867
+ transform: translate3d(0, calc(var(--theme-topbar-height) * var(--_no-x-offset)), 0);
863
868
  width: 100%;
864
869
  z-index: calc(var(--zi-navigation-fixed) - 1);
865
870
  }
@@ -1060,16 +1065,17 @@ body.theme-highcontrast .s-banner__warning.s-banner__important {
1060
1065
  background: var(--_no-btn-bg-focus);
1061
1066
  }
1062
1067
  .s-banner[aria-hidden="true"] {
1063
- --_no-x-offset: calc(var(--su48) + var(--su2) * -1);
1068
+ --_no-x-offset: -1;
1064
1069
  opacity: 0;
1065
1070
  visibility: hidden;
1066
1071
  }
1067
1072
  .s-banner[aria-hidden="false"] {
1068
- --_no-x-offset: calc(var(--su48) + var(--su1));
1073
+ --_no-x-offset: 1;
1069
1074
  opacity: 1;
1070
1075
  visibility: visible;
1071
1076
  }
1072
- .s-banner.is-pinned {
1077
+ .s-banner[aria-hidden="false"].is-pinned {
1078
+ --_no-x-offset: 0;
1073
1079
  z-index: calc(var(--zi-navigation-fixed) + 1);
1074
1080
  }
1075
1081
  .s-banner__body-pt {
@@ -1161,7 +1167,7 @@ a.s-block-linka.s-block-link__right.is-selected,
1161
1167
  a.s-block-link.s-block-link__right.is-selected,
1162
1168
  .s-block-linka.s-block-link__right.is-selected,
1163
1169
  .s-block-link.s-block-link__right.is-selected {
1164
- --_li-block-bs-offset-x: -3px;
1170
+ --_li-block-bs-offset-x: calc(var(--su-static1) - var(--su-static4));
1165
1171
  }
1166
1172
  a.s-block-linka.s-block-link__danger,
1167
1173
  a.s-block-link.s-block-link__danger,
@@ -1231,9 +1237,7 @@ body.theme-highcontrast .s-breadcrumbs .s-breadcrumbs--divider {
1231
1237
  .s-btn {
1232
1238
  --_bu-baw: var(--su-static1);
1233
1239
  --_bu-bc: transparent;
1234
- --_bu-bg: transparent;
1235
- --_bu-br: var(--br-sm);
1236
- --_bu-bs: none;
1240
+ --_bu-br: var(--br-md);
1237
1241
  --_bu-fc: var(--theme-button-color);
1238
1242
  --_bu-focus-ring: 0 0 0 var(--su-static4) var(--focus-ring);
1239
1243
  --_bu-fs: var(--fs-body1);
@@ -1245,14 +1249,13 @@ body.theme-highcontrast .s-breadcrumbs .s-breadcrumbs--divider {
1245
1249
  --_bu-fc-active: var(--theme-button-hover-color);
1246
1250
  --_bu-fc-hover: var(--theme-button-hover-color);
1247
1251
  --_bu-fc-selected: var(--theme-button-selected-color);
1248
- --_bu-filled-bc: var(--theme-button-filled-border-color);
1249
- --_bu-filled-bc-active: var(--theme-button-filled-active-border-color);
1252
+ --_bu-filled-bc: transparent;
1253
+ --_bu-filled-bc-active: transparent;
1250
1254
  --_bu-filled-bg-hover: var(--theme-button-filled-hover-background-color);
1251
- --_bu-filled-bc-selected: var(--theme-button-filled-selected-border-color);
1255
+ --_bu-filled-bc-selected: transparent;
1252
1256
  --_bu-filled-bg: var(--theme-button-filled-background-color);
1253
1257
  --_bu-filled-bg-active: var(--theme-button-filled-active-background-color);
1254
1258
  --_bu-filled-bg-selected: var(--theme-button-filled-selected-background-color);
1255
- --_bu-filled-bs: inset 0 var(--su-static1) 0 0 hsla(0, 0%, 100%, 0.7);
1256
1259
  --_bu-filled-fc: var(--theme-button-filled-color);
1257
1260
  --_bu-filled-fc-active: var(--theme-button-filled-hover-color);
1258
1261
  --_bu-filled-fc-hover: var(--theme-button-filled-hover-color);
@@ -1266,10 +1269,10 @@ body.theme-highcontrast .s-breadcrumbs .s-breadcrumbs--divider {
1266
1269
  --_bu-dropdown-bw: var(--su-static4);
1267
1270
  --_bu-number-fc: var(--white);
1268
1271
  --_bu-number-fc-selected: var(--_bu-number-fc);
1269
- background-color: var(--_bu-bg);
1272
+ background-color: var(--_bu-bg, inherit);
1270
1273
  border: var(--_bu-baw) solid var(--_bu-bc);
1271
1274
  border-radius: var(--_bu-br);
1272
- box-shadow: var(--_bu-bs);
1275
+ box-shadow: none;
1273
1276
  color: var(--_bu-fc);
1274
1277
  font-size: var(--_bu-fs);
1275
1278
  padding: var(--_bu-p);
@@ -1284,18 +1287,6 @@ body.theme-highcontrast .s-breadcrumbs .s-breadcrumbs--divider {
1284
1287
  text-decoration: none;
1285
1288
  user-select: none;
1286
1289
  }
1287
- @media (prefers-color-scheme: dark) {
1288
- body.theme-system .s-btn {
1289
- --_bu-bs: none;
1290
- --_bu-filled-bs: var(--_bu-bs);
1291
- }
1292
- }
1293
- body.theme-dark .s-btn,
1294
- .theme-dark__forced .s-btn,
1295
- body.theme-system .theme-dark__forced .s-btn {
1296
- --_bu-bs: none;
1297
- --_bu-filled-bs: var(--_bu-bs);
1298
- }
1299
1290
  body.theme-highcontrast .s-btn {
1300
1291
  --_bu-bc: currentColor;
1301
1292
  --_bu-filled-bc: var(--_bu-bc);
@@ -1310,8 +1301,6 @@ body.theme-highcontrast .s-btn:not(.s-btn__primary):not(.s-btn__muted):not(.s-bt
1310
1301
  fieldset[disabled] .s-btn,
1311
1302
  .s-btn[disabled],
1312
1303
  .s-btn[aria-disabled="true"] {
1313
- --_bu-bs: none !important;
1314
- --_bu-filled-bs: var(--_bu-bs);
1315
1304
  opacity: var(--_o-disabled-static);
1316
1305
  pointer-events: none;
1317
1306
  text-decoration: none;
@@ -1328,7 +1317,7 @@ button[type="reset"] .s-btn {
1328
1317
  padding-left: 2.2em;
1329
1318
  }
1330
1319
  .s-btn.is-loading .svg-icon:first-child {
1331
- margin-left: -23px;
1320
+ margin-left: calc((var(--su-static24) - var(--su-static1)) * -1);
1332
1321
  opacity: 0;
1333
1322
  }
1334
1323
  .s-btn.is-selected,
@@ -1360,19 +1349,14 @@ body.theme-highcontrast .s-btn-group.s-btn-group--radio .s-btn--radio:checked +
1360
1349
  --_bu-outlined-fc-selected: var(--_bu-filled-fc-selected);
1361
1350
  --_bu-number-fc-selected: var(--_bu-filled-bg-selected);
1362
1351
  }
1363
- .s-btn.is-selected:not(:focus),
1364
- .s-btn-group.s-btn-group--radio .s-btn--radio:checked:not(:focus) + .s-btn {
1365
- box-shadow: none;
1366
- }
1367
1352
  .s-btn.s-btn__filled {
1368
1353
  border-color: var(--_bu-filled-bc);
1369
1354
  background-color: var(--_bu-filled-bg);
1370
- box-shadow: var(--_bu-filled-bs);
1371
1355
  color: var(--_bu-filled-fc);
1372
1356
  }
1373
1357
  .s-btn.s-btn__outlined {
1374
1358
  border-color: var(--_bu-outlined-bc);
1375
- background-color: var(--_bu-outlined-bg);
1359
+ background-color: var(--_bu-outlined-bg, inherit);
1376
1360
  }
1377
1361
  .s-btn.s-btn__link:focus,
1378
1362
  .s-btn.s-btn__unset:focus,
@@ -1383,8 +1367,6 @@ body.theme-highcontrast .s-btn-group.s-btn-group--radio .s-btn--radio:checked +
1383
1367
  .s-btn.s-btn__link {
1384
1368
  --_bu-baw: 0;
1385
1369
  --_bu-br: 0;
1386
- --_bu-bs: none;
1387
- --_bu-filled-bs: var(--_bu-bs);
1388
1370
  --_bu-focus-ring: none;
1389
1371
  --_bu-p: 0;
1390
1372
  --_li-fc: var(--theme-link-color);
@@ -1453,6 +1435,7 @@ body.theme-highcontrast .s-btn.s-btn__link {
1453
1435
  text-decoration: underline !important;
1454
1436
  }
1455
1437
  .s-btn.s-btn__link.s-link__visited {
1438
+ --_li-fc: var(--theme-link-color-visited);
1456
1439
  --_li-fc-hover: var(--theme-link-color-hover);
1457
1440
  --_li-fc-visited: var(--theme-link-color-visited);
1458
1441
  }
@@ -1507,8 +1490,6 @@ button.s-btn.s-btn__link:focus {
1507
1490
  --_bu-baw: 0;
1508
1491
  --_bu-bg: none;
1509
1492
  --_bu-br: 0;
1510
- --_bu-bs: none;
1511
- --_bu-filled-bs: var(--_bu-bs);
1512
1493
  --_bu-fc: unset;
1513
1494
  --_bu-focus-ring: none;
1514
1495
  --_bu-p: 0;
@@ -1569,7 +1550,6 @@ body.theme-highcontrast .s-btn.s-btn__muted {
1569
1550
  --_bu-filled-bg-active: var(--red-700);
1570
1551
  --_bu-filled-bg-hover: var(--red-600);
1571
1552
  --_bu-filled-bg-selected: var(--red-800);
1572
- --_bu-filled-bs: inset 0 var(--su-static1) 0 0 hsla(0, 0%, 100%, 0.4);
1573
1553
  --_bu-filled-fc: var(--white);
1574
1554
  --_bu-filled-fc-active: var(--_bu-filled-fc);
1575
1555
  --_bu-filled-fc-hover: var(--_bu-filled-fc);
@@ -1614,9 +1594,9 @@ body.theme-highcontrast.theme-dark .s-btn.s-btn__danger.s-btn__filled {
1614
1594
  --_bu-bg-active: var(--black-050);
1615
1595
  --_bu-bg-hover: var(--black-025);
1616
1596
  --_bu-bg-selected: var(--black-075);
1617
- --_bu-fc: var(--black-500);
1597
+ --_bu-fc: var(--black-700);
1618
1598
  --_bu-fc-active: var(--_bu-fc);
1619
- --_bu-fc-hover: var(--black-600);
1599
+ --_bu-fc-hover: var(--black-700);
1620
1600
  --_bu-fc-selected: var(--black-700);
1621
1601
  --_bu-focus-ring: 0 0 0 var(--su-static4) var(--focus-ring-muted);
1622
1602
  --_bu-filled-bc: transparent;
@@ -1625,13 +1605,12 @@ body.theme-highcontrast.theme-dark .s-btn.s-btn__danger.s-btn__filled {
1625
1605
  --_bu-filled-bg-active: var(--black-200);
1626
1606
  --_bu-filled-bg-hover: var(--black-150);
1627
1607
  --_bu-filled-bg-selected: var(--black-350);
1628
- --_bu-filled-bs: inset 0 var(--su-static1) 0 0 hsla(0, 0%, 100%, 0.4);
1629
1608
  --_bu-filled-fc: var(--black-700);
1630
1609
  --_bu-filled-fc-active: var(--_bu-filled-fc);
1631
1610
  --_bu-filled-fc-hover: var(--_bu-filled-fc);
1632
1611
  --_bu-filled-fc-selected: var(--black-800);
1633
- --_bu-outlined-bc: var(--black-300);
1634
- --_bu-outlined-bc-selected: var(--black-400);
1612
+ --_bu-outlined-bc: var(--black-200);
1613
+ --_bu-outlined-bc-selected: var(--black-200);
1635
1614
  --_bu-outlined-bg-selected: var(--_bu-bg-selected);
1636
1615
  --_bu-outlined-fc-selected: var(--_bu-fc-selected);
1637
1616
  }
@@ -1652,7 +1631,6 @@ body.theme-highcontrast .s-btn.s-btn__muted.s-btn__filled {
1652
1631
  --_bu-bg-active: var(--theme-button-primary-active-background-color);
1653
1632
  --_bu-bg-hover: var(--theme-button-primary-hover-background-color);
1654
1633
  --_bu-bg-selected: var(--theme-button-primary-selected-background-color);
1655
- --_bu-bs: inset 0 1px 0 0 hsla(0, 0%, 100%, 0.4);
1656
1634
  --_bu-fc: var(--theme-button-primary-color);
1657
1635
  --_bu-fc-active: var(--theme-button-primary-hover-color);
1658
1636
  --_bu-fc-hover: var(--theme-button-primary-hover-color);
@@ -1753,14 +1731,14 @@ body.theme-highcontrast .s-btn.s-btn__github {
1753
1731
  .s-btn--radio {
1754
1732
  border: 0;
1755
1733
  clip-path: inset(50%);
1756
- clip: rect(1px, 1px, 1px, 1px);
1757
- height: 1px;
1758
- margin: -1px;
1734
+ clip: rect(var(--su-static1), var(--su-static1), var(--su-static1), var(--su-static1));
1735
+ height: var(--su-static1);
1736
+ margin: calc(var(--su-static1) * -1);
1759
1737
  overflow-wrap: normal;
1760
1738
  overflow: hidden;
1761
1739
  padding: 0;
1762
1740
  position: absolute;
1763
- width: 1px;
1741
+ width: var(--su-static1);
1764
1742
  }
1765
1743
  .s-btn:not(.is-selected):not(.s-btn__link):not(.s-btn__unset):hover,
1766
1744
  .s-btn:not(.is-selected):not(.s-btn__link):not(.s-btn__unset):focus {
@@ -2293,7 +2271,7 @@ pre.s-code-block::-webkit-scrollbar-corner {
2293
2271
  --_in-bc: var(--bc-darker);
2294
2272
  --_in-bc-focus: var(--theme-secondary-300);
2295
2273
  --_in-bg: var(--white);
2296
- --_in-br: var(--br-sm);
2274
+ --_in-br: var(--br-md);
2297
2275
  --_in-bs-focus: 0 0 0 var(--su-static4) var(--focus-ring);
2298
2276
  --_in-c: unset;
2299
2277
  --_in-fc: var(--fc-dark);
@@ -2418,7 +2396,7 @@ body.theme-highcontrast .has-warning .s-textarea {
2418
2396
  .s-input.s-textarea__md,
2419
2397
  .s-textarea.s-input__md,
2420
2398
  .s-textarea.s-textarea__md {
2421
- --_in-fs: 17px;
2399
+ --_in-fs: calc(var(--su-static16) + var(--su-static1));
2422
2400
  --_in-py: 0.4em;
2423
2401
  }
2424
2402
  }
@@ -2561,18 +2539,18 @@ body.theme-highcontrast .s-input:focus-within {
2561
2539
  }
2562
2540
  .s-input-fill.order-first {
2563
2541
  --_if-blw: var(--su-static1);
2564
- --_if-blr: var(--br-sm);
2542
+ --_if-blr: var(--br-md);
2565
2543
  }
2566
2544
  .s-input-fill.order-last {
2567
2545
  --_if-brw: var(--su-static1);
2568
- --_if-brr: var(--br-sm);
2546
+ --_if-brr: var(--br-md);
2569
2547
  }
2570
2548
  .s-input-icon {
2571
2549
  --_ii-fc: unset;
2572
2550
  --_ii-r: 0.7em;
2573
2551
  color: var(--_ii-fc);
2574
2552
  right: var(--_ii-r);
2575
- margin-top: -9px;
2553
+ margin-top: calc((var(--su-static8) + var(--su-static1)) * -1);
2576
2554
  pointer-events: none;
2577
2555
  position: absolute;
2578
2556
  top: 50%;
@@ -2810,6 +2788,7 @@ a.s-link__underlined,
2810
2788
  }
2811
2789
  a.s-link__visited,
2812
2790
  .s-link.s-link__visited {
2791
+ --_li-fc: var(--theme-link-color-visited);
2813
2792
  --_li-fc-hover: var(--theme-link-color-hover);
2814
2793
  --_li-fc-visited: var(--theme-link-color-visited);
2815
2794
  }
@@ -3251,7 +3230,7 @@ body.theme-highcontrast .s-navigation .s-navigation--item.is-selected {
3251
3230
  pointer-events: none;
3252
3231
  position: absolute;
3253
3232
  right: 0.9em;
3254
- top: calc(50% - 2px);
3233
+ top: calc(50% - var(--su-static2));
3255
3234
  z-index: var(--zi-active);
3256
3235
  }
3257
3236
  .s-navigation .s-navigation--item:hover,
@@ -3288,7 +3267,7 @@ body.theme-highcontrast .s-navigation .s-navigation--item.is-selected {
3288
3267
  color: var(--_no-fc);
3289
3268
  border-style: solid;
3290
3269
  font-size: var(--fs-body1);
3291
- border-radius: var(--br-sm);
3270
+ border-radius: var(--br-md);
3292
3271
  border-width: var(--su-static1);
3293
3272
  padding: var(--su16);
3294
3273
  }
@@ -3496,7 +3475,7 @@ body.theme-highcontrast .s-notice__warning.s-notice__important {
3496
3475
  --_pt-breadcrums-mb: var(--su8);
3497
3476
  align-items: var(--_pt-ai);
3498
3477
  flex-direction: var(--_pt-fd);
3499
- border-bottom: 1px solid var(--bc-medium);
3478
+ border-bottom: var(--su-static1) solid var(--bc-medium);
3500
3479
  display: flex;
3501
3480
  justify-content: space-between;
3502
3481
  padding-bottom: var(--su16);
@@ -4899,7 +4878,7 @@ body.theme-highcontrast .s-prose {
4899
4878
  --_se-select-bc-focus: var(--theme-secondary-300);
4900
4879
  --_se-select-bs-focus: 0 0 0 var(--su-static4) var(--focus-ring);
4901
4880
  --_se-select-bg: var(--white);
4902
- --_se-select-br: var(--br-sm);
4881
+ --_se-select-br: var(--br-md);
4903
4882
  --_se-select-fc: var(--black);
4904
4883
  --_se-select-px: 0.7em;
4905
4884
  --_se-select-py: 0.6em;
@@ -4909,7 +4888,7 @@ body.theme-highcontrast .s-prose {
4909
4888
  }
4910
4889
  @supports (-webkit-overflow-scrolling: touch) {
4911
4890
  .s-select {
4912
- --_se-select-fs: 16px;
4891
+ --_se-select-fs: var(--su-static16);
4913
4892
  --_se-select-px: 0.55em;
4914
4893
  --_se-select-py: 0.4em;
4915
4894
  }
@@ -5217,9 +5196,9 @@ body.theme-highcontrast .s-sidebarwidget.s-sidebarwidget__green {
5217
5196
  }
5218
5197
  .s-sidebarwidget .s-sidebarwidget--subnav li {
5219
5198
  background-image: url("data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22?%3E%3Csvg%20version%3D%221.1%22%20viewBox%3D%220%200%207%2010%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22m0.72153%200.68446%204.1336%204.3077-4.1336%204.3077%22%20fill%3D%22none%22%20stroke%3D%22var%28--black-100%29%22%20stroke-width%3D%222%22/%3E%3C/svg%3E");
5220
- background-position: 0 calc((1.2em - 10px) / 2);
5199
+ background-position: 0 calc((1.2em - calc(var(--su-static8) + var(--su-static2))) / 2);
5221
5200
  background-repeat: no-repeat;
5222
- background-size: auto 10px;
5201
+ background-size: auto calc(var(--su-static8) + var(--su-static2));
5223
5202
  margin-top: var(--su-static12);
5224
5203
  padding-left: var(--su-static16);
5225
5204
  }
@@ -5256,7 +5235,7 @@ body.theme-highcontrast .s-sidebarwidget.s-sidebarwidget__green {
5256
5235
  border-radius: var(--br-sm);
5257
5236
  clip-path: polygon(0% 0%, 100% 0%, 100% 50%, 0% 50%);
5258
5237
  content: '';
5259
- height: calc(2px + var(--br-sm));
5238
+ height: calc(var(--su-static2) + var(--br-sm));
5260
5239
  left: calc(var(--su-static1) * -1);
5261
5240
  pointer-events: none;
5262
5241
  position: absolute;
@@ -5329,7 +5308,7 @@ body.theme-highcontrast .s-sidebarwidget.s-sidebarwidget__green {
5329
5308
  border-color: transparent;
5330
5309
  border-left-color: currentColor;
5331
5310
  filter: invert(0);
5332
- transform-origin: 50% 50% 1px;
5311
+ transform-origin: 50% 50% var(--su-static1);
5333
5312
  }
5334
5313
  .is-loading:before {
5335
5314
  border-color: currentColor;
@@ -5570,7 +5549,7 @@ body.theme-highcontrast .s-sidebarwidget.s-sidebarwidget__green {
5570
5549
  .s-table td.s-table--progress-bar {
5571
5550
  --_ta-td-blw: 0;
5572
5551
  --_ta-td-pl: 0;
5573
- --_ta-td-w: 120px;
5552
+ --_ta-td-w: calc(var(--su-static12) * 10);
5574
5553
  }
5575
5554
  .s-table tfoot td {
5576
5555
  border-bottom-color: var(--_ta-foot-td-bc, var(--_ta-td-bc));
@@ -6027,13 +6006,13 @@ body.theme-highcontrast .s-topbar {
6027
6006
  position: absolute;
6028
6007
  content: '';
6029
6008
  left: 0;
6030
- top: -5px;
6009
+ top: calc(var(--su-static1) - var(--su-static6));
6031
6010
  transition: top, transform;
6032
6011
  transition-duration: 0.1s;
6033
6012
  transition-timing-function: ease-in-out;
6034
6013
  }
6035
6014
  .s-topbar .s-topbar--menu-btn span:after {
6036
- top: 5px;
6015
+ top: calc(var(--su-static6) - var(--su-static1));
6037
6016
  }
6038
6017
  .s-topbar .s-topbar--menu-btn.is-selected {
6039
6018
  color: var(--theme-topbar-item-color-current);
@@ -6194,7 +6173,7 @@ body.theme-highcontrast .s-topbar__dark .s-badge {
6194
6173
  .s-topbar .s-topbar--content .s-topbar--item:not(.s-topbar--item__unset).is-selected .s-activity-indicator,
6195
6174
  .s-topbar .s-topbar--content .s-topbar--item:not(.s-topbar--item__unset).is-selected:hover .s-activity-indicator,
6196
6175
  .s-topbar .s-topbar--content .s-topbar--item:not(.s-topbar--item__unset).is-selected:focus .s-activity-indicator {
6197
- top: calc(50% - 18px);
6176
+ top: calc(50% - calc(var(--su16) + var(--su2)));
6198
6177
  box-shadow: 0 0 0 var(--su-static2) var(--theme-topbar-item-background-hover);
6199
6178
  }
6200
6179
  .s-topbar .s-topbar--content .s-topbar--item:not(.s-topbar--item__unset) .svg-icon {
@@ -6202,8 +6181,8 @@ body.theme-highcontrast .s-topbar__dark .s-badge {
6202
6181
  }
6203
6182
  .s-topbar .s-topbar--content .s-topbar--item:not(.s-topbar--item__unset) .s-activity-indicator {
6204
6183
  position: absolute;
6205
- top: calc(50% - 14px);
6206
- right: 2px;
6184
+ top: calc(50% - calc(var(--su12) + var(--su2)));
6185
+ right: var(--su-static2);
6207
6186
  transition: top var(--te-smooth) 0.15s;
6208
6187
  box-shadow: 0 0 0 var(--su-static2) var(--theme-topbar-background-color);
6209
6188
  }
@@ -6273,7 +6252,7 @@ body.theme-highcontrast .s-topbar__dark .s-badge {
6273
6252
  .s-topbar .s-topbar--searchbar .s-select {
6274
6253
  max-width: calc(var(--s-step) * 2) !important;
6275
6254
  align-self: stretch;
6276
- margin-right: -1px;
6255
+ margin-right: calc(var(--su-static1) * -1);
6277
6256
  color: var(--theme-topbar-select-color);
6278
6257
  }
6279
6258
  .s-topbar .s-topbar--searchbar .s-select:before,
@@ -6639,9 +6618,9 @@ body {
6639
6618
  --ff-serif: Georgia, Cambria, "Times New Roman", Times, serif;
6640
6619
  --ff-mono: ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace;
6641
6620
  --theme-body-font-family: var(--ff-sans);
6642
- --fs-fine: 11px;
6643
- --fs-caption: 12px;
6644
- --fs-body1: 13px;
6621
+ --fs-fine: calc(var(--su-static12) - var(--su-static1));
6622
+ --fs-caption: var(--su-static12);
6623
+ --fs-body1: calc(var(--su-static12) + var(--su-static1));
6645
6624
  --fs-body2: 1.15384615rem;
6646
6625
  --fs-body3: 1.30769231rem;
6647
6626
  --fs-subheading: 1.46153846rem;
@@ -6686,9 +6665,9 @@ body {
6686
6665
  --zi-navigation-fixed: 5050;
6687
6666
  --zi-modals-background: 8050;
6688
6667
  --zi-modals: 9000;
6689
- --br-sm: 3px;
6690
- --br-md: 5px;
6691
- --br-lg: 7px;
6668
+ --br-sm: calc(var(--su-static4));
6669
+ --br-md: calc(var(--su-static6));
6670
+ --br-lg: calc(var(--su-static8));
6692
6671
  --br-circle: 50%;
6693
6672
  --te-smooth-slow: cubic-bezier(0.25, 0.46, 0.45, 0.94);
6694
6673
  --te-smooth: cubic-bezier(0.165, 0.84, 0.44, 1);
@@ -6718,7 +6697,7 @@ body:not(.theme-dark) .theme-dark__forced .themed {
6718
6697
  --theme-background-color: var(--white);
6719
6698
  --theme-link-color: var(--theme-secondary-400);
6720
6699
  --theme-link-color-hover: var(--theme-secondary-350);
6721
- --theme-link-color-visited: var(--theme-secondary-500);
6700
+ --theme-link-color-visited: var(--theme-secondary-700);
6722
6701
  --theme-button-color: var(--theme-secondary-400);
6723
6702
  --theme-button-background-color: transparent;
6724
6703
  --theme-button-hover-color: var(--theme-secondary-500);
@@ -16850,7 +16829,7 @@ p {
16850
16829
  .fs-category.has-border {
16851
16830
  width: 100%;
16852
16831
  padding: var(--su4) 0;
16853
- border-top: 1px solid var(--bc-medium);
16832
+ border-top: var(--su-static1) solid var(--bc-medium);
16854
16833
  }
16855
16834
  .fc-dark {
16856
16835
  color: var(--fc-dark) !important;
@@ -17293,14 +17272,14 @@ ol {
17293
17272
  }
17294
17273
  .v-visible-sr {
17295
17274
  border: 0;
17296
- clip: rect(1px, 1px, 1px, 1px);
17275
+ clip: rect(var(--su-static1), var(--su-static1), var(--su-static1), var(--su-static1));
17297
17276
  clip-path: inset(50%);
17298
- height: 1px;
17299
- margin: -1px;
17277
+ height: var(--su-static1);
17278
+ margin: calc(var(--su-static1) * -1);
17300
17279
  overflow: hidden;
17301
17280
  padding: 0;
17302
17281
  position: absolute;
17303
- width: 1px;
17282
+ width: var(--su-static1);
17304
17283
  overflow-wrap: normal;
17305
17284
  }
17306
17285
  .float-left {
@@ -23178,7 +23157,7 @@ body {
23178
23157
  @media (max-width: 640px) {
23179
23158
  html ,
23180
23159
  html body {
23181
- font-size: 11px;
23160
+ font-size: calc(var(--su-static12) - var(--su-static1));
23182
23161
  }
23183
23162
  }
23184
23163
  body {