@wwtdev/bsds-css 2.30.0 → 2.32.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.
package/dist/wwt-bsds.css CHANGED
@@ -2401,7 +2401,7 @@ a.bs-circle-button {
2401
2401
  .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"] > :nth-child(3)),
2402
2402
  .bs-dropdown-options :where(li[data-variant~="3-col"][data-variant~="description"] > :nth-child(4)) {
2403
2403
  color: var(--bs-ink-light);
2404
- font-size: var(--bs-text-xs);
2404
+ font-size: var(--bs-text-sm);
2405
2405
  min-height: 1.125rem;
2406
2406
  line-height: 1.125rem;
2407
2407
  }
@@ -4347,7 +4347,7 @@ select[multiple],
4347
4347
  .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-leave-from) {
4348
4348
  opacity: 1;
4349
4349
  }
4350
- .bs-inline-tabs {
4350
+ .bs-inline-tab-group {
4351
4351
  display: flex;
4352
4352
  gap: var(--bs-space-2);
4353
4353
  }
@@ -4419,7 +4419,7 @@ select[multiple],
4419
4419
  &[data-selected]:where(:focus-visible) {
4420
4420
  outline-offset: 0;
4421
4421
  }
4422
-
4422
+
4423
4423
  }
4424
4424
  .bs-loader {
4425
4425
  --loader-dot-bg: var(--bs-blue-500);
@@ -4782,7 +4782,7 @@ select[multiple],
4782
4782
  border-radius: 4px;
4783
4783
  color: var(--pill-text);
4784
4784
  display: inline-flex;
4785
- font-size: var(--bs-text-xs);
4785
+ font-size: var(--bs-text-sm);
4786
4786
  height: 1.5rem;
4787
4787
  gap: var(--pill-gap);
4788
4788
  line-height: 1rem;
@@ -6051,17 +6051,29 @@ This must go last to properly override the other classes
6051
6051
  transform: translateY(-50%) scale(0.5);
6052
6052
  }
6053
6053
  :root {
6054
- --bs-vertical-nav-width: 9.875rem;
6054
+ --bs-vertical-nav-width: 11.25rem;
6055
6055
  --bs-vertical-nav-narrow-width: 4.5rem;
6056
+ --bs-vertical-nav-collapsed-width: 4.5rem;
6057
+ /* Dynamic width set by the navigation component for page layout */
6058
+ --bs-page-nav-width: 0px;
6056
6059
  }
6057
- .bs-vertical-nav {
6060
+ .bs-vertical-nav-wrapper {
6058
6061
  --active-color: rgba(255, 255, 255, 0.25);
6059
6062
  --bg-color: var(--bs-navy-base);
6060
6063
  --border-color: var(--bs-border-dark);
6064
+ --text-color: var(--bs-white);
6065
+ --link-color: var(--bs-white);
6066
+ --link-hover-color: var(--bs-white);
6067
+ --link-active-color: var(--bs-white);
6068
+ --toggle-bg-color: var(--bg-color);
6069
+ --toggle-color: var(--bs-white);
6061
6070
  --top-offset: 48px;
6071
+ }
6072
+ .bs-vertical-nav {
6062
6073
  -ms-overflow-style: none; /* Internet Explorer 10+ */
6063
6074
  background-color: var(--bg-color);
6064
- color: var(--bs-white);
6075
+ border-inline-end: 1px solid var(--border-color);
6076
+ color: var(--text-color);
6065
6077
  display: flex;
6066
6078
  flex-direction: column;
6067
6079
  height: 100dvh;
@@ -6077,7 +6089,6 @@ This must go last to properly override the other classes
6077
6089
  right: 0;
6078
6090
  scrollbar-width: none; /* Firefox */
6079
6091
  top: var(--top-offset);
6080
- /* Slight delay for visibility to change prior to opacity */
6081
6092
  transition: opacity 200ms ease 10ms;
6082
6093
  visibility: hidden;
6083
6094
  width: auto;
@@ -6087,22 +6098,19 @@ This must go last to properly override the other classes
6087
6098
  opacity: 1;
6088
6099
  visibility: visible;
6089
6100
  }
6090
- .dark .bs-vertical-nav {
6101
+ .bs-vertical-nav:where([data-collapsible="true"]) {
6102
+ transition: opacity 200ms ease 10ms, width 350ms cubic-bezier(0.4, 0, 0.2, 1);
6103
+ }
6104
+ .dark .bs-vertical-nav-wrapper {
6091
6105
  --active-color: rgba(255, 255, 255, 0.25);
6092
6106
  --bg-color: var(--bs-bg-base);
6093
- --border-color: var(--bs-border-dark);
6094
- border-right: 1px solid var(--bs-border-medium);
6107
+ --border-color: var(--bs-border-medium);
6095
6108
  }
6096
6109
  @media (min-width: 1166px) {
6097
6110
  .bs-vertical-nav {
6098
- border-right: 1px solid var(--bg-color);
6099
6111
  opacity: 1;
6100
- padding-bottom: 1rem;
6101
- padding-left: 0.5rem;
6102
- padding-right: 0.5rem;
6103
- padding-top: 1rem;
6112
+ padding: 1rem;
6104
6113
  right: auto;
6105
- transition: none;
6106
6114
  visibility: visible;
6107
6115
  width: var(--bs-vertical-nav-width);
6108
6116
  }
@@ -6110,21 +6118,73 @@ This must go last to properly override the other classes
6110
6118
  .bs-vertical-nav:where([data-narrow="true"]) {
6111
6119
  width: var(--bs-vertical-nav-narrow-width);
6112
6120
  }
6121
+
6122
+ .bs-vertical-nav:where([data-collapsed="true"]) {
6123
+ width: var(--bs-vertical-nav-collapsed-width);
6124
+ }
6113
6125
  }
6114
6126
  .bs-vertical-nav::-webkit-scrollbar {
6115
6127
  display: none; /* Safari and Chrome */
6116
6128
  }
6129
+ /* ===== Collapse Toggle Button ===== */
6130
+ .bs-vertical-nav-toggle {
6131
+ align-items: center;
6132
+ background: var(--toggle-bg-color);
6133
+ border: 1px solid var(--border-color);
6134
+ border-radius: 100px;
6135
+ color: var(--toggle-color);
6136
+ cursor: pointer;
6137
+ display: none; /* Hidden by default on mobile */
6138
+ height: 24px;
6139
+ width: 24px;
6140
+ justify-content: center;
6141
+ padding: 0;
6142
+ position: fixed;
6143
+ left: calc(var(--bs-vertical-nav-width) - 0.5rem);
6144
+ pointer-events: auto; /* Ensure button is clickable */
6145
+ top: calc(var(--top-offset) + 1.125rem); /* top-offset + 18px */
6146
+ transition: left 300ms ease-out, opacity 100ms ease-out;
6147
+ z-index: 1002; /* Above nav to prevent hover conflicts */
6148
+ }
6149
+ @media (min-width: 1166px) {
6150
+ .bs-vertical-nav-toggle {
6151
+ display: flex;
6152
+ opacity: 1;
6153
+ transition: left 300ms ease-out, opacity 100ms ease-out;
6154
+ }
6155
+
6156
+ .bs-vertical-nav-toggle:where([data-collapsed="true"]) {
6157
+ left: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem);
6158
+ }
6159
+
6160
+ /* Adjust position for narrow variant when NOT collapsed */
6161
+ .bs-vertical-nav-toggle:where([data-narrow="true"]:not([data-collapsed="true"])) {
6162
+ left: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem);
6163
+ }
6164
+ }
6165
+ .bs-vertical-nav-toggle-icon {
6166
+ height: 8px;
6167
+ width: 8px;
6168
+ color: inherit;
6169
+ transition: transform 200ms var(--bs-transition-ease);
6170
+ will-change: transform;
6171
+ flex-shrink: 0;
6172
+ }
6117
6173
  /* ===== Sections ===== */
6118
6174
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
6119
- border-top: 2px solid var(--border-color);
6175
+ border-top: 1px solid var(--border-color);
6120
6176
  margin-top: 0.5rem;
6121
6177
  padding-top: 0.5rem;
6122
6178
  }
6123
6179
  @media (min-width: 1166px) {
6124
6180
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
6125
- margin-top: 0.25rem;
6181
+ margin-top: 0.5rem;
6126
6182
  }
6127
6183
  }
6184
+ /* Divider-only sections have no additional padding since no toggle button */
6185
+ .bs-vertical-nav :where(.bs-vertical-nav-section[data-divider-only="true"]) {
6186
+ padding-top: 0.5rem;
6187
+ }
6128
6188
  /* Don't show border if the very first item is a section */
6129
6189
  .bs-vertical-nav :where(ul li:first-child) {
6130
6190
  border-top: none;
@@ -6147,7 +6207,7 @@ This must go last to properly override the other classes
6147
6207
  @media (min-width: 1166px) {
6148
6208
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle) {
6149
6209
  /* nav width - nav left padding - nav right padding */
6150
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6210
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
6151
6211
  }
6152
6212
 
6153
6213
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle span:first-child) {
@@ -6155,7 +6215,7 @@ This must go last to properly override the other classes
6155
6215
  text-align: start;
6156
6216
  text-overflow: ellipsis;
6157
6217
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - caret width */
6158
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.75rem);
6218
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 0.75rem);
6159
6219
  }
6160
6220
  }
6161
6221
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle-caret) {
@@ -6178,64 +6238,70 @@ This must go last to properly override the other classes
6178
6238
  margin-top: 0;
6179
6239
  padding-left: 0;
6180
6240
  }
6181
- @media (min-width: 1166px) {
6182
- .bs-vertical-nav :where(ul) {
6183
- gap: 0.25rem;
6184
- }
6185
- }
6186
6241
  /* ===== Nav List Items / Links */
6187
6242
  .bs-vertical-nav :where(ul li a) {
6188
6243
  align-items: center;
6189
6244
  border-radius: 4px;
6245
+ color: var(--link-color);
6190
6246
  cursor: pointer;
6191
6247
  display: flex;
6192
6248
  font-size: 1rem;
6193
6249
  font-weight: 400;
6194
6250
  gap: 0.5rem;
6195
6251
  height: 100%;
6196
- padding-bottom: 0.75rem;
6197
- padding-left: 0.75rem;
6198
- padding-right: 0.75rem;
6199
- padding-top: 0.75rem;
6200
- width: 100%;
6252
+ padding: 0.5rem 0.75rem;
6253
+ position: relative;
6254
+ }
6255
+ /* Narrow variant - text always visible on desktop (overrides collapsed state) */
6256
+ @media (min-width: 1166px) {
6257
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a > span:last-child) {
6258
+ opacity: 1;
6259
+ visibility: visible;
6260
+ width: auto;
6261
+ }
6201
6262
  }
6202
6263
  @media (min-width: 1166px) {
6203
6264
  .bs-vertical-nav :where(ul li a) {
6204
6265
  font-size: 0.875rem;
6205
- padding-bottom: 0.5rem;
6206
- padding-top: 0.5rem;
6266
+ min-height: 2.5rem; /* Fixed minimum height to prevent height changes */
6267
+ padding: 0.5rem 0.75rem; /* Explicit padding for consistency */
6207
6268
  /* nav width - nav left padding - nav right padding */
6208
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6269
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
6270
+ }
6271
+
6272
+ /* Collapsed state width */
6273
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a) {
6274
+ /* collapsed width - nav left padding - nav right padding */
6275
+ width: calc(var(--bs-vertical-nav-collapsed-width) - 1rem - 1rem);
6209
6276
  }
6210
6277
 
6211
6278
  /* Text overflow - normal width - no icon */
6212
6279
  .bs-vertical-nav :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child) {
6213
6280
  overflow: hidden;
6214
6281
  text-overflow: ellipsis;
6282
+ white-space: nowrap;
6215
6283
  /* nav width - nav left padding - nav right padding - link left padding - link right padding */
6216
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
6284
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem);
6217
6285
  }
6218
6286
 
6219
6287
  /* Text overflow - normal width - with icon */
6220
6288
  .bs-vertical-nav :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
6221
6289
  overflow: hidden;
6222
6290
  text-overflow: ellipsis;
6291
+ white-space: nowrap;
6223
6292
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
6224
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.875rem - 0.5rem);
6293
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
6225
6294
  }
6226
6295
 
6227
6296
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
6228
6297
  flex-direction: column;
6229
6298
  font-size: 0.6875rem;
6230
- gap: 0.25rem;
6299
+ gap: 0.5rem; /* 8px - matches Figma */
6231
6300
  line-height: 1.3;
6232
- padding-bottom: 0.75rem;
6233
- padding-left: 0.25rem;
6234
- padding-right: 0.25rem;
6235
- padding-top: 0.75rem;
6301
+ padding: 0.5rem 0.75rem; /* 8px 12px - matches Figma */
6236
6302
  text-align: center;
6237
6303
  /* nav width - nav left padding - nav right padding */
6238
- width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6304
+ width: calc(var(--bs-vertical-nav-narrow-width) - 1rem - 1rem);
6239
6305
  }
6240
6306
 
6241
6307
  /* Text overflow - narrow width */
@@ -6243,32 +6309,143 @@ This must go last to properly override the other classes
6243
6309
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
6244
6310
  overflow: hidden;
6245
6311
  text-overflow: ellipsis;
6312
+ white-space: nowrap;
6246
6313
  /* nav width - nav left padding - nav right padding - link left padding */
6247
6314
  width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6248
6315
  }
6249
6316
  }
6317
+ .bs-vertical-nav-section:where([data-app-links="true"]) {
6318
+ padding-top: 1rem;
6319
+ }
6320
+ .bs-vertical-nav-section:where([data-app-links="true"]) :where(ul li a) {
6321
+ padding: 0.375rem 0.5rem;
6322
+ font-size: 0.75rem;
6323
+ font-weight: 600;
6324
+ }
6250
6325
  .bs-vertical-nav :where(ul li a:hover) {
6326
+ color: var(--link-hover-color);
6251
6327
  font-weight: 600;
6252
6328
  }
6329
+ .bs-vertical-nav-section:where([data-app-links="true"]) :where(ul li a:hover) {
6330
+ color: var(--bs-ink-blue);
6331
+ }
6253
6332
  .bs-vertical-nav :where(ul li a[data-active="true"]) {
6254
6333
  background-color: var(--active-color);
6334
+ color: var(--link-active-color);
6255
6335
  font-weight: 600;
6336
+ transition: background-color 200ms ease-out;
6256
6337
  }
6338
+ /* Icon sizing - mobile/default */
6257
6339
  .bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
6258
6340
  height: 1rem;
6259
6341
  width: 1rem;
6342
+ flex-shrink: 0; /* Prevent icon from shrinking */
6260
6343
  }
6261
6344
  @media (min-width: 1166px) {
6262
- .bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
6345
+ /* Wide and collapsible variant icons - 14px */
6346
+ .bs-vertical-nav:not([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
6263
6347
  height: 0.875rem;
6264
6348
  width: 0.875rem;
6265
6349
  }
6266
6350
 
6351
+ /* Narrow variant icons - 16px (inherits from base) */
6267
6352
  .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
6268
6353
  height: 1rem;
6269
6354
  width: 1rem;
6270
6355
  }
6271
6356
  }
6357
+ .bs-vertical-nav-section:where([data-app-links="true"]) .bs-vertical-nav-link-icon {
6358
+ height: 1.5rem;
6359
+ width: 1.5rem;
6360
+ margin-left: 0;
6361
+ }
6362
+ /* Default: Show text on mobile */
6363
+ .bs-vertical-nav :where(ul li a > span:last-child) {
6364
+ opacity: 1;
6365
+ visibility: visible;
6366
+ width: auto;
6367
+ }
6368
+ /* Desktop: Show text when NOT collapsed */
6369
+ @media (min-width: 1166px) {
6370
+ .bs-vertical-nav:not([data-collapsed="true"]) :where(ul li a > span:last-child) {
6371
+ opacity: 1;
6372
+ visibility: visible;
6373
+ width: auto;
6374
+ /* Immediate visibility when appropriate */
6375
+ transition: opacity 150ms ease, visibility 0ms linear;
6376
+ }
6377
+ }
6378
+ /* Desktop: Hide text when collapsed */
6379
+ @media (min-width: 1166px) {
6380
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a > span:last-child) {
6381
+ opacity: 0;
6382
+ visibility: hidden;
6383
+ width: 0;
6384
+ overflow: hidden;
6385
+ white-space: nowrap;
6386
+ /* Delay visibility to prevent flash during breakpoint transition */
6387
+ transition: opacity 150ms ease, visibility 0ms linear 150ms;
6388
+ }
6389
+ }
6390
+ /* Keep icons visible when collapsed */
6391
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-link-icon) {
6392
+ display: block;
6393
+ }
6394
+ /* Hide section toggle when collapsed */
6395
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-section-toggle) {
6396
+ display: none;
6397
+ }
6398
+ /* ===== Hover Expansion (CSS-only) ===== */
6399
+ @media (min-width: 1166px) {
6400
+ /* Expand nav on hover when collapsed and collapsible - but NOT when hovering the toggle button */
6401
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-collapsible="true"]) {
6402
+ width: var(--bs-vertical-nav-width);
6403
+ }
6404
+
6405
+ /* Narrow variant should respect narrow width on hover */
6406
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-narrow="true"]) {
6407
+ width: var(--bs-vertical-nav-narrow-width);
6408
+ }
6409
+
6410
+ /* Expand link widths on hover when collapsed */
6411
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a) {
6412
+ width: calc(var(--bs-vertical-nav-width) - 1rem - 1rem);
6413
+ }
6414
+
6415
+ /* Narrow variant links should respect narrow width on hover */
6416
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-narrow="true"]) :where(ul li a) {
6417
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6418
+ }
6419
+
6420
+ /* Show text on hover when collapsed */
6421
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a > span:last-child) {
6422
+ opacity: 1;
6423
+ visibility: visible;
6424
+ width: auto;
6425
+ overflow: visible;
6426
+ }
6427
+
6428
+ /* Hide toggle button on hover when collapsed - but NOT when hovering the button itself */
6429
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav-toggle[data-collapsed="true"]) {
6430
+ opacity: 0;
6431
+ pointer-events: none; /* Prevent interaction when hidden */
6432
+ }
6433
+
6434
+ /* Show section toggles on hover when collapsed */
6435
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(.bs-vertical-nav-section-toggle) {
6436
+ display: flex;
6437
+ }
6438
+ }
6439
+ /* ===== Top Content ===== */
6440
+ .bs-vertical-nav :where(.bs-vertical-nav-top-content) {
6441
+ margin-bottom: 0.5rem;
6442
+ padding: 0;
6443
+ }
6444
+ @media (min-width: 1166px) {
6445
+ .bs-vertical-nav :where(.bs-vertical-nav-top-content) {
6446
+ margin-bottom: 0.75rem;
6447
+ }
6448
+ }
6272
6449
  /* ===== End Items ===== */
6273
6450
  .bs-vertical-nav :where(.bs-vertical-nav-end-items) {
6274
6451
  display: flex;
@@ -6276,11 +6453,23 @@ This must go last to properly override the other classes
6276
6453
  gap: 0.25rem;
6277
6454
  margin-top: auto;
6278
6455
  }
6456
+ /* End items visibility for collapsible variant (desktop only) */
6457
+ @media (min-width: 1166px) {
6458
+ /* Hide end items when collapsible variant is collapsed */
6459
+ .bs-vertical-nav:where([data-collapsible="true"][data-collapsed="true"]) :where(.bs-vertical-nav-end-items) {
6460
+ display: none;
6461
+ }
6462
+
6463
+ /* Show end items on hover when collapsible variant is collapsed */
6464
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsible="true"][data-collapsed="true"]) :where(.bs-vertical-nav-end-items) {
6465
+ display: flex;
6466
+ }
6467
+ }
6279
6468
  .bs-vertical-nav :where(.bs-vertical-nav-end-items > *) {
6280
- color: var(--bs-white);
6469
+ color: var(--text-color);
6281
6470
  }
6282
6471
  .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
6283
- color: var(--bs-white);
6472
+ color: var(--text-color);
6284
6473
  padding-bottom: 0.5rem;
6285
6474
  padding-left: 0.75rem;
6286
6475
  padding-right: 0.75rem;
@@ -6297,6 +6486,13 @@ This must go last to properly override the other classes
6297
6486
  margin-right: 0.75rem;
6298
6487
  margin-top: 0.5rem;
6299
6488
  }
6489
+ /* Hide end items in narrow variant (all screen sizes) */
6300
6490
  .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-end-items) {
6301
6491
  display: none;
6302
6492
  }
6493
+ /* ===== CSS-Only Page Layout Support ===== */
6494
+ /* Apply to any element that needs to adjust for navigation width (e.g., headers, main content) */
6495
+ .bs-header-with-nav {
6496
+ margin-inline-start: var(--bs-page-nav-width);
6497
+ transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
6498
+ }