:root{--primary:#2563eb;--primary-dark:#1d4ed8;--ink:#172033;--muted:#687386;--line:#e5e9f0;--surface:#fff;--canvas:#f6f8fb;--sidebar:#101827;--sidebar-muted:#98a3b6;--radius:14px}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font:14px/1.55 Inter,system-ui,-apple-system,"Segoe UI",sans-serif}.sidebar{position:fixed;inset:0 auto 0 0;width:270px;background:var(--sidebar);color:#fff;z-index:1045;display:flex;flex-direction:column}.sidebar-brand{height:82px;display:flex;align-items:center;gap:12px;padding:0 22px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand strong{display:block;font-size:17px;letter-spacing:.02em}.sidebar-brand small{display:block;color:var(--sidebar-muted);font-size:10px}.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#2563eb;color:#fff;font-size:18px;box-shadow:0 5px 18px rgba(37,99,235,.28)}.brand-mark.large{width:52px;height:52px;font-size:24px;margin:auto}.sidebar-nav{padding:18px 13px;overflow:auto;flex:1}.sidebar-nav a,.nav-group{width:100%;border:0;background:transparent;color:var(--sidebar-muted);display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;text-decoration:none;margin:2px 0;font-weight:500;text-align:left}.sidebar-nav a i,.nav-group>i:first-child{font-size:17px}.sidebar-nav a:hover,.nav-group:hover,.sidebar-nav a.active{background:rgba(255,255,255,.08);color:#fff}.sidebar-nav a.active{background:#2563eb}.sidebar-nav .nav-sub{padding-left:42px;font-size:13px}.nav-label{padding:20px 12px 7px;color:#677388;text-transform:uppercase;font-size:10px;font-weight:700;letter-spacing:.12em}.sidebar-school{margin:14px;padding:14px;border-radius:11px;background:rgba(255,255,255,.06);display:flex;gap:10px;align-items:center;color:#cad1dc;font-size:12px}.app-main{margin-left:270px;min-height:100vh}.topbar{height:82px;padding:0 28px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:1030;backdrop-filter:blur(12px)}.topbar h1{font-size:19px;margin:0;font-weight:700}.topbar-subtitle{font-size:12px;color:var(--muted)}.user-menu .btn{display:flex;gap:10px;align-items:center;border:0}.user-menu .btn:after{margin-left:8px}.user-menu strong,.user-menu small{display:block}.user-menu strong{font-size:13px}.user-menu small{font-size:11px;color:var(--muted)}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e8efff;color:var(--primary);font-weight:700}.content-wrap{padding:28px;max-width:1600px;margin:auto}.app-footer{padding:18px 28px;color:var(--muted);font-size:12px}.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 3px rgba(15,23,42,.035)}.card-header{background:transparent;border-bottom:1px solid var(--line);padding:18px 20px}.card-body{padding:20px}.section-title{font-size:15px;font-weight:700;margin:0}.section-subtitle{font-size:12px;color:var(--muted);margin:3px 0 0}.stat-card{height:100%}.stat-card .card-body{display:flex;align-items:flex-start;justify-content:space-between}.stat-value{font-size:27px;font-weight:700;letter-spacing:-.03em}.stat-label{color:var(--muted);font-size:12px}.stat-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#edf3ff;color:var(--primary);font-size:18px}.btn{border-radius:9px;font-weight:600;font-size:13px}.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark)}.btn-icon{width:40px;height:40px;display:grid;place-items:center}.form-control,.form-select{border-color:#dce2eb;border-radius:9px;min-height:42px;font-size:13px}.form-control:focus,.form-select:focus{border-color:#7aa2f7;box-shadow:0 0 0 3px rgba(37,99,235,.1)}.form-label{font-size:12px;font-weight:600;color:#3b4658}.required:after{content:' *';color:#dc2626}.table{margin:0}.table>:not(caption)>*>*{padding:13px 15px;border-bottom-color:#edf0f4;vertical-align:middle}.table thead th{background:#f9fafc;color:#657083;text-transform:uppercase;font-size:10px;letter-spacing:.06em;font-weight:700;white-space:nowrap}.table tbody tr:hover{background:#fbfcfe}.student-cell{display:flex;align-items:center;gap:11px}.student-avatar{width:38px;height:38px;object-fit:cover;border-radius:10px;background:#edf1f7;display:grid;place-items:center;color:#677386;font-weight:700}.student-cell strong,.student-cell small{display:block}.student-cell small,.text-muted{color:var(--muted)!important}.status-badge,.soft-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:700}.status-success{background:#e8f7ee;color:#15803d}.status-primary{background:#e9f0ff;color:#1d4ed8}.status-warning{background:#fff5dc;color:#a16207}.status-danger{background:#fdecec;color:#b91c1c}.status-secondary{background:#edf0f4;color:#586273}.progress{height:7px;background:#edf0f4}.progress-bar{background:var(--primary)}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.page-head h2{font-size:22px;margin:0 0 4px}.page-head p{margin:0;color:var(--muted)}.filter-bar{padding:16px}.empty-state{text-align:center;padding:55px 20px}.empty-icon{width:60px;height:60px;border-radius:18px;background:#edf3ff;color:var(--primary);display:grid;place-items:center;font-size:25px;margin:0 auto 16px}.empty-state h3{font-size:16px}.profile-cover{padding:22px;display:flex;align-items:center;gap:18px}.profile-photo{width:86px;height:86px;border-radius:18px;object-fit:cover;background:#e9edf4;display:grid;place-items:center;font-size:28px;color:#637087}.profile-info h2{font-size:22px;margin:0 0 3px}.profile-meta{color:var(--muted)}.nav-tabs{border-bottom:1px solid var(--line);gap:3px;flex-wrap:nowrap;overflow:auto}.nav-tabs .nav-link{border:0;color:var(--muted);white-space:nowrap;padding:13px 14px}.nav-tabs .nav-link.active{color:var(--primary);border-bottom:2px solid var(--primary);background:transparent}.data-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0}.data-item{padding:12px 0;border-bottom:1px solid #eef1f5}.data-item span,.data-item strong{display:block}.data-item span{font-size:11px;color:var(--muted);margin-bottom:2px}.timeline{border-left:2px solid #e5e9f0;margin-left:7px;padding-left:22px}.timeline-item{position:relative;margin-bottom:20px}.timeline-item:before{content:'';position:absolute;left:-29px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--primary);border:3px solid #dce7ff}.login-page{min-height:100vh;display:grid;place-items:center;background:#f2f5fa}.login-shell{width:min(930px,calc(100% - 32px));display:grid;grid-template-columns:1fr 1.15fr;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 18px 55px rgba(20,31,51,.08)}.login-brand{padding:70px 40px;background:#101827;color:#fff;text-align:center;display:flex;flex-direction:column;justify-content:center}.login-brand h1{font-size:27px;margin:17px 0 0}.login-brand p{margin:2px 0 26px;color:#d5dbea}.login-brand>span:last-child{color:#96a2b5;font-size:12px}.login-card{padding:60px 52px}.login-card h2{font-size:24px}.login-card p{color:var(--muted)}.metric-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.metric-row+ .progress{margin-bottom:17px}.sticky-actions{position:sticky;bottom:12px;background:rgba(255,255,255,.96);border:1px solid var(--line);padding:12px 15px;border-radius:12px;display:flex;justify-content:flex-end;gap:8px;box-shadow:0 8px 30px rgba(15,23,42,.08);z-index:20}.print-only{display:none}@media(max-width:991.98px){.sidebar{width:280px}.app-main{margin-left:0}.content-wrap{padding:20px}.topbar{padding:0 18px}.login-shell{grid-template-columns:1fr;max-width:510px}.login-brand{padding:30px}.login-card{padding:38px}.sidebar-backdrop{display:none}}@media(max-width:575.98px){.content-wrap{padding:16px}.topbar{height:70px}.page-head{flex-direction:column}.page-head .btn{width:100%}.profile-cover{align-items:flex-start;flex-wrap:wrap}.profile-photo{width:72px;height:72px}.profile-actions{width:100%;display:flex}.profile-actions .btn{flex:1}.data-list{grid-template-columns:1fr}.login-card{padding:30px 24px}.filter-bar .btn{width:100%}.table>:not(caption)>*>*{padding:11px}.app-footer{padding:18px}}@media print{.sidebar,.topbar,.app-footer,.no-print,.btn{display:none!important}.app-main{margin:0}.content-wrap{padding:0}.card{box-shadow:none;border-color:#777}.print-only{display:block}.table{font-size:10pt}.table>:not(caption)>*>*{border:1px solid #555;padding:5px}.page-break{break-before:page}.avoid-break{break-inside:avoid}@page{size:A4;margin:14mm}body{background:#fff;color:#000}}

