:root{
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;
  --mono: ui-monospace, SFMono-Regular, "JetBrains Mono", Menlo, Consolas, "Noto Sans Mono CJK SC", monospace;
  --radius: 14px;
}
html[data-theme="dark"]{
  --bg:#0a0d14; --bg2:#0f141f; --card:#121826; --card2:#161e2e; --border:#1f2a3d; --text:#e6e9f0; --muted:#8a94a8;
  --accent:#818cf8; --accent2:#22d3ee; --link:#93c5fd; --chip:#1b2436; --shadow:0 8px 30px rgba(0,0,0,.35);
  --topic:#818cf8; --entity:#34d399; --source:#f59e0b; --meta:#f472b6; --answer:#22d3ee;
}
html[data-theme="light"]{
  --bg:#f6f7fb; --bg2:#eef1f7; --card:#ffffff; --card2:#f8fafc; --border:#e3e7ef; --text:#172033; --muted:#5f6b80;
  --accent:#4f46e5; --accent2:#0891b2; --link:#2563eb; --chip:#eef2ff; --shadow:0 8px 24px rgba(20,30,60,.08);
  --topic:#4f46e5; --entity:#059669; --source:#d97706; --meta:#db2777; --answer:#0891b2;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.7;-webkit-font-smoothing:antialiased}
body{background-image:radial-gradient(1200px 500px at 10% -10%, color-mix(in srgb,var(--accent) 14%,transparent), transparent 60%),radial-gradient(900px 400px at 110% 0%, color-mix(in srgb,var(--accent2) 10%,transparent), transparent 60%);background-attachment:fixed;min-height:100vh}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--muted)}
/* top bar */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:10px 28px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;color:var(--text);letter-spacing:.3px}
.brand:hover{text-decoration:none}
.logo{background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent;font-size:20px}
.topbar nav{display:flex;gap:4px}
.topbar nav a{color:var(--muted);padding:6px 10px;border-radius:8px;font-size:14px}
.topbar nav a:hover{color:var(--text);background:var(--chip);text-decoration:none}
.search{position:relative;margin-left:auto;width:min(360px,40vw)}
.search input{width:100%;padding:8px 12px;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text);font:inherit;font-size:14px;outline:none}
.search input:focus{border-color:var(--accent)}
.results{position:absolute;right:0;top:calc(100% + 6px);width:min(520px,90vw);max-height:70vh;overflow:auto;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:6px}
.results a{display:block;padding:10px 12px;border-radius:8px;color:var(--text)}
.results a:hover,.results a.active{background:var(--chip);text-decoration:none}
.results b{display:block;font-size:14px}
.results small{display:block;color:var(--muted);font-size:12.5px;line-height:1.5}
.results mark{background:color-mix(in srgb,var(--accent) 35%,transparent);color:inherit;border-radius:3px;padding:0 2px}
.results .empty{padding:12px;color:var(--muted);font-size:14px}
.theme{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:10px;width:36px;height:36px;cursor:pointer;font-size:16px}
main{max-width:1180px;margin:0 auto;padding:28px 28px 60px}
main.wide{max-width:none}
/* hero */
.hero{padding:36px 0 20px}
.hero-kicker{font-family:var(--mono);font-size:12px;letter-spacing:2px;color:var(--accent2)}
.hero h1{font-size:46px;line-height:1.15;margin:8px 0 10px;background:linear-gradient(90deg,var(--text),var(--accent) 60%,var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:var(--muted);margin:0 0 20px;font-size:16px}
.stats{display:flex;flex-wrap:wrap;gap:12px}
.stats div{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px 16px;min-width:96px}
.stats b{display:block;font-size:20px}
.stats span{color:var(--muted);font-size:12.5px}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:34px 0 14px}
.section-head h1,.section-head h2{margin:0;font-size:22px}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.card{display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;color:var(--text);transition:transform .15s,border-color .15s,box-shadow .15s}
.card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 55%,var(--border));box-shadow:var(--shadow);text-decoration:none}
.card h3{margin:0;font-size:16.5px;line-height:1.45}
.card p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.card-meta time{margin-left:auto;font-family:var(--mono)}
.card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.card-tags span{font-size:11.5px;color:var(--muted);background:var(--chip);border-radius:6px;padding:1px 7px}
.type{font-size:11.5px;font-weight:600;border-radius:6px;padding:1px 8px;border:1px solid currentColor}
.type-topic{color:var(--topic)}.type-entity{color:var(--entity)}.type-source{color:var(--source)}.type-meta{color:var(--meta)}.type-answer{color:var(--answer)}
.domain{font-size:12px}
.panel-lg{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:4px 26px 18px;margin-top:28px}
/* doc page */
.page-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px}
.crumbs{font-size:13px;color:var(--muted);display:flex;gap:6px;align-items:center}
.doc h1{font-size:32px;line-height:1.3;margin:10px 0 8px}
.doc-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--muted);padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:8px}
.tag{display:inline-block;font-size:12.5px;background:var(--chip);color:var(--link);border-radius:7px;padding:1px 8px}
.tag small{color:var(--muted)}
.tag-cloud{display:flex;flex-wrap:wrap;gap:8px}
.tag-cloud .tag{font-size:14px;padding:4px 10px}
.prose{font-size:15.5px}
.prose h2{font-size:21px;margin:30px 0 10px;padding-top:6px}
.prose h3{font-size:17px;margin:22px 0 8px}
.prose li{margin:4px 0}
.prose blockquote{margin:14px 0;padding:8px 16px;border-left:3px solid var(--accent);background:var(--card2);border-radius:0 10px 10px 0;color:var(--muted)}
.prose code{font-family:var(--mono);font-size:.88em;background:var(--chip);padding:1px 5px;border-radius:5px}
.table-wrap{overflow-x:auto;margin:14px 0;border:1px solid var(--border);border-radius:12px}
.prose table{border-collapse:collapse;width:100%;font-size:13.5px}
.prose th,.prose td{padding:8px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.prose th{background:var(--card2)}
.prose tr:last-child td{border-bottom:0}
.wikilink{color:var(--accent);border-bottom:1px dashed color-mix(in srgb,var(--accent) 50%,transparent)}
.wikilink:hover{text-decoration:none;border-bottom-style:solid}
.wikilink.missing{color:var(--muted);border:0}
a.ext{word-break:break-all}
/* source markers */
.src{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;line-height:1;padding:3px 6px 3px 5px;margin:0 2px;border-radius:6px;background:var(--chip);color:var(--muted);vertical-align:1px;white-space:nowrap}
a.src:hover{color:var(--text);text-decoration:none;background:color-mix(in srgb,var(--accent) 22%,var(--chip))}
.xi{display:inline-block;width:10px;height:10px;background:currentColor;-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>') center/contain no-repeat;mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>') center/contain no-repeat}
.src-x span{color:#f87171}.src-xb span{color:#60a5fa}
.badge{display:inline-block;font-size:11.5px;line-height:1;padding:3px 7px;margin:0 2px;border-radius:6px;border:1px solid var(--border);color:var(--muted);vertical-align:1px;white-space:nowrap;cursor:help}
/* backlinks */
.backlinks{margin-top:40px;padding-top:10px;border-top:1px solid var(--border)}
.backlinks h2{font-size:18px}
.backlinks small{color:var(--muted);font-weight:400}
.mini-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.mini-cards a{display:flex;gap:8px;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px;color:var(--text);font-size:14px}
.mini-cards a:hover{border-color:var(--accent);text-decoration:none}
/* sidebar */
.side{position:sticky;top:76px;align-self:start;display:flex;flex-direction:column;gap:14px}
.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}
.panel h4{margin:0 0 8px;font-size:13px;color:var(--muted);font-weight:600;letter-spacing:.5px}
.panel canvas{width:100%;display:block;border-radius:10px;background:var(--bg2)}
.panel .more{display:block;font-size:12.5px;margin-top:8px}
.toc{max-height:46vh;overflow:auto}
.toc a{display:block;font-size:13px;color:var(--muted);padding:3px 0;line-height:1.45}
.toc a.l3{padding-left:12px}
.toc a:hover{color:var(--text)}
/* graph page */
.graph-page{max-width:1400px;margin:0 auto}
.graph.full{width:100%;height:calc(100vh - 230px);min-height:480px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);display:block;cursor:grab}
.legend{display:flex;gap:16px;margin-bottom:10px;font-size:13.5px;color:var(--muted)}
.legend label{display:flex;align-items:center;gap:6px;cursor:pointer}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.dot-topic{background:var(--topic)}.dot-entity{background:var(--entity)}.dot-source{background:var(--source)}.dot-meta{background:var(--meta)}
.foot{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;max-width:1180px;margin:0 auto;padding:24px 28px 40px;color:var(--muted);font-size:12.5px;border-top:1px solid var(--border)}
@media (max-width:900px){.page-grid{grid-template-columns:1fr}.side{position:static}.topbar{flex-wrap:wrap;padding:10px 16px}.search{width:100%;order:5}main{padding:20px 16px}.hero h1{font-size:36px}}
/* 新增标记 */
.new-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;font-size:11px;font-weight:700;line-height:1.5;vertical-align:2px;color:#fff;background:linear-gradient(135deg,#f97316,#ef4444);letter-spacing:.5px;white-space:nowrap}
.doc h1 .new-badge{font-size:13px;vertical-align:6px;padding:2px 8px}
.card h3 .new-badge{vertical-align:2px}
.src-new{display:inline-block;margin:0 3px 0 -1px;padding:0 4px;border-radius:5px;font-size:10.5px;font-weight:700;line-height:1.6;color:#fff;background:#ef4444;vertical-align:1px}
.fresh .section-head h2 small,.section-head h2 small{font-size:13px;color:var(--muted);font-weight:500;margin-left:6px}
.fresh .cards .card{border-color:color-mix(in srgb,#f97316 35%,var(--border))}
.empty-note{padding:10px 0}
