/* School attendance sheet, scoped to the study area. */
#masa .study-grid{grid-template-columns:minmax(0,1.12fr) minmax(390px,1fr);align-items:start}
#masa .video{width:100%;min-width:0;aspect-ratio:auto;min-height:300px;gap:10px;padding:20px}#masa .video .time{font-size:54px;line-height:1}#masa .video button{flex-shrink:0;width:44px;height:44px}
.rollcall{min-width:0;position:relative;padding:0 0 7px}
.rollcall-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 5px 15px}
.rollcall-live{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#355b20}
.rollcall-live::before{content:'';width:8px;height:8px;background:#639835;border-radius:50%}
.rollcall-live.closed{color:var(--muted)}.rollcall-live.closed::before{background:#858b98}
.rollcall-bar>span{font-size:11px;color:var(--muted)}
.attendance-paper{position:relative;background:#fffef9;border:1px solid #dfdfd1;border-radius:5px 5px 16px 5px;box-shadow:4px 5px 0 -1px #eeeee4,4px 5px 0 0 #deded2,0 10px 30px #00135108;padding:27px 23px 23px;isolation:isolate}
.attendance-paper::before{content:'';position:absolute;left:43px;top:0;bottom:0;width:1px;background:#dc7d7d28;z-index:-1}
.paper-kicker{font-size:10px;letter-spacing:2px;font-weight:700;color:#6c7587;margin-bottom:9px}
.paper-heading{display:flex;justify-content:space-between;align-items:start;gap:12px}
.paper-heading h3{font-family:Georgia,'Times New Roman',serif;font-size:33px;letter-spacing:-1.1px;line-height:1.12;font-weight:400;margin:0}
.paper-heading h3 i{color:#315692;font-weight:400}
.attendance-stamp{border:2px solid #548544;color:#416d35;transform:rotate(8deg);padding:7px 9px;text-align:center;font:700 11px 'DM Sans',sans-serif;letter-spacing:1.6px;line-height:1.4;flex-shrink:0;border-radius:5px;margin-top:9px;box-shadow:inset 0 0 0 2px #fffef9,inset 0 0 0 3px #54854455}
.attendance-stamp.closed{color:#757a83;border-color:#989da5;box-shadow:none}
.paper-meta{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;color:#6c7587;border-bottom:1px solid #ccd5e1;padding:17px 0 14px}
.paper-meta b{font-weight:600;color:var(--navy)}
.attendance-counts{display:flex;gap:25px;padding:17px 0}
.attendance-counts div{display:flex;align-items:baseline;gap:7px}
.attendance-counts strong{font:800 27px Manrope,Arial;letter-spacing:-1px}
.attendance-counts span{font-size:11px;color:var(--muted)}
.rollcall-tabs{display:flex;border-bottom:1px solid #d8dfeb;gap:17px}
.rollcall-tabs button{border:0;background:none;padding:10px 0 11px;color:var(--muted);font-size:12px;position:relative}
.rollcall-tabs button[aria-pressed=true]{color:var(--blue);font-weight:700}
.rollcall-tabs button[aria-pressed=true]::after{content:'';height:2px;background:var(--blue);position:absolute;bottom:-1px;left:0;right:0}
.attendance-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px}
.attendance-table caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.attendance-table th{font-size:10px;font-weight:500;letter-spacing:.5px;color:#798092;padding:12px 4px 9px;border-bottom:1px solid #dfe5ec}
.attendance-table td{padding:10px 4px;border-bottom:1px solid #dfe5ec;vertical-align:middle;height:57px}
.attendance-table .number-col{width:25px}.attendance-table .time-col{width:47px}.attendance-table .state-col{width:64px}
.attendance-table .roll-number{color:#8b94a4;font:11px 'DM Sans',sans-serif}
.roll-person{display:flex;align-items:center;gap:8px;min-width:0}
.roll-person .avatar{width:31px;height:31px;border:1px solid #e5e9e0;flex-shrink:0}
.roll-person .roll-name{font-size:12px;font-weight:600;overflow-wrap:anywhere;line-height:1.3}
.roll-person .self-label{font-size:10px;font-weight:400;color:#64834b;display:block;margin-top:2px}
.roll-time{font-size:11px;font-variant-numeric:tabular-nums;color:#747c8a}
.roll-status{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#456d38;white-space:nowrap}
.roll-status::before{content:'✓';font-weight:700;font-size:15px}
.roll-status.away{color:#818693}.roll-status.away::before{content:'–'}
.attendance-table tr.self-row{background:#c1f75822}
.attendance-table tr.arrival{animation:row-arrive 1.3s ease-out}
.attendance-table tr.arrival .roll-status::before{animation:ink-mark .4s ease-out}
.empty-roll td{text-align:center;color:var(--muted);padding:24px 10px;font-size:12px}
.sheet-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:#7b8190;margin:11px 0 19px}
.sheet-bottom b{color:#546c45;font-weight:500}
.signature-area{padding-top:17px;border-top:1px dashed #c8cdbf}
.signature-line{display:flex;gap:12px;align-items:center;margin-bottom:13px}
.signature-line .avatar{width:41px;height:41px;border:2px solid #fff;flex-shrink:0}
.signature-line strong{font-size:13px;display:block}.signature-line small{font-size:11px;color:var(--muted);display:block;margin-top:4px}
.signature-area .btn{width:100%;padding:14px;background:var(--navy);font-size:13px}
.signature-area .btn.signed{color:#315b21;background:#e3efcf}
.signature-area .btn:disabled:not(.signed){background:#e6e8df;color:#7b8090}
.signature-area #checkin-state{font-size:11px;text-align:center;line-height:1.6;color:#747b88;margin-top:9px}
.rollcall-event{font-size:11px;line-height:1.5;margin:14px 5px 0;min-height:17px;color:var(--muted)}
.rollcall-event strong{color:var(--navy);font-weight:600}
.rollcall-demo{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:11px 5px 0;border-top:1px solid var(--line);padding-top:12px}
.rollcall-demo span{font-size:10px;color:var(--muted);max-width:230px;line-height:1.5}
.rollcall-demo button{border:1px solid #d9dfd0;border-radius:8px;padding:9px 11px;background:transparent;color:var(--navy);font-size:11px;white-space:nowrap;min-height:36px}
.study-week{padding-top:22px;margin-top:22px;border-top:1px solid var(--line)}
.study-week-label{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}.study-week-label span{color:var(--muted);font-size:11px}
.study-week .week{margin:17px 0 0}.study-week .day b{background:#e7efd9}.study-week .day.today b{background:var(--lime)}
.presence-explanation{font-size:11px;color:var(--muted);line-height:1.7;margin:17px 4px 0}.presence-explanation strong{font-weight:600;color:#53617a}
@keyframes row-arrive{0%{background:#c1f75880}100%{background:transparent}}
@keyframes ink-mark{from{transform:scale(1.6) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
@media(max-width:1000px){#masa .study-grid{grid-template-columns:1fr 1fr;gap:18px}.attendance-paper{padding:23px 16px 20px}.paper-heading h3{font-size:28px}.attendance-stamp{font-size:10px;padding:6px}.attendance-counts{gap:15px}.attendance-counts strong{font-size:24px}.roll-person{gap:5px}.roll-person .avatar{width:27px;height:27px}.attendance-table .state-col{width:58px}.attendance-table .time-col{width:42px}.attendance-table .number-col{width:21px}}
@media(max-width:760px){#masa .study-grid{grid-template-columns:1fr;gap:27px}.attendance-paper{padding:25px 22px 21px}.paper-heading h3{font-size:34px}.roll-person .avatar{width:34px;height:34px}.roll-person{gap:9px}.attendance-counts{gap:28px}.attendance-counts strong{font-size:29px}.attendance-table .number-col{width:26px}.attendance-table .time-col{width:50px}.attendance-table .state-col{width:69px}.attendance-table td{height:60px}.roll-person .roll-name{font-size:13px}.roll-status{font-size:12px}.attendance-table th{font-size:11px}}
@media(max-width:390px){.attendance-paper{padding:23px 14px 18px}.paper-heading h3{font-size:29px}.attendance-stamp{font-size:9px;padding:6px}.attendance-counts{gap:18px}.attendance-counts span{font-size:10px}.roll-person .avatar{width:27px;height:27px}.roll-person{gap:5px}.roll-person .roll-name{font-size:11px}.attendance-table .number-col{width:21px}.attendance-table .time-col{width:40px}.attendance-table .state-col{width:55px}.roll-status{font-size:10px}.rollcall-demo{gap:8px}.rollcall-demo span{max-width:165px}}
@media(prefers-reduced-motion:reduce){.attendance-table tr.arrival,.attendance-table tr.arrival .roll-status::before{animation:none}}
