:root{
  --bg:#fbfbfd; --bg-soft:#f1f1f5; --card:#ffffff; --text:#1d1d22; --muted:#6b6b76;
  --border:#e4e4ec; --accent:#7c3aed; --accent-soft:#ede9fe; --code-bg:#f4f3f8; --shadow:0 1px 3px rgba(20,20,40,.07),0 6px 18px rgba(20,20,40,.05);
}
[data-theme="dark"]{
  --bg:#0f0f14; --bg-soft:#16161e; --card:#1a1a23; --text:#e7e7ee; --muted:#9a9aa8;
  --border:#2a2a36; --accent:#a78bfa; --accent-soft:#241b3d; --code-bg:#16161e; --shadow:0 1px 3px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.3);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0f0f14; --bg-soft:#16161e; --card:#1a1a23; --text:#e7e7ee; --muted:#9a9aa8;
    --border:#2a2a36; --accent:#a78bfa; --accent-soft:#241b3d; --code-bg:#16161e; --shadow:0 1px 3px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.3);
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text);
  font:15px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code,pre{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace}

/* topbar */
.topbar{
  position:sticky;top:0;z-index:10;display:flex;gap:12px;align-items:center;
  padding:12px 20px;background:color-mix(in srgb,var(--bg) 86%,transparent);
  backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--border);
}
.brand{font-weight:700;font-size:16px;color:var(--text);white-space:nowrap}
.brand:hover{text-decoration:none;color:var(--accent)}
.search{
  flex:1;min-width:0;max-width:560px;padding:9px 14px;border-radius:10px;
  border:1px solid var(--border);background:var(--card);color:var(--text);font-size:14px;outline:none;
}
.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.icon-btn{cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text);
  border-radius:10px;width:38px;height:38px;font-size:16px}
.icon-btn:hover{border-color:var(--accent)}

main{max-width:1080px;margin:0 auto;padding:24px 20px 60px}

/* hero / home */
.hero{padding:18px 4px 8px}
.hero h1{font-size:30px;margin:0 0 6px;letter-spacing:-.02em}
.hero p{color:var(--muted);margin:0;font-size:15px}
.cat{margin-top:30px}
.cat-title{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);
  margin:0 0 12px;font-weight:700}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.card{display:flex;gap:12px;padding:16px;border:1px solid var(--border);border-radius:14px;
  background:var(--card);box-shadow:var(--shadow);transition:transform .12s,border-color .12s}
.card:hover{transform:translateY(-2px);border-color:var(--accent);text-decoration:none}
.card-icon{font-size:24px;line-height:1.2}
.card-title{font-weight:700;color:var(--text);font-size:15.5px;margin-bottom:4px}
.card-summary{color:var(--muted);font-size:13px;line-height:1.55}
.card-tags{margin-top:9px;display:flex;flex-wrap:wrap;gap:6px}
.tag{font-size:11px;color:var(--accent);background:var(--accent-soft);padding:2px 8px;border-radius:20px}

/* search results */
.search-head h2{font-size:18px;margin:6px 0 16px}
.muted{color:var(--muted)}

/* doc view */
.docwrap{display:grid;grid-template-columns:230px 1fr;gap:34px;align-items:start}
.sidebar{position:sticky;top:78px;font-size:14px;max-height:calc(100vh - 100px);overflow:auto}
.side-cat{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);
  font-weight:700;margin:16px 0 6px}
.side-link{display:block;padding:5px 10px;border-radius:8px;color:var(--text);font-size:13.5px}
.side-link:hover{background:var(--bg-soft);text-decoration:none}
.side-link.active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.doc{min-width:0;max-width:760px}
.back{display:inline-block;margin-bottom:8px;font-size:13px;color:var(--muted)}
.doc h1{font-size:28px;letter-spacing:-.02em;margin:.2em 0 .5em}
.doc h2{font-size:21px;margin:1.6em 0 .5em;padding-bottom:.3em;border-bottom:1px solid var(--border)}
.doc h3{font-size:17px;margin:1.3em 0 .4em}
.doc p{margin:.7em 0}
.doc ul,.doc ol{padding-left:1.4em;margin:.6em 0}
.doc li{margin:.25em 0}
.doc code{background:var(--code-bg);padding:.12em .4em;border-radius:6px;font-size:.88em;
  border:1px solid var(--border)}
.doc pre{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;
  padding:14px 16px;overflow:auto;margin:1em 0}
.doc pre code{background:none;border:none;padding:0;font-size:13px;line-height:1.55}
.doc blockquote{margin:1em 0;padding:.4em 1em;border-left:3px solid var(--accent);
  background:var(--accent-soft);border-radius:0 8px 8px 0;color:var(--text)}
.doc blockquote p{margin:.3em 0}
.doc table{border-collapse:collapse;width:100%;margin:1em 0;font-size:14px;display:block;overflow:auto}
.doc th,.doc td{border:1px solid var(--border);padding:8px 12px;text-align:left;vertical-align:top}
.doc th{background:var(--bg-soft);font-weight:700}
.doc hr{border:none;border-top:1px solid var(--border);margin:1.6em 0}
.doc strong{font-weight:700}
.doc a{font-weight:500}

.foot{max-width:1080px;margin:0 auto;padding:24px 20px;color:var(--muted);font-size:12.5px;
  border-top:1px solid var(--border)}
.banner{margin:40px auto;max-width:640px;padding:22px 24px;border:1px solid var(--border);
  border-radius:14px;background:var(--card);box-shadow:var(--shadow)}
.banner h2{margin:0 0 10px}
.banner code{background:var(--code-bg);padding:.12em .4em;border-radius:6px;border:1px solid var(--border)}

@media (max-width:760px){
  .docwrap{grid-template-columns:1fr}
  .sidebar{position:static;max-height:none;border-bottom:1px solid var(--border);
    padding-bottom:10px;margin-bottom:10px}
  .hero h1{font-size:24px}
}
