@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --primary:#0d6efd;
  --secondary:#11b5ae;
  --bg:#f4f7fb;
  --surface:#ffffff;
  --text:#1f2937;
  --muted:#6b7280;
  --border:#e5e7eb;
  --sidebar:#172033;
  --success:#16a34a;
  --warning:#f59e0b;
  --danger:#ef4444;
  --shadow:0 12px 34px rgba(15,23,42,.08);
}

*{box-sizing:border-box}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:Inter,Segoe UI,Roboto,sans-serif;
}

a{text-decoration:none}

.app-shell{display:flex;min-height:100vh}
.sidebar{
  width:270px;
  background:linear-gradient(180deg,#172033 0%,#111827 100%);
  color:#fff;
  padding:22px 18px;
  display:flex;
  flex-direction:column;
  position:fixed;
  inset:0 auto 0 0;
  z-index:1040;
  overflow-y:auto;
  transition:transform .25s ease,width .25s ease;
}
.brand{display:flex;gap:12px;align-items:center;margin-bottom:24px}
.brand-logo{
  width:46px;height:46px;border-radius:14px;background:#fff;
  padding:4px;object-fit:contain
}
.brand strong{display:block;font-size:1rem}
.brand small{display:block;color:#9fb0c7;font-size:.75rem;margin-top:2px}

.sidebar .nav-link{
  color:#cbd5e1;border-radius:12px;padding:11px 12px;margin-bottom:5px;
  display:flex;align-items:center;gap:10px;font-weight:500;
  transition:.18s ease;
}
.sidebar .nav-link:hover,.sidebar .nav-link.active{
  background:rgba(255,255,255,.1);color:#fff;transform:translateX(2px)
}
.sidebar .nav-link i{font-size:1.05rem;width:22px}
.sidebar-footer{margin-top:auto;padding-top:20px}

.main-content{
  width:calc(100% - 270px);
  margin-left:270px;
  padding:24px 28px 36px;
}
.mobile-topbar{
  display:none;
  align-items:center;
  justify-content:space-between;
  margin-bottom:18px;
}
.mobile-menu-btn{
  width:44px;height:44px;border-radius:12px;border:1px solid var(--border);
  background:var(--surface)
}
.sidebar-overlay{
  display:none;position:fixed;inset:0;background:rgba(15,23,42,.48);
  z-index:1030
}
.topbar{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:24px;gap:16px;
}
.topbar h1,.topbar h2{margin:0;font-weight:800;letter-spacing:-.02em}
.topbar .subtitle{color:var(--muted);margin-top:4px}

.card,.metric-card,.table-card{
  background:var(--surface);
  border:1px solid rgba(229,231,235,.75);
  border-radius:18px;
  box-shadow:var(--shadow);
}
.metric-card{height:100%;transition:transform .2s ease,box-shadow .2s ease}
.metric-card:hover{transform:translateY(-2px);box-shadow:0 16px 40px rgba(15,23,42,.11)}
.metric-icon{
  width:48px;height:48px;border-radius:14px;
  display:grid;place-items:center;
  background:#eef4ff;color:var(--primary);font-size:1.25rem
}
.metric-label{color:var(--muted);font-size:.82rem;font-weight:600}
.metric-value{font-size:2rem;font-weight:800;letter-spacing:-.03em;margin-top:4px}
.chart-wrap{height:320px}
.table-card{overflow:hidden}
.table-card .card-header{background:transparent;border:0}
.table thead th{
  font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);background:#f8fafc;white-space:nowrap
}
.table td,.table th{padding:.9rem 1rem;vertical-align:middle}
.btn{border-radius:11px;font-weight:600}
.form-control,.form-select{
  border-radius:12px;min-height:44px;border-color:var(--border)
}

/* Login */
.login-page{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:28px 18px;
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 15% 20%,rgba(17,181,174,.16),transparent 32%),
    radial-gradient(circle at 85% 80%,rgba(13,110,253,.18),transparent 34%),
    linear-gradient(135deg,#f8fbff 0%,#eaf3ff 55%,#f3fbfa 100%);
}
.login-page::before{
  content:"";
  position:absolute;inset:0;
  background:url('/assets/img/school-logo.png') center/560px no-repeat;
  opacity:.025;pointer-events:none
}
.login-card{
  width:min(440px,100%);
  border:1px solid rgba(255,255,255,.75);
  border-radius:24px;
  box-shadow:0 24px 70px rgba(15,23,42,.16);
  backdrop-filter:blur(16px);
  background:rgba(255,255,255,.94);
  position:relative;
  animation:loginIn .4s ease both;
}
@keyframes loginIn{
  from{opacity:0;transform:translateY(16px)}
  to{opacity:1;transform:translateY(0)}
}
.login-card .card-body{padding:36px}
.login-logo{
  width:94px;height:94px;object-fit:contain;
  display:block;margin:0 auto 18px;
  filter:drop-shadow(0 8px 15px rgba(15,23,42,.12))
}
.login-title{text-align:center;font-size:1.55rem;font-weight:800;margin:0}
.login-subtitle{text-align:center;color:var(--muted);margin:7px 0 26px}
.password-wrap{position:relative}
.password-wrap .form-control{padding-right:48px}
.password-toggle{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  border:0;background:transparent;color:var(--muted);
  width:38px;height:38px;border-radius:9px
}
.login-btn{min-height:50px;font-size:1rem}
.login-footer{text-align:center;color:var(--muted);font-size:.78rem;margin-top:22px}
.caps-warning{display:none;color:var(--warning);font-size:.8rem;margin-top:6px}

@media(max-width:991.98px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-overlay.show{display:block}
  .main-content{width:100%;margin-left:0;padding:18px}
  .mobile-topbar{display:flex}
  .topbar{align-items:flex-start;flex-direction:column}
}
@media(max-width:575.98px){
  .login-page{padding:18px 12px;align-items:center}
  .login-card{border-radius:20px}
  .login-card .card-body{padding:28px 22px}
  .login-logo{width:82px;height:82px}
  .login-title{font-size:1.3rem}
  .metric-value{font-size:1.7rem}
  .main-content{padding:14px}
}
