/* ============================================================
   同兴智学 · 监管服务平台（独立系统）— 设计令牌 + 组件
   对照设计稿 D1–D4，主色护眼深绿、监管强调金
   ============================================================ */
:root{
  --navy-900: #0F4028; --navy-700:#165C3C; --navy-600:#1B6E47;
  --gold-600:#C9A227; --gold-text:#8a6d10; --gold-bg:#FBF6E8; --gold-bg2:#F7F1DC;
  --blue-050:#E8F6F0;
  --success:#1E8E5A; --success-bg:#E5F4ED;
  --error:#D64545; --error-bg:#FBEAEA; --error-bd:#EFC9C9;
  --bg-page:#F5F8F7; --bg-card:#fff; --bg-grey:#EDF2F0; --bg-head:#F0F7F4;
  --t-title:#16221D; --t-body:#3B5046; --t-sub:#667A6F; --t-weak:#99ABA2; --t-disabled:#B7C7BF;
  --bd:#C7D5CF; --bd-light:#EDF2F0;
  --radius:8px; --shadow-card:0 1px 4px rgba(15,64,40,.06); --shadow-modal:0 12px 48px rgba(0,0,0,.25);
  --sidebar-w:220px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--bg-page);color:var(--t-body);font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;}
a{color:var(--navy-600);text-decoration:none;} img{max-width:100%;display:block;}
button{font-family:inherit;cursor:pointer;} input,select,textarea{font-family:inherit;}
.serif{font-family:'Noto Serif SC','PingFang SC',serif;}
.mono{font-variant-numeric:tabular-nums;}
@keyframes spin{to{transform:rotate(360deg);}}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
@keyframes scan{0%{top:12%}50%{top:78%}100%{top:12%}}

/* 按钮 */
.btn{height:40px;padding:0 20px;border:none;border-radius:var(--radius);font-size:16px;font-weight:600;background:var(--navy-600);color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;flex-shrink:0;}
.btn:hover{background:var(--navy-700);}
.btn-lg{height:50px;font-size:19px;font-weight:700;}
.btn-sm{height:35px;padding:0 14px;font-size:15px;}
.btn-ghost{background:var(--blue-050);color:var(--navy-600);border:1px solid var(--navy-600);}
.btn-gold{background:var(--gold-bg);color:var(--gold-text);border:1px solid var(--gold-600);}
.btn-line{background:#fff;color:var(--t-body);border:1px solid var(--bd);}
.btn-danger-line{background:#FDF7F7;color:var(--error);border:1px solid var(--error);}
.btn-block{width:100%;}
.btn:disabled{background:var(--bg-grey);color:var(--t-disabled);cursor:not-allowed;}

/* 表单 */
.field{height:40px;border:1px solid var(--bd);border-radius:6px;padding:0 14px;font-size:16px;color:var(--t-title);background:#fff;}
.field:focus{outline:none;border-color:var(--navy-600);}
.sel{height:36px;border:1px solid var(--bd);border-radius:6px;padding:0 12px;font-size:16px;color:var(--t-body);background:#fff;}

/* 卡片/表格/徽标 */
.card{background:#fff;border-radius:8px;box-shadow:var(--shadow-card);}
.tbl{width:100%;border-collapse:collapse;font-size:16px;}
.tbl th{padding:12px 10px;font-weight:600;color:var(--t-sub);text-align:left;border-bottom:1px solid var(--bd-light);}
.tbl td{padding:12px 10px;color:var(--t-title);border-bottom:1px solid var(--bg-page);}
.tbl .link{color:var(--navy-600);cursor:pointer;} .tbl .link:hover{text-decoration:underline;}
.badge{font-size:14px;font-weight:700;padding:3px 10px;border-radius:10px;display:inline-block;}
.badge.blue{background:var(--blue-050);color:var(--navy-600);}
.badge.green{background:var(--success-bg);color:var(--success);}
.badge.gold{background:var(--gold-bg2);color:var(--gold-text);}
.badge.red{background:var(--error-bg);color:var(--error);}
.badge.grey{background:var(--bg-grey);color:var(--t-sub);}
.pager{display:flex;gap:6px;}
.pager span{width:32px;height:32px;border-radius:6px;border:1px solid var(--bd);color:var(--t-body);display:flex;align-items:center;justify-content:center;font-size:15px;cursor:pointer;}
.pager .cur{background:var(--navy-600);color:#fff;border-color:var(--navy-600);font-weight:700;}
.state{text-align:center;padding:48px 0;color:var(--t-sub);font-size:16px;}
.spinner{width:28px;height:28px;border:3px solid var(--bg-grey);border-top-color:var(--navy-600);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 12px;}

/* 弹窗 / toast */
.mask{position:fixed;inset:0;background:rgba(20,24,31,.55);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .15s;}
.modal{background:#fff;border-radius:8px;box-shadow:var(--shadow-modal);padding:28px;width:440px;max-width:92vw;animation:fadeIn .2s;}
.modal h3{margin:0 0 14px;font-size:21px;color:var(--t-title);}
.modal-actions{display:flex;gap:12px;margin-top:16px;} .modal-actions .btn{flex:1;}
.toast{position:fixed;left:50%;top:70px;transform:translateX(-50%);background:rgba(22,27,34,.92);color:#fff;padding:12px 22px;border-radius:8px;font-size:16px;z-index:999;animation:fadeIn .2s;}

/* ============ 登录页 D1 ============ */
.login-root{min-height:100vh;position:relative;overflow:hidden;background:linear-gradient(135deg,var(--navy-700),var(--navy-900));display:flex;align-items:center;justify-content:center;gap:105px;padding:58px 50px 150px;}
.login-brand{position:relative;z-index:2;color:#fff;width:420px;max-width:42vw;}
.login-brand .row{display:flex;align-items:center;gap:12px;margin-bottom:18px;}
.login-brand .logo{width:42px;height:42px;border-radius:7px;display:block;object-fit:contain;background:#fff;}
.login-brand .title{font-size:28px;font-weight:700;font-family:'Noto Serif SC',serif;}
.login-brand .desc{font-size:17px;color:#E0ECE6;line-height:2;}
.login-tags{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}
.login-tags span{font-size:15px;background:rgba(255,255,255,.12);padding:5px 14px;border-radius:16px;}
.login-card{position:relative;z-index:2;width:360px;max-width:100%;background:#fff;border-radius:8px;padding:34px 32px 30px;box-shadow:0 14px 50px rgba(var(--theme-darker-rgb,15,64,40),.26);}
.login-card h2{font-size:22px;font-weight:700;color:var(--t-title);margin:0 0 20px;}
.login-card .field{width:100%;height:48px;margin-bottom:12px;}
.login-code-row{display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:10px;}
.login-code-row .btn-ghost{height:48px;padding:0 10px;font-size:15px;}
.login-level-compat{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
.login-note{font-size:13px;color:var(--t-sub);text-align:center;margin-top:12px;line-height:1.55;}
.login-sun{position:absolute;z-index:1;right:8%;top:9%;width:62px;height:62px;}
.login-sun:before{content:'';position:absolute;width:29px;height:29px;left:16px;top:16px;border-radius:50%;background:var(--gold-600);box-shadow:0 0 0 10px rgba(var(--theme-accent-rgb,201,162,39),.22);}
.login-sun i,.login-sun i:before{position:absolute;inset:0;display:block;background:repeating-conic-gradient(from 0deg,rgba(var(--theme-accent-rgb,201,162,39),.62) 0 2deg,transparent 2deg 45deg);clip-path:polygon(48% 0,52% 0,52% 13%,48% 13%,48% 0,100% 0,100% 100%,0 100%,0 0);content:'';}

/* ============ 后台壳（深色侧栏） ============ */
.shell{display:flex;min-height:100vh;}
.side{width:var(--sidebar-w);flex-shrink:0;background:var(--navy-900);color:#C7D5CF;position:relative;overflow:hidden;padding-bottom:155px;}
.side-brand{display:flex;align-items:center;gap:10px;padding:18px 20px;color:#fff;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:10px;}
.side-brand .logo{width:38px;height:38px;border-radius:6px;display:block;object-fit:contain;background:#fff;}
.side-item{display:flex;align-items:center;gap:10px;padding:12px 20px;font-size:16px;cursor:pointer;color:#C7D5CF;border-left:3px solid transparent;}
.side-item:hover{background:rgba(var(--theme-primary-rgb,27,110,71),.28);color:#fff;}
.side-item.on{background:rgba(var(--theme-primary-rgb,27,110,71),.45);color:#fff;border-left-color:var(--gold-600);}
.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{height:56px;background:#fff;border-bottom:1px solid var(--bd-light);display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0;}
.topbar .bc{font-size:16px;color:var(--t-sub);} .topbar .bc b{color:var(--t-title);font-weight:600;}
.acct-tag{font-size:15px;background:var(--blue-050);color:var(--navy-600);font-weight:700;padding:4px 12px;border-radius:12px;cursor:pointer;}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--blue-050);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.avatar img{width:20px;height:20px;object-fit:contain;}
.body{padding:20px 24px;flex:1;}

.pastoral-scene{position:absolute;z-index:1;left:0;bottom:0;width:100%;height:150px;pointer-events:none;overflow:visible;}
.pastoral-hill-back{fill:color-mix(in srgb,var(--navy-700) 82%,white)}.pastoral-hill-front{fill:color-mix(in srgb,var(--navy-600) 78%,white)}
.pastoral-tree rect,.pastoral-house{fill:color-mix(in srgb,var(--navy-600) 48%,white)}.pastoral-tree circle{fill:color-mix(in srgb,var(--navy-700) 66%,white);opacity:.9}.pastoral-tree circle:nth-of-type(2){fill:color-mix(in srgb,var(--navy-600) 56%,white)}
.pastoral-roof{fill:color-mix(in srgb,var(--navy-600) 36%,white)}.pastoral-window,.pastoral-flower-core{fill:var(--gold-600)}.pastoral-smoke{fill:color-mix(in srgb,var(--navy-600) 42%,white)}
.pastoral-sun>circle{fill:var(--gold-600)}.pastoral-sun path{fill:none;stroke:color-mix(in srgb,var(--gold-600) 72%,var(--navy-900));stroke-width:3}
.pastoral-grass,.pastoral-leaves{fill:color-mix(in srgb,var(--navy-700) 62%,white)}.pastoral-flowers{fill:color-mix(in srgb,var(--blue-050) 70%,white);stroke:color-mix(in srgb,var(--navy-600) 38%,white);stroke-width:2}.pastoral-stones{fill:color-mix(in srgb,var(--navy-600) 28%,white);opacity:.85}
.pastoral-login{height:150px;z-index:1}.pastoral-login .pastoral-sun{display:none}
.pastoral-side{height:150px}

@media(max-width:850px){.login-root{padding:50px 24px 145px}.login-brand{display:none}.login-card{width:380px}.login-sun{right:7%;top:5%}}

/* 概况 */
.toolbar{background:#fff;border-radius:8px;box-shadow:var(--shadow-card);padding:14px 18px;margin-bottom:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px;}
.stat{background:#fff;border-radius:8px;box-shadow:var(--shadow-card);padding:16px 18px;}
.stat .lb{font-size:15px;color:var(--t-sub);margin-bottom:8px;}
.stat .vl{font-size:26px;font-weight:700;}
.stat .sub{font-size:14px;color:var(--t-weak);margin-top:4px;}
.panel{background:#fff;border-radius:8px;box-shadow:var(--shadow-card);padding:20px;}
.panel-t{font-size:18px;font-weight:700;color:var(--t-title);margin-bottom:14px;}
.scope-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(115deg,var(--navy-900),var(--navy-600));color:#fff;border-radius:8px;padding:16px 20px;margin-bottom:14px;box-shadow:var(--shadow-card)}
.scope-banner>div{display:flex;align-items:center;gap:12px}.scope-banner strong{font-size:19px}.scope-banner>span{font-size:14px;color:#d8e2ef}.scope-label{font-size:14px;color:#d8e2ef;border:1px solid rgba(255,255,255,.24);border-radius:12px;padding:2px 9px}
.learning-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.course-scope-panel{padding-bottom:12px}.course-scope-table{min-width:1080px}.course-scope-table td{vertical-align:middle}.error-text{color:var(--error)!important;font-weight:700}
.learning-empty,.learning-error{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--t-sub);gap:8px;padding:32px 20px}.learning-empty.compact,.learning-error.compact{min-height:190px}.learning-empty b,.learning-error b{font-size:17px;color:var(--t-title)}.learning-empty span,.learning-error span{font-size:14px;color:var(--t-weak);max-width:420px}.learning-empty-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--blue-050);color:var(--navy-600);font-weight:700;font-size:20px}.learning-error .learning-empty-icon{background:var(--error-bg);color:var(--error)}.learning-error .btn{margin-top:8px}
.citybar{display:flex;align-items:center;gap:12px;padding:8px 0;}
.citybar .nm{width:56px;font-size:16px;color:var(--t-body);flex-shrink:0;}
.citybar .track{flex:1;height:16px;background:var(--bg-grey);border-radius:4px;overflow:hidden;}
.citybar .fill{height:100%;}
.citybar .val{width:120px;font-size:15px;color:var(--t-sub);text-align:right;flex-shrink:0;}
.subj-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;}
.subj{background:var(--bg-head);border-radius:8px;padding:14px 16px;}

/* 抽查 */
.sample{display:flex;align-items:center;gap:12px;padding:12px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent;margin-bottom:6px;}
.sample:hover{background:var(--bg-page);}
.sample.on{background:var(--blue-050);border-color:var(--navy-600);}
.sample .av{width:36px;height:36px;border-radius:50%;background:var(--blue-050);overflow:hidden;flex-shrink:0;}
.sample .av img{width:100%;height:100%;display:block;object-fit:cover;}
.sample-toolbar .sel{max-width:230px}.sample-workspace{display:grid;grid-template-columns:minmax(330px,.8fr) minmax(620px,1.4fr);gap:16px;align-items:start}.sample-list-panel,.sample-detail-panel{min-width:0}.sample-detail-panel{min-height:560px}.sample-initial{display:flex;align-items:center;justify-content:center;color:var(--navy-600);font-weight:700}.sample-main{flex:1;min-width:0}.sample-title{font-size:16px;font-weight:600;color:var(--t-title);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sample-title span{font-weight:400;color:var(--t-weak);font-size:13px;margin-left:6px}.sample-course{font-size:14px;color:var(--t-sub);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sample-progress{height:4px;background:var(--bg-grey);border-radius:2px;overflow:hidden;margin-top:7px}.sample-progress i{display:block;height:100%;background:var(--navy-600)}.sample-status{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.sample-status small{font-size:13px;color:var(--t-weak)}.sample-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.sample-detail-head h3{font-size:19px;color:var(--t-title);margin:0}.sample-detail-head p{font-size:14px;color:var(--t-sub);margin:4px 0 0}.sample-section-title{font-size:16px;font-weight:700;color:var(--t-title);margin:14px 0 10px}
.face-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
.face{aspect-ratio:3/4;border-radius:6px;background:var(--navy-700);position:relative;overflow:hidden;}
.face .mk{position:absolute;top:4px;right:4px;width:16px;height:16px;border-radius:50%;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:700;}
.capture-grid{grid-template-columns:repeat(6,minmax(110px,1fr));gap:8px;overflow-x:auto;padding-bottom:4px}.capture-card{min-width:0}.capture-card .face{aspect-ratio:16/10;background:#edf2f7}.capture-card .face img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.capture-zoom-trigger{cursor:zoom-in}.capture-zoom-trigger:hover img{transform:scale(1.03)}.capture-zoom-trigger:focus-visible{outline:3px solid rgba(var(--theme-primary-rgb,27,110,71),.35);outline-offset:2px}.capture-zoom-trigger img{transition:transform .18s ease}.face-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--t-weak);font-size:13px;background:var(--bg-head)}.face-abnormal{border:2px solid var(--error)}.face .mk.green{background:var(--success)}.face .mk.red{background:var(--error)}.face .mk.gold{background:var(--gold-600)}.face .mk.blue{background:var(--navy-600)}.capture-card time{display:block;font-size:12px;color:var(--t-weak);margin:5px 0 3px}.capture-card>.badge{font-size:12px;padding:2px 7px}.capture-card small{display:block;font-size:12px;color:var(--t-sub);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capture-empty{height:120px;border:1px dashed var(--bd);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--t-weak);font-size:15px}.capture-notice{font-size:14px;border-radius:6px;padding:9px 12px;margin:14px 0 16px;line-height:1.7}.capture-notice.neutral{background:var(--bg-head);color:var(--t-sub)}.capture-notice.success{background:var(--success-bg);color:var(--success)}.capture-notice.warning{background:var(--gold-bg);color:var(--gold-text);border:1px solid #eadcad}.capture-notice.danger{background:var(--error-bg);color:var(--error);border:1px solid var(--error-bd)}.capture-preview-modal{position:relative;width:min(1040px,94vw);padding:16px;background:#101814}.capture-preview-image{display:block;max-width:100%;width:auto;max-height:76vh;margin:0 auto;border-radius:6px;object-fit:contain}.capture-preview-close{position:absolute;z-index:2;right:20px;top:20px;width:38px;height:38px;border:0;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font-size:29px;line-height:34px;cursor:pointer}.capture-preview-caption{display:flex;justify-content:space-between;gap:20px;margin-top:12px;color:#fff;font-size:15px}.capture-preview-caption span{color:#cbd8d1}.study-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--bd-light);border-radius:8px;overflow:hidden}.study-summary-grid>div{padding:12px;border-right:1px solid var(--bd-light);border-bottom:1px solid var(--bd-light);min-width:0}.study-summary-grid>div:nth-child(3n){border-right:0}.study-summary-grid>div:nth-last-child(-n+3){border-bottom:0}.study-summary-grid span{display:block;color:var(--t-weak);font-size:13px;margin-bottom:4px}.study-summary-grid b{font-size:15px;color:var(--t-title);font-weight:600}.study-summary-grid em{font-style:normal}

/* 用户与角色管理 */
.admin-table-wrap{padding:6px 20px 18px;overflow-x:auto;}
.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--bd-light);}
.panel-heading>div{display:flex;align-items:baseline;gap:12px}.panel-heading b{font-size:18px;color:var(--t-title)}.panel-heading span,.toolbar-sub{font-size:14px;color:var(--t-sub)}
.admin-table{min-width:1050px}.admin-table td{vertical-align:middle}.cell-sub{font-size:14px;color:var(--t-sub);margin-top:3px}.cell-warn{font-size:13px;color:var(--error);margin-top:3px}
.admin-actions{white-space:nowrap}.admin-actions .link{margin-right:12px}.link.danger{color:var(--error)}
.admin-empty{text-align:center;padding:64px 20px}.admin-empty-icon{width:48px;height:48px;border-radius:50%;background:var(--error-bg);color:var(--error);font-size:30px;font-weight:700;margin:0 auto 12px}.admin-empty h3{margin:0;color:var(--t-title)}.admin-empty p{color:var(--t-sub)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid label{display:flex;flex-direction:column;gap:5px}.form-grid label>span,.form-label{font-size:15px;color:var(--t-sub)}.form-grid .wide{grid-column:1/-1}.form-grid .field{width:100%}
.form-label{margin:18px 0 8px;font-weight:600}.form-msg{min-height:18px;margin-top:10px;color:var(--error);font-size:15px}.modal-note{font-size:15px;color:var(--t-sub);line-height:1.7;background:var(--bg-head);border-radius:6px;padding:10px 12px}.modal:has(.form-grid){width:720px}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.permission-grid label{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;border:1px solid var(--bd-light);border-radius:6px;padding:9px 10px}.permission-grid small{grid-column:2;color:var(--t-weak);font-size:12px}
.role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.role-card{background:#fff;border-radius:8px;box-shadow:var(--shadow-card);padding:20px;display:flex;flex-direction:column;min-height:260px}.role-card-head{display:flex;justify-content:space-between;gap:12px}.role-card h3{font-size:19px;color:var(--t-title);margin:0 0 4px}.role-card code{font-size:13px;color:var(--t-sub)}.role-meta{display:flex;gap:14px;flex-wrap:wrap;background:var(--bg-head);border-radius:6px;padding:9px 10px;margin:14px 0;font-size:14px}.role-card p{font-size:15px;color:var(--t-sub);margin:0 0 12px}.role-permissions{display:flex;gap:6px;flex-wrap:wrap}.role-permissions span{font-size:13px;background:var(--blue-050);color:var(--navy-600);padding:3px 8px;border-radius:10px}.role-actions{display:flex;gap:8px;margin-top:auto;padding-top:18px}
@media(max-width:1250px){.sample-workspace{grid-template-columns:1fr}.sample-detail-panel{min-height:0}}
@media(max-width:1100px){.role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-grid,.learning-stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){:root{--sidebar-w:170px}.body{padding:14px}.role-grid{grid-template-columns:1fr}.form-grid,.permission-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.acct-tag{display:none}.scope-banner{align-items:flex-start;flex-direction:column}.learning-stat-grid{grid-template-columns:1fr}.study-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.study-summary-grid>div{border-right:1px solid var(--bd-light)!important;border-bottom:1px solid var(--bd-light)!important}.study-summary-grid>div:nth-child(2n){border-right:0!important}.study-summary-grid>div:nth-last-child(-n+2){border-bottom:0!important}.sample-detail-head{flex-direction:column}.sample-toolbar .field,.sample-toolbar .sel{width:100%!important;max-width:none}.capture-preview-caption{align-items:flex-start;flex-direction:column;gap:4px}}

/* 参考管理后台的用户/角色列表布局 */
.management-head{background:#fff;border-radius:14px;box-shadow:var(--shadow-card);padding:22px 26px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.management-head h2{margin:0;color:var(--navy-900);font-size:26px;line-height:1.25}.management-head p{margin:6px 0 0;color:var(--t-weak);font-size:17px}
.management-add{height:48px;padding:0 24px;border-radius:10px;box-shadow:0 7px 16px rgba(15,64,40,.18);font-size:17px}
.management-table{background:#fff;border-radius:14px;box-shadow:var(--shadow-card);padding:12px 24px 18px;min-height:326px}.management-meta{display:flex;justify-content:space-between;padding:5px 0 10px;color:var(--t-sub);font-size:15px}.management-meta>span{color:var(--t-weak)}
.table-scroll{overflow-x:auto}.reference-table{min-width:1000px}.reference-table thead{background:#f2f5f9}.reference-table th{height:68px;padding:0 22px;color:var(--navy-900);font-size:17px;border-bottom:1px solid #e2e8f0}.reference-table td{height:66px;padding:12px 22px}.reference-table tbody tr:hover{background:#fafbfd}
.table-empty{height:215px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--t-weak);font-size:16px}.empty-icon{position:relative;width:58px;height:34px;border:1px solid #d8dde5;border-radius:4px;margin-bottom:16px;background:#fff;box-shadow:0 8px 0 -5px #f1f3f6}.empty-icon:before{content:'';position:absolute;left:12px;right:12px;top:-9px;height:15px;border:1px solid #d8dde5;border-bottom:0;border-radius:5px 5px 0 0;background:#fff}
.login-fail{display:block;color:var(--error);font-size:13px;margin-top:3px}.permission-code{color:var(--navy-600);background:var(--blue-050);padding:4px 8px;border-radius:4px;font-size:14px}
@media(max-width:760px){.management-head{align-items:flex-start;padding:18px;flex-direction:column}.management-add{width:100%}.management-table{padding:10px 12px}.management-head h2{font-size:22px}}

/* ============ 监管首页 · 数据驾驶舱 ============ */
.body:has(.command-screen){padding:12px;background:#06152d;overflow:auto}
.command-screen{position:relative;isolation:isolate;min-width:1120px;min-height:calc(100vh - 80px);overflow:hidden;color:#d8f7ff;background:radial-gradient(circle at 50% 32%,rgba(13,87,142,.28),transparent 38%),linear-gradient(145deg,#071F15 0%,#082A1B 52%,#061B12 100%);border:1px solid rgba(38,189,255,.28);box-shadow:inset 0 0 60px rgba(0,106,184,.12);font-variant-numeric:tabular-nums}
.screen-grid-glow{position:absolute;inset:0;z-index:-1;opacity:.25;background-image:linear-gradient(rgba(40,151,219,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(40,151,219,.12) 1px,transparent 1px);background-size:40px 40px;mask-image:linear-gradient(to bottom,black,transparent 85%)}
.screen-head{height:76px;display:grid;grid-template-columns:1fr minmax(420px,1.4fr) 1fr;align-items:center;padding:0 20px;border-bottom:1px solid rgba(61,191,255,.22);background:linear-gradient(90deg,rgba(4,18,42,.25),rgba(10,58,99,.35),rgba(4,18,42,.25));position:relative}
.screen-head:after{content:'';position:absolute;left:31%;right:31%;bottom:-2px;height:3px;background:linear-gradient(90deg,transparent,#35D9A1 18%,#82f7ff 50%,#35D9A1 82%,transparent);filter:drop-shadow(0 0 7px #00cfff)}
.screen-brand{display:flex;align-items:center;gap:10px;color:#9edff1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.screen-brand-mark{width:11px;height:11px;border:2px solid #23d9ff;transform:rotate(45deg);box-shadow:0 0 9px #00d8ff;flex-shrink:0}
.screen-title{display:flex;align-items:center;justify-content:center;gap:20px;text-align:center}.screen-title>i{width:72px;height:1px;background:linear-gradient(90deg,transparent,#00d9ff)}.screen-title>i:last-child{transform:rotate(180deg)}.screen-title div{display:flex;flex-direction:column}.screen-title small{font-size:9px;letter-spacing:3px;color:#4fa9c5}.screen-title strong{font-size:26px;line-height:1.35;letter-spacing:5px;color:#effdff;text-shadow:0 0 14px rgba(0,217,255,.55)}
.screen-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;color:#74cde2;font-size:11px;white-space:nowrap}.screen-actions button{height:28px;border:1px solid rgba(57,197,255,.45);border-radius:2px;background:rgba(11,72,116,.42);color:#a9edff;padding:0 12px}.screen-actions button:hover{background:rgba(0,189,241,.22);border-color:#42ddff}.screen-actions #overviewRefresh{width:30px;padding:0;font-size:18px}
.screen-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;padding:12px 14px 4px}.screen-kpi{position:relative;overflow:hidden;min-width:0;height:72px;padding:10px 14px;background:linear-gradient(135deg,rgba(13,55,96,.8),rgba(5,30,61,.65));border:1px solid rgba(49,163,220,.25);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%)}.screen-kpi:before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:2px;background:#36F2C0;box-shadow:0 0 8px #36F2C0}.screen-kpi span{display:block;color:#70b6c9;font-size:11px;letter-spacing:1px}.screen-kpi b{display:block;margin-top:1px;color:#f1fdff;font-size:24px;line-height:1.3;text-shadow:0 0 10px rgba(26,211,255,.32);white-space:nowrap}.screen-kpi b em{font-size:10px;font-style:normal;font-weight:400;color:#73b8ca;margin-left:5px}.screen-kpi>i{position:absolute;right:-8px;bottom:-14px;width:48px;height:48px;border:1px solid rgba(0,221,255,.14);transform:rotate(45deg)}.screen-kpi.progress:before,.screen-kpi.certificate:before{background:#24e1a3;box-shadow:0 0 8px #24e1a3}
.screen-layout{display:grid;grid-template-columns:minmax(250px,.82fr) minmax(500px,1.75fr) minmax(260px,.88fr);gap:10px;padding:8px 14px 10px}.screen-column{display:flex;flex-direction:column;gap:10px;min-width:0}.screen-panel{position:relative;background:linear-gradient(145deg,rgba(8,37,75,.86),rgba(4,25,55,.72));border:1px solid rgba(42,155,215,.28);box-shadow:inset 0 0 24px rgba(0,104,166,.07);padding:12px}.screen-panel:before,.screen-panel:after{content:'';position:absolute;width:12px;height:12px;border-color:#35D9A1;pointer-events:none}.screen-panel:before{left:-1px;top:-1px;border-left:2px solid #35D9A1;border-top:2px solid #35D9A1}.screen-panel:after{right:-1px;bottom:-1px;border-right:2px solid #35D9A1;border-bottom:2px solid #35D9A1}.screen-panel-title{height:28px;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid rgba(52,144,190,.22);margin-bottom:10px}.screen-panel-title>span{font-size:14px;font-weight:700;color:#e1fbff;letter-spacing:1px}.screen-panel-title>span:before{content:'';display:inline-block;width:3px;height:13px;background:#36F2C0;margin-right:7px;vertical-align:-2px;box-shadow:0 0 7px #36F2C0}.screen-panel-title small{font-size:9px;color:#397e9f;letter-spacing:1px}.screen-panel-title small.alerting{color:#ff8b8b}
.compact-panel{height:210px}.metric-matrix{display:grid;grid-template-columns:1fr 1fr;gap:8px}.metric-matrix>div{height:68px;padding:8px 10px;border:1px solid rgba(45,141,191,.2);background:linear-gradient(135deg,rgba(13,65,105,.46),rgba(6,31,64,.15));position:relative}.metric-matrix>div:after{content:'';position:absolute;right:5px;top:5px;width:4px;height:4px;background:#36F2C0;box-shadow:0 0 6px #36F2C0}.metric-matrix span,.metric-matrix small{display:block;color:#609db2;font-size:9px}.metric-matrix b{display:block;color:#65efff;font-size:20px;line-height:1.25}.metric-matrix .danger b,.metric-matrix .danger small{color:#ff7272}.metric-matrix .danger:after{background:#ff5964;box-shadow:0 0 6px #ff5964}
.completion-panel{height:215px}.completion-content{display:flex;align-items:center;justify-content:center;gap:20px;padding-top:3px}.progress-orbit{width:122px;height:122px;border-radius:50%;padding:9px;background:conic-gradient(#00e4ff var(--progress),rgba(38,111,145,.28) 0);box-shadow:0 0 20px rgba(0,215,255,.14);position:relative}.progress-orbit:after{content:'';position:absolute;inset:3px;border:1px solid rgba(67,225,255,.4);border-radius:50%}.progress-orbit>div{width:100%;height:100%;border-radius:50%;background:#082A1B;display:flex;flex-direction:column;align-items:center;justify-content:center}.progress-orbit b{color:#f2fdff;font-size:22px}.progress-orbit span{color:#5aa6bc;font-size:9px}.completion-list{flex:1;max-width:115px}.completion-list>div{display:flex;align-items:center;justify-content:space-between;border-bottom:1px dashed rgba(67,141,178,.25);padding:8px 0}.completion-list span{color:#69a8ba;font-size:10px}.completion-list b{color:#c9f8ff;font-size:14px}
.subject-panel{height:217px}.subject-viz{display:flex;align-items:center;gap:15px;padding-top:4px}.subject-donut{width:112px;height:112px;border-radius:50%;padding:14px;flex-shrink:0;filter:drop-shadow(0 0 8px rgba(0,200,255,.2))}.subject-donut>div{width:100%;height:100%;border-radius:50%;background:#082A1B;display:flex;flex-direction:column;align-items:center;justify-content:center}.subject-donut b{font-size:24px;color:#ecfcff}.subject-donut span{font-size:9px;color:#5d9bad}.subject-legend{flex:1;min-width:0}.subject-legend>div{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:6px;height:22px;color:#7eb4c3;font-size:9px}.subject-legend i{width:6px;height:6px}.subject-legend span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subject-legend b{color:#E0F8EC;font-size:10px}
.trend-panel{height:354px}.trend-chart{display:flex;height:288px}.trend-axis{width:34px;display:flex;flex-direction:column;justify-content:space-between;padding:10px 4px 39px 0;text-align:right;color:#407b98;font-size:9px}.trend-plot{position:relative;flex:1;min-width:0}.trend-grid{position:absolute;inset:10px 0 38px;background:repeating-linear-gradient(to bottom,rgba(61,133,169,.18) 0,rgba(61,133,169,.18) 1px,transparent 1px,transparent 33.333%)}.trend-plot svg{position:absolute;inset:0 0 30px;width:100%;height:calc(100% - 30px);overflow:visible}.trend-labels{position:absolute;left:0;right:0;bottom:0;height:32px;display:flex;align-items:flex-start;justify-content:space-around;gap:5px}.trend-labels span{width:12%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;color:#5791a7;font-size:9px}.screen-empty{color:#417c96;font-size:11px;text-align:center;padding:16px}.screen-empty.centered{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.course-rank-panel{height:298px}.course-rank-list{display:flex;flex-direction:column;gap:7px;position:relative;min-height:220px}.course-rank-row{height:25px;display:grid;grid-template-columns:24px minmax(90px,1.15fr) minmax(90px,1.4fr) 58px 48px;gap:7px;align-items:center;font-size:9px}.rank-no{color:#36F2C0;font-family:monospace}.rank-name{color:#b7e7f0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-track{height:7px;background:rgba(42,103,137,.24);overflow:hidden}.rank-track i{display:block;height:100%;background:linear-gradient(90deg,#23855B,#36F2C0);box-shadow:0 0 8px rgba(0,224,255,.45)}.course-rank-row>b{color:#E0F8EC;font-size:9px;text-align:right}.course-rank-row>em{font-style:normal;color:#ff7979;text-align:right}.course-rank-row>em.normal{color:#35d9a1}
.alert-panel{height:270px}.alert-list{height:205px;overflow:auto;padding-right:3px}.alert-list::-webkit-scrollbar{width:3px}.alert-list::-webkit-scrollbar-thumb{background:#1b789d}.alert-item{display:grid;grid-template-columns:7px minmax(0,1fr) auto;gap:8px;align-items:start;padding:9px 4px;border-bottom:1px solid rgba(54,130,169,.18)}.alert-item>i{width:6px;height:6px;border-radius:50%;background:#ff5864;box-shadow:0 0 7px #ff5864;margin-top:5px}.alert-item div{min-width:0}.alert-item b,.alert-item span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-item b{color:#d9f6fa;font-size:10px}.alert-item span{color:#5f9fb2;font-size:9px;margin-top:2px}.alert-item em{font-style:normal;color:#ff7c83;border:1px solid rgba(255,83,94,.35);padding:1px 4px;font-size:8px}.safe-state{height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center}.safe-state>span{width:56px;height:56px;border-radius:50%;border:1px solid #22d79e;color:#41ebb7;display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:0 0 22px rgba(34,215,158,.17)}.safe-state b{color:#9fead5;font-size:12px;margin-top:10px}.safe-state small{color:#497f82;font-size:9px;margin-top:3px}
.status-panel{height:164px}.status-bar{display:grid;grid-template-columns:42px 1fr 20px;align-items:center;gap:8px;height:30px;font-size:9px;color:#6eabbc}.status-bar>div{height:7px;background:rgba(42,103,137,.25)}.status-bar i{display:block;height:100%;box-shadow:0 0 7px currentColor}.status-bar b{color:#cbeff5;text-align:right}
.face-panel{height:226px}.face-summary{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px;padding-top:5px}.face-radar{width:104px;height:104px;border:1px solid rgba(0,225,255,.4);border-radius:50%;position:relative;background:repeating-radial-gradient(circle,transparent 0 17px,rgba(0,213,255,.12) 18px 18px)}.face-radar:before,.face-radar:after{content:'';position:absolute;background:rgba(0,216,255,.16)}.face-radar:before{left:50%;top:0;bottom:0;width:1px}.face-radar:after{top:50%;left:0;right:0;height:1px}.face-radar span{position:absolute;inset:10px;border-radius:50%;background:conic-gradient(from 0deg,rgba(0,234,255,.42),transparent 28%);animation:radarSpin 4s linear infinite}.face-radar i{position:absolute;left:67%;top:27%;width:5px;height:5px;border-radius:50%;background:#36f2c0;box-shadow:0 0 8px #36f2c0}.face-radar b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#63e8f5;font-size:14px}.face-summary p{display:flex;align-items:center;justify-content:space-between;margin:0;padding:7px 0;border-bottom:1px dashed rgba(57,132,169,.22)}.face-summary p span{font-size:9px;color:#629eb0}.face-summary p b{font-size:13px;color:#DDF6E9}.face-summary p b.red{color:#ff6b73}
.screen-foot{height:28px;margin:0 14px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(46,140,187,.2);font-size:9px;color:#396f88}.screen-foot i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#35e9b4;box-shadow:0 0 6px #35e9b4;margin-right:5px}
.ledger-modal{width:min(1000px,92vw)!important;background:#fff}.ledger-modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:15px}.ledger-modal-head h3{margin:0}.ledger-modal-head p{margin:3px 0 0;color:var(--t-sub);font-size:12px}.ledger-close{border:0;background:transparent;color:var(--t-sub);font-size:25px;line-height:1}.ledger-modal .course-scope-table{min-width:760px}
@keyframes radarSpin{to{transform:rotate(360deg)}}
@media(max-width:1400px){.screen-title strong{font-size:21px}.screen-title small{display:none}.screen-kpi b{font-size:20px}.screen-layout{grid-template-columns:minmax(240px,.8fr) minmax(470px,1.55fr) minmax(250px,.82fr)}}

/* 驾驶舱紧凑模式：常规窗口一屏展示，并支持驾驶舱独立全屏 */
.body:has(.command-screen){padding:8px;overflow:hidden}
.command-screen{height:calc(100vh - 72px);min-height:720px}
.command-screen:fullscreen{width:100vw;height:100vh;min-height:0;border:0;padding-top:1px;background:radial-gradient(circle at 50% 32%,rgba(13,87,142,.28),transparent 38%),linear-gradient(145deg,#071F15 0%,#082A1B 52%,#061B12 100%)}
.screen-head{height:58px;grid-template-columns:1fr minmax(500px,1.4fr) 1fr;padding:0 16px}
.screen-title strong{font-size:24px;line-height:1.2;white-space:nowrap}
.screen-actions{gap:7px;font-size:10px}.screen-actions button{height:26px;padding:0 9px}.screen-actions button span{font-size:13px;margin-right:2px}.screen-actions #overviewRefresh{width:28px;font-size:17px}
.screen-kpis{gap:8px;padding:8px 10px 3px}.screen-kpi{height:58px;padding:6px 12px}.screen-kpi:before{top:8px;bottom:8px}.screen-kpi span{font-size:9px}.screen-kpi b{font-size:21px;line-height:1.25}.screen-kpi b em{font-size:9px}
.screen-layout{gap:8px;padding:6px 10px}.screen-column{gap:8px}.screen-panel{padding:9px}.screen-panel-title{height:24px;margin-bottom:7px}.screen-panel-title>span{font-size:12px}.screen-panel-title>span:before{height:12px;margin-right:6px}.screen-panel-title small{font-size:8px}
.compact-panel{height:174px}.metric-matrix{gap:6px}.metric-matrix>div{height:57px;padding:5px 8px}.metric-matrix span,.metric-matrix small{font-size:8px}.metric-matrix b{font-size:17px;line-height:1.2}
.completion-panel{height:181px}.completion-content{gap:14px;padding-top:0}.progress-orbit{width:100px;height:100px;padding:7px}.progress-orbit b{font-size:18px}.completion-list>div{padding:5px 0}.completion-list span{font-size:9px}.completion-list b{font-size:12px}
.subject-panel{height:181px}.subject-viz{gap:11px;padding-top:0}.subject-donut{width:90px;height:90px;padding:11px}.subject-donut b{font-size:19px}.subject-legend>div{height:18px;font-size:8px}
.trend-panel{height:293px}.trend-chart{height:237px}.trend-axis{padding-bottom:34px}.trend-labels{height:27px}.trend-plot svg{bottom:26px;height:calc(100% - 26px)}.trend-grid{bottom:33px}
.course-rank-panel{height:251px}.course-rank-list{gap:3px;min-height:190px}.course-rank-row{height:21px}
.alert-panel{height:220px}.alert-list{height:163px}.alert-item{padding:6px 4px}.safe-state{height:150px}.safe-state>span{width:46px;height:46px;font-size:20px}
.status-panel{height:139px}.status-bar{height:24px}
.face-panel{height:177px}.face-summary{grid-template-columns:86px 1fr;padding-top:0}.face-radar{width:78px;height:78px;background:repeating-radial-gradient(circle,transparent 0 12px,rgba(0,213,255,.12) 13px 13px)}.face-summary p{padding:4px 0}.face-summary p b{font-size:11px}
.screen-foot{height:20px;margin:0 10px}
@media(max-height:800px){.command-screen{min-height:680px}.screen-title small{display:none}.screen-head{height:52px}.screen-kpis{padding-top:5px}.screen-kpi{height:52px}.screen-kpi b{font-size:19px}.compact-panel{height:161px}.completion-panel,.subject-panel{height:167px}.progress-orbit{width:88px;height:88px}.subject-donut{width:82px;height:82px}.trend-panel{height:270px}.trend-chart{height:215px}.course-rank-panel{height:233px}.alert-panel{height:202px}.alert-list{height:145px}.status-panel{height:128px}.face-panel{height:163px}}

/* ============ 监管首页 · 工作台 ============ */
.home-hero{min-height:138px;border-radius:12px;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:30px;color:#fff;background:linear-gradient(112deg,var(--navy-900) 0%,var(--navy-700) 68%,var(--navy-600) 100%);box-shadow:0 8px 24px rgba(var(--theme-darker-rgb,15,64,40),.14);position:relative;overflow:hidden;margin-bottom:14px}
.home-hero:before{content:'';position:absolute;width:330px;height:330px;border:1px solid rgba(255,255,255,.08);border-radius:50%;right:180px;top:-210px;box-shadow:0 0 0 54px rgba(255,255,255,.025),0 0 0 108px rgba(255,255,255,.018)}
.home-hero-copy,.home-hero-action{position:relative;z-index:1}.home-eyebrow{display:block;color:#8fc6e9;font-size:11px;letter-spacing:2.5px;margin-bottom:2px}.home-hero h1{font-size:27px;line-height:1.25;margin:0;font-weight:700;letter-spacing:1px}.home-hero p{margin:3px 0;color:#d8e8f5;font-size:15px}.home-hero-copy small{color:#99bad2;font-size:13px}.home-hero-action{display:flex;align-items:center;gap:20px}.home-hero-action .btn{background:#fff;color:var(--navy-700);height:38px;padding:0 17px}.home-hero-action .btn:hover{background:#edf6fb}.home-hero-action .btn b{font-size:19px}.home-hero-ring{width:78px;height:78px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(7,31,60,.38);border:5px solid rgba(52,220,238,.68);box-shadow:0 0 0 1px rgba(255,255,255,.16)}.home-hero-ring span{font-size:19px;font-weight:700}.home-hero-ring small{font-size:10px;color:#a8cada}
.home-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.home-stat-card{height:96px;background:#fff;border:1px solid #edf0f4;border-radius:10px;box-shadow:0 3px 12px rgba(15,64,40,.055);padding:14px 18px;display:flex;align-items:center;gap:13px}.home-stat-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#E8F6F0;color:var(--navy-600);font-size:17px;font-weight:700;flex-shrink:0}.home-stat-icon.blue{background:#E8F6F0;color:#287B58}.home-stat-icon.green{background:var(--success-bg);color:var(--success)}.home-stat-icon.red{background:var(--error-bg);color:var(--error)}.home-stat-card>div{min-width:0}.home-stat-card small{display:inline-block;color:var(--t-sub);font-size:13px}.home-stat-card b{display:block;color:var(--navy-900);font-size:25px;line-height:1.2}.home-stat-card p{margin:1px 0 0;color:var(--t-weak);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-main-grid{display:grid;grid-template-columns:minmax(560px,1.65fr) minmax(320px,.85fr);gap:14px;margin-bottom:14px}.home-panel{height:260px;background:#fff;border:1px solid #edf0f4;border-radius:10px;box-shadow:0 3px 12px rgba(15,64,40,.05);padding:17px 20px}.home-panel-head{height:39px;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--bd-light);margin-bottom:7px}.home-panel-head h2,.home-section-title h2{font-size:16px;color:var(--navy-900);line-height:1.2;margin:0}.home-panel-head p,.home-section-title p{font-size:11px;color:var(--t-weak);margin:3px 0 0}.home-text-btn{border:0;background:transparent;color:var(--navy-600);font-size:12px;padding:3px 0}.home-live-dot{font-size:11px;color:var(--success);display:flex;align-items:center;gap:5px}.home-live-dot:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-bg)}
.home-course-list{display:flex;flex-direction:column}.home-course-row{height:38px;display:grid;grid-template-columns:minmax(170px,1.4fr) minmax(100px,1fr) 48px 52px;align-items:center;gap:12px;border-bottom:1px solid #f1f3f6}.home-course-name{min-width:0}.home-course-name b,.home-course-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-course-name b{font-size:12px;color:var(--t-title)}.home-course-name span{font-size:10px;color:var(--t-weak)}.home-course-progress{height:5px;border-radius:3px;background:var(--bg-grey);overflow:hidden}.home-course-progress i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--navy-700),var(--navy-600))}.home-course-row>strong{font-size:11px;color:var(--t-body);text-align:right}.home-course-row>em{font-size:10px;color:var(--error);font-style:normal;text-align:right}.home-course-row>.badge{font-size:10px;padding:2px 6px;text-align:center}.home-empty{height:180px;display:flex;align-items:center;justify-content:center;color:var(--t-weak);font-size:13px}
.home-todo-list{display:flex;flex-direction:column}.home-todo-list button{height:58px;display:grid;grid-template-columns:35px 1fr auto;align-items:center;gap:10px;border:0;border-bottom:1px solid #f0f2f5;background:#fff;text-align:left;padding:0 4px}.home-todo-list button:hover{background:#fafbfd}.home-todo-mark{width:30px;height:30px;border-radius:8px;background:#edf2f7;color:var(--t-sub);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}.home-todo-mark.blue{background:#E8F6F0;color:#287B58}.home-todo-mark.gold{background:var(--gold-bg);color:var(--gold-text)}.home-todo-list button.urgent .home-todo-mark{background:var(--error-bg);color:var(--error)}.home-todo-list button div{min-width:0}.home-todo-list b,.home-todo-list small{display:block}.home-todo-list b{font-size:12px;color:var(--t-title)}.home-todo-list small{font-size:10px;color:var(--t-weak);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-todo-list em{font-style:normal;font-size:14px;color:var(--navy-600);font-weight:700}.home-todo-list button.urgent em{color:var(--error)}
.home-services{background:#fff;border:1px solid #edf0f4;border-radius:10px;box-shadow:0 3px 12px rgba(15,64,40,.05);padding:14px 20px 16px}.home-section-title{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}.home-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.home-service-grid button{height:74px;border:1px solid #e8ecf1;border-radius:8px;background:#fafbfd;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;padding:10px 13px;text-align:left}.home-service-grid button:hover{border-color:#b9ccdf;background:#f5f9fc;transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,64,40,.07)}.home-service-grid button>span{font-size:13px;font-weight:700;color:var(--gold-text);border-right:1px solid #e1e6ec;height:30px;display:flex;align-items:center}.home-service-grid button div{min-width:0}.home-service-grid button b,.home-service-grid button small{display:block}.home-service-grid button b{font-size:13px;color:var(--navy-900)}.home-service-grid button small{font-size:10px;color:var(--t-weak);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.home-service-grid button em{font-size:11px;font-style:normal;color:var(--navy-600);white-space:nowrap}
@media(max-width:1200px){.home-main-grid{grid-template-columns:1fr}.home-panel{height:auto;min-height:250px}.home-stat-grid{grid-template-columns:repeat(2,1fr)}.home-service-grid{grid-template-columns:1fr}.home-services{margin-bottom:20px}}

/* 学习记录列表：真实头像 + 紧凑行 */
.sample-list-panel{padding:14px}.sample-list-panel>.panel-t{font-size:17px;margin-bottom:8px}.sample{min-height:68px;padding:7px 8px;margin-bottom:3px;gap:9px}.sample .av{width:34px;height:34px}.sample-avatar{position:relative;border:1px solid #dbe5ef;background:#edf3f8;isolation:isolate}.sample-avatar>span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.sample-avatar>img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;background:#edf3f8}.sample-avatar.has-image>span{visibility:hidden}.sample-title{font-size:14px}.sample-title span{font-size:12px;margin-left:5px}.sample-course{font-size:12px;margin-top:1px}.sample-progress{height:3px;margin-top:4px}.sample-status{gap:2px}.sample-status .badge{font-size:12px;padding:2px 7px}.sample-status small{font-size:11px}
