/* 山猫换肤移植版：管理台皮肤工作室 + 皮肤化后的管理台样式 */
.sk-page{max-width:1400px}
.sk-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px}
.sk-eyebrow{font-size:10px;letter-spacing:.16em;color:#94a3b8;font-weight:700;margin-bottom:7px}
.sk-head h2{font-size:24px;letter-spacing:-.03em;margin:0 0 5px}
.sk-head p{font-size:12px;color:#64748b;line-height:1.7;margin:0;max-width:620px}
.sk-switch{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 13px;font-size:12px;color:#334155;cursor:pointer;white-space:nowrap}
.sk-switch input{width:32px;height:18px;appearance:none;background:#cbd5e1;border-radius:999px;position:relative;cursor:pointer;transition:.18s}
.sk-switch input:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:#fff;border-radius:50%;transition:.18s}
.sk-switch input:checked{background:var(--brand)}
.sk-switch input:checked:before{left:16px}
.sk-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.sk-kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:0 2px 6px rgba(15,23,42,.025)}
.sk-kpi b{display:block;font-size:21px;line-height:1.2;letter-spacing:-.03em;color:#10233f}
.sk-kpi span{display:block;font-size:10px;color:#94a3b8;margin-top:3px}
.sk-off{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid #fde68a;background:#fffbeb;color:#92400e;border-radius:11px;padding:11px 14px;font-size:11.5px;margin-bottom:14px}
.sk-off b{font-size:12px}.sk-off span{flex:1;min-width:220px;line-height:1.6}.sk-off .btn{height:28px}
.sk-grid{display:grid;grid-template-columns:1.12fr .96fr .92fr;gap:12px;align-items:start}
.sk-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 6px rgba(15,23,42,.025);overflow:hidden;min-width:0}
.sk-card-h{display:flex;align-items:flex-start;gap:10px;padding:13px 15px;border-bottom:1px solid var(--line)}
.sk-card-h h3{font-size:13px;margin:0;font-weight:680}.sk-card-h .sk-sub{font-size:10px;color:#94a3b8;margin-top:3px}
.sk-badge{margin-left:auto;font-size:9.5px;border-radius:999px;background:#eef4ff;color:#1d4ed8;padding:3px 7px;white-space:nowrap;align-self:flex-start}
.sk-theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:13px 14px 8px}
.sk-theme{border:1px solid #e7edf5;background:#fff;border-radius:9px;padding:5px;cursor:pointer;text-align:left;min-width:0;transition:.14s}
.sk-theme:hover{border-color:#bcd3ea;transform:translateY(-1px)}
.sk-theme.on{border-color:var(--brand);box-shadow:0 0 0 2px rgba(29,78,216,.12)}
.sk-theme-preview{display:flex;align-items:flex-end;gap:3px;height:40px;border-radius:6px;padding:4px;overflow:hidden}
.sk-theme-preview i{display:block;width:8px;height:8px;border-radius:50%;border:1px solid rgba(255,255,255,.8)}
.sk-theme-name{display:block;font-size:10px;font-weight:650;color:#334155;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sk-theme small{display:block;font-size:9px;color:#94a3b8;margin-top:1px}
.sk-accent-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 14px 14px;border-top:1px dashed #eef2f7;font-size:10px;color:#94a3b8}
.sk-dot{width:17px;height:17px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #dbe5ef;cursor:pointer;padding:0}
.sk-dot.on{box-shadow:0 0 0 2px #10233f}
.sk-accent-row input[type=color]{width:22px;height:19px;padding:0;border:0;background:none;cursor:pointer}
.sk-seg{display:flex;gap:4px;padding:12px 14px 8px}
.sk-seg button{border:1px solid #e2eaf3;background:#fff;color:#64748b;border-radius:6px;padding:4px 8px;font-size:10px;cursor:pointer}
.sk-seg button.on{background:#eef4ff;border-color:#bfd4f8;color:#1d4ed8;font-weight:650}
.sk-grad-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:4px 14px 14px;max-height:245px;overflow:auto}
.sk-grad{position:relative;height:37px;border:2px solid transparent;border-radius:6px;cursor:pointer;padding:0;overflow:hidden}
.sk-grad span{position:absolute;left:4px;bottom:2px;font-size:8.5px;color:rgba(15,23,42,.72);background:rgba(255,255,255,.62);border-radius:3px;padding:0 3px;line-height:1.4;white-space:nowrap}
.sk-grad.on{border-color:#10233f;box-shadow:0 0 0 1px #fff inset}
.sk-inline{display:flex;align-items:center;gap:8px;padding:4px 14px 12px;font-size:10px;color:#64748b;flex-wrap:wrap}
.sk-inline input[type=color]{width:38px;height:27px;padding:0;border:1px solid #dbe4ef;border-radius:5px;background:#fff}
.sk-inline code{font-size:10px;background:#f1f5f9;border-radius:4px;padding:2px 5px;color:#64748b}
.sk-inline input#skImage{flex:1;min-width:130px;height:28px;font-size:10.5px}
.sk-image-box{padding:0 14px 12px}
.sk-file{display:inline-flex;align-items:center;gap:5px;border:1px dashed #cbd9e8;background:#fbfdff;border-radius:6px;padding:5px 8px;font-size:10px;color:#64748b;cursor:pointer}
.sk-file input{display:none}
.sk-image-preview{margin-top:8px;height:66px;border-radius:7px;border:1px solid #e2eaf3;background-size:cover;background-position:center;background-color:#eef4fb}
.sk-controls{display:flex;flex-direction:column;gap:9px;padding:13px 15px 15px}
.sk-field{display:flex;flex-direction:column;gap:4px;font-size:10.5px;color:#475569}
.sk-field > span{display:flex;align-items:center;justify-content:space-between}.sk-field b{font-weight:600;color:#1d4ed8}
.sk-field select{height:29px;font-size:10.5px;background:#fbfdff}
.sk-field input[type=range]{width:100%;accent-color:var(--brand)}
.sk-check{display:flex;align-items:center;gap:5px;font-size:10.5px;color:#475569;cursor:pointer}
.sk-check input{width:14px;height:14px;accent-color:var(--brand)}
.sk-more{margin-top:12px}
.sk-actions{display:flex;gap:7px;flex-wrap:wrap;padding:13px 15px}
.sk-note{font-size:10px;line-height:1.65;color:#94a3b8;padding:0 15px 14px}
.sk-note code{font-size:9.5px;background:#f1f5f9;border-radius:4px;padding:1px 4px}
.sk-card .sk-note{padding-left:15px;padding-right:15px}

/* 教学总览 */
.tch-hero{background:linear-gradient(120deg,#10233f,#16345c 56%,#0f766e 145%);border-radius:16px;color:#fff;padding:20px 22px;margin-bottom:13px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;box-shadow:0 10px 26px rgba(15,23,42,.12)}
.tch-hero h2{font-size:19px;margin:0 0 4px;color:#fff}.tch-hero p{margin:0;font-size:11px;color:#c4d5e7;line-height:1.6}
.tch-hero .tch-hero-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.tch-hero .btn{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.25);color:#fff}
.tch-hero .btn.pri{background:#fff;color:#0f766e;border-color:#fff}
.tch-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:12px}
.tch-stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:0 2px 6px rgba(15,23,42,.025)}
.tch-stat b{display:block;font-size:22px;letter-spacing:-.04em;color:#10233f}.tch-stat span{display:block;font-size:10px;color:#94a3b8;margin-top:2px}
.tch-cols{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;align-items:start}
.tch-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 2px 6px rgba(15,23,42,.025)}
.tch-card-h{display:flex;align-items:center;gap:8px;padding:13px 15px;border-bottom:1px solid var(--line)}
.tch-card-h h3{font-size:13px;margin:0;font-weight:680}.tch-card-h .muted{font-size:10px;margin-left:auto}
.tch-list{padding:0 15px}
.tch-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f1f5f9;cursor:pointer}
.tch-row:last-child{border-bottom:0}.tch-row:hover{background:#fbfdff}
.tch-row-main{min-width:0;flex:1}.tch-row-main b{display:block;font-size:11.5px;color:#334155;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tch-row-main small{display:block;font-size:9.5px;color:#94a3b8;margin-top:2px}
.tch-pct{font-size:10px;color:#64748b;font-variant-numeric:tabular-nums;white-space:nowrap}
.tch-bar{height:5px;border-radius:99px;background:#eef3f8;overflow:hidden;margin-top:5px}.tch-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#0f766e,#2dd4bf)}
.tch-bar i.low{background:linear-gradient(90deg,#dc2626,#f87171)}
.tch-pill{font-size:9px;border-radius:999px;padding:2px 6px;background:#eef4ff;color:#1d4ed8;white-space:nowrap}
.tch-pill.g{background:#ecfdf5;color:#047857}.tch-pill.y{background:#fffbeb;color:#b45309}
.tch-empty{padding:22px 15px;text-align:center;color:#94a3b8;font-size:10.5px}
.tch-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 15px}
.tch-action{border:1px solid #e7edf5;background:#fbfdff;border-radius:9px;padding:9px 10px;text-align:left;cursor:pointer;transition:.14s}
.tch-action:hover{border-color:#bfd7e6;background:#f5fbff}.tch-action b{display:block;font-size:11px;color:#334155}.tch-action span{display:block;font-size:9.5px;color:#94a3b8;margin-top:2px}
@media(max-width:1150px){.sk-grid{grid-template-columns:1fr 1fr}.sk-card-themes{grid-column:1/-1}.tch-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.sk-grid{grid-template-columns:1fr}.sk-card-themes{grid-column:auto}.sk-theme-grid{grid-template-columns:repeat(3,1fr)}.sk-grad-grid{grid-template-columns:repeat(3,1fr)}.tch-grid{grid-template-columns:repeat(2,1fr)}.tch-cols{grid-template-columns:1fr}.tch-actions{grid-template-columns:repeat(2,1fr)}.sk-head{display:block}.sk-switch{margin-top:12px;display:inline-flex}}

/* ---------- 皮肤化后的管理台 ---------- */
body.skinned{background:var(--sk-page,#f5f8fc);color:var(--sk-ink);font-family:var(--sk-font);letter-spacing:var(--sk-letter,0);font-weight:var(--sk-weight,400);transition:background .25s,color .2s}
body.skinned .app{zoom:var(--admin-scale,1.1)}
body.skinned .side{background:linear-gradient(170deg,var(--sk-side),var(--sk-side-2));}
body.skinned .side-label{color:rgba(217,230,244,.55)}
body.skinned .brand b{color:#fff}
body.skinned .brand span{color:rgba(217,230,244,.56)}
body.skinned .mini{color:rgba(217,230,244,.48)}
body.skinned .logout{border-color:rgba(255,255,255,.16);color:rgba(235,245,255,.8)}
body.skinned .navbtn{color:rgba(217,230,244,.72)}
body.skinned .navbtn:hover{background:rgba(255,255,255,.08);color:#fff}
body.skinned .navbtn.on{background:var(--sk-accent-soft);color:#fff}
body.skinned .main{background:transparent}
body.skinned .top h1,body.skinned h1,body.skinned .stat .v,body.skinned .tch-stat b,body.skinned .sk-kpi b{color:var(--sk-ink)}
body.skinned .crumb,body.skinned .crumb b,body.skinned .who,body.skinned .muted,body.skinned .sub,body.skinned .stat .k,body.skinned .stat .d,body.skinned .sk-note,body.skinned .sk-sub{color:var(--sk-muted)}
body.skinned .card,body.skinned .stat,body.skinned .class-card,body.skinned .bank-book,body.skinned .sk-card,body.skinned .tch-card,body.skinned .tch-stat,body.skinned .sk-kpi{background:var(--sk-card);border-color:var(--sk-line);border-radius:var(--sk-radius)}
body.skinned .card-h,body.skinned .sk-card-h,body.skinned .tch-card-h{border-color:var(--sk-line)}
body.skinned .card-h h2,body.skinned .sk-card-h h3,body.skinned .tch-card-h h3{color:var(--sk-ink)}
body.skinned .btn{padding-top:0;padding-bottom:0;height:calc(30px * var(--sk-dens,1));border-color:var(--sk-line);color:var(--sk-ink-2);background:var(--sk-card)}
body.skinned .btn:hover{background:var(--sk-accent-soft);border-color:var(--sk-accent-line);color:var(--sk-accent)}
body.skinned .btn.pri{background:linear-gradient(135deg,var(--sk-accent),var(--sk-accent2));border:0;color:#fff}
body.skinned .pill{background:var(--sk-accent-soft);color:var(--sk-accent);border-color:var(--sk-accent-line)}
body.skinned .pill.g{background:rgba(5,150,105,.12);color:#059669;border-color:rgba(5,150,105,.2)}
body.skinned .pill.y{background:rgba(180,83,9,.12);color:#b45309;border-color:rgba(180,83,9,.2)}
body.skinned .pill.r{background:rgba(185,28,28,.1);color:#b91c1c;border-color:rgba(185,28,28,.2)}
body.skinned th{background:var(--sk-card-2);color:var(--sk-muted);border-color:var(--sk-line)}
body.skinned td{border-color:var(--sk-line);color:var(--sk-ink-2);padding-top:calc(11px * var(--sk-dens,1));padding-bottom:calc(11px * var(--sk-dens,1))}
body.skinned .row:hover td{background:var(--sk-accent-soft)}
body.skinned input,body.skinned select,body.skinned textarea{background:var(--sk-card-2);border-color:var(--sk-line);color:var(--sk-ink)}
body.skinned input:focus,body.skinned select:focus,body.skinned textarea:focus{border-color:var(--sk-accent);box-shadow:0 0 0 3px var(--sk-accent-soft)}
body.skinned .filters,body.skinned .sk-seg button{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skinned .navbtn{height:calc(39px * var(--sk-dens,1))}
body.skinned .avatar{background:var(--sk-accent-soft);color:var(--sk-accent)}
body.skinned .brand .mark{background:#fff;border-color:rgba(255,255,255,.6)}
body.skinned .sk-seg button.on{background:var(--sk-accent-soft);border-color:var(--sk-accent-line);color:var(--sk-accent)}
body.skinned .sk-theme,body.skinned .sk-theme-preview{border-color:var(--sk-line)}
body.skinned .sk-theme-name{color:var(--sk-ink-2)}
body.skinned .sk-action,body.skinned .tch-action{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skinned .tch-action:hover,body.skinned .tch-row:hover{background:var(--sk-accent-soft)}
body.skinned .tch-row-main b,body.skinned .tch-action b{color:var(--sk-ink-2)}
body.skinned .tch-bar{background:var(--sk-line)}
body.skinned .sk-grad.on{border-color:var(--sk-accent)}
body.skinned .sk-dot.on{box-shadow:0 0 0 2px var(--sk-ink)}
body.skin-no-anim *,body.skin-no-anim *:before,body.skin-no-anim *:after{transition:none!important;animation:none!important}
body.skin-zebra .card table tbody tr:nth-child(even) td,body.skin-zebra table tbody tr:nth-child(even) td{background:var(--sk-accent-soft)}
body.skin-dark .sk-head p,body.skin-dark .sk-note,body.skin-dark .sk-sub{color:var(--sk-muted)}
body.skin-dark .sk-theme{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skin-dark .sk-theme-name{color:var(--sk-ink)}
body.skin-dark .sk-theme small{color:var(--sk-muted)}
body.skin-dark .sk-switch{background:var(--sk-card-2);border-color:var(--sk-line);color:var(--sk-ink-2)}
body.skin-dark .sk-off{background:rgba(180,83,9,.14);border-color:rgba(245,158,11,.25);color:#fcd34d}
body.skin-dark .sk-seg button{color:var(--sk-ink-2)}
body.skin-dark .sk-seg button.on{color:var(--sk-accent)}
body.skin-dark .sk-inline code,body.skin-dark .sk-note code{background:rgba(255,255,255,.08);color:var(--sk-muted)}
body.skin-dark .sk-field,body.skin-dark .sk-check,body.skin-dark .sk-inline{color:var(--sk-ink-2)}
body.skin-dark .tch-hero{background:linear-gradient(120deg,var(--sk-side),#16345c 58%,var(--sk-accent))}
body.skin-dark .tch-stat,body.skin-dark .tch-card,body.skin-dark .sk-card,body.skin-dark .sk-kpi{background:var(--sk-card);border-color:var(--sk-line)}
body.skin-dark .tch-row,body.skin-dark .tch-list{border-color:var(--sk-line)}
body.skin-dark .tch-row:hover{background:var(--sk-accent-soft)}
body.skin-dark .tch-row-main b,body.skin-dark .tch-action b,body.skin-dark .tch-card-h h3{color:var(--sk-ink)}
body.skin-dark .tch-row-main small,body.skin-dark .tch-pct{color:var(--sk-muted)}
body.skinned .tch-hero .btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.26);color:#fff}
body.skinned .tch-hero .btn.pri{background:#fff;border-color:#fff;color:var(--sk-accent)}
body.skin-dark .modal-box{background:var(--sk-card);border-color:var(--sk-line)}
body.skin-dark .skin-drawer{background:#0d1726;border-color:var(--sk-line)}
body.skin-dark .skin-drawer-head{background:var(--sk-card);border-color:var(--sk-line)}
body.skin-dark .skin-drawer-head b{color:var(--sk-ink)}
body.skin-dark .skin-drawer-head span{color:var(--sk-muted)}
body.skin-dark .skin-drawer-head button{background:var(--sk-card-2);border-color:var(--sk-line);color:var(--sk-ink-2)}
body.skin-dark .student-stat-grid div{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skin-dark .student-stat-grid b,body.skin-dark .student-act-main b{color:var(--sk-ink)}
body.skin-dark .student-act,body.skin-dark .student-profile-head{border-color:var(--sk-line)}
body.skin-dark .student-section h4,body.skin-dark .student-act-main small,body.skin-dark .student-profile-head .muted{color:var(--sk-muted)}
body.skin-dark .admin-book,body.skin-dark .admin-test,body.skin-dark .admin-speak-card{background:var(--sk-card);border-color:var(--sk-line)}
body.skin-dark .admin-book-head:hover,body.skin-dark .admin-speak-card:hover{background:var(--sk-card-2)}
body.skin-dark .admin-book-title b,body.skin-dark .admin-test-head b,body.skin-dark .admin-part b,body.skin-dark .admin-speak-card b{color:var(--sk-ink)}
body.skin-dark .admin-book-title span,body.skin-dark .admin-part span,body.skin-dark .admin-bank .sub,body.skin-dark .admin-bank-src,body.skin-dark .admin-bank-mod h2 span{color:var(--sk-muted)}
body.skin-dark .admin-part{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skin-dark .admin-part:hover{background:var(--sk-accent-soft);border-color:var(--sk-accent)}
body.skin-dark .class-sec{border-color:var(--sk-line)}
body.skin-dark .class-sec-h b,body.skin-dark .new-student-head b{color:var(--sk-ink)}
body.skin-dark .class-pick{background:var(--sk-card-2);border-color:var(--sk-line);color:var(--sk-ink-2)}
body.skin-dark .class-pick:hover{background:var(--sk-accent-soft);border-color:var(--sk-accent)}
body.skin-dark .new-student-box{background:var(--sk-card-2);border-color:var(--sk-line)}
body.skin-dark .bank-tabs{border-color:var(--sk-line)}
body.skin-dark .bank-tab{color:var(--sk-muted)}
body.skin-dark .bank-tab.on{color:var(--sk-accent)}
body.skin-dark .bank-tab b{background:var(--sk-card-2);color:var(--sk-muted)}
body.skin-dark .modal-h,body.skin-dark .modal-f{border-color:var(--sk-line)}
