html,body{height:100%}body.dstv{display:flex;flex-direction:column;overflow:hidden}
.tvwrap{flex:1;min-height:0;display:grid;grid-template-columns:260px 1fr}
.rail{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:#12151b}
.rail.drag{outline:2px dashed var(--accent);outline-offset:-6px}
.railbar{display:flex;align-items:center;gap:8px;padding:14px}.railbar h2{flex:1;margin:0;font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--mute)}
.ib{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:10px;min-width:44px;height:44px;font-size:18px;cursor:pointer;display:inline-grid;place-items:center;padding:0 12px}
.ib:hover{border-color:#3a404c}.ib:focus-visible,.lib button:focus-visible,.seek:focus-visible,.vol:focus-visible{outline:2px solid #fff;outline-offset:2px}.ib[disabled]{opacity:.4;cursor:default}
.lib{list-style:none;margin:0;padding:0 8px 14px;overflow:auto;flex:1}
.lib button{all:unset;box-sizing:border-box;width:100%;display:block;padding:12px 10px;border-radius:8px;cursor:pointer;color:#cfd4dd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:44px}
.lib button:hover{background:var(--card)}.lib li.sel button{outline:1px solid #3a404c}.lib li.cur button{background:#b01f55;color:#fff}
.libempty{color:var(--mute);padding:10px 16px;font-size:13px}
.stage{position:relative;display:flex;flex-direction:column;min-height:0;background:#000}
.stage video{flex:1;min-height:0;width:100%;object-fit:contain;background:#000;cursor:pointer}
.stage .hint{position:absolute;inset:0 0 70px;display:grid;place-items:center;color:var(--mute);pointer-events:none;text-align:center;padding:20px}
.ctrls{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--card);border-top:1px solid var(--line);flex-wrap:wrap}
.seek{flex:1;min-width:140px;accent-color:#c92560;height:44px}.vol{width:90px;accent-color:#c92560;height:44px}
.time{color:var(--mute);font-variant-numeric:tabular-nums;font-size:13px;min-width:92px;text-align:center}
.ib.txt{font-size:13px;font-weight:700}
.toast{position:absolute;top:14px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.8);padding:8px 14px;border-radius:8px;font-size:13px}.toast[hidden]{display:none}
.stage:fullscreen{width:100vw;height:100vh}
@media(max-width:800px){body.dstv{overflow:auto;height:auto}.tvwrap{grid-template-columns:1fr;grid-template-rows:auto auto}.rail{border-right:0;border-bottom:1px solid var(--line);max-height:34vh}.stage video{height:56vw;flex:none}.vol{width:70px}}
.stage .hint[hidden]{display:none}.stage.drag{outline:2px dashed var(--accent);outline-offset:-6px}

#loop.on{background:#c92560;color:#fff;border-color:#c92560}
