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