/* ===== 首页流水线总览（完整复刻独立课程 course-pipeline.css） ===== */
.course-pipe{
  --forest:#142319;--forest-2:#1d3226;--canvas:#edf3f6;--paper:#fbf8f1;
  --white:#fff;--ink:#18232d;--dim:rgba(24,35,45,.6);--line:rgba(24,35,45,.14);
  --line-2:rgba(24,35,45,.22);
  --coral:#df5130;--green:#2f7d57;--green-text:#2c6347;--blue:#48688c;--gold:#8a6215;
  --tint:#df5130;--mono:ui-monospace,"SF Mono",Menlo,monospace;
  --sh-card:0 1px 2px rgba(38,33,31,.05);
}
.course-pipe{font-family:-apple-system,"PingFang SC",sans-serif;color:var(--ink);background:var(--canvas);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}
.course-pipe a{color:inherit;text-decoration:none}
.course-pipe .mono{font-family:var(--mono)}
.course-pipe .wrap{max-width:1320px;margin:0 auto;padding:0 36px}
.course-pipe img{max-width:100%}

/* === 英雄区 === */
.course-pipe .hero{
  background:linear-gradient(rgba(20,35,25,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,35,25,.035) 1px,transparent 1px),var(--paper);
  background-size:24px 24px,24px 24px,auto;border-bottom:1px solid var(--line);padding:44px 0 0;
}
.course-pipe .crumb{font-family:var(--mono);font-size:12px;color:var(--dim);display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.course-pipe .crumb a:hover{color:var(--coral)}
.course-pipe .crumb .tno{color:var(--tint);font-weight:700}
.course-pipe .crumb .live{color:var(--green)}
.course-pipe .crumb .live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-right:5px;vertical-align:1px}
.course-pipe .hero h1{font-size:38px;line-height:1.32;letter-spacing:.01em;margin:14px 0 14px;max-width:900px}
.course-pipe .hook{font-size:18px;color:var(--ink);max-width:820px;margin-bottom:18px}
.course-pipe .hook b{color:var(--coral)}
.course-pipe .meta{display:flex;flex-wrap:wrap;gap:8px 0;align-items:center;font-family:var(--mono);font-size:12px;color:var(--dim);margin-bottom:26px}
.course-pipe .meta span{display:inline-flex;align-items:center}
.course-pipe .meta span+span::before{content:"·";margin:0 12px;color:var(--line)}
.course-pipe .meta .free-n{color:var(--green);font-weight:700}
.course-pipe .cta-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.course-pipe .cta-note{font-size:14px;color:var(--dim)}

/* === 战利品架 === */
.course-pipe .shelf{margin-top:40px;padding-bottom:34px}
.course-pipe .shelf-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.course-pipe .shelf-head .lb{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--tint);font-weight:700}
.course-pipe .shelf-head .hint{font-size:14px;color:var(--dim)}
.course-pipe .rail{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;border-bottom:2px solid rgba(24,35,45,.22);padding-bottom:0}
.course-pipe .tile{
  display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px 12px;
  background:var(--white);border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;
  text-align:center;position:relative;transition:transform .12s ease,border-color .12s ease;cursor:pointer;
}
.course-pipe .tile:hover{transform:translateY(-3px);border-color:var(--coral)}
.course-pipe .tile .t-no{font-family:var(--mono);font-size:12px;color:var(--dim);position:absolute;top:8px;left:10px}
.course-pipe .tile .t-lb{font-size:14px;font-weight:600;line-height:1.35}
.course-pipe .tile .t-st{font-family:var(--mono);font-size:12px;color:var(--dim)}
.course-pipe .tile:hover .t-st{color:var(--coral)}
.course-pipe .icn{width:46px;height:36px;position:relative;margin-top:10px;flex:none}
.course-pipe .icn i{position:absolute}
/* 8 种图标 */
.course-pipe .icn-sheet i.f{inset:0;border:1.5px solid var(--ink);border-radius:3px;background:var(--white)}
.course-pipe .icn-sheet i.hd{top:0;left:0;right:0;height:8px;border-bottom:1.5px solid var(--ink);background:rgba(47,125,87,.22);border-radius:2px 2px 0 0}
.course-pipe .icn-sheet i.v1{top:8px;bottom:0;left:14px;width:1.5px;background:rgba(24,35,45,.22)}
.course-pipe .icn-sheet i.v2{top:8px;bottom:0;left:29px;width:1.5px;background:rgba(24,35,45,.22)}
.course-pipe .icn-sheet i.h1{top:17px;left:0;right:0;height:1.5px;background:rgba(24,35,45,.22)}
.course-pipe .icn-sheet i.h2{top:26px;left:0;right:0;height:1.5px;background:rgba(24,35,45,.22)}
.course-pipe .icn-sheet i.c1{top:20px;left:17px;width:9px;height:4px;background:var(--coral)}
.course-pipe .icn-perm i.f{inset:0;border:1.5px solid var(--ink);border-radius:3px;background:var(--white)}
.course-pipe .icn-perm i.r1{top:7px;left:6px;width:20px;height:2.5px;background:rgba(24,35,45,.3)}
.course-pipe .icn-perm i.r2{top:15px;left:6px;width:20px;height:2.5px;background:rgba(24,35,45,.3)}
.course-pipe .icn-perm i.r3{top:23px;left:6px;width:20px;height:2.5px;background:rgba(24,35,45,.3)}
.course-pipe .icn-perm i.k1{top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--green)}
.course-pipe .icn-perm i.k2{top:13px;right:5px;width:7px;height:7px;border-radius:50%;background:rgba(24,35,45,.18)}
.course-pipe .icn-perm i.k3{top:21px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--coral)}
.course-pipe .icn-md{width:30px}
.course-pipe .icn-md i.f{inset:0;border:1.5px solid var(--ink);border-radius:3px;background:var(--white)}
.course-pipe .icn-md i.fold{top:-1px;right:-1px;width:10px;height:10px;background:var(--canvas);border-left:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}
.course-pipe .icn-md i.tx{bottom:4px;left:0;right:0;font-family:var(--mono);font-size:9px;font-weight:700;text-align:center;color:var(--tint);font-style:normal}
.course-pipe .icn-md i.l1{top:8px;left:5px;width:14px;height:2px;background:rgba(24,35,45,.35)}
.course-pipe .icn-md i.l2{top:12px;left:5px;width:18px;height:2px;background:var(--blue)}
.course-pipe .icn-agents i.a{top:3px;width:12px;height:30px;border:1.5px solid var(--ink);border-radius:2px;background:var(--white)}
.course-pipe .icn-agents i.a1{left:0}
.course-pipe .icn-agents i.a2{left:16px;top:0;height:36px;background:var(--paper)}
.course-pipe .icn-agents i.a3{left:32px}
.course-pipe .icn-win i.f{inset:0;border:1.5px solid var(--ink);border-radius:3px;background:var(--paper)}
.course-pipe .icn-win i.b{top:0;left:0;right:0;height:9px;border-bottom:1.5px solid var(--ink);background:rgba(24,35,45,.08);border-radius:2px 2px 0 0}
.course-pipe .icn-win i.l1{top:15px;left:6px;width:22px;height:2.5px;background:rgba(24,35,45,.4)}
.course-pipe .icn-win i.l2{top:21px;left:6px;width:30px;height:2.5px;background:var(--coral)}
.course-pipe .icn-win i.l3{top:27px;left:6px;width:16px;height:2.5px;background:rgba(24,35,45,.25)}
.course-pipe .icn-book{width:38px}
.course-pipe .icn-book i.s1{top:5px;left:3px;width:28px;height:29px;border:1.5px solid var(--ink);border-radius:2px;background:var(--paper);transform:rotate(-7deg)}
.course-pipe .icn-book i.s2{top:3px;left:8px;width:28px;height:29px;border:1.5px solid var(--ink);border-radius:2px;background:var(--white);transform:rotate(4deg)}
.course-pipe .icn-book i.s3{top:1px;left:5px;width:29px;height:31px;border:1.5px solid var(--ink);border-radius:2px;background:var(--white)}
.course-pipe .icn-book i.bm{top:-1px;left:23px;width:6px;height:12px;background:var(--coral)}
.course-pipe .icn-book i.l1{top:10px;left:11px;width:16px;height:2px;background:rgba(24,35,45,.35)}
.course-pipe .icn-book i.l2{top:15px;left:11px;width:12px;height:2px;background:rgba(24,35,45,.22)}
.course-pipe .icn-book i.l3{top:20px;left:11px;width:14px;height:2px;background:rgba(24,35,45,.22)}
.course-pipe .icn-clock{width:36px}
.course-pipe .icn-clock i.f{inset:0;border:1.5px solid var(--ink);border-radius:50%;background:var(--white)}
.course-pipe .icn-clock i.h{top:50%;left:50%;width:2px;height:10px;background:var(--ink);transform-origin:top center;transform:rotate(210deg)}
.course-pipe .icn-clock i.m{top:50%;left:50%;width:2px;height:13px;background:var(--coral);transform-origin:top center;transform:rotate(90deg)}
.course-pipe .icn-clock i.c{top:50%;left:50%;width:4px;height:4px;margin:-2px;border-radius:50%;background:var(--ink)}
.course-pipe .icn-folder i.tab{top:2px;left:0;width:18px;height:8px;border:1.5px solid var(--ink);border-bottom:none;border-radius:3px 3px 0 0;background:#f2d8a0}
.course-pipe .icn-folder i.f{top:8px;left:0;right:0;bottom:0;border:1.5px solid var(--ink);border-radius:0 3px 3px 3px;background:#f7e3b5}
.course-pipe .icn-folder i.chk{top:13px;left:0;right:0;font-style:normal;text-align:center;font-size:12px;font-weight:700;color:var(--green)}

/* === 工序条 .fitbar === */
.course-pipe .fitbar{background:var(--white);border-bottom:1px solid var(--line)}
.course-pipe .fitbar .wrap{display:flex;gap:0;align-items:stretch;padding-top:16px;padding-bottom:16px}
.course-pipe .fit-cell{padding:2px 26px;flex:1}
.course-pipe .fit-cell+.fit-cell{border-left:1px solid var(--line)}
.course-pipe .fit-cell:first-child{padding-left:0}
.course-pipe .fit-cell:last-child{padding-right:0}
.course-pipe .fit-lb{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--dim);display:block;margin-bottom:3px}
.course-pipe .fit-tx{font-size:14px;line-height:1.65}
.course-pipe .fit-tx .sep{color:var(--line);margin:0 8px}
.course-pipe .fit-tx b.no-need{color:var(--green)}

/* === 流水线 === */
.course-pipe .route{padding:56px 0 40px}
.course-pipe .route-head{text-align:center;max-width:640px;margin:0 auto 30px}
.course-pipe .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--tint);font-weight:700}
.course-pipe .route-head h2,.course-pipe .bench-copy h2,.course-pipe .final-head h2,.course-pipe .cta-final h2{font-size:20px;margin:10px 0 8px;line-height:1.45}
.course-pipe .route-head p{font-size:14px;color:var(--dim)}
.course-pipe .route-flow{position:relative;padding:8px 0 0}
.course-pipe .route-flow::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:repeating-linear-gradient(180deg,rgba(24,35,45,.28) 0 7px,transparent 7px 15px)}
.course-pipe .rrow{display:grid;grid-template-columns:minmax(0,1fr) 96px minmax(0,1fr);padding:20px 0;position:relative}
.course-pipe .node{grid-column:2;grid-row:1;justify-self:center;align-self:start;margin-top:6px;width:15px;height:15px;border-radius:50%;background:var(--canvas);border:3px solid var(--ink);z-index:1}
.course-pipe .rrow.R .node{background:var(--canvas)}
.course-pipe .station{max-width:496px;width:100%;grid-row:1}
.course-pipe .rrow.L .station{grid-column:1;justify-self:end}
.course-pipe .rrow.R .station{grid-column:3;justify-self:start}
.course-pipe .plate{
  display:inline-flex;align-items:center;gap:4px 10px;flex-wrap:wrap;
  background:var(--forest);color:rgba(251,248,241,.94);border-radius:6px;padding:5px 12px;margin-bottom:12px;
  font-family:var(--mono);font-size:12px;box-shadow:2px 2px 0 rgba(24,35,45,.14);
}
.course-pipe .plate span{white-space:nowrap}
.course-pipe .plate .p-no{font-weight:700;letter-spacing:.08em}
.course-pipe .plate .p-info{color:rgba(251,248,241,.6)}
.course-pipe .plate.pre{background:transparent;color:var(--ink);border:1.5px dashed rgba(24,35,45,.4);box-shadow:none}
.course-pipe .plate.pre .p-info{color:var(--dim)}
.course-pipe .plate .p-free{color:#8fd3a8;font-weight:700}
.course-pipe .plate.pre .p-free{color:var(--green)}
.course-pipe .st-title{font-size:20px;line-height:1.45;margin-bottom:6px}
.course-pipe .st-dek{font-size:14px;color:var(--dim);line-height:1.7}

/* === .waypoint 5 种变体 === */
.course-pipe .waypoint{
  grid-column:1 / -1;display:flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 0;font-family:var(--mono);font-size:12px;color:var(--dim);
}
.course-pipe .waypoint .wp-chip{
  display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:8px;
  background:var(--white);border:1px solid var(--line);color:var(--ink);font-weight:700;
}
.course-pipe .waypoint .wp-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--dim)}
.course-pipe .waypoint.start .wp-chip{background:var(--forest);color:#fbf8f1;border-color:var(--forest)}
.course-pipe .waypoint.start .wp-chip .dot{background:#8fd3a8}
.course-pipe .waypoint.zero .wp-chip{border-color:var(--coral);color:var(--coral)}
.course-pipe .waypoint.zero .wp-chip .dot{background:var(--coral)}
.course-pipe .waypoint.full .wp-chip{background:var(--green);color:#fff;border-color:var(--green)}
.course-pipe .waypoint.full .wp-chip .dot{background:#fff}

/* === 实物卡 .obj + 7 种内部结构 === */
.course-pipe .loot{margin:16px 0 0}
.course-pipe .obj{
  background:var(--white);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 3px 14px rgba(24,35,45,.09),0 1px 0 rgba(24,35,45,.05);
  overflow:hidden;transform:rotate(-.6deg);
}
.course-pipe .rrow.R .obj{transform:rotate(.6deg)}
.course-pipe .loot .obj+.obj{margin-top:14px}
.course-pipe .loot figcaption{font-size:13px;line-height:1.65;color:var(--dim);margin-top:12px;padding-left:2px}
.course-pipe .loot figcaption b{display:inline-block;font-family:var(--mono);font-size:12px;color:#fff;background:var(--coral);border-radius:4px;padding:1px 8px;margin-right:8px;font-weight:700;vertical-align:1px}
/* 结构 1：开工检查清单 .sh-head + .chk */
.course-pipe .sh-head{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:12px;color:var(--dim);border-bottom:1px solid var(--line);padding:9px 14px;background:var(--paper)}
.course-pipe .sh-head .ok-t{color:var(--green);font-weight:700}
.course-pipe .chk{display:flex;align-items:center;gap:9px;padding:7px 14px;font-size:14px;border-bottom:1px dashed rgba(24,35,45,.1)}
.course-pipe .chk:last-child{border-bottom:none}
.course-pipe .lamp{width:9px;height:9px;border-radius:50%;background:var(--green);flex:none;box-shadow:0 0 0 3px rgba(47,125,87,.16)}
.course-pipe .chk code{font-family:var(--mono);font-size:12px;color:var(--dim)}
/* 结构 2：Excel 表格 .xls */
.course-pipe .xls{font-family:var(--mono);font-size:12px}
.course-pipe .xls .xrow{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,1fr) 96px;align-items:center;border-bottom:1px dashed rgba(24,35,45,.1)}
.course-pipe .xls .xrow:last-child{border-bottom:none}
.course-pipe .xls .xrow>span{padding:8px 10px;min-width:0}
.course-pipe .xls .xrow>span+span{border-left:1px solid rgba(24,35,45,.08)}
.course-pipe .xls .xhead{background:var(--paper);color:var(--dim);border-bottom:1px solid var(--line)}
.course-pipe .xls .xhead>span{padding:6px 10px}
.course-pipe .xls .wln{margin:0;height:6px;border-radius:3px;background:rgba(47,125,87,.3)}
.course-pipe .xls .ok-t{color:var(--green);font-weight:700;white-space:nowrap}
.course-pipe .xls .fix-t{color:var(--coral);font-weight:700;white-space:nowrap}
.course-pipe .xls .est-t{color:var(--blue);font-weight:700;white-space:nowrap}
/* 结构 3：三件套报告 .rep3 */
.course-pipe .rep3{padding:14px}
.course-pipe .rep3 .rep{padding:8px 0;border-bottom:1px dashed rgba(24,35,45,.1)}
.course-pipe .rep3 .rep:last-child{border-bottom:none}
.course-pipe .rep3 .rep .mono{display:block;font-size:12px;color:var(--dim);margin-bottom:4px}
.course-pipe .rep3 .wln{margin:4px 0;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--blue),rgba(72,104,140,.3))}
.course-pipe .rep3 .wln.w2{background:linear-gradient(90deg,var(--green),rgba(47,125,87,.3))}
.course-pipe .rep3 .wln.w3{background:linear-gradient(90deg,var(--coral),rgba(223,81,48,.3))}
.course-pipe .verdict{padding:10px 14px;background:var(--paper);border-top:1px solid var(--line);font-size:12px;color:var(--dim)}
.course-pipe .verdict em{color:var(--coral);font-style:normal;font-weight:700}
/* 结构 4：网页成品 .wbar + .wbody */
.course-pipe .wbar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--paper);border-bottom:1px solid var(--line);font-size:12px;color:var(--dim)}
.course-pipe .wbar i{width:9px;height:9px;border-radius:50%;background:rgba(24,35,45,.18)}
.course-pipe .wbar i:nth-child(1){background:#e06c5e}
.course-pipe .wbar i:nth-child(2){background:#e0b341}
.course-pipe .wbar i:nth-child(3){background:#56b870}
.course-pipe .wbody{padding:16px}
.course-pipe .wbody .wln{margin:6px 0;height:6px;border-radius:3px;background:rgba(24,35,45,.12)}
.course-pipe .wbody .wln.t{background:var(--coral);width:46%}
.course-pipe .wflag{font-family:var(--mono);font-size:11px;color:var(--blue);margin:10px 0;padding:6px 10px;background:rgba(72,104,140,.08);border-radius:4px}
.course-pipe .wstamp{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:10.5px;color:var(--green);border:1px dashed var(--green);border-radius:4px;padding:3px 8px}
/* 结构 5：Skill 文档 .stack + .tabs + .fdoc */
.course-pipe .obj.stack{padding:0}
.course-pipe .stack .tabs{display:flex;gap:0;border-bottom:1px solid var(--line);background:var(--paper)}
.course-pipe .stack .tabs span{padding:8px 12px;font-family:var(--mono);font-size:11.5px;color:var(--dim);border-right:1px solid var(--line);cursor:default}
.course-pipe .stack .tabs span:first-child{background:var(--white);color:var(--ink);font-weight:700}
.course-pipe .fdoc{padding:12px 14px}
.course-pipe .fdoc .fd-name{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink);margin-bottom:8px}
.course-pipe .fdoc .fd-line{font-size:13px;line-height:1.7;margin:4px 0;padding-left:18px;position:relative}
.course-pipe .fdoc .fd-line::before{content:"";position:absolute;left:0;top:.65em;width:5px;height:5px;border-radius:50%;background:var(--coral)}
.course-pipe .fdoc .fd-line span{color:var(--dim);font-size:12px}
/* 结构 6：项目文件夹 .folder */
.course-pipe .obj.folder{padding:0}
.course-pipe .folder .fo-tab{display:block;padding:8px 12px;background:var(--paper);border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--dim)}
.course-pipe .folder .fo-body{padding:10px 14px;font-family:var(--mono);font-size:12px;line-height:1.9;color:var(--ink-2)}
.course-pipe .folder .fo-body .ok-t{color:var(--green);font-weight:700}
/* 结构 7：运行记录 .runln */
.course-pipe .runln{display:flex;justify-content:space-between;padding:7px 14px;font-family:var(--mono);font-size:12px;border-bottom:1px dashed rgba(24,35,45,.1)}
.course-pipe .runln:last-child{border-bottom:none}
.course-pipe .runln .ok-t{color:var(--green)}
.course-pipe .runln .warn-t{color:var(--coral)}

/* === 工序清单 details（课时列表） === */
.course-pipe .lessons{margin-top:18px}
.course-pipe .lessons>summary{
  display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-family:var(--mono);font-size:13px;color:var(--ink);font-weight:700;
  padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--white);
  transition:border-color .12s;
}
.course-pipe .lessons>summary::-webkit-details-marker{display:none}
.course-pipe .lessons>summary:hover{border-color:var(--coral)}
.course-pipe .lessons>summary .plus{margin-left:auto;color:var(--tint);font-size:16px;font-weight:900}
.course-pipe .lessons[open]>summary .plus::before{content:"×"}
.course-pipe .lessons:not([open])>summary .plus::before{content:"+"}
.course-pipe .lessons-body{padding:8px 0 0}
.course-pipe .lrow{
  display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:4px 10px;
  align-items:center;padding:9px 12px;border-radius:7px;font-size:14px;cursor:pointer;
  transition:background .12s;
}
.course-pipe .lrow:hover{background:var(--bg-2)}
.course-pipe .lrow .no{font-family:var(--mono);font-size:12px;color:var(--dim)}
.course-pipe .lrow .ttl{font-size:14px;line-height:1.55;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.course-pipe .lrow .side{display:flex;align-items:center;gap:6px;justify-self:end}
.course-pipe .lrow .min{font-family:var(--mono);font-size:11px;color:var(--dim)}
.course-pipe .l-check{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--line-2);display:grid;place-items:center;grid-column:1}
.course-pipe .l-row.is-done .l-check,.course-pipe .lrow.is-done .l-check{background:var(--green);border-color:var(--green)}
.course-pipe .lrow.is-done .ttl{color:var(--dim)}

/* === 环形进度卡 === */
.course-pipe .progress-card{
  display:flex;align-items:center;gap:20px;background:var(--white);border:1px solid var(--line);
  border-radius:14px;padding:24px 28px;margin:48px auto;max-width:560px;box-shadow:var(--sh-card);
}
.course-pipe .ring-wrap{position:relative;width:56px;height:56px;flex:none}
.course-pipe .ring-wrap svg{transform:rotate(-90deg)}
.course-pipe .ring-wrap .ring-bg{stroke:var(--line)}
.course-pipe .ring-wrap .ring-val{stroke:var(--tint);transition:stroke-dasharray .4s ease,stroke .2s}
.course-pipe .ring-txt{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--ink)}
.course-pipe .progress-txt{flex:1}
.course-pipe .progress-txt b{display:block;font-size:16px;font-weight:700;color:var(--ink)}
.course-pipe .progress-txt span{display:block;font-family:var(--mono);font-size:13px;color:var(--dim);margin-top:3px}
.course-pipe .progress-card p{margin:8px 0 0;font-size:13px;color:var(--dim);line-height:1.6;flex:1}
.course-pipe .studio-progress-link{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;border:1px solid var(--line-2);background:var(--white);color:var(--ink);font-size:13px;font-weight:700;cursor:pointer;transition:border-color .12s;flex:none}
.course-pipe .studio-progress-link:hover{border-color:var(--coral);color:var(--coral)}

/* === 底部 CTA === */
.course-pipe .cta-final{padding:48px 0 64px;text-align:center;max-width:640px;margin:0 auto}
.course-pipe .cta-final h2{font-size:20px;margin:10px 0 14px}

/* 暗色适配 */
html.dark .course-pipe .tile,html.dark .course-pipe .obj,html.dark .course-pipe .progress-card,html.dark .course-pipe .lessons>summary{background:var(--surface)}
html.dark .course-pipe .sh-head,html.dark .course-pipe .xls .xhead,html.dark .course-pipe .wbar,html.dark .course-pipe .stack .tabs,html.dark .course-pipe .folder .fo-tab,html.dark .course-pipe .verdict{background:var(--bg-2)}
html.dark .course-pipe .waypoint .wp-chip{background:var(--surface)}

@media(max-width:840px){
  .course-pipe .rail{grid-template-columns:repeat(2,1fr)}
  .course-pipe .rrow{grid-template-columns:48px minmax(0,1fr);padding:16px 0}
  .course-pipe .rrow.L .station,.course-pipe .rrow.R .station{grid-column:2;justify-self:start}
  .course-pipe .node{grid-column:1}
  .course-pipe .route-flow::before{left:24px}
  .course-pipe .fitbar .wrap{flex-direction:column;gap:14px}
  .course-pipe .fit-cell+.fit-cell{border-left:0;border-top:1px solid var(--line);padding-top:14px}
}
