/* 考勤工作台：按确认稿截图重新排版；只作用于 .att-work-shell */
.att-work-shell{color:#1d2b45;min-width:0}
.att-work-crumb{font-size:11px;color:#8390a6;margin:0 0 12px;padding:0 4px}
.att-work-crumb span{padding:0 6px;color:#b4bfd0}
.att-work-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.att-work-head>div:first-child{display:flex;align-items:center;gap:12px;min-width:180px}
.att-work-head h2{font-size:22px;line-height:1.2;margin:0;color:#14233f;font-weight:800}
.att-work-sync{font-size:11px;color:#168b48;display:flex;align-items:center;gap:5px;white-space:nowrap}
.att-work-sync i{width:8px;height:8px;border-radius:50%;background:#19a45b;display:inline-block}
.att-work-grade{width:92px;height:34px;border-radius:9px;background:#fff}
.att-work-date{margin-left:auto;display:flex;align-items:center;gap:6px}
.att-work-date label{height:34px;display:flex;align-items:center;gap:5px;padding:0 9px;border:1px solid #d8e1ef;border-radius:9px;background:#fff;color:#273957;font-size:11px}
.att-work-date label input{width:18px;max-width:18px;border:0;padding:0;opacity:.85}
.att-work-date label span{white-space:nowrap}
.att-work-date .icon-btn{width:30px;height:30px;border:1px solid #d8e1ef;border-radius:8px;background:#fff;color:#314767;font-size:20px}
.att-work-tabs{display:flex;align-items:center;gap:25px;border-bottom:1px solid #dce5f2;margin-bottom:14px;overflow-x:auto;scrollbar-width:none}
.att-work-tabs::-webkit-scrollbar{display:none}
.att-work-tabs button{position:relative;flex:0 0 auto;padding:0 1px 10px;color:#42536e;font-size:13px;font-weight:650;white-space:nowrap}
.att-work-tabs button.on{color:#075cf2}
.att-work-tabs button.on:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:3px;background:#1264f5}
.att-work-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.aw-stat{min-width:0;display:flex;align-items:center;gap:10px;padding:12px 15px;border-radius:12px;background:linear-gradient(110deg,#eaf2ff,#edf5ff);color:#2b3d5c}
.aw-stat:before{content:"♙";width:28px;height:28px;display:grid;place-items:center;border:1px solid #b9d3ff;border-radius:8px;color:#1464f5;font-size:17px;background:#f8fbff}
.aw-stat span{font-size:11px;white-space:nowrap}
.aw-stat b{font-size:21px;color:#172744;line-height:1;margin-left:auto;font-weight:800}
.aw-stat small{font-size:10px;color:#7d8ba2;margin-left:-7px}
.aw-stat.blue{background:linear-gradient(110deg,#e8f3ff,#edf6ff)}
.aw-stat.blue:before{content:"▣";color:#075cf2}
.aw-stat.amber{background:linear-gradient(110deg,#fff4e2,#fff8ed)}
.aw-stat.amber:before{content:"▤";color:#e58b16;border-color:#f5d5a4}
.aw-stat.gray{background:linear-gradient(110deg,#eef2f8,#f4f6fa)}
.aw-stat.gray:before{content:"◷";color:#64758f;border-color:#d1dae8}
.att-work-panel{background:#fff;border:1px solid #dce5f1;border-radius:14px;padding:14px;box-shadow:0 5px 18px rgba(37,74,130,.045)}
.att-work-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.att-work-toolbar .input{height:34px;font-size:11.5px;border-radius:8px}
.att-work-toolbar select{width:108px}
.att-work-toolbar .aw-search{width:190px}
.att-work-toolbar .btn{height:34px;border-radius:8px;font-size:11.5px}
.att-work-toolbar .btn.primary{background:#1261f4;border-color:#1261f4;color:#fff}
.att-work-spacer{flex:1}
.att-work-export-wrap{position:relative}
.att-work-export-menu{position:absolute;right:0;top:39px;z-index:30;width:190px;padding:8px;background:#fff;border:1px solid #d7e0ee;border-radius:11px;box-shadow:0 12px 32px rgba(27,53,92,.18)}
.att-work-export-menu[hidden]{display:none}
.att-work-export-menu button{display:block;width:100%;text-align:left;padding:8px 9px;border-radius:7px;font-size:12px;color:#31425e}
.att-work-export-menu button:hover{background:#edf4ff;color:#075cf2}
.att-work-export-menu label{display:flex;align-items:center;gap:7px;padding:8px 9px;border-top:1px solid #edf0f5;font-size:11px;color:#596981}
.att-work-table-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 10px}
.att-work-table-title h3{font-size:15px;margin:0 0 3px;color:#172744}
.att-work-table-title span{font-size:10.5px;color:#8794a8}
.att-work-confirm{padding:3px 9px;border-radius:20px;background:#fff3d9;color:#a9680b;font-size:10px;white-space:nowrap}
.att-work-confirm.ok{background:#e9f8ee;color:#168448}
.att-work-confirm.warn{background:#fff0dc;color:#b56b08}
.att-work-table-scroll{overflow:auto;border:1px solid #e1e8f2;border-radius:10px}
.att-work-table{width:100%;border-collapse:collapse;min-width:680px;font-size:11.5px}
.att-work-table th{height:34px;padding:7px 9px;background:#f3f6fb;color:#53627a;text-align:left;font-weight:700;white-space:nowrap;border-bottom:1px solid #e2e9f3}
.att-work-table td{height:38px;padding:5px 9px;border-bottom:1px solid #edf1f6;color:#31425e;white-space:nowrap}
.att-work-table tr:last-child td{border-bottom:0}
.att-work-table tbody tr:hover td{background:#f8fbff}
.att-work-table .aw-name{font-weight:700;color:#172744}
.aw-mark{min-width:39px;height:25px;padding:0 9px;border-radius:6px;background:#f0f3f8;color:#7c8aa0;font-size:10px}
.aw-mark.on{background:#dceaff;color:#075cf2;font-weight:700}
.aw-mark:hover{outline:1px solid #8bb6ff}
.aw-leave{display:inline-block;padding:4px 8px;border-radius:6px;background:#fff1d8;color:#a96108;font-size:10px}
.aw-dash{color:#a7b1c0}
.aw-temp{margin-left:5px;padding:2px 5px;border-radius:4px;background:#fff0d4;color:#b56a09;font-size:9px}
.aw-status{padding:4px 8px;border-radius:6px;background:#fff3dc;color:#a86b12;font-size:10px}
.aw-status.on{background:#e3f1ff;color:#1261e9}
.aw-status.off{background:#ffebeb;color:#c34d4d}
.att-work-mobile-list{display:none}
.att-work-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:9px 2px 0;border-top:1px solid #edf1f6}
.att-work-foot>span{font-size:10px;color:#8492a7}
.att-work-foot>div{display:flex;gap:8px}
.att-work-foot .btn{height:32px;border-radius:8px;font-size:11px}
.att-work-foot .btn.primary{background:#1261f4;border-color:#1261f4;color:#fff}
.att-work-empty,.att-work-error{min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;color:#52637c}
.att-work-empty p{font-size:12px;color:#8995a8;margin:0}
.awe-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:#edf4ff;color:#1261f4}
.att-work-error{color:#b64c4c}
@media(max-width:900px){.att-work-stats{gap:8px}.aw-stat{padding:10px}.att-work-toolbar .aw-search{width:160px}}
@media(max-width:680px){
 .att-work-crumb{margin:0 0 8px;font-size:10px}
 .att-work-head{gap:8px;margin-bottom:9px}
 .att-work-head>div:first-child{flex:1 1 100%;gap:9px}
 .att-work-head h2{font-size:20px}
 .att-work-grade{margin-left:0;width:78px;height:31px}
 .att-work-date{margin-left:auto;gap:3px}
 .att-work-date label{height:31px;padding:0 5px;gap:3px}
 .att-work-date label span{font-size:10px}
 .att-work-date .btn{padding:4px 7px}
 .att-work-tabs{gap:0;justify-content:space-between;margin-bottom:10px}
 .att-work-tabs button{padding:0 5px 9px;font-size:12px}
 .att-work-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:10px}
 .aw-stat{padding:9px 10px;gap:7px;border-radius:10px}
 .aw-stat:before{width:25px;height:25px;font-size:14px}
 .aw-stat span{font-size:10px}
 .aw-stat b{font-size:19px}
 .att-work-panel{padding:10px;border-radius:12px}
 .att-work-toolbar{gap:6px;margin-bottom:10px}
 .att-work-toolbar select{width:100px}
 .att-work-toolbar .aw-search{flex:1 1 130px;width:auto;min-width:0}
 .att-work-toolbar .btn{height:32px;padding:0 8px;font-size:10.5px}
 .att-work-spacer{display:none}
 .att-work-export-wrap{margin-left:auto}
 .att-work-table-title h3{font-size:14px}
 .att-work-table-title span{font-size:10px}
 .att-work-table-scroll{display:none}
 .att-work-panel:not(:has(.att-work-mobile-list)) .att-work-table-scroll{display:block}
 .att-work-mobile-list{display:grid;gap:8px}
 .aw-mobile-card{padding:10px;border:1px solid #e0e8f3;border-radius:11px;background:#fff}
 .aw-mobile-person{display:flex;align-items:center;gap:8px;margin-bottom:8px}
 .aw-mobile-person b{font-size:13px;color:#1d2c48}
 .aw-mobile-person span{padding:2px 7px;border-radius:12px;background:#eef3fb;color:#566983;font-size:10px}
 .aw-mobile-person em{font-style:normal;padding:2px 5px;border-radius:4px;background:#fff0d4;color:#b56a09;font-size:9px}
 .aw-mobile-periods{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
 .aw-mobile-periods .aw-mark{height:43px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;font-size:11px}
 .aw-mobile-periods .aw-mark small{font-size:9px;color:inherit;opacity:.75}
 .aw-mobile-leave{display:flex;align-items:center;gap:5px;margin-top:7px;padding:6px 8px;border-radius:7px;background:#fff3dc;color:#a96108;font-size:10px}
 .aw-mobile-edit{margin-top:7px;color:#1261f4;font-size:10px}
 .att-work-foot{position:sticky;bottom:0;background:rgba(255,255,255,.96);padding:9px 0 calc(8px + env(safe-area-inset-bottom));z-index:5}
 .att-work-foot>span{max-width:45%;line-height:1.4}
 .att-work-foot .btn{height:38px;padding:0 11px}
}
@media(max-width:360px){.att-work-date label span{display:none}.att-work-tabs button{font-size:11px}.aw-mobile-periods{gap:4px}}

/* 花名册主页面：与坐班/教研记录共用工作台容器 */
.att-work-shell .aw-roster-table th:first-child,
.att-work-shell .aw-roster-table td:first-child{width:76px;text-align:center}
.att-work-shell .aw-roster-table th:last-child,
.att-work-shell .aw-roster-table td:last-child{width:130px;text-align:center}
.att-work-shell .aw-roster-table td{height:42px}
.att-work-shell .aw-subject-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;background:#edf4ff;color:#245da9;font-size:12px;font-weight:650}
.att-work-shell .att-roster-count{font-size:12px;color:#62738d;white-space:nowrap}
.att-work-shell .aw-roster-table .aw-status{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px}
.att-work-shell .aw-roster-table .aw-status.on{background:#e9f8ee;color:#168448}
.att-work-shell .aw-roster-table .aw-status.off{background:#f0f2f6;color:#7d8797}
@media(max-width:680px){
 .att-work-shell .aw-roster-table{min-width:520px}
 .att-work-shell .aw-roster-table td{height:40px}
}

/* 未确认上课表前，坐班表入口保持禁用，避免提前生成正式坐班记录 */
.ad-slot.locked{opacity:.62;cursor:not-allowed;border-style:dashed;filter:saturate(.65)}
.ad-slot.locked b{color:#8b95a6}


/* ===== 考勤管理首页 · 2026 视觉确认稿 ===== */
.agd-dashboard{width:100%;max-width:none;color:#172b4d}
.agd-header{display:flex;align-items:center;justify-content:space-between;gap:22px;margin:2px 0 24px}
.agd-heading{display:flex;align-items:center;gap:15px;min-width:0}
.agd-heading-icon{width:54px;height:54px;display:grid;place-items:center;flex:0 0 auto;border-radius:16px;background:linear-gradient(145deg,#e5efff,#d7e7ff);color:#1764f5}
.agd-heading h2{margin:0 0 5px;color:#142744;font-size:27px;line-height:1.2;font-weight:820;letter-spacing:-.5px}
.agd-heading p{margin:0;color:#7285a3;font-size:13px;line-height:1.5}
.agd-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto}
.agd-live{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:999px;background:#e9f8ef;color:#159451;font-size:12px;font-weight:700;white-space:nowrap}
.agd-live i,.agd-overall i{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block;box-shadow:0 0 0 4px rgba(22,163,74,.11)}
.agd-manage,.agd-add{height:42px!important;padding:0 17px!important;border-radius:11px!important;font-size:13px!important;font-weight:700!important;white-space:nowrap}
.agd-add{background:#1764f5!important;border-color:#1764f5!important;box-shadow:0 5px 13px rgba(23,100,245,.18)}
.agd-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 30px}
.agd-stat{min-width:0;min-height:102px;display:flex;align-items:center;gap:16px;padding:18px 20px;border:1px solid #e7edf7;border-radius:17px;background:#fff;box-shadow:0 7px 22px rgba(39,79,140,.055)}
.agd-stat>i{width:62px;height:62px;display:grid;place-items:center;flex:0 0 auto;border-radius:17px;background:#e9f1ff;color:#1764f5;font-size:30px;font-style:normal;font-weight:800}
.agd-stat>div{display:flex;flex-direction:column;gap:5px;min-width:0}
.agd-stat b{color:#142744;font-size:29px;line-height:1;font-weight:820;font-variant-numeric:tabular-nums}
.agd-stat span{color:#7285a3;font-size:12px;white-space:nowrap}
.agd-stat.purple>i{background:#f1eaff;color:#8654ed}
.agd-stat.green>i{background:#e5f8ee;color:#19a45b}
.agd-stat.orange>i{background:#fff2e2;color:#e68b19}
.agd-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:0 0 16px}
.agd-section-head h3{display:flex;align-items:center;gap:9px;margin:0 0 5px;color:#172b4d;font-size:19px;font-weight:800}
.agd-section-head h3 svg{color:#2768c9}
.agd-section-head p{margin:0;color:#7c8eaa;font-size:12px}
.agd-date{padding:9px 13px;border:1px solid #e4ebf6;border-radius:11px;background:#fff;color:#637895;font-size:12px;white-space:nowrap}
.agd-grade-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}
.agd-grade-card{display:flex;flex-direction:column;min-width:0;min-height:330px;padding:0;overflow:hidden;border:1px solid #e2eaf6;border-radius:18px;background:#fff;text-align:left;box-shadow:0 7px 22px rgba(39,79,140,.06);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.agd-grade-card:hover{transform:translateY(-3px);border-color:#b9d0fa;box-shadow:0 13px 28px rgba(37,99,235,.11)}
.agd-grade-banner{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:69px;padding:14px 17px;background:linear-gradient(115deg,#2874f7,#1463e8 68%,#0e9b9a);color:#fff}
.agd-grade-card:nth-child(2) .agd-grade-banner{background:linear-gradient(115deg,#8b70f6,#6555e9)}
.agd-grade-card:nth-child(3) .agd-grade-banner{background:linear-gradient(115deg,#22b6c6,#1c9db7)}
.agd-grade-name{display:flex;align-items:center;gap:9px;color:#fff;font-size:21px;font-weight:800;white-space:nowrap}
.agd-grade-name i{display:grid;place-items:center;color:rgba(255,255,255,.88);font-style:normal}
.agd-overall{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#55719b;font-size:10px;font-weight:750;white-space:nowrap}
.agd-overall i{width:7px;height:7px;box-shadow:none}
.agd-overall.ok{color:#16864b;background:#e9fff1}
.agd-overall.wait{color:#b56c0b;background:#fff5e5}
.agd-overall.idle,.agd-overall.empty{color:#71819a;background:#f2f5fa}
.agd-grade-content{display:flex;flex:1;flex-direction:column;padding:17px 16px 15px}
.agd-grade-meta{display:flex;align-items:baseline;gap:4px;color:#536985;font-size:12px;white-space:nowrap}
.agd-grade-meta>b{color:#172b4d;font-size:20px;font-weight:820}
.agd-grade-meta strong{color:#1764e9;font-weight:800}
.agd-progress{height:8px;margin-top:13px;overflow:hidden;border-radius:99px;background:#eaf0f8}
.agd-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#4388ff,#1d63ec);transition:width .2s ease}
.agd-progress-label{display:flex;justify-content:space-between;margin-top:6px;color:#8797ae;font-size:10px}
.agd-progress-label b{color:#526987;font-size:10px}
.agd-sheet-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:17px}
.agd-sheet{display:flex;min-width:0;min-height:88px;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:9px 4px;border-radius:13px;background:#f5f8fc;text-align:center}
.agd-sheet>i{color:#5275a8;font-size:19px;font-style:normal;line-height:1}
.agd-sheet>b{color:#314866;font-size:11px;font-weight:750;white-space:nowrap}
.agd-sheet>em{max-width:100%;padding:3px 7px;overflow:hidden;border-radius:999px;background:#e9eef6;color:#7b8ba3;font-size:9px;font-style:normal;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}
.agd-sheet.ok{background:#f0faf4}
.agd-sheet.ok>i,.agd-sheet.ok>em{color:#17864b}
.agd-sheet.ok>em{background:#def5e7}
.agd-sheet.wait,.agd-sheet.warn{background:#fff8ee}
.agd-sheet.wait>i,.agd-sheet.warn>i{color:#e28a18}
.agd-sheet.wait>em,.agd-sheet.warn>em{background:#ffedcf;color:#b56c0b}
.agd-sheet.locked>em{background:#edf0f5;color:#8793a6}
.agd-grade-foot{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-top:auto;padding-top:14px;border-top:1px solid #edf1f7}
.agd-grade-foot>span{overflow:hidden;color:#8999b0;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.agd-grade-foot>b{display:inline-flex;align-items:center;gap:3px;color:#1764ed;font-size:10px;font-weight:750;white-space:nowrap}
.agd-new-card{display:flex;min-height:330px;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px 16px;border:1.5px dashed #b9d0fa;border-radius:18px;background:linear-gradient(180deg,#fff,#f8fbff);color:#25456e;cursor:pointer;transition:background .18s ease,border-color .18s ease}
.agd-new-card:hover{border-color:#5f97fa;background:#f4f8ff}
.agd-new-plus{width:58px;height:58px;display:grid;place-items:center;border-radius:19px;background:#eaf2ff;color:#1764f5}
.agd-new-card>b{color:#1d3558;font-size:17px;font-weight:800}
.agd-new-card>span:not(.agd-new-plus){color:#8394ad;font-size:12px}
.agd-school-scene{width:100%;margin-top:10px;color:#d5e4fb;font-size:68px;font-style:normal;line-height:.8;text-align:center}
.agd-maintenance{margin-top:22px;padding-top:12px;border-top:1px solid #e7edf6;color:#8795aa;font-size:11px}
.agd-maintenance summary{width:max-content;cursor:pointer;list-style:none}
.agd-maintenance summary::-webkit-details-marker{display:none}
.agd-maintenance summary:after{content:"＋";margin-left:6px}
.agd-maintenance[open] summary:after{content:"－"}
.agd-maintenance>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:12px;border:1px solid #f1dede;border-radius:10px;background:#fffafa}
.agd-maintenance .agl-danger{color:#c64b4b;font-size:11px}
@media(max-width:1180px){
 .agd-header{align-items:flex-start;flex-direction:column}
 .agd-actions{width:100%;justify-content:flex-start}
 .agd-grade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
 .agd-header{gap:14px;margin-bottom:17px}
 .agd-heading{align-items:flex-start;gap:11px}
 .agd-heading-icon{width:44px;height:44px;border-radius:13px}
 .agd-heading h2{font-size:22px}
 .agd-heading p{font-size:11px}
 .agd-actions{gap:7px;flex-wrap:wrap}
 .agd-live{padding:8px 10px;font-size:10px}
 .agd-manage,.agd-add{height:36px!important;padding:0 11px!important;font-size:11px!important}
 .agd-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:22px}
 .agd-stat{min-height:76px;gap:10px;padding:11px;border-radius:13px}
 .agd-stat>i{width:42px;height:42px;border-radius:12px;font-size:22px}
 .agd-stat b{font-size:22px}
 .agd-stat span{font-size:10px}
 .agd-section-head{align-items:flex-start;flex-direction:column;gap:8px;margin-bottom:12px}
 .agd-section-head h3{font-size:16px}
 .agd-date{padding:7px 10px;font-size:10px}
 .agd-grade-grid{grid-template-columns:1fr;gap:11px}
 .agd-grade-card,.agd-new-card{min-height:0}
 .agd-grade-banner{min-height:58px;padding:12px 14px}
 .agd-grade-name{font-size:18px}
 .agd-grade-content{padding:13px}
 .agd-sheet{min-height:76px}
 .agd-grade-foot{padding-top:11px}
 .agd-new-card{min-height:170px}
 .agd-school-scene{display:none}
 .agd-maintenance>div{align-items:flex-start;flex-direction:column}
}

/* 全屏表格工作台：进入年级后以表格为主，不再用管理卡片占据空间 */
.att-work-shell{width:100%;max-width:none}
.att-work-head{margin-bottom:8px}
.att-work-tabs{gap:30px;margin-bottom:10px}
.att-work-panel{width:100%;min-height:calc(100vh - 230px);padding:14px 16px;display:flex;flex-direction:column}
.att-work-table-title{margin:0 0 10px}
.att-work-table-scroll.att-work-sheet-scroll{flex:1;min-height:300px;overflow:auto;border-radius:8px}
.att-work-table.att-work-sheet-table{width:100%;min-width:850px;font-size:13px}
.att-work-sheet-table th{height:42px;text-align:center;font-size:13px;padding:8px 10px}
.att-work-sheet-table td{height:48px;text-align:center;padding:6px 10px;font-size:13px}
.att-work-sheet-table td.aw-name{text-align:left;min-width:120px;font-weight:700}
.att-work-sheet-table th:nth-child(2){text-align:left}
.aw-check-cell{min-width:76px}
.aw-mark.aw-big-mark{width:42px;height:34px;min-width:42px;border:1px solid #d8e2f0;border-radius:7px;background:#f7f9fc;color:#1261f4;font-size:19px;font-weight:800;line-height:1}
.aw-mark.aw-big-mark.on{background:#dceaff;border-color:#91baff;color:#075cf2}
.aw-mark.aw-big-mark:disabled{opacity:.35;cursor:not-allowed}
.aw-cell-input{width:100%;min-width:90px;height:34px;padding:4px 8px;border:1px solid #e1e7f0;border-radius:6px;background:#fff;color:#263750;font-size:12px}
.aw-cell-input:focus{outline:2px solid #b7d1ff;border-color:#1261f4}
.att-work-locked-note{padding:12px 14px;margin-bottom:10px;border:1px solid #f1d49d;border-radius:8px;background:#fff8e9;color:#96600d;font-size:13px}
.att-work-panel .att-work-foot{margin-top:10px}
.att-work-panel:has(.aw-roster-table) .att-work-table-scroll{flex:1;min-height:300px}
.aw-roster-table{width:100%;min-width:560px;font-size:14px}
.aw-roster-table th{height:44px;font-size:13px}
.aw-roster-table td{height:48px;font-size:14px}
@media(min-width:1100px){
 .att-work-panel{min-height:calc(100vh - 205px)}
 .att-work-sheet-table td{height:52px}
}
@media(max-width:680px){
 .att-work-panel{min-height:calc(100vh - 190px);padding:10px}
 .att-work-table.att-work-sheet-table{min-width:760px}
 .att-work-sheet-table th{height:40px;font-size:12px}
 .att-work-sheet-table td{height:46px;font-size:12px}
 .aw-mark.aw-big-mark{width:38px;height:34px;min-width:38px}
}

/* 花名册页面视觉精修 v2 */
.att-work-shell{padding:2px 0 18px}
.att-work-crumb{margin-bottom:8px;color:#8b98ad;font-size:11px}
.att-work-head{display:flex;align-items:center;gap:12px;margin:0 0 8px;padding:0 2px}
.att-work-head>div:first-child{display:flex;align-items:center;gap:10px;min-width:0}
.att-work-head h2{font-size:21px;letter-spacing:-.35px}
.att-work-sync{padding:5px 9px;border:1px solid #d9f0e2;border-radius:20px;background:#f1fbf5;font-size:10px}
.att-work-grade{flex:0 0 104px!important;width:104px!important;min-width:104px!important;height:34px!important;padding:0 30px 0 11px!important;border:1px solid #d8e2f0!important;border-radius:9px!important;background-color:#fff!important;font-size:12px!important;box-shadow:none!important}
.att-work-grade:focus{outline:2px solid #dceaff;border-color:#8db5f8!important}
.att-work-date{gap:5px}
.att-work-tabs{gap:28px;margin:5px 0 12px;border-bottom:1px solid #e5ebf4}
.att-work-tabs button{padding:0 2px 11px;font-size:13px}
.att-work-tabs button.on:after{height:3px}
.att-work-panel{min-height:calc(100vh - 215px);padding:14px 15px 12px;border:1px solid #e3eaf4;border-radius:15px;background:#fff;box-shadow:0 5px 20px rgba(32,65,115,.045)}
.att-work-toolbar{gap:8px;margin-bottom:12px}
.att-work-toolbar select#att-work-subject{width:112px;height:35px;border-radius:9px}
.att-work-toolbar .aw-search{width:205px;height:35px;border-radius:9px}
.att-work-toolbar .btn{height:35px;padding:0 13px;border-radius:9px}
.att-roster-count{color:#64748b;font-size:11px;font-weight:600}
.att-work-table-title{align-items:center;margin:1px 0 10px;padding:0 1px}
.att-work-table-title h3{font-size:15px;font-weight:800;letter-spacing:.1px}
.att-work-table-title span{margin-top:3px;color:#8492a7;font-size:11px}
.att-work-confirm{padding:5px 10px;border:1px solid #d8f0e1;border-radius:20px;background:#f0fbf4;color:#16834a;font-size:10px;font-weight:650}
.att-work-table-scroll{border:1px solid #e4eaf3;border-radius:11px;overflow:auto}
.aw-roster-table{width:100%;min-width:520px;border-collapse:separate;border-spacing:0;font-size:13px}
.aw-roster-table thead{position:sticky;top:0;z-index:2}
.aw-roster-table th{height:42px;padding:0 16px;background:#f5f8fd;color:#64748b;border-bottom:1px solid #e5ebf4;font-size:11px;font-weight:750;text-align:left}
.aw-roster-table th:first-child,.aw-roster-table td:first-child{width:76px;text-align:center}
.aw-roster-table th:nth-child(2){width:34%}
.aw-roster-table td{height:46px;padding:0 16px;border-bottom:1px solid #edf1f6;color:#34445d;font-size:13px}
.aw-roster-table tbody tr:nth-child(even) td{background:#fbfcfe}
.aw-roster-table tbody tr:hover td{background:#f1f6ff}
.aw-roster-table tbody tr:last-child td{border-bottom:0}
.aw-roster-table td:first-child{color:#91a0b4;font-size:11px;font-variant-numeric:tabular-nums}
.aw-roster-table td.aw-name{color:#1d2d47;font-size:13px;font-weight:700}
.aw-roster-table td:nth-child(3){color:#526783}
.att-work-panel:has(.aw-roster-table) .att-work-table-scroll{flex:1;min-height:320px}
.att-work-panel:has(.aw-roster-table) .att-work-foot{margin-top:10px;padding-top:9px}
.att-work-panel:has(.aw-roster-table) .att-work-foot>span{font-size:10px;color:#9aa6b7}
@media(min-width:1100px){
 .att-work-panel{min-height:calc(100vh - 195px)}
 .aw-roster-table td{height:48px}
}
@media(max-width:760px){
 .att-work-head{gap:8px;flex-wrap:wrap}
 .att-work-head>div:first-child{flex:1 1 100%}
 .att-work-grade{flex-basis:90px!important;width:90px!important;min-width:90px!important}
 .att-work-date{margin-left:auto}
 .att-work-panel{min-height:calc(100vh - 180px);padding:10px}
 .att-work-toolbar .aw-search{width:min(190px,48vw)}
 .att-work-tabs{gap:22px}
}

/* 日期、时间段与 1-9 节次：直接在表格上方选择，不再进入编辑弹窗 */
.att-work-meta-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-3px 0 14px;padding:10px 12px;border:1px solid #e0e9f6;border-radius:11px;background:linear-gradient(100deg,#f7faff,#fff)}
.att-work-meta-controls label{display:flex;align-items:center;gap:7px;color:#40516d;font-size:12px;font-weight:650;white-space:nowrap}
.att-work-meta-controls .input{height:34px;min-width:94px;padding:0 10px;border:1px solid #d8e2f0;border-radius:8px;background:#fff;color:#1f304d;font-size:12px}
.att-work-meta-controls #att-work-period{min-width:108px}
.att-work-meta-controls .att-work-period-manual input{width:78px;min-width:78px}
.att-work-meta-hint{margin-left:auto;color:#8795aa;font-size:11px}
.aw-period-group{background:#e8f2ff!important;color:#174d9c!important;font-weight:800}
.aw-period-head{background:#f3f7fd!important;font-size:12px!important;white-space:nowrap}
.att-work-sheet-table th[rowspan="2"]{vertical-align:middle}
@media(max-width:680px){
 .att-work-meta-controls{gap:8px;padding:9px}
 .att-work-meta-controls label{font-size:11px}
 .att-work-meta-hint{width:100%;margin-left:0}
 .att-work-meta-controls .input{min-width:82px}
}


/* 考勤页细节调整：日期与节次同排；不同表类型显示各自统计项 */
.att-work-date{margin-left:0;flex:0 0 auto}
.att-work-meta-controls{justify-content:flex-start;gap:12px}
.att-work-meta-controls .att-work-date label{font-weight:500}
.att-work-meta-controls .att-work-date label input{width:18px;max-width:18px}
.att-work-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
.aw-stat.violet{background:linear-gradient(110deg,#f1edff,#f8f5ff)}
.aw-stat.violet:before{content:"◉";color:#7653d6;border-color:#d8cdfc}
@media(max-width:1100px){
 .att-work-stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
}
@media(max-width:760px){
 .att-work-meta-controls .att-work-date{width:100%;margin:0}
 .att-work-meta-controls .att-work-date label{flex:1;min-width:0}
 .att-work-meta-controls .att-work-date label span{overflow:hidden;text-overflow:ellipsis}
 .att-work-meta-controls .att-work-date label input{flex:0 0 18px}
 .att-work-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* 教师工作台 - 考勤管理 UI 精修补丁
 * 用法：将本文件全部内容追加到 css/attendance-workspace.css 末尾。
 * 仅调整视觉样式，不修改考勤数据、生成规则、勾选逻辑或接口。
 */
.att-work-shell{--aw-ink:#172b4d;--aw-muted:#71829d;--aw-line:#e5ebf4;--aw-blue:#2563eb;color:var(--aw-ink);padding:8px 2px 24px}
.att-work-crumb{margin:0 0 10px;padding:0 2px;color:#91a0b5;font-size:11px;letter-spacing:.02em}
.att-work-head{gap:14px;margin:0 0 14px;padding:0 2px}
.att-work-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.att-work-head h2{color:#142746;font-size:24px;font-weight:800;letter-spacing:-.6px}
.att-work-sync{padding:5px 10px;border:1px solid #d7f0e1;border-radius:999px;background:#f0fbf4;color:#16834a;font-size:11px;font-weight:650}
.att-work-grade{height:38px!important;min-width:112px!important;border:1px solid #dce5f1!important;border-radius:10px!important;background:#fff!important;color:#263b5b!important;font-size:13px!important;box-shadow:0 2px 5px rgba(30,64,112,.035)!important}
.att-work-meta-controls{gap:10px 14px;margin:0 0 14px;padding:11px 13px;border:1px solid #e3eaf4;border-radius:13px;background:linear-gradient(105deg,#f8fbff 0%,#fff 78%);box-shadow:0 3px 12px rgba(35,70,125,.035)}
.att-work-meta-controls label{gap:8px;color:#52647f;font-size:12px;font-weight:650}
.att-work-meta-controls .input,.att-work-date label{height:36px;border:1px solid #dce5f1;border-radius:9px;background:#fff;color:#243956;font-size:12px}
.att-work-date{gap:6px}
.att-work-date .icon-btn{width:34px;height:34px;border:1px solid #dce5f1;border-radius:9px;background:#fff;color:#49617f;transition:.16s ease}
.att-work-date .icon-btn:hover{border-color:#a9c7fb;background:#f1f6ff;color:var(--aw-blue)}
.att-work-date .btn{height:34px;border-radius:9px;font-weight:650}
.att-work-meta-hint{color:#9aa8bb;font-size:11px}
.att-work-tabs{gap:30px;margin:2px 0 14px;border-bottom:1px solid #e6edf6}
.att-work-tabs button{padding:0 3px 12px;color:#687b96;font-size:13px;font-weight:700;transition:color .16s ease}
.att-work-tabs button:hover,.att-work-tabs button.on{color:#1d63df}
.att-work-tabs button.on:after{height:3px;border-radius:3px 3px 0 0;background:#2872ed}
.att-work-stats{gap:12px;margin:0 0 14px;grid-template-columns:repeat(5,minmax(0,1fr))}
.aw-stat{position:relative;min-height:66px;gap:11px;padding:12px 14px;overflow:hidden;border:1px solid #e7eef8;border-radius:13px;background:#f5f8fd;color:#52647e;box-shadow:0 3px 10px rgba(35,70,125,.025)}
.aw-stat:before{flex:0 0 32px;width:32px;height:32px;border:1px solid #d6e5fb;border-radius:10px;background:rgba(255,255,255,.8);color:#3476df;font-size:16px}
.aw-stat span{overflow:hidden;color:#647690;font-size:12px;font-weight:650;text-overflow:ellipsis}
.aw-stat b{margin-left:auto;color:#1a2d4b;font-size:25px;font-weight:800;font-variant-numeric:tabular-nums}
.aw-stat small{margin-left:-7px;color:#8c9bb0;font-size:11px}
.aw-stat.blue{border-color:#e0ebfc;background:linear-gradient(115deg,#edf5ff,#f8fbff)}
.aw-stat.amber{border-color:#f6e9d5;background:linear-gradient(115deg,#fff7eb,#fffdf8)}
.aw-stat.violet{border-color:#ebe5fc;background:linear-gradient(115deg,#f5f1ff,#fcfaff)}
.aw-stat.gray{border-color:#e5eaf1;background:linear-gradient(115deg,#f2f5f9,#fbfcfe)}
.att-work-panel{min-height:calc(100vh - 300px);padding:16px;border:1px solid #e3eaf4;border-radius:16px;background:#fff;box-shadow:0 8px 26px rgba(31,64,115,.055)}
.att-work-toolbar{gap:9px;margin:0 0 15px}
.att-work-toolbar .input,.att-work-toolbar select#att-work-subject,.att-work-toolbar .aw-search{height:38px;border:1px solid #dce5f1;border-radius:10px;background:#fff;color:#314763;font-size:12px}
.att-work-toolbar select#att-work-subject{width:122px}
.att-work-toolbar .aw-search{width:min(240px,26vw);padding:0 12px}
.att-work-toolbar .input:focus,.att-work-toolbar .aw-search:focus{border-color:#8db5f7;outline:3px solid rgba(37,99,235,.09)}
.att-work-toolbar .btn{height:38px;padding:0 14px;border-radius:10px;font-size:12px;font-weight:650;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}
.att-work-toolbar .btn:hover{transform:translateY(-1px)}
.att-work-toolbar .btn.primary{border-color:#2563eb;background:linear-gradient(105deg,#3478ef,#215fda);box-shadow:0 5px 12px rgba(37,99,235,.18)}
.att-work-toolbar .btn.ghost{border-color:#dce5f1;background:#fff;color:#425875}
.att-work-toolbar .btn.ghost:hover{border-color:#b8cff5;background:#f5f8ff;color:#1f63dc}
.att-work-table-title{align-items:center;margin:0 0 12px;padding:0 2px}
.att-work-table-title h3{margin:0;color:#1b2e4d;font-size:16px;font-weight:800;letter-spacing:-.2px}
.att-work-table-title span{display:inline-block;margin-top:4px;color:#8b9ab0;font-size:11px}
.att-work-confirm{padding:6px 11px;border:1px solid #f3e4c5;border-radius:999px;background:#fff8e9;color:#a66b16;font-size:11px;font-weight:700}
.att-work-confirm.ok{border-color:#d6efdf;background:#f0fbf4;color:#16834a}
.att-work-confirm.warn{border-color:#f4dfc0;background:#fff7eb;color:#a9680b}
.att-work-table-scroll{max-height:calc(100vh - 430px);min-height:300px;overflow:auto;border:1px solid #e4eaf3;border-radius:12px;background:#fff;scrollbar-color:#cbd7e7 #f5f7fb;scrollbar-width:thin}
.att-work-table{width:100%;border-collapse:separate;border-spacing:0;min-width:760px;color:#31445f;font-size:12px}
.att-work-table thead{position:sticky;top:0;z-index:4}
.att-work-table th{height:43px;padding:0 12px;border-bottom:1px solid #e2eaf5;background:#f3f7fd;color:#536783;font-size:12px;font-weight:750;white-space:nowrap}
.att-work-table td{height:50px;padding:6px 12px;border-bottom:1px solid #edf1f6;background:#fff;color:#354964;font-size:12px;white-space:nowrap}
.att-work-table tbody tr:nth-child(even) td{background:#fbfcfe}
.att-work-table tbody tr:hover td{background:#f1f6ff}
.att-work-table tbody tr:last-child td{border-bottom:0}
.att-work-table td:first-child,.att-work-table th:first-child{width:64px;text-align:center;color:#91a0b4;font-variant-numeric:tabular-nums}
.att-work-table td.aw-name{color:#1d2e49;font-size:13px;font-weight:750}
.att-work-table td:nth-child(3){color:#667b96}
.aw-check-cell{min-width:72px;text-align:center}
.aw-mark.aw-big-mark{width:38px;height:36px;min-width:38px;border:1px solid #d7e1ef;border-radius:10px;background:#f7f9fc;color:#fff;font-size:19px;font-weight:850;line-height:1;box-shadow:inset 0 1px 1px rgba(25,52,90,.025);transition:border-color .14s ease,background .14s ease,transform .14s ease,box-shadow .14s ease}
.aw-mark.aw-big-mark:hover:not(:disabled){border-color:#8eb5f4;background:#edf4ff;transform:translateY(-1px)}
.aw-mark.aw-big-mark.on{border-color:#2563eb;background:linear-gradient(145deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 3px 8px rgba(37,99,235,.2)}
.aw-mark.aw-big-mark:disabled{opacity:.35;cursor:not-allowed}
.aw-cell-input{min-width:110px;height:36px;border:1px solid #e0e7f1;border-radius:9px;background:#fff;color:#31445f;font-size:12px}
.aw-cell-input:focus{border-color:#8db5f7;outline:3px solid rgba(37,99,235,.09)}
.att-work-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:13px;padding-top:12px;border-top:1px solid #edf1f6}
.att-work-foot>span{color:#91a0b4;font-size:11px}
.att-work-foot .btn{min-height:36px;padding:0 14px;border-radius:9px;font-size:12px;font-weight:700}
.aw-roster-table{min-width:560px}
.aw-roster-table th{height:44px}
.aw-roster-table td{height:50px}
@media(max-width:1100px){.att-work-stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.att-work-panel{min-height:calc(100vh - 270px)}.att-work-table-scroll{max-height:calc(100vh - 400px)}}
@media(max-width:760px){
 .att-work-shell{padding:4px 0 18px;width:100%;min-width:0;max-width:100%;overflow-x:hidden}
 .att-work-head{flex-wrap:wrap;gap:8px}
 .att-work-head>div:first-child{flex:1 1 100%}
 .att-work-head-actions{display:grid;grid-template-columns:minmax(0,1fr) 96px;width:100%;min-width:0;margin-left:0}
 .att-work-head-actions .btn{width:100%;min-width:0}
 .att-work-head-actions .att-work-grade{width:96px!important;min-width:0!important;max-width:100%}
 .att-work-meta-controls{align-items:flex-start;gap:9px;padding:10px}
 .att-work-meta-controls .att-work-date{display:grid;grid-template-columns:34px minmax(0,1fr) 34px auto;gap:6px;width:100%;margin:0}
 .att-work-meta-controls .att-work-date label{min-width:0;overflow:hidden}
 .att-work-meta-controls .att-work-date label input{width:100%!important;max-width:100%!important;flex:1 1 auto;min-width:0}
 .att-work-meta-controls .att-work-date label span{display:none}
 .att-work-meta-hint{width:100%;margin-left:0}
 .att-work-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .aw-stat{min-height:60px;padding:9px}
 .aw-stat b{font-size:21px}
 .att-work-panel{min-width:0;max-width:100%;min-height:auto;padding:11px;border-radius:13px;overflow:hidden}
 .att-work-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));max-width:100%;gap:4px;overflow:visible}
 .att-work-tabs button{min-width:0;padding-inline:0;font-size:12px;white-space:nowrap}
 .att-work-toolbar{min-width:0;gap:7px;flex-wrap:wrap}
 .att-work-toolbar .aw-search,.att-work-toolbar select#att-work-subject{width:100%;flex:1 1 100%}
 .att-work-toolbar .btn{flex:1 1 calc(50% - 7px);min-width:0;justify-content:center}
 .att-work-toolbar .att-work-spacer{display:none}
 .att-work-export-wrap{width:100%;margin-left:0}
 .att-work-export-wrap .btn{width:100%}
 .att-work-table-scroll{max-height:65vh;min-height:260px}
 .att-work-table.att-work-sheet-table{min-width:760px}
 .att-work-sheet-table th{height:42px}
 .att-work-sheet-table td{height:48px}
 .aw-mark.aw-big-mark{width:36px;height:36px;min-width:36px}
 .att-work-foot{align-items:stretch}
}


/* ===== 考勤管理首页：按最终确认稿精修 ===== */
/* 考勤管理首页单独铺满可用工作区，不受全站舒适宽度限制。 */
.main:has(.agd-dashboard){width:100%;max-width:none;margin:0}
.agd-dashboard{
  width:100%;
  max-width:none;
  margin:0;
  padding:4px 0 26px;
}
.agd-header{margin:0 0 24px}
.agd-actions{gap:12px}
.agd-manage,.agd-add{height:48px!important;padding:0 19px!important}
.agd-stats{gap:18px;margin-bottom:26px}
.agd-stat{min-height:112px;padding:20px 22px;border-radius:18px}
.agd-stat>i{width:64px;height:64px;border-radius:18px}
.agd-section-head{margin-bottom:18px}
.agd-grade-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:18px}
.agd-grade-grid.is-empty{grid-template-columns:minmax(280px,420px)}
.agd-grade-grid.is-empty .agd-new-card{min-height:176px;padding:20px}
.agd-grade-grid.is-empty .agd-school-scene{display:none}
.agd-grade-card,.agd-new-card{min-height:390px;border-radius:20px}
.agd-grade-grid.is-empty .agd-new-card{min-height:176px}
.agd-grade-banner{min-height:74px;padding:16px 20px}
.agd-grade-name{font-size:23px}
.agd-grade-content{padding:20px 18px 17px}
.agd-grade-meta{font-size:13px}
.agd-grade-meta>b{font-size:23px}
.agd-progress{margin-top:16px}
.agd-sheet-grid{gap:10px;margin-top:19px}
.agd-sheet{min-height:94px}
.agd-grade-foot{padding-top:16px}
.agd-new-card{gap:14px}
.agd-new-plus{width:64px;height:64px}

@media(max-width:680px){
  .agd-dashboard{padding:8px 0 18px}
  .agd-crumb{gap:7px;margin-bottom:18px;font-size:11px}
  .agd-header{gap:14px;margin-bottom:18px}
  .agd-actions{gap:7px}
  .agd-manage,.agd-add{height:38px!important;padding:0 11px!important}
  .agd-stats{gap:8px;margin-bottom:22px}
  .agd-stat{min-height:78px;padding:11px}
  .agd-stat>i{width:42px;height:42px}
  .agd-section-head{margin-bottom:12px}
  .agd-grade-grid{grid-template-columns:1fr;gap:11px}
  .agd-grade-grid.is-empty{grid-template-columns:minmax(0,1fr)}
  .agd-grade-card,.agd-new-card{min-height:0}
  .agd-grade-banner{min-height:60px;padding:12px 14px}
  .agd-grade-content{padding:14px}
  .agd-sheet{min-height:78px}
  .agd-new-card{min-height:185px}
}


/* ===== 年级考勤卡片：强化「进入考勤工作台」主入口 ===== */
.agd-grade-foot {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:10px;
  margin-top:auto;
  padding-top:16px;
  border-top:1px solid #edf1f7;
}
.agd-grade-foot>span {
  color:#8798b0;
  font-size:11px;
  line-height:1.45;
  text-align:center;
  white-space:normal;
}
.agd-grade-foot>b {
  display:flex;
  width:100%;
  min-height:50px;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:0 18px;
  border-radius:12px;
  background:linear-gradient(110deg,#2874f7,#155fe6);
  color:#fff;
  font-size:15px;
  font-weight:800;
  letter-spacing:.2px;
  box-shadow:0 7px 16px rgba(37,99,235,.20);
  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;
}
.agd-grade-card:nth-child(2) .agd-grade-foot>b {
  background:linear-gradient(110deg,#8b70f6,#6555e9);
  box-shadow:0 7px 16px rgba(111,86,231,.20);
}
.agd-grade-card:nth-child(3) .agd-grade-foot>b {
  background:linear-gradient(110deg,#22b6c6,#168cae);
  box-shadow:0 7px 16px rgba(22,156,178,.18);
}
.agd-grade-card:hover .agd-grade-foot>b {
  transform:translateY(-1px);
  filter:saturate(1.08);
  box-shadow:0 10px 21px rgba(37,99,235,.24);
}
.agd-grade-card:focus-visible {
  outline:3px solid rgba(37,99,235,.30);
  outline-offset:3px;
}
.agd-grade-foot>b svg { flex:0 0 auto; }
@media(max-width:680px) {
  .agd-grade-foot { gap:8px;padding-top:13px; }
  .agd-grade-foot>span { font-size:10px; }
  .agd-grade-foot>b { min-height:48px;font-size:14px;border-radius:11px; }
}


/* ===== 教师花名册：照片智能建册弹窗 ===== */
.roster-ocr-sheet .sheet{max-width:900px;border:1px solid rgba(148,163,184,.18);border-radius:22px}
.roster-ocr-sheet .sheet-head{padding:19px 24px 14px;border-bottom:1px solid #edf1f7;gap:12px}
.roster-ocr-sheet .sheet-title{font-size:17px;font-weight:800;color:#172b49}
.roster-ocr-sheet .sheet-close{width:34px;height:34px;border-radius:10px;background:#f3f6fb;color:#667892}
.roster-ocr-sheet .sheet-body{padding:18px 22px 22px;max-height:calc(88vh - 70px);overflow:auto}
.roster-ocr{display:flex;flex-direction:column;gap:16px;color:#20334f}
.roster-ocr-intro{display:flex;align-items:center;gap:13px;padding:14px 16px;border:1px solid #e4edf7;border-radius:15px;background:linear-gradient(110deg,#f4f9ff,#f8fbff)}
.roster-ocr-intro-icon{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:13px;background:#e3f0ff;color:#2672d9}
.roster-ocr-intro-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px}
.roster-ocr-intro-copy strong{font-size:15px;font-weight:800;color:#193252}
.roster-ocr-intro-copy span{font-size:12px;color:#8293aa;line-height:1.5}
.roster-ocr-grade{padding:6px 11px;border-radius:9px;background:#e8f2ff;color:#2467c8;font-size:12px;font-weight:800;white-space:nowrap}
.roster-ocr-grid{display:grid;grid-template-columns:minmax(260px,.88fr) minmax(320px,1.12fr);gap:14px;align-items:stretch}
.roster-ocr-card{min-width:0;padding:16px;border:1px solid #e8edf4;border-radius:16px;background:#fff;box-shadow:0 3px 12px rgba(25,48,78,.035)}
.roster-ocr-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.roster-ocr-card-head>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.roster-ocr-card-head strong{font-size:13px;font-weight:800;color:#29415f}
.roster-ocr-card-head span{font-size:11px;color:#91a0b4}
.roster-ocr-step,.roster-ocr-count{padding:5px 9px;border-radius:20px;background:#f1f6fc;color:#66809f!important;font-size:11px!important;font-weight:700;white-space:nowrap}
.roster-ocr-drop{display:flex;width:100%;min-height:260px;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:22px 14px;border:1.5px dashed #b9d3ed;border-radius:14px;background:linear-gradient(145deg,#f8fbff,#f2f8ff);color:#5e7794;cursor:pointer;transition:border-color .18s,background .18s,transform .18s}
.roster-ocr-drop:hover,.roster-ocr-drop.is-dragover{border-color:#3985df;background:#edf6ff;transform:translateY(-1px)}
.roster-ocr-drop[hidden]{display:none}
.roster-ocr-drop-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:#e5f1ff;color:#2677d5}
.roster-ocr-drop strong{font-size:14px;color:#294765}
.roster-ocr-drop>span:not(.roster-ocr-drop-icon){font-size:11px;line-height:1.6;text-align:center}
.roster-ocr-drop-action{margin-top:4px;padding:8px 18px;border-radius:9px;background:#2475d0;color:#fff!important;font-size:12px!important;font-weight:700;box-shadow:0 5px 12px rgba(36,117,208,.18)}
.roster-ocr-preview[hidden]{display:none}
.roster-ocr-preview-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.roster-ocr-preview-head strong{font-size:12px;color:#526982}
.roster-ocr-link{padding:5px 0;background:none;border:0;color:#2475d0;font-size:11px;font-weight:700;cursor:pointer}
.roster-ocr-preview-stage{height:260px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #e4ebf3;border-radius:12px;background:repeating-linear-gradient(45deg,#f8fafc,#f8fafc 8px,#f2f5f9 8px,#f2f5f9 16px)}
.roster-ocr-preview-stage img{display:block;max-width:none;max-height:none;object-fit:contain;transition:transform .2s ease;filter:drop-shadow(0 5px 10px rgba(26,42,64,.14))}
.roster-ocr-photo-tools{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.roster-ocr-tool{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 10px;border:1px solid #e1e9f2;border-radius:9px;background:#fff;color:#5f7691;font-size:11px;font-weight:700;cursor:pointer}
.roster-ocr-tool:hover{border-color:#b6d2f1;background:#f5faff;color:#246fc7}
.roster-ocr-tool:disabled{opacity:.45;cursor:not-allowed}
.roster-ocr-tool-primary{margin-left:auto;border-color:#c7def8;background:#edf6ff;color:#246fc7}
.roster-ocr-tip{display:flex;align-items:flex-start;gap:7px;margin-top:12px;color:#8a9bb0;font-size:11px;line-height:1.6}
.roster-ocr-tip svg{flex:0 0 auto;margin-top:1px;color:#e3a33a}
.roster-ocr-status{display:flex;align-items:flex-start;gap:8px;min-height:38px;padding:10px 11px;border-radius:10px;background:#f3f7fc;color:#6c819a;font-size:11px;line-height:1.55}
.roster-ocr-status-dot{width:7px;height:7px;flex:0 0 7px;margin-top:4px;border-radius:50%;background:#93a7bd}
.roster-ocr-status.is-success{background:#effaf4;color:#278253}
.roster-ocr-status.is-success .roster-ocr-status-dot{background:#28a66a}
.roster-ocr-status.is-error{background:#fff5f2;color:#b95d4d}
.roster-ocr-status.is-error .roster-ocr-status-dot{background:#e07861}
.roster-ocr-quality{display:flex;flex-direction:column;gap:6px;padding:11px 12px;border:1px solid #f2d7cd;border-radius:10px;background:#fff8f5;color:#986253;font-size:11px;line-height:1.6}
.roster-ocr-quality[hidden]{display:none}
.roster-ocr-quality strong{display:flex;align-items:center;gap:6px;color:#ad5947;font-size:12px}
.roster-ocr-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 7px;color:#435b76;font-size:12px;font-weight:800}
.roster-ocr-label span{color:#96a4b7;font-size:10px;font-weight:500}
.roster-ocr-textarea{display:block;width:100%;min-height:260px;padding:13px 14px;border:1px solid #dce6f1;border-radius:11px;outline:none;background:#fbfdff;color:#20344f;font:13px/1.9 inherit;resize:vertical;transition:border-color .15s,box-shadow .15s}
.roster-ocr-textarea:focus{border-color:#77aee9;box-shadow:0 0 0 3px rgba(59,130,210,.10);background:#fff}
.roster-ocr-textarea::placeholder{color:#a7b4c4}
.roster-ocr-result-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;color:#91a0b3;font-size:10px}
.roster-ocr-result-foot>span:first-child{display:flex;align-items:center;gap:5px}
.roster-ocr-result-foot svg{color:#2c9b69}
.roster-ocr-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:14px;border-top:1px solid #edf1f6}
.roster-ocr-footer-note{display:flex;align-items:center;gap:7px;color:#8c9bb0;font-size:10px;line-height:1.5}
.roster-ocr-footer-note svg{flex:0 0 auto;color:#7d9cbd}
.roster-ocr-footer-actions{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.roster-ocr-footer-actions .btn{min-height:40px;padding:0 16px;border-radius:10px;font-size:12px;font-weight:750}
.roster-ocr-footer-actions #k{display:inline-flex;align-items:center;gap:7px;box-shadow:0 5px 12px rgba(31,111,196,.18)}
.roster-ocr-footer-actions #k:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}
@media(max-width:760px){
 .roster-ocr-sheet .sheet{max-width:calc(100vw - 20px);max-height:94vh;border-radius:17px}
 .roster-ocr-sheet .sheet-head{padding:14px 16px 10px}
 .roster-ocr-sheet .sheet-body{padding:13px 13px 16px;max-height:calc(94vh - 58px)}
 .roster-ocr{gap:12px}
 .roster-ocr-intro{padding:11px;gap:10px}
 .roster-ocr-intro-icon{width:38px;height:38px;flex-basis:38px}
 .roster-ocr-intro-copy strong{font-size:13px}
 .roster-ocr-intro-copy span{font-size:10px}
 .roster-ocr-grid{grid-template-columns:1fr;gap:11px}
 .roster-ocr-card{padding:12px}
 .roster-ocr-drop{min-height:180px}
 .roster-ocr-preview-stage{height:210px}
 .roster-ocr-textarea{min-height:180px}
 .roster-ocr-footer{align-items:stretch;flex-direction:column}
 .roster-ocr-footer-actions{justify-content:flex-end}
 .roster-ocr-footer-note{font-size:10px}
}


/* ===== 花名册结构化识别审核表 ===== */
.roster-review-summary{margin:2px 0 9px;padding:9px 11px;border:1px solid #e2eaf5;border-radius:9px;background:#f5f8fd;color:#627894;font-size:11px;line-height:1.55}
.roster-review-scroll{max-height:390px;overflow:auto;border:1px solid #e2eaf2;border-radius:10px;background:#fff}
.roster-review-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:11px}
.roster-review-table th{position:sticky;top:0;z-index:2;height:34px;padding:7px 9px;background:#f2f6fc;color:#60738d;text-align:left;font-weight:750;border-bottom:1px solid #e2eaf2}
.roster-review-table th:first-child,.roster-review-table td:first-child{width:48px;text-align:center}
.roster-review-table th:last-child,.roster-review-table td:last-child{width:68px}
.roster-review-table td{height:39px;padding:4px 7px;border-bottom:1px solid #eef2f7;color:#435873}
.roster-review-table tr:last-child td{border-bottom:0}
.roster-review-table td input{display:block;width:100%;min-width:0;height:29px;padding:4px 7px;border:1px solid #e3eaf3;border-radius:7px;background:#fff;color:#20344f;font:inherit;outline:none}
.roster-review-table td input:focus{border-color:#77aee9;box-shadow:0 0 0 2px rgba(59,130,210,.1)}
.roster-review-table tr.is-incomplete{background:#fffaf3}
.roster-review-table tr.is-incomplete td:last-child{color:#bd7a28}
.roster-review-table td:last-child{font-size:10px;white-space:nowrap}
.roster-review-serial{font-variant-numeric:tabular-nums;color:#8191a6!important;font-weight:700}
.roster-review-empty{text-align:center!important;color:#94a3b8!important;padding:28px!important}
