:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#20304c;background:#f7f9fc;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.58;cursor:not-allowed}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-.9px;margin-bottom:8px;font-weight:760}h2{font-size:17px;letter-spacing:-.2px;margin-bottom:16px}h3{font-size:16px;margin-bottom:8px}p{line-height:1.65}.shell{display:flex;min-height:100vh}.sidebar{width:248px;background:#062f60;color:#d8e2f5;display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh;padding:28px 16px 18px}.brand{display:flex;align-items:center;font-size:18px;font-weight:800;color:white;gap:12px;margin:2px 12px 40px;letter-spacing:-.5px}.brand span{color:#ffad57}.brand small{display:block;font-size:9px;letter-spacing:2.4px;color:#8593b3;font-weight:700;margin-top:4px}.brand-logo{background:#d16a09;color:white;border-radius:13px;width:38px;height:38px;display:grid;place-items:center;font-weight:850;font-size:22px;box-shadow:0 6px 14px #1b2f7255}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-item{border:0;color:#aebcd5;text-align:left;background:none;display:flex;align-items:center;gap:12px;padding:13px 16px;border-radius:9px;font-weight:600;width:100%}.nav-item:hover{background:#143f73;color:#fff}.nav-item.chosen{background:#d16a09;color:white;box-shadow:0 3px 8px #090e2838}.nav-icon{width:22px;font-size:19px;text-align:center}.sidebar-bottom{margin-top:auto}.help-card{background:#123c71;padding:17px;border-radius:13px;margin:0 6px 16px}.help-card div{font-weight:700;color:#f5f7ff}.help-card p{font-size:12px;margin:7px 0 0;color:#9baacc;line-height:1.7}.logout{background:none;border:0;color:#b2beda;padding:12px 19px;text-align:left;font-weight:600}.logout:hover{color:white}.main-wrap{flex:1;min-width:0}.topbar{height:76px;border-bottom:1px solid #e8edf5;background:white;display:flex;align-items:center;justify-content:space-between;padding:0 45px}.topbar-label{font-size:13px;font-weight:650;color:#8a95a7}.topbar-user{display:flex;align-items:center;gap:13px}.user-name{display:block;text-align:right;font-size:13px;font-weight:730}.user-name small{display:block;font-size:11px;font-weight:500;color:#8793a5;text-transform:capitalize;margin-top:3px}.avatar{background:#e6eff8;color:#0a467f;height:39px;width:39px;display:grid;place-items:center;border-radius:13px;font-weight:800}.main-content{max-width:1450px;margin:auto;padding:38px 45px 60px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:29px;gap:15px}.page-head h1{color:#182641}.page-head p{margin-bottom:0;color:#8a95a8}.eyebrow{font-size:10px;color:#7686a3;font-weight:800;letter-spacing:2px;margin-bottom:8px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:35px}.stat{background:#fff;border:1px solid #e8edf5;border-radius:15px;padding:23px;display:flex;align-items:center;gap:20px;box-shadow:0 3px 15px #28375305}.stat-icon{height:58px;width:58px;display:grid;place-items:center;border-radius:14px;font-size:29px}.stat-icon.lilac{color:#0a467f;background:#e6eff8}.stat-icon.peach{color:#ee935f;background:#fff0e6}.stat-icon.blue{color:#4d8cdc;background:#e9f3ff}.stat strong{display:block;font-size:30px;color:#1b2944;line-height:1.2}.stat span{display:block;color:#8693a9;margin-top:5px}.section-title,.panel-head{display:flex;justify-content:space-between;align-items:center}.section-title h2,.panel-head h2{margin-bottom:0}.section-title{margin-bottom:17px}.link-btn{background:none;border:0;color:#0a467f;font-weight:750;padding:8px}.link-btn:hover{text-decoration:underline}.course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:35px}.course-tile{background:#fff;border:1px solid #e8edf5;border-radius:16px;text-align:left;overflow:hidden;box-shadow:0 4px 16px #27355606;min-height:270px;padding:0;display:block;transition:transform .15s,box-shadow .15s}.course-tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px #25365615}.course-cover{height:91px;display:flex;justify-content:space-between;align-items:center;padding:20px 24px;font-size:38px;color:#ffffffca;background:linear-gradient(115deg,#063b75,#0a589c)}.course-tile:nth-child(3n+2) .course-cover{background:linear-gradient(115deg,#0b578c,#7bb6d5)}.course-tile:nth-child(3n+3) .course-cover{background:linear-gradient(115deg,#c2640b,#f0bb79)}.cover-dots{letter-spacing:4px;font-size:15px}.course-body{padding:20px 23px}.course-body h3{margin-top:11px;color:#1d2d48}.course-body p{color:#8a95a7;min-height:37px;font-size:12px;margin-bottom:12px}.course-foot{display:flex;justify-content:space-between;align-items:center;color:#0a467f;border-top:1px solid #eef1f6;padding-top:14px;font-weight:750;font-size:12px}.course-foot span{font-size:21px}.tag{display:inline-flex;align-items:center;font-size:10px;text-transform:uppercase;letter-spacing:.6px;font-weight:800;border-radius:5px;padding:6px 9px;background:#eef1f8;color:#6e7e9b;white-space:nowrap}.tag-good{background:#e8f7f0;color:#2a9b6c}.tag-warn{background:#fff3e2;color:#c2892a}.tag-bad{background:#fff0ef;color:#d56868}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{background:#fff;border:1px solid #e8edf5;border-radius:15px;padding:24px;min-width:0}.panel-head{padding-bottom:15px;border-bottom:1px solid #edf0f6}.line-item{display:flex;align-items:center;gap:12px;padding:17px 0;border-bottom:1px solid #f0f2f6}.line-item:last-child{border-bottom:none;padding-bottom:4px}.line-item>div:nth-child(2){min-width:0;flex:1}.line-item strong{display:block;font-size:13px;color:#24314b;font-weight:700;margin-bottom:5px}.line-item small,.grading-head small{display:block;font-size:11px;color:#96a0b0}.line-icon{height:37px;width:37px;min-width:37px;border-radius:11px;background:#e8f0f7;color:#0a467f;display:grid;place-items:center;font-size:21px}.empty{padding:45px 12px;text-align:center;color:#929eb0;display:flex;flex-direction:column;align-items:center;gap:10px}.empty strong{color:#40506e;font-size:14px}.empty p{font-size:12px;margin:0}.empty-illustration{font-size:40px;color:#b1bbcd}.spin{height:32px;width:32px;border-radius:50%;border:3px solid #e2e8fb;border-top-color:#d16a09;animation:rot .7s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}.back-btn{background:none;border:0;color:#0a467f;font-weight:750;margin-bottom:22px;padding:0}.detail-grid{grid-template-columns:1.12fr .88fr}.lesson{display:flex;gap:14px;padding:19px 0;border-bottom:1px solid #edf1f5}.lesson-no{color:#0a467f;background:#e8f0f7;padding:10px;height:40px;min-width:40px;text-align:center;border-radius:10px;font-weight:800}.lesson strong{color:#233551}.lesson p{font-size:12px;color:#8390a7;margin:7px 0}.resource-link{color:#0a467f;border:0;background:none;padding:6px 0;display:block;font-size:12px;text-align:left;font-weight:750}.resource-link:hover{text-decoration:underline}.with-margin{margin-top:24px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left}th{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#8b97aa;background:#fafbfe;padding:14px 12px}td{padding:15px 12px;border-bottom:1px solid #f0f2f7;font-size:12px;color:#56657d}td strong{display:block;color:#24314c;font-size:13px}td small{display:block;color:#9aa5b4;margin-top:5px}.mini-btn{color:#0a467f;background:#edf3fa;border:0;border-radius:7px;padding:9px 12px;font-weight:750;font-size:11px;white-space:nowrap}.mini-btn:hover{background:#e0edf9}.assignment-list,.announcement-list{display:grid;gap:15px;max-width:1020px}.assignment-card,.announce-card{background:white;border:1px solid #e7ecf6;border-radius:16px;padding:25px}.assignment-meta{display:flex;gap:8px;margin-bottom:13px}.assignment-card h3{font-size:18px;color:#1c2c4c}.muted{color:#919eae;font-size:12px}.instructions{white-space:pre-wrap;color:#65758a;font-size:13px;margin-top:15px}.submit-box,.submission-box{margin-top:19px;border-top:1px solid #edf0f5;padding-top:15px}.submission-box{border-radius:9px;padding:14px;background:#f2f9f6;border:0;color:#38745d;font-size:12px}.feedback{margin-top:11px;border-top:1px solid #dcece5;padding-top:9px;color:#263d34}.feedback p{margin:4px 0 0;white-space:pre-wrap}.submit-box label{max-width:470px}.submit-box .btn{margin-top:12px}.announce-card{display:flex;gap:17px}.announce-icon{height:45px;width:45px;border-radius:12px;display:grid;place-items:center;background:#edf3fa;color:#0a467f;font-size:23px;flex-shrink:0}.announce-metadata{display:flex;align-items:center;gap:13px;color:#9ba7b6;font-size:11px;margin-bottom:12px}.announce-card h3{color:#1f304d}.announce-card p{white-space:pre-wrap;color:#738096;margin-bottom:0}.profile-split{max-width:980px}.profile-avatar{height:80px;width:80px;display:grid;place-items:center;border-radius:50%;background:#e8f0f7;color:#0a467f;font-size:25px;font-weight:800;margin:9px auto 10px}.center{text-align:center;margin-bottom:24px}label{display:block;color:#445570;font-size:12px;font-weight:700;margin:14px 0}input,textarea,select{display:block;background:#fff;border:1px solid #dfe5ef;color:#293752;width:100%;border-radius:8px;padding:11px 12px;margin-top:7px;outline:none}textarea{resize:vertical}input:focus,textarea:focus,select:focus{border-color:#0a589c;box-shadow:0 0 0 3px #d16a091c}input[type=file]{padding:9px}.btn{border:0;border-radius:9px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:12px 18px}.btn.primary{background:#0a467f;color:#fff;box-shadow:0 3px 10px #566dd124}.btn.primary:hover{background:#073663}.btn.small{padding:10px 12px;font-size:11px}.full{width:100%;margin-top:14px}.text-btn{border:0;background:none;color:#0a467f;font-weight:750;margin:18px auto 0;display:block}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at 10% 10%,#edf3fa,transparent 55%),#f8fafc;padding:24px}.auth-brand{display:flex;align-items:center;gap:10px;font-size:21px;font-weight:850;color:#233454;margin-bottom:32px}.auth-brand span{color:#d16a09}.auth-card{background:white;border:1px solid #e6eafb;border-radius:20px;padding:40px;box-shadow:0 15px 50px #22375c12;width:min(440px,100%)}.auth-symbol{background:#eaf2fa;color:#d16a09;width:51px;height:51px;display:grid;place-items:center;border-radius:13px;font-size:26px;margin-bottom:23px}.auth-card h1{font-size:28px}.auth-card p{color:#8894a7;font-size:13px;margin-bottom:25px}.auth-card label{margin-top:16px}.auth-footer{font-size:12px;color:#92a0b7;margin-top:25px}.toast{position:fixed;right:25px;bottom:25px;max-width:480px;z-index:5;box-shadow:0 9px 25px #25314b24}.alert,.toast{padding:14px 17px;border-radius:10px;font-size:12px;font-weight:700;margin-bottom:20px;display:flex;justify-content:space-between;gap:16px;align-items:center}.alert button,.toast button{border:0;background:none;font-size:20px;color:inherit}.alert.bad,.toast.bad{background:#ffedec;color:#af4d4a}.alert.good,.toast.good{background:#ebf7f0;color:#307c59}.manage-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}.manage-tab{border:1px solid #e3e9f2;border-radius:8px;background:#fff;color:#68788f;padding:11px 14px;font-size:12px;font-weight:750}.manage-tab.active{color:#fff;background:#0a467f;border-color:#0a467f}.manage-panel{max-width:1060px;min-height:350px}.manage-panel>h3{margin-top:25px}.manage-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin:10px 0 30px;max-width:750px}.manage-form label:has(textarea),.manage-form button{grid-column:1/-1}.manage-form .btn{justify-self:start}.credential{background:#fff8e8;border:1px solid #f5df9d;border-radius:10px;padding:15px;margin:15px 0}.credential strong,.credential code{display:block}.credential code{font-size:17px;margin:8px 0}.credential p{margin:0;color:#967936;font-size:12px}.grading-row{border-bottom:1px solid #edf1f7;padding:21px 0}.grading-head{display:flex;justify-content:space-between;gap:15px}.grading-head strong{display:block;color:#293950}.grading-head small{margin-top:5px}.grading-form{display:flex;align-items:end;gap:14px;flex-wrap:wrap}.grading-form label:first-child{width:120px}.grading-form label:nth-child(2){flex:1;min-width:220px}@media(max-width:1150px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.main-content{padding:30px}.topbar{padding:0 30px}}@media(max-width:850px){.sidebar{width:76px;padding:20px 8px}.brand{margin:0 10px 37px}.brand>div:nth-child(2),.nav-item{font-size:0}.nav-item{justify-content:center;padding:12px 0}.nav-icon{font-size:23px}.help-card,.logout{display:none}.topbar{height:68px}.stats{gap:10px}.stat{padding:14px;gap:9px}.stat strong{font-size:23px}.stat-icon{width:42px;height:42px;font-size:24px}.split{grid-template-columns:1fr}}@media(max-width:600px){.shell{display:block}.sidebar{width:100%;height:auto;position:sticky;z-index:4;top:0;padding:8px 10px;display:block}.sidebar .brand{display:none}.sidebar nav{display:flex;flex-direction:row;overflow-x:auto;gap:3px}.nav-item{flex:0 0 auto;width:43px;padding:10px}.nav-icon{font-size:20px}.topbar{padding:0 17px}.topbar-label{display:none}.topbar-user{margin-left:auto}.main-content{padding:22px 15px}.page-head h1{font-size:25px}.page-head{margin-bottom:22px}.course-grid{grid-template-columns:1fr;gap:12px}.stats{grid-template-columns:1fr 1fr}.stats .stat:last-child{grid-column:1/-1}.stat span{font-size:11px}.panel{padding:17px}.manage-form{grid-template-columns:1fr}.auth-card{padding:28px}}

/* CCBS CAMPUS BRAND SYSTEM — navy #063468, orange #D0690D, white */
:root{--ccbs-navy:#063468;--ccbs-orange:#d0690d;--ccbs-orange-dark:#ad5100;--ccbs-blue:#0b4c86;--ccbs-pale:#f5f8fc}
body{background:var(--ccbs-pale)}
.sidebar{background:linear-gradient(178deg,#063468 0%,#062b55 100%);padding-top:19px}
.sidebar .brand{display:flex;flex-direction:column;align-items:stretch;gap:9px;margin:0 6px 29px;letter-spacing:0}
.brand-plaque{background:#fff;border-radius:11px;padding:7px 8px;box-shadow:0 6px 16px #001d3c27;border-top:3px solid var(--ccbs-orange)}
.brand-plaque img{width:100%;height:auto;display:block;object-fit:contain}
.sidebar .brand small{font-size:9px;letter-spacing:1.5px;text-align:center;font-weight:800;color:#c5daef;margin-top:2px}
.sidebar .nav-item.chosen{background:#124576;border-left:3px solid var(--ccbs-orange);padding-left:13px;box-shadow:none;color:#fff}
.sidebar .nav-item:hover{background:#174979}
.sidebar .nav-icon{color:#f0a15a}
.sidebar .nav-item.chosen .nav-icon{color:#ffc082}
.help-card{background:#124374;border:1px solid #2b5986}.help-card div{color:#ffbf83}
.auth-wrap{background:radial-gradient(ellipse at 50% 5%,#e6f0fa,transparent 62%),#f7fafc}
.auth-brand{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px;font-size:14px;color:var(--ccbs-navy);letter-spacing:.15px}
.auth-brand img{width:min(280px,72vw);height:auto;background:white;object-fit:contain;border-radius:10px;padding:10px 14px;box-shadow:0 8px 25px #092b4a12}
.auth-brand strong{font-size:12px;text-transform:uppercase;letter-spacing:2px;font-weight:850}
.auth-card{border-top:4px solid var(--ccbs-orange);box-shadow:0 20px 55px #05365b15}
.auth-card h1,.page-head h1{color:var(--ccbs-navy)}
.auth-symbol{background:#fff0e4;color:var(--ccbs-orange)}
.btn.primary{background:var(--ccbs-navy);box-shadow:0 3px 10px #06346824;color:#fff}
.btn.primary:hover{background:var(--ccbs-blue)}
.manage-tab.active{background:var(--ccbs-navy);border-color:var(--ccbs-navy)}
.topbar{border-bottom:2px solid #edf1f6}.topbar-label{color:#2f5479;font-weight:700}
.avatar{background:#fff1e5;color:var(--ccbs-orange-dark)}
.stat-icon.peach{background:#fff1e4;color:var(--ccbs-orange)}
.course-cover{background:linear-gradient(115deg,#063468,#0b5c9d)}
.course-tile:nth-child(3n+2) .course-cover{background:linear-gradient(115deg,#0c4b83,#277ca9)}
.course-tile:nth-child(3n+3) .course-cover{background:linear-gradient(115deg,#bc5c08,#e5973d)}
.course-tile:hover,.panel:focus-within{border-color:#c9dced}
.auth-footer{font-size:11px;color:#667e99;text-align:center}
@media(max-width:850px){.sidebar .brand{margin:0 2px 18px}.sidebar .brand small{font-size:7px;letter-spacing:0}.brand-plaque{padding:3px}}
@media(max-width:600px){.sidebar .brand{display:none}.nav-item.chosen{padding-left:10px!important}.topbar-label{display:block;font-size:10px;max-width:58%;line-height:1.3}.topbar-user{gap:7px}.user-name{font-size:11px}}

.startup-status{margin:15vh auto 0;padding:22px;color:#063468;text-align:center;max-width:540px;font-size:17px}.startup-error{background:#fff;border:1px solid #e1e9f5;border-radius:14px;box-shadow:0 10px 25px #17365a16}.startup-error p{font-size:13px;color:#56677e;line-height:1.7}
