/* ===== base.css ===== */
/* 结构层：只认变量，不写死颜色。
   一套 HTML + 一套结构 CSS + N 套皮肤变量 = N 种风格。 */
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-size:var(--fs,13.5px);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;
}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent)}
.wrap{max-width:var(--wrap,1400px);margin:0 auto;padding:0 var(--pad,20px)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}
.skip{position:absolute;left:-9999px}

/* ── 视觉隐藏（只给搜索引擎和读屏） ── */
.vh{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ── 搜索框（首页居中放大 / 内页页眉下一行） ── */
.sb{display:flex;align-items:center;background:var(--panel);border:var(--bd-w,1px) solid var(--line);
  border-radius:var(--r-field,980px);padding:4px;box-shadow:var(--sh-card);transition:border-color .16s,box-shadow .16s}
.sb:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.sb input{flex:1;min-width:0;height:var(--sb-h,44px);border:0;background:transparent;outline:none;
  font:inherit;font-size:var(--sb-fs,15px);color:var(--ink);padding:0 18px}
.sb input::placeholder{color:var(--ink3)}
.sb button{flex:0 0 auto;height:calc(var(--sb-h,44px) - 4px);padding:0 24px;border:0;cursor:pointer;
  background:var(--btn-bg,var(--accent));color:var(--btn-ink,#fff);font:inherit;font-weight:600;
  font-size:var(--sb-fs,15px);border-radius:var(--r-field,980px);transition:filter .16s}
.sb button:hover{filter:brightness(1.08)}
.sb.big{max-width:700px;margin:0 auto;--sb-h:58px;--sb-fs:16px}

/* 首页首屏 */
.hero{padding:78px 0 44px;text-align:center}
.hero .line{font-size:12.5px;color:var(--ink3);margin-top:16px}
.hot{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:26px;font-size:13px}
.hot .k{color:var(--ink3);align-self:center}
.hot a{background:var(--panel);border-radius:var(--r-pill);padding:7px 15px;color:var(--ink2);
  transition:background .16s,color .16s}
.hot a:hover{background:var(--nav-on-bg,var(--accent-soft));color:var(--nav-on-ink,var(--accent))}

/* 内页：搜索一行，夹在页眉与分类之间 */
.searchrow{border-bottom:var(--bd-w,1px) solid var(--line);padding:14px 0}
.searchrow .wrap{display:flex;justify-content:center}
.searchrow .sb{width:100%;max-width:640px;--sb-h:46px;--sb-fs:14.5px;box-shadow:none}
.homecats{padding-top:10px}
.homecats .lab{font-size:12.5px;color:var(--ink3);text-align:center;padding:16px 0 8px}

/* ── 页眉 ── */
.hd{position:sticky;top:0;z-index:40;background:var(--hd-bg);
  border-bottom:var(--bd-w,1px) solid var(--hd-line,var(--line))}
.hd.blur{-webkit-backdrop-filter:blur(14px) saturate(180%);backdrop-filter:blur(14px) saturate(180%)}
.hd .wrap{display:flex;align-items:center;gap:14px;height:var(--hd-h,62px)}
.hd .lg{display:flex;align-items:center;gap:8px;font-size:var(--fs-logo,17px);font-weight:700;
  letter-spacing:-.2px;white-space:nowrap;color:var(--hd-ink,var(--ink));
  font-family:var(--font-head,var(--font))}
.hd .lg svg{width:20px;height:20px;color:var(--logo-mark,var(--accent));flex:0 0 auto}
.hd .slogan{font-size:12.5px;color:var(--hd-slogan,var(--ink3));white-space:nowrap}
.hd .grow{flex:1}
.hd form{display:flex;align-items:center;height:var(--field-h,38px);width:380px;max-width:34vw;
  background:var(--field-bg);border:var(--bd-w,1px) solid var(--field-line,var(--line));
  border-radius:var(--r-field,10px);padding:3px}
.hd form:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.hd input{flex:1;min-width:0;border:0;background:transparent;padding:0 10px;font:inherit;
  font-size:var(--fs-field,13.5px);color:var(--ink);outline:none}
.hd input::placeholder{color:var(--ink3)}
.hd button{border:0;height:calc(var(--field-h,38px) - 8px);padding:0 16px;border-radius:var(--r-btn,7px);
  background:var(--btn-bg,var(--ink));color:var(--btn-ink,#fff);font:inherit;font-size:13px;font-weight:600;
  cursor:pointer;transition:background .16s,color .16s}
.hd button:hover{background:var(--accent);color:var(--accent-ink,#fff)}
.hd .acc{font-size:var(--fs-field,13.5px);color:var(--ink2);padding:7px 14px;border-radius:var(--r-pill);
  white-space:nowrap;transition:background .16s,color .16s}
.hd .acc:hover{background:var(--hover-bg,var(--bg-soft));color:var(--ink)}

/* ── L0 主题域（7 列两行） ── */
.l0{background:var(--l0-bg,transparent);border-bottom:var(--bd-w,1px) solid var(--line)}
.l0 .wrap{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--l0-gap,8px);
  padding:10px var(--pad,20px);max-width:1180px}
.l0 a{display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:var(--fs-nav,14px);font-weight:500;padding:9px 12px;border-radius:var(--r-nav,12px);
  border:1px solid var(--line);background:var(--panel);color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:background .14s,color .14s,border-color .14s}
.l0 a:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.l0 a.off{border-style:dashed;color:var(--ink2);background:transparent}
.l0 a.off:hover{border-style:solid}
.l0 a.on,.l0 a.on.off{background:var(--accent);border-color:var(--accent);border-style:solid;
  color:var(--nav-on-ink,#fff);font-weight:600}
.cat-c{flex:0 0 auto;font-size:11px;font-weight:600;font-family:var(--font-num);
  color:var(--accent);background:var(--accent-soft);border-radius:var(--r-pill);padding:1px 7px}
.l0 a.on .cat-c{color:inherit;background:transparent;padding:0;opacity:.8;font-weight:600}

/* ── L1 主题（一行胶囊） ── */
.l1{background:var(--l1-bg,transparent);border-bottom:var(--bd-w,1px) solid var(--line)}
.l1 .wrap{display:flex;flex-wrap:wrap;gap:var(--l1-gap,6px);padding:9px var(--pad,20px)}
.l1 a{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-nav2,14px);font-weight:500;
  padding:7px 16px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--panel);color:var(--ink);
  white-space:nowrap;transition:background .14s,color .14s,border-color .14s}
.l1 a:hover{border-color:var(--accent);color:var(--accent)}
.l1 a.off{border-style:dashed;color:var(--ink2);background:transparent}
.l1 a.off:hover{border-style:solid}
.l1 a.on,.l1 a.on.off{background:var(--accent);border-color:var(--accent);border-style:solid;
  color:var(--nav-on-ink,#fff);font-weight:600}
.chips .none{font-size:12.5px;color:var(--ink3);line-height:30px}

/* 空主题页：把"要收什么"摆出来 */
.plan{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin-top:16px}
.plan .k{font-size:12.5px;color:var(--ink3)}
.plan em{font-style:normal;font-size:12.5px;padding:4px 12px;border-radius:var(--r-pill);
  border:1px dashed var(--line);color:var(--ink2)}
.l1 a.on .cat-c{color:inherit;background:transparent;padding:0;opacity:.8;font-weight:600}
.l1s{background:var(--l1s-bg,var(--bg-soft));border-bottom:var(--bd-w,1px) solid var(--line)}
.l1s .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px var(--pad,20px)}
.l1s .k{font-size:12px;color:var(--ink3)}
.l1s a,.l1s span{font-size:12.5px;padding:3px 11px;border-radius:var(--r-pill);color:var(--ink2);
  background:var(--panel);border:1px solid var(--line)}
.l1s a.on{background:var(--nav-on-bg,var(--accent-soft));border-color:var(--accent);
  color:var(--nav-on-ink,var(--accent));font-weight:600}

/* ── 主体 ── */
.main{padding:18px 0 34px}
.ttl{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.ttl h1{font-family:var(--font-head,var(--font));font-size:var(--fs-title,21px);
  font-weight:var(--title-weight,700);letter-spacing:var(--title-track,-.4px);line-height:1.25}
.ttl .n{font-size:12.5px;color:var(--ink3)}
.ttl .view{margin-left:auto;display:flex;gap:4px;align-items:center;background:var(--bg-tint);
  padding:3px;border-radius:var(--r-btn,10px)}
.ttl .view button{font:inherit;font-size:12.5px;border:0;background:transparent;color:var(--ink2);
  padding:5px 14px;border-radius:var(--r-btn,7px);cursor:pointer;transition:background .14s,color .14s}
.ttl .view button[aria-pressed="true"]{background:var(--panel);color:var(--accent);font-weight:600;
  box-shadow:var(--sh-seg,0 1px 2px rgba(15,23,42,.08))}
.ttl .shown{font-size:12.5px;color:var(--ink3);white-space:nowrap}
.ttl .shown b{font-family:var(--font-num);color:var(--ink);font-weight:600}

/* ── 筛选条 ── */
.fil{margin-bottom:16px;background:var(--fil-bg,var(--bg-soft));border-radius:var(--r-filter,10px);
  border:var(--fil-bd-w,0) solid var(--line);font-size:12px;overflow:hidden}
.frow{display:flex;gap:12px;align-items:flex-start;padding:12px 14px}
.frow+.frow{border-top:var(--bd-w,1px) solid var(--line-soft)}
.frow .k{flex:0 0 44px;color:var(--ink3);font-size:12.5px;line-height:30px}
.frow .chips{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:0}
.fil button{font:inherit;font-size:12.5px;background:var(--panel);border:var(--chip-bd-w,1px) solid var(--chip-line,var(--line));
  color:var(--ink2);padding:4px 12px;border-radius:var(--r-pill);cursor:pointer;
  transition:border-color .14s,background .14s,color .14s}
.fil button:hover{border-color:var(--accent);color:var(--accent)}
.fil button[aria-pressed="true"]{background:var(--chip-on-bg,var(--ink));border-color:var(--chip-on-bg,var(--ink));
  color:var(--chip-on-ink,#fff);font-weight:600}

/* ── 数据卡片 ── */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-min,252px),1fr));gap:var(--gap,12px)}
.card{display:flex;flex-direction:column;gap:8px;background:var(--card-bg,var(--panel));
  border:var(--bd-w,1px) solid var(--card-line,var(--line));border-radius:var(--r-c,14px);
  padding:var(--card-pad,15px 16px 13px);box-shadow:var(--sh-card,none);
  transition:border-color .18s,box-shadow .18s,transform .18s,background .18s}
.card:hover{border-color:var(--card-line-hover,var(--accent));box-shadow:var(--sh-card-hover,var(--sh));
  transform:translate(var(--hover-x,0),var(--hover-y,-2px))}
.card .h{display:flex;align-items:flex-start;gap:8px}
.card .t{font-family:var(--font-head,var(--font));font-size:var(--fs-card,15px);font-weight:600;
  letter-spacing:-.2px;line-height:1.45}
.card .g{margin-left:auto;flex:0 0 auto;font-size:11px;font-weight:600;padding:2px 8px;
  border-radius:var(--r-tagpill,999px);background:var(--b-bg,var(--bg-tint));color:var(--b-ink,var(--ink2))}
.card .g.a{background:var(--a-bg);color:var(--a-ink)}
.card .big{font-family:var(--font-num);font-size:var(--fs-big,24px);font-weight:700;
  letter-spacing:-.6px;color:var(--big-ink,var(--ink));line-height:1.15}
.card .big span{font-family:var(--font);font-size:12px;font-weight:400;color:var(--ink3);margin-left:6px;letter-spacing:0}
.card .desc{font-size:12.5px;line-height:1.62;color:var(--ink2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .row{font-size:12px;color:var(--ink2);display:flex;gap:6px;white-space:nowrap;overflow:hidden}
.card .row i{font-style:normal;color:var(--dot,var(--ink3));opacity:.6}
.card .tags{display:flex;flex-wrap:wrap;gap:4px}
.card .tags em{font-style:normal;font-size:11px;padding:2px 7px;border-radius:var(--r-tag,6px);
  background:var(--tag-bg,var(--bg-tint));color:var(--tag-ink,var(--ink2));
  border:var(--tag-bd-w,0) solid var(--tag-line,transparent)}
.card .foot{display:flex;align-items:center;gap:10px;margin-top:2px;padding-top:10px;
  border-top:var(--bd-w,1px) solid var(--line-soft);font-size:12px;color:var(--ink3)}
.card .foot a{margin-left:auto;font-weight:600;color:var(--accent)}
.card .foot a:hover{color:var(--ink)}

/* ── 表格视图 ── */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs,13.5px);
  border:var(--bd-w,1px) solid var(--line);border-radius:var(--r-c,14px);overflow:hidden;background:var(--panel)}
th{background:var(--th-bg,var(--bg-soft));padding:10px 12px;font-weight:600;font-size:12.5px;color:var(--ink2);
  text-align:left;white-space:nowrap;border-bottom:var(--bd-w,1px) solid var(--line)}
td{padding:10px 12px;white-space:nowrap;border-bottom:var(--bd-w,1px) solid var(--line-soft);color:var(--ink2)}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--row-hover,var(--accent-soft))}
td a{color:var(--ink);font-weight:500}
td.n,th.n{text-align:right;font-family:var(--font-num)}

.empty{border:var(--bd-w,1px) solid var(--line);background:var(--bg-soft);border-radius:var(--r-c,14px);
  padding:34px;text-align:center;color:var(--ink3);font-size:13.5px}

/* ── 分页 ── */
.pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center;
  margin-top:22px;padding-top:18px;border-top:var(--bd-w,1px) solid var(--line)}
.pager .pg{font-size:13px;min-width:34px;height:34px;padding:0 11px;display:inline-flex;
  align-items:center;justify-content:center;border-radius:var(--r-btn,10px);
  border:var(--bd-w,1px) solid var(--line);background:var(--panel);color:var(--ink2);
  font-family:var(--font-num);transition:border-color .14s,color .14s,background .14s}
.pager a.pg:hover{border-color:var(--accent);color:var(--accent)}
.pager .pg.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.pager .pg.dis{color:#C7C7CC;background:transparent}
.pager .pg.gap{border:0;background:transparent;color:var(--ink3);min-width:18px;padding:0}
.pager .pginfo{font-size:12.5px;color:var(--ink3);margin-left:10px}
.note{font-size:12.5px;color:var(--ink3);margin-top:14px}
footer{border-top:var(--bd-w,1px) solid var(--line);padding:16px 0 26px;font-size:12px;color:var(--ink3);
  background:var(--foot-bg,transparent)}
.hide{display:none!important}

@media (max-width:720px){
  .l0 .wrap{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hd .slogan{display:none}
  .hd form{width:auto;flex:1;max-width:none}
  .cards{grid-template-columns:1fr}
  .ttl h1{font-size:calc(var(--fs-title,21px) - 2px)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}


/* ===== skin.css ===== */
/* 皮肤 · 苹果分组（唯一一套，2026-09-17 定）
   改配色只改这里的变量；结构在 base.css，数据在 registry.json。 */
:root{
  --bg:#F5F5F7; --panel:#FFFFFF; --bg-soft:#F5F5F7; --bg-tint:#EDEDF0;
  --ink:#1D1D1F; --ink2:#6E6E73; --ink3:#A1A1A6; --line:#E5E5EA; --line-soft:#EDEDF0;
  --accent:#0071E3; --accent-soft:#E8F1FE; --accent-line:#BBD9F8;

  --r-s:12px; --r-c:18px; --r-pill:980px; --r-nav:12px; --r-btn:10px;
  --r-tag:8px; --r-tagpill:980px; --r-field:980px;
  --sh:0 1px 2px rgba(0,0,0,.04),0 8px 24px -16px rgba(0,0,0,.18);
  --sh-card:0 1px 2px rgba(0,0,0,.03),0 6px 18px -14px rgba(0,0,0,.16);
  --sh-card-hover:0 2px 4px rgba(0,0,0,.04),0 14px 32px -16px rgba(0,0,0,.22);
  --sh-seg:0 1px 3px rgba(0,0,0,.12);

  --font:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  --font-head:var(--font);
  --font-num:-apple-system,"SF Pro Text",ui-monospace,"SFMono-Regular",Consolas,sans-serif;

  --fs:14px; --fs-title:24px; --fs-card:17px; --fs-big:26px;
  --fs-nav:14px; --fs-nav2:14px; --fs-field:14px; --fs-logo:18px;
  --title-track:-.6px; --card-min:296px; --gap:16px; --card-pad:18px 18px 15px;

  --hd-bg:rgba(255,255,255,.82); --hd-line:#E5E5EA; --hd-h:64px; --hd-ink:#1D1D1F; --logo-mark:#0071E3;
  --field-bg:#FFFFFF; --field-line:#E5E5EA; --btn-bg:#0071E3; --btn-ink:#fff;
  --nav-on-bg:#0071E3; --nav-on-ink:#FFFFFF; --nav-off:#C7C7CC; --nav-off-op:.7;
  --chip-on-bg:#0071E3; --chip-on-ink:#fff; --chip-line:#D9D9DE; --fil-bg:transparent;
  --a-bg:#E7F7EE; --a-ink:#0A7D45; --b-bg:#EFEFF2; --b-ink:#8A8A8E;
  --th-bg:#F5F5F7; --tag-bg:#F2F2F4; --tag-ink:#6E6E73; --row-hover:#F5F9FF;
}
.hd.blur{-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%)}
.l0 .wrap,.l1 .wrap{padding-top:12px;padding-bottom:12px}
.ttl h1{font-weight:700}


/* ===== page.css ===== */
/* 页面组件（第三层）：base.css 管骨架、skin.css 管皮肤、这里补**真站点有、
   demo 没有**的那几块 —— 面包屑、下载块、样例表、问答、同类数据、申请表单。
   规矩同前两层：只认变量，不写死颜色，换皮肤不用改这里。 */

/* ── 面包屑 ── */
.crumb{font-size:12.5px;color:var(--ink3);padding:16px 0 0;display:flex;flex-wrap:wrap;gap:2px}
.crumb a{color:var(--ink3)}
.crumb a:hover{color:var(--accent)}
.crumb i{font-style:normal;margin:0 7px;opacity:.65}
.crumb span{color:var(--ink2)}

/* ── 页面标题区（内页比首页小一号） ── */
.dhead{padding:10px 0 2px}
.dhead h1{font-family:var(--font-head,var(--font));font-size:var(--fs-h1,26px);font-weight:700;
  letter-spacing:var(--title-track,-.5px);line-height:1.3}
.dhead .dsub{font-size:13.5px;color:var(--ink2);margin-top:9px;max-width:78ch;line-height:1.7}
.lead{font-size:13.5px;color:var(--ink2);margin-top:9px;max-width:78ch;line-height:1.7}
.hline{font-size:12.5px;color:var(--ink3);margin-top:10px}
.hline a{color:var(--accent);font-weight:600}
.tip{display:block;font-size:12.5px;color:var(--ink2);line-height:1.75;margin:0 0 14px;
  background:var(--accent-soft);border-radius:var(--r-btn);padding:10px 14px}

/* ── 数字条 ── */
.stats{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;margin-top:12px;
  font-size:12.5px;color:var(--ink3)}
.stats b{font-family:var(--font-num);font-size:14px;color:var(--ink);font-weight:600;margin-right:4px}
.stats i{font-style:normal;color:var(--line);opacity:.9}

/* ── 下载块：全站最重要的组件，首屏第一眼 ── */
.dload{background:var(--panel);border:1px solid var(--accent-line);border-radius:var(--r-c,18px);
  box-shadow:var(--sh-card);padding:16px 18px 15px;margin:14px 0 18px}
.dload .top{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
.dload .dl-h{font-family:var(--font-head,var(--font));font-size:16px;font-weight:600;letter-spacing:-.2px}
.dload .dl-s{font-size:12.5px;color:var(--ink3);margin-top:4px}
.dload .dl-act{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kl{font-size:12.5px;color:var(--ink3);white-space:nowrap}
.kou{font-family:var(--font-num);font-size:15px;font-weight:700;letter-spacing:.5px;
  background:var(--accent-soft);color:var(--accent);border-radius:var(--r-btn,10px);padding:7px 14px}
.btn{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;
  background:var(--accent);color:#fff;border-radius:var(--r-btn,10px);padding:10px 20px;
  transition:filter .16s}
.btn:hover{filter:brightness(1.07);color:#fff}
.btn2{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:500;
  background:var(--panel);color:var(--ink2);border:1px solid var(--line);
  border-radius:var(--r-btn,10px);padding:9px 18px}
.btn2:hover{border-color:var(--accent);color:var(--accent)}
.fav{font:inherit;font-size:13px;font-weight:500;color:var(--ink2);background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r-btn,10px);padding:9px 16px;cursor:pointer;
  transition:border-color .16s,color .16s,background .16s}
.fav:hover{border-color:var(--accent);color:var(--accent)}
.fav.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.files{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));
  gap:6px;margin-top:14px;padding-top:13px;border-top:1px solid var(--line-soft)}
.files li{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px;
  background:var(--bg-soft);border-radius:var(--r-btn,10px);padding:8px 11px}
.files li.grp{grid-column:1/-1;background:transparent;padding:4px 2px 0;font-size:12px;color:var(--ink3)}
.files .ft{flex:0 0 auto;font-size:10.5px;font-weight:700;letter-spacing:.2px;
  border-radius:6px;padding:2px 6px;background:var(--bg-tint);color:var(--ink2);font-family:var(--font-num)}
.files b{flex:1;min-width:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.files em{flex:0 0 auto;font-style:normal;font-size:11.5px;color:var(--ink3)}
.files .fs{flex:0 0 auto;font-size:11.5px;color:var(--ink3);font-family:var(--font-num)}

/* ── 区块（默认折叠） ── */
.sec{border:1px solid var(--line);border-radius:var(--r-c,18px);background:var(--panel);
  margin-top:12px;overflow:hidden}
.sec>summary{display:flex;align-items:center;gap:8px;list-style:none;cursor:pointer;
  padding:13px 16px;font-size:14px;font-weight:600;transition:background .16s}
.sec>summary::-webkit-details-marker{display:none}
.sec>summary:hover{background:var(--bg-soft)}
.sec>summary::before{content:"▸";font-size:11px;color:var(--ink3);transition:transform .16s}
.sec[open]>summary::before{transform:rotate(90deg)}
.sec[open]>summary{border-bottom:1px solid var(--line-soft)}
.sec .cnt{margin-left:auto;font-size:12px;color:var(--ink3);font-weight:400}
.sec>.sbody{padding:14px 16px 16px}
.sec>.tbl-wrap,.sec>.tnote{margin-left:16px;margin-right:16px}

/* ── 表格（样例 / 清单）：横向滚动，表头吸顶 ── */
.tbl-wrap{overflow-x:auto;margin:14px 0 0;border-radius:var(--r-c,14px)}
.tbl{font-size:12.5px}
.tbl th{position:sticky;top:0;z-index:2}
.tbl td,.tbl th{padding:9px 11px}
.tbl td.num,.tbl th.num{text-align:right;font-family:var(--font-num)}
.tbl td.null{color:var(--ink3)}
.tnote{font-size:12px;color:var(--ink3);margin:10px 0 0}
.tnote b{font-family:var(--font-num);color:var(--ink2)}

/* ── 字段胶囊 ── */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.chips i{font-style:normal;font-size:12.5px;background:var(--bg-soft);border-radius:var(--r-pill,980px);
  padding:5px 12px;color:var(--ink2)}

/* ── 问答 ── */
.faq{margin-top:12px}
.faq .q{border:1px solid var(--line);border-radius:var(--r-btn,10px);background:var(--panel);
  margin-bottom:8px;overflow:hidden}
.faq .q>summary{list-style:none;cursor:pointer;padding:12px 15px;font-size:13.5px;font-weight:600;
  display:flex;align-items:center;gap:8px}
.faq .q>summary::-webkit-details-marker{display:none}
.faq .q>summary::before{content:"Q";font-family:var(--font-num);font-size:11px;font-weight:700;
  color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 6px}
.faq .q .a{padding:0 15px 13px 40px;font-size:13px;color:var(--ink2);line-height:1.8}

/* ── 同类数据 / 资料包：小卡片网格 ── */
.relh{font-family:var(--font-head,var(--font));font-size:15px;font-weight:600;margin:22px 0 10px;
  display:flex;align-items:baseline;gap:8px}
.relh small{font-size:12px;color:var(--ink3);font-weight:400}
.rel{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.rel a{display:flex;align-items:baseline;gap:8px;font-size:13px;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r-btn,12px);padding:11px 14px;
  transition:border-color .16s,box-shadow .16s}
.rel a:hover{border-color:var(--accent);box-shadow:var(--sh-card)}
.rel a b{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rel a span{margin-left:auto;flex:0 0 auto;font-size:12px;color:var(--ink3);font-family:var(--font-num)}

/* ── 分类格子（领域 / 种类 / 形态） ── */
.dgrid,.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;
  padding:14px 16px 16px}
.dm,.fm2{display:flex;align-items:center;gap:8px;font-size:13.5px;background:var(--bg-soft);
  border:1px solid transparent;border-radius:var(--r-btn,12px);padding:11px 14px;color:var(--ink);
  transition:border-color .16s,background .16s}
a.dm:hover,a.fm2:hover{border-color:var(--accent);background:var(--panel);color:var(--accent)}
.dm b,.fm2 b{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm span,.fm2 span{margin-left:auto;flex:0 0 auto;font-size:12px;color:var(--ink3);font-family:var(--font-num)}
.dm.off,.fm2.off{border-style:dashed;border-color:var(--line);background:transparent;color:var(--ink3)}

/* ── 切面直达（按地区跳走，不是筛选器） ── */
.facets{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 14px}
.facets .flabel{font-size:12.5px;color:var(--ink3);margin-right:2px}
.facets a{font-size:12.5px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r-pill,980px);padding:5px 13px;color:var(--ink2)}
.facets a:hover{border-color:var(--accent);color:var(--accent)}

/* ── 聚合页跳转 ── */
.jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.jump a{display:inline-flex;align-items:baseline;gap:8px;font-size:13px;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r-pill,980px);padding:7px 15px}
.jump a:hover{border-color:var(--accent);color:var(--accent)}
.jump a span{font-size:11.5px;color:var(--ink3);font-family:var(--font-num)}

/* ── 申请表单（数据 API）：复用登录页的 .field，只补布局 ── */
.apf{margin-top:16px;max-width:560px}
.apf .field{height:46px}
.apf textarea{width:100%;min-height:96px;font:inherit;font-size:14px;color:var(--ink);
  border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:11px 13px;
  resize:vertical;outline:none;transition:border-color .16s,box-shadow .16s}
.apf textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.apf .lg-go{margin-top:12px}
.apf .chips{margin:2px 0 12px}
.apf .chips label{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink2);
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill,980px);
  padding:7px 15px;cursor:pointer;transition:border-color .16s,background .16s,color .16s}
.apf .chips label:hover{border-color:var(--accent)}
.apf .chips label.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.apf .chips label input{accent-color:var(--accent)}
.fmsg{font-size:12.5px;color:var(--ink3);margin-top:10px}

/* ── 顶部导航里的文字入口（全部数据集 / 资料包 / 数据 API） ── */
.hd .accs{display:flex;align-items:center;gap:2px}
.hd .accs a{padding:7px 12px}

/* ── 空主题域：格子必须在（骨架可见），但点不动（不许有 404） ── */
.l0 span{display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:var(--fs-nav,14px);font-weight:500;padding:9px 12px;border-radius:var(--r-nav,12px);
  border:1px dashed var(--line);background:transparent;color:var(--ink3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}

/* ── 页脚两行 ── */
/* 卡片底部那格来源名可能很长（「辽宁省高中等教育招生考试委员会办公室」），
   让它省略号收尾，别把「下载 →」挤到第二行 */
.card .foot span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
footer .fr{font-size:12.5px;margin-bottom:6px}
footer .fr a{color:var(--ink2);font-weight:500}
footer .fr a:hover{color:var(--accent)}
footer .fm{font-size:12px;color:var(--ink3);line-height:1.8}

/* ── 状态标签（数据 API 页复用后台那套语义） ── */
.tg{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;
  border-radius:var(--r-pill,980px);padding:2px 9px;white-space:nowrap}
.tg.ok{background:var(--a-bg);color:var(--a-ink)}
.tg.mute{background:var(--bg-tint);color:var(--ink2)}

/* ── 文件格式徽章按类型上色（下载块里的「下到了什么」要一眼分清） ── */
.files .ft-xls{background:#E7F7EE;color:#0A7D45}
.files .ft-sql{background:#E8F1FE;color:#0071E3}
.files .ft-pdf{background:#FEF2F2;color:#B91C1C}
.files .ft-txt{background:var(--bg-tint);color:var(--ink2)}

/* ── 按钮式链接的配色，必须压过正文里的链接色 ──
   `.hline a` / `.rel a` 这类规则与 `.btn` 同级，写在前面就会赢 ——
   表现是蓝底蓝字，按钮看着是空的（404 页踩过）。放最后一条兜住。 */
a.btn,a.btn:visited,a.btn:hover{color:#fff}
a.btn.pri{color:#fff}

/* ── 定价两栏（数据 API） ── */
.price{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-top:12px}
.price>div{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-c,18px);
  padding:18px 20px;box-shadow:var(--sh-card)}
.price .amt{font-family:var(--font-num);font-size:30px;font-weight:700;letter-spacing:-.8px;
  color:var(--ink);line-height:1.15}
.price .amt small{font-family:var(--font);font-size:12.5px;font-weight:400;color:var(--ink3);
  margin-left:8px;letter-spacing:0}
.price ul{list-style:none;margin:14px 0 4px;display:flex;flex-direction:column;gap:7px}
.price li{font-size:13px;color:var(--ink2);line-height:1.6;padding-left:18px;position:relative}
.price li::before{content:"✓";position:absolute;left:0;color:var(--accent);font-weight:700}
.price .btn{margin-top:14px}

/* ── 代码块（三分钟跑通） ── */
.code{font-family:var(--font-num);font-size:12.5px;line-height:1.75;white-space:pre;overflow-x:auto;
  background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--r-c,14px);
  padding:14px 16px;margin-top:10px;color:var(--ink)}
.code i{font-style:normal;color:var(--ink3)}
.code b{color:var(--accent);font-weight:600}

/* 表单提交后的红字提示（.fmsg 的出错态） */
.fmsg.bad{color:#C0392B}
@media (max-width:900px){
  .hd .accs a{display:none}
  .hd .accs a.keep{display:inline-flex}
}
@media (max-width:520px){
  .dload .dl-act{margin-left:0;width:100%}
  .files{grid-template-columns:1fr}
  .stats{gap:6px 12px}
}


/* ===== login.css ===== */
/* 登录弹窗 · 主流做法：微信 / 手机号验证码两个 Tab，账号密码兜底 */
.lg-wrap{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:20px}
.lg-wrap[hidden]{display:none}
.lg-mask{position:absolute;inset:0;background:rgba(12,18,28,.42);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.lgbox{position:relative;width:100%;max-width:400px;background:var(--panel);border-radius:20px;
  box-shadow:0 24px 60px -20px rgba(10,20,40,.45);padding:26px 26px 20px;
  animation:lgIn .22s cubic-bezier(.32,.72,0,1)}
@keyframes lgIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.lg-x{position:absolute;top:12px;right:14px;border:0;background:transparent;color:var(--ink3);
  font-size:22px;line-height:1;cursor:pointer;padding:6px;border-radius:50%}
.lg-x:hover{background:var(--bg-tint);color:var(--ink)}
.lg-brand{font-size:19px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:center;gap:8px}
.lg-brand svg{width:20px;height:20px;color:var(--accent)}
.lg-sub{font-size:12.5px;color:var(--ink3);margin-top:6px}

.lg-tabs{display:flex;gap:4px;background:var(--bg-tint);padding:4px;border-radius:12px;margin:18px 0 16px}
.lg-tabs button{flex:1;font:inherit;font-size:13.5px;font-weight:500;color:var(--ink2);border:0;
  background:transparent;padding:8px 0;border-radius:9px;cursor:pointer;transition:background .16s,color .16s}
.lg-tabs button[aria-selected="true"]{background:var(--panel);color:var(--ink);font-weight:600;
  box-shadow:0 1px 3px rgba(15,23,42,.10)}

.lg-body{min-height:212px}
.qr{width:172px;height:172px;margin:2px auto 14px;border-radius:14px;background:#fff;
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.qr svg{width:100%;height:100%;display:block}
.wxsoon{text-align:center;padding:6px 0 2px}
.wxsoon b{display:block;font-size:14.5px;color:var(--ink);margin-bottom:8px}
.wxsoon p{font-size:12.5px;color:var(--ink3);line-height:1.7;margin:0 auto 16px;max-width:31ch}
.wxsoon .ic{width:56px;height:56px;margin:2px auto 14px;border-radius:16px;background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;color:var(--accent)}
.wxsoon .ic svg{width:28px;height:28px}
.lg-center{text-align:center}
.lg-center .tip{font-size:13.5px;font-weight:600}
.lg-center .muted{font-size:12px;color:var(--ink3);margin-top:5px}

.field{display:flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:12px;
  background:var(--panel);padding:0 4px 0 12px;height:50px;margin-bottom:10px;transition:border-color .16s,box-shadow .16s}
.field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.field .pre{font-size:14px;color:var(--ink2);font-family:var(--font-num);padding-right:8px;
  border-right:1px solid var(--line);margin-right:10px;line-height:22px}
.field input{flex:1;min-width:0;border:0;background:transparent;outline:none;font:inherit;font-size:15px;height:100%}
.field input::placeholder{color:var(--ink3)}
.field button{flex:0 0 auto;font:inherit;font-size:13px;font-weight:600;color:var(--accent);
  background:transparent;border:0;border-radius:9px;padding:8px 12px;cursor:pointer;white-space:nowrap}
.field button:hover{background:var(--accent-soft)}
.field button:disabled{color:var(--ink3);cursor:default;background:transparent}
.lg-go{width:100%;height:50px;border:0;border-radius:12px;background:var(--accent);color:#fff;
  font:inherit;font-size:15px;font-weight:600;cursor:pointer;margin-top:4px;transition:filter .16s}
.lg-go:hover{filter:brightness(1.06)}
.lg-go:disabled{background:var(--bg-tint);color:var(--ink3);cursor:default;filter:none}
.err{font-size:12.5px;color:#C0392B;margin-top:8px;min-height:17px}
.ok{color:#0A7D45}

.lg-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:10px}
.lg-other{text-align:center}
.agree{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--ink3);line-height:1.55}
.agree input{margin-top:2px;width:15px;height:15px;accent-color:var(--accent);flex:0 0 auto}
.agree a{color:var(--accent)}
.lnk{font:inherit;font-size:12.5px;color:var(--ink2);background:transparent;border:0;cursor:pointer;padding:2px 0}
.lnk:hover{color:var(--accent)}
.lg-hint{font-size:12px;color:var(--ink3);text-align:center;margin-top:12px}
@media (max-width:520px){
  .lg{padding:22px 18px 16px;border-radius:16px}
  .qr{width:150px;height:150px}
}


/* ===== search.css ===== */
/* 智能搜索：下拉联想 + 结果页 + 高亮 */
.swrap{position:relative}
/* 联想框要跟着搜索框一起伸展 */
.sb .swrap{flex:1;min-width:0}
.sb .swrap input{flex:none;width:100%}
.sdrop{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:60;background:var(--panel);
  border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px -18px rgba(15,23,42,.35);
  overflow:hidden;padding:6px 0;max-height:min(64vh,460px);overflow-y:auto}
.sdrop[hidden]{display:none}
.srow{display:flex;align-items:center;gap:12px;padding:9px 14px;cursor:pointer;font-size:13.5px}
.srow:hover,.srow.on{background:var(--accent-soft)}
.srow .ic{flex:0 0 auto;width:26px;height:26px;border-radius:8px;background:var(--bg-tint);
  display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--ink3);font-family:var(--font-num)}
.srow .tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .tt b{font-weight:600}
.srow .mm{flex:0 0 auto;font-size:11.5px;color:var(--ink3);font-family:var(--font-num)}
.sdrop .sh{padding:7px 14px 4px;font-size:11.5px;color:var(--ink3);display:flex;gap:8px;align-items:center}
.sdrop .sf{padding:8px 14px;border-top:1px solid var(--line-soft);font-size:12.5px;color:var(--accent);
  cursor:pointer;text-align:center;font-weight:600}
.sdrop .sx{display:flex;flex-wrap:wrap;gap:6px;padding:6px 14px 10px}
.sdrop .sx span{font-size:12.5px;background:var(--bg-tint);border-radius:999px;padding:4px 11px;cursor:pointer;color:var(--ink2)}
.sdrop .sx span:hover{background:var(--accent-soft);color:var(--accent)}
mark{background:#FFF3BF;color:inherit;border-radius:3px;padding:0 1px}

.sb.sbig{max-width:100%;--sb-h:54px;--sb-fs:16px}
.smeta{font-size:12.5px;color:var(--ink3);margin:0 0 14px;display:flex;flex-wrap:wrap;gap:6px 14px}
.smeta b{font-family:var(--font-num);color:var(--ink)}
.smeta .x{color:var(--accent);cursor:pointer}
.shint{font-size:12.5px;color:var(--ink3);margin-top:10px}
.semptybox{border:1px solid var(--line);border-radius:var(--r-c,14px);background:var(--bg-soft);
  padding:28px 22px;text-align:center}
.semptybox b{font-size:15px}
.semptybox p{font-size:13px;color:var(--ink2);margin-top:8px}
.semptybox .tips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:16px}
.semptybox .tips a{font-size:12.5px;border:1px solid var(--line);background:var(--panel);
  border-radius:999px;padding:6px 14px}
.semptybox .tips a:hover{border-color:var(--accent);color:var(--accent)}
