/* assets/css/app.css */
:root{
  --bg1:#070a13;
  --bg2:#0b1630;
  --card:rgba(255,255,255,.08);
  --card2:rgba(255,255,255,.06);
  --border:rgba(255,255,255,.14);
  --text:#eaf1ff;
  --muted:rgba(234,241,255,.72);
  --shadow:0 24px 70px rgba(0,0,0,.45);
  --radius:18px;
  --radius-sm:14px;
  --g1:linear-gradient(135deg,#5eead4 0%, #60a5fa 45%, #a78bfa 100%);
  --g2:linear-gradient(135deg,rgba(94,234,212,.22), rgba(96,165,250,.18), rgba(167,139,250,.18));
  --danger:#ef4444;
  --ok:#22c55e;
  --info:#3b82f6;
  --warn:#f59e0b;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  color:var(--text);
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
  background:
    radial-gradient(1200px 700px at 15% 15%, rgba(96,165,250,.22), transparent 60%),
    radial-gradient(1000px 700px at 85% 15%, rgba(167,139,250,.20), transparent 60%),
    radial-gradient(900px 650px at 35% 85%, rgba(94,234,212,.18), transparent 60%),
    linear-gradient(180deg, var(--bg1), var(--bg2));
  overflow-x:hidden;
}

a{color:inherit;text-decoration:none}
.container{max-width:1200px;margin:0 auto;padding:22px}
.hidden{display:none !important}

.glass{
  background:var(--card);
  border:1px solid var(--border);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}

.card{
  background:var(--card2);
  border:1px solid var(--border);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-radius:var(--radius);
  box-shadow:0 18px 55px rgba(0,0,0,.35);
}

.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:10px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
  color:var(--text);
  cursor:pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
  user-select:none;
}
.btn:hover{transform: translateY(-1px); border-color: rgba(255,255,255,.26); background:rgba(255,255,255,.08); box-shadow:0 16px 40px rgba(0,0,0,.25)}
.btn:active{transform: translateY(0)}
.btn.primary{border:0;background:var(--g1);color:#07101f;font-weight:800}
.btn.primary:hover{filter:brightness(1.04)}
.btn.danger{border:1px solid rgba(239,68,68,.35);background:rgba(239,68,68,.12)}
.btn.danger:hover{background:rgba(239,68,68,.18)}
.btn.ghost{background:transparent;border:1px solid rgba(255,255,255,.12)}
.btn.small{padding:8px 10px;border-radius:12px;font-size:13px}

.input, select, textarea{
  width:100%;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
  color:var(--text);
  outline:none;
  transition:border-color .18s ease, background .18s ease;
}

/* Consistent control sizing (fix select height mismatch across browsers) */
:root{ --control-h:44px; }
.input, select{
  height:var(--control-h);
  padding:0 12px;
  line-height:var(--control-h);
}
textarea{
  height:auto;
  padding:12px 12px;
  line-height:1.35;
}

/* Number input spinner styling to match dark glass theme */
input[type="number"].input{ color-scheme: dark; }
input[type="number"].input::-webkit-inner-spin-button,
input[type="number"].input::-webkit-outer-spin-button{
  opacity:1;
  filter: invert(1) brightness(.85) contrast(.9);
}
.input:focus, select:focus, textarea:focus{
  border-color: rgba(96,165,250,.55);
  background:rgba(255,255,255,.08);
}

/* ---------- Select / Dropdown readability (dark glass UI) ----------
   Browsers render <option> with OS UI styles; we force dark backgrounds
   so items remain readable instead of white-on-white / low contrast.
*/
select{
  color: var(--text);
  background-color: rgba(255,255,255,.06);
}
select option{
  background-color: #0b1220;
  color: #eaf1ff;
}
select option:checked{
  background-color: #111c33;
  color: #eaf1ff;
}
select option[disabled]{
  color: rgba(234,241,255,.65);
}
label{display:block;margin:12px 0 6px;color:var(--muted);font-size:13px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:860px){.field-row{grid-template-columns:1fr}}

.topbar{
  position:sticky; top:0; z-index:40;
  padding:14px 18px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.brand{display:flex;align-items:center;gap:12px}
.brand img{width:38px;height:38px;object-fit:contain}
.brand .title{font-weight:900;letter-spacing:.08em}
.badges{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.badge{
  padding:8px 12px;border-radius:999px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
  color:var(--muted);
}
.badge b{color:var(--text)}

.layout{display:grid;grid-template-columns:270px 1fr;gap:18px;align-items:start}
@media(max-width:980px){.layout{grid-template-columns:1fr} .sidebar{position:relative}}

.sidebar{padding:14px}
.nav-item{
  display:flex;align-items:center;gap:12px;
  padding:12px 12px;border-radius:14px;
  border:1px solid transparent;
  cursor:pointer;
  transition: background .18s ease, transform .18s ease, border-color .18s ease;
  color:var(--muted);
}
.nav-item:hover{background:rgba(255,255,255,.06);transform:translateY(-1px)}
.nav-item.active{
  background:var(--g2);
  border-color: rgba(255,255,255,.18);
  color:var(--text);
}
.icon{width:18px;height:18px;opacity:.95}

.content{padding:14px}
.section-title{font-size:18px;font-weight:900;letter-spacing:.02em;margin:0 0 10px}
.hr{height:1px;background:rgba(255,255,255,.12);margin:14px 0}

.table-wrap{overflow:auto;border-radius:16px;border:1px solid rgba(255,255,255,.12)}
table{width:100%;border-collapse:collapse;min-width:820px}
th,td{padding:12px 12px;text-align:left}
thead th{font-size:12px;color:rgba(234,241,255,.7);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid rgba(255,255,255,.10)}
tbody tr{transition: background .15s ease}
tbody tr:hover{background:rgba(255,255,255,.05)}
tbody td{border-bottom:1px solid rgba(255,255,255,.08);vertical-align:top}

.status{
  font-weight:800;font-size:12px;letter-spacing:.05em;
  padding:6px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);
  display:inline-flex;align-items:center;gap:8px;
}
.status.active{color:#a7f3d0;border-color:rgba(34,197,94,.3);background:rgba(34,197,94,.10)}
.status.passed_out{color:#bfdbfe;border-color:rgba(59,130,246,.35);background:rgba(59,130,246,.10)}
.status.dropout{color:#fecaca;border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.10)}

.modal-overlay{
  position:fixed;inset:0;z-index:80;
  background:rgba(0,0,0,.55);
  backdrop-filter: blur(8px);
  display:flex;align-items:center;justify-content:center;
  padding:18px;
}
.modal{
  width:min(860px, 98vw);
  max-height: 88vh;
  overflow:auto;
  padding:18px;
}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.modal-head h3{margin:0;font-size:16px;font-weight:900;letter-spacing:.02em}
.modal-close{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);border-radius:12px;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center}
.modal-close:hover{background:rgba(255,255,255,.09)}

.loader-overlay{
  position:fixed;inset:0;z-index:120;
  display:none;align-items:center;justify-content:center;
  background:rgba(0,0,0,.50);
  backdrop-filter: blur(8px);
}
.loader-overlay.show{display:flex}
.loader{
  width:74px;height:74px;border-radius:999px;
  border:8px solid rgba(255,255,255,.14);
  border-top-color: rgba(94,234,212,.85);
  animation:spin 1s linear infinite;
  box-shadow:0 18px 60px rgba(0,0,0,.35);
}
@keyframes spin{to{transform:rotate(360deg)}}
.loader-text{margin-top:14px;text-align:center;color:rgba(234,241,255,.8);font-size:13px}

.toast-wrap{position:fixed;z-index:130;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px}
.toast{
  min-width:280px;max-width:360px;
  padding:12px 14px;border-radius:16px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.08);
  backdrop-filter: blur(14px);
  box-shadow:0 22px 70px rgba(0,0,0,.45);
  animation:toastIn .22s ease-out;
}
@keyframes toastIn{from{transform:translateY(6px);opacity:0}to{transform:translateY(0);opacity:1}}
.toast .t{font-weight:900;margin-bottom:4px}
.toast.ok{border-color:rgba(34,197,94,.30)}
.toast.err{border-color:rgba(239,68,68,.35)}
.toast.info{border-color:rgba(59,130,246,.35)}

.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px}
.login-card{width:min(480px, 96vw);padding:22px}
.login-title{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.login-title img{width:44px;height:44px}
.login-title h1{margin:0;font-size:18px;font-weight:950;letter-spacing:.08em}
.mini{font-size:12px;color:var(--muted);margin:8px 0 0}
.pw-row{position:relative}
.pw-toggle{
  position:absolute;right:10px;top:50%;transform:translateY(-50%);
  border:0;background:transparent;color:rgba(234,241,255,.9);
  padding:6px;border-radius:10px;cursor:pointer;
}
.pw-toggle:hover{background:rgba(255,255,255,.07)}
.help{margin-top:12px;color:rgba(234,241,255,.7);font-size:12px}
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.filters .f{min-width:190px;flex:1;display:flex;flex-direction:column}
.filters .f label{margin:0 0 6px}
.filters .f .btn{margin-top:auto}
