*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,sans-serif;background:#0f172a;color:#e2e8f0;min-height:100vh}
.nav{background:#1e293b;padding:12px 24px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:100}
.nav .brand{font-size:18px;font-weight:700;color:#38bdf8}
.nav .user{font-size:13px;color:#94a3b8}
.btn{padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-size:14px}
.btn-pri{background:#3b82f6;color:#fff}.btn-pri:hover{background:#2563eb}
.btn-out{background:transparent;color:#f87171;border:1px solid #f87171}
.btn-sec{background:#1e293b;color:#cbd5e1;border:1px solid #475569}.btn-sec:hover{border-color:#38bdf8;color:#38bdf8}
.layout{display:flex;gap:20px;max-width:1200px;margin:0 auto;padding:24px}
.sidebar{width:244px;flex-shrink:0;position:sticky;top:8px;align-self:flex-start;max-height:calc(100vh - 16px);overflow-y:auto}
.sidebar .nav-item{display:block;width:100%;padding:5px 12px;text-align:left;background:transparent;border:none;color:#94a3b8;font-size:13px;cursor:pointer;border-radius:6px;margin-bottom:2px}
.sidebar .nav-item:hover,.sidebar .nav-item.active{background:#1e293b;color:#38bdf8}
.sidebar .nav-title{font-size:14px;font-weight:700;color:#e2e8f0;padding:4px 14px 6px;margin-bottom:2px}
.sidebar .nav-divider{height:1px;background:#334155;margin:8px 0}
.main-content{flex:1;min-width:0}
.card{background:#1e293b;border-radius:10px;padding:24px;margin-bottom:16px}
.card h3{margin-bottom:16px;color:#38bdf8}
.form-group{margin-bottom:12px}
.form-group label{display:block;font-size:13px;color:#94a3b8;margin-bottom:4px}
.form-group input{width:100%;padding:10px;border:1px solid #334155;border-radius:6px;background:#0f172a;color:#e2e8f0;font-size:14px}
/* 多行文本域（管理端 JSON/示例编辑）：与 input 同宽同色，等宽字体，可纵向拖拽 */
.form-group textarea{width:100%;box-sizing:border-box;padding:10px;border:1px solid #334155;border-radius:6px;
  background:#0f172a;color:#e2e8f0;font-size:13px;line-height:1.6;resize:vertical;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#3b82f6}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #334155;word-break:break-all;max-width:200px}
th{color:#94a3b8;font-weight:500}
tr:hover{background:#1a2740;cursor:pointer}
tr.selected{background:#1e3a5f}
.badge{padding:2px 8px;border-radius:10px;font-size:11px}
.badge-admin{background:#3b82f6;color:#fff}
.badge-user{background:#475569;color:#e2e8f0}
.tabs{display:flex;gap:8px;margin-bottom:16px}
.tab{padding:6px 16px;border-radius:20px;cursor:pointer;font-size:13px;background:#334155;border:none;color:#94a3b8}
.tab.active{background:#3b82f6;color:#fff}
#auth-panel{max-width:400px;margin:40px auto}
#detail-panel,#admin-docs-panel,#user-panel,#admin-panel{display:none}
#detail-panel .card{margin-top:12px}
.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:14px 28px;border-radius:8px;font-size:14px;z-index:999;box-shadow:0 4px 20px rgba(0,0,0,0.5)}
.toast-err{background:#dc2626;color:#fff}
.toast-ok{background:#16a34a;color:#fff}
#api-content{background:#0f172a;border-radius:8px;padding:16px;font-size:13px;line-height:1.7}
#public-api-content pre,#api-content pre{color:#e2e8f0;background:#0a0f1a;padding:12px;border-radius:6px;font-size:12px;overflow-x:auto;white-space:pre-wrap}

/* 侧栏二级分类标题：把十几个模块分组的视觉分隔（用户反馈平铺一长串难找） */
.sidebar .nav-group-title{font-size:11px;font-weight:600;color:#64748b;letter-spacing:.06em;
  padding:6px 12px 1px;text-transform:none;border-top:1px solid #1e293b;margin-top:6px}
.sidebar .nav-group-title:first-of-type{border-top:none;margin-top:0;padding-top:6px}
/* 内容区二级标题 + 页内目录 */
.doc-sec{font-size:13px;font-weight:700;color:#38bdf8;margin:16px 0 6px;padding-left:8px;
  border-left:3px solid #1e40af;scroll-margin-top:70px}
.doc-toc{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#0b1220;
  border:1px solid #1e293b;border-radius:6px;padding:8px 10px;margin-bottom:12px}
.doc-toc-title{color:#64748b;font-size:12px;font-weight:600;margin-right:4px}
.doc-toc a{color:#7dd3fc;font-size:12px;text-decoration:none;padding:2px 8px;border-radius:999px;
  background:#152033;border:1px solid #1e293b}
.doc-toc a:hover{background:#1e293b;color:#e0f2fe}

/* 侧栏二级：模块下的函数清单（反射生成，方便直达某个 API） */
.sidebar .nav-funcs{padding-left:10px;margin:2px 0 4px}
.sidebar .nav-funcs:empty{display:none}
.sidebar .nav-item.nav-func{font-size:11.5px;padding:3px 8px 3px 14px;color:#7c8ba1;
  border-left:2px solid #1e293b;border-radius:0 4px 4px 0;margin-bottom:0;
  display:flex;flex-direction:column;gap:0;line-height:1.28;white-space:normal;overflow:visible}
.nav-func .nf-desc{color:#b6c2d4;font-size:11.5px;white-space:normal;word-break:break-word}
.nav-func .nf-api{color:#5f7085;font-size:10.5px;font-family:ui-monospace,Menlo,Consolas,monospace;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-func:hover .nf-desc,.nav-func.active .nf-desc{color:#e2e8f0}
.nav-func:hover .nf-api,.nav-func.active .nf-api{color:#7dd3fc}
.fn-name code{font-size:12px;margin-left:6px;font-weight:500}
.sidebar .nav-item.nav-func:hover{color:#7dd3fc;background:#16233a}
.sidebar .nav-item.nav-func.active{color:#38bdf8;background:#16233a;border-left-color:#38bdf8}
/* 内容区：每个函数一个二级区块 */
.fn-block{border:1px solid #1e293b;border-radius:6px;padding:10px 12px;margin:10px 0}
.fn-name{font-size:13px;color:#38bdf8;margin:0 0 6px;font-weight:700;scroll-margin-top:70px}
.fn-name code{color:#fbbf24}
.fn-sig{margin:0 0 4px;color:#a5b4fc;font-size:12px;word-break:break-all}
.fn-desc{margin:0 0 6px;color:#94a3b8;font-size:13px}
.fn-ex{margin:0 0 6px}
.fn-ops{margin:0;text-align:right}

/* 隐藏滚动条但保留滚动能力（用户要求"不要显示滑动条"）：
   Firefox 用 scrollbar-width，WebKit/Blink 用 ::-webkit-scrollbar，旧 IE 用 -ms-overflow-style */
.sidebar{scrollbar-width:none;-ms-overflow-style:none}
.sidebar::-webkit-scrollbar{width:0;height:0;display:none}
.sidebar::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-track{background:transparent}
/* 文档页内部的滚动容器（宏观指标表等）同样不显示滚动条 */
#macro-codes-wrap,#news-fields-wrap,#etf-fields-wrap,.doc-scroll{
  scrollbar-width:none;-ms-overflow-style:none}
#macro-codes-wrap::-webkit-scrollbar,#news-fields-wrap::-webkit-scrollbar,
#etf-fields-wrap::-webkit-scrollbar,.doc-scroll::-webkit-scrollbar{width:0;height:0;display:none}
.fn-doclink{color:#7dd3fc;font-size:12px;text-decoration:none;margin-right:10px}
.fn-doclink:hover{text-decoration:underline}

/* 图标小按钮（API Token 一行的 显示/复制/刷新） */
.btn-mini {
  padding: 4px 8px; font-size: 13px; line-height: 1; cursor: pointer;
  background: #16203a; color: #94a3b8; border: 1px solid #2a3a5a; border-radius: 6px;
}
.btn-mini:hover { border-color: var(--accent, #38bdf8); color: var(--accent, #38bdf8); }

/* ── 个人信息 / API Token 卡片 ── */
.my-card { padding: 14px 18px; }
.my-head { display: flex; align-items: center; gap: 12px; }
.my-avatar {
  width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center;
  justify-content: center; font-weight: 600; font-size: 15px; color: #0b1120;
  background: linear-gradient(135deg, #38bdf8, #22c55e); flex: 0 0 auto;
}
.my-name { font-size: 15px; font-weight: 600; color: #e2e8f0; line-height: 1.3; }
.my-sub { font-size: 12px; color: #7c8ba1; margin-top: 2px; }

.tok-card { margin-top: 18px; padding: 16px 18px 18px; }
.tok-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.card h3.card-title { margin: 0; font-size: 15px; font-weight: 600; color: #e5e7eb; }
.tok-head-hint { font-size: 12px; color: #7c8ba1; }
.card-desc { color: #94a3b8; font-size: 12px; line-height: 1.7; margin: 4px 0 18px; }
.card-desc code { color: #cbd5e1; background: #16203a; padding: 1px 6px; border-radius: 4px; font-size: 11px; }

.tok-box {
  background: #0b1220; border: 1px solid #1e293b; border-radius: 10px; padding: 14px 14px 13px;
}
.tok-row { display: flex; align-items: center; gap: 12px; }
.tok-label {
  flex: 0 0 auto; font-size: 10px; letter-spacing: 1.6px; font-weight: 600; color: #64748b;
}
.tok-value {
  flex: 1 1 auto; min-width: 0; font-family: "SF Mono", Menlo, Consolas, monospace;
  font-size: 14px; letter-spacing: .6px; color: #f1f5f9; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
/* 明文态：中性高对比（不用警示黄，黄色只留给"仅显示一次"的提醒） */
.tok-value.is-plain { color: #ffffff; letter-spacing: .2px; white-space: normal; word-break: break-all; }
.tok-value.is-error { color: #f87171; font-family: inherit; letter-spacing: 0; white-space: normal; }
.tok-actions { display: flex; gap: 8px; flex: 0 0 auto; align-items: center; }
.tok-btn {
  min-width: 60px; padding: 6px 12px; font-size: 12px; line-height: 1.2; cursor: pointer;
  white-space: nowrap; text-align: center;
  color: #cbd5e1; background: #16203a; border: 1px solid #2a3a5a; border-radius: 8px;
  transition: background .15s, border-color .15s, color .15s;
}
.tok-btn:hover { border-color: #38bdf8; color: #e2e8f0; background: #1b2942; }
.tok-btn:active { transform: translateY(1px); }
.tok-btn[disabled] { opacity: .4; cursor: not-allowed; }
.tok-btn[disabled]:hover { border-color: #2a3a5a; background: #16203a; color: #cbd5e1; }
/* 复制是这里唯一被鼓励的动作 → 主按钮 */
#tok-copy.ready { color: #0b1120; background: #38bdf8; border-color: #38bdf8; font-weight: 600; }
#tok-copy.ready:hover { background: #7dd3fc; border-color: #7dd3fc; }
#tok-copy:not(.ready) { color: #94a3b8; }          /* 无明文时仍可点（会解释原因） */
/* 刷新会让在用脚本立刻失效（破坏性）→ 与可逆操作拉开距离并给危险语义 */
#tok-refresh { margin-left: 6px; color: #fca5a5; border-color: #7f1d1d; }
#tok-refresh:hover { color: #fecaca; border-color: #b91c1c; background: #2a1114; }

.tok-meta {
  display: flex; align-items: center; gap: 8px; margin-top: 10px;
  font-size: 12px; color: #8fa0b8; line-height: 1.6;
}
.tok-meta.warn { color: #fbbf24; }
.tok-meta.bad { color: #f87171; }
.tok-dot { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto; }
.tok-dot.ok { background: #22c55e; box-shadow: 0 0 0 3px rgba(34,197,94,.14); }
.tok-dot.warn { background: #fbbf24; box-shadow: 0 0 0 3px rgba(251,191,36,.14); }
.tok-dot.bad { background: #ef4444; box-shadow: 0 0 0 3px rgba(239,68,68,.14); }

/* level1 市场页：品种代码小按钮（点一下复制） */
.code-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 2px; }
.code-chip {
  padding: 3px 10px; font-size: 12px; font-family: "SF Mono", Menlo, Consolas, monospace;
  color: #cbd5e1; background: #16203a; border: 1px solid #2a3a5a; border-radius: 999px; cursor: pointer;
}
.code-chip:hover { border-color: #38bdf8; color: #e2e8f0; }


/* ── 个人页（账号与TOKEN）：布局参考第三方"账号与TOKEN"页，配色沿用本站深色 ── */
.acct-head { display:flex; align-items:center; gap:16px; padding:8px 4px 18px; }
.acct-avatar { width:52px; height:52px; background:#16203a; border:1px solid #1e293b; border-radius:12px;
  display:flex; align-items:center; justify-content:center; font-size:22px; color:#38bdf8; }
.acct-title { font-size:16px; font-weight:600; color:#e2e8f0; }
.acct-meta { font-size:12px; color:#94a3b8; margin-top:6px; }
.acct-meta span { margin-right:14px; }
.acct-tabs { display:flex; gap:28px; border-bottom:1px solid #1e293b; margin-bottom:18px; }
.acct-tab { background:none; border:none; padding:10px 2px; font-size:14px; color:#94a3b8; cursor:pointer;
  border-bottom:2px solid transparent; margin-bottom:-1px; }
.acct-tab.active { color:#e2e8f0; font-weight:600; border-bottom-color:#38bdf8; }
.acct-tab:hover { color:#e2e8f0; }
.acct-content { display:flex; gap:18px; align-items:flex-start; flex-wrap:wrap; }
.acct-card { flex:1; min-width:320px; }
.acct-right { flex:1.05; }
.acct-sec-head { margin-bottom:6px; }
.acct-sec-title { font-size:14px; font-weight:600; color:#e2e8f0; }
.acct-rows { margin-top:4px; }
.acct-row { display:flex; align-items:center; padding:12px 0; font-size:13px; border-bottom:1px solid #1e293b; }
.acct-row:last-child { border-bottom:none; }
.acct-label { color:#94a3b8; width:78px; flex:none; }
.acct-value { flex:1; color:#e2e8f0; }
.acct-note { color:#64748b; font-size:12px; }
.acct-link { background:none; border:none; color:#38bdf8; font-size:12px; cursor:pointer; padding:0; }
.acct-link:hover { color:#7dd3fc; }
.acct-input { display:block; width:100%; max-width:260px; margin-bottom:8px; padding:6px 9px; border-radius:6px;
  border:1px solid #334155; background:#0b1120; color:#e2e8f0; font-size:13px; }
.tok-box { margin-top:8px; border:1px dashed #334155; border-radius:8px; padding:12px 14px; }

/* 修改密码弹窗（点「修改」打开） */
#pwd-box { position:fixed; inset:0; z-index:80; }
.modal-mask { position:absolute; inset:0; background:rgba(2,6,23,.72); }
.modal-card { position:relative; width:min(420px,92vw); margin:12vh auto 0; background:#16203a; border:1px solid #1e293b;
  border-radius:12px; padding:20px 22px; box-shadow:0 20px 50px rgba(0,0,0,.5); }
.modal-title { font-size:15px; font-weight:600; color:#e2e8f0; margin-bottom:6px; }
.modal-desc { font-size:12px; color:#94a3b8; line-height:1.7; margin-bottom:14px; }
.modal-label { display:block; font-size:12px; color:#94a3b8; margin:8px 0 4px; }
.modal-msg { color:#f87171; font-size:12px; min-height:16px; margin-top:6px; }
.modal-actions { display:flex; gap:8px; justify-content:flex-end; margin-top:14px; }

/* 个人页左右留白：内容居中、两侧留白（与参考图一致：1080 居中 + 24px 内边距）
   只作用于个人页，文档页布局不受影响 */
#my-panel { max-width: 1080px; margin: 0 auto; padding: 28px 24px 48px; }
#my-panel.tab-sdk { padding-bottom: 0; }   /* SDK 分区时个人页只剩分区行，别再留 48px 底部内边距 ✗ */
#sdk-card { max-width: 1080px; margin: 0 auto; padding: 0 24px 48px; }   /* 顶部不留白：它紧贴在分区行下面，留白会显得多出一块空 ✗ */
@media (max-width: 1140px) { #my-panel, #sdk-card { max-width: none; } }

/* SDK 下载页里的命令/代码块 */
.sdk-code { background:#0b1120; border:1px solid #1e293b; border-radius:8px; padding:12px 14px;
  color:#e2e8f0; font-family:Menlo, Consolas, monospace; font-size:12.5px; line-height:1.7;
  overflow-x:auto; white-space:pre; margin-top:8px; }

/* 人机校验：独立弹窗，压在登录弹窗之上（z-index 200 > 登录/改密码弹窗的 80） */
#login-challenge { position:fixed; inset:0; z-index:200; }
#login-challenge .modal-card { width:min(400px,92vw); }

/* 未登录封面：整屏大图 + 居中文字 */
.cover-hero { min-height: calc(100vh - 56px); background:#0b1120 url('/img/hero.jpg') center/cover no-repeat;
  display:flex; align-items:center; justify-content:center; position:relative; }
.cover-hero::before { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(2,6,23,.55), rgba(2,6,23,.8)); }
.cover-inner { position:relative; text-align:center; padding:0 24px; }
.cover-title { font-size:34px; font-weight:700; color:#fff; letter-spacing:1px; margin-bottom:14px; }
.cover-sub { font-size:15px; color:#cbd5e1; margin-bottom:28px; }
.cover-btn { background:#f5a623; color:#1b1206; font-weight:600; padding:11px 30px; font-size:15px; border:none; }
.cover-btn:hover { background:#ffb733; }
.cover-contact { margin-top:18px; color:#e2e8f0; font-size:14px; background:rgba(2,6,23,.6);
  border:1px solid rgba(148,163,184,.35); border-radius:8px; padding:10px 16px; display:inline-block; }
@media (max-width: 700px) { .cover-title { font-size:24px; } }

/* SDK 安装说明的平台切换（用户 2026-10-05） */
.os-tabs { display:flex; gap:8px; margin:10px 0 8px; }
.os-tab { background:#0b1120; color:#94a3b8; border:1px solid #1e293b; border-radius:6px;
  padding:5px 14px; font-size:12.5px; cursor:pointer; }
.os-tab:hover { color:#e2e8f0; border-color:#334155; }
.os-tab.active { background:#1e293b; color:#38bdf8; border-color:#38bdf8; }

/* SDK 安装说明的分步骤排版（用户 2026-10-05：纯文本一坨难读 ✓） */
.os-steps { margin-top:10px; }
.os-step { border-left:2px solid #1e293b; padding:0 0 0 12px; margin-bottom:14px; }
.os-step-title { color:#e2e8f0; font-size:13px; font-weight:600; margin-bottom:6px; }
.os-step-note { color:#94a3b8; font-size:12px; line-height:1.7; margin-top:6px; }
.os-step-note code { background:#0b1120; border:1px solid #1e293b; border-radius:4px; padding:1px 5px; font-size:11.5px; }
.os-step .sdk-code { margin-top:0; }
