/* Revdoku docs-site layout: navigation, page, headings, search and components. */
:root {
  --rd-primary: #4f46e5;
  --rd-bg: #ffffff;
  --rd-fg: #111827;
  --rd-muted: #6b7280;
  --rd-border: #e5e7eb;
  --rd-surface: #f9fafb;
  --rd-code: #f3f4f6;
  --rd-hl-comment: #6b7280; --rd-hl-string: #047857; --rd-hl-constant: #b45309; --rd-hl-keyword: #7c3aed; --rd-hl-name: #1d4ed8;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --rd-bg: #0b0f19; --rd-fg: #e5e7eb; --rd-muted: #9ca3af; --rd-border: #1f2937; --rd-surface: #111827; --rd-code: #1f2937;
    --rd-hl-comment: #9ca3af; --rd-hl-string: #6ee7b7; --rd-hl-constant: #fbbf24; --rd-hl-keyword: #c4b5fd; --rd-hl-name: #93c5fd;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --rd-bg: #0b0f19; --rd-fg: #e5e7eb; --rd-muted: #9ca3af; --rd-border: #1f2937; --rd-surface: #111827; --rd-code: #1f2937;
  --rd-hl-comment: #9ca3af; --rd-hl-string: #6ee7b7; --rd-hl-constant: #fbbf24; --rd-hl-keyword: #c4b5fd; --rd-hl-name: #93c5fd;
  color-scheme: dark;
}
* { box-sizing: border-box; }
/* Mintlify's images for the light and the dark theme (class="block dark:hidden" and class="hidden dark:block"). Never in code:
   the highlighter's scope classes include block and hidden (a brace is "punctuation section block begin"). */
.rd-article .hidden:not(pre *) { display: none; }
.rd-article .block:not(pre *) { display: block; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .rd-article .dark\:hidden:not(pre *) { display: none; }
  :root:not([data-theme="light"]) .rd-article .dark\:block:not(pre *) { display: block; }
}
:root[data-theme="dark"] .rd-article .dark\:hidden:not(pre *) { display: none; }
:root[data-theme="dark"] .rd-article .dark\:block:not(pre *) { display: block; }
/* The centered text of a Mintlify landing page (className text-center, Publications::DocsMarkdown::KEPT_CLASSES). */
.rd-article .text-center:not(pre *) { text-align: center; }
body.rd-docs { margin: 0; background: var(--rd-bg); color: var(--rd-fg); font: 16px/1.65 ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; }
a { color: var(--rd-primary); }
/* The header is 57px high on wide screens and 53px on phones: the sticky page list, contents and notebook tabs start below it. */
.rd-header { position: sticky; top: 0; z-index: 10; display: flex; gap: 12px; align-items: center; min-height: 57px; padding: 10px 16px; border-bottom: 1px solid var(--rd-border); background: var(--rd-bg); }
/* The header and the notebook tabs start where the page list starts, on every screen width (user report 2026-11-11). */
@media (min-width: 761px) {
  .rd-header, nav.rd-tabs { padding-left: max(16px, calc((100% - 1400px) / 2 + 16px)); padding-right: max(16px, calc((100% - 1400px) / 2 + 16px)); }
  .rd-layout-sidebar .rd-nav, .rd-layout-notebook .rd-nav { margin-left: -8px; }
}
.rd-brand { font-weight: 700; color: var(--rd-fg); text-decoration: none; white-space: nowrap; }
.rd-brand img { height: 24px; width: auto; margin-right: 8px; vertical-align: middle; }
.rd-brand .rd-logo { margin-right: 0; }
/* docs.json logo.dark shows in the dark theme. */
.rd-brand .rd-logo-dark { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .rd-brand .rd-logo-light { display: none; }
  :root:not([data-theme="light"]) .rd-brand .rd-logo-dark { display: inline; }
}
:root[data-theme="dark"] .rd-brand .rd-logo-light { display: none; }
:root[data-theme="dark"] .rd-brand .rd-logo-dark { display: inline; }
.rd-search { flex: 1; max-width: 420px; margin-left: auto; padding: 6px 10px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); color: var(--rd-fg); font: inherit; font-size: 14px; }
/* The header buttons: Ask and the language menu, and the theme switch of the minimal layout. Phones show their icons only. */
.rd-icon { display: block; flex: none; width: 16px; height: 16px; }
.rd-theme { display: inline-flex; align-items: center; justify-content: center; width: 34px; min-height: 34px; padding: 0; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); color: var(--rd-fg); cursor: pointer; }
/* The header (user decision 2026-11-09, as on Mintlify): the language menu next to the logo; Search and the theme switch as round
   icons, Ask as a small labeled button. The spacer keeps them at the right. */
.rd-spacer { flex: 1; }
.rd-hbtn { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: none; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 999px; background: var(--rd-surface); color: var(--rd-muted); font: inherit; font-size: 14px; cursor: pointer; white-space: nowrap; }
.rd-hbtn:hover, .rd-hbtn[aria-expanded="true"] { color: var(--rd-fg); background: color-mix(in srgb, var(--rd-fg) 8%, var(--rd-surface)); }
.rd-hbtn .rd-icon { width: 17px; height: 17px; }
/* Pages published before 2026-11-09 have the search field in place of the icon: docs-v1.js puts the icon there. */
.rd-header > .rd-search-button { margin-left: auto; }
/* The theme switch at the bottom of the page list is for phones only. */
.rd-nav-foot { display: none; }
/* docs.json (Mintlify): the navbar links and button, and the banner above the header. */
.rd-links { display: flex; gap: 14px; min-width: 0; overflow-x: auto; scrollbar-width: none; font-size: 14px; white-space: nowrap; }
.rd-links a { color: var(--rd-muted); text-decoration: none; }
.rd-links a:hover { color: var(--rd-fg); }
.rd-button { display: inline-flex; align-items: center; min-height: 34px; padding: 0 12px; border-radius: 8px; background: var(--rd-primary); color: #fff; font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.rd-banner { display: flex; gap: 12px; align-items: center; justify-content: center; padding: 8px 16px; background: var(--rd-primary); color: #fff; font-size: 14px; text-align: center; }
.rd-banner a { color: inherit; }
.rd-banner p { margin: 0; }
.rd-banner-warning { background: #b45309; }
.rd-banner-critical { background: #b91c1c; }
.rd-banner-close { border: 0; background: none; color: inherit; font-size: 18px; line-height: 1; cursor: pointer; }
:root[data-banner="closed"] .rd-banner { display: none; }
.rd-layout { display: grid; grid-template-columns: 16rem minmax(0, 1fr) 14rem; gap: 32px; max-width: 1400px; margin: 0 auto; padding: 0 16px; }
.rd-nav, .rd-toc { position: sticky; top: 57px; align-self: start; max-height: calc(100vh - 57px); overflow-y: auto; padding: 24px 0; font-size: 14px; }
.rd-nav ul, .rd-toc ul { list-style: none; margin: 0 0 16px; padding: 0; }
.rd-nav a, .rd-toc a { display: block; padding: 4px 8px; border-radius: 6px; color: var(--rd-muted); text-decoration: none; }
.rd-nav a { display: flex; align-items: center; gap: 8px; }
/* The method of an endpoint page (front matter openapi: GET /plants), as on Mintlify. */
.rd-method { flex: none; min-width: 38px; padding: 1px 0; border-radius: 4px; font: 700 10px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; text-align: center; background: color-mix(in srgb, #2563eb 14%, transparent); color: #1d4ed8; }
.rd-method-get { background: color-mix(in srgb, #16a34a 14%, transparent); color: #15803d; }
.rd-method-delete { background: color-mix(in srgb, #dc2626 14%, transparent); color: #b91c1c; }
.rd-method-put, .rd-method-patch { background: color-mix(in srgb, #d97706 16%, transparent); color: #b45309; }
:root[data-theme="dark"] .rd-method { filter: brightness(1.6); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .rd-method { filter: brightness(1.6); } }
.rd-nav a:hover, .rd-toc a:hover { color: var(--rd-fg); }
.rd-nav a[aria-current="page"] { background: color-mix(in srgb, var(--rd-primary) 9%, transparent); color: var(--rd-primary); font-weight: 600; }
/* The theme switch at the bottom of the page list stays in view while the list scrolls. */
.rd-nav-foot { position: sticky; bottom: 0; padding: 12px 8px 0; border-top: 1px solid var(--rd-border); background: var(--rd-bg); }
.rd-nav-group { margin: 16px 8px 4px; font-size: 13px; font-weight: 600; color: var(--rd-fg); }
/* On this page: an icon before the title, and the section in view in the site color (docs-v1.js). */
.rd-toc-title { display: flex; align-items: center; gap: 8px; }
.rd-toc a { position: relative; padding-left: 18px; }
.rd-toc .rd-toc-3 a { padding-left: 30px; }
.rd-toc a.rd-toc-active, .rd-toc-inline a.rd-toc-active { color: var(--rd-primary); font-weight: 500; }
.rd-toc a.rd-toc-active::before { content: ""; position: absolute; left: 6px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--rd-primary); }
.rd-toc-3 a { padding-left: 20px; }
.rd-main { min-width: 0; padding: 24px 0 64px; }
.rd-article h1 { font-size: 2.5rem; line-height: 1.15; letter-spacing: -.02em; margin: 0 0 16px; }
.rd-article .rd-description { color: var(--rd-muted); font-size: 1.25rem; line-height: 1.5; margin: -6px 0 28px; }
.rd-article [id] { scroll-margin-top: 72px; }
/* The page's navigation group above its title, and the title with the page menu in one row (docs-v1.js). */
.rd-eyebrow { margin: 0 0 8px; color: var(--rd-primary); font-size: 14px; font-weight: 600; }
.rd-title-row { display: flex; align-items: flex-start; gap: 16px; margin: 0 0 16px; }
.rd-title-row h1 { flex: 1; min-width: 0; margin: 0; }
.rd-title-row .rd-page-actions { float: none; flex: none; margin: 8px 0 0; }
.rd-article h2 { margin-top: 40px; padding-top: 8px; }
.rd-article .anchor { display: none; }
.rd-article img { max-width: 100%; }
.rd-article table { width: 100%; border-collapse: collapse; font-size: 14px; display: block; overflow-x: auto; }
.rd-article th, .rd-article td { border: 1px solid var(--rd-border); padding: 6px 10px; text-align: left; vertical-align: top; }
.rd-article code { background: var(--rd-code); padding: 1px 5px; border-radius: 4px; font-size: .9em; }
.rd-article pre { position: relative; background: var(--rd-code); padding: 14px 16px; border-radius: 8px; overflow-x: auto; }
.rd-article pre code { padding: 0; background: none; }
/* A code block's frame (docs-v1.js): its title, and the copy button, which stays in the corner when the code scrolls. */
.rd-code { position: relative; margin: 16px 0; }
.rd-code > pre { margin: 0; }
.rd-code-group > .rd-code { margin: 0; }
.rd-code-title { padding: 8px 44px 8px 14px; border-radius: 8px 8px 0 0; border-bottom: 1px solid var(--rd-border); background: var(--rd-code); color: var(--rd-muted); font: 13px/18px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rd-code-title + pre { border-top-left-radius: 0; border-top-right-radius: 0; }
.rd-copy { position: absolute; top: 6px; right: 6px; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: 1px solid var(--rd-border); border-radius: 6px; background: var(--rd-bg); color: var(--rd-muted); cursor: pointer; opacity: .8; }
.rd-code-title ~ .rd-copy { top: 3px; }
.rd-copy:hover, .rd-copy:focus-visible { opacity: 1; color: var(--rd-fg); }
/* Callouts: rounded boxes with a soft background, as on Mintlify. */
.rd-callout, .markdown-alert { margin: 16px 0; padding: 12px 16px; border: 1px solid color-mix(in srgb, var(--rd-primary) 30%, var(--rd-border)); border-radius: 12px; background: color-mix(in srgb, var(--rd-primary) 6%, var(--rd-bg)); }
.rd-callout-warning, .rd-callout-danger, .markdown-alert-warning, .markdown-alert-caution { border-color: color-mix(in srgb, #d97706 40%, var(--rd-border)); background: color-mix(in srgb, #d97706 8%, var(--rd-bg)); }
.rd-callout-check, .rd-callout-tip, .markdown-alert-tip { border-color: color-mix(in srgb, #059669 40%, var(--rd-border)); background: color-mix(in srgb, #059669 8%, var(--rd-bg)); }
.rd-callout > :last-child, .markdown-alert > :last-child { margin-bottom: 0; }
.markdown-alert-title { margin: 0 0 4px; font-weight: 600; }
.rd-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin: 16px 0; }
.rd-card { border: 1px solid var(--rd-border); border-radius: 10px; padding: 14px 16px; }
.rd-card > a { text-decoration: none; }
.rd-steps { padding-left: 24px; }
.rd-step { margin: 12px 0; }
.rd-accordion { border: 1px solid var(--rd-border); border-radius: 8px; padding: 8px 14px; margin: 10px 0; }
.rd-accordion summary { cursor: pointer; font-weight: 600; }
.rd-field { border-top: 1px solid var(--rd-border); padding: 10px 0; }
.rd-field-type { color: var(--rd-muted); font-size: 13px; }
.rd-field-required { color: #dc2626; font-size: 12px; margin-left: 6px; }
.rd-tab-bar { display: flex; gap: 4px; margin-bottom: 8px; border-bottom: 1px solid var(--rd-border); }
.rd-tab-button { border: 0; background: none; color: var(--rd-muted); padding: 6px 10px; cursor: pointer; font: inherit; font-size: 14px; }
.rd-tab-button[aria-selected="true"] { color: var(--rd-primary); border-bottom: 2px solid var(--rd-primary); }
.rd-agents { margin-top: 24px; font-size: 12px; color: var(--rd-muted, #6b7280); }
.rd-agents a { color: inherit; text-decoration-color: var(--rd-border); text-underline-offset: 2px; }
.rd-agents a:hover { color: var(--rd-fg); }
.rd-console { min-height: 60vh; margin: 16px 0; }
/* "Was this page helpful?" above the previous and next links. */
.rd-feedback { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 32px; font-size: 14px; color: var(--rd-muted); }
.rd-feedback-button { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); color: var(--rd-muted); cursor: pointer; }
.rd-feedback-button:hover { color: var(--rd-fg); }
.rd-feedback-form { display: grid; gap: 8px; width: 100%; max-width: 480px; }
.rd-feedback-form .rd-ask-more { justify-self: start; margin-top: 0; }
.rd-feedback-check:empty, .rd-feedback-form .rd-ask-note:empty { display: none; }
.rd-pager { display: flex; justify-content: space-between; gap: 16px; margin-top: 40px; padding-top: 16px; border-top: 1px solid var(--rd-border); font-size: 14px; }
.rd-pager a { text-decoration: none; }
.rd-pager-next { margin-left: auto; }
/* docs.json footer (Mintlify): link columns and social links. */
.rd-site-footer { display: flex; flex-wrap: wrap; gap: 16px 48px; margin-top: 32px; padding-top: 16px; border-top: 1px solid var(--rd-border); font-size: 14px; }
.rd-site-footer ul { list-style: none; margin: 0; padding: 0; }
.rd-site-footer .rd-nav-group { margin: 0 0 6px; }
.rd-site-footer a { color: var(--rd-muted); text-decoration: none; }
.rd-site-footer a:hover { color: var(--rd-fg); }
.rd-socials { display: flex; flex-wrap: wrap; gap: 12px; flex-basis: 100%; margin: 0; }
/* Notebook layout: one tab per navigation group; the sidebar lists the open group only. */
/* nav.rd-tabs only: a <Tabs> component of a page is a div.rd-tabs. */
nav.rd-tabs { position: sticky; top: 57px; z-index: 9; display: flex; gap: 4px; overflow-x: auto; padding: 0 16px; border-bottom: 1px solid var(--rd-border); background: var(--rd-bg); }
nav.rd-tabs a { padding: 8px 10px; border-bottom: 2px solid transparent; color: var(--rd-muted); font-size: 14px; text-decoration: none; white-space: nowrap; }
nav.rd-tabs a[aria-current="true"] { color: var(--rd-primary); border-bottom-color: var(--rd-primary); }
div.rd-tabs { margin: 16px 0; }
.rd-layout-notebook .rd-layout { grid-template-columns: 14rem minmax(0, 1fr) 14rem; }
.rd-layout-notebook .rd-nav, .rd-layout-notebook .rd-toc { top: 100px; max-height: calc(100vh - 100px); }
/* Minimal layout: one column, the pages behind a menu, the table of contents above the text. */
.rd-layout-minimal .rd-layout { grid-template-columns: minmax(0, 1fr); max-width: 860px; }
.rd-menu { position: relative; }
.rd-menu summary { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; list-style: none; cursor: pointer; padding: 0 10px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); font-size: 14px; white-space: nowrap; }
.rd-menu summary::-webkit-details-marker { display: none; }
.rd-menu-panel { position: absolute; left: 0; top: 36px; z-index: 20; width: 280px; max-height: 70vh; overflow-y: auto; padding: 6px; border: 1px solid var(--rd-border); border-radius: 10px; background: var(--rd-bg); box-shadow: 0 10px 30px rgba(0, 0, 0, .15); font-size: 14px; }
.rd-menu-panel ul { list-style: none; margin: 0 0 8px; padding: 0; }
.rd-menu-panel .rd-nav-group { margin: 8px 8px 2px; }
.rd-menu-panel a { display: block; padding: 4px 8px; border-radius: 6px; color: var(--rd-muted); text-decoration: none; }
.rd-menu-panel a:hover { color: var(--rd-fg); }
.rd-menu-panel a[aria-current="page"] { background: var(--rd-surface); color: var(--rd-primary); font-weight: 600; }
.rd-lang .rd-menu-panel { left: auto; right: 0; width: 200px; }
/* The language menu right after the logo (pages from 2026-11-09 on; older pages have it at the right): its name and a chevron; the menu opens to the right. */
.rd-brand + .rd-lang summary { border: 0; background: none; color: var(--rd-fg); }
.rd-brand + .rd-lang summary:hover, .rd-brand + .rd-lang[open] summary { background: var(--rd-surface); }
.rd-brand + .rd-lang .rd-globe { display: none; }
.rd-brand + .rd-lang .rd-menu-panel { left: 0; right: auto; top: 40px; }
.rd-lang .rd-menu-panel a { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rd-lang[open] .rd-chevron, .rd-page-menu[open] summary .rd-icon { transform: rotate(180deg); }
/* The page menu (docs.json contextual): Copy page, then a menu of the other actions, at the top right of the page. */
/* The page menu: Copy page and the menu as one split button (docs-v1.js). */
.rd-page-actions { float: right; display: inline-flex; margin: 6px 0 8px 16px; border: 1px solid var(--rd-border); border-radius: 10px; background: var(--rd-bg); }
.rd-page-actions:empty { display: none; }
.rd-page-copy { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 12px; border: 0; border-radius: 9px; background: none; color: var(--rd-fg); font: inherit; font-size: 14px; cursor: pointer; }
.rd-page-copy:hover { background: var(--rd-surface); }
.rd-page-copy + .rd-page-menu summary { border-left: 1px solid var(--rd-border); border-radius: 0 9px 9px 0; }
.rd-page-menu summary { min-height: 34px; padding: 0 9px; border: 0; border-radius: 9px; background: none; color: var(--rd-muted); }
.rd-page-menu summary:hover { background: var(--rd-surface); color: var(--rd-fg); }
.rd-page-menu .rd-menu-panel { left: auto; right: -1px; top: 40px; width: 320px; max-width: calc(100vw - 32px); padding: 6px; border-radius: 14px; }
.rd-page-menu .rd-menu-panel ul { margin: 0; }
.rd-menu-panel .rd-pmenu-item { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 12px; align-items: center; width: 100%; padding: 7px 8px; border: 0; border-radius: 10px; background: none; color: var(--rd-fg); font: inherit; text-align: left; text-decoration: none; cursor: pointer; }
.rd-menu-panel .rd-pmenu-item:hover, .rd-menu-panel .rd-pmenu-item:focus-visible { background: var(--rd-surface); color: var(--rd-fg); }
.rd-pmenu-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid var(--rd-border); border-radius: 9px; }
.rd-pmenu-title { display: flex; align-items: center; gap: 4px; font-size: 14px; font-weight: 500; line-height: 1.3; }
.rd-pmenu-title .rd-icon { width: 12px; height: 12px; color: var(--rd-muted); }
.rd-pmenu-desc { display: block; color: var(--rd-muted); font-size: 13px; line-height: 1.35; }
.rd-menu-panel button { display: block; width: 100%; padding: 4px 8px; border: 0; border-radius: 6px; background: none; color: var(--rd-muted); font: inherit; text-align: left; cursor: pointer; }
.rd-menu-panel button:hover { color: var(--rd-fg); }
.rd-toc-inline { margin: 0 0 24px; padding: 8px 14px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); font-size: 14px; }
.rd-toc-inline summary { cursor: pointer; font-weight: 600; }
.rd-toc-inline ul { list-style: none; margin: 8px 0 0; padding: 0; }
.rd-toc-inline a { display: block; padding: 2px 0; color: var(--rd-muted); text-decoration: none; }
.rd-results { position: fixed; top: 52px; right: 16px; z-index: 20; width: min(420px, calc(100vw - 32px)); max-height: 60vh; overflow-y: auto; border: 1px solid var(--rd-border); border-radius: 10px; background: var(--rd-bg); box-shadow: 0 10px 30px rgba(0, 0, 0, .15); padding: 6px; }
.rd-result { display: block; padding: 8px 10px; border-radius: 6px; color: var(--rd-fg); text-decoration: none; }
.rd-result:hover, .rd-result[aria-selected="true"] { background: var(--rd-surface); }
.rd-result-empty { margin: 8px 10px; color: var(--rd-muted); }
/* The last result asks the search in the Ask panel. */
.rd-result-ask { display: flex; align-items: center; gap: 8px; margin-top: 4px; color: var(--rd-primary); font-weight: 500; }
@media (max-width: 1100px) { .rd-layout { grid-template-columns: 14rem minmax(0, 1fr); } .rd-toc { display: none; } .rd-layout-minimal .rd-layout { grid-template-columns: minmax(0, 1fr); } }
.rd-nav-toggle, .rd-nav-button { display: none; }
@media (max-width: 760px) {
  .rd-layout { display: block; }
  .rd-nav { position: static; max-height: none; padding: 12px 0; border-bottom: 1px solid var(--rd-border); }
  .rd-nav-foot { position: static; }
  /* The header keeps one row: the buttons show their icons only. A search field of an older page without the script gets its own row. */
  .rd-header { flex-wrap: wrap; gap: 8px; min-height: 53px; padding: 8px 16px; }
  nav.rd-tabs { top: 53px; }
  .rd-brand { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .rd-header .rd-ask { width: 36px; padding: 0; }
  .rd-brand + .rd-lang summary { width: 36px; padding: 0; justify-content: center; }
  .rd-brand + .rd-lang .rd-globe { display: block; }
  .rd-brand + .rd-lang .rd-chevron { display: none; }
  /* The theme switch moves to the bottom of the Pages list; the minimal layout has no list, so its header keeps it. */
  .rd-header-theme { display: none; }
  .rd-layout-minimal .rd-header-theme { display: inline-flex; }
  .rd-nav-foot { display: block; }
  .rd-article h1 { font-size: 1.9rem; }
  .rd-article .rd-description { font-size: 1.1rem; }
  .rd-brand img { max-width: 100%; }
  .rd-header .rd-label { display: none; }
  .rd-icon-button { width: 34px; padding: 0; justify-content: center; }
  .rd-links, .rd-page-actions .rd-label { display: none; }
  .rd-search { order: 10; flex: 1 1 100%; max-width: none; margin-left: 0; }
  /* The page list folds behind the Pages toggle. Pages published before the toggle keep the list open. */
  .rd-nav-toggle { display: block; position: absolute; width: 1px; height: 1px; opacity: 0; }
  /* A list icon and a chevron show that Pages opens (user report 2026-11-11). The chevron turns while the list is open. */
  .rd-nav-button { display: flex; align-items: center; gap: 10px; margin-top: 12px; padding: 10px 12px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); font-size: 14px; font-weight: 600; cursor: pointer; }
  .rd-nav-button::before { content: ""; flex: none; width: 16px; height: 12px; background: linear-gradient(currentColor, currentColor) 0 0 / 100% 2px no-repeat, linear-gradient(currentColor, currentColor) 0 5px / 100% 2px no-repeat, linear-gradient(currentColor, currentColor) 0 10px / 100% 2px no-repeat; opacity: .7; }
  .rd-nav-button::after { content: ""; flex: none; width: 8px; height: 8px; margin: -4px 4px 0 auto; border-right: 2px solid var(--rd-muted); border-bottom: 2px solid var(--rd-muted); transform: rotate(45deg); transition: transform .15s ease; }
  .rd-nav-toggle:checked + .rd-nav-button::after { margin-top: 4px; transform: rotate(-135deg); }
  .rd-nav-toggle:checked + .rd-nav-button { border-color: var(--rd-primary); }
  .rd-nav-toggle:focus-visible + .rd-nav-button { outline: 2px solid var(--rd-primary); outline-offset: 2px; }
  .rd-nav-toggle:not(:checked) ~ .rd-nav { display: none; }
}
/* Code highlighting: Rails marks tokens with TextMate scope classes (Publications::DocsMarkdown). */
.rd-article pre.syntax-highlighting .comment { color: var(--rd-hl-comment); font-style: italic; }
.rd-article pre.syntax-highlighting .string { color: var(--rd-hl-string); }
.rd-article pre.syntax-highlighting .constant { color: var(--rd-hl-constant); }
.rd-article pre.syntax-highlighting .keyword, .rd-article pre.syntax-highlighting .storage { color: var(--rd-hl-keyword); }
.rd-article pre.syntax-highlighting .entity.name, .rd-article pre.syntax-highlighting .support { color: var(--rd-hl-name); }
/* Ask in the header: a small button with the sparkle icon. Pages published before 2026-11-09 have the older button; it looks the same. */
.rd-ask { display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: auto; min-height: 36px; height: 36px; padding: 0 14px 0 12px; border: 0; border-radius: 999px; background: var(--rd-surface); color: var(--rd-fg); font: inherit; font-size: 14px; cursor: pointer; white-space: nowrap; }
.rd-ask:hover, .rd-ask[aria-expanded="true"] { background: color-mix(in srgb, var(--rd-fg) 8%, var(--rd-surface)); }
.rd-ask .rd-icon { color: var(--rd-primary); }
.rd-search-foot kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; padding: 1px 5px; border: 1px solid var(--rd-border); border-radius: 5px; background: var(--rd-bg); color: var(--rd-muted); font: 500 11px/1.4 ui-sans-serif, system-ui, sans-serif; }

/* Result rows: the search dialog, the bottom bar and the pages that match a question in Ask. */
.rd-hit { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 1px 12px; padding: 8px 12px; border-radius: 10px; color: var(--rd-fg); text-decoration: none; cursor: pointer; }
.rd-hit[aria-selected="true"] { background: var(--rd-surface); }
.rd-hit-icon { grid-row: span 2; padding-top: 3px; color: var(--rd-muted); }
.rd-hit-title { overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.rd-hit-title b { color: var(--rd-primary); font-weight: 600; }
.rd-hit-path { overflow: hidden; color: var(--rd-muted); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
/* The Ask row stays in view at the end of a long list. */
.rd-hit-ask { position: sticky; bottom: 0; align-items: center; margin-top: 4px; border-top: 1px solid var(--rd-border); border-radius: 0 0 10px 10px; background: var(--rd-bg); }
.rd-hit-ask .rd-hit-icon { grid-row: auto; padding: 0; color: var(--rd-primary); }
.rd-hit-ask[aria-selected="true"] { background: color-mix(in srgb, var(--rd-surface) 80%, var(--rd-bg)); }
.rd-hits-empty { margin: 10px 12px; color: var(--rd-muted); font-size: 14px; }

/* The search dialog (Cmd+K), in the middle of the page. */
.rd-search-dialog { position: fixed; inset: 0; z-index: 50; display: flex; align-items: flex-start; justify-content: center; padding: 9vh 16px 16px; background: rgba(15, 23, 42, .35); }
.rd-search-dialog[hidden] { display: none; }
.rd-search-box { display: flex; flex-direction: column; width: min(680px, 100%); max-height: 78vh; border: 1px solid var(--rd-border); border-radius: 16px; background: var(--rd-bg); color: var(--rd-fg); box-shadow: 0 24px 60px rgba(0, 0, 0, .25); }
.rd-search-field { display: flex; align-items: center; gap: 10px; margin: 8px; padding: 0 6px 0 14px; border: 1px solid var(--rd-border); border-radius: 12px; color: var(--rd-muted); }
.rd-search-field:focus-within { border-color: var(--rd-primary); }
.rd-search-input { flex: 1; min-width: 0; padding: 12px 0; border: 0; outline: 0; background: none; color: var(--rd-fg); font: inherit; font-size: 17px; }
.rd-search-ask { display: inline-flex; flex: none; align-items: center; gap: 6px; padding: 6px 10px; border: 0; border-radius: 9px; background: var(--rd-surface); color: var(--rd-fg); font: inherit; font-size: 14px; cursor: pointer; }
.rd-search-ask .rd-icon { color: var(--rd-primary); }
.rd-search-ask:disabled { opacity: .5; cursor: default; }
.rd-search-hits { overflow-y: auto; padding: 0 8px 8px; }
.rd-search-hits:empty { display: none; }
.rd-search-foot { display: flex; gap: 16px; padding: 10px 16px; border-top: 1px solid var(--rd-border); color: var(--rd-muted); font-size: 13px; }
.rd-search-foot span { display: inline-flex; align-items: center; gap: 4px; }
.rd-search-foot span:last-child { margin-left: auto; }
.rd-search-close { display: none; flex: none; }

/* The bottom bar: small until the visitor points at it or types; the matching pages open above it. */
.rd-bar { position: sticky; bottom: 18px; z-index: 6; display: flex; align-items: center; gap: 8px; width: 250px; max-width: 100%; margin: 40px auto 0; padding: 4px 12px 4px 14px; border: 1px solid var(--rd-border); border-radius: 999px; background: var(--rd-bg); box-shadow: 0 8px 24px rgba(0, 0, 0, .10), 0 1px 3px rgba(0, 0, 0, .06); transition: width .2s ease; }
.rd-bar:hover, .rd-bar:focus-within, .rd-bar.rd-bar-open { width: min(720px, 100%); }
.rd-bar:focus-within { border-color: var(--rd-primary); }
.rd-bar-icon { display: flex; flex: none; color: var(--rd-muted); }
.rd-bar-input { flex: 1; min-width: 0; padding: 7px 0; border: 0; outline: 0; background: none; color: var(--rd-fg); font: inherit; font-size: 15px; }
.rd-bar-input[readonly] { cursor: pointer; }
.rd-bar-hits { position: absolute; left: 0; right: 0; bottom: calc(100% + 8px); max-height: min(60vh, 440px); overflow-y: auto; padding: 6px; border: 1px solid var(--rd-border); border-radius: 16px; background: var(--rd-bg); box-shadow: 0 16px 40px rgba(0, 0, 0, .16); }
.rd-bar-hits[hidden] { display: none; }
body.rd-chat-open .rd-bar, body.rd-search-open .rd-bar { display: none; }
@media (prefers-reduced-motion: reduce) { .rd-bar { transition: none; } }

.rd-ask-input { flex: 1; resize: vertical; padding: 8px 10px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); color: var(--rd-fg); font: inherit; font-size: 15px; }
.rd-ask-label { margin: 12px 0 4px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; opacity: .7; }
.rd-ask-note { margin: 8px 0; opacity: .8; }
/* iOS zooms into a field whose text is smaller than 16px. */
@media (max-width: 760px), (pointer: coarse) { .rd-search, .rd-ask-input, .rd-search-input, .rd-bar-input { font-size: 16px; } }

/* Ask: an inline panel at the right (not a popup), drawn as a chat. Wide screens keep the page beside it; narrow screens give it the width. */
.rd-chat { position: fixed; top: 0; right: 0; bottom: 0; z-index: 30; display: flex; flex-direction: column; width: min(420px, 100vw); border-left: 1px solid var(--rd-border); background: var(--rd-bg); color: var(--rd-fg); }
.rd-chat[hidden] { display: none; }
.rd-chat.rd-chat-wide { width: min(640px, 100vw); }
.rd-chat-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 10px 10px 16px; }
.rd-chat-title { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 16px; font-weight: 600; }
.rd-chat-title .rd-icon { width: 18px; height: 18px; color: var(--rd-primary); }
.rd-chat-tools, .rd-chat-actions { display: flex; gap: 2px; }
.rd-chat-tool { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 8px; background: none; color: var(--rd-muted); cursor: pointer; }
.rd-chat-tool:hover, .rd-chat-tool[aria-pressed="true"] { background: var(--rd-surface); color: var(--rd-fg); }
/* Was this helpful? Yes and No, under an AI answer. */
.rd-chat-rate { display: flex; flex: 1 1 100%; flex-wrap: wrap; align-items: center; gap: 8px; margin: 6px 0 2px; padding: 9px 12px; border: 1px solid var(--rd-border); border-radius: 12px; background: var(--rd-surface); font-size: 14px; }
.rd-chat-rate-text { margin-right: auto; font-weight: 550; }
.rd-chat-vote { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border: 1px solid var(--rd-border); border-radius: 999px; background: var(--rd-bg); color: var(--rd-fg); font: inherit; font-size: 14px; cursor: pointer; }
.rd-chat-vote .rd-icon { width: 15px; height: 15px; }
.rd-chat-vote:hover { border-color: var(--rd-primary); color: var(--rd-primary); }
.rd-chat-vote[aria-pressed="true"] { border-color: var(--rd-primary); background: var(--rd-primary); color: #fff; }
/* The offer in the row replaces the quiet line under it. */
.rd-chat-foot:has(.rd-chat-rate-offer) + .rd-chat-help { display: none; }
.rd-chat-rate-offer { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 0; border-radius: 8px; background: var(--rd-primary); color: #fff; font: inherit; font-size: 14px; cursor: pointer; }
.rd-chat-actions { margin: 6px 0 0 -6px; }
/* The actions under an answer. */
.rd-chat-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-top: 6px; }
.rd-chat-foot .rd-chat-actions { margin: 0 0 0 -6px; }
/* A question that waits for the security check. */
.rd-chat-wait { gap: 4px; height: 20px; }
.rd-chat-wait span { width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .35; animation: rd-wait 1.2s infinite ease-in-out; }
.rd-chat-wait span:nth-child(2) { animation-delay: .2s; }
.rd-chat-wait span:nth-child(3) { animation-delay: .4s; }
@keyframes rd-wait { 0%, 80%, 100% { opacity: .25; } 40% { opacity: .9; } }
/* Searching the docs… and Thinking… pulse while the answer is on its way. */
.rd-chat-busy { animation: rd-busy 1.4s ease-in-out infinite; }
@keyframes rd-busy { 0%, 100% { opacity: .5; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .rd-chat-wait span, .rd-chat-busy { animation: none; } }
.rd-chat-log { flex: 1; overflow-y: auto; padding: 4px 16px 16px; }
.rd-chat-entry { padding: 4px 0 18px; }
.rd-chat-question { width: fit-content; max-width: 85%; margin: 10px 0 14px auto; padding: 8px 14px; border: 1px solid var(--rd-border); border-radius: 16px; background: var(--rd-surface); white-space: pre-wrap; overflow-wrap: anywhere; }
.rd-chat-step { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; color: var(--rd-muted); font-size: 13px; }
.rd-ask-answer { line-height: 1.6; overflow-wrap: anywhere; }
/* An answer that writes itself out hides each block until its first words come (docs-v1.js typeOut). */
.rd-ask-answer [hidden] { display: none !important; }
.rd-ask-answer p { margin: 0 0 10px; }
.rd-ask-answer ul, .rd-ask-answer ol { margin: 0 0 10px; padding-left: 20px; }
.rd-ask-answer code { padding: 1px 5px; border-radius: 4px; background: var(--rd-code); font-size: .88em; }
.rd-ask-answer pre { margin: 0 0 10px; padding: 10px 12px; border-radius: 8px; background: var(--rd-code); overflow-x: auto; font-size: 13px; }
.rd-ask-answer pre code { padding: 0; background: none; }
/* The pages of an answer: rows with the page and its section. Under an AI answer they fold into one line that opens
   while the pointer is on it or with a click (docs-v1.js sourceList). */
.rd-chat-sources { margin: 2px 0 4px; }
.rd-chat-sources .rd-result { display: flex; gap: 10px; padding: 6px 8px; margin: 0 -8px; border-radius: 8px; font-size: 14px; line-height: 1.4; }
.rd-chat-sources .rd-result .rd-icon { flex: none; margin-top: 2px; color: var(--rd-muted); }
.rd-chat-sources .rd-result small { display: block; color: var(--rd-muted); font-size: 12.5px; }
.rd-chat-sources .rd-result:hover { background: var(--rd-surface); }
.rd-chat-sources-fold { margin-top: 8px; border: 1px solid var(--rd-border); border-radius: 12px; overflow: hidden; }
.rd-chat-sources-fold .rd-result { margin: 0; padding: 7px 10px; border-top: 1px solid var(--rd-border); border-radius: 0; }
.rd-chat-sources-head { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 10px; border: 0; background: none; color: var(--rd-muted); font: inherit; font-size: 13px; text-align: left; cursor: pointer; }
.rd-chat-sources-head:hover { color: var(--rd-fg); }
.rd-chat-sources-head > .rd-icon { margin-left: auto; transition: transform .15s ease; }
.rd-chat-sources-stack { display: flex; }
.rd-chat-sources-stack span { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-left: -7px; border: 1px solid var(--rd-border); border-radius: 6px; background: var(--rd-bg); }
.rd-chat-sources-stack span:first-child { margin-left: 0; }
.rd-chat-sources-stack .rd-icon { width: 12px; height: 12px; }
.rd-chat-sources-fold .rd-chat-sources-list { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .18s ease; }
.rd-chat-sources-fold .rd-chat-sources-list > div { overflow: hidden; }
.rd-chat-sources-fold.rd-open .rd-chat-sources-list, .rd-chat-sources-fold:focus-within .rd-chat-sources-list { grid-template-rows: 1fr; }
.rd-chat-sources-fold.rd-open .rd-chat-sources-head > .rd-icon { transform: rotate(180deg); }
@media (hover: hover) {
  .rd-chat-sources-fold:hover .rd-chat-sources-list { grid-template-rows: 1fr; }
  .rd-chat-sources-fold:hover .rd-chat-sources-head > .rd-icon { transform: rotate(180deg); }
}
@media (prefers-reduced-motion: reduce) { .rd-chat-sources-fold .rd-chat-sources-list, .rd-chat-sources-head > .rd-icon { transition: none; } }
.rd-chat-form { padding: 10px 12px 12px; }
.rd-chat-suggest { max-height: 40vh; overflow-y: auto; margin: 0 0 8px; padding: 4px; border: 1px solid var(--rd-border); border-radius: 14px; background: var(--rd-bg); box-shadow: 0 8px 24px rgba(0, 0, 0, .08); }
.rd-chat-suggest[hidden] { display: none; }
.rd-chat-suggest .rd-ask-label { margin: 6px 8px 2px; }
.rd-chat-check:empty, .rd-chat-check[hidden] { display: none; }
.rd-chat-check { margin: 0 0 12px; }
.rd-chat-row { display: flex; align-items: flex-end; gap: 8px; padding: 8px 8px 8px 14px; border: 1px solid var(--rd-border); border-radius: 16px; background: var(--rd-bg); }
.rd-chat-row:focus-within { border-color: var(--rd-primary); }
.rd-chat-row .rd-ask-input { padding: 4px 0; border: 0; outline: 0; resize: none; background: none; }
.rd-ask-submit { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: var(--rd-primary); color: #fff; cursor: pointer; }
.rd-ask-submit:disabled { opacity: .5; cursor: default; }
.rd-ask-more { margin-top: 12px; border: 1px solid var(--rd-border); border-radius: 8px; background: var(--rd-surface); color: var(--rd-fg); padding: 6px 10px; font: inherit; font-size: 14px; cursor: pointer; }
.rd-message { margin-top: 0; display: grid; gap: 8px; }
.rd-message-field { display: grid; gap: 4px; font-size: 13px; }
.rd-message-send { justify-self: start; padding: 8px 14px; border: 0; border-radius: 8px; background: var(--rd-primary); color: #fff; font: inherit; font-size: 14px; cursor: pointer; }
.rd-message-send:disabled { opacity: .6; cursor: default; }
.rd-message-lead { margin: -4px 0 2px; color: var(--rd-muted); font-size: 14px; }
/* Leave a message (style F): a quiet line after an AI answer; a card where a person is the next step. */
.rd-chat-help { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rd-border); }
.rd-chat-help-link { display: inline-flex; align-items: center; gap: 8px; padding: 2px 0; border: 0; background: none; color: var(--rd-muted); font: inherit; font-size: 14px; text-align: left; cursor: pointer; }
.rd-chat-help-link .rd-icon { flex: none; }
.rd-chat-help-strong { color: var(--rd-primary); font-weight: 550; }
.rd-chat-help-link:hover .rd-chat-help-strong, .rd-chat-help-link:focus-visible .rd-chat-help-strong { text-decoration: underline; }
.rd-chat-help-card { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-top: 12px; padding: 12px 14px; border: 1px solid var(--rd-border); border-radius: 12px; background: var(--rd-surface); font-size: 14px; }
.rd-chat-help-card p { margin: 0; color: var(--rd-muted); }
.rd-chat-help-button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 0; border-radius: 8px; background: var(--rd-primary); color: #fff; font: inherit; font-size: 14px; cursor: pointer; }
/* Shown only after Rails answered that it recorded the message. */
.rd-message-done { display: flex; align-items: center; gap: 8px; margin: 0; }
.rd-message-done .rd-icon { flex: none; width: 20px; height: 20px; color: #16a34a; }
.rd-message-error { color: #dc2626; opacity: 1; }
@media (min-width: 1101px) {
  body.rd-chat-open { padding-right: 420px; }
  body.rd-chat-open.rd-chat-wide { padding-right: 640px; }
  body.rd-chat-open .rd-toc { display: none; }
  body.rd-chat-open.rd-layout-sidebar .rd-layout, body.rd-chat-open.rd-layout-notebook .rd-layout { grid-template-columns: 14rem minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .rd-bar { bottom: 12px; width: 210px; margin-top: 28px; }
  /* Phones: the search and Ask fill the part of the screen above the keyboard (followViewport in docs-v1.js). */
  .rd-search-dialog { top: var(--rd-vvt, 0px); bottom: auto; height: var(--rd-vvh, 100%); padding: 0; }
  .rd-search-box { width: 100%; height: 100%; max-height: none; border: 0; border-radius: 0; box-shadow: none; }
  .rd-search-hits { flex: 1; overscroll-behavior: contain; }
  .rd-search-close { display: inline-flex; }
  .rd-search-foot { display: none; }
  .rd-chat { top: var(--rd-vvt, 0px); bottom: auto; height: var(--rd-vvh, 100%); }
  .rd-chat-log { overscroll-behavior: contain; }
  body.rd-search-open, body.rd-chat-open { overflow: hidden; }
  .rd-title-row { gap: 10px; }
}
