:root{--deep:#1d1231;--deep-2:#2c1a48;--text:#29203d;--muted:#5e5670;--gold:#d3b27c;--gold-dk:#83602f;--pearl:#faf7fc;--lav:#f2ebf7;--lav-2:#e5d9ef;--danger:#a3303a}
*{box-sizing:border-box}
body{margin:0;background:var(--pearl);color:var(--text);font:15px/1.6 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
[hidden]{display:none!important}
h1,h2,h3{font-family:"Songti SC","Noto Serif SC",serif;font-weight:600;margin:0 0 .5em}
.bar{display:flex;align-items:center;gap:12px;padding:14px 20px;background:var(--deep);color:#fffbf7}
.bar .logo{letter-spacing:.3em;color:var(--gold)}
.bar .sp{flex:1}
.bar button{background:none;border:1px solid var(--gold);color:var(--gold)}
main{max-width:1100px;margin:0 auto;padding:20px 16px 60px}
.card{background:#fff;border:1px solid var(--lav-2);border-radius:14px;padding:20px;margin-bottom:16px}
.narrow{max-width:380px;margin:60px auto}
label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
input,textarea,select{width:100%;padding:9px 11px;border:1px solid var(--lav-2);border-radius:8px;font:inherit;background:#fff;color:inherit}
input[type=checkbox]{width:auto;margin-right:6px}
button{font:inherit;padding:8px 16px;border-radius:8px;border:0;background:var(--deep-2);color:#fff;cursor:pointer}
button.ghost{background:var(--lav);color:var(--text)}
button.small{padding:3px 10px;font-size:13px}
button.danger{background:none;color:var(--danger)}
button:disabled{opacity:.45;cursor:default}
.msg{color:var(--danger);min-height:1.4em;font-size:14px}
.muted{color:var(--muted);font-size:13px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--lav)}
th{font-size:12px;color:var(--muted);font-weight:500}
tbody tr{cursor:pointer}tbody tr:hover{background:var(--lav)}
.tag{display:inline-block;padding:1px 8px;border-radius:99px;background:var(--lav);font-size:12px}
.tag.gold{background:#f3dfb4;color:var(--gold-dk)}
.tag.off{background:#f6dde0;color:var(--danger)}
.table-wrap{overflow-x:auto;border:1px solid var(--lav-2);border-radius:12px;padding:8px;background:#fff}
dialog{border:0;border-radius:14px;padding:22px;width:min(640px,calc(100vw - 32px));max-height:90vh}
dialog::backdrop{background:#1d123199}
/* 播放器 + 浮动水印 */
.stage{position:relative;background:#000;border-radius:12px;overflow:hidden;user-select:none;-webkit-user-select:none}
.stage video{display:block;width:100%;max-height:75vh}
.stage:fullscreen video{max-height:100vh;height:100%}
.wm{position:absolute;pointer-events:none;color:#fff;opacity:.35;font-size:clamp(12px,1.6vw,18px);text-shadow:0 0 3px #000;white-space:nowrap;transition:top 1.2s,left 1.2s}
.fs{position:absolute;right:10px;top:10px;background:#0008;padding:4px 10px}
.lesson{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--lav)}
.lesson:first-of-type{border-top:0}
.lesson.on{color:var(--gold-dk);font-weight:600}
details>summary{cursor:pointer;list-style:none}
details>summary::-webkit-details-marker{display:none}
.tabs button{background:none;color:var(--muted);border-bottom:2px solid transparent;border-radius:0}
.tabs button.on{color:var(--text);border-color:var(--gold)}
