/* SSI Media Player */
:root{
  --bg0:#04070e; --bg1:#0d1830; --bar:rgba(10,16,30,.86); --ink:#e9eef7; --dim:#97a3b8;
  --line:rgba(255,255,255,.10); --accent:#e8a33d; --hit:rgba(232,163,61,.30); --panel:rgba(12,20,38,.72);
  --barh:56px; --seekh:22px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg0);color:var(--ink);
  font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
#app{position:fixed;inset:0;display:flex;flex-direction:column;
  background:radial-gradient(120% 90% at 30% 30%,var(--bg1) 0%,var(--bg0) 70%);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
svg text{fill:currentColor;stroke:none;font:700 6.4px/1 system-ui,sans-serif}
button{font:inherit;color:inherit}

/* ---------------------------------------------------------------- layout */
#main{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(300px,38%) 1fr;gap:0}
#main.solo{grid-template-columns:1fr}
#hero{min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:28px 28px 20px;gap:22px;overflow:hidden}
#art{width:min(300px,100%,42vh);aspect-ratio:1;flex:0 0 auto;border-radius:10px;overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.06);background:#0b1426}
#cover{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
#meta{width:min(340px,100%);text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
#kicker{color:var(--accent);font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
#title{margin:0;font:600 21px/1.25 Georgia,"Times New Roman",serif;letter-spacing:.005em}
#artist{color:var(--dim)}
#nowch{margin-top:6px;border:1px solid var(--line);background:rgba(255,255,255,.04);border-radius:99px;padding:5px 12px;
  color:var(--ink);cursor:pointer;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
#nowch:hover{border-color:rgba(232,163,61,.5)}
#nowch b{color:var(--accent);font-weight:600;margin-right:6px}
#bigPlay{margin-top:12px;display:inline-flex;align-items:center;gap:10px;height:46px;padding:0 22px 0 16px;border:0;border-radius:99px;
  background:var(--accent);color:#141008;font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 6px 22px rgba(232,163,61,.28)}
#bigPlay:hover{filter:brightness(1.07)}
#bigPlay svg{width:22px;height:22px;stroke-width:2.2}
#bigPlay .i-play path{fill:currentColor}
#app.playing #bigPlay .i-play,#app:not(.playing) #bigPlay .i-pause{display:none}

#panel{min-height:0;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--line);position:relative}
.ptabs{display:flex;align-items:center;gap:2px;padding:8px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ptabs>button{border:0;background:none;color:var(--dim);padding:7px 11px;border-radius:7px;cursor:pointer}
.ptabs>button.on{color:var(--ink);background:rgba(255,255,255,.07)}
.sbox{margin-left:auto;display:flex;align-items:center;gap:4px;position:relative;flex:0 1 300px;min-width:170px}
.sbox>svg{position:absolute;left:9px;width:16px;height:16px;color:var(--dim);pointer-events:none}
.sbox input{flex:1;min-width:0;height:34px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.05);color:var(--ink);
  padding:0 8px 0 30px;font:inherit;-webkit-user-select:text;user-select:text}
.sbox input:focus{outline:none;border-color:var(--accent)}
.sbox button{width:28px;height:28px;border:0;border-radius:6px;background:none;color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0}
.sbox button:hover{background:rgba(255,255,255,.08)}
.sbox button svg{width:16px;height:16px}
#qn{color:var(--dim);font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pbody{flex:1;min-height:0;overflow:auto;padding:14px 18px 40px;-webkit-overflow-scrolling:touch;scroll-behavior:auto}

/* transcript */
#tx{max-width:760px;font:16px/1.75 Georgia,"Times New Roman",serif;color:#c9d2e2}
#tx.sel,#tx.sel *{-webkit-user-select:text;user-select:text}
#tx .txch{font:600 12px/1.4 system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:26px 0 8px;cursor:pointer}
#tx .txch:first-child{margin-top:4px}
#tx .para{display:grid;grid-template-columns:52px 1fr;gap:10px;margin:0 0 14px}
#tx .pt{font:12px/2.3 system-ui,sans-serif;color:var(--dim);font-variant-numeric:tabular-nums;cursor:pointer;text-align:right}
#tx .pt:hover{color:var(--accent)}
#tx p{margin:0}
#tx .s{cursor:pointer;border-radius:3px;transition:color .15s,background .15s}
#tx .s:hover{color:var(--ink);background:rgba(255,255,255,.05)}
#tx .s.cur{color:#fff;background:rgba(232,163,61,.16);box-shadow:0 0 0 2px rgba(232,163,61,.16)}
#tx .para.past{color:#8e9ab0}
#tx mark{background:var(--hit);color:#fff;border-radius:2px;padding:0 1px}
#tx mark.on{background:var(--accent);color:#111}
#tx .empty,#chs .empty{color:var(--dim);font:14px system-ui,sans-serif;padding:8px 0}
#follow{position:absolute;right:18px;bottom:16px;border:0;border-radius:99px;padding:8px 14px;background:var(--accent);color:#141008;
  font-weight:600;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.4)}

/* chapters */
#chs .ci{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:baseline;padding:9px 10px;border-radius:8px;cursor:pointer}
#chs .ci:hover{background:rgba(255,255,255,.06)}
#chs .ci .cn{color:var(--dim);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}
#chs .ci .ct{color:var(--ink)}
#chs .ci .cd{color:var(--dim);font-variant-numeric:tabular-nums;font-size:12px}
#chs .ci.cur{background:rgba(232,163,61,.12)}
#chs .ci.cur .ct,#chs .ci.cur .cn{color:var(--accent)}

/* ---------------------------------------------------------------- seek bar */
#seek{flex:0 0 var(--seekh);position:relative;cursor:pointer;touch-action:none;background:var(--bar);
  border-top:1px solid var(--line);outline:none}
#track{position:absolute;left:14px;right:14px;top:50%;height:4px;margin-top:-2px;border-radius:2px;background:rgba(255,255,255,.12);transition:height .12s,margin .12s}
#seek:hover #track,#seek.drag #track,#seek:focus-visible #track{height:6px;margin-top:-3px}
#buf{position:absolute;top:0;bottom:0;left:0;width:0;background:rgba(255,255,255,.18);border-radius:2px}
#prog{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--accent);border-radius:2px}
#ticks{position:absolute;inset:0;pointer-events:none}
#ticks i{position:absolute;top:-1px;bottom:-1px;width:2px;margin-left:-1px;background:var(--bg0);opacity:.85}
#knob{position:absolute;top:50%;left:0;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;
  box-shadow:0 1px 6px rgba(0,0,0,.5);transform:scale(0);transition:transform .12s}
#seek:hover #knob,#seek.drag #knob,#seek:focus-visible #knob{transform:scale(1)}
#tip{position:absolute;bottom:calc(100% + 6px);transform:translateX(-50%);background:#0c1426;border:1px solid var(--line);
  padding:5px 9px;border-radius:7px;white-space:nowrap;font-size:12px;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.45);z-index:6;max-width:70vw;overflow:hidden;text-overflow:ellipsis}
#tip b{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:6px}

/* ---------------------------------------------------------------- bar */
#bar{flex:0 0 var(--barh);display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--bar);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding-bottom:env(safe-area-inset-bottom)}
#bar .bl{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:12px;overflow:hidden}
#bar .bc{flex:0 0 auto;display:flex;align-items:center;gap:2px}
#bar .br{flex:1 1 0;display:flex;justify-content:flex-end;align-items:center;gap:2px}
#bar button{width:40px;height:40px;border:0;border-radius:8px;background:transparent;color:var(--ink);cursor:pointer;
  display:grid;place-items:center;padding:0;position:relative}
#bar button:hover{background:rgba(255,255,255,.08)}
#bar button[disabled]{opacity:.3;cursor:default;background:none}
#bar button svg{width:22px;height:22px}
#bar button.play{width:46px;height:46px;border-radius:50%;background:var(--ink);color:#0b1222;margin:0 4px}
#bar button.play:hover{background:#fff}
#bar button.play svg{width:22px;height:22px;stroke-width:2.4}
#bar button.play .i-play path{fill:currentColor}
#app.playing #bPlay .i-play,#app:not(.playing) #bPlay .i-pause{display:none}
#bPlay .spin.s{position:absolute;inset:3px;width:auto;height:auto;margin:0;border-width:2px;border-color:rgba(11,18,34,.12);border-top-color:var(--accent);display:none}
#app.waiting #bPlay .spin.s{display:block}
#bar button.txt{width:auto;min-width:44px;padding:0 8px;font-weight:600;font-variant-numeric:tabular-nums}
#bar .time{display:flex;align-items:center;width:auto;padding:0 8px;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:6px}
#bar .time #tCur{color:var(--ink)}
#brand{display:flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;white-space:nowrap;flex:0 0 auto}
#brand .mark{width:22px;height:22px;border-radius:50%;flex:0 0 auto;
  background:radial-gradient(circle at 35% 35%,#ffd38a,var(--accent) 45%,#7a4a0e 100%);box-shadow:0 0 10px rgba(232,163,61,.45)}
#brand img{height:34px;width:auto;display:block;opacity:.95}
#brand .bname{font-weight:600;letter-spacing:.02em}
#vol{display:flex;align-items:center}
#volR{width:84px;accent-color:var(--accent);margin:0 6px 0 0}
#bFull .i-fsx{display:none}
#app.fs #bFull .i-fs{display:none}#app.fs #bFull .i-fsx{display:block}
#bMute .i-mute{display:none}
#app.muted #bMute .i-vol{display:none}#app.muted #bMute .i-mute{display:block}
#app.quiet #bMute .w2{display:none}

#toast{position:absolute;left:50%;bottom:calc(var(--barh) + var(--seekh) + 14px);transform:translateX(-50%);z-index:8;
  background:#0c1426;border:1px solid var(--line);border-radius:10px;padding:9px 12px 9px 14px;box-shadow:0 10px 30px rgba(0,0,0,.5);
  display:flex;align-items:center;gap:12px;white-space:nowrap;max-width:calc(100vw - 24px)}
#toast button{border:0;background:rgba(255,255,255,.08);border-radius:7px;padding:5px 10px;cursor:pointer}
#toast button:hover{background:rgba(255,255,255,.14)}
#toast .lnk{-webkit-user-select:all;user-select:all;color:var(--accent);overflow:hidden;text-overflow:ellipsis}

#msg{position:absolute;inset:0;display:grid;place-items:center;z-index:10;background:radial-gradient(120% 90% at 50% 38%,var(--bg1) 0%,var(--bg0) 70%)}
#msg .mbox{text-align:center;max-width:420px;padding:24px}
#msg p{color:var(--dim);margin:14px 0 0}
#msg a{color:var(--accent)}
#msg.err .spin{display:none}
#msg.err p{color:var(--ink);font-size:16px}
.spin{width:34px;height:34px;margin:0 auto;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--accent);animation:sp .9s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------------------------------------------------------------- narrow: hero on top, panel below */
@media (max-width:820px){
  #main{display:flex;flex-direction:column}
  #hero{flex:0 0 auto;flex-direction:row;justify-content:flex-start;padding:14px 16px;gap:14px;border-bottom:1px solid var(--line)}
  #main.solo #hero{flex:1 1 auto;flex-direction:column;justify-content:center}
  #main:not(.solo) #art{width:92px;border-radius:8px}
  #main:not(.solo) #meta{align-items:flex-start;text-align:left;width:auto;flex:1;gap:3px}
  #main:not(.solo) #title{font-size:17px}
  #main:not(.solo) #bigPlay{display:none}
  #main:not(.solo) #nowch{margin-top:4px}
  #panel{flex:1 1 auto;border-left:0}
  .sbox{flex:1 1 100%;margin:4px 0 0}
  .pbody{padding:12px 14px 40px}
  #tx{font-size:15.5px}
  #tx .para{grid-template-columns:42px 1fr;gap:8px}
}
@media (max-width:560px){
  :root{--barh:54px}
  #bar{padding:0 4px;gap:0}
  #bar .bl{display:none}
  #bar .br{flex:0 0 auto}
  #bPrevCh,#bNextCh,#vol,#bShare{display:none!important}
  #bar button{width:38px;height:38px}
  #bar .time{margin-left:2px;padding:0 4px;font-size:13px}
  #bar .bc{flex:1 1 auto;justify-content:center}
  #main:not(.solo) #art{width:64px}
}
/* compact embed (a short iframe): just the strip and the controls */
@media (max-height:300px){
  :root{--barh:52px;--seekh:20px}
  #panel{display:none!important}
  #main,#main.solo{display:flex;flex-direction:row}
  #hero,#main.solo #hero{flex:1 1 auto;flex-direction:row;justify-content:flex-start;padding:10px 14px;gap:12px;border:0}
  #art,#main:not(.solo) #art{width:auto;height:min(64px,calc(100vh - 96px));min-height:36px;border-radius:6px}
  #meta,#main:not(.solo) #meta{align-items:flex-start;text-align:left;width:auto;flex:1;gap:2px}
  #title,#main:not(.solo) #title{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  #kicker,#artist,#bigPlay,#main:not(.solo) #bigPlay{display:none}
  #nowch{margin-top:2px;padding:3px 10px;font-size:12px}
  #toast{bottom:auto;top:8px}
}
@media (max-height:300px) and (max-width:820px){ #brand .bname{display:none} }
@media (max-height:300px) and (max-width:560px){ #nowch{display:none!important} }
