/* Presentation only: do not change packed timetable coordinates or block width. */
@media(min-width:1200px){
 #schedule-list.schedule-list{grid-template-columns:repeat(6,minmax(0,1fr))}
 #schedule-list .gallery-card-head{grid-template-columns:24px minmax(0,1fr) auto;gap:4px}
 #schedule-list .gallery-card-head .profile-avatar{width:24px;height:28px;font-size:12px}
 #schedule-list .gallery-card-head .attendance{font-size:8px;padding:3px 4px}
}
#schedule-list .v4-student-card{box-shadow:inset 3px 0 var(--attendance-accent,#dce4ef)}
#schedule-list .attendance-present-card{--attendance-accent:#94b7d7;background:#f1f6fc;border-color:#cbdceb}
#schedule-list .late-arrival-alert{--attendance-accent:#c8a15b;background:#fffbf2;border-color:#eadcbf}
#attendance-board-list .attendance-board-card{box-shadow:inset 3px 0 var(--attendance-accent,#c8d5e6)}
#attendance-board-list .attendance-present-card{--attendance-accent:#94b7d7;background:#f1f6fc;border-color:#cbdceb}
#attendance-board-list .attendance-missing-card{--attendance-accent:#d2a0a7;background:#fff5f6;border-color:#ead3d7}
#attendance-board-list .late-arrival-alert{--attendance-accent:#c8a15b;background:#fffbf2;border-color:#eadcbf}
#schedule-board .compact-live-week .compact-lesson.subject-수학{background:#e0edfc!important;color:#243d5a}
#schedule-board .compact-live-week .compact-lesson.subject-영어{background:#e1f3e9!important;color:#284b3b}
#schedule-board .compact-live-week .compact-lesson.subject-국어{background:#f7e3ed!important;color:#624054}
#schedule-board .compact-live-week .compact-lesson.subject-사회{background:#ece6f8!important;color:#4e4268}
#schedule-board .compact-live-week .compact-lesson.subject-과학{background:#fbf1d3!important;color:#65562c}
#schedule-board .compact-live-week .compact-lesson.subject-역사{background:#fae8dc!important;color:#674a35}
#schedule-board .compact-live-week .compact-lesson.is-attending{border-color:#b2c7da!important;box-shadow:inset 0 -2px #729aae!important}
#schedule-board .compact-live-week .compact-lesson.is-finished{border-color:#9da9b8!important;box-shadow:inset 0 -2px #9da9b8!important}
#schedule-board .compact-live-week .compact-lesson.is-absent{border-color:#ca8994!important;box-shadow:inset 0 -2px #ca8994!important}
#schedule-board .compact-live-week .compact-lesson.is-paused,#schedule-board .compact-live-week .compact-lesson.is-waiting{border-color:#c59a48!important}
#schedule-board .compact-lesson.branch-jorye::after,#schedule-board .compact-lesson.branch-wangji::after{content:'';position:absolute;top:0;right:0;width:9px;height:9px;clip-path:polygon(0 0,100% 0,100% 100%);background:#0066ff;pointer-events:none}
#schedule-board .compact-lesson.branch-wangji::after{background:#e85d04}
#schedule-board .compact-live-week .compact-lesson .compact-subject-branch{display:block;flex-shrink:0;font-size:8px;line-height:1.2;max-width:100%;white-space:nowrap;overflow-wrap:normal;word-break:keep-all;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.25px}
#schedule-board .compact-live-week .compact-lesson i{font-size:10px;font-weight:650;margin-top:2px}
.attendance-subject-branches{display:flex;align-items:center;gap:3px;flex-wrap:wrap;min-width:0;font-size:8px;line-height:1.3}
.attendance-subject-branches>span:not(.subject-flow-arrow){padding:2px 3px;border-radius:4px;position:relative;overflow-wrap:anywhere}
.attendance-subject-branches .branch-jorye{border-right:2px solid #0066ff}
.attendance-subject-branches .branch-wangji{border-right:2px solid #e85d04}
.attendance-subject-branches .subject-flow-arrow{color:#8a97aa}
.sequential-attendance-card{display:flex;flex-direction:column;gap:3px}
.sequential-attendance-card>div:first-child{min-height:0;flex-shrink:0}
.sequential-attendance-card>div:first-child>small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.attendance-subject-times{margin-top:auto;min-height:0;overflow-y:auto;flex-shrink:1}
.attendance-subject-time{display:flex;align-items:center;justify-content:space-between;gap:3px;min-height:17px}
.attendance-subject-time>b{font-size:9px;white-space:nowrap;color:#285a9e;font-variant-numeric:tabular-nums}
.sequential-attendance-card .attendance-remaining{display:flex;align-items:center;justify-content:space-between;padding:4px 0 0;border-top:1px solid #d7e3f0;border-radius:0;background:transparent;flex-shrink:0}
.sequential-attendance-card .unified-attendance-actions{flex-shrink:0}
#attendance-board-list .status-checked_out,#schedule-list .status-checked_out{--attendance-accent:#a3afbd;background:#f4f6f9;border-color:#d8dfe8}
#attendance-board-list .status-absent,#schedule-list .status-absent{--attendance-accent:#ca8994;background:#fff5f6;border-color:#ead3d7}
#attendance-board-list .status-late,#schedule-list .status-late,#attendance-board-list .status-paused{--attendance-accent:#c8a15b;border-color:#eadcbf}
.modal-card [data-rule-row]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 100px auto}
@media(max-width:480px){.modal-card [data-rule-row]{grid-template-columns:1fr 1fr}.modal-card [data-rule-row] button{align-self:end}}
/* Approved compact card: fixed outer height, unchanged grid columns. */
#attendance-board-list .sequential-attendance-card{box-sizing:border-box;height:244px;padding:12px 10px;gap:7px;container-type:inline-size;background:#fafbfd;border-color:#dde3ed;--attendance-accent:#c5d0de}
.attendance-card-heading{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0}
#attendance-board-list .attendance-card-heading h3{font-size:clamp(14px,10cqw,17px);margin:0;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#attendance-board-list .attendance-card-heading .attendance{flex-shrink:0;font-size:clamp(8px,6cqw,10px);padding:3px 4px;white-space:nowrap}
#attendance-board-list .sequential-attendance-card>div:first-child>small{font-size:10px;margin-top:6px}
#attendance-board-list .attendance-subject-times{display:flex;flex-direction:column;gap:6px}
#attendance-board-list .attendance-subject-time{min-height:24px;flex-shrink:0;gap:4px}
#attendance-board-list .attendance-subject-time .attendance-subject-branches{font-size:clamp(9px,7cqw,12px);flex-wrap:nowrap;overflow:hidden}
#attendance-board-list .attendance-subject-time .attendance-subject-branches>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:keep-all}
#attendance-board-list .attendance-subject-time>b{font-size:clamp(10px,8cqw,13px);flex-shrink:0}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions{margin:0;gap:3px}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions button{min-height:28px;height:28px;padding:3px;min-width:0}
#attendance-board-list .sequential-attendance-card .attendance-remaining{min-height:30px;padding-top:8px;gap:3px;white-space:nowrap}
#attendance-board-list .sequential-attendance-card .attendance-remaining span{font-size:clamp(8px,6cqw,10px)}
#attendance-board-list .sequential-attendance-card .attendance-remaining strong{font-size:clamp(12px,9cqw,16px);white-space:nowrap}
#attendance-board-list .sequential-attendance-card.status-present{background:#edf5ff;border-color:#c6daf0;--attendance-accent:#8db5dc}
#attendance-board-list .sequential-attendance-card.status-late{background:#f2f5ff;border-color:#d3d9ee;--attendance-accent:#a0abd0}
#attendance-board-list .sequential-attendance-card.status-paused{background:#fff8e7;border-color:#ead6a8;--attendance-accent:#d3b16d}
#attendance-board-list .sequential-attendance-card.status-checked_out{background:#f0f2f5;border-color:#d6dce5;--attendance-accent:#a7b1c0}
#attendance-board-list .sequential-attendance-card.status-absent{background:#fff0f0;border-color:#edd1d1;--attendance-accent:#d8a0a0}
/* Preserve the preview proportions while filling eight desktop columns. */
#attendance-board-list.attendance-board-grid{--attendance-columns:8;container-type:inline-size;grid-template-columns:repeat(var(--attendance-columns),minmax(0,1fr));gap:8px;justify-content:stretch}
#attendance-board-list .sequential-attendance-card{width:208px;max-width:100%;border-radius:10px;line-height:1.3;font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;animation:none}
#attendance-board-list .attendance-card-heading{gap:5px}
#attendance-board-list .attendance-card-heading h3{font-size:17px;font-weight:700;line-height:1.25;color:#202b40}
#attendance-board-list .attendance-card-heading .attendance{font-size:10px;padding:3px 5px;line-height:1.3;border-radius:12px;background:#dcf0df;color:#4d865e}
#attendance-board-list .sequential-attendance-card>div:first-child>small{line-height:1.4;margin-top:7px;color:#788aa4}
#attendance-board-list .attendance-subject-time .attendance-subject-branches{font-size:12px;font-weight:600;line-height:1.3}
#attendance-board-list .attendance-subject-time .attendance-subject-branches>span{padding:3px 5px;border-radius:4px;background:#dceaff;color:#345ec0}
#attendance-board-list .attendance-subject-time .attendance-subject-branches>.subject-영어{background:#d9fbe6;color:#397851}
#attendance-board-list .attendance-subject-time .attendance-subject-branches>.subject-과학{background:#eae3ff;color:#715299}
#attendance-board-list .attendance-subject-time>b{font-size:13px;font-weight:700;line-height:1.3}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions{display:flex!important;gap:4px!important;margin-top:2px}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions button{width:34px!important;flex:0 0 34px;height:28px!important;border-radius:8px;border-color:#d9e4f2}
#attendance-board-list .sequential-attendance-card .attendance-remaining span{font-size:10px;color:#73839b}
#attendance-board-list .sequential-attendance-card .attendance-remaining strong{font-size:16px;color:#285a9e;line-height:1.3}
#attendance-board-list .status-paused .attendance-card-heading .attendance{background:#fff0ce;color:#926a19}
#attendance-board-list .status-checked_out .attendance-card-heading .attendance{background:#e1e6ed;color:#64748b}
#attendance-board-list .status-late .attendance-card-heading .attendance{background:#e4e8fa;color:#5f6e9d}
#attendance-board-list .status-scheduled .attendance-card-heading .attendance{background:#e9edf3;color:#68788f}
#attendance-board-list .status-absent .attendance-card-heading .attendance{background:#f6dddd;color:#a35f5f}
#attendance-board-list .sequential-attendance-card{--card-unit:calc((100cqw - (var(--attendance-columns) - 1)*8px)/var(--attendance-columns)/208);container-type:normal;width:100%;height:calc(var(--card-unit)*244);padding:calc(var(--card-unit)*12) calc(var(--card-unit)*10);gap:calc(var(--card-unit)*7);border-radius:calc(var(--card-unit)*10)}
#attendance-board-list .attendance-card-heading{gap:calc(var(--card-unit)*5)}
#attendance-board-list .attendance-card-heading h3{font-size:calc(var(--card-unit)*17)}
#attendance-board-list .attendance-card-heading .attendance{font-size:calc(var(--card-unit)*10);padding:calc(var(--card-unit)*3) calc(var(--card-unit)*5)}
#attendance-board-list .sequential-attendance-card>div:first-child>small{font-size:calc(var(--card-unit)*10);margin-top:calc(var(--card-unit)*7)}
#attendance-board-list .attendance-subject-times{gap:calc(var(--card-unit)*6)}
#attendance-board-list .attendance-subject-time{min-height:calc(var(--card-unit)*24);gap:calc(var(--card-unit)*4)}
#attendance-board-list .attendance-subject-time .attendance-subject-branches{font-size:calc(var(--card-unit)*12)}
#attendance-board-list .attendance-subject-time .attendance-subject-branches>span{padding:calc(var(--card-unit)*3) calc(var(--card-unit)*5)}
#attendance-board-list .attendance-subject-time>b{font-size:calc(var(--card-unit)*13)}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions{gap:calc(var(--card-unit)*4)!important;margin-top:calc(var(--card-unit)*2)}
#attendance-board-list .sequential-attendance-card .unified-attendance-actions button{width:calc(var(--card-unit)*34)!important;flex:0 0 calc(var(--card-unit)*34);height:calc(var(--card-unit)*28)!important;min-height:0;border-radius:calc(var(--card-unit)*8);font-size:calc(var(--card-unit)*16)}
#attendance-board-list .unified-attendance-actions button svg{width:calc(var(--card-unit)*16)!important;height:calc(var(--card-unit)*16)!important}
#attendance-board-list .sequential-attendance-card .attendance-remaining{min-height:calc(var(--card-unit)*30);padding-top:calc(var(--card-unit)*8);gap:calc(var(--card-unit)*3)}
#attendance-board-list .sequential-attendance-card .attendance-remaining span{font-size:calc(var(--card-unit)*10)}
#attendance-board-list .sequential-attendance-card .attendance-remaining strong{font-size:calc(var(--card-unit)*16)}
#attendance-board-list .sequential-attendance-card .late-arrival-message{font-size:calc(var(--card-unit)*8);padding:calc(var(--card-unit)*4)}
@media(max-width:800px){#attendance-board-list.attendance-board-grid{--attendance-columns:4}}
@media(max-width:480px){#attendance-board-list.attendance-board-grid{--attendance-columns:2}}
/* Both student scopes share the same card footprint; attendance actions stay local. */
#teacher{--student-card-height:184px}
#teacher #schedule-list,#teacher #attendance-board-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;container-type:normal}
#teacher #schedule-list .v4-student-card,#teacher #attendance-board-list .sequential-attendance-card{height:var(--student-card-height);min-height:var(--student-card-height);width:100%;box-sizing:border-box;padding:12px;border-radius:12px;gap:7px}
#teacher #attendance-board-list .sequential-attendance-card{--card-unit:1px;padding:9px 12px;gap:4px}
#teacher .gallery-subject-tags{display:flex;gap:4px;align-items:center;flex-wrap:wrap;min-height:22px}
#teacher .gallery-subject-tags>span{font-size:11px;line-height:1.3;font-weight:600;padding:3px 6px;border-radius:5px}
#teacher .gallery-subject-tags>small{font-size:10px;color:#778399}
#teacher #attendance-board-list .attendance-card-heading h3{font-size:14px}
#teacher #attendance-board-list .attendance-card-heading .attendance{font-size:8px;padding:3px 4px}
#teacher #attendance-board-list .sequential-attendance-card>div:first-child>small{font-size:9px;margin-top:4px}
#teacher #attendance-board-list .attendance-subject-times{gap:3px}
#teacher #attendance-board-list .attendance-subject-time{min-height:17px}
#teacher #attendance-board-list .attendance-subject-branches>span{padding:2px 4px}
#teacher #attendance-board-list .attendance-subject-branches{font-size:10px}
#teacher #attendance-board-list .attendance-subject-time>b{font-size:11px}
#teacher #attendance-board-list .unified-attendance-actions{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:4px!important}
#teacher #attendance-board-list .unified-attendance-actions button{width:100%!important;height:23px!important}
#teacher #attendance-board-list .attendance-remaining{min-height:22px;padding-top:4px}
#teacher #attendance-board-list .attendance-remaining span{font-size:9px}
#teacher #attendance-board-list .attendance-remaining strong{font-size:14px}
#teacher #attendance-board-list .late-arrival-message{display:none}
#teacher #attendance-board{margin-top:14px}
#teacher #attendance-board-list [hidden]{display:none!important}
@media(max-width:1199px){#teacher #schedule-list,#teacher #attendance-board-list{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){#teacher #schedule-list,#teacher #attendance-board-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){#teacher #schedule-list,#teacher #attendance-board-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Subject palette only; attendance status and branch accents remain unchanged. */
.subject-수학{--subject-bg:#c7ddff;--subject-fg:#1746a2}
.subject-영어{--subject-bg:#cceee8;--subject-fg:#12665c}
.subject-국어{--subject-bg:#e6ddf5;--subject-fg:#654197}
.subject-과학{--subject-bg:#f8edc9;--subject-fg:#80631e}
.subject-사회{--subject-bg:#f7e6d8;--subject-fg:#92582d}
.subject-역사{--subject-bg:#e9edf2;--subject-fg:#56677d}
#teacher #schedule-list .gallery-subject-tags>span,
#teacher #attendance-board-list .attendance-subject-branches>span,
#schedule-board .compact-live-week .compact-lesson,
#schedule-board .compact-live-week .compact-legend-item>i{background:var(--subject-bg)!important;color:var(--subject-fg)!important}
