.roll-call-modal{border:1px solid var(--line);background:var(--surface);width:min(680px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--ink);border-radius:16px;margin:auto;padding:0;overflow:hidden;box-shadow:0 24px 64px #0a100e4d}.roll-call-modal[open]{grid-template-rows:auto auto minmax(0,1fr) auto;animation:.36s cubic-bezier(.22,1,.36,1) both roll-call-in;display:grid}.roll-call-modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#120c098c;animation:.28s both roll-call-fade}.roll-call-modal.is-closing{animation:.18s ease-in forwards roll-call-out}.roll-call-modal.is-closing::backdrop{animation:.18s ease-in reverse forwards roll-call-fade}@keyframes roll-call-in{0%{opacity:0;transform:translateY(18px)scale(.98)}}@keyframes roll-call-out{to{opacity:0;transform:translateY(10px)scale(.98)}}@keyframes roll-call-fade{0%{opacity:0}}.roll-call-head{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:14px;padding:22px 22px 16px;display:grid}.roll-call-mark{background:var(--lesson-bg);width:44px;height:44px;color:var(--lesson-ink);border-radius:50%;place-items:center;display:grid}.roll-call-eyebrow{font:700 10px / 1.2 var(--font-action);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.roll-call-head h2,#main .roll-call-head h2{font:400 24px / 1.1 var(--font-display);letter-spacing:0;text-transform:none;color:var(--ink);margin:0}.roll-call-when{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.45}.roll-call-when:first-letter{text-transform:uppercase}.roll-call-close{width:36px;height:36px;min-height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;margin:0;padding:0;display:grid}.roll-call-close:hover{background:var(--accent-soft);color:var(--ink)}.roll-call-tally{border-bottom:1px solid var(--line);background:var(--surface-raised);flex-wrap:wrap;gap:8px;padding:12px 22px;display:flex}.roll-call-tally span{color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;align-items:baseline;gap:6px;padding:5px 12px;font-size:12px;display:inline-flex}.roll-call-tally strong{font:400 17px / 1 var(--font-display);color:var(--ink)}.roll-call-tally [data-state=present] strong{color:var(--accent)}.roll-call-tally [data-state=absent] strong{color:var(--action)}.roll-call-tally [data-state=excused] strong{color:var(--warning)}.roll-call-body{overscroll-behavior:contain;align-content:start;gap:12px;min-height:0;padding:16px 22px 18px;display:grid;overflow:auto}.roll-call-loading,.roll-call-locked{color:var(--muted);margin:0;font-size:14px}.roll-call-locked{border-left:3px solid var(--border-strong);background:var(--surface-raised);color:var(--ink);border-radius:8px;padding:10px 12px}.roll-call-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.roll-call-tools p{color:var(--muted);align-items:center;gap:6px;margin:0;font-size:13px;display:inline-flex}.roll-call-quiet{border:1px solid var(--line);min-height:36px;color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;margin:0;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.roll-call-quiet:hover:not(:disabled){border-color:var(--accent)}.roll-call-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.roll-call-list li{border:1px solid var(--line);border-left:4px solid var(--line);background:var(--surface);border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px 12px;padding:10px 12px;transition:border-color .2s,background-color .2s;display:grid}.roll-call-list li[data-state=present]{border-left-color:var(--accent)}.roll-call-list li[data-state=absent]{border-left-color:var(--action)}.roll-call-list li[data-state=excused]{border-left-color:var(--border-strong)}.roll-call-avatar{background:var(--accent-soft);width:38px;height:38px;color:var(--accent);font:600 15px / 1 var(--font-body);border-radius:50%;place-items:center;display:grid}.roll-call-who{gap:2px;min-width:0;display:grid}.roll-call-who strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.roll-call-who small{color:var(--muted);font-size:12px}.roll-call-choice{border:1px solid var(--line);background:var(--surface-raised);border-radius:999px;gap:4px;min-width:0;margin:0;padding:3px;display:inline-flex}.roll-call-choice label{min-height:34px;color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:5px;margin:0;padding:0 12px;font-size:13px;font-weight:500;transition:background-color .18s,color .18s;display:inline-flex;position:relative}.roll-call-choice input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.roll-call-choice label>span{place-items:center;display:inline-grid}.roll-call-choice label:hover{color:var(--ink)}.roll-call-choice label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}.roll-call-choice label[data-value=present]:has(input:checked){background:var(--accent);color:var(--surface)}.roll-call-choice label[data-value=absent]:has(input:checked){background:color-mix(in srgb, var(--action) 88%, #000);color:#fdfcf6}.roll-call-choice label[data-value=excused]:has(input:checked){background:var(--warning);color:var(--surface)}.roll-call-choice:disabled label{cursor:default}.roll-call-choice:disabled label:not(:has(input:checked)){opacity:.55}.roll-call-reason{grid-column:2/-1;margin:0;display:block}.roll-call-reason input{width:100%;min-height:38px;font-size:14px}.roll-call-empty{text-align:center;justify-items:center;gap:6px;padding:24px 0 12px;display:grid}.roll-call-empty h3,#main .roll-call-empty h3{font:400 22px / 1.2 var(--font-display);letter-spacing:0;text-transform:none;color:var(--ink);margin:6px 0 0}.roll-call-empty p{color:var(--muted);margin:0;font-size:14px}.roll-call-error{color:var(--danger,var(--action));margin:0;font-size:13px}.roll-call-foot{border-top:1px solid var(--line);background:var(--surface);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding:14px 22px;display:flex}.roll-call-status{color:var(--muted);flex:auto;margin:0;font-size:13px}.roll-call-primary,.roll-call-secondary{min-height:44px;font:700 11px / 1.2 var(--font-action);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:8px;margin:0;padding:0 18px;display:inline-flex}.roll-call-primary{background:color-mix(in srgb, var(--action) 86%, #000);color:#fdfcf6;border:0}.roll-call-primary:hover:not(:disabled){background:color-mix(in srgb, var(--action) 76%, #000)}.roll-call-primary:disabled{opacity:.5;cursor:default}.roll-call-secondary{border:1px solid var(--border-strong);color:var(--ink);background:0 0}@media (max-width:640px){.roll-call-list li{grid-template-columns:auto minmax(0,1fr)}.roll-call-choice{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.roll-call-choice label{justify-content:center;padding:0 6px}.roll-call-reason{grid-column:1/-1}.roll-call-foot>button{flex:1 1 0}.roll-call-status{flex-basis:100%}}@media (prefers-reduced-motion:reduce){.roll-call-modal[open],.roll-call-modal.is-closing,.roll-call-modal::backdrop{animation:none}}
