/* ============================================================
   深圳教招·备考一站通 —— 全站视觉层（书页质感）
   ------------------------------------------------------------
   这是全站唯一的「外观文件」。改配色、改纸感、改排版，只改这里。
   页面级 CSS（home/notes/persons/quiz/auth/…-index）只管各自布局，
   颜色一律走本文件的令牌，不得再写死色值。
   加载顺序：base.css 先，页面级 CSS 后。

   四色语义体系（褐系已全部剔除）
     墨   #23211d  正文与标题
     黛青 #33566b  主色：链接 / 按钮 / 选中态 / 结构性强调
     朱砂 #a2352c  警示：易错点 / 三星考点 / 热度必考
     竹青 #4a6b52  正面：星级 / 口诀 / 上岸笔记 / 例证
   纸感：暖白纸面 + 极淡颗粒纹理 + 纸面高光 + 书眉细线
   夜间：系统深色时自动切换冷墨蓝底（见第十六节），褐系同样不出现。
   浏览器「自动深色」已用 color-scheme:only 声明关闭，不会再被算法反转成褐色。
   ============================================================ */

/* 关闭浏览器「自动深色 / 强制深色」：页面自带配色，禁止算法反转 */
html{color-scheme:only light}

/* ---------- 一、设计令牌 ---------- */
:root{
  /* 纸 */
  --paper:#fdfbf7;        /* 纸面：卡片 / 区块 */
  --paper-2:#f6f1e6;      /* 次级面：表头 / 浅块 / 斑马纹 */
  --bg:#efece3;           /* 页面底：纸摊在桌面上的那层 */

  /* 墨 */
  --ink:#23211d;          /* 正文 */
  --ink-2:#4a463f;        /* 次级文字 */
  --mut:#6f6a5e;          /* 弱化文字（对 --paper 约 5.4:1） */
  --line:#e3ddcf;         /* 界线 */
  --line-2:#cdc5b2;       /* 强界线 */

  /* 黛青（主色） */
  --pri:#33566b;
  --pri-bg:#e9eff3;
  --pri-line:#c8d8e2;
  /* 朱砂（警示） */
  --cn:#a2352c;
  --cn-bg:#fbedeb;
  --cn-line:#e8cbc6;
  /* 竹青（正面） */
  --ok:#4a6b52;
  --ok-bg:#e9efe9;
  --ok-line:#c9d8c9;
  /* 紫（学科标签专用，仅教育心理学一路） */
  --pu:#6b4a9e;
  --pu-bg:#f2ecf9;
  --pu-line:#dccfee;
  /* 墨灰（学科标签专用，仅教育史一路） */
  --slate:#45464a;
  --slate-bg:#edeae3;
  --slate-line:#cfcac0;

  /* 尺度 */
  --r:6px;
  --r-lg:12px;
  --shadow:0 1px 2px rgba(60,50,35,.05);
  --shadow-h:0 8px 22px -14px rgba(60,50,35,.35);
  /* 纸面高光（夜间需压掉，故单独成令牌） */
  --inset:inset 0 1px 0 rgba(255,255,255,.75);
  /* 主色底上的字（夜间主色提亮，字要转深） */
  --on-pri:#fff;

  /* 纸纹：分形噪声，压到 5% 不透明度只留颗粒手感 */
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='160' height='160' filter='url(%23g)' opacity='0.05'/></svg>");
  /* 纸浆纤维：极淡的横向纹理 */
  --fiber:repeating-linear-gradient(90deg,rgba(120,105,80,.022) 0 1px,transparent 1px 4px);

  /* 字体 */
  --serif:"Source Han Serif SC","Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

/* ---------- 二、令牌桥接 ----------
   页面级 CSS 历史上用过这批变量名，此处统一指向新令牌，
   页面级 CSS 里原有的 :root 定义已删除，不会再覆盖这里。 */
:root{
  --muted:var(--mut);
  --fr:var(--pri);      --fr-bg:var(--pri-bg);
  --gold:var(--ok);     --gold-bg:var(--ok-bg);
  --grn:var(--ok);      --grn-bg:var(--ok-bg);
  --acc:var(--pri);
  /* 刷题站用过的两个别名，历史上从未定义，此处补上 */
  --err:var(--cn);
  --card:var(--paper);
}

/* ---------- 三、页面底与正文 ---------- */
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background-color:var(--bg);
  /* !important：页面级 CSS 里的 background 简写会重置纹理，需强制保住 */
  background-image:var(--grain),var(--fiber)!important;
  color:var(--ink);
  font-family:var(--serif);
  line-height:1.9;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
*{box-sizing:border-box}

section p,section li,.kd .body p,.ctx p,.jj p{
  font-size:15.5px;
  line-height:1.95;
}

h1{
  font-family:var(--serif);
  font-size:29px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--ink);
  line-height:1.4;
}
h2{
  font-family:var(--serif);
  font-size:18.5px;
  font-weight:700;
  letter-spacing:.05em;
  color:var(--ink);
  border-left:3px solid var(--pri);
  padding-left:12px;
  margin:0 0 14px;
}
h3{
  font-family:var(--serif);
  font-size:16px;
  font-weight:700;
  color:var(--ink);
  letter-spacing:.03em;
  margin:18px 0 6px;
}
h4{font-size:14.5px;color:var(--ink-2);font-weight:700}

.subtitle{color:var(--ink-2);font-size:14.5px;line-height:1.8}
.meta{color:var(--mut);font-size:12.5px;line-height:1.8}

a{color:var(--pri);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}

/* ---------- 四、纸面容器 ---------- */
section,.card,header.hero{
  position:relative;
  background-color:var(--paper);
  background-image:var(--grain)!important;
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow),var(--inset);
}
section{padding:20px 26px;margin-bottom:16px}
header.hero{padding:30px 32px;margin-bottom:20px}

/* 书眉：区块顶部一条内缩细线，像印版的上栏线 */
section::before,header.hero::before,.card::before{
  content:"";
  position:absolute;
  left:14px;right:14px;top:7px;
  height:1px;
  background:var(--line);
  opacity:.75;
  pointer-events:none;
}
section{padding-top:24px}

/* 行长由容器决定，不由元素 max-width 决定 */
.wrap{
  width:100%;
  max-width:820px;
  margin:0 auto;
  padding:24px 20px 64px;
}
body[data-view="list"] .wrap{max-width:1180px;padding:24px 28px 64px}
body[data-view="home"] .wrap{max-width:960px}
body[data-view="quiz"] .wrap{max-width:880px}

.foot{
  color:var(--mut);
  border-top:1px solid var(--line);
  font-size:12.5px;
  letter-spacing:.02em;
}

/* ---------- 五、组件 ---------- */
.kd{border-radius:var(--r)}
.kd.s3{background:var(--cn-bg);border:1px solid var(--cn-line);border-left:3px solid var(--cn)}
.kd.s2{background:var(--ok-bg);border:1px solid var(--ok-line)}
.kd.s1{background:var(--paper-2);border:1px solid var(--line)}

.stars{
  font-family:var(--sans);
  background:var(--ok-bg);
  color:var(--ok);
  border:1px solid var(--ok-line);
  border-radius:4px;
  font-weight:600;
  letter-spacing:.04em;
}
.kd.s3 .stars{background:var(--cn);color:var(--on-pri);border-color:var(--cn)}
.kd.s2 .stars{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}
.kd.s1 .stars{background:var(--paper-2);color:var(--mut);border-color:var(--line)}
.kd.s0 .stars{background:transparent;color:var(--mut);border:1px dashed var(--line-2)}

.warn{
  background:var(--cn-bg);
  border:1px solid var(--cn-line);
  border-left:3px solid var(--cn);
  border-radius:var(--r);
  color:var(--ink);
  padding:12px 18px;
}
.quote{
  background:var(--pri-bg);
  border:1px solid var(--pri-line);
  border-left:3px solid var(--pri);
  border-radius:var(--r);
  color:var(--ink);
  font-family:var(--serif);
  padding:12px 18px;
}
.quote small{color:var(--mut)}
.mn{
  background:var(--ok-bg);
  border:1px solid var(--ok-line);
  border-radius:var(--r);
  color:var(--ink);
}
.ctx{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-left:3px solid var(--pri);
  border-radius:var(--r);
  color:var(--ink);
  font-size:15px;
  line-height:1.95;
}
.jj{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r);
}
.hn{color:var(--cn);font-weight:700;letter-spacing:.04em}
.secref{color:var(--mut);font-size:12.5px;letter-spacing:.02em}
.bk{
  color:var(--ok);
  background:var(--ok-bg);
  border:1px solid var(--ok-line);
  border-radius:4px;
  font-family:var(--sans);
}
.relrow,.gxline{color:var(--ink-2)}
.rel{color:var(--ink-2)}
.rel b,.gxline b{color:var(--ink)}
.legend{color:var(--mut);font-size:12.5px}

/* 标签 / 芯片 */
.tag,.part-tag,.sz,.pchip,.heat{
  font-family:var(--sans);
  border-radius:4px;
  letter-spacing:.03em;
}
.sz,.pchip{background:var(--pri-bg);border:1px solid var(--pri-line);color:var(--pri)}
.sz.hot,.pchip.hot{background:var(--cn-bg);border-color:var(--cn-line);color:var(--cn)}
.sz.none{background:transparent;border:1px dashed var(--line-2);color:var(--mut)}
.heat.high{background:var(--cn-bg);border-color:var(--cn-line);color:var(--cn)}

/* 学科标签：五色，各归一路 */
.ptag,.tag{font-family:var(--sans);border-radius:4px;letter-spacing:.03em}
.ptag.edu,.tag.edu{background:var(--cn-bg);color:var(--cn);border:1px solid var(--cn-line)}
.ptag.psy,.tag.psy{background:var(--pri-bg);color:var(--pri);border:1px solid var(--pri-line)}
.ptag.epy,.tag.epy{background:var(--pu-bg);color:var(--pu);border:1px solid var(--pu-line)}
.ptag.law,.tag.law{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-line)}
.ptag.his,.tag.his{background:var(--slate-bg);color:var(--slate);border:1px solid var(--slate-line)}
.ptag.fr,.tag.fr{background:var(--pri-bg);color:var(--pri);border:1px solid var(--pri-line)}
.ptag.out,.tag.out,.ptag.persons,.tag.persons{
  background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-line);
}
.part-tag.edu{background:var(--cn-bg);color:var(--cn);border:1px solid var(--cn-line)}
.part-tag.psy{background:var(--pri-bg);color:var(--pri);border:1px solid var(--pri-line)}
.part-tag.epy{background:var(--pu-bg);color:var(--pu);border:1px solid var(--pu-line)}
.part-tag.law{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-line)}

/* ---------- 六、表格 ---------- */
table{border-collapse:collapse;font-size:14px}
th,td{border:1px solid var(--line);padding:9px 12px}
th{
  background:var(--paper-2);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:600;
  font-size:13px;
  letter-spacing:.03em;
}
table tr{background:transparent}
tbody tr:nth-child(even),
tbody tr:nth-child(even) td{background:var(--paper-2)}

/* ---------- 七、理论框架树（.fm）---------- */
.fm{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-left:3px solid var(--pri);
  border-radius:var(--r);
}
.fmroot{color:var(--cn);letter-spacing:.03em}
.fmroot em{color:var(--mut);font-weight:400}
.fm li::before,.fm li::after{background:var(--line-2)}
.fm li.hot{color:var(--cn)}
.fmcap{color:var(--mut);border-top:1px dashed var(--line)}

/* ---------- 八、导航 ---------- */
nav.top{
  background-color:color-mix(in srgb,var(--paper) 92%,transparent);
  background-image:var(--grain);
  backdrop-filter:saturate(1.4) blur(8px);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
}
nav.top a{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--ink-2);
  font-family:var(--sans);
  transition:border-color .18s,color .18s,background .18s;
}
nav.top a:hover{
  background:var(--pri-bg);
  border-color:var(--pri);
  color:var(--pri);
  text-decoration:none;
}
.backbar{
  background:var(--pri-bg);
  border:1px solid var(--pri-line);
  border-radius:var(--r);
}
.backbar a{color:var(--pri)}
.pager{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow);
}
.pglink{color:var(--pri);font-family:var(--sans)}
.pglabel{color:var(--mut);font-family:var(--sans)}
.cn{color:var(--pri)}

/* 章节链接：纸面小片，悬停显主色边 */
.chlist a{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--ink-2);
  font-family:var(--sans);
  transition:border-color .16s,color .16s,background .16s;
}
.chlist a:hover{border-color:var(--pri);color:var(--pri);text-decoration:none;background:var(--pri-bg)}
.chlist a .cn{color:var(--pri)}
.chlist a.site{background:var(--paper-2);border-color:var(--pri-line)}
.chlist a.intro{background:var(--ok-bg);border-color:var(--ok-line)}
.chlist a.intro .cn{color:var(--ok)}
.chlist a.off{background:transparent;border-style:dashed;color:var(--mut)}
.chlist a.off .cn{color:var(--mut)}

/* 说明框 */
.kbnote{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:var(--r);
  color:var(--ink-2);
}
.kbnote code{
  background:var(--bg);
  color:var(--ink);
  border:1px solid var(--line);
  border-radius:3px;
}
.partblk{border-bottom:1px dashed var(--line)}
.partblk h3{color:var(--ink);font-family:var(--serif);letter-spacing:.04em}
.pmeta,.pbook{color:var(--mut);font-family:var(--sans)}
.mid{background:var(--paper-2);color:var(--mut);border-color:var(--line)}

/* 双 Tab：方角纸片，选中态主色 */
.tabs{gap:8px}
.tab{
  font-family:var(--sans);
  font-size:13px;
  padding:6px 16px;
  border-radius:4px;
  background:var(--paper);
  border:1px solid var(--line);
  color:var(--ink-2);
  transition:background .16s,color .16s,border-color .16s;
}
.tab:hover{border-color:var(--pri);color:var(--pri)}
.tab.on{background:var(--pri);color:var(--on-pri);border-color:var(--pri)}

/* ---------- 九、悬浮控件 ---------- */
.fab{
  font-family:var(--sans);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--ink-2);
  box-shadow:var(--shadow-h);
  transition:border-color .16s,color .16s,background .16s;
}
.fab:hover{border-color:var(--pri);color:var(--pri);text-decoration:none;background:var(--pri-bg)}
.tts-fab{
  background:var(--pri);
  color:var(--on-pri);
  border:1px solid var(--pri);
  border-radius:4px;
  font-family:var(--sans);
  box-shadow:var(--shadow-h);
  transition:background .16s,border-color .16s;
}
.tts-fab:hover{background:var(--cn);border-color:var(--cn)}
.tts-panel{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  color:var(--ink);
  box-shadow:var(--shadow-h);
}
.tts-panel button{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--ink-2);
  font-family:var(--sans);
}
.tts-panel button:hover{border-color:var(--pri);color:var(--pri)}

/* ---------- 十、首页门户 ---------- */
.hero{position:relative;overflow:hidden}
.hero h1{
  font-family:var(--serif);
  font-size:34px;
  font-weight:700;
  letter-spacing:.1em;
  color:var(--ink);
}
.hero .sub{color:var(--ink-2);font-size:15px;line-height:1.85}
.hero .tags span{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--mut);
  font-family:var(--sans);
}
.hero .tags b{color:var(--ink)}
.hero-rule{
  position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--cn),var(--pri) 55%,transparent);
}
.stats{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:12px;
  margin:0 0 20px;
}
@media(max-width:760px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{
  background-color:var(--paper);
  background-image:var(--grain)!important;
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  padding:14px 16px;
  text-align:center;
}
.stat b{
  display:block;
  font-family:var(--serif);
  font-size:27px;
  font-weight:700;
  line-height:1.2;
  color:var(--cn);
  letter-spacing:.02em;
}
.stat span{display:block;margin-top:3px;font-size:13px;color:var(--ink);font-family:var(--sans);font-weight:600}
.stat i{display:block;margin-top:2px;font-size:11.5px;color:var(--mut);font-style:normal;font-family:var(--sans)}

.card{
  transition:transform .2s,box-shadow .2s,border-color .2s;
}
.card:hover{
  transform:translateY(-2px);
  box-shadow:var(--shadow-h);
  border-color:var(--line-2);
}
.card h2{
  font-family:var(--serif);
  border:0;
  padding:0;
  color:var(--ink);
  letter-spacing:.06em;
}
.card p{color:var(--ink-2)}
.card .cnt{background:var(--pri);border-radius:4px;font-family:var(--sans)}
.card .ic{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:46px;height:46px;
  border-radius:var(--r);
  background:var(--paper-2);
  border:1px solid var(--line);
  line-height:0;
}
.card .ic svg{width:24px;height:24px;stroke:var(--pri);fill:none;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.card.sm .ic{width:34px;height:34px}
.card.sm .ic svg{width:18px;height:18px}
.card .cnt{color:var(--on-pri)}

/* ---------- 十一、刷题站 ---------- */
.opt{
  background:var(--paper);
  border:1.5px solid var(--line);
  border-radius:var(--r);
  font-size:15.5px;
  line-height:1.7;
  color:var(--ink);
}
.qbox,.mode{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
}
.feed{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r);
}
.listrow{border-bottom:1px solid var(--line);color:var(--ink)}
.t1{
  font-family:var(--serif);
  font-size:18px;
  font-weight:700;
  letter-spacing:.05em;
  color:var(--ink);
}
.hotcard{
  background:var(--cn-bg);
  border:1px solid var(--cn-line);
  border-radius:var(--r-lg);
}
.btn{
  font-family:var(--sans);
  border-radius:4px;
  background:var(--paper);
  border:1px solid var(--line);
  color:var(--ink-2);
}
.btn:hover{border-color:var(--pri);color:var(--pri)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:var(--on-pri)}
.btn.pri:hover{background:var(--cn);border-color:var(--cn);color:var(--on-pri)}
.chip{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:4px;
  font-family:var(--sans);
}
.chip.on{background:var(--pri);border-color:var(--pri);color:var(--on-pri)}

/* ---------- 十二、内联 style 属性收口 ----------
   全站有 476 处元素级 style 写死颜色。内联样式优先级高于类规则，
   故此处用 [style*=] 选择器按属性值整体重映射到令牌。
   改色时改令牌即可，不必逐页改 HTML。 */
[style*="background:#eef3fa"],[style*="background:#eef3fb"]{
  background:var(--pri-bg)!important;border-color:var(--pri-line)!important;color:var(--ink)!important;
}
[style*="background:#eef5fa"],[style*="background:#eff5fa"]{
  background:var(--paper-2)!important;border-color:var(--line)!important;color:var(--ink)!important;
}
[style*="background:#eef7f2"]{
  background:var(--ok-bg)!important;border-color:var(--ok-line)!important;color:var(--ink)!important;
}
[style*="background:#fff"],[style*="background:#ffffff"]{
  background:var(--paper-2)!important;border-color:var(--line)!important;color:var(--ink)!important;
}
[style*="background:#f5f5f5"],[style*="background:#f7f9fc"],[style*="background:#f8fafc"]{
  background:var(--paper-2)!important;color:var(--ink)!important;
}
[style*="background:#eef5fa"] b,[style*="background:#eff5fa"] b{color:var(--cn)!important}
[style*="background:#eef5fa"] span,[style*="background:#eff5fa"] span{color:var(--mut)!important}
[style*="background:#eef3fa"] a,
[style*="background:#eef5fa"] a,
[style*="background:#eef7f2"] a,
[style*="background:#fff"] a,
[style*="background:#f5f5f5"] a{color:var(--pri)!important}

[style*="color:#1f5f8b"]{color:var(--pri)!important}
[style*="color:#33556e"]{color:var(--pri)!important}
[style*="color:#35548f"]{color:var(--pri)!important}
[style*="color:#5b6472"]{color:var(--mut)!important}
[style*="color:#8a9099"]{color:var(--mut)!important}
[style*="color:#b03a2e"]{color:var(--cn)!important}
[style*="color:#b8433a"]{color:var(--cn)!important}
[style*="color:#8a6d1a"]{color:var(--ok)!important}
[style*="color:#1e6b52"]{color:var(--ok)!important}
[style*="color:#1c2330"]{color:var(--ink)!important}
[style*="border-color:#c5d9e8"],
[style*="border-color:#cfd5dc"],
[style*="border:1px solid #d5e2f0"],
[style*="border:1px solid #eef5fa"],
[style*="border:1px solid #c5d9e8"]{
  border-color:var(--line)!important;
}

/* ---------- 十三、组件兜底 ---------- */
.nn{
  color:var(--pri)!important;
  background:var(--pri-bg)!important;
  border-color:var(--pri-line)!important;
}
.tts-secbtn{
  background:var(--paper-2)!important;
  border:1px solid var(--line)!important;
  color:var(--ink-2)!important;
}
.tts-secbtn:hover{border-color:var(--pri)!important;color:var(--pri)!important}
.bk{color:var(--ok)!important;background:var(--ok-bg)!important;border-color:var(--ok-line)!important}
.kbref{
  background:var(--paper-2)!important;
  border-left:3px solid var(--pri-line)!important;
  border-radius:0 var(--r) var(--r) 0!important;
  color:var(--ink-2)!important;
}
.gxline{
  background:var(--ok-bg)!important;
  border:1px solid var(--ok-line)!important;
  color:var(--ink-2)!important;
  border-radius:var(--r)!important;
}
.gxline b,.gxline strong{color:var(--ok)!important}
.gxline a{color:var(--pri)!important}
.heat{border-radius:4px!important;font-family:var(--sans)!important}
.heat.must{background:var(--cn)!important;color:var(--on-pri)!important;border:1px solid var(--cn)!important}
.heat.high{background:var(--ok-bg)!important;color:var(--ok)!important;border:1px solid var(--ok-line)!important}
.heat.mid{background:var(--paper-2)!important;color:var(--ink-2)!important;border:1px solid var(--line)!important}
.heat.none{background:transparent!important;color:var(--mut)!important;border:1px dashed var(--line-2)!important}
.gapnote{color:var(--ink-2)!important}
.pglink span{color:var(--mut)!important}

/* 存根页 / 登录页的居中纸片 */
.w{
  background-color:var(--paper)!important;
  background-image:var(--grain)!important;
  border:1px solid var(--line)!important;
  border-radius:var(--r-lg)!important;
  box-shadow:var(--shadow)!important;
  color:var(--ink)!important;
}
.w p a{
  display:inline-block;
  background:var(--pri)!important;
  color:var(--on-pri)!important;
  border:1px solid var(--pri)!important;
  border-radius:4px!important;
  padding:8px 16px;
  text-decoration:none;
  font-family:var(--sans);
  font-size:14px;
}
.w p a:hover{background:var(--cn)!important;border-color:var(--cn)!important}
.btn.pri,button.btn.pri{background:var(--pri)!important;color:var(--on-pri)!important;border-color:var(--pri)!important}
.auth .btn,body > .btn{background:var(--pri)!important;color:var(--on-pri)!important;border:none!important}
button.btn{background:var(--pri)!important;color:var(--on-pri)!important}

/* ---------- 十四、移动端疏解 ---------- */
@media (max-width:640px){
  .wrap,
  body[data-view="list"] .wrap,
  body[data-view="home"] .wrap,
  body[data-view="quiz"] .wrap{
    max-width:100%;
    padding:14px 12px 48px;
  }
  section{padding:16px 16px;margin-bottom:12px;border-radius:8px}
  header.hero{padding:18px 16px;margin-bottom:14px;border-radius:8px}
  h1{font-size:23px;line-height:1.35;letter-spacing:.02em}
  h2{font-size:17px;padding-left:10px;margin:0 0 12px}
  h3{font-size:15.5px;margin:16px 0 5px}
  h4{font-size:14px}

  section p,section li,.kd .body p,.ctx p,.jj p{font-size:15px;line-height:1.82}
  .subtitle{font-size:13.5px;line-height:1.7}
  .meta{font-size:12px;line-height:1.75}
  .foot{font-size:11.5px}

  nav.top{
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    gap:5px;
    padding:5px 6px;
    margin:0 0 10px;
  }
  nav.top::-webkit-scrollbar{display:none}
  nav.top a{
    flex:0 0 auto;
    font-size:12.5px;
    padding:5px 11px;
    white-space:nowrap;
  }

  table{font-size:13.5px}
  th,td{padding:7px 9px}
  .toc a{font-size:13.5px;padding:9px 4px}

  .warn,.quote,.ctx,.fm,.jj{padding:11px 14px}
  .kd{padding:0}
  .kd.s3,.kd.s2,.kd.s1{padding:8px 10px}
  a.pchip{padding:2px 9px;font-size:11px}
  .stars{padding:2px 7px}
  details{padding:8px 12px}
}

@media (max-width:640px){
  .fab,.tts-fab{
    font-size:11.5px;
    padding:7px 11px;
    right:8px;
  }
  #fabBack{bottom:calc(10px + env(safe-area-inset-bottom))}
  #fabNav{bottom:calc(46px + env(safe-area-inset-bottom))}
  .navpanel,.tts-panel{
    right:8px;
    left:8px;
    width:auto;
    bottom:calc(88px + env(safe-area-inset-bottom));
    max-height:58vh;
  }
}

/* ---------- 十五、夜间配色 ----------
   系统深色时自动启用。冷墨蓝底，暖褐系一律不出现。
   只覆盖令牌与少数硬编码装饰：组件规则全部引用令牌，此处无需重写。 */
@media (prefers-color-scheme:dark){
  html{color-scheme:only dark}
  :root{
    /* 纸 → 冷墨蓝三层 */
    --paper:#1b1f23;
    --paper-2:#23282e;
    --bg:#14171a;

    --ink:#e8e4dc;          /* 正文：暖白偏灰，不用纯白，久读不刺眼 */
    --ink-2:#c6c1b7;
    --mut:#9d988e;          /* 对 --paper 5.77:1 */
    --line:#2f353c;
    --line-2:#414852;

    --pri:#8ab4cf;   --pri-bg:#1c2731;   --pri-line:#33475a;
    --cn:#e58b7b;    --cn-bg:#2b1f1e;    --cn-line:#4a3230;
    --ok:#93b79e;    --ok-bg:#1e2a22;    --ok-line:#334a3a;
    --pu:#b6a3e2;    --pu-bg:#251f33;    --pu-line:#3f3358;
    --slate:#a9abb2; --slate-bg:#232529; --slate-line:#3a3d42;

    --shadow:0 1px 2px rgba(0,0,0,.5);
    --shadow-h:0 10px 26px -14px rgba(0,0,0,.8);
    --inset:inset 0 1px 0 rgba(255,255,255,.045);
    --on-pri:#101a20;       /* 主色底上的字：主色提亮后字要转深 */

    /* 纸纹：黑噪点在深底上不可见，夜间只留极淡白纤维 */
    --grain:none;
    --fiber:repeating-linear-gradient(90deg,rgba(255,255,255,.02) 0 1px,transparent 1px 4px);
  }

  /* 少数未走令牌的装饰 */
  section::before,header.hero::before,.card::before{opacity:.55}
  .hero-rule{background:linear-gradient(180deg,var(--cn),var(--pri) 55%,transparent);opacity:.85}
  .card:hover{border-color:var(--line-2)}
  input,select,textarea{background:var(--paper-2);color:var(--ink);border-color:var(--line-2)}
  ::selection{background:var(--pri);color:var(--on-pri)}
}

/* ---------- 十六、动效与打印 ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
@media print{
  /* 打印恒用浅色，不受系统深色影响 */
  :root{
    --paper:#fff;--paper-2:#f6f1e6;--bg:#fff;
    --ink:#000;--ink-2:#222;--mut:#444;--line:#ccc;--line-2:#bbb;
    --pri:#000;--pri-bg:#f2f2f2;--pri-line:#ccc;
    --cn:#000;--cn-bg:#f2f2f2;--cn-line:#ccc;
    --ok:#000;--ok-bg:#f2f2f2;--ok-line:#ccc;
    --pu:#000;--pu-bg:#f2f2f2;--pu-line:#ccc;
    --slate:#000;--slate-bg:#f2f2f2;--slate-line:#ccc;
    --grain:none;--fiber:none;--shadow:none;--shadow-h:none;--inset:none;
    --on-pri:#fff;
  }
  nav.top,.topbar,.foot{display:none}
  section,.card{box-shadow:none;border:1px solid #ccc;break-inside:avoid}
  .warn,.quote,.ctx,.mn,.fm,.kd{break-inside:avoid}
  a{color:#000}
}
