:root{
  --bg:#0f1420; --panel:#161d2e; --ink:#e8edf7; --muted:#9aa7c2;
  --line:#2a3550; --accent:#f5c542; --accent2:#5b8cff;
  --ok:#37b24d; --no:#e03131; --hl:#ffe08a;
  --video:#12b886; --confuse:#f08c3b; --mnemo:#9775fa; --board:#4dabf7;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;}
a{color:var(--accent2);text-decoration:none}
header.topbar{height:52px;display:flex;align-items:center;gap:14px;padding:0 18px;
  background:linear-gradient(90deg,#141b2c,#101725);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:30}
header.topbar .brand{font-weight:700;color:var(--accent);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;min-width:0}
header.topbar .sub{color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header.topbar .tools{flex-shrink:0;display:flex;gap:12px;align-items:center}
@media (max-width:640px){ header.topbar .sub{display:none} }
header.topbar .sub{color:var(--muted);font-size:13px}
#search{margin-left:auto;background:#0c1120;border:1px solid var(--line);color:var(--ink);
  border-radius:8px;padding:7px 12px;width:240px;font-size:13px}

/* ---------- 手风琴折叠树（首页） ---------- */
#tree-wrap{position:absolute;top:52px;left:0;right:0;bottom:0;overflow:auto;padding:22px 14px 60px}
.acc{max-width:860px;margin:0 auto}
.acc-node{margin:8px 0}
.acc-row{display:flex;align-items:center;gap:10px;padding:11px 15px;border-radius:11px;
  background:var(--panel);border:1px solid var(--line);cursor:pointer;user-select:none;
  transition:border-color .12s,background .12s}
.acc-row:hover{border-color:#3f5b94}
.acc-row .caret{width:16px;color:var(--muted);font-size:12px;transition:transform .15s;flex:0 0 16px;text-align:center}
.acc-node.open > .acc-row .caret{transform:rotate(90deg)}
.acc-row .lbl{flex:1;font-size:15px}
.acc-row .w{font-size:12px;color:var(--muted);background:#0f1626;border:1px solid var(--line);
  border-radius:20px;padding:2px 10px}
.acc-row.root{background:linear-gradient(135deg,#2b3a63,#1d2942);font-weight:700;font-size:16px}
.acc-row.chapter{background:#1b2740;font-weight:600;margin-left:18px}
.acc-children{display:none;margin:6px 0 4px 18px;padding-left:16px;border-left:1px dashed var(--line)}
.acc-node.open > .acc-children{display:block}
.acc-lec{display:flex;align-items:center;gap:9px;padding:9px 13px;margin:5px 0;border-radius:9px;
  background:#141d30;border:1px solid var(--line);cursor:pointer;font-size:13.5px;color:#d3dcf2}
.acc-lec:hover{border-color:var(--accent2)}
.acc-lec.locked{opacity:.5;cursor:not-allowed}
.acc-lec .n{color:var(--accent);font-weight:700;flex:0 0 34px}
.acc-lec .t{flex:1}
.acc-lec .go{color:var(--accent2);font-size:12px}

/* 用户切换 */
.userbox{position:relative;font-size:12px}
.userbox button{background:#0f1626;border:1px solid var(--line);color:var(--ink);
  border-radius:8px;padding:6px 10px;cursor:pointer}
.user-menu{position:absolute;right:0;top:38px;background:#0d1526;border:1px solid #3a4c78;border-radius:10px;
  padding:8px;min-width:200px;display:none;z-index:60;box-shadow:0 12px 34px rgba(0,0,0,.55)}
.user-menu.show{display:block}
.user-menu .u{padding:7px 9px;border-radius:7px;cursor:pointer;display:flex;gap:8px;align-items:center}
.user-menu .u:hover{background:#1c2740}
.user-menu .u.active{color:var(--accent)}
.user-menu hr{border:0;border-top:1px solid var(--line);margin:6px 0}
.user-menu input{width:100%;background:#0a1020;border:1px solid var(--line);color:var(--ink);
  border-radius:7px;padding:6px 8px}

/* ---------- 用户划线工具条 ---------- */
#selbar{position:absolute;display:none;gap:6px;align-items:center;background:#0b1224;
  border:1px solid #3a4c78;border-radius:9px;padding:6px 8px;z-index:80;box-shadow:0 8px 24px rgba(0,0,0,.6)}
#selbar button{border:0;background:transparent;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:5px}
#selbar .sw{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.35);display:inline-block;cursor:pointer}
.c1{background:#69db7c}.c2{background:#74c0fc}.c3{background:#faa2c1}.c4{background:#ffa94d}

/* 用户高亮 */
mark.uhl{border-radius:4px;padding:0 2px;color:inherit;background:transparent;cursor:pointer}
mark.uhl.c1{background:rgba(105,219,124,.30)}
mark.uhl.c2{background:rgba(116,192,252,.30)}
mark.uhl.c3{background:rgba(250,162,193,.32)}
mark.uhl.c4{background:rgba(255,169,77,.30)}
mark.uhl.notes{box-shadow:0 2px 0 0 var(--accent2)}

/* 备注弹层 */
#notepop{position:absolute;display:none;width:300px;max-width:86vw;background:#0b1224;
  border:1px solid #3a4c78;border-radius:11px;padding:12px;z-index:90;box-shadow:0 14px 40px rgba(0,0,0,.6)}
#notepop textarea{width:100%;min-height:74px;background:#0a1020;border:1px solid var(--line);
  color:var(--ink);border-radius:8px;padding:8px;font-size:13px;resize:vertical;font-family:inherit}
#notepop .nprow{display:flex;gap:8px;margin-top:8px;align-items:center}
#notepop button{border:1px solid var(--line);background:#16233d;color:var(--ink);border-radius:7px;
  padding:5px 12px;font-size:12px;cursor:pointer}
#notepop .del{margin-left:auto;border-color:#5c2b2b;color:#ff8787}
.note-ico{font-size:.78em;margin-left:2px}

/* 我的笔记索引页 */
.noteswrap{max-width:900px;margin:0 auto;padding:24px 18px 100px}
.note-group h3{color:#bcd0ff;border-bottom:1px solid var(--line);padding-bottom:8px;margin-top:26px}
.note-item{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 15px;margin:10px 0}
.note-item{display:flex;gap:12px;align-items:flex-start}
.ni-check{margin-top:3px;cursor:pointer}
.ni-body{flex:1;min-width:0}
.notes-toolbar{display:flex;gap:18px;align-items:center;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:11px 15px;margin-bottom:18px;font-size:13.5px}
.tb-item{display:inline-flex;gap:6px;align-items:center;color:#c6d0e6;cursor:pointer}
.tb-item a{font-size:12.5px}
.tb-btn{background:#16233d;border:1px solid var(--line);color:var(--ink);border-radius:8px;
  padding:7px 13px;font-size:13px;cursor:pointer;margin-left:auto}
.tb-btn:hover{border-color:var(--accent2)}
.tb-btn.danger{margin-left:0;border-color:#5c2b2b;color:#ff8787}
#bulkbar{display:none;position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:70;
  background:#101a2e;border:1px solid var(--accent2);border-radius:12px;padding:10px 14px;gap:12px;
  align-items:center;box-shadow:0 12px 36px rgba(0,0,0,.6);font-size:13.5px}
#bulk-count{color:var(--accent);font-weight:600}
.note-item .meta{font-size:12px;color:var(--muted);margin-bottom:5px}
.note-item .txt{border-left:3px solid #888;padding-left:10px;margin:6px 0;line-height:1.7}
.note-item .nt{color:#ffe3a3;font-size:13.5px;line-height:1.7;white-space:pre-wrap}
.note-item .orphan{color:#ff8787;font-size:12px}
.dotc1{color:#69db7c}.dotc2{color:#74c0fc}.dotc3{color:#faa2c1}.dotc4{color:#ffa94d}
.flash{animation:flash 1.6s ease 2}
@keyframes flash{0%,100%{background:transparent}30%,60%{background:rgba(245,197,66,.35);border-radius:4px}}

/* ---------- 首页美化 ---------- */
.hero{max-width:860px;margin:4px auto 18px;padding:24px 26px;border-radius:16px;
  background:
    radial-gradient(900px 200px at 12% -20%, rgba(91,140,255,.30), transparent 60%),
    radial-gradient(700px 220px at 95% 0%, rgba(245,197,66,.18), transparent 55%),
    linear-gradient(135deg,#1d2942,#141c2e);
  border:1px solid #2c3c60}
.hero-t{font-size:13px;letter-spacing:3px;color:var(--accent);font-weight:600}
.hero-b{font-size:26px;font-weight:800;margin:6px 0 8px;
  background:linear-gradient(90deg,#fff,#9fc0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-m{color:var(--muted);font-size:13px}
.hero-m b{color:var(--accent)}
.hero-d{color:#69db7c}
.acc-row .ico{font-size:16px}

/* 悬停显示的备注气泡 */
#notehover{position:absolute;display:none;z-index:85;max-width:320px;background:#0b1224;
  border:1px solid var(--accent2);border-radius:9px;padding:8px 11px;font-size:12.5px;
  line-height:1.7;color:#d7e0f5;box-shadow:0 10px 30px rgba(0,0,0,.55);pointer-events:none}

/* 右侧悬浮导航 */
.floatnav{position:fixed;right:18px;top:50%;transform:translateY(-50%);z-index:40;
  display:flex;flex-direction:column;gap:8px}
.floatnav .fn{display:block;text-align:center;text-decoration:none;font-size:13px;white-space:nowrap;
  background:rgba(18,25,42,.92);border:1px solid var(--line);color:var(--ink);border-radius:10px;
  padding:9px 12px;cursor:pointer;backdrop-filter:blur(4px)}
.floatnav .fn:hover{border-color:var(--accent2);color:#fff}
.floatnav .fn[disabled]{opacity:.35;cursor:not-allowed}
.floatnav{opacity:.55;transition:opacity .2s}
.floatnav:hover{opacity:1}
@media (max-width:760px){
  .floatnav{right:8px;gap:6px}
  .floatnav .fn{font-size:11px;padding:7px 9px}
  .content{padding:18px 14px 120px 14px !important}
}

/* 顶栏：返回更明显 */
.backlink{color:#bcd0ff !important;font-size:13px;background:#16233d;border:1px solid #2c4069;
  border-radius:8px;padding:6px 11px}
.backlink:hover{border-color:var(--accent2)}

/* ---------- 讲义页 ---------- */
.lec-layout{display:flex;min-height:calc(100vh - 52px)}
.toc{width:260px;flex:0 0 260px;border-right:1px solid var(--line);padding:16px 12px;
  position:sticky;top:52px;height:calc(100vh - 52px);overflow:auto;background:#11182a}
.toc h3{font-size:12px;color:var(--muted);margin:6px 8px 10px;letter-spacing:2px}
.toc a{display:block;padding:7px 9px;border-radius:7px;color:#c6d0e6;font-size:13px;margin-bottom:2px}
.toc a:hover{background:#1c2740}
.content{flex:1;padding:26px 34px 120px;max-width:980px}
.pagecard{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:20px 26px;margin:0 0 26px}
.pagecard > .phead{display:flex;align-items:center;gap:10px;margin:-20px -26px 16px;padding:11px 18px;
  border-bottom:1px solid var(--line);background:#131b2d;border-radius:14px 14px 0 0;flex-wrap:wrap}
.phead .pid{font-weight:700;color:var(--accent)}
.phead .ptime{color:var(--muted);font-size:12px}
.phead .panchor{font-size:12px;color:#8ab4ff;background:#16233d;border:1px solid #28406b;
  border-radius:6px;padding:1px 8px}
.phead .sp{margin-left:auto;display:flex;gap:8px}
.iconbtn{font-size:12px;border:1px solid var(--line);background:#0f1729;color:var(--ink);
  padding:4px 10px;border-radius:7px;cursor:pointer}
.iconbtn:hover{border-color:var(--accent2)}
.pagecard h4{color:#bcd0ff;margin:18px 0 8px;font-size:15px}
.pagecard p{line-height:1.85;margin:8px 0}
.pagecard ul,.pagecard ol{line-height:1.8;padding-left:24px}
.pagecard table{border-collapse:collapse;margin:12px 0;width:100%;font-size:13.5px}
.pagecard th,.pagecard td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
.pagecard th{background:#1a2540}

/* 老师标注的直观呈现 */
mark.circle{background:rgba(245,197,66,.28);color:var(--hl);border-radius:5px;padding:0 3px;
  box-shadow:inset 0 0 0 1.5px rgba(245,197,66,.85)}
u.teacher{text-decoration:underline;text-decoration-color:var(--accent);
  text-decoration-thickness:2.5px;text-underline-offset:3px}
.badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;
  border-radius:50%;font-size:12px;font-weight:800;margin-left:5px;vertical-align:middle}
.badge.ok{background:rgba(55,178,77,.18);color:#69db7c;border:1.5px solid var(--ok)}
.badge.no{background:rgba(224,49,18,.16);color:#ff8787;border:1.5px solid var(--no)}

/* 悬停浮层 */
.pop{position:relative;display:inline-flex;align-items:center;cursor:help;margin:0 2px;
  font-size:.92em;vertical-align:baseline}
.pop .pop-body{visibility:hidden;opacity:0;position:absolute;left:50%;bottom:calc(100% + 9px);
  transform:translateX(-50%) translateY(4px);width:330px;max-width:78vw;background:#0b1224;
  border:1px solid #3a4c78;border-radius:10px;padding:11px 13px;font-size:12.5px;line-height:1.7;
  font-weight:400;color:#d7e0f5;z-index:50;transition:opacity .14s;box-shadow:0 10px 30px rgba(0,0,0,.55);
  text-align:left;white-space:normal;cursor:text}
.pop .pop-body::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);
  border:7px solid transparent;border-top-color:#3a4c78}
.pop:hover .pop-body,.pop.open .pop-body{visibility:visible;opacity:1;transform:translateX(-50%) translateY(0)}
.pop.k-video{color:var(--video)} .pop.k-confuse{color:var(--confuse)}
.pop.k-mnemo{color:var(--mnemo)} .pop.k-board{color:var(--board)}
.pop.k-book{color:var(--accent);margin:0 2px}
.pop.k-book::before{content:"📖";font-size:.95em}
.pop.k-book .pop-body{width:380px;max-width:82vw;border-color:var(--accent)}
.pop.k-book .pop-body::after{border-top-color:var(--accent)}
.bk-head{font-size:11.5px;color:var(--accent);border-bottom:1px solid rgba(245,197,66,.3);
  padding-bottom:6px;margin-bottom:7px;font-weight:600}
.bk-quote{color:#e9e2c8;line-height:1.75;font-size:12.5px;text-align:justify;
  border-left:3px solid rgba(245,197,66,.55);padding-left:9px;white-space:normal}
.pop .pop-body table{font-size:12px}
.pop .pop-body strong{color:#fff}

/* 灯箱 */
#lightbox{position:fixed;inset:0;background:rgba(5,8,15,.86);display:none;align-items:center;
  justify-content:center;z-index:100;flex-direction:column;gap:12px}
#lightbox.show{display:flex}
#lightbox img{max-width:88vw;max-height:74vh;border-radius:10px;border:1px solid #3a4c78}
#lightbox .lbcaption{color:var(--muted);font-size:13px}
#lightbox video{max-height:76vh;max-width:92vw;border-radius:10px}
#lightbox .close{position:absolute;top:20px;right:28px;color:#fff;font-size:30px;cursor:pointer}
.back{color:var(--muted);font-size:13px;margin-bottom:14px;display:inline-block}

/* ---------- 登录 / 注册 / 改密码 ---------- */
#auth-overlay,#passwd-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;
  justify-content:center;background:rgba(6,10,20,.86);backdrop-filter:blur(5px);padding:20px}
#auth-card,#passwd-card{width:340px;max-width:92vw;background:linear-gradient(160deg,#1a2540,#10182a);
  border:1px solid #33466e;border-radius:18px;padding:30px 28px 24px;
  box-shadow:0 24px 70px rgba(0,0,0,.6);display:flex;flex-direction:column;gap:12px}
.auth-logo{font-size:40px;text-align:center}
.auth-title{font-size:18px;font-weight:700;color:var(--accent);text-align:center}
.auth-sub{font-size:12.5px;color:var(--muted);text-align:center;margin-bottom:6px;line-height:1.6}
#auth-card input,#passwd-card input{background:#0a1020;border:1px solid var(--line);color:var(--ink);
  border-radius:9px;padding:11px 13px;font-size:14px;outline:none}
#auth-card input:focus,#passwd-card input:focus{border-color:var(--accent2)}
#auth-card button,#passwd-card button{border:0;border-radius:9px;padding:11px;font-size:15px;
  cursor:pointer;background:linear-gradient(90deg,#f5c542,#e8a817);color:#231a02;font-weight:700}
#auth-card button:disabled{opacity:.6;cursor:wait}
#auth-card button.ghost,#passwd-card button.ghost{background:transparent;border:1px solid var(--line);
  color:var(--muted);font-weight:400;font-size:13px;padding:9px}
#auth-card button.ghost:hover,#passwd-card button.ghost:hover{border-color:var(--accent2);color:var(--ink)}
.auth-err{color:#ff8787;font-size:12.5px;min-height:16px;text-align:center}
.auth-hint{font-size:11.5px;color:var(--muted);text-align:center;opacity:.75;margin-top:4px;line-height:1.6}
.user-menu .u.disabled{opacity:.65;cursor:default}
.user-menu .u.disabled:hover{background:transparent}

/* ---------- 易混速查：入口页 ---------- */
.rv-wrap{max-width:980px;margin:0 auto;padding:22px 16px 80px}
.rv-hero{padding:24px 26px;border-radius:16px;margin-bottom:20px;
  background:
    radial-gradient(900px 200px at 12% -20%, rgba(240,140,59,.26), transparent 60%),
    radial-gradient(700px 220px at 95% 0%, rgba(151,117,250,.20), transparent 55%),
    linear-gradient(135deg,#2a2340,#171c2e);
  border:1px solid #4a3a60}
.rv-hero .hero-t{font-size:13px;letter-spacing:3px;color:var(--confuse);font-weight:600}
.rv-hero .hero-b{font-size:25px;font-weight:800;margin:6px 0 8px;
  background:linear-gradient(90deg,#fff,#ffc9a3);-webkit-background-clip:text;background-clip:text;color:transparent}
.rv-hero .hero-m{color:var(--muted);font-size:13px;line-height:1.8}
.rv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.rv-card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:16px 18px;cursor:pointer;color:inherit;transition:border-color .12s,transform .12s}
.rv-card:hover{border-color:var(--confuse);transform:translateY(-2px)}
.rv-card .rv-tt{font-size:15.5px;font-weight:700;color:#ffd9bf;margin-bottom:8px}
.rv-card .rv-ico{margin-right:6px}
.rv-card .rv-short{display:block;font-size:12.5px;color:var(--muted);line-height:1.9}
.rv-card .rv-go{float:right;font-size:12px;color:var(--confuse);margin-top:2px}
.acc-row.rv-portal{background:linear-gradient(135deg,#3a2a1d,#2a1d2e);
  border-color:#5c4530;max-width:860px;margin:0 auto 14px;display:flex}
.acc-row.rv-portal:hover{border-color:var(--confuse)}
.acc-row.rv-portal .lbl{color:#ffd9bf}
.rv-portal-go{color:var(--confuse);font-size:13px;font-weight:600}

/* ---------- 易混速查：章节查看器 ---------- */
.rv-layout{display:flex;min-height:calc(100vh - 52px)}
.rv-toc{width:250px;flex:0 0 250px;border-right:1px solid var(--line);padding:16px 12px;
  position:sticky;top:52px;height:calc(100vh - 52px);overflow:auto;background:#13111f}
.rv-toc h3{font-size:12px;color:var(--muted);margin:6px 8px 10px;letter-spacing:2px}
.rv-toc a{display:block;padding:7px 9px;border-radius:7px;color:#c6d0e6;font-size:13px;margin-bottom:2px}
.rv-toc a:hover{background:#27213c}
.rv-toc a.active{background:#33274d;color:#ffd9bf}
.rv-toc a.sub{padding-left:22px;font-size:12.5px;color:#9aa7c2}
.rv-content{flex:1;padding:24px 30px 120px;max-width:1000px;min-width:0}
.rv-content h1.rv-chtitle{font-size:21px;color:#ffd9bf;margin:0 0 6px}
.rv-content .rv-chmeta{color:var(--muted);font-size:12.5px;margin-bottom:22px}
.rv-block{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:18px 24px;margin:0 0 20px}
.rv-block > h2.block-tt{margin:0 0 12px;font-size:16px;color:#ffc9a3;
  padding-bottom:10px;border-bottom:1px solid var(--line)}
.rv-body h2{color:#d8c4ff;font-size:15.5px;margin:20px 0 8px}
.rv-body h3{color:#bcd0ff;font-size:14.5px;margin:16px 0 7px}
.rv-body h4{color:#c9d6f5;font-size:13.5px;margin:14px 0 6px}
.rv-body p{line-height:1.85;margin:8px 0}
.rv-body ul,.rv-body ol{line-height:1.85;padding-left:24px;margin:8px 0}
.rv-body li{margin:3px 0}
.rv-body table{border-collapse:collapse;margin:12px 0;width:100%;font-size:13px}
.rv-body th,.rv-body td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top}
.rv-body th{background:#241d3a;color:#e7dbff}
.rv-body tr:nth-child(even) td{background:rgba(255,255,255,.025)}
.rv-body blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--confuse);
  background:rgba(240,140,59,.08);color:#d9c8bb;border-radius:0 8px 8px 0}
.rv-body blockquote p{margin:4px 0}
.rv-body code{background:#0d1020;border:1px solid var(--line);border-radius:5px;
  padding:1px 6px;font-size:12.5px}
.rv-body strong{color:#fff}
@media (max-width:760px){
  .rv-toc{display:none}
  .rv-content{padding:18px 14px 100px}
}

/* ---------- 多源证据内联浮窗 ---------- */
.src-pop{position:relative;display:inline-flex;align-items:center;cursor:help;
  margin:0 1px 0 3px;vertical-align:baseline}
.src-pop .src-ico{font-size:.82em;line-height:1;filter:drop-shadow(0 0 3px rgba(0,0,0,.6))}
.src-pop .src-body{visibility:hidden;opacity:0;position:absolute;left:50%;bottom:calc(100% + 10px);
  transform:translateX(-50%) translateY(4px);width:400px;max-width:86vw;background:#0b1224;
  border:1px solid var(--confuse);border-radius:11px;padding:11px 13px;font-size:12.5px;
  line-height:1.7;color:#d7e0f5;z-index:55;transition:opacity .14s;
  box-shadow:0 12px 32px rgba(0,0,0,.6);text-align:left;white-space:normal;cursor:text}
.src-pop .src-body::after{content:"";position:absolute;left:50%;top:100%;
  transform:translateX(-50%);border:7px solid transparent;border-top-color:var(--confuse)}
.src-pop:hover .src-body,.src-pop.open .src-body{visibility:visible;opacity:1;
  transform:translateX(-50%) translateY(0)}
.src-card{padding:8px 0;border-top:1px dashed var(--line)}
.src-card:first-child{border-top:0;padding-top:2px}
.src-head{display:flex;align-items:center;gap:7px;margin-bottom:4px;flex-wrap:wrap}
.src-tag{font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;white-space:nowrap}
.src-tag.k-textbook{background:rgba(245,197,66,.16);color:var(--accent)}
.src-tag.k-lecture{background:rgba(91,140,255,.16);color:#8ab4ff}
.src-tag.k-board{background:rgba(77,171,247,.16);color:#74c0fc}
.src-tag.k-video{background:rgba(18,184,134,.15);color:#63e6be}
.src-tag.k-mnemo{background:rgba(151,117,250,.17);color:#b197fc}
.src-tag.k-confuse{background:rgba(240,140,59,.16);color:#ffa94d}
.src-loc{font-size:11px;color:var(--muted)}
.src-ex{color:#e9e2d8;white-space:pre-wrap;text-align:justify;
  border-left:3px solid #4a4055;padding-left:9px;margin:3px 0 6px}
.src-btns{display:flex;gap:6px;flex-wrap:wrap}
.src-btn{font-size:11.5px;border:1px solid var(--line);background:#16233d;color:#d7e0f5;
  border-radius:7px;padding:3px 9px;cursor:pointer}
.src-btn:hover{border-color:var(--accent2);color:#fff}
/* 教材灯箱 */
#lightbox .tb-page{max-width:760px;max-height:78vh;overflow:auto;background:#0d1526;
  border:1px solid var(--accent);border-radius:12px;padding:20px 24px;width:90vw}
#lightbox .tb-page h2{color:var(--accent);font-size:16px;margin:0 0 4px}
#lightbox .tb-page .tb-sec{color:var(--muted);font-size:12px;margin-bottom:14px}
#lightbox .tb-page .tb-txt{line-height:2;color:#e9e2d0;font-size:13.5px;
  white-space:pre-wrap;text-align:justify}

/* ================= 有声书（au-/pl-/tx-） ================= */
#audio-root{position:absolute;top:52px;left:0;right:0;bottom:0;overflow:hidden}
.au-wrap{position:absolute;inset:0;overflow:auto;padding:22px 14px 60px;max-width:860px;margin:0 auto}
@media (max-width:880px){ .au-wrap{max-width:none} }
.au-hero{max-width:760px;margin:0 auto 18px;
  background:linear-gradient(135deg,#2b3a63,#1d2942);border:1px solid #3f5b94;
  border-radius:14px;padding:20px 24px}
.au-hero-t{font-size:20px;font-weight:700;color:var(--accent)}
.au-hero-b{font-size:13px;color:#cfd9f2;margin-top:5px}
.au-hero-m{font-size:12.5px;color:var(--muted);margin-top:10px}
.au-tip{color:#b9c4de}
.au-list{max-width:760px;margin:0 auto}
.au-item{display:flex;align-items:center;gap:14px;padding:14px 16px;margin:9px 0;
  border-radius:12px;background:var(--panel);border:1px solid var(--line);
  transition:border-color .12s,transform .12s}
.au-item:hover{border-color:#3f5b94;transform:translateY(-1px)}
.au-item.done .au-no{background:rgba(55,178,77,.18);color:#69db7c}
.au-no{flex:0 0 42px;height:42px;display:flex;align-items:center;justify-content:center;
  background:rgba(245,197,66,.15);color:var(--accent);font-weight:700;border-radius:10px}
.au-main{flex:1;min-width:0}
.au-title{display:block;font-size:15px}
.au-meta{display:block;font-size:12px;color:var(--muted);margin:4px 0 8px}
.au-prog{display:block;height:4px;background:#0d1626;border-radius:3px;overflow:hidden}
.au-prog>span{display:block;height:100%;background:var(--accent);border-radius:3px}
.au-go{flex-shrink:0;font-size:12.5px;color:var(--accent2);white-space:nowrap}
.au-portal .ico{font-size:17px}
.au-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.au-chip{font-size:12.5px;color:#d3dcf2;background:#141d30;border:1px solid var(--line);
  border-radius:20px;padding:5px 13px}
.au-chip:hover{border-color:var(--accent);color:#fff}
.au-chip.done{border-color:rgba(55,178,77,.5);color:#69db7c}

/* 播放器双轨道切换 */
.pl-tabs{display:flex;gap:8px;margin-top:12px}
.pl-tab{font-size:13px;color:var(--muted);background:#0e1626;border:1px solid var(--line);
  border-radius:20px;padding:5px 15px;cursor:pointer;user-select:none}
.pl-tab:hover{color:#fff}
.pl-tab.on{background:rgba(245,197,66,.16);border-color:var(--accent);color:var(--accent)}
/* 速记稿无角色名、无场景，文字稿统一风格 */
.tx-line.role-速记 .tx-role{display:none}

/* 播放器 */
.player-page{position:absolute;inset:0;display:flex;flex-direction:column}
.pl-head{flex-shrink:0;padding:16px 20px 12px;border-bottom:1px solid var(--line);
  background:linear-gradient(90deg,#141b2c,#101725)}
.pl-ep{font-size:12px;color:var(--muted)}
.pl-title{font-size:17px;font-weight:700;color:var(--accent);margin-top:3px}
.transcript{flex:1;overflow:auto;padding:20px 16px 24px}
.tx-scene{text-align:center;color:var(--muted);font-size:12px;letter-spacing:2px;
  margin:22px 0 12px}
.tx-line{display:flex;gap:10px;padding:9px 14px;margin:4px 0;border-radius:10px;
  cursor:pointer;line-height:1.85;font-size:15px;color:#cdd7ee;
  border:1px solid transparent;transition:background .12s,color .12s}
.tx-line:hover{background:rgba(91,140,206,.1)}
.tx-line.is-exam::before{content:"";flex-shrink:0;width:6px;height:6px;border-radius:50%;
  background:var(--accent);align-self:center;margin-right:2px}
.tx-line:not(.is-exam)::before{content:"";flex-shrink:0;width:8px}
.tx-role{flex-shrink:0;min-width:42px;color:var(--muted);font-size:13px;align-self:flex-start;
  padding-top:3px}
.role-老周 .tx-role{color:#ffa94d}
.role-晓琳 .tx-role{color:#b197fc}
.role-石磊 .tx-role{color:#63e6be}
.role-王厂长 .tx-role{color:#74c0fc}
.tx-line.active{background:rgba(245,197,66,.14);border-color:rgba(245,197,66,.55)}
.tx-line.active .tx-text{color:#ffd43b;font-weight:600}
.tx-line.active .tx-role{color:#ffd43b}
.pl-bar{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:12px 18px;
  background:#101725;border-top:1px solid var(--line)}
.pl-play{flex-shrink:0;width:42px;height:42px;border-radius:50%;border:none;
  background:var(--accent);color:#1a1a1a;font-size:16px;cursor:pointer}
.pl-play:active{transform:scale(.94)}
.pl-cur,.pl-tot{flex-shrink:0;font-size:12.5px;color:var(--muted);min-width:38px;text-align:center}
.pl-seek{position:relative;flex:1;height:22px;display:flex;align-items:center;cursor:pointer}
.pl-fill{position:absolute;left:0;right:0;height:5px;border-radius:3px;background:#26314d}
.pl-fill{background:linear-gradient(90deg,var(--accent),#ffd43b)}
.pl-knob{position:absolute;width:13px;height:13px;border-radius:50%;background:#ffd43b;
  transform:translateX(-50%);box-shadow:0 1px 5px rgba(0,0,0,.5)}
@media (max-width:640px){
  .tx-line{font-size:14.5px;padding:8px 10px}
  .pl-tot{display:none}
}
