:root{--ink:#18313d;--muted:#526977;--accent:#00676b;--line:#d7e3e6;--soft:#f2f7f7}
*{box-sizing:border-box}html{scroll-padding-top:85px}body{margin:0;color:var(--ink);background:white;font:16px/1.8 DocLocal,system-ui,sans-serif;word-break:keep-all;overflow-wrap:anywhere}a{color:var(--accent);text-underline-offset:4px}button,input{font:inherit}button,summary{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #b9680a;outline-offset:3px}.skip{position:fixed;top:-80px;background:white;padding:10px;z-index:100}.skip:focus{top:4px}.topbar{min-height:66px;position:sticky;top:0;z-index:10;background:#fffffff5;border-bottom:1px solid var(--line);padding:12px 28px;display:flex;gap:16px;align-items:center;justify-content:space-between}.brand{font-size:20px;font-weight:750;text-decoration:none}.search-toggle{flex-shrink:0;border:1px solid var(--line);background:var(--soft);border-radius:6px;padding:5px 12px;color:var(--ink)}kbd{margin-left:15px}.layout{display:grid;grid-template-columns:220px minmax(0,1fr) 180px;max-width:1560px;margin:auto}.sidebar{padding:28px 16px;border-right:1px solid var(--line);height:calc(100vh - 70px);position:sticky;top:70px;overflow:auto;background:#fbfdfd}.sidebar nav,.mobile-nav nav{display:flex;flex-direction:column}.sidebar a,.mobile-nav nav a{display:block;font-size:14px;padding:8px 12px;border-radius:4px;text-decoration:none}.sidebar a[data-current-page],.mobile-nav a[data-current-page],.sidebar a[aria-current],.mobile-nav a[aria-current]{background:#e0f0ed;font-weight:bold}.sidebar a:hover{background:var(--soft)}main{padding:30px 44px 80px;min-width:0;max-width:1120px}.breadcrumb{color:var(--muted);font-size:12px;margin-bottom:24px}.on-page{padding:36px 16px;position:sticky;top:70px;height:calc(100vh - 70px);overflow:auto;font-size:12px}.on-page a{display:block;padding:5px 0}.on-page strong{color:var(--muted)}h1{font-size:32px;line-height:1.4;margin:0 0 24px}h2{font-size:23px;line-height:1.5;margin:40px 0 16px;padding-top:12px;border-top:1px solid var(--line)}h3{font-size:18px;line-height:1.6;margin:28px 0 12px}p{margin:14px 0 20px}ul,ol{padding-left:24px}li{margin:6px 0}code{font:13px/1.7 ui-monospace,Consolas,DocLocal,monospace;background:#edf3f5;border-radius:3px;padding:2px 4px;overflow-wrap:anywhere}pre{background:#f4f7f8;padding:18px;border:1px solid var(--line);border-radius:6px;overflow:auto;font:13px/1.8 ui-monospace,Consolas,DocLocal,monospace;white-space:pre;word-break:normal}pre code{padding:0;background:none;white-space:pre}.table-wrap{overflow:auto;max-width:100%;margin:20px 0 25px;border:1px solid var(--line);border-radius:6px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:12px;vertical-align:top;border:1px solid var(--line);text-align:left}thead{background:#edf5f4}tbody tr:nth-child(even){background:#fafcfc}blockquote{margin:20px 0;border-left:3px solid var(--accent);padding:6px 20px;background:#f3f8f7}.diagram{margin:24px 0;border:1px solid var(--line);border-radius:8px;background:#fbfdfd;overflow:hidden}.diagram-scroll{padding:18px 10px;overflow:auto;text-align:center}.diagram svg{height:auto;min-width:var(--diagram-min-width,0);max-width:100%}.diagram figcaption{border-top:1px solid var(--line);padding:8px 14px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:12px}.diagram details{max-width:100%}.diagram pre{max-width:100%;text-align:left}.diagram-link{cursor:pointer}.diagram-link:hover .label-container{stroke:#00676b;stroke-width:2px}.diagram-link:focus{outline:3px solid #b9680a}.related,.references{border-top:1px solid var(--line);margin-top:30px;padding:16px 0;display:flex;gap:12px;flex-wrap:wrap}.related strong,.references strong{width:100%}.source-code{white-space:pre}.source-line{display:block;white-space:pre}.source-line:target{background:#fff0ba}.source-line a{display:inline-block;min-width:40px;text-align:right;padding-right:10px;color:var(--muted)}.mobile-nav,.local-nav{display:none}dialog{border:1px solid var(--line);border-radius:12px;width:min(700px,calc(100vw - 28px));max-height:90vh;padding:24px;box-shadow:0 20px 90px #17364544;color:var(--ink)}dialog::backdrop{background:#17364577}dialog label{display:block;font-size:20px;font-weight:bold;margin-bottom:14px}.close{float:right;border:0;background:none;font-size:26px}#doc-search{width:100%;padding:10px;border:1px solid #829da4;border-radius:6px}#search-results{max-height:52vh;overflow:auto;display:flex;flex-direction:column;margin-top:14px}#search-results a{display:flex;flex-direction:column;border-bottom:1px solid var(--line);padding:12px 6px}#search-results span{font-size:12px;color:var(--muted)}dialog p{font-size:12px;color:var(--muted)}img{max-width:100%;height:auto}
@media(max-width:1180px){.layout{grid-template-columns:210px minmax(0,1fr)}.on-page{display:none}.local-nav{display:block}main{padding:28px 30px 70px}}
@media(max-width:760px){.topbar{padding:10px 16px;min-height:60px}.brand{font-size:17px}.search-toggle{font-size:12px;padding:5px 8px}kbd{display:none}.layout{display:block}.sidebar{display:none}main{padding:20px 18px 50px}h1{font-size:27px;margin-top:22px}h2{font-size:21px}body{font-size:15px}.mobile-nav{display:block;border:1px solid var(--line);border-radius:6px;margin-bottom:22px;background:var(--soft)}.mobile-nav summary,.local-nav summary{padding:8px 12px;font-size:13px}.mobile-nav nav{padding:8px;max-height:50vh;overflow:auto}th,td{min-width:130px;padding:10px}.diagram-scroll{padding:12px 6px}pre{padding:12px;font-size:12px}}
@media print{.topbar,.sidebar,.on-page,.mobile-nav,.local-nav,.breadcrumb,dialog,.skip{display:none}.layout{display:block}main{padding:0;max-width:none}body{font-size:11px}.diagram,table{break-inside:avoid}.diagram figcaption{display:none}a{color:inherit}}

.sidebar ul,.mobile-nav ul,.on-page ul,.local-nav ul{list-style:none;margin:0;padding:0}
.sidebar li,.mobile-nav li,.on-page li,.local-nav li{margin:0}
.sidebar details>ul,.mobile-nav details>ul{padding-left:12px;border-left:1px solid var(--line)}
.sidebar summary,.mobile-nav nav summary{font-size:12px;padding:4px 12px;color:var(--muted)}
.nav-group+.nav-group{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.nav-group h2{font-size:13px;letter-spacing:.02em;color:var(--muted);margin:0 0 8px;padding:0 12px;border:0}
.nav-group small{display:block;font-size:11px;font-weight:400;color:var(--muted)}
.sidebar a[aria-current="location"],.mobile-nav a[aria-current="location"],.on-page a[aria-current],.local-nav a[aria-current]{box-shadow:inset 3px 0 var(--accent);background:#e0f0ed;font-weight:700}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.breadcrumb li{margin:0}.breadcrumb li+li:before{content:"/";margin-right:8px;color:var(--muted)}
.on-page ul ul,.local-nav ul ul{padding-left:16px;border-left:1px solid var(--line)}
.on-page a,.local-nav a{padding:6px 8px;text-decoration:none}.on-page a:hover,.local-nav a:hover{background:var(--soft)}
.local-nav{border:1px solid var(--line);border-radius:6px;background:var(--soft);margin:0 0 26px;font-size:13px}
.local-nav summary{padding:10px 14px;font-weight:650}.local-nav nav{padding:8px 12px;max-height:45vh;overflow:auto}.local-nav a{display:block}
h4,h5,h6{font-size:16px;line-height:1.6;margin:24px 0 12px}
.evidence-index{list-style:none;padding:0}.evidence-index>li{padding:22px 0;border-bottom:1px solid var(--line)}.evidence-index p{font-size:14px;margin:8px 0}.evidence-index nav{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px}
.topbar:has(.source-context){flex-wrap:wrap;background:white}
.sidebar,.on-page{top:var(--source-header-height,70px);height:calc(100vh - var(--source-header-height,70px))}
.source-context{flex-basis:100%;min-width:0;font-size:13px;line-height:1.6;max-height:40vh;overflow:auto}
.source-context code{font-size:inherit;white-space:normal;word-break:break-all}
.source-context summary{padding:6px 0;font-weight:650;color:var(--accent)}
.source-context nav{display:flex;flex-direction:column;gap:8px;padding:4px 0 8px}

/* Library navigation remains native links and disclosures with JavaScript off. */
.catalog-link{font-weight:700;border:1px solid var(--line);background:white;margin-bottom:22px}
.nav-group h2 a{font:inherit;color:var(--ink);padding:6px 0;text-decoration:underline;text-underline-offset:4px}
.context-nav{margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}
.context-nav>strong{font-size:13px;padding:0 12px}
.context-nav>p{font-size:12px;color:var(--muted);margin:16px 12px 4px}
.context-nav>ul{padding:0;margin:0;list-style:none}
.catalog-tree{list-style:none;padding:0;margin:24px 0}
.catalog-tree li{margin:0;padding:6px 0;border-top:1px solid var(--line)}
.catalog-tree a{display:inline-block;padding:6px 4px;font-weight:600}
.catalog-tree ul{list-style:none;margin:8px 0 4px 12px;padding-left:18px;border-left:2px solid var(--line)}
.catalog-tree summary{padding:6px 4px;color:var(--muted);font-size:14px}
.catalog-tree li:target{background:#fff7db;scroll-margin-top:90px}
.catalog-count,.relation-count{font-size:14px;color:var(--muted)}
.catalog-pagination,.relation-pagination,.relation-filter{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:20px 0}
.catalog-pagination a,.relation-pagination a,.relation-filter a{display:inline-flex;align-items:center;min-height:44px;padding:6px 14px;border:1px solid var(--line);border-radius:6px;background:white;text-decoration:none}
.relation-filter a[aria-current]{background:#e0f0ed;border-color:var(--accent);font-weight:700;box-shadow:inset 0 -3px var(--accent)}
.typed-relations{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:6px;background:#f6faf9;padding:18px 22px;margin:24px 0;font-size:14px}
.typed-relations h2{font-size:17px;border:0;margin:0 0 12px;padding:0}
.typed-relations p{margin:12px 0 6px;font-weight:600}
.typed-relations ul{margin:8px 0 18px;padding-left:20px}
.typed-relations li{margin:10px 0}
.relation-list{list-style:none;padding:0;margin:24px 0}
.relation-list>li{border:1px solid var(--line);border-radius:8px;padding:18px 20px;margin:14px 0;line-height:2}
.relation-list>li>strong{font-size:13px;color:var(--muted)}
.relation-list p{margin:8px 0;font-size:14px}
.relation-list p:empty{display:none}
.relation-list nav{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;border-top:1px solid var(--line);padding-top:8px;margin-top:12px}
.relation-focus{font-size:12px;display:inline-block;padding:2px 7px;margin:2px 4px;border:1px solid var(--line);border-radius:4px;background:var(--soft)}
.relation-graph{margin:24px 0;border:1px solid var(--line);border-radius:8px;background:#fbfdfd;overflow:hidden}
/* Keep Mermaid labels at their rendered size; the viewport scrolls instead of shrinking text. */
.relation-graph svg{max-width:none!important;height:auto}
.relation-graph .diagram-scroll{text-align:left;max-height:70vh}
.relation-graph figcaption{border-top:1px solid var(--line);padding:10px 14px;font-size:13px;color:var(--muted)}
.redirect-notice{padding:18px 22px;background:#fff9e9;border:1px solid #dbc99b;border-radius:8px;margin:24px 0}
.redirect-notice h2{border:0;padding:0;margin:0 0 12px;font-size:20px}
.redirect-notice li{padding:6px 0}
#search-dialog{overscroll-behavior:contain}
#search-status{margin:12px 0 6px;line-height:1.6;min-height:1.6em;font-size:13px}
#search-status[data-state="loading"]{color:var(--accent)}
#search-status[data-state="incomplete"],#search-status[data-state="error"]{color:#83350a;background:#fff6e5;border-left:3px solid #a6570d;padding:10px 12px}
#search-results{min-height:44px;scrollbar-gutter:stable;overscroll-behavior:contain}
#search-results a{text-decoration:none;padding:14px 10px;gap:3px}
#search-results a:hover,#search-results a:focus-visible{background:var(--soft)}
#search-results strong{text-decoration:underline;text-underline-offset:3px;line-height:1.6}
#search-results span{line-height:1.6}
#search-results .search-result-meta{font-size:11px;overflow-wrap:anywhere;word-break:normal}
.search-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.search-pagination button,#search-retry{min-height:44px;border:1px solid var(--line);border-radius:6px;background:var(--soft);padding:6px 16px;color:var(--ink)}
.search-pagination button:disabled{color:#687b86;background:#f7f9f9;cursor:default}
#search-page{font-size:12px;text-align:center;color:var(--muted)}
#search-retry{margin-top:14px}
@media(max-width:1180px){.catalog-tree ul{padding-left:14px}}
@media(max-width:760px){
  .context-nav{margin-top:16px;padding-top:14px}
  .catalog-tree ul{margin-left:6px;padding-left:12px}
  .typed-relations{padding:14px 16px}
  .relation-list>li{padding:14px 16px}
  .relation-filter{gap:8px}
  .relation-filter a{font-size:13px;padding:6px 10px}
  .relation-graph figcaption{font-size:12px}
  #search-dialog{padding:18px;max-height:calc(100dvh - 24px)}
  #search-results{max-height:45dvh}
  .search-pagination{gap:8px}
  .search-pagination button{padding:6px 12px}
  .mobile-nav nav a,.mobile-nav nav summary,.local-nav nav a{min-height:40px}
}
@media print{.relation-graph{overflow:visible}.relation-graph .diagram-scroll{max-height:none;overflow:visible}.relation-graph svg{max-width:100%!important}.relation-filter,.relation-pagination,.catalog-pagination{display:none}.typed-relations,.relation-list>li{break-inside:avoid}}
.catalog-breadcrumb{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:13px;margin:18px 0;color:var(--muted)}
.catalog-tree .catalog-children{font-size:13px;font-weight:400}
.relation-graph svg{min-width:var(--diagram-min-width,640px)}
@media print{.relation-graph svg{min-width:0}}
#search-results .search-result-groups{color:var(--accent);font-size:12px}
#search-results span:empty{display:none}
@media(max-width:760px){.mobile-nav .context-nav{max-height:none;overflow:visible;padding:14px 0 0}}

@font-face{font-family:DocLocal;src:url(font.ttf);font-weight:100 900;font-display:swap}
