/* Navi2AI Rank - scoped styles, all selectors under .n2rank */
/* ---------- 主题：白天白底，夜间黑底（跟随系统） ---------- */
/* 注意：变量只允许挂在 .n2rank 作用域内，严禁写 :root，否则会覆盖主题全局变量 */
.n2rank{
  --bg:#f5f7fa; --panel:#ffffff; --line:#e3e8ee; --th:#fafbfd; --tdline:#edf0f4;
  --tx:#1b222c; --tx2:#4d5763; --tx3:#79828e;
  --up:#e5484d; --down:#12a150; --blue:#2f6fed; --barbg:#e9edf2;
  --brand:#9422d6; --brand-deep:#4f1fc1; --brand-bg:rgba(148,34,214,.13); --brand-bg2:rgba(148,34,214,.07);
  --hover:#f2f5f9; --hit:rgba(148,34,214,.06); --hit2:rgba(148,34,214,.12);
  --mono:"SF Mono",ui-monospace,"Cascadia Mono",Consolas,"Roboto Mono",monospace;
  --r1:var(--brand); --r2:#0891b2; --r3:#e8590c;
}@media (prefers-color-scheme: dark){.n2rank{
    --bg:#1b1d1f; --panel:#2d2e2f; --line:#3d4043; --th:#333638; --tdline:#35383a;
    --tx:#e3e5e8; --tx2:#a6a8ab; --tx3:#7c7f84;
    --up:#f6465d; --down:#0ecb81; --blue:#2f80ed; --barbg:#3d4043;
    --brand:#c77df5; --brand-deep:#9422d6; --brand-bg:rgba(148,34,214,.22); --brand-bg2:rgba(148,34,214,.13);
    --hover:#35383b; --hit:rgba(148,34,214,.14); --hit2:rgba(148,34,214,.22);
    --r1:var(--brand); --r2:#22d3ee; --r3:#ff7a45;
  }}.n2rank *{box-sizing:border-box}.n2rank, .n2rank{margin:0;padding:0}.n2rank{
  background:var(--bg); color:var(--tx);
  font:14px/1.55 "Microsoft YaHei","微软雅黑",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}.n2rank .wrap{max-width:1320px;margin:0 auto;padding:22px 18px 60px}.n2rank /* ---------- header ---------- */
.hd{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.n2rank .hd h1{margin:0;font-size:22px;letter-spacing:.5px}.n2rank .hd h1 small{font-size:12px;color:var(--tx3);font-weight:400;letter-spacing:0;margin-left:8px}.n2rank .meta{color:var(--tx3);font-size:12px;font-family:var(--mono)}.n2rank .meta b{color:var(--tx2);font-weight:500}.n2rank /* ---------- toolbar ---------- */
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.n2rank .search{position:relative;flex:1 1 220px;min-width:180px}.n2rank .search input{
  width:100%;background:var(--panel);border:1px solid var(--line);color:var(--tx);
  border-radius:6px;padding:8px 10px 8px 30px;font-size:13px;outline:none;
}.n2rank .search input:focus{border-color:var(--brand)}.n2rank .search svg{position:absolute;left:9px;top:9px;opacity:.45}.n2rank .ghost{margin-left:auto;background:transparent;border:1px solid var(--line);color:var(--tx2);
  border-radius:6px;padding:7px 11px;font-size:12px;cursor:pointer}.n2rank .ghost:hover{color:var(--brand);border-color:var(--brand)}.n2rank /* ---------- table ---------- */
.tbox{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}.n2rank .scroll{overflow-x:auto}.n2rank /* 顶部同步滚动条 */
.hsbar{overflow-x:auto;overflow-y:hidden;display:none}.n2rank .hsbar.on{display:block}.n2rank .hsbar .hsinner{height:1px}.n2rank table{width:100%;border-collapse:collapse;min-width:1020px}.n2rank thead th{
  position:sticky;top:0;z-index:2;background:var(--th);color:var(--tx3);
  font-size:11px;font-weight:500;letter-spacing:.3px;text-align:right;
  padding:10px 10px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;
}.n2rank thead th:hover{color:var(--tx2)}.n2rank thead th.l{text-align:left}.n2rank thead th.on{color:var(--brand)}.n2rank thead th .ar{font-size:9px;opacity:.7;margin-left:2px}.n2rank tbody td{padding:9px 10px;border-bottom:1px solid var(--tdline);text-align:right;vertical-align:middle;font-family:var(--mono);font-size:12.5px;white-space:nowrap}.n2rank tbody td.l{text-align:left;font-family:inherit}.n2rank tbody tr:hover{background:var(--hover)}.n2rank tbody tr.hit td{background:var(--hit)}.n2rank tbody tr.hit:hover td{background:var(--hit2)}.n2rank tbody tr.hit td:first-child{box-shadow:inset 3px 0 0 var(--brand)}.n2rank tbody tr:last-child td{border-bottom:none}.n2rank .rank{color:var(--tx3);width:38px;font-size:12px}.n2rank .rank.t1{color:var(--r1);font-weight:700}.n2rank .rank.t2{color:var(--r2);font-weight:700}.n2rank .rank.t3{color:var(--r3);font-weight:700}.n2rank .mdl{display:flex;align-items:center;gap:9px;min-width:220px;flex-wrap:nowrap;white-space:nowrap}.n2rank .lg{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;
  font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#8ea0b5,#5c6b7d);flex:none}.n2rank .lg.cn{background:linear-gradient(135deg,#c86bfa,#8e1fd0)}.n2rank .lgimg{width:26px;height:26px;border-radius:6px;object-fit:contain;flex:none;
  background:#fff;border:1px solid var(--line);padding:2px}.n2rank .nm{display:flex;flex-direction:column;line-height:1.35;min-width:0}.n2rank .nm b, .n2rank .nm span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.n2rank .nm b{font-weight:600;font-size:13px;color:var(--tx)}.n2rank .nm span{font-size:11px;color:var(--tx3)}.n2rank .nm span em{font-style:normal;color:var(--brand);font-weight:600}.n2rank .tags{margin-left:auto;display:flex;gap:4px;flex:none;flex-wrap:nowrap}.n2rank .tg{font-size:10px;padding:1px 5px;border-radius:3px;border:1px solid var(--line);color:var(--tx2);white-space:nowrap}.n2rank .tg.free{color:var(--brand);border-color:var(--brand);background:transparent;font-weight:600}.n2rank .tg.cn{color:var(--brand-deep);border-color:transparent;background:var(--brand-bg);font-weight:600}.n2rank .tg.mm{color:var(--brand);border-color:transparent;background:var(--brand-bg2)}.n2rank .bar-cell{display:flex;align-items:center;gap:7px;justify-content:flex-end;white-space:nowrap}.n2rank .bar-cell .npi{font-weight:600;color:var(--tx);min-width:38px}.n2rank .bar-cell .bar{width:56px;height:4px;background:var(--barbg);border-radius:2px;overflow:hidden}.n2rank .bar-cell .bar i{display:block;height:100%;background:linear-gradient(90deg,#f59f00,#f76707)}.n2rank .cjb .bar i{background:linear-gradient(90deg,#2f9e44,#69db7c)}.n2rank .aa .bar i{background:linear-gradient(90deg,#3b5bdb,#748ffc)}.n2rank .up{color:var(--up)}.n2rank .down{color:var(--down)}.n2rank .flat{color:var(--tx3)}.n2rank .pin{color:var(--tx2);font-weight:500}.n2rank .ok{color:var(--brand);font-weight:600}.n2rank .no{color:var(--tx3)}.n2rank .dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle}.n2rank .dim{color:var(--tx3)}.n2rank .hint{color:var(--brand);font-size:10px;border:1px solid transparent;background:var(--brand-bg);padding:1px 4px;border-radius:3px;white-space:nowrap}.n2rank .legend{color:var(--tx3);font-size:11px;margin:0 0 9px 2px;line-height:1.7}.n2rank .legend b{color:var(--tx2);font-weight:500}.n2rank .legend .hint{margin:0 2px}.n2rank /* ---------- 数据不足区 ---------- */
details.pending{margin-top:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.n2rank details.pending summary{
  cursor:pointer;padding:13px 16px;font-size:13.5px;color:var(--tx);user-select:none;list-style:none;
}.n2rank details.pending summary:hover{background:var(--hover)}.n2rank details.pending summary::-webkit-details-marker{display:none}.n2rank details.pending summary::before{
  content:"▾";display:inline-block;margin-right:10px;color:var(--brand);
  font-size:15px;line-height:1;vertical-align:-2px;transition:transform .18s;
  transform:rotate(-90deg);
}.n2rank details.pending[open] summary::before{transform:rotate(0deg)}.n2rank details.pending summary b{color:var(--brand)}.n2rank details.pending .psub{font-size:11px;color:var(--tx3);margin-left:8px}.n2rank details.pending .ptgl{color:var(--brand)}.n2rank details.pending[open] summary{border-bottom:1px solid var(--line)}.n2rank details.pending .scroll{max-height:420px;overflow-y:auto}.n2rank .ptable{min-width:760px}.n2rank .ptable thead th{position:static}.n2rank .ptable tbody td{font-size:12px;color:var(--tx2)}.n2rank /* ---------- 历史快照弹窗 ---------- */
.hist-link{color:var(--brand);text-decoration:none;font-weight:600}.n2rank .hist-link:hover{text-decoration:underline}.n2rank .modal{position:fixed;inset:0;background:rgba(10,12,16,.55);z-index:50;
  display:flex;align-items:center;justify-content:center;padding:16px}.n2rank .modal[hidden]{display:none}.n2rank .mbox{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  width:min(980px,96vw);max-height:92vh;overflow:auto;padding:16px 18px 20px}.n2rank .mhead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}.n2rank .mhead>b{font-size:15px}.n2rank .mnav{display:flex;align-items:center;gap:8px;font-family:var(--mono);color:var(--tx)}.n2rank .mnav button{background:var(--panel);border:1px solid var(--line);color:var(--tx2);
  width:26px;height:26px;border-radius:6px;cursor:pointer;font-size:15px;line-height:1}.n2rank .mnav button:hover{color:var(--brand);border-color:var(--brand)}.n2rank .mclose{margin-left:auto;background:transparent;border:1px solid var(--line);
  color:var(--tx2);border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer}.n2rank .mclose:hover{color:var(--brand);border-color:var(--brand)}.n2rank .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:6px 0 14px;max-width:460px}.n2rank .cal .wd{font-size:11px;color:var(--tx3);text-align:center;padding:2px 0}.n2rank .cal .day{aspect-ratio:1;border:1px solid var(--line);border-radius:7px;display:flex;
  flex-direction:column;align-items:center;justify-content:center;font-family:var(--mono);
  font-size:12px;color:var(--tx3);cursor:default;position:relative}.n2rank .cal .day.has{border-color:var(--brand);color:var(--brand);font-weight:700;cursor:pointer;background:var(--brand-bg2)}.n2rank .cal .day.has:hover{background:var(--brand-bg)}.n2rank .cal .day.today::after{content:"今";position:absolute;top:2px;right:3px;font-size:8px;color:var(--brand)}.n2rank .cal .day.sel{outline:2px solid var(--brand);outline-offset:-2px}.n2rank .cal .day.blank{border:none}.n2rank .histscroll{max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:8px}.n2rank .hint2{color:var(--tx3);font-size:12px;margin:4px 0 10px}.n2rank /* ---------- 快照查看横幅 / 弹窗按钮 ---------- */
.vbanner{background:var(--brand-bg2);border:1px solid var(--brand);border-radius:8px;
  padding:9px 14px;margin-bottom:10px;font-size:13px;color:var(--tx)}.n2rank .vbanner b{color:var(--brand);font-family:var(--mono)}.n2rank .vbanner a{color:var(--brand);font-weight:700;text-decoration:none}.n2rank .vbanner a:hover{text-decoration:underline}.n2rank .mfoot{display:flex;gap:10px;justify-content:flex-end;margin-top:4px}.n2rank .mok{background:var(--brand);border:1px solid var(--brand);color:#fff;border-radius:7px;
  padding:8px 16px;font-size:13px;cursor:pointer;font-weight:600}.n2rank .mok:hover{background:var(--brand-deep)}.n2rank .mok:disabled{opacity:.45;cursor:not-allowed}.n2rank .mback{background:transparent;border:1px solid var(--line);color:var(--tx2);
  border-radius:7px;padding:8px 14px;font-size:13px;cursor:pointer}.n2rank .mback:hover{color:var(--brand);border-color:var(--brand)}.n2rank /* ---------- method ---------- */
.method{margin-top:22px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px 20px}.n2rank .method h2{margin:0 0 10px;font-size:15px;color:var(--tx)}.n2rank .method h3{margin:16px 0 6px;font-size:12.5px;color:var(--brand);letter-spacing:.4px}.n2rank .method p, .n2rank .method li{color:var(--tx2);font-size:12.5px;line-height:1.75;margin:5px 0}.n2rank .method code{font-family:var(--mono);background:var(--brand-bg2);border:1px solid transparent;padding:1px 5px;border-radius:4px;color:var(--brand-deep);font-size:11.5px}.n2rank .method table.mini{min-width:0;width:auto;font-size:12px}.n2rank .method table.mini td{border:none;padding:2px 14px 2px 0;text-align:left;font-size:12px}.n2rank .foot{margin-top:16px;color:var(--tx3);font-size:11.5px;line-height:1.8;border-top:1px solid var(--line);padding-top:12px}.n2rank .foot a{color:var(--brand);text-decoration:none}@media (max-width:767px){.n2rank .wrap{padding:12px 8px 40px}.n2rank .scroll{-webkit-overflow-scrolling:touch}.n2rank .legend{font-size:10.5px}.n2rank .method p, .n2rank .method li{font-size:12px}.n2rank .stats{grid-template-columns:repeat(2,1fr)}.n2rank .hd h1{font-size:18px}.n2rank .wrap{padding:14px 10px 40px}.n2rank .method{padding:14px}.n2rank .ghost{display:none}}

/* ---------- 主题覆盖加固（OneNav 等全局样式兜底） ---------- */
.n2rank .search input{
  width:100% !important;background:var(--panel) !important;border:1px solid var(--line) !important;color:var(--tx) !important;
  border-radius:6px !important;padding:8px 10px 8px 30px !important;font-size:13px !important;outline:none !important;
}
.n2rank .search input:focus{border-color:var(--brand) !important}
.n2rank details.pending{
  margin-top:12px !important;background:var(--panel) !important;border:1px solid var(--line) !important;border-radius:10px !important;
}
.n2rank details.pending summary{
  cursor:pointer !important;padding:13px 16px !important;font-size:13.5px !important;color:var(--tx) !important;user-select:none;list-style:none;
}
.n2rank.no-hd .hd h1{display:none}

/* ---------- 首页 Top3 模块：复用 .n2rank 总榜样式，仅做容器微调 ---------- */
.n2rank.n2top{
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px 20px;margin:0;box-shadow:0 1px 3px rgba(20,30,50,.04);
}
.n2rank.n2top .tbox{border:none;border-radius:0;overflow:visible;background:transparent}
.n2rank.n2top thead th{cursor:default;position:static}
.n2top .n2top-hd{
  display:flex;align-items:center;margin-bottom:12px;
  /* 重置回 OneNav body 的字体与颜色（tab-title/text-gray/btn-more 均无样式定义，观感来自 body 继承） */
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  color:var(--main-color,#484b4f);
}
.n2top .n2top-hd h4.tab-title{
  font:inherit;font-size:1rem;font-weight:500;line-height:1.2;margin:0;color:inherit;letter-spacing:normal;
}
.n2top .n2top-hd .site-tag{color:inherit}
@media (max-width:767px){.n2rank.n2top{margin:0}}

/* ============================================================
   v1.2.1 表头吸顶：JS 克隆表头 + position:fixed
   放弃 position:sticky —— .scroll 的 overflow-x:auto（以及主题祖先容器的
   overflow）会把 sticky 锁死在容器内，且放开 overflow 会让表格撑出卡片。
   改由 rank.js 克隆一份 thead 固定定位，滚动时显示并同步横向偏移。
   ============================================================ */
.n2rank.n2rank-fixedhead{
  display:none; position:fixed; z-index:40; overflow:hidden;
  margin:0; padding:0; border-radius:0;
  background:var(--th); border-bottom:1px solid var(--line);
  box-shadow:0 3px 10px rgba(15,23,42,.10);
}
.n2rank.n2rank-fixedhead.on{display:block}
.n2rank.n2rank-fixedhead table{
  width:auto; min-width:0; border-collapse:collapse; table-layout:fixed;
  margin:0; will-change:transform;
}
.n2rank.n2rank-fixedhead th{
  position:static; background:var(--th); color:var(--tx3);
  font-size:11px; font-weight:500; letter-spacing:.3px; text-align:right;
  padding:10px; border-bottom:none; white-space:nowrap; cursor:pointer;
  overflow:hidden; text-overflow:ellipsis; box-sizing:border-box; font-family:inherit;
}
.n2rank.n2rank-fixedhead th.l{text-align:left}
.n2rank.n2rank-fixedhead th:hover{color:var(--tx2)}
.n2rank.n2rank-fixedhead th.on{color:var(--brand)}
.n2rank.n2rank-fixedhead th .ar{font-size:9px;opacity:.7;margin-left:2px}

/* ============================================================
   v1.2.0 补丁 2：方法论 / 指标定义文案自适应换行
   原因：全局 .n2rank tbody td{white-space:nowrap} 误伤了
   .method table.mini（浏览器自动补 tbody），长定义整行不换行顶出容器。
   ============================================================ */
.n2rank .method table.mini td{
  white-space:normal !important;
  overflow-wrap:break-word;
  word-break:break-word;
  text-align:left;
  font-family:inherit;          /* 说明文字不该用等宽字体（全局 td 是 mono） */
}
.n2rank .method code{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.n2rank .method p, .n2rank .method li, .n2rank .legend, .n2rank .vbanner{overflow-wrap:break-word}

/* ============================================================
   v1.2.0 补丁 3：夜间模式适配（跟随 OneNav body 类）
   OneNav 夜间模式 = <html> 上切换 io-black-mode 类（手动点按钮切换，
   或系统暗色时主题自动加上）。原 rank.css 只监听 prefers-color-scheme，
   与主题手动切换脱节，故补齐：
   ============================================================ */

/* 1) 主题处于夜间（手动切换或系统暗色自动注入）→ 应用暗色变量
      配色直接对齐 OneNav 夜间调色板：页面底 #1b1d1f、卡片 #2D2E2F、
      次级文字 #a6a8ab、弱化文字 #73757a（避免自造"纯黑"导致与博客卡片割裂） */
html.io-black-mode .n2rank{
  --bg:#1b1d1f; --panel:#2d2e2f; --line:#3d4043; --th:#333638; --tdline:#35383a;
  --tx:#e3e5e8; --tx2:#a6a8ab; --tx3:#7c7f84;
  --up:#f6465d; --down:#0ecb81; --blue:#2f80ed; --barbg:#3d4043;
  --brand:#c77df5; --brand-deep:#9422d6; --brand-bg:rgba(148,34,214,.22); --brand-bg2:rgba(148,34,214,.13);
  --hover:#35383b; --hit:rgba(148,34,214,.14); --hit2:rgba(148,34,214,.22);
  --r1:var(--brand); --r2:#22d3ee; --r3:#ff7a45;
}

/* 2) 系统是暗色、但用户已手动切回日间（html 上没有 io-black-mode）→ 强制回日间变量
      （文件前部的 media query 暗色块仍在生效，这里用更高优先级压回） */
@media (prefers-color-scheme: dark){
  html:not(.io-black-mode) .n2rank{
    --bg:#f5f7fa; --panel:#ffffff; --line:#e3e8ee; --th:#fafbfd; --tdline:#edf0f4;
    --tx:#1b222c; --tx2:#4d5763; --tx3:#79828e;
    --up:#e5484d; --down:#12a150; --blue:#2f6fed; --barbg:#e9edf2;
    --brand:#9422d6; --brand-deep:#4f1fc1; --brand-bg:rgba(148,34,214,.13); --brand-bg2:rgba(148,34,214,.07);
    --hover:#f2f5f9; --hit:rgba(148,34,214,.06); --hit2:rgba(148,34,214,.12);
    --r1:var(--brand); --r2:#0891b2; --r3:#e8590c;
  }
}

/* 3) 首页 Top3 标题行与代码片段颜色跟随夜间（与 OneNav 主文字色对齐） */
html.io-black-mode .n2top .n2top-hd{ color:#b4b8bf; }
html.io-black-mode .n2rank .method code{ color:var(--brand); background:var(--brand-bg2); }
html.io-black-mode .n2rank.n2top{ box-shadow:none; }
