@import url("/assets/css/gves-unicode.css?v=20260717-final");
:root{--navy:#102a43;--blue:#1769aa;--bg:#f3f7fb;--text:#243b53;--muted:#627d98;--border:#d9e2ec;--success:#137333;--danger:#b42318;--white:#fff}
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--text)}
.auth-page{min-height:100vh;background:linear-gradient(135deg,#102a43,#1769aa);display:grid;place-items:center;padding:24px}.auth-shell{width:100%;max-width:440px}.auth-card{background:#fff;padding:36px;border-radius:20px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.brand-mark{width:58px;height:58px;border-radius:16px;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px;margin-bottom:20px}.eyebrow{font-size:12px;letter-spacing:1.5px;font-weight:800;color:var(--blue);margin:0 0 8px}.auth-card h1{margin:0 0 8px;font-size:30px}.muted{color:var(--muted);margin:0 0 24px;line-height:1.5}.auth-card label{display:block;font-weight:700;margin:14px 0 7px}.auth-card input,.filter-form select{width:100%;border:1px solid var(--border);border-radius:10px;padding:13px 14px;font-size:15px;outline:none}.auth-card input:focus,.filter-form select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,105,170,.12)}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:12px 18px;font-weight:700;text-decoration:none;cursor:pointer}.btn-primary{background:var(--blue);color:#fff}.btn-light{background:#fff;color:var(--navy)}.btn-block{width:100%;margin-top:22px}.back-link{display:block;text-align:center;margin-top:20px;color:var(--blue);text-decoration:none}.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px}.alert-error{background:#fff1f0;color:var(--danger);border:1px solid #ffccc7}
.portal-page{min-height:100vh;background:var(--bg)}.topbar{background:linear-gradient(120deg,var(--navy),var(--blue));color:#fff;padding:26px max(24px,calc((100% - 1280px)/2));display:flex;justify-content:space-between;gap:20px;align-items:center}.topbar h1{margin:2px 0 5px;font-size:24px}.topbar .eyebrow,.muted-light{color:#d9eaf7;margin:0}.page-wrap{max-width:1280px;margin:0 auto;padding:28px 22px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card,.panel{background:#fff;border:1px solid var(--border);border-radius:15px;box-shadow:0 8px 24px rgba(16,42,67,.06)}.stat-card{padding:20px}.stat-card span{display:block;color:var(--muted);font-size:14px;margin-bottom:10px}.stat-card strong{font-size:30px;color:var(--navy)}.panel{overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:20px 22px;border-bottom:1px solid var(--border)}.panel-head h2{margin:0 0 6px;font-size:21px}.panel-head p{margin:0;color:var(--muted)}.filter-form{min-width:240px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:900px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--border);vertical-align:middle}th{background:#f8fafc;font-size:13px;color:#486581;text-transform:uppercase;letter-spacing:.4px}td small{color:var(--muted)}.badge{display:inline-block;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:800}.badge-success{background:#e8f5e9;color:var(--success)}.badge-danger{background:#fff0f0;color:var(--danger)}.empty-state{text-align:center;color:var(--muted);padding:36px}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}.panel-head{align-items:stretch;flex-direction:column}.filter-form{min-width:0}.topbar{padding:22px}}
@media(max-width:540px){.stats-grid{grid-template-columns:1fr}.auth-card{padding:26px}.page-wrap{padding:18px 12px}.topbar h1{font-size:19px}}
.alert-success{background:#edf9f0;color:#137333;border:1px solid #b7e4c0}.top-actions{display:flex;gap:10px;flex-wrap:wrap}.bulk-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;background:#f8fafc;border-top:1px solid var(--border)}.bulk-actions label{font-weight:700}.course-notice{padding:17px 22px;background:#fff8e6;color:#7a4b00;border-top:1px solid #f4d58d}.student-check{width:18px;height:18px}.text-link{color:var(--blue);font-weight:700;text-decoration:none}.badge-pending{background:#fff7e6;color:#9a5b00}.badge-approved{background:#e8f5e9;color:#137333}.badge-rejected{background:#fff0f0;color:#b42318}.badge-completed{background:#e8eefc;color:#214e9b}
