/* 海外免费云资源厂商查询 · 全站样式
   视觉基线：沿用「海外 AI 服务指南」整理好的 B 套门户样式
   （#087f72 主绿 / topbar + brand-mark / hero·eyebrow / board-card / crumbs / footer）。
   为不改动 5 页 HTML 结构与渲染逻辑，保留国内版继承下来的全部类名，
   仅把 :root 色板与组件外观重定义为 B 套；组件名到 B 套的对应关系见 README。
   约束：所有 var() 引用必须在 :root 有定义；file:// 直接打开可用，零外部依赖。 */
:root{
  /* ---- B 套主色板（唯一事实来源） ---- */
  --bg:#f5f7f5; --bg2:#eef2f0; --card:#fff; --surface:#fff;
  --text:#17211e; --muted:#6d7773; --hint:#98a19d; --faint:#98a19d;
  --line:#e3e8e5; --line2:#cfded8;
  --accent:#087f72; --accent-dark:#06675d; --soft:#eaf5f1; --accent-b:#b6d9cf;
  --warm:#fff7e8; --warm-text:#9a5b06;
  --shadow:0 8px 24px rgba(22,48,40,.05);
  /* 搜索高亮（定义/引用成对，差集保持 0） */
  --mark-bg:#ffe9a8;

  /* ---- 兼容层：旧变量名统一映射到 B 套色板（页面/JS 无需改） ---- */
  --blue-s:#eaf5f1;
  --green:#0b7d63; --green-s:#e8f4ef; --green-b:#b3ddcf;
  --amber:#9a5b06; --amber-s:#fff7e8; --amber-b:#f0dcb4;
  --red:#b54a45; --red-s:#fff0ee; --red-b:#f2cbc6;
  --purple:#6b46a8; --purple-s:#f0e9fb; --purple-b:#d9c9f0;
  --teal:#0b6e72; --teal-s:#e3f3f2;
  --indigo:#3b4b9c; --indigo-s:#e9ecfa;
  --slate:#4b5563; --slate-s:#eef1f3;
  --pink:#9c3b6b; --pink-s:#faeaf2;
  --gray:#6b7280; --gray-s:#f1f2f4;
}
*{box-sizing:border-box}
html{scrollbar-color:#b9c9c2 #f2f5f3;scroll-behavior:smooth}
*{scrollbar-color:#b9c9c2 #f2f5f3}
::-webkit-scrollbar{width:12px;height:12px}
::-webkit-scrollbar-track{background:#f2f5f3;border-radius:8px}
::-webkit-scrollbar-thumb{background:#a8bdb5;border-radius:8px;border:2px solid #f2f5f3}
::-webkit-scrollbar-thumb:hover{background:var(--accent)}
::-webkit-scrollbar-corner{background:#f2f5f3}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  line-height:1.65;font-size:14px}
a{color:var(--accent-dark);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1080px;margin:0 auto;padding:30px 24px 56px;min-height:calc(100vh - 150px)}
h1{font-size:30px;font-weight:700;margin:0 0 10px;letter-spacing:-.7px;line-height:1.3}
h2{font-size:17px;font-weight:650;margin:30px 0 13px;padding:0 0 10px;
  border:0;border-bottom:1px solid var(--line)}
h3{font-size:14px;font-weight:650;margin:18px 0 8px}
p{font-size:13px;margin:8px 0}
.sub{font-size:13px;color:var(--muted);margin:0 0 22px}
.muted{color:var(--muted)} .hint{color:var(--hint)}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- B 套 hero / 层级元信息 ---------- */
.hero{max-width:760px;margin-bottom:26px}
.eyebrow{color:var(--accent);font-size:12px;font-weight:700;letter-spacing:1.2px;margin-bottom:8px}
.hero h1{font-size:32px}
.hero p.sub{font-size:14px;line-height:1.8;max-width:750px;margin-bottom:0}
.page-head{margin-bottom:24px}
.page-head h1{font-size:28px}
.page-head .sub{font-size:14px;line-height:1.8}
.head-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:28px 0 13px}
.section-title h2{font-size:17px;margin:0;border:0;padding:0}
.section-title span{font-size:12px;color:var(--faint)}

/* ---------- B 套 顶部导航（common.js 注入，5 页逐字符一致） ---------- */
/* z-index 必须高于二级 tab（40），否则大 tab 下拉会被吸顶的二级 tab 盖住 */
.gnav{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:60;backdrop-filter:blur(12px)}
.gnav-in{max-width:1120px;margin:0 auto;padding:0 24px;height:64px;
  display:flex;align-items:center;justify-content:space-between;gap:24px}
.gnav .brand{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700;
  color:var(--text);white-space:nowrap;letter-spacing:.2px}
.gnav .brand:hover{text-decoration:none}
.gnav .brand em{font-style:normal;color:var(--accent)}
.brand-mark{width:32px;height:32px;border-radius:9px;background:var(--accent);color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:700;letter-spacing:-.3px;flex:0 0 auto}
/* overflow 必须为 visible，否则一级大 tab 的下拉会被横向滚动容器裁掉 */
.gnav-links{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;margin-left:auto;overflow:visible}
.gnav-link{font-size:13px;color:var(--muted);padding:7px 13px;border-radius:8px;white-space:nowrap}
.gnav-link:hover{background:var(--bg2);text-decoration:none;color:var(--text)}
.gnav-link.on{background:var(--soft);color:var(--accent-dark);font-weight:650}
.gnav .gcount{font-size:11.5px;color:var(--faint);white-space:nowrap;margin-left:6px}

/* ---------- B 套 面包屑 / 二级详细菜单条 ---------- */
.crumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--muted);
  font-size:12px;margin:0 0 18px}
.crumbs a:hover{color:var(--accent)}
.crumbs .sep{display:inline;width:auto;height:auto;background:none;color:#b6bdb9;margin:0 2px}
.crumbs b{color:var(--accent-dark);font-weight:650}
.lvtag{display:inline-flex;align-items:center;padding:1px 7px;border-radius:5px;
  background:var(--bg2);color:var(--muted);font-size:10.5px;font-weight:650;line-height:1.7}
.lvtag.on{background:var(--soft);color:var(--accent-dark)}
.crumbs .cb-note{margin-left:auto;color:var(--faint);font-size:11px}
.subnav{background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:12px 16px;margin:0 0 22px;box-shadow:var(--shadow)}
.subnav-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.subnav-row+.subnav-row{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line)}
.sn-label{font-size:11px;color:var(--faint);margin-right:6px;letter-spacing:.4px;white-space:nowrap}
.subnav-link{font-size:12px;padding:5px 11px;border-radius:8px;color:var(--muted);
  border:1px solid transparent;white-space:nowrap}
.subnav-link:hover{background:var(--bg2);color:var(--text);text-decoration:none}
.subnav-link.on{background:var(--soft);border-color:var(--accent-b);color:var(--accent-dark);font-weight:650}
.sn-right{margin-left:auto;font-size:11px;color:var(--faint);white-space:nowrap}
.sn-meta{display:block;margin-top:9px;padding-top:9px;border-top:1px dashed var(--line);
  font-size:11px;color:var(--faint)}

/* ---------- 通用块（B 套卡片质感） ---------- */
.card,.panel{background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:18px 20px;margin-bottom:14px;box-shadow:var(--shadow)}
.panel{padding:16px 18px}
.key{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.key>div{background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:14px 16px;box-shadow:var(--shadow)}
.key b{display:block;font-size:21px;font-weight:700;line-height:1.3;
  color:var(--accent-dark);font-variant-numeric:tabular-nums}
.key span{font-size:11.5px;color:var(--muted)}
.grid{display:grid;gap:12px}
.grid.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.grid.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.triple{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin:16px 0}
.triple>div{background:var(--soft);border:1px solid var(--accent-b);border-radius:13px;
  padding:14px 16px;font-size:12.5px;color:#355c52}
.triple b{display:block;color:var(--accent-dark);font-size:13px;margin-bottom:4px}
.warn{background:var(--red-s);border:1px solid var(--red-b);border-radius:13px;padding:14px 18px}
.warn h3{color:var(--red);margin-top:0}
.tip{background:var(--soft);border:1px solid var(--accent-b);border-radius:13px;padding:14px 18px}
.tip h3{color:var(--accent-dark);margin-top:0}
.notice{background:var(--warm);border:1px solid var(--amber-b);border-radius:11px;
  padding:12px 16px;font-size:12.5px;color:var(--warm-text)}
.foot{max-width:1080px;margin:36px auto 0;padding:20px 24px 30px;color:var(--faint);
  font-size:12px;border-top:1px solid var(--line);line-height:1.8}
.foot a{color:var(--accent)}
.foot strong{color:var(--muted)}
ul{font-size:13px;padding-left:20px;margin:8px 0} li{margin:5px 0}

/* ---------- 标签 / 药丸（B 套 6px 方角） ---------- */
.pill{display:inline-flex;align-items:center;min-height:25px;padding:3px 9px;border-radius:6px;
  font-size:11px;line-height:1.4;white-space:nowrap;background:var(--bg2);color:var(--muted)}
.pill.green{background:var(--soft);color:var(--accent-dark)}
.pill.warm{background:var(--warm);color:var(--warm-text)}
.pill.red{background:var(--red-s);color:var(--red)}
.t-blue{background:var(--blue-s);color:var(--accent-dark)}
.t-green{background:var(--green-s);color:var(--green)}
.t-amber{background:var(--amber-s);color:var(--amber)}
.t-red{background:var(--red-s);color:var(--red)}
.t-purple{background:var(--purple-s);color:var(--purple)}
.t-teal{background:var(--teal-s);color:var(--teal)}
.t-indigo{background:var(--indigo-s);color:var(--indigo)}
.t-slate{background:var(--slate-s);color:var(--slate)}
.t-pink{background:var(--pink-s);color:var(--pink)}
.t-gray{background:var(--gray-s);color:var(--gray)}
.mini{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:5px;
  margin:2px 4px 2px 0;white-space:nowrap}
.m-good{background:var(--green-s);color:var(--green)}
.m-info{background:var(--blue-s);color:var(--accent-dark)}
.m-warn{background:var(--amber-s);color:var(--amber)}
.m-bad{background:var(--red-s);color:var(--red)}
.m-gray{background:var(--gray-s);color:var(--gray)}

/* ---------- 筛选控件（B 套 filter-btn 风） ---------- */
.chips{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.chip{font-size:12px;padding:6px 12px;border:1px solid var(--line);background:var(--card);
  border-radius:8px;cursor:pointer;color:var(--muted);font-family:inherit;line-height:1.6}
.chip:hover{border-color:var(--accent-b);color:var(--accent-dark)}
.chip.on{background:var(--soft);border-color:var(--accent-b);color:var(--accent-dark);font-weight:650}
.chip em{font-style:normal;font-size:10.5px;opacity:.72;margin-left:4px;font-variant-numeric:tabular-nums}
.chip.red.on{background:var(--red-s);border-color:var(--red-b);color:var(--red)}
.chip.amber.on{background:var(--warm);border-color:var(--amber-b);color:var(--amber)}
.chip.green.on{background:var(--green-s);border-color:var(--green-b);color:var(--green)}
.chip.purple.on{background:var(--purple-s);border-color:var(--purple-b);color:var(--purple)}
.chips .sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.fgroup{padding:11px 0;border-bottom:1px dashed var(--line)}
.fgroup:last-child{border-bottom:0;padding-bottom:2px}
.fgroup>label.flabel{display:block;font-size:11.5px;font-weight:650;color:var(--text);margin-bottom:7px}
.fgroup .fdesc{font-size:11px;color:var(--hint);font-weight:400;margin-left:6px}

/* ---------- 表单控件（投稿页 · 查询台输入框同样套用） ---------- */
input[type="text"],input[type="url"],input[type="number"],select,textarea{
  width:100%;padding:7px 11px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);color:var(--text);font:inherit;font-size:13px;line-height:1.6}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-b);
  box-shadow:0 0 0 3px var(--soft)}
textarea{resize:vertical;min-height:64px}
select{cursor:pointer}
input::placeholder,textarea::placeholder{color:var(--faint)}
mark{background:var(--mark-bg);color:inherit;padding:0 1px;border-radius:2px}
input[type=text],select{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--card);color:var(--text);font-size:12.5px;font-family:inherit;outline:none}
input[type=text]:focus,select:focus{border-color:var(--accent-b);box-shadow:0 0 0 3px rgba(8,127,114,.08)}
.switches{display:flex;flex-wrap:wrap;gap:8px 16px}
.sw{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none}
.sw input{accent-color:var(--accent);margin:0;cursor:pointer}
.sw:hover{color:var(--accent-dark)}
.btn{padding:6px 12px;border:1px solid var(--line);background:var(--card);border-radius:8px;
  font-size:12px;cursor:pointer;font-family:inherit;color:var(--text);white-space:nowrap}
.btn:hover{border-color:var(--accent-b);color:var(--accent-dark);text-decoration:none}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.pri:hover{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}
.btn.sm{padding:4px 9px;font-size:11.5px}
.bar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;align-items:center;
  margin:14px 0 10px;font-size:12px;color:var(--muted)}
.summary{background:var(--soft);border:1px solid var(--accent-b);border-radius:10px;
  padding:9px 14px;font-size:12.5px;margin-bottom:12px;color:var(--text)}
.summary b{color:var(--accent-dark)}
.empty{text-align:center;padding:48px 20px;color:var(--muted);font-size:13px;
  background:var(--card);border:1px dashed var(--line);border-radius:13px}
.empty b{display:block;font-size:15px;color:var(--text);margin-bottom:6px}

/* ---------- 厂商卡片（B 套 board-card 质感） ---------- */
.plist{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px}
.prov{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:15px 16px;
  display:flex;flex-direction:column;box-shadow:var(--shadow);transition:border-color .18s,transform .18s}
.prov:hover{border-color:var(--accent-b);transform:translateY(-2px)}
.prov.dead{background:#fdf8f7;border-color:var(--red-b)}
.prov-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:8px}
.prov-title{font-size:14px;font-weight:650;line-height:1.45;margin:0}
.prov-vendor{font-size:11px;color:var(--hint);margin-bottom:2px}
.prov-price{font-size:13px;font-weight:700;color:var(--accent-dark);white-space:nowrap;font-variant-numeric:tabular-nums}
.prov-price.zero{color:var(--green)}
.prov-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:9px}
.prov-spec{margin:0;padding-left:16px;font-size:11.5px;color:var(--muted);line-height:1.7}
.prov-spec li{margin:1px 0}
.prov-rows{margin-top:9px;border-top:1px dashed var(--line);padding-top:8px;font-size:11.5px}
.prow{display:flex;gap:7px;margin:4px 0;line-height:1.6}
.prow .lbl{color:var(--hint);min-width:42px;flex-shrink:0}
.prov-note{margin-top:9px;background:var(--warm);border-radius:8px;padding:8px 10px;
  font-size:11.5px;color:var(--warm-text);line-height:1.6}
.prov-note b{color:var(--amber)}
.prov-best{margin-top:8px;font-size:11.5px;color:var(--green)}
.prov-actions{display:flex;gap:8px;margin-top:auto;padding-top:12px;flex-wrap:wrap}
.prov-actions .btn{flex:1;text-align:center}
.prov-foot{margin-top:8px;font-size:10.5px;color:var(--hint);display:flex;justify-content:space-between;gap:8px}
details.fold{border:1px solid var(--line);border-radius:11px;background:var(--card);
  padding:9px 13px;margin:12px 0;font-size:12px}
details.fold summary{cursor:pointer;color:var(--accent-dark);font-weight:600;font-size:12.5px}
details.fold[open] summary{margin-bottom:9px;border-bottom:1px dashed var(--line);padding-bottom:8px}

/* ---------- 表格 / 横滚排序台 ---------- */
.scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);
  border-radius:13px;overflow:hidden;font-size:12.5px}
th{background:#f7f9f8;text-align:left;padding:9px 11px;font-weight:650;font-size:11.5px;
  color:var(--muted);white-space:nowrap}
td{padding:9px 11px;border-top:1px solid var(--line);vertical-align:top}
tr:hover td{background:#fafcfb}
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--accent-dark)}
.rankscroll{overflow:auto;max-height:76vh;border:1px solid var(--line);border-radius:13px;
  background:var(--card);overscroll-behavior:contain}
.rankscroll table{border:0;border-radius:0;min-width:1500px;overflow:visible}
.rankscroll thead th{position:sticky;top:0;z-index:5;box-shadow:inset 0 -1px 0 var(--line)}
.rankscroll tbody tr:not(.grp) td:nth-child(-n+2){position:sticky;z-index:2;background:var(--card)}
.rankscroll thead th:nth-child(-n+2){z-index:7;background:#f7f9f8}
.rankscroll tbody tr:not(.grp):hover td:nth-child(-n+2){background:#f7f9f8}
.rankscroll th:nth-child(1),.rankscroll tbody tr:not(.grp) td:nth-child(1){left:0;width:38px;min-width:38px}
.rankscroll th:nth-child(2),.rankscroll tbody tr:not(.grp) td:nth-child(2){left:38px;width:190px;min-width:190px;border-right:2px solid var(--line2)}
.grp td{background:var(--soft)!important;font-weight:650;color:var(--accent-dark);font-size:12px;padding:7px 11px}
.grpline{display:flex;justify-content:space-between;gap:16px}
.grpright{font-weight:400;color:var(--muted);font-size:11px}
.cellwrap{max-width:330px;line-height:1.5}

/* ---------- 门户 / 指南专用（B 套 board-card / item-card） ---------- */
.board-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.board-card{display:flex;flex-direction:column;min-height:182px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;padding:20px;
  transition:border-color .18s,transform .18s,box-shadow .18s}
.board-card:hover{border-color:var(--accent-b);transform:translateY(-2px);box-shadow:var(--shadow)}
.board-no{font-size:11px;color:var(--accent);font-weight:700;letter-spacing:1px;margin-bottom:12px}
.card-foot{margin-top:auto;padding-top:13px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:12px}
.arrow-link{color:var(--accent);font-weight:650;white-space:nowrap}
.tile{display:block;background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:15px 16px;transition:border-color .18s,transform .18s,box-shadow .18s;
  counter-increment:tile;box-shadow:var(--shadow)}
#typeTiles{counter-reset:tile}
.tile::before{content:"赛道 " counter(tile,decimal-leading-zero);display:block;
  font-size:10.5px;color:var(--accent);font-weight:700;letter-spacing:1px;margin-bottom:7px}
.tile:hover{border-color:var(--accent-b);transform:translateY(-2px);text-decoration:none;box-shadow:var(--shadow)}
.tile .thead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.tile .tname{font-size:13.5px;font-weight:650;color:var(--text)}
.tile .tcount{font-size:12px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}
.tile p{font-size:11.5px;color:var(--muted);margin:0;line-height:1.6}
.scene{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:11px;padding:13px 16px;margin-bottom:10px;transition:border-color .18s}
.scene:hover{background:var(--soft);border-color:var(--accent-b);border-left-color:var(--accent);text-decoration:none}
.scene b{font-size:13px}
.scene .sq{display:block;margin-top:5px;font-size:11.5px;color:var(--muted)}
.scene a{font-size:11.5px}
.change{display:flex;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}
.change:last-child{border-bottom:0}
.change .cd{font-size:11px;color:var(--hint);white-space:nowrap;min-width:78px;padding-top:2px;font-variant-numeric:tabular-nums}
.change .ct{font-size:12.5px;line-height:1.7}
.change .ct b{font-size:13px}
.dimtable td:first-child{white-space:nowrap;font-weight:600}
.dimtable td:nth-child(2){white-space:nowrap;color:var(--accent-dark)}
.kv{display:flex;gap:8px;margin:3px 0;font-size:12px}
.kv .k{color:var(--hint);min-width:60px}
.purpose-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.purpose-card{background:transparent;border:1px solid var(--line);border-radius:12px;
  padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.purpose-card:hover{background:var(--card);border-color:var(--accent-b)}

/* ---------- B 套 条目卡：收起看重点，展开看全部字段 ----------
   与「海外 AI 服务指南」site.js(entryHTML) 同构：
   .entry-main 一行摘要（头像 / 标题 / 副标题 / 状态 / 价格 / 主按钮），
   .entry-detail 展开后是「标签 : 值」逐行面板 + 评分·状态·热度 + 底部操作。 */
.entry-list{background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden}
.entry{border-bottom:1px solid var(--line)}
.entry:last-child{border-bottom:0}
.entry-main{width:100%;border:0;background:var(--card);display:grid;
  grid-template-columns:38px minmax(0,1fr) auto 22px;gap:12px;align-items:center;
  text-align:left;padding:15px 17px;cursor:pointer;user-select:none;font-family:inherit}
.entry-main:hover{background:#fafcfb}
.entry-main:focus-visible{outline:2px solid var(--accent-b);outline-offset:-2px}
.entry.open .entry-main{background:#fbfdfc}
.entry.open .chevron{transform:rotate(90deg)}
.avatar{width:36px;height:36px;border-radius:10px;background:var(--bg2);color:var(--accent-dark);
  display:grid;place-items:center;font-weight:700;font-size:13px;flex:0 0 auto}
.entry-text{min-width:0}
.entry-title{display:block;font-size:14px;font-weight:650;line-height:1.45;margin-bottom:3px;color:var(--text)}
.entry-sub{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entry-sub .sub-lead{color:var(--accent-dark);font-weight:650}
.entry-sub .sub-sep{margin:0 5px;color:#c6d0cc}
.entry-soc{display:flex;align-items:center;gap:9px;font-size:10.5px;color:var(--hint);
  white-space:nowrap;line-height:1.5;margin-top:4px;overflow:hidden}
.es-item{display:inline-flex;align-items:center}
.entry-soc .es-item+.es-item{border-left:1px solid var(--line);padding-left:9px}
.es-rate{color:#b5832c;font-weight:650}
.es-rate.is-empty{color:#b9c3bf;font-weight:400}
.es-heat{color:var(--hint)}
.entry-soc .soc-tag{font-size:10px;padding:0 5px;line-height:16px}
.entry-side{display:flex;align-items:center;justify-content:flex-end;min-width:0;align-self:center}
.entry-line{display:flex;align-items:center;justify-content:flex-end;gap:14px;max-width:100%}
.entry-value{text-align:right;color:var(--accent-dark);font-weight:700;font-size:14px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:150px}
.entry-value small{display:block;color:var(--faint);font-weight:400;font-size:10px;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.claim-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  min-width:64px;min-height:30px;padding:5px 13px;border-radius:7px;background:var(--accent);
  color:#fff!important;font-size:12px;font-weight:650;white-space:nowrap}
.claim-btn:hover{background:var(--accent-dark);text-decoration:none}
.chevron{color:#9aa6a1;font-size:18px;text-align:right;transition:transform .15s}
.entry-detail{display:none;margin:0 17px 15px 68px;background:var(--bg2);border-radius:9px;
  padding:13px 15px;font-size:12px;color:var(--muted)}
.entry.open .entry-detail{display:block}
.entry-detail p{margin:0 0 7px;line-height:1.7;font-size:12px}
.entry-detail p:last-child{margin-bottom:0}
.entry-detail b{color:var(--text)}
.detail-line{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;padding:5px 0;line-height:1.7}
.detail-line>b{font-weight:650;white-space:nowrap;color:var(--text)}
.detail-line>span{min-width:0;color:var(--muted)}
.detail-line a{color:var(--accent)}
.entry-actions{display:flex;gap:14px;margin-top:10px;padding-top:11px;border-top:1px dashed var(--line)}
.entry-actions a{color:var(--accent);font-weight:650;font-size:12px}

/* 互动层：评分 / 失效标记 / 热度（localStorage 本地存储，无后端） */
.soc{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line);display:grid;gap:7px}
.soc-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted);min-height:24px}
.soc-label{flex:0 0 34px;color:var(--hint);font-size:11px;letter-spacing:.4px}
.stars{display:inline-flex;gap:1px}
.star{border:0;background:transparent;padding:0 1px;font-size:17px;line-height:1;
  color:#d5dcd8;cursor:pointer;transition:color .12s}
.star:hover{transform:translateY(-1px)}
.stars:hover .star{color:#efc47f}
.stars:hover .star:hover~.star{color:#d5dcd8}
.star.on{color:#e0a13c}
.star.mine{color:#c67c12}
.soc-score{font-weight:700;color:#7a5a13;font-size:13px;min-width:24px}
.soc-faint{color:var(--hint);font-size:11px}
.soc-tag{display:inline-flex;align-items:center;padding:1px 7px;border-radius:5px;
  font-size:11px;font-weight:650;line-height:1.7}
.soc-tag.ok{background:var(--soft);color:var(--accent-dark)}
.soc-tag.warn{background:var(--warm);color:var(--warm-text)}
.soc-tag.bad{background:var(--red-s);color:var(--red)}
.soc-btn{border:1px solid var(--line);background:var(--card);color:var(--muted);
  border-radius:6px;padding:3px 9px;font-size:11px;cursor:pointer;font-family:inherit}
.soc-btn:hover{border-color:var(--accent-b);color:var(--accent-dark)}
.soc-btn.active{background:var(--soft);border-color:var(--accent-b);color:var(--accent-dark);font-weight:650}
.soc-heat{font-weight:650;color:var(--accent-dark)}
.soc-rcount{font-weight:600;color:var(--muted)}
/* 点评表单与列表（social.js 提供，有后端走全站 / 无后端降级本机） */
.soc-rvform{display:grid;gap:7px;padding:9px 10px;background:var(--card);border:1px solid var(--line);border-radius:8px}
.soc-rvform[hidden]{display:none}
.soc-rvform textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:12px;font-family:inherit;color:var(--ink);background:var(--bg);resize:vertical;transition:border-color .12s}
.soc-rvform textarea:focus{outline:none;border-color:var(--accent)}
.soc-rvfoot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.soc-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.soc-btn.primary:hover{opacity:.88;color:#fff}
.soc-rvlist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.soc-rvlist li{padding:7px 10px;background:var(--card);border:1px solid var(--line);border-radius:8px;font-size:12px}
.soc-rvlist li.mine{border-color:var(--accent-b);background:var(--soft)}
.soc-rvlist .rv-who{font-weight:700;color:var(--ink);margin-right:8px}
.soc-rvlist .rv-time{color:var(--hint);font-size:11px;margin-right:8px}
.soc-rvlist .rv-score{color:#b07d10;font-weight:700}
.soc-rvlist p{margin:4px 0 0;color:var(--ink);line-height:1.55;word-break:break-word}
/* toast 与离线提示（social.js） */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,14px);background:#17211e;color:#fff;font-size:13px;padding:10px 18px;border-radius:9px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:99;max-width:80vw;box-shadow:0 10px 26px rgba(15,40,33,.22)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.error{background:var(--red)}
.offline-note{display:flex;align-items:center;gap:12px;justify-content:space-between;background:var(--warm);color:var(--warm-text);border:1px solid #f0dfbf;border-radius:9px;padding:9px 13px;font-size:12px;margin-bottom:14px}
.offline-note b{font-weight:700}
.offline-note button{border:0;background:transparent;color:var(--warm-text);font-size:15px;cursor:pointer;padding:0 2px}
.entry.is-pending{box-shadow:inset 2px 0 0 #e6c072}
.entry.is-invalid{box-shadow:inset 2px 0 0 #d99a95}
.entry.is-invalid .entry-title{color:var(--hint)}
.entry.is-invalid .entry-value{opacity:.55}
.entry.is-invalid .claim-btn{background:#b9c2be}
.entry.is-invalid .claim-btn:hover{background:#a9b3af}

/* 页内目录锚点：跳过 64px sticky 顶栏，避免标题被遮住 */
[id^="sec-"], #keyStats{scroll-margin-top:80px}
/* 大 tab 子页多一层吸顶二级 tab，锚点要多留 56px */
body[data-page="portal"] [id^="sec-"], body[data-page="portal"] #keyStats{scroll-margin-top:140px}

/* ---------- 一级大 tab：资源总览（鼠标悬停展开二级下拉） ---------- */
.hub-wrap{position:relative;display:inline-flex;align-items:center}
.hub-toggle{display:inline-flex;align-items:center;gap:5px}
.hub-caret{font-size:10px;opacity:.7;transition:transform .15s}
.hub-wrap:hover .hub-caret,.hub-wrap:focus-within .hub-caret{transform:rotate(180deg)}
.hub-drop{position:absolute;top:100%;right:0;min-width:232px;padding:6px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow);display:none;z-index:60}
.hub-wrap:hover .hub-drop,.hub-wrap:focus-within .hub-drop{display:block}
.hub-link{display:block;padding:8px 11px;border-radius:8px;color:var(--text)}
.hub-link:hover{background:var(--bg2);text-decoration:none}
.hub-link.on{background:var(--soft)}
.hub-link b{display:block;font-size:12.5px;font-weight:650}
.hub-link.on b{color:var(--accent-dark)}
.hub-link span{display:block;font-size:10.5px;color:var(--hint);margin-top:1px}

/* ---------- 大 tab 内二级 tab：下滑吸顶、点击切换 ---------- */
/* sticky 放在 slot 容器上；若放在 .subtab 自身，父级高度=自身高度会导致吸顶失效 */
#subtab-slot{position:sticky;top:64px;z-index:40;margin-bottom:18px}
.subtab{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:11px;
  box-shadow:0 2px 8px rgba(22,48,40,.03);transition:box-shadow .15s,border-color .15s}
.subtab.scrolled{box-shadow:0 8px 20px rgba(22,48,40,.10);border-color:var(--accent-b)}
.subtab-in{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 11px}
.subtab-label{font-size:11px;color:var(--hint);margin-right:4px;white-space:nowrap;letter-spacing:.3px}
.subtab-link{font-size:12px;padding:5px 12px;border-radius:8px;color:var(--muted);
  border:1px solid transparent;white-space:nowrap}
.subtab-link:hover{background:var(--bg2);color:var(--text);text-decoration:none}
.subtab-link.on{background:var(--soft);border-color:var(--accent-b);color:var(--accent-dark);font-weight:650}
.subtab-hint{margin-left:auto;font-size:10.5px;color:var(--faint);white-space:nowrap}

/* ---------- 内部 tab 切换（免费福利首页 · 五个免费性质）---------- */
.tabbar{display:flex;gap:2px;margin:16px 0 0;border-bottom:1px solid var(--line);overflow-x:auto}
.tab{appearance:none;border:0;border-bottom:2px solid transparent;background:transparent;
  padding:11px 15px;font-size:13px;font-weight:650;color:var(--muted);cursor:pointer;white-space:nowrap}
.tab:hover{color:var(--accent-dark);background:var(--bg2)}
.tab.on{color:var(--accent-dark);border-bottom-color:var(--accent)}
.tab em{font-style:normal;font-weight:400;font-size:11px;color:var(--faint);margin-left:6px}
.tab-desc{margin:10px 0 0;font-size:11.5px;color:var(--hint);line-height:1.7}

/* ---------- 分页组件 ---------- */
.pager{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  margin:16px 0 4px;padding:11px 14px;background:var(--card);border:1px solid var(--line);border-radius:11px}
.pager-info{font-size:12px;color:var(--muted)}
.pager-info b{color:var(--accent-dark)}
.pager-size{width:auto;min-width:54px;padding:3px 6px;font-size:12px;margin:0 4px}
.pager-nav{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.pager-btn,.pager-num{appearance:none;border:1px solid var(--line);background:var(--card);
  color:var(--muted);font-size:12px;line-height:1.6;padding:4px 10px;border-radius:8px;cursor:pointer}
.pager-btn:hover:not(:disabled),.pager-num:hover{border-color:var(--accent-b);color:var(--accent-dark)}
.pager-num.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:650;cursor:default}
.pager-btn:disabled{opacity:.45;cursor:default}
.pager-gap{color:var(--faint);font-size:12px;padding:0 1px}

/* ---------- 搜索一级页：大搜索框 / 作用域 / 热门与最近 ---------- */
.sbox{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sbox input{flex:1;min-width:240px;font-size:14px;padding:10px 13px}
.sbox-meta{margin-top:8px;font-size:11px;color:var(--hint);line-height:1.7}
.hot-keys,.recent-keys{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0}
.hk-label{font-size:11px;color:var(--faint);margin-right:2px;letter-spacing:.4px;white-space:nowrap}
.es-hit{color:var(--accent-dark);font-weight:650}

/* ---------- 投稿一级页：表单 / 查重 / 校验 / 预览 / JSON ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.fg{min-width:0}
.fg>label{display:block;font-size:11.5px;font-weight:650;color:var(--text);margin-bottom:5px}
.fg .fdesc{display:block;margin-top:4px;font-size:10.5px;color:var(--hint);line-height:1.6}
.req{color:var(--red);font-weight:700}
.sw.on{border-color:var(--accent-b)}
.chk-scroll{max-height:250px;overflow:auto;border:1px solid var(--line);border-radius:10px;
  padding:9px 11px;background:var(--bg2)}
.chk-block+.chk-block{margin-top:9px;padding-top:8px;border-top:1px dashed var(--line)}
.chk-block>b{display:block;font-size:10.5px;color:var(--hint);letter-spacing:.4px;margin-bottom:5px}
.chk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:5px 12px}
.chk-grid .sw{border:1px solid transparent;border-radius:6px;padding:2px 5px}
.chk-grid .sw:hover{background:var(--card)}
.dup-warn{background:var(--warm);border:1px solid var(--amber-b);border-radius:10px;
  padding:11px 14px;margin-bottom:12px;font-size:12px}
.dup-warn b{color:var(--amber)}
.dup-warn p{margin:5px 0 0;font-size:11.5px;color:var(--warm-text);line-height:1.7}
.dup-warn a{font-weight:650}
.auto-fields{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.vali-err,.vali-warn,.vali-ok{border-radius:10px;padding:10px 14px;font-size:12px;line-height:1.7}
.vali-err{background:var(--red-s);border:1px solid var(--red-b);color:var(--red)}
.vali-warn{background:var(--warm);border:1px solid var(--amber-b);color:var(--warm-text)}
.vali-ok{background:var(--green-s);border:1px solid var(--green-b);color:var(--green)}
.vali-err ul,.vali-warn ul{margin:5px 0 0;padding-left:18px}
.vali-err li,.vali-warn li{margin:2px 0}
.jsonout{margin:0;padding:12px 14px;background:var(--bg2);border:1px solid var(--line);
  border-radius:10px;font-size:11px;line-height:1.7;max-height:340px;overflow:auto;
  white-space:pre-wrap;word-break:break-all;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.draft-hint{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--soft);border:1px solid var(--accent-b);border-radius:10px;
  padding:9px 14px;margin:14px 0 0;font-size:12px;color:var(--accent-dark)}
.fix-results{margin-top:10px;display:grid;gap:7px}
.fix-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 11px;
  border:1px solid var(--line);border-radius:9px;background:var(--card)}
.fix-row.on{border-color:var(--accent-b);background:var(--soft)}
.fix-row .fx-title{font-size:12.5px;font-weight:650;min-width:0}
.fix-row .fx-title em{font-style:normal;color:var(--faint);margin:0 3px}
.fix-row .fx-meta{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}
.fix-sel-card{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 14px;
  border:1px solid var(--accent-b);border-radius:10px;background:var(--soft);font-size:12px}
.fix-sel-card b{font-size:13px;color:var(--accent-dark)}
.fix-sel-card .hint{margin-left:auto}

/* ---------- 引流区：免费福利首页的国别筛选条（性质 / 赛道筛选已改为内部 tab） ---------- */
.welfare-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:16px 0 4px}
.cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:22px 0 6px}
.hub-banner{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  background:var(--soft);border:1px solid var(--accent-b);border-radius:13px;
  padding:16px 18px;margin-top:26px}
.hub-banner b{font-size:14px;color:var(--accent-dark)}
.hub-banner p{margin:3px 0 0;font-size:11.5px;color:var(--muted)}

@media (max-width:820px){
  .wrap{padding:22px 15px 44px}
  .gnav-in{height:auto;min-height:60px;padding:11px 16px;gap:10px;flex-wrap:wrap}
  .gnav .gcount{display:none}
  .gnav-links{width:100%;justify-content:space-between;gap:2px;margin-left:0}
  .gnav-link{padding:5px 9px}
  .crumbs .cb-note{display:none}
  .board-grid,.purpose-grid{grid-template-columns:1fr}
  .plist{grid-template-columns:1fr}
  .rankscroll{max-height:66vh}
  .hero h1{font-size:27px}
  .foot{padding:18px 15px 25px}
  .entry-main{grid-template-columns:34px minmax(0,1fr) 18px;padding:12px 14px;gap:8px;align-items:start}
  .entry-main>.chevron{grid-column:3;grid-row:1;align-self:center}
  .entry-text{align-self:center}
  .entry-side{grid-column:2/4;grid-row:2;justify-content:space-between;margin-top:2px}
  .entry-line{width:100%;justify-content:space-between;gap:10px}
  .entry-value{text-align:left;font-size:13px;max-width:150px}
  .entry-detail{margin:0 14px 14px}
  .detail-line{grid-template-columns:72px minmax(0,1fr);gap:8px}
  .soc-label{flex-basis:30px}
  /* 小屏投稿表单退化为单列；复选网格同步收窄 */
  .form-grid{grid-template-columns:1fr}
  .chk-grid{grid-template-columns:1fr}
  .sbox input{min-width:100%}
  .jsonout{max-height:260px}
  .fix-row .fx-meta{margin-left:0}
  /* 小屏顶栏会换行，二级 tab 降级为普通条，避免与 topbar 抢吸顶位置 */
  #subtab-slot{position:static;margin-bottom:14px}
  .subtab-hint{display:none}
  .subtab-label{width:100%;margin-bottom:2px}
  .hub-drop{min-width:200px;right:auto;left:0}
}
