:root{--bg:#14161c;--panel:#1d2029;--line:#2c3040;--fg:#e4e6ee;--muted:#8b90a3;--accent:#f0b429}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 system-ui,Segoe UI,sans-serif}
a{color:#7cb7ff;text-decoration:none}a:hover{text-decoration:underline}
header{display:flex;gap:24px;align-items:center;padding:12px 24px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700;font-size:18px;color:var(--accent)}
nav{display:flex;gap:16px;flex:1}.auth{display:flex;gap:12px;align-items:center}
main{max-width:1200px;margin:24px auto;padding:0 24px}
h1{margin-top:0}h2{margin-top:32px;border-bottom:1px solid var(--line);padding-bottom:4px}
table{width:100%;border-collapse:collapse;background:var(--panel);border-radius:6px;overflow:hidden}
th,td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:600;font-size:13px}
.muted{color:var(--muted)}
.stats{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 20px;min-width:120px;color:var(--muted)}
.card .n{font-size:28px;font-weight:700;color:var(--fg)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:24px}
.flash{background:#24351f;border:1px solid #3d6b30;padding:8px 12px;border-radius:6px;margin-bottom:16px}
.badge{background:var(--accent);color:#000;border-radius:4px;padding:1px 6px;font-size:12px}
.btn,button{background:var(--accent);color:#000;border:0;border-radius:5px;padding:6px 12px;font-weight:600;cursor:pointer;text-decoration:none}
button.link{background:none;color:#ff7b7b;padding:0;font-weight:400}button.danger{background:#c0392b;color:#fff;margin-top:24px}
input,select{background:#0f1117;color:var(--fg);border:1px solid var(--line);border-radius:5px;padding:6px 8px}
.inline-form{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.icon{width:18px;height:18px;vertical-align:text-bottom;border-radius:3px}
.q0{color:#9d9d9d}.q1{color:#fff}.q2{color:#1eff00}.q3{color:#0070dd}.q4{color:#a335ee}.q5{color:#ff8000}.q6{color:#e6cc80}
.st-present{color:#6fdc6f}.st-late{color:#e6c34d}.st-absent{color:#ff7b7b}.st-excused{color:var(--muted)}
