/* ============================================================
   公司深度研究 · 课程层样式
   只加「课程」这一层：单元导航条 / 单元视图 / 节 / 测验 / 成绩单。
   正文排版、表格、KPI、时间线等一律复用 reports/assets/site.css，
   变量（--accent / --line / --panel …）也全部沿用它，勿在此重定义。
   ============================================================ */

/* ---------------- 顶部单元导航条（吸顶） ---------------- */
.rail{
  position:sticky; top:0; z-index:40;
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
  margin:0 0 2.2rem;
}
.rail-in{
  max-width:var(--maxw); margin:0 auto; padding:.62rem 1.1rem;
  display:flex; align-items:center; gap:1rem;
}
.rail-title{
  font-family:var(--serif); font-weight:700; font-size:.95rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:0 1 auto;
}
.rail-title .code{ font-family:var(--mono); font-size:.8em; color:var(--muted-2); margin-left:.4em }

.rail-chips{
  display:flex; gap:.32rem; flex:1 1 auto;
  overflow-x:auto; scrollbar-width:none; padding:.15rem 0;
}
.rail-chips::-webkit-scrollbar{ display:none }

.rc{
  flex:0 0 auto; position:relative;
  min-width:2rem; height:2rem; padding:0 .48rem;
  display:inline-flex; align-items:center; justify-content:center; gap:.3rem;
  border:1px solid var(--line-2); border-radius:999px;
  background:var(--panel); color:var(--muted);
  font:600 .82rem/1 var(--mono); cursor:pointer;
  transition:.14s ease;
}
.rc:hover{ border-color:var(--accent); color:var(--accent) }
.rc.active{ background:var(--accent); border-color:var(--accent); color:#fff }
.rc.done{ border-color:var(--accent-4); color:var(--accent-4) }
.rc.done.active{ background:var(--accent-4); border-color:var(--accent-4); color:#fff }
.rc.mid{ border-color:var(--accent-2); color:var(--accent-2) }
.rc.mid.active{ background:var(--accent-2); border-color:var(--accent-2); color:#fff }
.rc.weak{ border-color:var(--stamp); color:var(--stamp) }
.rc.weak.active{ background:var(--stamp); border-color:var(--stamp); color:#fff }
.rc .rn{ font-family:var(--mono); font-weight:700 }
.rc .rt{ font:600 .78rem/1 var(--font); letter-spacing:.01em }
.rc .sc{ font-size:.7rem; font-weight:700; opacity:.9 }
/* 没有分数时必须整个移除：只要 .sc 还是 flex item，父级的 gap 依然生效，
   数字就会被推得偏离圆心（视觉上偏左半个 gap）。width:0 或 visibility 都救不了。 */
.rc .sc:empty{ display:none }
.rc.part{ border-color:var(--accent); color:var(--accent) }
.rc.part .sc{ font-size:.66rem; opacity:.75 }
/* 窄屏收掉单元名，只留数字——这时 .rc 退回正圆，居中规则同上 */
@media (max-width:760px){ .rc .rt{ display:none } }
.rc-sum{
  flex:0 0 auto; margin-left:.15rem; padding:0 .6rem; height:2rem;
  display:inline-flex; align-items:center; gap:.35rem;
  border:1px dashed var(--line-2); border-radius:999px;
  background:transparent; color:var(--muted); cursor:pointer;
  font:600 .78rem/1 var(--font); white-space:nowrap; transition:.14s;
}
.rc-sum:hover{ border-color:var(--accent); color:var(--accent) }
.rc-sum.active{ border-style:solid; background:var(--accent); border-color:var(--accent); color:#fff }

.rail-prog{ flex:0 0 auto; display:flex; align-items:center; gap:.45rem; color:var(--muted-2); font:600 .78rem/1 var(--mono) }
.rail-prog .ring{ width:1.5rem; height:1.5rem; border-radius:50%; background:conic-gradient(var(--accent) var(--p,0%), var(--panel-3) 0); position:relative }
.rail-prog .ring::after{ content:""; position:absolute; inset:3px; border-radius:50%; background:var(--bg) }

@media (max-width:900px){
  .rail-title{ display:none }
  .rail-prog .lbl{ display:none }
}

/* ---------------- 单元视图 ---------------- */
.unit{ display:none }
.unit.on{ display:block; animation:chFade .28s ease both }
@keyframes chFade{ from{ opacity:0; transform:translateY(8px) } to{ opacity:1; transform:none } }

.ch-head{ margin:0 0 2rem; padding-bottom:1.3rem; border-bottom:2px solid var(--text) }
.ch-num{
  display:inline-block; font:700 .74rem/1 var(--mono); letter-spacing:.14em;
  color:var(--accent); text-transform:uppercase; margin:0 0 .7rem;
}
.ch-head h2{
  font-family:var(--serif); font-weight:800; font-size:clamp(1.6rem,3.4vw,2.3rem);
  line-height:1.24; margin:0 0 .6rem; letter-spacing:-.01em;
}
.ch-head .ch-sub{ color:var(--muted); font-size:1.02rem; margin:0 }
.ch-meta{
  margin-top:1.1rem; display:flex; flex-wrap:wrap; gap:.4rem 1.3rem;
  font-size:.83rem; color:var(--muted-2);
}
.ch-meta b{ color:var(--text); font-weight:650 }

/* ---------------- 单元内小目录 ---------------- */
.u-lede{ margin-bottom:1.6rem }
.u-toc{
  border:1px solid var(--line); border-left:3px solid var(--accent);
  border-radius:var(--radius); background:var(--panel-2);
  padding:1.05rem 1.25rem; margin:0 0 2.6rem;
}
.u-toc .tl{
  font:700 .72rem/1 var(--mono); letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted-2); margin:0 0 .7rem;
}
.u-toc ol{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.25rem }
.u-toc li button{
  width:100%; display:flex; align-items:baseline; gap:.7rem; text-align:left;
  padding:.42rem .5rem; border:0; border-radius:5px; background:transparent;
  color:var(--text); font:inherit; font-size:.95rem; cursor:pointer; transition:.12s;
}
.u-toc li button:hover{ background:var(--accent-soft); color:var(--accent) }
.u-toc .ti{ font:700 .78rem/1.6 var(--mono); color:var(--accent); flex:0 0 auto; min-width:1.9rem }
.u-toc .tn{ flex:1 1 auto }
.u-toc .ts{ flex:0 0 auto; font:700 .74rem/1.6 var(--mono); color:var(--muted-2) }
.u-toc .ts.good{ color:var(--accent-4) }
.u-toc .ts.mid{ color:var(--accent-2) }
.u-toc .ts.bad{ color:var(--stamp) }

/* ---------------- 节 ---------------- */
.sec{ margin:0 0 3.4rem; padding:0 0 .4rem; scroll-margin-top:4.2rem }
.sec + .sec{ border-top:1px dashed var(--line-2); padding-top:3rem }
.sec.flash .sec-head{ animation:secFlash 1.2s ease both }
@keyframes secFlash{ 0%{ background:var(--accent-soft) } 100%{ background:transparent } }
.sec-head{ margin:0 0 1.7rem; border-radius:6px }
.sec-head .sn{ font:700 .78rem/1 var(--mono); color:var(--accent); letter-spacing:.08em }
.sec-head h3{
  font-family:var(--serif); font-weight:800; font-size:clamp(1.25rem,2.4vw,1.68rem);
  line-height:1.3; margin:.5rem 0 .45rem; letter-spacing:-.005em;
}
.sec-head .sec-sub{ color:var(--muted); font-size:.96rem; margin:0; line-height:1.7 }
.sec-meta{ margin-top:.65rem; display:flex; flex-wrap:wrap; gap:.35rem; font:500 .78rem/1 var(--mono); color:var(--muted-2) }

/* 单元小结 */
.u-score{
  margin:2.4rem 0 0; padding:1.3rem 1.4rem;
  border:2px solid var(--line-2); border-radius:var(--radius); background:var(--panel-2);
  display:flex; align-items:flex-start; gap:1.4rem; flex-wrap:wrap;
}
.u-score .ut{ display:flex; align-items:baseline; gap:.3rem; flex:0 0 auto }
.u-score .big{ font:800 2.4rem/1 var(--mono) }
.u-score .of{ color:var(--muted-2); font-size:.85rem }
.u-score .ux{ flex:1 1 18rem }
.u-score .uh{ font-family:var(--serif); font-weight:800; font-size:1.1rem; margin:0 0 .3rem }
.u-score .ub{ margin:0; color:var(--muted); font-size:.93rem; line-height:1.72 }
.u-score .rlist{ display:flex; flex-wrap:wrap; gap:.45rem; margin-top:.85rem }
.u-score .rlist button{
  font:600 .84rem/1 var(--font); padding:.48rem .8rem; border:1px solid var(--line-2);
  border-radius:5px; background:var(--panel); color:var(--muted); cursor:pointer; transition:.14s;
}
.u-score .rlist button:hover{ border-color:var(--stamp); color:var(--stamp) }
.u-score.good{ background:#eef7f0; border-color:var(--accent-4) } .u-score.good .big{ color:var(--accent-4) }
.u-score.mid{ background:#fdf6e6; border-color:var(--accent-2) } .u-score.mid .big{ color:var(--accent-2) }
.u-score.bad{ background:#fdefec; border-color:var(--stamp) }   .u-score.bad .big{ color:var(--stamp) }

/* ---------------- 测验 ---------------- */
.quiz-wrap{ margin:3rem 0 0; padding-top:2rem; border-top:2px solid var(--line-2) }
.quiz-wrap > .qh{ font-family:var(--serif); font-weight:800; font-size:1.25rem; margin:0 0 .4rem }
.quiz-wrap > .qi{ color:var(--muted); font-size:.94rem; margin:0 0 1.6rem }

.q{ border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); padding:1.15rem 1.25rem; margin:0 0 .95rem }
.q .qt{ font-weight:650; margin:0 0 .85rem; line-height:1.65 }
.q .qt .qn{ font-family:var(--mono); color:var(--accent); margin-right:.45rem; font-weight:700 }
.q .opts{ display:flex; flex-direction:column; gap:.45rem }
.q .opt{
  text-align:left; font:inherit; font-size:.94rem; line-height:1.6;
  padding:.62rem .85rem; border:1px solid var(--line); border-radius:6px;
  background:var(--bg-2); color:var(--text); cursor:pointer; transition:.12s;
}
.q .opt:hover:not(:disabled){ border-color:var(--accent); background:var(--accent-soft) }
.q .opt:disabled{ cursor:default; opacity:.55 }
.q .opt .ol{ font-family:var(--mono); font-weight:700; color:var(--muted-2); margin-right:.5em }
.q .opt.right{ opacity:1; border-color:var(--accent-4); background:#eef7f0; font-weight:600 }
.q .opt.right .ol{ color:var(--accent-4) }
.q .opt.wrong{ opacity:1; border-color:var(--stamp); background:#fdefec }
.q .opt.wrong .ol{ color:var(--stamp) }
.q .fb{ display:none; margin-top:.85rem; padding:.8rem .95rem; border-radius:6px; font-size:.92rem; line-height:1.72 }
.q .fb.on{ display:block }
.q .fb.ok{ background:#eef7f0; border-left:3px solid var(--accent-4) }
.q .fb.no{ background:#fdefec; border-left:3px solid var(--stamp) }
.q .fb b{ font-weight:700 }

/* 节末得分卡 */
.ch-score{
  margin:1.6rem 0 0; padding:1.15rem 1.3rem;
  border:1px solid var(--line-2); border-radius:var(--radius); background:var(--panel-2);
  display:flex; align-items:center; justify-content:space-between; gap:1.2rem; flex-wrap:wrap;
}
.ch-score .lhs{ display:flex; align-items:baseline; gap:.6rem }
.ch-score .big{ font:800 1.9rem/1 var(--mono); color:var(--text) }
.ch-score .of{ color:var(--muted-2); font-size:.88rem }
.ch-score .verdict{ font-size:.92rem; color:var(--muted) }
.ch-score.good{ background:#eef7f0; border-color:var(--accent-4) }
.ch-score.good .big{ color:var(--accent-4) }
.ch-score.mid{ background:#fdf6e6; border-color:var(--accent-2) }
.ch-score.mid .big{ color:var(--accent-2) }
.ch-score.bad{ background:#fdefec; border-color:var(--stamp) }
.ch-score.bad .big{ color:var(--stamp) }

.ch-nav{ margin:2.2rem 0 0; display:flex; justify-content:space-between; gap:.8rem; flex-wrap:wrap }
.btn-ch{
  font:600 .92rem/1 var(--font); padding:.72rem 1.15rem;
  border:1px solid var(--line-2); border-radius:6px; background:var(--panel);
  color:var(--text); cursor:pointer; text-decoration:none; transition:.14s;
}
.btn-ch:hover{ border-color:var(--accent); color:var(--accent) }
.btn-ch.primary{ background:var(--accent); border-color:var(--accent); color:#fff }
.btn-ch.primary:hover{ filter:brightness(1.12); color:#fff }
.btn-ch:disabled{ opacity:.35; cursor:not-allowed }

/* ---------------- 最终成绩单 ---------------- */
.card-total{
  border:2px solid var(--text); border-radius:var(--radius);
  padding:1.8rem 1.6rem; margin:0 0 2rem; background:var(--panel);
  display:flex; align-items:center; gap:1.8rem; flex-wrap:wrap;
}
.card-total .tot{ font:800 3.4rem/1 var(--mono); letter-spacing:-.02em }
.card-total .tot small{ font-size:1.1rem; color:var(--muted-2); font-weight:600; margin-left:.2em }
.card-total .tl{ flex:1 1 16rem }
.card-total .tl .grade{ font-family:var(--serif); font-weight:800; font-size:1.35rem; margin:0 0 .35rem }
.card-total .tl p{ margin:0; color:var(--muted); font-size:.94rem; line-height:1.7 }

.sc-rows{ display:flex; flex-direction:column; gap:.4rem; margin:0 0 1.6rem }
/* 单元行：与节行同栅格，但更重、通栏；节行缩进挂在它下面 */
.sc-unit{
  display:grid; grid-template-columns:1.9rem 1fr 6.5rem 4.4rem auto; align-items:center; gap:.7rem;
  padding:.7rem .7rem; margin-top:.9rem;
  border:1px solid var(--line-2); border-radius:6px; background:var(--panel-2);
}
.sc-unit:first-child{ margin-top:0 }
.sc-unit .n{ font:800 .92rem/1 var(--serif); color:var(--accent); text-align:center }
.sc-unit .nm{ font-family:var(--serif); font-weight:800; font-size:.98rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.sc-unit .tr{ position:relative; height:.55rem; background:var(--panel-3); border-radius:99px; overflow:hidden }
.sc-unit .fl{ position:absolute; inset:0 auto 0 0; background:var(--accent-4); border-radius:99px }
.sc-unit.mid .fl{ background:var(--accent-2) }
.sc-unit.weak .fl{ background:var(--stamp) }
.sc-unit.untaken .fl{ background:var(--line-2) }
.sc-unit .pct{ font:800 .88rem/1 var(--mono); text-align:right; white-space:nowrap }
.sc-unit .go{
  font:600 .8rem/1 var(--font); padding:.4rem .68rem; border:1px solid var(--line-2);
  border-radius:5px; background:var(--panel); color:var(--muted); cursor:pointer; white-space:nowrap; transition:.14s;
}
.sc-unit .go:hover{ border-color:var(--accent); color:var(--accent) }
.sc-unit + .sc-row{ margin-top:.1rem }
.sc-rows .sc-row{ margin-left:1.1rem }
.sc-row{
  display:grid; grid-template-columns:1.9rem 1fr 6.5rem 4.4rem auto; align-items:center; gap:.7rem;
  padding:.55rem .7rem; border:1px solid var(--line); border-radius:6px; background:var(--panel);
}
.sc-row .n{ font:700 .82rem/1 var(--mono); color:var(--muted-2); text-align:center }
.sc-row .nm{ font-size:.92rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.sc-row .tr{ position:relative; height:.5rem; background:var(--panel-3); border-radius:99px; overflow:hidden }
.sc-row .fl{ position:absolute; inset:0 auto 0 0; background:var(--accent-4); border-radius:99px }
.sc-row.mid .fl{ background:var(--accent-2) }
.sc-row.weak .fl{ background:var(--stamp) }
.sc-row.untaken .fl{ background:var(--line-2) }
.sc-row .go{
  font:600 .8rem/1 var(--font); padding:.4rem .68rem; border:1px solid var(--line-2);
  border-radius:5px; background:var(--bg-2); color:var(--muted); cursor:pointer; white-space:nowrap; transition:.14s;
}
.sc-row .go:hover{ border-color:var(--accent); color:var(--accent) }
.sc-row.weak .go{ border-color:var(--stamp); color:var(--stamp) }
.sc-row.weak .go:hover{ background:var(--stamp); color:#fff }
.sc-row .pct{ font:700 .84rem/1 var(--mono); text-align:right; white-space:nowrap }

@media (max-width:640px){
  .sc-row,.sc-unit{ grid-template-columns:2.2rem 1fr auto; row-gap:.45rem }
  .sc-row .tr,.sc-unit .tr{ grid-column:1 / -1; order:9 }
  .sc-rows .sc-row{ margin-left:.5rem }
}

.retip{
  border:1px solid var(--stamp); background:#fdefec; border-radius:var(--radius);
  padding:1.05rem 1.25rem; margin:0 0 1.6rem;
}
.retip .rh{ font-weight:700; color:var(--stamp); margin:0 0 .45rem; font-size:.95rem }
.retip p{ margin:0 0 .7rem; font-size:.93rem; line-height:1.72; color:var(--muted) }
.retip .rlist{ display:flex; flex-wrap:wrap; gap:.45rem }
.retip .rlist button{
  font:600 .84rem/1 var(--font); padding:.48rem .8rem; border:1px solid var(--stamp);
  border-radius:5px; background:#fff; color:var(--stamp); cursor:pointer; transition:.14s;
}
.retip .rlist button:hover{ background:var(--stamp); color:#fff }

.sc-actions{ display:flex; gap:.7rem; flex-wrap:wrap; margin-top:.4rem }

/* 打印：展开全部章节，隐藏交互件 */
@media print{
  .rail,.ch-nav,.sc-actions,.retip .rlist,.q .opts,.u-toc{ display:none !important }
  .unit{ display:block !important; break-before:page }
  .unit:first-of-type{ break-before:auto }
  .sec{ break-inside:auto }
  .q .fb{ display:block !important }
}

/* ---------------- 附录（挂在最后一个单元末尾，不带测验） ---------------- */
.apx-h{
  font-family:var(--serif); font-weight:800; font-size:1.05rem;
  margin:2rem 0 .8rem; padding-bottom:.4rem; border-bottom:1px solid var(--line);
}
.panel[data-panel] .callout p[style*="mono"]{ overflow-x:auto }

/* hero 末尾的产业归属行：公司研究里产业是背景，不该占标题位（站长 2026-08-01） */
.hero-chain{ margin-top:1.1rem; display:flex; flex-wrap:wrap; gap:.4rem }
.hero-chain a{
  font:600 .8rem/1 var(--font); padding:.42rem .7rem; border-radius:999px;
  border:1px solid var(--line-2); background:var(--panel); color:var(--muted);
  text-decoration:none; transition:.14s;
}
.hero-chain a:hover{ border-color:var(--accent); color:var(--accent); background:var(--accent-soft) }

/* ════════════════════════════════════════════════════════════
   预览墙 —— 只出现在 _previews/<slug>.html（试读版）里。
   正片没有这段 DOM，所以这些规则在完整版页面上是死代码，无害。
   与 /reports/ 那套（build-report-previews.py 内联样式）视觉对齐，
   但这里走 class，因为课程页本来就加载 course.css。
   ════════════════════════════════════════════════════════════ */
.preview-wall{
  position:relative; z-index:5; margin:-120px 0 0; padding:150px 1rem 1.6rem;
  background:linear-gradient(180deg, rgba(250,250,247,0), var(--bg) 46%);
}
.pw-card{
  max-width:38rem; margin:0 auto; padding:2rem 1.9rem 1.7rem;
  border:1px solid var(--rule); border-radius:12px; background:var(--bg-2);
  box-shadow:0 10px 38px rgba(20,18,14,.08); text-align:center;
}
.pw-eyebrow{ font:600 .72rem/1 var(--mono); letter-spacing:.22em; color:var(--x-h); margin-bottom:.85rem }
.pw-h{ font-family:var(--serif); font-size:1.4rem; font-weight:800; line-height:1.35; margin-bottom:.7rem }
.pw-p{ font-size:.92rem; line-height:1.85; color:var(--ink-soft); margin:0 0 1.15rem }
.pw-list{ list-style:none; margin:0 0 1.5rem; padding:0; text-align:left }
.pw-list li{
  display:flex; align-items:baseline; gap:.7rem; padding:.6rem .8rem;
  border:1px solid var(--rule-faint); border-radius:5px; background:var(--bg-3); margin-bottom:.45rem;
}
.pw-list .pw-n{ font:700 .78rem/1 var(--mono); color:var(--ink-faint); flex:0 0 1.1rem }
.pw-list .pw-t{ flex:1 1 auto; font-weight:600; font-size:.93rem; min-width:0 }
.pw-list .pw-m{ flex:0 0 auto; font:.76rem/1.5 var(--mono); color:var(--ink-faint) }
.pw-btn{
  display:inline-block; padding:.78rem 2.1rem; border-radius:8px;
  background:var(--ink); color:var(--bg); font-size:.95rem; font-weight:600;
  text-decoration:none; letter-spacing:.04em; transition:.14s;
}
.pw-btn:hover{ background:var(--accent) }
.pw-foot{ font-size:.8rem; color:var(--ink-faint); margin:1rem 0 0; line-height:1.7 }
.pw-foot a{ color:var(--x-h) }
@media (max-width:560px){
  .pw-card{ padding:1.5rem 1.2rem 1.3rem }
  .pw-list li{ flex-wrap:wrap; gap:.35rem .7rem }
}
