/* ============================================================
   CT-AIF-100 · NEURAL CINEMA — design system "Aurora Light"
   Light theme · larger type scale (2026-07-25)
   ============================================================ */
:root{
  --bg:#f6f8fc; --bg2:#eef2f9; --panel:rgba(255,255,255,.78);
  --panel2:rgba(255,255,255,.95); --line:rgba(15,23,42,.11);
  --line2:rgba(15,23,42,.20);
  --ink:#0f172a; --dim:#41506b; --dim2:#6f7d99;
  /* accents darkened for contrast on white */
  --cy:#0891b2; --vi:#7c3aed; --li:#4d7c0f; --am:#b45309; --ro:#e11d48; --bl:#2563eb;
  --ok:#059669;
  --sans:"Segoe UI",Inter,-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,sans-serif;
  --mono:"JetBrains Mono","Cascadia Code",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r:16px; --r2:22px;
  --glow-cy:0 6px 22px -8px rgba(8,145,178,.55);
  --glow-vi:0 6px 22px -8px rgba(124,58,237,.55);
  --shadow:0 4px 18px -6px rgba(15,23,42,.16);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  overflow:hidden;-webkit-font-smoothing:antialiased;
}
body.scrollable{overflow:auto}
::selection{background:rgba(124,58,237,.22)}

/* ---------- ambient synapse field ---------- */
#field{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.75}
#aurora{
  position:fixed;inset:-20%;z-index:0;pointer-events:none;opacity:.85;
  background:
    radial-gradient(38% 42% at 18% 22%,rgba(8,145,178,.13),transparent 65%),
    radial-gradient(34% 40% at 82% 26%,rgba(124,58,237,.12),transparent 65%),
    radial-gradient(46% 46% at 50% 92%,rgba(77,124,15,.09),transparent 65%);
  filter:blur(30px);animation:drift 26s ease-in-out infinite alternate;
}
@keyframes drift{
  0%{transform:translate3d(-2%,-1%,0) scale(1)}
  50%{transform:translate3d(2%,2%,0) scale(1.07)}
  100%{transform:translate3d(-1%,2%,0) scale(1.03)}
}
#grain{display:none}

/* ---------- app shell ---------- */
#app{position:relative;z-index:2;height:100vh;display:flex;flex-direction:column}
header#bar{
  display:flex;align-items:center;gap:14px;padding:12px 20px;
  border-bottom:1px solid var(--line);backdrop-filter:blur(14px);
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.66));
}
.brandmark{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.bm-dot{width:32px;height:32px;border-radius:9px;position:relative;flex:0 0 auto;
  background:conic-gradient(from 210deg,var(--cy),var(--vi),var(--li),var(--cy));
  box-shadow:0 4px 14px -3px rgba(124,58,237,.55);animation:spin 9s linear infinite}
.bm-dot::after{content:"";position:absolute;inset:5px;border-radius:5px;background:var(--bg)}
@keyframes spin{to{transform:rotate(360deg)}}
.bm-txt b{font-size:15px;letter-spacing:.4px;display:block;line-height:1.1}
.bm-txt span{font-size:10.5px;letter-spacing:2.4px;color:var(--dim2);text-transform:uppercase}
#modtitle{font-size:14px;color:var(--dim);margin-left:6px;
  padding-left:14px;border-left:1px solid var(--line);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:38vw}
#modtitle b{color:var(--ink)}
.spacer{flex:1}
.pill{font:700 11.5px/1 var(--mono);letter-spacing:.6px;padding:8px 12px;border-radius:999px;
  border:1px solid var(--line2);color:var(--dim);background:var(--panel2);cursor:pointer;
  transition:.18s;white-space:nowrap;text-decoration:none;display:inline-block}
.pill:hover{color:var(--ink);border-color:var(--cy);box-shadow:var(--glow-cy)}
.pill.on{color:#fff;background:var(--cy);border-color:var(--cy)}

/* ---------- body: sidebar + content ---------- */
#body{flex:1;display:flex;min-height:0;position:relative}
#content{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}

/* ---------- Udemy-style course sidebar ---------- */
#toc{
  width:344px;flex:0 0 344px;display:flex;flex-direction:column;min-height:0;
  border-right:1px solid var(--line);background:rgba(255,255,255,.72);
  backdrop-filter:blur(14px);transition:margin-left .32s cubic-bezier(.2,.8,.2,1);
}
body.tocoff #toc{margin-left:-344px}
#tochead{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
#tochead b{font-size:14.5px;display:block;letter-spacing:-.2px}
#tochead span{font:700 10px/1.5 var(--mono);color:var(--dim2);letter-spacing:1.2px;display:block}
#tochead>div:first-child{flex:1;min-width:0}
.ibtn.sm{width:30px;height:30px;border-radius:9px}
.ibtn.sm svg{width:15px;height:15px}
#tocsearchwrap{padding:10px 14px 8px}
#tocsearch{
  width:100%;background:#fff;border:1px solid var(--line2);border-radius:10px;
  color:var(--ink);font:13.5px/1.4 var(--sans);padding:9px 12px;
}
#tocsearch:focus{outline:none;border-color:var(--cy);box-shadow:0 0 0 3px rgba(8,145,178,.14)}
#toclist{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:2px 8px 14px}

.tocmod{margin-bottom:5px;border-radius:12px;overflow:hidden}
.tocmod.cur{background:rgba(8,145,178,.07);box-shadow:inset 0 0 0 1px rgba(8,145,178,.22)}
.tocmodhead{
  display:flex;align-items:center;gap:10px;padding:11px 12px;cursor:pointer;
  transition:.15s;border-radius:12px;user-select:none;
}
.tocmodhead:hover{background:rgba(15,23,42,.05)}
.tocmodhead .num{
  width:26px;height:26px;flex:0 0 auto;border-radius:8px;display:grid;place-items:center;
  font:800 11px/1 var(--mono);color:var(--dim);background:rgba(15,23,42,.07);
}
.tocmod.cur .tocmodhead .num{background:var(--cy);color:#fff}
.tocmod.done .tocmodhead .num{background:var(--ok);color:#fff}
.tocmodhead .tt{flex:1;min-width:0}
.tocmodhead .tt b{display:block;font-size:13.8px;font-weight:750;letter-spacing:-.15px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tocmodhead .tt i{font-style:normal;font:600 10.5px/1.5 var(--mono);color:var(--dim2)}
.tocmodhead .cv{width:16px;height:16px;flex:0 0 auto;color:var(--dim2);transition:.25s}
.tocmod.open .tocmodhead .cv{transform:rotate(90deg)}
.tocchaps{display:none;padding:0 6px 8px 10px}
.tocmod.open .tocchaps{display:block}
/* freemium state */
.tocmod.locked .tocmodhead .num{background:rgba(15,23,42,.06);font-size:13px}
.tocmod.locked .tocmodhead .tt b,.tocmod.locked .tocchap .ct{color:var(--dim2)}
.tocmod.locked .tocchap{cursor:pointer}
.tocmod.locked .tocchap:hover{background:rgba(124,58,237,.09)}
.freetag{font:800 8.5px/1 var(--mono);letter-spacing:1.2px;color:#fff;background:var(--ok);
  padding:3px 5px;border-radius:4px;vertical-align:2px;margin-left:5px}

.tocchap{
  display:flex;gap:9px;align-items:flex-start;padding:8px 10px;border-radius:9px;
  cursor:pointer;transition:.14s;margin-bottom:1px;
}
.tocchap:hover{background:rgba(15,23,42,.06)}
.tocchap.on{background:var(--cy);box-shadow:0 2px 10px -3px rgba(8,145,178,.7)}
.tocchap.on .ct,.tocchap.on .cd{color:#fff}
.tocchap.on .cdot{background:#fff;border-color:#fff}
.tocchap .cdot{
  width:9px;height:9px;flex:0 0 auto;border-radius:50%;margin-top:5px;
  border:1.5px solid var(--line2);background:transparent;transition:.15s;
}
.tocchap.seen .cdot{background:var(--ok);border-color:var(--ok)}
.tocchap .ct{flex:1;font-size:13px;line-height:1.4;color:var(--ink);min-width:0}
.tocchap .cd{font:600 10px/1.6 var(--mono);color:var(--dim2);flex:0 0 auto;padding-top:1px}
.tocchap mark{background:rgba(251,191,36,.45);color:inherit;border-radius:2px;padding:0 1px}
#tocempty{padding:22px 16px;font-size:13px;color:var(--dim2);text-align:center;display:none}

#tocfoot{
  display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--line);
  background:rgba(255,255,255,.6);
}
#tocfoot a{
  flex:1;text-align:center;text-decoration:none;font:700 10px/1 var(--mono);letter-spacing:1px;
  color:var(--dim);padding:9px 4px;border-radius:8px;border:1px solid var(--line);transition:.15s;
}
#tocfoot a:hover{color:var(--ink);border-color:var(--cy);background:#fff}

/* ---------- stage ---------- */
#stagewrap{flex:1;position:relative;overflow:hidden}
#stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:26px 34px 8px}
.scene{width:100%;max-width:1200px;height:100%;display:flex;flex-direction:column;
  justify-content:center;gap:18px;opacity:0;transform:translateY(18px) scale(.985);
  transition:opacity .55s cubic-bezier(.2,.8,.2,1),transform .55s cubic-bezier(.2,.8,.2,1)}
.scene.live{opacity:1;transform:none}
.scene.out{opacity:0;transform:translateY(-16px) scale(.99)}

/* ---------- typography (bumped) ---------- */
.eyebrow{font:800 12px/1 var(--mono);letter-spacing:3.2px;text-transform:uppercase;color:var(--cy)}
.eyebrow.vi{color:var(--vi)} .eyebrow.li{color:var(--li)} .eyebrow.am{color:var(--am)}
h1.big{font-size:clamp(32px,5.4vw,64px);line-height:1.03;margin:0;font-weight:800;letter-spacing:-1.6px}
h2.mid{font-size:clamp(25px,3.5vw,43px);line-height:1.12;margin:0;font-weight:750;letter-spacing:-.8px}
.lede{font-size:clamp(15.5px,1.7vw,21px);color:var(--dim);max-width:64ch;line-height:1.55;margin:0}
/* cyan → blue → violet: stays saturated the whole way (a cyan→lime ramp
   passes through a muddy grey mid-point on a light background) */
.grad{background:linear-gradient(100deg,var(--cy) 0%,var(--bl) 45%,var(--vi) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.mono{font-family:var(--mono)}

/* ---------- reveal utility ---------- */
.rv{opacity:0;transform:translateY(14px);transition:.6s cubic-bezier(.2,.8,.2,1)}
.rv.in{opacity:1;transform:none}

/* ---------- glass cards ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:17px 19px;backdrop-filter:blur(10px);position:relative;overflow:hidden;
  box-shadow:var(--shadow)}
.card.hot{border-color:rgba(8,145,178,.5);box-shadow:0 0 0 1px rgba(8,145,178,.16),0 10px 30px -12px rgba(8,145,178,.5)}
.card h4{margin:0 0 6px;font-size:16.5px;letter-spacing:-.2px}
.card p{margin:0;font-size:15px;color:var(--dim);line-height:1.5}
.k{font:800 10.5px/1 var(--mono);letter-spacing:2px;color:var(--dim2);text-transform:uppercase}

/* ---------- layouts ---------- */
.row{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap}
.cols{display:grid;gap:16px}
.c2{grid-template-columns:repeat(2,1fr)} .c3{grid-template-columns:repeat(3,1fr)}
.c4{grid-template-columns:repeat(4,1fr)} .c5{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){.c3,.c4,.c5{grid-template-columns:repeat(2,1fr)}.c2{grid-template-columns:1fr}}

/* ---------- bullet list ---------- */
.blist{display:flex;flex-direction:column;gap:13px;margin:0;padding:0;list-style:none}
.blist li{display:flex;gap:14px;align-items:flex-start;font-size:clamp(15.5px,1.7vw,20px);line-height:1.45}
.bdot{width:28px;height:28px;flex:0 0 auto;border-radius:8px;display:grid;place-items:center;
  font:800 12px/1 var(--mono);color:#fff;background:var(--cy);box-shadow:var(--glow-cy);margin-top:2px}
.blist li:nth-child(2) .bdot{background:var(--vi);box-shadow:var(--glow-vi)}
.blist li:nth-child(3) .bdot{background:var(--li)}
.blist li:nth-child(4) .bdot{background:var(--am)}
.blist li:nth-child(5) .bdot{background:var(--ro)}
.blist li:nth-child(6) .bdot{background:var(--bl)}
.blist b{color:var(--ink)} .blist span.t{color:var(--dim)}

/* ---------- versus ---------- */
.vs{display:grid;grid-template-columns:1fr 64px 1fr;gap:10px;align-items:stretch}
.vs .mid{display:grid;place-items:center}
.vsbadge{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;
  font:800 13.5px/1 var(--mono);border:1px solid var(--line2);background:#fff;color:var(--dim);
  animation:pulse 2.6s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(124,58,237,.28)}50%{box-shadow:0 0 0 14px rgba(124,58,237,0)}}
.vscol{padding:19px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel);
  box-shadow:var(--shadow)}
.vscol.a{border-color:rgba(8,145,178,.4)} .vscol.b{border-color:rgba(124,58,237,.4)}
.vscol h4{margin:0 0 10px;font-size:16.5px}
.vscol ul{margin:0;padding-left:19px;color:var(--dim);font-size:15px;line-height:1.75}
@media(max-width:900px){.vs{grid-template-columns:1fr}.vs .mid{padding:4px 0}}

/* ---------- stat tiles ---------- */
.stat{text-align:center;padding:18px 12px}
.stat .n{font:800 clamp(28px,4.2vw,48px)/1 var(--mono);letter-spacing:-1.5px}
.stat .l{font-size:13px;color:var(--dim);margin-top:6px;line-height:1.35}

/* ---------- timeline ---------- */
.tl{position:relative;padding:34px 0 8px}
.tl .rail{position:absolute;left:0;right:0;top:52px;height:2px;
  background:linear-gradient(90deg,rgba(15,23,42,.06),var(--line2),rgba(15,23,42,.06))}
.tl .fill{position:absolute;left:0;top:52px;height:2px;width:0;
  background:linear-gradient(90deg,var(--cy),var(--vi));box-shadow:0 0 10px rgba(124,58,237,.5);transition:width .9s cubic-bezier(.2,.8,.2,1)}
.tl .stops{display:grid;position:relative}
.tstop{text-align:center;opacity:.34;transition:.5s;padding-top:0}
.tstop .yr{font:800 11.5px/1 var(--mono);color:var(--dim);letter-spacing:1px}
.tstop .dot{width:16px;height:16px;border-radius:50%;margin:13px auto;background:#fff;
  border:2px solid var(--line2);transition:.4s;position:relative;z-index:2}
.tstop .nm{font-size:15px;font-weight:700;line-height:1.2}
.tstop .ds{font-size:12.5px;color:var(--dim2);margin-top:5px;line-height:1.35;padding:0 4px}
.tstop.on{opacity:1}
.tstop.on .dot{background:var(--cy);border-color:var(--cy);box-shadow:0 0 0 6px rgba(8,145,178,.14);transform:scale(1.25)}
.tstop.on .yr{color:var(--cy)}

/* ---------- nested layers ---------- */
.nest{display:grid;place-items:center;padding:6px}
.ring{border-radius:26px;border:1px solid var(--line2);display:grid;place-items:center;
  padding:26px;position:relative;transition:.6s;opacity:.35;width:100%}
.ring.on{opacity:1}
.ring>.lab{position:absolute;top:10px;left:16px;font:800 10.5px/1 var(--mono);letter-spacing:2px;text-transform:uppercase}
.ring.r1{border-color:rgba(8,145,178,.5);background:rgba(8,145,178,.05)} .ring.r1>.lab{color:var(--cy)}
.ring.r2{border-color:rgba(37,99,235,.5);background:rgba(37,99,235,.05)} .ring.r2>.lab{color:var(--bl)}
.ring.r3{border-color:rgba(124,58,237,.5);background:rgba(124,58,237,.06)} .ring.r3>.lab{color:var(--vi)}
.ring.r4{border-color:rgba(77,124,15,.55);background:rgba(77,124,15,.07)} .ring.r4>.lab{color:var(--li)}
.ring .core{text-align:center;padding:12px 8px}
.ring .core b{font-size:clamp(16px,2.1vw,23px);display:block}
.ring .core i{font-style:normal;font-size:12.5px;color:var(--dim);display:block;margin-top:4px}

/* ---------- flow diagram ---------- */
.flowbox{width:100%;height:100%;min-height:180px}
.fnode rect{fill:rgba(15,23,42,.035);stroke:var(--line2);stroke-width:1.2;rx:12}
.fnode text{fill:var(--ink);font:700 14px var(--sans);text-anchor:middle}
.fnode tspan.sub{fill:var(--dim);font:400 11.5px var(--mono)}
.fnode.on rect{fill:rgba(8,145,178,.12);stroke:var(--cy)}
.fedge{stroke:var(--line2);stroke-width:1.6;fill:none}
.fedge.on{stroke:var(--cy)}
.dash{stroke-dasharray:6 8;animation:march 1.1s linear infinite}
@keyframes march{to{stroke-dashoffset:-28}}

/* ---------- chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{font:700 13px/1 var(--mono);padding:9px 13px;border-radius:999px;
  border:1px solid var(--line);background:var(--panel2);color:var(--dim);transition:.3s}
.chip.on{color:#fff;background:var(--li);border-color:var(--li)}

/* ---------- explain-o-meter ---------- */
.eom{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);overflow:hidden;
  box-shadow:var(--shadow)}
.eom-head{display:flex;gap:0;border-bottom:1px solid var(--line)}
.eom-head button{flex:1;padding:12px 8px;background:none;border:0;color:var(--dim);cursor:pointer;
  font:800 11.5px/1 var(--mono);letter-spacing:1.6px;text-transform:uppercase;transition:.2s;position:relative}
.eom-head button.on{color:var(--ink);background:rgba(15,23,42,.04)}
.eom-head button.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:linear-gradient(90deg,var(--cy),var(--vi))}
.eom-body{padding:17px 19px;font-size:16px;line-height:1.6;color:var(--dim);min-height:92px}
.eom-body b{color:var(--ink)}

/* ---------- lab shell ---------- */
.lab{border:1px solid var(--line2);border-radius:var(--r2);background:var(--panel2);
  padding:17px 19px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.lab::after{content:"LIVE";position:absolute;top:12px;right:14px;font:800 9.5px/1 var(--mono);
  letter-spacing:2px;color:var(--li);padding:5px 8px;border:1px solid rgba(77,124,15,.4);border-radius:999px;
  animation:blink 2s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
.lab h4{margin:0 0 4px;font-size:15.5px} .lab .hint{font-size:13px;color:var(--dim2);margin:0 0 12px}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:5px;border-radius:99px;
  background:linear-gradient(90deg,var(--cy),var(--vi));outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:19px;height:19px;border-radius:50%;
  background:#fff;cursor:pointer;box-shadow:0 1px 6px rgba(15,23,42,.45);border:1px solid var(--line2)}
input[type=range]::-moz-range-thumb{width:19px;height:19px;border:1px solid var(--line2);border-radius:50%;background:#fff;cursor:pointer}
textarea,input[type=text]{width:100%;background:#fff;border:1px solid var(--line2);
  border-radius:10px;color:var(--ink);font:14px/1.5 var(--mono);padding:11px 13px;resize:vertical}
textarea:focus,input[type=text]:focus{outline:none;border-color:var(--cy);box-shadow:0 0 0 3px rgba(8,145,178,.15)}
.btn{font:700 13px/1 var(--mono);letter-spacing:.8px;padding:11px 16px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line2);background:#fff;color:var(--ink);transition:.18s;text-decoration:none;display:inline-block}
.btn:hover{border-color:var(--cy);box-shadow:var(--glow-cy)}
.btn.primary{background:linear-gradient(100deg,var(--cy),var(--vi));border:0;color:#fff}

/* token strip */
.tokstrip{display:flex;flex-wrap:wrap;gap:5px}
.tok{font:700 13.5px/1 var(--mono);padding:8px 9px;border-radius:7px;border:1px solid var(--line2);
  background:#fff;animation:pop .35s cubic-bezier(.2,1.5,.4,1) backwards;color:var(--ink)}
@keyframes pop{from{opacity:0;transform:scale(.6)}}
.tok.i0{border-color:rgba(8,145,178,.6);background:rgba(8,145,178,.09)}
.tok.i1{border-color:rgba(124,58,237,.6);background:rgba(124,58,237,.09)}
.tok.i2{border-color:rgba(77,124,15,.6);background:rgba(77,124,15,.09)}
.tok.i3{border-color:rgba(180,83,9,.6);background:rgba(180,83,9,.09)}
.tok .id{display:block;font-size:9.5px;color:var(--dim2);margin-top:3px;text-align:center}

/* ---------- quiz ---------- */
.quiz{max-width:860px;margin:0 auto;width:100%}
.qopt{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;
  border:1px solid var(--line);background:var(--panel2);cursor:pointer;transition:.18s;margin-bottom:9px;
  font-size:16px;box-shadow:var(--shadow)}
.qopt:hover{border-color:var(--cy);transform:translateX(3px)}
.qopt .ltr{width:26px;height:26px;flex:0 0 auto;border-radius:7px;display:grid;place-items:center;
  font:800 12px/1 var(--mono);border:1px solid var(--line2);color:var(--dim)}
.qopt.right{border-color:var(--ok);background:rgba(5,150,105,.09)}
.qopt.right .ltr{background:var(--ok);color:#fff;border-color:var(--ok)}
.qopt.wrong{border-color:var(--ro);background:rgba(225,29,72,.07)}
.qexp{margin-top:12px;padding:14px 16px;border-radius:12px;border:1px dashed var(--line2);
  font-size:15px;color:var(--dim);line-height:1.55;display:none;background:rgba(255,255,255,.7)}
.qexp.show{display:block;animation:pop .4s backwards}

/* ---------- director bar ---------- */
#director{
  border-top:1px solid var(--line);backdrop-filter:blur(16px);
  background:linear-gradient(0deg,rgba(255,255,255,.96),rgba(255,255,255,.75));padding:10px 18px 12px;
}
#karaoke{
  min-height:58px;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:2px 8px 8px;font-size:clamp(16px,2vw,23px);line-height:1.4;font-weight:650;letter-spacing:-.2px;
  flex-wrap:wrap;gap:0 .34em;max-width:1200px;margin:0 auto;
}
#karaoke .w{color:#9aa5bd;transition:color .18s}
#karaoke .w.said{color:var(--dim)}
#karaoke .w.now{color:var(--vi);font-weight:800}
body.nosub #karaoke{display:none}
#scrub{position:relative;height:22px;display:flex;align-items:center;cursor:pointer}
#track{position:absolute;left:0;right:0;height:6px;border-radius:99px;background:rgba(15,23,42,.10);overflow:hidden}
#played{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--cy),var(--vi))}
#chapdots{position:absolute;left:0;right:0;height:22px;pointer-events:none}
#chapdots i{position:absolute;top:8px;width:2px;height:8px;background:rgba(15,23,42,.32);transform:translateX(-1px)}
#knob{position:absolute;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--vi);
  box-shadow:0 1px 6px rgba(15,23,42,.35);transform:translateX(-7px);pointer-events:none;left:0}
#ctrls{display:flex;align-items:center;gap:10px;margin-top:8px}
.ibtn{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line2);background:#fff;color:var(--ink);transition:.18s;flex:0 0 auto}
.ibtn:hover{border-color:var(--cy);box-shadow:var(--glow-cy)}
.ibtn svg{width:18px;height:18px;fill:currentColor}
.ibtn.play{width:48px;height:48px;background:linear-gradient(100deg,var(--cy),var(--vi));border:0;color:#fff}
.ibtn.play svg{width:20px;height:20px}
#tcode{font:700 12.5px/1 var(--mono);color:var(--dim);letter-spacing:.5px;min-width:100px;text-align:center}

#scrim{position:fixed;inset:0;background:rgba(15,23,42,.28);z-index:39;opacity:0;pointer-events:none;transition:.3s}
#scrim.on{opacity:1;pointer-events:auto}

/* ---------- boot / loader ---------- */
#boot{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:var(--bg);transition:.6s}
#boot.gone{opacity:0;pointer-events:none}
.bootin{text-align:center;max-width:600px;padding:26px}
.bootring{width:88px;height:88px;margin:0 auto 22px;border-radius:50%;
  background:conic-gradient(from 0deg,var(--cy),var(--vi),var(--li),var(--cy));animation:spin 2.4s linear infinite;
  position:relative}
.bootring::after{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--bg)}
#bootmsg{font:700 12.5px/1.6 var(--mono);color:var(--dim);letter-spacing:1.4px;margin-top:14px}
.bootbtn{margin-top:22px}

/* ---------- toast ---------- */
#toast{position:fixed;left:50%;bottom:118px;transform:translate(-50%,20px);z-index:50;
  padding:12px 19px;border-radius:999px;background:#fff;border:1px solid var(--line2);
  font:700 13.5px/1 var(--mono);opacity:0;pointer-events:none;transition:.3s;
  box-shadow:0 8px 26px -8px rgba(15,23,42,.4);color:var(--ink)}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- scrollbars ---------- */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(15,23,42,.18);border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:rgba(15,23,42,.32)}

/* ---------- small screens ---------- */
@media(max-width:1100px){
  /* sidebar becomes an overlay so the stage keeps full width */
  #toc{position:absolute;inset:0 auto 0 0;z-index:41;width:min(340px,86vw);flex-basis:auto;
    background:rgba(255,255,255,.99);box-shadow:8px 0 34px -14px rgba(15,23,42,.4);margin-left:0;
    transform:translateX(-102%)}
  body:not(.tocoff) #toc{transform:none}
  body.tocoff #toc{margin-left:0;transform:translateX(-102%)}
}
@media(max-width:720px){
  #stage{padding:16px 16px 4px}
  #modtitle{display:none}
  .pill.hidesm{display:none}
}
