:root{ --bg:#eef2f7; --contentbg:#ffffff; --sidebar:#0f172a; --sidebar2:#15233f; --text:#1e293b; --muted:#64748b; --line:#e2e8f0; --line2:#cbd5e1; --accent:#2563eb; --accent2:#1d4ed8; --get:#16a34a; --post:#2563eb; --put:#d97706; --del:#dc2626; --req:#dc2626; --opt:#0891b2; --none:#64748b; --codebg:#0f172a; --codefg:#cbd5e1; } *{box-sizing:border-box} html,body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);} body{background:var(--bg);} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline} .layout{display:flex;min-height:100vh} /* ===== 左侧导航 ===== */ aside#sidebar{width:264px;flex:0 0 264px;background:var(--sidebar);color:#cbd5e1;position:sticky;top:0;height:100vh;overflow-y:auto;padding:0 0 30px} #sidebar .brand{padding:20px 22px 16px;border-bottom:1px solid #1e293b;margin-bottom:8px} #sidebar .brand h2{margin:0;font-size:16px;color:#fff;letter-spacing:.02em} #sidebar .brand p{margin:5px 0 0;font-size:12px;color:#94a3b8} #sidebar .grp{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#5b6b85;padding:16px 22px 5px} #sidebar a.nav{display:block;padding:8px 22px;font-size:13.5px;color:#cbd5e1;text-decoration:none;border-left:3px solid transparent} #sidebar a.nav:hover{background:var(--sidebar2);color:#fff} #sidebar a.nav.active{background:var(--sidebar2);color:#fff;border-left-color:var(--accent)} #sidebar .ft{padding:18px 22px 0;font-size:11px;color:#5b6b85;border-top:1px solid #1e293b;margin-top:18px} /* ===== 主区域 ===== */ main{flex:1;min-width:0;display:flex;flex-direction:column} #topbar{position:sticky;top:0;z-index:5;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:13px 30px;display:flex;gap:14px;align-items:center;flex-wrap:wrap} #topbar .ptitle{font-size:18px;font-weight:700;margin-right:auto;white-space:nowrap} #topbar input.search{flex:1;min-width:170px;max-width:300px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;outline:none;background:#fff} #topbar input.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)} .basebox{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);white-space:nowrap} .basebox input{padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:12.5px;width:280px;max-width:46vw;background:#fff} #content{padding:26px 30px 90px;max-width:1100px;width:100%} /* ===== 概览页 ===== */ .ov-hero{background:linear-gradient(120deg,#0ea5e9,#6366f1);color:#fff;border-radius:14px;padding:26px 28px;margin-bottom:22px} .ov-hero h1{margin:0 0 8px;font-size:24px} .ov-hero p{margin:0;opacity:.92;font-size:14px;line-height:1.7} .ov-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-bottom:26px} .ov-card{background:var(--contentbg);border:1px solid var(--line);border-radius:12px;padding:16px 18px;transition:.15s} .ov-card:hover{border-color:var(--accent);box-shadow:0 4px 16px rgba(37,99,235,.1)} .ov-card h3{margin:0 0 6px;font-size:15px} .ov-card p{margin:0 0 10px;font-size:12.5px;color:var(--muted);line-height:1.6} .ov-card .cnt{font-size:12px;color:var(--accent);font-weight:600} .ov-note{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:16px 18px;font-size:13px;line-height:1.8;margin-bottom:22px} .ov-note b{color:#c2410c} .ov-note code{background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:12px} /* ===== 分组 / 章节 ===== */ .sec{margin:0 0 30px} .sec>.h2{font-size:19px;border-left:4px solid var(--accent);padding-left:11px;margin:0 0 4px} .sec>.sub{color:var(--muted);font-size:13px;margin:0 0 14px} .toc{background:var(--contentbg);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:0 0 20px;font-size:13px;display:flex;flex-wrap:wrap;gap:8px 14px} .toc a{padding:2px 10px;border:1px solid var(--line);border-radius:20px;color:var(--muted)} .toc a:hover{border-color:var(--accent);color:var(--accent);text-decoration:none} /* ===== 接口卡片 ===== */ .ep{background:var(--contentbg);border:1px solid var(--line);border-radius:12px;padding:15px 17px;margin:0 0 13px;scroll-margin-top:80px} .ep.hidden{display:none} .ep .row{display:flex;align-items:center;gap:10px;flex-wrap:wrap} .badge{font-weight:700;font-size:11.5px;padding:3px 9px;border-radius:6px;color:#fff} .m-GET{background:var(--get)} .m-POST{background:var(--post)} .m-PUT{background:var(--put)} .m-DELETE{background:var(--del)} .path{font-family:"SFMono-Regular",Consolas,monospace;font-size:13.5px;color:#0f172a;word-break:break-all;font-weight:600} .tag{font-size:11px;padding:2px 9px;border-radius:20px;border:1px solid var(--line)} .t-req{color:var(--req);border-color:var(--req)} .t-opt{color:var(--opt);border-color:var(--opt)} .t-none{color:var(--none);border-color:var(--none)} .ep .desc{margin:9px 0 6px;font-size:14px} .ep .params{font-size:12.5px;color:var(--muted)} .ep .params b{color:var(--text)} .ep .mlink{font-size:12.5px;margin-top:8px} .ep .mlink a{color:var(--accent)} .ex{margin-top:8px} .ex summary{cursor:pointer;font-size:12.5px;color:var(--accent);user-select:none;outline:none} .ex pre{background:var(--codebg);border:1px solid #1e293b;border-radius:9px;padding:12px 14px;overflow:auto; font-family:"SFMono-Regular",Consolas,monospace;font-size:12px;color:var(--codefg);margin:8px 0 0;white-space:pre;line-height:1.55} .ex pre .c{color:#64748b} .empty{color:var(--muted);text-align:center;padding:40px;display:none} /* ===== 模型 ===== */ .model{background:var(--contentbg);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:0 0 16px;scroll-margin-top:80px} .model h3{margin:0 0 4px;font-size:16px;color:#0f172a} .model .mtag{font-size:11px;color:var(--muted);margin:0 0 10px} .model .mtag .q{color:var(--accent);background:#eff6ff;border:1px solid #bfdbfe;border-radius:5px;padding:1px 6px;margin-right:6px} .model .exjson{margin-top:8px} table.ft{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0 10px} table.ft th{background:#f1f5f9;text-align:left;color:var(--muted);font-weight:600;padding:7px 9px;border-bottom:2px solid var(--line)} table.ft td{padding:7px 9px;border-bottom:1px solid #eef2f7;vertical-align:top} table.ft td .ty{color:#0369a1;font-family:Consolas,monospace;font-size:12px} table.ft td .rq{color:var(--req);font-weight:700} table.ft td .op{color:var(--muted)} .model .exjson summary{cursor:pointer;font-size:12.5px;color:var(--accent);outline:none} .model .exjson pre{background:var(--codebg);border-radius:9px;padding:12px 14px;overflow:auto;font-family:Consolas,monospace;font-size:12px;color:var(--codefg);margin:8px 0 0;white-space:pre} .baseblk{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:12px;margin:6px 0 10px} .baseblk b{color:#0f172a} .resp-note{font-size:12.5px;color:var(--muted);margin-top:6px} code.inl{background:#f1f5f9;border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:12px;font-family:Consolas,monospace;color:#0f172a} footer{color:var(--muted);font-size:12px;text-align:center;padding:24px;border-top:1px solid var(--line);margin-top:20px}