:root{--ink:#14213d;--muted:#667085;--line:#e7eaf0;--bg:#f7f8fc;--card:#fff;--admin:#6d28d9;--admin2:#2563eb;--student:#2563eb;--student2:#7c3aed;--teacher:#059669;--teacher2:#0f766e;--danger:#dc2626;--shadow:0 18px 50px rgba(20,33,61,.10)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:radial-gradient(circle at top left,#fff 0,#f7f8fc 45%,#eef2ff 100%);color:var(--ink)}a{text-decoration:none}.wrap{width:min(1180px,94%);margin:28px auto}.portal{min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 22px;border-radius:22px;color:#fff;box-shadow:var(--shadow);margin-bottom:22px}.topbar.admin{background:linear-gradient(135deg,var(--admin),var(--admin2))}.topbar.student{background:linear-gradient(135deg,var(--student),var(--student2))}.topbar.teacher{background:linear-gradient(135deg,var(--teacher),var(--teacher2))}.brand{display:flex;align-items:center;gap:12px}.brand-badge{width:44px;height:44px;border-radius:14px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:22px}.topbar h1{font-size:24px;margin:0}.topbar small{opacity:.85}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:12px;padding:11px 16px;font-weight:800;cursor:pointer;background:#2563eb;color:#fff}.btn.admin{background:var(--admin)}.btn.student{background:var(--student)}.btn.teacher{background:var(--teacher)}.btn.alt{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:#fee2e2;color:#991b1b}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow);margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{border-radius:18px;padding:20px;color:#fff;box-shadow:var(--shadow)}.stat:nth-child(1){background:linear-gradient(135deg,#2563eb,#4f46e5)}.stat:nth-child(2){background:linear-gradient(135deg,#059669,#0f766e)}.stat:nth-child(3){background:linear-gradient(135deg,#7c3aed,#9333ea)}.stat:nth-child(4){background:linear-gradient(135deg,#f59e0b,#ea580c)}.stat strong{font-size:30px;display:block}.stat span{opacity:.9;font-size:13px}.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.quick a{padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;font-weight:800;color:var(--ink)}.quick a:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(20,33,61,.08)}h2{margin:0 0 16px}h3{margin:0 0 8px}label{display:block;font-weight:800;font-size:13px;margin:12px 0 6px}input{width:100%;padding:12px 13px;border:1px solid #d8dee9;border-radius:11px;font:inherit;outline:none}input:focus{border-color:#7c3aed;box-shadow:0 0 0 3px rgba(124,58,237,.10)}.form-actions{margin-top:16px}.muted{color:var(--muted)}.ok{background:#ecfdf3;color:#166534;padding:12px 14px;border-radius:12px;margin-bottom:16px}.error{background:#fef2f2;color:#991b1b;padding:12px 14px;border-radius:12px;margin-bottom:16px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#f8fafc}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.badge.active{background:#dcfce7;color:#166534}.badge.inactive{background:#fee2e2;color:#991b1b}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(470px,100%);background:#fff;border:1px solid var(--line);border-radius:26px;padding:30px;box-shadow:var(--shadow)}.login-logo{width:68px;height:68px;border-radius:20px;display:grid;place-items:center;color:#fff;font-size:30px;margin-bottom:16px}.login-logo.admin{background:linear-gradient(135deg,var(--admin),var(--admin2))}.login-logo.student{background:linear-gradient(135deg,var(--student),var(--student2))}.login-logo.teacher{background:linear-gradient(135deg,var(--teacher),var(--teacher2))}.full{width:100%}@media(max-width:850px){.stats{grid-template-columns:repeat(2,1fr)}.grid,.quick{grid-template-columns:1fr}}@media(max-width:520px){.wrap{width:92%;margin:16px auto}.stats{grid-template-columns:1fr 1fr}.topbar{align-items:flex-start;flex-direction:column}.topbar .btn{width:100%}.card{padding:17px}.stats .stat{padding:16px}.stat strong{font-size:24px}}
