/* ============================================================
   hdchang.cn · 二级页共享样式
   深色主页的浅色姊妹版：同一套蓝、同一套图形、同一套组件形状
   ============================================================ */
:root{
  --page:#eef1f6; --card:#fbfcfe; --white:#fff; --soft:#f4f6fa;
  --ink:#0f1522; --ink2:#57617a; --ink3:#8d97ac;
  --line:#e6eaf2; --line2:#d6dce8;
  --blue:#4f8dff; --blue-ink:#2b62cc; --blue-soft:#eaf1ff;
  --sh-s:0 1px 2px rgba(15,21,34,.05);
  --sh-m:0 4px 14px rgba(15,21,34,.06),0 1px 3px rgba(15,21,34,.04);
  --sh-l:0 18px 48px rgba(15,21,34,.09),0 4px 14px rgba(15,21,34,.05);
  --sh-xl:0 34px 90px rgba(15,21,34,.11);
}
@media (prefers-color-scheme:dark){
  :root{
    --page:#0d1119; --card:#141924; --white:#1b2130; --soft:#121722;
    --ink:#eef1f7; --ink2:#a3adc0; --ink3:#6b7488;
    --line:#222939; --line2:#2f3749;
    --blue:#4f8dff; --blue-ink:#7fb0ff; --blue-soft:#16243f;
    --sh-s:0 1px 2px rgba(0,0,0,.3);
    --sh-m:0 4px 14px rgba(0,0,0,.34);
    --sh-l:0 18px 48px rgba(0,0,0,.48);
    --sh-xl:0 34px 90px rgba(0,0,0,.55);
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--page);color:var(--ink);min-height:100vh;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;
  display:flex;justify-content:center;padding:24px 18px;
}
a{color:inherit;text-decoration:none}
.ico,.bico,.sico{width:16px;height:16px;flex:0 0 auto}

/* 外层大卡 */
.shell{
  width:100%;background:var(--card);border:1px solid var(--line);
  border-radius:28px;box-shadow:var(--sh-xl);padding:22px 38px 36px;
  position:relative;overflow:hidden;
}
.shell::before{
  content:"";position:absolute;right:-160px;top:-170px;width:500px;height:500px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(79,141,255,.11),transparent 70%);pointer-events:none;
}

/* 顶栏 */
.nav{display:flex;align-items:center;justify-content:space-between;gap:18px;position:relative;z-index:2}
.crumbs{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink2);font-weight:500}
.crumbs i{color:var(--ink3);font-style:normal}
.back{display:inline-flex;align-items:center;gap:6px;transition:.2s}
.back:hover{color:var(--blue-ink)}
.back:hover .bico{transform:translateX(-2px)}
.bico{transition:.2s}
.mark{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:800;letter-spacing:-.6px}
.mark b{color:var(--blue)}
.markico{width:21px;height:21px;color:var(--blue);flex:0 0 auto}
.wm{white-space:nowrap}

/* 频道内切换 */
.subnav{display:flex;gap:7px;margin-top:24px;position:relative;z-index:2;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.subnav::-webkit-scrollbar{display:none}
.sn{
  display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;white-space:nowrap;
  font-size:13.5px;font-weight:600;padding:8px 16px;border-radius:999px;
  background:var(--white);border:1px solid var(--line);color:var(--ink2);transition:.2s;
}
.sn:hover{border-color:var(--line2);color:var(--ink)}
.sn.on{background:var(--blue);border-color:transparent;color:#fff;box-shadow:0 6px 16px rgba(79,141,255,.3)}

/* 头部 */
.head{padding:30px 0 6px;position:relative;z-index:2}
.kicker{
  display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:800;letter-spacing:1.6px;
  color:var(--blue-ink);background:var(--blue-soft);border:1px solid rgba(79,141,255,.24);
  padding:6px 13px;border-radius:999px;margin-bottom:18px;
}
.kicker .ico{width:14px;height:14px}
h1{font-size:clamp(31px,5vw,48px);line-height:1.1;margin:0 0 13px;font-weight:900;letter-spacing:-.042em}
.lede{font-size:15px;color:var(--ink2);max-width:36em;margin:0;line-height:1.8}
.stat{font-size:12.5px;color:var(--ink3);margin-top:16px;font-variant-numeric:tabular-nums}

/* 筛选胶囊 */
.pills{display:flex;gap:7px;flex-wrap:wrap;margin:26px 0 4px;position:relative;z-index:2}
.pill{
  font-size:12.5px;font-weight:600;padding:7px 15px;border-radius:999px;
  background:var(--white);border:1px solid var(--line);color:var(--ink2);
  cursor:pointer;transition:.2s;font-family:inherit;
}
.pill:hover{border-color:var(--line2);color:var(--ink)}
.pill.on{background:var(--ink);border-color:transparent;color:var(--card)}

/* 空态 */
.empty{
  text-align:center;padding:52px 20px;color:var(--ink3);font-size:14px;line-height:2;
  border:1.5px dashed var(--line2);border-radius:18px;margin-top:14px;position:relative;z-index:2;
}
.empty b{display:block;font-size:16px;color:var(--ink2);margin-bottom:5px}

/* 底栏 */
.foot{
  margin-top:38px;padding-top:19px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  font-size:12px;color:var(--ink3);position:relative;z-index:2;
}
.foot a:hover{color:var(--ink2);text-decoration:underline}

@media(max-width:640px){
  body{padding:14px 12px}
  .shell{padding:18px 18px 30px;border-radius:22px}
  .head{padding:24px 0 4px}
  .subnav{margin-right:-18px;padding-right:18px}
}

/* ============================================================
   文章页（posts/*.html）
   ============================================================ */
.article{max-width:760px;margin:0 auto;position:relative;z-index:2}
.a-head{padding:30px 0 8px}
.a-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;
  font-size:12.5px;color:var(--ink3);font-weight:600}
.a-meta .tag{font-size:10.5px;font-weight:700;letter-spacing:.5px;padding:3px 9px;
  border-radius:999px;background:var(--white);border:1px solid var(--line);color:var(--ink3)}
.a-title{font-size:clamp(28px,4.6vw,42px);line-height:1.22;margin:0 0 14px;
  font-weight:900;letter-spacing:-.038em}
.a-lede{font-size:16.5px;color:var(--ink2);line-height:1.85;margin:0 0 8px}

.prose{font-size:16px;line-height:1.9;color:var(--ink);padding-top:8px}
.prose > *{position:relative}
.prose h2{font-size:24px;font-weight:850;letter-spacing:-.025em;line-height:1.35;
  margin:52px 0 16px;padding-top:22px;border-top:1px solid var(--line)}
.prose h3{font-size:18px;font-weight:800;letter-spacing:-.015em;margin:34px 0 10px}
.prose h4{font-size:15.5px;font-weight:750;margin:24px 0 8px;color:var(--ink2)}
.prose p{margin:0 0 18px}
.prose strong{font-weight:750}
.prose a{color:var(--blue-ink);text-decoration:underline;text-underline-offset:2.5px;
  text-decoration-thickness:1px;text-decoration-color:rgba(79,141,255,.4)}
.prose a:hover{text-decoration-color:var(--blue)}
.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}
.prose li{margin-bottom:8px}
.prose li::marker{color:var(--ink3)}
.prose code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;
  background:var(--soft);border:1px solid var(--line);border-radius:5px;padding:1.5px 5px}
.prose pre{background:var(--soft);border:1px solid var(--line);border-radius:14px;
  padding:16px 18px;overflow-x:auto;margin:0 0 20px;line-height:1.65}
.prose pre code{background:none;border:0;padding:0;font-size:13px}
.prose blockquote{margin:0 0 20px;padding:14px 18px;background:var(--blue-soft);
  border-left:3px solid var(--blue);border-radius:0 12px 12px 0;color:var(--ink2);font-size:15px}
.prose blockquote p:last-child{margin:0}
.prose hr{border:0;border-top:1px solid var(--line);margin:36px 0}
.prose table{width:100%;border-collapse:collapse;margin:0 0 22px;font-size:14.5px;display:block;overflow-x:auto}
.prose th,.prose td{padding:11px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.prose th{font-weight:750;color:var(--ink2);font-size:13px;letter-spacing:.3px;
  background:var(--soft);white-space:nowrap}
.prose tbody tr:hover{background:var(--soft)}
/* 要点卡 */
.callout{display:flex;gap:13px;background:var(--white);border:1px solid var(--line);
  border-radius:16px;padding:16px 18px;margin:0 0 22px;box-shadow:var(--sh-s)}
.callout .ico{width:19px;height:19px;color:var(--blue);margin-top:3px}
.callout-b{flex:1;font-size:14.5px;line-height:1.8;color:var(--ink2)}
.callout-b b{color:var(--ink)}
.callout-b > :first-child{margin-top:0}
.callout-b > :last-child{margin-bottom:0}
/* 文末导航 */
.a-foot{margin-top:48px;padding-top:22px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:center}
.a-back{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:650;
  color:var(--ink2);transition:.2s}
.a-back:hover{color:var(--blue-ink)}
.a-back:hover .bico{transform:translateX(-3px)}
@media(max-width:640px){
  .prose{font-size:15.5px}
  .prose h2{font-size:21px;margin:40px 0 13px}
  .prose h3{font-size:17px}
  .a-lede{font-size:15.5px}
}

/* ============================================================
   题库 / 刷题（quiz.html）
   ============================================================ */
.modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:22px;position:relative;z-index:2}
.mode{background:var(--white);border:1px solid var(--line);border-radius:17px;padding:18px 19px;
  box-shadow:var(--sh-m);cursor:pointer;transition:.24s cubic-bezier(.3,1.1,.45,1);text-align:left;font-family:inherit}
.mode:hover{transform:translateY(-3px);box-shadow:var(--sh-l);border-color:var(--blue)}
.mode:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:var(--sh-m);border-color:var(--line)}
.mode-t{font-size:16px;font-weight:750;display:flex;align-items:center;gap:8px;margin-bottom:5px}
.mode-t .ico{width:17px;height:17px;color:var(--blue)}
.mode-d{font-size:12.5px;color:var(--ink3);line-height:1.65}
.opts{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;align-items:center;position:relative;z-index:2}
.opts label{font-size:12.5px;color:var(--ink3);font-weight:600}
.opts select{font-family:inherit;font-size:13px;font-weight:600;padding:7px 12px;border-radius:999px;
  background:var(--white);border:1px solid var(--line);color:var(--ink2);cursor:pointer}

/* 答题界面 */
.qbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;position:relative;z-index:2}
.qbar .prog{flex:1;min-width:120px;height:6px;background:var(--line);border-radius:99px;overflow:hidden}
.qbar .prog i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#7b5cf5);
  border-radius:99px;transition:width .35s}
.qbar-n{font-size:12.5px;color:var(--ink3);font-weight:700;font-variant-numeric:tabular-nums}
.qcard{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:24px 26px;
  box-shadow:var(--sh-m);position:relative;z-index:2}
.q-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:13px}
.q-dm{font-size:10.5px;font-weight:800;letter-spacing:.5px;padding:4px 10px;border-radius:999px;
  background:var(--blue-soft);color:var(--blue-ink)}
.q-diff{font-size:11px;color:var(--ink3);font-weight:600}
.q-stem{font-size:17px;font-weight:650;line-height:1.7;margin-bottom:18px}
.choice{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;font-family:inherit;
  background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:14px 16px;
  margin-bottom:9px;cursor:pointer;transition:.16s;font-size:14.5px;line-height:1.65;color:var(--ink)}
.choice:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft)}
.choice:disabled{cursor:default}
.choice-k{flex:0 0 auto;width:24px;height:24px;border-radius:8px;display:flex;align-items:center;
  justify-content:center;font-size:12.5px;font-weight:800;background:var(--soft);
  border:1px solid var(--line);color:var(--ink2)}
.choice.right{border-color:#2fa36a;background:rgba(47,163,106,.09)}
.choice.right .choice-k{background:#2fa36a;border-color:transparent;color:#fff}
.choice.wrong{border-color:#d4574f;background:rgba(212,87,79,.09)}
.choice.wrong .choice-k{background:#d4574f;border-color:transparent;color:#fff}
.choice.dim{opacity:.5}
.fb{margin-top:16px;padding:16px 18px;border-radius:15px;background:var(--soft);
  border-left:3px solid var(--blue);font-size:14.5px;line-height:1.8;color:var(--ink2)}
.fb-h{font-size:13px;font-weight:800;letter-spacing:.4px;margin-bottom:7px;display:flex;align-items:center;gap:7px}
.fb-h.ok{color:#2fa36a}.fb-h.no{color:#d4574f}
.fb-why{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:13.5px}
.fb-why b{color:var(--ink)}
.qact{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;align-items:center}
.btn{font-family:inherit;font-size:14px;font-weight:700;padding:11px 22px;border-radius:12px;
  cursor:pointer;transition:.2s;border:1px solid transparent}
.btn-p{background:var(--blue);color:#fff}
.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(79,141,255,.32)}
.btn-g{background:var(--white);border-color:var(--line);color:var(--ink2)}
.btn-g:hover{border-color:var(--ink3);color:var(--ink)}
.btn-flag{margin-left:auto;font-size:12px;font-weight:600;color:var(--ink3);background:none;
  border:0;cursor:pointer;font-family:inherit}
.btn-flag:hover{color:#d4574f}

/* 成绩单 */
.score{background:var(--white);border:1px solid var(--line);border-radius:22px;padding:30px;
  text-align:center;box-shadow:var(--sh-l);position:relative;z-index:2}
.score-n{font-size:64px;font-weight:900;letter-spacing:-.05em;line-height:1;
  font-variant-numeric:tabular-nums;margin-bottom:6px}
.score-n.pass{color:#2fa36a}.score-n.fail{color:var(--ink)}
.score-s{font-size:13.5px;color:var(--ink3);margin-bottom:22px}
.score-bd{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:9px;margin-bottom:22px}
.sb{background:var(--soft);border-radius:13px;padding:12px}
.sb b{display:block;font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}
.sb span{font-size:11px;color:var(--ink3);font-weight:600}
.tip{font-size:12.5px;color:var(--ink3);line-height:1.8;margin-top:18px;position:relative;z-index:2}
@media(max-width:640px){
  .qcard{padding:19px 17px;border-radius:16px}
  .q-stem{font-size:16px}
  .score-n{font-size:50px}
}

/* ============================================================
   串讲（brief.html）
   ============================================================ */
.axis{background:var(--white);border:1px solid var(--line);border-radius:18px;
  padding:20px 22px;margin-bottom:14px;box-shadow:var(--sh-m);position:relative;overflow:hidden}
.axis::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}
.axis-n{font-size:11px;font-weight:800;letter-spacing:1.6px;color:var(--blue-ink);margin-bottom:7px}
.axis-t{font-size:18px;font-weight:800;letter-spacing:-.02em;line-height:1.4;margin-bottom:9px}
.axis-d{font-size:14.5px;color:var(--ink2);line-height:1.85;margin-bottom:14px}
.axis-d b{color:var(--ink)}
.rule{display:grid;grid-template-columns:1fr auto 1fr;gap:11px;align-items:center;
  background:var(--soft);border-radius:12px;padding:12px 14px;margin-bottom:8px;font-size:13.5px}
.rule-if{color:var(--ink2)}
.rule-ar{color:var(--blue);font-weight:800}
.rule-then{font-weight:700;color:var(--ink)}
@media(max-width:560px){
  .rule{grid-template-columns:1fr;gap:5px;text-align:left}
  .rule-ar{display:none}
  .rule-then::before{content:"→ ";color:var(--blue)}
}
.dmcard{background:var(--white);border:1px solid var(--line);border-radius:18px;
  padding:20px 22px;margin-bottom:13px;box-shadow:var(--sh-m)}
.dm-h{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin-bottom:12px}
.dm-code{font-size:11.5px;font-weight:800;letter-spacing:.6px;padding:4px 11px;border-radius:999px;
  background:var(--blue-soft);color:var(--blue-ink)}
.dm-name{font-size:17px;font-weight:800;letter-spacing:-.02em}
.dm-w{margin-left:auto;font-size:12px;color:var(--ink3);font-weight:700;font-variant-numeric:tabular-nums}
.dm-body{font-size:14.5px;color:var(--ink2);line-height:1.85}
.dm-body b{color:var(--ink)}
.dm-body ul{margin:10px 0 14px;padding-left:20px}
.dm-body li{margin-bottom:7px}
.dm-trap{background:rgba(212,87,79,.07);border-left:3px solid #d4574f;border-radius:0 11px 11px 0;
  padding:11px 14px;margin:12px 0;font-size:13.5px;line-height:1.8;color:var(--ink2)}
.dm-trap b{color:#c2483f}
@media (prefers-color-scheme:dark){ .dm-trap b{color:#f09a92} }
.dm-go{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;
  color:var(--blue-ink);margin-top:6px}
.dm-go:hover{gap:9px}
.dm-go .ico{width:14px;height:14px}

/* 频道切换按钮：和本频道内的页面区分开 */
.sn-alt{margin-left:14px;border-style:dashed;color:var(--ink3)}
.sn-alt::before{content:"";display:block;width:1px;height:18px;background:var(--line);
  margin-left:-15px;margin-right:8px}
@media(max-width:640px){ .sn-alt{margin-left:8px} .sn-alt::before{display:none} }
.sec-label{font-size:11.5px;font-weight:800;letter-spacing:2px;color:var(--ink3);
  margin:26px 0 12px;position:relative;z-index:2;display:flex;align-items:center;gap:12px}
.sec-label::after{content:"";flex:1;height:1px;background:var(--line)}

/* ============================================================
   值班室（ops.html）
   ============================================================ */
.ops-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:20px 0 6px;position:relative;z-index:2}
.ops-c{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:14px 16px;box-shadow:var(--sh-s)}
.ops-c b{display:block;font-size:21px;font-weight:850;line-height:1.25;font-variant-numeric:tabular-nums}
.ops-c span{font-size:11.5px;color:var(--ink3);font-weight:600}
.ops-c.warn b{color:#d4574f} .ops-c.good b{color:#2fa36a}
.site-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.site-row:last-child{border-bottom:0}
.dotk{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.dotk.up{background:#2fa36a;box-shadow:0 0 0 3px rgba(47,163,106,.16)}
.dotk.down{background:#d4574f;box-shadow:0 0 0 3px rgba(212,87,79,.16)}
.site-ms{margin-left:auto;font-size:12px;color:var(--ink3);font-variant-numeric:tabular-nums}
.runrow{display:flex;align-items:flex-start;gap:11px;padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.runrow:last-child{border-bottom:0}
.run-ok{width:19px;height:19px;border-radius:6px;flex:0 0 auto;display:flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:800;color:#fff;margin-top:2px}
.run-ok.y{background:#2fa36a} .run-ok.n{background:#d4574f}
.run-b{flex:1;min-width:0}
.run-t{font-weight:700}
.run-n{color:var(--ink3);font-size:12.5px;margin-top:2px;line-height:1.6}
.run-time{font-size:11.5px;color:var(--ink3);white-space:nowrap;font-variant-numeric:tabular-nums}
.prop{background:var(--white);border:1px solid var(--blue);border-radius:16px;padding:17px 19px;
  margin-bottom:12px;box-shadow:var(--sh-m)}
.prop-h{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.prop-tag{font-size:10.5px;font-weight:800;letter-spacing:.5px;padding:4px 10px;border-radius:999px;
  background:var(--blue-soft);color:var(--blue-ink)}
.prop-time{margin-left:auto;font-size:11.5px;color:var(--ink3)}
.prop-body{font-size:13.5px;line-height:1.75;color:var(--ink2);background:var(--soft);
  border-radius:11px;padding:12px 14px;max-height:280px;overflow:auto;white-space:pre-wrap;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.prop-act{display:flex;gap:9px;margin-top:12px}
.foot-ops{font-size:11.5px;color:var(--ink3)}
.foot-ops a{color:var(--ink3)}
.foot-ops a:hover{color:var(--blue-ink);text-decoration:underline}

/* ============================================================
   侧边助手
   ============================================================ */
/* hidden 属性优先于任何 display，否则 .chat-panel{display:flex} 会盖掉浏览器默认的
   [hidden]{display:none}，面板永远收不起来。全站兜底，别删。 */
[hidden]{display:none!important}
.chat-fab{
  position:fixed;right:22px;bottom:22px;z-index:60;width:52px;height:52px;border-radius:50%;
  background:var(--blue);color:#fff;border:0;cursor:pointer;display:flex;align-items:center;
  justify-content:center;box-shadow:0 8px 26px rgba(79,141,255,.42);transition:.24s cubic-bezier(.3,1.2,.45,1);
}
.chat-fab svg{width:23px;height:23px}
.chat-fab:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 32px rgba(79,141,255,.5)}
.chat-fab .ic-close{display:none}
.chat-fab.open .ic-chat{display:none}
.chat-fab.open .ic-close{display:block}
.chat-fab.open{transform:scale(.92)}
.chat-tip{position:fixed;right:84px;bottom:36px;z-index:59;max-width:200px;
  background:var(--card);border:1px solid var(--line2);border-radius:13px;
  padding:9px 12px;font-size:12.5px;line-height:1.55;color:var(--ink2);
  box-shadow:0 10px 30px rgba(15,21,34,.16);animation:chatIn .3s cubic-bezier(.3,1.2,.45,1)}
@media(max-width:520px){ .chat-tip{display:none} }
.chat-panel{
  position:fixed;right:22px;bottom:86px;z-index:60;width:min(370px,calc(100vw - 32px));
  height:min(520px,calc(100vh - 130px));background:var(--card);border:1px solid var(--line2);
  border-radius:20px;box-shadow:0 26px 70px rgba(15,21,34,.22);display:flex;flex-direction:column;
  overflow:hidden;animation:chatIn .26s cubic-bezier(.3,1.2,.45,1);
}
@keyframes chatIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.chat-head{display:flex;align-items:center;gap:9px;padding:13px 15px;border-bottom:1px solid var(--line);
  background:var(--white)}
.chat-dot{width:7px;height:7px;border-radius:50%;background:#2fa36a;
  box-shadow:0 0 0 3px rgba(47,163,106,.16);flex:0 0 auto}
.chat-title{font-size:14.5px;font-weight:750;flex:1}
.chat-x{background:none;border:0;color:var(--ink3);font-size:12.5px;cursor:pointer;
  font-family:inherit;padding:3px 7px;border-radius:7px}
.chat-x:hover{color:var(--ink);background:var(--soft)}
.chat-x svg{width:15px;height:15px;display:block}
.chat-x.icon{padding:5px}
.chat-body{flex:1;overflow-y:auto;padding:15px;display:flex;flex-direction:column;gap:10px}
.chat-msg{max-width:85%;font-size:14px;line-height:1.7;padding:10px 13px;border-radius:14px;
  word-break:break-word}
.chat-msg.bot{background:var(--soft);color:var(--ink);border-bottom-left-radius:5px;align-self:flex-start}
.chat-msg.me{background:var(--blue);color:#fff;border-bottom-right-radius:5px;align-self:flex-end}
.chat-msg.pending{opacity:.5;letter-spacing:3px}
.chat-msg.warn{background:rgba(212,87,79,.1);color:#c2483f}
@media (prefers-color-scheme:dark){ .chat-msg.warn{color:#f09a92} }
.chat-in{display:flex;gap:8px;padding:11px 13px;border-top:1px solid var(--line);background:var(--white)}
.chat-in input{flex:1;font-family:inherit;font-size:14px;padding:10px 13px;border-radius:11px;
  border:1px solid var(--line);background:var(--card);color:var(--ink);outline:none}
.chat-in input:focus{border-color:var(--blue)}
.chat-in button{font-family:inherit;font-size:13.5px;font-weight:700;padding:10px 17px;border:0;
  border-radius:11px;background:var(--blue);color:#fff;cursor:pointer;transition:.2s}
.chat-in button:disabled{opacity:.45;cursor:default}
.chat-note{font-size:10.5px;color:var(--ink3);text-align:center;padding:0 12px 10px;background:var(--white)}
@media(max-width:520px){
  .chat-fab{right:16px;bottom:16px;width:48px;height:48px}
  .chat-panel{right:12px;left:12px;bottom:74px;width:auto;height:min(70vh,470px)}
}

/* 一级栏目与栏目内工具分两行，避免混在一排。 */
.subnav{display:block;overflow:visible}.ai-sections{display:flex;gap:7px;flex-wrap:wrap}.ai-local{display:flex;gap:9px 20px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--ink2)}.ai-local a{padding:4px 0}.ai-local a[aria-current=page]{color:var(--blue-ink);font-weight:750;border-bottom:2px solid var(--blue)}
@media(max-width:480px){.ai-sections .sn{font-size:12px;padding:9px 11px}.ai-local{font-size:12px;gap:8px 15px}}
@media(max-width:600px){.crumbs{flex-wrap:wrap;gap:5px 7px;line-height:1.6}.crumbs>a,.crumbs>span,.crumbs>i{white-space:nowrap}.nav{align-items:flex-start}.ai-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.ai-sections .sn{justify-content:center}.subnav{margin-right:0;padding-right:0}}
