.attendance-loading{min-height:50vh;font-family:var(--font-mono);color:var(--ink-muted);justify-content:center;align-items:center;font-size:.85rem;display:flex}.attendance-page{max-width:760px;margin:0 auto;padding:clamp(2.5rem,6vw,4.5rem) clamp(1.25rem,4vw,1.5rem) 5rem}.attendance-page .back-link{font-family:var(--font-mono);letter-spacing:.05em;color:var(--ink-muted);margin-bottom:2rem;font-size:.78rem;text-decoration:none;display:inline-block}.attendance-page .back-link:hover{color:var(--ink)}.attendance-page .page-header{margin-bottom:2rem}.attendance-page .eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);align-items:center;gap:.55rem;margin:0 0 1rem;font-size:.78rem;display:flex}.attendance-page .eyebrow-dot{background:var(--stamp-progress);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.attendance-page h1{font-family:var(--font-serif);color:var(--primary);margin:0 0 .75rem;font-size:clamp(2rem,5vw,2.6rem);font-weight:700}.attendance-page .intro{color:var(--ink-muted);max-width:60ch;margin:0;font-size:1rem;line-height:1.55}.attendance-page .card{border:1px solid var(--rule);background:var(--paper);border-radius:10px;margin-bottom:1.5rem;padding:1.5rem}.attendance-page .card h2{font-family:var(--font-serif);color:var(--primary);margin:0 0 .5rem;font-size:1.2rem}.attendance-page .empty-note{color:var(--ink-muted);margin:0;font-size:.9rem}.attendance-page .field{flex-direction:column;gap:.35rem;display:flex}.attendance-page .field label{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);font-size:.7rem}.attendance-page .field select,.attendance-page .field input,.attendance-page .field textarea{font-family:var(--font-serif);border:1px solid var(--rule-strong);background:var(--paper);color:var(--ink);box-sizing:border-box;resize:vertical;border-radius:6px;width:100%;padding:.6rem .7rem;font-size:.95rem}.attendance-page .field select:focus,.attendance-page .field input:focus,.attendance-page .field textarea:focus{outline:2px solid var(--stamp-progress);outline-offset:1px}.attendance-page .roll-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.attendance-page .roll-header h2{margin:0 0 .25rem}.attendance-page .roll-count{font-family:var(--font-mono);color:var(--ink-muted);font-size:.82rem}.attendance-page .date-field{width:10rem}.attendance-page .roll-actions{gap:.6rem;margin-bottom:1.25rem;display:flex}.attendance-page .roster-grid{flex-direction:column;gap:.6rem;margin-bottom:1.5rem;display:flex}.attendance-page .roster-row{border:1px solid var(--rule);border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .5rem .5rem 1rem;display:flex}.attendance-page .roster-name{color:var(--ink);font-size:1rem;font-weight:600}.attendance-page .status-toggle{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:none;border-radius:999px;min-width:8rem;padding:.65rem 1.4rem;font-size:.85rem;font-weight:700;transition:background-color .15s,color .15s}.attendance-page .status-toggle.status-present{background:var(--stamp-done);color:#fff}.attendance-page .status-toggle.status-absent{color:#fff;background:#c0392b}.attendance-page .submit-btn{width:100%;display:block}.attendance-page .btn-primary{font-family:var(--font-mono);letter-spacing:.02em;color:#fff;background:var(--primary);cursor:pointer;border:none;border-radius:6px;padding:.85rem 1.2rem;font-size:.9rem;font-weight:600;transition:background-color .15s}.attendance-page .btn-primary:hover{background:var(--stamp-progress)}.attendance-page .btn-primary:disabled{opacity:.6;cursor:not-allowed}.attendance-page .btn-ghost{font-family:var(--font-mono);color:var(--primary);border:1px solid var(--rule-strong);cursor:pointer;background:0 0;border-radius:6px;padding:.55rem 1rem;font-size:.8rem;transition:border-color .15s,color .15s}.attendance-page .btn-ghost:hover{border-color:var(--primary);color:var(--stamp-progress)}.attendance-page .btn-small{padding:.45rem .85rem;font-size:.78rem}.attendance-page .save-confirm{font-family:var(--font-mono);color:var(--stamp-done);margin:.85rem 0 0;font-size:.82rem}.attendance-page .history-list{flex-direction:column;gap:.75rem;display:flex}.attendance-page .history-item{border:1px solid var(--rule);border-radius:8px;padding:.85rem 1rem}.attendance-page .history-row{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.attendance-page .history-date{font-family:var(--font-mono);color:var(--ink);font-size:.88rem;font-weight:700}.attendance-page .history-counts{font-family:var(--font-mono);color:var(--ink-muted);white-space:nowrap;font-size:.8rem}.attendance-page .history-remark{color:var(--ink-muted);margin:.4rem 0 0;font-size:.88rem}.attendance-page .history-absentees{color:#c0392b;margin:.4rem 0 0;font-size:.82rem}.attendance-page .export-fields{gap:1rem;max-width:24rem;margin:1rem 0;display:flex}@media (width<=520px){.attendance-page .export-fields{flex-direction:column}}
