/* kaava Developers: Tokens wie packages/ui/src/styles/globals.css, Schriften selbst gehostet (keine CDNs). */
@font-face{font-family:"Figtree Variable";font-style:normal;font-display:swap;font-weight:300 900;src:url(/fonts/figtree-latin-wght-normal.woff2) format("woff2-variations")}
@font-face{font-family:"Bricolage Grotesque Variable";font-style:normal;font-display:swap;font-weight:200 800;src:url(/fonts/bricolage-grotesque-latin-opsz-normal.woff2) format("woff2-variations")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}

:root{
  --brand:#0f92fb; --brand-strong:#0a74cc; --brand-soft:#e4f2ff;
  --surface:#f3f5f9; --raised:#ffffff; --sunken:#eef1f6;
  --chrome:#16202e; --chrome-ink:#e6ebf2; --chrome-muted:#94a0b2;
  --line:#e4e8ef; --line-strong:#8a94a6;
  --ink:#000343; --ink-muted:#556173;
  --code-bg:#0f1722; --code-ink:#dfe7f1; --code-muted:#7d8ba0; --code-str:#9fd49b; --code-key:#7cc4ff; --code-kw:#f0b46a;
  --f-display:"Bricolage Grotesque Variable","Figtree Variable",system-ui,sans-serif;
  --f-sans:"Figtree Variable",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono",monospace;
  --r-sm:10px; --r-xs:6px;
}
@media (prefers-color-scheme:dark){:root{
  --brand:#4aaefc; --brand-strong:#86c9ff; --brand-soft:#0f2b45;
  --surface:#0d131c; --raised:#151d29; --sunken:#0a0f16;
  --chrome:#0a0f16;
  --line:#253041; --line-strong:#637089;
  --ink:#e8edf5; --ink-muted:#9aa6b8;
  --code-bg:#070b11; color-scheme:dark}}

*{box-sizing:border-box}
body{margin:0;background:var(--surface);color:var(--ink);font:15px/1.65 var(--f-sans)}
a{color:var(--brand-strong);text-underline-offset:2px}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
code{font:0.88em var(--f-mono);background:var(--sunken);border:1px solid var(--line);padding:0 5px;border-radius:5px;overflow-wrap:anywhere}

/* top bar */
.top{position:sticky;top:0;z-index:20;background:var(--chrome);color:var(--chrome-ink);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.top-in{max-width:1280px;margin:0 auto;height:58px;display:flex;align-items:center;gap:16px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;white-space:nowrap}
.logo img{display:block;height:24px;width:auto}
.logo small{font:500 14px var(--f-sans);color:var(--chrome-muted);padding-left:10px;border-left:1px solid #2b3747}
.search{margin-left:auto;position:relative;flex:0 1 300px;min-width:0}
.search input{width:100%;height:36px;border-radius:var(--r-xs);border:1px solid #2b3747;background:#1d2938;color:var(--chrome-ink);padding:0 12px 0 34px;font:14px var(--f-sans)}
.search input::placeholder{color:var(--chrome-muted)}
.search svg{position:absolute;left:11px;top:10px}
.lang{display:flex;margin:0;padding:0;min-width:0;border:1px solid #2b3747;border-radius:var(--r-xs);overflow:hidden}
.lang button{background:none;border:0;color:var(--chrome-muted);font:600 12px var(--f-mono);padding:0 10px;height:34px;cursor:pointer}
.lang button[aria-pressed=true]{background:#26364a;color:var(--chrome-ink)}
.toplinks{display:flex;gap:18px;font-size:14px}
.toplinks a{color:var(--chrome-muted);text-decoration:none}
.toplinks a:hover{color:var(--chrome-ink)}
.menubtn{display:none;background:none;border:1px solid #2b3747;color:var(--chrome-ink);height:36px;padding:0 12px;border-radius:var(--r-xs);font:500 14px var(--f-sans);cursor:pointer}
@media (max-width:980px){.toplinks{display:none}}
@media (max-width:860px){.menubtn{display:block}.logo small{display:none}}
@media (max-width:560px){.search{display:none}.lang{margin-left:auto}}

/* shell */
.shell{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media (max-width:860px){.shell{grid-template-columns:minmax(0,1fr)}}
.side{position:sticky;top:58px;align-self:start;max-height:calc(100vh - 58px);overflow:auto;padding:28px 20px 40px 0;border-right:1px solid var(--line)}
@media (max-width:860px){.side{display:none;position:static;max-height:none;border-right:0;border-bottom:1px solid var(--line);padding:16px 0}.side.open{display:block}}
.side a{display:block;padding:5px 10px;margin-left:-10px;border-radius:var(--r-xs);color:var(--ink);text-decoration:none;font-size:14.5px}
.side a:hover{background:var(--sunken)}
.side a.on{background:var(--brand-soft);color:var(--brand-strong);font-weight:600}
.side a[hidden]{display:none}
.noresult{font-size:14px;color:var(--ink-muted)}

main{padding:36px 0 40px 48px;min-width:0}
@media (max-width:860px){main{padding:28px 0 40px}}
article,.pager,.foot{max-width:780px}
h1{font:700 clamp(30px,4vw,40px)/1.1 var(--f-display);letter-spacing:-.015em;margin:0 0 16px;text-wrap:balance}
h2{font:600 22px/1.25 var(--f-display);margin:36px 0 10px;text-wrap:balance}
h3{font:600 16.5px/1.35 var(--f-sans);margin:26px 0 6px}
article > h1 + p{font-size:18px;color:var(--ink-muted)}
p,li{max-width:70ch}
ul,ol{padding-left:22px}
li{margin:5px 0}

/* code */
.code{position:relative;margin:16px 0;border-radius:var(--r-sm);background:var(--code-bg);border:1px solid var(--line);overflow:hidden}
.code .bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 6px 14px;border-bottom:1px solid #1f2a38;font:12px var(--f-mono);color:var(--code-muted)}
.code pre{margin:0;padding:14px 16px;overflow-x:auto;font:13px/1.6 var(--f-mono);color:var(--code-ink);tab-size:2}
.copy{background:#1d2938;color:var(--code-ink);border:1px solid #2b3747;border-radius:5px;font:12px var(--f-sans);padding:3px 9px;cursor:pointer}
.copy:hover{background:#26364a}
.tk-c{color:var(--code-muted);font-style:italic}.tk-s{color:var(--code-str)}.tk-k{color:var(--code-key)}.tk-w{color:var(--code-kw)}

/* tables */
.tbl{overflow-x:auto;margin:16px 0;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--raised)}
table{border-collapse:collapse;width:100%;min-width:520px;font-size:14px}
th,td{text-align:left;vertical-align:top;padding:10px 14px;border-bottom:1px solid var(--line)}
th{font:600 12px var(--f-sans);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);background:var(--sunken)}
tr:last-child td{border-bottom:0}
td code{white-space:nowrap}

.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0 8px}
@media (max-width:620px){.cards{grid-template-columns:minmax(0,1fr)}}
.card{display:block;border:1px solid var(--line);background:var(--raised);border-radius:var(--r-sm);padding:14px 16px;text-decoration:none;color:var(--ink);min-width:0}
.card:hover{border-color:var(--brand)}
.card b{display:block;font-size:15px;margin-bottom:2px}
.card span{display:block;font-size:14px;line-height:1.5;color:var(--ink-muted)}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:48px;padding-top:20px;border-top:1px solid var(--line);flex-wrap:wrap}
.pager a{display:block;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px;text-decoration:none;color:var(--ink);background:var(--raised);min-width:0}
.pager a:hover{border-color:var(--brand)}
.pager small{display:block;color:var(--ink-muted);font-size:12px}
.pager .next{margin-left:auto;text-align:right}
.foot{display:flex;gap:18px;margin-top:40px;font-size:13px;color:var(--ink-muted)}
.foot a{color:var(--ink-muted)}
.nojs{padding:24px;text-align:center}

@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
