:root{--ink:#1b2430;--navy:#0d1b2e;--navy-mid:#142033;--navy-light:#1e3050;--navy-hover:#243760;--gold:#c49a2e;--gold-light:#e4c875;--gold-dim:#c49a2e2e;--paper:#f6f4ef;--card:#fff;--line:#e4decf;--line-dark:#ffffff14;--muted:#6b7280;--muted-light:#9ca3af;--danger:#b3261e;--danger-bg:#fbeae9;--ok:#1b6b45;--ok-bg:#e4f4ec;--sidebar-w:240px;--sidebar-bg:#0a1628;--sidebar-border:#ffffff12;--font-display:"Fraunces", Georgia, serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--radius:10px;--radius-lg:16px;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000f;--shadow-md:0 4px 16px #0000001a;--shadow-lg:0 8px 32px #00000024;--transition:.15s ease}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}h1,h2,h3,h4{font-family:var(--font-display);margin:0;font-weight:600}a{color:inherit;text-decoration:none}button{font-family:var(--font-body);cursor:pointer}img{display:block}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}.page{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;padding:18px 24px;display:flex;box-shadow:0 2px 8px #0000002e}.topbar .brand{font-family:var(--font-display);letter-spacing:.02em;align-items:center;gap:10px;font-size:1.15rem;display:flex}.topbar .brand .mark{background:var(--gold);width:32px;height:32px;color:var(--navy);font-weight:700;font-family:var(--font-body);letter-spacing:.04em;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;display:inline-flex}.container{width:100%;max-width:880px;margin:0 auto;padding:32px 20px 64px}.container.wide{max-width:1180px}.admin-shell{background:#0f1e35;min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);z-index:100;flex-direction:column;min-height:100vh;padding:0 0 24px;display:flex;position:fixed;top:0;left:0}.sidebar-brand{border-bottom:1px solid var(--sidebar-border);align-items:center;gap:12px;margin-bottom:12px;padding:24px 20px 20px;display:flex}.sidebar-brand .mark{background:linear-gradient(135deg, var(--gold) 0%, #f0d060 100%);width:36px;height:36px;color:var(--navy);letter-spacing:.06em;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:.78rem;font-weight:800;display:flex}.sidebar-brand-text{flex-direction:column;gap:1px;display:flex}.sidebar-brand-text strong{color:#fff;letter-spacing:.04em;font-size:.88rem;font-weight:700;font-family:var(--font-body)}.sidebar-brand-text span{color:var(--muted-light);letter-spacing:.02em;font-size:.72rem}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:0 10px;display:flex}.sidebar-nav a,.sidebar-nav button{color:#ffffff9e;transition:background var(--transition), color var(--transition);text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:.88rem;font-weight:500;text-decoration:none;display:flex}.sidebar-nav a:hover,.sidebar-nav button:hover{color:#fff;background:#ffffff0f}.sidebar-nav a.active{background:var(--gold-dim);color:var(--gold-light)}.sidebar-nav .nav-icon{opacity:.7;flex-shrink:0;width:18px;height:18px}.sidebar-nav a.active .nav-icon{opacity:1}.sidebar-section-label{text-transform:uppercase;letter-spacing:.1em;color:#ffffff4d;padding:16px 22px 6px;font-size:.68rem;font-weight:600}.sidebar-signout{border-top:1px solid var(--sidebar-border);margin-top:8px;padding:12px 10px 0}.admin-main{margin-left:var(--sidebar-w);background:var(--paper);flex-direction:column;flex:1;min-height:100vh;display:flex}.admin-topbar{border-bottom:1px solid var(--line);z-index:50;box-shadow:var(--shadow-sm);background:#fff;justify-content:space-between;align-items:center;padding:16px 28px;display:flex;position:sticky;top:0}.admin-topbar-title{font-family:var(--font-display);color:var(--navy);font-size:1.1rem;font-weight:600}.admin-topbar-right{align-items:center;gap:10px;display:flex}.admin-content{padding:28px 28px 64px}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin-bottom:32px;display:grid}.stat-card{border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition), transform var(--transition);background:#fff;flex-direction:column;gap:10px;padding:22px 20px;display:flex}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-card-icon{border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;display:flex}.stat-card-icon.gold{background:#fef3c7}.stat-card-icon.blue{background:#eff6ff}.stat-card-icon.green{background:#ecfdf5}.stat-card-icon.purple{background:#f5f3ff}.stat-card-value{font-size:2rem;font-weight:700;font-family:var(--font-display);color:var(--navy);line-height:1}.stat-card-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:600}.stat-card-sub{color:var(--muted-light);margin-top:2px;font-size:.78rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:11px 14px;font-size:.88rem}th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:#fafaf9;font-size:.75rem;font-weight:600}tr:last-child td{border-bottom:none}tbody tr:hover td{background:#fafaf9}.batch-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;display:grid}.batch-card{border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition), transform var(--transition);color:inherit;background:#fff;flex-direction:column;gap:12px;padding:20px;text-decoration:none;display:flex}.batch-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.batch-card-header{justify-content:space-between;align-items:flex-start;display:flex}.batch-card-name{font-family:var(--font-display);color:var(--navy);font-size:1.05rem;font-weight:600}.batch-card-code{background:var(--gold-dim);color:var(--gold);letter-spacing:.05em;border-radius:6px;padding:3px 8px;font-size:.72rem;font-weight:700}.batch-card-count{color:var(--muted);font-size:.85rem}.batch-card-count strong{color:var(--navy);font-size:1rem;font-weight:700}.batch-card-actions{gap:8px;margin-top:4px;display:flex}.field{margin-bottom:20px}.field label{color:var(--navy);margin-bottom:6px;font-size:.84rem;font-weight:600;display:block}.field .hint{color:var(--muted);margin-top:4px;font-size:.78rem}input[type=text],input[type=email],input[type=tel],input[type=date],input[type=password],input[type=number],select,textarea{border:1px solid var(--line);width:100%;font-size:.93rem;font-family:var(--font-body);color:var(--ink);transition:border-color var(--transition), outline var(--transition);background:#fff;border-radius:8px;padding:10px 12px}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{outline:2px solid var(--gold-light);outline-offset:1px;border-color:var(--gold)}.radio-row{flex-wrap:wrap;gap:18px;display:flex}.radio-row label{color:var(--ink);align-items:center;gap:6px;font-size:.92rem;font-weight:500;display:flex}.search-wrap{width:100%;max-width:380px;position:relative}.search-wrap input{background:#fff;padding-left:38px}.search-icon{color:var(--muted);pointer-events:none;width:16px;height:16px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.btn{transition:background var(--transition), box-shadow var(--transition), transform var(--transition);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:10px 20px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--navy);color:#fff}.btn-primary:hover{background:var(--navy-light);box-shadow:0 4px 12px #0d1b2e40}.btn-gold{background:var(--gold);color:var(--navy)}.btn-gold:hover{background:var(--gold-light);box-shadow:0 4px 12px #c49a2e59}.btn-outline{border:1px solid var(--line);color:var(--navy);background:0 0}.btn-outline:hover{background:var(--paper)}.btn-ghost{color:var(--muted);background:0 0;border:none;padding:8px 12px}.btn-ghost:hover{background:var(--paper);color:var(--ink)}.btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid #f1c7c4}.btn-danger:hover{background:#f8d7d5}.btn-sm{border-radius:6px;padding:7px 14px;font-size:.8rem}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.badge{color:var(--navy);letter-spacing:.03em;background:#efead9;border-radius:100px;padding:3px 10px;font-size:.73rem;font-weight:700;display:inline-block}.badge-green{background:var(--ok-bg);color:var(--ok)}.badge-red{background:var(--danger-bg);color:var(--danger)}.badge-blue{color:#1d4ed8;background:#eff6ff}.badge-gold{background:var(--gold-dim);color:var(--gold)}.grade-pill{letter-spacing:.04em;border-radius:100px;align-items:center;padding:4px 10px;font-size:.75rem;font-weight:700;display:inline-flex}.grade-pill.passed{background:var(--ok-bg);color:var(--ok)}.grade-pill.failed{background:var(--danger-bg);color:var(--danger)}.grade-pill.pending{color:var(--muted);background:#f3f4f6}.grade-pill.in-progress{color:#b45309;background:#fef3c7}.section-title{text-transform:uppercase;letter-spacing:.09em;color:var(--gold);margin:28px 0 12px;font-size:.73rem;font-weight:700}.section-title:first-child{margin-top:0}.profile-row{border-bottom:1px solid var(--line);gap:16px;padding:9px 0;font-size:.88rem;display:flex}.profile-row:last-child{border-bottom:none}.profile-row-label{color:var(--muted);flex-shrink:0;min-width:180px;font-weight:500}.profile-row-value{color:var(--ink)}.error-box{background:var(--danger-bg);color:var(--danger);border:1px solid #f1c7c4;border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:.88rem}.success-box{background:var(--ok-bg);color:var(--ok);border:1px solid #bfe0ce;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:.88rem}.info-box{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:.88rem}.avatar-upload{align-items:center;gap:16px;display:flex}.avatar-preview{object-fit:cover;border:2px solid var(--line);background:#efead9;border-radius:50%;width:84px;height:84px}.grades-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:20px;display:grid}.grade-box{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:4px;padding:14px 16px;display:flex}.grade-box-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;font-weight:600}.grade-box-value{font-size:1.4rem;font-weight:700;font-family:var(--font-display);color:var(--navy)}.grade-box-value.empty{color:var(--muted-light);font-size:1rem;font-family:var(--font-body)}.upload-zone{border:2px dashed var(--line);border-radius:var(--radius);text-align:center;transition:border-color var(--transition), background var(--transition);cursor:pointer;padding:24px}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--gold);background:#fffbf0}.upload-zone p{color:var(--muted);margin:8px 0 0;font-size:.88rem}.login-shell,.reg-bg{background-color:#0000;background-image:linear-gradient(135deg,#0d1b2ed9 0%,#142033eb 100%),url(/bg.png);background-position:0 0,50%;background-repeat:repeat,no-repeat;background-size:auto,cover;background-attachment:fixed;background-origin:padding-box,padding-box;background-clip:border-box,border-box;justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex}.login-logo{background:linear-gradient(135deg, var(--gold) 0%, #f0d060 100%);width:64px;height:64px;color:var(--navy);letter-spacing:.06em;border-radius:18px;justify-content:center;align-items:center;font-size:1.1rem;font-weight:900;display:flex;box-shadow:0 8px 24px #c49a2e66}.login-form-panel{justify-content:center;align-items:center;width:100%;padding:20px 0;display:flex}.login-form-box,.reg-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--radius-lg);background:#fffffff5;border:1px solid #fff6;width:100%;max-width:580px;padding:40px 36px;box-shadow:0 20px 50px #0000004d}.reg-card.wide{max-width:860px}.reg-header{text-align:center;flex-direction:column;align-items:center;margin-bottom:28px;display:flex}@media (max-width:720px){.login-brand-panel{display:none}.admin-main{margin-left:0}}.muted{color:var(--muted)}.text-sm{font-size:.82rem}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.w-full{width:100%}.mobile-admin-header{background:var(--sidebar-bg);z-index:120;border-bottom:1px solid var(--sidebar-border);padding:12px 16px;display:none;position:sticky;top:0}.mobile-menu-btn{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:.85rem;font-weight:600;display:flex}.mobile-close-btn{color:#fff9;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:1.2rem;display:none}.mobile-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:140;background:#0009;display:none;position:fixed;inset:0}.profile-student-grid{grid-template-columns:340px 1fr;align-items:start;gap:20px;display:grid}.profile-tabs-scroll{border-bottom:2px solid var(--line);white-space:nowrap;-webkit-overflow-scrolling:touch;gap:8px;margin-bottom:20px;padding-bottom:4px;display:flex;overflow-x:auto}.profile-tabs-scroll::-webkit-scrollbar{display:none}@media (max-width:900px){.profile-student-grid{grid-template-columns:1fr!important}}@media (max-width:640px){.profile-row{flex-direction:column;gap:3px;padding:8px 0}.profile-row-label{text-transform:uppercase;letter-spacing:.05em;min-width:0;color:var(--muted);font-size:.75rem}.profile-row-value{word-break:break-word;font-size:.92rem;font-weight:600}.grades-grid{gap:8px;grid-template-columns:repeat(2,1fr)!important}.grade-box{padding:10px 12px}.grade-box-label{font-size:.68rem}.grade-box-value{font-size:1.2rem}}@media (max-width:768px){.mobile-admin-header{justify-content:space-between;align-items:center;display:flex}.mobile-close-btn,.mobile-overlay{display:block}.admin-shell{flex-direction:column}.sidebar{z-index:150;width:260px;height:100vh;transition:left .25s cubic-bezier(.4,0,.2,1);position:fixed;top:0;left:-280px;box-shadow:6px 0 24px #00000059;display:flex!important}.sidebar.mobile-open{left:0!important}.admin-main{width:100%;margin-left:0!important}.admin-topbar{flex-wrap:wrap;gap:10px;padding:12px 16px}.admin-content{padding:16px 12px 48px}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.batch-grid{grid-template-columns:1fr}table{white-space:nowrap;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.login-form-box{max-width:92%;padding:28px 20px}}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton{background:linear-gradient(90deg,#e8e3d8 25%,#f2ede4 50%,#e8e3d8 75%) 0 0/1200px 100%;border-radius:8px;animation:1.4s ease-in-out infinite shimmer}.card.skeleton{box-shadow:none;border:none;background:linear-gradient(90deg,#e8e3d8 25%,#f2ede4 50%,#e8e3d8 75%) 0 0/1200px 100%!important}
