@charset "UTF-8";
/*
* 设计系统色板 —— Industry
* 方形、细边框、蓝图角标。
*/
/* 暖色点缀：付费标记、热点等 */
/* 中国传统色点缀：分类序号、类型标签等小面积使用 */
/* 靛蓝 */
/* 竹青 */
/* 绛紫 */
/* 琥珀 */
/* 胭脂 */
/* 松花绿 */
/* 警示色：表单报错、点数不足等 */
/* 旧变量别名，保证未改版页面继续编译并同步换色 */
/*
* 字体
* 不引入外部资源：默认使用系统字体栈。
* 若日后自托管 Barlow，把 woff2 放到 /static/www/font/ 下并打开下面的 @font-face 即可，
* 其余样式无需改动。
*/
/*
@font-face{
    font-family:'Barlow';
    src:url('/static/www/font/barlow-400.woff2') format('woff2');
    font-weight:400;
    font-display:swap;
}
@font-face{
    font-family:'Barlow';
    src:url('/static/www/font/barlow-600.woff2') format('woff2');
    font-weight:600;
    font-display:swap;
}
@font-face{
    font-family:'Barlow Condensed';
    src:url('/static/www/font/barlow-condensed-600.woff2') format('woff2');
    font-weight:600;
    font-display:swap;
}
*/
/* 内容区最大宽度 */
/*
* 清除浮动
* 调用方法：@extend %clearfix;
*/
/*
* 小标题（栏目眉题）
* 调用方法：@include kicker; 或 @include kicker(12px);
* 例：01 · 快速查询 · LOOKUP
*/
/*
* 等宽数字，用于 IP、延迟、点数等数值
* 调用方法：@include tnum;
*/
/*
* 大号压缩字，用于 IP / 评分 / 点数
* 调用方法：@include display(48px);
*/
/*
* 单行省略
* 调用方法：@extend %ellipsis;
*/
/*
* 响应式宏
* 调用方法：@include respond-to(small) { ... }
*/
/*
 * 长文正文排版。
 *
 * 用在「一段 HTML 直接 echo 出来」的地方：技术学院教材 / 课程正文（预编译产物）、
 * 资讯正文（存在 article.content 里）。这些 HTML 不带类名，所以全按标签选。
 *
 * 不放进 _blueprint.scss（全站 common.css）是因为只有正文页用得上，
 * 需要的页面在自己的 scss 里 @use "../public/mod/article"; 引一次即可。
 */
.art-body {
  margin-top: 24px;
  font-size: 15px;
  line-height: 26px;
  color: #1d1f20;
  /* 行内代码 */
  /* .table 的单元格左右没有内边距，正文里的表格列一短就会粘在一起 */
}
.art-body h2, .art-body h3, .art-body h4, .art-body h5, .art-body h6 {
  margin: 30px 0 12px;
  font-family: "Barlow Condensed", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-weight: 600;
  line-height: 1.25;
  scroll-margin-top: 20px;
}
.art-body h2 {
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(29, 31, 32, 0.16);
  font-size: 26px;
}
.art-body h3 {
  font-size: 21px;
}
.art-body h4 {
  font-size: 18px;
}
.art-body h5, .art-body h6 {
  font-size: 16px;
}
.art-body p {
  margin: 0 0 14px;
}
.art-body a {
  color: #22509a;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.art-body ul, .art-body ol {
  margin: 0 0 14px;
  padding-left: 22px;
}
.art-body ul li, .art-body ol li {
  margin-bottom: 4px;
  list-style: outside disc;
}
.art-body ol li {
  list-style: outside decimal;
}
.art-body blockquote {
  margin: 0 0 14px;
  padding: 2px 0 2px 16px;
  border-left: 3px solid #b3d0f5;
  color: rgba(29, 31, 32, 0.7);
}
.art-body blockquote p:last-child {
  margin-bottom: 0;
}
.art-body hr {
  height: 0;
  margin: 24px 0;
  border: 0;
  border-top: 1px solid rgba(29, 31, 32, 0.16);
}
.art-body img {
  max-width: 100%;
}
.art-body code {
  padding: 1px 5px;
  background: #ecf3fd;
  font-family: ui-monospace, Menlo, Consolas, "Courier New", monospace;
  font-size: 13px;
  word-break: break-all;
}
.art-body .tablewrap {
  margin: 0 0 16px;
  overflow-x: auto;
}
.art-body .table th, .art-body .table td {
  padding-right: 22px;
  vertical-align: top;
}
.art-body .table th:last-child, .art-body .table td:last-child {
  padding-right: 0;
}
.art-body .table td {
  line-height: 22px;
}
.art-body .table code {
  white-space: nowrap;
}

@media screen and (max-width: 799px) {
  .art-body {
    font-size: 14px;
    line-height: 24px;
  }
  .art-body h2 {
    font-size: 21px;
  }
  .art-body h3 {
    font-size: 18px;
  }
}
/* — 列表页 — */
.mod-college-bar .sp {
  width: 1px;
  align-self: stretch;
  margin: 2px 6px;
  background: rgba(29, 31, 32, 0.16);
}

.kicker-row .cnt {
  font-size: 12px;
  color: rgba(29, 31, 32, 0.55);
  font-feature-settings: "tnum" 1;
}

.mod-booklist {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
  margin: 0 0 34px;
}
.mod-booklist .book {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 16px 18px;
  color: #1d1f20;
}
.mod-booklist .book:hover {
  border-color: #3576d2;
}
.mod-booklist .book .hd {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}
.mod-booklist .book h2 {
  font-family: "Barlow Condensed", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-weight: 600;
  font-size: 19px;
  line-height: 24px;
}
.mod-booklist .book p {
  flex: 1;
  margin: 0;
  font-size: 13px;
  line-height: 20px;
  color: rgba(29, 31, 32, 0.7);
}
.mod-booklist .book .meta {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding-top: 9px;
  border-top: 1px solid rgba(29, 31, 32, 0.08);
  font-size: 12px;
  color: rgba(29, 31, 32, 0.55);
}
.mod-booklist .book .meta .go {
  margin-left: auto;
  color: #22509a;
}

.empty {
  padding: 28px 24px;
  text-align: center;
  color: rgba(29, 31, 32, 0.55);
}

.mod-book-license {
  padding: 20px 24px;
}
.mod-book-license p {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 21px;
  color: rgba(29, 31, 32, 0.7);
}
.mod-book-license .muted {
  color: rgba(29, 31, 32, 0.55);
}

/* — 正文页 — */
.mod-book-detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 28px;
  align-items: start;
}
.mod-book-detail .main {
  min-width: 0;
}
.mod-book-detail .art {
  padding: 28px 32px;
}
.mod-book-detail .art-hd {
  display: flex;
  align-items: center;
  gap: 10px;
}
.mod-book-detail .art-hd h1 {
  margin-right: 4px;
  font-family: "Barlow Condensed", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-weight: 600;
  font-size: 34px;
  line-height: 1.1;
}
.mod-book-detail .art-hd .tag {
  padding: 3px 10px;
  font-size: 11px;
}
.mod-book-detail .desc {
  margin: 10px 0 4px;
  font-size: 14px;
  line-height: 22px;
  color: rgba(29, 31, 32, 0.7);
}
.mod-book-detail .meta {
  margin: 0;
  font-size: 12px;
  color: rgba(29, 31, 32, 0.55);
}
.mod-book-detail .side {
  display: grid;
  gap: 18px;
}
.mod-book-detail .side .sbox {
  padding: 18px 20px;
}
.mod-book-detail .side ul {
  margin: 10px 0 12px;
}
.mod-book-detail .side ul li {
  border-bottom: 1px solid rgba(29, 31, 32, 0.08);
}
.mod-book-detail .side ul li a {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
  padding: 7px 0;
  font-size: 14px;
}
.mod-book-detail .side ul li a em {
  font-size: 11px;
  font-style: normal;
  color: rgba(29, 31, 32, 0.55);
}
.mod-book-detail .side .more {
  font-size: 13px;
  color: #22509a;
}

/* 本篇目录：正文标题多的那几篇才会出现 */
.art-toc {
  margin: 20px 0 4px;
  padding: 14px 18px;
  background: #f5f5f8;
  border: 1px solid rgba(29, 31, 32, 0.08);
}
.art-toc ol {
  margin: 8px 0 0;
  columns: 2;
  column-gap: 28px;
  list-style: none;
  counter-reset: toc;
}
.art-toc ol li {
  break-inside: avoid;
  counter-increment: toc;
  font-size: 13px;
  line-height: 24px;
}
.art-toc ol li:before {
  content: counter(toc, decimal-leading-zero);
  margin-right: 8px;
  font-family: "Barlow", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-size: 11px;
  color: #22509a;
}
.art-toc ol li.lv2 {
  padding-left: 16px;
}

/* 代码块：角标会被 overflow 裁掉，所以外层不用 .blueprint */
.codewrap {
  margin: 0 0 18px;
  border: 1px solid rgba(29, 31, 32, 0.16);
  background: #fff;
}
.codewrap .codebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 5px 12px;
  border-bottom: 1px solid rgba(29, 31, 32, 0.08);
  background: #f5f5f8;
}
.codewrap .codebar .lang {
  font-family: "Barlow", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-weight: 600;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #22509a;
}
.codewrap .codebar .lang:empty:before {
  content: "CODE";
}
.codewrap .codebar .copy {
  padding: 2px 10px;
  border: 1px solid rgba(29, 31, 32, 0.16);
  background: #fff;
  font-size: 12px;
  color: rgba(29, 31, 32, 0.7);
  cursor: pointer;
}
.codewrap .codebar .copy:hover {
  border-color: #3576d2;
  color: #22509a;
}
.codewrap pre.code {
  margin: 0;
  padding: 14px 16px;
  overflow-x: auto;
  font-family: ui-monospace, Menlo, Consolas, "Courier New", monospace;
  font-size: 13px;
  line-height: 21px;
  tab-size: 4;
}
.codewrap pre.code code {
  padding: 0;
  background: none;
  font-size: inherit;
  white-space: pre;
  word-break: normal;
}

/* 署名与许可 */
.art-credit {
  margin-top: 30px;
  padding-top: 18px;
  border-top: 1px solid rgba(29, 31, 32, 0.16);
}
.art-credit p {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 21px;
  color: rgba(29, 31, 32, 0.7);
}
.art-credit .muted {
  color: rgba(29, 31, 32, 0.55);
}

/* 上一篇 / 下一篇 */
.art-nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 22px;
}
.art-nav .nv {
  display: block;
  padding: 14px 18px;
  color: #1d1f20;
}
.art-nav .nv:hover {
  border-color: #3576d2;
}
.art-nav .nv b {
  display: block;
  margin-top: 4px;
  font-family: "Barlow Condensed", ui-sans-serif, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", Arial, sans-serif;
  font-weight: 600;
  font-size: 18px;
}
.art-nav .nv-r {
  grid-column: 2;
  text-align: right;
}

@media screen and (max-width: 799px) {
  .mod-booklist {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .mod-booklist .book {
    padding: 13px 14px;
  }
  .mod-booklist .book h2 {
    font-size: 17px;
  }
  .mod-booklist .book p {
    display: none;
  }
  .mod-book-detail {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
  }
  .mod-book-detail .art {
    padding: 18px 16px;
  }
  .mod-book-detail .art-hd h1 {
    font-size: 26px;
  }
  .art-toc ol {
    columns: 1;
  }
  .codewrap pre.code {
    padding: 12px;
    font-size: 12px;
    line-height: 19px;
  }
  .art-nav {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }
  .art-nav .nv-r {
    grid-column: 1;
    text-align: left;
  }
}