/* ============================================================================
   AI-PM — hpc101 设计语言主题样式(extra.css)

   设计契约(实测 https://hpc101.zjusct.io/ 计算样式,亮/暗双主题照搬):
   - 白底(暗:#0B0C0F 蓝调黑)+ indigo(#4051b5)/ accent(#526cfe)克制学术风
   - 全站唯一玻璃:顶栏 .md-header(blur 8px);其余组件纯色或透明,无 backdrop-filter
   - 无背景光斑(body::before 已删)、无 hero 光晕、无装饰动画
   ============================================================================ */

/* 0. 字体引入(必须位于文件最前,@import 先于一切规则) */
@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans:wght@400;500;700&family=Noto+Sans+SC:wght@400;500;700&display=swap");

/* ----------------------------------------------------------------------------
   1. hpc101 设计 token(亮色)
   ---------------------------------------------------------------------------- */
:root {
  /* 品牌色 */
  --pm-primary: #4051b5;
  --pm-accent: #526cfe;
  --pm-accent-soft: rgba(82, 108, 254, .1);
  --pm-admonition-bg: rgba(68, 138, 255, .1);

  /* 中性色(白底灰字) */
  --pm-ink: rgba(0, 0, 0, .87);
  --pm-muted: rgba(0, 0, 0, .6);
  --pm-faint: rgba(0, 0, 0, .4);
  --pm-line: rgba(0, 0, 0, .12);

  /* 代码与表格 */
  --pm-code-bg: #f6f8fa;
  --pm-code-border: rgba(0, 0, 0, .1);
  --pm-zebra: rgba(0, 0, 0, .025);

  /* 卡片 */
  --pm-card-bg: #ffffff;
  --pm-card-hover-shadow: 0 2px 8px rgba(0, 0, 0, .06),
                          0 10px 22px rgba(0, 0, 0, .08);

  /* 字体(覆盖主题 font: 配置注入的 --md-text-font / --md-code-font) */
  --md-text-font: "Noto Sans", "Noto Sans SC", -apple-system, "Segoe UI",
                  "PingFang SC", "Microsoft YaHei", sans-serif;
  --md-code-font: "JetBrains Mono", "Fira Mono", ui-monospace, SFMono-Regular,
                  Menlo, Consolas, monospace;
  --md-text-font-family: var(--md-text-font);
  --md-code-font-family: var(--md-code-font);
}

/* ----------------------------------------------------------------------------
   2. Material 主题变量映射(亮色)
      双属性选择器:与 palette.css 的同级规则持平,靠加载顺序取胜
   ---------------------------------------------------------------------------- */
[data-md-color-scheme="default"][data-md-color-scheme="default"] {
  --md-default-bg-color: #ffffff;
  --md-default-bg-color--light: rgba(255, 255, 255, .85);
  --md-default-bg-color--lighter: rgba(255, 255, 255, .55);
  --md-default-bg-color--lightest: rgba(255, 255, 255, .28);

  --md-default-fg-color: rgba(0, 0, 0, .87);
  --md-default-fg-color--light: rgba(0, 0, 0, .6);
  --md-default-fg-color--lighter: rgba(0, 0, 0, .4);
  --md-default-fg-color--lightest: rgba(0, 0, 0, .12);

  --md-primary-fg-color: #4051b5;
  --md-primary-fg-color--light: #6a7ad0;
  --md-primary-fg-color--dark: #34408f;
  --md-primary-bg-color: #ffffff;
  --md-primary-bg-color--light: rgba(255, 255, 255, .75);

  --md-accent-fg-color: #526cfe;
  --md-accent-fg-color--transparent: rgba(82, 108, 254, .1);
  --md-accent-bg-color: #ffffff;

  --md-typeset-a-color: #4051b5;

  --md-code-fg-color: #1f2328;
  --md-code-bg-color: #f6f8fa;
  --md-code-hl-color: #e8eafd;
  --md-code-hl-color--light: rgba(82, 108, 254, .12);
  --md-code-hl-number-color: #b25e09;
  --md-code-hl-special-color: #cf2f6e;
  --md-code-hl-function-color: #6f42c1;
  --md-code-hl-constant-color: #6f42c1;
  --md-code-hl-keyword-color: #4051b5;
  --md-code-hl-string-color: #1a7f37;
  --md-code-hl-name-color: var(--md-code-fg-color);
  --md-code-hl-operator-color: #57606a;
  --md-code-hl-punctuation-color: #57606a;
  --md-code-hl-comment-color: #8a9199;
  --md-code-hl-generic-color: #57606a;
  --md-code-hl-variable-color: #1f2328;

  --md-typeset-mark-color: rgba(255, 213, 0, .35);
  --md-typeset-del-color: rgba(255, 82, 82, .12);
  --md-typeset-ins-color: rgba(0, 200, 83, .12);
  --md-typeset-kbd-color: #f6f8fa;
  --md-typeset-kbd-accent-color: #eaeef2;
  --md-typeset-kbd-border-color: rgba(0, 0, 0, .25);
  --md-typeset-table-color: rgba(0, 0, 0, .12);
  --md-typeset-table-color--light: rgba(0, 0, 0, .035);

  --md-admonition-fg-color: rgba(0, 0, 0, .87);
  --md-admonition-bg-color: rgba(68, 138, 255, .1);
  --md-warning-fg-color: rgba(0, 0, 0, .87);
  --md-warning-bg-color: rgba(68, 138, 255, .1);

  --md-footer-fg-color: rgba(0, 0, 0, .6);
  --md-footer-fg-color--light: rgba(0, 0, 0, .42);
  --md-footer-fg-color--lighter: rgba(0, 0, 0, .32);
  --md-footer-bg-color: #ffffff;
  --md-footer-bg-color--dark: #ffffff;

  --md-shadow-z1: 0 .2rem .5rem rgba(0, 0, 0, .06), 0 0 .05rem rgba(0, 0, 0, .1);
  --md-shadow-z2: 0 .2rem .5rem rgba(0, 0, 0, .12), 0 0 .05rem rgba(0, 0, 0, .25);
  --md-shadow-z3: 0 .2rem .5rem rgba(0, 0, 0, .18), 0 0 .05rem rgba(0, 0, 0, .35);
}

/* ----------------------------------------------------------------------------
   3. 暗色模式:hpc101 slate(#0B0C0F 蓝调黑)
   ---------------------------------------------------------------------------- */
[data-md-color-scheme="slate"] {
  --pm-primary: #4051b5;
  --pm-accent: #526cfe;
  --pm-accent-soft: rgba(82, 108, 254, .1);
  --pm-admonition-bg: rgba(68, 138, 255, .1);

  --pm-ink: hsla(225, 15%, 90%, .82);
  --pm-muted: hsla(225, 15%, 90%, .6);
  --pm-faint: hsla(225, 15%, 90%, .4);
  --pm-line: rgba(255, 255, 255, .12);

  --pm-code-bg: hsla(225, 20%, 10%);
  --pm-code-border: rgba(255, 255, 255, .1);
  --pm-zebra: rgba(255, 255, 255, .03);

  --pm-card-bg: hsla(225, 15%, 7%);
  --pm-card-hover-shadow: 0 2px 8px rgba(0, 0, 0, .4),
                          0 12px 26px rgba(0, 0, 0, .45);
}

[data-md-color-scheme="slate"][data-md-color-scheme="slate"] {
  --md-default-bg-color: #0B0C0F;
  --md-default-bg-color--light: rgba(11, 12, 15, .85);
  --md-default-bg-color--lighter: rgba(11, 12, 15, .55);
  --md-default-bg-color--lightest: rgba(11, 12, 15, .28);

  --md-default-fg-color: hsla(225, 15%, 90%, .82);
  --md-default-fg-color--light: hsla(225, 15%, 90%, .6);
  --md-default-fg-color--lighter: hsla(225, 15%, 90%, .4);
  --md-default-fg-color--lightest: hsla(225, 15%, 90%, .12);

  --md-primary-fg-color: #526cfe;
  --md-primary-fg-color--light: #7a8cff;
  --md-primary-fg-color--dark: #34408f;
  --md-primary-bg-color: #0B0C0F;
  --md-primary-bg-color--light: rgba(11, 12, 15, .75);

  --md-accent-fg-color: #526cfe;
  --md-accent-fg-color--transparent: rgba(82, 108, 254, .1);
  --md-accent-bg-color: #0B0C0F;

  --md-typeset-a-color: #526cfe;

  --md-code-fg-color: hsla(225, 20%, 80%);
  --md-code-bg-color: hsla(225, 20%, 10%);
  --md-code-hl-color: rgba(82, 108, 254, .18);
  --md-code-hl-color--light: rgba(82, 108, 254, .14);
  --md-code-hl-number-color: #f2a60d;
  --md-code-hl-special-color: #f778ba;
  --md-code-hl-function-color: #d2a8ff;
  --md-code-hl-constant-color: #d2a8ff;
  --md-code-hl-keyword-color: #8ea6ff;
  --md-code-hl-string-color: #7ee787;
  --md-code-hl-name-color: var(--md-code-fg-color);
  --md-code-hl-operator-color: #8b949e;
  --md-code-hl-punctuation-color: #8b949e;
  --md-code-hl-comment-color: #8b949e;
  --md-code-hl-generic-color: #8b949e;
  --md-code-hl-variable-color: #e6edf3;

  --md-typeset-mark-color: rgba(242, 166, 13, .4);
  --md-typeset-del-color: rgba(255, 82, 82, .2);
  --md-typeset-ins-color: rgba(0, 200, 83, .2);
  --md-typeset-kbd-color: rgba(255, 255, 255, .08);
  --md-typeset-kbd-accent-color: rgba(255, 255, 255, .14);
  --md-typeset-kbd-border-color: rgba(255, 255, 255, .35);
  --md-typeset-table-color: rgba(255, 255, 255, .12);
  --md-typeset-table-color--light: rgba(255, 255, 255, .04);

  --md-admonition-fg-color: hsla(225, 15%, 90%, .82);
  --md-admonition-bg-color: rgba(68, 138, 255, .1);
  --md-warning-fg-color: hsla(225, 15%, 90%, .82);
  --md-warning-bg-color: rgba(68, 138, 255, .1);

  --md-footer-fg-color: hsla(225, 15%, 90%, .6);
  --md-footer-fg-color--light: hsla(225, 15%, 90%, .42);
  --md-footer-fg-color--lighter: hsla(225, 15%, 90%, .32);
  --md-footer-bg-color: #0B0C0F;
  --md-footer-bg-color--dark: #0B0C0F;

  --md-shadow-z1: 0 .2rem .5rem rgba(0, 0, 0, .2), 0 0 .05rem rgba(0, 0, 0, .4);
  --md-shadow-z2: 0 .2rem .5rem rgba(0, 0, 0, .3), 0 0 .05rem rgba(0, 0, 0, .5);
  --md-shadow-z3: 0 .2rem .5rem rgba(0, 0, 0, .4), 0 0 .05rem rgba(0, 0, 0, .6);
}

/* ----------------------------------------------------------------------------
   4. 正文与标题:15px/27px 行高,h1 28px/700
   ---------------------------------------------------------------------------- */
.md-typeset {
  font-size: 15px;
  line-height: 1.8; /* 27px */
}

.md-typeset h1 {
  font-size: 1.75rem; /* 28px */
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -.01em;
  color: var(--md-default-fg-color);
}

[data-md-color-scheme="slate"] .md-typeset h1 {
  color: #ffffff;
}

/* ----------------------------------------------------------------------------
   5. Chrome 组件
   ---------------------------------------------------------------------------- */
/* 5.1 顶栏:全站唯一玻璃(blur 8px,无边框、无渐变高光条) */
.md-header {
  background-color: rgba(255, 255, 255, .7);
  box-shadow: rgba(0, 0, 0, .05) 0 1px 0 0;
  color: var(--pm-ink);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

[data-md-color-scheme="slate"] .md-header {
  background-color: rgba(11, 12, 15, .54);
  box-shadow: rgba(0, 0, 0, .3) 0 1px 0 0;
}

/* 滚动时仅阴影加深,无高光 */
.md-header.md-header--shadow {
  box-shadow: rgba(0, 0, 0, .05) 0 1px 0 0,
              0 4px 12px rgba(0, 0, 0, .05);
}

[data-md-color-scheme="slate"] .md-header.md-header--shadow {
  box-shadow: rgba(0, 0, 0, .3) 0 1px 0 0,
              0 4px 12px rgba(0, 0, 0, .25);
}

.md-header__button:hover {
  background-color: var(--pm-accent-soft);
  color: var(--pm-ink);
}

/* 不支持 backdrop-filter 时回退为实色 */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .md-header { background-color: #ffffff; }
  [data-md-color-scheme="slate"] .md-header { background-color: #0B0C0F; }
}

/* 5.2 Tab 栏:透明底,激活项 accent 胶囊 */
.md-tabs {
  background-color: transparent;
  color: var(--pm-muted);
  box-shadow: none;
}

.md-tabs__link {
  color: var(--pm-muted);
  border-radius: 999px;
  transition: color 125ms, background-color 125ms;
}

.md-tabs__link:hover { color: var(--pm-ink); }

.md-tabs__item--active .md-tabs__link {
  background-color: var(--pm-accent-soft);
  color: var(--pm-accent);
  opacity: 1;
}

/* 5.3 侧边栏 / toc:透明,激活项 accent 胶囊 */
.md-sidebar__inner {
  background-color: transparent;
  border: 0;
  box-shadow: none;
}

.md-nav__link {
  border-radius: .6rem;
  transition: color 125ms, background-color 125ms;
}

.md-nav__link:hover { color: var(--md-accent-fg-color); }

.md-sidebar .md-nav__item--active > .md-nav__link,
.md-nav--secondary .md-nav__link--active {
  color: var(--pm-accent);
  position: static;
}

/* 5.3.1 导航栏与文章交界线(粘性发丝线,由 header-line.js 注入,
   位于 .md-tabs 与正文之间):
   - 页顶两栏(tabs 常驻):线在 tabs 底缘(tabs 下方一条);
     滚动时线随内容上移,直到吸顶页头下缘(top 2.4rem)粘住 ——
     中间过渡段始终只有这一条线;
   - 一栏(tabs 随断点收起 display:none):线紧跟页头,页面顶/滚动后
     都在页头下缘一条;
   - z-index 与页头同级,盖过滚动正文与 tabs,始终唯一;
   - 高度 0 + border-top,不占布局。 */
.md-header__line {
  position: sticky;
  top: 2.4rem;                    /* 吸顶页头高度,线贴页头下缘 */
  z-index: 4;                     /* 与页头同级,晚于页头在 DOM 中 */
  height: 0;
  border-top: 1px solid var(--pm-line);
  pointer-events: none;
}
@media print {
  .md-header__line {
    display: none;
  }
}

/* 5.4 搜索:顶栏浅灰胶囊,下拉纯色卡片 */
.md-header .md-search__form {
  background-color: rgba(0, 0, 0, .05);
  border-radius: 999px;
  box-shadow: none;
}

.md-header .md-search__form:hover {
  background-color: rgba(0, 0, 0, .09);
}

.md-header .md-search__form:focus-within {
  background-color: #ffffff;
  box-shadow: 0 0 0 2px var(--pm-accent-soft),
              0 0 0 1px var(--pm-accent);
}

.md-header .md-search__icon { color: var(--pm-faint); }

.md-search__input { color: var(--pm-ink); }
.md-search__input::placeholder { color: var(--pm-faint); }
.md-search__suggest { color: var(--pm-faint); }

.md-search__output {
  background-color: #ffffff;
  border: 1px solid var(--pm-line);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
}

[data-md-color-scheme="slate"] .md-header .md-search__form {
  background-color: rgba(255, 255, 255, .08);
}

[data-md-color-scheme="slate"] .md-header .md-search__form:hover {
  background-color: rgba(255, 255, 255, .12);
}

[data-md-color-scheme="slate"] .md-header .md-search__form:focus-within {
  background-color: #0B0C0F;
  box-shadow: 0 0 0 2px rgba(82, 108, 254, .2),
              0 0 0 1px var(--pm-accent);
}

[data-md-color-scheme="slate"] .md-search__output {
  background-color: #0B0C0F;
  border-color: var(--pm-line);
}

/* 5.5 底栏:主题底色 + 顶部分隔线 */
.md-footer {
  border-top: 1px solid var(--pm-line);
}

.md-footer-meta { background-color: transparent; }

.md-footer__link:hover,
.md-footer__link:focus {
  color: var(--md-accent-fg-color);
}

/* 5.6 回顶按钮(内置 .md-top) */
.md-top {
  background-color: #ffffff;
  border: 1px solid var(--pm-line);
  border-radius: 999px;
  color: var(--pm-muted);
}

.md-top:hover {
  background-color: var(--pm-accent-soft);
  color: var(--pm-accent);
}

[data-md-color-scheme="slate"] .md-top {
  background-color: #0B0C0F;
}

/* ----------------------------------------------------------------------------
   6. 内容区
   ---------------------------------------------------------------------------- */
/* 6.1 表格:主题底 + 2px 圆角 + 细边框 + 轻斑马纹 */
.md-typeset table:not([class]) {
  border-color: var(--pm-line);
  border-width: 1px;
  border-radius: 2px;
  box-shadow: none;
}

.md-typeset table:not([class]) tbody tr:nth-child(odd) {
  background-color: var(--pm-zebra);
}

.md-typeset table:not([class]) tbody tr:hover {
  background-color: var(--pm-accent-soft);
}

/* 6.2 代码块:低调实底 + 细边框 + 8px 圆角 */
.md-typeset .highlight > pre,
.md-typeset pre {
  background-color: var(--pm-code-bg);
  border: 1px solid var(--pm-code-border);
  border-radius: 8px;
  box-shadow: none;
}

/* 行号弱化 */
.md-typeset .linenos,
.md-typeset .linenodiv pre {
  background-color: transparent;
  color: var(--pm-faint);
}

/* 带行号表格容器统一底与圆角 */
.md-typeset .highlighttable {
  background-color: var(--pm-code-bg);
  border: 1px solid var(--pm-code-border);
  border-radius: 8px;
}

.md-typeset .highlighttable .highlight > pre,
.md-typeset .highlighttable pre {
  background-color: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

/* 6.3 admonition / details:淡蓝底 + 8px 圆角 + 左侧蓝系色条 */
.md-typeset .admonition,
.md-typeset details {
  background-color: var(--pm-admonition-bg);
  border-left-width: .22rem;
  border-radius: 8px;
  box-shadow: none;
}

.md-typeset details:not([class]) {
  border-color: var(--pm-accent);
}

/* 类型色:同一蓝系深浅(accent #526cfe 为基准) */
.md-typeset .admonition.note,     .md-typeset details.note     { border-color: #526cfe; }
.md-typeset .admonition.abstract, .md-typeset details.abstract { border-color: #526cfe; }
.md-typeset .admonition.info,     .md-typeset details.info     { border-color: #448aff; }
.md-typeset .admonition.tip,      .md-typeset details.tip      { border-color: #448aff; }
.md-typeset .admonition.success,  .md-typeset details.success  { border-color: #2f81f7; }
.md-typeset .admonition.question, .md-typeset details.question { border-color: #6e84ff; }
.md-typeset .admonition.warning,  .md-typeset details.warning  { border-color: #4051b5; }
.md-typeset .admonition.failure,  .md-typeset details.failure  { border-color: #4051b5; }
.md-typeset .admonition.danger,   .md-typeset details.danger   { border-color: #4051b5; }
.md-typeset .admonition.bug,      .md-typeset details.bug      { border-color: #526cfe; }
.md-typeset .admonition.example,  .md-typeset details.example  { border-color: #6e84ff; }
.md-typeset .admonition.quote,    .md-typeset details.quote    { border-color: var(--pm-faint); }

/* 标题图标同色 */
.md-typeset .note > .admonition-title:before,      .md-typeset .note > summary:before      { background-color: #526cfe; }
.md-typeset .abstract > .admonition-title:before,  .md-typeset .abstract > summary:before  { background-color: #526cfe; }
.md-typeset .info > .admonition-title:before,      .md-typeset .info > summary:before      { background-color: #448aff; }
.md-typeset .tip > .admonition-title:before,       .md-typeset .tip > summary:before       { background-color: #448aff; }
.md-typeset .success > .admonition-title:before,   .md-typeset .success > summary:before   { background-color: #2f81f7; }
.md-typeset .question > .admonition-title:before,  .md-typeset .question > summary:before  { background-color: #6e84ff; }
.md-typeset .warning > .admonition-title:before,   .md-typeset .warning > summary:before   { background-color: #4051b5; }
.md-typeset .failure > .admonition-title:before,   .md-typeset .failure > summary:before   { background-color: #4051b5; }
.md-typeset .danger > .admonition-title:before,    .md-typeset .danger > summary:before    { background-color: #4051b5; }
.md-typeset .bug > .admonition-title:before,       .md-typeset .bug > summary:before       { background-color: #526cfe; }
.md-typeset .example > .admonition-title:before,   .md-typeset .example > summary:before   { background-color: #6e84ff; }
.md-typeset .quote > .admonition-title:before,     .md-typeset .quote > summary:before     { background-color: var(--pm-faint); }

/* 6.4 任务列表:勾选状态 accent 化 */
.md-typeset .task-list-indicator:before {
  background-color: var(--pm-line);
}

.md-typeset [type="checkbox"]:checked + .task-list-indicator:before {
  background-color: var(--pm-accent);
}

/* 6.5 链接与 .md-button:克制的颜色过渡,无光晕 */
.md-typeset a {
  transition: color 125ms;
}

.md-typeset a:hover {
  color: var(--md-accent-fg-color);
}

.md-button {
  border-radius: 8px;
}

/* 6.6 引用:灰色系细左边框,克制 */
.md-typeset blockquote {
  border-left-color: rgba(0, 0, 0, .25);
  color: var(--pm-muted);
}

[data-md-color-scheme="slate"] .md-typeset blockquote {
  border-left-color: rgba(255, 255, 255, .25);
}

/* 页首/页尾 meta 引用(语义保留,换蓝系色) */
blockquote.page-time {
  margin: 20px 0 !important;
  border-left-color: var(--pm-accent) !important;
}

blockquote.page-copyright {
  margin: 20px 0 !important;
  border-left-color: var(--pm-faint) !important;
}

blockquote.page-copyright i.md-icon {
  display: inline-block;
  margin-right: 5px;
  transform: translateY(3.5px);
  width: 18px;
}

/* 6.7 图片:8px 圆角 + 轻描边;暗色下亮度/对比度微调 */
.md-typeset img {
  border: 1px solid var(--pm-line);
  border-radius: 8px;
}

[data-md-color-scheme="slate"] .md-typeset img {
  background: #ffffff;
  filter: brightness(.88) contrast(1.05);
}

[data-md-color-scheme="slate"] .md-typeset img[src$=".svg"] {
  border: 2px solid #ffffff;
}

/* ----------------------------------------------------------------------------
   7. 评论区与 404 页:纯色卡片,无玻璃
   ---------------------------------------------------------------------------- */
#__comments {
  margin-top: 2rem;
  padding: .8rem 1rem;
  background-color: #ffffff;
  border: 1px solid var(--pm-line);
  border-radius: 8px;
}

[data-md-color-scheme="slate"] #__comments {
  background-color: #0B0C0F;
}

.giscus {
  width: 100%;
}

/* 404 静态页:正文只有 页面标题 + hr + page-copyright + 评论区 */
.md-content__inner:has(> h1:first-child + hr + blockquote.page-copyright) {
  margin-top: 1rem;
  padding: 3rem 2rem;
  text-align: center;
  background-color: #ffffff;
  border: 1px solid var(--pm-line);
  border-radius: 8px;
}

[data-md-color-scheme="slate"] .md-content__inner:has(> h1:first-child + hr + blockquote.page-copyright) {
  background-color: #0B0C0F;
}

/* ----------------------------------------------------------------------------
   8. 滚动条:细圆角灰系,亮暗适配
   ---------------------------------------------------------------------------- */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 0, .22);
  border: 2px solid transparent;
  background-clip: content-box;
  border-radius: 999px;
}

::-webkit-scrollbar-thumb:hover {
  background-color: rgba(0, 0, 0, .35);
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb {
  background-color: rgba(255, 255, 255, .22);
}

[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb:hover {
  background-color: rgba(255, 255, 255, .35);
}

html {
  scrollbar-color: rgba(0, 0, 0, .35) transparent;
  scrollbar-width: thin;
}

[data-md-color-scheme="slate"] html {
  scrollbar-color: rgba(255, 255, 255, .35) transparent;
}

/* ----------------------------------------------------------------------------
   9. 响应式(≤760px)
   ---------------------------------------------------------------------------- */
@media screen and (max-width: 760px) {
  .md-content__inner:has(> h1:first-child + hr + blockquote.page-copyright) {
    padding: 2rem 1.2rem;
  }
}

/* ----------------------------------------------------------------------------
   10. 保留的既有站点样式(语义不变,仅换色)
   ---------------------------------------------------------------------------- */
/* Logo title */
.md-header__topic:first-child {
  font-weight: initial !important;
}

/* Code font size in <details> */
details .linenos, details code {
  font-size: inherit !important;
}

/* Code block / tab in details */
details > summary + .highlight, details > summary + .tabbed-set { margin: 0 -0.6rem !important; }
details > summary + .highlight > .highlighttable { margin: 0 !important; }

/* Table full width */
.md-typeset__table { display: block !important; }
.md-typeset table:not(.highlighttable) { display: table !important; }

.md-typeset table:not([class]) th {
    min-width: 0rem;
}

.headerlink { transform: translateY(-2.5px); }

.md-nav__link[for=__toc] .md-icon { margin-left: auto !important; }

#color-button > button {
  cursor: pointer;
  transition: opacity .25s;
  display: inline-block;
  width: 6.5rem;
  margin-bottom: 0.2rem;
  padding: 1.2rem 0.4rem 0.2rem;
  font-size: 0.64rem;
  text-align: left;
}

#color-button > button[data-md-color-primary] {
  background-color: var(--md-primary-fg-color);
  color: var(--md-primary-bg-color);
}
#color-button > button[data-md-color-primary=white] {
  box-shadow: inset 0 0 0.05rem rgb(0 0 0 / 54%);
}

#color-button > button[data-md-color-accent] {
  background-color: var(--md-accent-fg-color);
  color: var(--md-code-bg-color);
}

mjx-container > img {
  width: 0;
  height: 0;
}

div.md-typeset__scrollwrap:has(table[data-review-enabled]) {
  overflow: visible;
}

/* ----------------------------------------------------------------------------
   11. 首页 hero / 卡片 / 按钮(hpc101 式简洁:无玻璃、无光晕、无动画)
   ---------------------------------------------------------------------------- */

/* 11.1 首页容器:与 .md-grid 同宽,正文等宽居中 */
.pm-home-body {
  max-width: 61rem;
  margin-right: auto;
  margin-left: auto;
}

/* 11.2 hero:层级 eyebrow > banner > h1 > tagline > 按钮;子元素入场编排见 11.8 */
.pm-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .9rem;
  padding: 2.75rem 1rem 2.25rem;
  text-align: center;
}

/* 眉题:等宽大写小字,与 banner 的 micro 标签同语言 */
.pm-hero__eyebrow {
  margin: 0;
  font-family: var(--md-code-font);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--pm-accent);
}

.pm-hero .site-name {
  margin: 0;
  font-size: 2.4rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -.02em;
  color: var(--pm-ink);
}

.pm-hero .tagline {
  max-width: 42rem;
  margin: .2rem auto 0;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--pm-muted);
  text-wrap: balance; /* 避免末行孤字 */
}

.pm-hero__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  margin-top: .2rem;
}

/* 11.3 按钮(.pm-btn 系)
   注:`.md-typeset a`(0,1,1)与 `md-typeset a:focus/:hover`(0,2,1)的链接色
   优先级高于 `.pm-btn`(0,1,0),会覆盖按钮文字色;故所有作用于 <a> 按钮的规则
   都配 `.md-typeset a.pm-btn…` 前置选择器提权(0,2,1/0,3,1)。
   `.pm-btn--search` 是 <button>,不适用,保留原选择器。 */
.md-typeset a.pm-btn,
.pm-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  padding: .6em 1.4em;
  border: 1px solid transparent;
  border-radius: 8px;
  font-family: inherit;
  font-size: .95rem;
  font-weight: 600;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background-color 150ms ease, border-color 150ms ease,
              color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

.md-typeset a.pm-btn:hover,
.md-typeset a.pm-btn:focus-visible,
.pm-btn:hover,
.pm-btn:focus-visible {
  transform: translateY(-1px);
}

.md-typeset a.pm-btn:active,
.pm-btn:active {
  transform: translateY(0);
}

.md-typeset a.pm-btn:focus-visible,
.pm-btn:focus-visible {
  outline: 2px solid var(--pm-accent);
  outline-offset: 2px;
}

/* 主按钮:accent 实色底 + 白字 + hover 加深(无渐变) */
.md-typeset a.pm-btn--primary,
.pm-btn--primary {
  color: #ffffff;
  background-color: #4051b5;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}

.md-typeset a.pm-btn--primary:hover,
.md-typeset a.pm-btn--primary:focus-visible,
.pm-btn--primary:hover,
.pm-btn--primary:focus-visible {
  color: #ffffff;
  background-color: #3a4aa5;
  box-shadow: 0 2px 6px rgba(64, 81, 181, .28);
}

/* 幽灵按钮:白底 + 细边框 + hover 淡蓝底 */
.md-typeset a.pm-btn--ghost,
.pm-btn--ghost {
  color: var(--pm-ink);
  background-color: #ffffff;
  border-color: var(--pm-line);
}

[data-md-color-scheme="slate"] .md-typeset a.pm-btn--ghost,
[data-md-color-scheme="slate"] .pm-btn--ghost {
  background-color: transparent;
}

.md-typeset a.pm-btn--ghost:hover,
.md-typeset a.pm-btn--ghost:focus-visible,
.pm-btn--ghost:hover,
.pm-btn--ghost:focus-visible {
  background-color: var(--pm-accent-soft);
  border-color: var(--pm-accent);
  color: var(--pm-accent);
}

/* 搜索按钮:ghost 胶囊 + 放大镜图标(纯样式,点击聚焦行为在模板) */
.pm-btn--search {
  border-radius: 999px;
  color: var(--pm-muted);
  background-color: #ffffff;
  border-color: var(--pm-line);
}

[data-md-color-scheme="slate"] .pm-btn--search {
  background-color: transparent;
}

.pm-btn--search::before {
  content: "";
  display: inline-block;
  width: 1.05em;
  height: 1.05em;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2.2'%20stroke-linecap='round'%3E%3Ccircle%20cx='11'%20cy='11'%20r='7'/%3E%3Cline%20x1='16.4'%20y1='16.4'%20x2='21'%20y2='21'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml;utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2.2'%20stroke-linecap='round'%3E%3Ccircle%20cx='11'%20cy='11'%20r='7'/%3E%3Cline%20x1='16.4'%20y1='16.4'%20x2='21'%20y2='21'/%3E%3C/svg%3E") no-repeat center / contain;
}

.pm-btn--search:hover,
.pm-btn--search:focus-visible {
  color: var(--pm-accent);
  background-color: var(--pm-accent-soft);
  border-color: var(--pm-accent);
}

/* 11.4 卡片网格:桌面 3 列 → 平板 2 列 → 移动 1 列 */
.pm-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  padding: 1.5rem 0 3rem;
}

@media screen and (max-width: 960px) {
  .pm-card-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .pm-card-grid {
    grid-template-columns: 1fr;
  }
}

/* 11.5 栏目卡片:白底(暗:hsla(225,15%,7%))+ 细边框 + hover 上浮 accent;
   无玻璃、无光晕 */
.pm-card {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  padding: 1.25rem;
  border: 1px solid var(--pm-line);
  border-radius: 8px;
  background-color: var(--pm-card-bg);
  color: var(--pm-ink);
  text-decoration: none;
  transition: transform 150ms ease, box-shadow 150ms ease,
              border-color 150ms ease, background-color 150ms ease;
}

/* 卡片图标:手绘 stroke 风(lucide 语言),faint → hover accent */
.pm-card__icon {
  width: 22px;
  height: 22px;
  margin-bottom: .1rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
  color: var(--pm-faint);
  transition: color 150ms ease;
}

.pm-card__title {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--pm-ink);
  transition: color 150ms ease;
}

.pm-card__desc {
  font-size: .85rem;
  line-height: 1.65;
  color: var(--pm-muted);
}

.pm-card:hover,
.pm-card:focus-visible {
  transform: translateY(-2px);
  border-color: var(--pm-accent);
  box-shadow: var(--pm-card-hover-shadow);
}

.pm-card:hover .pm-card__title,
.pm-card:focus-visible .pm-card__title {
  color: var(--pm-accent);
}

.pm-card:hover .pm-card__icon,
.pm-card:focus-visible .pm-card__icon {
  color: var(--pm-accent);
}

/* 11.6 响应式 hero 与按钮 */
@media screen and (max-width: 600px) {
  .pm-home-body {
    padding: 0 .6rem;
  }

  .pm-hero {
    padding: 2rem 1rem 1.75rem;
  }

  .pm-hero .site-name {
    font-size: 1.6rem;
  }

  .pm-hero__cta {
    flex-direction: column;
    gap: .6rem;
  }

  .pm-hero__cta .pm-btn,
  .pm-btn--search {
    width: 100%;
  }
}

/* 11.7 减少动态:关闭位移过渡 */
@media (prefers-reduced-motion: reduce) {
  .md-typeset a.pm-btn,
  .pm-btn,
  .pm-card {
    transition: none;
  }

  .md-typeset a.pm-btn:hover,
  .md-typeset a.pm-btn:focus-visible,
  .pm-btn:hover,
  .pm-btn:focus-visible,
  .pm-card:hover,
  .pm-card:focus-visible {
    transform: none;
  }
}

/* 11.8 首屏入场编排:hero 子元素(眉题/banner/品牌/CTA/搜索)依次淡入上浮,
   再轮到卡片网格;RM 降级在此块内部末尾,保证覆盖上面的 animation 声明 */
@keyframes pm-rise {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: none; }
}

.pm-hero > * {
  animation: pm-rise .55s cubic-bezier(.2, .7, .3, 1) both;
}

.pm-hero > :nth-child(2) { animation-delay: .06s; }
.pm-hero > :nth-child(3) { animation-delay: .12s; }
.pm-hero > :nth-child(4) { animation-delay: .18s; }
.pm-hero > :nth-child(5) { animation-delay: .24s; }

.pm-banner {
  animation: pm-rise .6s cubic-bezier(.2, .7, .3, 1) .28s both;
}

.pm-card {
  animation: pm-rise .5s cubic-bezier(.2, .7, .3, 1) both;
}

.pm-card:nth-child(1) { animation-delay: .36s; }
.pm-card:nth-child(2) { animation-delay: .41s; }
.pm-card:nth-child(3) { animation-delay: .46s; }
.pm-card:nth-child(4) { animation-delay: .51s; }
.pm-card:nth-child(5) { animation-delay: .56s; }
.pm-card:nth-child(6) { animation-delay: .61s; }
.pm-card:nth-child(7) { animation-delay: .66s; }

@media (prefers-reduced-motion: reduce) {
  .pm-hero > *,
  .pm-banner,
  .pm-card {
    animation: none;
  }
}

/* ----------------------------------------------------------------------------
   12. 首页 banner:「等势线地形 · Carved AIPM」(WebGL,2026-08-23 第三版,
       取代粒子聚字版——粒子散开可读性差、与等势线同层打架)
       WebGL fragment shader 实时渲染 domain-warped fbm 标量场;AIPM 字形纹理
       在 shader 内把场压平成盆地——等势线字内消失、字缘堆叠成环;另取字形
       遮罩 0.5 等值线常绘边缘轮廓(呼吸 + 指针增亮,多数时段清晰),
       字母由地形负形 + 轮廓线显现 + 极淡 accent 洗色;3 颗环境电荷游走,
       指针移入注入第四颗。
       双层 canvas(--gl 场层 + --ink 标签层,仅 6 枚主题 micro 标签),
       无 WebGL 降级为 2D 静态帧;prefers-reduced-motion 单帧;
       实现详见 _static/js/banner.js。
       token 七色:细线/计曲线/网格/字形洗色/正文/浅淡(标签)/强调,
       亮暗各一套;JS 只解析 hex/rgb()/rgba(),token 请勿用 hsl()/hsla()。
   ---------------------------------------------------------------------------- */
:root {
  --pm-banner-line: rgba(64, 81, 181, .2);
  --pm-banner-major: rgba(64, 81, 181, .6);
  --pm-banner-grid: rgba(0, 0, 0, .05);
  --pm-banner-glyph: rgba(64, 81, 181, .09);
  --pm-banner-ink: rgba(30, 36, 54, .78);
  --pm-banner-faint: rgba(30, 36, 54, .42);
  --pm-banner-accent: rgba(64, 81, 181, .95);
}

[data-md-color-scheme="slate"] {
  --pm-banner-line: rgba(142, 166, 255, .3);
  --pm-banner-major: rgba(142, 166, 255, .78);
  --pm-banner-grid: rgba(255, 255, 255, .06);
  --pm-banner-glyph: rgba(142, 166, 255, .12);
  --pm-banner-ink: rgba(232, 233, 238, .85);
  --pm-banner-faint: rgba(232, 233, 238, .5);
  --pm-banner-accent: rgba(142, 166, 255, .95);
}

/* 12.1 容器:圆角卡片,与站点卡片语言一致(1px 描边 + 大圆角);
   位于首页 hero(替代原 logo 位),宽度收敛到 61rem 与正文同宽 */
.pm-banner {
  position: relative;
  width: 100%;
  aspect-ratio: 5 / 2;
  min-height: 210px;
  margin: .9rem 0 1.4rem;
  border: 1px solid var(--pm-line);
  border-radius: 18px;
  overflow: hidden;
  background: var(--md-default-bg-color);
  isolation: isolate;
}

.pm-hero .pm-banner {
  max-width: 61rem;
  margin: .4rem 0 .2rem;
}

@media (max-width: 640px) {
  .pm-banner {
    aspect-ratio: 2 / 1;
  }
}

/* 12.2 画布:WebGL 场层(--gl)与 2D 标签层(--ink)叠放,均由 banner.js 驱动 */
.pm-banner__canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}
