/* WB-20260920-04 A 批：设计令牌统一 —— 颜色/语义变量收口，后续改动只改变量不再散写色值 */
:root{--surface-page:#f6f4f1;--surface-1:#fff;--surface-2:#fcfbf9;--surface-3:#faf9f6;--line-1:#e6e2dc;--line-2:#ece8e2;--line-3:#f3f0eb;--text-1:#30343b;--text-2:#5f6672;--text-3:#8a8f98;--brand:#f8d7b1;--brand-ink:#665344;--brand-soft:#fff3e6;--brand-line:#e4c7a8;--hover-soft:#fdf8f1;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px}
body{background:var(--surface-page)}
.test-notice{padding:9px 20px;text-align:center;background:#fff7e8;color:#80561d;font-size:14px;border-bottom:1px solid #f1dbaf}.test-shell{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:calc(100vh - 42px)}aside{background:white;border-right:1px solid var(--border);padding:28px 18px;display:flex;flex-direction:column;gap:32px}aside .brand{display:flex;align-items:center;gap:9px;font-size:20px}nav{display:grid;gap:12px}nav button{text-align:left}.aside-bottom{margin-top:auto;display:grid;gap:16px;font-size:14px}.test-main{padding:0 28px 28px;min-width:0}.test-main header{padding:26px 0;margin-bottom:24px;background:transparent}.test-main h1{margin:0;font-size:25px}.roster-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px}.roster-grid .panel{min-width:0}.class-item{padding:14px 0;border-bottom:1px solid var(--border);display:grid;gap:8px}.class-item button{justify-self:start;font-size:13px;min-height:30px;padding:4px 10px}.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:20px}.pager span{margin-right:auto;font-size:14px;color:var(--muted)}.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));align-items:end;gap:14px}.compose-panel{max-width:820px}textarea{font:inherit;line-height:1.7;resize:vertical;border:1px solid var(--border);border-radius:6px;padding:12px;width:100%;color:inherit}#detail{width:min(780px,calc(100% - 28px))}.feedback-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.revision{padding:18px 0;border-bottom:1px solid var(--border)}.empty{padding:24px 0;color:var(--muted)}#message{max-height:40vh;overflow:auto}td{overflow-wrap:anywhere}td small{display:block}.login{margin-top:6vh}@media(max-width:1100px){.roster-grid{grid-template-columns:1fr}.filter-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.test-shell{grid-template-columns:180px minmax(0,1fr)}}@media(max-width:650px){.test-shell{display:block}aside{padding:16px;gap:16px;border-right:0;border-bottom:1px solid var(--border)}nav{display:flex;flex-wrap:wrap;gap:8px}.aside-bottom{display:flex;align-items:center;justify-content:space-between}.test-main{padding:0 14px 20px}.filter-grid{grid-template-columns:1fr}.test-notice{font-size:13px}.test-main header{padding:20px 0}.pager{flex-wrap:wrap}.roster-grid{gap:0}}
.test-main td button{margin:3px 5px 3px 0}
body[data-environment="company"] .test-shell{min-height:100vh}
.account-details{display:grid;gap:6px}.backend-version{font-size:12px;color:var(--muted);font-weight:400}
.management-error{grid-column:1/-1;color:#a3202f;font-weight:600;white-space:pre-wrap}.management-error:empty{display:none}
.management-dialog{width:min(960px,calc(100% - 28px));max-height:calc(100vh - 32px);overflow:auto}.management-dialog>.heading{position:sticky;top:-24px;background:white;padding:10px 0;z-index:1}.management-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.management-form label:has(textarea),.management-form>.note{grid-column:1/-1}.management-form button{justify-self:start}.profile-summary{padding:12px 18px;background:#f4f8fa;border-radius:8px;margin-bottom:16px}.profile-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--border);padding-bottom:12px}.record-card{padding:18px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.record-card h3{font-size:16px;margin:0 0 10px}.record-card p{margin:8px 0}.record-card button{margin:8px 8px 0 0}.record-card details{background:var(--surface-3);padding:10px;border-radius:6px}.test-main #classFilter{grid-template-columns:repeat(3,minmax(120px,1fr)) auto}.test-main .panel{border-radius:10px}.test-main header{margin-bottom:16px}.test-main .heading{gap:12px;flex-wrap:wrap}.test-main #students td small{max-width:260px;overflow-wrap:anywhere}.test-main .class-selected{border-top:3px solid var(--accent)}
@media(max-width:900px){.test-main #classFilter{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.management-form,.test-main #classFilter{grid-template-columns:1fr}.management-dialog{padding:16px}.management-dialog>.heading{top:-16px}.profile-tabs button{flex:1 1 40%}.management-dialog .filter-grid{grid-template-columns:1fr}}
@media(max-width:650px){.table-scroll table{min-width:0}.table-scroll thead{display:none}.table-scroll tbody,.table-scroll tr,.table-scroll td{display:block;width:100%}.table-scroll tr{padding:14px 0;border-bottom:1px solid var(--border)}.table-scroll td{padding:5px 0;border:0}.table-scroll td:first-child{font-weight:600}}
#originalAdmin a{display:block;color:var(--accent);font-size:14px;text-decoration:none;line-height:1.8}#originalAdmin a:hover{text-decoration:underline}#classFilter{margin-bottom:18px}.selected-class{background:#e8f8f5}
/* WB-20260918-13：滚动条统一在外侧 —— iframe 高度由 JS 撑到内容高度，只留页面自己的滚动条 */
.unified-module{width:100%;height:460px;border:0;background:transparent;margin-top:18px}#originalAdmin{display:grid;gap:12px}#originalAdmin button{text-align:left}
#handoff{width:min(720px,calc(100% - 28px));max-height:calc(100vh - 32px);overflow:auto}#handoff label:has(#handoffConfirm){display:flex;align-items:flex-start;gap:10px}#handoffConfirm{width:18px;height:18px;min-height:18px;flex:0 0 18px;margin:2px 0;padding:0}#handoffError:empty{display:none}#handoff .actions{flex-wrap:wrap}#handoffSource{overflow-wrap:anywhere}
.class-picker{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px;background:var(--surface-3);border:1px solid var(--border);border-radius:8px}.class-picker label:nth-of-type(4),.class-picker label:nth-of-type(5){grid-column:1/-1}.class-picker select{max-width:100%}.student-import-table{max-height:45vh;overflow:auto}.student-import-table table{width:100%;border-collapse:collapse}.student-import-table th,.student-import-table td{padding:7px;border-bottom:1px solid var(--border);text-align:left}.student-import-table .import-skip{color:#806020}.student-import-table .import-error{color:#a3202f}
@media(max-width:650px){.class-picker{grid-template-columns:1fr}.class-picker label:nth-of-type(n){grid-column:1}}
/* Approved light-apricot UI; keep the existing full-width lists and modal flow. */
.test-shell{grid-template-columns:200px minmax(0,1fr)}
aside{padding:26px 16px;gap:26px}nav,#originalAdmin{gap:6px}
nav button,#originalAdmin button{border-color:transparent;background:transparent;min-height:42px;padding:10px 16px;color:var(--text-2)}
nav button.primary,#originalAdmin button.primary{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
nav button:hover,#originalAdmin button:hover{background:#faf4ed}
#originalAdmin{border-top:1px solid var(--border);padding-top:20px}
.test-main{padding:0 28px 24px}.test-main header{padding:24px 0 18px;border:0;margin-bottom:0}.test-main h1{font-size:24px}
#scopeNote{display:none}
/* WB-20260920-07：新建班级/新建学员并入页头右侧，与刷新数据并排 */
header .actions{align-items:center}
.test-main .panel{border-radius:6px}.test-main .class-selected{border-top:1px solid var(--border)}
.selected-class{background:#fff3e6}
.test-main td button{background:#fff;border-color:#e4c7a8;color:var(--accent-ink);padding:5px 10px;margin:3px 6px 3px 0}
.test-main td button:hover{background:var(--accent-soft);text-decoration:underline}
.pager{margin-top:14px}.pager button{min-height:30px;font-size:13px}
.management-dialog{width:min(880px,calc(100% - 40px));padding:24px 30px}
.management-dialog>.heading{top:-24px;border-bottom:1px solid var(--border);padding:0 0 16px;margin-bottom:24px}
.management-dialog>.heading h2{font-size:18px}
/* WB-20260918-16：弹窗关闭按钮改明显（描边按钮，悬停变色），覆盖所有 management-dialog 与正式反馈详情 */
.management-dialog>.heading button,#detail>.heading button{border:1px solid #e4c7a8;background:#fff;color:var(--accent-ink);font-weight:600;min-height:36px;padding:6px 16px;border-radius:6px}
.management-dialog>.heading button:hover,#detail>.heading button:hover{background:var(--accent-soft)}
.profile-summary{display:flex;justify-content:space-between;align-items:center;gap:20px;background:transparent;padding:0;margin-bottom:22px}
.profile-name{display:flex;align-items:center;gap:14px;margin-bottom:8px}.profile-name h2{font-size:23px}
.profile-status{background:var(--accent-soft);color:var(--accent-ink);padding:2px 10px;border-radius:4px;font-size:13px}
/* WB-20260920-12：同时在读多个班时，档案里逐行列出每个班 */
.profile-classes{display:grid;gap:2px;font-size:13px;line-height:1.7}
.profile-classes span{font-weight:600}
.profile-summary button{border-color:#eed5ba;color:var(--accent-ink)}
.profile-tabs{gap:22px;padding:0;margin-bottom:0;flex-wrap:wrap}
.profile-tabs button{background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--text-2);padding:12px 16px}
.profile-tabs button.primary{color:var(--accent-ink);background:transparent;border-bottom-color:#ecc49a;font-weight:600}
.profile-tabs button:hover{background:#fff9f2}
.profile-section{padding:16px 0;border-bottom:1px solid var(--border)}/* WB-20260919-17：板块间距 24→16px */.profile-section:last-child{border:0;padding-bottom:8px}
.profile-section h3{margin:0 0 12px;font-size:16px}/* WB-20260919-15：18px→12px，收紧标题下留白 */
.profile-section .heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.profile-section .heading h3{margin:0}
.profile-section .exam-list{margin-top:0}
.profile-section .exam-table{margin-top:0}/* 标题间距已统一 12px，表格不再额外加 */
.profile-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 36px;margin:0}
.profile-facts>div{display:grid;grid-template-columns:105px minmax(0,1fr);gap:12px;align-items:baseline}
.profile-facts dt{color:var(--muted)}.profile-facts dd{margin:0;overflow-wrap:anywhere}
.student-profile .management-form{padding-top:24px}.record-card details{background:var(--surface-3)}
/* WB-20260918-13 学员档案两栏：左=基本资料/联系/备注，右=考级与获奖 */
.student-profile{width:min(1200px,calc(100% - 40px))}
.profile-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 32px;align-items:start}
.profile-columns>div:last-child{border-left:1px solid var(--border);padding-left:32px}
.profile-columns .profile-section:last-child{border-bottom:0}
@media(max-width:1100px){.student-profile{width:min(880px,calc(100% - 40px))}.profile-columns{grid-template-columns:1fr}.profile-columns>div:last-child{border-left:0;padding-left:0;border-top:1px solid var(--border);margin-top:8px}}
@media(max-width:900px){.test-shell{grid-template-columns:170px minmax(0,1fr)}.profile-facts{gap:14px 20px}}
@media(max-width:650px){.test-shell{display:block}.test-main{padding:0 14px 20px}.management-dialog{width:calc(100% - 20px);padding:18px}.management-dialog>.heading{top:-18px}.profile-facts{grid-template-columns:1fr}.profile-tabs{gap:0}.profile-tabs button{padding:10px}.profile-summary{gap:10px}.profile-name h2{font-size:20px}}
#classPageInfo{margin-right:0;white-space:nowrap;font-size:13px}
#refresh{display:none}
.test-main header{padding:16px 0 12px}
.unified-module{margin-top:0}
#organization>.actions{gap:24px;border-bottom:1px solid var(--border);margin-bottom:18px}
#organization>.actions button{border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;padding:10px 4px;color:var(--muted)}
#organization>.actions button.primary{border-bottom-color:#e8bb8b;color:var(--accent-ink);font-weight:600}
.organization-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.organization-toolbar h2{margin:0}.organization-toolbar input{width:300px;max-width:100%}
.organization-table td:nth-last-child(1){white-space:nowrap}
.organization-badge{display:inline-block;background:var(--accent-soft);color:var(--accent-ink);padding:2px 9px;border-radius:4px;font-size:12px}
.organization-badge.disabled{background:#f3f3f2;color:var(--muted)}
.organization-dialog fieldset{border:1px solid var(--border);border-radius:5px;padding:14px}.organization-dialog legend{padding:0 6px}
.organization-dialog fieldset>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:650px){.organization-toolbar input{width:100%}.organization-dialog fieldset>div{grid-template-columns:1fr}}
.school-update-notice{grid-column:1/-1;margin:0 0 14px;padding:10px 14px;border:1px solid #efcfaa;border-radius:5px;background:#fff5e8;color:#86572f}
.second-parent-fields{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px;border:1px solid var(--line-1);border-radius:6px;background:#fcfaf7}
.second-parent-fields button{justify-self:start}@media(max-width:650px){.second-parent-fields{grid-template-columns:1fr}}
.test-main .compact-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 12px}
.test-main .compact-filters>label{flex:0 1 180px;min-width:140px;margin:0}
.test-main .compact-filters>.filter-search{flex:1 1 240px;max-width:300px}
.test-main .compact-filters>label:has(input[type=date]){flex-basis:165px}
.test-main .compact-filters input,.test-main .compact-filters select{width:100%;min-width:0;height:38px}
.test-main .compact-filters .filter-actions{display:flex;gap:8px;align-items:center;flex:0 0 auto}
.test-main .compact-filters button{min-height:38px;white-space:nowrap}
.test-main .compact-filters .filter-dates{display:flex;gap:12px;flex:0 1 342px;min-width:0}
.test-main .compact-filters .filter-dates>label{flex:1;min-width:0;margin:0}
.test-main .compact-filters .filter-dates:not(:has(label:not([hidden]))){display:none}
@media(max-width:650px){.test-main .compact-filters>label,.test-main .compact-filters>label:has(input[type=date]){flex:1 1 calc(50% - 12px);min-width:0}.test-main .compact-filters>.filter-search{flex-basis:100%;max-width:none}.test-main .compact-filters .filter-actions{margin-left:auto}}
/* WB-20260918-04 pre-handoff unsent list */
#handoffPendingBox{border:1px solid #f0b4a2;background:#fff7f3;border-radius:8px;padding:10px 12px;margin:8px 0}
#handoffPendingBox table{width:100%;border-collapse:collapse;font-size:14px}
#handoffPendingBox th,#handoffPendingBox td{border-bottom:1px solid #f2ddd4;padding:6px 8px;text-align:left}
#handoffPendingBox th{font-weight:600;color:var(--accent-ink)}
#handoffPendingBox .pending-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
#handoffPendingBox .pending-actions button{padding:5px 10px}
#handoffPendingBox .pending-page{min-width:110px;font-size:13px;color:#777}
/* WB-20260918-09 exam records */
.exam-list{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.exam-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line,#e6e2dc);padding:6px 0;font-size:14px}
.exam-row .muted{color:#777;font-size:13px}
/* WB-20260918-10 system config page */
/* WB-20260919-20：等级格改竖排小卡片，消除横向拥挤 */
/* WB-20260919-21：取消限宽 + 加大间隔，宽屏 1—8 级排成一行铺满内容区 */
.config-form{max-width:100%;display:grid;gap:14px;margin-top:18px}
#systemConfig .panel{padding:20px 24px 24px}
#systemConfig .panel>.heading{display:block;border-bottom:1px solid var(--line-2);padding-bottom:14px;margin-bottom:0}
#systemConfig .panel>.heading h2{font-size:17px;margin:0 0 6px}
#systemConfig .panel>.heading .muted{font-size:13px;margin:0}
.gesp-sub-title{margin:0;font-size:14px;font-weight:600;color:var(--text-1)}
.gesp-config-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px 24px;max-width:1180px}
.gesp-config-grid label{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;background:none;border:0}
.gesp-config-grid .gesp-label-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;white-space:nowrap}
.gesp-config-grid .gesp-label-head b{font-weight:600;font-size:14px;color:var(--text-1)}
.gesp-config-grid input{width:100%;min-width:0;height:38px;background:#fff;border:1px solid var(--line-1);border-radius:6px;padding:0 10px}
.gesp-config-grid input:focus{outline:0;border-color:#e0b787;box-shadow:0 0 0 3px rgba(224,183,135,.18)}
.config-form .actions{align-items:center;gap:14px}
@media(max-width:900px){.gesp-config-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.gesp-config-grid{grid-template-columns:1fr}}
/* WB-20260919-19：场次状态行 +「已考完新一场」按钮 */
.gesp-session-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:14px 0 22px;padding:0 0 16px;background:none;border:0;border-bottom:1px solid var(--line-2);border-radius:0}
.gesp-session-text{font-size:15px;font-weight:600}
.gesp-session-row small{color:var(--text-3);flex:1;min-width:200px}
.gesp-session-row button{white-space:nowrap}
.gesp-session-row button:disabled{opacity:.55;cursor:not-allowed}
/* WB-20260918-12 compact events filter */
.events-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin:0 0 10px}
.events-filters>label{display:grid;gap:4px;margin:0;font-size:13px;flex:0 1 180px;min-width:130px}
.events-filters input,.events-filters select{height:34px;width:100%;min-width:0}
.events-filters button{min-height:34px;white-space:nowrap}
/* WB-20260919-03：发送标记按钮两种状态明显区分 —— 未发送用主色实心（待办），已发送用红色描边（撤销） */
.test-main td button.primary,.record-card button.primary{background:var(--accent-soft);color:var(--accent-ink);font-weight:600;border-color:#e8bb8b}
.test-main td button.primary:hover,.record-card button.primary:hover{filter:brightness(.97)}
.test-main td button.danger,.record-card button.danger{background:#fff;border-color:#e3a6ad;color:#a3202f;font-weight:600}
.test-main td button.danger:hover,.record-card button.danger:hover{background:#fdf1f2}
.module-loading{padding:60px 0;text-align:center;color:var(--muted);font-size:15px}
/* WB-20260919-04：档案反馈卡片单行布局 —— 标题居左，状态与按钮居右，折叠时只占一行 */
.record-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.record-head h3{margin:0;margin-right:auto;font-size:16px}
.record-state{white-space:nowrap}
/* WB-20260919-05：侧栏身份/退出块吸底 —— 长页面滚动时始终停在侧栏可见区域底部，滚到底时回落原位 */
.aside-bottom{position:sticky;bottom:14px;z-index:5;background:#fff;padding:12px 0 4px;border-top:1px solid var(--border)}
/* WB-20260918-15：档案空区块收紧留白 + 家校沟通紧凑筛选行 */
.profile-section.exam-empty{padding:12px 0}
.profile-section.exam-empty h3{margin-bottom:4px}
.profile-section.exam-empty .heading{margin-bottom:6px}
.profile-section.exam-empty .exam-list{margin-top:0}
.profile-section.exam-empty .empty{padding:2px 0}
.profile-filter-row{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.profile-filter-row label{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:600;color:var(--muted)}
.profile-filter-row select{width:200px;min-height:36px}
.events-filters>button{margin-left:auto}
/* WB-20260919-07 A 档界面精修：表格层次、状态标签、面板与空状态统一（只作用于主后台，不动 iframe 老页面） */
.test-main table,.management-dialog table{width:100%;border-collapse:separate;border-spacing:0}
.test-main thead th,.management-dialog thead th{position:sticky;top:0;z-index:2;background:var(--surface-2);color:var(--text-2);font-size:12px;font-weight:500;text-align:left;padding:11px 12px;border-bottom:1px solid var(--line-2);white-space:nowrap}
.test-main tbody td,.management-dialog tbody td{padding:10px 12px;border-bottom:1px solid var(--line-3);font-size:14px;line-height:1.5;vertical-align:middle}
.test-main tbody td:first-child,.management-dialog tbody td:first-child{font-weight:500}
.test-main tbody td small,.management-dialog tbody td small{display:block;margin-top:2px;font-size:12px;font-weight:400;line-height:1.5;color:var(--text-3)}
.test-main tbody td:has(>button),.management-dialog tbody td:has(>button){white-space:nowrap}
.test-main tbody td>button,.management-dialog tbody td>button,.test-main tbody td>.badge,.management-dialog tbody td>.badge{vertical-align:middle}
.test-main tbody tr:hover td,.management-dialog tbody tr:hover td{background:var(--hover-soft)}
.test-main tbody tr.selected-class td{background:#fff3e6}
.test-main tbody tr.selected-class:hover td{background:#fbecda}
.test-main tbody tr:last-child td{border-bottom:0}
.test-main .table-scroll:has(tbody tr:nth-child(15)){max-height:calc(100vh - 220px);overflow:auto}
/* WB-20260919-13：学员数列取消居中，表头与数字统一靠左（原居中规则选择器写错在 tbody 上，表头从未生效，导致数字偏右） */
.badge{display:inline-block;padding:1px 9px;border-radius:999px;font-size:12px;line-height:1.7;border:1px solid transparent;white-space:nowrap}
.badge-ok{background:#eef6e8;color:#41641f;border-color:#d9ebcd}
.badge-warn{background:#fff5e5;color:#8a5a17;border-color:#f3dfc2}
.badge-muted{background:var(--surface-3);color:#6b7280;border-color:var(--line-1)}
.badge-fail{background:#fdeeee;color:#a3202f;border-color:#f2d5d5}/* WB-20260919-14：未通过 */
/* WB-20260919-14：考级/真题记录改紧凑表格 */
.exam-table{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px}
.exam-table th{text-align:left;padding:6px 12px;font-weight:400;font-size:13px;color:var(--text-3);background:var(--surface-3);border-bottom:1px solid var(--border,#e6e2dc)}
.exam-table td{padding:6px 12px;border-bottom:1px solid var(--line-3);vertical-align:middle}/* WB-20260919-16：行距 9px→6px，收但不贴 */
.exam-table td small{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--text-3)}
.exam-table td .badge{margin-left:6px}
.exam-table .op-col{text-align:right;white-space:nowrap}
.link-btn{display:inline-block;border:1px solid #e4c7a8;background:#fff;color:var(--accent-ink,#7a4a20);cursor:pointer;margin-left:8px;font-size:12px;padding:2px 10px;border-radius:5px;text-decoration:none}/* WB-20260919-16：改带框小按钮，编辑颜色加深 */
.link-btn:hover{background:var(--accent-soft,var(--brand-soft));text-decoration:none}
.link-btn.danger{border-color:#e3a6ad;color:#a3202f}
.link-btn.danger:hover{background:#fdf1f2}
/* WB-20260919-18：GESP 题目配置页的自动值提示 */
.gesp-auto-hint{display:inline;font-size:12px;color:var(--text-3);margin:0;white-space:nowrap}/* WB-20260919-20：随等级名同行右对齐 */
/* WB-20260919-15：手填多行文字（获奖情况）逐行排版 */
.award-list div{padding:7px 0;border-bottom:1px solid var(--line-3);font-size:14px;line-height:1.5}
.award-list div:last-child{border-bottom:0}
.test-main .panel{background:var(--surface-1);border:1px solid var(--line-2);border-radius:8px;padding:18px 20px;box-shadow:0 1px 2px rgba(48,52,59,.04)}
.test-main .empty{padding:26px 0;text-align:center;color:var(--text-3)}
.test-main header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line-2)}
.test-main .compact-filters>label{font-size:13px}
.test-main button,.management-dialog button{transition:background-color .15s ease,border-color .15s ease}
.test-main button:disabled,.management-dialog button:disabled{opacity:.45}
/* WB-20260919-06：整个左侧边栏固定 —— 页面滚动时侧栏整体不动，只有右侧内容跟着滚 */
aside{position:sticky;top:0;align-self:start;height:calc(100vh - 42px);max-height:calc(100vh - 42px);overflow-y:auto;overscroll-behavior:contain}
body[data-environment="company"] aside{height:100vh;max-height:100vh}
@media(max-width:650px){aside{position:static;height:auto;max-height:none;overflow:visible}}
.management-dialog.wide-dialog{width:min(1240px,calc(100% - 40px))}
@media(max-width:1280px){.management-dialog.wide-dialog{width:min(960px,calc(100% - 40px))}}

/* WB-20260920-06 B 批（保留项）：侧栏分组与当前项色条、页头上下文、空状态、分页、弹窗统一 */
aside nav{gap:2px}
.nav-group{padding:16px 16px 6px;font-size:12px;color:var(--text-3);letter-spacing:.05em}
.nav-group:first-child{padding-top:0}
nav button{position:relative}
nav button.primary::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:0 3px 3px 0;background:#e0a877}
nav button.primary{background:var(--brand-soft);color:var(--brand-ink)}
nav button:not(.primary):hover{background:var(--hover-soft)}
.page-head{min-width:0}
.page-sub{margin:5px 0 0;font-size:13px;color:var(--text-3);overflow-wrap:anywhere}
.empty-state{padding:36px 0;text-align:center;color:var(--text-3)}
.empty-state p{margin:0;font-size:14px}
.empty-state p+p{margin-top:6px;font-size:13px}
.pager{display:flex;align-items:center;gap:10px;margin-top:16px}
.pager-count{margin-right:auto;font-size:13px;color:var(--text-3);overflow-wrap:anywhere}
.pager-pages{font-size:13px;color:var(--text-2);white-space:nowrap}
.pager-btn{min-height:30px;padding:5px 14px;font-size:13px}
.test-main .pager button:disabled{opacity:.4}
dialog{border:1px solid var(--line-1);border-radius:10px;box-shadow:0 18px 44px rgba(48,52,59,.18)}
dialog::backdrop{background:rgba(28,30,34,.32)}
/* WB-20260920-08：新建/编辑弹窗表单行距放宽，字段之间不再显挤 */
#editForm{gap:22px}#editForm .actions{margin-top:2px}
/* WB-20260920-09：课程系列/学习阶段同在 #pickProgress 容器内，容器内部行距与表单一致 */
#pickProgress{display:grid;gap:22px}

.management-dialog .empty,.management-dialog .empty-state{padding:28px 0;text-align:center;color:var(--text-3)}
.management-dialog .pager{margin-top:18px}

/* WB-20260920-09 C 批：提示条语义色、按钮忙碌态、加载骨架 */
#message{color:#fff}
#message.is-ok{background:#3f7a2e}
#message.is-warn{background:#8a5a17}
#message.is-error{background:#a3202f}
#message.is-info{background:#343a43}
[aria-busy="true"] button:disabled{opacity:.5;cursor:progress}
.skeleton-bar{height:12px;margin:7px 0;border-radius:6px;background:var(--line-3)}
.test-main tbody tr:has(.skeleton-bar):hover{background:transparent}
@media (prefers-reduced-motion:no-preference){.skeleton-bar{animation:skeleton-pulse 1.3s ease-in-out infinite}}
@keyframes skeleton-pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* WB-20260920-13 学员管理页观感优化：筛选行、面板头、班级列紧凑排版 */
.test-main .compact-filters .filter-check{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin:0 0 3px;font-weight:500;color:var(--text-2);font-size:13px}
.test-main .compact-filters .filter-check input{width:16px;min-width:16px;height:16px;min-height:16px;padding:0;margin:0;accent-color:#d99a56;cursor:pointer}
.sa-heading{align-items:baseline}
.sa-heading h2{margin:0 0 2px}
#studentAdmin .panel>.sa-heading{border-bottom:1px solid var(--line-2);padding-bottom:12px;margin-bottom:14px}
.sa-class-line{display:flex;align-items:baseline;gap:8px;padding:2px 0;flex-wrap:wrap}
.sa-class-line b{font-weight:600}
.sa-class-line small{margin:0}
/* WB-20260921-04：学员管理页取消表格内部滚动（与整页滚动叠加会出现双滚动条），统一只保留整页一条滚动条 */
#studentAdmin .table-scroll{max-height:none;overflow:visible}
/* WB-20260922-01：筛选行与表格间留出间距 —— 紧贴时下拉框/输入框聚焦的橙色外圈下半截会被吸顶表头盖住 */
.test-main .compact-filters{margin-bottom:10px}
#saMoreFilters{grid-column:1/-1;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fffdfa}#saMoreFilters>summary{cursor:pointer;font-weight:600;color:var(--ink)}#saMoreFilters>.filter-grid{margin-top:12px}#saMoreFilters .filter-actions{align-self:end}.sa-active-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}.sa-active-filters span{padding:4px 9px;border-radius:999px;background:#f5eadb;color:#594532;font-size:12px}.class-schedule-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px;border:1px solid var(--border);border-radius:9px}.class-schedule-fields legend{padding:0 5px;font-weight:650}.class-schedule-fields .note{grid-column:1/-1;margin:0;font-size:12px}@media(max-width:620px){.class-schedule-fields{grid-template-columns:1fr}}
/* 学员管理“更多筛选”：悬浮面板不挤动列表，手机端停靠在屏幕底部。 */
.sa-more-trigger{justify-self:start;min-height:38px;padding:7px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--ink);font-weight:600}
.sa-more-trigger:hover{background:var(--accent-soft)}
#saMoreFiltersPanel[popover]{position:fixed;inset:auto;box-sizing:border-box;width:min(460px,calc(100vw - 24px));max-height:min(72vh,540px);max-height:min(72dvh,540px);margin:0;padding:18px;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 16px 48px rgba(30,24,18,.18)}
.sa-more-filter-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid var(--line-2)}
.sa-more-filter-heading strong{font-size:15px}
.sa-more-close{min-height:34px;padding:5px 11px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--ink)}
#saMoreFiltersPanel>.filter-grid{margin-top:0}
#saMoreFiltersPanel .filter-actions{align-self:end}
#saMoreFiltersPanel:focus{outline:none}
@media(max-width:650px){
  #saMoreFiltersPanel[popover]:popover-open,#saMoreFiltersPanel[data-open="true"]{top:auto!important;right:0;bottom:0;left:0;width:100%;max-width:none;max-height:min(78vh,680px);max-height:min(78dvh,680px);padding:18px 16px calc(18px + env(safe-area-inset-bottom));overflow-y:auto;border-right:0;border-bottom:0;border-left:0;border-radius:18px 18px 0 0;box-shadow:0 -12px 36px rgba(30,24,18,.18)}
  #saMoreFiltersPanel::backdrop{background:rgba(31,24,18,.16)}
}