/* Attendance page (absentees, planned absences, parent reports, corrections) and the missing-registers reminders. */
.att-body{padding:20px 22px 26px}
.att-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px 24px;margin-bottom:12px}
.att-counts{display:flex;flex-wrap:wrap;gap:8px}
.att-count{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;font-size:12px;background:#f0f4f1;color:#3b5548;border:1px solid #dfe7e2}.att-count strong{font-size:14px}
.att-count.st-pending{background:#fbe6e3;border-color:#f0c9c2;color:#8a3d35}.att-count.st-no-answer{background:#fff3c4;border-color:#ecd98a;color:#6b5210}.att-count.st-contacted{background:#eef5f0;border-color:#cfe6d5;color:#2b6b45}.att-count.st-planned{background:#eceff2;border-color:#d9dfe3;color:#4f5d69}
.att-status{display:inline-block;padding:3px 9px;border-radius:6px;font-size:12px;font-weight:700;background:#f0f4f1;color:#3b5548;white-space:nowrap}
.att-status.st-pending{background:#b7443a;color:#fff}.att-status.st-no-answer{background:#f2d465;color:#4a3d05}.att-status.st-contacted{background:#d7e8dd;color:#1f6b3d}.att-status.st-explained{background:#2f8a57;color:#fff}.att-status.st-planned{background:#5b6b7a;color:#fff}.att-status.st-late{background:#eceff2;color:#4f5d69}
.att-status.st-accepted{background:#2f8a57;color:#fff}.att-status.st-declined{background:#eceff2;color:#4f5d69}
.att-table td{vertical-align:top;white-space:normal}.att-table td small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.att-sessions{white-space:nowrap}.att-sessions .reg-dm{margin-right:3px}
.att-known{max-width:340px;font-size:13px;line-height:1.45}
.att-row.st-pending td:first-child{box-shadow:inset 4px 0 0 #b7443a}.att-row.st-no-answer td:first-child{box-shadow:inset 4px 0 0 #f2d465}.att-row.st-planned td:first-child{box-shadow:inset 4px 0 0 #9aa8a1}
.att-follow{display:flex;flex-wrap:wrap;gap:6px;min-width:280px}.att-follow select,.att-follow input{padding:6px 8px;border:1px solid #d4dfd7;border-radius:6px;font:inherit;font-size:12px}.att-follow input{flex:1 1 140px;min-width:0}.att-follow button{padding:6px 10px;font-size:12px}
.att-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:12px 16px;margin:0 0 14px;border-radius:10px;background:#fbe6e3;border:1px solid #f0c9c2;font-size:13px;color:#5a2a25}.att-bulk a.primary{padding:8px 12px;border-radius:7px;font-size:13px;text-decoration:none}.att-bulk small{flex:0 0 100%;color:#8a3d35}
.att-intake,.att-add{margin-top:18px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:#fbfdfc}.att-intake summary{cursor:pointer;font-weight:700;font-size:14px;color:#3b5548}.att-add h3{margin:0 0 4px;font-size:16px}
.att-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 14px;align-items:end;margin-top:10px}.att-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.att-form select,.att-form input{padding:8px 10px;border:1px solid #d4dfd7;border-radius:6px;font:inherit;font-size:13px;color:#233c36;background:#fff;min-width:0}.att-form .att-wide{grid-column:1 / -1}.att-form button{justify-self:start}
.att-note{font-size:12px;color:var(--muted);margin:10px 0 0}
.att-links{font-size:13px;margin:12px 0 0}
.att-decide{justify-content:flex-start;gap:6px;margin:0}.att-decide button{font-size:12px;padding:6px 10px}
.att-mark{display:inline-block;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700;background:#f0f4f1;color:#3b5548}.att-mark.m-present{background:#c9e9d3;color:#1f6b3d}.att-mark.m-absent{background:#f4cbc5;color:#8a3d35}.att-mark.m-late{background:#eceff2;color:#4f5d69}.att-mark.m-skip{background:#ffefa8;color:#6b5210}.att-mark.m-none{background:#fff;border:1px dashed #cfdbd5}
tr.is-past td{opacity:.6}
/* Planned absences on the register: greyed, with the buttons locked for teachers. */
.reg-row.is-planned{background:#eceff2}.reg-row.is-planned .reg-state>span:first-child{color:#4f5d69;font-weight:700}.reg-row.is-planned .reg-mark:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
/* Missing-registers board: reminder control beside a missing or overdue chip. */
.ov-chip-wrap{display:inline-flex;align-items:stretch;gap:2px;position:relative}
.ov-remind{position:relative}.ov-remind summary{list-style:none;display:flex;align-items:center;height:100%;padding:0 6px;border:1px solid #f0c9c2;border-radius:8px;background:#fdf3f1;font-size:14px;cursor:pointer}.ov-remind summary::-webkit-details-marker{display:none}
.ov-remind[open] summary{background:#b7443a;border-color:#b7443a}
.ov-remind-form{position:absolute;z-index:5;top:calc(100% + 6px);left:0;width:300px;padding:12px;border-radius:10px;background:#fff;border:1px solid var(--line);box-shadow:0 10px 24px #1b302b26;display:flex;flex-direction:column;gap:8px;font-size:13px}
.ov-remind-form textarea{width:100%;padding:8px;border:1px solid #d4dfd7;border-radius:6px;font:inherit;font-size:12px;resize:vertical}.ov-remind-form .actions{justify-content:flex-start;gap:8px;margin:0}.ov-remind-form small{color:var(--muted);font-size:11px}
.ov-chip.is-requested{border-style:dashed}.ov-chip.is-requested span{color:#7a5a12;font-weight:700}
@media(max-width:700px){.ov-remind-form{width:260px;left:auto;right:0}.att-follow{min-width:0}}
/* Student photos (item 14): a photo replaces the initials wherever the avatar appears. */
.avatar.has-photo{padding:0;overflow:hidden;background:#e8eee9}.avatar.has-photo img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.avatar-large{width:72px;height:72px;font-size:22px;flex:0 0 72px}
.record-photo{display:flex;gap:14px;align-items:flex-start}.record-photo h3{margin:0 0 4px}.record-photo p{margin:0 0 6px;font-size:13px}.record-photo small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.photo-upload{cursor:pointer;margin-right:10px}
/* Attendance bands (item 19). */
.att-count.band-green{background:#e9f6ec;border-color:#cfe6d5;color:#2b6b45}.att-count.band-amber{background:#fff3c4;border-color:#ecd98a;color:#6b5210}.att-count.band-red{background:#fbe6e3;border-color:#f0c9c2;color:#8a3d35}
.att-band{display:inline-block;padding:3px 9px;border-radius:6px;font-size:12px;font-weight:700}.att-band.band-green{background:#2f8a57;color:#fff}.att-band.band-amber{background:#f2d465;color:#4a3d05}.att-band.band-red{background:#b7443a;color:#fff}
.att-row.band-red td:first-child{box-shadow:inset 4px 0 0 #b7443a}.att-row.band-amber td:first-child{box-shadow:inset 4px 0 0 #f2d465}
.att-flag{color:#a5442c;font-weight:700}
/* Absence heat-map (item 20): six levels, no inline styles. */
.hm-table{border-collapse:separate;border-spacing:4px;font-size:13px}.hm-table th{font-weight:700;color:#3b5548;text-align:center;padding:4px 6px}.hm-table th small{display:block;font-weight:400;font-size:11px;color:var(--muted)}.hm-table th[scope=row]{text-align:right}
.hm-cell{min-width:56px;height:44px;text-align:center;border-radius:8px;font-weight:700;color:#233c36;background:#f0f4f1;border:1px solid #dfe7e2;cursor:help}.hm-cell small{font-weight:400;color:inherit;opacity:.7}
.hm-cell.hm-1{background:#e4f3e8;border-color:#cfe6d5}.hm-cell.hm-2{background:#fdf0c9;border-color:#ecd98a}.hm-cell.hm-3{background:#f9d6a3;border-color:#e5b76a}.hm-cell.hm-4{background:#f0a88f;border-color:#dd8a6c;color:#4a1f18}.hm-cell.hm-5{background:#b7443a;border-color:#b7443a;color:#fff}
.hm-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;font-size:11px}.hm-legend .hm-cell{height:auto;padding:4px 8px;font-weight:400;cursor:default}
/* Group registers (item 17). */
.group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:22px}
.group-card{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fff;border-top:5px solid #9aa8a1}.group-card header h3{margin:2px 0 4px;font-size:18px}.group-card header p{margin:0;font-size:13px;color:var(--muted)}
.group-card.kind-bus{border-top-color:#e5a100}.group-card.kind-trip{border-top-color:#2f8a57}.group-card.kind-thai{border-top-color:#699ec2}.group-card.kind-exam{border-top-color:#5b6b7a}.group-card.kind-lunch{border-top-color:#d9a066}.group-card.group-fire{border-top-color:#b7443a;background:#fff8f7}
.group-last{margin:0;font-size:12px;color:#3b5548}.group-actions{justify-content:flex-start;gap:8px;margin:0;flex-wrap:wrap}.group-actions a.primary{padding:8px 12px;border-radius:7px;font-size:13px;text-decoration:none}
.group-empty{grid-column:1 / -1}
.group-form-surface{padding:18px 22px}.group-form-surface h2{margin:0 0 6px;font-size:18px}
.group-pick-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;max-height:280px;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fbfdfc}
.group-pick{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 6px;border-radius:6px;cursor:pointer}.group-pick:hover{background:#eef5f0}.group-pick input{width:18px;height:18px}.group-pick small{color:var(--muted)}
.group-members{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.group-members li{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 4px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:13px}.group-members li small{color:var(--muted);margin-left:4px}.group-members .reg-clear{width:26px;height:26px;font-size:14px}
.group-form-actions{justify-content:flex-start;gap:8px}
/* Fire evacuation register: big tick boxes for a phone at the assembly point. */
.fire-surface{padding:16px 18px}.fire-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;margin-bottom:12px}
.fire-counts{display:flex;flex-wrap:wrap;gap:8px}.fire-count{padding:8px 12px;border-radius:10px;background:#f0f4f1;border:1px solid #dfe7e2;font-size:13px}.fire-count strong{font-size:20px;margin-right:4px}.fire-count.is-clear{background:#e9f6ec;border-color:#cfe6d5;color:#1f6b3d}.fire-count.fire-missing{background:#fbe6e3;border-color:#f0c9c2;color:#8a3d35}.fire-count.fire-unknown{background:#fff3c4;border-color:#ecd98a;color:#6b5210}
.fire-missing-list{font-size:13px;line-height:1.6;padding:10px 14px;border-radius:8px;background:#fbe6e3;color:#5a2a25;margin:0 0 12px}
.fire-class{margin-bottom:16px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.fire-class header{display:flex;justify-content:space-between;align-items:baseline;padding:10px 14px;background:#f3f6f5;border-bottom:1px solid var(--line)}.fire-class header h3{margin:0;font-size:16px}.fire-class header span{font-size:12px;color:var(--muted)}.fire-class.is-clear header{background:#e9f6ec}
.fire-list{list-style:none;margin:0;padding:0}.fire-row{border-top:1px solid #eef2ef}.fire-row:first-child{border-top:0}.fire-row label{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;min-height:56px}.fire-row input{width:26px;height:26px;flex:0 0 26px}.fire-name{display:flex;flex-direction:column;font-size:16px}.fire-name small{font-size:12px;color:var(--muted)}.fire-row em{margin-left:auto;font-style:normal;font-size:12px;color:#1f6b3d;font-weight:700}
.fire-row.is-ticked{background:#e9f6ec}.fire-row.st-out label{opacity:.5;cursor:default}.fire-row.st-unknown .fire-name small{color:#6b5210}
