*{box-sizing:border-box}
:root{
  --ink:#1d2329;--muted:#67717b;--line:#d7dde3;--panel:#fff;--bg:#f5f7f8;
  --accent:#16755b;--accent-dark:#0d5944;--soft:#eaf4f0;--warn:#fff3b8;
}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.shell{max-width:1080px;margin:0 auto;padding:28px 18px 60px}
.topbar{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;margin-bottom:24px}
.eyebrow{font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--accent)}
h1{margin:5px 0 4px;font-size:34px;line-height:1.05}
.subtitle{margin:0;color:var(--muted)}
.badge-stack{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.badge{background:var(--soft);color:var(--accent-dark);padding:8px 10px;border-radius:999px;font-size:12px;font-weight:700}
.panel{display:flex;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:16px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.step{width:32px;height:32px;min-width:32px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-weight:800}
.panel-body{width:100%}
h2{font-size:19px;margin:3px 0 15px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label span{display:block;font-size:12px;font-weight:700;margin-bottom:6px}
input[type=text],input[type=file]{width:100%;border:1px solid #c7cfd6;border-radius:10px;padding:11px;background:#fff;font:inherit}
.help{font-size:12px;color:var(--muted);line-height:1.45}
.actions{display:flex;gap:8px;margin-top:12px}
button{border:0;border-radius:9px;padding:10px 14px;font:inherit;font-weight:700;cursor:pointer;background:var(--accent);color:white}
button:hover{background:var(--accent-dark)}
button.secondary{background:#28333c}
button.ghost{background:#eef1f3;color:#2b333a}
.summary{padding:14px;border-radius:10px;background:#f7f9fa;border:1px solid var(--line)}
.summary.empty,.reports.empty{color:var(--muted)}
.metrics{display:flex;flex-wrap:wrap;gap:10px}
.metric{padding:10px 12px;background:#f7f9fa;border:1px solid var(--line);border-radius:10px}
.metric b{display:block;font-size:17px}
.metric span{font-size:11px;color:var(--muted)}
.warning{margin-top:10px;padding:10px 12px;border-radius:9px;background:#fff8dc;border:1px solid #eadb90;font-size:12px}
.reports{display:grid;gap:12px}
.teacher-card{border:1px solid var(--line);border-radius:13px;padding:14px}
.teacher-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.teacher-head h3{margin:0;font-size:17px}
.teacher-totals{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:9px 0 11px}
.teacher-totals strong{color:var(--ink)}
.teacher-actions{display:flex;gap:8px;flex-wrap:wrap}
.table-wrap{overflow:auto;margin-top:12px}
table{border-collapse:collapse;width:100%;font-size:12px}
th,td{border:1px solid #d5d8dc;padding:6px 7px;text-align:left;vertical-align:top}
th{background:#313131;color:white;font-size:11px}
td.money{text-align:right;white-space:nowrap}
tr.repeat td{background:var(--warn)}
footer{text-align:center;color:var(--muted);font-size:11px;margin-top:18px}
@media(max-width:680px){
  .shell{padding:16px 10px 40px}.topbar{display:block}.badge-stack{justify-content:flex-start;margin-top:12px}
  h1{font-size:28px}.grid{grid-template-columns:1fr}.panel{padding:13px;gap:10px}
}
