/* 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-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 - 3.5rem);
}

/* 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;
  top: 0;
  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): horizontal 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 3.5rem sticky offsets below). */
  margin: 0 var(--rb-header-margin-x, 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);
}

/* 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; }
  .docs-header__section-tabs { gap: 0; }
  .docs-header__section-tab { font-size: 0.75rem; padding: 0.25rem 0.5rem; }
}
.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(3.5rem + var(--rb-sidebar-margin, 0px));
  height: calc(100vh - 3.5rem - 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;
}

/* 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));
}

/* 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));
}

/* 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);
}

.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;
  text-align: center;
}

.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;
}

/* 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: 3.5rem;
    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;
  }
  .docs-sidebar--open {
    transform: translateX(0);
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
  }
  /* 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-homepage__cta, .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-homepage__cta, .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: 3.5rem;
  height: calc(100vh - 3.5rem);
  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 {
  display: block;
  color: var(--rb-text-muted);
  padding: 0.25rem 0 0.25rem 0.875rem;
  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),
    transform 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: 1.625rem; }
.docs-toc__item--level-4 .docs-toc__link { padding-left: 2.375rem; }
.docs-toc__link:hover {
  color: var(--rb-text);
}

/* Active TOC link with colored left border; nudges right as the spy moves */
.docs-toc__link--active {
  color: var(--rb-primary);
  border-left-color: var(--rb-primary);
  font-weight: 500;
  transform: translateX(2px);
}

/* 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;
  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: 3.5rem;
  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;
}

/* ── 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: 4.5rem; /* 3.5rem 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;
  }
}
/* ══════════════════════════════════════════════════════════════
   Homepage — Landing page layout
   ══════════════════════════════════════════════════════════════ */
.docs-homepage {
  width: 100%;
  max-width: 72rem;
  margin: 0 auto;
  padding: 0 2rem;
}

/* Open hero composition — no boxed gradient card; a soft radial tint of the
   theme primary bleeds from the top edge instead (reads as light, not as a
   placeholder container). */
.docs-homepage__hero {
  position: relative;
  text-align: center;
  padding: 5.5rem 2rem 4rem;
  margin-bottom: 3rem;
}
.docs-homepage__hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    34rem 14rem at 50% -6rem,
    color-mix(in srgb, var(--rb-primary) 5%, transparent),
    transparent 62%
  );
  pointer-events: none;
}

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

.docs-homepage__title {
  font-size: clamp(2.5rem, 5vw, 3.25rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1.08;
  text-wrap: balance;
  color: var(--rb-text);
  margin-bottom: 1.25rem;
}

.docs-homepage__description {
  font-size: 1.1875rem;
  color: var(--rb-text-muted);
  max-width: 38rem;
  margin: 0 auto 2.25rem;
  line-height: 1.55;
  text-wrap: balance;
}

.docs-homepage__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.docs-homepage__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 1.5rem;
  border-radius: var(--rb-border-radius);
  font-weight: 500;
  font-size: 0.9375rem;
  text-decoration: none;
  transition: opacity var(--rb-duration-normal) var(--rb-ease-out-expo),
    transform var(--rb-duration-normal) var(--rb-ease-out-expo),
    box-shadow var(--rb-duration-normal) var(--rb-ease-out-expo),
    background-color var(--rb-duration-normal) var(--rb-ease-out-expo),
    border-color var(--rb-duration-normal) var(--rb-ease-out-expo);
}
.docs-homepage__cta:active {
  transform: translateY(0) scale(0.98);
}
.docs-homepage__cta--primary {
  background: var(--rb-primary);
  color: var(--rb-primary-foreground);
}
.docs-homepage__cta--primary:hover {
  opacity: 0.9;
  transform: translateY(-1px);
  box-shadow: var(--rb-shadow-md);
}
.docs-homepage__cta--secondary {
  background: var(--rb-btn-bg, transparent);
  color: var(--rb-btn-text, var(--rb-text));
  border: 1px solid var(--rb-btn-border, var(--rb-border));
}
.docs-homepage__cta--secondary:hover {
  border-color: var(--rb-btn-hover-border, var(--rb-text-muted));
  background: var(--rb-btn-hover-bg, var(--rb-surface));
  color: var(--rb-btn-hover-text, var(--rb-btn-text, var(--rb-text)));
}

/* Homepage feature cards — larger than standard card-grid */
.docs-homepage__cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.25rem;
  margin-bottom: 3rem;
}

.docs-homepage__cards .docs-card {
  padding: 1.75rem;
  border-radius: calc(var(--rb-border-radius) * 1.5);
  box-shadow: var(--rb-shadow-sm);
}
.docs-homepage__cards .docs-card__icon {
  width: 2.75rem;
  height: 2.75rem;
  padding: 0.625rem;
  margin-bottom: 1rem;
  border: 1px solid color-mix(in srgb, var(--rb-primary) 14%, transparent);
}
.docs-homepage__cards .docs-card__title {
  font-size: 1.0625rem;
  margin-bottom: 0.5rem;
}
.docs-homepage__cards .docs-card__description {
  font-size: 0.875rem;
  line-height: 1.6;
}

@media (max-width: 768px) {
  .docs-homepage__hero {
    padding: 2.5rem 1rem 2rem;
  }
  .docs-homepage__title {
    font-size: 2rem;
  }
  .docs-homepage__description {
    font-size: 1.0625rem;
  }
  .docs-homepage__cards {
    grid-template-columns: 1fr;
  }
  .docs-homepage__links-grid {
    grid-template-columns: 1fr;
  }
}

/* E66-013: Quick Links block */
.docs-homepage__links {
  margin-bottom: 3rem;
}
.docs-homepage__links-title {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--rb-text);
  margin-bottom: 1.25rem;
}
.docs-homepage__links-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 1rem;
}
.docs-homepage__link {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 1rem 1.25rem;
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-border-radius);
  text-decoration: none;
  color: var(--rb-text);
  transition: all 0.2s ease;
}
.docs-homepage__link:hover {
  border-color: var(--rb-primary);
  box-shadow: var(--rb-shadow-sm);
  transform: translateY(-1px);
}
.docs-homepage__link-icon {
  font-size: 1.25rem;
  margin-bottom: 0.25rem;
}
.docs-homepage__link-title {
  font-weight: 500;
  font-size: 0.9375rem;
}
.docs-homepage__link-desc {
  font-size: 0.8125rem;
  color: var(--rb-text-muted);
  line-height: 1.5;
}

/* E66-013: Code Example block */
.docs-homepage__code-example {
  margin-bottom: 3rem;
}
.docs-homepage__code-title {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--rb-text);
  margin-bottom: 1rem;
}
.docs-homepage__code-block {
  background: var(--rb-code-block-bg);
  color: var(--rb-code-block-text);
  border-radius: 0.625rem;
  padding: 1.5rem;
  font-family: var(--rb-font-code);
  font-size: 0.875rem;
  line-height: 1.7;
  overflow-x: auto;
  margin: 0;
}
.docs-homepage__code-block code {
  background: none;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  color: inherit;
}

/* E66-013: CTA Section block */
.docs-homepage__cta-section {
  text-align: center;
  padding: 3rem 2rem;
  border-radius: var(--rb-border-radius);
  margin-bottom: 3rem;
}
.docs-homepage__cta-section--default {
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
}
.docs-homepage__cta-section--accent {
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--rb-primary) 8%, transparent) 0%,
    color-mix(in srgb, var(--rb-accent, var(--rb-primary)) 6%, transparent) 100%
  );
  border: 1px solid color-mix(in srgb, var(--rb-primary) 15%, transparent);
}
.docs-homepage__cta-section-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--rb-text);
  margin-bottom: 0.75rem;
}
.docs-homepage__cta-section-desc {
  font-size: 1.0625rem;
  color: var(--rb-text-muted);
  max-width: 32rem;
  margin: 0 auto 1.5rem;
  line-height: 1.6;
}

/* ── E67-012: Section Landing Pages ──────────────────────── */

.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. Hero/cards keep theirs. */
@media (prefers-reduced-motion: no-preference) {
  .docs-homepage__hero {
    animation: fadeInUp 0.6s var(--rb-ease-out-expo) both;
  }

  .docs-section-landing__hero {
    animation: fadeInUp 0.6s var(--rb-ease-out-expo) both;
  }

  /* fill-mode backwards (not both): a forwards fill would pin `transform`
     after the entrance and permanently override the hover lift. */
  .docs-homepage__cards .docs-card {
    animation: fadeInUp 0.5s var(--rb-ease-out-expo) backwards;
  }
  .docs-homepage__cards .docs-card:nth-child(2) { animation-delay: 0.05s; }
  .docs-homepage__cards .docs-card:nth-child(3) { animation-delay: 0.1s; }
  .docs-homepage__cards .docs-card:nth-child(4) { animation-delay: 0.15s; }
  .docs-homepage__cards .docs-card:nth-child(5) { animation-delay: 0.2s; }
  .docs-homepage__cards .docs-card:nth-child(6) { animation-delay: 0.25s; }
}

/* 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: 4.5rem;
  max-height: calc(100vh - 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:
   1fr / minmax(380px,1fr), 4rem gap) so the endpoint overview sits half-width over
   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;
    grid-template-columns: 1fr minmax(380px, 1fr);
    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-shadow-opacity: 25%;
  --rb-sidebar-radius: 16px;
  --rb-sidebar-margin: 8px;
  --rb-sidebar-shadow-opacity: 25%;
}
html[data-theme-mode="light"] {
  --rb-header-bg: #1d2b66;
  --rb-header-text: #ffffff;
  --rb-header-tab-text: #ffffff;
  --rb-header-tab-hover-text: #000000;
  --rb-header-tab-hover-bg: #fc771c;
  --rb-header-tab-active-text: #000000;
  --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: #000000;
    --rb-header-tab-hover-bg: #fc771c;
    --rb-header-tab-active-text: #000000;
    --rb-header-tab-active-bg: #fc771c;
    --rb-sidebar-bg: #1d2b66;
    --rb-sidebar-text: #ffffff;
  }
}
