:root{
  --bg:#F7F7F8;--card:#FFF;--ink:#0E0F13;--ink2:#3D414B;--sub:#8B909B;--sub2:#5F646F;
  --line:#EAEBEE;--line2:#F2F3F5;--accent:#16181D;--accent-s:#F1F1F3;
  --hot:#E5484D;--hot-s:#FDEFEF;--ok:#0E8A55;--ok-s:#EAF7F1;--r:16px;--r2:12px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
 font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
 font-size:15px;line-height:1.75;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.wrap{max-width:1280px;margin:0 auto;padding:0 22px}

/* header */
.hd{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.9);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line)}
.hd .wrap{display:flex;align-items:center;gap:24px;height:62px}
.brand{font-size:19px;font-weight:800;letter-spacing:-.03em;flex:0 0 auto;
 display:flex;align-items:center;gap:9px}
/* 象形标记内联在 HTML 里而不是走 <img>：它在首屏、体积不到 1KB，
   多一次请求不值得，而且 currentColor 让它跟着主题色走 */
.bmark{flex:0 0 auto;color:var(--accent);display:block}
/* 主色是墨黑，不是巧合：
   词条里已经有大量平台标记的彩色（抖音红、B站粉、微博红），
   主色越安静，那些标记的识别度越高。原来的靛紫会和它们互相打架。
   品牌记忆交给大象这个形状，不靠颜色 —— 形状比颜色独特得多，
   而且黑色不会过时。 */
@media(max-width:520px){.bmark{width:22px;height:22px}}
.brand i{font-style:normal;color:var(--accent)}
.menu{display:flex;gap:22px;font-size:15px;color:var(--sub)}
.menu a{position:relative;padding:1px 0}
.menu a.on{color:var(--ink);font-weight:600}
.menu a.on::after{content:"";position:absolute;left:0;right:0;bottom:-21px;height:2px;background:var(--ink)}
/* 顶栏顺序：brand → menu → 搜索 → 登录 → 汉堡（见 layouts/app.blade.php 的注释）。
   搜索框的 margin-left:auto 把它和右边的登录、汉堡一起推到最右；登录不能再带 auto，
   两个 auto 会把剩余空间平分、搜索框被钉在正中间 */
.hdsearch{flex:1;max-width:320px;margin-left:auto;display:flex;align-items:center;gap:8px;
 background:var(--bg);border:1px solid transparent;border-radius:10px;padding:9px 13px;font-size:14px;color:var(--sub)}
.hdsearch:focus-within{background:#fff;border-color:var(--line)}
.hdsearch input{border:0;background:none;font:inherit;color:var(--ink);width:100%;outline:none}
.hdbtn{flex:0 0 auto;background:var(--ink);color:#fff;border:0;border-radius:10px;padding:9px 17px;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}

/* bottom tab bar (mobile only) */


/* home band */
.band{background:var(--card);border-bottom:1px solid var(--line);padding:44px 0 34px}
.band h1{font-size:clamp(22px,3.2vw,28px);font-weight:800;letter-spacing:-.03em;margin:0 0 6px}
.band .sub{font-size:15px;color:var(--sub2);margin:0 0 22px}
.bigsearch{display:flex;align-items:center;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:5px 5px 5px 18px;max-width:660px}
.bigsearch input{flex:1;border:0;background:none;font:inherit;font-size:16.5px;padding:13px 0;color:var(--ink);outline:none}
.bigsearch button{border:0;background:var(--ink);color:#fff;border-radius:10px;padding:13px 26px;font:inherit;font-weight:600;cursor:pointer}
.hotline{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin:16px 0 0;font-size:13.5px;color:var(--sub)}
.hotline a{border:1px solid var(--line);border-radius:18px;padding:5px 13px;color:var(--sub2)}

/* layout */
.cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;padding:20px 0 48px;align-items:start}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;margin-bottom:14px}
.ph{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.ph h2{font-size:16px;font-weight:700;margin:0;letter-spacing:-.01em}
.ph a{font-size:13px;color:var(--sub)}
.side .panel{padding:17px 18px}
.sticky{position:sticky;top:116px}

/* cards */
.cards{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line2);border-radius:var(--r2);overflow:hidden}
.wcard{display:block;background:var(--card);padding:15px 16px}
.wtop{display:flex;align-items:baseline;gap:8px;margin-bottom:5px}
.ww{font-size:19px;font-weight:800;letter-spacing:-.02em}
.wp{font-size:12px;color:var(--sub);letter-spacing:.04em}
.wd{font-size:13.5px;color:var(--sub2);margin:0 0 10px;line-height:1.65;
 display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pills{display:flex;gap:5px;flex-wrap:wrap}
.pl{font-size:12px;color:var(--sub2);border:1px solid var(--line);padding:1px 8px;border-radius:6px}
.pl-src{background:var(--bg);border-color:transparent;font-weight:600;color:var(--ink2)}
.pl-hot{color:var(--hot);border-color:transparent;background:var(--hot-s);font-weight:600}
.pl-new{color:var(--accent);border-color:transparent;background:var(--accent-s);font-weight:600}

/* q rows */
.q{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line2)}
.q:last-child{border-bottom:0;padding-bottom:0}
.q:first-child{padding-top:0}
.qi{flex:0 0 21px;height:21px;border-radius:6px;background:var(--bg);color:var(--sub2);
 font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:4px}
.qb{flex:1;min-width:0}
.qt{font-size:15px;font-weight:600;margin:0 0 2px;line-height:1.6}
.qm{font-size:12.5px;color:var(--sub);margin:0}
.qm em{font-style:normal;color:var(--hot)}

.rank{list-style:none;margin:0;padding:0}
.rank li{display:flex;align-items:center;gap:11px;padding:8px 0}
.rank .n{flex:0 0 17px;font-size:13px;font-weight:800;color:var(--sub);text-align:center;font-variant-numeric:tabular-nums}
.rank li:nth-child(-n+3) .n{color:var(--hot)}
.rank .w{font-size:14.5px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank .v{font-size:12px;color:var(--sub);font-variant-numeric:tabular-nums}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-size:13.5px;border:1px solid var(--line);border-radius:9px;padding:7px 13px;color:var(--sub2)}
.chip b{font-weight:600;color:var(--ink)}
.note{font-size:12.5px;color:var(--sub);margin:0;line-height:1.7}

/* ads */
.ad{border:1px dashed #D3D6DC;border-radius:var(--r2);background:repeating-linear-gradient(45deg,#FCFCFD,#FCFCFD 9px,#F6F7F8 9px,#F6F7F8 18px);
 display:flex;flex-direction:column;align-items:center;justify-content:center;color:#A9AEB8;font-size:12px;text-align:center;padding:10px;gap:2px}
.ad b{font-size:12.5px;color:#8B909B;font-weight:600}
.ad-banner{height:104px;margin-bottom:14px}
.ad-side{height:250px;margin-bottom:14px}
.ad-inline{height:88px;margin:0 0 12px}

/* today */
.today{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;margin-bottom:14px}
.today .lb{font-size:12.5px;color:var(--accent);font-weight:700;margin:0 0 8px}
.today p.s{font-size:18px;font-weight:600;line-height:1.95;margin:0 0 7px}
.mk{border:0;font:inherit;color:var(--ink);cursor:pointer;background:var(--accent-s);
 box-shadow:inset 0 -2px 0 var(--accent);padding:1px 3px;border-radius:3px}
.today .src{font-size:12.5px;color:var(--sub);margin:0}
.pop{display:none;margin-top:12px;background:var(--bg);border-radius:var(--r2);padding:13px 15px}
.pop.on{display:block}
.pop h4{margin:0 0 3px;font-size:15px}
.pop p{margin:0 0 7px;font-size:13.5px;color:var(--sub2);line-height:1.65}
.pop a{font-size:13px;color:var(--accent);font-weight:600}

/* entry */
.ehero{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:26px 24px;margin-top:20px;margin-bottom:14px}
.crumb{font-size:12.5px;color:var(--sub);margin:0 0 14px}
.eword{font-size:clamp(34px,6vw,46px);font-weight:800;letter-spacing:-.045em;margin:0;line-height:1.15}
.epin{font-size:13.5px;color:var(--sub);letter-spacing:.08em;margin:7px 0 13px}
.senses{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.senses a{font-size:12.5px;padding:5px 12px;border-radius:8px;background:var(--bg);color:var(--sub2)}
.senses a.on{background:var(--ink);color:#fff;font-weight:600}
.egloss{font-size:17px;line-height:1.9;margin:0 0 16px;max-width:36em;color:var(--ink2)}
.egloss b{font-weight:600;color:var(--ink);box-shadow:inset 0 -9px 0 var(--accent-s)}
.emeta{display:flex;gap:6px;flex-wrap:wrap}
.anchors{display:flex;gap:7px;overflow-x:auto;padding:2px 0 2px;margin-bottom:14px;scrollbar-width:none}
.anchors::-webkit-scrollbar{display:none}
.anchors a{flex:0 0 auto;font-size:13px;padding:6px 13px;border-radius:20px;background:var(--card);border:1px solid var(--line);color:var(--sub2)}
h3.sh{font-size:15.5px;font-weight:700;margin:0 0 12px;letter-spacing:-.01em}
h3.sh2{font-size:15.5px;font-weight:700;margin:26px 0 12px}
/* 主色去彩化之后，层级不能再靠颜色，得靠形状和重量。
   一句话答案是全页最该被看见的一块 ——
   原来靠靛紫底色跳出来，现在改成左侧粗边 + 更实的底色 + 更大的字。 */
.quick{background:var(--accent-s);border-left:4px solid var(--accent);
  border-radius:0 var(--r2) var(--r2) 0;padding:15px 18px;margin:0 0 18px}
.quick dt{font-size:12px;color:var(--accent);font-weight:700;margin-bottom:4px;
  letter-spacing:.04em}
.quick dd{margin:0;font-size:15.5px;line-height:1.8;color:var(--ink)}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line2);border-radius:var(--r2);overflow:hidden}
/* 字段数量不是 3 的倍数时，最后一格铺满本行剩余列，
   否则空出来的格子会露出容器底色，看起来像版面上的一个洞。
   不能写 grid-column:auto/-1 —— 起始 auto 配确定的结束线会把元素
   直接推到最后一列，洞反而跑到左边去了。按「它落在本行第几个」分情况： */
.fgrid .fi:nth-child(3n+1):last-child{grid-column:span 3}
.fgrid .fi:nth-child(3n+2):last-child{grid-column:span 2}
.fi{background:var(--card);padding:12px 14px;margin:0}
.fi dt{font-size:12px;color:var(--sub);margin-bottom:2px}
.fi dd{margin:0;font-size:15px;font-weight:600}
.fi dd small{font-weight:400;color:var(--sub);font-size:12px;display:block;line-height:1.55}
.eg{border-left:2px solid var(--line);padding:1px 0 1px 15px;margin-bottom:15px}
.eg p{margin:0 0 3px;font-size:15.5px}
.eg span{font-size:12.5px;color:var(--sub)}
.safe{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.sf{border-radius:var(--r2);padding:12px 14px;font-size:14.5px;background:var(--bg)}
.sf b{display:block;font-size:12px;color:var(--sub);font-weight:400}
.sf.y{background:var(--ok-s)}.sf.y i{color:var(--ok);font-style:normal;font-weight:600}
.sf.n{background:var(--hot-s)}.sf.n i{color:var(--hot);font-style:normal;font-weight:600}
table.cmp{width:100%;border-collapse:separate;border-spacing:0 5px;font-size:14.5px}
table.cmp th{font-size:12px;color:var(--sub);font-weight:500;text-align:left;padding:0 13px}
table.cmp td{background:var(--bg);padding:11px 13px}
table.cmp td:first-child{border-radius:10px 0 0 10px;font-weight:600;width:72px;color:var(--sub2)}
table.cmp td:last-child{border-radius:0 10px 10px 0}
.byline{background:var(--bg);border-radius:var(--r2);padding:15px 17px;font-size:13.5px;color:var(--sub2);line-height:1.75}
.byline b{color:var(--ink)}
.byline a{color:var(--accent);font-weight:600}

/* qa */
.qhero{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px;margin-top:20px}
.qtitle{font-size:clamp(21px,4vw,28px);font-weight:800;letter-spacing:-.03em;line-height:1.5;margin:0 0 13px;max-width:22em}
.qmeta{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--sub);margin:0 0 14px}
.sorts{display:flex;gap:6px;margin-bottom:12px}
.sorts a{font-size:13px;padding:6px 13px;border-radius:9px;color:var(--sub2)}
.sorts a.on{background:var(--ink);color:#fff;font-weight:600}
.ans{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;margin-bottom:12px}
.ans.best{border-color:#D8D4FF}
.who{display:flex;align-items:center;gap:9px;margin-bottom:11px;flex-wrap:wrap}
.av{width:28px;height:28px;border-radius:9px;background:var(--ink);color:#fff;font-size:11.5px;font-weight:700;
 display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.av.g{background:#DDE0E5;color:#6F7480}
.who b{font-size:14px}
.who span{font-size:12.5px;color:var(--sub)}
/* 编辑部回答：角度做标题、署名收到末尾（笔名 · 编辑部） */
.ans .angle{font-size:16.5px;font-weight:700;margin:0 0 10px;letter-spacing:.01em}
.byline{display:flex;align-items:center;gap:7px;margin-top:4px;font-size:12.5px;color:var(--sub)}
.byline .av{width:20px;height:20px;border-radius:6px;font-size:10px}
.byline .d{margin-left:auto}
.pen-note{font-size:12.5px;color:var(--sub);margin:4px 0 14px}
.vf{font-size:12px;background:var(--accent-s);color:var(--accent);padding:2px 8px;border-radius:5px;font-weight:600}
.vf.ok{background:var(--ok-s);color:var(--ok)}
.ans p{margin:0 0 12px;font-size:15.5px;line-height:1.9;max-width:38em}
.cite{background:var(--bg);border-radius:var(--r2);padding:12px 15px;font-size:13.5px;color:var(--sub2);max-width:38em;margin:0 0 12px;line-height:1.75}
.cite b{color:var(--ink)}
.act{display:flex;gap:8px;flex-wrap:wrap}
.act button{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 15px;font:inherit;font-size:13px;color:var(--sub2);cursor:pointer;min-height:38px}
.act button:first-child{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:600}
.wbox{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;margin-bottom:12px}
.wbox textarea{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:var(--r2);padding:13px;font:inherit;min-height:100px;resize:vertical;color:var(--ink);outline:none}
.wbox textarea:focus{background:#fff}
.wfoot{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:12px;flex-wrap:wrap}
.wfoot p{margin:0;font-size:12.5px;color:var(--sub);max-width:28em}
.btn{background:var(--ink);color:#fff;border:0;border-radius:10px;padding:12px 24px;font:inherit;font-weight:600;cursor:pointer;min-height:44px}

/* tag page */
.taghd{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px 24px 18px;margin-top:20px}
.taghd h1{font-size:26px;font-weight:800;letter-spacing:-.03em;margin:0 0 7px}
.taghd p{margin:0 0 16px;font-size:14.5px;color:var(--sub2);max-width:40em}
.filters{display:flex;gap:7px;flex-wrap:wrap;border-top:1px solid var(--line2);padding-top:15px}
.filters a{font-size:13.5px;padding:7px 14px;border-radius:9px;background:var(--bg);color:var(--sub2)}
.filters a.on{background:var(--ink);color:#fff;font-weight:600}
.listrow{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line2)}
.listrow:last-child{border-bottom:0}
.lr-b{flex:1;min-width:0}
.lr-t{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.lr-w{font-size:17.5px;font-weight:700;letter-spacing:-.02em}
.lr-d{font-size:14px;color:var(--sub2);margin:0 0 8px;line-height:1.65}
.lr-n{flex:0 0 auto;font-size:12px;color:var(--sub);text-align:right;padding-top:4px;line-height:1.5}
.lr-n b{display:block;font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.pager{display:flex;gap:6px;justify-content:center;padding:20px 0 2px;flex-wrap:wrap}
.pager a{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:9px;border:1px solid var(--line);font-size:14px;color:var(--sub2)}
.pager a.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}

.foot{border-top:1px solid var(--line);background:var(--card);padding:26px 0 44px;font-size:13px;color:var(--sub)}
.foot .wrap{display:flex;gap:18px;flex-wrap:wrap;align-items:center}

/* ====================== 移动端 ====================== */
@media (max-width:900px){
  .cols{grid-template-columns:1fr;gap:0;padding:14px 0 30px}
  .side{order:2}
  .sticky{position:static}
}
@media (max-width:720px){
  .wrap{padding:0 13px}
  .hd .wrap{height:54px;gap:12px}
  .hdbtn{display:none}   /* .menu 改由汉堡控制，见文件末尾 */
  /* 输入框必须 ≥16px —— iOS 对小于 16px 的输入框会在聚焦时放大整页。
     账号页的输入框 v4.13 就定了这条规则，顶栏这个当时漏了：首页以外每页都中 */
  .hdsearch{max-width:none;margin-left:auto;padding:8px 13px}
  .hdsearch input{font-size:16px}
  .brand{font-size:17px}
  .foot{padding:22px 0 26px}
  .foot .wrap{gap:14px;font-size:12.5px}

  .band{padding:24px 0 22px}
  .band h1{font-size:21px;line-height:1.45}
  .band .sub{font-size:13.5px;margin-bottom:16px}
  .bigsearch{padding:4px 4px 4px 14px;border-radius:12px}
  .bigsearch input{font-size:16px;padding:12px 0}
  .bigsearch button{padding:12px 18px;font-size:14.5px}
  .hotline{margin-top:13px;gap:6px;font-size:12.5px}
  .hotline a{padding:6px 12px;font-size:13px}

  .panel{border-radius:0;border-left:0;border-right:0;margin-bottom:10px;padding:17px 13px}
  .today{border-radius:0;border-left:0;border-right:0;padding:17px 13px;margin-bottom:10px}
  .ph h2{font-size:15.5px}
  .cards{grid-template-columns:1fr;border-radius:0;margin:0 -13px;width:auto}
  .wcard{padding:14px 13px}
  .ww{font-size:18.5px}
  .wd{-webkit-line-clamp:2;font-size:13.5px}
  .q{padding:15px 0}
  .qt{font-size:15.5px}
  .chip{padding:9px 14px;font-size:14px}
  .ad{margin-left:0;margin-right:0}
  .ad-banner{height:88px}
  .ad-side{height:200px}

  .today p.s{font-size:17px;line-height:2}

  .ehero{border-radius:0;border-left:0;border-right:0;padding:20px 13px;margin-top:0;margin-bottom:10px}
  .eword{font-size:34px}
  .egloss{font-size:16px;line-height:1.9}
  .anchors{margin:0 -13px 12px;padding:0 13px 2px}
  .fgrid{grid-template-columns:1fr 1fr;margin:0 -13px;border-radius:0;width:auto}
  .fgrid .fi:nth-child(3n+1):last-child,
  .fgrid .fi:nth-child(3n+2):last-child{grid-column:auto}
  .fgrid .fi:nth-child(2n+1):last-child{grid-column:span 2}
  .safe{grid-template-columns:1fr;gap:8px}
  .eg{margin-bottom:14px}
  .qhero{border-radius:0;border-left:0;border-right:0;padding:20px 13px;margin-top:0}
  .qtitle{font-size:21px;line-height:1.55}
  .ans{border-radius:0;border-left:0;border-right:0;padding:17px 13px;margin-bottom:10px}
  .ans p{font-size:15.5px;line-height:1.9}
  .wbox{border-radius:0;border-left:0;border-right:0;padding:17px 13px}
  .wfoot{flex-direction:column;align-items:stretch}
  .wfoot .btn{width:100%}
  .taghd{border-radius:0;border-left:0;border-right:0;padding:20px 13px 16px;margin-top:0}
  .taghd h1{font-size:22px}
  .listrow{gap:10px;padding:15px 0}
  .lr-n{font-size:12px}
  .lr-n b{font-size:13.5px}
  .cite{padding:11px 13px}
}

/* ---------- 前台补充 ---------- */
.brand{color:inherit;text-decoration:none}
.btext{font-size:16px;line-height:1.9;margin:0 0 14px;max-width:36em;color:var(--ink2)}
.anchors{display:flex;gap:7px;overflow-x:auto;padding:0 0 14px;scrollbar-width:none}
.anchors::-webkit-scrollbar{display:none}
.anchors a{flex:0 0 auto;font-size:13px;padding:7px 14px;border-radius:20px;background:var(--card);border:1px solid var(--line);color:var(--sub2)}
.anchors a:hover{border-color:var(--ink);color:var(--ink)}
h2.sh{font-size:15.5px;font-weight:700;margin:0 0 12px;letter-spacing:-.01em}
h2.sh2{margin-top:26px}
.flash{background:var(--ok-s);color:var(--ok);border-radius:var(--r2);padding:13px 16px;margin-bottom:12px;font-size:14.5px}
.err{color:var(--hot);font-size:13px;margin:7px 0 0}
.wbox label{display:block;font-size:14.5px;font-weight:600;margin-bottom:9px}
.actbtn{background:var(--bg);border-radius:10px;padding:6px 14px;font-size:13px;color:var(--sub2);display:inline-block}
.adbox{position:relative;margin:0 0 14px;text-align:center}
.adbox img{max-width:100%;height:auto;border-radius:var(--r2);display:block;margin:0 auto}
.adlabel{position:absolute;top:6px;left:6px;font-size:11px;color:var(--sub);background:rgba(255,255,255,.9);border-radius:4px;padding:1px 5px;z-index:2}
.pager nav{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}
.pager svg{width:16px;height:16px}
.pager span[aria-current] span,.pager a{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;
 padding:6px 12px;border-radius:9px;border:1px solid var(--line);font-size:14px;color:var(--sub2);text-decoration:none}
.pager span[aria-current] span{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}
@media (max-width:720px){
    backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 0 max(6px,env(safe-area-inset-bottom))}
          .anchors{margin:0 -13px;padding:0 13px 12px}
  .btext{font-size:15.5px}
}

/* ---------- 搜索联想 ---------- */
[x-cloak]{display:none!important}
.searchbox{position:relative;max-width:660px}
.suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r2);
  box-shadow:0 8px 28px rgba(14,15,19,.10);overflow:hidden}
.suggest a{display:block;padding:11px 16px;border-bottom:1px solid var(--line2)}
.suggest a:last-child{border-bottom:0}
.suggest a:hover{background:var(--bg)}
.suggest b{font-size:15.5px;font-weight:600;margin-right:8px}
.suggest span{font-size:13px;color:var(--sub)}

/* ---------- 词条配图 ---------- */
.efig{margin:0 0 16px}
.efig img{width:100%;height:auto;border-radius:var(--r2);display:block;background:var(--bg)}
.efig figcaption{font-size:12.5px;color:var(--sub);margin-top:7px}

@media (max-width:720px){
  .suggest a{padding:13px 14px}
  .efig{margin:0 -13px 14px}
  .efig img{border-radius:0}
  .efig figcaption{padding:0 13px}
}

/* ---------- 分页（Bootstrap 结构） ---------- */
.pager .pagination{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.pager .page-item .page-link{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;
  padding:6px 12px;border-radius:9px;border:1px solid var(--line);font-size:14px;color:var(--sub2);
  background:var(--card);text-decoration:none}
.pager .page-item.active .page-link{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}
.pager .page-item.disabled .page-link{opacity:.45}
.pager nav > div:first-child{display:none}  /* 隐藏 Bootstrap 的移动端简版，用统一样式 */

/* ---------- 平台标识（品牌色 + 代表字） ---------- */
.pmark{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink2);
  background:var(--bg);border-radius:6px;padding:2px 8px 2px 3px;line-height:1.5}
.pmark i{display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;border-radius:4px;font-style:normal;font-size:10.5px;font-weight:700;
  background:var(--pm-bg);color:var(--pm-fg);flex:0 0 auto}
.wcard .pmark{background:#fff}
.chip-pm{display:inline-flex;align-items:center;gap:7px;padding:5px 11px 5px 7px}
.chip-pm .pmark{background:transparent;padding:0}
.chip-n{font-size:12px;color:var(--sub)}

/* ---------- 擦边提示 ---------- */
.edgy-note{font-size:13px;color:var(--sub2);background:var(--hot-s);border-radius:var(--r2);
  padding:11px 14px;margin:0 0 14px;line-height:1.7}

/* ---------- 对比表的「详见」 ---------- */
.cmp-more{font-size:13.5px;color:var(--sub);margin:8px 0 0}
.cmp-more a{color:var(--accent);font-weight:600}

/* ---------- 问答页侧栏的词条摘要卡 ---------- */
.termcard{display:block;background:var(--bg);border-radius:var(--r2);padding:14px 15px}
.termcard:hover{background:var(--accent-s)}
.tc-w{display:block;font-size:19px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px}
.tc-g{display:block;font-size:13.5px;color:var(--sub2);line-height:1.6;margin-bottom:8px}
.tc-more{display:block;font-size:12.5px;color:var(--accent);font-weight:600}

/* ---------- 广告位 ---------- */
.adbox{position:relative;margin:0 0 16px}
/* 广告标记不是装饰：《广告法》要求可识别、显著标明，
   所以它是唯一一个不能为了版面而缩小的小标签 */
.ad-tag{position:absolute;top:6px;left:6px;z-index:2;font-size:12px;color:var(--sub2);
  background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:4px;padding:0 5px;line-height:16px}
.ad-tag-inline{position:static;display:inline-block;margin-left:6px;background:var(--bg)}
.ad-img img{max-width:100%;height:auto;border-radius:var(--r2);display:block;margin:0 auto}
.ad-text{display:block;position:relative;padding:13px 15px 13px 52px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r2)}
.ad-text b{font-size:15px;font-weight:600;display:block}
.ad-text .ad-sub{font-size:13px;color:var(--sub2);display:block;margin-top:2px}
.ad-text:hover{border-color:var(--ink)}
.ad-icon{display:flex;align-items:center;gap:12px;position:relative;padding:12px 14px 12px 52px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r2)}
.ad-icon img{width:40px;height:40px;border-radius:10px;flex:0 0 auto;object-fit:cover}
.ad-icon-b{min-width:0}
.ad-icon-b b{display:block;font-size:14.5px;font-weight:600}
.ad-icon-b span{display:block;font-size:12.5px;color:var(--sub);line-height:1.5}
.ad-native{display:flex;gap:13px;padding:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2)}
.ad-native img{width:110px;height:74px;object-fit:cover;border-radius:10px;flex:0 0 auto}
.ad-native-b{min-width:0}
.ad-native-b b{display:block;font-size:15.5px;font-weight:600;line-height:1.5}
.ad-native-b span{font-size:13px;color:var(--sub2);line-height:1.6}
.ad-html{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:14px}
/* 浮动位只在「正文两侧真有空档」时出现，并且完全待在空档里。
   1280 的容器 + 260 宽的浮动位，在常见宽度下必然压住侧栏 ——
   实测它盖住了「查这个词的人也在查」的四个内链 chip。
   要么给它一条自己的车道，要么不出现，没有第三种选择。 */
.ad-float{position:fixed;bottom:16px;z-index:60;width:260px;
 right:max(16px,calc((100vw - 1280px) / 2 - 268px))}
@media(max-width:1815px){.ad-float{display:none}}
.ad-float .adclose{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;
  background:var(--ink);color:#fff;border:0;font-size:13px;line-height:1;cursor:pointer;z-index:3}
@media (max-width:720px){
  /* .ad-float 在 1815px 以下已经整个隐藏（见上面），这里不再给它定位 —— 原来那条永远到不了 */
  .ad-native img{width:88px;height:62px}
}

/* ---------- 全词表 ---------- */
.letterbar{display:flex;gap:5px;flex-wrap:wrap;border-top:1px solid var(--line2);padding-top:14px}
.letterbar a{min-width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;background:var(--bg);font-size:13.5px;font-weight:600;color:var(--sub2)}
.letterbar a:hover,.letterbar a.on{background:var(--ink);color:#fff}
.lgroup{display:flex;gap:20px;padding:18px 0;border-bottom:1px solid var(--line2)}
.lgroup:last-child{border-bottom:0}
.lbig{flex:0 0 64px;font-size:52px;font-weight:800;line-height:1;color:var(--line);letter-spacing:-.04em}
.lwords{flex:1;display:flex;flex-wrap:wrap;gap:6px 16px;align-content:flex-start;padding-top:8px}
.lwords a{font-size:15.5px;color:var(--ink2);line-height:1.9}
.lwords a:hover{color:var(--accent)}
.lettergrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}
.lettergrid a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 0;
  background:var(--bg);border-radius:var(--r2)}
.lettergrid b{font-size:22px;font-weight:800}
.lettergrid span{font-size:12px;color:var(--sub)}

/* ---------- 时间轴 ---------- */
.tlyear{display:flex;gap:20px;padding:16px 0;border-bottom:1px solid var(--line2)}
.tlyear:last-child{border-bottom:0}
.tly-n{flex:0 0 76px;font-size:26px;font-weight:800;letter-spacing:-.03em;color:var(--ink);padding-top:2px}
.tly-words{flex:1;display:flex;flex-wrap:wrap;gap:7px 14px;align-content:flex-start;padding-top:8px}
.tly-words a{font-size:15.5px;color:var(--ink2);line-height:1.9}
.tly-words a.faded{color:var(--sub)}
.tly-words a:hover{color:var(--accent)}

/* ---------- 固定页 ---------- */
.pagetitle{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:0 0 18px}
.richtext{font-size:16px;line-height:1.9;color:var(--ink2);max-width:38em}
.richtext h2{font-size:17px;font-weight:700;color:var(--ink);margin:26px 0 10px}
.richtext h3{font-size:15.5px;font-weight:700;color:var(--ink);margin:20px 0 8px}
.richtext p{margin:0 0 14px}
.richtext ul,.richtext ol{margin:0 0 14px;padding-left:22px}
.richtext li{margin-bottom:6px}
.richtext a{color:var(--accent);font-weight:500;border-bottom:1px solid var(--accent-s)}
.richtext blockquote{margin:0 0 14px;padding:2px 0 2px 15px;border-left:2px solid var(--line);color:var(--sub2)}
.richtext hr{border:0;border-top:1px solid var(--line);margin:22px 0}
.richtext img{max-width:100%;height:auto;border-radius:var(--r2)}

/* ---------- 左侧常驻导航 ---------- */
.sidenav{position:sticky;top:78px}
.sidenav .sn-g{margin-bottom:18px}
.sidenav h3{font-size:12px;color:var(--sub);font-weight:600;margin:0 0 8px;letter-spacing:.02em}
.sidenav a{display:block;font-size:14px;color:var(--ink2);padding:5px 0;line-height:1.5}
.sidenav a:hover{color:var(--accent)}
.sidenav a.on{color:var(--ink);font-weight:600}
.sidenav .sn-n{float:right;font-size:12px;color:var(--sub);font-variant-numeric:tabular-nums}
.cols3{display:grid;grid-template-columns:184px minmax(0,1fr) 316px;gap:26px;padding:22px 0 52px;align-items:start}
@media (max-width:1160px){.cols3{grid-template-columns:minmax(0,1fr) 300px;gap:20px}.sidenav{display:none}}
@media (max-width:900px){.cols3{grid-template-columns:1fr;gap:0}}

@media (max-width:720px){
  .lgroup{gap:12px;padding:14px 0}
  .lbig{flex:0 0 40px;font-size:34px}
  .lwords{gap:5px 12px}
  .tly-n{flex:0 0 56px;font-size:21px}
  .pagetitle{font-size:23px}
  .richtext{font-size:15.5px}
}

/* ---------- 用法提醒 ---------- */
/* 用法提醒和一句话答案是这个站最难被 AI 摘要抄走的两块（都是判断不是事实），
   所以它们必须在视觉上和普通段落区分开。
   用虚线左边框和它上面那块拉开差别 —— 同为强调，但不是同一件事。 */
.usenote{background:var(--bg);border-left:3px dashed var(--line);border-radius:0 var(--r2) var(--r2) 0;
  padding:12px 15px;margin:16px 0 0;font-size:14.5px;color:var(--ink2);line-height:1.75}
.usenote b{display:block;font-size:12px;color:var(--accent);font-weight:700;margin-bottom:3px}
.taghd-body{margin:0 0 16px;font-size:15px}

/* ---------- 移动端触摸目标 ---------- */
/*
 * 面包屑和页头导航的链接实测只有 26×15，远小于 44×44 的推荐值，
 * 手指点上去容易误触到旁边那个。
 *
 * 用伪元素扩大可点区域而不是加 padding —— padding 会把版面撑开，
 * 而面包屑那一行本来就紧凑。伪元素只影响命中判定，不占布局空间。
 *
 * 只在触摸设备上生效：鼠标不需要这个，而且扩大的热区在桌面端
 * 会让相邻链接的 hover 互相打架。
 */
@media (hover: none) and (pointer: coarse) {
    position: relative;
  }
    content: "";
    position: absolute;
    inset: -12px -8px;
  }
  /* 页脚链接同理。这里给的行高比伪元素更实在 ——
     页脚链接是横排的，伪元素往上下扩会被相邻行的容器裁掉，
     直接把行高撑到 44px 才真正扩大了命中区域 */
  .foot a {
    display: inline-block;
    min-height: 44px;
    line-height: 44px;
  }
}

/* ---------- 热榜 ---------- */
.ph{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.swap{background:none;border:0;padding:0;font-size:12.5px;color:var(--sub);cursor:pointer;
  font-family:inherit;display:inline-flex;align-items:center;gap:3px}
.swap:hover{color:var(--accent)}
.rank{list-style:none;margin:0;padding:0}
.rank li{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line2)}
.rank li:last-child{border-bottom:0}
.rank .n{flex:0 0 18px;font-size:13px;font-weight:700;color:var(--sub);
  font-variant-numeric:tabular-nums;text-align:center}
.rank .n-top{color:var(--hot)}
.rank .w{flex:1;font-size:14.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank .w:hover{color:var(--accent)}
.hot-tag{flex:0 0 auto;font-style:normal;font-size:10px;font-weight:700;line-height:15px;
  padding:0 4px;border-radius:3px}
.t-hot{background:var(--hot-s);color:var(--hot)}
.t-new{background:var(--accent-s);color:var(--accent)}
.t-old{background:var(--bg);color:var(--sub)}
.hot-n{flex:0 0 auto;font-size:12px;color:var(--sub);font-variant-numeric:tabular-nums}

/* ---------- 首页混合流 ---------- */
/* 词条条目和问答条目要有明显不同的节奏，否则读起来是一堵墙 */
.feed{display:flex;flex-direction:column}

.feed-t{padding:20px 0;border-bottom:1px solid var(--line2)}
.feed-t:first-child{padding-top:4px}
.feed-t:last-child{border-bottom:0;padding-bottom:4px}
.ft-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.ft-w{font-size:21px;font-weight:800;letter-spacing:-.025em;line-height:1.3}
.ft-w:hover{color:var(--accent)}
.ft-p{font-size:12px;color:var(--sub);letter-spacing:.02em}
.ft-d{font-size:15px;color:var(--ink2);line-height:1.75;margin:0 0 11px;max-width:40em}
.feed-t .pills{gap:6px}

.feed-q{display:flex;gap:12px;padding:13px 0 13px 2px;border-bottom:1px solid var(--line2)}
.feed-q:last-child{border-bottom:0}
.fq-i{flex:0 0 24px;height:24px;border-radius:7px;background:var(--accent-s);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;margin-top:2px}
.fq-b{min-width:0;flex:1}
.fq-t{font-size:15px;font-weight:600;line-height:1.6;margin:0 0 2px}
.fq-t a:hover{color:var(--accent)}
.fq-m{font-size:12.5px;color:var(--sub);margin:0;line-height:1.6}
.fq-m em{font-style:normal;color:var(--ok)}


/* ---------- 等人回答 ---------- */
.wanted{background:var(--accent-s);border-radius:var(--r);padding:16px 18px;margin-bottom:16px}
.wanted h2{font-size:14px;font-weight:700;color:var(--accent);margin:0 0 4px}
.wanted p.sub{font-size:12.5px;color:var(--sub2);margin:0 0 10px}
.wanted a{display:block;font-size:14.5px;line-height:1.6;padding:6px 0;border-bottom:1px solid rgba(75,63,228,.10)}
.wanted a:last-child{border-bottom:0}
.wanted a:hover{color:var(--accent)}

/* ---------- 分类卡片 ---------- */
/* 主分类是站的骨架，做成带描述的大卡片；属性维度用紧凑 chip，主次要分开 */
/* ---------- 分类目录：一行一条的密排列表 ----------
   取代原来的卡片网格（.catgrid，已删）。

   为什么不用卡片：这个站的气质是词典 / 索引，不是产品落地页。
   词典的分类目录本来就是一行一条贴着排；卡片的留白是产品页的语言，
   和首页那种克制的排版对不上。

   实际收益：19 个分类从占满一整屏变成一屏能看完，而描述还留着 ——
   「梗与句式」和「流行语」的区别正是靠那句描述才分得出来。
   分类拆了子类之后（parent_id 已备好），子类做成行内小字跟在一级后面，
   长度还会再降一截。 */
.catlist{border:1px solid var(--line);border-radius:var(--r2);overflow:hidden;background:var(--card)}
.catlist>*{display:flex;align-items:baseline;gap:10px;padding:11px 14px;
  border-top:1px solid var(--line2);color:inherit}
.catlist>*:first-child{border-top:0}
.catlist a:hover{background:var(--bg)}
.catlist b{font-size:15px;font-weight:650;white-space:nowrap}
.catlist .n{font-size:12px;color:var(--sub);white-space:nowrap;font-variant-numeric:tabular-nums}
.catlist em{font-style:normal;font-size:13px;color:var(--sub2);flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){
  /* 窄屏一行放不下三段，描述折到第二行并截断 —— 仍然比卡片短一大截 */
  .catlist>*{flex-wrap:wrap;padding:10px 13px}
  .catlist em{flex:1 0 100%;margin-top:1px}
}



/* ---------- 问答页补充 ---------- */
.qtype{font-size:12px;color:var(--accent);background:var(--accent-s);border-radius:5px;padding:2px 8px;margin-right:4px}
.ansort{margin:0 0 14px}
.relq{list-style:none;margin:0;padding:0}
.relq li{display:flex;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px solid var(--line2)}
.relq li:last-child{border-bottom:0}
.relq a{flex:1;font-size:14px;line-height:1.6;color:var(--ink2)}
.relq a:hover{color:var(--accent)}
.relq span{flex:0 0 auto;font-size:12px;color:var(--sub);font-variant-numeric:tabular-nums}

/* ---------- 异步筛选的过渡 ---------- */
.swapping{opacity:.45;transition:opacity .12s;pointer-events:none}
.filters a{position:relative}
.filters a.on::after{content:'';position:absolute;left:12px;right:12px;bottom:-1px;height:2px;
  background:var(--ink);border-radius:2px}

/* ---------- 分区标题层级 ---------- */
.panel + .panel{margin-top:16px}
.side .panel{padding:16px 17px}
.side .ph h2{font-size:13px;letter-spacing:.01em}

/* ---------- 广告位设备限定 ---------- */
/* 桌面侧栏位在移动端会掉到正文下方，基本没人看；移动端有自己的正文内位置 */
.dev-mobile{display:none}
@media (max-width:900px){
  .dev-desktop{display:none}
  .dev-mobile{display:block}
  /* 浮动位在 1815px 以下已隐藏（上面那条 media），移动端自然不出 */
}

/* ---------- 未达标的聚合项 ---------- */
/* 全部显示但不给链接：全藏起来导航看着残缺，全给链接又会点进 404 */
.chip-off{opacity:.42;cursor:default;background:var(--bg)}
.chip-off:hover{border-color:var(--line);background:var(--bg)}

/* ---------- 焦点环 ---------- */
/* 局部替换之后残留的焦点样式会留一个蓝框，只在键盘操作时显示 */
a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none}

/* ---------- 热榜大列表 ---------- */
.bigrank{list-style:none;margin:0;padding:0}
.bigrank li{display:flex;align-items:flex-start;gap:13px;padding:14px 0;border-bottom:1px solid var(--line2)}
.bigrank li:last-child{border-bottom:0}
.br-n{flex:0 0 26px;font-size:15px;font-weight:800;color:var(--sub);text-align:center;
  font-variant-numeric:tabular-nums;padding-top:2px}
.br-top{color:var(--hot)}
.br-b{flex:1;min-width:0}
.br-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.br-w{font-size:17px;font-weight:700;letter-spacing:-.015em}
.br-w:hover{color:var(--accent)}
.br-d{font-size:14px;color:var(--sub2);line-height:1.65;margin:0}
.br-c{flex:0 0 auto;font-size:12.5px;color:var(--sub);font-variant-numeric:tabular-nums;padding-top:4px}

/* ---------- 出处总览 ---------- */
.pfgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:11px}
.pfgrid a,.pfgrid .off{display:flex;flex-direction:column;gap:6px;padding:15px 16px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r2)}
.pfgrid a:hover{border-color:var(--ink)}
.pfgrid .off{opacity:.45;cursor:default}
.pfgrid b{font-size:20px;font-weight:800;letter-spacing:-.02em}
.pfgrid span{font-size:12px;color:var(--sub)}

/* ---------- 专题 ---------- */
.tpitem{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--line2)}
.tpitem:last-child{border-bottom:0}
.tp-img{flex:0 0 160px}
.tp-img img{width:100%;height:100px;object-fit:cover;border-radius:var(--r2);display:block}
.tp-b{min-width:0;flex:1}
.tp-b h2{font-size:19px;font-weight:800;letter-spacing:-.02em;margin:0 0 6px;line-height:1.4}
.tp-b h2 a:hover{color:var(--accent)}
.tp-b p{font-size:14.5px;color:var(--sub2);line-height:1.7;margin:0 0 7px}
.tp-b span{font-size:12.5px;color:var(--sub)}
@media (max-width:720px){
  .tpitem{gap:12px}
  .tp-img{flex:0 0 104px}
  .tp-img img{height:70px}
  .tp-b h2{font-size:16.5px}
  .br-w{font-size:16px}
}

/* ---------- 清单页组件 ---------- */
.lmeta{font-size:12.5px;color:var(--sub);margin:8px 0 0}
.lad{font-style:normal;color:var(--accent)}

/* 卡片组：app / 网站推荐 */
.lcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;margin:16px 0 22px}
.lcard{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:7px;
  padding:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2)}
.lcard:hover{border-color:var(--ink)}
.lc-i{width:48px;height:48px;border-radius:11px;object-fit:cover;background:var(--bg)}
.lc-t{font-size:15.5px;font-weight:700;letter-spacing:-.01em}
.lc-d{font-size:13px;color:var(--sub2);line-height:1.65;flex:1}
.lc-b{margin-top:2px;font-size:12.5px;font-weight:600;color:#fff;background:var(--ink);
  border-radius:7px;padding:5px 13px}
.lcard:hover .lc-b{background:var(--accent)}
.lc-ad{position:absolute;top:8px;right:8px;font-size:11px;color:var(--sub);
  background:var(--bg);border-radius:4px;padding:1px 5px}

/* 对比表：窄屏堆叠 */
.lcmp{margin:16px 0 22px;overflow-x:auto}
.lcmp table{width:100%;border-collapse:collapse;font-size:14px}
.lcmp th,.lcmp td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line2)}
.lcmp th{font-size:12.5px;color:var(--sub);font-weight:600;background:var(--bg)}
.lcmp tbody tr:last-child td{border-bottom:0}
.lcmp td:first-child{font-weight:600}

/* 词条引用 */
.lterms{margin:16px 0 22px}
.lt-row{padding:13px 0;border-bottom:1px solid var(--line2)}
.lt-row:last-child{border-bottom:0}
.lt-h{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:4px}
.lt-w{font-size:17px;font-weight:700;letter-spacing:-.015em}
.lt-w:hover{color:var(--accent)}
.lt-d{font-size:14.5px;color:var(--sub2);line-height:1.75;margin:0}

/* 提示框 */
.lnotice{border-radius:var(--r2);padding:13px 16px;margin:16px 0 22px;font-size:14.5px;line-height:1.75}
.lnotice b{display:block;font-size:13px;font-weight:700;margin-bottom:3px}
.lnotice p{margin:0;color:var(--ink2)}
.n-info{background:var(--bg);border-left:3px solid var(--sub)}
.n-warn{background:var(--hot-s);border-left:3px solid var(--hot)}
.n-warn b{color:var(--hot)}
.n-tip{background:var(--accent-s);border-left:3px solid var(--accent)}
.n-tip b{color:var(--accent)}

/* 图文 */
.lfig{margin:16px 0 22px}
.lfig img{width:100%;height:auto;border-radius:var(--r2);display:block;background:var(--bg)}
.lfig figcaption{font-size:12.5px;color:var(--sub);margin-top:7px}

@media (max-width:720px){
  .lcards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
  .lcard{padding:13px}
  /* 表格在手机上没法看，堆叠成卡片 */
  .lcmp table,.lcmp thead,.lcmp tbody,.lcmp th,.lcmp td,.lcmp tr{display:block}
  .lcmp thead{display:none}
  .lcmp tr{border:1px solid var(--line);border-radius:var(--r2);margin-bottom:10px;padding:4px 0}
  .lcmp td{border:0;padding:7px 13px;display:flex;justify-content:space-between;gap:12px}
  .lcmp td::before{content:attr(data-label);color:var(--sub);font-size:12.5px;flex:0 0 auto}
  .lcmp td:first-child{background:var(--bg);font-size:15px}
  .lcmp td:first-child::before{display:none}
}

/* ---------- 404 ---------- */
.nf{padding:40px 34px}
.nf h1{font-size:26px;font-weight:800;letter-spacing:-.03em;margin:0 0 8px}
.nf-d{font-size:15.5px;color:var(--sub2);line-height:1.75;margin:0 0 22px;max-width:34em}
.nf-s{max-width:520px}
@media (max-width:720px){.nf{padding:26px 18px}.nf h1{font-size:22px}}
.lfmt{font-style:normal;color:var(--accent)}


/* ---------- 广告位预留空间（CLS） ----------
   宽高来自广告位定义（size_desktop / size_mobile），
   由 Ads::pick 带到渲染层。图片加载前后版面不再跳动。 */
.adbox[style*="--ar-d"] .ad-img,
.adbox[style*="--ar-d"] .ad-img picture{display:block;width:100%}
.adbox[style*="--ar-d"] .ad-img img{width:100%;height:auto;aspect-ratio:var(--ar-d)}
@media(max-width:860px){
  .adbox[style*="--ar-m"] .ad-img img{aspect-ratio:var(--ar-m)}
}

/* ---------- 移动端底部标签栏不压内容 ----------
   标签栏是 sticky，滚动过程中会浮在内容之上。
   给正文留出等高的余量，并让锚点跳转也避开它。 */
@media(max-width:860px){
  main,.cols{padding-bottom:64px}
  html{scroll-padding-bottom:76px}
}

/* ---------- 404 ---------- */
.nf-sec{margin-top:26px}
.nf .bigsearch{margin-top:18px}

/* 首页词条流双列。窄屏自动回退单列 —— 两列在手机上会把一句话释义挤成竖条 */
/*
 * 首页「最近收录」的两栏。
 *
 * ── 原来的问题 ──
 *
 * `border-left` 直接贴在右列上，两列之间**零间距** ——
 * 左列文字的右边界和右列文字的左边界只隔一条 1px 的线。
 * 而中文**没有词间空格**，眼睛会把两边连起来读：
 * 实机上「…比喻天赋」和「福利姬指在…」看成了一句话。
 *
 * ── 改法：留白代替竖线 ──
 *
 * 竖线在**不等高的格子**里本来就别扭（每条释义一到三行，
 * 线会被最高那条撑出空白）。横向留 40px、去掉竖线，
 * 横分隔线（.feed-t 自带的 border-bottom）足够把条目分开。
 *
 * ── 用 auto-fill 而不是写死 1fr 1fr ──
 *
 * 写死两栏就得配一个断点，而那个断点的数字是猜的：
 * 它假设主区宽度和窗口宽度的关系不变、边距不变、字号不变。
 * auto-fill 让浏览器自己算 —— 每栏至少 300px，放不下自动一栏，
 * **不受侧栏在不在的影响**（它看的是自己的可用宽度）。
 */
.feed-2{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  column-gap:40px}
@media(max-width:860px){
  /* 列数交给 auto-fill，断点里不用再写 */
  .feed-2{column-gap:0}
}

/* 事实行：读音／缩写／感情色彩／英文。有几项显示几项，一项都没有时整行不出。
   ⚠ 不要叫 .emeta —— 那个 class 已经被平台标记那一行占了 */
.efacts{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:.75rem 0 0;padding:.6rem .85rem;
.een{margin:14px 0 4px;padding:12px 16px;background:var(--bg);border-radius:var(--r2)}
.een h2{font-size:14px;margin:0 0 4px;color:var(--sub2);font-weight:600}
.een p{margin:0;font-size:15px;line-height:1.7}
.een b{font-weight:600}
  background:var(--soft,#f7f8fa);border-radius:8px;font-size:.9rem;line-height:1.5}
.efacts>div{display:flex;gap:.4rem;align-items:baseline;min-width:0}
.efacts dt{color:var(--muted,#8a8f98);flex:none}
.efacts dd{margin:0;word-break:break-word}

/* 词族导航条：维基那种页尾 navbox。同族成员共用、互相可达 */
.navbox{margin:1.5rem 0 0;border:1px solid var(--line,#e6e8eb);border-radius:8px;overflow:hidden;font-size:.9rem}
.navbox-t{background:var(--soft,#f7f8fa);padding:.5rem .85rem;font-weight:600;border-bottom:1px solid var(--line,#e6e8eb)}
.navbox-t a{color:inherit;text-decoration:none}
.navbox-t a:hover{text-decoration:underline}
.navbox-l{display:flex;flex-wrap:wrap;gap:.35rem .9rem;padding:.7rem .85rem;line-height:1.9}
.navbox-cur{font-weight:600;color:var(--muted,#8a8f98)}
/* 词族页 */
.clist{margin-top:1rem}
.citem{padding:.9rem 0;border-top:1px solid var(--line,#eee)}
.citem h2{font-size:1.05rem;margin:0 0 .35rem}
.citem p{margin:0 0 .3rem;line-height:1.7}
.cnote{color:var(--muted,#8a8f98);font-size:.88rem}
.pl-topic{background:var(--soft,#eef3fb);color:#3b6ea5;text-decoration:none}
.pl-off{color:var(--muted,#8a8f98);background:var(--soft,#f4f5f7)}

/* 词条页的文章反链：盘点／指南 */
.artref{list-style:none;margin:.6rem 0 0;padding:0}
.artref li{padding:.6rem 0;border-top:1px solid var(--line,#eee)}
.artref li a{font-weight:600}
.artref li p{margin:.25rem 0 0;color:var(--muted,#8a8f98);font-size:.9rem;line-height:1.6}
.artref .pl{margin-left:.5rem;font-size:.8rem}

/* ── 移动端汉堡菜单 ────────────────────────────────────────────
   纯 CSS（checkbox + :checked），不依赖 JS。
   链接在 HTML 里本来就有，只是靠 CSS 控制显隐 ——
   移动优先索引下，爬虫看的是 HTML 里有没有这个 <a>，不是用户要点几下。 */
/* 汉堡在最右 —— 右上角是拇指最容易够到的位置，而汉堡是最常点的。
   搜索框在它左边（顶栏顺序：logo → 搜索 → 登录 → 汉堡）。 */
.hamburger{display:none;flex-direction:column;justify-content:center;gap:4px;
  width:40px;height:40px;padding:8px;margin-left:6px;cursor:pointer;border-radius:8px;flex:none}
.hamburger span{display:block;height:2px;background:var(--ink);border-radius:2px;transition:.2s}
.navtoggle:checked ~ .hamburger span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.navtoggle:checked ~ .hamburger span:nth-child(2){opacity:0}
.navtoggle:checked ~ .hamburger span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
/* 桌面端：菜单里那几个「移动端专属」的降级项不显示（它们在页脚） */
.menu a.mo{display:none}

@media (max-width:720px){
  .hamburger{display:flex}
  /* 移动端顶栏挤：登录收成一个小按钮，把宽度让给搜索 */
  /* 触控高度对齐汉堡的 40px（原来 6px 上下内边距只有 29px 高，低于 44px 底线；
     顶栏 54px 放不下 44，40 是和汉堡一致的折中） */
  .acctlink{margin-left:auto;padding:0 10px;font-size:13px;min-height:40px;display:inline-flex;align-items:center}
  .hdsearch ~ .acctlink{margin-left:0}
  /* 菜单从顶栏下方展开，默认收起 */
  /* 相对 .hd 定位（sticky 元素是包含块），不相对 .wrap —— wrap 有 13px 内边距，
     相对它的话下拉两侧各缩进 13px，不贴边 */
  .menu{display:block;position:absolute;left:0;right:0;top:54px;z-index:96;
    background:#fff;border-bottom:1px solid var(--line,#e6e8eb);
    box-shadow:0 8px 24px rgba(0,0,0,.06);
    max-height:0;overflow:hidden;transition:max-height .22s ease}
  .navtoggle:checked ~ .menu{max-height:70vh;overflow-y:auto}
  .menu a{display:block;padding:13px 16px;font-size:15.5px;
    border-bottom:1px solid var(--line,#f0f1f3)}
  .menu a.mo{display:block;color:var(--sub,#8a8f98);font-size:14.5px}
  .menu a.on::after{display:none}
  .menu a.on{background:var(--soft,#f7f8fa)}
}

/* ── 账号区 ──────────────────────────────────────────────── */
.acct{max-width:720px;margin:0 auto;padding:20px 13px 40px}
.acctbox{max-width:460px;margin:0 auto}
.acctbox h1{font-size:20px;margin:0 0 6px}
.acctbox .sub{color:var(--sub,#8a8f98);font-size:13.5px;margin:0 0 18px;line-height:1.7}
.acctbox label{display:block;margin:0 0 14px;font-size:13.5px;color:var(--sub,#8a8f98)}
/* 输入框显式定高。
   不设的话会被继承来的 line-height 撑成两三倍高 —— 实机上就是这样。
   font-size 必须 ≥16px：**iOS 对小于 16px 的输入框会自动放大整个页面**，
   放大之后用户还得手动缩回来。 */
.acctbox input[type=text],.acctbox input[type=email],.acctbox input[type=password],
.acctbox select,.acctsearch input{
  display:block;width:100%;box-sizing:border-box;margin-top:5px;
  height:42px;padding:0 11px;font-size:16px;line-height:normal;
  border:1px solid var(--line,#e6e8eb);border-radius:8px;background:#fff;color:var(--ink)}
.acctbox textarea{
  display:block;width:100%;box-sizing:border-box;margin-top:5px;
  padding:9px 11px;font-size:16px;line-height:1.7;
  border:1px solid var(--line,#e6e8eb);border-radius:8px;background:#fff;color:var(--ink)}
.acctbox textarea{resize:vertical}
.acctbox label.chk{display:flex;align-items:center;gap:7px}
.acctbox label.chk input{width:auto;margin:0}
.btn{display:inline-block;padding:9px 22px;border:0;border-radius:8px;
  background:var(--ink,#16181d);color:#fff;font-size:15px;cursor:pointer}
.btn:hover{opacity:.88}
.err{color:#c0392b;font-size:13px;margin:0 0 12px}
.err p{margin:0 0 4px}
.acctnav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 18px;font-size:14px}
.acctnav a{padding:6px 12px;border-radius:7px;background:var(--soft,#f4f5f7);color:var(--sub,#8a8f98)}
.acctnav a.on{background:var(--ink,#16181d);color:#fff}
.acctout{margin-left:auto}
.acctout button{border:0;background:none;color:var(--sub,#8a8f98);font-size:13.5px;cursor:pointer}
.acctlist{list-style:none;margin:12px 0 0;padding:0}
.acctlist li{padding:11px 0;border-top:1px solid var(--line,#eee)}
.acctlist li p{margin:.3rem 0;color:var(--sub,#8a8f98);font-size:13.5px;line-height:1.6}
.acctlist time{font-size:12.5px;color:var(--sub,#8a8f98)}
.pl-accepted{background:#e6f5ec;color:#1f7a45}
.pl-rejected{background:#f6eaea;color:#a23b3b}
.acctsearch{display:flex;gap:8px;margin:0 0 14px}
.acctsearch input{margin:0}
/* 登录在最右，和内容导航拉开距离 */
/*
 * 右侧一组（搜索 / 登录 / 汉堡）靠一个 margin-left:auto 顶到最右。
 * 谁带这个 auto 取决于**这一页有没有顶栏搜索框** ——
 * 首页首屏自带大搜索框，顶栏那个不渲染。
 *
 * v4.17 只验证了内页（有搜索框，auto 在 .hdsearch 上），首页这条分支没测到，
 * 结果首页的登录和汉堡贴着 logo 左对齐 —— 又一次「靠恰好」：
 * 改之前它对，是因为登录自己带着 auto，不是因为顺序对。
 *
 * 现在两边都兜住：登录默认带 auto；一旦前面出现了 .hdsearch（它自己有 auto），
 * 登录就把 auto 交出去。两个 auto 同时存在会把剩余空间平分、搜索框钉在正中间。
 * LayoutTest 覆盖首页和内页两种顶栏。
 */
.acctlink{margin-left:auto;padding:6px 13px;border:1px solid var(--line,#e6e8eb);
  border-radius:8px;font-size:14px;white-space:nowrap}
.acctlink:hover{background:var(--soft,#f7f8fa)}
.hdsearch ~ .acctlink{margin-left:0}
/* 已登录头像：无边框、主色，尺寸和登录按钮一致 */
.acctlink.me{border:0;padding:4px;color:var(--accent,#5B4FE9);display:inline-flex;align-items:center;justify-content:center;min-width:34px}
.acctlink.me:hover{color:var(--ink);background:none}
/* 两个 .acctlink 都设了 display，会盖掉 hidden 属性的 UA 样式，得显式补回来 */
.acctlink[hidden]{display:none}

/* 回顶按钮：底栏删掉之后右下角空出来了。
   词条列表一屏几十条，滑到底想换个分类得一路滑回去。 */
.totop{position:fixed;right:16px;bottom:20px;z-index:95;
  display:flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;
  background:var(--card,#fff);color:var(--sub,#8a8f98);
  border:1px solid var(--line,#e6e8eb);box-shadow:0 3px 14px rgba(0,0,0,.08);
  font-size:17px;text-decoration:none}
.totop:hover{color:var(--ink);background:var(--soft,#f7f8fa)}
.totop[hidden]{display:none}

/* 异步换内容时的过渡。透明度变化比 spinner 轻，而且不占位不跳动 */
[data-swap="list"]{transition:opacity .12s ease}
