/* Generated by Routebase Portal — Theme CSS */
/* Theme: clean */

@font-face {
  font-family: 'Routebase Brand';
  src: url('data:font/woff2;base64,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') format('woff2');
  font-weight: 900;
  font-display: swap;
}

:root {
  --rb-primary: #1f2532;
  --rb-primary-foreground: #ffffff;
  --rb-accent: #44546e;
  --rb-accent-foreground: #ffffff;
  --rb-background: #fdfdfb;
  --rb-surface: #f6f5f1;
  --rb-surface-hover: #efede7;
  --rb-text: #1b2130;
  --rb-text-muted: #5d6470;
  --rb-border: #e6e3db;
  --rb-code-bg: #f1efe9;
  --rb-code-text: #2a3040;
  --rb-header-bg: #fdfdfb;
  --rb-header-text: #1b2130;
  --rb-sidebar-bg: #fdfdfb;
  --rb-sidebar-text: #565d6b;
  --rb-sidebar-active-bg: #efede7;
  --rb-link: #31405c;
  --rb-link-hover: #1f2532;
  --rb-method-get: #10b981;
  --rb-method-post: #f59e0b;
  --rb-method-put: #3b82f6;
  --rb-method-delete: #ef4444;
  --rb-method-patch: #8b5cf6;
  --rb-font-family: Poppins, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --rb-code-font-family: 'Geist Mono', ui-monospace, 'SF Mono', SFMono-Regular, Consolas, monospace;
  --rb-heading-font-family: Poppins, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --rb-font-size-base: 1rem;
  --rb-line-height: 1.7;
  --rb-content-max-width: 52rem;
  --rb-sidebar-width: 16rem;
  --rb-border-radius: 0.5rem;
  --rb-shadow-sm: 0 1px 2px 0 rgba(24, 22, 16, 0.04);
  --rb-shadow-md: 0 4px 12px -2px rgba(24, 22, 16, 0.08), 0 2px 4px -2px rgba(24, 22, 16, 0.05);
  --rb-code-block-bg: #24292e;
  --rb-code-block-text: #e1e4e8;
  --rb-code-block-border: color-mix(in srgb, #e1e4e8 14%, #24292e);
  --rb-code-block-scheme: dark;
  --rb-header-offset: calc(3.5rem + var(--rb-header-margin-top, 0px));
  --rb-ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --rb-ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
  --rb-duration-fast: 150ms;
  --rb-duration-normal: 200ms;
  --rb-duration-slow: 300ms;
}

/* ══════════════════════════════════════════════════════════════
   Reset & Base
   ══════════════════════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; }
*:not(.rb-endpoint-root, .rb-endpoint-root *),
*:not(.rb-endpoint-root, .rb-endpoint-root *)::before,
*:not(.rb-endpoint-root, .rb-endpoint-root *)::after { margin: 0; padding: 0; }

html {
  font-family: var(--rb-font-family);
  font-size: var(--rb-font-size-base);
  font-weight: var(--rb-body-font-weight, 400);
  line-height: var(--rb-line-height);
  color: var(--rb-text);
  background-color: var(--rb-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  -webkit-text-size-adjust: 100%;
  tab-size: 4;
}

/* Smooth scroll only for users who haven't opted out */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

/* Selection highlight — soft primary tint, keeps text readable */
::selection {
  background-color: color-mix(in srgb, var(--rb-primary) 25%, transparent);
}

/* Reserve the scrollbar gutter on every page so centered elements (header
   inner, centered layout) don't shift horizontally between long pages
   (scrollbar present) and short pages (no scrollbar). Overlay scrollbars
   (macOS default) make this a no-op. */
html { scrollbar-gutter: stable; }

body {
  min-height: 100vh;
  overflow-x: hidden;
}

a {
  color: var(--rb-link);
  text-decoration: none;
  transition: color 0.15s ease;
}
a:hover { color: var(--rb-link-hover); }

img { max-width: 100%; height: auto; display: block; }

/* Ensure headings have scroll margin for sticky header */
:where(h1, h2, h3, h4, h5, h6) {
  scroll-margin-top: 5rem;
}

/* Better text wrapping on paragraphs */
p { text-wrap: pretty; }

/* Focus visible for keyboard navigation */
:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: 2px;
}
/* ══════════════════════════════════════════════════════════════
   Layout
   ══════════════════════════════════════════════════════════════ */
.docs-layout {
  display: grid;
  grid-template-columns: var(--rb-sidebar-width) minmax(0, 1fr) auto;
  gap: 0;
  min-height: calc(100vh - var(--rb-header-offset));
}

/* Hide TOC on medium screens */
@media (max-width: 1280px) {
  .docs-layout {
    grid-template-columns: var(--rb-sidebar-width) minmax(0, 1fr);
  }
}

/* Single-column on small screens */
@media (max-width: 1024px) {
  .docs-layout {
    grid-template-columns: var(--rb-sidebar-width) minmax(0, 1fr);
  }
}

@media (max-width: 768px) {
  .docs-layout {
    grid-template-columns: 1fr;
  }
}

/* Mobile sidebar overlay backdrop */
.docs-layout__overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 29;
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.docs-layout__overlay--visible {
  display: block;
  opacity: 1;
}
.docs-content {
  width: 100%;
  margin-inline: auto;
}

/* Reserve the TOC track even on pages without a TOC so the centered
   article doesn't shift horizontally when navigating between pages
   with and without an "On this page" column. Scoped to the TOC-visible
   range — this rule follows the base media queries in source order, so
   unscoped it would override their 2/1-column templates. */
@media (min-width: 1281px) {
  .docs-layout {
    grid-template-columns: var(--rb-sidebar-width) minmax(0, 1fr) 14rem;
  }
}
/* ══════════════════════════════════════════════════════════════
   Header — Glassmorphism sticky bar
   ══════════════════════════════════════════════════════════════ */
.docs-header {
  position: sticky;
  /* Der Top-Margin muss AUCH im sticky-Offset stehen, sonst schiebt er den Header
     nur im ungescrollten Zustand ab und der Abstand verschwindet, sobald die Seite
     läuft (Denny-Anforderung 2026-08-04: die Leiste soll durchgehend schweben). */
  top: var(--rb-header-margin-top, 0px);
  z-index: 40;
  /* --rb-header-opacity (E154 catalog, Percent kind): glass dial — 85% is the
     built-in glassmorphism default, 100% renders fully opaque. */
  background-color: color-mix(in srgb, var(--rb-header-bg) var(--rb-header-opacity, 85%), transparent);
  color: var(--rb-header-text);
  /* Box-model dials (E154 catalog, override-only): margin + radius + border +
     shadow enable the floating-pill header; every fallback is the previous fixed
     look. The divider stays a box-shadow hairline (a real border-bottom would
     shift the sticky offsets below). Der Top-Margin (2026-08-04) wandert über
     --rb-header-offset in jeden dieser Offsets; unten bleibt es bewusst bei 0 —
     ein Bottom-Margin würde eine Lücke erzeugen, durch die der Inhalt sichtbar
     unter der Glasleiste durchläuft. */
  margin: var(--rb-header-margin-top, 0) var(--rb-header-margin-x, 0) 0;
  border: var(--rb-header-border-width, 0) solid var(--rb-header-border-color, var(--rb-border));
  border-radius: var(--rb-header-radius, 0);
  /* Shadow = intensity slider × tint color: unset intensity (0%) = no shadow;
     the slider alone produces a neutral dark shadow, the color only tints. */
  box-shadow: 0 1px 0 0 var(--rb-header-divider-color, var(--rb-border)),
    0 8px 24px -8px color-mix(in srgb, var(--rb-header-shadow-color, #0f172a) var(--rb-header-shadow-opacity, 0%), transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.docs-header::before {
  content: '';
  position: absolute;
  bottom: 100%;
  left: calc(-1 * var(--rb-header-margin-x, 0px));
  right: calc(-1 * var(--rb-header-margin-x, 0px));
  height: var(--rb-header-margin-top, 0px);
  pointer-events: none;
}
.docs-header::before {
  background: var(--rb-background);
}
/* Grid instead of flex space-between: the middle nav is anchored to the header
   center, independent of the side groups — the client-mounted version dropdown
   (grows __right after load) must not shift the section tabs (Denny, 2026-07-18).
   The --logo-center variant below re-assigns the cells with higher specificity. */
.docs-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 var(--rb-header-pad-x, 1.5rem);
  height: 3.5rem;
}
.docs-header__left { grid-column: 1; grid-row: 1; justify-self: start; }
.docs-header__section-tabs,
.docs-header__nav { grid-column: 2; grid-row: 1; justify-self: center; min-width: 0; }
.docs-header__right { grid-column: 3; grid-row: 1; justify-self: end; }
@media (max-width: 768px) {
  .docs-header__inner {
    display: flex;
    justify-content: space-between;
  }
}

.docs-header__left {
  display: flex;
  align-items: center;
  gap: 0.875rem;
}

/* Logo placement "center" (LogoPosition appearance setting): the brand moves
   into the middle cell, the nav tabs take the left slot, search/toggle stay
   right. The classic flex layout remains the "left" default. Mobile keeps the
   flex layout — the hamburger lives inside __left and must stay leading. */
.docs-header--logo-center .docs-header__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
}
.docs-header--logo-center .docs-header__left { grid-column: 2; grid-row: 1; justify-self: center; }
.docs-header--logo-center .docs-header__section-tabs,
.docs-header--logo-center .docs-header__nav { grid-column: 1; grid-row: 1; justify-self: start; }
.docs-header--logo-center .docs-header__right { grid-column: 3; grid-row: 1; justify-self: end; }
@media (max-width: 768px) {
  .docs-header--logo-center .docs-header__inner { display: flex; }
}

.docs-header__logo-img {
  height: 1.75rem;
  width: auto;
}

/* Logo-less fallback: styled as a wordmark so text-only portals don't read as raw text */
.docs-header__title {
  font-weight: 650;
  font-size: 1.0625rem;
  color: var(--rb-header-text);
  letter-spacing: -0.02em;
}

.docs-header__nav {
  display: flex;
  gap: 1.5rem;
}

/* Nav buttons: --rb-header-tab-* are override-only (E154 catalog); the
   fallback chain keeps the previous header-text look when unset, and an
   unset hover/active state follows the standard override. */
.docs-header__nav-link {
  color: var(--rb-header-tab-text, var(--rb-header-text));
  opacity: 0.7;
  font-size: 0.8125rem;
  font-weight: 500;
  transition: opacity 0.2s ease;
  position: relative;
}
.docs-header__nav-link:hover {
  opacity: 1;
  color: var(--rb-header-tab-hover-text, var(--rb-header-tab-text, var(--rb-header-text)));
}
.docs-header__nav-link::after {
  content: '';
  position: absolute;
  bottom: -0.25rem;
  left: 0;
  right: 0;
  height: 1.5px;
  background: var(--rb-primary);
  opacity: 0;
  transform: scaleX(0.7);
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.docs-header__nav-link:hover::after {
  opacity: 1;
  transform: scaleX(1);
}
/* E109-013: folders without a landing page render as non-clickable labels */
.docs-header__nav-link--disabled {
  opacity: 0.4;
  cursor: default;
}
.docs-header__nav-link--disabled:hover {
  opacity: 0.4;
}
.docs-header__nav-link--disabled:hover::after {
  opacity: 0;
}

.docs-header__right {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* Search Cmd+K pill — wide, prominent. --rb-header-search-* (E154 catalog):
   override-only; an override pins both rest and hover state. */
.docs-header__search-btn {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.375rem 0.875rem;
  min-width: 14rem;
  border: 1px solid var(--rb-header-search-border, var(--rb-border));
  border-radius: 9999px;
  background: var(--rb-header-search-bg, var(--rb-surface));
  color: var(--rb-header-search-text, var(--rb-text-muted));
  cursor: pointer;
  font-size: 0.8125rem;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.docs-header__search-btn:hover {
  border-color: var(--rb-header-search-border, var(--rb-text-muted));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rb-primary) 8%, transparent);
  background: var(--rb-header-search-bg, var(--rb-surface-hover));
}

.docs-header__search-icon {
  flex-shrink: 0;
  width: 0.875rem;
  height: 0.875rem;
  opacity: 0.5;
}

.docs-header__search-text {
  flex: 1;
  text-align: left;
  display: inline;
}

.docs-header__search-kbd {
  font-size: 0.6875rem;
  padding: 0.0625rem 0.375rem;
  border: 1px solid var(--rb-header-search-border, var(--rb-border));
  border-radius: 0.25rem;
  background: var(--rb-background);
  font-family: var(--rb-font-family);
  color: var(--rb-header-search-text, var(--rb-text-muted));
  line-height: 1.4;
  margin-left: auto;
}

/* Version switcher — pill control matching the search/theme header style (E119) */
.docs-header__version {
  display: flex;
  align-items: center;
}
/* Single-version portals: version-switcher.js leaves the container empty — collapse
   it so the header __right flex gap doesn't render a phantom 0.5rem hole. */
.docs-header__version:empty {
  display: none;
}
.docs-version-select {
  appearance: none;
  -webkit-appearance: none;
  padding: 0.375rem 1.75rem 0.375rem 0.75rem;
  border: 1px solid var(--rb-border);
  border-radius: 9999px;
  background-color: var(--rb-surface);
  color: var(--rb-text);
  font-size: 0.8125rem;
  font-family: var(--rb-font-family);
  line-height: 1.4;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.625rem center;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
  /* The dropdown mounts after /versions.json resolves — the header grid keeps
     the layout stable, the fade makes the late arrival read as deliberate. */
  animation: rb-fade-in 0.2s var(--rb-ease-out-expo);
}
.docs-version-select:hover {
  border-color: var(--rb-text-muted);
  background-color: var(--rb-surface-hover);
}
.docs-version-select:focus-visible {
  outline: none;
  border-color: var(--rb-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rb-primary) 18%, transparent);
}
.docs-version-select option {
  color: var(--rb-text);
  background-color: var(--rb-background);
}

/* Mobile hamburger toggle */
.docs-header__mobile-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: none;
  border-radius: var(--rb-border-radius);
  background: transparent;
  color: var(--rb-header-text);
  cursor: pointer;
  transition: background-color 0.15s ease;
}
.docs-header__mobile-toggle:hover {
  background: rgba(128, 128, 128, 0.1);
}

/* Theme toggle button */
.docs-header__theme-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: none;
  border-radius: var(--rb-border-radius);
  background: transparent;
  color: var(--rb-header-text);
  cursor: pointer;
  transition: background-color 0.15s ease;
}
.docs-header__theme-toggle:hover {
  background: rgba(128, 128, 128, 0.12);
}

/* Sun/moon icon toggling */
.docs-icon--sun { display: none; }
.docs-icon--moon { display: block; }
[data-theme-mode="dark"] .docs-icon--sun { display: block; }
[data-theme-mode="dark"] .docs-icon--moon { display: none; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme-mode]) .docs-icon--sun { display: block; }
  html:not([data-theme-mode]) .docs-icon--moon { display: none; }
}

/* Logo light/dark switching — E109 Gap #14 */
.docs-header__logo-img--dark { display: none; }
[data-theme-mode="dark"] .docs-header__logo-img--light { display: none; }
[data-theme-mode="dark"] .docs-header__logo-img--dark { display: block; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme-mode]) .docs-header__logo-img--light { display: none; }
  html:not([data-theme-mode]) .docs-header__logo-img--dark { display: block; }
}

/* Content image light/dark switching — E109: theme-adaptive screenshots.
   Authors emit two <img> tags (docs-img--light / docs-img--dark); the
   matching variant shows per theme. Mirrors the Gap #14 logo switch. */
.docs-img { display: block; max-width: 100%; height: auto; }
.docs-img-pic { display: block; }
.docs-img--dark { display: none; }
[data-theme-mode="dark"] .docs-img--light { display: none; }
[data-theme-mode="dark"] .docs-img--dark { display: block; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme-mode]) .docs-img--light { display: none; }
  html:not([data-theme-mode]) .docs-img--dark { display: block; }
}

/* Section tabs — E67-010 */
.docs-header__section-tabs {
  display: flex;
  gap: 0.25rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.docs-header__section-tabs::-webkit-scrollbar { display: none; }

.docs-header__section-tab {
  color: var(--rb-header-tab-text, var(--rb-header-text));
  opacity: 0.6;
  font-size: 0.8125rem;
  font-weight: 500;
  white-space: nowrap;
  padding: 0.375rem 0.75rem;
  border-radius: var(--rb-border-radius);
  transition: opacity 0.2s ease, background-color 0.2s ease;
}
.docs-header__section-tab:hover {
  opacity: 1;
  background: var(--rb-header-tab-hover-bg, rgba(128, 128, 128, 0.08));
  color: var(--rb-header-tab-hover-text, var(--rb-header-tab-text, var(--rb-header-text)));
}
.docs-header__section-tab--active {
  opacity: 1;
  color: var(--rb-header-tab-active-text, var(--rb-primary));
  background: var(--rb-header-tab-active-bg, color-mix(in srgb, var(--rb-primary) 10%, transparent));
  font-weight: 600;
}
.docs-header__section-tab--active:hover {
  color: var(--rb-header-tab-active-text, var(--rb-primary));
  background: var(--rb-header-tab-active-bg, color-mix(in srgb, var(--rb-primary) 14%, transparent));
}

/* Responsive header */
@media (max-width: 768px) {
  .docs-header__search-text,
  .docs-header__search-kbd { display: none; }
  .docs-header__search-btn { min-width: unset; padding: 0.375rem 0.625rem; }
  .docs-header__nav { display: none; }
  .docs-header__mobile-toggle { display: flex; }
  /* Die Section-Tabs wandern auf schmalen Viewports in die Sidebar (Denny
     2026-08-04): im Header konkurrierten sie mit Logo und Suchknopf, liefen unter
     diesen durch und drückten das Logo zusammen. Verkleinern half nicht — drei
     Bereichsnamen brauchen mehr Platz, als eine Handy-Breite neben einem Logo
     hergibt. Der Ersatz steht in .docs-sidebar__sections. */
  .docs-header__section-tabs { display: none; }
}
.docs-header__inner {
  max-width: none;
}
/* ══════════════════════════════════════════════════════════════
   Sidebar — Navigation tree with custom scrollbar
   ══════════════════════════════════════════════════════════════ */
.docs-sidebar {
  position: sticky;
  /* Sticky offset includes the margin dial: the inset positions the BORDER box
     (margins don't count), so a plain 3.5rem made a floating sidebar slide up
     by its margin once sticking (Denny repro, 2026-07-17). */
  top: calc(var(--rb-header-offset) + var(--rb-sidebar-margin, 0px));
  height: calc(100vh - var(--rb-header-offset) - 2 * var(--rb-sidebar-margin, 0px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background-color: var(--rb-sidebar-bg);
  /* Box-model dials (E154 catalog, override-only). Border split: the shorthand
     styles all sides (default 0/invisible), the border-right line re-declares
     the classic divider hairline — so borderColor ALONE recolors the divider,
     borderWidth turns on a full border, and unset keeps today's look exactly. */
  border: var(--rb-sidebar-border-width, 0px) solid var(--rb-sidebar-border-color, color-mix(in srgb, var(--rb-border) 70%, transparent));
  border-right: var(--rb-sidebar-border-width, 1px) solid var(--rb-sidebar-border-color, color-mix(in srgb, var(--rb-border) 70%, transparent));
  border-radius: var(--rb-sidebar-radius, 0);
  margin: var(--rb-sidebar-margin, 0);
  box-shadow: 0 6px 24px -8px color-mix(in srgb, var(--rb-sidebar-shadow-color, #0f172a) var(--rb-sidebar-shadow-opacity, 0%), transparent);
  font-size: 0.8125rem;
}

/* Reader-side width dial (Denny request, 2026-08-03): a drag handle on the sidebar's
   right edge. shell.ts writes the dragged width to --rb-sidebar-width inline on
   <html> — inline beats the :root of the theme-override CSS (which carries no
   !important), so the grid column, the centered layout cap and the header cap all
   follow from the one variable. Positioned INSIDE the sidebar: the aside is
   overflow:hidden, so a handle straddling the edge would be clipped away. */
.docs-sidebar__resizer {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  width: 6px;
  cursor: col-resize;
  touch-action: none;
  z-index: 1;
}
/* The visible line is an inset 2px child, so the 6px hit area stays generous
   without painting a permanent second divider beside the border-right hairline. */
.docs-sidebar__resizer::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  width: 2px;
  background: var(--rb-sidebar-active-indicator, var(--rb-primary));
  opacity: 0;
  transition: opacity var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-sidebar__resizer:hover::after,
.docs-sidebar__resizer:focus-visible::after,
.docs-sidebar__resizer--dragging::after {
  opacity: 1;
}
.docs-sidebar__resizer:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: -2px;
}
/* Drag comfort: while the handle holds pointer capture the cursor stays col-resize
   across the whole page and text stops selecting under the pointer. */
body.rb-sidebar-resizing {
  user-select: none;
  cursor: col-resize;
}

/* The nav is the scroll area so the branding footer can pin to the sidebar bottom.
   E153-035: position:relative — containing block for the scroll-spy pill/marker. */
.docs-sidebar__nav {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: var(--rb-sidebar-padding, 1.5rem 0.75rem);
  overscroll-behavior: contain;
}

/* E153-035 (Protocol-style): scroll-spy affordances, positioned by shell.ts.
   The pill glides over the rows whose stacked sections are currently visible;
   the marker is an accent segment at the active row. Both animate via CSS
   transitions (neutralized by the global reduced-motion block). */
.docs-sidebar__spy-pill {
  position: absolute;
  left: 0.375rem;
  right: 0.375rem;
  border-radius: 0.5rem;
  background: color-mix(in srgb, var(--rb-sidebar-text) 5%, transparent);
  opacity: 0;
  pointer-events: none;
  transition: top var(--rb-duration-slow) var(--rb-ease-out-expo),
              height var(--rb-duration-slow) var(--rb-ease-out-expo),
              opacity var(--rb-duration-fast) ease;
}
.docs-sidebar__spy-marker {
  position: absolute;
  left: 0.375rem;
  width: 2px;
  border-radius: 1px;
  background: var(--rb-sidebar-spy, var(--rb-primary));
  opacity: 0;
  pointer-events: none;
  transition: top var(--rb-duration-slow) var(--rb-ease-out-expo),
              height var(--rb-duration-slow) var(--rb-ease-out-expo),
              opacity var(--rb-duration-fast) ease;
}
.docs-sidebar__link--spy-active {
  color: var(--rb-sidebar-spy, var(--rb-primary));
}

/* Bereichswechsel in der Sidebar — auf dem Desktop unsichtbar, dort sitzen die
   Bereiche als Tabs im Header. Auf schmalen Viewports ist der Header zu eng dafür
   (Denny 2026-08-04), und die Sidebar listet nur den AKTIVEN Bereich; ohne diesen
   Block gäbe es dort also gar keinen Weg mehr in einen anderen Bereich. */
.docs-sidebar__sections {
  display: none;
  flex-direction: column;
  gap: 0.125rem;
  margin-bottom: 0.875rem;
  padding-bottom: 0.875rem;
  border-bottom: 1px solid color-mix(in srgb, var(--rb-sidebar-text) 12%, transparent);
}
.docs-sidebar__section-link {
  display: block;
  padding: 0.4375rem 0.75rem;
  border-radius: 0.375rem;
  color: var(--rb-sidebar-text);
  font-weight: 500;
  line-height: 1.35;
  transition: background-color var(--rb-duration-fast) var(--rb-ease-out-expo), color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-sidebar__section-link:hover {
  background-color: var(--rb-sidebar-hover-bg, color-mix(in srgb, var(--rb-sidebar-text) 8%, transparent));
  color: var(--rb-sidebar-hover-text, var(--rb-sidebar-text));
}
.docs-sidebar__section-link--active {
  background-color: var(--rb-sidebar-active-bg);
  color: var(--rb-sidebar-active-text, var(--rb-primary));
  font-weight: 600;
}

/* Custom thin scrollbar */
.docs-sidebar__nav::-webkit-scrollbar {
  width: 4px;
}
.docs-sidebar__nav::-webkit-scrollbar-track {
  background: transparent;
}
.docs-sidebar__nav::-webkit-scrollbar-thumb {
  background: var(--rb-border);
  border-radius: 4px;
}
.docs-sidebar__nav::-webkit-scrollbar-thumb:hover {
  background: var(--rb-text-muted);
}
.docs-sidebar__nav {
  scrollbar-width: thin;
  scrollbar-color: var(--rb-border) transparent;
}

/* "Built with routebase" pinned to the sidebar bottom (desktop). Hidden on mobile,
   where the off-canvas sidebar hides it — the page footer carries it there instead. */
.docs-sidebar__footer {
  flex: 0 0 auto;
  display: flex;
  justify-content: center;
  padding: 0.75rem;
  border-top: 1px solid color-mix(in srgb, var(--rb-border) 70%, transparent);
  background-color: var(--rb-sidebar-bg);
}

.docs-sidebar__group {
  margin-bottom: 1.75rem;
}

/* Section/group titles read the SIDEBAR text token (same content-token-on-
   sidebar-surface bug class as the hover fix) — --rb-sidebar-title (E154
   catalog) overrides both. */
.docs-sidebar__group-title {
  font-weight: 600;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rb-sidebar-title, color-mix(in srgb, var(--rb-sidebar-text) 60%, transparent));
  padding: 0.25rem 0.75rem;
  margin-bottom: 0.25rem;
}

.docs-sidebar__section-title {
  font-weight: 600;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rb-sidebar-title, color-mix(in srgb, var(--rb-sidebar-text) 60%, transparent));
  padding: 0.25rem 0.75rem;
  margin-bottom: 0.5rem;
}

.docs-sidebar__list,
.docs-sidebar__sublist { list-style: none; }

.docs-sidebar__item {
  margin-bottom: 1px;
}

/* E125-001 (D3): calm rows — no left-border bar; active reads through a
   soft primary tint + primary text (Mintlify-style), 150ms transitions. */
.docs-sidebar__link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.375rem 0.75rem;
  border-radius: 0.375rem;
  color: var(--rb-sidebar-text);
  transition: background-color var(--rb-duration-fast) var(--rb-ease-out-expo), color var(--rb-duration-fast) var(--rb-ease-out-expo);
  font-weight: 400;
  line-height: 1.5;
  position: relative;
}
/* Hover reads the SIDEBAR tokens, not the content tokens: with a custom
   sidebar background (e.g. dark blue on a light theme) the old
   var(--rb-text) hover turned rows dark-on-dark/unreadable.
   --rb-sidebar-hover-* are override-only (E154 catalog) — unset, the
   fallback keeps the sidebar-text tint. */
.docs-sidebar__link:hover {
  background-color: var(--rb-sidebar-hover-bg, color-mix(in srgb, var(--rb-sidebar-text) 8%, transparent));
  color: var(--rb-sidebar-hover-text, var(--rb-sidebar-text));
}

/* Animated active indicator — a small primary bar that scales in */
.docs-sidebar__link::before {
  content: '';
  position: absolute;
  left: 0;
  top: 25%;
  bottom: 25%;
  width: 2px;
  border-radius: 1px;
  background: var(--rb-sidebar-active-indicator, var(--rb-primary));
  transform: scaleY(0);
  transition: transform var(--rb-duration-normal) var(--rb-ease-out-expo);
}
.docs-sidebar__link--active {
  background-color: var(--rb-sidebar-active-bg);
  color: var(--rb-sidebar-active-text, var(--rb-primary));
  font-weight: 500;
}
.docs-sidebar__link--active::before {
  transform: scaleY(1);
}
.docs-sidebar__link--active:hover {
  background-color: var(--rb-sidebar-active-bg);
  color: var(--rb-sidebar-active-text, var(--rb-primary));
}

.docs-sidebar__folder-toggle {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.375rem 0.75rem;
  width: 100%;
  border: none;
  background: none;
  color: var(--rb-sidebar-text);
  font-weight: 500;
  font-size: 0.8125rem;
  cursor: pointer;
  border-radius: var(--rb-border-radius);
  font-family: var(--rb-font-family);
  transition: background-color 0.15s ease, color 0.15s ease;
}
.docs-sidebar__folder-toggle:hover {
  background-color: var(--rb-sidebar-hover-bg, color-mix(in srgb, var(--rb-sidebar-text) 8%, transparent));
  color: var(--rb-sidebar-hover-text, var(--rb-sidebar-text));
}

/* Group/folder/page/spec labels: single line, cut with an ellipsis — the same
   treatment .docs-sidebar__endpoint-title has always had, so every row of the tree
   reads at one height.
   The label needs its OWN styles at all: as a bare text node it is an anonymous
   flex item, keeps min-width:auto, never shrinks below min-content and pushes the
   endpoint count past the sidebar edge (German compounds like
   "Stellenanzeigenauswertungen", Denny repro 2026-07-27).
   History: 2026-08-03 this was a two-line clamp, on the reasoning that a cut-off
   label costs navigability at the orientation level. Denny reverted it 2026-08-04 —
   the wrap was fixing the overflow, and the ellipsis fixes that just as well while
   keeping the row rhythm; what the clamp bought is carried by the nav tooltip
   (navTooltips in shell.ts), which reveals the full label exactly when it is cut.
   text-align: the folder-toggle variant is a <button>, whose UA default is
   text-align:center — invisible until a label is short enough to leave slack. */
.docs-sidebar__folder-label,
.docs-sidebar__page-label {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.35;
  text-align: start;
}

/* Indent folder children so the tree hierarchy reads (tag-group / api-tree sublists
   set their own tighter padding below). */
.docs-sidebar__item--folder > .docs-sidebar__sublist { padding-left: 0.75rem; }

.docs-sidebar__api-badge {
  font-size: 0.5625rem;
  font-weight: 700;
  padding: 0.0625rem 0.3125rem;
  border-radius: 0.1875rem;
  background: var(--rb-primary);
  color: var(--rb-primary-foreground);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

/* E69-004: Sidebar method badges for API endpoints — tinted style matching the
   app-wide METHOD_COLORS_DOC standard (colored text on a 10% tint with a 20%
   ring), the same treatment the React endpoint reader uses for its method badge. */
.docs-sidebar__method-badge {
  --rb-method: var(--rb-sidebar-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  font-family: var(--rb-code-font-family);
  font-size: 0.5625rem;
  font-weight: 600;
  padding: 0.0625rem 0.25rem;
  border-radius: 0.25rem;
  color: var(--rb-method);
  background-color: color-mix(in srgb, var(--rb-method) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rb-method) 20%, transparent);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.4;
  flex-shrink: 0;
}
.docs-sidebar__method-badge--get { --rb-method: var(--rb-method-get); }
.docs-sidebar__method-badge--post { --rb-method: var(--rb-method-post); }
.docs-sidebar__method-badge--put { --rb-method: var(--rb-method-put); }
.docs-sidebar__method-badge--delete { --rb-method: var(--rb-method-delete); }
.docs-sidebar__method-badge--patch { --rb-method: var(--rb-method-patch); }
.docs-sidebar__method-badge--head { --rb-method: var(--rb-method-get); }
.docs-sidebar__method-badge--options { --rb-method: var(--rb-method-get); }

.docs-sidebar__link--endpoint {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
}

.docs-sidebar__endpoint-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.docs-sidebar__item--tag-group > .docs-sidebar__sublist {
  /* E153-035: hairline rail along the anchor list (same look as the TOC rail);
     the accent spy-marker slides on top of it. */
  margin-left: 0.75rem;
  padding-left: 0.25rem;
  border-left: 1px solid color-mix(in srgb, var(--rb-border) 70%, transparent);
}

/* text-align: right, nicht center — es ist eine Zahlenspalte. Zentriert steht eine
   einstellige Zahl in ihrer 1rem-Mindestbreite rund 3px weiter links als eine
   zweistellige, wodurch 6/41/1/17 sichtbar ausfransten (Denny repro 2026-08-04).
   Die Mindestbreite bleibt: sie hält die Spalte auch bei einstelligen Zahlen. */
.docs-sidebar__tag-count {
  font-size: 0.625rem;
  font-weight: 500;
  color: var(--rb-sidebar-muted);
  margin-left: auto;
  margin-right: 0.25rem;
  min-width: 1rem;
  flex-shrink: 0;
  text-align: right;
}

.docs-sidebar__item--api-tree > .docs-sidebar__sublist {
  padding-left: 0.5rem;
}

/* E69-005: Chevron rotation transition */
.docs-sidebar__chevron {
  transition: transform var(--rb-duration-normal) var(--rb-ease-out-expo);
  flex-shrink: 0;
}

/* E69-005: Focus-visible states for accessibility */
.docs-sidebar__folder-toggle:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: -2px;
}
.docs-sidebar__link--endpoint:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: -2px;
}

/* E69-005: Active endpoint — subtle highlight (the tinted method badge needs
   no extra treatment; it carries its own color on any row background) */
.docs-sidebar__link--endpoint.docs-sidebar__link--active {
  background-color: var(--rb-sidebar-active-bg);
  color: var(--rb-sidebar-active-text, var(--rb-primary));
}

/* E69-005: Tag-group folder-toggle refinement */
.docs-sidebar__item--tag-group > .docs-sidebar__folder-toggle {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: 600;
}

/* Ein Ordner der Nav-Ebene rendert je nach Slug als <button> (reiner Klapp-Ordner,
   Regel darüber) ODER als <a> (Ordner MIT eigener Seite, E190/E192). Der Link-Zweig
   erbte bisher die Geometrie von .docs-sidebar__link — 0.8125rem/400 gegen 0.75rem/600
   der Toggle-Zeile, wodurch Kinder größer wirkten als ihre Eltern (Denny repro
   2026-08-04, talent360-Portal). Beide Zweige teilen sich jetzt Größe und Padding;
   das Gewicht bleibt der einzige Hierarchie-Unterschied. */
.docs-sidebar__item--tag-group > .docs-sidebar__link,
.docs-sidebar__item--tag-group > .docs-sidebar__branch > .docs-sidebar__link {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: 500;
}

/* Chevron-Spalte reservieren, damit die Endpoint-Zahl aller Zeilentypen in einer
   Flucht steht. Zeilen MIT Inhalt bekommen dort seit 2026-08-04 einen echten
   Toggle (.docs-sidebar__branch-toggle, Regel darunter) — der Spacer greift nur
   noch bei den kinderlosen. */
.docs-sidebar__item--tag-group > .docs-sidebar__link::after {
  content: '';
  width: 12px;
  flex-shrink: 0;
}

/* Ordner-Zeile mit zwei Zielen (Denny 2026-08-04): das Label navigiert zur
   Ordnerseite, der Chevron klappt auf. Vorher trugen nur reine Klapp-Ordner einen
   Chevron, während Ordner MIT eigener Seite ihre Kinder je nach Art entweder
   dauerhaft oder nur auf der aktiven Seite zeigten — dieselbe Zahl rechts, drei
   verschiedene Verhalten. */
.docs-sidebar__branch {
  display: flex;
  align-items: center;
  border-radius: 0.375rem;
}
/* Hover und Aktiv-Fläche liegen auf dem WRAPPER, nicht auf dem Link. Vorher endeten
   sie 28px vor dem rechten Rand (die Chevron-Spalte gehört dem Button), während die
   Klapp-Ordner-Zeile direkt daneben über die volle Breite läuft — zwei Zeilentypen,
   zwei Hover-Formen, ohne dass die Zeile das erklärt (Denny repro 2026-08-04).
   Der Chevron behält seinen EIGENEN Hover: sein Tint legt sich als zweite Schicht
   auf den der Zeile und zeigt so, dass er ein separates Ziel ist. */
.docs-sidebar__branch:hover {
  background-color: var(--rb-sidebar-hover-bg, color-mix(in srgb, var(--rb-sidebar-text) 8%, transparent));
}
/* Der Link malt seinen Hover nicht mehr selbst — er läge als doppelter Tint auf dem
   der Zeile und machte die Label-Hälfte dunkler als die Chevron-Hälfte. */
.docs-sidebar__branch > .docs-sidebar__link:hover {
  background-color: transparent;
}
/* Aktiv steht NACH Hover: beide Selektoren haben zwei Klassen (:has() zählt sein
   spezifischstes Argument), bei Gleichstand entscheidet die Reihenfolge — und die
   aktive Zeile soll unter dem Zeiger aktiv bleiben, wie .docs-sidebar__link--active:hover. */
.docs-sidebar__branch:has(> .docs-sidebar__link--active) {
  background-color: var(--rb-sidebar-active-bg);
}
.docs-sidebar__branch > .docs-sidebar__link--active,
.docs-sidebar__branch > .docs-sidebar__link--active:hover {
  background-color: transparent;
}
/* padding-right: 0 + 1.75rem Button ist gerechnet, nicht geschätzt: die
   Klapp-Ordner-Zeile schließt mit [8px padding][12px Chevron] ab, ihr Chevron sitzt
   also 14px vom rechten Rand und ihre Zahl endet bei 32px. Mit 1.75rem Button und
   einem Link ohne rechtes Padding landen beide exakt dort — sonst stünden die
   Chevrons und Zahlen der zwei Zeilentypen wieder in verschiedenen Fluchten, was
   der Auslöser der ganzen Runde war. */
/* Der --tag-group-Präfix ist NICHT redundant, auch wenn __branch nur dort vorkommt:
   ohne ihn hat die Regel zwei Klassen und verliert gegen die Kurzform
   `padding: 0.25rem 0.5rem` der Drei-Klassen-Regel oben — das rechte Padding blieb
   dadurch bei 8px stehen und die Zahl der zweigeteilten Zeilen endete 40px statt
   32px vom Rand (Denny repro 2026-08-04). Beim Kürzen also die Rechnung darunter
   mitlesen. */
.docs-sidebar__item--tag-group > .docs-sidebar__branch > .docs-sidebar__link {
  flex: 1;
  min-width: 0;
  padding-right: 0;
}
/* Der Button füllt die reservierte Spalte — der Spacer im Link würde sie verdoppeln. */
.docs-sidebar__branch > .docs-sidebar__link::after {
  content: none;
}
/* Kinderlose Zeile: kein Button, aber dieselbe Spalte, damit die Zahl fluchtet. */
.docs-sidebar__branch:not(:has(> .docs-sidebar__branch-toggle))::after {
  content: '';
  width: 1.75rem;
  flex-shrink: 0;
}
.docs-sidebar__branch-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.75rem;
  align-self: stretch;
  padding: 0;
  border: none;
  background: none;
  color: var(--rb-sidebar-text);
  cursor: pointer;
  border-radius: 0.375rem;
  transition: background-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-sidebar__branch-toggle:hover {
  background-color: var(--rb-sidebar-hover-bg, color-mix(in srgb, var(--rb-sidebar-text) 8%, transparent));
}
.docs-sidebar__branch-toggle:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: -2px;
}
/* :has() statt eines Nachbar-Selektors am Button: der Button sitzt im __branch-
   Wrapper, die Sublist ist Nachbar des WRAPPERS. (:has() ist im Portal bereits im
   Einsatz, siehe .docs-code-block:has(> .docs-code-lang).) */
.docs-sidebar__branch:has(> .docs-sidebar__branch-toggle[aria-expanded="false"]) + .docs-sidebar__sublist {
  display: none;
}
.docs-sidebar__branch-toggle[aria-expanded="false"] .docs-sidebar__chevron {
  transform: rotate(-90deg);
}

/* E69-007 / v11: any sublist whose toggle is collapsed is hidden (folders + tag-groups) */
.docs-sidebar__folder-toggle[aria-expanded="false"] + .docs-sidebar__sublist {
  display: none;
}
.docs-sidebar__folder-toggle[aria-expanded="false"] .docs-sidebar__chevron {
  transform: rotate(-90deg);
}
/* Freshly expanded sublists ease in (display:none stays — no max-height fragility) */
@media (prefers-reduced-motion: no-preference) {
  .docs-sidebar__folder-toggle[aria-expanded="true"] + .docs-sidebar__sublist {
    animation: rb-fade-in var(--rb-duration-normal) var(--rb-ease-out-expo);
  }
}

/* E69-010: Rendering optimization for large APIs (50+ tag-groups) */
.docs-sidebar__item--tag-group > .docs-sidebar__sublist {
  content-visibility: auto;
  contain-intrinsic-size: auto 0px;
}

/* Mobile sidebar — full-screen overlay with slide animation. The desktop
   box-model dials (margin/radius/border) are neutralized here: an off-canvas
   overlay with outer margin or rounded corners reads as broken. */
@media (max-width: 768px) {
  .docs-sidebar {
    display: block;
    position: fixed;
    top: var(--rb-header-offset);
    left: 0;
    bottom: 0;
    width: 18rem;
    height: auto;
    margin: 0;
    border-radius: 0;
    z-index: 30;
    transform: translateX(-100%);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: none;
    overflow-y: auto;
  }
  /* Sidebar becomes a plain scrolling block; the nav is no longer the scroll area. */
  .docs-sidebar__nav {
    overflow: visible;
  }
  /* Branding lives in the page footer on mobile (see .docs-footer__branding). */
  .docs-sidebar__footer {
    display: none;
  }
  /* Off-canvas panel with a fixed 18rem width — --rb-sidebar-width has no effect
     here, so the drag handle would be a dead control (and a stray touch target). */
  .docs-sidebar__resizer {
    display: none;
  }
  .docs-sidebar--open {
    transform: translateX(0);
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
  }
  /* Gegenstück zum ausgeblendeten .docs-header__section-tabs weiter oben. */
  .docs-sidebar__sections {
    display: flex;
  }
  /* E69-005: Compact API tree on mobile */
  .docs-sidebar__item--api-tree > .docs-sidebar__sublist {
    padding-left: 0.25rem;
  }
  .docs-sidebar__item--tag-group > .docs-sidebar__sublist {
    padding-left: 0.125rem;
  }
  .docs-sidebar__link--endpoint {
    font-size: 0.6875rem;
    padding: 0.1875rem 0.375rem;
  }
}
/* ══════════════════════════════════════════════════════════════
   Content — Article typography & elements
   ══════════════════════════════════════════════════════════════ */
.docs-content {
  max-width: var(--rb-content-max-width);
  padding: 2.5rem 3rem 4rem;
  min-width: 0;
  /* Flex column so the feedback widget + prev/next nav pin to the bottom
     of the min-height grid cell on short pages instead of hugging the
     article. The article & friends live in .docs-content__body (a plain
     block — the floating page-actions button needs block formatting). */
  display: flex;
  flex-direction: column;
}

.docs-content__body {
  flex: 1 0 auto;
  width: 100%;
}

.docs-content article {
  width: 100%;
}

/* ── Headings ── */
/* E125-001 (D2/D4): Mintlify-level hierarchy — bigger, tighter H1; H2 carries
   weight through size + whitespace instead of an underline rule. */
/* E152-010: heading font family — falls back to the body font when no override.
   E152-011: --rb-heading-font-weight (when set) overrides every level uniformly;
   the fallback in each rule keeps the per-level default (700 / 600) otherwise. */
.docs-content h1,
.docs-content h2,
.docs-content h3,
.docs-content h4,
.docs-content h5,
.docs-content h6 {
  font-family: var(--rb-heading-font-family, var(--rb-font-family));
}

.docs-content h1 {
  font-size: calc(2.5rem * var(--rb-heading-scale, 1));
  font-weight: var(--rb-heading-font-weight, 700);
  line-height: 1.1;
  letter-spacing: -0.035em;
  margin-bottom: 1rem;
  color: var(--rb-text);
}

.docs-content h2 {
  font-size: calc(1.5rem * var(--rb-heading-scale, 1));
  font-weight: var(--rb-heading-font-weight, 600);
  line-height: 1.3;
  letter-spacing: -0.02em;
  margin-top: 3.5rem;
  margin-bottom: 1rem;
  color: var(--rb-text);
}

.docs-content h3 {
  font-size: calc(1.375rem * var(--rb-heading-scale, 1));
  font-weight: var(--rb-heading-font-weight, 600);
  line-height: 1.35;
  letter-spacing: -0.015em;
  margin-top: 2.25rem;
  margin-bottom: 0.625rem;
  color: var(--rb-text);
}

.docs-content h4 {
  font-size: calc(1.125rem * var(--rb-heading-scale, 1));
  font-weight: var(--rb-heading-font-weight, 600);
  line-height: 1.4;
  margin-top: 1.75rem;
  margin-bottom: 0.5rem;
  color: var(--rb-text);
}

.docs-content h5, .docs-content h6 {
  font-weight: var(--rb-heading-font-weight, 600);
  margin-top: 1.5rem;
  margin-bottom: 0.5rem;
  color: var(--rb-text);
}

/* Hover-visible anchor links on headings */
.docs-content :where(h1, h2, h3, h4, h5, h6) {
  position: relative;
}
.docs-content a.heading-anchor {
  position: absolute;
  left: -1.5rem;
  top: 50%;
  transform: translateY(-50%);
  opacity: 0;
  color: var(--rb-text-muted);
  font-weight: 400;
  font-size: 0.875em;
  text-decoration: none;
  transition: opacity 0.15s ease;
  padding-right: 0.375rem;
}
.docs-content a.heading-anchor::before {
  content: '#';
}
.docs-content :where(h1, h2, h3, h4, h5, h6):hover a.heading-anchor {
  opacity: 1;
}
.docs-content a.heading-anchor:hover {
  color: var(--rb-primary);
}

/* ── Paragraphs & Inline ── */
.docs-content p {
  margin-bottom: 1.25rem;
  color: var(--rb-text);
  line-height: var(--rb-line-height);
}

.docs-content strong { font-weight: 600; color: var(--rb-text); }

/* Inline code with border for clarity */
.docs-content code {
  font-family: var(--rb-code-font-family);
  font-size: 0.85em;
  background: var(--rb-code-bg);
  color: var(--rb-code-text);
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  border: 1px solid var(--rb-border);
}

/* ── Links ── */
/* .docs-page-actions__* excluded (2026-07-17): the copy-page menu entries are
   anchors (spec download, Open in Claude) — the content underline made them
   read as inline links inside the dropdown. */
.docs-content a:not(.heading-anchor, .docs-card, .docs-prev-next__prev, .docs-prev-next__next, .docs-api-endpoint-link, .docs-page-actions__item, .docs-page-actions__primary) {
  color: var(--rb-link);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--rb-link) 30%, transparent);
  text-underline-offset: 0.2em;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
.docs-content a:not(.heading-anchor, .docs-card, .docs-prev-next__prev, .docs-prev-next__next, .docs-api-endpoint-link, .docs-page-actions__item, .docs-page-actions__primary):hover {
  color: var(--rb-link-hover);
  text-decoration-color: var(--rb-link-hover);
}

/* ── Lists ── */
.docs-content ul, .docs-content ol {
  margin-bottom: 1.25rem;
  padding-left: 1.5rem;
}
.docs-content li {
  margin-bottom: 0.375rem;
  line-height: 1.7;
}
.docs-content li::marker {
  color: var(--rb-text-muted);
}
.docs-content ul ul, .docs-content ol ol,
.docs-content ul ol, .docs-content ol ul {
  margin-top: 0.375rem;
  margin-bottom: 0.375rem;
}

/* ── Blockquotes — classic quote styling (editor parity) ──
   The former callout-style tint made quotes look like half-broken
   callouts once real callouts got their header/icon treatment; quotes
   now read as quotes: italic, muted, thin bar, no background. */
.docs-content blockquote {
  border-left: 3px solid color-mix(in srgb, var(--rb-text-muted) 45%, transparent);
  padding: 0.125rem 0 0.125rem 1.25rem;
  margin: 1.5rem 0;
  color: var(--rb-text-muted);
  font-style: italic;
}
.docs-content blockquote p:last-child {
  margin-bottom: 0;
}
.docs-content blockquote blockquote {
  margin-top: 0.75rem;
  border-left-color: var(--rb-border);
}

/* ── Tables — rounded wrapper with alternating rows ── */
.docs-content .table-wrapper {
  overflow-x: auto;
  margin: 1.5rem 0;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  -webkit-overflow-scrolling: touch;
}
.docs-content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
  margin: 0;
}
.docs-content thead {
  background: var(--rb-surface);
}
.docs-content th {
  text-align: left;
  font-weight: 600;
  padding: 0.6875rem 1rem;
  border-bottom: 2px solid var(--rb-border);
  font-size: 0.8125rem;
  letter-spacing: 0.01em;
  color: var(--rb-text);
}
.docs-content td {
  padding: 0.6875rem 1rem;
  border-bottom: 1px solid var(--rb-border);
  vertical-align: top;
}
.docs-content tbody tr:last-child td {
  border-bottom: none;
}
.docs-content tbody tr:nth-child(even) {
  background: color-mix(in srgb, var(--rb-surface) 50%, transparent);
}
.docs-content tbody tr:hover {
  background: var(--rb-surface-hover);
}

/* Fallback: tables without .table-wrapper still look decent */
.docs-content > table,
.docs-content article > table {
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
  margin: 1.5rem 0;
}

/* ── HR — elegant centered dots ── */
.docs-content hr {
  border: none;
  margin: 2.5rem 0;
  text-align: center;
  line-height: 0;
}
.docs-content hr::after {
  content: '\00b7\00a0\00a0\00b7\00a0\00a0\00b7';
  font-size: 1.5rem;
  letter-spacing: 0.5em;
  color: var(--rb-text-muted);
  opacity: 0.5;
}

/* ── Images ── */
.docs-content img {
  border-radius: var(--rb-border-radius);
  border: 1px solid var(--rb-border);
  box-shadow: var(--rb-shadow-sm);
  margin: 1.5rem 0;
}

/* ── Breadcrumb ── */
.docs-breadcrumb {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem;
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  margin-bottom: 1rem;
}
.docs-breadcrumb__list {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
  gap: 0.25rem;
}
.docs-breadcrumb__item {
  display: flex;
  align-items: center;
}
.docs-breadcrumb__item:not(:last-child)::after {
  content: "/";
  color: var(--rb-border);
  font-size: 0.75rem;
  margin-left: 0.375rem;
  user-select: none;
}
.docs-breadcrumb__link {
  color: var(--rb-text-muted);
  text-decoration: none;
  transition: color 0.15s ease;
}
.docs-breadcrumb__link:hover {
  color: var(--rb-primary);
}
.docs-breadcrumb a {
  color: var(--rb-text-muted);
  text-decoration: none;
  transition: color 0.15s ease;
}
.docs-breadcrumb a:hover {
  color: var(--rb-primary);
}
.docs-breadcrumb__separator {
  color: var(--rb-border);
  font-size: 0.75rem;
  margin: 0 0.125rem;
  user-select: none;
}
/* E125-001 (D4): the trailing segment doubles as a Mintlify-style eyebrow
   above the H1 — primary-tinted, medium weight. */
.docs-breadcrumb__current {
  color: var(--rb-eyebrow-color, var(--rb-primary));
  font-weight: 500;
}
/* E152-051: "section" eyebrow style — a single primary-tinted group label above
   the H1 (Mintlify styling.eyebrows parity), replacing the breadcrumb trail.
   --rb-eyebrow-color (E154 catalog): override-only, primary fallback. */
.docs-eyebrow {
  color: var(--rb-eyebrow-color, var(--rb-primary));
  font-size: 0.8125rem;
  font-weight: 500;
  margin-bottom: 1rem;
}

/* ── Page title & description ── */
.docs-page__title { margin-bottom: 0.5rem; }
.docs-page__description {
  color: var(--rb-text-muted);
  font-size: 1.125rem;
  line-height: 1.6;
  margin-bottom: 2.5rem;
}

@media (max-width: 768px) {
  .docs-content {
    padding: 1.5rem 1rem 3rem;
  }
  .docs-content h1 { font-size: 1.75rem; }
  .docs-content h2 { font-size: 1.375rem; }
  .docs-content h3 { font-size: 1.125rem; }
  .docs-content a.heading-anchor { display: none; }
}
/* ══════════════════════════════════════════════════════════════
   Table of Contents — Right-side navigation
   ══════════════════════════════════════════════════════════════ */
.docs-toc {
  position: sticky;
  top: var(--rb-header-offset);
  height: calc(100vh - var(--rb-header-offset));
  overflow-y: auto;
  padding: 1.5rem 1rem 2rem;
  width: 14rem;
  font-size: 0.8125rem;
  scrollbar-width: thin;
  scrollbar-color: var(--rb-border) transparent;
}

.docs-toc::-webkit-scrollbar { width: 3px; }
.docs-toc::-webkit-scrollbar-track { background: transparent; }
.docs-toc::-webkit-scrollbar-thumb {
  background: var(--rb-border);
  border-radius: 3px;
}

/* E125-001 (D5): calmer TOC — sentence-case label, softer track line */
.docs-toc__title {
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0;
  color: var(--rb-text);
  margin-bottom: 0.75rem;
}

.docs-toc__list {
  list-style: none;
  border-left: 1px solid color-mix(in srgb, var(--rb-border) 70%, transparent);
}

.docs-toc__item {
  margin-bottom: 0;
}

.docs-toc__link {
  /* The active link nudges its text 2px right (set below). It rides on
     padding, not transform: a transform would carry the marker border
     along and slide it off the track line. */
  --rb-toc-nudge: 0px;
  display: block;
  color: var(--rb-text-muted);
  padding: 0.25rem 0 0.25rem calc(0.875rem + var(--rb-toc-nudge));
  margin-left: -1px;
  border-left: 2px solid transparent;
  line-height: 1.45;
  transition: color var(--rb-duration-slow) var(--rb-ease-out-expo),
    border-color var(--rb-duration-slow) var(--rb-ease-out-expo),
    padding-left var(--rb-duration-slow) var(--rb-ease-out-expo);
}
/* Indent nested entries via the link's text padding only, so the
   active-marker border stays aligned with the TOC track line. */
.docs-toc__item--level-3 .docs-toc__link { padding-left: calc(1.625rem + var(--rb-toc-nudge)); }
.docs-toc__item--level-4 .docs-toc__link { padding-left: calc(2.375rem + var(--rb-toc-nudge)); }
.docs-toc__link:hover {
  color: var(--rb-text);
}

/* Active TOC link: the 2px marker sits flush on the 1px track line
   (margin-left: -1px above); only the text moves. */
.docs-toc__link--active {
  --rb-toc-nudge: 2px;
  color: var(--rb-primary);
  border-left-color: var(--rb-primary);
  font-weight: 500;
}

/* Back to top link */
.docs-toc__back-to-top {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin-top: 1.25rem;
  font-size: 0.75rem;
  color: var(--rb-text-muted);
  opacity: 0.8;
  transition: color 0.15s ease, opacity 0.15s ease;
}
.docs-toc__back-to-top:hover {
  color: var(--rb-primary);
}

@media (max-width: 1280px) {
  .docs-toc { display: none; }
}
/* ══════════════════════════════════════════════════════════════
   Footer
   ══════════════════════════════════════════════════════════════ */
.docs-footer {
  border-top: 1px solid var(--rb-border);
  padding: 2rem 1.5rem;
  text-align: center;
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
}

.docs-footer__text {
  margin-bottom: 0.75rem;
}

/* Desktop shows "Built with routebase" pinned in the sidebar; the footer only carries
   it as a mobile fallback. A footer that would hold nothing but the branding therefore
   collapses on desktop so it doesn't leave an empty bordered bar. */
.docs-footer__branding {
  display: none;
  justify-content: center;
}
.docs-footer--branding-only {
  display: none;
}
@media (max-width: 768px) {
  .docs-footer__branding {
    display: flex;
  }
  .docs-footer--branding-only {
    display: block;
  }
}

.docs-footer__brand-link {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.625rem;
  border: 1px solid color-mix(in srgb, var(--rb-border) 70%, transparent);
  border-radius: 999px;
  font-size: 0.6875rem;
  line-height: 1;
  color: var(--rb-text-muted);
  opacity: 0.8;
  text-decoration: none;
  transition: opacity var(--rb-duration-fast) var(--rb-ease-out-expo), color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-footer__brand-link:hover {
  color: var(--rb-text);
  border-color: var(--rb-text-muted);
  opacity: 1;
}

.docs-footer__brand-label {
  opacity: 0.8;
}

.docs-footer__brand-mark {
  flex-shrink: 0;
  border-radius: 4px;
}

.docs-footer__brand-name {
  font-family: 'Routebase Brand', var(--rb-font-family, system-ui, sans-serif);
  font-weight: 900;
  font-size: 0.75rem;
  letter-spacing: -0.01em;
  text-transform: lowercase;
  color: var(--rb-text);
}

/* Inside the SIDEBAR footer the brand pill sits on --rb-sidebar-bg, not the
   page background — it must read the sidebar text token, or a custom sidebar
   color (e.g. dark blue on a light theme) renders it dark-on-dark. The mobile
   page footer keeps the content tokens above. */
.docs-sidebar__footer .docs-footer__brand-link {
  color: color-mix(in srgb, var(--rb-sidebar-text) 78%, transparent);
  border-color: color-mix(in srgb, var(--rb-sidebar-text) 30%, transparent);
}
.docs-sidebar__footer .docs-footer__brand-link:hover {
  color: var(--rb-sidebar-text);
  border-color: color-mix(in srgb, var(--rb-sidebar-text) 55%, transparent);
}
.docs-sidebar__footer .docs-footer__brand-name {
  color: var(--rb-sidebar-text);
}
/* ══════════════════════════════════════════════════════════════
   Code Blocks — Syntax highlighted code areas
   ══════════════════════════════════════════════════════════════ */

/* Inline code within pre should reset border */
.docs-content pre code {
  background: none;
  padding: 0;
  border: none;
  font-size: 0.8125rem;
  line-height: 1.7;
  color: inherit;
}

/* E125-001 (D1): code blocks are always dark (both modes) with a Mintlify-style
   chrome — a header row carrying the language label + an always-visible copy
   button. The header renders whenever a language label exists (:has()); plain
   blocks keep the button as a floating overlay. */
.docs-content pre {
  background: var(--rb-code-block-bg);
  color: var(--rb-code-block-text);
  border: 1px solid var(--rb-code-block-border);
  border-radius: 0.625rem;
  padding: 1.125rem 1.25rem;
  overflow-x: auto;
  /* Der Block folgt der Syntax-Theme-Palette, nicht dem Seiten-Modus — ohne eigenes
     color-scheme zeichnet der Browser die HELLE native Scrollbar des hellen Portals
     auf den dunklen Block (Denny repro 2026-08-04). Die Variable kommt aus
     GetCodeBlockColorScheme, damit github-light nicht ins Gegenteil kippt. Gilt mit
     für Code-Group-/Code-Panel-Tabs, die dasselbe <pre> als Scroll-Element nutzen. */
  color-scheme: var(--rb-code-block-scheme, dark);
  margin: 1.25rem 0;
  position: relative;
  tab-size: 2;
  -moz-tab-size: 2;
}
.docs-content pre code {
  color: var(--rb-code-block-text);
}

/* Code block wrapper with metadata */
.docs-code-block {
  position: relative;
  margin: 1.25rem 0;
}

/* Language label — floating fallback (blocks without header layout) */
.docs-code-lang {
  position: absolute;
  top: 0.5rem;
  left: 0.875rem;
  font-size: 0.6875rem;
  font-family: var(--rb-font-family);
  color: var(--rb-code-block-text);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  pointer-events: none;
  z-index: 1;
  opacity: 0.55;
}

/* Copy button — always visible, quiet until hover */
.docs-code-copy-btn {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.25rem 0.5rem;
  border: 1px solid transparent;
  border-radius: 0.375rem;
  background: transparent;
  color: var(--rb-code-block-text);
  font-size: 0.6875rem;
  font-family: var(--rb-font-family);
  cursor: pointer;
  opacity: 0.55;
  transition: opacity 0.15s ease, background-color 0.15s ease;
  z-index: 1;
}
.docs-code-copy-btn:hover {
  opacity: 1;
  background: color-mix(in srgb, var(--rb-code-block-text) 10%, transparent);
}
/* "Copied" success state — the shell JS toggles this class and swaps the icon */
.docs-code-copy-btn--copied {
  opacity: 1;
  color: var(--rb-method-get);
}
@media (prefers-reduced-motion: no-preference) {
  .docs-code-copy-btn--copied,
  .docs-page-actions__item--copied {
    animation: rb-pop var(--rb-duration-slow) var(--rb-ease-spring);
  }
}

.docs-code-block pre {
  margin: 0;
}

/* Header-row layout when a language label is present */
.docs-code-block:has(> .docs-code-lang) {
  background: var(--rb-code-block-bg);
  border: 1px solid var(--rb-code-block-border);
  border-radius: 0.625rem;
  overflow: hidden;
}
.docs-code-block:has(> .docs-code-lang) > .docs-code-lang {
  position: static;
  display: block;
  padding: 0.5rem 1.25rem;
  opacity: 0.55;
  border-bottom: 1px solid color-mix(in srgb, var(--rb-code-block-text) 8%, transparent);
}
.docs-code-block:has(> .docs-code-lang) > pre {
  border: none;
  border-radius: 0;
}
/* ══════════════════════════════════════════════════════════════
   HTTP Method Badges
   ══════════════════════════════════════════════════════════════ */
/* Tinted style matching the app-wide METHOD_COLORS_DOC standard — colored text
   on a 10% tint with a 20% ring (same treatment as the sidebar method badges). */
.docs-method-badge {
  --rb-method: var(--rb-text-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1875rem 0.5rem;
  border-radius: 0.25rem;
  font-size: 0.6875rem;
  font-weight: 600;
  font-family: var(--rb-code-font-family);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--rb-method);
  background-color: color-mix(in srgb, var(--rb-method) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rb-method) 20%, transparent);
  min-width: 3rem;
  line-height: 1.3;
}
.docs-method-badge--get { --rb-method: var(--rb-method-get); }
.docs-method-badge--post { --rb-method: var(--rb-method-post); }
.docs-method-badge--put { --rb-method: var(--rb-method-put); }
.docs-method-badge--delete { --rb-method: var(--rb-method-delete); }
.docs-method-badge--patch { --rb-method: var(--rb-method-patch); }
.docs-method-badge--head { --rb-method: var(--rb-method-get); }
.docs-method-badge--options { --rb-method: var(--rb-method-get); }
/* ══════════════════════════════════════════════════════════════
   Prev/Next Navigation — quiet pill buttons with the page title below
   (E158 round 4, Denny: no full-width cards; label is a rounded pill,
   the title reads as plain bold text — Anthropic-docs style)
   ══════════════════════════════════════════════════════════════ */
.docs-prev-next {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 3rem;
  padding-top: 2rem;
  border-top: 1px solid color-mix(in srgb, var(--rb-border) 50%, transparent);
}

.docs-prev-next__prev,
.docs-prev-next__next {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  flex: 1;
  max-width: 50%;
  min-width: 0;
  text-decoration: none;
}

.docs-prev-next__next { margin-left: auto; text-align: right; }

/* The label is the pill; the whole anchor stays clickable. align-self keeps the
   pill hugging its content instead of stretching across the column. */
.docs-prev-next__label {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 0.5rem;
  padding: 0.5rem 1.125rem;
  border: 1px solid var(--rb-btn-border, var(--rb-border));
  border-radius: 9999px;
  font-size: 0.875rem;
  background: var(--rb-btn-bg, transparent);
  color: var(--rb-btn-text, var(--rb-text-muted));
  transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}
.docs-prev-next__next .docs-prev-next__label { align-self: flex-end; }

.docs-prev-next__prev:hover .docs-prev-next__label,
.docs-prev-next__next:hover .docs-prev-next__label {
  border-color: var(--rb-btn-hover-border, var(--rb-primary));
  color: var(--rb-btn-hover-text, var(--rb-primary));
  background: var(--rb-btn-hover-bg, transparent);
}

/* Arrow indicators */
.docs-prev-next__prev .docs-prev-next__label::before {
  content: '\2190';
  font-size: 0.875rem;
}
.docs-prev-next__next .docs-prev-next__label::after {
  content: '\2192';
  font-size: 0.875rem;
}

.docs-prev-next__title {
  font-weight: 600;
  color: var(--rb-text);
  font-size: 1.125rem;
  line-height: 1.4;
}
.docs-prev-next__prev:hover .docs-prev-next__title,
.docs-prev-next__next:hover .docs-prev-next__title {
  color: var(--rb-primary);
}

@media (max-width: 640px) {
  .docs-prev-next {
    flex-direction: column;
  }
  .docs-prev-next__prev,
  .docs-prev-next__next {
    max-width: 100%;
  }
}
/* ══════════════════════════════════════════════════════════════
   API Endpoint — Endpoint detail pages
   ══════════════════════════════════════════════════════════════ */
.docs-endpoint-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.25rem;
  padding: 0.875rem 1rem;
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
}

.docs-endpoint-header--sticky {
  position: sticky;
  top: var(--rb-header-offset);
  z-index: 10;
  backdrop-filter: blur(8px);
  background: color-mix(in srgb, var(--rb-surface) 92%, transparent);
}

.docs-endpoint-path {
  font-family: var(--rb-code-font-family);
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--rb-text);
  word-break: break-all;
}

.docs-endpoint-section {
  margin: 2rem 0;
}
.docs-endpoint-section h3 {
  font-size: 1rem;
  margin-bottom: 0.875rem;
}

/* Parameter table with improved readability */
.docs-params-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
}
.docs-params-table th {
  text-align: left;
  padding: 0.5rem 0.875rem;
  background: var(--rb-surface);
  border-bottom: 2px solid var(--rb-border);
  font-weight: 600;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--rb-text-muted);
}
.docs-params-table td {
  padding: 0.5rem 0.875rem;
  border-bottom: 1px solid var(--rb-border);
  vertical-align: top;
}
.docs-params-table tbody tr:last-child td {
  border-bottom: none;
}
.docs-params-table tbody tr:hover {
  background: var(--rb-surface-hover);
}

.docs-param-name {
  font-family: var(--rb-code-font-family);
  font-weight: 500;
  color: var(--rb-text);
  font-size: 0.8125rem;
}
.docs-param-required {
  color: var(--rb-method-delete);
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.docs-param-type {
  font-family: var(--rb-code-font-family);
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
}

/* ── Property list (BEM) — used by endpoint templates ── */
.docs-param-list {
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
  font-size: 0.875rem;
}
.docs-param-list--compact {
  border: none;
  border-radius: 0;
}
.docs-param {
  padding: 0.625rem 0.875rem;
  border-bottom: 1px solid var(--rb-border);
}
.docs-param:last-child {
  border-bottom: none;
}
.docs-param__header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.docs-param__name {
  font-family: var(--rb-code-font-family);
  font-weight: 500;
  color: var(--rb-text);
  font-size: 0.8125rem;
}
.docs-param__type {
  font-family: var(--rb-code-font-family);
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
}
.docs-param__ref-name {
  font-family: var(--rb-code-font-family);
  font-size: 0.75rem;
  color: var(--rb-primary);
  background: color-mix(in srgb, var(--rb-primary) 8%, transparent);
  padding: 0.0625rem 0.375rem;
  border-radius: 0.25rem;
}
.docs-param__location {
  font-size: 0.6875rem;
  color: var(--rb-text-muted);
  background: var(--rb-surface);
  padding: 0.0625rem 0.375rem;
  border-radius: 0.25rem;
  border: 1px solid var(--rb-border);
}
.docs-param__required {
  color: var(--rb-method-delete);
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.docs-param__description {
  margin: 0.25rem 0 0 0;
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  line-height: 1.5;
}

/* Nested / collapsible properties via <details>/<summary> */
.docs-param__nested {
  margin-top: 0.375rem;
}
.docs-param__nested summary {
  cursor: pointer;
  font-size: 0.75rem;
  color: var(--rb-primary);
  font-weight: 500;
  list-style: none;
  user-select: none;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
.docs-param__nested summary::-webkit-details-marker {
  display: none;
}
.docs-param__nested summary::before {
  content: "▶";
  font-size: 0.5rem;
  transition: transform 0.15s ease;
  display: inline-block;
}
.docs-param__nested[open] > summary::before {
  transform: rotate(90deg);
}
.docs-param__nested-list {
  margin-top: 0.375rem;
  padding-left: 0.875rem;
  border-left: 2px solid var(--rb-border);
}
.docs-param__nested-list .docs-param {
  padding: 0.375rem 0 0.375rem 0.5rem;
  border-bottom: 1px solid color-mix(in srgb, var(--rb-border) 50%, transparent);
}
.docs-param__nested-list .docs-param:last-child {
  border-bottom: none;
}

/* Response status codes with colored left borders */
.docs-status-code {
  font-family: var(--rb-code-font-family);
  font-weight: 600;
  font-size: 0.875rem;
}
.docs-status-code--2xx { color: var(--rb-method-get); }
.docs-status-code--4xx { color: var(--rb-method-put); }
.docs-status-code--5xx { color: var(--rb-method-delete); }

/* Response sections with colored left border indicators */
.docs-endpoint-response {
  border-left: 3px solid var(--rb-border);
  padding-left: 1rem;
  margin: 1rem 0;
}
.docs-endpoint-response--2xx { border-left-color: var(--rb-method-get); }
.docs-endpoint-response--4xx { border-left-color: var(--rb-method-put); }
.docs-endpoint-response--5xx { border-left-color: var(--rb-method-delete); }

.docs-badge--deprecated {
  background: var(--rb-method-put);
  color: #ffffff;
  font-size: 0.6875rem;
  padding: 0.125rem 0.5rem;
  border-radius: 0.25rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* ── E73-024: Deprecation banner + migration guide ── */
.docs-deprecation-banner {
  border: 1px solid var(--rb-method-put);
  border-left-width: 4px;
  border-radius: var(--rb-border-radius);
  background: color-mix(in srgb, var(--rb-method-put) 8%, transparent);
  padding: 0.875rem 1.25rem;
  margin: 1.5rem 1.5rem 0;
}
.docs-deprecation-banner--sunset {
  border-color: var(--rb-method-delete);
  background: color-mix(in srgb, var(--rb-method-delete) 8%, transparent);
}
.docs-deprecation-banner__title {
  font-weight: 600;
  font-size: 0.9375rem;
  color: var(--rb-text);
  margin: 0 0 0.25rem;
}
.docs-deprecation-banner__meta {
  font-size: 0.875rem;
  color: var(--rb-text-muted);
  margin: 0;
}
.docs-deprecation-banner__successor {
  font-family: var(--rb-code-font-family);
  font-size: 0.8125rem;
}
a.docs-deprecation-banner__successor {
  color: var(--rb-primary);
  text-decoration: none;
}
a.docs-deprecation-banner__successor:hover {
  text-decoration: underline;
}
.docs-deprecation-banner__guide-link {
  display: inline-block;
  margin-top: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--rb-primary);
  text-decoration: none;
}
.docs-deprecation-banner__guide-link:hover {
  text-decoration: underline;
}
.docs-migration-guide {
  margin: 2rem 1.5rem;
  padding: 1.5rem;
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
}
.docs-migration-guide__title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--rb-text);
  margin: 0 0 1rem;
}
.docs-migration-guide__content {
  font-size: 0.875rem;
  color: var(--rb-text);
}

.docs-playground-mount {
  margin-top: 2rem;
  padding: 1.5rem;
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
}

/* ── API Reference Index ── */
.docs-api-overview__count {
  font-size: 0.875rem;
  color: var(--rb-text-muted);
  margin-bottom: 2rem;
}
/* E144-007: the tag anchor bar had no rules at all — inline anchors rendered
   as one unbroken word ("AdminAuthDefaultCustomers…"). */
.docs-api-tag-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem 1rem;
  margin-bottom: 2rem;
}
.docs-api-tag-nav__link {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--rb-link);
  text-decoration: none;
}
.docs-api-tag-nav__link:hover {
  text-decoration: underline;
}
.docs-api-tag {
  margin-bottom: 2.5rem;
}
.docs-api-tag__title {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--rb-text);
  margin-bottom: 0.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--rb-border);
}
.docs-api-tag__description {
  font-size: 0.875rem;
  color: var(--rb-text-muted);
  margin-bottom: 1rem;
}
.docs-api-tag__endpoints {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
}
.docs-api-endpoint-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.875rem;
  text-decoration: none;
  color: var(--rb-text);
  border-bottom: 1px solid var(--rb-border);
  transition: background-color 0.15s ease;
}
.docs-api-endpoint-link:last-child {
  border-bottom: none;
}
.docs-api-endpoint-link:first-child {
  border-top: none;
}
.docs-api-endpoint-link:hover {
  background-color: var(--rb-surface-hover);
}
.docs-api-endpoint-link .docs-method-badge {
  flex-shrink: 0;
  min-width: 3.5rem;
  text-align: center;
}
.docs-api-endpoint-link__path {
  font-family: var(--rb-code-font-family);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--rb-text);
  flex-shrink: 0;
}
.docs-api-endpoint-link__summary {
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* ══════════════════════════════════════════════════════════════
   Utility — Feedback form & page-level styles
   ══════════════════════════════════════════════════════════════ */
/* E158 round 4 (Denny): question and Yes/No sit inline, left-aligned, with a
   segmented pill button group (Anthropic-docs style) instead of the centered
   stack of two separate buttons. */
.docs-feedback {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid color-mix(in srgb, var(--rb-border) 50%, transparent);
  text-align: left;
}
/* E125-001 (D2): no stacked hairlines — an empty widget (JS disabled/not yet
   mounted) disappears, and prev/next drops its own rule when feedback shows. */
.docs-feedback:empty {
  display: none;
}
.docs-feedback:not(:empty) + .docs-prev-next {
  border-top: none;
  padding-top: 0;
}
.docs-feedback__question {
  font-size: 0.938rem;
  font-weight: 500;
  color: var(--rb-text);
}
.docs-feedback__buttons {
  display: flex;
  gap: 0;
}
/* --rb-btn-* (E154 catalog, 2026-07-17): shared neutral-button tokens — feedback
   Yes/No/Skip, prev/next pills, copy-page bar, changelog labels, secondary CTA.
   Override-only; each rule keeps its previous look as fallback. */
.docs-feedback__btn {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 1.375rem;
  border: 1px solid var(--rb-btn-border, var(--rb-border));
  background: var(--rb-btn-bg, transparent);
  color: var(--rb-btn-text, var(--rb-text-muted));
  font-size: 0.875rem;
  cursor: pointer;
  transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}
/* Segmented pill: the pair shares one middle divider. */
.docs-feedback__btn--up {
  border-radius: 9999px 0 0 9999px;
  border-right: none;
}
.docs-feedback__btn--down {
  border-radius: 0 9999px 9999px 0;
}
/* Reference design is text-only — the thumb icons made the pill busy. */
.docs-feedback__btn svg {
  display: none;
}
.docs-feedback__btn:hover {
  border-color: var(--rb-btn-hover-border, var(--rb-primary));
  color: var(--rb-btn-hover-text, var(--rb-primary));
  background: var(--rb-btn-hover-bg, var(--rb-bg-subtle));
}
/* Own row below the question (flex-basis is clamped by max-width during flex
   line-breaking, so the cap sits on the children, not the form — otherwise the
   form ends up NEXT to the question). Inner pieces stay at a readable width. */
.docs-feedback__comment-form {
  flex-basis: 100%;
}
.docs-feedback__comment-form .docs-feedback__textarea,
.docs-feedback__comment-form .docs-feedback__comment-actions {
  max-width: 480px;
}
.docs-feedback__textarea {
  width: 100%;
  padding: 0.75rem 1.125rem;
  text-align: left;
  border: 1px solid var(--rb-border);
  border-radius: 18px;
  background: transparent;
  color: var(--rb-text);
  font-family: inherit;
  font-size: 0.875rem;
  resize: vertical;
  min-height: 80px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.docs-feedback__textarea:focus {
  outline: none;
  border-color: var(--rb-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rb-primary) 12%, transparent);
}
.docs-feedback__comment-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 0.5rem;
}
.docs-feedback__char-count {
  font-size: 0.75rem;
  color: var(--rb-text-muted);
}
.docs-feedback__action-buttons {
  display: flex;
  gap: 0.5rem;
}
/* Skip/Submit share the Yes/No pill language; Submit is the tonal variant
   (tinted fill + primary text) — quiet, not a hard CTA (Denny, E158 round 5). */
.docs-feedback__skip {
  padding: 0.5rem 1.375rem;
  border: 1px solid var(--rb-btn-border, var(--rb-border));
  border-radius: 9999px;
  background: var(--rb-btn-bg, transparent);
  color: var(--rb-btn-text, var(--rb-text-muted));
  font-size: 0.813rem;
  cursor: pointer;
  transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}
.docs-feedback__skip:hover {
  border-color: var(--rb-btn-hover-border, var(--rb-primary));
  color: var(--rb-btn-hover-text, var(--rb-primary));
  background: var(--rb-btn-hover-bg, var(--rb-bg-subtle));
}
.docs-feedback__submit {
  padding: 0.5rem 1.375rem;
  border: 1px solid color-mix(in srgb, var(--rb-primary) 60%, transparent);
  border-radius: 9999px;
  background: color-mix(in srgb, var(--rb-primary) 12%, transparent);
  color: var(--rb-primary);
  font-size: 0.813rem;
  font-weight: 500;
  cursor: pointer;
  transition: border-color 0.2s ease, background-color 0.2s ease;
}
.docs-feedback__submit:hover {
  border-color: var(--rb-primary);
  background: color-mix(in srgb, var(--rb-primary) 18%, transparent);
}
.docs-feedback__thanks {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  color: var(--rb-text-muted);
  font-size: 0.875rem;
}
.docs-feedback__thanks svg {
  color: var(--rb-success, #22c55e);
}
.docs-feedback__error {
  color: var(--rb-danger, #ef4444);
  font-size: 0.875rem;
}
/* ══════════════════════════════════════════════════════════════
   Code Examples — Tabbed code panels (E63-055)
   ══════════════════════════════════════════════════════════════ */
.docs-code-examples { margin: 1.5rem 0; }

.docs-code-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--rb-border);
  margin-bottom: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.docs-code-tab {
  padding: 0.5rem 1rem;
  border: none;
  background: transparent;
  color: var(--rb-text-muted);
  font-size: 0.8125rem;
  font-weight: 500;
  font-family: var(--rb-font-family);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
  transition: color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-code-tab:hover { color: var(--rb-text); }
.docs-code-tab--active {
  color: var(--rb-primary);
  border-bottom-color: var(--rb-primary);
}

.docs-code-panel { display: none; }
.docs-code-panel--active { display: block; }

.docs-code-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.5rem 1rem;
  background: var(--rb-code-bg);
  border: 1px solid var(--rb-border);
  border-bottom: none;
  border-radius: var(--rb-border-radius) var(--rb-border-radius) 0 0;
  font-size: 0.75rem;
  color: var(--rb-text-muted);
}
.docs-code-panel pre {
  margin-top: 0;
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.docs-code-copy {
  padding: 0.25rem 0.5rem;
  border: 1px solid var(--rb-border);
  border-radius: 0.25rem;
  background: var(--rb-surface);
  color: var(--rb-text-muted);
  font-size: 0.6875rem;
  font-family: var(--rb-font-family);
  cursor: pointer;
  transition: color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-code-copy:hover {
  color: var(--rb-text);
  border-color: var(--rb-text-muted);
}
/* ══════════════════════════════════════════════════════════════
   Search Dialog — Cmd+K modal (E63 Sprint 5)
   ══════════════════════════════════════════════════════════════ */
.docs-search-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  align-items: flex-start;
  justify-content: center;
  padding-top: 12vh;
}

.docs-search-dialog {
  width: 100%;
  max-width: 36rem;
  background: var(--rb-background);
  border: 1px solid var(--rb-border);
  border-radius: calc(var(--rb-border-radius) * 2);
  box-shadow:
    var(--rb-shadow-md),
    0 25px 50px -12px rgba(0, 0, 0, 0.25),
    0 0 0 1px rgba(0, 0, 0, 0.05);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  max-height: 70vh;
}

.docs-search-input-wrap {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.875rem 1.125rem;
  border-bottom: 1px solid var(--rb-border);
}

.docs-search-input-icon {
  flex-shrink: 0;
  color: var(--rb-text-muted);
  opacity: 0.6;
}

.docs-search-input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-size: 1rem;
  font-family: var(--rb-font-family);
  color: var(--rb-text);
}
.docs-search-input::placeholder {
  color: var(--rb-text-muted);
}

.docs-search-results {
  overflow-y: auto;
  padding: 0.5rem;
  flex: 1;
}

.docs-search-result {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.625rem 0.75rem;
  border-radius: var(--rb-border-radius);
  cursor: pointer;
  text-decoration: none;
  color: var(--rb-text);
  transition: background-color 0.1s ease;
}
.docs-search-result:hover,
.docs-search-result--active {
  background-color: var(--rb-surface-hover);
  color: var(--rb-text);
}

.docs-search-result__type {
  flex-shrink: 0;
  width: 1.25rem;
  height: 1.25rem;
  margin-top: 0.125rem;
  color: var(--rb-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
}
.docs-search-result--active .docs-search-result__type {
  color: var(--rb-primary);
}

.docs-search-result__body {
  flex: 1;
  min-width: 0;
}

.docs-search-result__title {
  font-weight: 500;
  font-size: 0.875rem;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.docs-search-result__snippet {
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  line-height: 1.4;
  margin-top: 0.125rem;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.docs-search-result mark {
  background-color: var(--rb-accent);
  color: var(--rb-accent-foreground);
  border-radius: 2px;
  padding: 0 2px;
}

/* E67-030: Section grouping in search results */
.docs-search-section-header {
  padding: 0.5rem 1rem 0.25rem;
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--rb-text-muted);
  border-top: 1px solid var(--rb-border);
}
.docs-search-section-header:first-child {
  border-top: none;
}
.docs-search-result__section {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.0625rem 0.375rem;
  font-size: 0.6875rem;
  font-weight: 500;
  color: var(--rb-text-muted);
  background: var(--rb-bg-muted);
  border-radius: 0.25rem;
  vertical-align: middle;
}

.docs-search-empty {
  padding: 2rem 1rem;
  text-align: center;
  color: var(--rb-text-muted);
  font-size: 0.875rem;
}

.docs-search-footer {
  display: flex;
  gap: 1rem;
  padding: 0.625rem 1rem;
  border-top: 1px solid var(--rb-border);
  font-size: 0.75rem;
  color: var(--rb-text-muted);
}

.docs-search-footer kbd {
  display: inline-block;
  padding: 0.0625rem 0.375rem;
  border: 1px solid var(--rb-border);
  border-radius: 0.25rem;
  background: var(--rb-surface);
  font-family: var(--rb-font-family);
  font-size: 0.6875rem;
  margin-right: 0.25rem;
}

@media (max-width: 640px) {
  .docs-search-overlay {
    padding-top: 1rem;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }
  .docs-search-dialog { max-height: 85vh; }
}
/* ══════════════════════════════════════════════════════════════
   Doc Components (E63 Sprint 11)
   ══════════════════════════════════════════════════════════════ */

/* ── Callout (E63-080) ── */
/* Base box styles also target the bare stored form `div[data-callout]`:
   the header/body structure is built client-side (doc-components.ts
   callouts()), so no-JS surfaces and the inert in-app preview still get
   a properly padded, bordered box. Keep this block ABOVE the variant
   tints so their equal-specificity background/border-color rules win. */
.docs-callout,
div[data-callout] {
  margin: 1.5rem 0;
  padding: 1rem 1.25rem 1rem 1rem;
  border-left: 4px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-left-width: 4px;
}

.docs-callout__header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 600;
  font-size: 0.875rem;
  margin-bottom: 0.5rem;
}
.docs-callout__header svg {
  width: 1.125rem;
  height: 1.125rem;
  flex-shrink: 0;
}
/* E65-040: custom emoji icon replaces the SVG in the header. */
.docs-callout__emoji {
  font-size: 1.125rem;
  line-height: 1;
  flex-shrink: 0;
}

.docs-callout__body {
  font-size: 0.9375rem;
  line-height: 1.65;
}
.docs-callout__body > *:first-child { margin-top: 0; }
.docs-callout__body > *:last-child { margin-bottom: 0; }

/* Callout variants with semantic colors */
div[data-callout="info"] {
  border-left-color: #3b82f6;
  background: rgba(59, 130, 246, 0.05);
  border-color: rgba(59, 130, 246, 0.15);
  border-left-color: #3b82f6;
}
div[data-callout="info"] .docs-callout__header { color: #2563eb; }

div[data-callout="warning"] {
  border-left-color: #f59e0b;
  background: rgba(245, 158, 11, 0.05);
  border-color: rgba(245, 158, 11, 0.15);
  border-left-color: #f59e0b;
}
div[data-callout="warning"] .docs-callout__header { color: #b45309; }

div[data-callout="error"] {
  border-left-color: #ef4444;
  background: rgba(239, 68, 68, 0.05);
  border-color: rgba(239, 68, 68, 0.15);
  border-left-color: #ef4444;
}
div[data-callout="error"] .docs-callout__header { color: #b91c1c; }

div[data-callout="tip"] {
  border-left-color: #22c55e;
  background: rgba(34, 197, 94, 0.05);
  border-color: rgba(34, 197, 94, 0.15);
  border-left-color: #22c55e;
}
div[data-callout="tip"] .docs-callout__header { color: #15803d; }

/* E152-063: neutral note + success check */
div[data-callout="note"] {
  border-left-color: #64748b;
  background: rgba(100, 116, 139, 0.05);
  border-color: rgba(100, 116, 139, 0.15);
  border-left-color: #64748b;
}
div[data-callout="note"] .docs-callout__header { color: #475569; }

div[data-callout="check"] {
  border-left-color: #16a34a;
  background: rgba(22, 163, 74, 0.05);
  border-color: rgba(22, 163, 74, 0.15);
  border-left-color: #16a34a;
}
div[data-callout="check"] .docs-callout__header { color: #15803d; }

/* Dark mode callout adjustments */
[data-theme-mode="dark"] div[data-callout="info"] {
  background: rgba(59, 130, 246, 0.08);
  border-color: rgba(59, 130, 246, 0.2);
  border-left-color: #3b82f6;
}
[data-theme-mode="dark"] div[data-callout="warning"] {
  background: rgba(245, 158, 11, 0.08);
  border-color: rgba(245, 158, 11, 0.2);
  border-left-color: #f59e0b;
}
[data-theme-mode="dark"] div[data-callout="error"] {
  background: rgba(239, 68, 68, 0.08);
  border-color: rgba(239, 68, 68, 0.2);
  border-left-color: #ef4444;
}
[data-theme-mode="dark"] div[data-callout="tip"] {
  background: rgba(34, 197, 94, 0.08);
  border-color: rgba(34, 197, 94, 0.2);
  border-left-color: #22c55e;
}
[data-theme-mode="dark"] div[data-callout="note"] {
  background: rgba(100, 116, 139, 0.1);
  border-color: rgba(100, 116, 139, 0.25);
  border-left-color: #64748b;
}
[data-theme-mode="dark"] div[data-callout="check"] {
  background: rgba(22, 163, 74, 0.1);
  border-color: rgba(22, 163, 74, 0.2);
  border-left-color: #22c55e;
}

/* Dark mode: brighter header text — the AA-darkened light-mode hues
   fail contrast on the dark callout background, so restore the 500-shade
   tones which meet AA against the dark surface. */
[data-theme-mode="dark"] div[data-callout="info"] .docs-callout__header { color: #3b82f6; }
[data-theme-mode="dark"] div[data-callout="warning"] .docs-callout__header { color: #f59e0b; }
[data-theme-mode="dark"] div[data-callout="error"] .docs-callout__header { color: #ef4444; }
[data-theme-mode="dark"] div[data-callout="tip"] .docs-callout__header { color: #22c55e; }
[data-theme-mode="dark"] div[data-callout="note"] .docs-callout__header { color: #94a3b8; }
[data-theme-mode="dark"] div[data-callout="check"] .docs-callout__header { color: #4ade80; }

/* ── Frame (E152-062) — framed image with caption ──
   Token-only styling: the CSS vars flip in dark mode, so no separate
   [data-theme-mode="dark"] block is needed (unlike the callouts,
   which use literal colors). */
figure[data-frame] {
  margin: 1.5rem 0;
  padding: 0.75rem;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  background: var(--rb-surface);
}
figure[data-frame] img {
  margin: 0 auto;
  border-radius: calc(var(--rb-border-radius) * 0.75);
}
figure[data-frame] figcaption {
  margin-top: 0.625rem;
  text-align: center;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--rb-text-muted);
}
/* Frames authored without a caption: no stray gap below the image */
figure[data-frame] figcaption:empty {
  display: none;
}

/* ── Mermaid (E152-060) — client-rendered diagram container ──
   Token-only styling: the CSS vars flip in dark mode, so no separate
   [data-theme-mode="dark"] block is needed. The escaped source <pre>
   is the no-JS fallback; the lazy portal script (mermaid.ts) swaps it
   for inline SVG and sets .is-rendered. */
.docs-mermaid {
  margin: 1.5rem 0;
  padding: 1rem;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  background: var(--rb-surface);
  overflow-x: auto;
}
.docs-mermaid-svg {
  display: flex;
  justify-content: center;
}
.docs-mermaid-svg svg {
  max-width: 100%;
  height: auto;
}
.docs-mermaid-src {
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  font-family: var(--rb-code-font-family);
  font-size: 0.8125rem;
  line-height: 1.6;
  overflow-x: auto;
}
.docs-mermaid.is-rendered .docs-mermaid-src {
  display: none;
}

/* ── Tooltip (E152-061) — inline hover bubble ──
   Token-only styling (vars flip in dark mode, no dedicated block).
   Reveal on :hover and :focus-visible; doc-components.ts adds
   tabindex="0" so keyboard and touch-tap can focus the term. The
   fade transition is neutralized by the global reduced-motion rule. */
span[data-tooltip] {
  position: relative;
  cursor: help;
  text-decoration: underline dotted;
  text-decoration-color: var(--rb-text-muted);
  text-underline-offset: 3px;
}
span[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 0.5rem);
  left: 50%;
  transform: translateX(-50%);
  width: max-content;
  max-width: 16rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.8125rem;
  font-weight: 400;
  line-height: 1.5;
  text-align: center;
  white-space: normal;
  color: var(--rb-text);
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  box-shadow: var(--rb-shadow-md);
  opacity: 0;
  visibility: hidden;
  transition: opacity 150ms ease;
  pointer-events: none;
  z-index: 30;
}
span[data-tooltip]:hover::after,
span[data-tooltip]:focus-visible::after {
  opacity: 1;
  visibility: visible;
}
span[data-tooltip]:focus-visible {
  outline: 2px solid var(--rb-primary);
  outline-offset: 2px;
}

/* ── Navigation tooltip (2026-08-04) — reveals a label the sidebar cut off ──
   Same tokens as the inline tooltip above, but it CANNOT be a ::after on the row:
   .docs-sidebar is overflow:hidden and .docs-sidebar__nav is overflow-y:auto, so a
   bubble wide enough to hold the full label gets clipped by both. shell.ts
   (navTooltips) therefore keeps ONE fixed-position element on <body> and positions
   it from the row's bounding rect — the only way out of that clipping context.
   Shown only while a label is actually truncated; `hidden` is the resting state. */
.docs-nav-tooltip {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 60;
  max-width: 22rem;
  padding: 0.375rem 0.625rem;
  font-family: var(--rb-font-family);
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.4;
  white-space: normal;
  overflow-wrap: break-word;
  color: var(--rb-text);
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  box-shadow: var(--rb-shadow-md);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-nav-tooltip[hidden] {
  display: none;
}
.docs-nav-tooltip--visible {
  opacity: 1;
}

/* ── Inline Icon (E152-064) — standalone icon in running text ──
   Token-only: the SVG inherits currentColor, so it follows the
   surrounding text in both modes. doc-components.ts injects the SVG. */
span[data-icon] {
  display: inline-flex;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
}
span[data-icon] svg {
  width: 100%;
  height: 100%;
}

/* ── Badge (E152-065) — inline status pill ──
   Literal semantic colors matching the callout palette, with a
   dark-mode block (same approach as the callouts). */
span[data-badge] {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.5rem;
  border-radius: 9999px;
  border: 1px solid;
  font-size: 0.75em;
  font-weight: 600;
  line-height: 1.4;
  vertical-align: baseline;
  white-space: nowrap;
}
span[data-badge="neutral"] {
  color: #475569;
  background: rgba(100, 116, 139, 0.08);
  border-color: rgba(100, 116, 139, 0.25);
}
span[data-badge="info"] {
  color: #2563eb;
  background: rgba(59, 130, 246, 0.08);
  border-color: rgba(59, 130, 246, 0.25);
}
span[data-badge="success"] {
  color: #15803d;
  background: rgba(34, 197, 94, 0.08);
  border-color: rgba(34, 197, 94, 0.25);
}
span[data-badge="warning"] {
  color: #b45309;
  background: rgba(245, 158, 11, 0.08);
  border-color: rgba(245, 158, 11, 0.3);
}
span[data-badge="error"] {
  color: #b91c1c;
  background: rgba(239, 68, 68, 0.08);
  border-color: rgba(239, 68, 68, 0.25);
}
[data-theme-mode="dark"] span[data-badge="neutral"] { color: #94a3b8; }
[data-theme-mode="dark"] span[data-badge="info"] { color: #60a5fa; }
[data-theme-mode="dark"] span[data-badge="success"] { color: #4ade80; }
[data-theme-mode="dark"] span[data-badge="warning"] { color: #fbbf24; }
[data-theme-mode="dark"] span[data-badge="error"] { color: #f87171; }

/* ── Columns (E152-066) — multi-column layout for any content ──
   Pure CSS, no activation JS. Collapses to a single column on
   mobile (same breakpoint family as the card grid). */
div[data-column-layout] {
  display: grid;
  gap: 1rem;
  margin: 1.5rem 0;
}
div[data-column-layout="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
div[data-column-layout="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
div[data-column-layout="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
div[data-column-layout] > div[data-column] > *:first-child { margin-top: 0; }
div[data-column-layout] > div[data-column] > *:last-child { margin-bottom: 0; }
@media (max-width: 768px) {
  div[data-column-layout] { grid-template-columns: 1fr !important; }
}

/* ── Update / changelog entry (E152-067) ──
   doc-components.ts rebuilds div[data-update] into .docs-update:
   sticky anchor-linked label column + content body. Token-only. */
.docs-update {
  display: grid;
  grid-template-columns: 12rem minmax(0, 1fr);
  gap: 1.5rem;
  margin: 0;
  padding: 2rem 0;
  border-top: 1px solid var(--rb-border);
}
.docs-update:last-child { border-bottom: 1px solid var(--rb-border); }
.docs-update__aside {
  font-size: 0.875rem;
}
.docs-update__label {
  position: sticky;
  top: calc(var(--rb-header-offset) + 1rem); /* header (sidebar/toc sticky offset) + 1rem */
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border: 1px solid var(--rb-btn-border, var(--rb-border));
  border-radius: 9999px;
  background: var(--rb-btn-bg, var(--rb-surface));
  color: var(--rb-btn-text, var(--rb-text));
  font-weight: 600;
  text-decoration: none;
}
.docs-update__label:hover {
  border-color: var(--rb-btn-hover-border, var(--rb-primary));
  color: var(--rb-btn-hover-text, var(--rb-primary));
}
.docs-update__description {
  margin-top: 0.625rem;
  color: var(--rb-text-muted);
}
.docs-update__body > *:first-child { margin-top: 0; }
.docs-update__body > *:last-child { margin-bottom: 0; }
@media (max-width: 768px) {
  .docs-update {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }
  .docs-update__label { position: static; }
}

/* ── Tabs (E63-081) ── */
div[data-tabs] {
  margin: 1.5rem 0;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
}

.docs-tabs-bar {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--rb-border);
  background: var(--rb-surface);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.docs-tab-btn {
  padding: 0.625rem 1rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--rb-text-muted);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
  font-family: var(--rb-font-family);
}
.docs-tab-btn:hover { color: var(--rb-text); }
.docs-tab-btn--active {
  color: var(--rb-primary);
  border-bottom-color: var(--rb-primary);
}

.docs-tab-panel { display: none; padding: 1.25rem; }
.docs-tab-panel--active { display: block; }
.docs-tab-panel > *:first-child { margin-top: 0; }
.docs-tab-panel > *:last-child { margin-bottom: 0; }

/* ── Steps (E63-082) ── */
div[data-steps] {
  margin: 1.5rem 0;
  position: relative;
}

.docs-step {
  display: flex;
  gap: 1rem;
  position: relative;
  padding-bottom: 1.75rem;
}
.docs-step:last-child { padding-bottom: 0; }

.docs-step__indicator {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
}

.docs-step__number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--rb-primary);
  color: var(--rb-primary-foreground);
  font-size: 0.8125rem;
  font-weight: 700;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
  box-shadow: 0 0 0 3px var(--rb-background);
}

/* Continuous connecting line */
.docs-step__line {
  width: 2px;
  flex: 1;
  background: var(--rb-border);
  margin-top: 0.375rem;
}
.docs-step:last-child .docs-step__line { display: none; }

.docs-step__content {
  flex: 1;
  min-width: 0;
  padding-top: 0.125rem;
}

.docs-step__title {
  font-weight: 600;
  font-size: 1rem;
  line-height: 2rem;
  margin-bottom: 0.5rem;
}

.docs-step__body > *:first-child { margin-top: 0; }
.docs-step__body > *:last-child { margin-bottom: 0; }

/* ── Accordion (E63-083) ── */
div[data-accordion] {
  margin: 1.5rem 0;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  overflow: hidden;
}

.docs-accordion-item {
  border-bottom: 1px solid var(--rb-border);
}
.docs-accordion-item:last-child { border-bottom: none; }

.docs-accordion-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
  padding: 0.875rem 1rem;
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--rb-text);
  font-family: var(--rb-font-family);
  transition: background-color 0.15s ease;
}
.docs-accordion-header:hover { background: var(--rb-surface-hover); }

.docs-accordion-chevron {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  transition: transform var(--rb-duration-slow) var(--rb-ease-out-expo);
  color: var(--rb-text-muted);
}
.docs-accordion-item--open .docs-accordion-chevron {
  transform: rotate(90deg);
}

.docs-accordion-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--rb-duration-slow) var(--rb-ease-out-expo), padding var(--rb-duration-slow) var(--rb-ease-out-expo);
}
.docs-accordion-item--open .docs-accordion-body {
  max-height: 2000px;
  transition: max-height 0.5s var(--rb-ease-out-expo);
}

.docs-accordion-body__inner {
  padding: 0 1rem 1rem 2.75rem;
}
.docs-accordion-body__inner > *:first-child { margin-top: 0; }
.docs-accordion-body__inner > *:last-child { margin-bottom: 0; }

/* ── Card Grid (E63-084) ── */
div[data-card-grid] {
  margin: 1.5rem 0;
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
div[data-card-grid][data-columns="2"] { grid-template-columns: repeat(2, 1fr); }
div[data-card-grid][data-columns="3"] { grid-template-columns: repeat(3, 1fr); }
div[data-card-grid][data-columns="4"] { grid-template-columns: repeat(4, 1fr); }

.docs-card {
  display: block;
  padding: 1.25rem;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  background: var(--rb-background);
  text-decoration: none;
  color: var(--rb-text);
  transition: border-color var(--rb-duration-normal) var(--rb-ease-out-expo),
    box-shadow var(--rb-duration-normal) var(--rb-ease-out-expo),
    transform var(--rb-duration-normal) var(--rb-ease-out-expo);
}
a.docs-card:hover {
  border-color: var(--rb-primary);
  box-shadow: var(--rb-shadow-md);
  transform: translateY(-2px);
}
a.docs-card:hover .docs-card__icon {
  transform: scale(1.06);
}

.docs-card__icon {
  width: 2rem;
  height: 2rem;
  color: var(--rb-primary);
  margin-bottom: 0.75rem;
  padding: 0.375rem;
  background: color-mix(in srgb, var(--rb-primary) 8%, transparent);
  border-radius: calc(var(--rb-border-radius) * 0.75);
  transition: transform var(--rb-duration-slow) var(--rb-ease-spring);
}
.docs-card__icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.docs-card__title {
  font-weight: 600;
  font-size: 0.9375rem;
  margin-bottom: 0.375rem;
  line-height: 1.4;
}

.docs-card__description {
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  line-height: 1.55;
}

@media (max-width: 640px) {
  div[data-card-grid],
  div[data-card-grid][data-columns="2"],
  div[data-card-grid][data-columns="3"],
  div[data-card-grid][data-columns="4"] {
    grid-template-columns: 1fr;
  }
}

/* ── Code Group (E63-085) ──
   The group chrome mirrors the E152-042 code-block chrome (Shiki
   palette vars): the old rgba-white-on-black bar assumed a dark
   --rb-code-bg underneath, which light themes broke (white tab text
   on light gray). Inner .docs-code-block chrome (built by the shell's
   copyButtons) is stripped so blocks merge seamlessly into the group;
   the tab bar already names each language, so the inner label hides. */
div[data-code-group] {
  margin: 1.5rem 0;
  border: 1px solid var(--rb-code-block-border);
  border-radius: 0.625rem;
  overflow: hidden;
  background: var(--rb-code-block-bg);
}

.docs-code-group-bar {
  display: flex;
  gap: 0;
  border-bottom: 1px solid color-mix(in srgb, var(--rb-code-block-text) 8%, transparent);
  background: transparent;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.docs-code-group-tab {
  padding: 0.5rem 0.875rem;
  font-size: 0.8125rem;
  font-family: var(--rb-code-font-family);
  color: color-mix(in srgb, var(--rb-code-block-text) 55%, transparent);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-code-group-tab:hover { color: color-mix(in srgb, var(--rb-code-block-text) 85%, transparent); }
.docs-code-group-tab--active {
  color: var(--rb-code-block-text);
  border-bottom-color: var(--rb-primary);
}

.docs-code-group-panel { display: none; }
.docs-code-group-panel--active { display: block; }
.docs-code-group-panel .docs-code-block,
.docs-code-group-panel .docs-code-block:has(> .docs-code-lang) {
  margin: 0;
  background: transparent;
  border: none;
  border-radius: 0;
}
.docs-code-group-panel .docs-code-block > .docs-code-lang { display: none; }
.docs-code-group-panel pre {
  margin: 0;
  border: none;
  border-radius: 0;
}

/* ── Responsive adjustments ── */
@media (max-width: 768px) {
  .docs-step { gap: 0.75rem; }
  .docs-step__number {
    width: 1.75rem;
    height: 1.75rem;
    font-size: 0.75rem;
  }
}
/* ── E67-012: Section Landing Pages ──────────────────────── */

/* E152-010: display titles pick up the heading font override too */
.docs-section-landing__title {
  font-family: var(--rb-heading-font-family, var(--rb-font-family));
}

.docs-section-landing {
  width: 100%;
  max-width: 72rem;
  margin: 0 auto;
  padding: 0 2rem;
}

.docs-section-landing__hero {
  text-align: center;
  padding: 3rem 2rem 2.5rem;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--rb-primary) 3%, transparent) 0%,
    transparent 100%
  );
  border-radius: var(--rb-border-radius);
  margin-bottom: 2rem;
}

.docs-section-landing__title {
  font-size: 2.25rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--rb-text);
  margin-bottom: 0.75rem;
}

.docs-section-landing__description {
  font-size: 1.125rem;
  color: var(--rb-text-muted);
  max-width: 36rem;
  margin: 0 auto 1.5rem;
  line-height: 1.6;
}

.docs-section-landing__content {
  max-width: 48rem;
  margin: 0 auto;
}

@media (max-width: 768px) {
  .docs-section-landing__hero {
    padding: 2rem 1rem 1.5rem;
  }
  .docs-section-landing__title {
    font-size: 1.75rem;
  }
  .docs-section-landing__description {
    font-size: 1rem;
  }
}
/* ══════════════════════════════════════════════════════════════
   Animations & Transitions
   ══════════════════════════════════════════════════════════════ */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Micro-interaction keyframes (phase 2): copy-success pop + expand fade */
@keyframes rb-pop {
  0% { transform: scale(1); }
  40% { transform: scale(1.15); }
  100% { transform: scale(1); }
}
@keyframes rb-fade-in {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* E125-001 (D9): no entrance animation on article content — the delayed
   paint hurt LCP and read as a flash of faded text. The hero keeps its. */
@media (prefers-reduced-motion: no-preference) {
  .docs-section-landing__hero {
    animation: fadeInUp 0.6s var(--rb-ease-out-expo) both;
  }
}

/* E132-030 analogue: neutralize ALL animations/transitions for reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
/* ══════════════════════════════════════════════════════════════
   Cross-document view transitions — fast content cross-fade on
   navigation. Progressive enhancement: unsupported browsers keep
   instant full-page loads.
   ══════════════════════════════════════════════════════════════ */
@view-transition {
  navigation: auto;
}

/* The reduced-motion kill switch above uses universal selectors, which never
   match ::view-transition-* pseudos — the opt-out must be explicit. */
@media (prefers-reduced-motion: reduce) {
  @view-transition {
    navigation: none;
  }
}

/* Static chrome gets its own (visually identical) snapshot groups so only
   the content area reads as fading. */
.docs-header  { view-transition-name: rb-header; }
.docs-sidebar { view-transition-name: rb-sidebar; }
.docs-toc     { view-transition-name: rb-toc; }

/* Subtle and fast — the default 250ms cross-fade reads sluggish on docs. */
::view-transition-group(*),
::view-transition-old(*),
::view-transition-new(*) {
  animation-duration: 150ms;
}
/* ══════════════════════════════════════════════════════════════
   Print Styles
   ══════════════════════════════════════════════════════════════ */
@media print {
  /* Hide non-content elements */
  .docs-header,
  .docs-sidebar,
  .docs-toc,
  .docs-footer,
  .docs-prev-next,
  .docs-feedback,
  .docs-layout__overlay,
  .docs-search-overlay,
  .docs-header__mobile-toggle,
  .docs-code-copy-btn,
  .docs-toc__back-to-top,
  a.heading-anchor {
    display: none !important;
  }

  /* Full-width content */
  .docs-layout {
    display: block;
  }
  .docs-content {
    max-width: 100%;
    padding: 0;
  }

  /* Clean typography for print */
  body {
    font-size: 11pt;
    line-height: 1.5;
    color: #000;
    background: #fff;
  }

  .docs-content h1 { font-size: 22pt; }
  .docs-content h2 { font-size: 16pt; border-bottom-color: #ccc; }
  .docs-content h3 { font-size: 13pt; }

  /* Show link URLs in print */
  .docs-content a[href]::after {
    content: ' (' attr(href) ')';
    font-size: 0.85em;
    color: #666;
    font-weight: 400;
  }
  .docs-content a[href^="#"]::after,
  .docs-content a[href^="javascript"]::after {
    content: '';
  }

  /* Code blocks */
  .docs-content pre {
    border: 1px solid #ddd;
    page-break-inside: avoid;
    white-space: pre-wrap;
    word-wrap: break-word;
  }

  /* Tables */
  .docs-content table {
    page-break-inside: auto;
  }
  .docs-content tr {
    page-break-inside: avoid;
  }
  .docs-content thead {
    display: table-header-group;
  }

  /* Images */
  .docs-content img {
    max-width: 100% !important;
    page-break-inside: avoid;
    box-shadow: none;
    border: 1px solid #ddd;
  }

  /* Callouts */
  .docs-callout {
    page-break-inside: avoid;
  }

  /* Hide the page-actions menu in print */
  .docs-page-actions {
    display: none !important;
  }
}
/* ══════════════════════════════════════════════════════════════
   Page Actions — "Copy page" split-button + dropdown menu
   ══════════════════════════════════════════════════════════════ */
.docs-page-actions {
  position: relative;
  float: right;
  margin: 0 0 0.75rem 1rem;
  z-index: 20;
}
.docs-page-actions__bar {
  display: inline-flex;
  align-items: stretch;
  border: 1px solid var(--rb-btn-border, var(--rb-border));
  border-radius: var(--rb-border-radius);
  background: var(--rb-btn-bg, var(--rb-surface));
  overflow: hidden;
}
.docs-page-actions__primary {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.375rem 0.75rem;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--rb-btn-text, var(--rb-text));
  background: transparent;
  border: none;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.docs-page-actions__primary:hover { background: var(--rb-btn-hover-bg, var(--rb-surface)); color: var(--rb-btn-hover-text, var(--rb-btn-text, var(--rb-text))); }
.docs-page-actions__trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  padding: 0;
  color: var(--rb-btn-text, var(--rb-text-muted));
  background: transparent;
  border: none;
  border-left: 1px solid var(--rb-btn-border, var(--rb-border));
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.docs-page-actions__trigger:hover { background: var(--rb-btn-hover-bg, var(--rb-surface)); color: var(--rb-btn-hover-text, var(--rb-text)); }
.docs-page-actions__trigger svg { transition: transform 0.2s ease; }
.docs-page-actions--open .docs-page-actions__trigger svg { transform: rotate(180deg); }

.docs-page-actions__menu {
  position: absolute;
  top: calc(100% + 0.375rem);
  right: 0;
  min-width: 17rem;
  padding: 0.375rem;
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  z-index: 40;
}
.docs-page-actions__menu[hidden] { display: none; }
.docs-page-actions__item {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  width: 100%;
  padding: 0.5rem 0.625rem;
  font: inherit;
  text-align: left;
  color: var(--rb-text);
  background: transparent;
  border: none;
  border-radius: calc(var(--rb-border-radius) - 2px);
  cursor: pointer;
  text-decoration: none;
  transition: background-color 0.12s ease;
}
.docs-page-actions__item:hover { background: var(--rb-surface); }
.docs-page-actions__item svg { flex-shrink: 0; margin-top: 0.125rem; color: var(--rb-text-muted); }
.docs-page-actions__item-text { display: flex; flex-direction: column; gap: 0.05rem; }
.docs-page-actions__item-text strong { font-size: 0.8125rem; font-weight: 600; color: var(--rb-text); }
.docs-page-actions__item-text small { font-size: 0.75rem; color: var(--rb-text-muted); }
.docs-page-actions__item--copied .docs-page-actions__item-text strong { color: var(--rb-accent); }
.docs-page__header {
  position: relative;
}
/* ══════════════════════════════════════════════════════════════
   E66-011: Split API Reference Layout (layout id "stripe" until 2026-07-18)
   Two-column layout with description left and sticky code right.
   Only active when .docs-split-layout is present on the page.
   ══════════════════════════════════════════════════════════════ */

/* Two-column grid */
.docs-split-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  align-items: start;
  margin-top: 1.5rem;
}

/* Left panel: description, params, responses */
.docs-split-description {
  min-width: 0;
}

/* Right panel: sticky code examples */
.docs-split-code {
  position: sticky;
  top: calc(var(--rb-header-offset) + 1rem);
  max-height: calc(100vh - var(--rb-header-offset) - 1.5rem);
  overflow-y: auto;
  background: var(--rb-code-background);
  border-radius: var(--rb-border-radius);
  border: 1px solid var(--rb-border);
}

/* Custom scrollbar for code panel */
.docs-split-code::-webkit-scrollbar {
  width: 4px;
}
.docs-split-code::-webkit-scrollbar-track {
  background: transparent;
}
.docs-split-code::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--rb-text-muted) 30%, transparent);
  border-radius: 2px;
}

/* Language selector bar */
.docs-split-lang-bar {
  display: flex;
  gap: 0;
  border-bottom: 1px solid color-mix(in srgb, var(--rb-border) 60%, transparent);
  background: color-mix(in srgb, var(--rb-surface) 80%, var(--rb-code-background));
  position: sticky;
  top: 0;
  z-index: 5;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.docs-split-lang-tab {
  padding: 0.5rem 0.875rem;
  font-size: 0.75rem;
  font-weight: 500;
  font-family: var(--rb-font-family);
  color: var(--rb-text-muted);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color var(--rb-duration-fast) var(--rb-ease-out-expo), border-color var(--rb-duration-fast) var(--rb-ease-out-expo);
}
.docs-split-lang-tab:hover {
  color: var(--rb-text);
}
.docs-split-lang-tab--active {
  color: var(--rb-primary);
  border-bottom-color: var(--rb-primary);
}

/* Code panels */
.docs-split-code-panels {
  padding: 0;
}

.docs-split-code-panel {
  display: none;
}
.docs-split-code-panel--active {
  display: block;
}

.docs-split-code-panel pre {
  margin: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  font-size: 0.8125rem;
  line-height: 1.6;
}
.docs-split-code-panel pre code {
  padding: 1rem;
  display: block;
}

.docs-split-code-panel .docs-code-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.375rem 0.75rem;
  font-size: 0.6875rem;
  color: var(--rb-text-muted);
  border-bottom: 1px solid color-mix(in srgb, var(--rb-border) 40%, transparent);
}

/* Response example section at bottom of code panel */
.docs-split-response-example {
  border-top: 1px solid color-mix(in srgb, var(--rb-border) 60%, transparent);
}
.docs-split-response-header {
  padding: 0.5rem 0.875rem;
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--rb-text-muted);
  background: color-mix(in srgb, var(--rb-surface) 80%, var(--rb-code-background));
  border-bottom: 1px solid color-mix(in srgb, var(--rb-border) 40%, transparent);
}
.docs-split-response-schema {
  padding: 0.75rem;
}
.docs-split-response-schema .docs-status-code {
  font-size: 0.75rem;
  margin-bottom: 0.5rem;
  display: inline-block;
}
.docs-split-response-schema .docs-param-list--dark {
  background: transparent;
}
.docs-split-response-schema .docs-param-list--dark .docs-param {
  border-color: color-mix(in srgb, var(--rb-border) 40%, transparent);
  padding: 0.375rem 0;
}
.docs-split-response-schema .docs-param-list--dark .docs-param__name {
  color: var(--rb-code-text);
  font-size: 0.75rem;
}
.docs-split-response-schema .docs-param-list--dark .docs-param__type {
  font-size: 0.6875rem;
}

/* When split layout is active, hide the TOC since code panel replaces it */
.docs-split-layout ~ .docs-toc {
  display: none;
}

/* Wider content area when using split layout */
body[data-api-layout="split"] .docs-content {
  max-width: none;
}
body[data-api-layout="split"] .docs-content article {
  max-width: none;
}

/* React API reference pages: let the two-column endpoint reader (content left,
   sticky code panel right) fill the middle column instead of the prose
   max-width. Whether the layout itself is capped (centered) or spans the
   viewport (full) follows contentWidthMode — see the fullBleed block below. */
body[data-page-type="apiReference"][data-react-api="true"] .docs-content {
  max-width: none;
  margin-inline: 0;
  /* The React reader brings its own inner padding (px-6/xl:px-10) — drop most of
     the prose padding so the code column reaches close to the viewport edge. */
  padding-inline: 0.5rem;
}
body[data-page-type="apiReference"][data-react-api="true"] .docs-content article {
  max-width: none;
}
body[data-page-type="apiReference"][data-react-api="true"] .docs-toc {
  display: none;
}
/* The reader island is client:only — reserve height so feedback/prev-next
   don't render high up and leap down when the island mounts (CLS). */
.rb-endpoint-root {
  min-height: 50vh;
}
/* E153-036: header strip of React API pages (breadcrumb + floating page actions)
   aligns with the reader's inner padding (docs-content 0.5rem + island px-6/xl:px-10)
   instead of sitting at the near-flush 0.5rem base. */
body[data-page-type="apiReference"][data-react-api="true"] .docs-breadcrumb,
body[data-page-type="apiReference"][data-react-api="true"] .docs-eyebrow,
body[data-page-type="apiReference"][data-react-api="true"] .docs-prev-next,
body[data-page-type="apiReference"][data-react-api="true"] .docs-feedback {
  margin-inline: 1.5rem;
}
/* Direct child of the body wrapper = the layout's floating instance only
   (single-endpoint pages); the inline instance inside the stacked-page title
   row keeps its own margins. */
body[data-page-type="apiReference"][data-react-api="true"] .docs-content__body > .docs-page-actions {
  margin-right: 1.5rem;
}
@media (min-width: 1280px) {
  body[data-page-type="apiReference"][data-react-api="true"] .docs-breadcrumb,
  body[data-page-type="apiReference"][data-react-api="true"] .docs-eyebrow,
  body[data-page-type="apiReference"][data-react-api="true"] .docs-prev-next,
  body[data-page-type="apiReference"][data-react-api="true"] .docs-feedback {
    margin-inline: 2.5rem;
  }
  body[data-page-type="apiReference"][data-react-api="true"] .docs-content__body > .docs-page-actions {
    margin-right: 2.5rem;
  }
}
/* E153-036: stacked-page header (perFolder/singlePage) — same inset as the reader's
   inner padding, and on xl the reader's two-column grid (EndpointReaderView Row:
   minmax(0,1fr) / minmax(380px,min(40%,520px)), 4rem gap) so the endpoint overview
   sits over the content column, flush with the code column. Stacks to full width
   below xl. */
.docs-page--api-reference .docs-api-reference-head {
  padding: 0 1.5rem;
}
/* E158 (Denny): the copy-page split button sits inline next to the page title on
   stacked pages (the page suppresses the layout's floating instance) — the float
   used to squeeze this grid (grid = BFC root) so the overview never aligned with
   the reader's code column. */
.docs-api-reference-head__title-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.docs-api-reference-head__title-row .docs-page-actions {
  float: none;
  /* Right edge of the intro column, vertically centered on the headline. */
  margin: 0 0 0 auto;
  flex-shrink: 0;
}
.docs-page--api-reference .docs-deprecation-banner {
  margin-inline: 1.5rem;
}
@media (min-width: 1280px) {
  .docs-page--api-reference .docs-api-reference-head {
    padding: 0 2.5rem;
    display: grid;
    /* Muss dem Row-Template des Readers folgen (Row.tsx) — sonst fluchtet der
       Endpoint-Overview nicht mehr mit der Code-Spalte darunter. */
    grid-template-columns: minmax(0, 1fr) minmax(380px, min(40%, 520px));
    column-gap: 4rem;
    align-items: start;
  }
  .docs-page--api-reference .docs-deprecation-banner {
    margin-inline: 2.5rem;
  }
}
.docs-api-reference-head__overview {
  margin-top: 0.5rem;
  min-width: 0;
}

/* Responsive: stack on screens narrower than 1024px */
@media (max-width: 1024px) {
  .docs-split-columns {
    grid-template-columns: 1fr;
  }
  .docs-split-code {
    position: static;
    max-height: none;
  }
}

/* Responsive: tighter spacing on mobile */
@media (max-width: 768px) {
  .docs-split-columns {
    gap: 1rem;
  }
}
@media (min-width: 1281px) {
  body[data-page-type="apiReference"][data-react-api="true"] .docs-layout {
    grid-template-columns: var(--rb-sidebar-width) minmax(0, 1fr);
  }
}

/* ══════════════════════════════════════════════════════════════
   Theme Overrides (E154 — visual per-surface editor)
   ══════════════════════════════════════════════════════════════ */
:root {
  --rb-header-opacity: 100%;
  --rb-header-border-width: 0px;
  --rb-header-radius: 16px;
  --rb-header-margin-x: 8px;
  --rb-header-margin-top: 7px;
  --rb-header-shadow-opacity: 25%;
  --rb-sidebar-radius: 16px;
  --rb-sidebar-margin: 8px;
  --rb-sidebar-shadow-opacity: 25%;
  --rb-sidebar-width: 270px;
}
html[data-theme-mode="light"] {
  --rb-header-bg: #1d2b66;
  --rb-header-text: #ffffff;
  --rb-header-tab-text: #ffffff;
  --rb-header-tab-hover-text: #ffffff;
  --rb-header-tab-hover-bg: #fc771c;
  --rb-header-tab-active-text: #ffffff;
  --rb-header-tab-active-bg: #fc771c;
  --rb-sidebar-bg: #1d2b66;
  --rb-sidebar-text: #ffffff;
}
@media not all and (prefers-color-scheme: dark) {
  html:not([data-theme-mode="dark"]) {
    --rb-header-bg: #1d2b66;
    --rb-header-text: #ffffff;
    --rb-header-tab-text: #ffffff;
    --rb-header-tab-hover-text: #ffffff;
    --rb-header-tab-hover-bg: #fc771c;
    --rb-header-tab-active-text: #ffffff;
    --rb-header-tab-active-bg: #fc771c;
    --rb-sidebar-bg: #1d2b66;
    --rb-sidebar-text: #ffffff;
  }
}
