/*
 * 机器人控制技术 · 定制教程 — mdBook 主题
 * ---------------------------------------------------------------------------
 * 设计规范：Academy / ink-warm / standard density / Ayu dark preset。
 * 侧栏以 RustWiki/mdBook 的连续目录流为基准：300px 宽、10px 内边距、
 * 1.5em 行高、0.6em 行间距、20px 子级缩进，hover 仅换色。
 * 字体角色：display serif = 章节层级；text serif = 长文阅读；
 *           sans = 导航与控件；mono = 编号、标签与证据。
 *
 * 本文件是唯一的视觉源。mdBook 变量映射在 §1，组件在 §2 之后。
 * 不要在这里写与内容相关的样式；内容语义由 tools/mathbook.py 生成的类名承载
 * （.box.def / .box.thm / .box.ex / .box.think / .box.errata / .box.method /
 *   .proof / details.sol-box / a.crossref / .meta-strip）。
 */

/* ======================================================================== *
 * §1  本书对 base.css 令牌层的覆盖
 * ------------------------------------------------------------------------
 * base.css（三本共用）已声明完整令牌层；这里只保留**本书与它不同**的块与行，
 * 由上面「逐块比对」得出。改令牌请优先改 base.css。
 * ======================================================================== */
/* 仅差异行 */
/* ---- §1.2 语义调色板（只分亮/暗）------------------------------------- */ :root, html.rust, html.light{
  /* 公式直觉盒（本书内容确实在用：robot/src 里有 40 处，此前只写了 .box.intuition
     的规则、没定义这三个令牌，盒子会渲染成无底色无左边框） */
  --intuition-bg:#eef3fc;--intuition-line:#3f6bb0;--intuition-ink:#2c4d80;
}

/* 仅差异行 */
html.coal, html.navy, html.ayu{
  --intuition-bg:#1b2437;--intuition-line:#7fa1d8;--intuition-ink:#b3c8ec;
}

/* ======================================================================== *
 * §2  mdBook 框架适配
 * ======================================================================== */
body{
  background:var(--page);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}

#mdbook-menu-bar{
  border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent);
  /* 不透明：半透明底会让滚动时正文从顶栏后透出（截图与低性能浏览器无
     backdrop-filter，模糊层失效后尤其明显） */
  background:var(--page);
}

@media (max-width:900px){
  #mdbook-menu-bar .portal-home{padding:0 var(--space-2)}
  #mdbook-menu-bar .portal-home-label{display:none}
}

.content p{margin:var(--space-3) 0;text-align:left;font-family:var(--sans)}

.box.intuition{border-left-color:var(--intuition-line);background:var(--intuition-bg)}

.intuition .box-tag{color:var(--intuition-ink)}

/* 例题解答（可折叠）
   折叠态此前只是一行文字，看不出「这里可以点、点开有什么」。改为一条有底色的
   横栏 + 右对齐的「展开 / 收起」提示 + 悬停反馈，与《数值分析》《矩阵论》
   同一套处理，三本书的同一交互外观一致。 */
details.sol-box{
  margin:13px 0;border:1px solid var(--line);background:var(--paper);
}

details.sol-box>summary::after{
  content:"展开";margin-left:auto;color:var(--muted);
  font:600 var(--fs-2xs)/1 var(--mono);letter-spacing:.09em;
}

/* 插图占满版心宽度：SVG 是矢量，放大不损失清晰度；
 * 小尺寸插图（如 330px 宽的手绘坐标系）若按原尺寸显示，标注会小到看不清。
 * 宽插图（viewBox 920）会等比略缩，与原设计在 820px 栏内的观感一致。 */
.content figure svg{display:block;width:100%;height:auto;margin:2px auto}

/* SVG 里的真上下标：不用 Unicode 下标字符（ᵢ ₁ ₑ 等字形覆盖率差，
   会渲染成豆腐块），改用 tspan + 字号/基线偏移 */
.content figure svg .sb{font-size:70%;baseline-shift:-18%}

.content figure svg .sp{font-size:70%;baseline-shift:32%}

/* 交互操作台（sec2-12 两连杆臂）：滑杆面板与读数。
 * 逻辑全部在本页内联 <script>（无依赖、无构建步骤）；
 * 颜色沿用 --fig-* 令牌，暗色主题自动适配。 */
.arm-controls{
  display:flex;flex-wrap:wrap;gap:var(--space-3) 30px;justify-content:center;align-items:center;
  margin:14px 0 2px;font:var(--fs-md)/1.6 var(--sans);color:var(--ink-2);
}

.arm-controls label{display:flex;align-items:center;gap:10px}

.arm-controls input[type=range]{width:190px;accent-color:var(--accent)}

.arm-controls input[type=checkbox]{accent-color:var(--accent)}

.arm-controls .arm-val{
  font:700 12.5px/1 var(--mono);color:var(--accent-text);
  min-width:46px;text-align:right;font-variant-numeric:tabular-nums;
}

.chapter-cover h1{
  max-width:760px;margin:0 0 14px;padding:0;border:0;
  font-family:var(--sans);font-weight:700;
  font-size:clamp(36px,4vw,48px);line-height:1.16;letter-spacing:0;
}

/* ======================================================================== *
 * §6  页内目录（theme/js/matrix.js 在 H2 ≥ 3 的页面注入）与阅读进度条
 * ======================================================================== */
.page-toc{
  display:grid;grid-template-columns:repeat(2,1fr);gap:2px 22px;
  margin:26px 0 30px;padding:13px 17px 11px;
  border:1px solid var(--line);background:var(--paper-soft);
}

.page-toc a.page-toc-h3{padding-left:18px;font-size:var(--fs-sm)}

.page-toc a.page-toc-h3::before{content:"–";font-size:var(--fs-2xs)}

/* ======================================================================== *
 * §7  响应式
 * ======================================================================== */
/* 横向溢出防线：main / .content 是 flex 链上的子项，默认 min-width:auto
 * 会被内部的宽表格与长代码行撑开，导致整页横向滚动（窄屏尤甚）。
 * min-width:0 让它们可收缩，把溢出限制在各自的滚动容器内。
 * 同时给表格与代码块统一提供横向滚动。 */
.content, .content main{min-width:0}

.table-wrapper{overflow-x:auto;max-width:100%}

.content pre{max-width:100%}

.content img{max-width:100%;height:auto}

@media(max-width:700px){
  :root{--page-padding:var(--space-4)}
  #mdbook-sidebar .sidebar-scrollbox{padding-top:68px}
  .content h1{font-size:var(--fs-h2)}
  .chapter-cover{padding:34px 0 30px}
  .chapter-cover::after{font-size:140px}
  .chapter-cover .kicker{margin-bottom:30px}
  .chapter-cover h1{font-size:36px}
  .cover-chips{grid-template-columns:1fr;margin-top:var(--space-6)}
  .cover-chips span:nth-child(odd){border-right:0}
  .cover-chips span:nth-child(even){padding-left:0}
  .index-cards{padding-left:25px}
  .index-cards a{display:block;padding:var(--space-3) 9px}
  .index-cards .no,.index-cards .t,.index-cards .d,.index-cards .go{display:block;margin-bottom:5px}
  .study-paths{grid-template-columns:1fr;gap:var(--space-3)}
  .study-path{min-height:0}
  .lesson-brief{grid-template-columns:1fr;border-radius:var(--radius-sm)}
  .lesson-brief>div{padding:15px var(--space-4);border-right:0;border-bottom:1px solid var(--line)}
  .lesson-brief>div:last-child{border-bottom:0}
  .page-toc{grid-template-columns:1fr}
  .box{padding:var(--space-4) 15px var(--space-3)}
  .content table{display:block;overflow-x:auto}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ======================================================================== *
 * §8  打印
 * ======================================================================== */
@media print{
  :root,html.light,html.rust,html.navy,html.coal,html.ayu{
    --page:#fefefe;--paper:#fefefe;--paper-soft:#f6f6f4;
    --ink:#000;--ink-2:#333;--muted:#666;--line:#ccc;--line-strong:#999;
    --def-bg:#f4f6f7;--thm-bg:#f6f4f7;--ex-bg:#f4f7f4;
    --think-bg:#f8f5ee;--err-bg:#faf1ef;--method-bg:#f2f6f6;
    /* 与《矩阵论》§8 同一套纪律：打印必须重设**全部**颜色令牌。默认主题是
       ayu（暗色），只重设底色时，强调色与盒标签文字仍沿用暗色值——白纸上实测
       1.8–2.3:1（形同虚设）。下面取值沿用亮色主题已验收的档位（≈5.7:1）。 */
    --control-line:#8f806d;
    --accent:#b96543;--accent-strong:#9f5033;--accent-text:#9f5033;
    --links:var(--accent-strong);--inline-code-color:var(--accent-strong);
    --accent-soft:rgba(185,101,67,.10);
    --sage:#4f6f62;--shadow-ink:rgba(50,40,29,.86);
    --surface-card:#ffffff;--surface-soft:#f6f6f4;
    /* 语义盒子：底色 + 标签文字色 + 边框色三者都要给 */
    --def-ink:#284f5b;--def-line:#456f7c;
    --thm-ink:#55425f;--thm-line:#705d79;
    --ex-ink:#3c5740;--ex-line:#58735b;
    --think-ink:#73551f;--think-line:#967331;
    --err-ink:#87342d;--err-line:#a7473d;
    --method-ink:#2e615d;--method-line:#447a75;
    /* 插图配色：暗色下是提亮版，白纸上同样偏淡 */
    --fig-blue:#2456a6;--fig-purple:#4c3d99;--fig-green:#1f6b3a;
    --fig-gold:#8a5a00;--fig-red:#9c2b25;--fig-neutral:#5b544a;
    --table-alternate-bg:#f6f6f4;
  }
  body{background:#fefefe;font-size:11.5pt}
  #mdbook-sidebar,#mdbook-menu-bar,#progress,.nav-wrapper,#mdbook-search-wrapper{display:none!important}
  .content{padding:0;max-width:none}
  .chapter-cover::after{display:none}
  .box,details.sol-box,table,figure,ul.objlist li{break-inside:avoid}
  /* 纸面上点不动：折叠解答的「展开 / 收起」提示去掉 */
  details.sol-box>summary::after{display:none}
  a.crossref{border:0;color:#000;text-decoration:underline}
}

/* ======================================================================== *
 * §9  交互实验（theme/js/robot-labs.js 生成；内容里只放容器）
 * ======================================================================== */
.lab{  border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--paper);padding:var(--space-4) var(--space-5);
  margin:var(--space-6) 0;box-shadow:0 1px 0 var(--shadow-soft);
}

.lab[hidden]{display:none}

.lab-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--space-1)}

.lab-head b{font-size:1.02rem}

.lab-tag{
  font-size:.72rem;letter-spacing:.08em;font-weight:700;color:var(--paper);
  background:var(--accent-strong);border-radius:999px;padding:2px 10px;white-space:nowrap;
}

.lab-note{font-size:.88rem;color:var(--muted);line-height:1.65;margin:6px 0}

.lab-controls{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);align-items:center;margin:10px 0 6px}

.lab-ctl{font-size:.86rem;color:var(--ink-2);display:inline-flex;align-items:center;gap:6px}

.lab-ctl input[type=range]{width:150px;accent-color:var(--accent-strong);vertical-align:middle}

.lab-ctl output{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink);min-width:3.4em;display:inline-block}

.lab-group{display:inline-flex;align-items:center;gap:6px}

.lab-group-label{font-size:.86rem;color:var(--ink-2)}

.lab-btn{
  font:inherit;font-size:.84rem;padding:3px var(--space-3);border-radius:999px;
  border:1px solid var(--control-line);background:transparent;color:var(--ink-2);cursor:pointer;
}

.lab-btn:hover{border-color:var(--accent-strong);color:var(--accent-text)}

.lab-btn.on{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--paper);font-weight:600}

.lab canvas{width:100%;display:block;border-radius:var(--radius-sm);background:var(--surface-soft)}

.lab-readout{font-size:.88rem;color:var(--ink-2);line-height:1.7;margin-top:var(--space-2);font-variant-numeric:tabular-nums}

.lab-readout p{margin:6px 0}

.lab-warn{color:var(--err-ink);background:var(--err-bg);border-left:3px solid var(--err-line);padding:6px 10px;border-radius:0 var(--space-2) var(--space-2) 0}

.lab-matrix{border-collapse:collapse;display:inline-table;vertical-align:middle;margin:0 10px 0 var(--space-1)}

.lab-matrix td,.lab-matrix th{
  border:1px solid var(--line);padding:2px var(--space-2);text-align:right;
  font-variant-numeric:tabular-nums;font-size:.84rem;font-weight:400;
}

.lab-matrix th{background:var(--surface-soft);text-align:center}

.lab-matrix-label{font-size:.86rem;color:var(--ink-2);vertical-align:middle}

@media (max-width:640px){
  .lab-ctl input[type=range]{width:110px}
  .lab{padding:var(--space-3)}
}

@media print{
  .lab{break-inside:avoid}
  .lab-controls{display:none}
  .lab canvas{max-width:70%}
}
