/* ===== 主站 index.html 内联样式（2026-10-21 原样搬运，唯一真源 templates/site.css）===== */
/* =====================================================================
     AI图鉴 · 高级编辑感视觉系统
     克制中性色 + 单一靛蓝强调 · hairline 细边 · 小圆角 · 墨色封面
     ===================================================================== */
  :root{
    --paper:#f5f4f1; --paper-2:#efeeea; --card:#ffffff; --card-2:#faf9f7;
    --ink:#1b1b1d; --ink-2:#56565c; --ink-3:#929299;
    --line:#ebeae6; --line-2:#dcdbd6; --line-card:#b6afa1; --line-strong:#a49d8f;
    --seal:#1b1b1d; --seal-deep:#000000; --seal-soft:rgba(27,27,29,.05); --seal-2:#2c2c30;
    --accent:#4a4a50; --accent-soft:rgba(27,27,29,.04);
    --glow:rgba(255,255,255,.5); --glow-2:rgba(0,0,0,.02);
    --free:#1b1b1d; --free-bg:rgba(27,27,29,.05); --freemium:#56565c; --freemium-bg:rgba(27,27,29,.04);
    --paid:#6e6e74; --paid-bg:rgba(110,110,116,.08);
    --serif:"SF Pro Display","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
    --sans:"SF Pro Text","PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,-apple-system,sans-serif;
    --catnav-heading:"福利分类";
    --radius-control:10px; --radius-card:12px; --radius-panel:16px;
    --shadow-1:0 1px 2px rgba(20,20,22,.04),0 6px 18px -10px rgba(20,20,22,.12);
    --shadow-2:0 2px 6px rgba(20,20,22,.05),0 22px 48px -24px rgba(20,20,22,.26);
    color-scheme:light;
  }
  html[data-theme="dark"]{
    --paper:#16171b; --paper-2:#1c1d22; --card:#1e1f24; --card-2:#26272d;
    --ink:#ededee; --ink-2:#a6a7af; --ink-3:#76777f;
    --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.14); --line-card:rgba(255,255,255,.24); --line-strong:rgba(255,255,255,.32);
    --seal:#f4f4f5; --seal-deep:#ffffff; --seal-soft:rgba(255,255,255,.09); --seal-2:#fafafa;
    --accent:#c9cad0; --accent-soft:rgba(255,255,255,.07);
    --glow:rgba(255,255,255,.04); --glow-2:rgba(255,255,255,.03);
    --free:#ededee; --free-bg:rgba(255,255,255,.09); --freemium:#a6a7af; --freemium-bg:rgba(255,255,255,.06);
    --paid:#9ca3af; --paid-bg:rgba(156,163,175,.12);
    --shadow-1:0 1px 2px rgba(0,0,0,.4);
    --shadow-2:0 2px 8px rgba(0,0,0,.5),0 22px 48px -24px rgba(0,0,0,.7);
    color-scheme:dark;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  [hidden]{display:none!important}
  html{height:100%}
  body{
    font-family:var(--sans);color:var(--ink);height:100vh;overflow:hidden;
    background:radial-gradient(1200px 600px at 12% -20%,rgba(255,255,255,.5) 0%,transparent 55%),linear-gradient(180deg,#f7f6f3 0%,#f0efec 100%);
    -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;
    scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;
  }
  html[data-theme="dark"] body{background:radial-gradient(1200px 600px at 12% -20%,rgba(255,255,255,.03) 0%,transparent 55%),var(--paper)}
  ::selection{background:var(--seal-soft);color:var(--seal-deep)}
  ::-webkit-scrollbar{width:9px;height:8px}
  ::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px;border:3px solid transparent;background-clip:content-box}
  ::-webkit-scrollbar-thumb:hover{background-color:var(--ink-3)}
  ::-webkit-scrollbar-track{background:transparent}
  input,textarea{caret-color:var(--seal)}
  :focus-visible{outline:2px solid var(--seal);outline-offset:2px;border-radius:4px}
  button{font-family:inherit;cursor:pointer}
  a{color:inherit}
  mark{background:var(--seal-soft);color:var(--seal-deep);border-radius:2px;padding:0 2px}

  .app{height:100vh;display:grid;grid-template-columns:216px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);background:var(--paper)}

  /* ===== 顶栏 ===== */
  .topbar{
    grid-column:1 / -1;grid-row:1;min-width:0;display:grid;grid-template-columns:1fr minmax(0,560px) 1fr;align-items:center;gap:16px;
    padding:0 24px;height:58px;background:rgba(245,244,241,.82);border-bottom:1px solid var(--line);z-index:30;
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  }
  html[data-theme="dark"] .topbar{background:rgba(22,23,27,.82)}
  .topbar-left{display:flex;align-items:center;gap:16px;min-width:0}
  .count-chip{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;display:flex;align-items:center;gap:7px;flex:0 0 auto}
  .brand{display:flex;align-items:center;gap:11px;text-decoration:none;white-space:nowrap}
  .seal-mark{
    width:30px;height:30px;border-radius:8px;overflow:hidden;background:linear-gradient(145deg,#33343a 0%,#161619 100%);
    display:block;flex:0 0 auto;
  }
  .seal-mark img{display:block;width:100%;height:100%;object-fit:cover}
  .brand-name{font-size:15.5px;font-weight:750;letter-spacing:-.02em}
  .search{
    width:100%;margin:0 auto;display:flex;align-items:center;gap:10px;min-width:0;
    background:var(--card);border:1px solid var(--line-strong);border-radius:var(--radius-control);
    padding:0 14px;height:38px;box-shadow:var(--shadow-1);
    transition:border-color .18s,box-shadow .18s,background .18s;
  }
  .search:hover{border-color:var(--seal)}
  .search:focus-within{border-color:var(--seal);box-shadow:0 0 0 3px var(--seal-soft);background:var(--card)}
  .search .s-ico{color:var(--ink-2);display:grid;place-items:center}
  .search input{flex:1;border:none;outline:none;background:transparent;font-size:13.5px;color:var(--ink);font-family:inherit;min-width:0}
  .search input::placeholder{color:var(--ink-3)}
  .search kbd{font-size:10.5px;color:var(--ink-3);border:1px solid var(--line-2);border-radius:5px;padding:1px 6px;font-family:var(--sans);background:var(--paper);flex-shrink:0;line-height:1.6}
  .top-meta{justify-self:end;display:flex;align-items:center;gap:8px}
  @media (min-width:921px){
    .top-meta .lang-btn{width:auto;height:34px}
    .top-meta .icon-btn{width:34px;height:34px}
    .top-meta .lang-btn{display:flex;align-items:center;justify-content:center;border-radius:var(--radius-control)}
  }
  .icon-btn{
    display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line-strong);
    background:var(--card);color:var(--ink-2);border-radius:var(--radius-control);flex-shrink:0;
    transition:background .18s,color .18s,border-color .18s;
  }
  .icon-btn:hover{background:var(--card-2);color:var(--ink);border-color:var(--seal)}
  .icon-btn .ic-sun{display:none}
  html[data-theme="dark"] .icon-btn .ic-moon{display:none}
  html[data-theme="dark"] .icon-btn .ic-sun{display:block}
  .lang-btn{height:30px;min-width:38px;padding:0 8px;border:1px solid var(--line-strong);border-radius:8px;background:var(--card-2);color:var(--ink-2);font:600 11px var(--sans);letter-spacing:.04em}
  .lang-btn:hover{border-color:var(--seal);color:var(--seal-deep);background:var(--seal-soft)}

  /* ===== 分类锚点导航 ===== */
  .catnav{
    grid-column:1;grid-row:2;min-width:0;min-height:0;display:flex;flex-direction:column;gap:2px;align-items:stretch;overflow-x:hidden;overflow-y:auto;
    padding:16px 10px;background:var(--paper-2);border-right:1px solid var(--line);
    scrollbar-width:thin;z-index:25;
  }
  .catnav::before{content:var(--catnav-heading);display:block;padding:0 10px 10px;color:var(--ink-3);font-family:var(--sans);font-size:10.5px;font-weight:650;letter-spacing:.08em}
  .catnav-item{
    width:100%;flex-shrink:0;border:none;background:none;font-size:13px;color:var(--ink-2);
    padding:8px 11px;border-radius:var(--radius-control);display:flex;align-items:center;justify-content:flex-start;gap:8px;text-align:left;
    transition:color .15s,background .15s;border:1px solid transparent;text-decoration:none;
  }
  .catnav-item:hover{color:var(--ink);background:var(--card)}
  .catnav-item.active{color:var(--seal-deep);background:var(--seal-soft);border-color:transparent;font-weight:650}
  html[data-theme="dark"] .catnav-item.active{color:var(--seal-deep)}
  .catnav-item:nth-child(4){margin-top:8px}
  .catnav-item .cn{font-family:var(--sans);font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
  .catnav-item.active .cn{color:var(--seal)}
  .catnav-group-label{display:block;margin:8px 8px 4px;padding-top:12px;border-top:1px solid var(--line);color:var(--ink-3);font-size:10px;font-weight:650;letter-spacing:.1em}
  .catnav-section-start{margin-top:0!important}
  .nav-symbol{width:16px;height:16px;display:grid;place-items:center;flex:none;color:var(--seal)}
  .nav-symbol svg{width:15px;height:15px;display:block}

  /* ===== 主体 ===== */
  .page{grid-column:2;grid-row:2;min-width:0;min-height:0;display:flex}
  .ledger{flex:1;overflow-y:auto;overflow-x:hidden;min-width:0;scrollbar-gutter:stable}
  .wrap{max-width:1760px;margin:0 auto;padding:0 32px 88px}

  /* ===== Hero：高级灰主视觉封面 ===== */
  .hero{
    position:relative;isolation:isolate;
    display:grid;grid-template-columns:minmax(330px,.72fr) minmax(700px,1.28fr);gap:0;
    margin:18px 0 0;padding:34px 36px 30px;min-height:276px;
    border:1px solid var(--line-card);border-radius:var(--radius-panel);
    background:linear-gradient(122deg,#ffffff 0%,#faf9f7 58%,#f3f2ef 100%);
    color:var(--ink);overflow:hidden;
    box-shadow:var(--shadow-2);
  }
  html[data-theme="dark"] .hero{border-color:rgba(255,255,255,.15);background:linear-gradient(122deg,#1c1d22 0%,#212229 55%,#191a1f 100%);color:#ededee;box-shadow:var(--shadow-2)}
  .hero::before{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(680px 300px at 82% -20%,rgba(27,27,29,.035) 0%,transparent 62%),radial-gradient(520px 260px at 8% 120%,rgba(27,27,29,.025) 0%,transparent 60%);pointer-events:none}
  html[data-theme="dark"] .hero::before{background:radial-gradient(680px 300px at 82% -20%,rgba(255,255,255,.05) 0%,transparent 62%),radial-gradient(520px 260px at 8% 120%,rgba(255,255,255,.03) 0%,transparent 60%)}
  .hero::after{content:"";position:absolute;z-index:-1;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(0,0,0,.06) 30%,rgba(0,0,0,.06) 70%,transparent);pointer-events:none}
  html[data-theme="dark"] .hero::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.4) 30%,rgba(255,255,255,.4) 70%,transparent)}
  .hero-copy{min-width:0;padding-right:30px;display:flex;flex-direction:column;justify-content:space-between}
  .hero-title{font-size:clamp(38px,3.4vw,54px);line-height:1.18;font-weight:780;letter-spacing:-.045em;text-wrap:balance;animation:fadeUp .6s cubic-bezier(.22,.9,.32,1) both}
  .hero-title em{font-style:normal;color:var(--ink);font-weight:780}
  html[data-theme="dark"] .hero-title em{color:#fff}
  .hero-sub{margin-top:15px;font-size:13.5px;color:var(--ink-2);line-height:1.85;max-width:56ch;animation:fadeUp .6s .07s cubic-bezier(.22,.9,.32,1) both}
  html[data-theme="dark"] .hero-sub{color:rgba(237,237,238,.62)}
  .hero-sub b{color:var(--ink);font-weight:650}
  html[data-theme="dark"] .hero-sub b{color:#d4d4d8}
  .hero-actions{margin-top:20px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;animation:fadeUp .6s .14s cubic-bezier(.22,.9,.32,1) both}
  .hero-stats{display:flex;gap:12px;align-items:baseline;margin-top:18px;flex-wrap:wrap}
  .hs-item{display:flex;align-items:baseline;gap:6px}
  .hs-item b{font-size:20px;font-weight:800;color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}
  html[data-theme="dark"] .hs-item b{color:#fff}
  .hs-item small{font-size:10px;color:var(--ink-3)}
  .random-btn{
    display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-2);color:var(--ink-2);
    background:var(--card-2);font-size:13px;font-weight:600;padding:0 16px;height:34px;border-radius:var(--radius-control);font-family:var(--sans);
    transition:background .18s,border-color .18s,color .18s;
  }
  .random-btn:hover{background:var(--paper-2);border-color:var(--line-strong);color:var(--ink)}
  html[data-theme="dark"] .random-btn{border-color:rgba(255,255,255,.16);color:#c9cad0;background:rgba(255,255,255,.05)}
  html[data-theme="dark"] .random-btn:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.3);color:#fff}
  .stat-pill{
    display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);
    border:1px solid var(--line-2);background:var(--card-2);padding:0 14px;height:34px;border-radius:999px;
  }
  html[data-theme="dark"] .stat-pill{border-color:rgba(255,255,255,.14);color:rgba(237,237,238,.6);background:rgba(255,255,255,.04)}
  .stat-pill b{color:var(--ink);font-size:14px;font-variant-numeric:tabular-nums}
  html[data-theme="dark"] .stat-pill b{color:#d4d4d8}
  .filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:16px}
  .flabel{font-size:11px;color:var(--ink-3);margin-right:2px;letter-spacing:.02em}
  .flabel-2{margin-left:12px}
  .chip{
    display:inline-flex;align-items:center;line-height:1;
    border:1px solid var(--line-2);background:var(--card-2);color:var(--ink-2);
    font-size:11.5px;padding:3px 12px;height:26px;border-radius:999px;font-family:var(--sans);
    transition:border-color .15s,color .15s,background .15s;
  }
  .chip:hover{border-color:var(--line-strong);color:var(--ink)}
  html[data-theme="dark"] .chip{border-color:rgba(255,255,255,.14);color:rgba(237,237,238,.66);background:rgba(255,255,255,.04)}
  html[data-theme="dark"] .chip:hover{border-color:rgba(255,255,255,.32);color:#fff}
  .chip.active{background:var(--seal);border-color:var(--seal);color:var(--paper);font-weight:650}
  html[data-theme="dark"] .chip.active{background:var(--seal);border-color:var(--seal);color:var(--paper)}

  .hero-rail{align-self:stretch;display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.78fr);grid-template-rows:auto auto auto minmax(0,1fr);column-gap:22px;align-content:stretch;border-left:1px solid var(--line-2);padding:8px 0 3px 18px;animation:fadeUp .6s .18s cubic-bezier(.22,.9,.32,1) both}
  html[data-theme="dark"] .hero-rail{border-left-color:rgba(255,255,255,.09)}
  .hero-rail-title{grid-column:1;grid-row:2;font-size:20px;color:var(--ink);font-weight:720;letter-spacing:-.03em}
  html[data-theme="dark"] .hero-rail-title{color:#e4e4e7}
  .hero-rail-copy{grid-column:1;grid-row:3;margin-top:9px;max-width:38ch;color:var(--ink-2);font-size:12.5px;line-height:1.85}
  html[data-theme="dark"] .hero-rail-copy{color:rgba(237,237,238,.52)}
  .hero-rail-rule{grid-column:1 / -1;grid-row:1;width:40px;height:2px;background:linear-gradient(90deg,var(--ink),var(--ink-3));margin-bottom:16px}
  html[data-theme="dark"] .hero-rail-rule{background:linear-gradient(90deg,#e4e4e7,#52525b)}
  .hero-ask{grid-column:1;grid-row:4;margin-top:16px;align-self:end;justify-self:start;border:1px solid var(--line-2);background:transparent;color:var(--ink-2);border-radius:999px;padding:0 14px;height:30px;font-size:12px;font-weight:600}
  .hero-ask:hover{background:var(--seal);border-color:var(--seal);color:var(--paper)}
  html[data-theme="dark"] .hero-ask{border-color:rgba(255,255,255,.18);color:#c9cad0}
  html[data-theme="dark"] .hero-ask:hover{background:var(--seal);border-color:var(--seal);color:var(--paper)}
  .hero-news{grid-column:2;grid-row:2 / 5;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;min-width:0;margin-top:0;padding:4px 0 3px 24px;border-left:1px solid var(--line-2)}
  html[data-theme="dark"] .hero-news{border-left-color:rgba(255,255,255,.08)}
  .hero-news-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
  .hero-news-head strong{font-size:10px;color:var(--ink-2);font-weight:700;letter-spacing:.12em}
  html[data-theme="dark"] .hero-news-head strong{color:var(--seal-deep)}
  .hero-news-head span{margin-left:auto;font-size:9.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;letter-spacing:.02em}
  html[data-theme="dark"] .hero-news-head span{color:rgba(237,237,238,.35)}
  .hero-news-list{display:grid;gap:6px}
  .hero-news-item{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;color:var(--ink-2);font-size:11px;line-height:1.6}
  .hero-news-item:hover{color:var(--ink)}
  html[data-theme="dark"] .hero-news-item{color:rgba(244,244,245,.56)}
  html[data-theme="dark"] .hero-news-item:hover{color:#fff}

  /* ===== 快速入口 ===== */
  .topic-strip{padding:22px 0 16px;border-bottom:1px solid var(--line)}
  .topic-strip-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}
  .topic-strip-head span{font-size:13.5px;font-weight:720;color:var(--ink);letter-spacing:-.01em}
  .topic-strip-head p{font-size:11.5px;color:var(--ink-3)}
  .topic-links{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
  .topic-link{
    position:relative;min-width:0;display:flex;align-items:baseline;gap:7px;text-align:left;
    border:1px solid var(--line-card);background:var(--card);color:var(--ink);border-radius:var(--radius-card);padding:11px 13px;
    transition:border-color .18s,box-shadow .18s,transform .18s;text-decoration:none;
  }
  .topic-link:hover{border-color:var(--seal);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .topic-link b{display:none}
  .topic-link strong{font-size:13px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topic-link small{font-size:10px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}
  .topic-arrow{margin-left:auto;display:grid;place-items:center;color:var(--ink-3);transition:transform .18s,color .18s}
  .topic-arrow svg{width:14px;height:14px;display:block}
  .topic-link:hover .topic-arrow{color:var(--seal);transform:translate(1px,-1px)}

  /* ===== 首屏双栏 ===== */
  .front-grid{display:grid;grid-template-columns:minmax(0,1.68fr) minmax(310px,.86fr);gap:16px;padding:18px 0 4px;align-items:stretch}
  .front-left{display:grid;gap:16px;align-content:start;min-width:0}
  .front-grid > .block,.front-left > .block,.front-right > .block{min-width:0;padding:18px 18px 16px;border:1px solid var(--line-card);background:var(--card);border-radius:var(--radius-panel)}
  .front-grid .block-head{margin-bottom:13px}
  .front-tools .track{grid-auto-columns:204px;min-height:180px}
  .front-left #trendList{min-height:150px}
  .front-right{position:relative;min-width:0}
  .front-news{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden}
  .front-news .news-track{display:grid;grid-auto-flow:row;gap:0;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 4px 0 0;scrollbar-width:thin}
  .front-news .news-item{min-width:0;max-width:none;border-width:0 0 1px;border-radius:0;background:transparent;padding:12px 0;box-shadow:none;transform:none}
  .front-news .news-item:hover{border-color:var(--line);transform:none;box-shadow:none}
  .front-news .news-item:last-child{border-bottom:0}
  .front-news .news-item.news-featured{padding:12px 0 16px}
  .front-news .news-item.news-featured .news-t{font-size:14px;font-weight:650;line-height:1.55}
  .front-news .news-item:not(.news-featured) .news-t{font-size:12px;line-height:1.55}

  /* ===== 通用区块 ===== */
  .block{padding:32px 4px 8px}
  .block-head{display:flex;align-items:center;gap:10px;margin-bottom:13px}
  /* 装饰单字徽标（惠/新/榜/讯）已按站长要求移除（2026-09-15）。
     徽标原本把块头撑到 21px（无描边）/23px（alt 描边），删掉后缩到 20px 会让
     AI热门项目 / AI榜单 / AI资讯 / front-grid 整体变矮 1~4px。
     下面把受影响的 4 个块头高度钉回原实测值，保证容器尺寸零变化。
     ⚠️ 不要用全局 .block-head{min-height}：分类区 .cat-sec 的块头本就是 20px，会被顶高。 */
  .hero-deals .block-head,#hotBlock .block-head{min-height:21px}
  #trending .block-head,#newsPreview .block-head{min-height:23px}
  .block-title{font-size:15.5px;font-weight:750;letter-spacing:-.015em}
  .block-title a{color:inherit;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .16s,color .16s}
  .block-title a:hover{color:var(--ink);border-bottom-color:currentColor}
  .block-more{margin-left:auto;font-size:11.5px;color:var(--ink-3);text-decoration:none}
  .block-more:hover{color:var(--seal-deep)}

  /* 横滚卡片 */
  .track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:12px;overflow-x:auto;padding:2px 2px 10px 0;scrollbar-width:thin}
  .hcard{
    position:relative;display:flex;flex-direction:column;gap:8px;
    border:1px solid var(--line-card);background:var(--card);border-radius:var(--radius-card);padding:14px;
    text-decoration:none;transition:border-color .18s,transform .18s,box-shadow .18s;cursor:pointer;
  }
  .hcard:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .hcard-top{display:flex;align-items:center;gap:10px;min-width:0;min-height:40px}
  .hcard .tcard-ico{width:40px;height:40px}
  .hcard .tcard-ico img{inset:3px;width:calc(100% - 6px);height:calc(100% - 6px)}
  .hcard-name{flex:1;min-width:0;font-size:13.5px;font-weight:650;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .hcard-desc{font-size:12px;line-height:1.6;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.65em}
  .hcard .act{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .15s}
  .hcard:hover .act,.hcard .act.on{opacity:1}
  .hcard-stars{font-size:11px;font-weight:650;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:auto;min-height:18px}
  .hcard-stars::before{content:"★ ";color:var(--seal)}
  .daily-project-ico{width:40px;height:40px;border-radius:10px;flex:none;display:grid;place-items:center;background:var(--seal-soft);border:1px solid var(--line-2);color:var(--seal-deep);font-size:15px;font-weight:700;letter-spacing:-.03em}
  html[data-theme="dark"] .daily-project-ico{border-color:var(--line-strong)}

  /* 网格卡片 */
  .cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(182px,1fr));gap:10px}
  .cat-more{display:flex;align-items:center;justify-content:center;color:var(--ink-2);font-size:12.5px;font-weight:700;letter-spacing:.02em}
  .cat-more:hover{border-color:var(--seal);color:var(--seal)}
  .tcard{
    position:relative;display:flex;flex-direction:column;gap:7px;text-decoration:none;color:inherit;
    border:1px solid var(--line-card);background:var(--card);border-radius:var(--radius-card);padding:12px 12px 11px;
    cursor:pointer;transition:border-color .18s,transform .18s,box-shadow .18s;
    contain:layout;
  }
  .tcard:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .tcard-top{display:flex;align-items:center;gap:10px;min-width:0}
  .tcard-ico{
    position:relative;width:38px;height:38px;border-radius:9px;flex-shrink:0;
    background:var(--card-2);border:1px solid var(--line);display:grid;place-items:center;
  }
  .tcard-ico::before{content:attr(data-ch);font-size:15px;font-weight:700;color:var(--ink-2)}
  .tcard-ico img{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);object-fit:contain;border-radius:7px}
  .tcard-name{flex:1;min-width:0;font-size:13.5px;font-weight:650;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .tcard-desc{font-size:11.5px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}
  .tcard-meta{display:flex;align-items:center;gap:6px;margin-top:auto;min-height:18px}
  .tcard-tag{font-size:10px;color:var(--ink-2);border:1px solid var(--line);background:var(--card-2);padding:1px 6px;border-radius:5px}
  .tcard-reg{font-size:10px;color:var(--free);font-weight:600}
  .act{
    display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);
    background:var(--card);color:var(--ink-3);border-radius:6px;
    transition:color .15s,background .15s,border-color .15s,opacity .15s;
  }
  .act:hover{border-color:var(--seal);color:var(--seal)}
  .act.on{background:var(--seal);border-color:var(--seal);color:var(--paper)}
  .tcard .act{position:absolute;top:8px;right:8px;opacity:0}
  .tcard:hover .act,.tcard .act.on{opacity:1}
  @media (hover:none){.tcard .act{opacity:1}}

  /* AI 开源热榜卡片 */
  .trend-card{
    position:relative;display:flex;flex-direction:column;gap:8px;min-height:150px;
    border:1px solid var(--line-card);background:var(--card);border-radius:var(--radius-card);padding:14px;
    text-decoration:none;transition:border-color .18s,transform .18s,box-shadow .18s;
  }
  .trend-card:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .trend-top{display:flex;align-items:center;gap:9px;min-width:0}
  .trend-rank{font-size:14px;font-weight:700;color:var(--ink-3);font-variant-numeric:tabular-nums;flex-shrink:0;letter-spacing:.02em}
  .trend-ico{width:20px;height:20px;border-radius:6px;flex-shrink:0;display:grid;place-items:center;color:var(--ink-3)}
  .trend-ico img{width:100%;height:100%;object-fit:cover;border-radius:6px}
  .trend-name{flex:1;min-width:0;font-size:13.5px;font-weight:650;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .trend-sub{display:flex;align-items:center;gap:8px;min-width:0}
  .trend-repo{font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
  .trend-tag{font-size:10px;color:var(--ink-2);border:1px solid var(--line);background:var(--card-2);padding:2px 7px;border-radius:5px;flex-shrink:0}
  .trend-desc{font-size:11.5px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}
  .trend-meta{display:flex;align-items:center;gap:9px;margin-top:auto}
  .trend-stars{font-size:11.5px;font-weight:650;font-variant-numeric:tabular-nums;color:var(--ink)}
  .trend-stars::before{content:"★ ";color:var(--seal)}
  .trend-up{font-size:10.5px;color:var(--seal-deep);background:var(--seal-soft);padding:2px 8px;border-radius:999px;white-space:nowrap}
  .trend-arrow{margin-left:auto;color:var(--ink-3);transition:color .18s,transform .18s}
  .trend-card:hover .trend-arrow{color:var(--seal);transform:translate(1px,-1px)}

  /* AI 动态 */
  .news-track{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
  .news-track::-webkit-scrollbar{display:none}
  .news-item{
    flex-shrink:0;display:flex;flex-direction:column;gap:7px;min-width:250px;max-width:320px;
    border:1px solid var(--line);background:var(--card);border-radius:var(--radius-card);padding:12px 14px;
    text-decoration:none;transition:border-color .18s,transform .18s,box-shadow .18s;
  }
  .news-item:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .news-top{display:flex;align-items:center;gap:8px;min-width:0}
  .news-tag{font-size:10px;color:var(--seal-deep);border:1px solid var(--line-2);padding:1px 7px;border-radius:4px;flex-shrink:0;font-weight:600;letter-spacing:.03em;background:var(--card)}
  .front-news .news-item.news-featured .news-tag{background:var(--seal);border-color:var(--seal);color:var(--paper)}
  html[data-theme="dark"] .front-news .news-item.news-featured .news-tag{color:var(--paper)}
  .news-d{font-size:10px;color:var(--ink-3);margin-left:auto;font-variant-numeric:tabular-nums;flex-shrink:0}
  .news-t{font-size:12.5px;line-height:1.55;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .tips-summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--ink-2);font-size:11.5px;line-height:1.55}

  /* 本周值得领 */
  .deal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:11px}
  .deal-card{
    position:relative;display:flex;flex-direction:column;gap:7px;text-decoration:none;
    border:1px solid var(--line-card);background:var(--card);border-radius:var(--radius-card);padding:13px;
    transition:border-color .18s,transform .18s,box-shadow .18s;animation:rowIn .4s cubic-bezier(.22,.9,.32,1) backwards;
  }
  .deal-card:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-1)}
  .deal-top{display:flex;align-items:center;gap:6px;min-width:0}
  .deal-type{font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;flex-shrink:0;letter-spacing:.03em}
  .deal-type.api{color:var(--free);background:var(--free-bg)}
  .deal-type.vps,.deal-type.startup{color:var(--seal-deep);background:var(--seal-soft)}
  .deal-type.gpu,.deal-type.domain{color:var(--freemium);background:var(--freemium-bg)}
  .deal-type.dev{color:var(--paid);background:var(--paid-bg)}
  .deal-type.deploy{color:var(--accent);background:var(--accent-soft)}
  .deal-type.app{color:var(--ink-2);background:var(--card-2)}
  .deal-type.student{color:var(--accent);background:var(--accent-soft)}
  .deal-type.coupon{color:var(--freemium);background:var(--freemium-bg)}
  .deal-valid{font-size:10px;color:var(--ink-3);margin-left:auto;flex-shrink:0}
  .deal-name{font-size:13.5px;font-weight:650;color:var(--ink)}
  .deal-title{font-size:12px;font-weight:600;color:var(--seal-deep);line-height:1.5}
  html[data-theme="dark"] .deal-title{color:var(--seal)}
  .deal-detail{font-size:11.5px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}
  .deal-foot{display:flex;align-items:center;gap:6px;margin-top:auto}
  .deal-src{font-size:10px;color:var(--ink-3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .deal-go{font-size:11px;font-weight:650;color:var(--seal-deep);flex-shrink:0}
  html[data-theme="dark"] .deal-go{color:var(--seal)}
  .deal-card:hover .deal-go{color:var(--seal)}

  .mod-state{display:flex;align-items:center;justify-content:center;min-height:64px;color:var(--ink-3);font-size:12px;letter-spacing:.02em}
  .mod-state.loading::before{content:"";width:13px;height:13px;margin-right:8px;border:2px solid var(--line-strong);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}
  .mod-state.state-empty::before,.mod-state.state-error::before{display:none}
  @keyframes spin{to{transform:rotate(360deg)}}

  /* 最近看过 */
  .recent{display:flex;align-items:center;gap:8px;padding:14px 4px 4px;flex-wrap:wrap}
  .recent-label{font-size:11px;color:var(--ink-3);font-weight:600;flex-shrink:0}
  .recent-chips{display:flex;gap:6px;flex-wrap:wrap;min-width:0}
  .recent-chip{
    font-size:11.5px;color:var(--ink-2);border:1px solid var(--line-2);background:var(--card);
    padding:3px 11px;border-radius:999px;cursor:pointer;font-family:var(--sans);
    transition:border-color .15s,color .15s;
  }
  .recent-chip:hover{border-color:var(--seal);color:var(--seal-deep)}
  .recent-clear{margin-left:auto;font-size:11px;color:var(--ink-3);background:none;border:none;padding:4px 6px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;font-family:var(--sans)}
  .recent-clear:hover{color:var(--seal)}

  /* 空态 / 启动错误 */
  .empty{display:none;text-align:center;padding:44px 20px;color:var(--ink-3);font-size:13px;line-height:2}
  .empty strong{display:block;font-size:15px;color:var(--ink-2)}
  .boot-error{margin:16px 0;padding:18px 20px;border:1px solid var(--line-strong);border-radius:var(--radius-panel);background:var(--card);color:var(--ink-2)}
  .boot-error strong{display:block;color:var(--ink);font-size:15px}
  .boot-error p{margin-top:5px;font-size:12.5px;line-height:1.7}
  .boot-error-actions{display:flex;gap:10px;align-items:center;margin-top:12px}
  .boot-error button,.boot-error a{border:1px solid var(--line-2);border-radius:var(--radius-control);padding:7px 12px;background:var(--card-2);color:var(--ink);font:600 12px var(--sans);text-decoration:none;cursor:pointer}
  .boot-error button:hover,.boot-error a:hover{border-color:var(--seal);color:var(--seal-deep)}

  /* SEO 文案 */
  .seo-copy{margin:30px 0 10px;padding:22px 24px;border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--card);color:var(--ink-2)}
  .seo-copy h2{font-size:16px;color:var(--ink);margin-bottom:8px;letter-spacing:-.01em}
  .seo-copy p{font-size:13px;line-height:1.8;max-width:78ch}
  .seo-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
  .seo-links a{font-size:12px;color:var(--seal-deep);border:1px solid var(--line-2);border-radius:999px;padding:5px 11px;text-decoration:none;transition:border-color .18s,color .18s,background .18s}
  .seo-links a:hover{border-color:var(--seal);background:var(--seal-soft);color:var(--seal-deep)}

  /* 分类区块 */
  /* 不搬主站的 content-visibility:auto（无头 Chrome 下卡片文字逐字重影，本站刻意不启用 perf-cv） */
  .cat-secs{display:block}
  .cat-sec{padding:28px 4px 6px}
  .cat-sec-idx{font-size:13px;color:var(--seal);font-variant-numeric:tabular-nums;margin-right:2px}
  .cat-sec .block-head{margin-bottom:13px}

  /* 页脚 */
  .foot{margin-top:40px;padding:26px 4px 6px;border-top:1px solid var(--line-strong);text-align:center}
  .foot-row{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}
  .foot-brand{font-size:15px;font-weight:750;color:var(--seal-deep);letter-spacing:-.01em}
  html[data-theme="dark"] .foot-brand{color:var(--seal)}
  .foot-desc{font-size:12px;color:var(--ink-3);line-height:1.7;max-width:56ch}
  @media (min-width:921px){
    .foot-desc{max-width:none;white-space:nowrap}
  }
  .foot-meta{display:flex;justify-content:center;gap:10px 22px;flex-wrap:wrap;margin-top:12px;font-size:11px;color:var(--ink-3)}
  .foot-actions{display:inline-flex;gap:38px;align-items:center;font-size:18px}
  .foot-actions a{color:var(--seal-deep);text-decoration:none;font-weight:650}
  html[data-theme="dark"] .foot-actions a{color:var(--seal)}
  .foot-actions a:hover{text-decoration:underline;text-underline-offset:3px}
  .foot-copy{margin-top:10px;font-size:11px;color:var(--ink-3)}
  .foot-price{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
  .foot-price i{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:4px}

  /* 问询台 */
  .chat-panel{
    position:fixed;inset:0 0 0 auto;z-index:60;width:320px;display:flex;flex-direction:column;overflow:hidden;opacity:0;
    border-left:1px solid var(--line);background:rgba(255,255,255,.96);transform:translateX(100%);pointer-events:none;
    transition:opacity .2s ease,transform .28s cubic-bezier(.22,.9,.32,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  }
  html[data-theme="dark"] .chat-panel{background:rgba(22,23,28,.97)}
  .chat-panel.open{opacity:1;transform:translateX(0);pointer-events:auto}
  .chat-head{display:flex;align-items:center;gap:9px;padding:14px 16px;border-bottom:1px solid var(--line)}
  .chat-dot{width:7px;height:7px;border-radius:50%;background:var(--free);box-shadow:0 0 0 3px var(--free-bg)}
  .chat-title{font-size:13.5px;font-weight:650}
  .chat-sub{font-size:10px;color:var(--ink-3);background:var(--card-2);padding:2px 8px;border-radius:999px;letter-spacing:.04em}
  .chat-close{margin-left:auto;display:block;background:none;border:none;color:var(--ink-3);padding:4px}
  .chat-close:hover{color:var(--seal)}
  .chat-body{flex:1;overflow-y:auto;padding:14px 14px 8px;display:flex;flex-direction:column;gap:10px;scrollbar-width:thin}
  .msg{max-width:88%;padding:9px 12px;border-radius:10px;font-size:13px;line-height:1.7;white-space:normal;word-break:break-word}
  .msg.bot{background:var(--paper-2);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:3px}
  .msg.bot h4{font-size:13px;margin:4px 0}
  .msg.bot code{background:var(--card-2);padding:1px 5px;border-radius:4px;font-size:12px}
  .msg.bot pre{background:var(--paper-2);color:var(--ink);padding:10px 12px;border-radius:8px;overflow-x:auto;font-size:12px;margin:6px 0}
  html[data-theme="dark"] .msg.bot pre{background:#0d0f14;color:#e6e8ef}
  .msg.bot a{color:var(--seal-deep);text-decoration:underline}
  .msg.user{align-self:flex-end;background:var(--seal);color:var(--paper);border-bottom-right-radius:3px}
  .typing{display:inline-flex;gap:4px;padding:6px 2px}
  .typing i{width:5px;height:5px;border-radius:50%;background:var(--seal);animation:blink 1s infinite}
  .typing i:nth-child(2){animation-delay:.2s}
  .typing i:nth-child(3){animation-delay:.4s}
  .chat-foot{padding:10px 12px 12px;border-top:1px solid var(--line)}
  .chat-input{display:flex;align-items:flex-end;gap:8px;border:1px solid var(--line-2);border-radius:var(--radius-control);background:var(--paper);padding:7px 8px 7px 12px}
  .chat-input:focus-within{border-color:var(--seal);box-shadow:0 0 0 3px var(--seal-soft)}
  .chat-input textarea{flex:1;border:none;outline:none;background:transparent;resize:none;font-size:13px;color:var(--ink);font-family:inherit;line-height:1.6;max-height:120px}
  .send-btn{width:30px;height:30px;border:none;border-radius:8px;background:var(--seal);color:var(--paper);display:grid;place-items:center;flex-shrink:0}
  .send-btn:disabled{opacity:.5}
  .chat-tip{font-size:10px;color:var(--ink-3);margin-top:7px;text-align:center;line-height:1.5}

  .fab{display:none}
  .to-top{
    position:fixed;right:16px;bottom:20px;z-index:90;width:40px;height:40px;border-radius:50%;
    border:1px solid var(--line-strong);background:var(--card);color:var(--ink-2);
    display:grid;place-items:center;box-shadow:var(--shadow-1);
  }
  .to-top:hover{color:var(--seal);border-color:var(--seal)}
  .toast{
    position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(12px);
    background:var(--ink);color:var(--paper);font-size:12.5px;padding:9px 18px;border-radius:999px;
    opacity:0;transition:opacity .2s,transform .2s;z-index:120;pointer-events:none;box-shadow:var(--shadow-2);
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .nav-count{margin-left:auto;flex:none;font-size:11px;line-height:1.5;color:var(--paper);background:var(--seal);
    border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums;min-width:18px;text-align:center}
  .fav-empty{grid-column:1/-1;font-size:13px;color:var(--ink-3);padding:6px 2px 2px;line-height:1.7}

  /* ===== 加入浏览器收藏夹 ===== */
  .bm-btn{
    display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;
    border:1px solid var(--line-strong);border-radius:var(--radius-control);
    background:var(--card-2);color:var(--ink-2);font:600 12.5px var(--sans);transition:all .16s;
  }
  .bm-btn svg{width:14px;height:14px;flex:none}
  .bm-btn:hover{border-color:var(--seal);color:var(--seal-deep);background:var(--seal-soft)}
  html[data-theme="dark"] .bm-btn:hover{color:#fff;background:rgba(255,255,255,.1)}
  .bm-modal{
    position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:20px;
    background:rgba(12,12,14,.46);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;
  }
  .bm-modal.open{opacity:1;visibility:visible}
  .bm-card{
    width:min(430px,100%);background:var(--card);border:1px solid var(--line-2);
    border-radius:var(--radius-panel);box-shadow:var(--shadow-2);padding:24px 24px 20px;
    transform:translateY(10px) scale(.98);transition:transform .22s cubic-bezier(.22,.9,.32,1);
  }
  .bm-modal.open .bm-card{transform:none}
  .bm-head{display:flex;align-items:flex-start;gap:12px}
  .bm-mark{width:38px;height:38px;flex:none;border-radius:11px;display:grid;place-items:center;background:var(--seal);color:var(--paper)}
  html[data-theme="dark"] .bm-mark{background:#f4f4f5;color:#16171b}
  .bm-mark svg{width:19px;height:19px}
  .bm-title{font-size:16px;font-weight:750;letter-spacing:-.01em;color:var(--ink)}
  html[data-theme="dark"] .bm-title{color:#fff}
  .bm-sub{margin-top:4px;font-size:12.5px;line-height:1.65;color:var(--ink-3)}
  .bm-close{margin-left:auto;flex:none;width:28px;height:28px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--ink-3);display:grid;place-items:center}
  .bm-close:hover{background:var(--card-2);color:var(--ink)}
  .bm-steps{margin-top:18px;display:flex;flex-direction:column;gap:10px}
  .bm-step{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;line-height:1.6;color:var(--ink-2)}
  .bm-step .n{flex:none;width:18px;height:18px;margin-top:1px;border-radius:50%;background:var(--seal-soft);color:var(--seal-deep);font:700 10.5px/18px var(--sans);text-align:center}
  .bm-step b{color:var(--ink);font-weight:650}
  html[data-theme="dark"] .bm-step b{color:#fff}
  kbd.bm-kbd{display:inline-block;padding:2px 7px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;background:var(--card-2);color:var(--ink);font:600 11.5px/1.4 var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
  .bm-drag{margin-top:16px;display:flex;align-items:center;gap:11px;padding:11px 13px;cursor:grab;border:1px dashed var(--line-strong);border-radius:12px;background:var(--card-2);font-size:12.5px;color:var(--ink-2);text-decoration:none;user-select:none;-webkit-user-select:none}
  .bm-drag:active{cursor:grabbing}
  .bm-drag:hover{border-color:var(--seal);background:var(--seal-soft);text-decoration:none}
  .bm-drag .ico{width:28px;height:28px;flex:none;border-radius:8px;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
  .bm-drag .ico img{width:100%;height:100%;object-fit:cover;display:block}
  .bm-drag b{display:block;color:var(--ink);font-weight:650}
  html[data-theme="dark"] .bm-drag b{color:#fff}
  .bm-drag small{color:var(--ink-3);font-size:11px}
  .bm-tip{margin-top:12px;font-size:11.5px;line-height:1.6;color:var(--ink-3)}
  .bm-foot{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}
  .bm-ok{flex:1;min-width:120px;height:36px;border:none;border-radius:10px;background:var(--seal);color:var(--paper);font:650 13px var(--sans)}
  html[data-theme="dark"] .bm-ok{background:#f4f4f5;color:#16171b}
  .bm-ok:hover{opacity:.9}
  .bm-later{height:36px;padding:0 14px;border:1px solid var(--line-strong);border-radius:10px;background:transparent;color:var(--ink-3);font:600 12.5px var(--sans)}
  .bm-later:hover{border-color:var(--seal);color:var(--seal-deep)}
  .bm-nudge{
    position:fixed;left:20px;bottom:20px;z-index:94;width:296px;max-width:calc(100vw - 40px);
    background:var(--card);border:1px solid var(--line-2);border-radius:14px;box-shadow:var(--shadow-2);
    padding:14px 15px;display:flex;gap:12px;align-items:flex-start;
    transform:translateY(14px);opacity:0;visibility:hidden;transition:all .3s cubic-bezier(.22,.9,.32,1);
  }
  .bm-nudge.show{transform:none;opacity:1;visibility:visible}
  .bm-nudge .ico{width:32px;height:32px;flex:none;border-radius:9px;background:var(--seal);color:var(--paper);display:grid;place-items:center}
  html[data-theme="dark"] .bm-nudge .ico{background:#f4f4f5;color:#16171b}
  .bm-nudge .ico svg{width:16px;height:16px}
  .bm-nudge b{display:block;font-size:13px;font-weight:700;color:var(--ink);line-height:1.4}
  html[data-theme="dark"] .bm-nudge b{color:#fff}
  .bm-nudge p{margin-top:3px;font-size:11.5px;line-height:1.6;color:var(--ink-3)}
  .bm-nudge .row{margin-top:10px;display:flex;gap:8px;align-items:center}
  .bm-nudge .go{height:30px;padding:0 12px;border:none;border-radius:8px;background:var(--seal);color:var(--paper);font:650 12px var(--sans)}
  html[data-theme="dark"] .bm-nudge .go{background:#f4f4f5;color:#16171b}
  .bm-nudge .no{border:none;background:transparent;color:var(--ink-3);font:600 12px var(--sans);padding:0 4px}
  .bm-nudge .no:hover{color:var(--ink)}
  .bm-nudge .x{position:absolute;top:8px;right:9px;width:22px;height:22px;border:none;background:transparent;color:var(--ink-3);border-radius:6px;display:grid;place-items:center;font-size:12px;line-height:1;padding:0}
  .bm-nudge .x:hover{background:var(--card-2);color:var(--ink)}

  /* ===== 响应式 ===== */
  @media (max-width:1100px){
    .hero{grid-template-columns:minmax(300px,.78fr) minmax(560px,1.22fr);padding-left:22px;padding-right:22px}
    .hero-rail{padding-left:16px;column-gap:16px}
    .hero-news{padding-left:18px}
    .front-grid{grid-template-columns:minmax(0,1.5fr) minmax(280px,.85fr)}
  }
  @media (max-width:920px){
    .app{display:flex;flex-direction:column}
    .topbar{display:flex;align-items:center;gap:12px;padding:0 14px;background:rgba(245,244,241,.88)}
    html[data-theme="dark"] .topbar{background:rgba(22,23,27,.88)}
    .topbar-left{flex-shrink:0}
    .brand-name{display:none}
    .search{flex:1;max-width:none;width:auto;margin:0;height:36px}
    .top-meta{margin-left:auto}
    .count-chip{display:none}
    .catnav{grid-column:auto;grid-row:auto;min-height:0;flex-shrink:0;flex-direction:row;align-items:center;overflow-x:auto;overflow-y:hidden;padding:8px 14px;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none}
    .catnav::before{display:none}
    .catnav-item{width:auto;justify-content:center;padding:7px 14px;text-align:center}
    .catnav-item.active{box-shadow:none}
    .catnav-item:nth-child(4){margin-top:0}
    .catnav-group-label{display:none}
    .nav-symbol{width:15px}
    .page{grid-column:auto;grid-row:auto;flex:1;display:flex;min-height:0}
    .wrap{padding:0 14px 90px}
    .hero{grid-template-columns:1fr;gap:22px;padding:28px 22px 22px;min-height:0;border-radius:10px}
    .hero-copy{padding-right:0}
    .hero-rail{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;padding:18px 0 0;border-left:0;border-top:1px solid var(--line-2)}
    .hero-rail-rule{margin-bottom:12px}
    .hero-ask{grid-column:1;grid-row:3;align-self:flex-start;margin-top:12px}
    .hero-news{grid-column:1;grid-row:4;margin-top:16px;padding:12px 0 3px;border-left:0;border-top:1px solid var(--line-2)}
    .topic-links{display:flex;overflow-x:auto;padding-bottom:5px;scrollbar-width:none}
    .topic-links::-webkit-scrollbar{display:none}
    .topic-link{flex:0 0 154px}
    .front-grid{grid-template-columns:1fr;gap:12px;padding-top:16px}
    .front-grid > .block,.front-left > .block,.front-right > .block{padding:16px 15px 14px}
    .front-right{position:static}
    .front-news{position:static;order:-1;max-height:none}
    .front-news .news-track{max-height:360px}
    .chat-panel{position:fixed;inset:0;width:100%;z-index:100;opacity:1;overflow:visible;transform:translateX(100%);transition:transform .28s cubic-bezier(.22,.9,.32,1)}
    .chat-panel.open{width:100%;transform:translateX(0);border-left:0}
    .fab{display:grid;place-items:center;position:fixed;right:16px;bottom:20px;z-index:95;width:50px;height:50px;border-radius:50%;border:none;background:var(--seal);color:var(--paper);box-shadow:var(--shadow-2)}
    .to-top{left:16px;bottom:20px}
  }
  @media (max-width:560px){
    .hero{padding:24px 16px 19px}
    .hero-title{font-size:32px;line-height:1.06}
    .hero-sub{margin-top:12px;line-height:1.7;font-size:12.5px}
    .hero-actions{margin-top:16px}
    .stat-pill{padding:0 10px}
    .random-btn{padding:0 12px}
    .filters{margin-top:14px;gap:5px}
    .chip{padding:3px 10px}
    .topic-strip{padding-top:18px}
    .topic-strip-head{display:block}
    .topic-strip-head p{margin-top:4px}
    .cat-grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:9px}
    .track{grid-auto-columns:188px}
    .foot{margin-top:30px}
    .front-news .news-item.news-featured .news-t{font-size:13px}
  }

  @keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  @keyframes rowIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @keyframes blink{0%,100%{opacity:.25}50%{opacity:1}}
  @media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
  @media (max-width:560px){.lang-btn{min-width:34px;padding:0 6px}}
  .hero-rail{display:block;padding:0;border-left:0;animation:none}
  .hero-deals{padding:0 0 0 22px;border-left:1px solid var(--line-2)}
  .hero-deals .block-head{margin-bottom:12px}
  .hero-deals .block-more{font-size:10px}
  .hero-deals .deal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;min-height:200px;max-height:254px;overflow-y:auto;padding:4px 2px 6px 0}
  .hero-deals .deal-card{min-height:96px;padding:11px;border-radius:11px;background:var(--card-2);border-color:var(--line-card)}
  .hero-deals .deal-name{font-size:12px}.hero-deals .deal-title{font-size:11px}.hero-deals .deal-detail{font-size:11px;line-height:1.45}
  /* #dealsList 客户端渲染为 .card（与主站一致）：窄列里覆盖 module-page.css 的宽松样式，避免卡片过长 */
  .hero-deals .card{padding:11px;border-radius:11px;background:var(--card-2);border-color:var(--line-card);min-height:0}
  .hero-deals .card .card-top{gap:5px}
  .hero-deals .card h2{font-size:12.5px;margin-top:7px;line-height:1.3}
  .hero-deals .card p{font-size:11px;line-height:1.5;margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .hero-deals .card .card-foot{padding-top:8px;margin-top:8px;font-size:10px}
  .index-panel{display:grid;grid-template-columns:minmax(300px,.82fr) minmax(520px,1.18fr);gap:0;margin-top:14px;padding:20px 22px;border:1px solid var(--line-card);border-radius:18px;background:var(--card);color:var(--ink);box-shadow:var(--shadow-2)}
  html[data-theme="dark"] .index-panel{background:rgba(255,255,255,.06);box-shadow:none}
  .index-panel-copy{min-width:0;padding-right:28px;border-right:1px solid var(--line)}
  .index-panel-copy .hero-rail-rule{display:block;margin-bottom:14px}
  .index-panel-copy .hero-rail-title{display:block;font-size:20px;color:var(--ink)}
  .index-panel-copy .hero-rail-copy{margin-top:8px;max-width:40ch;color:var(--ink-2);font-size:12.5px;line-height:1.75}
  .index-panel-copy .hero-ask{margin-top:14px}
  .index-panel > .hero-news{grid-column:2;grid-row:auto;min-width:0;align-self:stretch;padding:0 0 0 24px;border-left:0}
  .hero-rail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:1fr;gap:0;padding:0;border-left:1px solid var(--line-2)}
  .hero-deals{height:100%;padding:0 22px 0 26px;border-left:0;border-right:1px solid var(--line-2)}
  .index-panel-copy{padding:0 0 0 22px;border-right:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}
  .index-panel-copy .hero-rail-rule{margin-top:2px}
  .index-panel-copy .hero-rail-copy{margin-bottom:0}
  .hero-chat{position:static;inset:auto;z-index:auto;width:100%;height:100%;min-height:230px;opacity:1;transform:none;pointer-events:auto;border:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;transition:none}
  .hero-chat .chat-head{padding:0 0 10px;border-bottom:1px solid var(--line-2)}
  .hero-chat .chat-body{min-height:74px;padding:12px 0 8px}
  .hero-chat .chat-foot{padding:8px 0 0;border-top:1px solid var(--line-2)}
  .hero-chat .chat-input{background:var(--card-2);border-color:var(--line-2)}
  .hero-chat .chat-input textarea{color:var(--ink)}
  .hero-chat .chat-input textarea::placeholder{color:var(--ink-3)}
  .hero-chat .chat-tip{color:var(--ink-3)}
  .hero-chat .msg.bot{width:100%;max-width:none;background:var(--card-2);border-color:var(--line);color:var(--ink-2)}
  .hero-chat .chat-close{display:none}
  html[data-theme="dark"] .hero-chat .chat-head{border-bottom-color:rgba(255,255,255,.1)}
  html[data-theme="dark"] .hero-chat .chat-foot{border-top-color:rgba(255,255,255,.1)}
  html[data-theme="dark"] .hero-chat .chat-input{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16)}
  html[data-theme="dark"] .hero-chat .chat-input textarea{color:#f4f4f5}
  html[data-theme="dark"] .hero-chat .chat-input textarea::placeholder{color:rgba(244,244,245,.4)}
  html[data-theme="dark"] .hero-chat .chat-tip{color:rgba(244,244,245,.38)}
  html[data-theme="dark"] .hero-chat .msg.bot{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#e4e4e7}
  @media (min-width:921px) and (max-width:1240px){
    .hero-copy{padding-right:18px}
    .hero-title{font-size:clamp(34px,4.2vw,44px)}
    .hero-sub{font-size:12.5px;line-height:1.7}
    .hero-stats{gap:10px;margin-top:16px}
    .hs-item{gap:4px}
    .hs-item b{font-size:20px}
    .hero-actions{margin-top:14px}
  }
  @media (min-width:921px){
    .front-news{min-height:0;align-self:stretch}
    .front-news .news-track{min-height:0}
    .hero{grid-template-columns:1fr 2fr;padding:30px 28px 26px}
    .hero-copy{padding-right:24px}
    .hero-rail{grid-template-columns:1fr 1fr}
    .hero-deals{padding-right:18px}
    .hero-deals{display:flex;flex-direction:column;height:330px}
    .hero-deals .block-head{flex-shrink:0;margin-bottom:10px}
    .hero-deals .deal-grid{flex:1;min-height:0;grid-auto-rows:minmax(max-content,1fr);max-height:none;align-content:stretch}
    .index-panel-copy{padding-left:18px}
  }
  /* ===== 宽屏（≥1670）：首屏严格三等分 =====
     标题区 : AI羊毛 : AI助手 = 1 : 1 : 1（hero 取 1fr:2fr，rail 内已是 1:1）。
     1669px 以下本来就是这个比例，之前为了消除左栏留白改成 max-content，
     结果多出来的宽度全被右栏吃掉，AI 助手被撑到 588~623px（窄聊天框不该这么宽）。
     现按站长要求恢复三等分；同时放开左栏文案的 56ch 上限（副标题是一整句，
     铺满一行自然，不留违和空白）。容器高度恒为 388px，不受影响。
     ⚠️ 统计条不要用 space-between 硬撑到两端：三项本是一组数据，
     拉开后「461 / 17 / 每日」分居左中右，站长判为「排版太远、不协调」。 */
  @media (min-width:1670px){
    .hero{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
    .hero-sub{max-width:none}
  }
  @media (min-width:921px) and (max-width:1240px){
    .hero{grid-template-columns:minmax(0,1fr) minmax(0,1.72fr)}
    .hero-copy{padding-right:18px}
  }
  /* 统计条加「项免费福利」后共四项：1241–1500 档左栏仅 ~340px，
     缩 gap 保证四项仍一行（不改字号已缩过的基线）。 */
  @media (min-width:1241px) and (max-width:1500px){
    .hero-stats{gap:8px}
    .hs-item{gap:4px}
  }
  @media (max-width:920px){
    .hero-rail{grid-template-columns:1fr;grid-template-rows:auto auto;gap:18px;border-left:0;border-top:1px solid var(--line-2);padding:18px 0 0}
    .hero-deals{height:auto;padding:0;border-right:0}
    .index-panel-copy{padding:18px 0 0;border-top:1px solid var(--line-2)}
  }
  @media (max-width:920px){
    .hero-rail{display:block;padding:0}
    .hero-deals{padding:0;border-left:0}
    .hero-deals .deal-grid{max-height:none}
    .index-panel{grid-template-columns:1fr;gap:16px;padding:18px 16px}
    .index-panel-copy{padding-right:0;padding-bottom:16px;border-right:0;border-bottom:1px solid var(--line)}
    .index-panel > .hero-news{padding:0;border-left:0}
  }
  /* ===== Hero 内嵌卡片：随主题明暗自适应，保持单色阶 ===== */
  .hero-deals .block-title{color:var(--ink)}
  .hero-deals .block-more{color:var(--ink-3)}
  .hero-deals .deal-card{background:var(--card-2);border-color:var(--line);transition:background .18s,border-color .18s}
  /* 2026-10-17: #dealsList 是滚动容器，hover 的 translateY(-1px) 会把首行卡片的 1px 顶边
     推出裁切区，导致整行顶边框不可见（同 .front-news .news-item 之患）；
     故此处禁位移，保留描边/底色/阴影反馈。 */
  .hero-deals .deal-card:hover{background:var(--paper-2);border-color:var(--line-strong);transform:none}
  .hero-deals .deal-name{color:var(--ink)}
  .hero-deals .deal-title{color:var(--seal-deep)}
  .hero-deals .deal-detail{color:var(--ink-2)}
  .hero-deals .deal-src{color:var(--ink-3)}
  .hero-deals .deal-valid{color:var(--ink-3)}
  .hero-deals .deal-go{color:var(--seal-deep)}
  .hero-deals .deal-card:hover .deal-go{color:var(--seal)}
  .hero-deals .deal-type.api{color:var(--free);background:var(--free-bg)}
  .hero-deals .deal-type.vps,.hero-deals .deal-type.gpu,.hero-deals .deal-type.dev,.hero-deals .deal-type.deploy,.hero-deals .deal-type.app,.hero-deals .deal-type.startup,.hero-deals .deal-type.domain,.hero-deals .deal-type.student,.hero-deals .deal-type.coupon{color:var(--ink-2);background:var(--card-2)}
  .hero-chat .chat-title{color:var(--ink)}
  .hero-chat .chat-sub{color:var(--ink-2)}
  .hero-chat .chat-close{color:var(--ink-3)}
  .hero-chat .chat-close:hover{color:var(--seal)}
  .hero-chat .msg.bot h4{color:var(--ink)}
  html[data-theme="dark"] .hero-deals .block-title{color:#f4f4f5}
  html[data-theme="dark"] .hero-deals .block-more{color:rgba(237,237,238,.55)}
  html[data-theme="dark"] .hero-deals .deal-card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.15)}
  html[data-theme="dark"] .hero-deals .deal-card:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.20)}
  html[data-theme="dark"] .hero-deals .deal-name{color:#f4f4f5}
  html[data-theme="dark"] .hero-deals .deal-title{color:var(--seal)}
  html[data-theme="dark"] .hero-deals .deal-detail{color:rgba(237,237,238,.72)}
  html[data-theme="dark"] .hero-deals .deal-src{color:rgba(237,237,238,.5)}
  html[data-theme="dark"] .hero-deals .deal-valid{color:rgba(237,237,238,.5)}
  html[data-theme="dark"] .hero-deals .deal-go{color:var(--seal)}
  html[data-theme="dark"] .hero-deals .deal-card:hover .deal-go{color:#fff}
  html[data-theme="dark"] .hero-deals .deal-type.api{color:#ededee;background:rgba(255,255,255,.09)}
  html[data-theme="dark"] .hero-deals .deal-type.vps,html[data-theme="dark"] .hero-deals .deal-type.gpu,html[data-theme="dark"] .hero-deals .deal-type.dev,html[data-theme="dark"] .hero-deals .deal-type.deploy,html[data-theme="dark"] .hero-deals .deal-type.app,html[data-theme="dark"] .hero-deals .deal-type.startup,html[data-theme="dark"] .hero-deals .deal-type.domain,html[data-theme="dark"] .hero-deals .deal-type.student,html[data-theme="dark"] .hero-deals .deal-type.coupon{color:#ededee;background:rgba(255,255,255,.09)}
  html[data-theme="dark"] .hero-chat .chat-title{color:#f4f4f5}
  html[data-theme="dark"] .hero-chat .chat-sub{color:rgba(244,244,245,.55)}
  html[data-theme="dark"] .hero-chat .chat-close{color:rgba(244,244,245,.5)}
  html[data-theme="dark"] .hero-chat .chat-close:hover{color:#fff}
  html[data-theme="dark"] .hero-chat .msg.bot h4{color:#f4f4f5}
  /* hero 内嵌 AI 助手：聊天区域固定高度，长消息内部滚动，不撑破 hero */
  .hero{max-height:560px;overflow:hidden}
  .index-panel-copy{height:330px;display:flex;flex-direction:column;overflow:hidden}
  .hero-chat{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
  .hero-chat .chat-body{flex:1;min-height:0;overflow-y:auto;padding:12px 0 8px;scrollbar-width:thin}
  @media (max-width:920px){
    .hero{max-height:none;overflow:visible}
    .hero-deals .deal-grid{max-height:320px;overflow-y:auto}
    .index-panel-copy{height:auto;max-height:340px}
    .hero-chat .chat-body{max-height:250px}
  }

/* ===== 离屏列表跳过布局（主站 perf-cv 块原样）===== */
#dealsList > *{content-visibility:auto;contain-intrinsic-size:auto 155px}

/* ============================================================================
   AI免费大全增补（2026-10-21 改版）：示例问句 / 命中条目 / 问答读数
   基座全部来自主站 aitujian.cn 的 index.html 内联样式，此处只补问询台特有件。
   ============================================================================ */
.chat-egs{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-top:9px}
.chat-egs button{max-width:100%;padding:4px 0;text-align:left;background:none;border:none;
  border-bottom:1px solid var(--line-2);color:var(--ink-2);font:inherit;font-size:12px;
  line-height:1.5;cursor:pointer;transition:color .16s,border-color .16s}
.chat-egs button::before{content:"› ";color:var(--seal);font-weight:700}
.chat-egs button:hover{color:var(--ink);border-color:var(--seal)}
.chat-meta{margin-top:7px;font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.chat-hits{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.chat-hit{display:block;padding:7px 9px;border:1px solid var(--line);border-radius:9px;
  background:var(--card-2);text-decoration:none;color:var(--ink);transition:border-color .16s,transform .16s}
.chat-hit:hover{border-color:var(--seal);transform:translateX(2px)}
.chat-hit b{font-size:12px}
.chat-hit span{margin-left:6px;font-size:11px;color:var(--seal);font-weight:700}
.chat-hit small{display:block;margin-top:2px;font-size:10.5px;color:var(--ink-3);line-height:1.5}
html[data-theme="dark"] .chat-hit{background:rgba(255,255,255,.05)}
/* 首页读数列：与主站 hero-stats 同款，数字用等宽对齐 */
.hs-item b{font-variant-numeric:tabular-nums}

/* ===== 移动端问询台抽屉（2026-10-21 增补）=====
   主站这里有个 CSS 优先级坑：.hero-chat{position:static} 写在顶层、与
   .chat-panel 同优先级但更靠后，会把移动端 media 里的
   .chat-panel{position:fixed;inset:0} 整条盖掉 —— 表现为点 fab 只把焦点
   送进输入框、面板不动。用 .chat-panel.hero-chat.open（0-3-0）在抽屉态显式
   盖回来；未 .open 时首屏内嵌问询台一字不变（移动端仍是 hero 内联形态）。 */
@media (max-width:560px){
  /* .hero 带 isolation:isolate（主站为兜住 ::before/::after 的 z-index:-1 而设），
     抽屉的 z-index:100 会被圈在 hero 的层叠上下文里 → topbar(30)/fab(95) 反而盖在
     全屏抽屉之上（关不掉、头部被挡）。开抽屉时把 hero 整体提到最上层即可，
     关掉立刻回 auto，对首屏内嵌问询台零影响。需要 :has()（Chrome 105+/Safari 15.4+）。 */
  .hero:has(.chat-panel.open){z-index:200}
  .chat-panel.hero-chat.open{position:fixed;inset:0;width:100%;height:auto;z-index:100;
    opacity:1;transform:translateX(0);pointer-events:auto;border:0;border-left:0;
    background:rgba(255,255,255,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    transition:transform .28s cubic-bezier(.22,.9,.32,1)}
  html[data-theme="dark"] .chat-panel.hero-chat.open{background:rgba(22,23,28,.98)}
  .chat-panel.hero-chat.open .chat-head{padding:14px 16px;border-bottom:1px solid var(--line)}
  .chat-panel.hero-chat.open .chat-close{display:block}
  .chat-panel.hero-chat.open .chat-body{flex:1;min-height:0;max-height:none;overflow-y:auto;padding:14px 14px 8px}
  .chat-panel.hero-chat.open .chat-foot{padding:8px 14px 14px;border-top:1px solid var(--line-2)}
  .chat-panel.hero-chat.open .msg.bot{width:auto;max-width:88%;background:var(--paper-2)}
  .chat-panel.hero-chat.open .chat-egs{margin-top:9px}
}
