*{box-sizing:border-box}
body{margin:0;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:#eef1ef;color:#26302b}
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#2C5545,#356152)}
.login-box{background:#fff;padding:34px 30px;border-radius:12px;width:320px;box-shadow:0 12px 40px rgba(0,0,0,.2)}
.login-box h2{margin:0 0 20px;text-align:center;color:#2C5545}
.login-box input{display:block;width:100%;padding:11px 12px;margin-bottom:12px;border:1px solid #d9e0db;border-radius:8px;font-size:15px}
.login-box button{width:100%;background:#2C5545;color:#fff;border:0;padding:12px;border-radius:8px;font-size:16px;cursor:pointer}
.login-box .err{color:#c0392b;font-size:13px;min-height:18px;text-align:center}
.admin{display:flex;min-height:100vh}
.admin aside{width:210px;background:#2C5545;color:#fff;padding:22px 16px;display:flex;flex-direction:column;gap:8px}
.admin aside h2{color:#C9A961;margin:0 0 14px;font-size:20px}
.admin aside .tab{background:transparent;color:#dfe7e2;border:0;text-align:left;padding:11px 12px;border-radius:8px;cursor:pointer;font-size:15px}
.admin aside .tab.cur{background:rgba(201,169,97,.22);color:#C9A961}
.admin aside #logout{margin-top:auto;background:transparent;border:1px solid #6f8a7e;color:#dfe7e2;padding:9px;border-radius:8px;cursor:pointer}
.admin main{flex:1;padding:30px 36px;overflow:auto}
.admin main h3{color:#2C5545;margin-top:0}
.pane{background:#fff;padding:24px;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.05)}
#up{display:flex;flex-direction:column;gap:12px;max-width:520px}
#up input,#up textarea,#up select{padding:11px 12px;border:1px solid #d9e0db;border-radius:8px;font-size:15px;font-family:inherit}
#up textarea{min-height:80px}
#up button{background:#2C5545;color:#fff;border:0;padding:12px;border-radius:8px;font-size:16px;cursor:pointer}
#up-msg{font-weight:600;color:#2C5545}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #eef1ef}
.row b{color:#2C5545}
.row small{color:#9aa79f}
.row p{margin:4px 0 0;color:#566059;width:100%}
.row button{background:#f0f3f1;border:1px solid #d9e0db;border-radius:6px;padding:5px 12px;cursor:pointer;margin-left:6px}
.row a{color:#2C5545;margin-right:8px}
.row2{display:flex;gap:10px}
.row2 input,.row2 select{flex:1;min-width:0}
#svc{display:flex;flex-direction:column;gap:12px;max-width:560px}
#svc input,#svc textarea,#svc select{padding:11px 12px;border:1px solid #d9e0db;border-radius:8px;font-size:15px;font-family:inherit}
#svc textarea{min-height:80px}
#svc button{background:#2C5545;color:#fff;border:0;padding:11px 16px;border-radius:8px;font-size:15px;cursor:pointer;align-self:flex-start}
#svc #svc-reset{background:#f0f3f1;color:#2C5545;border:1px solid #d9e0db}
#pwdf{max-width:420px}
#pwdf label{display:block;margin-bottom:14px;font-size:14px;color:#2C5545;font-weight:600}
#pwdf input{padding:11px 12px;border:1px solid #d9e0db;border-radius:8px;font-size:15px;font-family:inherit;width:100%}
#pwdf button{background:#2C5545;color:#fff;border:0;padding:11px 16px;border-radius:8px;font-size:15px;cursor:pointer}
.hint{color:#8a948d;font-size:13px;margin:0}
#coz,#dra,#quo,#sitef{display:flex;flex-direction:column;gap:12px;max-width:560px}
#coz input,#coz textarea,#coz select,
#dra input,#dra textarea,#dra select,
#quo textarea,#quo input,#quo select,
#sitef input,#sitef textarea,#sitef select{padding:11px 12px;border:1px solid #d9e0db;border-radius:8px;font-size:15px;font-family:inherit}
#coz textarea,#dra textarea,#sitef textarea{min-height:80px}
#coz button,#dra button,#quo button,#sitef button[type=submit]{background:#2C5545;color:#fff;border:0;padding:11px 16px;border-radius:8px;font-size:15px;cursor:pointer;align-self:flex-start}
#coz #coz-reset,#dra #dra-reset,#quo #quo-reset{background:#f0f3f1;color:#2C5545;border:1px solid #d9e0db}
#chap{display:flex;flex-direction:column;gap:10px;max-width:560px}
#chap input,#chap textarea,#chap select{padding:10px 11px;border:1px solid #d9e0db;border-radius:6px;font-size:14px;font-family:inherit}
#chap textarea{min-height:60px}
#chap button[type=submit]{background:#2C5545;color:#fff;border:0;padding:10px 16px;border-radius:6px;font-size:14px;cursor:pointer;align-self:flex-start}
#chap #chap-reset{background:#f0f3f1;color:#2C5545;border:1px solid #d9e0db;padding:10px 16px;border-radius:6px;font-size:14px;cursor:pointer}
.btn-mini{background:transparent;color:#2C5545;border:1px solid #2C5545;padding:4px 10px;font-size:12px;border-radius:4px;cursor:pointer}
.grp{font-weight:700;color:#2C5545;margin:18px 0 8px;font-size:14px;border-left:3px solid #C9A961;padding-left:8px}
/* 课时三种内容形态的填写分区（视频/音频/图文），由 onChapTypeChange() 控制显隐 */
.chap-block{border:1px solid #e7ebe8;border-left:3px solid #C9A961;background:#fbfbf9;padding:12px 14px;border-radius:8px;margin:4px 0;display:flex;flex-direction:column;gap:8px}
.chap-block .hint{margin-top:2px}
