/* Agentic Root Trust documentation. Builds on /app.css tokens (petrol ink on mineral paper, oxblood seal).
   The registry idea carries through: every section opens on a heavy rule like a ledger page, code sits on raised
   "slips" with a guilloche-blue edge, and HTTP methods are stamped in mono. */

body.docs { --docs-page: 90rem; --nav-w: 15.5rem; --toc-w: 14rem; }

/* ---------- Docs bar: title + search ---------- */
.docs-bar { border-bottom: 1px solid var(--rule); background: var(--paper); }
.docs-bar-inner {
  max-width: var(--docs-page); margin: 0 auto; padding: 0.7rem var(--gutter);
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1.5rem;
}
.docs-home {
  font-family: var(--f-display); font-weight: 750; font-stretch: 80%; font-size: 1.3rem; letter-spacing: -0.015em;
  text-decoration: none; margin-right: auto;
}
.docs-home:hover { text-decoration: underline; text-decoration-thickness: 2px; }

.docs-search { position: relative; flex: 0 1 26rem; min-width: 0; }
.docs-search-box { position: relative; display: flex; }
.docs-search-box input {
  flex: 1; min-width: 0; font: 500 1rem/1.3 var(--f-body); color: var(--ink); background: var(--paper-raised);
  border: 2px solid var(--ink); border-radius: 3px; padding: 0.55rem 2.6rem 0.55rem 0.8rem;
}
.docs-search-box input::placeholder { color: var(--ink-soft); opacity: 1; }
.docs-search-box input::-webkit-search-cancel-button { cursor: pointer; }
.docs-search-box input:focus ~ .kbd, .docs-search-box input:not(:placeholder-shown) ~ .kbd { display: none; }

.docs-results {
  position: absolute; z-index: 20; top: calc(100% + 0.4rem); right: 0; width: min(36rem, calc(100vw - 2 * var(--gutter)));
  max-height: min(70vh, 34rem); overflow-y: auto; background: var(--paper-raised); border: 2px solid var(--ink); border-radius: 3px;
  box-shadow: 6px 6px 0 var(--rule);
}
.docs-results ul { list-style: none; margin: 0; padding: 0; }
.docs-results li + li { border-top: 1px solid var(--rule); }
.docs-results a { display: block; padding: 0.7rem 0.9rem; text-decoration: none; }
.docs-results a:hover, .docs-results [aria-selected="true"] a { background: var(--neutral-wash); }
.docs-results [aria-selected="true"] a { box-shadow: inset 4px 0 0 var(--ink); }
.result-title { display: block; font-weight: 650; }
.result-where { display: block; font-size: 0.8125rem; color: var(--ink-soft); }
.result-snippet { display: block; font-size: 0.875rem; color: var(--ink-soft); margin-top: 0.2rem; }
.docs-results mark { background: var(--warn-wash); color: var(--ink); padding: 0 0.1em; border-radius: 2px; }
.results-empty { margin: 0; padding: 0.9rem; color: var(--ink-soft); font-size: 0.9375rem; }

.docs-nav-toggle { padding: 0.5rem 0.9rem; font-size: 0.9375rem; }

/* ---------- Layout ---------- */
.docs-layout {
  max-width: var(--docs-page); margin: 0 auto; padding: 0 var(--gutter);
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 2.5rem;
}
.docs-main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 3rem; min-width: 0; }
@media (min-width: 62rem) {
  .docs-layout { grid-template-columns: var(--nav-w) minmax(0, 1fr); }
}
@media (min-width: 84rem) {
  .docs-main.has-toc { grid-template-columns: minmax(0, 1fr) var(--toc-w); }
}

/* ---------- Sidebar ---------- */
.docs-nav { padding: 1.4rem 0 0.5rem; font-size: 0.9375rem; }
@media (min-width: 62rem) {
  .docs-nav {
    position: sticky; top: 0; align-self: start; max-height: 100vh; overflow-y: auto;
    padding: 2rem 0.5rem 2rem 0; border-right: 1px solid var(--rule);
  }
}
.docs-nav-group + .docs-nav-group { margin-top: 1.3rem; }
.docs-nav-title { font: 650 0.9375rem/1.3 var(--f-body); margin: 0 0 0.35rem; color: var(--ink); }
.docs-nav ul { list-style: none; margin: 0; padding: 0; }
.docs-nav li a {
  display: block; padding: 0.28rem 0.6rem; margin-left: -0.6rem; text-decoration: none; color: var(--ink-soft);
  border-left: 2px solid transparent; line-height: 1.35;
}
.docs-nav li a:hover { color: var(--ink); border-left-color: var(--rule-strong); }
.docs-nav li a[aria-current="page"] { color: var(--ink); font-weight: 650; border-left-color: var(--ink); background: var(--paper-raised); }
.docs-nav[data-collapsed] .docs-nav-group { display: none; }
@media (max-width: 61.99rem) {
  .docs-nav { border-bottom: 1px solid var(--rule); padding-bottom: 1.2rem; }
  .docs-nav[data-collapsed] { padding: 0; border-bottom: 0; }
  .docs-nav li a { margin-left: 0; }
}

/* ---------- Article ---------- */
.docs-article { min-width: 0; padding: 2.2rem 0 1rem; }
.docs-head { padding-bottom: 1.6rem; border-bottom: 1px solid var(--rule); margin-bottom: 0.5rem; }
.docs-crumb { margin: 0 0 0.8rem; font-size: 0.9375rem; color: var(--ink-soft); }
.docs-crumb a { color: var(--ink-soft); }
.docs-head h1 {
  font-family: var(--f-display); font-weight: 800; font-stretch: 75%; letter-spacing: -0.03em;
  font-size: clamp(2.3rem, 5.5vw, 3.6rem); line-height: 0.95; margin: 0; max-width: 18ch; text-wrap: balance;
}
.docs-lede { font-size: clamp(1.08rem, 1.8vw, 1.25rem); line-height: 1.45; max-width: 52ch; margin: 1rem 0 0; color: var(--ink-soft); text-wrap: pretty; }

.docs-body { max-width: 46rem; }
.docs-body > p, .docs-body > ul, .docs-body > ol, .docs-body li { max-width: var(--measure); }
.docs-body h2 {
  font-family: var(--f-display); font-weight: 750; font-stretch: 85%; letter-spacing: -0.02em;
  font-size: clamp(1.45rem, 3vw, 1.85rem); line-height: 1.15;
  margin: 2.6rem 0 0.8rem; padding-top: 0.9rem; border-top: 2px solid var(--ink);
}
.docs-body h3 { font-size: 1.15rem; font-weight: 650; margin: 1.9rem 0 0.5rem; line-height: 1.3; }
.docs-body h4 { font-size: 1rem; font-weight: 650; margin: 1.5rem 0 0.4rem; }
.docs-body h2, .docs-body h3, .docs-body h4 { scroll-margin-top: 1rem; }
.docs-body p { margin: 0.8rem 0; }
.docs-body ul, .docs-body ol { padding-left: 1.3rem; margin: 0.8rem 0; }
.docs-body li { margin: 0.3rem 0; }
.docs-body li::marker { color: var(--ink-soft); }
.docs-body strong { font-weight: 650; }
.docs-body hr { border: 0; border-top: 1px solid var(--rule); margin: 2rem 0; }

.anchor { margin-left: 0.4rem; color: var(--rule-strong); text-decoration: none; font-weight: 500; opacity: 0; }
h2:hover > .anchor, h3:hover > .anchor, h4:hover > .anchor { opacity: 1; }

/* Inline code; ids and paths read as registry entries. */
.docs-body :not(pre) > code {
  background: var(--neutral-wash); padding: 0.08em 0.32em; border-radius: 2px; font-size: 0.86em;
}
.docs-body a code { text-decoration: inherit; }
kbd { font: 600 0.82em/1 var(--f-id); border: 1px solid var(--rule-strong); border-bottom-width: 2px; border-radius: 3px; padding: 0.12em 0.38em; }

/* Code slips */
.code {
  margin: 1.1rem 0 1.3rem; border: 1px solid var(--rule-strong); border-left: 4px solid var(--guilloche);
  border-radius: 3px; background: var(--paper-raised); max-width: 100%;
}
.code-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 0.3rem 0.4rem 0.3rem 0.85rem; border-bottom: 1px solid var(--rule);
}
.code-lang { font: 500 0.78rem/1 var(--f-id); color: var(--ink-soft); }
.copy-btn {
  font: 600 0.8125rem/1 var(--f-body); color: var(--ink); background: transparent; cursor: pointer;
  border: 1px solid var(--rule-strong); border-radius: 3px; padding: 0.35rem 0.6rem;
}
.copy-btn:hover { background: var(--neutral-wash); }
.copy-btn[data-state="done"] { color: var(--ok); border-color: currentColor; }
.code pre { margin: 0; padding: 0.9rem 1rem 1rem; overflow-x: auto; tab-size: 2; }
.code code { font: 400 0.84rem/1.6 var(--f-id); white-space: pre; overflow-wrap: normal; }

blockquote {
  margin: 1.3rem 0; padding: 0.8rem 1rem; max-width: var(--measure);
  border-left: 4px solid var(--guilloche); background: var(--paper-raised); font-size: 0.9375rem;
}
blockquote p { margin: 0.3rem 0; }

.docs-body .table-scroll { margin: 1rem 0 1.4rem; }
.docs-body table { font-size: 0.9rem; }
.docs-body td code, .docs-body th code { font-size: 0.86em; }
.docs-body table.fields td:first-child { white-space: nowrap; }
.rules { font-size: 0.8125rem; color: var(--ink-soft); }
.muted { color: var(--ink-soft); }

/* ---------- Home: two paths ---------- */
.paths { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem; margin: 1.8rem 0 0.5rem; }
@media (min-width: 42rem) { .paths { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.paths section { border: 2px solid var(--ink); border-radius: 3px; padding: 1.1rem 1.2rem 1.2rem; background: var(--paper-raised); }
.docs-body .paths h2 {
  border: 0; margin: 0 0 0.4rem; padding: 0; font-size: 1.3rem;
}
.paths p { margin: 0.4rem 0 0; color: var(--ink-soft); }
.paths p:last-child { margin-top: 0.9rem; }
.paths p:last-child a { color: var(--ink); font-weight: 650; }

/* ---------- API reference ---------- */
.op-count { color: var(--ink-soft); }
.op { margin-top: 0.5rem; }
.op-line { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; margin: 0.2rem 0 1rem; }
.docs-body .op-path { background: none; padding: 0; font: 500 1.02rem/1.3 var(--f-id); overflow-wrap: anywhere; }
.method {
  display: inline-block; font: 700 0.78rem/1 var(--f-id); padding: 0.32rem 0.45rem 0.28rem; border: 1.5px solid currentColor; border-radius: 2px;
}
.method-get { color: var(--ok); }
.method-post { color: var(--ink); }
.method-put, .method-patch { color: var(--warn); }
.method-delete { color: var(--bad); }
.op-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 0.6rem 1.5rem; margin: 0 0 1rem; }
.op-meta div { border-left: 2px solid var(--rule-strong); padding-left: 0.75rem; }
.op-meta dt { font-size: 0.8125rem; color: var(--ink-soft); }
.op-meta dd { margin: 0.1rem 0 0; font-weight: 600; font-size: 0.9375rem; }
.example-label { font-weight: 650; font-size: 0.9375rem; margin: 1.2rem 0 -0.5rem; }
.op-body-type { margin: 0.4rem 0; }
.schema-type { color: var(--ink-soft); font-size: 0.9375rem; }
.docs-body .schema h2 code { background: none; padding: 0; font-size: 0.95em; }

/* ---------- Pager ---------- */
.docs-pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 3.5rem 0 0; max-width: 46rem; }
.docs-pager a {
  display: grid; gap: 0.2rem; padding: 0.9rem 1rem; border: 1px solid var(--rule-strong); border-radius: 3px; text-decoration: none;
}
.docs-pager a:hover { background: var(--paper-raised); border-color: var(--ink); }
.pager-next { text-align: right; grid-column: 2; }
.pager-label { font-size: 0.8125rem; color: var(--ink-soft); }
.pager-title { font-weight: 650; }
@media (max-width: 30rem) { .docs-pager { grid-template-columns: minmax(0, 1fr); } .pager-next { grid-column: 1; } }

/* ---------- On this page ---------- */
.docs-toc { display: none; }
@media (min-width: 84rem) {
  .docs-toc {
    display: block; position: sticky; top: 0; align-self: start; max-height: 100vh; overflow-y: auto;
    padding: 2.4rem 0 2rem; font-size: 0.875rem;
  }
}
.docs-toc h2 { font: 650 0.9375rem/1.3 var(--f-body); margin: 0 0 0.5rem; }
.docs-toc ol { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--rule); }
.docs-toc a { display: block; padding: 0.22rem 0 0.22rem 0.8rem; margin-left: -1px; border-left: 2px solid transparent; color: var(--ink-soft); text-decoration: none; line-height: 1.35; }
.docs-toc a:hover { color: var(--ink); }
.docs-toc a[aria-current="true"] { color: var(--ink); border-left-color: var(--guilloche); font-weight: 600; }
.docs-toc .toc-3 a { padding-left: 1.6rem; }

.site-footer { margin-top: 3rem; }

@media (max-width: 40rem) {
  .docs-search { flex: 1 1 100%; order: 3; }
  .docs-home { margin-right: auto; }
}
@media (prefers-reduced-motion: no-preference) {
  html:focus-within { scroll-behavior: smooth; }
}

/* Wide docs layout: align the shared header and footer with it. */
body.docs .site-header .wrap, body.docs .site-footer .wrap { max-width: var(--docs-page); }
/* Prose tables wrap their first column (app.css keeps it on one line for registry ledgers). */
.docs-body tbody td:first-child { white-space: normal; min-width: 7rem; }
.docs-body table.fields td:first-child, .docs-body td.num { white-space: nowrap; }
.docs-body td:first-child code { white-space: nowrap; overflow-wrap: normal; }
