/* 全站皮肤层：把 Zensical modern 的 chrome 与 .md-typeset 排版改成 Atelier Zero
   （纸白 + 黑墨 + 荧光绿点缀 + 1px 硬线 + 直角）。只消费 zx-tokens.css 的令牌，不定义令牌。
   原则：能靠 --md-* 变量搞定的都在 tokens 里做了，这里只放变量够不着的（字面值、硬编码 hex、
   结构性新增）。extra_css 在主题 CSS 之后加载，同特异度就能赢，所以尽量不用 !important；
   下面每处 !important 都单独注明为什么不可替代。
   硬线一律写字面 1px 而不是 Zensical 的 .05rem：宽屏 root 字号变 22/24px 时 .05rem 会糊成
   1.1/1.2px，Atelier Zero 的识别度就在"硬"。这是有意的不一致。
   衬线只出现在三处：站名、h1、h2。其余一切 Inter —— Georgia 的中文回退是宋体，小字号很难看。
   参照文件：site/assets/stylesheets/modern/main.*.min.css（每条覆盖的特异度都对着它核过）。 */

/* ================================================================
   0. 全局
   ================================================================ */
::selection { background: var(--coral); color: var(--ink); text-shadow: none; }

/* 直角总闸。Zensical 把 border-radius 撒在 ~42 处，其中十几条是
   .md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code
   这种 7 级复合选择器，逐条对齐特异度不可维护、升级即失效。这里是白名单式点名，不是通配。 */
.md-typeset code,
.md-typeset pre > code,
.md-typeset .admonition,
.md-typeset details,
.md-typeset table:not([class]),
.md-typeset .tabbed-labels > label,
.md-typeset .highlight span.filename,
.highlighttable .linenos,
.highlighttable tr:first-child > .linenos,
.md-nav__link,
.md-search__button,
.md-code__nav,
.md-top,
.md-dialog,
.md-sidebar--secondary .md-sidebar__inner {
  border-radius: 0 !important;
}

/* ================================================================
   1. 顶栏 / 标签条 / 搜索
   ================================================================ */
.md-header {
  border-bottom: 1px solid var(--line);
  box-shadow: none;
}
.md-header--shadow { box-shadow: none; }
/* 站名：衬线三处之一，和首页 .zx-frame__brand 同族 */
.md-header__topic:first-child .md-ellipsis {
  font-family: var(--zx-serif);
  font-weight: 800;
  letter-spacing: 0;
}
.md-header__title { letter-spacing: 0; }

.md-tabs {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  box-shadow: none;
}
/* 默认 opacity:.7 + color:inherit，纸面上灰得像失效；强调走 opacity / 字重 / 下划线 */
.md-tabs__link { opacity: 1; color: var(--ink-mute); }
.md-tabs__link:hover,
.md-tabs__link:focus { color: var(--ink); }
/* modern 的 active 是 .05rem solid fg-color；换成 2px 荧光绿硬线。
   （--md-indicator-x 那套滑动指示器只用于 tabbed 代码块，不在这里，不会双线） */
.md-tabs__item--active { border-bottom: 2px solid var(--coral); }
.md-tabs__item--active .md-tabs__link { color: var(--ink); font-weight: 700; }

/* 搜索入口是 <button class="md-search__button">（modern 没有 .md-search__form）。
   面板本体在 shadow DOM 里，配色已由 tokens 的 --color-* 接管，这里只管按钮。 */
.md-search__button {
  background-color: var(--bone);
  border: 1px solid var(--line);
  color: var(--ink-mute);
}
.md-search__button:hover,
.md-search__button:focus {
  background-color: var(--paper-dark);   /* 默认 hover 是 --lighter(#8c8c8c)，纸面上太重 */
  border-color: var(--ink);
  color: var(--ink);
}
.md-search__button:before { background-color: var(--ink-mute); }   /* 放大镜 mask */

/* ================================================================
   2. 左侧导航
   ================================================================ */
.md-nav__item--section > .md-nav__link {
  color: var(--ink-faint);
  letter-spacing: .06em;
}
/* active：--coral-wash 底 + 左侧 2px 绿竖条（inset box-shadow 不撑布局），替掉圆角药丸。
   Zensical 原规则同为 3 类，我们在后 → 赢。 */
.md-nav--primary .md-nav__item .md-nav__link--active {
  background: var(--coral-wash);
  color: var(--ink);
  font-weight: 700;
  box-shadow: inset 2px 0 0 var(--coral);
}
/* hover：Zensical 那条是 5 类（--primary + __link + [href] + :hover + :not()），必须逐字对齐 */
.md-nav--primary .md-nav__link[href]:hover:not(.md-nav__link--active),
.md-nav--primary .md-nav__link[href]:focus:not(.md-nav__link--active),
.md-nav--primary .md-nav__link[for]:hover:not(.md-nav__link--active),
.md-nav--primary .md-nav__link[for]:focus:not(.md-nav__link--active) {
  background-color: var(--paper-dark);
  color: var(--ink);
}

/* ================================================================
   3. 右侧 TOC：一条 1px 竖线当轨道，当前项在轨道上换成 2px 绿
   ================================================================ */
.md-nav--secondary .md-nav__title {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  color: var(--ink-faint);
  font-size: .6rem;
  letter-spacing: .14em;
}
.md-sidebar--secondary .md-nav--secondary > .md-nav__list {
  border-left: 1px solid var(--line);
  margin-left: .2rem;
}
.md-nav--secondary .md-nav__link {
  margin-left: -1px;                   /* 压在轨道上 */
  border-left: 2px solid transparent;
  padding: .2rem .6rem;
  color: var(--ink-mute);
}
/* Zensical: .md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)} 2 类；同 2 类在后 → 赢 */
.md-nav--secondary .md-nav__link--active {
  border-left-color: var(--coral);
  color: var(--ink);
  font-weight: 700;
}
.md-nav--secondary .md-nav__link[href]:hover,
.md-nav--secondary .md-nav__link[href]:focus { color: var(--coral-deep); }
/* 窄屏 TOC 是浮起来的小面板 */
@media screen and (max-width: 59.984375em) {
  .md-sidebar--secondary .md-sidebar__inner {
    background: var(--bone);
    border: 1px solid var(--ink);
    box-shadow: var(--zx-sticker);
  }
}

/* ================================================================
   4. 正文排版
   ================================================================ */
.md-typeset {
  font-size: .78rem;        /* modern 默认偏小，CJK 下再放一点 */
  line-height: 1.85;
}
/* h1：衬线巨字 + 底部 1px 墨线 */
.md-typeset h1 {
  font-family: var(--zx-serif);
  font-weight: 800;
  font-size: 2em;
  letter-spacing: 0;        /* modern 的 -.025em 对汉字是负收益 */
  line-height: 1.25;
  color: var(--ink);
  margin: 0 0 .9em;
  padding-bottom: .42em;
  border-bottom: 1px solid var(--ink);
}
/* h2：章节闸门。顶部 1px 通栏线 + 骑在线上的绿短杠（对应首页 .zx-corner）—— 正文标题里唯一的绿 */
.md-typeset h2 {
  font-family: var(--zx-serif);
  font-weight: 800;
  letter-spacing: 0;
  position: relative;
  margin: 2.2em 0 .7em;
  padding-top: .7em;
  border-top: 1px solid var(--line);
}
.md-typeset h2::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 26px;
  height: 2px;
  background: var(--coral);
}
/* h1 紧接 h2 时避免"底线 + 顶线"双线（更常见的 h1 → 导语 → h2 不受影响） */
.md-typeset h1 + h2 { border-top: 0; margin-top: 1em; padding-top: 0; }
.md-typeset h1 + h2::before { display: none; }
/* h3 起 Inter，只调字重字距。不做荧光笔：inset 阴影只画盒底，两行标题只有第二行有绿底 */
.md-typeset h3 { font-weight: 800; letter-spacing: 0; }
.md-typeset h4 { font-weight: 800; letter-spacing: 0; color: var(--ink-soft); }
.md-typeset h5,
.md-typeset h6 { color: var(--ink-mute); letter-spacing: .04em; }

/* 索引页导语：H1 之后的第一段放大成 lede，对应首页 .zx-hero__lede */
.md-typeset h1 + p {
  font-size: 1.1em;
  color: var(--ink-mute);
  max-width: 38em;
}

/* 链接：墨字 + 荧光绿 1px 下划线，hover 加粗成 2px 深绿。
   索引页整页是链接列表，hover 加底色会闪成一片，所以只动下划线。 */
.md-typeset a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--coral);
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
}
.md-typeset a:hover,
.md-typeset a:focus {
  color: var(--coral-deep);
  text-decoration-color: var(--coral-deep);
  text-decoration-thickness: 2px;
}
.md-typeset .headerlink { color: var(--line); }

/* 列表：方块 marker，绿点 */
.md-typeset ul { list-style-type: square; }
.md-typeset ul > li::marker { color: var(--coral-deep); }
.md-typeset ol > li::marker { color: var(--ink-faint); font-weight: 700; font-variant-numeric: tabular-nums; }

.md-typeset hr { border-bottom: 1px solid var(--line); margin: 2em 0; }

/* 引用块（124 篇）：2px 墨色硬线 + 灰字，保持 Inter。
   Zensical 把边框写在 [dir=ltr] .md-typeset blockquote（0,2,1）上，光写 .md-typeset blockquote 改不动。 */
[dir=ltr] .md-typeset blockquote {
  border-left: 2px solid var(--ink);
  padding-left: 1.1em;
}
.md-typeset blockquote { color: var(--ink-mute); }

/* ================================================================
   5. 代码（189 篇，权重最高）
   ================================================================ */
.md-typeset pre > code {
  background: var(--bone);
  border: 1px solid var(--line);
  padding: .9em 1.2em;
  line-height: 1.7;
}
.md-typeset code {                    /* 行内码：比 paper 深一档 */
  background: var(--paper-dark);
  color: var(--ink-soft);
  padding: .12em .4em;
}
/* 文件名条：小字号大字距的小标，只留上/左/右三边线，底线由代码块的顶线充当 */
.md-typeset .highlight span.filename {
  background: var(--paper-dark);
  border: 1px solid var(--line);
  border-bottom: 0;
  color: var(--ink-faint);
  font-size: .72em;
  font-weight: 700;
  letter-spacing: .08em;
}
/* 行号：pymdownx 两种形态都接 */
.highlight [data-linenos]:before {
  background-color: var(--paper-dark);
  box-shadow: -1px 0 var(--line) inset;
  color: var(--ink-faint);
}
.highlighttable .linenos {
  background-color: var(--paper-dark);
  border: 1px solid var(--line);
  border-right: 0;
}
.highlighttable .linenodiv { box-shadow: none; }
.highlighttable .linenodiv pre { color: var(--ink-faint); }
.highlighttable .code pre > code { border-left: 0; }   /* 和行号栏共一条竖线 */
/* 复制 / 全选按钮（modern 叫 .md-code__button，不是 Material 的 .md-clipboard） */
.md-code__nav {
  background-color: var(--bone);
  border: 1px solid var(--line);
  padding: .15rem;
  gap: .15rem;
}
:hover > .md-code__nav { background-color: var(--bone); }
.md-code__button { color: var(--ink-faint); }          /* 默认吃 --lightest，几乎看不见 */
:hover > * > .md-code__button { color: var(--ink-mute); }

/* ================================================================
   6. 表格（112 篇）：三线表。外框墨线、表头底线墨线、行间淡线
   ================================================================ */
.md-typeset table:not([class]) {
  background: var(--bone);
  border: 1px solid var(--ink);
  font-size: .7rem;                    /* 原 .64rem，CJK 太小 */
}
.md-typeset table:not([class]) th {
  background: var(--paper-dark);
  border-bottom: 1px solid var(--ink);
  letter-spacing: .03em;
  padding: .8em 1.1em;
}
.md-typeset table:not([class]) td {
  border-top: 1px solid var(--line);
  padding: .8em 1.1em;
}
.md-typeset table:not([class]) tbody tr:first-child td { border-top: 0; }   /* 免得和表头墨线叠成双线 */
/* 默认 hover 带 box-shadow inset 一条 bg 色，在纸白底上是一道浅缝，关掉 */
.md-typeset table:not([class]) tbody tr:hover {
  background-color: var(--coral-wash);
  box-shadow: none;
}

/* ================================================================
   7. admonition / details（22 篇）
   modern 把 12 个 type 的底色与图标色写死成 hex，变量改不动，只能写选择器。
   做法：每个 type 只在容器上设一个 --adm（Material 原色），左竖条 / 图标 / 底色全从它派生。
   普通提示框与可折叠块共用一套语言（左侧 type 色短竖线 + 1px 引导线 + 缩进内容），
   区别只在标题行：提示框是图标 + 墨字、不可点；折叠块是 type 色描边 + 箭头，hover/展开整条填色。
   特异度：用 [class] 把容器顶到和 .md-typeset .admonition.note 一样的 3 类，靠源序赢；
   注意 [dir=ltr] 按 class 计数，Zensical 的 [dir=ltr] .md-typeset .admonition-title 是 3 类，
   所以标题的 padding-left:1.6rem / 图标 left:0 直接沿用，不去硬碰。
   ================================================================ */
/* 普通提示框：和折叠块同一套语言 —— 去底去框，左侧 type 色短竖线 + 一根 1px 引导线接住内容，
   标题行是 type 色图标 + 墨色粗体（没有箭头、没有填色条，一眼看出不可点）。 */
.md-typeset .admonition[class] {
  position: relative;
  background: transparent;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  margin: 1.2em 0;
  padding: 0 0 0 .8rem;
  font-size: .72rem;
}
/* 短竖线：默认与 details 展开态同高；hover 整个提示框时从顶端拉长到全文底部，把引导线"填满" */
.md-typeset .admonition[class]::after {
  content: "";
  position: absolute;
  left: 0;
  top: .45rem;                           /* 1.1rem 中线 − 1.3rem/2 */
  width: 3px;
  height: 1.3rem;
  background: var(--adm, #448aff);
  transition: height .35s cubic-bezier(.4, 0, .2, 1);
}
.md-typeset .admonition[class]:hover::after { height: calc(100% - .45rem - .4rem); }   /* 到引导线的底端 */
.md-typeset .admonition[class]::before {  /* 引导线 */
  content: "";
  position: absolute;
  left: 1px;
  top: 1.8rem;
  bottom: .4rem;
  width: 1px;
  background: var(--line);
}
/* type → 颜色（Material 原色，含别名）。--adm 不在容器规则里给默认值，否则 3 类会压过这里的 2 类 */
.md-typeset .note                                              { --adm: #448aff; }
.md-typeset .abstract, .md-typeset .summary, .md-typeset .tldr { --adm: #00b0ff; }
.md-typeset .info, .md-typeset .todo                           { --adm: #00b8d4; }
.md-typeset .tip, .md-typeset .hint, .md-typeset .important    { --adm: #00bfa5; }
.md-typeset .success, .md-typeset .check, .md-typeset .done    { --adm: #00c853; }
.md-typeset .question, .md-typeset .help, .md-typeset .faq     { --adm: #64dd17; }
.md-typeset .warning, .md-typeset .caution, .md-typeset .attention { --adm: #ff9100; }
.md-typeset .failure, .md-typeset .fail, .md-typeset .missing  { --adm: #ff5252; }
.md-typeset .danger, .md-typeset .error                        { --adm: #ff1744; }
.md-typeset .bug                                               { --adm: #f50057; }
.md-typeset .example                                           { --adm: #7c4dff; }
.md-typeset .quote, .md-typeset .cite                          { --adm: #9e9e9e; }

/* 标题行。带 [dir=ltr]：Zensical 的 [dir=ltr] .md-typeset .admonition-title{padding-left:1.6rem} 是 3 类 */
[dir=ltr] .md-typeset .admonition-title {
  display: flex;
  align-items: center;
  min-height: 2.2rem;
  margin: 0;
  padding: .35rem .8rem .35rem 2.1rem;
  background: transparent;
  color: var(--ink);
  font-size: .76rem;
  font-weight: 600;
  line-height: 1.4;
}
/* 图标：type 色，垂直居中。Zensical per-type 规则 .md-typeset .note>.admonition-title:before 是 (0,3,1) */
[dir=ltr] .md-typeset .admonition > .admonition-title:before {
  background-color: var(--adm, #448aff);
  left: .65rem;
  top: 50%;
  transform: translateY(-50%);
  width: .9rem;
  height: .9rem;
}
/* 内容缩进到和标题文字对齐 */
.md-typeset .admonition[class] > :not(.admonition-title) { margin-left: 2.1rem; }
.md-typeset .admonition[class] > .admonition-title + * { margin-top: .3em; }   /* 标题和首段别隔一整行 */
.md-typeset .admonition[class] > :last-child { margin-bottom: .2em; }
@media screen and (max-width: 59.984375em) {
  .md-typeset .admonition[class] > :not(.admonition-title) { margin-left: .8rem; }
}

/* ---------- 可折叠块 details：去底的"阳变阴"面板 ----------
   summary 平时透明 + 1px 描边，hover / 展开时整条填成 type 色、文字反白；左侧短竖线和箭头也是 type 色。
   Zensical 的 summary:before 本是 type 图标（mask），这里把它改造成竖线：mask 置 none 即可。
   选择器统一带 [dir=ltr]：Zensical 的 [dir=ltr] .md-typeset summary{padding-left}/:before{left}/:after{right}
   是 (0,2,1)/(0,2,2)，裸 <details> 没有 [class] 可借，不加前缀就输。 */
.md-typeset details[class],
.md-typeset details {
  position: relative;
  background: transparent;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  margin: 1.2em 0;
  padding: 0 0 0 .8rem;                  /* 左侧留出竖线与引导线的位置 */
  font-size: .72rem;
}
[dir=ltr] .md-typeset details > summary {
  display: flex;
  align-items: center;
  min-height: 2.2rem;
  margin: 0;
  padding: .35rem .8rem .35rem 2.1rem;   /* 左侧给箭头留 1rem + 间距 */
  background: transparent;
  border: 1px solid var(--adm, #448aff); /* 收起时留一圈 type 色描边，不然一行字在正文里找不到 */
  color: var(--ink);
  font-size: .76rem;
  font-weight: 600;
  line-height: 1.4;
  cursor: pointer;
  user-select: none;
  transition: background-color .3s cubic-bezier(.4, 0, .2, 1), color .3s cubic-bezier(.4, 0, .2, 1),
              border-color .3s cubic-bezier(.4, 0, .2, 1);
}
/* hover / 展开：整条填成 type 色，文字与箭头反白 */
[dir=ltr] .md-typeset details > summary:hover,
[dir=ltr] .md-typeset details[open] > summary {
  background: var(--adm, #448aff);
  border-color: var(--adm, #448aff);
  color: #fff;
}
[dir=ltr] .md-typeset details > summary:hover:after,
[dir=ltr] .md-typeset details[open] > summary:after { color: #fff; }
/* 左侧短竖线：挂在 details::after 上，不能挂 summary:before —— Chrome 会把 <summary> 的绝对定位伪元素
   裁在 summary 自己的盒子里，负 left 直接不可见（实测）。details 的伪元素不受此限。
   默认 12px，hover / 展开拉长到约 summary 高度的 60%。 */
[dir=ltr] .md-typeset details > summary:before { display: none; }   /* 原 type 图标，不再用 */
.md-typeset details::after {
  content: "";
  position: absolute;
  left: 0;
  top: .45rem;                           /* 与展开态 1.3rem 竖线的顶端对齐，向下生长 */
  width: 3px;
  height: 12px;
  margin-top: calc(.65rem - 6px);        /* 闭合态 12px 短线仍居中在 summary 中线 (1.1rem) */
  background: var(--adm, #448aff);
  transition: height .3s ease, margin-top .3s ease;
}
.md-typeset details:hover::after,
.md-typeset details[open]::after { margin-top: 0; }
.md-typeset details:hover::after,
.md-typeset details[open]::after { height: 1.3rem; }
/* 展开后再 hover 整块：竖线沿引导线拉到全文底部，和提示框同一行为 */
.md-typeset details[open]:hover::after { height: calc(100% - .45rem - .4rem); }
/* 箭头挪到左侧，展开转 90° */
[dir=ltr] .md-typeset details > summary:after {
  color: var(--adm, #448aff);
  right: auto;
  left: .7rem;
  top: 50%;
  transform: translateY(-50%) rotate(0deg);
  transition: transform .3s cubic-bezier(.4, 0, .2, 1);
}
[dir=ltr] .md-typeset details[open] > summary:after { transform: translateY(-50%) rotate(90deg); }
/* 展开内容：缩进到和标题文字对齐，左侧一根 1px 引导线接住上面的短竖线
   （引导线从 1rem 起画，上半段被反白的 summary 盖住，标题换行也不会露头） */
[dir=ltr] .md-typeset details[open]::before {
  content: "";
  position: absolute;
  left: 1px;                             /* 居中在 3px 短竖线之下 */
  top: 1rem;
  bottom: .4rem;
  width: 1px;
  background: var(--line);
}
[dir=ltr] .md-typeset details[open] > :not(summary) {
  margin-left: 2.1rem;
  animation: zx-details-in .35s ease-out;
}
[dir=ltr] .md-typeset details[open] > summary + * { margin-top: .5em; }
[dir=ltr] .md-typeset details[open] > :last-child { margin-bottom: .2em; }
@keyframes zx-details-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}
@media screen and (max-width: 59.984375em) {
  [dir=ltr] .md-typeset details[open] > :not(summary) { margin-left: .8rem; }
}

/* ================================================================
   8. tabbed / 脚注 / 容器
   ================================================================ */
/* 选项卡和提示框 / 折叠块同一套语言：左侧荧光绿短竖线标在标签行，1px 引导线接住当前选项卡的内容，
   内容缩进 —— 左右切换时一眼看出哪段正文是"属于这个选项卡的"。hover 整块时竖线拉到底。 */
.md-typeset .tabbed-set {
  position: relative;
  padding-left: .8rem;
}
.md-typeset .tabbed-set::after {               /* 短竖线，对齐标签行 */
  content: "";
  position: absolute;
  left: 0;
  top: .3rem;
  width: 3px;
  height: 1.2rem;
  background: var(--coral);
  z-index: 1;
  transition: height .35s cubic-bezier(.4, 0, .2, 1);
}
.md-typeset .tabbed-set:hover::after { height: calc(100% - .3rem - .3rem); }
.md-typeset .tabbed-set::before {              /* 引导线 */
  content: "";
  position: absolute;
  left: 1px;
  top: 1.9rem;
  bottom: .3rem;
  width: 1px;
  background: var(--line);
}
.md-typeset .tabbed-block { padding-left: 1.3rem; }   /* .8 + 1.3 = 2.1rem，与提示框正文同一缩进 */
/* 顶层选项卡的标签条默认 margin:0 -.8rem 做全出血滚动；有了左侧竖线后左边不能再顶出去 */
[dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels { margin-left: 0; padding-left: 0; }
.md-typeset .tabbed-labels { box-shadow: 0 -1px var(--line) inset; }
.md-typeset .tabbed-labels > label { color: var(--ink-mute); font-weight: 700; }
.md-typeset .tabbed-labels > label:hover { color: var(--ink); }
.js .md-typeset .tabbed-labels:before { background: var(--coral); height: 2px; }
/* 选中标签的 color 由一条 16 项巨链给出，值是 var(--md-default-fg-color) —— tokens 已重指为墨，不用碰 */

.md-typeset .footnote {
  border-top: 1px solid var(--line);
  padding-top: .6em;
  color: var(--ink-mute);
}

.md-typeset .mermaid {
  background: var(--bone);
  border: 1px solid var(--line);
  padding: 1em .6em;
  margin: 1.4em 0;
}
/* echarts：vendor/echarts-init.js 把 pre.echarts 整个 replaceWith 成 div.echarts-chart（高度内联 px）。
   不加 padding —— echarts 按 clientHeight 画，padding 会让图撞框 */
.md-typeset .echarts-chart {
  background: var(--bone);
  border: 1px solid var(--line);
}
/* iframe demo（129 处）：md 里行内写死了 border:1px solid #8884; border-radius:10px。
   行内样式只能被作者 !important 打败；替代方案是 sed 改 129 个文件，更贵且不可逆。 */
.md-typeset iframe {
  border: 1px solid var(--line) !important;
  border-radius: 0 !important;
  background: var(--bone);
  box-shadow: var(--shadow);
}

/* ================================================================
   9. 页脚 / 回到顶部 / 复制提示
   ================================================================ */
.md-footer { border-top: 1px solid var(--ink); }
.md-footer-meta {
  background-color: var(--paper-dark);
  border-top: 1px solid var(--line);
}
.md-copyright { color: var(--ink-mute); }
.md-copyright__highlight { color: var(--ink); }

.md-top {
  background-color: var(--bone);
  border: 1px solid var(--ink);
  box-shadow: var(--zx-sticker);
  color: var(--ink-mute);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.md-top:hover,
.md-top:focus { background-color: var(--coral); color: var(--ink); }

.md-dialog { background-color: var(--ink); }      /* 默认吃 accent，会是一块绿 toast */
.md-dialog__inner { color: var(--paper); }
