:root{--bg: #0f172a;--bg-elev: #1e293b;--bg-card: #334155;--text: #f1f5f9;--text-dim: #a0aec0;--accent: #38bdf8;--present: #22c55e;--absent: #ef4444;--late: #f59e0b;--excused: #a855f7;--no_class: #64748b;--on-accent: #04293a;--streak: #7c3aed;--accent-on-light: #0284c7;--on-status-dark: #fff;--toast-bg: #f8fafc;--radius: 16px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--sync-bar-h: 36px;--extra-banner-h: 0px;--content-frame-max: 960px;--section-detail-max: 980px;--action-area-max: 760px;--roll-call-max: 760px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}body{touch-action:manipulation}button{font-family:inherit;cursor:pointer}input,button{font-size:1rem}input[type=date],input[type=time],input[type=datetime-local]{color-scheme:dark}.btn{border:none;border-radius:12px;padding:.875rem 1.125rem;font-weight:600;background:var(--accent);color:var(--on-accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:var(--bg-elev);color:var(--text)}h1{margin:0;font-size:1.4rem}.icon-btn{background:var(--bg-elev);border:none;border-radius:999px;width:2.75rem;height:2.75rem;font-size:1.2rem;color:var(--text)}.small{padding:.375rem .625rem;font-size:.82rem}.link.small{padding:.375rem .625rem;min-height:1.75rem}.link{background:none;border:1px solid currentColor;color:var(--accent);font-weight:600;font-size:.9rem;padding:.5rem .75rem;text-decoration:none;cursor:pointer;border-radius:6px;transition:all .15s ease-out;display:inline-flex;align-items:center;justify-content:center;min-height:2rem}.link:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 15%,transparent)}.link:active:not(:disabled){background:color-mix(in srgb,var(--accent) 25%,transparent);transform:scale(.98)}.link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.link.danger{color:var(--absent)}.link.danger:hover:not(:disabled){background:color-mix(in srgb,var(--absent) 15%,transparent)}.link.danger:active:not(:disabled){background:color-mix(in srgb,var(--absent) 25%,transparent)}.link.save{color:var(--present)}.link.save:hover:not(:disabled){background:color-mix(in srgb,var(--present) 15%,transparent)}.link.save:active:not(:disabled){background:color-mix(in srgb,var(--present) 25%,transparent)}.link:disabled{opacity:.5;cursor:not-allowed}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.dim{color:var(--text-dim)}.center{text-align:center}.empty{color:var(--text-dim);text-align:center;padding:40px 0;margin:0}.chev{color:var(--text-dim)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.content-frame{width:100%;margin-inline:auto}@media(min-width:1024px){.content-frame{max-width:var(--content-frame-max);padding-inline:24px}}@media(min-width:1600px){:root{font-size:18px;--content-frame-max: 1200px;--section-detail-max: 1200px;--action-area-max: 960px;--roll-call-max: 960px}.content-frame{padding-inline:32px}}@media(min-width:2560px){:root{font-size:20px;--content-frame-max: 1440px;--section-detail-max: 1440px;--action-area-max: 1120px;--roll-call-max: 1120px}.content-frame{padding-inline:40px}}@media(min-width:521px)and (orientation:portrait){:root{--content-frame-max: 640px;--section-detail-max: 640px;--action-area-max: 600px;--roll-call-max: 640px}.content-frame{max-width:var(--content-frame-max);padding-inline:20px}}@media(min-width:768px)and (orientation:portrait){:root{--content-frame-max: 960px;--section-detail-max: 960px;--action-area-max: 900px;--roll-call-max: 900px}.content-frame{padding-inline:32px}}@media(min-width:700px)and (max-width:1023px)and (orientation:landscape){:root{--content-frame-max: 880px;--section-detail-max: 840px;--action-area-max: 760px;--roll-call-max: 840px}.content-frame{max-width:var(--content-frame-max);padding-inline:32px}}
