/* ============================================================
   ⑭ 课程学习（关卡式） / 即时反馈 / 成就 / 快捷键 / 移动端底栏
   全部以 ls- 前缀，避免与既有样式冲突
   ============================================================ */

/* ---------- 顶部统计 ---------- */
.ls-top{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 18px}
.ls-top-num{display:flex;align-items:baseline;gap:5px}
.ls-top-num b{font-size:26px;font-weight:800;color:var(--gold-soft);line-height:1}
.ls-top-num em{font-style:normal;font-size:12px;color:var(--muted)}
.ls-bar-wrap{flex:1;min-width:180px;display:flex;align-items:center;gap:10px}
.ls-bar{flex:1;height:9px;background:var(--panel2);border-radius:5px;overflow:hidden}
.ls-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-soft));border-radius:5px;transition:width .4s ease}
.ls-bar-wrap span{font-size:12px;color:var(--gold);white-space:nowrap}
.ls-unlock{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}
.ls-unlock input{accent-color:var(--gold)}

/* ---------- 阶段筛选 ---------- */
.ls-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 10px}
.ls-chip{background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:6px 14px;font-size:12.5px;cursor:pointer;transition:.15s}
.ls-chip:hover{border-color:var(--gold);color:var(--text)}
.ls-chip.on{background:rgba(201,162,74,.12);border-color:var(--gold);color:var(--gold-soft);font-weight:600}
.ls-note{background:var(--panel);border:1px dashed var(--line);border-radius:10px;padding:11px 14px;font-size:12.5px;color:var(--muted);line-height:1.8;margin-bottom:12px}

/* ---------- 课程卡片 ---------- */
.ls-list{display:flex;flex-direction:column;gap:9px}
.ls{background:var(--panel);border:1px solid var(--line);border-radius:11px;overflow:hidden;transition:border-color .15s}
.ls:hover{border-color:rgba(201,162,74,.45)}
.ls[open]{border-color:rgba(201,162,74,.6)}
.ls[data-done="1"]{border-left:3px solid #1db479}
.ls[data-locked="1"]{opacity:.72}
.ls-head{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;list-style:none}
.ls-head::-webkit-details-marker{display:none}
.ls-no{width:26px;height:26px;flex:0 0 auto;border-radius:50%;background:var(--panel2);border:1px solid var(--line);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.ls[data-done="1"] .ls-no{background:rgba(29,180,121,.14);border-color:rgba(29,180,121,.4);color:#1db479}
.ls-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ls-main b{font-size:14.5px;font-weight:600;color:var(--text);line-height:1.4}
.ls-main em{font-style:normal;font-size:11.5px;color:var(--muted)}
.ls-stars{display:flex;gap:2px;flex:0 0 auto}
.ls-star{color:rgba(255,255,255,.16);font-size:14px}
.ls-star.on{color:var(--gold)}
.ls-lock{font-size:11px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:2px 7px;white-space:nowrap}

.ls-body{padding:2px 18px 18px 18px;border-top:1px solid var(--line);margin-top:2px}
.ls-goal{font-size:13px;color:var(--text);line-height:1.85;background:rgba(201,162,74,.07);border-left:2px solid var(--gold);border-radius:0 6px 6px 0;padding:9px 12px;margin:14px 0}
.ls-goal b{display:block;font-size:11.5px;color:var(--gold);margin-bottom:3px;font-weight:600;letter-spacing:.5px}
.ls-points{margin:0 0 14px;padding-left:20px}
.ls-points li{font-size:13px;color:var(--muted);line-height:1.95;margin-bottom:2px}
.ls-points li::marker{color:var(--gold)}

.ls-act{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:11px 13px;margin-bottom:16px}
.ls-act-hit{font-size:11.5px;color:var(--muted)}
.ls-btn{background:linear-gradient(135deg,var(--gold),var(--gold-soft));color:#241c07;border:0;border-radius:7px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:filter .15s}
.ls-btn:hover{filter:brightness(1.08)}
.ls-btn.ghost{background:var(--panel2);color:var(--text);border:1px solid var(--line)}
.ls-btn.ghost:hover{border-color:var(--gold)}
.ls-btn.mini{padding:4px 10px;font-size:11.5px;font-weight:600}

.ls-quiz-t{font-size:12px;color:var(--gold);font-weight:600;letter-spacing:.5px;margin-bottom:8px}
.ls-q{margin-bottom:14px}
.ls-qt{font-size:13px;color:var(--text);line-height:1.7;margin-bottom:8px}
.ls-opts{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.ls-opt{display:flex;align-items:center;gap:8px;text-align:left;background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:7px;padding:8px 11px;font-size:12.5px;cursor:pointer;transition:.15s;font-family:inherit}
.ls-opt:hover{border-color:var(--gold);color:var(--text)}
.ls-opt i{font-style:normal;width:17px;height:17px;flex:0 0 auto;border-radius:4px;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700}
.ls-opt.ok{border-color:rgba(29,180,121,.6);background:rgba(29,180,121,.12);color:#3fd39a}
.ls-opt.ok i{border-color:rgba(29,180,121,.6);color:#3fd39a}
.ls-opt.bad{border-color:rgba(226,75,74,.55);background:rgba(226,75,74,.1);color:#e88}
.ls-opt.bad i{border-color:rgba(226,75,74,.55);color:#e88}
.ls-why{font-size:12px;color:var(--muted);line-height:1.75;margin-top:7px;padding-left:2px}

/* ---------- 学习报告 ---------- */
.ls-sec-t{font-size:14px;font-weight:700;color:var(--text);margin:24px 0 10px;display:flex;align-items:center;gap:8px}
.ls-sec-t::before{content:'';width:3px;height:14px;background:var(--gold);border-radius:2px}
.ls-report{display:grid;grid-template-columns:320px 1fr;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.ls-report-l{display:flex;align-items:center;justify-content:center}
.ls-radar-svg{width:100%;max-width:300px;height:auto}
.ls-report-r{display:flex;flex-direction:column;gap:9px;justify-content:center}
.ls-rep-row{display:flex;gap:12px;align-items:baseline;font-size:12.5px;border-bottom:1px dashed var(--line);padding-bottom:8px}
.ls-rep-row span{color:var(--muted);flex:0 0 88px}
.ls-rep-row b{color:var(--text);font-weight:600;line-height:1.6}
.ls-rep-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}

/* ---------- 徽章 ---------- */
.ls-badges{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.ls-badge{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;text-align:center;opacity:.45;filter:grayscale(1);transition:.2s}
.ls-badge.got{opacity:1;filter:none;border-color:rgba(201,162,74,.5);background:linear-gradient(180deg,rgba(201,162,74,.1),var(--panel))}
.ls-badge span{font-size:22px;display:block;margin-bottom:5px}
.ls-badge b{display:block;font-size:12.5px;color:var(--text);margin-bottom:2px}
.ls-badge em{font-style:normal;font-size:10.5px;color:var(--muted);line-height:1.5;display:block}

/* ---------- Toast ---------- */
.ls-toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%,12px);background:rgba(20,26,34,.96);border:1px solid var(--gold);color:var(--text);font-size:12.5px;padding:9px 18px;border-radius:8px;opacity:0;pointer-events:none;transition:.22s;z-index:320;box-shadow:0 12px 30px rgba(0,0,0,.45)}
.ls-toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 即时反馈卡片 ---------- */
.ls-insight{position:fixed;right:20px;bottom:20px;width:330px;max-width:calc(100vw - 32px);background:linear-gradient(180deg,rgba(201,162,74,.1),var(--panel));border:1px solid rgba(201,162,74,.55);border-radius:12px;padding:14px 16px;z-index:310;box-shadow:0 18px 44px rgba(0,0,0,.5);opacity:0;transform:translateY(14px);pointer-events:none;transition:.24s}
.ls-insight.on{opacity:1;transform:translateY(0);pointer-events:auto}
.ls-ins-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.ls-ins-head b{font-size:13px;color:var(--gold-soft);line-height:1.5}
.ls-x{background:transparent;border:0;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}
.ls-insight p{font-size:12.5px;color:var(--muted);line-height:1.8;margin:8px 0 10px}
.ls-ins-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;color:#7f8ea3}

/* ---------- 快捷键帮助 ---------- */
.ls-help{position:fixed;inset:0;background:rgba(6,10,16,.72);z-index:330;display:none;align-items:center;justify-content:center;padding:20px}
.ls-help.on{display:flex}
.ls-help-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px;max-width:520px;width:100%}
.ls-help-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ls-help-head b{font-size:15px;color:var(--gold-soft)}
.ls-help-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.ls-help-grid span{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:8px}
.ls-help-p{font-size:12px;color:var(--muted);margin-top:14px;line-height:1.9}
kbd{display:inline-block;min-width:20px;text-align:center;background:var(--panel2);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-size:11px;font-family:inherit;color:var(--gold-soft)}

/* ---------- 移动端底部导航 ---------- */
.ls-mnav{display:none}
@media(max-width:620px){
  .ls-mnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:250;background:rgba(12,17,23,.97);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));backdrop-filter:blur(8px)}
  .ls-mnav button{flex:1;background:transparent;border:0;color:var(--muted);font-size:10.5px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 0;cursor:pointer;font-family:inherit}
  .ls-mnav button span{font-size:17px;line-height:1}
  .ls-mnav button.on{color:var(--gold)}
  body{padding-bottom:62px}
  .ls-top{gap:10px;padding:12px}
  .ls-top-num b{font-size:21px}
  .ls-bar-wrap{flex:1 1 100%;min-width:0}
  .ls-unlock{white-space:normal}
  .ls-opts{grid-template-columns:1fr}
  .ls-report{grid-template-columns:1fr;padding:12px}
  .ls-badges{grid-template-columns:repeat(2,1fr)}
  .ls-insight{right:8px;left:8px;width:auto;bottom:70px}
  .ls-head{gap:9px;padding:11px 12px}
  .ls-main b{font-size:13.5px}
  .ls-stars{font-size:12px}
  .ls-lock{display:none}
  .ls-body{padding:2px 13px 15px}
  .ls-goal{font-size:12.5px}
  .ls-points li{font-size:12.5px}
}

/* ---------- 打印（实验报告直接打印） ---------- */
@media print{
  #tabs,#complianceBar,.ls-chips,.ls-unlock,.ls-btn,.ls-mnav,.ls-toast,.ls-insight,.ls-clock{display:none !important}
  body{background:#fff !important;color:#111 !important}
  .panel{display:block !important}
  .panel:not(.active){display:none !important}
  .ls,.ls-top,.ls-report,.ls-badge{background:#fff !important;border-color:#bbb !important;color:#111 !important}
  .ls-main b,.ls-goal,.ls-qt,.ls-rep-row b{color:#111 !important}
  .ls-points li,.ls-main em,.ls-rep-row span{color:#333 !important}
  details{display:block}
  details>summary{list-style:none}
  details:not([open])>div{display:block !important}
  .ls-star.on{color:#b8860b !important}
}


/* ---------- 段位 / 难度分层 ---------- */
.ls-rank{background:linear-gradient(180deg,rgba(201,162,74,.10),var(--panel));border:1px solid rgba(201,162,74,.45);border-radius:12px;padding:14px 16px;margin-bottom:12px}
.ls-rank-head{display:flex;align-items:center;gap:12px}
.ls-rank-badge{flex:0 0 auto;background:linear-gradient(135deg,var(--gold),var(--gold-soft));color:#241c07;font-weight:800;font-size:15px;border-radius:9px;padding:7px 11px;letter-spacing:.5px}
.ls-rank-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ls-rank-t b{font-size:15px;color:var(--gold-soft)}
.ls-rank-t em{font-style:normal;font-size:11.5px;color:var(--muted)}
.ls-rank-max{font-size:22px}
.ls-rank-cond{display:flex;gap:10px;flex-wrap:wrap;margin-top:11px}
.ls-cond{font-size:12px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:5px 10px}
.ls-cond.ok{color:#3fd39a;border-color:rgba(29,180,121,.45);background:rgba(29,180,121,.1)}
.ls-cond i{font-style:normal;color:#8b97a8;margin-left:6px;font-size:11px}
.ls-rank-lv{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px dashed var(--line)}
.ls-rank-lv>span{font-size:12px;color:var(--muted)}
.ls-lvchip{background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;font-family:inherit}
.ls-lvchip:hover{border-color:var(--gold);color:var(--text)}
.ls-lvchip.on{background:rgba(201,162,74,.14);border-color:var(--gold);color:var(--gold-soft);font-weight:600}
.ls-lvchip.locked{opacity:.55;cursor:not-allowed}
.ls-rank-tip{flex:1 1 100%;font-style:normal;font-size:11px;color:#7f8ea3;line-height:1.7}
.ls-lv{flex:0 0 auto;font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:1px 6px;margin-right:8px}
.ls-hide{font-size:12px;color:var(--muted);background:var(--panel);border:1px dashed var(--line);border-radius:9px;padding:12px 14px;text-align:center;margin-top:4px}

/* ---------- 晋级弹层 ---------- */
.ls-up{position:fixed;inset:0;background:rgba(6,10,16,.78);z-index:340;display:none;align-items:center;justify-content:center;padding:20px}
.ls-up.on{display:flex}
.ls-up-box{background:linear-gradient(180deg,rgba(201,162,74,.16),var(--panel));border:1px solid var(--gold);border-radius:16px;padding:26px 30px;text-align:center;max-width:340px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.ls-up-lv{font-size:34px;font-weight:800;color:var(--gold);letter-spacing:1px;line-height:1.1}
.ls-up-box b{display:block;font-size:19px;color:var(--gold-soft);margin:6px 0 8px}
.ls-up-box p{font-size:12.5px;color:var(--muted);line-height:1.8;margin:0 0 16px}
@media(max-width:620px){.ls-rank-head{flex-wrap:wrap}.ls-rank-t{flex:1 1 100%}.ls-rank-lv{gap:6px}}
