@scattered-light/loomiere-mojave 0.9.0 → 0.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.
@@ -1899,6 +1899,13 @@
1899
1899
  --sl-sheet-tab-padding-inline: var(--sl-space-3-5); /** Space either side of the tab label's text. */
1900
1900
  --sl-sheet-tab-radius: var(--sl-radius-sm); /** The tab label's top corners. Its bottom corners stay square where it meets the rule. */
1901
1901
  --sl-sheet-header-gap: var(--sl-space-3); /** Space between the tab label and an action at the end of the header row, such as an Edit link. */
1902
+ --sl-side-nav-item-padding-inline: var(--sl-space-5); /** Space at each end of a row. */
1903
+ --sl-side-nav-item-gap: var(--sl-space-2); /** Space between a row's label and its count. */
1904
+ --sl-side-nav-indicator-width: var(--sl-stroke-medium); /** The line under the current row. */
1905
+ --sl-side-nav-group-padding-top: var(--sl-space-5); /** Space above a group heading. */
1906
+ --sl-side-nav-toggle-size: var(--sl-space-6); /** The collapse button's width and height. It sits on the column's edge. */
1907
+ --sl-side-nav-toggle-offset: var(--sl-space-4); /** Distance of the collapse button from the top of the column. */
1908
+ --sl-side-nav-collapsed-width: var(--sl-space-11); /** Width of the column when it is collapsed, wide enough for the collapse button. */
1902
1909
  --sl-slider-thumb-size: var(--sl-space-5); /** Knob diameter, big enough to grab with a finger on a 4px track. */
1903
1910
  --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. */
1904
1911
  --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. */
@@ -2171,6 +2178,7 @@
2171
2178
  --sl-description-list-leader-width: var(--sl-stroke-default); /** Thickness of the dotted leader. */
2172
2179
  --sl-sheet-border-width: var(--sl-stroke-default); /** Thickness of the sides and bottom. */
2173
2180
  --sl-sheet-radius: var(--sl-radius-surface); /** Corners, like any card or panel. The top corners stay square under a tab label, so the tab sits flush on the rule. */
2181
+ --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. */
2174
2182
  --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. */
2175
2183
  --sl-focus-shadow-3px-error: 0 0 0 3px var(--sl-status-error); /** Focus halo for a field with an error. */
2176
2184
  --sl-calendar-day-color: var(--sl-text-primary); /** A day in the month being shown. */
@@ -2270,6 +2278,7 @@
2270
2278
  --sl-status-level-warning-bold-fg: var(--sl-scope-warning-on-solid); /** bold in warning: solid in warning */
2271
2279
  --sl-status-level-error-bold-fg: var(--sl-scope-error-on-solid); /** bold in error: solid in error */
2272
2280
  --sl-description-list-value-color: var(--sl-text-primary); /** Values. */
2281
+ --sl-side-nav-item-color: var(--sl-text-primary); /** A row's text. */
2273
2282
  --sl-stat-figure-figure-color: var(--sl-text-primary); /** The figure's color. */
2274
2283
  --sl-focus-shadow-3px-primary: 0 0 0 3px var(--sl-interactive-tint-hover); /** Soft focus halo for inputs. */
2275
2284
  --sl-focus-shadow-3px-primary-soft: 0 0 0 3px var(--sl-interactive-tint-active); /** Slightly stronger focus halo for inputs on tinted surfaces. */
@@ -2365,6 +2374,17 @@
2365
2374
  --sl-sheet-background: var(--sl-surface-raised); /** The sheet's fill: the raised surface, one level above the page like any card or panel. */
2366
2375
  --sl-sheet-border-color: var(--sl-border-default); /** The sheet's sides and bottom, the everyday divider. */
2367
2376
  --sl-sheet-tab-background: var(--sl-surface-inverse); /** The tab label's fill: the inverse surface, so the label reads as the sheet's name, and its text passes AA in every theme. */
2377
+ --sl-side-nav-background: var(--sl-surface-tray); /** The column's fill: the tray surface, a step off the page, so the current row on the raised surface stands out from it. */
2378
+ --sl-side-nav-border-color: var(--sl-border-default); /** The line between the column and the page. */
2379
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle); /** The hairline under each row. */
2380
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary); /** A row that is not available yet. Secondary text, not the faded disabled color, so its hint stays readable. */
2381
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle); /** A row under the pointer. */
2382
+ --sl-side-nav-item-background-current: var(--sl-surface-raised); /** The current row: the raised surface, so it reads as the open page. */
2383
+ --sl-side-nav-count-color: var(--sl-text-accent); /** A count at the end of a row, such as items open. Accent text so it asks for attention. */
2384
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary); /** A count that is only information (tone="quiet"), such as a total. */
2385
+ --sl-side-nav-group-label-color: var(--sl-text-secondary); /** A group heading's caps label. */
2386
+ --sl-side-nav-toggle-background: var(--sl-surface-raised); /** The collapse button's fill. */
2387
+ --sl-side-nav-toggle-border-color: var(--sl-border-strong); /** The collapse button's outline. */
2368
2388
  --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). */
2369
2389
  --sl-stat-figure-label-color: var(--sl-text-secondary); /** The caps label above the figure. */
2370
2390
  --sl-stat-figure-caption-color: var(--sl-text-secondary); /** The caption under the figure. */
@@ -2390,6 +2410,7 @@
2390
2410
  --sl-app-bar-border-color: var(--sl-rule-color); /** The line under the bar, in the rule color, so an ink rule brand gets an ink line here too. */
2391
2411
  --sl-sheet-rule-color: var(--sl-rule-color); /** The top rule's color: the working-paper rule color, so sheets and ruled tables match. */
2392
2412
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface); /** Text on the tab label. */
2413
+ --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. */
2393
2414
  --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. */
2394
2415
  --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. */
2395
2416
  --sl-toggle-group-segmented-pressed-color: var(--sl-text-on-inverse); /** Text on the pressed toggle. */
@@ -5890,6 +5911,19 @@
5890
5911
  --sl-sheet-rule-color: var(--sl-rule-color);
5891
5912
  --sl-sheet-tab-background: var(--sl-surface-inverse);
5892
5913
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
5914
+ --sl-side-nav-background: var(--sl-surface-tray);
5915
+ --sl-side-nav-border-color: var(--sl-border-default);
5916
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
5917
+ --sl-side-nav-item-color: var(--sl-text-primary);
5918
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
5919
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
5920
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
5921
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
5922
+ --sl-side-nav-count-color: var(--sl-text-accent);
5923
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
5924
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
5925
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
5926
+ --sl-side-nav-toggle-border-color: var(--sl-border-strong);
5893
5927
  --sl-stat-figure-figure-color: var(--sl-text-primary);
5894
5928
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
5895
5929
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6061,6 +6095,19 @@
6061
6095
  --sl-sheet-rule-color: var(--sl-rule-color);
6062
6096
  --sl-sheet-tab-background: var(--sl-surface-inverse);
6063
6097
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
6098
+ --sl-side-nav-background: var(--sl-surface-tray);
6099
+ --sl-side-nav-border-color: var(--sl-border-default);
6100
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
6101
+ --sl-side-nav-item-color: var(--sl-text-primary);
6102
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
6103
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
6104
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
6105
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
6106
+ --sl-side-nav-count-color: var(--sl-text-accent);
6107
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
6108
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
6109
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
6110
+ --sl-side-nav-toggle-border-color: var(--sl-border-strong);
6064
6111
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6065
6112
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6066
6113
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6232,6 +6279,19 @@
6232
6279
  --sl-sheet-rule-color: var(--sl-rule-color);
6233
6280
  --sl-sheet-tab-background: var(--sl-surface-inverse);
6234
6281
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
6282
+ --sl-side-nav-background: var(--sl-surface-tray);
6283
+ --sl-side-nav-border-color: var(--sl-border-default);
6284
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
6285
+ --sl-side-nav-item-color: var(--sl-text-primary);
6286
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
6287
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
6288
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
6289
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
6290
+ --sl-side-nav-count-color: var(--sl-text-accent);
6291
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
6292
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
6293
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
6294
+ --sl-side-nav-toggle-border-color: var(--sl-border-strong);
6235
6295
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6236
6296
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6237
6297
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6597,7 +6657,7 @@
6597
6657
  }
6598
6658
 
6599
6659
 
6600
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
6660
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
6601
6661
  /* Loomiere for Base UI: component styles. Brand-free: every value is a --sl- variable from a
6602
6662
  Loomiere theme. Load the theme first:
6603
6663
  @import '<your theme>/tokens.css';
@@ -6607,7 +6667,7 @@
6607
6667
  /* Document defaults, in the reset layer so any unlayered rule wins over them, and so layered
6608
6668
  frameworks (Chakra's recipes, Tailwind's utilities) are not undone by them. */
6609
6669
  @layer reset {
6610
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
6670
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
6611
6671
  /* CSS Reset - Mojave Theme */
6612
6672
 
6613
6673
  /* ============================================
@@ -7051,7 +7111,7 @@ hr {
7051
7111
  }
7052
7112
  }
7053
7113
  @layer reset {
7054
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7114
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7055
7115
  /* Accessibility — base rules (no theme color dependencies). Theme-specific focus/invalid: accessibility-theme.css */
7056
7116
 
7057
7117
  /* Remove default focus; keyboard focus styled in accessibility-theme.css */
@@ -7164,7 +7224,7 @@ main:focus {
7164
7224
 
7165
7225
  }
7166
7226
  @layer reset {
7167
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7227
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7168
7228
  /* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
7169
7229
 
7170
7230
  :focus-visible {
@@ -7232,7 +7292,7 @@ button,
7232
7292
 
7233
7293
  }
7234
7294
  /* Component styles */
7235
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7295
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7236
7296
  /* Accordion - Mojave Theme
7237
7297
  *
7238
7298
  * No component tokens. Hover, press, chevron, divider and motion are the disclosure
@@ -7353,7 +7413,7 @@ button,
7353
7413
  overflow: hidden;
7354
7414
  }
7355
7415
 
7356
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7416
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7357
7417
  /* Alert Dialog - Mojave Theme
7358
7418
  *
7359
7419
  * No component tokens and no rules of its own. An alert dialog looks exactly like a
@@ -7362,7 +7422,7 @@ button,
7362
7422
  * cancel quiet, and a destructive one bold with data-color="error".
7363
7423
  */
7364
7424
 
7365
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7425
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7366
7426
  /* Autocomplete - Mojave Theme
7367
7427
  *
7368
7428
  * No component tokens. The input is Input (Input.css), the clear button is an icon
@@ -7564,7 +7624,7 @@ button,
7564
7624
  (reset-accessibility.css).
7565
7625
  ============================================ */
7566
7626
 
7567
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7627
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7568
7628
  /* Avatar - Mojave Theme
7569
7629
  *
7570
7630
  * A round picture with a ring in the page color, so avatars in a group cut out of each other in
@@ -7672,7 +7732,7 @@ button,
7672
7732
  }
7673
7733
  }
7674
7734
 
7675
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7735
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7676
7736
  /* Button - Mojave Theme
7677
7737
  *
7678
7738
  * Colors are the brand's emphasis levels, sizes are control.*, text is the trigger
@@ -7822,7 +7882,7 @@ button,
7822
7882
  font-size: var(--sl-icon-size-maximize);
7823
7883
  }
7824
7884
 
7825
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7885
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7826
7886
  /* Checkbox - Mojave Theme
7827
7887
  * Sizes follow the label: the box is the icon size one tier above the label's text
7828
7888
  * tier (like a button's icon) and the check mark one tier below it.
@@ -7979,7 +8039,7 @@ button,
7979
8039
  border-radius: var(--sl-radius-pill);
7980
8040
  }
7981
8041
 
7982
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8042
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7983
8043
  /* Checkbox Group - Mojave Theme */
7984
8044
 
7985
8045
  /* Each checkbox row is already a full tap target tall, so the rows sit close. */
@@ -7995,7 +8055,7 @@ button,
7995
8055
  pointer-events: none;
7996
8056
  }
7997
8057
 
7998
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8058
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
7999
8059
  /* Collapsible - Mojave Theme
8000
8060
  *
8001
8061
  * No component tokens. Hover, press, chevron and motion are the disclosure concept
@@ -8111,7 +8171,7 @@ button,
8111
8171
  background: var(--sl-surface-raised);
8112
8172
  }
8113
8173
 
8114
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8174
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
8115
8175
  /* Combobox - Mojave Theme
8116
8176
  *
8117
8177
  * No component tokens. The input is Input (Input.css); the chips box is a field; the
@@ -8596,7 +8656,7 @@ button,
8596
8656
  color: var(--sl-text-tertiary);
8597
8657
  }
8598
8658
 
8599
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8659
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
8600
8660
  /* Context Menu - Mojave Theme
8601
8661
  *
8602
8662
  * 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
@@ -8765,7 +8825,7 @@ button,
8765
8825
  stroke-width: var(--sl-stroke-default);
8766
8826
  }
8767
8827
 
8768
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8828
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
8769
8829
  /* Dialog and Alert dialog - Mojave Theme
8770
8830
  *
8771
8831
  * Both are centered modals built from the modal concept (tokens/semantic/modal.json):
@@ -8911,7 +8971,7 @@ button,
8911
8971
  margin-top: var(--sl-modal-actions-spacing);
8912
8972
  }
8913
8973
 
8914
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8974
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
8915
8975
  /* Drawer - a panel that slides in from an edge and can be swiped away.
8916
8976
  The surface, scrim, heading and motion are the modal concept's (--sl-modal-*), so a
8917
8977
  drawer reads as a dialog's sibling; only its size and grab bar are its own
@@ -9044,7 +9104,7 @@ button,
9044
9104
  color: var(--sl-modal-description-color);
9045
9105
  }
9046
9106
 
9047
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9107
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9048
9108
  /* Field - Mojave Theme
9049
9109
  *
9050
9110
  * Label, control, description and error. No component tokens: spacing is the field
@@ -9105,7 +9165,7 @@ textarea.FieldControl {
9105
9165
  height: auto;
9106
9166
  }
9107
9167
 
9108
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9168
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9109
9169
  /* Fieldset - Mojave Theme
9110
9170
  *
9111
9171
  * No component tokens: a titled group of fields, spaced by the stack gaps, with
@@ -9147,7 +9207,7 @@ textarea.FieldControl {
9147
9207
  color: var(--sl-text-secondary);
9148
9208
  }
9149
9209
 
9150
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9210
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9151
9211
  /* Form - Mojave Theme
9152
9212
  *
9153
9213
  * No component tokens: fields stack with the large block space, and the action
@@ -9167,7 +9227,7 @@ textarea.FieldControl {
9167
9227
  margin-top: var(--sl-space-block-md);
9168
9228
  }
9169
9229
 
9170
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9230
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9171
9231
  /* Input - Mojave Theme
9172
9232
  *
9173
9233
  * No component tokens: the look is the field concept (tokens/semantic/field.json),
@@ -9304,7 +9364,7 @@ textarea.FieldControl {
9304
9364
  padding-inline: var(--sl-control-padding-inline-lg);
9305
9365
  }
9306
9366
 
9307
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9367
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9308
9368
  /* Menu - Mojave Theme
9309
9369
  *
9310
9370
  * No component tokens. The trigger is a Button. The popup is the popup concept, rows are item rows at the
@@ -9453,7 +9513,7 @@ textarea.FieldControl {
9453
9513
  color: var(--sl-text-tertiary);
9454
9514
  }
9455
9515
 
9456
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9516
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9457
9517
  /* Menubar - Mojave Theme
9458
9518
  *
9459
9519
  * No component tokens. A row of quiet triggers, each opening a menu. The popup is the popup concept, rows are item rows at the
@@ -9646,7 +9706,7 @@ textarea.FieldControl {
9646
9706
  color: var(--sl-text-tertiary);
9647
9707
  }
9648
9708
 
9649
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9709
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9650
9710
  /* Meter - Mojave Theme
9651
9711
  *
9652
9712
  * A gauge (tokens/semantic/gauge.json). The fill is the solid color of the scope around it:
@@ -9709,7 +9769,7 @@ textarea.FieldControl {
9709
9769
  height: var(--sl-gauge-height-lg);
9710
9770
  }
9711
9771
 
9712
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9772
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
9713
9773
  /* Navigation Menu - Mojave Theme
9714
9774
  *
9715
9775
  * The strip is the bar concept, the panel is the popup concept and each link is an item
@@ -10129,7 +10189,7 @@ textarea.FieldControl {
10129
10189
  width: 100%;
10130
10190
  }
10131
10191
 
10132
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10192
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10133
10193
  /* Number Field - Mojave Theme
10134
10194
  *
10135
10195
  * No component tokens. The input is Input (Input.css) and the label, description and
@@ -10220,7 +10280,7 @@ textarea.FieldControl {
10220
10280
  user-select: none;
10221
10281
  }
10222
10282
 
10223
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10283
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10224
10284
  /* OTP Field - Mojave Theme
10225
10285
  *
10226
10286
  * One-time code entry: a row of single-character inputs. Each slot is the same control as Input
@@ -10283,7 +10343,7 @@ textarea.FieldControl {
10283
10343
  letter-spacing: var(--sl-font-body-magnify-letter-spacing);
10284
10344
  }
10285
10345
 
10286
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10346
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10287
10347
  /* Popover - Mojave Theme */
10288
10348
 
10289
10349
  /* ============================================
@@ -10448,7 +10508,7 @@ textarea.FieldControl {
10448
10508
  fill: var(--sl-popup-arrow-stroke);
10449
10509
  }
10450
10510
 
10451
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10511
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10452
10512
  /* Preview Card - Mojave Theme
10453
10513
  *
10454
10514
  * The popup concept (surface, arrow, motion) with a title-magnify title and condense
@@ -10565,7 +10625,7 @@ textarea.FieldControl {
10565
10625
  fill: var(--sl-popup-arrow-stroke);
10566
10626
  }
10567
10627
 
10568
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10628
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10569
10629
  /* Progress - Mojave Theme
10570
10630
  *
10571
10631
  * A gauge (tokens/semantic/gauge.json), the same bar as Meter. The fill is the solid color of
@@ -10642,7 +10702,7 @@ textarea.FieldControl {
10642
10702
  height: var(--sl-gauge-height-lg);
10643
10703
  }
10644
10704
 
10645
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10705
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10646
10706
  /* Radio - Mojave Theme
10647
10707
  * Same box as Checkbox, always round. Sizes follow the label the same way, and the
10648
10708
  * dot is a share of the circle (check.dot-scale).
@@ -10794,7 +10854,7 @@ textarea.FieldControl {
10794
10854
  gap: var(--sl-gap-stack-sm);
10795
10855
  }
10796
10856
 
10797
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10857
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10798
10858
  /* Scroll Area - Mojave Theme
10799
10859
  *
10800
10860
  * The scrollbar is the content scrollbar (content.scrollbar-*): a track that stays clear until
@@ -10876,7 +10936,7 @@ textarea.FieldControl {
10876
10936
  background: transparent;
10877
10937
  }
10878
10938
 
10879
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10939
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
10880
10940
  /* Select - Mojave Theme
10881
10941
  *
10882
10942
  * The trigger is a field (the field pattern, control sizes, the base text style); the
@@ -11161,7 +11221,7 @@ textarea.FieldControl {
11161
11221
  stroke-width: var(--sl-stroke-default);
11162
11222
  }
11163
11223
 
11164
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11224
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11165
11225
  /* Separator - Mojave Theme
11166
11226
  *
11167
11227
  * A hairline in the everyday divider color (border.default), one stroke thick, with a step of
@@ -11189,7 +11249,7 @@ textarea.FieldControl {
11189
11249
  margin-inline: var(--sl-space-4);
11190
11250
  }
11191
11251
 
11192
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11252
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11193
11253
  /* Slider - Mojave Theme
11194
11254
  *
11195
11255
  * A slider is a gauge you can drag: the track, fill and label row are gauge.* (the same bar as
@@ -11355,7 +11415,7 @@ textarea.FieldControl {
11355
11415
  transform: translate(-50%, 50%);
11356
11416
  }
11357
11417
 
11358
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11418
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11359
11419
  /* Switch - Mojave Theme
11360
11420
  * Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
11361
11421
  * worked out from them: the thumb fills the track's height inside the padding,
@@ -11521,7 +11581,7 @@ textarea.FieldControl {
11521
11581
  color: var(--sl-text-disabled);
11522
11582
  }
11523
11583
 
11524
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11584
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11525
11585
  /* Tabs - Mojave Theme
11526
11586
  *
11527
11587
  * No component tokens. The divider, the selected line and color, hover and the disabled
@@ -11657,7 +11717,7 @@ textarea.FieldControl {
11657
11717
  padding: var(--sl-space-6);
11658
11718
  }
11659
11719
 
11660
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11720
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11661
11721
  /* Toast - Mojave Theme
11662
11722
  *
11663
11723
  * A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
@@ -11893,7 +11953,7 @@ textarea.FieldControl {
11893
11953
  flex-shrink: 0;
11894
11954
  }
11895
11955
 
11896
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11956
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
11897
11957
  /* Toggle - Mojave Theme
11898
11958
  * A toggle is a button that stays pressed: the same heights, padding, gap and
11899
11959
  * trigger text style as a button of the same size. Pressed, it takes its emphasis level's
@@ -12005,7 +12065,7 @@ textarea.FieldControl {
12005
12065
  height: var(--sl-icon-size-maximize);
12006
12066
  }
12007
12067
 
12008
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12068
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12009
12069
  /* Toggle Group - Mojave Theme
12010
12070
  *
12011
12071
  * No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
@@ -12067,7 +12127,7 @@ textarea.FieldControl {
12067
12127
  outline-offset: var(--sl-focus-outline-offset-inset);
12068
12128
  }
12069
12129
 
12070
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12130
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12071
12131
  /* Toolbar - Mojave Theme
12072
12132
  *
12073
12133
  * The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
@@ -12129,7 +12189,7 @@ textarea.FieldControl {
12129
12189
  max-width: var(--sl-toolbar-input-max-width);
12130
12190
  }
12131
12191
 
12132
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12192
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12133
12193
  /* Tooltip - Mojave Theme
12134
12194
  *
12135
12195
  * The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
@@ -12190,7 +12250,7 @@ textarea.FieldControl {
12190
12250
  }
12191
12251
 
12192
12252
  /* Custom components: not Base UI parts. Built from existing concepts and tokens. */
12193
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12253
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12194
12254
  /* Badge
12195
12255
  *
12196
12256
  * A status or count label. Not a Base UI part, and not interactive: no hover or focus.
@@ -12295,7 +12355,7 @@ textarea.FieldControl {
12295
12355
  height: var(--sl-badge-dot-base);
12296
12356
  }
12297
12357
 
12298
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12358
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12299
12359
  /*
12300
12360
  * DatePicker: a field that opens a calendar for one date or a period.
12301
12361
  * Not a Base UI part. The popup is Popover on a wide viewport and Drawer
@@ -12868,7 +12928,7 @@ textarea.FieldControl {
12868
12928
  flex-basis: 100%;
12869
12929
  }
12870
12930
 
12871
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12931
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
12872
12932
  /* Money field
12873
12933
  *
12874
12934
  * An amount of money, built on Number field. The value is an integer in minor units
@@ -13213,7 +13273,7 @@ textarea.FieldControl {
13213
13273
  letter-spacing: var(--sl-font-body-base-letter-spacing);
13214
13274
  }
13215
13275
 
13216
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13276
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
13217
13277
  /* ListDetail
13218
13278
  *
13219
13279
  * The detail of one item, next to its list. Not a Base UI part. It is a Splitter
@@ -13340,7 +13400,7 @@ textarea.FieldControl {
13340
13400
  background: transparent;
13341
13401
  }
13342
13402
 
13343
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13403
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
13344
13404
  /* Splitter
13345
13405
  *
13346
13406
  * Two or more panels and a handle between them. Not a Base UI part. It follows the
@@ -13548,7 +13608,7 @@ textarea.FieldControl {
13548
13608
  background: var(--sl-border-default);
13549
13609
  }
13550
13610
 
13551
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13611
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
13552
13612
  /* EmptyState
13553
13613
  *
13554
13614
  * The block a page, pane, table, list or popup shows when it has nothing to show.
@@ -13804,7 +13864,7 @@ textarea.FieldControl {
13804
13864
  color: inherit;
13805
13865
  }
13806
13866
 
13807
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13867
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
13808
13868
  /* Table - Mojave Theme
13809
13869
  *
13810
13870
  * Base UI has no table, so this styles the native <table class="Table"> elements with the
@@ -14038,7 +14098,7 @@ textarea.FieldControl {
14038
14098
  color: inherit;
14039
14099
  }
14040
14100
 
14041
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14101
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14042
14102
  /* Collection
14043
14103
  *
14044
14104
  * DataTable, DataList, the toolbar and the pagination, in one place so the two views
@@ -14049,7 +14109,7 @@ textarea.FieldControl {
14049
14109
  * the tabs and the search where they are, so selecting rows does not grow the toolbar.
14050
14110
  */
14051
14111
 
14052
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14112
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14053
14113
  /* Collection toolbar
14054
14114
  *
14055
14115
  * The wrap follows the toolbar's own width, not the window: a table in a narrow pane wraps
@@ -14190,7 +14250,7 @@ textarea.FieldControl {
14190
14250
  letter-spacing: var(--sl-font-body-condense-letter-spacing);
14191
14251
  }
14192
14252
 
14193
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14253
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14194
14254
  /* DataTable additions on top of .Table.
14195
14255
  *
14196
14256
  * Sort buttons fill the header cell and inherit its hover, so old aria-sort markup keeps
@@ -14311,7 +14371,7 @@ textarea.FieldControl {
14311
14371
  color: var(--sl-table-subtle-color);
14312
14372
  }
14313
14373
 
14314
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14374
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14315
14375
  /* DataList
14316
14376
  *
14317
14377
  * The same rows as the table, in one container with the table's borders, hover, selected
@@ -14453,7 +14513,7 @@ textarea.FieldControl {
14453
14513
  transition: opacity var(--sl-duration-fast) var(--sl-easing-default);
14454
14514
  }
14455
14515
 
14456
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14516
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14457
14517
  /* Pagination
14458
14518
  *
14459
14519
  * Not tied to a collection. Anything with a page, a page count and a total can use it.
@@ -14478,7 +14538,7 @@ textarea.FieldControl {
14478
14538
  margin: 0;
14479
14539
  }
14480
14540
 
14481
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14541
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14482
14542
  /* EditableList
14483
14543
  *
14484
14544
  * One table at every width, so a field is not submitted twice. Under the stack width each
@@ -14577,7 +14637,7 @@ textarea.FieldControl {
14577
14637
  }
14578
14638
  }
14579
14639
 
14580
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14640
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14581
14641
  /* Sheet
14582
14642
  *
14583
14643
  * A working-paper surface: the raised surface with a heavier rule across its top
@@ -14668,7 +14728,7 @@ textarea.FieldControl {
14668
14728
  border-top: 0;
14669
14729
  }
14670
14730
 
14671
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14731
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14672
14732
  /* StatFigure
14673
14733
  *
14674
14734
  * One large figure with a caps label above and a caption under it. The label is
@@ -14729,7 +14789,7 @@ textarea.FieldControl {
14729
14789
  color: var(--sl-stat-figure-caption-color);
14730
14790
  }
14731
14791
 
14732
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14792
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14733
14793
  /* DescriptionList
14734
14794
  *
14735
14795
  * Label and value pairs in a native dl, one DescriptionItem (a div holding a dt and a dd)
@@ -14805,7 +14865,7 @@ textarea.FieldControl {
14805
14865
  text-align: end;
14806
14866
  }
14807
14867
 
14808
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14868
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14809
14869
  /* AppBar
14810
14870
  *
14811
14871
  * The bar across the top of an app window, one row on a line in the rule color. The line is
@@ -14839,7 +14899,7 @@ textarea.FieldControl {
14839
14899
  background: var(--sl-app-bar-divider-color);
14840
14900
  }
14841
14901
 
14842
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14902
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14843
14903
  /* PickerButton
14844
14904
  *
14845
14905
  * A trigger with a caps label before the current choice: CLIENT Alpha Services. The field
@@ -14924,3 +14984,185 @@ textarea.FieldControl {
14924
14984
  .PickerButton[data-popup-open] .PickerButtonIcon {
14925
14985
  transform: rotate(180deg);
14926
14986
  }
14987
+
14988
+ /* @scattered-light/loomiere-base-ui 0.10.0 · styles for @base-ui/react 1.9.0 */
14989
+ /* SideNav
14990
+ *
14991
+ * The column of links down the side of a workspace. Rows are ruled apart with a hairline; the
14992
+ * current row (aria-current="page") sits on the raised surface with a rule under it in the
14993
+ * working-paper ink; counts are figures; group headings are caps labels. SideNavToggle is a
14994
+ * small round button on the column's edge, whose chevron turns with the state. The parent
14995
+ * sets the width and must not clip the toggle (overflow: visible), since it hangs over the edge.
14996
+ * Tokens: side-nav.* (tokens/component/side-nav.json).
14997
+ */
14998
+
14999
+ .SideNav {
15000
+ position: relative;
15001
+ box-sizing: border-box;
15002
+ display: flex;
15003
+ flex-direction: column;
15004
+ height: 100%;
15005
+ min-width: 0;
15006
+ padding-block: var(--sl-space-4);
15007
+ background: var(--sl-side-nav-background);
15008
+ border-inline-end: var(--sl-stroke-default) solid var(--sl-side-nav-border-color);
15009
+ }
15010
+
15011
+ .SideNav[data-collapsed] {
15012
+ min-width: var(--sl-side-nav-collapsed-width);
15013
+ }
15014
+
15015
+ /* Collapsed: only the toggle stays. */
15016
+ .SideNav[data-collapsed] > :not(.SideNavToggle) {
15017
+ display: none;
15018
+ }
15019
+
15020
+ .SideNavItem {
15021
+ font-family: var(--sl-font-body-base-font-family);
15022
+ font-size: var(--sl-font-body-base-font-size);
15023
+ font-weight: var(--sl-font-body-base-font-weight);
15024
+ line-height: var(--sl-font-body-base-line-height);
15025
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
15026
+ box-sizing: border-box;
15027
+ display: flex;
15028
+ align-items: center;
15029
+ justify-content: space-between;
15030
+ gap: var(--sl-side-nav-item-gap);
15031
+ min-height: var(--sl-side-nav-item-height);
15032
+ padding-inline: var(--sl-side-nav-item-padding-inline);
15033
+ color: var(--sl-side-nav-item-color);
15034
+ text-decoration: none;
15035
+ border-bottom: var(--sl-stroke-default) solid var(--sl-side-nav-item-divider-color);
15036
+ cursor: pointer;
15037
+ transition: background var(--sl-duration-fast) var(--sl-easing-default);
15038
+ }
15039
+
15040
+ .SideNavItemText {
15041
+ display: flex;
15042
+ flex-direction: column;
15043
+ min-width: 0;
15044
+ }
15045
+
15046
+ .SideNavItemLabel {
15047
+ overflow: hidden;
15048
+ text-overflow: ellipsis;
15049
+ white-space: nowrap;
15050
+ }
15051
+
15052
+ .SideNavItemHint {
15053
+ font-family: var(--sl-font-body-minimize-font-family);
15054
+ font-size: var(--sl-font-body-minimize-font-size);
15055
+ font-weight: var(--sl-font-body-minimize-font-weight);
15056
+ line-height: var(--sl-font-body-minimize-line-height);
15057
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
15058
+ color: var(--sl-side-nav-item-color-disabled);
15059
+ }
15060
+
15061
+ .SideNavItem:hover:not([data-current]):not([data-disabled]) {
15062
+ background: var(--sl-side-nav-item-background-hover);
15063
+ }
15064
+
15065
+ .SideNavItem:focus-visible {
15066
+ outline: var(--sl-focus-outline);
15067
+ outline-offset: var(--sl-focus-outline-offset-inset);
15068
+ }
15069
+
15070
+ .SideNavItem[data-current] {
15071
+ background: var(--sl-side-nav-item-background-current);
15072
+ font-weight: var(--sl-font-weight-semibold);
15073
+ box-shadow: inset 0 calc(-1 * var(--sl-side-nav-indicator-width)) 0 var(--sl-side-nav-indicator-color);
15074
+ }
15075
+
15076
+ .SideNavItem[data-disabled] {
15077
+ color: var(--sl-side-nav-item-color-disabled);
15078
+ cursor: default;
15079
+ }
15080
+
15081
+ .SideNavItemCount {
15082
+ flex: none;
15083
+ font-family: var(--sl-font-figures-condense-font-family);
15084
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
15085
+ font-size: var(--sl-font-figures-condense-font-size);
15086
+ font-weight: var(--sl-font-weight-semibold);
15087
+ line-height: var(--sl-font-figures-condense-line-height);
15088
+ color: var(--sl-side-nav-count-color);
15089
+ }
15090
+
15091
+ .SideNavItemCount[data-tone='quiet'] {
15092
+ color: var(--sl-side-nav-count-color-quiet);
15093
+ }
15094
+
15095
+ .SideNavGroupLabel {
15096
+ font-family: var(--sl-font-caps-condense-font-family);
15097
+ font-size: var(--sl-font-caps-condense-font-size);
15098
+ font-weight: var(--sl-font-caps-condense-font-weight);
15099
+ line-height: var(--sl-font-caps-condense-line-height);
15100
+ letter-spacing: var(--sl-font-caps-condense-letter-spacing);
15101
+ text-transform: var(--sl-font-caps-condense-text-transform);
15102
+ padding-top: var(--sl-side-nav-group-padding-top);
15103
+ padding-bottom: var(--sl-space-1-5);
15104
+ padding-inline: var(--sl-side-nav-item-padding-inline);
15105
+ color: var(--sl-side-nav-group-label-color);
15106
+ }
15107
+
15108
+ /* ============================================
15109
+ COLLAPSE BUTTON
15110
+ ============================================ */
15111
+
15112
+ .SideNavToggle {
15113
+ all: unset;
15114
+ box-sizing: border-box;
15115
+ position: absolute;
15116
+ z-index: 1;
15117
+ top: var(--sl-side-nav-toggle-offset);
15118
+ inset-inline-end: calc(-0.5 * var(--sl-side-nav-toggle-size));
15119
+ display: inline-flex;
15120
+ align-items: center;
15121
+ justify-content: center;
15122
+ width: var(--sl-side-nav-toggle-size);
15123
+ height: var(--sl-side-nav-toggle-size);
15124
+ border-radius: var(--sl-radius-pill);
15125
+ background: var(--sl-side-nav-toggle-background);
15126
+ border: var(--sl-stroke-default) solid var(--sl-side-nav-toggle-border-color);
15127
+ color: var(--sl-text-secondary);
15128
+ cursor: pointer;
15129
+ transition: color var(--sl-duration-fast) var(--sl-easing-default),
15130
+ border-color var(--sl-duration-fast) var(--sl-easing-default);
15131
+ }
15132
+
15133
+ .SideNavToggle:hover {
15134
+ color: var(--sl-text-primary);
15135
+ border-color: var(--sl-text-primary);
15136
+ }
15137
+
15138
+ .SideNavToggle:focus-visible {
15139
+ outline: var(--sl-focus-outline);
15140
+ outline-offset: var(--sl-focus-outline-offset);
15141
+ }
15142
+
15143
+ .SideNavToggleIcon {
15144
+ width: var(--sl-icon-size-minimize);
15145
+ height: var(--sl-icon-size-minimize);
15146
+ transition: transform var(--sl-duration-normal) var(--sl-easing-default);
15147
+ }
15148
+
15149
+ /* The chevron points the way the column will go: left to collapse, right to expand. */
15150
+ .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
15151
+ transform: rotate(180deg);
15152
+ }
15153
+
15154
+ [dir='rtl'] .SideNavToggleIcon {
15155
+ transform: scaleX(-1);
15156
+ }
15157
+
15158
+ [dir='rtl'] .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
15159
+ transform: scaleX(-1) rotate(180deg);
15160
+ }
15161
+
15162
+ @media (prefers-reduced-motion: reduce) {
15163
+ .SideNavToggleIcon,
15164
+ .SideNavItem,
15165
+ .SideNavToggle {
15166
+ transition: none;
15167
+ }
15168
+ }