/* ------------------------------------------------------------------
   RosieOS docs: layout, prose, code, endpoints, search.
   Built on the site tokens in /styles.css (ice ground, ink, navy, brand
   red as the single accent). Loaded only by docs pages.
   ------------------------------------------------------------------ */
:root {
  --hdr: 74px;
  --mono: ui-monospace, "Cascadia Mono", "Cascadia Code", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --prose: 46rem;
  --code-bg: var(--paper);
  --code-line: var(--line-2);
  --code-inline: rgba(19, 41, 75, .075);
  --tip: #2b6a4e;
  --t-com: #566d76; --t-kw: #13294b; --t-str: #2b6a4e; --t-num: #94500a; --t-fn: #1d5a86;
  --t-ty: #5b4488; --t-prop: #0e5866; --t-var: #94500a; --t-meta: #7a3f66; --t-tag: #13294b; --t-op: #4e6068;
}
:root[data-theme="dark"] {
  --code-inline: rgba(226, 237, 240, .09);
  --tip: #8fcfb0;
  --t-com: #7f959c; --t-kw: #a9c4f2; --t-str: #9ed3b3; --t-num: #e6b877; --t-fn: #8fd0f0;
  --t-ty: #c9b3ef; --t-prop: #7fcfd6; --t-var: #e6b877; --t-meta: #deaacb; --t-tag: #a9c4f2; --t-op: #9bb0b7;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --code-inline: rgba(226, 237, 240, .09);
    --tip: #8fcfb0;
    --t-com: #7f959c; --t-kw: #a9c4f2; --t-str: #9ed3b3; --t-num: #e6b877; --t-fn: #8fd0f0;
    --t-ty: #c9b3ef; --t-prop: #7fcfd6; --t-var: #e6b877; --t-meta: #deaacb; --t-tag: #a9c4f2; --t-op: #9bb0b7;
  }
}

.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.docs [id] { scroll-margin-top: calc(var(--hdr) + 1.5rem); }
.docs-main:focus { outline: none; }
kbd {
  font: 500 .7rem/1 var(--mono); color: var(--ink-2);
  border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 3px; padding: .2rem .38rem; background: var(--ice);
}

/* ---------- three-column shell ---------- */
.docs-shell {
  display: grid; grid-template-columns: 15rem minmax(0, 1fr) 13.5rem;
  gap: 0 clamp(2rem, 3.4vw, 3.5rem); padding: 0 var(--gutter); max-width: 1680px; margin: 0 auto;
}
.docs-side, .docs-toc {
  position: sticky; top: var(--hdr); align-self: start;
  max-height: calc(100vh - var(--hdr)); overflow-y: auto; overscroll-behavior: contain;
  scrollbar-width: thin; scrollbar-color: var(--line) transparent;
}
.docs-side { padding: 1.75rem 1.25rem 2.5rem 0; border-right: 1px solid var(--line-2); min-height: calc(100vh - var(--hdr)); }
.docs-main { min-width: 0; padding: 1.75rem 0 4.5rem; }
.docs-toc { padding: 1.75rem 0 2.5rem; }
.docs-bar { display: none; }

/* ---------- sidebar ---------- */
.docs-searchbox {
  display: flex; align-items: center; gap: .55rem; width: 100%; height: 40px; margin: 0 0 1.6rem; padding: 0 .5rem 0 .7rem;
  font: 500 .88rem var(--sans); color: var(--ink-2); text-align: left; cursor: pointer;
  background: var(--paper); border: 1px solid var(--line); border-radius: 3px;
}
.docs-searchbox span { flex: 1; }
.docs-searchbox svg, .docs-bar-search svg { fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; flex: none; }
.docs-searchbox:hover { border-color: var(--ink); color: var(--ink); }
html:not(.js) [data-search-open] { display: none; }

.docs-group + .docs-group { margin-top: 1.6rem; }
.docs-group-title {
  margin: 0 0 .45rem; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink);
}
.docs-group ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--line-2); }
.docs-group a {
  display: block; margin-left: -1px; padding: .3rem 0 .3rem .8rem; border-left: 2px solid transparent;
  font-size: .9rem; line-height: 1.35; color: var(--ink-2); text-decoration: none;
}
.docs-group a:hover { color: var(--ink); border-left-color: var(--line); }
.docs-group a[aria-current="page"] { color: var(--ink); font-weight: 600; border-left-color: var(--red); }

/* ---------- breadcrumbs and edit link ---------- */
.docs-crumbs {
  display: flex; justify-content: space-between; align-items: center; gap: .5rem 1.5rem; flex-wrap: wrap;
  max-width: var(--prose); padding-bottom: .6rem; margin-bottom: 2.25rem; border-bottom: 1px solid var(--ink);
}
.docs-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .2rem .5rem; }
.docs-crumbs li, .docs-edit, .docs-edit-lbl {
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--ink-2);
}
.docs-crumbs li + li::before { content: "/"; margin-right: .5rem; color: var(--line); }
.docs-crumbs a { color: var(--ink-2); text-decoration: none; }
.docs-crumbs a:hover { color: var(--ink); }
.docs-crumbs [aria-current] { color: var(--ink); }
.docs-edit, .docs-edit-lbl { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; }
.docs-edit svg { fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linejoin: round; }
.docs-edit:hover, .docs-edit-lbl:hover { color: var(--ink); }
.docs-actions, .docs-actions-lbl { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1.1rem; }
button.docs-edit, button.docs-edit-lbl { font: inherit; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--ink-2); background: none; border: 0; padding: 0; cursor: pointer; }
button.docs-edit-lbl { font-size: inherit; }
.docs-copy-page.is-done { color: var(--ink); }
.docs-edit:focus-visible, .docs-edit-lbl:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* ---------- prose ---------- */
.prose { max-width: var(--prose); font-size: 1.0625rem; line-height: 1.7; overflow-wrap: break-word; }
.prose p { max-width: none; }
.prose > *, .prose .admon-body > *, .prose .ep-body > *, .prose .tabs-panel > *, .prose li > * { margin-top: 0; margin-bottom: 0; }
.prose p, .prose ul, .prose ol, .prose blockquote { margin: 0 0 1.1rem; }
.prose h1 { font-size: clamp(2.3rem, 4.2vw, 3.4rem); line-height: 1.02; letter-spacing: -.032em; margin: 0 0 1.6rem; }
.prose h2 {
  font-size: clamp(1.55rem, 2.3vw, 1.95rem); line-height: 1.14; letter-spacing: -.022em;
  margin: 3.2rem 0 1rem; padding-top: 1.1rem; border-top: 1px solid var(--ink);
}
.prose h3 { font-size: 1.28rem; line-height: 1.25; letter-spacing: -.012em; margin: 2.3rem 0 .7rem; }
.prose h4 { font-size: 1.04rem; line-height: 1.3; margin: 1.9rem 0 .5rem; }
.prose h1 + h2, .prose .toc-inline + h2 { margin-top: 1.5rem; }
.prose strong { font-weight: 650; color: var(--ink); }
.prose .h-anchor {
  margin-left: .45em; font: 400 .8em var(--mono); color: var(--ink-2); text-decoration: none;
  opacity: 0; vertical-align: .05em;
}
.prose h2:hover .h-anchor, .prose h3:hover .h-anchor, .prose h4:hover .h-anchor, .prose .h-anchor:focus-visible { opacity: 1; }
.prose .h-anchor:hover { color: var(--red); }
@media (hover: none) { .prose .h-anchor { opacity: .45; } }

.prose a:not(.h-anchor):not(.btn) {
  color: var(--ink); text-decoration: underline; text-decoration-color: var(--red);
  text-decoration-thickness: 1px; text-underline-offset: .22em;
}
.prose a:not(.h-anchor):not(.btn):hover { text-decoration-thickness: 2px; }
.prose a.ext::after {
  content: ""; display: inline-block; width: .42em; height: .42em; margin: 0 .05em 0 .28em; vertical-align: .38em;
  border-top: 1.5px solid var(--ink-2); border-right: 1.5px solid var(--ink-2);
}

.prose :not(pre) > code {
  font-family: var(--mono); font-size: .855em; padding: .12em .36em; border-radius: 3px;
  background: var(--code-inline); color: var(--ink); overflow-wrap: anywhere;
}
.prose h2 code, .prose h3 code { font-size: .82em; }

.prose ul, .prose ol { padding-left: 1.35rem; }
.prose ul { list-style: square; }
.prose ul ul { list-style: circle; }
.prose li + li { margin-top: .38rem; }
.prose li > ul, .prose li > ol, .prose li > p + * { margin-top: .38rem; }
.prose li > p + p { margin-top: .7rem; }
.prose li > .code, .prose li > .tabs, .prose li > .admon, .prose li > .table-wrap { margin: .8rem 0; }
.prose li::marker { color: var(--ink-2); }
.prose ol > li::marker { font-weight: 600; font-variant-numeric: tabular-nums; }
.prose li.task { list-style: none; margin-left: -1.35rem; }
.prose li.task input { accent-color: var(--blue-ink); margin: 0 .45rem 0 0; vertical-align: -.1em; }
.prose blockquote { border-left: 3px solid var(--line); padding: .1rem 0 .1rem 1rem; color: var(--ink-2); }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2.5rem 0; }
.prose img { max-width: 100%; height: auto; }
.prose del { color: var(--ink-2); }

/* ---------- tables ---------- */
.table-wrap { overflow-x: auto; margin: 1.5rem 0; border-top: 2px solid var(--ink); }
.table-wrap:focus-visible { outline-offset: 3px; }
.prose table { width: 100%; border-collapse: collapse; font-size: .92rem; line-height: 1.5; }
.prose th {
  text-align: left; padding: .7rem 1rem .55rem 0; border-bottom: 1px solid var(--ink); white-space: nowrap;
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink-2);
}
.prose td { padding: .62rem 1rem .62rem 0; border-bottom: 1px solid var(--line-2); vertical-align: top; }
.prose th:last-child, .prose td:last-child { padding-right: 0; }
.prose td { min-width: 6rem; }
.prose td code { overflow-wrap: normal; white-space: nowrap; }
.prose table.params td:last-child { min-width: 14rem; }
.prose table.params td:first-child { white-space: nowrap; }
.prose table.params td:first-child code { background: none; padding: 0; font-weight: 600; font-size: .9em; }
.prose table.params td:nth-child(2) { white-space: nowrap; }
.prose table.params td:nth-child(2) code { background: none; padding: 0; color: var(--blue-ink); }
.prose td.req-yes { font-weight: 600; }
.prose td.req-no { color: var(--ink-2); }

/* ---------- code blocks ---------- */
.code { position: relative; margin: 1.4rem 0; background: var(--code-bg); border: 1px solid var(--code-line); border-radius: 3px; min-width: 0; }
.code-head { display: flex; align-items: center; gap: .75rem; min-height: 2.5rem; padding: .3rem .45rem .3rem .9rem; border-bottom: 1px solid var(--code-line); }
.code-title { flex: 1; min-width: 0; font: 500 .8rem var(--mono); color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.code-lang { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink-2); }
.code pre {
  margin: 0; padding: 1rem 1.1rem 1.05rem; overflow-x: auto; overscroll-behavior-x: contain;
  font: .84rem/1.65 var(--mono); color: var(--ink); tab-size: 4; -moz-tab-size: 4;
  scrollbar-width: thin; scrollbar-color: var(--line) transparent;
}
.code pre:focus-visible { outline-offset: -3px; }
.code code { font: inherit; background: none; padding: 0; }
.code-copy, .ep-copy {
  display: inline-flex; align-items: center; gap: .35rem; flex: none; height: 1.9rem; padding: 0 .6rem; cursor: pointer;
  font: 700 .6rem/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2);
  background: var(--code-bg); border: 1px solid var(--code-line); border-radius: 2px;
}
.code-copy svg, .ep-copy svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linejoin: round; }
.code-copy:hover, .ep-copy:hover { color: var(--ink); border-color: var(--ink); }
.code-copy.is-done, .ep-copy.is-done { color: var(--ink); border-color: var(--ink); }
.code:not(.has-title) > .code-copy { position: absolute; top: .5rem; right: .5rem; opacity: 0; }
.code:not(.has-title):hover > .code-copy, .code:not(.has-title):focus-within > .code-copy, .code-copy.is-done { opacity: 1; }
@media (hover: none) { .code:not(.has-title) > .code-copy { opacity: 1; } }

.t-com { color: var(--t-com); font-style: italic; }
.t-kw { color: var(--t-kw); font-weight: 600; }
.t-str { color: var(--t-str); }
.t-num { color: var(--t-num); }
.t-fn { color: var(--t-fn); }
.t-ty { color: var(--t-ty); }
.t-prop { color: var(--t-prop); }
.t-var { color: var(--t-var); }
.t-meta { color: var(--t-meta); }
.t-tag { color: var(--t-tag); }
.t-op { color: var(--t-op); }

/* ---------- tabs ---------- */
.tabs { margin: 1.4rem 0; }
.tabs-list { display: flex; border-bottom: 1px solid var(--ink); overflow-x: auto; scrollbar-width: none; }
.tabs-list::-webkit-scrollbar { display: none; }
.tabs-list button {
  flex: none; margin: 0 0 -1px; padding: .55rem .95rem .5rem; cursor: pointer; white-space: nowrap;
  font: 600 .84rem var(--sans); color: var(--ink-2); background: none; border: 0; border-bottom: 2px solid transparent;
}
.tabs-list button:hover { color: var(--ink); }
.tabs-list button[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--red); }
.tabs-list button:focus-visible { outline-offset: -3px; }
.tabs-panel { padding-top: 1rem; }
.tabs-panel:focus-visible { outline-offset: 2px; }
.tabs-panel > .code:first-child { margin-top: -1rem; border-top: 0; border-radius: 0 0 3px 3px; }
.tabs-panel > .code:only-child { margin-bottom: 0; }
.js .tabs-panel:not(.is-active) { display: none; }
html:not(.js) .tabs-list { display: none; }
html:not(.js) .tabs-panel::before, .tabs-panel.print-label::before {
  content: attr(data-label); display: block; margin: 0 0 .4rem;
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink-2);
}
html:not(.js) .tabs-panel > .code:first-child { margin-top: 0; border-top: 1px solid var(--code-line); }

/* ---------- admonitions ---------- */
.admon { position: relative; margin: 1.6rem 0; padding: .9rem 1.15rem 1rem 1.25rem; background: var(--paper); border-left: 3px solid var(--ad, var(--line)); font-size: 1rem; line-height: 1.62; }
.admon-title {
  display: flex; align-items: center; gap: .45rem; margin: 0 0 .35rem !important;
  font-size: .64rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: var(--ad-ink, var(--ink));
}
.admon-title svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.admon-body > * + * { margin-top: .7rem !important; }
.admon-body .code { background: var(--ice); }
.admon-note { --ad: var(--blue-ink); --ad-ink: var(--blue-ink); }
.admon-tip { --ad: var(--tip); --ad-ink: var(--tip); }
.admon-warning { --ad-ink: var(--red); border-left: 0; padding-left: 1.6rem; }
.admon-warning::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px;
  background: repeating-linear-gradient(-45deg, var(--red) 0 4px, transparent 4px 8px);
  border-right: 1px solid var(--red);
}
.admon-danger { --ad: var(--red); --ad-ink: var(--red); border-left-width: 6px; background: color-mix(in srgb, var(--red) 7%, var(--paper)); }

/* ---------- endpoint cards ---------- */
.endpoint { margin: 1.6rem 0; background: var(--paper); border: 1px solid var(--line-2); border-top: 2px solid var(--ink); border-radius: 0 0 3px 3px; }
.ep-head { display: flex; align-items: center; gap: .8rem; padding: .7rem .6rem .7rem .9rem; }
.ep-method {
  flex: none; min-width: 3.9rem; padding: .36rem .5rem; text-align: center; border-radius: 2px;
  font: 700 .7rem/1 var(--mono); letter-spacing: .06em; color: var(--ink-2); border: 1px solid var(--line);
}
.ep-method[data-method="get"] { color: var(--blue-ink); border-color: var(--blue-ink); }
.ep-method[data-method="post"] { color: var(--on-blue); background: var(--blue); border-color: var(--blue); }
.ep-method[data-method="put"], .ep-method[data-method="patch"] { color: var(--ink); border-color: var(--ink); }
.ep-method[data-method="delete"] { color: var(--red); border-color: var(--red); }
.ep-method[data-method="ws"], .ep-method[data-method="wss"], .ep-method[data-method="sse"] { color: var(--blue-ink); border: 1px dashed var(--blue-ink); }
.prose .ep-path { flex: 1; min-width: 0; font: 500 .95rem/1.4 var(--mono); color: var(--ink); background: none; padding: 0; overflow-wrap: break-word; }
.ep-param { color: var(--blue-ink); }
.ep-copy { margin-left: auto; }
.ep-body { padding: .85rem .95rem 1rem; border-top: 1px solid var(--line-2); font-size: 1rem; line-height: 1.62; }
.ep-body > * + * { margin-top: .75rem !important; }
.ep-body .code { background: var(--ice); }

/* ---------- figures ---------- */
.figure { margin: 1.8rem 0; }
.figure svg, .figure img { display: block; width: 100%; height: auto; }
.figure figcaption, .docs-arch figcaption { margin-top: .6rem; font-size: .8rem; color: var(--ink-2); line-height: 1.45; }

/* ---------- right TOC ---------- */
.docs-toc-title {
  margin: 0 0 .5rem; padding-bottom: .6rem; border-bottom: 1px solid var(--ink);
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink);
}
.docs-toc ol, .toc-inline ol { list-style: none; margin: 0; padding: 0; }
.docs-toc ol { border-left: 1px solid var(--line-2); }
.docs-toc a {
  display: block; margin-left: -1px; padding: .27rem 0 .27rem .75rem; border-left: 2px solid transparent;
  font-size: .83rem; line-height: 1.35; color: var(--ink-2); text-decoration: none;
}
.docs-toc .toc-h3 a { padding-left: 1.5rem; font-size: .79rem; }
.docs-toc a:hover { color: var(--ink); }
.docs-toc a.is-active { color: var(--ink); border-left-color: var(--red); }

.toc-inline { display: none; margin: -.4rem 0 1.8rem; border-top: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); }
.toc-inline summary {
  cursor: pointer; padding: .7rem 0; list-style: none;
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink);
}
.toc-inline summary::-webkit-details-marker { display: none; }
.toc-inline summary::after { content: "+"; float: right; font: 500 .9rem/1 var(--mono); color: var(--ink-2); }
.toc-inline[open] summary::after { content: "\2212"; }
.toc-inline ol { padding: 0 0 .8rem; }
.prose .toc-inline li { margin: 0; }
.prose .toc-inline a { display: block; padding: .22rem 0; font-size: .92rem; text-decoration: none; color: var(--ink-2); }
.prose .toc-inline .toc-h3 a { padding-left: 1rem; font-size: .86rem; }

/* ---------- pager ---------- */
.docs-pager { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; max-width: var(--prose); margin-top: 4.5rem; }
.docs-pager a { display: grid; gap: .3rem; align-content: start; padding-top: .9rem; border-top: 2px solid var(--ink); text-decoration: none; color: var(--ink); }
.docs-pager a:hover { border-top-color: var(--red); }
.pager-next { text-align: right; }
.pager-title { display: inline-flex; align-items: center; gap: .55rem; font-size: 1.1rem; font-weight: 600; letter-spacing: -.01em; line-height: 1.25; }
.pager-next .pager-title { justify-content: flex-end; }
.pager-title::after, .pager-prev .pager-title::before { content: ""; flex: none; width: 8px; height: 8px; background: var(--btn-arrow); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.pager-prev .pager-title::after { display: none; }
.pager-prev .pager-title::before { transform: rotate(180deg); }

/* ---------- landing ---------- */
.docs-hero .hero-grid { align-items: center; }
.docs-hero .hero-copy { gap: 1.4rem; }
.docs-searchbox-hero { max-width: 24rem; margin: .25rem 0 0; background: var(--ice); }
.docs-arch { margin: 0; min-width: 0; }
.docs-arch-sheet { background: var(--paper); border: 1px solid var(--line); padding: clamp(.9rem, 2vw, 1.5rem); }
.docs-arch-sheet svg { display: block; width: 100%; height: auto; }
.docs-arch-empty { display: grid; place-items: center; aspect-ratio: 16 / 10; border: 1px dashed var(--line); }
.docs-landing-h2 { margin: 0 0 2.25rem; }
.docs-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.5rem clamp(1.5rem, 3vw, 2.5rem); }
.docs-card { display: grid; gap: .6rem; align-content: start; padding-top: 1rem; border-top: 2px solid var(--ink); min-width: 0; }
.docs-card .lbl b { color: var(--ink); }
.docs-card h3 { font-size: 1.45rem; letter-spacing: -.02em; }
.docs-card h3 a { text-decoration: none; }
.docs-card h3 a:hover { text-decoration: underline; text-decoration-color: var(--red); text-decoration-thickness: 2px; text-underline-offset: .2em; }
.docs-card p { font-size: .93rem; color: var(--ink-2); }
.docs-card ul { list-style: none; margin: .35rem 0 0; padding: 0; border-top: 1px solid var(--line-2); }
.docs-card li a {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .48rem 0;
  border-bottom: 1px solid var(--line-2); font-size: .93rem; color: var(--ink); text-decoration: none;
}
.docs-card li a::after { content: ""; flex: none; width: 7px; height: 7px; background: var(--line); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.docs-card li a:hover::after { background: var(--red); }
.docs-card-empty { font-size: .85rem !important; border-top: 1px dashed var(--line); padding-top: .55rem; }
.docs-card-more { justify-self: start; font-size: .88rem; margin-top: .2rem; }
.docs-landing-body .prose { margin-top: .5rem; }
@media (max-width: 1000px) { .docs-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .docs-cards { grid-template-columns: minmax(0, 1fr); } }

/* ---------- search dialog ---------- */
.docs-search {
  width: min(42rem, calc(100vw - 2rem)); max-width: none; max-height: min(38rem, calc(100vh - 3rem)); margin: 9vh auto auto; padding: 0;
  display: none; flex-direction: column; overflow: hidden;
  color: var(--ink); background: var(--ice); border: 2px solid var(--ink); border-radius: 3px;
  box-shadow: 0 28px 70px rgba(8, 18, 24, .38);
}
.docs-search[open] { display: flex; }
.docs-search::backdrop { background: rgba(12, 24, 30, .5); }
.ds-box { display: flex; align-items: center; gap: .7rem; padding: 0 .8rem 0 1rem; border-bottom: 1px solid var(--ink); flex: none; }
.ds-box > svg { width: 18px; height: 18px; fill: none; stroke: var(--ink-2); stroke-width: 1.5; stroke-linecap: round; flex: none; }
.ds-box input {
  flex: 1; min-width: 0; height: 3.4rem; padding: 0; font: 500 1.08rem var(--sans); color: var(--ink);
  background: none; border: 0; outline: none; -webkit-appearance: none; appearance: none;
}
.ds-box input::placeholder { color: var(--ink-2); opacity: .8; }
.ds-box input::-webkit-search-cancel-button { display: none; }
.ds-box:focus-within { box-shadow: inset 0 -2px 0 var(--red); }
.ds-close { flex: none; cursor: pointer; background: none; border: 0; padding: .3rem; }
.ds-results { list-style: none; margin: 0; padding: .45rem; overflow-y: auto; flex: 1; min-height: 0; overscroll-behavior: contain; }
.ds-results li + li { margin-top: 2px; }
.ds-results a {
  display: grid; gap: .12rem; padding: .62rem .8rem .68rem; border-left: 2px solid transparent; border-radius: 2px;
  color: var(--ink); text-decoration: none;
}
.ds-results [aria-selected="true"] a { background: var(--paper); border-left-color: var(--red); }
.ds-meta { display: flex; gap: .5rem; align-items: baseline; min-width: 0; }
.ds-sec { font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.ds-title { font-weight: 600; font-size: 1rem; line-height: 1.3; }
.ds-head { font-size: .84rem; color: var(--ink); line-height: 1.35; }
.ds-head::before { content: "#"; font-family: var(--mono); color: var(--ink-2); margin-right: .35rem; }
.ds-snip { font-size: .84rem; line-height: 1.45; color: var(--ink-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ds-results mark { background: none; color: var(--ink); font-weight: 700; box-shadow: inset 0 -2px 0 var(--red); }
.ds-empty { padding: 1.4rem 1rem; color: var(--ink-2); font-size: .95rem; }
.ds-foot {
  display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; padding: .6rem 1rem; border-top: 1px solid var(--line-2); flex: none;
  font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--ink-2);
}
.ds-foot span { display: inline-flex; gap: .35rem; align-items: center; }
@media (max-width: 600px) {
  .docs-search { width: 100vw; max-height: 100dvh; height: 100dvh; margin: 0; border: 0; border-radius: 0; }
  .ds-foot { display: none; }
}

/* ---------- responsive ---------- */
@media (max-width: 1199px) {
  .docs-shell { grid-template-columns: 14rem minmax(0, 1fr); }
  .docs-toc { display: none; }
  .toc-inline { display: block; }
}
@media (max-width: 960px) {
  .docs-shell { grid-template-columns: minmax(0, 1fr); }
  .docs-side {
    position: sticky; top: var(--hdr); z-index: 40; max-height: none; min-height: 0; overflow: visible;
    margin: 0 calc(-1 * var(--gutter)); padding: 0; border-right: 0; border-bottom: 1px solid var(--ink); background: var(--ice);
  }
  .docs-bar { display: flex; align-items: stretch; }
  html:not(.js) .docs-bar { display: none; }
  .docs-menu {
    flex: 1; display: flex; align-items: center; gap: .65rem; min-width: 0; padding: .75rem var(--gutter);
    font: inherit; color: var(--ink); text-align: left; background: none; border: 0; cursor: pointer;
  }
  .docs-menu-sec { flex: none; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--ink-2); }
  .docs-menu-page { flex: 1; min-width: 0; font-weight: 600; font-size: .93rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .docs-menu .chev { flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
  .docs-menu[aria-expanded="true"] .chev { transform: rotate(180deg); }
  .docs-bar-search { flex: none; width: 3.25rem; display: grid; place-items: center; color: var(--ink); background: none; border: 0; border-left: 1px solid var(--line-2); cursor: pointer; }
  .docs-bar-search svg { width: 18px; height: 18px; }
  .docs-menu:focus-visible, .docs-bar-search:focus-visible { outline-offset: -3px; }
  .docs-side-inner { padding: 1.25rem var(--gutter) 1.5rem; }
  .js .docs-side-inner {
    display: none; position: absolute; left: 0; right: 0; top: 100%;
    max-height: calc(100vh - var(--hdr) - 3.2rem); max-height: calc(100dvh - var(--hdr) - 3.2rem); overflow-y: auto; overscroll-behavior: contain;
    background: var(--ice); border-bottom: 2px solid var(--ink); box-shadow: 0 18px 40px rgba(8, 18, 24, .18);
  }
  .js .docs-side.is-open .docs-side-inner { display: block; }
  .js .docs-side-inner .docs-searchbox { display: none; }
  .docs-main { padding-top: 1.4rem; }
  .docs-crumbs { margin-bottom: 1.6rem; }
}
@media (max-width: 600px) {
  .prose { font-size: 1.02rem; line-height: 1.66; }
  .code pre { padding: .85rem .9rem; font-size: .8rem; }
  .ep-head { flex-wrap: wrap; gap: .55rem .7rem; }
  .ep-path { flex-basis: calc(100% - 5rem); }
  .ep-copy { margin-left: 0; }
  .docs-pager { grid-template-columns: 1fr; gap: 1.6rem; }
  .docs-pager > span { display: none; }
  .docs-edit, button.docs-edit { font-size: .6rem; }
}

@media (prefers-reduced-motion: no-preference) {
  .docs-group a, .docs-toc a, .code-copy, .ep-copy, .tabs-list button, .docs-pager a, .ds-results a { transition: color .15s ease, border-color .15s ease, background-color .15s ease, opacity .15s ease; }
  .docs-menu .chev { transition: transform .2s ease; }
}

/* ---------- print ---------- */
@media print {
  :root, :root[data-theme="dark"], :root:not([data-theme="light"]) {
    --ice: #fff; --ice-2: #f2f2f2; --paper: #fff; --ink: #000; --ink-2: #333; --line: #999; --line-2: #ccc;
    --blue: #13294b; --blue-ink: #13294b; --red: #b8020d; --code-bg: #fff; --code-inline: #f0f0f0;
    --t-com: #555; --t-kw: #13294b; --t-str: #2b6a4e; --t-num: #94500a; --t-fn: #1d5a86; --t-ty: #5b4488; --t-prop: #0e5866; --t-var: #94500a; --t-meta: #7a3f66; --t-tag: #13294b;
    color-scheme: light;
  }
  body { background: #fff; color: #000; font-size: 10.5pt; }
  .skip, .top, .docs-side, .docs-toc, .docs-pager, .foot, .code-copy, .ep-copy, .docs-edit, .docs-edit-lbl, .h-anchor, .toc-inline, .docs-search, [data-search-open] { display: none !important; }
  .docs-shell { display: block; padding: 0; max-width: none; }
  .docs-main { padding: 0; }
  .prose, .docs-crumbs { max-width: none; }
  .code pre { white-space: pre-wrap; overflow: visible; word-break: break-word; }
  .code, .admon, .endpoint, .prose table, .docs-card { break-inside: avoid; }
  .prose h2, .prose h3 { break-after: avoid; }
  .tabs-list { display: none; }
  .js .tabs-panel:not(.is-active), .tabs-panel { display: block !important; padding-top: .5rem; }
  .tabs-panel::before { content: attr(data-label); display: block; margin: 0 0 .3rem; font-size: 7pt; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; }
  .tabs-panel > .code:first-child { margin-top: 0; border-top: 1px solid var(--code-line); }
  .prose a.ext::after { content: " (" attr(href) ")"; border: 0; width: auto; height: auto; margin: 0; vertical-align: baseline; font-size: .85em; color: #333; }
  .dotgrid { background: none; }
}
