.person-section-head,.teacher-hero,.teacher-card{display:flex;align-items:center;justify-content:space-between;gap:16px}.person-section-head{flex-wrap:wrap}.person-section-head h2{margin:0}.person-filters{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;align-items:end;margin-bottom:22px}.teacher-avatar{width:48px;height:48px;border-radius:16px;background:var(--soft);color:var(--green);display:grid;place-items:center;font-size:24px;flex-shrink:0}.teacher-avatar.large{width:76px;height:76px;font-size:34px}.teacher-card{padding:18px 0;border-bottom:1px solid var(--border)}.teacher-card-info{flex:1;min-width:0}.teacher-card-info strong{display:block;font-size:19px}.teacher-card-info small{display:block;color:var(--muted);margin:6px 0}.teacher-hero>div:nth-child(2){flex:1}.attendance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:20px}.attendance-metric{border:1px solid var(--border);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:7px}.attendance-metric>span{color:var(--muted);font-size:14px}.attendance-metric strong{font-size:25px}.attendance-metric strong small{font-size:13px;font-weight:400}.attendance-metric.present{border-top:3px solid #26a182}.attendance-metric.absent{border-top:3px solid #d87b77}.attendance-metric.excused{border-top:3px solid #d1a852}.attendance-note{font-size:13px;line-height:1.9;margin-top:18px}.attendance-badge{font-size:12px;white-space:nowrap;margin:4px}.attendance-day-summary{display:flex;gap:10px;flex-wrap:wrap;border-block:1px solid var(--border);padding:18px 0}.attendance-count{background:var(--soft);padding:8px 14px;border-radius:12px;font-size:14px;display:flex;gap:12px}.attendance-count.absent{background:#fcebe9;color:#8b4541}.attendance-count.excused{background:#fbf0d4;color:#81601c}.attendance-count.unmarked{background:var(--bg);color:var(--muted)}.attendance-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:16px;align-items:center;padding:20px 0;border-bottom:1px solid var(--border)}.attendance-person strong,.attendance-person small{display:block}.attendance-person small{color:var(--muted);margin-top:6px}.attendance-options{display:flex;gap:7px;flex-wrap:wrap}.attendance-choice{border:1px solid var(--border);background:var(--card,#fff);color:var(--text);border-radius:11px;padding:9px 15px;font:inherit;font-size:14px;cursor:pointer}.attendance-choice.selected.present{background:#16846e;border-color:#16846e;color:#fff}.attendance-choice.selected.absent{background:#b95956;border-color:#b95956;color:#fff}.attendance-choice.selected.excused{background:#9a751e;border-color:#9a751e;color:#fff}.attendance-choice:disabled{opacity:.65;cursor:default}.attendance-excuse{grid-column:1/-1;margin-right:auto;width:min(100%,450px)}.attendance-savebar{position:sticky;bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px;background:var(--card,#fff);border:1px solid var(--border);border-radius:16px;box-shadow:0 6px 24px #0000000c;z-index:2}.attendance-savebar>span{font-size:14px;color:var(--muted)}.dark .attendance-choice,.dark .attendance-savebar{background:#1e2c31;color:#e5efec}.dark .attendance-choice.selected{color:#fff}.dark .attendance-choice.selected.present{background:#16846e}.dark .attendance-choice.selected.absent{background:#b95956}.dark .attendance-choice.selected.excused{background:#9a751e}.dark .attendance-count.absent{background:#4a2f33;color:#f6b8b4}.dark .attendance-count.excused{background:#463d24;color:#edcf8e}@media(max-width:768px){.person-filters{grid-template-columns:1fr 1fr}.person-filters>label:last-child{grid-column:1/-1}.attendance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-row{grid-template-columns:1fr;gap:12px}.attendance-options{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:5px}.attendance-choice{padding:10px 8px;white-space:nowrap;font-size:13px}.teacher-hero{flex-wrap:wrap}.teacher-hero>.actions{width:100%}.teacher-card{gap:10px;flex-wrap:wrap}.teacher-card-info{min-width:145px}.teacher-avatar{width:40px;height:40px}.attendance-savebar{bottom:8px}.attendance-count{padding:7px 9px}.person-section-head .actions{width:100%}}
.roll-dialog{width:min(1200px,calc(100vw - 32px));height:min(900px,calc(100dvh - 32px));max-width:none;max-height:none;padding:0;border:1px solid var(--border);border-radius:22px;overflow:hidden;color:var(--text);background:var(--card,#fff)}.roll-dialog::backdrop{background:rgba(8,32,27,.65);backdrop-filter:blur(3px)}.roll-dialog[open]{display:flex;flex-direction:column}.roll-header{background:#0d5547;color:#fff;padding:21px 26px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0}.roll-header h2{color:#fff;font-size:25px;margin:5px 0}.roll-header p{margin:0;color:#d3e9e2;font-size:14px}.roll-step-label{font-size:12px;color:var(--green);display:block;margin-bottom:8px}.roll-header .roll-step-label{color:#bde9da;margin:0}.roll-exit{border:1px solid #ffffff55;background:transparent;color:#fff;border-radius:10px;padding:9px 12px;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}.roll-dialog form{display:flex;flex-direction:column;min-height:0;flex:1;margin:0;overflow:hidden}.roll-dialog #roll-error:empty{display:none}.roll-dialog #roll-error{padding:9px 22px;margin:0;font-size:13px;flex-shrink:0}.roll-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:14px 24px 8px;flex-shrink:0}.roll-search{width:min(390px,50%);font-size:12px}.roll-search input{padding:9px 13px;min-height:38px;margin-top:4px}.roll-filters{display:flex;gap:6px}.roll-filters button{border:1px solid var(--border);background:transparent;color:var(--text);padding:9px 14px;font:inherit;font-size:13px;border-radius:10px;cursor:pointer}.roll-filters button[aria-pressed=true]{background:var(--soft);border-color:var(--green);color:var(--green)}.roll-session-note{padding:4px 24px;color:var(--muted);font-size:12px;flex-shrink:0}.roll-counts{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.roll-dialog #roll-counts{padding:8px 24px 12px;flex-shrink:0}.roll-count{display:inline-flex;gap:9px;padding:5px 10px;border-radius:8px;background:var(--soft);color:var(--green);font-size:12px}.roll-count.absent{background:#fcebe9;color:#934a45}.roll-count.excused{background:#fbf0d4;color:#85631e}.roll-count.unmarked{background:var(--bg);color:var(--muted)}.roll-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:2px 24px 10px}.roll-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px 11px;align-content:start;align-items:start}.roll-person{border:1px solid var(--border);border-radius:10px;padding:7px 9px;min-height:52px;display:flex;align-items:center;gap:5px;flex-wrap:wrap;background:var(--card,#fff)}.roll-person.absent{border-color:#d9a6a1;background:#fff6f5}.roll-person.excused{border-color:#d7bf80;background:#fffbef}.roll-person-label{display:flex;flex-direction:row;align-items:center;gap:9px;cursor:pointer;flex:1;min-width:0;margin:0}.roll-person-label input{width:19px;height:19px;min-height:0;accent-color:#b85b53;flex-shrink:0;margin:0;cursor:pointer}.roll-person-name{min-width:0;flex:1;display:block}.roll-person-name strong{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.6}.roll-person-name small{font-size:10px;display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5}.roll-state{font-size:10px;color:var(--muted);white-space:nowrap}.roll-person.absent .roll-state{color:#a04e48}.roll-person.excused .roll-state{color:#85631e}.roll-excused{border:0;background:transparent;color:#8a6922;border-radius:6px;padding:4px 6px;font:inherit;font-size:10px;cursor:pointer}.roll-excused.selected{background:#f6e8ba}.roll-excuse{flex-basis:100%;font-size:10px;margin:1px 0 0}.roll-excuse input{font-size:12px;min-height:30px;padding:5px 8px;margin-top:3px;background:transparent}.roll-pager{display:flex;justify-content:center;align-items:center;gap:18px;font-size:12px;padding:9px 24px;flex-shrink:0;border-top:1px solid var(--border)}.roll-pager button{padding:6px 13px}.roll-footer{margin:0;border-top:1px solid var(--border);padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;background:var(--card,#fff)}.roll-footer>div:first-child strong{display:block;font-size:13px;color:#956d24}.roll-footer small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.roll-footer .primary,.roll-footer .secondary{font-size:14px;padding:11px 18px}.roll-setup{max-width:1000px}.roll-setup>.person-filters{grid-template-columns:1fr 1.3fr auto}.roll-setup-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;border-block:1px solid var(--border);padding:20px 0}.roll-setup-summary>strong{font-size:23px}.roll-instructions{display:flex;gap:16px;align-items:center;margin:25px 0}.roll-instructions>span{font-size:34px}.roll-instructions p{color:var(--muted);font-size:14px;line-height:1.9;margin:6px 0 0}.roll-review-screen{padding:24px 35px;overflow:auto;flex:1;min-height:0;text-align:center}.roll-review-icon{display:grid;place-items:center;border-radius:50%;width:55px;height:55px;margin:0 auto 13px;background:var(--soft);color:var(--green);font-size:27px}.roll-review-screen h3{font-size:24px;margin:0}.roll-review-screen>p{color:var(--muted);font-size:14px}.roll-review-counts{justify-content:center;margin:20px 0}.roll-review-counts .roll-count{padding:12px 19px;font-size:17px}.roll-review-absent{text-align:right;max-width:640px;margin:20px auto}.roll-review-absent>div{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:11px 0;border-bottom:1px solid var(--border);font-size:14px}.roll-review-absent small{grid-column:1/-1;color:var(--muted)}.dark .roll-dialog,.dark .roll-person,.dark .roll-footer{background:#1e2c31;color:#e5efec}.dark .roll-person.absent{background:#3c292b;border-color:#80524e}.dark .roll-person.excused{background:#383323;border-color:#746236}.dark .roll-person.absent .roll-state{color:#efb1a9}.dark .roll-person.excused .roll-state,.dark .roll-excused{color:#e5c67f}.dark .roll-excused.selected{background:#5b4c24}.dark .roll-count.absent{background:#4a2f33;color:#f6b8b4}.dark .roll-count.excused{background:#463d24;color:#edcf8e}@media(max-width:1199px){.roll-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:599px){.roll-dialog{width:100vw;height:100dvh;border:0;border-radius:0;max-height:100dvh}.roll-header{padding:15px 16px;gap:10px}.roll-header h2{font-size:22px}.roll-header p{font-size:11px}.roll-exit{font-size:11px;padding:8px}.roll-toolbar{padding:12px 14px 6px;gap:10px}.roll-search{flex:1;width:auto}.roll-filters button{padding:8px;font-size:11px}.roll-session-note{padding:5px 14px;font-size:11px}.roll-dialog #roll-counts{padding:5px 14px 10px;gap:6px}.roll-scroll{padding:0 13px 8px}.roll-rows{grid-template-columns:1fr;gap:5px}.roll-person{min-height:46px;padding:6px 10px}.roll-person-name strong{font-size:14px}.roll-person-name small{font-size:10px}.roll-state{font-size:11px}.roll-footer{padding:12px 14px;gap:10px}.roll-footer>div:first-child{max-width:120px}.roll-footer .actions{gap:5px;flex:1;justify-content:flex-end}.roll-footer .primary,.roll-footer .secondary{font-size:12px;padding:10px}.roll-pager{padding:7px 12px}.roll-setup>.person-filters{grid-template-columns:1fr 1fr}.roll-setup>.person-filters>button{grid-column:1/-1}.roll-setup-summary{align-items:flex-start;flex-direction:column;gap:12px}.roll-instructions{align-items:flex-start}.roll-instructions>span{font-size:25px}.roll-instructions p{font-size:13px}.roll-review-screen{padding:20px}.roll-review-counts .roll-count{font-size:14px;padding:10px}.roll-dialog #roll-error{padding:7px 14px;font-size:12px}}

body.taking-attendance{overflow:hidden}

.roll-clear{border:0;background:transparent;color:var(--muted);padding:3px 4px;font:inherit;font-size:10px;cursor:pointer}.roll-clear:hover{color:#a04e48}.roll-person.unmarked{border-style:dashed}

.roll-person-main{display:flex;align-items:center;gap:10px;width:100%;min-width:0}.roll-person-meta{display:flex;align-items:center;gap:6px;min-width:0}.roll-person-meta small{overflow:hidden;text-overflow:ellipsis;flex:1}.roll-person-meta .roll-clear{flex-shrink:0;white-space:nowrap;padding:0 3px}.roll-options{display:flex;gap:3px;flex-shrink:0;align-items:center}.roll-choice{font:inherit;font-size:10px;padding:7px 6px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--muted);white-space:nowrap;cursor:pointer;line-height:1.5}.roll-choice:hover:enabled{border-color:var(--green)}.roll-choice.selected.present{background:#16846e;border-color:#16846e;color:#fff}.roll-choice.selected.absent{background:#ad514b;border-color:#ad514b;color:#fff}.roll-choice.selected.excused{background:#8d6a1a;border-color:#8d6a1a;color:#fff}.roll-choice:disabled{cursor:default;opacity:.7}.roll-person.present{border-color:#b7d9cc}.roll-search{min-width:0}.roll-filters{flex-shrink:0}.dark .roll-choice{background:#1e2c31;color:#d9e5df}.dark .roll-choice.selected{color:#fff}.dark .roll-person.present{border-color:#43685b}@media(max-width:599px){.roll-toolbar{flex-wrap:wrap}.roll-search{flex:1;min-width:100px}.roll-filters{gap:4px}.roll-filters button{padding:7px 6px;font-size:10px}.roll-person-main{gap:8px}.roll-choice{font-size:10px;padding:7px 5px}.roll-person-name strong{font-size:13px}}

.roll-avatar{position:relative;width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;border-radius:9px;overflow:hidden;background:var(--soft);color:var(--green);font-size:15px}.roll-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.roll-avatar>span{line-height:1}@media(max-width:599px){.roll-avatar{width:30px;height:30px;flex-basis:30px}}
