@scattered-light/loomiere-mojave 0.15.5 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1456,12 +1456,9 @@
1456
1456
  --sl-focus-outline-offset: var(--sl-a11y-focus-outline-offset); /** Outside ring: a gap between the control and the ring so it never blends into the control border. The default. */
1457
1457
  --sl-focus-outline-offset-inset: calc(-1 * var(--sl-a11y-focus-outline-width)); /** Inset ring: drawn just inside the control's edge, for controls packed into a container (menus, tab lists, steppers) where an outside ring would be clipped or overlap a neighbor. */
1458
1458
  --sl-focus-halo-spread: calc(var(--sl-a11y-focus-outline-offset) + var(--sl-a11y-focus-outline-width) + 2px); /** A soft glow just outside the focus ring: the gap, the ring, then 2px of tint. The ring carries the contrast (WCAG 1.4.11), so the glow can stay pale. */
1459
- --sl-bar-padding: var(--sl-space-1); /** Space between the strip's edge and its controls, small so the controls nearly fill it. */
1460
1459
  --sl-bar-gap: var(--sl-space-1); /** Space between controls in one group. */
1461
- --sl-bar-group-gap: var(--sl-space-2); /** Space between groups in a toolbar, wider than inside a group. */
1462
1460
  --sl-bar-separator-length: var(--sl-space-6); /** Divider height, shorter than the controls so the groups still read as one strip. */
1463
1461
  --sl-bar-separator-spacing: var(--sl-space-1); /** Extra space either side of a divider. */
1464
- --sl-calendar-day-size: var(--sl-space-10); /** A day cell on a pointer. space.10 keeps seven columns inside a phone; touch layouts raise the cell to the minimum touch target in CSS. */
1465
1462
  --sl-calendar-grid-gap: var(--sl-space-0-5); /** Space between week rows. Days in a week share an edge, so the range band reads as one shape. */
1466
1463
  --sl-calendar-month-gap: var(--sl-space-4); /** Space between months shown side by side, the same step as panel padding so the two columns line up. */
1467
1464
  --sl-calendar-header-gap: var(--sl-space-2); /** Space between the month title and the weekday row. */
@@ -1916,6 +1913,10 @@
1916
1913
  --sl-slider-thumb-size: var(--sl-space-5); /** Knob diameter, big enough to grab with a finger on a 4px track. */
1917
1914
  --sl-splitter-handle-hit-size: var(--sl-a11y-min-touch-target); /** The part a finger grabs. The line stays one stroke. A fine pointer uses a11y.min-target (24px) instead, so the grab area does not cover the panel's scrollbar. Coarse pointers keep this 44px. */
1918
1915
  --sl-splitter-grip-size: var(--sl-space-1); /** 4px. The diameter of one grip dot. Small enough to sit on the hairline without becoming a second control. */
1916
+ --sl-stat-card-rule-width: var(--sl-stroke-medium); /** The rule across the top of the card, as on a sheet. */
1917
+ --sl-stat-card-header-padding-block: var(--sl-space-3); /** Space above and below the name and caption. */
1918
+ --sl-stat-card-padding-inline: var(--sl-space-4); /** Space either side of the name, the figures and the footer. */
1919
+ --sl-stat-card-facts-padding-block: var(--sl-space-2-5); /** Space above and below each figure. */
1919
1920
  --sl-stat-figure-figure-font-size: var(--sl-font-size-4xl); /** Size of the figure. Large enough to lead the page, a step under the page title. */
1920
1921
  --sl-stat-figure-figure-font-size-sm: var(--sl-font-size-2xl); /** Size of the figure at size="sm", for a row of figures in a card or a sheet header. */
1921
1922
  --sl-stat-figure-figure-line-height: var(--sl-line-height-4xl); /** Line height paired with figure-font-size. */
@@ -1954,8 +1955,8 @@
1954
1955
  --sl-color-chrome-on-1100: var(--sl-color-neutral-on-1100);
1955
1956
  --sl-color-chrome-on-1200: var(--sl-color-neutral-on-1200);
1956
1957
  --sl-a11y-focus-ring-radius: var(--sl-radius-focus); /** Rounds the focus ring to match the small control radius. */
1958
+ --sl-bar-border-width: var(--sl-stroke-default); /** Strip edge thickness. */
1957
1959
  --sl-bar-radius: var(--sl-radius-surface); /** Strip corners. Controls inside a toggle group take radius.item, so the inner corners follow the outer ones. */
1958
- --sl-calendar-day-radius: var(--sl-radius-pill); /** Selected days are circles. The pill radius is the same full radius badges and switches use. */
1959
1960
  --sl-check-border-width: var(--sl-stroke-default); /** Edge thickness. */
1960
1961
  --sl-check-radius: var(--sl-radius-box); /** Checkbox corners. Radios are always round. */
1961
1962
  --sl-check-transition: var(--sl-transition-input); /** Changes at the same speed as a field. */
@@ -2188,8 +2189,9 @@
2188
2189
  --sl-side-nav-item-height: var(--sl-control-height-md); /** Least height of a row: the regular control height, so a row is as tall as a button. */
2189
2190
  --sl-side-nav-toggle-radius: var(--sl-radius-control); /** The collapse handle's corners. */
2190
2191
  --sl-splitter-handle-size: var(--sl-stroke-default); /** The visible separator. One stroke, the same hairline as Separator, so a splitter reads as a divider you can grab. */
2192
+ --sl-stat-card-border-width: var(--sl-stroke-default); /** Thickness of the sides and bottom. */
2193
+ --sl-stat-card-radius: var(--sl-radius-surface); /** Corners, like any card or panel. */
2191
2194
  --sl-focus-shadow-3px-error: 0 0 0 3px var(--sl-status-error); /** Focus halo for a field with an error. */
2192
- --sl-calendar-day-color: var(--sl-text-primary); /** A day in the month being shown. */
2193
2195
  --sl-border-accent: var(--sl-scope-accent-border); /** Borders that signal selection or the active item. */
2194
2196
  --sl-border-default: var(--sl-scope-chrome-divider); /** Everyday dividers and control outlines. Darkens under prefers-contrast: more. */
2195
2197
  --sl-border-strong: var(--sl-scope-chrome-border-strong); /** Borders that identify a control, such as inputs and unchecked checkboxes. 3:1 against the canvas, as WCAG asks for control boundaries. */
@@ -2204,6 +2206,13 @@
2204
2206
  --sl-interactive-tint-hover: var(--sl-scope-accent-soft-hover); /** Accent wash for a highlighted menu item or a pressed toggle. */
2205
2207
  --sl-interactive-tint-active: var(--sl-scope-accent-soft-active); /** Accent wash for a selected or pressed item: one step past tint-hover. */
2206
2208
  --sl-interactive-tint-strong: var(--sl-scope-accent-soft-strong); /** Strongest accent wash, for hovering an item that is already pressed. */
2209
+ --sl-focus-ring: var(--sl-interactive-default); /** Focus ring color. Uses the interactive accent so focus reads as "this is the thing you can act on". */
2210
+ --sl-focus-outline: var(--sl-a11y-focus-outline-width) solid var(--sl-focus-ring); /** The one keyboard focus ring. Every control uses it, outside or inset. */
2211
+ --sl-bar-padding: var(--sl-space-1); /** Space between the strip's edge and its controls, small so the controls nearly fill it. */
2212
+ --sl-bar-group-gap: var(--sl-space-2); /** Space between groups in a toolbar, wider than inside a group. */
2213
+ --sl-calendar-day-size: var(--sl-space-10); /** A day cell on a pointer. space.10 keeps seven columns inside a phone; touch layouts raise the cell to the minimum touch target in CSS. */
2214
+ --sl-calendar-day-radius: var(--sl-radius-pill); /** Selected days are circles. The pill radius is the same full radius badges and switches use. */
2215
+ --sl-calendar-day-color: var(--sl-text-primary); /** A day in the month being shown. */
2207
2216
  --sl-surface-canvas: var(--sl-scope-chrome-canvas); /** The page itself. Paper in light mode, the darkest neutral in dark mode. */
2208
2217
  --sl-surface-overlay: var(--sl-scope-chrome-overlay); /** Popups, menus and code blocks that sit above raised surfaces. */
2209
2218
  --sl-surface-raised: var(--sl-scope-chrome-raised); /** Cards and panels one level above the canvas. */
@@ -2225,9 +2234,6 @@
2225
2234
  --sl-content-prose-color: var(--sl-text-primary); /** Long-form body text. The same as body text, so prose and UI read as one voice. */
2226
2235
  --sl-content-selection-text: var(--sl-text-primary); /** Selected text stays body text so it reads the same on the tint. */
2227
2236
  --sl-field-border-color-error: var(--sl-status-error); /** Field edge when the value is invalid. */
2228
- --sl-focus-ring: var(--sl-interactive-default); /** Focus ring color. Uses the interactive accent so focus reads as "this is the thing you can act on". */
2229
- --sl-focus-outline: var(--sl-a11y-focus-outline-width) solid var(--sl-focus-ring); /** The one keyboard focus ring. Every control uses it, outside or inset. */
2230
- --sl-bar-border-width: var(--sl-stroke-default); /** Strip edge thickness. */
2231
2237
  --sl-field-color: var(--sl-text-primary); /** The value you typed. */
2232
2238
  --sl-gauge-label-color: var(--sl-text-primary); /** What is being measured. */
2233
2239
  --sl-icon-button-color-hover: var(--sl-text-primary); /** Darkens on hover to confirm it's the target. */
@@ -2399,6 +2405,12 @@
2399
2405
  --sl-side-nav-count-color-quiet: var(--sl-text-secondary); /** A count that is only information (tone="quiet"), such as a total. */
2400
2406
  --sl-side-nav-group-label-color: var(--sl-text-secondary); /** A group heading's caps label. */
2401
2407
  --sl-side-nav-toggle-background: var(--sl-surface-raised); /** The collapse handle's fill. */
2408
+ --sl-stat-card-background: var(--sl-surface-raised); /** The card's fill: the raised surface, like a sheet. */
2409
+ --sl-stat-card-background-hover: var(--sl-fill-subtle); /** The fill under the pointer on a card that opens something. */
2410
+ --sl-stat-card-border-color: var(--sl-border-default); /** The card's sides and bottom. */
2411
+ --sl-stat-card-facts-divider-color: var(--sl-border-subtle); /** The hairline between figures. */
2412
+ --sl-stat-card-caption-color: var(--sl-text-secondary); /** The caption under the name. */
2413
+ --sl-stat-card-footer-border-color: var(--sl-border-subtle); /** The hairline above the footer. */
2402
2414
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent); /** The figure's color at tone="accent", for a figure that asks for action (open questions, items to review). */
2403
2415
  --sl-stat-figure-label-color: var(--sl-text-secondary); /** The caps label above the figure. */
2404
2416
  --sl-stat-figure-caption-color: var(--sl-text-secondary); /** The caption under the figure. */
@@ -2427,6 +2439,7 @@
2427
2439
  --sl-sheet-rule-color: var(--sl-rule-color); /** The top rule's color: the working-paper rule color, so sheets and ruled tables match. */
2428
2440
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface); /** Text on the tab label. */
2429
2441
  --sl-side-nav-indicator-color: var(--sl-rule-color); /** The current row's line: the working-paper rule color, so the nav and the sheets share one ink. */
2442
+ --sl-stat-card-rule-color: var(--sl-rule-color); /** The top rule's color, and the rule above the figures. */
2430
2443
  --sl-stat-figure-underline-color: var(--sl-rule-color); /** The double underline's color: the working-paper rule color, like a grand total's double rule. */
2431
2444
  --sl-toggle-group-segmented-border-color: var(--sl-rule-color); /** The outline around a segmented group and the line between its toggles. The rule color, so it is a control edge by default and ink with an ink rule. */
2432
2445
  --sl-toggle-group-segmented-pressed-color: var(--sl-text-on-inverse); /** Text on the pressed toggle. */
@@ -5952,6 +5965,13 @@
5952
5965
  --sl-side-nav-group-label-color: var(--sl-text-secondary);
5953
5966
  --sl-side-nav-toggle-background: var(--sl-surface-raised);
5954
5967
  --sl-side-nav-toggle-border-color: var(--sl-text-primary);
5968
+ --sl-stat-card-background: var(--sl-surface-raised);
5969
+ --sl-stat-card-background-hover: var(--sl-fill-subtle);
5970
+ --sl-stat-card-border-color: var(--sl-border-default);
5971
+ --sl-stat-card-rule-color: var(--sl-rule-color);
5972
+ --sl-stat-card-facts-divider-color: var(--sl-border-subtle);
5973
+ --sl-stat-card-caption-color: var(--sl-text-secondary);
5974
+ --sl-stat-card-footer-border-color: var(--sl-border-subtle);
5955
5975
  --sl-stat-figure-figure-color: var(--sl-text-primary);
5956
5976
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
5957
5977
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6142,6 +6162,13 @@
6142
6162
  --sl-side-nav-group-label-color: var(--sl-text-secondary);
6143
6163
  --sl-side-nav-toggle-background: var(--sl-surface-raised);
6144
6164
  --sl-side-nav-toggle-border-color: var(--sl-text-primary);
6165
+ --sl-stat-card-background: var(--sl-surface-raised);
6166
+ --sl-stat-card-background-hover: var(--sl-fill-subtle);
6167
+ --sl-stat-card-border-color: var(--sl-border-default);
6168
+ --sl-stat-card-rule-color: var(--sl-rule-color);
6169
+ --sl-stat-card-facts-divider-color: var(--sl-border-subtle);
6170
+ --sl-stat-card-caption-color: var(--sl-text-secondary);
6171
+ --sl-stat-card-footer-border-color: var(--sl-border-subtle);
6145
6172
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6146
6173
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6147
6174
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6332,6 +6359,13 @@
6332
6359
  --sl-side-nav-group-label-color: var(--sl-text-secondary);
6333
6360
  --sl-side-nav-toggle-background: var(--sl-surface-raised);
6334
6361
  --sl-side-nav-toggle-border-color: var(--sl-text-primary);
6362
+ --sl-stat-card-background: var(--sl-surface-raised);
6363
+ --sl-stat-card-background-hover: var(--sl-fill-subtle);
6364
+ --sl-stat-card-border-color: var(--sl-border-default);
6365
+ --sl-stat-card-rule-color: var(--sl-rule-color);
6366
+ --sl-stat-card-facts-divider-color: var(--sl-border-subtle);
6367
+ --sl-stat-card-caption-color: var(--sl-text-secondary);
6368
+ --sl-stat-card-footer-border-color: var(--sl-border-subtle);
6335
6369
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6336
6370
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6337
6371
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6697,7 +6731,7 @@
6697
6731
  }
6698
6732
 
6699
6733
 
6700
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
6734
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
6701
6735
  /* Loomiere for Base UI: component styles. Brand-free: every value is a --sl- variable from a
6702
6736
  Loomiere theme. Load the theme first:
6703
6737
  @import '<your theme>/tokens.css';
@@ -6707,7 +6741,7 @@
6707
6741
  /* Document defaults, in the reset layer so any unlayered rule wins over them, and so layered
6708
6742
  frameworks (Chakra's recipes, Tailwind's utilities) are not undone by them. */
6709
6743
  @layer reset {
6710
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
6744
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
6711
6745
  /* CSS Reset - Mojave Theme */
6712
6746
 
6713
6747
  /* ============================================
@@ -7151,7 +7185,7 @@ hr {
7151
7185
  }
7152
7186
  }
7153
7187
  @layer reset {
7154
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7188
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7155
7189
  /* Accessibility — base rules (no theme color dependencies). Theme-specific focus/invalid: accessibility-theme.css */
7156
7190
 
7157
7191
  /* Remove default focus; keyboard focus styled in accessibility-theme.css */
@@ -7264,7 +7298,7 @@ main:focus {
7264
7298
 
7265
7299
  }
7266
7300
  @layer reset {
7267
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7301
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7268
7302
  /* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
7269
7303
 
7270
7304
  :focus-visible {
@@ -7332,7 +7366,7 @@ button,
7332
7366
 
7333
7367
  }
7334
7368
  /* Component styles */
7335
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7369
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7336
7370
  /* Accordion - Mojave Theme
7337
7371
  *
7338
7372
  * No component tokens. Hover, press, chevron, divider and motion are the disclosure
@@ -7453,7 +7487,7 @@ button,
7453
7487
  overflow: hidden;
7454
7488
  }
7455
7489
 
7456
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7490
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7457
7491
  /* Alert Dialog - Mojave Theme
7458
7492
  *
7459
7493
  * No component tokens and no rules of its own. An alert dialog looks exactly like a
@@ -7462,7 +7496,7 @@ button,
7462
7496
  * cancel quiet, and a destructive one bold with data-color="error".
7463
7497
  */
7464
7498
 
7465
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7499
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7466
7500
  /* Autocomplete - Mojave Theme
7467
7501
  *
7468
7502
  * No component tokens. The input is Input (Input.css), the clear button is an icon
@@ -7664,7 +7698,7 @@ button,
7664
7698
  (reset-accessibility.css).
7665
7699
  ============================================ */
7666
7700
 
7667
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7701
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7668
7702
  /* Avatar - Mojave Theme
7669
7703
  *
7670
7704
  * A round picture with a ring in the page color, so avatars in a group cut out of each other in
@@ -7772,7 +7806,7 @@ button,
7772
7806
  }
7773
7807
  }
7774
7808
 
7775
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7809
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7776
7810
  /* Button - Mojave Theme
7777
7811
  *
7778
7812
  * Colors are the brand's emphasis levels, sizes are control.*, text is the trigger
@@ -7922,7 +7956,7 @@ button,
7922
7956
  font-size: var(--sl-icon-size-maximize);
7923
7957
  }
7924
7958
 
7925
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
7959
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
7926
7960
  /* Checkbox - Mojave Theme
7927
7961
  * Sizes follow the label: the box is the icon size one tier above the label's text
7928
7962
  * tier (like a button's icon) and the check mark one tier below it.
@@ -8079,7 +8113,7 @@ button,
8079
8113
  border-radius: var(--sl-radius-pill);
8080
8114
  }
8081
8115
 
8082
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
8116
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
8083
8117
  /* Checkbox Group - Mojave Theme */
8084
8118
 
8085
8119
  /* Each checkbox row is already a full tap target tall, so the rows sit close. */
@@ -8095,7 +8129,7 @@ button,
8095
8129
  pointer-events: none;
8096
8130
  }
8097
8131
 
8098
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
8132
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
8099
8133
  /* Collapsible - Mojave Theme
8100
8134
  *
8101
8135
  * No component tokens. Hover, press, chevron and motion are the disclosure concept
@@ -8211,7 +8245,7 @@ button,
8211
8245
  background: var(--sl-surface-raised);
8212
8246
  }
8213
8247
 
8214
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
8248
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
8215
8249
  /* Combobox - Mojave Theme
8216
8250
  *
8217
8251
  * No component tokens. The input is Input (Input.css); the chips box is a field; the
@@ -8696,7 +8730,7 @@ button,
8696
8730
  color: var(--sl-text-tertiary);
8697
8731
  }
8698
8732
 
8699
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
8733
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
8700
8734
  /* Context Menu - Mojave Theme
8701
8735
  *
8702
8736
  * No component tokens. Opens on right-click; the trigger area only sets the cursor. The popup is the popup concept, rows are item rows at the
@@ -8865,7 +8899,7 @@ button,
8865
8899
  stroke-width: var(--sl-stroke-default);
8866
8900
  }
8867
8901
 
8868
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
8902
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
8869
8903
  /* Dialog and Alert dialog - Mojave Theme
8870
8904
  *
8871
8905
  * Both are centered modals built from the modal concept (tokens/semantic/modal.json):
@@ -9011,7 +9045,7 @@ button,
9011
9045
  margin-top: var(--sl-modal-actions-spacing);
9012
9046
  }
9013
9047
 
9014
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9048
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9015
9049
  /* Drawer - a panel that slides in from an edge and can be swiped away.
9016
9050
  The surface, scrim, heading and motion are the modal concept's (--sl-modal-*), so a
9017
9051
  drawer reads as a dialog's sibling; only its size and grab bar are its own
@@ -9144,7 +9178,7 @@ button,
9144
9178
  color: var(--sl-modal-description-color);
9145
9179
  }
9146
9180
 
9147
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9181
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9148
9182
  /* Field - Mojave Theme
9149
9183
  *
9150
9184
  * Label, control, description and error. No component tokens: spacing is the field
@@ -9205,7 +9239,7 @@ textarea.FieldControl {
9205
9239
  height: auto;
9206
9240
  }
9207
9241
 
9208
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9242
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9209
9243
  /* Fieldset - Mojave Theme
9210
9244
  *
9211
9245
  * No component tokens: a titled group of fields, spaced by the stack gaps, with
@@ -9247,7 +9281,7 @@ textarea.FieldControl {
9247
9281
  color: var(--sl-text-secondary);
9248
9282
  }
9249
9283
 
9250
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9284
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9251
9285
  /* Form - Mojave Theme
9252
9286
  *
9253
9287
  * No component tokens: fields stack with the large block space, and the action
@@ -9267,7 +9301,7 @@ textarea.FieldControl {
9267
9301
  margin-top: var(--sl-space-block-md);
9268
9302
  }
9269
9303
 
9270
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9304
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9271
9305
  /* Input - Mojave Theme
9272
9306
  *
9273
9307
  * No component tokens: the look is the field concept (tokens/semantic/field.json),
@@ -9305,6 +9339,16 @@ textarea.FieldControl {
9305
9339
  padding-inline: var(--sl-control-padding-inline);
9306
9340
  }
9307
9341
 
9342
+ /* Search fields draw their own clear button where they want one, so the browser's built-in
9343
+ one must not show a second x. */
9344
+ .Input[type='search']::-webkit-search-cancel-button,
9345
+ .FieldControl[type='search']::-webkit-search-cancel-button,
9346
+ .AutocompleteInput[type='search']::-webkit-search-cancel-button {
9347
+ -webkit-appearance: none;
9348
+ appearance: none;
9349
+ display: none;
9350
+ }
9351
+
9308
9352
  .Input::placeholder,
9309
9353
  .FieldControl::placeholder,
9310
9354
  .NumberFieldInput::placeholder,
@@ -9404,7 +9448,7 @@ textarea.FieldControl {
9404
9448
  padding-inline: var(--sl-control-padding-inline-lg);
9405
9449
  }
9406
9450
 
9407
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9451
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9408
9452
  /* Menu - Mojave Theme
9409
9453
  *
9410
9454
  * No component tokens. The trigger is a Button. The popup is the popup concept, rows are item rows at the
@@ -9553,7 +9597,7 @@ textarea.FieldControl {
9553
9597
  color: var(--sl-text-tertiary);
9554
9598
  }
9555
9599
 
9556
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9600
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9557
9601
  /* Menubar - Mojave Theme
9558
9602
  *
9559
9603
  * No component tokens. A row of quiet triggers, each opening a menu. The popup is the popup concept, rows are item rows at the
@@ -9746,7 +9790,7 @@ textarea.FieldControl {
9746
9790
  color: var(--sl-text-tertiary);
9747
9791
  }
9748
9792
 
9749
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9793
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9750
9794
  /* Meter - Mojave Theme
9751
9795
  *
9752
9796
  * A gauge (tokens/semantic/gauge.json). The fill is the solid color of the scope around it:
@@ -9809,7 +9853,7 @@ textarea.FieldControl {
9809
9853
  height: var(--sl-gauge-height-lg);
9810
9854
  }
9811
9855
 
9812
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
9856
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
9813
9857
  /* Navigation Menu - Mojave Theme
9814
9858
  *
9815
9859
  * The strip is the bar concept, the panel is the popup concept and each link is an item
@@ -10229,7 +10273,7 @@ textarea.FieldControl {
10229
10273
  width: 100%;
10230
10274
  }
10231
10275
 
10232
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10276
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10233
10277
  /* Number Field - Mojave Theme
10234
10278
  *
10235
10279
  * No component tokens. The input is Input (Input.css) and the label, description and
@@ -10320,7 +10364,7 @@ textarea.FieldControl {
10320
10364
  user-select: none;
10321
10365
  }
10322
10366
 
10323
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10367
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10324
10368
  /* OTP Field - Mojave Theme
10325
10369
  *
10326
10370
  * One-time code entry: a row of single-character inputs. Each slot is the same control as Input
@@ -10383,7 +10427,7 @@ textarea.FieldControl {
10383
10427
  letter-spacing: var(--sl-font-body-magnify-letter-spacing);
10384
10428
  }
10385
10429
 
10386
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10430
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10387
10431
  /* Popover - Mojave Theme */
10388
10432
 
10389
10433
  /* ============================================
@@ -10548,7 +10592,7 @@ textarea.FieldControl {
10548
10592
  fill: var(--sl-popup-arrow-stroke);
10549
10593
  }
10550
10594
 
10551
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10595
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10552
10596
  /* Preview Card - Mojave Theme
10553
10597
  *
10554
10598
  * The popup concept (surface, arrow, motion) with a title-magnify title and condense
@@ -10665,7 +10709,7 @@ textarea.FieldControl {
10665
10709
  fill: var(--sl-popup-arrow-stroke);
10666
10710
  }
10667
10711
 
10668
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10712
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10669
10713
  /* Progress - Mojave Theme
10670
10714
  *
10671
10715
  * A gauge (tokens/semantic/gauge.json), the same bar as Meter. The fill is the solid color of
@@ -10742,7 +10786,7 @@ textarea.FieldControl {
10742
10786
  height: var(--sl-gauge-height-lg);
10743
10787
  }
10744
10788
 
10745
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10789
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10746
10790
  /* Radio - Mojave Theme
10747
10791
  * Same box as Checkbox, always round. Sizes follow the label the same way, and the
10748
10792
  * dot is a share of the circle (check.dot-scale).
@@ -10894,7 +10938,7 @@ textarea.FieldControl {
10894
10938
  gap: var(--sl-gap-stack-sm);
10895
10939
  }
10896
10940
 
10897
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
10941
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10898
10942
  /* Scroll Area - Mojave Theme
10899
10943
  *
10900
10944
  * The scrollbar is the content scrollbar (content.scrollbar-*): a track that stays clear until
@@ -10976,7 +11020,7 @@ textarea.FieldControl {
10976
11020
  background: transparent;
10977
11021
  }
10978
11022
 
10979
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11023
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
10980
11024
  /* Select - Mojave Theme
10981
11025
  *
10982
11026
  * The trigger is a field (the field pattern, control sizes, the base text style); the
@@ -11261,7 +11305,7 @@ textarea.FieldControl {
11261
11305
  stroke-width: var(--sl-stroke-default);
11262
11306
  }
11263
11307
 
11264
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11308
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11265
11309
  /* Separator - Mojave Theme
11266
11310
  *
11267
11311
  * A hairline in the everyday divider color (border.default), one stroke thick, with a step of
@@ -11289,7 +11333,7 @@ textarea.FieldControl {
11289
11333
  margin-inline: var(--sl-space-4);
11290
11334
  }
11291
11335
 
11292
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11336
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11293
11337
  /* Slider - Mojave Theme
11294
11338
  *
11295
11339
  * A slider is a gauge you can drag: the track, fill and label row are gauge.* (the same bar as
@@ -11455,7 +11499,7 @@ textarea.FieldControl {
11455
11499
  transform: translate(-50%, 50%);
11456
11500
  }
11457
11501
 
11458
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11502
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11459
11503
  /* Switch - Mojave Theme
11460
11504
  * Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
11461
11505
  * worked out from them: the thumb fills the track's height inside the padding,
@@ -11621,7 +11665,7 @@ textarea.FieldControl {
11621
11665
  color: var(--sl-text-disabled);
11622
11666
  }
11623
11667
 
11624
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11668
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11625
11669
  /* Tabs - Mojave Theme
11626
11670
  *
11627
11671
  * No component tokens. The divider, the selected line and color, hover and the disabled
@@ -11757,7 +11801,7 @@ textarea.FieldControl {
11757
11801
  padding: var(--sl-space-6);
11758
11802
  }
11759
11803
 
11760
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
11804
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11761
11805
  /* Toast - Mojave Theme
11762
11806
  *
11763
11807
  * A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
@@ -11993,7 +12037,7 @@ textarea.FieldControl {
11993
12037
  flex-shrink: 0;
11994
12038
  }
11995
12039
 
11996
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12040
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
11997
12041
  /* Toggle - Mojave Theme
11998
12042
  * A toggle is a button that stays pressed: the same heights, padding, gap and
11999
12043
  * trigger text style as a button of the same size. Pressed, it takes its emphasis level's
@@ -12105,7 +12149,7 @@ textarea.FieldControl {
12105
12149
  height: var(--sl-icon-size-maximize);
12106
12150
  }
12107
12151
 
12108
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12152
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12109
12153
  /* Toggle Group - Mojave Theme
12110
12154
  *
12111
12155
  * No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
@@ -12167,7 +12211,7 @@ textarea.FieldControl {
12167
12211
  outline-offset: var(--sl-focus-outline-offset-inset);
12168
12212
  }
12169
12213
 
12170
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12214
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12171
12215
  /* Toolbar - Mojave Theme
12172
12216
  *
12173
12217
  * The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
@@ -12229,7 +12273,7 @@ textarea.FieldControl {
12229
12273
  max-width: var(--sl-toolbar-input-max-width);
12230
12274
  }
12231
12275
 
12232
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12276
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12233
12277
  /* Tooltip - Mojave Theme
12234
12278
  *
12235
12279
  * The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
@@ -12290,7 +12334,7 @@ textarea.FieldControl {
12290
12334
  }
12291
12335
 
12292
12336
  /* Custom components: not Base UI parts. Built from existing concepts and tokens. */
12293
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12337
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12294
12338
  /* Badge
12295
12339
  *
12296
12340
  * A status or count label. Not a Base UI part, and not interactive: no hover or focus.
@@ -12395,7 +12439,7 @@ textarea.FieldControl {
12395
12439
  height: var(--sl-badge-dot-base);
12396
12440
  }
12397
12441
 
12398
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
12442
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12399
12443
  /*
12400
12444
  * DatePicker: a field that opens a calendar for one date or a period.
12401
12445
  * Not a Base UI part. The popup is Popover on a wide viewport and Drawer
@@ -12968,7 +13012,7 @@ textarea.FieldControl {
12968
13012
  flex-basis: 100%;
12969
13013
  }
12970
13014
 
12971
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
13015
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
12972
13016
  /* Money field
12973
13017
  *
12974
13018
  * An amount of money, built on Number field. The value is an integer in minor units
@@ -13313,7 +13357,7 @@ textarea.FieldControl {
13313
13357
  letter-spacing: var(--sl-font-body-base-letter-spacing);
13314
13358
  }
13315
13359
 
13316
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
13360
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
13317
13361
  /* ListDetail
13318
13362
  *
13319
13363
  * The detail of one item, next to its list. Not a Base UI part. It is a Splitter
@@ -13440,7 +13484,7 @@ textarea.FieldControl {
13440
13484
  background: transparent;
13441
13485
  }
13442
13486
 
13443
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
13487
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
13444
13488
  /* Splitter
13445
13489
  *
13446
13490
  * Two or more panels and a handle between them. Not a Base UI part. It follows the
@@ -13648,7 +13692,7 @@ textarea.FieldControl {
13648
13692
  background: var(--sl-border-default);
13649
13693
  }
13650
13694
 
13651
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
13695
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
13652
13696
  /* EmptyState
13653
13697
  *
13654
13698
  * The block a page, pane, table, list or popup shows when it has nothing to show.
@@ -13904,7 +13948,7 @@ textarea.FieldControl {
13904
13948
  color: inherit;
13905
13949
  }
13906
13950
 
13907
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
13951
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
13908
13952
  /* Table - Mojave Theme
13909
13953
  *
13910
13954
  * Base UI has no table, so this styles the native <table class="Table"> elements with the
@@ -14181,7 +14225,7 @@ textarea.FieldControl {
14181
14225
  color: inherit;
14182
14226
  }
14183
14227
 
14184
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14228
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14185
14229
  /* Collection
14186
14230
  *
14187
14231
  * DataTable, DataList, the toolbar and the pagination, in one place so the two views
@@ -14192,7 +14236,7 @@ textarea.FieldControl {
14192
14236
  * the tabs and the search where they are, so selecting rows does not grow the toolbar.
14193
14237
  */
14194
14238
 
14195
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14239
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14196
14240
  /* Collection toolbar
14197
14241
  *
14198
14242
  * The wrap follows the toolbar's own width, not the window: a table in a narrow pane wraps
@@ -14358,7 +14402,7 @@ textarea.FieldControl {
14358
14402
  border-block-end: var(--sl-stroke-default) solid var(--sl-table-border-color);
14359
14403
  }
14360
14404
 
14361
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14405
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14362
14406
  /* DataTable additions on top of .Table.
14363
14407
  *
14364
14408
  * Sort buttons fill the header cell and inherit its hover, so old aria-sort markup keeps
@@ -14557,7 +14601,7 @@ textarea.FieldControl {
14557
14601
  }
14558
14602
  }
14559
14603
 
14560
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14604
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14561
14605
  /* DataList
14562
14606
  *
14563
14607
  * The same rows as the table, in one container with the table's borders, hover, selected
@@ -14699,7 +14743,7 @@ textarea.FieldControl {
14699
14743
  transition: opacity var(--sl-duration-fast) var(--sl-easing-default);
14700
14744
  }
14701
14745
 
14702
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14746
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14703
14747
  /* Pagination
14704
14748
  *
14705
14749
  * Not tied to a collection. Anything with a page, a page count and a total can use it.
@@ -14724,7 +14768,7 @@ textarea.FieldControl {
14724
14768
  margin: 0;
14725
14769
  }
14726
14770
 
14727
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14771
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14728
14772
  /* EditableList
14729
14773
  *
14730
14774
  * One table at every width, so a field is not submitted twice. Under the stack width each
@@ -14823,7 +14867,7 @@ textarea.FieldControl {
14823
14867
  }
14824
14868
  }
14825
14869
 
14826
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14870
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14827
14871
  /* Sheet
14828
14872
  *
14829
14873
  * A working-paper surface: the raised surface with a heavier rule across its top
@@ -14922,7 +14966,7 @@ textarea.FieldControl {
14922
14966
  border-top: 0;
14923
14967
  }
14924
14968
 
14925
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
14969
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14926
14970
  /* StatFigure
14927
14971
  *
14928
14972
  * One large figure with a caps label above and a caption under it. The label is
@@ -14983,7 +15027,104 @@ textarea.FieldControl {
14983
15027
  color: var(--sl-stat-figure-caption-color);
14984
15028
  }
14985
15029
 
14986
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
15030
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
15031
+ /* StatCard
15032
+ *
15033
+ * A card for one thing a page lists: a name (the heading), a caption, and a row of StatFigures
15034
+ * ruled off under them. With data-interactive the title is a link or a button and its ::after
15035
+ * covers the card, so the whole card is the target and the title names it. The hover fill and
15036
+ * the focus ring follow the card, not just the title.
15037
+ * Tokens: stat-card.* (tokens/component/stat-card.json).
15038
+ */
15039
+
15040
+ .StatCard {
15041
+ position: relative;
15042
+ box-sizing: border-box;
15043
+ display: flex;
15044
+ flex-direction: column;
15045
+ min-width: 0;
15046
+ background: var(--sl-stat-card-background);
15047
+ border: var(--sl-stat-card-border-width) solid var(--sl-stat-card-border-color);
15048
+ border-top: var(--sl-stat-card-rule-width) solid var(--sl-stat-card-rule-color);
15049
+ border-radius: var(--sl-stat-card-radius);
15050
+ }
15051
+
15052
+ .StatCard[data-interactive]:hover {
15053
+ background: var(--sl-stat-card-background-hover);
15054
+ }
15055
+
15056
+ .StatCard[data-interactive]:has(.StatCardLink:focus-visible) {
15057
+ outline: var(--sl-focus-outline);
15058
+ outline-offset: 2px;
15059
+ }
15060
+
15061
+ .StatCardHeader {
15062
+ padding: var(--sl-stat-card-header-padding-block) var(--sl-stat-card-padding-inline);
15063
+ }
15064
+
15065
+ .StatCardTitle {
15066
+ font-family: var(--sl-font-title-magnify-font-family);
15067
+ font-size: var(--sl-font-title-magnify-font-size);
15068
+ font-weight: var(--sl-font-title-magnify-font-weight);
15069
+ line-height: var(--sl-font-title-magnify-line-height);
15070
+ letter-spacing: var(--sl-font-title-magnify-letter-spacing);
15071
+ margin: 0;
15072
+ }
15073
+
15074
+ .StatCardCaption {
15075
+ font-family: var(--sl-font-figures-condense-font-family);
15076
+ font-size: var(--sl-font-figures-condense-font-size);
15077
+ font-weight: var(--sl-font-figures-condense-font-weight);
15078
+ line-height: var(--sl-font-figures-condense-line-height);
15079
+ letter-spacing: var(--sl-font-figures-condense-letter-spacing);
15080
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
15081
+ margin: 0;
15082
+ text-transform: uppercase;
15083
+ color: var(--sl-stat-card-caption-color);
15084
+ }
15085
+
15086
+ /* The title's control: bare text that stretches over the whole card. */
15087
+ .StatCardLink {
15088
+ all: unset;
15089
+ cursor: pointer;
15090
+ }
15091
+
15092
+ .StatCardLink::after {
15093
+ content: '';
15094
+ position: absolute;
15095
+ inset: 0;
15096
+ }
15097
+
15098
+ .StatCardLink:focus-visible {
15099
+ outline: none;
15100
+ }
15101
+
15102
+ .StatCardFacts {
15103
+ display: grid;
15104
+ margin-top: auto;
15105
+ border-top: var(--sl-stat-card-border-width) solid var(--sl-stat-card-rule-color);
15106
+ }
15107
+
15108
+ .StatCardFacts > * {
15109
+ padding: var(--sl-stat-card-facts-padding-block) var(--sl-stat-card-padding-inline);
15110
+ border-inline-start: var(--sl-stat-card-border-width) solid var(--sl-stat-card-facts-divider-color);
15111
+ }
15112
+
15113
+ .StatCardFacts > :first-child {
15114
+ border-inline-start: 0;
15115
+ }
15116
+
15117
+ .StatCardFooter {
15118
+ font-family: var(--sl-font-body-condense-font-family);
15119
+ font-size: var(--sl-font-body-condense-font-size);
15120
+ font-weight: var(--sl-font-body-condense-font-weight);
15121
+ line-height: var(--sl-font-body-condense-line-height);
15122
+ letter-spacing: var(--sl-font-body-condense-letter-spacing);
15123
+ padding: var(--sl-stat-card-header-padding-block) var(--sl-stat-card-padding-inline);
15124
+ border-top: var(--sl-stat-card-border-width) solid var(--sl-stat-card-footer-border-color);
15125
+ }
15126
+
15127
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
14987
15128
  /* DescriptionList
14988
15129
  *
14989
15130
  * Label and value pairs in a native dl, one DescriptionItem (a div holding a dt and a dd)
@@ -15059,7 +15200,7 @@ textarea.FieldControl {
15059
15200
  text-align: end;
15060
15201
  }
15061
15202
 
15062
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
15203
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
15063
15204
  /* AppBar
15064
15205
  *
15065
15206
  * The bar across the top of an app window, one row on a line in the rule color. The line is
@@ -15093,7 +15234,7 @@ textarea.FieldControl {
15093
15234
  background: var(--sl-app-bar-divider-color);
15094
15235
  }
15095
15236
 
15096
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
15237
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
15097
15238
  /* PickerButton
15098
15239
  *
15099
15240
  * A trigger with a caps label before the current choice: CLIENT Alpha Services. The field
@@ -15193,7 +15334,7 @@ textarea.FieldControl {
15193
15334
  transform: rotate(180deg);
15194
15335
  }
15195
15336
 
15196
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
15337
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
15197
15338
  /* PickerSplit
15198
15339
  *
15199
15340
  * A PickerButton whose choice is itself a control: the main part (CLIENT Alpha Services) acts,
@@ -15291,7 +15432,7 @@ textarea.FieldControl {
15291
15432
  transform: rotate(180deg);
15292
15433
  }
15293
15434
 
15294
- /* @scattered-light/loomiere-base-ui 0.15.5 · styles for @base-ui/react 1.9.0 */
15435
+ /* @scattered-light/loomiere-base-ui 0.16.0 · styles for @base-ui/react 1.9.0 */
15295
15436
  /* SideNav
15296
15437
  *
15297
15438
  * The column of links down the side of a workspace. Rows are ruled apart with a hairline; the