/* ============================================================
   linux/book/book.css
   教材同步学习区 · 叶廷东《Linux 操作系统管理（第 2 版）》航空工业出版社
   复用 _shared/app.css 的全部 token 与基础组件（hero / section / callout /
   code / chapter-summary / lesson-nav / module / ana / tbl 等），
   这里只补充「教材章节 / 命令卡 / 参数卡 / 拓展训练」四类专用组件。
   ============================================================ */

/* ---------- 面包屑（教材同步 › 项目 N） ---------- */
.crumb{max-width:var(--maxw);margin:22px auto 0;padding:0 24px;
  font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.crumb a{color:var(--muted);}
.crumb a:hover{color:var(--brand);}
.crumb .sep{color:var(--line-2);}
.crumb .cur{color:var(--brand);font-weight:600;}

/* ---------- 主内容容器：与全站 .section 一致的左右间距 ---------- */
.book-main{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
@media (max-width:560px){ .book-main{padding:0 16px;} }

/* ---------- 教材来源标注（融在 hero 副标题里） ---------- */
.book-src{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);
  background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px;margin-bottom:12px;}
.book-src b{color:var(--ink-2);font-weight:600;}

/* ---------- 项目元信息条 ---------- */
.proj-meta{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px;}
.proj-meta .pd{font-size:12px;color:var(--muted);background:var(--surface);
  border:1px solid var(--line);border-radius:6px;padding:2px 10px;}
.proj-meta .pd b{color:var(--warn);}

/* ---------- 任务块（项目 → 任务 → 子任务） ---------- */
.task{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);
  margin:var(--gap-in) 0;overflow:hidden;box-shadow:var(--shadow-sm);}
.task .task-head{display:flex;align-items:center;gap:12px;padding:13px 18px;
  background:var(--brand-soft);border-bottom:1px solid var(--line);}
.task .task-head .t-no{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:13px;font-weight:700;
  color:#fff;background:var(--brand);border-radius:8px;padding:3px 11px;white-space:nowrap;}
.task .task-head h3{margin:0;font-size:16px;color:var(--brand);}
.task .task-head .t-goal{margin-left:auto;font-size:12px;color:var(--muted);text-align:right;max-width:46%;}
.task .task-body{padding:4px 18px 18px;}

/* 子任务 */
.sub{margin:16px 0 0;}
.sub .s-no{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;font-weight:600;
  color:var(--ink);margin:0 0 6px;}
.sub .s-no .s-badge{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;
  color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 8px;}
.sub > p{margin:6px 0;font-size:14px;line-height:1.85;color:var(--ink-2);}
.sub > p code{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 5px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12.5px;}

/* ---------- 命令卡：命令名 + 作用 + 参数卡 + 案例 + 易错 ---------- */
.cmd-card{border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:var(--radius-sm);
  background:var(--white);padding:14px 16px;margin:14px 0;}
.cmd-card .cc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
.cmd-card .cc-name{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:15px;font-weight:700;color:var(--teal);}
.cmd-card .cc-lv{font-size:12px;font-weight:700;}
.cmd-card .cc-lv.s1{color:var(--warn);}
.cmd-card .cc-lv.s2{color:var(--ok);}
.cmd-card .cc-lv.s3{color:var(--muted);}
.cmd-card .cc-desc{font-size:13.5px;color:var(--ink-2);margin:0 0 6px;line-height:1.75;}

/* 教材特有命令标记：区别于课标通用命令 */
.texthand{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;
  color:var(--violet);background:var(--violet-soft);border:1px solid var(--violet-soft);
  border-radius:5px;padding:1px 7px;margin-left:4px;vertical-align:1px;}
.texthand::before{content:"教材";font-size:10px;}

/* ---------- 参数卡（从 ref/index.html 抽离，全站教材页共用） ---------- */
.param-card{border-top:1px solid var(--line);padding:14px 16px;}
.param-card .pc-head{font-size:14px;font-weight:700;color:var(--accent);margin-bottom:10px;}
.pc-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.pc-col ul{margin:0;padding-left:18px;font-size:12.5px;line-height:1.9;color:var(--ink-2);}
.pc-col li code{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 5px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;}
.pc-title{font-weight:700;color:var(--ink);font-size:13px;margin-bottom:2px;}
@media (max-width:560px){ .pc-cols{grid-template-columns:1fr;} }

/* 命令详解网格（sed / awk / 网络这类需要拆开的命令） */
.cmd-detail{border-top:1px solid var(--line);padding:14px 16px;}
.cmd-detail h4{margin:0 0 6px;font-size:14.5px;color:var(--brand);}
.cmd-detail .cd-lead{margin:0 0 10px;font-size:13px;line-height:1.7;color:var(--muted);}
.cmd-detail .cd-lead code{background:var(--surface);border:1px solid var(--line);border-radius:4px;
  padding:0 5px;font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px;}
.cd-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-bottom:10px;}
.cd-cell{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  font-size:12.5px;line-height:1.6;color:var(--ink-2);}
.cd-cell b{display:block;margin-bottom:3px;color:var(--ink);font-size:12px;}
.cd-cell code{background:var(--white);border:1px solid var(--line);border-radius:4px;padding:0 4px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:11.5px;word-break:break-all;}
.cd-cases{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:6px;}
.cd-case{display:flex;flex-direction:column;gap:2px;background:var(--white);border:1px solid var(--line);
  border-left:3px solid var(--brand);border-radius:6px;padding:7px 10px;}
.cd-case code{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px;color:var(--brand);
  font-weight:600;word-break:break-all;}
.cd-case span{font-size:12px;color:var(--muted);line-height:1.5;}
.cd-case span b{color:var(--ink);}

/* ---------- 速查参考框（ref 系列，教材页也用） ---------- */
.ref{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);
  box-shadow:var(--shadow-sm);margin:14px 0;overflow:hidden;}
.ref .ref-head{display:flex;align-items:center;gap:10px;padding:11px 16px;background:var(--brand-soft);
  border-bottom:1px solid var(--line);}
.ref .ref-head .r-no{font-size:12px;font-weight:700;color:#fff;background:var(--brand);border-radius:6px;padding:1px 9px;}
.ref .ref-head h3{margin:0;font-size:15px;color:var(--brand);}
.ref table{width:100%;border-collapse:collapse;font-size:13px;}
.ref table th,.ref table td{border-top:1px solid var(--line);padding:8px 12px;text-align:left;
  vertical-align:top;line-height:1.55;}
.ref table thead th{background:var(--surface);font-weight:700;}
.ref table code{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 5px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px;}
.ref .lv{font-weight:700;}
.ref .s1{color:var(--warn);}.ref .s2{color:var(--ok);}.ref .s3{color:var(--muted);}

/* 生活类比（ref 里的 .ana .row 变体） */
.ana .row{display:grid;grid-template-columns:120px 1fr;gap:10px;font-size:13.5px;padding:5px 0;
  border-bottom:1px dashed rgba(176,106,36,.3);}
.ana .row:last-child{border-bottom:none;}
.ana .row .real{font-weight:700;color:var(--accent);}

/* ---------- 拓展训练（教材每项目末尾） ---------- */
.exer{border:1px solid var(--violet);border-radius:var(--radius);background:var(--white);
  overflow:hidden;margin:22px 0 4px;}
.exer .ex-head{display:flex;align-items:center;gap:10px;padding:13px 18px;background:var(--violet-soft);
  border-bottom:1px solid var(--line);}
.exer .ex-head .e-ico{width:28px;height:28px;border-radius:8px;background:var(--violet);color:var(--soft-on-brand);
  display:grid;place-items:center;flex:0 0 auto;}
.exer .ex-head .e-ico svg{width:16px;height:16px;}
.exer .ex-head h3{margin:0;font-size:15.5px;color:var(--violet);}
.exer .ex-head .e-tag{margin-left:auto;font-size:12px;color:var(--muted);background:var(--white);
  border:1px solid var(--line);border-radius:6px;padding:2px 10px;}
.exer .ex-body{padding:12px 18px 18px;}
.exer .ex-q{display:flex;gap:10px;font-size:14px;line-height:1.85;padding:8px 0;border-bottom:1px dashed var(--line);}
.exer .ex-q:last-child{border-bottom:none;}
.exer .ex-q .q-no{flex:0 0 auto;width:22px;height:22px;border-radius:6px;background:var(--violet-soft);
  color:var(--violet);font-weight:700;font-size:12px;display:grid;place-items:center;}
.exer .ex-q .q-txt{flex:1;color:var(--ink);}
.exer .ex-q .q-txt code{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 5px;
  font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px;}
.exer .ex-hint{font-size:12.5px;color:var(--muted);margin:10px 0 0;line-height:1.75;}

/* 分级图例（与 ref 一致） */
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted);align-items:center;margin:6px 0 14px;}
.legend .lv{font-weight:700;font-size:15px;}
.legend .s1{color:var(--warn);}.legend .s2{color:var(--ok);}.legend .s3{color:var(--muted);}

/* 教材 hub 页：项目卡网格（复用 .module 视觉，这里只补徽标） */
.book-hub .module .m-tag{display:inline-block;margin-top:10px;font-size:11.5px;color:var(--violet);
  background:var(--violet-soft);border-radius:6px;padding:2px 8px;}

/* 窄屏：子任务目标说明换行 */
@media (max-width:620px){
  .task .task-head .t-goal{max-width:100%;text-align:left;margin-left:0;}
  .task .task-head{flex-wrap:wrap;}
}

/* 教材 hub：项目5 案例答案册入口卡（静态发丝线，悬停才抬起） */
.casebook{display:flex;align-items:center;gap:16px;margin:18px 0 0;padding:16px 18px;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--white);text-decoration:none;color:inherit;
  transition:transform .2s var(--spring),border-color .2s,box-shadow .2s;}
.casebook:hover{border-color:var(--brand);transform:translateY(-3px);box-shadow:var(--elev-2);}
.casebook:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-color:var(--brand);}
.casebook .cb-ico{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;
  background:var(--brand-soft);color:var(--brand);}
.casebook .cb-ico svg{width:22px;height:22px;}
.casebook .cb-body{flex:1;min-width:0;}
.casebook .cb-body h3{margin:0 0 5px;font-size:16px;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.casebook .cb-badge{font-size:11.5px;font-weight:600;color:var(--brand);background:var(--brand-soft);border-radius:6px;padding:2px 8px;}
.casebook .cb-body p{margin:0;font-size:13.5px;line-height:1.75;color:var(--ink-2);}
.casebook .cb-meta{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap;}
.casebook .cb-meta span{font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:1px 7px;}
.casebook .cb-go{flex:none;font-size:13px;font-weight:600;color:var(--brand);white-space:nowrap;}
@media (max-width:620px){
  .casebook{align-items:flex-start;flex-wrap:wrap;gap:12px;}
  .casebook .cb-go{width:100%;padding-left:56px;}
}
