/* ===== AI 导航站 · 模板样式 =====
   默认视觉 = 方向 C · 暖房（暖色社区感）
   换风格只改下面这些变量即可；css/theme-a.css、theme-b.css 是另外两套。 */
:root{
  /* 底色与文字 */
  --bg:#fff9f3; --card:#ffffff; --text:#3b2f2a; --muted:#94796b; --line:#f2e3d7;
  --hover:#fff8f2; --subtle:#fffaf6; --chip-bg:#fdf1e7; --chip-fg:#8a6455;
  --seg-bg:#f6ece4; --ink:#4a3a32; --ink2:#6b5449; --ink3:#8a7365; --faint:#b09a8c;

  /* 主色 */
  --primary:#f97316; --primary-dark:#ea580c; --primary-soft:#fff1e6;
  --dark:#4a2f1f;

  /* 价格 / 免费 / 星标 */
  --price:#e11d48; --free:#0f9d6e; --free-soft:#e9f9f2; --star:#f59e0b; --warn:#d97706;

  /* 求助帖 / 我的收藏 */
  --ask:#e11d48; --ask-soft:#fff1f4; --ask-line:#fbd0da;
  --mine:#8b5cf6; --mine-soft:#f6f2ff; --mine-line:#e0d6ff;

  /* 提示条 */
  --note-bg:#fff8e8; --note-line:#f6dfae; --note-fg:#a9761a;

  /* 圆角：卡片 / 中等 / 小元素 */
  --radius:20px; --radius-sm:13px; --radius-xs:8px;

  /* 阴影与悬浮：想换风格主要动这几个 */
  --shadow:0 6px 20px rgba(180,120,80,.07);
  --shadow-sm:0 4px 14px rgba(180,120,80,.06);
  --shadow-hover:0 12px 28px rgba(249,115,22,.16);
  --lift:-2px;
  --ring:#fdba74;                       /* 悬停描边色 */

  /* 按钮 */
  --btn-grad:linear-gradient(135deg,#fb923c,#f97316);
  --btn-shadow:0 6px 16px rgba(249,115,22,.28);
  --ask-grad:linear-gradient(135deg,#fb7185,#e11d48);
  --ask-shadow:0 6px 16px rgba(225,29,72,.24);
  --buy-grad:linear-gradient(135deg,#fb7185,#e11d48);
  --buy-shadow:0 6px 16px rgba(225,29,72,.24);
  --topbar-bg:linear-gradient(135deg,#4a2f1f,#6b452c);
  --brand-dot:#fdba74;
  --brand-dot-ring:rgba(253,186,116,.22);
  --search-shadow:0 14px 34px rgba(249,115,22,.14);
  --search-width:1080px;
  --brand-kit:#fdba74;                  /* 字标里 "Kit" 的颜色 */
}

/* 整站骨架规则：这些引用了上面的变量，换风格不用改 */
.topbar{background:var(--topbar-bg)}
.brand-dot{background:var(--brand-dot);box-shadow:0 0 0 4px var(--brand-dot-ring)}
.btn.p,.btn-login{background:var(--btn-grad);box-shadow:var(--btn-shadow)}
.btn.ask{background:var(--ask-grad);box-shadow:var(--ask-shadow)}
.btn.buy{background:var(--buy-grad);box-shadow:var(--buy-shadow)}
.box,.panel,.cat,.rcard,.content,.sitecol,.board,.revpage,.rv,.quote,.modal,.formcard,.side,.pl{box-shadow:var(--shadow)}
.tile,.pcard{box-shadow:var(--shadow-sm)}
.tile:hover,.pcard:hover{transform:translateY(var(--lift));box-shadow:var(--shadow-hover);border-color:var(--ring)}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:"Microsoft YaHei","PingFang SC","Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.6;padding-bottom:40px;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px}
.hide{display:none !important}

/* ===== 顶栏 ===== */
.topbar{background:var(--dark);color:#fff;position:sticky;top:0;z-index:30}
.topbar .wrap{display:flex;align-items:center;justify-content:flex-start;min-height:60px;gap:14px}
.brand{
  display:flex;align-items:center;gap:9px;font-size:19px;font-weight:600;white-space:nowrap;
  font-family:"Segoe UI Semibold","Segoe UI","Helvetica Neue",Arial,sans-serif;letter-spacing:.2px;
}
.brand-mark{width:26px;height:26px;display:block;flex:0 0 auto}
.brand-word{height:19px;width:auto;display:block;flex:0 0 auto}
.brand .kit{color:var(--brand-kit)}
.brand-dot{width:12px;height:12px;border-radius:50%;background:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.25)}
.nav{display:flex;gap:2px;flex-wrap:wrap;margin-left:16px}
.nav a{padding:8px 12px;border-radius:var(--radius-xs);color:#cbd5e1;font-size:14px;white-space:nowrap}
.nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.nav a.on{background:rgba(255,255,255,.13);color:#fff}
.topright{display:flex;gap:10px;align-items:center;font-size:13.5px;white-space:nowrap;margin-left:auto}
.mine-pill{display:flex;align-items:center;gap:6px;background:rgba(124,58,237,.24);color:#ddd6fe;border-radius:999px;padding:5px 13px;font-size:12.5px;cursor:pointer;border:0}
.btn-login{background:var(--primary);color:#fff;border:0;border-radius:var(--radius-xs);padding:7px 16px;font-size:14px}
.btn-login.on{background:rgba(255,255,255,.15)}

/* ===== 通用卡片 / 按钮 ===== */
.box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.btn{display:inline-block;border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 18px;font-size:14px;background:transparent}
.btn.p{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}
.btn.p:hover{background:var(--primary-dark)}
.btn.o{border-color:var(--line);color:var(--ink);background:var(--card)}
.btn.o:hover{border-color:var(--primary);color:var(--primary)}
.btn.ask{background:var(--ask);color:#fff;border-color:var(--ask);font-weight:600}
.btn.buy{background:var(--price);color:#fff;border-color:var(--price);font-weight:600}
.btn.sm{padding:6px 13px;font-size:12.5px}
.btn.block{display:block;text-align:center;width:100%}
.tg{display:inline-block;font-size:11.5px;border-radius:var(--radius-xs);padding:2px 9px;background:var(--chip-bg);color:var(--chip-fg)}
.tg.vid{background:#fff7ed;color:var(--warn)}
.tg.paid{background:#fef2f2;color:var(--price)}
.tg.free{background:var(--free-soft);color:var(--free)}
.tg.ask{background:var(--ask);color:#fff;font-weight:700}
.tg.rate{background:var(--note-bg);color:var(--note-fg);font-weight:700}
.tg.rate b{color:var(--star)}
.tagline{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.muted{color:var(--muted)}
.note{margin-top:12px;background:var(--note-bg);border:1px dashed var(--note-line);border-radius:var(--radius-sm);padding:9px 13px;font-size:12px;color:var(--note-fg)}

/* ===== 首页 hero / 搜索 ===== */
.hero{padding:48px 0 30px;text-align:center}
.hero h1{font-size:46px;line-height:1.28;letter-spacing:-.6px;font-weight:700}
.hero h1 em{font-style:normal;color:var(--primary)}
.hero .sub{color:var(--muted);font-size:16px;margin-top:12px}
.searchbox{
  max-width:var(--search-width);margin:28px auto 0;background:var(--card);
  border:2px solid var(--ring);border-radius:var(--radius);
  padding:22px 28px;text-align:left;box-shadow:var(--search-shadow);
}
.searchbox input{width:100%;border:0;outline:0;font-size:19px;font-family:inherit;color:var(--text);background:transparent;padding:8px 0}
.searchbox input::placeholder{color:var(--faint)}
.searchbox .row{display:flex;justify-content:space-between;align-items:center;margin-top:18px;gap:14px;flex-wrap:wrap}
.searchbox .btn.p{padding:13px 38px;font-size:15px}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{border:1px solid var(--line);border-radius:999px;padding:6px 15px;font-size:13px;color:var(--muted);background:var(--subtle);cursor:pointer}
.chip.on{border-color:var(--primary);color:var(--primary);background:var(--primary-soft);font-weight:600}
.hints{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin:16px auto 0;max-width:var(--search-width)}
.hint{background:var(--card);border:1px dashed var(--ring);border-radius:999px;padding:7px 16px;font-size:13px;color:var(--primary-dark);cursor:pointer}
.hint:hover{background:var(--primary-soft)}
.result{max-width:var(--search-width);margin:18px auto 0;display:grid;grid-template-columns:1fr 268px;gap:16px;text-align:left}
.rlist .rh{font-size:13px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:10px}
.badge0{background:var(--free-soft);color:var(--free);font-size:11.5px;border-radius:var(--radius-xs);padding:2px 8px;font-weight:600;white-space:nowrap}
.hit{display:flex;gap:10px;align-items:center;padding:8px;border-radius:var(--radius-sm);cursor:pointer}
.hit:hover{background:var(--hover)}
.hit .hi{width:32px;height:32px;border-radius:var(--radius-xs);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}
.hit .ht{font-size:13.5px;font-weight:600}
.hit .hd{font-size:11.5px;color:var(--muted)}
.hit .hk{margin-left:auto;font-size:11px;color:var(--primary);white-space:nowrap}
.deep{background:var(--dark);border-radius:var(--radius);padding:15px;color:#cbd5e1}
.deep h4{color:#fff;font-size:13px;margin-bottom:4px}
.deep p{font-size:11.5px;color:#94a3b8;margin-bottom:10px}
.deep a{display:block;background:rgba(255,255,255,.1);border-radius:var(--radius-xs);padding:7px 11px;font-size:12.5px;margin-bottom:6px;color:#e2e8f0}
.deep a:hover{background:rgba(255,255,255,.18)}
.deep a.primary{background:var(--card);color:var(--dark);font-weight:600}

/* ===== 区块 ===== */
.zone{margin-top:26px}
.zone-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:12px;gap:12px;flex-wrap:wrap}
.zone-head h2{font-size:19px}
.zone-head p{color:var(--muted);font-size:13px;margin-top:2px}
.zone-head .more{color:var(--primary);font-size:13px;white-space:nowrap}
.seg{display:flex;gap:4px;background:var(--seg-bg);border-radius:var(--radius-sm);padding:3px}
.seg button{font-size:12.5px;padding:4px 12px;border-radius:var(--radius-xs);color:var(--ink2);background:transparent;border:0}
.seg button.on{background:var(--card);color:var(--text);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.seg button.on.mine{background:var(--mine-soft);color:var(--mine)}

/* 模型 / Agent 小卡 */
.strip{display:grid;grid-template-columns:repeat(8,1fr);gap:10px;padding:16px}
.strip.m7{grid-template-columns:repeat(7,1fr)}
.tile{border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px 10px;text-align:center;background:var(--card);position:relative;cursor:pointer}
.tile:hover{border-color:#bfdbfe;box-shadow:0 4px 14px rgba(37,99,235,.10)}
.tile.mine{border:1.5px solid var(--mine-line);background:var(--mine-soft)}
.tile .ico{width:34px;height:34px;border-radius:var(--radius-sm);margin:0 auto 7px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700}
.tile .nm{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .ds{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .mark{position:absolute;right:6px;top:6px;font-size:10.5px;color:var(--mine)}
.tile.add{border:1.5px dashed var(--mine-line);background:var(--mine-soft);color:var(--mine);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:104px;font-size:12.5px}
.tile.add .plus{font-size:22px;line-height:1;margin-bottom:4px}

/* 插件区 */
.plugin-zone{display:grid;grid-template-columns:1fr 292px;gap:14px;padding:16px}
.plugin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.pcard{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;background:var(--card);cursor:pointer}
.pcard:hover{border-color:#bfdbfe}
.pcard .ptag{display:inline-block;font-size:11px;background:var(--primary-soft);color:var(--primary-dark);border-radius:var(--radius-xs);padding:1px 7px}
.pcard h4{font-size:13.5px;margin:7px 0 3px}
.pcard p{font-size:11.5px;color:var(--muted)}
.plugin-side{background:var(--dark);color:#cbd5e1;border-radius:var(--radius-sm);padding:16px;display:flex;flex-direction:column;justify-content:space-between}
.plugin-side h4{color:#fff;font-size:14px}
.plugin-side p{font-size:11.5px;color:#94a3b8;margin-top:6px}
.plugin-side .enter{margin-top:14px;background:var(--card);color:var(--dark);border-radius:var(--radius-xs);padding:9px 12px;font-size:12.5px;text-align:center;font-weight:600}

/* ===== GitHub 热度榜 ===== */
/* ===== 首页：左产品 / 右论坛（等高） ===== */
.split{display:grid;grid-template-columns:1fr 1.05fr;gap:18px;align-items:stretch}
.split>.lcol{display:flex;flex-direction:column;gap:14px}
.split>.lcol .pgroup:last-of-type{flex:1}

.pgroup{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px}
.pgh{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.pgh .bar{width:3px;height:14px;border-radius:2px;background:var(--primary);flex:0 0 auto}
.pgh h3{font-size:15px}
.pgh em{font-style:normal;font-size:11.5px;color:var(--faint);font-weight:400}
.pgh .sp{flex:1}
.cmpill{font-size:11.5px;border:1px solid var(--line);border-radius:999px;padding:3px 11px;color:var(--muted);white-space:nowrap;background:var(--subtle);flex:0 0 auto}
.cmpill b{color:var(--primary)}
.cmpill:hover{border-color:var(--primary);color:var(--primary-dark)}

.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pgrid.fill{flex:1;grid-auto-rows:1fr}
.pcell{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:10px 11px;background:var(--card);min-width:0}
.pcell:hover{border-color:var(--ring);background:var(--hover)}
.pcell .ic{width:28px;height:28px;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}
.pcell .nm{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcell .out{margin-left:auto;font-size:11px;color:var(--faint);flex:0 0 auto}

/* ===== 真实图标（_tools/fetch-icons.cjs 抓的本地文件）=====
   有图标 → 白底方块放图标；没图标 → 继续用首字色块。
   两种都由 App.icon() / App.logoInline() 决定，抓不到的站点自动降级，不会破图。 */
.logo-img{width:100%;height:100%;object-fit:contain;display:block}
.logo-inline{width:13px;height:13px;object-fit:contain;vertical-align:-2px;margin-right:4px;border-radius:3px}
.pcell.add{border-style:dashed;border-color:var(--mine-line);background:var(--mine-soft);justify-content:center;cursor:pointer}
.pcell.add .nm{color:var(--mine);font-weight:500;font-size:12.5px}
.pmore{margin-top:11px;font-size:12px;color:var(--primary);text-align:right}

.fcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.fcard .fhead{padding:13px 18px;border-bottom:1px solid var(--line)}
.fcard .fhead .r1{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}
.fcard .fhead h3{font-size:16px}
.fcard .fhead .sm{font-size:11.5px;color:var(--faint)}
.fcard .fhead .sp{flex:1}
.fcard .fhead .goto{font-size:11.5px;color:var(--primary);white-space:nowrap}
.fcard .fhead .r2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fcard .rowlist{flex:1}
.fcard .thread{text-decoration:none;color:inherit}
.thread .tt{display:block}
.tg.bounty{background:var(--ask-soft);color:var(--ask);font-weight:600;border:1px solid var(--ask-line)}
.feed-actions{display:flex;gap:9px;padding:13px 18px;background:var(--subtle);border-top:1px solid var(--line)}
.feed-actions .b{flex:1;text-align:center;border-radius:var(--radius-sm);padding:10px;font-size:13px;font-weight:600}
.feed-actions .b.a{background:var(--primary-soft);color:var(--primary-dark);border:1px solid var(--ring)}
.feed-actions .b.q{background:var(--ask-soft);color:var(--ask);border:1px solid var(--ask-line)}

/* ===== 栏目页 / 社区论坛页 ===== */
.boardgrid{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
.blist{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;max-height:640px;overflow:auto}
.blist h4{font-size:11.5px;color:var(--faint);letter-spacing:.6px;margin:4px 0 8px;padding-left:4px}
.blist h4:not(:first-child){margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.bprod{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:var(--radius-xs);color:inherit}
.bprod:hover{background:var(--hover)}
.bprod.on{background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--ring)}
.bprod .ic{width:24px;height:24px;border-radius:7px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:0 0 auto}
.bprod .nm{font-size:13px;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bprod .cnt{font-size:11px;color:var(--faint);flex:0 0 auto}
.bprod .ext{font-size:11px;color:var(--faint);padding:2px 5px;flex:0 0 auto;border-radius:5px}
.bprod .ext:hover{color:var(--primary);background:var(--primary-soft)}
.ghbox{overflow:hidden}
.ghrow{display:flex;align-items:center;gap:14px;padding:13px 20px;border-bottom:1px solid var(--line)}
.ghrow:last-child{border-bottom:0}
.ghrow:hover{background:var(--hover)}
.ghrank{width:22px;flex:0 0 auto;font-family:Consolas,monospace;font-size:13px;color:var(--faint);text-align:right}
.ghrow:nth-child(1) .ghrank,.ghrow:nth-child(2) .ghrank,.ghrow:nth-child(3) .ghrank{color:var(--primary);font-weight:700}
.ghmain{flex:1;min-width:0}
.ghname{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:14px;font-weight:600}
.ghname em{font-style:normal;font-size:11.5px;font-weight:400;color:var(--faint)}
.ghdesc{margin-top:3px;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ghtag{font-size:11px;border-radius:999px;padding:1px 8px;white-space:nowrap}
.ghtag.new{background:var(--free-soft);color:var(--free)}
.ghtag.hot{background:var(--primary-soft);color:var(--primary-dark)}
.ghtag.up{background:var(--mine-soft);color:var(--mine);font-weight:700}
.ghstar{flex:0 0 auto;font-family:Consolas,monospace;font-size:12.5px;color:var(--faint);white-space:nowrap}
.ghnote{padding:11px 20px;border-top:1px solid var(--line);background:var(--subtle);font-size:11.5px;color:var(--faint)}
@media (max-width:640px){
  .ghdesc{white-space:normal}
  .ghstar{display:none}
}

/* 职业瀑布流 */
.masonry{columns:4;column-gap:14px}
.cat{break-inside:avoid;margin-bottom:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.cat-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;cursor:pointer}
.cat-ico{width:28px;height:28px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700;flex:0 0 auto}
.cat-top h3{font-size:14.5px;flex:1}
.cat-top .cnt{font-size:11px;color:var(--muted);background:var(--chip-bg);border-radius:var(--radius-xs);padding:1px 6px}
.links{display:flex;flex-wrap:wrap;gap:6px}
.links a{font-size:12.5px;border:1px solid var(--line);border-radius:var(--radius-xs);padding:4px 9px;background:var(--subtle);color:var(--ink)}
.links a:hover{border-color:var(--primary);color:var(--primary)}
.links a.mine{border-color:var(--mine-line);background:var(--mine-soft);color:var(--mine)}
.mine-row{display:flex;align-items:center;gap:6px;margin-top:9px;padding-top:9px;border-top:1px dashed var(--mine-line);flex-wrap:wrap}
.mine-row .lb{font-size:11px;color:var(--mine)}
.addlink{border:1.5px dashed var(--mine-line);border-radius:var(--radius-sm);text-align:center;font-size:11.5px;color:var(--mine);padding:5px 10px;background:var(--mine-soft);cursor:pointer}

/* ===== 分类页 ===== */
.cathead{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;flex-wrap:wrap}
.cathead .ic{width:44px;height:44px;border-radius:var(--radius-sm);color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700}
.cathead h1{font-size:21px}
.cathead p{font-size:12.5px;color:var(--muted)}
.cathead .sp{flex:1}
.forum{display:grid;grid-template-columns:320px 1fr;gap:16px;margin-top:16px;align-items:start}
.sitecol{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.sitecol input{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:12.5px;font-family:inherit;outline:0;margin-bottom:10px}
.site{display:flex;gap:10px;padding:9px;border-radius:var(--radius-sm);align-items:center;cursor:pointer}
.site:hover{background:var(--hover)}
.site.on{background:var(--primary-soft);box-shadow:inset 0 0 0 1px #bfdbfe}
.site .si{width:30px;height:30px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;flex:0 0 auto}
.site .st{font-size:13.5px;font-weight:600}
.site .sd{font-size:11.5px;color:var(--muted)}
.site .sc{margin-left:auto;font-size:11px;color:var(--faint);white-space:nowrap}
.site .ext{display:inline-block;margin-left:5px;padding:1px 5px;border-radius:5px;color:var(--faint);font-size:11px}
.site .ext:hover{color:var(--primary);background:var(--primary-soft)}

/* 帖子列表项 */
.thread{display:flex;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);align-items:flex-start;cursor:pointer}
.thread:last-child{border-bottom:0}
.thread:hover{background:var(--subtle)}
.thread.askrow{background:#fffaf5}
.thread.askrow:hover{background:#fff4ea}
.mark{width:26px;height:26px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex:0 0 auto}
.mark.q{background:var(--ask)}
.mark.t{background:var(--primary)}
.thread .tt{font-size:14px;font-weight:600}
.thread .tm{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.thread .rr{margin-left:auto;text-align:right;flex:0 0 auto;font-size:12px;color:var(--muted)}
.thread .rr b{display:block;font-size:14px;color:var(--ask)}
.state{font-size:11px;border-radius:var(--radius-xs);padding:1px 7px}
.state.open{background:var(--ask-soft);color:var(--ask);border:1px solid var(--ask-line)}
.state.done{background:var(--free-soft);color:var(--free)}

/* 空态招募 */
.recruit{border:2px dashed var(--ask-line);background:var(--ask-soft);border-radius:var(--radius);padding:24px;text-align:center}
.recruit .rk{font-size:12px;color:var(--ask);font-weight:700;letter-spacing:.5px}
.recruit h2{font-size:19px;margin:8px 0 6px}
.recruit p{font-size:13px;color:#7c2d12;max-width:560px;margin:0 auto 14px}
.perks{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:16px}
.perk{background:var(--card);border:1px solid var(--ask-line);border-radius:var(--radius-sm);padding:8px 14px;font-size:12.5px;color:#9a3412}
.perk b{color:var(--ask)}
.board{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.want{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--line)}
.want:last-of-type{border-bottom:0}
.want .wv{width:46px;text-align:center;flex:0 0 auto}
.want .wv b{font-size:16px;color:var(--primary);display:block;line-height:1.1}
.want .wv span{font-size:10.5px;color:var(--muted)}
.want .wt{font-size:13.5px;flex:1}
.askrow2{display:flex;gap:8px;margin-top:12px}
.askrow2 input{flex:1;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:12.5px;font-family:inherit;outline:0}

/* ===== 帖子详情：左内容 右窄栏 ===== */
.layout{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}
.content{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px 26px}
.content h1{font-size:22px;line-height:1.4}
.content .meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.who{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.who .av{width:26px;height:26px;border-radius:50%;background:var(--chip-bg);color:var(--chip-fg);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.body{padding-top:18px}
.body h3{font-size:15.5px;margin:18px 0 7px}
.body h3:first-child{margin-top:0}
.body p{font-size:14px;color:var(--ink);margin:9px 0}
.body ul{padding-left:20px;font-size:14px;color:var(--ink)}
.body li{margin:5px 0}
.body .media{border-radius:var(--radius-sm);background:var(--dark);color:#94a3b8;height:200px;display:flex;align-items:center;justify-content:center;font-size:13.5px;margin:14px 0}
.cut{position:relative}
.cut .fade{position:absolute;left:0;right:0;bottom:0;height:110px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 80%)}
.lock{margin-top:14px;border:1px solid #fecaca;background:#fff7f7;border-radius:var(--radius-sm);padding:20px;text-align:center}
.lock .lk{width:40px;height:40px;border-radius:50%;background:var(--card);border:1px solid #fecaca;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;font-size:18px}
.lock h4{font-size:16px}
.lock p{font-size:12.5px;color:#9f1239;margin:6px 0 14px}
.lock .sold{font-size:12px;color:var(--muted);margin-top:10px}
.attach{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;margin-top:8px;font-size:13.5px}
.attach .sz{color:var(--muted);font-size:12px}
.code{background:var(--dark);color:#e2e8f0;border-radius:var(--radius-sm);padding:13px 15px;font-size:12.5px;margin-top:10px;font-family:Consolas,Monaco,monospace;line-height:1.7}

.rail{display:flex;flex-direction:column;gap:14px;position:sticky;top:16px}
.rcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 17px}
.rcard h4{font-size:13px;color:var(--muted);font-weight:600;letter-spacing:.4px;margin-bottom:10px}
.pricerow{display:flex;align-items:baseline;gap:7px}
.pricerow .p{font-size:27px;font-weight:700;color:var(--price)}
.pricerow .old{font-size:12.5px;color:var(--faint);text-decoration:line-through}
.paysub{font-size:11.5px;color:var(--muted);margin-top:9px;text-align:center;line-height:1.7}
.scoreblock{display:flex;gap:14px;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--line)}
.scoreblock .s1{text-align:center;flex:0 0 auto}
.scoreblock .s1 .n{font-size:30px;font-weight:700;color:var(--star);line-height:1.05}
.scoreblock .s1 .st{font-size:12px;color:var(--star);letter-spacing:1px}
.scoreblock .s2{flex:1;font-size:12px;color:var(--muted);line-height:1.8}
.scoreblock .s2 b{color:var(--text);font-size:14px}
.bar{height:6px;border-radius:3px;background:var(--chip-bg);overflow:hidden;margin-top:4px}
.bar i{display:block;height:100%;background:var(--star)}
.rtags{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.rtag{font-size:11.5px;border-radius:999px;padding:3px 10px;border:1px solid #bbf7d0;background:var(--free-soft);color:#047857}
.rtag.bad{border-color:#fecaca;background:#fef2f2;color:#b91c1c}
.onebad{border-top:1px dashed var(--line);padding-top:11px}
.onebad .bh{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}
.onebad .bh .st{color:var(--star);letter-spacing:1px;font-size:11px}
.onebad .bt{font-size:12.5px;color:var(--ink);margin-top:7px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.onebad .rp{font-size:11.5px;color:var(--ink3);background:var(--hover);border-radius:var(--radius-xs);padding:7px 9px;margin-top:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.allrev{margin-top:12px;text-align:center;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px;font-size:12.5px;color:var(--primary);font-weight:600;display:block}
.allrev:hover{border-color:var(--primary);background:var(--hover)}
.guard div{font-size:12.5px;color:var(--ink2);margin:6px 0;display:flex;gap:7px;line-height:1.55}
.guard span.c{color:var(--free);flex:0 0 auto}
.stat{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 0;border-bottom:1px solid var(--line)}
.stat:last-child{border-bottom:0}
.stat .k{color:var(--muted)}
.stat .v{font-weight:600}

/* 求助帖需求单 / 报价 */
.brief{margin-top:18px;border:1px solid var(--ask-line);background:#fffaf5;border-radius:var(--radius-sm);padding:16px 18px}
.brief h3{font-size:14px;color:var(--ask);margin-bottom:10px}
.brow{display:flex;gap:12px;font-size:13.5px;padding:7px 0;border-bottom:1px dashed var(--ask-line)}
.brow:last-child{border-bottom:0}
.brow .k{width:104px;flex:0 0 auto;color:#9a3412}
.brow .v{flex:1;color:var(--ink)}
.quote{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:12px}
.quote.free{border-color:#bbf7d0;background:var(--subtle)}
.quote.picked{border-color:var(--primary);background:var(--hover)}
.quote .qh{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.quote .av{width:28px;height:28px;border-radius:50%;background:var(--chip-bg);color:var(--chip-fg);display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700}
.quote .qn{font-size:13.5px;font-weight:600}
.quote .qs{font-size:11.5px;color:var(--muted)}
.quote .qp{margin-left:auto;text-align:right}
.quote .qp b{font-size:18px;color:var(--price)}
.quote .qp b.f{color:var(--free);font-size:14px}
.quote .qd{font-size:13px;color:var(--ink);margin-top:9px}
.quote .qf{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap;align-items:center}
.quote .qf span.info{font-size:11.5px;color:#6b7280;background:var(--hover);border-radius:var(--radius-xs);padding:2px 9px}

/* ===== 评价页 ===== */
.revhead{display:flex;gap:26px;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.dist{flex:1;min-width:260px;max-width:380px}
.dist .dr{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted);margin:4px 0}
.dist .dr .dl{width:34px}
.dist .dr .db{flex:1;height:7px;border-radius:var(--radius-xs);background:var(--chip-bg);overflow:hidden}
.dist .dr .db i{display:block;height:100%;background:var(--star)}
.dist .dr .dn{width:30px;text-align:right}
.revfilters{display:flex;gap:8px;margin:16px 0;flex-wrap:wrap}
.rf{font-size:12.5px;border:1px solid var(--line);border-radius:999px;padding:5px 14px;color:var(--ink2);background:var(--card);cursor:pointer}
.rf.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark);font-weight:600}
.revlist{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rv{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px}
.rv .h{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.rv .h .av{width:24px;height:24px;border-radius:50%;background:var(--chip-bg);color:var(--chip-fg);display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700}
.rv .h .st{color:var(--star);letter-spacing:1px;font-size:11.5px}
.rv .h .f{margin-left:auto;font-size:11px;color:var(--faint)}
.rv .b{font-size:13px;color:var(--ink);margin-top:8px}
.rv .px{display:flex;gap:6px;margin-top:9px}
.rv .px span{width:62px;height:46px;border-radius:var(--radius-xs);background:var(--line)}
.rv .rp{font-size:12px;color:var(--ink3);background:var(--hover);border-radius:var(--radius-xs);padding:8px 10px;margin-top:9px}
.rv .rp b{color:var(--primary-dark)}
.rv.bad{border-color:#fecaca}

/* ===== 表单 / 弹窗 ===== */
.field{margin-top:14px}
.field label{display:block;font-size:12.5px;color:var(--ink);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 12px;font-size:13.5px;font-family:inherit;outline:0;background:var(--card)}
.field textarea{min-height:96px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary)}
.pick{display:flex;gap:7px;flex-wrap:wrap}
.pick span{font-size:12.5px;border:1px solid var(--line);border-radius:999px;padding:5px 13px;color:var(--ink2);cursor:pointer}
.pick span.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark);font-weight:600}
.vis{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
.visrow{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;cursor:pointer}
.visrow .dot{width:16px;height:16px;border-radius:50%;border:5px solid var(--primary);flex:0 0 auto;margin-top:3px}
.visrow .dot.off{border-color:#cbd5e1;border-width:1.5px;background:var(--card)}
.visrow .vt{font-size:13px}
.visrow .vd{font-size:11.5px;color:var(--muted)}

.overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:60px 20px;overflow:auto}
.modal{width:100%;max-width:520px;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.modal .mh{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.modal .mh h3{font-size:15px}
.modal .mh button{border:0;background:transparent;color:var(--faint);font-size:17px}
.modal .mb{padding:18px}
.modal .mf{padding:14px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.pulled{margin-top:10px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;display:flex;gap:11px;background:var(--subtle)}
.pulled .pi{width:38px;height:38px;border-radius:var(--radius-sm);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex:0 0 auto}
.pulled .pt{font-size:13.5px;font-weight:600}
.pulled .pd{font-size:12px;color:var(--muted)}

/* toast */
.toastwrap{position:fixed;right:20px;bottom:24px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--dark);color:#fff;border-radius:var(--radius-sm);padding:11px 17px;font-size:13.5px;box-shadow:0 10px 28px rgba(0,0,0,.22);animation:tin .2s}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ===== 页脚（全站统一，由 js/app.js 注入，内容读 js/site.config.js）===== */
.sitefoot{margin-top:34px;background:var(--card);border-top:1px solid var(--line)}
.sitefoot .wrap{padding:22px 24px 26px}
.sf-top{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.sf-brand{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.sf-dot{width:9px;height:9px;border-radius:50%;background:var(--brand-dot);box-shadow:0 0 0 4px var(--brand-dot-ring)}
.sf-brand b{font-family:"Outfit","Poppins",system-ui,sans-serif;font-size:15px;letter-spacing:-.2px;color:var(--ink)}
.sf-brand em{font-style:normal;font-size:12.5px;color:var(--faint)}
.sf-links{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:var(--ink3)}
.sf-links a:hover{color:var(--primary)}
.sf-legal{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding-top:12px;
  border-top:1px dashed var(--line);font-size:12.5px;color:var(--faint)}
.sf-legal a{color:var(--ink3)}
.sf-legal a:hover{color:var(--primary)}
.sf-sep{color:var(--line)}
.sf-todo{color:var(--warn);background:var(--note-bg);border:1px solid var(--note-line);border-radius:6px;padding:1px 7px}
.sf-demo{color:var(--warn);background:var(--note-bg);border:1px solid var(--note-line);border-radius:999px;padding:1px 10px}

/* ===== 文档页 / 404（关于 · 协议 · 隐私 · 免责）===== */
.doc{max-width:820px;margin:26px auto 0;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:34px 38px 40px}
.doc h1{font-size:24px;letter-spacing:-.4px;color:var(--ink);margin-bottom:6px}
.docmeta{font-size:12.5px;color:var(--faint);margin-bottom:20px}
.doc h2{font-size:16px;color:var(--ink);margin:26px 0 8px}
.doc h3{font-size:14px;color:var(--ink2);margin:18px 0 6px}
.doc p,.doc li{font-size:14px;color:var(--ink2);line-height:1.9}
.doc ul,.doc ol{margin:8px 0 8px 22px}
.doc li{margin:4px 0}
.doc a{color:var(--primary)}
.doc .note{background:var(--note-bg);border:1px solid var(--note-line);color:var(--note-fg);
  border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;margin:16px 0}
.doc table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13.5px}
.doc th,.doc td{border:1px solid var(--line);padding:8px 10px;text-align:left;color:var(--ink2)}
.doc th{background:var(--subtle);color:var(--ink)}
.doc .backlink{display:inline-block;margin-top:26px;font-size:13.5px}

/* ===== 响应式 ===== */
@media (max-width:1080px){
  .strip{grid-template-columns:repeat(4,1fr)}
  .strip.m7{grid-template-columns:repeat(4,1fr)}
  .masonry{columns:3}
  .plugin-grid{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:900px){
  .hero h1{font-size:36px}
  /* 首页的 .split、栏目/社区的 .boardgrid 也要收成单列，
     否则窄屏下两栏各剩不到 100px，文字会被挤成一字一行 */
  .layout,.forum,.split,.boardgrid{grid-template-columns:1fr}
  .rail{position:static}
  .result{grid-template-columns:1fr}
  .plugin-zone{grid-template-columns:1fr}
  .revlist{grid-template-columns:1fr}
  .masonry{columns:2}
  .topbar .wrap{flex-wrap:wrap;padding:10px 0}
  .nav{order:3;width:100%;justify-content:flex-start}
}
@media (max-width:640px){
  .wrap{padding:0 16px}
  .strip{grid-template-columns:repeat(2,1fr)}
  .strip.m7{grid-template-columns:repeat(2,1fr)}
  .masonry{columns:1}
  .plugin-grid{grid-template-columns:1fr}
  .hero h1{font-size:28px;letter-spacing:-.3px}
  .content{padding:18px}
  .hero{padding:22px 0 14px}

  /* 搜索：输入框独立成一张卡，类型按钮挪到框外的下一行，
     免得四个 chip 挤在框里把搜索框撑变形 */
  .searchbox{max-width:none;margin:18px auto 0;padding:0;background:transparent;
    border:0;box-shadow:none}
  .searchbox input{background:var(--card);border:2px solid var(--ring);
    border-radius:var(--radius);padding:13px 15px;font-size:16px;box-shadow:var(--search-shadow)}
  .searchbox .row{margin-top:10px;flex-direction:column;align-items:stretch;gap:9px;flex-wrap:nowrap}
  .chips{gap:6px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}
  .chip{padding:6px 13px;white-space:nowrap;flex:0 0 auto}
  .searchbox .btn.p{width:100%;padding:12px;font-size:15px}

  /* 产品格：两列、图标在上、名字换行完整显示（三列会把名字截成 D… C…） */
  .pgroup{padding:13px}
  .pgh{gap:7px}
  .pgh h3{font-size:14.5px;white-space:nowrap}
  .pgh em{display:none}
  .pgrid{grid-template-columns:repeat(2,1fr);gap:8px}
  .pcell{flex-direction:column;align-items:flex-start;gap:7px;padding:10px}
  .pcell .nm{white-space:normal;overflow:visible;text-overflow:clip;
    font-size:12.5px;line-height:1.35;word-break:break-word}
  .pcell .out{display:none}
  .hints{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}
  .hint{flex:0 0 auto}

  .sitefoot .wrap{padding:18px 16px 22px}
  .sf-links{gap:12px}
  .doc{padding:22px 18px 26px;margin-top:18px}
}
