@font-face { font-family: 'Bricolage Grotesque'; src: url('/fonts/bricolage-grotesque-variable.woff2') format('woff2'); font-weight: 200 800; font-display: swap; }
@font-face { font-family: 'JetBrains Mono'; src: url('/fonts/jetbrains-mono-regular.woff2') format('woff2'); font-display: swap; }
:root { color-scheme: dark; --bg:#0d1117; --panel:#161b22; --text:#e6edf3; --muted:#8b949e; --line:#252c35; --accent:#4f8ff7; --soft:rgba(79,143,247,.09); --code:#c7d7ef; }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) { color-scheme:light; --bg:#fff; --panel:#f6f8fa; --text:#1f2328; --muted:#616a75; --line:#e3e7ec; --accent:#2166cb; --soft:rgba(33,102,203,.07); --code:#254b79; } }
:root[data-theme="light"] { color-scheme:light; --bg:#fff; --panel:#f6f8fa; --text:#1f2328; --muted:#616a75; --line:#e3e7ec; --accent:#2166cb; --soft:rgba(33,102,203,.07); --code:#254b79; }
* { box-sizing:border-box; }
html { scroll-padding-top:100px; }
body { margin:0; background:var(--bg); color:var(--text); font:15px/1.75 system-ui,sans-serif; }
a { color:var(--accent); text-underline-offset:3px; }
a:hover { text-decoration:underline; }
button, input { font:inherit; }
button { cursor:pointer; color:var(--muted); background:transparent; border:1px solid var(--line); border-radius:6px; padding:5px 10px; }
button:hover { color:var(--text); background:var(--panel); }
:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
[hidden], .enhanced-only { display:none !important; }
.legacy-target { display:none; }
.legacy-target:target { display:block; padding:16px; background:var(--soft); }
.enhanced .enhanced-only { display:revert !important; }
.skip { position:fixed; left:-10000px; z-index:20; }
.skip:focus { left:16px; top:12px; background:var(--panel); padding:12px; }
header { display:flex; justify-content:space-between; align-items:center; gap:24px; padding:16px 32px; border-bottom:1px solid var(--line); }
.docs-header { height:72px; position:sticky; top:0; z-index:5; background:var(--bg); }
header nav { display:flex; align-items:center; gap:22px; font-size:13px; }
header a { text-decoration:none; }
.brand { display:flex; align-items:center; gap:0; font-weight:750; font-size:20px; color:var(--accent); letter-spacing:-.5px; white-space:nowrap; }
.brand img { margin-right:10px; border-radius:7px; }
.brand span { color:var(--text); }
.brand small { color:var(--muted); font:13px system-ui,sans-serif; margin-left:16px; border-left:1px solid var(--line); padding-left:16px; }
.search-launch { width:310px; text-align:left; font-size:13px; padding:7px 12px; background:var(--panel); }
.search-launch kbd { float:right; font-size:11px; border:1px solid var(--line); padding:0 5px; border-radius:3px; }
.dashboard-link { color:var(--text); }
.docs-layout { display:grid; grid-template-columns:220px minmax(0, 790px) 170px; gap:48px; max-width:1480px; margin:auto; padding:0 32px; }
.sidebar { position:sticky; top:72px; height:calc(100dvh - 72px); overflow-y:auto; scrollbar-width:thin; padding:26px 12px 40px 0; }
.nav-group { margin-bottom:25px; }
.nav-group h2 { font:650 11px/1.5 system-ui,sans-serif; letter-spacing:.07em; text-transform:uppercase; color:var(--text); margin:0 0 9px; padding:0 12px; }
.nav-group a { display:block; font-size:13px; line-height:1.5; padding:7px 12px; color:var(--muted); text-decoration:none; border-radius:6px; margin:1px 0; }
.nav-group a:hover { background:var(--panel); color:var(--text); }
.nav-group a[aria-current="page"] { color:var(--accent); background:var(--soft); font-weight:550; }
.mobile-navigation > summary { display:none; }
.docs-layout main { padding:38px 0 32px; min-width:0; }
.page-meta { display:flex; justify-content:space-between; gap:20px; color:var(--accent); font-size:12px; margin-bottom:28px; }
.page-meta > div { display:flex; align-items:center; gap:16px; }
.page-meta a { color:var(--muted); text-decoration:none; }
.copy-page { font-size:11px; padding:2px 8px; }
.eyebrow { font-size:10px; font-weight:650; letter-spacing:.15em; color:var(--accent); margin-bottom:8px; }
h1,h2,h3,h4 { line-height:1.3; }
h1 { font:650 clamp(30px,3vw,42px)/1.12 'Bricolage Grotesque',system-ui,sans-serif; letter-spacing:-1.2px; margin:0 0 16px; }
h2 { font:600 24px/1.35 'Bricolage Grotesque',system-ui,sans-serif; margin:44px 0 16px; letter-spacing:-.4px; }
h3 { font-size:17px; font-weight:600; margin:30px 0 12px; }
h4 { font-size:15px; }
p { margin:16px 0; }
main > p, main li { color:var(--muted); }
main strong, td code, li code, p code { color:var(--text); }
.page-description { font-size:17px; line-height:1.6; color:var(--muted); margin:0 0 26px; }
li { margin:8px 0; }
ul,ol { padding-left:24px; }
.entry-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:30px 0 38px; }
.entry-cards a { display:block; color:var(--text); border:1px solid var(--line); border-radius:10px; padding:20px; text-decoration:none; transition:border-color .15s,background .15s; }
.entry-cards a:hover { background:var(--panel); border-color:var(--accent); }
.entry-cards strong { display:block; font-size:15px; font-weight:600; padding-right:16px; margin-bottom:8px; }
.entry-cards span:not(.card-arrow) { display:block; font-size:13px; line-height:1.65; color:var(--muted); }
.card-arrow { float:right; color:var(--accent); }
code,kbd { font-family:'JetBrains Mono',ui-monospace,monospace; font-size:.82em; }
p code,li code,td code { background:var(--panel); padding:2px 4px; border-radius:4px; overflow-wrap:anywhere; }
.code-block { margin:20px 0; background:var(--panel); border:1px solid var(--line); border-radius:9px; overflow:hidden; }
.code-block figcaption { padding:8px 16px; color:var(--muted); font-size:11px; border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; min-height:38px; }
.code-block pre { margin:0; padding:18px; overflow:auto; line-height:1.8; color:var(--code); }
.code-block code { font-size:12px; white-space:pre; }
.copy-code { font-size:10px; padding:1px 7px; }
.code-tabs { display:flex; gap:4px; flex-wrap:wrap; margin-top:20px; }
.code-tabs button { border-color:transparent; border-bottom:2px solid transparent; border-radius:0; font-size:12px; }
.code-tabs [aria-selected="true"] { border-bottom-color:var(--accent); color:var(--accent); }
.code-tabs + .code-block { margin-top:8px; }
.callout { border-left:3px solid var(--accent); background:var(--soft); border-radius:0 6px 6px 0; padding:15px 18px; margin:24px 0; color:var(--muted); font-size:13px; }
.table { max-width:100%; overflow:auto; margin:20px 0; border:1px solid var(--line); border-radius:8px; }
table { width:100%; border-collapse:collapse; font-size:12px; line-height:1.65; }
th,td { padding:12px 14px; text-align:left; vertical-align:top; border-bottom:1px solid var(--line); }
th { background:var(--panel); font-weight:600; white-space:nowrap; }
td { color:var(--muted); }
tr:last-child td { border-bottom:0; }
.page-toc { position:sticky; top:106px; align-self:start; max-height:calc(100dvh - 130px); overflow:auto; font-size:12px; margin-top:42px; }
.page-toc > p { margin:0 0 12px; color:var(--text); font-weight:600; }
.page-toc nav { border-left:1px solid var(--line); }
.page-toc nav a { display:block; padding:5px 0 5px 15px; text-decoration:none; color:var(--muted); line-height:1.6; }
.page-toc nav a:hover { color:var(--accent); }
.toc-source { display:block; margin-top:25px; font-size:11px; text-decoration:none; }
.page-neighbours { margin-top:48px; padding-top:24px; border-top:1px solid var(--line); display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.page-neighbours a { text-decoration:none; font-size:14px; }
.page-neighbours a:last-child { text-align:right; }
.page-neighbours span { display:block; color:var(--muted); font-size:11px; margin-bottom:5px; }
footer { border-top:1px solid var(--line); margin-top:36px; padding-top:20px; color:var(--muted); font-size:11px; }
footer a { color:var(--muted); }
dialog { background:var(--bg); color:var(--text); border:1px solid var(--line); border-radius:12px; padding:0; width:min(680px,calc(100vw - 32px)); max-height:75dvh; margin-top:12dvh; box-shadow:0 24px 90px #0005; }
dialog::backdrop { background:#0008; }
.search-top { display:flex; padding:16px; gap:12px; border-bottom:1px solid var(--line); }
.search-top input { flex:1; min-width:0; border:0; background:transparent; color:var(--text); padding:6px; }
.search-status { padding:0 20px; font-size:12px; color:var(--muted); }
.search-results { padding:0 12px 16px; }
.search-results a { display:block; padding:12px; border-radius:6px; text-decoration:none; }
.search-results a:hover { background:var(--panel); }
.search-results small { display:block; color:var(--muted); font-size:11px; }
.search-results p { font-size:12px; color:var(--muted); margin:4px 0 0; }
/* The separately maintained bilingual security policy uses the same palette. */
.layout { display:grid; grid-template-columns:200px minmax(0,800px); max-width:1200px; margin:auto; gap:48px; padding:48px 32px; }
.layout aside nav { display:grid; gap:12px; }
@media(max-width:1250px) { .docs-layout { grid-template-columns:210px minmax(0,1fr); gap:36px; max-width:1100px; } .page-toc { display:none; } .search-launch { width:250px; } }
@media(max-width:900px) {
  .docs-header { padding:12px 20px; gap:12px; height:64px; }
  .brand small, .search-launch kbd, .dashboard-link { display:none; }
  header nav { gap:10px; } .search-launch { width:auto; font-size:0; } .search-launch::before { content:'Search'; font-size:12px; }
  .docs-layout { display:block; padding:0 20px; }
  .sidebar { position:static; height:auto; padding:14px 0 0; }
  .mobile-navigation > summary { display:block; cursor:pointer; padding:8px 12px; border:1px solid var(--line); border-radius:6px; font-size:13px; color:var(--muted); }
  .mobile-navigation > summary::after { content:'⌄'; float:right; }
  .mobile-navigation nav { padding-top:20px; }
  .docs-layout main { padding-top:25px; }
  .page-meta { margin-bottom:22px; }
  .layout { display:block; padding:24px 20px; }
}
@media(max-width:540px) {
  .docs-header { padding:12px 16px; gap:8px; }
  .brand { font-size:17px; } .brand img { width:24px; height:24px; margin-right:7px; }
  header nav { font-size:11px; gap:8px; } header nav > a:first-child { display:none; }
  .theme { font-size:11px; padding:5px; }
  .entry-cards { grid-template-columns:1fr; gap:10px; }
  .entry-cards a { padding:16px; }
  .page-meta { gap:8px; font-size:11px; }
  .page-meta > div { gap:8px; }
  h1 { font-size:32px; } h2 { font-size:23px; }
  .code-block pre { padding:14px; }
}
@media print {
  .docs-header,.sidebar,.page-toc,.page-meta,.page-neighbours,.skip,button,dialog { display:none!important; }
  .docs-layout { display:block; padding:0; }
  :root { --bg:white; --panel:#f5f5f5; --text:black; --muted:#333; --line:#ddd; --accent:#222; --code:black; }
  pre code { white-space:pre-wrap!important; }
  .code-block[hidden] { display:block!important; }
}
