baseline-foundry 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +17 -9
  2. package/config/experiments/ibm-plex-engine-smoke.json +1 -1
  3. package/config/experiments/ubuntu-engine-smoke.json +1 -1
  4. package/config/foundation-theme.json +1 -1
  5. package/config/tiers/app.json +6 -6
  6. package/config/tiers/documentation.json +2 -2
  7. package/config/tiers/editorial.json +1 -1
  8. package/config/tiers/os.json +6 -6
  9. package/dist/baseline-grid-overlay.js +2 -2
  10. package/dist/build.js +4 -4
  11. package/dist/code-snippet.js +1 -1
  12. package/dist/css-app-tier.js +10 -5
  13. package/dist/css-components/article-pagination.js +9 -8
  14. package/dist/css-components/button-actions.js +24 -4
  15. package/dist/css-components/cards-options.js +8 -8
  16. package/dist/css-components/chip-badge-status.d.ts +0 -3
  17. package/dist/css-components/chip-badge-status.js +24 -9
  18. package/dist/css-components/content-card.d.ts +7 -7
  19. package/dist/css-components/content-card.js +17 -16
  20. package/dist/css-components/control-row.d.ts +1 -1
  21. package/dist/css-components/control-row.js +1 -1
  22. package/dist/css-components/document-navigation.js +66 -29
  23. package/dist/css-components/editorial-content.js +1 -1
  24. package/dist/css-components/interactive-feedback.js +50 -28
  25. package/dist/css-components/interactive-tables.js +13 -8
  26. package/dist/css-components/legacy-navigation.d.ts +0 -1
  27. package/dist/css-components/legacy-navigation.js +85 -32
  28. package/dist/css-components/linked-logo-site-layout.d.ts +3 -3
  29. package/dist/css-components/linked-logo-site-layout.js +17 -20
  30. package/dist/css-components/list-tree.js +21 -19
  31. package/dist/css-components/list.js +9 -7
  32. package/dist/css-components/logo-media.d.ts +6 -6
  33. package/dist/css-components/logo-media.js +38 -27
  34. package/dist/css-components/navigation-layout.js +4 -4
  35. package/dist/css-components/panel.js +12 -8
  36. package/dist/css-components/search-box-and-filter.d.ts +0 -1
  37. package/dist/css-components/search-box-and-filter.js +18 -19
  38. package/dist/css-components/sites-editorial-ports.d.ts +3 -4
  39. package/dist/css-components/sites-editorial-ports.js +61 -29
  40. package/dist/css-components/sites-foundation.js +15 -19
  41. package/dist/css-components/sites-rich-lists.d.ts +5 -5
  42. package/dist/css-components/sites-rich-lists.js +26 -36
  43. package/dist/css-components/static-content-ports.d.ts +3 -3
  44. package/dist/css-components/static-content-ports.js +51 -37
  45. package/dist/css-components/tab-section.d.ts +3 -3
  46. package/dist/css-components/tab-section.js +34 -26
  47. package/dist/css-components/table.js +4 -3
  48. package/dist/css-components/tabs-choice-breadcrumbs.js +25 -21
  49. package/dist/css-components/tiered-list-equal-height-row.js +10 -10
  50. package/dist/css-components.js +189 -111
  51. package/dist/css-grid.d.ts +1 -1
  52. package/dist/css-grid.js +18 -8
  53. package/dist/css.js +94 -18
  54. package/dist/experiments/ibm-plex-engine-smoke/styles.css +894 -538
  55. package/dist/experiments/ibm-plex-engine-smoke/surfaces.json +2 -2
  56. package/dist/experiments/ibm-plex-engine-smoke/tokens.json +1 -1
  57. package/dist/in-page-navigation.js +1 -1
  58. package/dist/presets/app-tier/styles.css +928 -568
  59. package/dist/presets/app-tier/surfaces.json +17 -17
  60. package/dist/presets/app-tier/tokens.json +7 -7
  61. package/dist/presets/prose/styles.css +919 -562
  62. package/dist/presets/prose/surfaces.json +17 -17
  63. package/dist/presets/prose/tokens.json +1 -1
  64. package/dist/resizable-aside.js +12 -4
  65. package/dist/styles.css +919 -562
  66. package/dist/surfaces.json +17 -17
  67. package/dist/tiers/app/styles.css +928 -568
  68. package/dist/tiers/app/surfaces.json +17 -17
  69. package/dist/tiers/app/tokens.json +7 -7
  70. package/dist/tiers/documentation/styles.css +920 -563
  71. package/dist/tiers/documentation/surfaces.json +17 -17
  72. package/dist/tiers/documentation/tokens.json +2 -2
  73. package/dist/tiers/editorial/styles.css +919 -562
  74. package/dist/tiers/editorial/surfaces.json +17 -17
  75. package/dist/tiers/editorial/tokens.json +1 -1
  76. package/dist/tiers/os/styles.css +925 -568
  77. package/dist/tiers/os/surfaces.json +17 -17
  78. package/dist/tiers/os/tokens.json +7 -7
  79. package/dist/tokens.json +1 -1
  80. package/dist/types.d.ts +1 -1
  81. package/docs/publishing.md +1 -1
  82. package/package.json +2 -2
@@ -95,37 +95,55 @@ export function componentsCss(tokens, themeSurfaces) {
95
95
  const buttonBlockPaddingVar = "var(--bf-button-block-padding)";
96
96
  const bodyLineHeight = roleLineHeightVar("body", body.lineHeight);
97
97
  const inputMarginBottom = controlMarginBottomExpression(bodyLineHeight, inputBlockPaddingVar, "0rem");
98
- const buttonMarginBottom = controlMarginBottomExpression(bodyLineHeight, buttonBlockPaddingVar, "0rem");
98
+ const singleLineRowMarginBottom = controlMarginBottomExpression(bodyLineHeight, buttonBlockPaddingVar, "0rem");
99
+ const buttonMarginBottom = "var(--bf-single-line-row-margin-block-end)";
99
100
  const bodySelectedStartNudge = roleSelectedStartNudgeVar("body", body.nudgeTop);
100
101
  const bodySelectedEndNudge = roleSelectedEndNudgeVar("body");
101
102
  const h4LineHeight = roleLineHeightVar("h4", h4.lineHeight);
102
103
  const h5LineHeight = roleLineHeightVar("h5", h5.lineHeight);
103
- const h5SelectedStartNudge = roleSelectedStartNudgeVar("h5", h5.nudgeTop);
104
- const h5SelectedEndNudge = roleSelectedEndNudgeVar("h5");
105
104
  const h6LineHeight = roleLineHeightVar("h6", h6.lineHeight);
106
105
  const bodyTypeStyles = typeStyles(body, { includeCase: false });
107
106
  const h6TypeStyles = typeStyles(h6, { includeCase: false });
108
- const buttonPadding = controlPadding(buttonBlockPaddingVar);
107
+ const buttonPadding = " padding-block: var(--bf-single-line-row-padding-block);\n";
109
108
  return `:where(.bf-theme) {
110
109
  ${componentAlignmentVars(components)} /* Action surfaces keep comfortable command targets; field surfaces can tighten independently. */
111
110
  --bf-disclosure-gap: 1rem;
112
111
  --bf-disclosure-icon-inline-size: 1rem;
112
+ --bf-icon-label-inline-offset: calc(var(--bf-disclosure-icon-inline-size) + var(--bf-disclosure-gap));
113
+ --bf-disclosure-label-inline-offset: var(--bf-icon-label-inline-offset);
114
+ /* Every component-owned inline start resolves to one of these three rails.
115
+ Field and action values remain tier inputs; continuation is the shared
116
+ icon/mark-to-copy line. Structural page, grid and navigation-depth offsets
117
+ are deliberately outside this component inset contract. */
118
+ --bf-component-inline-inset-field: var(--bf-control-inline-padding-field);
119
+ --bf-component-inline-inset-action: var(--bf-control-inline-padding-action);
120
+ --bf-component-inline-inset-continuation: var(--bf-disclosure-label-inline-offset);
113
121
  --bf-input-block-padding: ${bodySelectedStartNudge};
114
122
  --bf-button-block-padding: ${bodySelectedStartNudge};
123
+ /* One border-aware occupied-block contract for body-sized, single-line UI.
124
+ Components may paint their block borders differently, but their text line,
125
+ padding and trailing baseline compensation must resolve through this pair. */
126
+ --bf-single-line-row-padding-block: max(0rem, calc(var(--bf-button-block-padding) - var(--bf-border-width)));
127
+ --bf-single-line-row-margin-block-end: ${singleLineRowMarginBottom};
128
+ --bf-single-line-row-visual-offset: ${alignedVisualStart(bodyLineHeight, "var(--bf-control-visual-size)", bodySelectedStartNudge)};
115
129
  --bf-slider-track-size: calc(var(--bf-baseline) * 0.25);
116
130
  --bf-slider-row-block-size: max(var(--bf-control-box-size-compact), calc(${bodySelectedStartNudge} + ${bodyLineHeight} + ${bodySelectedEndNudge}));
117
131
  --bf-slider-track-offset: ${alignedVisualStart(bodyLineHeight, "var(--bf-slider-track-size)", bodySelectedStartNudge)};
118
132
  --bf-table-row-border-size: var(--bf-border-width);
119
- --bf-table-row-padding: ${bodySelectedStartNudge};
120
- --bf-table-row-content-size: calc(${bodyLineHeight} + (var(--bf-table-row-padding) * 2) + var(--bf-table-row-border-size));
133
+ --bf-table-row-padding-block-start: ${bodySelectedStartNudge};
134
+ --bf-table-row-content-size: calc(${bodyLineHeight} + (var(--bf-table-row-padding-block-start) * 2) + var(--bf-table-row-border-size));
121
135
  --bf-table-row-block-size: calc(var(--bf-table-row-content-size) + mod(calc(var(--bf-baseline) - mod(var(--bf-table-row-content-size), var(--bf-baseline))), var(--bf-baseline)));
122
- --bf-table-row-line-height: calc(var(--bf-table-row-block-size) - (var(--bf-table-row-padding) * 2) - var(--bf-table-row-border-size));
123
- --bf-switch-row-block-size: calc(${bodySelectedStartNudge} + ${bodyLineHeight} + ${bodySelectedEndNudge});
124
- --bf-switch-track-offset: ${alignedVisualStart(bodyLineHeight, "var(--bf-control-visual-size)", bodySelectedStartNudge)};
125
- --bf-tick-row-block-size: max(var(--bf-control-box-size-compact), calc(${bodySelectedStartNudge} + ${bodyLineHeight} + ${bodySelectedEndNudge}));
126
- --bf-tick-box-offset: ${alignedVisualStart(bodyLineHeight, "var(--bf-control-visual-size)", bodySelectedStartNudge)};
127
- --bf-tick-label-offset: calc(var(--bf-control-visual-size) + var(--bf-control-inline-padding-field));
128
- --bf-radio-dot-size: calc(var(--bf-control-visual-size) * 0.375);
136
+ --bf-table-row-padding-block-end: max(0rem, calc(var(--bf-table-row-block-size) - ${bodyLineHeight} - var(--bf-table-row-padding-block-start) - var(--bf-table-row-border-size)));
137
+ --bf-table-row-line-height: ${bodyLineHeight};
138
+ --bf-switch-track-offset: var(--bf-single-line-row-visual-offset);
139
+ --bf-tick-box-offset: var(--bf-single-line-row-visual-offset);
140
+ --bf-leading-mark-size: var(--bf-control-visual-size);
141
+ --bf-leading-mark-gap: var(--bf-component-inline-inset-field);
142
+ --bf-leading-mark-offset: calc(var(--bf-leading-mark-size) + var(--bf-leading-mark-gap));
143
+ --bf-leading-mark-group-inset: calc(var(--bf-component-inline-inset-continuation) - var(--bf-leading-mark-offset));
144
+ --bf-tick-label-offset: var(--bf-leading-mark-offset);
145
+ --bf-radio-dot-size: calc((var(--bf-control-visual-size) * 0.375) + var(--bf-border-width));
146
+ --bf-list-marker-dot-size: calc(var(--bf-border-width) * 4);
129
147
  --bf-app-drawer-width-icon: 2rem;
130
148
  --bf-app-drawer-width-small: 15rem;
131
149
  --bf-app-drawer-width-small-max: 20rem;
@@ -137,7 +155,9 @@ ${componentAlignmentVars(components)} /* Action surfaces keep comfortable comma
137
155
  --bf-app-aside-width-max: var(--bf-app-drawer-width-medium-max);
138
156
  --bf-app-navigation-width: 15rem;
139
157
  --bf-app-navigation-width-collapsed: 3rem;
140
- --bf-side-navigation-icon-optical-offset-block: 0.1875rem;
158
+ --bf-icon-label-optical-offset-block: 0.1875rem;
159
+ --bf-disclosure-icon-optical-offset-block: var(--bf-icon-label-optical-offset-block);
160
+ --bf-side-navigation-icon-optical-offset-block: var(--bf-icon-label-optical-offset-block);
141
161
  --bf-side-navigation-icon-gap: 0.625rem;
142
162
  --bf-navigation-bar-min-block-size: calc(var(--bf-baseline) * 6);
143
163
  --bf-authoring-accent: #f6b73c;
@@ -150,9 +170,10 @@ ${componentAlignmentVars(components)} /* Action surfaces keep comfortable comma
150
170
  --bf-authoring-accent-focus-ring: rgba(246, 183, 60, 0.55);
151
171
  --bf-application-resize-handle-active: var(--bf-authoring-accent-strong);
152
172
  --bf-application-resize-handle-focus-ring: var(--bf-authoring-accent-focus-ring);
153
- --bf-top-navigation-link-padding-inline: var(--bf-control-inline-padding-action);
154
- --bf-top-navigation-end-slot-inline-size: calc(1rem + var(--bf-control-inline-padding-field));
155
- --bf-top-navigation-search-toggle-inline-size: calc(1rem + (var(--bf-control-inline-padding-field) * 2));
173
+ --bf-control-inline-padding-action-bordered: max(0rem, calc(var(--bf-component-inline-inset-action) - var(--bf-border-width)));
174
+ --bf-top-navigation-link-padding-inline: var(--bf-component-inline-inset-action);
175
+ --bf-top-navigation-end-slot-inline-size: calc(1rem + var(--bf-component-inline-inset-field));
176
+ --bf-top-navigation-search-toggle-inline-size: calc(1rem + (var(--bf-component-inline-inset-field) * 2));
156
177
  --bf-top-navigation-link-padding-block: max(var(--bf-body-nudge-start), calc(var(--bf-baseline) * 1.5));
157
178
  --bf-top-navigation-search-max-inline-size: 20rem;
158
179
  --bf-top-navigation-logo-tag-inline-size: 1.375rem;
@@ -167,12 +188,10 @@ ${componentAlignmentVars(components)} /* Action surfaces keep comfortable comma
167
188
  --bf-icon-size-large: 4rem;
168
189
  --bf-icon-size-x-large: 4.5rem;
169
190
  --bf-icon-size-xx-large: 6rem;
170
- --bf-leading-icon-size: calc(var(--bf-baseline) * 2);
171
- --bf-leading-icon-gap: calc(var(--bf-baseline) * 1);
172
- --bf-leading-icon-offset: ${alignedVisualStart(bodyLineHeight, "var(--bf-leading-icon-size)", bodySelectedStartNudge)};
173
- --bf-ui-chip-padding-inline: calc(${bodyLineHeight} * 0.4);
174
- --bf-ui-chip-padding-block: max(0rem, calc((var(--bf-control-inline-padding-action) * 0.25) - var(--bf-border-width)));
175
- --bf-ui-chip-block-size: calc(${bodyLineHeight} + (var(--bf-ui-chip-padding-block) * 2) + (var(--bf-border-width) * 2));
191
+ --bf-leading-icon-size: var(--bf-leading-mark-size);
192
+ --bf-leading-icon-gap: var(--bf-leading-mark-gap);
193
+ --bf-leading-icon-offset: var(--bf-single-line-row-visual-offset);
194
+ --bf-ui-chip-padding-inline: var(--bf-component-inline-inset-field);
176
195
  --bf-ui-badge-padding-inline: calc(${bodyLineHeight} * 0.25);
177
196
  --bf-ui-badge-overhang: calc(var(--bf-ui-badge-padding-inline) * -0.75);
178
197
  --bf-grid-max-inline-size: var(--bf-content-max-width);
@@ -189,6 +208,7 @@ ${componentAlignmentVars(components)} /* Action surfaces keep comfortable comma
189
208
  --bf-application-navigation-width-collapsed: var(--bf-app-navigation-width-collapsed);
190
209
  ${foundryComponentColorVars("light")}
191
210
  --bf-ui-icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.25 6.25 8 10l3.75-3.75'/%3E%3C/svg%3E");
211
+ --bf-ui-icon-number-stepper: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.25 5.75 8 2l3.75 3.75M4.25 10.25 8 14l3.75-3.75'/%3E%3C/svg%3E");
192
212
  --bf-ui-icon-close: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.25 4.25 11.75 11.75M11.75 4.25 4.25 11.75' fill='none' stroke='%23111' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
193
213
  --bf-ui-icon-error-grey: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 1.52588e-05C12.4183 1.52588e-05 16 3.58174 16 8.00002C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8.00002C0 3.58174 3.58172 1.52588e-05 8 1.52588e-05ZM10.2821 4.63808L11.3427 5.69874L9.05007 7.99008L11.3427 10.2821L10.2821 11.3427L7.99007 9.05008L5.69873 11.3427L4.63807 10.2821L6.92907 7.99008L4.63807 5.69874L5.69873 4.63808L7.99007 6.92908L10.2821 4.63808ZM1.5 8.00002C1.5 4.41016 4.41015 1.50002 8 1.50002C11.5899 1.50002 14.5 4.41016 14.5 8.00002C14.5 11.5899 11.5899 14.5 8 14.5C4.41015 14.5 1.5 11.5899 1.5 8.00002Z' fill='%23111' fill-rule='evenodd'/%3E%3C/svg%3E");
194
214
  --bf-ui-icon-search: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.964 1a5.964 5.964 0 014.709 9.623l4.303 4.305-1.06 1.06-4.306-4.305A5.964 5.964 0 116.963 1zm0 1.5a4.464 4.464 0 100 8.927 4.464 4.464 0 000-8.927z' fill='%23111' fill-rule='nonzero'/%3E%3C/svg%3E");
@@ -222,16 +242,13 @@ ${(themeSurfaces ?? []).map(surface => {
222
242
  const inputBlockPadding = bodySurface && parseRemValue(bodySurface.nudgeTop) > 0
223
243
  ? bodySurface.nudgeTop
224
244
  : surfaceComponents.controlBlockPadding;
225
- const tableRowPadding = bodySurface && parseRemValue(bodySurface.nudgeTop) > 0
226
- ? bodySurface.nudgeTop
227
- : surfaceComponents.controlCompactBlockPadding;
228
- return `:where(.bf-theme.${surface.className}) {\n --bf-control-baseline-reserve: 0rem;\n --bf-input-block-padding: ${inputBlockPadding};\n --bf-button-block-padding: ${inputBlockPadding};\n --bf-table-row-padding: ${tableRowPadding};\n${componentAlignmentVars(surfaceComponents)}\n}\n`;
245
+ return `:where(.bf-theme.${surface.className}) {\n --bf-input-block-padding: ${inputBlockPadding};\n --bf-button-block-padding: ${inputBlockPadding};\n${componentAlignmentVars(surfaceComponents)}\n}\n`;
229
246
  }).join("\n")}
230
247
 
231
- :where(.bf-theme.is-dark),
232
248
  :where(.bf-theme.is-dark) {
233
249
  ${foundryComponentColorVars("dark")}
234
250
  --bf-ui-icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.25 6.25 8 10l3.75-3.75'/%3E%3C/svg%3E");
251
+ --bf-ui-icon-number-stepper: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.25 5.75 8 2l3.75 3.75M4.25 10.25 8 14l3.75-3.75'/%3E%3C/svg%3E");
235
252
  --bf-ui-icon-close: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.25 4.25 11.75 11.75M11.75 4.25 4.25 11.75' fill='none' stroke='%23fff' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
236
253
  --bf-ui-icon-error-grey: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 1.52588e-05C12.4183 1.52588e-05 16 3.58174 16 8.00002C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8.00002C0 3.58174 3.58172 1.52588e-05 8 1.52588e-05ZM10.2821 4.63808L11.3427 5.69874L9.05007 7.99008L11.3427 10.2821L10.2821 11.3427L7.99007 9.05008L5.69873 11.3427L4.63807 10.2821L6.92907 7.99008L4.63807 5.69874L5.69873 4.63808L7.99007 6.92908L10.2821 4.63808ZM1.5 8.00002C1.5 4.41016 4.41015 1.50002 8 1.50002C11.5899 1.50002 14.5 4.41016 14.5 8.00002C14.5 11.5899 11.5899 14.5 8 14.5C4.41015 14.5 1.5 11.5899 1.5 8.00002Z' fill='%23fff' fill-rule='evenodd'/%3E%3C/svg%3E");
237
254
  --bf-ui-icon-search: url("data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.964 1a5.964 5.964 0 014.709 9.623l4.303 4.305-1.06 1.06-4.306-4.305A5.964 5.964 0 116.963 1zm0 1.5a4.464 4.464 0 100 8.927 4.464 4.464 0 000-8.927z' fill='%23fff' fill-rule='nonzero'/%3E%3C/svg%3E");
@@ -315,6 +332,10 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-muted);
315
332
  grid-template-columns: minmax(0, 1fr);
316
333
  }
317
334
 
335
+ :where(.bf-theme) :where(.bf-field.is-range.is-stacked) > :where(.bf-control, .bf-form-help) {
336
+ grid-column: 1;
337
+ }
338
+
318
339
  :where(.bf-theme) :where(.bf-field.is-range.is-stacked) > :where(.bf-control) {
319
340
  min-inline-size: 0;
320
341
  }
@@ -332,7 +353,7 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-muted);
332
353
  margin: 0;
333
354
  min-inline-size: 0;
334
355
  padding-block-end: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
335
- padding-inline: var(--bf-panel-padding-inline);
356
+ padding-inline: var(--bf-component-inline-inset-continuation);
336
357
  padding-block-start: var(--bf-panel-padding-block);
337
358
  }
338
359
 
@@ -353,7 +374,7 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
353
374
  max-inline-size: 100%;
354
375
  min-inline-size: 0;
355
376
  margin-bottom: ${inputMarginBottom};
356
- ${controlPadding(inputBlockPaddingVar)} padding-inline: var(--bf-control-inline-padding-field);
377
+ ${controlPadding(inputBlockPaddingVar)} padding-inline: var(--bf-component-inline-inset-field);
357
378
  }
358
379
 
359
380
  :where(.bf-theme) :where(input[type='color'].bf-color-input) {
@@ -372,8 +393,8 @@ ${controlPadding(inputBlockPaddingVar)} padding-inline: var(--bf-control-inline
372
393
 
373
394
  :where(.bf-theme) :where(.bf-input, input[type='text'], input[type='number'], input[type='search'], input[type='password'], input[type='email'], input[type='url'], textarea, select):focus-visible {
374
395
  background-color: var(--bf-color-background-active);
375
- outline: 2px solid var(--bf-color-focus);
376
- outline-offset: 2px;
396
+ outline: 0.125rem solid var(--bf-color-focus);
397
+ outline-offset: 0.125rem;
377
398
  }
378
399
 
379
400
  :where(.bf-theme) :where(.bf-input, input[type='text'], input[type='number'], input[type='search'], input[type='password'], input[type='email'], input[type='url'], textarea, select):disabled {
@@ -414,7 +435,7 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
414
435
  cursor: pointer;
415
436
  margin-inline-end: var(--bf-field-gap);
416
437
  min-block-size: var(--bf-control-box-size-compact);
417
- ${controlPadding(controlCompactBlockPaddingVar)} padding-inline: var(--bf-control-inline-padding-action);
438
+ ${controlPadding(controlCompactBlockPaddingVar)} padding-inline: var(--bf-control-inline-padding-action-bordered);
418
439
  }
419
440
 
420
441
  :where(.bf-theme) :where(input[type='file'])::file-selector-button:hover {
@@ -423,16 +444,31 @@ ${controlPadding(controlCompactBlockPaddingVar)} padding-inline: var(--bf-contr
423
444
 
424
445
  :where(.bf-theme) :where(select) {
425
446
  background-image: var(--bf-ui-icon-chevron-down);
426
- background-position: right var(--bf-control-inline-padding-field) center;
447
+ background-position: right var(--bf-component-inline-inset-field) center;
427
448
  background-repeat: no-repeat;
428
449
  background-size: 1rem 1rem;
429
- padding-inline-end: calc(var(--bf-control-inline-padding-field) * 2.5);
450
+ overflow: hidden;
451
+ padding-inline-end: calc(var(--bf-component-inline-inset-field) * 2.5);
452
+ text-overflow: ellipsis;
453
+ white-space: nowrap;
430
454
  }
431
455
 
432
456
  :where(.bf-theme) :where(input[type='number'], .bf-slider-input) {
433
457
  font-variant-numeric: tabular-nums;
434
458
  }
435
459
 
460
+ /* Number fields retain their native input semantics and keyboard stepping,
461
+ while one field-owned background paints the compact pair. Sharing select's
462
+ 1rem canvas and end position avoids a second browser-reserved spin slot. */
463
+ :where(.bf-theme) :where(input[type='number']) {
464
+ appearance: textfield;
465
+ background-image: var(--bf-ui-icon-number-stepper);
466
+ background-position: right var(--bf-component-inline-inset-field) center;
467
+ background-repeat: no-repeat;
468
+ background-size: 1rem 1rem;
469
+ padding-inline-end: calc(var(--bf-component-inline-inset-field) * 2.5);
470
+ }
471
+
436
472
  :where(.bf-theme) :where(.bf-slider-input) {
437
473
  flex: 0 1 5rem;
438
474
  inline-size: min(100%, 5rem);
@@ -444,12 +480,14 @@ ${controlPadding(controlCompactBlockPaddingVar)} padding-inline: var(--bf-contr
444
480
 
445
481
  :where(.bf-theme) :where(input[type='number'])::-webkit-inner-spin-button,
446
482
  :where(.bf-theme) :where(input[type='number'])::-webkit-outer-spin-button {
483
+ appearance: none;
447
484
  margin: 0;
448
485
  }
449
486
 
450
487
  :where(.bf-theme) :where(.bf-checkbox, .bf-radio) {
488
+ display: grid;
451
489
  margin: 0;
452
- min-block-size: var(--bf-tick-row-block-size);
490
+ padding-inline-start: var(--bf-leading-mark-group-inset);
453
491
  position: relative;
454
492
  }
455
493
 
@@ -465,12 +503,11 @@ ${controlPadding(controlCompactBlockPaddingVar)} padding-inline: var(--bf-contr
465
503
 
466
504
  :where(.bf-theme) :where(.bf-checkbox-label, .bf-radio-label) {
467
505
  ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default);
506
+ border-block: var(--bf-border-width) solid transparent;
468
507
  cursor: pointer;
469
508
  display: block;
470
- margin-bottom: 0;
471
- min-block-size: var(--bf-tick-row-block-size);
472
- padding-block-end: ${bodySelectedEndNudge};
473
- padding-block-start: ${bodySelectedStartNudge};
509
+ margin: 0 0 var(--bf-single-line-row-margin-block-end);
510
+ padding-block: var(--bf-single-line-row-padding-block);
474
511
  padding-inline-start: var(--bf-tick-label-offset);
475
512
  position: relative;
476
513
  }
@@ -501,7 +538,7 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default)
501
538
  border-left: calc(var(--bf-border-width) * 2) solid var(--bf-color-background-default);
502
539
  inline-size: calc(var(--bf-control-visual-size) * 0.6);
503
540
  inset-inline-start: calc(var(--bf-control-visual-size) * 0.2);
504
- inset-block-start: calc(var(--bf-tick-box-offset) + (var(--bf-control-visual-size) * 0.18));
541
+ inset-block-start: calc(var(--bf-tick-box-offset) + (var(--bf-control-visual-size) * 0.18) + (var(--bf-border-width) * 2));
505
542
  opacity: 0;
506
543
  transform: rotate(-45deg);
507
544
  }
@@ -539,20 +576,19 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default)
539
576
  }
540
577
 
541
578
  :where(.bf-theme) :where(.bf-checkbox-input:focus-visible + .bf-checkbox-label)::before {
542
- outline: 2px solid var(--bf-color-focus);
543
- outline-offset: 2px;
579
+ outline: 0.125rem solid var(--bf-color-focus);
580
+ outline-offset: 0.125rem;
544
581
  }
545
582
 
546
583
  :where(.bf-theme) :where(.bf-radio-input:focus-visible + .bf-radio-label)::before {
547
- outline: 2px solid var(--bf-color-focus);
548
- outline-offset: 2px;
584
+ outline: 0.125rem solid var(--bf-color-focus);
585
+ outline-offset: 0.125rem;
549
586
  }
550
587
 
551
588
  :where(.bf-theme) :where(.bf-switch) {
552
589
  align-items: flex-start;
553
590
  display: inline-flex;
554
591
  gap: var(--bf-field-gap);
555
- min-block-size: var(--bf-switch-row-block-size);
556
592
  position: relative;
557
593
  }
558
594
 
@@ -601,8 +637,8 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default)
601
637
  }
602
638
 
603
639
  :where(.bf-theme) :where(.bf-switch-input:focus-visible + .bf-switch-slider) {
604
- outline: 2px solid var(--bf-color-focus);
605
- outline-offset: 2px;
640
+ outline: 0.125rem solid var(--bf-color-focus);
641
+ outline-offset: 0.125rem;
606
642
  }
607
643
 
608
644
  :where(.bf-theme) :where(.bf-switch-input:disabled + .bf-switch-slider) {
@@ -611,19 +647,20 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default)
611
647
 
612
648
  :where(.bf-theme) :where(.bf-switch-label) {
613
649
  ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-default);
650
+ border-block: var(--bf-border-width) solid transparent;
614
651
  cursor: pointer;
615
652
  display: inline-block;
616
- margin: 0 0 var(--bf-body-margin-bottom);
617
- padding-block-end: 0;
618
- padding-block-start: ${bodySelectedStartNudge};
653
+ margin: 0 0 var(--bf-single-line-row-margin-block-end);
654
+ padding-block: var(--bf-single-line-row-padding-block);
619
655
  }
620
656
 
621
657
  :where(.bf-theme) :where(.bf-validation-message) {
622
- ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-muted);
623
- margin: 0 0 var(--bf-body-margin-bottom);
624
- padding-block-end: 0;
625
- padding-block-start: ${bodySelectedStartNudge};
626
- padding-inline-start: calc(var(--bf-control-visual-size) + var(--bf-field-gap));
658
+ ${typeStyles(body, { includeCase: false })} border-block: var(--bf-border-width) solid transparent;
659
+ color: var(--bf-color-text-muted);
660
+ margin: 0 0 var(--bf-single-line-row-margin-block-end);
661
+ margin-inline-start: var(--bf-leading-mark-group-inset);
662
+ padding-block: var(--bf-single-line-row-padding-block);
663
+ padding-inline-start: var(--bf-leading-mark-offset);
627
664
  position: relative;
628
665
  }
629
666
 
@@ -758,7 +795,7 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-muted);
758
795
  border: var(--bf-border-width) solid var(--bf-color-border-high-contrast);
759
796
  block-size: var(--bf-control-visual-size);
760
797
  border-radius: 50%;
761
- box-shadow: 0 0 calc(var(--bf-control-visual-size) * 0.25) 1px rgba(0, 0, 0, 0.2);
798
+ box-shadow: 0 0 calc(var(--bf-control-visual-size) * 0.25) 0.0625rem rgba(0, 0, 0, 0.2);
762
799
  inline-size: var(--bf-control-visual-size);
763
800
  margin-top: calc((var(--bf-slider-track-size) - var(--bf-control-visual-size)) / 2);
764
801
  }
@@ -784,7 +821,7 @@ ${typeStyles(body, { includeCase: false })} color: var(--bf-color-text-muted);
784
821
  border: var(--bf-border-width) solid var(--bf-color-border-high-contrast);
785
822
  block-size: var(--bf-control-visual-size);
786
823
  border-radius: 50%;
787
- box-shadow: 0 0 calc(var(--bf-control-visual-size) * 0.25) 1px rgba(0, 0, 0, 0.2);
824
+ box-shadow: 0 0 calc(var(--bf-control-visual-size) * 0.25) 0.0625rem rgba(0, 0, 0, 0.2);
788
825
  inline-size: var(--bf-control-visual-size);
789
826
  }
790
827
 
@@ -853,11 +890,11 @@ ${listCss({ bodyTypeStyles })}
853
890
  ${typeStyles(body, { includeCase: false })} background: var(--bf-color-background-alt);
854
891
  color: var(--bf-color-link-default);
855
892
  display: block;
856
- left: -999px;
893
+ left: -62.4375rem;
857
894
  max-inline-size: calc(100vw - var(--bf-baseline));
858
895
  position: absolute;
859
896
  text-decoration: none;
860
- top: -999px;
897
+ top: -62.4375rem;
861
898
  }
862
899
 
863
900
  :where(.bf-theme) :where(.bf-skip-link:hover) {
@@ -866,7 +903,7 @@ ${typeStyles(body, { includeCase: false })} background: var(--bf-color-backgrou
866
903
 
867
904
  :where(.bf-theme) :where(.bf-skip-link:focus, .bf-skip-link:focus-visible) {
868
905
  left: calc(var(--bf-baseline) * 0.5);
869
- outline: 2px solid var(--bf-color-focus);
906
+ outline: 0.125rem solid var(--bf-color-focus);
870
907
  outline-offset: 0;
871
908
  padding-block: calc(var(--bf-baseline) * 1.5);
872
909
  padding-inline: calc(var(--bf-baseline) * 1.5);
@@ -884,9 +921,6 @@ ${tableCss({
884
921
  ${chipBadgeStatusCss({
885
922
  bodyCaseTypeStyles: typeStyles(body),
886
923
  bodyLineHeight,
887
- bodySelectedStartNudge,
888
- h5SelectedEndNudge,
889
- h5SelectedStartNudge,
890
924
  bodyTypeStyles,
891
925
  })}
892
926
 
@@ -900,7 +934,7 @@ ${chipBadgeStatusCss({
900
934
  margin: 0;
901
935
  padding: 0;
902
936
  position: relative;
903
- text-indent: -9999px;
937
+ text-indent: -624.9375rem;
904
938
  }
905
939
 
906
940
  :where(.bf-theme) :where(.bf-chip-dismiss) {
@@ -912,7 +946,7 @@ ${chipBadgeStatusCss({
912
946
  :where(.bf-theme) :where(.bf-chip-dismiss, .bf-search-box-reset, .bf-search-and-filter-clear)::before,
913
947
  :where(.bf-theme) :where(.bf-chip-dismiss, .bf-search-box-reset, .bf-search-and-filter-clear)::after {
914
948
  background: currentColor;
915
- block-size: 2px;
949
+ block-size: 0.125rem;
916
950
  content: "";
917
951
  inline-size: 0.75rem;
918
952
  left: 50%;
@@ -933,7 +967,6 @@ ${searchBoxAndFilterCss({
933
967
  bodySelectedStartNudge,
934
968
  bodyTypeStyles,
935
969
  buttonBlockPaddingVar,
936
- h6TypeStyles,
937
970
  inputMarginBottom,
938
971
  })}
939
972
 
@@ -946,8 +979,7 @@ ${legacyNavigationCss({
946
979
  bodySemiboldTypeStyles: typeStyles(body, { fontWeight: 600, includeCase: false }),
947
980
  bodyTypeStyles,
948
981
  buttonMarginBottom,
949
- buttonPadding,
950
- compactButtonPadding: controlPadding(controlCompactBlockPaddingVar, "0rem")
982
+ buttonPadding
951
983
  })}
952
984
 
953
985
  :where(.bf-theme) :where(.bf-contextual-menu, .bf-contextual-menu.is-left, .bf-contextual-menu.is-center) {
@@ -960,7 +992,7 @@ ${legacyNavigationCss({
960
992
  :where(.bf-theme) :where(.bf-contextual-menu-dropdown) {
961
993
  background: var(--bf-color-background-default);
962
994
  border: var(--bf-border-width) solid var(--bf-color-border-default);
963
- box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
995
+ box-shadow: 0 0.75rem 2rem rgba(0, 0, 0, 0.28);
964
996
  display: none;
965
997
  list-style: none;
966
998
  margin: 0;
@@ -994,7 +1026,7 @@ ${legacyNavigationCss({
994
1026
  }
995
1027
 
996
1028
  :where(.bf-theme) :where(.bf-contextual-menu-group) + :where(.bf-contextual-menu-group) {
997
- box-shadow: inset 0 1px 0 var(--bf-color-border-default);
1029
+ box-shadow: inset 0 0.0625rem 0 var(--bf-color-border-default);
998
1030
  }
999
1031
 
1000
1032
  :where(.bf-theme) :where(.bf-contextual-menu-link) {
@@ -1007,7 +1039,7 @@ ${typeStyles(body, { includeCase: false })} background: transparent;
1007
1039
  margin: 0;
1008
1040
  overflow: hidden;
1009
1041
  padding-block: var(--bf-control-block-padding-compact);
1010
- padding-inline: var(--bf-panel-padding-inline);
1042
+ padding-inline: var(--bf-component-inline-inset-action);
1011
1043
  text-align: left;
1012
1044
  text-decoration: none;
1013
1045
  text-overflow: ellipsis;
@@ -1033,8 +1065,8 @@ ${typeStyles(body, { includeCase: false })} background: transparent;
1033
1065
  }
1034
1066
 
1035
1067
  :where(.bf-theme) :where(.bf-contextual-menu-link):focus-visible {
1036
- outline: 2px solid var(--bf-color-focus);
1037
- outline-offset: -2px;
1068
+ outline: 0.125rem solid var(--bf-color-focus);
1069
+ outline-offset: -0.125rem;
1038
1070
  }
1039
1071
 
1040
1072
  :where(.bf-theme) :where(.bf-contextual-menu-link.is-disabled, .bf-contextual-menu-link[disabled]) {
@@ -1057,7 +1089,7 @@ ${typeStyles(body, { includeCase: false })} background: transparent;
1057
1089
 
1058
1090
  :where(.bf-theme) :where(.bf-tooltip-message) {
1059
1091
  ${typeStyles(body, { includeCase: false })} background-color: var(--bf-color-background-alt);
1060
- box-shadow: inset 0 0 0 var(--bf-border-width) var(--bf-color-border-default), 0 12px 32px rgba(0, 0, 0, 0.24);
1092
+ box-shadow: inset 0 0 0 var(--bf-border-width) var(--bf-color-border-default), 0 0.75rem 2rem rgba(0, 0, 0, 0.24);
1061
1093
  color: var(--bf-color-text-default);
1062
1094
  inline-size: max-content;
1063
1095
  left: 0;
@@ -1066,7 +1098,7 @@ ${typeStyles(body, { includeCase: false })} background-color: var(--bf-color-ba
1066
1098
  opacity: 0;
1067
1099
  padding-block-end: ${bodySelectedEndNudge};
1068
1100
  padding-block-start: ${bodySelectedStartNudge};
1069
- padding-inline: var(--bf-panel-padding-inline);
1101
+ padding-inline: var(--bf-component-inline-inset-continuation);
1070
1102
  pointer-events: none;
1071
1103
  position: absolute;
1072
1104
  top: 100%;
@@ -1202,7 +1234,7 @@ ${typeStyles(body, { includeCase: false })} align-items: center;
1202
1234
  justify-content: center;
1203
1235
  margin-bottom: ${buttonMarginBottom};
1204
1236
  min-inline-size: var(--bf-control-box-size);
1205
- ${controlPadding(buttonBlockPaddingVar)} padding-inline: var(--bf-control-inline-padding-action);
1237
+ ${controlPadding(buttonBlockPaddingVar)} padding-inline: var(--bf-control-inline-padding-action-bordered);
1206
1238
  text-align: center;
1207
1239
  text-decoration: none;
1208
1240
  }
@@ -1216,8 +1248,8 @@ ${controlPadding(buttonBlockPaddingVar)} padding-inline: var(--bf-control-inlin
1216
1248
  }
1217
1249
 
1218
1250
  :where(.bf-theme) :where(.bf-pagination-link:focus-visible, .bf-pagination-link.is-previous:focus-visible, .bf-pagination-link.is-next:focus-visible) {
1219
- outline: 2px solid var(--bf-color-focus);
1220
- outline-offset: 2px;
1251
+ outline: 0.125rem solid var(--bf-color-focus);
1252
+ outline-offset: 0.125rem;
1221
1253
  }
1222
1254
 
1223
1255
  :where(.bf-theme) :where(.bf-pagination-link.is-active, .bf-pagination-link[aria-current='page'], .bf-pagination-link[aria-current='true']) {
@@ -1291,14 +1323,15 @@ ${typeStyles(body, { includeCase: false })} align-items: center;
1291
1323
  appearance: none;
1292
1324
  background: transparent;
1293
1325
  border: 0;
1326
+ border-block: var(--bf-border-width) solid transparent;
1294
1327
  color: var(--bf-color-text-default);
1295
1328
  cursor: pointer;
1296
1329
  display: flex;
1297
1330
  gap: var(--bf-disclosure-gap);
1298
1331
  inline-size: 100%;
1299
1332
  justify-content: flex-start;
1300
- min-block-size: var(--bf-control-box-size);
1301
- padding-block: var(--bf-control-block-padding);
1333
+ margin-block-end: var(--bf-single-line-row-margin-block-end);
1334
+ padding-block: var(--bf-single-line-row-padding-block);
1302
1335
  padding-inline: 0;
1303
1336
  text-align: left;
1304
1337
  }
@@ -1308,8 +1341,8 @@ ${typeStyles(body, { includeCase: false })} align-items: center;
1308
1341
  }
1309
1342
 
1310
1343
  :where(.bf-theme) :where(.bf-accordion-tab):focus-visible {
1311
- outline: 2px solid var(--bf-color-focus);
1312
- outline-offset: 2px;
1344
+ outline: 0.125rem solid var(--bf-color-focus);
1345
+ outline-offset: 0.125rem;
1313
1346
  }
1314
1347
 
1315
1348
  :where(.bf-theme) :where(.bf-accordion-tab)::before {
@@ -1322,18 +1355,19 @@ ${typeStyles(body, { includeCase: false })} align-items: center;
1322
1355
  display: inline-block;
1323
1356
  flex: none;
1324
1357
  inline-size: var(--bf-disclosure-icon-inline-size);
1358
+ transform: translateY(var(--bf-disclosure-icon-optical-offset-block));
1325
1359
  transition: transform 120ms ease;
1326
1360
  }
1327
1361
 
1328
1362
  :where(.bf-theme) :where(.bf-accordion-tab[aria-expanded='false'])::before {
1329
- transform: rotate(-90deg);
1363
+ transform: translateY(var(--bf-disclosure-icon-optical-offset-block)) rotate(-90deg);
1330
1364
  }
1331
1365
 
1332
1366
  :where(.bf-theme) :where(.bf-accordion-panel) {
1333
1367
  margin: 0;
1334
1368
  overflow: hidden;
1335
1369
  padding-block-start: var(--bf-baseline);
1336
- padding-inline-start: calc(var(--bf-accordion-indent) + ${roleFontSizeVar("body", body.fontSize)} + var(--bf-baseline));
1370
+ padding-inline-start: var(--bf-component-inline-inset-continuation);
1337
1371
  }
1338
1372
 
1339
1373
  :where(.bf-theme) :where(.bf-accordion-panel[aria-hidden='true']) {
@@ -1399,7 +1433,7 @@ ${typeStyles(body, { includeCase: false })} align-items: center;
1399
1433
  :where(.bf-theme) :where(.bf-modal-header, .bf-modal-body, .bf-modal-footer) {
1400
1434
  padding-block-end: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
1401
1435
  padding-block-start: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
1402
- padding-inline: var(--bf-panel-padding-inline);
1436
+ padding-inline: var(--bf-component-inline-inset-continuation);
1403
1437
  }
1404
1438
 
1405
1439
  :where(.bf-theme) :where(.bf-modal-header) {
@@ -1463,7 +1497,7 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
1463
1497
  :where(.bf-theme) :where(.bf-code-snippet-header) {
1464
1498
  align-items: start;
1465
1499
  background: var(--bf-color-background-active);
1466
- box-shadow: inset 0 -1px 0 var(--bf-color-border-default);
1500
+ box-shadow: inset 0 -0.0625rem 0 var(--bf-color-border-default);
1467
1501
  display: flex;
1468
1502
  flex-wrap: wrap;
1469
1503
  justify-content: space-between;
@@ -1480,7 +1514,7 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-default);
1480
1514
  margin: 0;
1481
1515
  overflow-wrap: anywhere;
1482
1516
  padding-block: var(--bf-panel-padding-block);
1483
- padding-inline: var(--bf-panel-padding-inline);
1517
+ padding-inline: var(--bf-component-inline-inset-continuation);
1484
1518
  }
1485
1519
 
1486
1520
  :where(.bf-theme) :where(.bf-code-snippet-dropdowns) {
@@ -1495,7 +1529,7 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-default);
1495
1529
  :where(.bf-theme) :where(.bf-code-snippet-header.is-stacked) :where(.bf-code-snippet-dropdowns) {
1496
1530
  justify-content: stretch;
1497
1531
  margin-inline-start: 0;
1498
- box-shadow: inset 0 1px 0 var(--bf-color-border-default);
1532
+ box-shadow: inset 0 0.0625rem 0 var(--bf-color-border-default);
1499
1533
  width: 100%;
1500
1534
  }
1501
1535
 
@@ -1509,12 +1543,12 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
1509
1543
  min-block-size: calc(${bodyLineHeight} + (var(--bf-panel-padding-block) * 2));
1510
1544
  min-inline-size: 0;
1511
1545
  padding-block: var(--bf-panel-padding-block);
1512
- padding-inline: var(--bf-panel-padding-inline);
1546
+ padding-inline: var(--bf-component-inline-inset-action);
1513
1547
  text-align: start;
1514
1548
  }
1515
1549
 
1516
1550
  :where(.bf-theme) :where(.bf-code-snippet-dropdown) + :where(.bf-code-snippet-dropdown) {
1517
- box-shadow: inset 1px 0 0 var(--bf-color-border-default);
1551
+ box-shadow: inset 0.0625rem 0 0 var(--bf-color-border-default);
1518
1552
  }
1519
1553
 
1520
1554
  :where(.bf-theme) :where(.bf-code-snippet-dropdown):focus:not(:focus-visible) {
@@ -1522,8 +1556,8 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
1522
1556
  }
1523
1557
 
1524
1558
  :where(.bf-theme) :where(.bf-code-snippet-dropdown):focus-visible {
1525
- outline: 2px solid var(--bf-color-focus);
1526
- outline-offset: -2px;
1559
+ outline: 0.125rem solid var(--bf-color-focus);
1560
+ outline-offset: -0.125rem;
1527
1561
  }
1528
1562
 
1529
1563
  :where(.bf-theme) :where(.bf-code-snippet-block, .bf-code-snippet-block.is-icon, .bf-code-snippet-block.is-numbered) {
@@ -1538,7 +1572,7 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
1538
1572
  min-inline-size: 0;
1539
1573
  overflow-x: auto;
1540
1574
  padding-block: var(--bf-panel-padding-block);
1541
- padding-inline: var(--bf-panel-padding-inline);
1575
+ padding-inline: var(--bf-component-inline-inset-continuation);
1542
1576
  tab-size: 2;
1543
1577
  white-space: pre;
1544
1578
  }
@@ -1554,14 +1588,14 @@ ${typeStyles(body, { includeCase: false })} appearance: none;
1554
1588
 
1555
1589
  :where(.bf-theme) :where(.bf-code-snippet-block.is-icon) {
1556
1590
  cursor: copy;
1557
- padding-inline-start: calc(var(--bf-panel-padding-inline) + (var(--bf-baseline) * 3));
1591
+ padding-inline-start: calc(var(--bf-component-inline-inset-continuation) + (var(--bf-baseline) * 3));
1558
1592
  position: relative;
1559
1593
  }
1560
1594
 
1561
1595
  :where(.bf-theme) :where(.bf-code-snippet-block.is-icon)::before {
1562
1596
  ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1563
1597
  content: "$";
1564
- inset-inline-start: var(--bf-panel-padding-inline);
1598
+ inset-inline-start: var(--bf-component-inline-inset-continuation);
1565
1599
  inset-block-start: var(--bf-panel-padding-block);
1566
1600
  position: absolute;
1567
1601
  }
@@ -1576,7 +1610,7 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1576
1610
 
1577
1611
  :where(.bf-theme) :where(.bf-code-snippet-block.is-icon.is-copied) {
1578
1612
  background: color-mix(in srgb, var(--bf-color-background-alt) 78%, var(--bf-color-background-information-default));
1579
- box-shadow: inset 0 0 0 1px var(--bf-color-border-information);
1613
+ box-shadow: inset 0 0 0 0.0625rem var(--bf-color-border-information);
1580
1614
  }
1581
1615
 
1582
1616
  :where(.bf-theme) :where(.bf-code-snippet-block.is-icon):focus:not(:focus-visible) {
@@ -1584,8 +1618,8 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1584
1618
  }
1585
1619
 
1586
1620
  :where(.bf-theme) :where(.bf-code-snippet-block.is-icon):focus-visible {
1587
- outline: 2px solid var(--bf-color-focus);
1588
- outline-offset: -2px;
1621
+ outline: 0.125rem solid var(--bf-color-focus);
1622
+ outline-offset: -0.125rem;
1589
1623
  }
1590
1624
 
1591
1625
  :where(.bf-theme) :where(.bf-code-snippet-block.is-numbered) {
@@ -1647,6 +1681,32 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1647
1681
  z-index: 40;
1648
1682
  }
1649
1683
 
1684
+ /* A responsive application brand occupies the persistent bar only while the
1685
+ * full navigation brand is unavailable. The same public tagged-logo contract
1686
+ * is used in both locations; state CSS guarantees that only one copy is
1687
+ * visible and exposed at a time. */
1688
+ :where(.bf-theme) :where(.bf-navigation-bar.is-responsive) :where(.bf-panel-header.is-navigation-brand) {
1689
+ align-items: start;
1690
+ column-gap: calc(var(--bf-baseline) * 2);
1691
+ padding-inline-end: var(--bf-panel-content-padding-inline, var(--bf-panel-padding-inline));
1692
+ }
1693
+
1694
+ :where(.bf-theme) :where(.bf-navigation-bar.is-responsive) {
1695
+ margin-block-end: calc(var(--bf-border-width) * -1);
1696
+ }
1697
+
1698
+ :where(.bf-theme) :where(.bf-navigation-bar.is-responsive) :where(.bf-panel-header.is-navigation-brand) > :where(.bf-top-navigation-logo.is-canonical-tagged) {
1699
+ flex: 1 1 12rem;
1700
+ inline-size: auto;
1701
+ min-inline-size: 0;
1702
+ }
1703
+
1704
+ :where(.bf-theme) :where(.bf-application:has(> .bf-navigation:not(.is-collapsed)))
1705
+ > :where(.bf-navigation-bar.is-responsive)
1706
+ :where(.bf-top-navigation-logo) {
1707
+ visibility: hidden;
1708
+ }
1709
+
1650
1710
  :where(.bf-theme) :where(.bf-navigation) {
1651
1711
  grid-column: 1 / -1;
1652
1712
  grid-row: 1 / -1;
@@ -1693,7 +1753,7 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1693
1753
  }
1694
1754
 
1695
1755
  :where(.bf-theme) :where(.bf-navigation:not(.is-collapsed)) > :where(.bf-navigation-drawer) {
1696
- box-shadow: 0 24px 72px rgba(0, 0, 0, 0.38);
1756
+ box-shadow: 0 1.5rem 4.5rem rgba(0, 0, 0, 0.38);
1697
1757
  transform: translateX(0);
1698
1758
  visibility: visible;
1699
1759
  }
@@ -1703,10 +1763,10 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1703
1763
  }
1704
1764
 
1705
1765
  :where(.bf-theme) :where(.bf-navigation.is-collapsed) :where(.bf-side-navigation-label) {
1706
- block-size: 1px;
1766
+ block-size: 0.0625rem;
1707
1767
  clip-path: inset(50%);
1708
- inline-size: 1px;
1709
- max-inline-size: 1px;
1768
+ inline-size: 0.0625rem;
1769
+ max-inline-size: 0.0625rem;
1710
1770
  opacity: 0;
1711
1771
  overflow: hidden;
1712
1772
  pointer-events: none;
@@ -1724,8 +1784,8 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1724
1784
  padding-inline: calc(var(--bf-baseline) * 1.25);
1725
1785
  }
1726
1786
 
1727
- :where(.bf-theme) :where(.bf-navigation.is-collapsed) :where(.bf-side-navigation-list) {
1728
- border-bottom-color: transparent;
1787
+ :where(.bf-theme) :where(.bf-navigation.is-collapsed) :where(.bf-side-navigation-list)::after {
1788
+ content: none;
1729
1789
  }
1730
1790
 
1731
1791
  :where(.bf-theme) :where(.bf-navigation.is-collapsed) :where(.bf-side-navigation-item.is-title > .bf-side-navigation-link, .bf-side-navigation-item.is-title > .bf-side-navigation-text) {
@@ -1738,6 +1798,14 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1738
1798
  grid-template-rows: minmax(0, 1fr);
1739
1799
  }
1740
1800
 
1801
+ :where(.bf-theme) :where(.bf-application:has(> .bf-navigation)):has(> .bf-aside.is-pinned:not(.is-collapsed)) {
1802
+ grid-template-areas:
1803
+ "navigation-bar navigation-bar"
1804
+ "main aside";
1805
+ grid-template-columns: minmax(0, 1fr) minmax(0, var(--bf-application-aside-width));
1806
+ grid-template-rows: min-content minmax(0, 1fr);
1807
+ }
1808
+
1741
1809
  :where(.bf-theme) :where(.bf-main) {
1742
1810
  grid-area: main;
1743
1811
  min-block-size: 0;
@@ -1776,7 +1844,7 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1776
1844
  :where(.bf-theme) :where(.bf-aside.is-overlay, .bf-aside.is-drawer) {
1777
1845
  align-self: stretch;
1778
1846
  block-size: auto;
1779
- box-shadow: 0 24px 72px rgba(0, 0, 0, 0.38);
1847
+ box-shadow: 0 1.5rem 4.5rem rgba(0, 0, 0, 0.38);
1780
1848
  bottom: 0;
1781
1849
  grid-column: 1 / -1;
1782
1850
  grid-row: 1 / -1;
@@ -1866,14 +1934,14 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1866
1934
 
1867
1935
  :where(.bf-theme) :where(.bf-application-aside-resize-handle)::after {
1868
1936
  background: var(--bf-color-border-default);
1869
- border-radius: 999px;
1937
+ border-radius: 62.4375rem;
1870
1938
  content: "";
1871
1939
  inset-block: var(--bf-panel-padding-block);
1872
- inset-inline-start: calc(50% - 1px);
1940
+ inset-inline-start: calc(50% - 0.0625rem);
1873
1941
  opacity: 0.95;
1874
1942
  position: absolute;
1875
1943
  transition: background-color 120ms ease, opacity 120ms ease;
1876
- width: 2px;
1944
+ width: 0.125rem;
1877
1945
  }
1878
1946
 
1879
1947
  :where(.bf-theme) :where(.bf-application-aside-resize-handle):hover::after,
@@ -1883,8 +1951,8 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1883
1951
  }
1884
1952
 
1885
1953
  :where(.bf-theme) :where(.bf-application-aside-resize-handle):focus-visible {
1886
- outline: 2px solid var(--bf-application-resize-handle-focus-ring);
1887
- outline-offset: -2px;
1954
+ outline: 0.125rem solid var(--bf-application-resize-handle-focus-ring);
1955
+ outline-offset: -0.125rem;
1888
1956
  }
1889
1957
 
1890
1958
  @media (min-width: 64.75rem) {
@@ -1903,6 +1971,16 @@ ${typeStyles(h6, { includeCase: false })} color: var(--bf-color-text-muted);
1903
1971
  grid-template-columns: minmax(0, var(--bf-application-navigation-width)) minmax(0, 1fr) minmax(0, var(--bf-application-aside-width));
1904
1972
  }
1905
1973
 
1974
+ :where(.bf-theme) :where(.bf-application:has(> .bf-navigation:not(.is-collapsed))) > :where(.bf-navigation-bar.is-responsive) {
1975
+ block-size: 0;
1976
+ border: 0;
1977
+ min-block-size: 0;
1978
+ overflow: hidden;
1979
+ pointer-events: none;
1980
+ position: absolute;
1981
+ visibility: hidden;
1982
+ }
1983
+
1906
1984
  :where(.bf-theme) :where(.bf-application:has(> .bf-navigation.is-collapsed)) {
1907
1985
  --bf-application-navigation-width: var(--bf-application-navigation-width-collapsed);
1908
1986
  }