*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f4f7fb;color:#1f2937}header{background:#173b67;color:#fff;padding:18px 5%;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px rgba(0,0,0,.12)}header h1{margin:0 0 4px}.logout,.danger{text-decoration:none}.logout{background:#fff;color:#173b67;padding:10px 14px;border-radius:8px;font-weight:bold}main{width:94%;max-width:1400px;margin:24px auto}.card,.login-card{background:#fff;border-radius:14px;padding:22px;box-shadow:0 5px 20px rgba(0,0,0,.07);margin-bottom:22px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#eef4fb,#f8fafc)}.login-card{width:100%;max-width:440px;margin:0}.brand{width:56px;height:56px;border-radius:14px;background:#173b67;color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px;margin:0 auto 14px}.login-card h1{text-align:center;color:#173b67;margin-bottom:8px}.login-card p,.demo{text-align:center;color:#6b7280;line-height:1.55}.login-card label{display:block;margin:14px 0 6px;font-weight:600}.login-card input,.grid-form input,.mark,.reset-box input{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:8px;background:#fff}.login-card input:focus,.mark:focus{outline:2px solid #9cc2eb;border-color:#173b67}button{border:0;background:#173b67;color:#fff;padding:11px 18px;border-radius:8px;cursor:pointer;font-weight:bold}.login-card button{width:100%;margin-top:18px}.demo{margin-top:18px;background:#f6f8fb;padding:12px;border-radius:8px}.grid-form{display:grid;grid-template-columns:2fr 1fr 1fr 2fr 1fr auto;gap:12px;align-items:center}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:980px}th,td{border:1px solid #d8e0ea;padding:10px;text-align:center;vertical-align:middle}th{background:#eaf0f7;color:#173b67;font-size:13px}th span{font-weight:normal;color:#64748b}.left{text-align:left}.mark{min-width:82px;text-align:center;padding:9px}.smallbtn{padding:8px 10px}.danger{display:inline-block;background:#b42318;color:white;padding:8px 10px;border-radius:8px}.success,.alert{padding:12px 14px;border-radius:8px;margin-bottom:15px}.success{background:#e8f7ee;color:#176a3a}.alert{background:#fdecec;color:#a61b1b}.muted{color:#64748b}.savebar{display:flex;justify-content:flex-end;padding-top:16px}.savebar button{min-width:210px}.reset-box{display:flex;gap:6px;margin-top:8px;min-width:220px}.reset-box input{padding:8px}.profile h2{margin-top:0;color:#173b67}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.info-grid div{background:#f6f8fb;padding:14px;border-radius:10px}.info-grid span{display:block;color:#64748b;font-size:13px;margin-bottom:5px}.total{background:#eef7ee;color:#176a3a}.section-head h2{margin-bottom:4px}details summary{cursor:pointer;color:#173b67;font-weight:600}small{color:#64748b}@media(max-width:950px){.grid-form{grid-template-columns:1fr 1fr}.grid-form button{grid-column:span 2}.info-grid{grid-template-columns:1fr}}@media(max-width:600px){.grid-form{grid-template-columns:1fr}.grid-form button{grid-column:span 1}header{padding:16px 4%}main{width:96%}.login-card{padding:18px}}
.eyebrow{display:inline-block;color:#2563a5;font-size:12px;font-weight:800;letter-spacing:.08em;margin-bottom:2px}.upload-card{border-top:4px solid #2563a5}.upload-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.upload-steps>div{position:relative;background:#f6f9fd;border:1px solid #dce8f5;border-radius:12px;padding:16px 16px 16px 56px;min-height:86px}.upload-steps span{position:absolute;left:16px;top:17px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#173b67;color:#fff;font-weight:800}.upload-steps b,.upload-steps small{display:block}.upload-steps small{margin-top:6px;line-height:1.4}.upload-actions{display:grid;grid-template-columns:minmax(230px,.7fr) minmax(360px,1.3fr);gap:16px;align-items:stretch}.download-btn{display:flex;align-items:center;justify-content:center;text-align:center;background:#eaf3fc;border:1px solid #b9d2eb;color:#173b67;text-decoration:none;border-radius:10px;font-weight:800;padding:18px}.download-btn:hover{background:#dcecfb}.upload-form{border:1px dashed #9db7d2;border-radius:10px;padding:14px;background:#fbfdff}.upload-form label{display:block;font-weight:700;margin-bottom:9px}.file-row{display:flex;gap:10px;align-items:center;margin-bottom:6px}.file-row input{min-width:0;flex:1;border:1px solid #cbd5e1;border-radius:8px;padding:8px;background:#fff}.file-row button{white-space:nowrap}@media(max-width:800px){.upload-steps,.upload-actions{grid-template-columns:1fr}.file-row{align-items:stretch;flex-direction:column}.file-row button{width:100%}}
.marks-table{min-width:1450px}.meta-input{width:120px;padding:9px;border:1px solid #cbd5e1;border-radius:8px}.code-input{text-transform:uppercase}.subject-input{width:180px}.subject-info{grid-template-columns:.8fr .8fr 2fr}@media(max-width:950px){.subject-info{grid-template-columns:1fr}}
.assignment-total{background:#fff8e6;color:#8a5800}.assignment-total strong{display:block;font-size:16px}.max-note{display:block;margin-top:4px;white-space:nowrap}
.empty-state{padding:30px;color:#64748b;background:#f8fafc;text-align:center}
.first-register{margin-top:16px;padding-top:14px;border-top:1px solid #e2e8f0;text-align:center}.first-register p{margin:0 0 10px}.login-card .secondary-btn{display:block;width:100%;padding:11px 18px;border-radius:8px;background:#eaf3fc;color:#173b67;border:1px solid #b9d2eb;text-decoration:none;font-weight:bold}.register-heading{text-align:center;margin:4px 0 16px}.register-heading h2{color:#173b67;margin-bottom:5px}.register-heading p{margin:0}.back-login{display:block;text-align:center;margin-top:16px;color:#173b67;text-decoration:none;font-weight:600}
.course-notes{margin:8px 0 28px;padding:22px;background:#173b67;color:#fff;border-radius:14px;box-shadow:0 5px 20px rgba(0,0,0,.1)}.notes-heading h2{margin:0 0 5px}.notes-heading p{margin:0;color:#cbdcf0}.notes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}.notes-grid article{background:#fff;color:#1f2937;border-radius:12px;padding:17px;border-top:4px solid #7fb2e5}.notes-grid h3{margin:0 0 6px;color:#173b67;font-size:17px;line-height:1.35}.course-code{display:inline-block;background:#eaf3fc;color:#173b67;border-radius:6px;padding:5px 8px;font-size:12px;font-weight:800}.scheme-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:14px}.scheme-row div{text-align:center;background:#f6f8fb;border-radius:8px;padding:9px 5px}.scheme-row span,.scheme-row b{display:block}.scheme-row span{font-size:11px;color:#64748b;text-transform:uppercase}.scheme-row b{margin-top:4px;font-size:19px;color:#173b67}.footer-note{text-align:center;color:#dce8f5;margin:18px 0 0;font-size:13px}@media(max-width:900px){.notes-grid{grid-template-columns:1fr}}@media(max-width:480px){.course-notes{padding:16px}.scheme-row{gap:4px}.scheme-row div{padding:8px 3px}}
.reference-table-wrap{overflow-x:auto;margin-top:18px;border-radius:10px}.reference-table{min-width:1080px;background:#fff;color:#1f2937}.reference-table th{background:#dce8f5;color:#173b67}.reference-table td{background:#fff}.reference-table tbody tr:nth-child(even) td{background:#f6f8fb}.reference-table td:nth-child(n+4){font-size:16px}.footer-note{text-align:center;color:#dce8f5;margin:18px 0 0;font-size:13px}@media(max-width:480px){.course-notes{padding:16px}}
.student-id-grid{grid-template-columns:minmax(220px,420px)}
.first-login-notice{color:#b42318;font-weight:800}
body:has(.marks-table) main{width:98%;max-width:none;margin:18px auto}body:has(.marks-table) .card{padding:18px}.marks-table{min-width:1650px}.marks-table th,.marks-table td{padding:8px 7px}.marks-table th:last-child,.marks-table td:last-child{position:sticky;right:0;z-index:2;min-width:90px}.marks-table th:last-child{z-index:3;background:#dce8f5}.marks-table td:last-child{background:#fff;box-shadow:-5px 0 8px rgba(23,59,103,.08)}.marks-table .subject-name{display:block;min-width:155px}.marks-table .danger{white-space:nowrap}@media(max-width:700px){body:has(.marks-table) main{width:100%;margin:10px auto}body:has(.marks-table) .card{padding:12px;border-radius:8px}}
