opui-css 5.4.0 → 5.4.2

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/opui.css CHANGED
@@ -1291,6 +1291,7 @@
1291
1291
  }
1292
1292
 
1293
1293
  @layer theme {
1294
+
1294
1295
  /* 1. Color scheme */
1295
1296
  .ui-light {
1296
1297
  --color-scheme: light;
@@ -1314,15 +1315,13 @@
1314
1315
  --gray-chroma: 0.01;
1315
1316
  */
1316
1317
 
1317
- /* 3. Named colors (no severity meaning) — use when you literally want a green/red/etc. dot */
1318
+ /* 3. Named colors (no severity meaning) - use when you literally want a green/red/etc. dot */
1318
1319
  --blue: oklch(from var(--color-9) l 0.2 210);
1319
1320
  --green: oklch(from var(--color-9) l 0.2 145);
1320
1321
  --orange: oklch(from var(--color-7) l 0.2 75);
1321
1322
  --red: oklch(from var(--color-9) l 0.2 25);
1322
1323
 
1323
- /* 4. Intent tokens
1324
- Severity (have scope classes below): --success, --info, --warning, --critical
1325
- Non-severity (value-only): --primary, --neutral */
1324
+ /* 4. Intent tokens */
1326
1325
  --success: var(--green);
1327
1326
  --info: var(--blue);
1328
1327
  --warning: var(--orange);
@@ -1369,7 +1368,7 @@
1369
1368
  /* Sneaking in an extra font size I want but Open Props doesn't provide. You can do whatever you want with your own theme. It's just CSS. */
1370
1369
  --font-size-05: 0.875rem;
1371
1370
 
1372
- /* 11. Control sizes — shared scale for fields and buttons so they line up. */
1371
+ /* 11. Control sizes - shared scale for fields and buttons so they line up. */
1373
1372
  --control-size-x-small: 28px;
1374
1373
  --control-size-small: 32px;
1375
1374
  --control-size: 40px;
@@ -1653,23 +1652,15 @@
1653
1652
  --_accent-tonal: var(--_color-tonal);
1654
1653
  --_accent-tonal-contrast: var(--_color);
1655
1654
 
1656
- --_default-hover-bg-color: light-dark(
1657
- oklch(from var(--_accent) l 0.01 h / 10%),
1658
- oklch(from var(--_accent) l 0.01 h / 20%)
1659
- );
1660
- --_default-active-bg-color: light-dark(
1661
- oklch(from var(--_accent) l 0.06 h / 20%),
1662
- oklch(from var(--_accent) l 0.06 h / 30%)
1663
- );
1655
+ --_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
1656
+ oklch(from var(--_accent) l 0.01 h / 20%));
1657
+ --_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
1658
+ oklch(from var(--_accent) l 0.06 h / 30%));
1664
1659
 
1665
- --_filled-hover-bg-color: light-dark(
1666
- oklch(from var(--_accent) calc(l + 0.2) c h),
1667
- oklch(from var(--_accent) calc(l - 0.1) c h)
1668
- );
1669
- --_filled-active-bg-color: light-dark(
1670
- oklch(from var(--_accent) calc(l + 0.3) c h),
1671
- oklch(from var(--_accent) calc(l - 0.15) c h)
1672
- );
1660
+ --_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
1661
+ oklch(from var(--_accent) calc(l - 0.1) c h));
1662
+ --_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
1663
+ oklch(from var(--_accent) calc(l - 0.15) c h));
1673
1664
  --_outlined-active-bg-color: var(--_filled-active-bg-color);
1674
1665
 
1675
1666
  --_bg-color: transparent;
@@ -1704,11 +1695,6 @@
1704
1695
  box-shadow calc(0.1s * var(--_motion)) ease;
1705
1696
  user-select: none;
1706
1697
 
1707
- /* Colors — shared interaction model for critical and primary.
1708
- Each color modifier below only swaps --_color; the tonal surface,
1709
- contrast text, and hover/active strategy are identical.
1710
- The .critical scope class in theme.css redirects --palette-source so
1711
- --color-6 below becomes a tint of the active color. */
1712
1698
  &.ui-critical,
1713
1699
  &.ui-primary {
1714
1700
  --_color-contrast: var(--gray-1);
@@ -1734,11 +1720,9 @@
1734
1720
 
1735
1721
  /* Disabled */
1736
1722
  &:where([disabled]) {
1737
- --_text-color: color-mix(
1738
- in oklch,
1739
- var(--text-muted) 50%,
1740
- var(--surface-default)
1741
- );
1723
+ --_text-color: color-mix(in oklch,
1724
+ var(--text-muted) 50%,
1725
+ var(--surface-default));
1742
1726
 
1743
1727
  cursor: not-allowed;
1744
1728
  opacity: 0.64;
@@ -1776,8 +1760,7 @@
1776
1760
  line-height: 1.2;
1777
1761
  }
1778
1762
 
1779
- /* Sizes — heights aliased from the shared --control-size scale.
1780
- Override --button-size-* in a parent scope to resize an entire region. */
1763
+ /* Sizes */
1781
1764
  &.ui-x-small {
1782
1765
  --_min-height: var(--button-size-x-small);
1783
1766
  --_font-size: var(--font-size-0);
@@ -1851,7 +1834,7 @@
1851
1834
  }
1852
1835
  }
1853
1836
 
1854
- /* file input */
1837
+ /* File input */
1855
1838
  :where(input[type="file"]) {
1856
1839
  align-self: flex-start;
1857
1840
  border: var(--border-size-1) solid var(--surface-filled);
@@ -1994,22 +1977,14 @@
1994
1977
  --_accent-contrast: var(--_color-contrast);
1995
1978
  --_accent-tonal: var(--_color-tonal);
1996
1979
  --_accent-tonal-contrast: var(--_color);
1997
- --_default-hover-bg-color: light-dark(
1998
- oklch(from var(--_accent) l 0.01 h / 10%),
1999
- oklch(from var(--_accent) l 0.01 h / 20%)
2000
- );
2001
- --_default-active-bg-color: light-dark(
2002
- oklch(from var(--_accent) l 0.06 h / 20%),
2003
- oklch(from var(--_accent) l 0.06 h / 30%)
2004
- );
2005
- --_filled-hover-bg-color: light-dark(
2006
- oklch(from var(--_accent) calc(l + 0.2) c h),
2007
- oklch(from var(--_accent) calc(l - 0.1) c h)
2008
- );
2009
- --_filled-active-bg-color: light-dark(
2010
- oklch(from var(--_accent) calc(l + 0.3) c h),
2011
- oklch(from var(--_accent) calc(l - 0.15) c h)
2012
- );
1980
+ --_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
1981
+ oklch(from var(--_accent) l 0.01 h / 20%));
1982
+ --_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
1983
+ oklch(from var(--_accent) l 0.06 h / 30%));
1984
+ --_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
1985
+ oklch(from var(--_accent) calc(l - 0.1) c h));
1986
+ --_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
1987
+ oklch(from var(--_accent) calc(l - 0.15) c h));
2013
1988
  --_outlined-active-bg-color: var(--_filled-active-bg-color);
2014
1989
 
2015
1990
  --_bg-color: transparent;
@@ -2058,11 +2033,6 @@
2058
2033
  background-color calc(0.1s * var(--_motion)) ease;
2059
2034
  }
2060
2035
 
2061
- /* Colors — shared interaction model for critical and primary.
2062
- Each color modifier below only swaps --_color; the tonal surface,
2063
- contrast text, and hover/active strategy are identical.
2064
- The .critical scope class in theme.css redirects --palette-source so
2065
- --color-6 below becomes a tint of the active color. */
2066
2036
  &.ui-critical,
2067
2037
  &.ui-primary {
2068
2038
  --_color-contrast: var(--gray-1);
@@ -2090,20 +2060,16 @@
2090
2060
  &:where(:not([disabled])) {
2091
2061
  &:where(:not(:active):hover) {
2092
2062
  &::before {
2093
- background-color: var(
2094
- --_interaction-hover-color,
2095
- var(--_default-hover-bg-color)
2096
- );
2063
+ background-color: var(--_interaction-hover-color,
2064
+ var(--_default-hover-bg-color));
2097
2065
  }
2098
2066
  }
2099
2067
 
2100
2068
  &:where(:hover:active),
2101
2069
  &[aria-current="page"] {
2102
2070
  &::before {
2103
- background-color: var(
2104
- --_interaction-active-color,
2105
- var(--_default-active-bg-color)
2106
- );
2071
+ background-color: var(--_interaction-active-color,
2072
+ var(--_default-active-bg-color));
2107
2073
  }
2108
2074
  }
2109
2075
  }
@@ -2525,7 +2491,7 @@
2525
2491
  --_card-border-width: 1px;
2526
2492
  }
2527
2493
 
2528
- & > :where(hgroup, .ui-content) {
2494
+ &> :where(hgroup, .ui-content) {
2529
2495
  padding-inline: var(--size-3);
2530
2496
 
2531
2497
  &:last-child {
@@ -2534,11 +2500,12 @@
2534
2500
  }
2535
2501
 
2536
2502
  /* Header */
2537
- & > hgroup {
2503
+ &>hgroup {
2538
2504
  padding-block: var(--size-3) 0;
2539
2505
 
2540
2506
  /* Top paragraph */
2541
- & > p:first-of-type:first-child {
2507
+ &>p:first-of-type:first-child {
2508
+ font-size: var(--font-size-0);
2542
2509
  line-height: 1.3;
2543
2510
  }
2544
2511
 
@@ -2547,18 +2514,18 @@
2547
2514
  }
2548
2515
 
2549
2516
  /* Bottom paragraph */
2550
- & > p:last-of-type:last-child:not(:first-child) {
2517
+ &>p:last-of-type:last-child:not(:first-child) {
2551
2518
  font-size: var(--font-size-1);
2552
2519
  }
2553
2520
  }
2554
2521
 
2555
2522
  /* Content */
2556
- & > .ui-content:where(:only-child, :first-child) {
2523
+ &>.ui-content:where(:only-child, :first-child) {
2557
2524
  padding-block: var(--size-3) var(--size-4);
2558
2525
  }
2559
2526
 
2560
2527
  /* Actions */
2561
- & > .ui-actions {
2528
+ &>.ui-actions {
2562
2529
  display: flex;
2563
2530
  gap: var(--size-2);
2564
2531
  margin-block: var(--size-2) 0;
@@ -3504,9 +3471,6 @@
3504
3471
  --_motion: var(--motion, 1);
3505
3472
  display: grid;
3506
3473
  gap: var(--size-1) 0;
3507
- /* Two-column base so the optional .value cell can sit next to the
3508
- label on row 1. Children that span the full width keep using
3509
- `grid-column: 1/-1`, so this is backwards compatible. */
3510
3474
  grid-template-columns: 1fr auto;
3511
3475
  position: relative;
3512
3476
 
@@ -3518,8 +3482,6 @@
3518
3482
  grid-row: 1;
3519
3483
  }
3520
3484
 
3521
- /* Live current-value readout. Pairs with the <output> element
3522
- rendered by the Range component (or hand-written .value markup). */
3523
3485
  :where(.ui-value) {
3524
3486
  color: var(--text-muted);
3525
3487
  font-size: var(--font-size-0);
@@ -3558,7 +3520,7 @@
3558
3520
  margin-top: calc(var(--size-1) * -1);
3559
3521
  padding-inline: calc(3ex / 2);
3560
3522
 
3561
- & > option {
3523
+ &>option {
3562
3524
  display: flex;
3563
3525
  inline-size: 0;
3564
3526
  justify-content: center;
@@ -3622,9 +3584,6 @@
3622
3584
  min-inline-size: 25ch;
3623
3585
  }
3624
3586
 
3625
- /* In spread mode, the value sits below the slider in col 2
3626
- (where end-text would normally land). When end-text is also
3627
- present it shifts down a row to avoid collision. */
3628
3587
  :where(.ui-value) {
3629
3588
  grid-column: 2;
3630
3589
  grid-row: 2;
@@ -3641,8 +3600,6 @@
3641
3600
  grid-row: 2;
3642
3601
  }
3643
3602
 
3644
- /* When both datalist and end-text exist, push end-text below the datalist
3645
- so they don't collide on the same grid cell. */
3646
3603
  &:has(datalist) :where(.ui-end-text) {
3647
3604
  grid-row: 3;
3648
3605
  }
@@ -3666,9 +3623,6 @@
3666
3623
  grid-row: 1;
3667
3624
  }
3668
3625
 
3669
- /* Share row 1 with the label: the label's text stays left-aligned
3670
- in its full-width cell, while the value shrinks to fit and
3671
- right-aligns. Visually reads as a "[name ........ value]" row. */
3672
3626
  :where(.ui-value) {
3673
3627
  grid-row: 1;
3674
3628
  justify-self: end;
@@ -3739,11 +3693,9 @@
3739
3693
  /* Track */
3740
3694
  &::-webkit-slider-runnable-track {
3741
3695
  appearance: none;
3742
- background: linear-gradient(
3743
- to right,
3744
- var(--_track-fill-color) var(--_track-fill, 0%),
3745
- var(--_track-color) 0%
3746
- );
3696
+ background: linear-gradient(to right,
3697
+ var(--_track-fill-color) var(--_track-fill, 0%),
3698
+ var(--_track-color) 0%);
3747
3699
  block-size: var(--_track-height);
3748
3700
  border-radius: var(--_track-radius);
3749
3701
  }
@@ -3769,8 +3721,7 @@
3769
3721
  block-size: var(--_thumb-size);
3770
3722
  border: 3px solid var(--surface-default);
3771
3723
  border-radius: 50%;
3772
- box-shadow: 0 0 0 var(--_thumb-highlight-size)
3773
- var(--_thumb-highlight-color);
3724
+ box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
3774
3725
  cursor: ew-resize;
3775
3726
  inline-size: var(--_thumb-size);
3776
3727
  margin-block-start: var(--_thumb-offset);
@@ -3788,8 +3739,7 @@
3788
3739
  block-size: var(--_thumb-size);
3789
3740
  border: 3px solid var(--surface-default);
3790
3741
  border-radius: 50%;
3791
- box-shadow: 0 0 0 var(--_thumb-highlight-size)
3792
- var(--_thumb-highlight-color);
3742
+ box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
3793
3743
  cursor: ew-resize;
3794
3744
  inline-size: var(--_thumb-size);
3795
3745
  margin-block-start: var(--_thumb-offset);
@@ -3814,10 +3764,8 @@
3814
3764
 
3815
3765
  &:active {
3816
3766
  --_thumb-highlight-size: var(--size-2);
3817
- --_track-color: light-dark(
3818
- oklch(from var(--field-border-color) calc(l * 0.9) c h),
3819
- oklch(from var(--field-border-color) calc(l * 1.1) c h)
3820
- );
3767
+ --_track-color: light-dark(oklch(from var(--field-border-color) calc(l * 0.9) c h),
3768
+ oklch(from var(--field-border-color) calc(l * 1.1) c h));
3821
3769
  }
3822
3770
  }
3823
3771
 
@@ -4214,7 +4162,6 @@
4214
4162
  }
4215
4163
  }
4216
4164
 
4217
- /* Severity icons via CSS data URIs — keeps icon assets out of JS strings. */
4218
4165
  &[data-severity="success"] .ui-icon {
4219
4166
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2322c55e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/><path d='m9 11 3 3L22 4'/></svg>");
4220
4167
  }
@@ -4244,8 +4191,6 @@
4244
4191
  }
4245
4192
  }
4246
4193
 
4247
- /* Identity keyframe — only purpose is to delay the exit animation by the
4248
- author-defined duration. */
4249
4194
  @keyframes toast-hold {
4250
4195
  from {
4251
4196
  opacity: 1;
@@ -4326,10 +4271,8 @@
4326
4271
 
4327
4272
  /** Overline */
4328
4273
  :where(.ui-overline) {
4329
- color: light-dark(
4330
- oklch(from var(--text-muted) calc(l * 1.25) c h),
4331
- oklch(from var(--text-muted) calc(l * 0.75) c h)
4332
- );
4274
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
4275
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
4333
4276
  font-size: var(--font-size-0);
4334
4277
  font-weight: 500;
4335
4278
  letter-spacing: 0.06em;
@@ -4337,20 +4280,18 @@
4337
4280
  }
4338
4281
 
4339
4282
  :where(.ui-hgroup) {
4340
- & > p {
4283
+ &>p {
4341
4284
  margin: 0;
4342
4285
  }
4343
4286
 
4344
- & > :where(h1, h2, h3, h4, h5, h6) {
4287
+ &> :where(h1, h2, h3, h4, h5, h6) {
4345
4288
  margin-block: 0 0.4em;
4346
4289
  }
4347
4290
 
4348
4291
  /* First p element (overline) */
4349
- & > p:first-of-type:first-child {
4350
- color: light-dark(
4351
- oklch(from var(--text-muted) calc(l * 1.25) c h),
4352
- oklch(from var(--text-muted) calc(l * 0.75) c h)
4353
- );
4292
+ &>p:first-of-type:first-child {
4293
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
4294
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
4354
4295
  font-size: var(--font-size-0);
4355
4296
  font-weight: 500;
4356
4297
  letter-spacing: 0.06em;
@@ -4358,13 +4299,13 @@
4358
4299
  }
4359
4300
 
4360
4301
  /* Body paragraphs after the heading */
4361
- & > p:not(:first-of-type:first-child) {
4302
+ &>p:not(:first-of-type:first-child) {
4362
4303
  color: oklch(from currentColor l c h / 75%);
4363
4304
  font-size: var(--font-size-3);
4364
4305
  line-height: 1.6;
4365
4306
  }
4366
4307
 
4367
- & > p + p {
4308
+ &>p+p {
4368
4309
  margin-block-start: 0.75em;
4369
4310
  }
4370
4311
  }
@@ -4376,7 +4317,7 @@
4376
4317
  line-height: 1.6;
4377
4318
  }
4378
4319
 
4379
- /* Inline text elements — class utilities (work anywhere) */
4320
+ /* Inline text elements - class utilities */
4380
4321
  :where(.ui-u, .ui-abbr, .ui-dfn) {
4381
4322
  text-decoration: underline;
4382
4323
  text-underline-offset: 1px;
@@ -4501,7 +4442,7 @@
4501
4442
  scrollbar-width: thin;
4502
4443
  white-space: pre;
4503
4444
 
4504
- > code {
4445
+ >code {
4505
4446
  background: none;
4506
4447
  border-radius: 0;
4507
4448
  color: inherit;
@@ -4528,6 +4469,7 @@
4528
4469
  text-underline-offset: 2px;
4529
4470
 
4530
4471
  &[href] {
4472
+
4531
4473
  &:hover,
4532
4474
  &:focus-visible {
4533
4475
  color: var(--primary-light);
@@ -4577,7 +4519,7 @@
4577
4519
  overflow-x: auto;
4578
4520
  scrollbar-width: thin;
4579
4521
 
4580
- > code {
4522
+ >code {
4581
4523
  background: none;
4582
4524
  border-radius: 0;
4583
4525
  color: inherit;
@@ -4601,7 +4543,7 @@
4601
4543
  font-weight: 700;
4602
4544
  text-wrap: pretty;
4603
4545
 
4604
- & + *:not(&) {
4546
+ &+*:not(&) {
4605
4547
  margin-block-start: 0;
4606
4548
  }
4607
4549
  }
@@ -4648,10 +4590,8 @@
4648
4590
 
4649
4591
  /** Overline */
4650
4592
  :is(.ui-overline, hgroup p:first-of-type:first-child) {
4651
- color: light-dark(
4652
- oklch(from var(--text-muted) calc(l * 1.25) c h),
4653
- oklch(from var(--text-muted) calc(l * 0.75) c h)
4654
- );
4593
+ color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
4594
+ oklch(from var(--text-muted) calc(l * 0.75) c h));
4655
4595
  font-size: var(--font-size-0);
4656
4596
  font-weight: 500;
4657
4597
  letter-spacing: 0.06em;
@@ -4659,26 +4599,26 @@
4659
4599
  }
4660
4600
 
4661
4601
  hgroup {
4662
- & > p {
4602
+ &>p {
4663
4603
  margin: 0;
4664
4604
  }
4665
4605
 
4666
- & > :where(h1, h2, h3, h4, h5, h6) {
4606
+ &> :where(h1, h2, h3, h4, h5, h6) {
4667
4607
  margin-block: 0 0.4em;
4668
4608
  }
4669
4609
 
4670
- & + * {
4610
+ &+* {
4671
4611
  margin-block-start: 3em;
4672
4612
  }
4673
4613
 
4674
4614
  /* Body paragraphs after the heading */
4675
- & > p:not(:first-of-type:first-child) {
4615
+ &>p:not(:first-of-type:first-child) {
4676
4616
  color: oklch(from currentColor l c h / 75%);
4677
4617
  font-size: var(--font-size-3);
4678
4618
  line-height: 1.6;
4679
4619
  }
4680
4620
 
4681
- & > p + p {
4621
+ &>p+p {
4682
4622
  margin-block-start: 0.75em;
4683
4623
  }
4684
4624
  }
@@ -4740,7 +4680,7 @@
4740
4680
  margin-block: var(--size-7);
4741
4681
  place-items: center;
4742
4682
 
4743
- & > * {
4683
+ &>* {
4744
4684
  margin-block: 0;
4745
4685
  }
4746
4686
 
@@ -4751,18 +4691,18 @@
4751
4691
  }
4752
4692
 
4753
4693
  /* Remove top margin from first child */
4754
- & > :first-child {
4694
+ &> :first-child {
4755
4695
  margin-block-start: 0;
4756
4696
  }
4757
4697
 
4758
4698
  /* Remove bottom margin from last child */
4759
- & > :last-child {
4699
+ &> :last-child {
4760
4700
  margin-block-end: 0;
4761
4701
  }
4762
4702
 
4763
4703
  /* Horizontal rules */
4764
4704
  hr {
4765
- & + * {
4705
+ &+* {
4766
4706
  margin-block-start: 0;
4767
4707
  }
4768
4708
  }
@@ -4877,21 +4817,21 @@
4877
4817
 
4878
4818
  /* Floating wrapper: traditional inset-based positioning so this works
4879
4819
  in browsers without position-area support (Firefox, older Safari). */
4880
- & > .ui-anchor-floating:not([popover]) {
4820
+ &>.ui-anchor-floating:not([popover]) {
4881
4821
  inset: var(--_badge-inset);
4882
4822
  position-anchor: auto;
4883
4823
  position-area: none;
4884
4824
  }
4885
4825
 
4886
4826
  /* Indicator */
4887
- & > .ui-anchor-floating > .ui-badge-indicator {
4827
+ &>.ui-anchor-floating>.ui-badge-indicator {
4888
4828
  background-color: var(--_bg-color);
4889
4829
  block-size: var(--_size);
4890
4830
  border: 2px solid var(--_border-color);
4891
4831
  border-radius: var(--radius-round);
4892
4832
  color: var(--_text-color);
4893
4833
  display: grid;
4894
- font-size: 12px;
4834
+ font-size: var(--font-size-0);
4895
4835
  font-weight: 500;
4896
4836
  inline-size: max-content;
4897
4837
  line-height: normal;
@@ -4953,7 +4893,7 @@
4953
4893
  --_anchor-ty: var(--_dot-size);
4954
4894
  }
4955
4895
 
4956
- &.ui-dot > .ui-anchor-floating > .ui-badge-indicator {
4896
+ &.ui-dot>.ui-anchor-floating>.ui-badge-indicator {
4957
4897
  block-size: var(--_dot-size);
4958
4898
  inline-size: var(--_dot-size);
4959
4899
  min-inline-size: var(--_dot-size);
@@ -4961,7 +4901,7 @@
4961
4901
  }
4962
4902
 
4963
4903
  /* Visibility */
4964
- &.ui-invisible > .ui-anchor-floating > .ui-badge-indicator {
4904
+ &.ui-invisible>.ui-anchor-floating>.ui-badge-indicator {
4965
4905
  opacity: 0;
4966
4906
  pointer-events: none;
4967
4907
  }
@@ -4981,10 +4921,8 @@
4981
4921
  border-radius: 0;
4982
4922
 
4983
4923
  /* button.css > --_accent-tonal */
4984
- --_divider-color: light-dark(
4985
- oklch(from var(--_accent-tonal) calc(l - 0.1) c h),
4986
- oklch(from var(--_accent-tonal) calc(l + 0.1) c h)
4987
- );
4924
+ --_divider-color: light-dark(oklch(from var(--_accent-tonal) calc(l - 0.1) c h),
4925
+ oklch(from var(--_accent-tonal) calc(l + 0.1) c h));
4988
4926
 
4989
4927
  &.ui-outlined {
4990
4928
  --_divider-color: var(--_border-color);
@@ -4998,9 +4936,7 @@
4998
4936
  outline-offset: -4px;
4999
4937
  }
5000
4938
 
5001
- /* Color inheritance from Button Group — shared interaction model.
5002
- The .critical scope class in theme.css redirects --palette-source so
5003
- --color-6 below becomes a tint of the active color. */
4939
+ /* Color inherited from Button Group. */
5004
4940
  :where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
5005
4941
  --_color-contrast: var(--gray-1);
5006
4942
  --_color-tonal: var(--color-6);
@@ -5008,12 +4944,8 @@
5008
4944
  --_default-hover-bg-color: oklch(from var(--_accent) l c h / 15%);
5009
4945
  --_default-active-bg-color: oklch(from var(--_accent) l c h / 25%);
5010
4946
  --_filled-hover-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
5011
- --_filled-active-bg-color: oklch(
5012
- from var(--_accent) calc(l - 0.15) c h
5013
- );
5014
- --_outlined-active-bg-color: oklch(
5015
- from var(--_accent) calc(l - 0.1) c h
5016
- );
4947
+ --_filled-active-bg-color: oklch(from var(--_accent) calc(l - 0.15) c h);
4948
+ --_outlined-active-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
5017
4949
  }
5018
4950
 
5019
4951
  :where(.ui-button-group.ui-critical) & {
@@ -5077,10 +5009,8 @@
5077
5009
  --_divider-color: currentColor;
5078
5010
 
5079
5011
  :where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
5080
- --_divider-color: light-dark(
5081
- oklch(from var(--_accent) calc(l - 0.1) c h),
5082
- oklch(from var(--_accent) calc(l + 0.1) c h)
5083
- );
5012
+ --_divider-color: light-dark(oklch(from var(--_accent) calc(l - 0.1) c h),
5013
+ oklch(from var(--_accent) calc(l + 0.1) c h));
5084
5014
  }
5085
5015
 
5086
5016
  &:where(:not([disabled])) {
@@ -5108,17 +5038,15 @@
5108
5038
  }
5109
5039
 
5110
5040
  /* Siblings */
5111
- & + & {
5041
+ &+& {
5112
5042
  border-inline-start-color: var(--_divider-color);
5113
5043
  border-inline-width: 1px;
5114
5044
  margin-inline-start: -1px;
5115
5045
 
5116
5046
  &[disabled] {
5117
- border-inline-start-color: color-mix(
5118
- in oklch,
5119
- var(--_divider-color) 40%,
5120
- transparent
5121
- );
5047
+ border-inline-start-color: color-mix(in oklch,
5048
+ var(--_divider-color) 40%,
5049
+ transparent);
5122
5050
  }
5123
5051
  }
5124
5052
  }
@@ -5145,16 +5073,14 @@
5145
5073
  border-end-end-radius: var(--_border-radius);
5146
5074
  }
5147
5075
 
5148
- & + & {
5076
+ &+& {
5149
5077
  border-block-start: 1px solid var(--_divider-color);
5150
5078
  margin-block-start: -1px;
5151
5079
 
5152
5080
  &[disabled] {
5153
- border-block-start-color: color-mix(
5154
- in oklch,
5155
- var(--_divider-color) 40%,
5156
- transparent
5157
- );
5081
+ border-block-start-color: color-mix(in oklch,
5082
+ var(--_divider-color) 40%,
5083
+ transparent);
5158
5084
  }
5159
5085
  }
5160
5086
  }
@@ -5232,7 +5158,7 @@
5232
5158
  }
5233
5159
 
5234
5160
  /* Layout */
5235
- & > summary {
5161
+ &>summary {
5236
5162
  background-color: inherit;
5237
5163
  cursor: pointer;
5238
5164
  font-weight: 700;
@@ -5257,17 +5183,17 @@
5257
5183
  }
5258
5184
  }
5259
5185
 
5260
- &[open] > summary svg {
5186
+ &[open]>summary svg {
5261
5187
  rotate: 180deg;
5262
5188
  }
5263
5189
 
5264
- & > .ui-content {
5190
+ &>.ui-content {
5265
5191
  margin-block-start: 0;
5266
5192
  padding-block: var(--_content-padding-block);
5267
5193
  padding-inline: var(--_content-padding-inline);
5268
5194
  }
5269
5195
 
5270
- & > .ui-actions {
5196
+ &>.ui-actions {
5271
5197
  display: flex;
5272
5198
  gap: var(--_actions-gap);
5273
5199
  justify-content: end;
@@ -5292,12 +5218,12 @@
5292
5218
  }
5293
5219
  }
5294
5220
 
5295
- & > .ui-content {
5221
+ &>.ui-content {
5296
5222
  margin-block: 0;
5297
5223
  padding: 0;
5298
5224
  }
5299
5225
 
5300
- & > details.ui-accordion {
5226
+ &>details.ui-accordion {
5301
5227
  --_border-color: transparent;
5302
5228
  --_border-width: 0;
5303
5229
  --_margin-inline: 0;
@@ -5306,7 +5232,7 @@
5306
5232
  --_summary-padding-inline: var(--_item-summary-padding-inline);
5307
5233
 
5308
5234
  /* Border between accordion items */
5309
- & + & {
5235
+ &+& {
5310
5236
  border-block-start: 1px solid var(--_gutter-color);
5311
5237
  border-radius: 0;
5312
5238
  }
@@ -5904,9 +5830,7 @@ Lists meant to be used stand-alone or as part of Select elements
5904
5830
  }
5905
5831
  }
5906
5832
 
5907
- /* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css.
5908
- This carve-out re-enables page scrolling when a transparent-backdrop drawer is
5909
- open on wide viewports (where the drawer doesn't visually cover the page). */
5833
+ /* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css. */
5910
5834
  html:has(dialog.ui-drawer.ui-scroll-lock[open].ui-backdrop-transparent) {
5911
5835
  overflow: unset;
5912
5836
  overscroll-behavior: auto;
@@ -5919,6 +5843,7 @@ Lists meant to be used stand-alone or as part of Select elements
5919
5843
  }
5920
5844
 
5921
5845
  @layer components.extended {
5846
+
5922
5847
  /* Form */
5923
5848
  :where(.ui-form) {
5924
5849
  display: grid;
@@ -6032,9 +5957,7 @@ Lists meant to be used stand-alone or as part of Select elements
6032
5957
  gap: var(--size-4);
6033
5958
 
6034
5959
  /* If it only has checkboxes, radios, or switches */
6035
- &:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not(
6036
- :has(> :not(.ui-checkbox, .ui-radio, .ui-switch))
6037
- ) {
5960
+ &:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not( :has(> :not(.ui-checkbox, .ui-radio, .ui-switch))) {
6038
5961
  gap: var(--size-2);
6039
5962
  }
6040
5963
 
@@ -6044,13 +5967,13 @@ Lists meant to be used stand-alone or as part of Select elements
6044
5967
  flex-direction: row;
6045
5968
  gap: var(--size-2);
6046
5969
 
6047
- /* If it's not preceeded by an hr */
5970
+ /* If it's not preceded by an hr */
6048
5971
  &:not(hr + &) {
6049
5972
  margin-block-start: var(--size-4);
6050
5973
  }
6051
5974
  }
6052
5975
 
6053
- & + & {
5976
+ &+& {
6054
5977
  margin-block-start: var(--size-5);
6055
5978
  }
6056
5979
 
@@ -6556,11 +6479,10 @@ Lists meant to be used stand-alone or as part of Select elements
6556
6479
  transform: scale(0.9);
6557
6480
  }
6558
6481
 
6559
- transition:
6560
- display calc(0.2s * var(--_motion)) allow-discrete,
6561
- opacity calc(0.2s * var(--_motion)) var(--ease-3),
6562
- overlay calc(0.2s * var(--_motion)) allow-discrete,
6563
- scale calc(0.2s * var(--_motion)) var(--ease-3);
6482
+ transition: display calc(0.2s * var(--_motion)) allow-discrete,
6483
+ opacity calc(0.2s * var(--_motion)) var(--ease-3),
6484
+ overlay calc(0.2s * var(--_motion)) allow-discrete,
6485
+ scale calc(0.2s * var(--_motion)) var(--ease-3);
6564
6486
  }
6565
6487
 
6566
6488
  /* Animation off-stage styles */
@@ -6593,10 +6515,8 @@ Lists meant to be used stand-alone or as part of Select elements
6593
6515
  [role="group"] {
6594
6516
  label {
6595
6517
  background-color: light-dark(var(--gray-3), var(--gray-13));
6596
- color: light-dark(
6597
- oklch(from var(--text-primary) calc(l * 0.75) c h),
6598
- oklch(from var(--text-primary) calc(l * 1.25) c h)
6599
- );
6518
+ color: light-dark(oklch(from var(--text-primary) calc(l * 0.75) c h),
6519
+ oklch(from var(--text-primary) calc(l * 1.25) c h));
6600
6520
  font-weight: 500;
6601
6521
  overflow: hidden;
6602
6522
  padding-inline: var(--size-2);
@@ -6619,6 +6539,7 @@ Lists meant to be used stand-alone or as part of Select elements
6619
6539
 
6620
6540
  /* Option */
6621
6541
  option {
6542
+
6622
6543
  /* Checkmark */
6623
6544
  /* TODO - checkmark should be the final version of the checkmark API. Follow the development of this and remove redundant psuedo stuff. */
6624
6545
  &::check {
@@ -6641,6 +6562,7 @@ Lists meant to be used stand-alone or as part of Select elements
6641
6562
  }
6642
6563
 
6643
6564
  :where(.ui-select:has(select)) {
6565
+
6644
6566
  /* Size */
6645
6567
  &.ui-small {
6646
6568
  button {
@@ -6790,7 +6712,7 @@ Lists meant to be used stand-alone or as part of Select elements
6790
6712
  --_tooltip-color: light-dark(var(--gray-1), var(--gray-15));
6791
6713
  --_tooltip-offset: var(--size-2);
6792
6714
 
6793
- & > .ui-anchor-floating {
6715
+ &>.ui-anchor-floating {
6794
6716
  background-color: var(--_tooltip-bg);
6795
6717
  border-radius: var(--radius-2);
6796
6718
  color: var(--_tooltip-color);
@@ -6812,18 +6734,16 @@ Lists meant to be used stand-alone or as part of Select elements
6812
6734
  text-wrap: pretty;
6813
6735
  }
6814
6736
 
6815
- /* Optional arrow pointing from the tooltip toward the trigger.
6816
- Anchored to the same --anchor so it flips together with the
6817
- tooltip when position-try-fallbacks kicks in. */
6737
+ /* Arrow */
6818
6738
  &.ui-with-arrow {
6819
6739
  --_arrow-size: var(--size-2);
6820
6740
 
6821
- & > .ui-anchor-floating {
6822
- /* Reserve space so the arrow doesn't overlap the trigger. */
6741
+ &>.ui-anchor-floating {
6742
+ /* Offset so the arrow doesn't overlap the trigger. */
6823
6743
  --_tooltip-offset: calc(var(--size-2) + var(--_arrow-size) / 2);
6824
6744
  }
6825
6745
 
6826
- & > .ui-anchor-floating::before {
6746
+ &>.ui-anchor-floating::before {
6827
6747
  background-color: var(--_tooltip-bg);
6828
6748
  block-size: var(--_arrow-size);
6829
6749
  content: "";
@@ -6837,7 +6757,7 @@ Lists meant to be used stand-alone or as part of Select elements
6837
6757
  }
6838
6758
 
6839
6759
  /* Fade */
6840
- & > .ui-anchor-floating[popover] {
6760
+ &>.ui-anchor-floating[popover] {
6841
6761
  opacity: 0;
6842
6762
  transition:
6843
6763
  display 0.15s allow-discrete,
@@ -6858,9 +6778,9 @@ Lists meant to be used stand-alone or as part of Select elements
6858
6778
  /* Utils */
6859
6779
 
6860
6780
  @layer utils {
6781
+
6861
6782
  /*
6862
6783
  Screen-reader only
6863
- When you visibly want to hide an element but make it accessible for screen readers.
6864
6784
  */
6865
6785
  .ui-sr-only {
6866
6786
  block-size: 1px;
@@ -6917,8 +6837,7 @@ Add `.ui-scroll-lock` to any element that uses the [open] attribute (native <dia
6917
6837
  inset-inline-start: 50%;
6918
6838
  position: absolute;
6919
6839
  transform-origin: center center;
6920
- transform: translateX(calc(var(--isRTL) * 50%)) translateY(-50%)
6921
- translateZ(-1px) scale(var(--thumb-scale));
6840
+ transform: translateX(calc(var(--isRTL) * 50%)) translateY(-50%) translateZ(-1px) scale(var(--thumb-scale));
6922
6841
  will-change: transform;
6923
6842
 
6924
6843
  transition: transform calc(0.2s * var(--motion, 1)) ease;