@import url('https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700&display=swap');
:root{--navy:#151050;--navy-2:#1c1667;--purple:#35268f;--bg:#f4f4ee;--card:#fff;--ink:#1e1d47;--muted:#7f809a;--line:#e8e8e1;--green:#17b989;--red:#ff5454;--amber:#f6a128;--blue:#44b6ea;--violet:#7b61d6}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Sora,system-ui,sans-serif}body{font-size:13px}a{color:inherit}button,input,select,textarea{font:inherit}
.portal-shell{display:flex;min-height:100vh}.sidebar{width:236px;background:#120d4f;color:#fff;padding:20px 12px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:40}.sidebar-logo{display:flex;align-items:center;justify-content:center;height:58px;margin:0 5px 20px}.sidebar-logo img{width:148px;max-width:100%;height:auto}.side-nav{display:grid;gap:6px}.side-nav a{display:flex;align-items:center;gap:13px;color:#aaa9d0;text-decoration:none;padding:12px 13px;border-radius:18px;font-size:13px}.side-nav a:hover,.side-nav a.active{background:#fff;color:#17124f}.nav-icon{width:20px;text-align:center;font-size:17px}.sidebar-spacer{flex:1}.streak-card{display:flex;gap:10px;align-items:center;padding:11px 10px;margin:12px 0;border-top:1px solid #29235d}.streak-icon{width:36px;height:36px;border-radius:50%;background:#ff9c18;display:grid;place-items:center}.streak-card strong,.streak-card span,.streak-card small{display:block}.streak-card strong{font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:#9998c8}.streak-card span{font-size:16px;font-weight:700;margin-top:2px}.streak-card small{font-size:9px;color:#7776a9;margin-top:1px}.side-signout{color:#aaa9d0;text-decoration:none;padding:11px 13px;border-radius:12px}.portal-main{margin-left:236px;flex:1;min-width:0}.portal-header{height:66px;background:#120d4f;color:#fff;display:flex;align-items:center;gap:18px;padding:0 26px;position:sticky;top:0;z-index:30}.header-search{width:min(420px,50vw);background:#2b236c;border:1px solid #574f93;border-radius:12px;height:38px;display:flex;align-items:center;padding:0 12px;gap:9px}.header-search span{font-size:21px;color:#b5b1d6}.header-search input{background:none;border:0;outline:0;color:#fff;width:100%;font-size:12px}.header-search input::placeholder{color:#aaa7c6}.header-actions{margin-left:auto;display:flex;align-items:center;gap:15px}.icon-btn{border:0;background:transparent;color:inherit;cursor:pointer;border-radius:9px;padding:7px 9px}.header-actions .icon-btn{position:relative}.notification-btn span{position:absolute;width:7px;height:7px;background:#f3a31e;border-radius:50%;top:7px;right:7px}.profile{display:flex;align-items:center;gap:9px}.avatar{width:35px;height:35px;border-radius:50%;background:#fff;color:#1b155a;display:grid;place-items:center;font-size:11px;font-weight:700}.profile-text strong,.profile-text small{display:block}.profile-text strong{font-size:12px}.profile-text small{font-size:9px;color:#aaa7c6;margin-top:1px}.chevron{color:#aaa7c6}.mobile-logo{display:none}.page-container{padding:25px 29px;max-width:1600px;margin:0 auto}.page-heading{display:none}.flash{padding:12px 14px;border-radius:10px;margin-bottom:16px}.flash.success{background:#eaf8f0;color:#117744}.flash.danger{background:#fff0ef;color:#ad2436}.flash.info{background:#edf4ff;color:#2452af}.eyebrow{font-size:10px;letter-spacing:.15em;font-weight:700;color:#6968d9}.eyebrow.light{color:#c1beff}.welcome-banner{background:linear-gradient(105deg,#282081,#2d278f);border-radius:21px;padding:27px 29px;display:flex;justify-content:space-between;align-items:center;color:white;min-height:160px}.welcome-banner h2{font-size:25px;margin:7px 0 11px}.welcome-banner p{margin:0;color:#dddafa;font-size:12px}.welcome-mark{font-size:85px;font-weight:800;color:#fff1}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:17px}.metric-card{background:#fff;border-radius:17px;padding:17px 17px;display:flex;justify-content:space-between;align-items:center;text-decoration:none;box-shadow:0 4px 15px #1a15500b}.metric-card span,.metric-card small{display:block;color:#777994;font-size:11px}.metric-card strong{display:inline-block;font-size:23px;margin:7px 6px 3px 0}.metric-card small.up{color:#17b989}.metric-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:17px}.metric-icon.green{background:#e6fbf5;color:#17b989}.metric-icon.violet{background:#eeeaff;color:#6e57ce}.metric-icon.lilac{background:#f0e8ff;color:#8b62ce}.metric-icon.amber{background:#fff1dc;color:#e19b30}.dashboard-grid{display:grid;grid-template-columns:1.08fr 1.06fr 1fr;gap:17px;margin-top:17px;align-items:stretch}.panel{background:#fff;border-radius:17px;padding:19px;box-shadow:0 4px 15px #1a15500b}.calendar-panel{grid-column:span 1}.upcoming-panel{grid-column:span 1}.progress-panel{grid-column:span 1}.quick-panel{grid-column:1/-1}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.panel-heading h3{font-size:14px;margin:0}.panel-heading p{font-size:10px;color:#8a8ba0;margin:4px 0 0}.calendar-nav{display:flex;gap:4px}.calendar-nav .icon-btn{background:#fafafd;color:#55558b;border:1px solid var(--line)}.calendar{margin-top:4px}.cal-week,.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.cal-week span{text-align:center;color:#8c8da5;font-size:9px;padding-bottom:4px}.day{height:39px;border:1px solid #ecece6;border-radius:10px;display:grid;place-items:center;font-size:10px;color:#211e55;background:#fff}.day.blank{border-color:transparent;background:transparent}.day.today{border-color:#715ee6;background:#f3f0ff;font-weight:700}.day.present{border-color:#42d5b1}.day.absent{border-color:#ff6868}.legend{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0 10px;color:#70728e;font-size:9px}.legend span{display:flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:2px;border:1px solid}.present-dot{border-color:#17b989}.absent-dot{border-color:#ff5454}.holiday-dot{border-color:#48b9ee}.wide-btn{display:flex;align-items:center;justify-content:center;background:#e9e9e9;border-radius:14px;padding:11px;text-decoration:none;font-size:11px;font-weight:600}.text-link{font-size:10px;color:#5149b9;text-decoration:none}.session-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #efefec}.session-row:first-of-type{border-top:0}.date-box{width:41px;height:43px;background:#f0edff;border-radius:10px;display:grid;place-items:center;color:#4f43bd}.date-box strong{font-size:14px;line-height:1}.date-box small{font-size:8px}.session-info{flex:1;min-width:0}.session-info h4{font-size:11px;margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-info p{font-size:9px;color:#85869a;margin:0}.join-btn{background:#20166f;color:#fff;padding:8px 10px;border-radius:9px;font-size:9px;text-decoration:none}.empty-state{padding:28px 0;text-align:center;color:#a5a6ba}.empty-state div{font-size:28px;margin-bottom:9px}.empty-state p{margin:0 0 4px;color:#7c7ea0;font-size:12px}.empty-state small{font-size:9px}.progress-ring{width:124px;height:124px;border-radius:50%;background:conic-gradient(#18b98a 0 var(--progress,77%),#17124f var(--progress,77%) 100%);display:grid;place-items:center;margin:7px auto 16px;position:relative}.progress-ring:after{content:"";position:absolute;width:92px;height:92px;border-radius:50%;background:#fff}.ring-value{position:relative;z-index:1;font-size:18px;font-weight:700}.progress-label{display:flex;justify-content:space-between;font-size:10px;margin-bottom:7px}.progress-label span{color:#85869a}.progress-bar,.mini-bar{height:6px;background:#efefef;border-radius:99px;overflow:hidden}.progress-bar span,.mini-bar span{display:block;height:100%;background:#18b98a;border-radius:99px}.mini-progress{margin-top:17px}.mini-progress>div:first-child{display:flex;justify-content:space-between;font-size:9px;margin-bottom:6px}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.quick-grid a{border:1px solid #efefe9;border-radius:13px;padding:14px;text-decoration:none;display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center}.quick-grid strong{font-size:11px}.quick-grid small{font-size:8px;color:#8a8ba1}.quick-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;grid-row:span 2}.quick-icon.green{background:#e8faf4;color:#16aa7c}.quick-icon.violet{background:#eeeaff;color:#6d56d2}.quick-icon.blue{background:#edf8ff;color:#258fc7}.quick-icon.amber{background:#fff1dd;color:#df9c2e}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.session-card,.material-card,.placement-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .wide{grid-column:span 2}.form-grid label,.auth-card label{display:grid;gap:6px;font-size:11px;font-weight:600}.form-grid input,.form-grid select,.form-grid textarea,.auth-card input{width:100%;min-width:0;border:1px solid #dddeea;border-radius:10px;padding:11px 12px;background:#fff;outline:0}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;background:#21166f;color:#fff;padding:11px 16px;border-radius:10px;text-decoration:none;font-weight:700;font-size:11px;cursor:pointer}.btn.secondary{background:#efefff;color:#2f2a87}.btn.danger{background:#fff0ef;color:#ac2030}.tiny{padding:7px 9px;font-size:9px}.actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.table-scroll{overflow:auto}.table-scroll table{width:100%;border-collapse:collapse;min-width:680px;font-size:10px}.table-scroll th,.table-scroll td{padding:10px;border-bottom:1px solid #eeeeea;text-align:left;vertical-align:top}.table-scroll th{color:#777994;background:#fbfbf8}.pill{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:9px}.pill.green{background:#e9f8ef;color:#147640}.pill.gray{background:#f0f1f4;color:#6d7085}.pill.blue{background:#edf4ff;color:#2a5acb}.pill.purple{background:#f0edff;color:#6247c6}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.auth-body,.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#211766,#3b2b9b)}.auth-card,.login-card{width:min(100%,480px);background:#fff;border-radius:22px;padding:35px;box-shadow:0 28px 80px #0c073f55}.auth-card h1,.login-card h1{font-size:29px;margin:10px 0 5px}.auth-card .muted,.login-card .muted{font-size:12px}.auth-card .brand-logo,.login-card .brand-logo{width:180px;height:auto;background:transparent;color:transparent;display:block}.portal-footer{display:flex;align-items:center;justify-content:center;gap:10px;color:#a0a1af;font-size:9px;padding:22px}.portal-footer img{width:75px;height:auto;opacity:.6}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-intro{margin-bottom:18px}.placement-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.menu-toggle{display:none}
@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr 1fr}.progress-panel{grid-column:span 1}.quick-panel{grid-column:1/-1}.cards{grid-template-columns:repeat(2,1fr)}} 
@media(max-width:820px){.sidebar{display:none}.sidebar.show{display:flex}.portal-main{margin-left:0}.portal-header{padding:0 14px;gap:10px}.menu-toggle{display:block;background:#2a226d}.mobile-logo{display:block}.mobile-logo img{width:105px;height:auto}.header-search{display:none}.profile-text,.chevron{display:none}.page-container{padding:16px 12px}.welcome-banner{padding:23px 20px;min-height:145px}.welcome-banner h2{font-size:21px}.welcome-mark{display:none}.dashboard-grid{grid-template-columns:1fr}.calendar-panel,.upcoming-panel,.progress-panel,.quick-panel{grid-column:auto}.quick-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.two-col{grid-template-columns:1fr}.cards{grid-template-columns:1fr}} 
@media(max-width:560px){.portal-header{height:60px}.portal-footer{padding-bottom:75px}.metric-grid{grid-template-columns:1fr 1fr;gap:8px}.metric-card{padding:13px;border-radius:14px}.metric-card strong{font-size:19px}.metric-card span,.metric-card small{font-size:9px}.metric-icon{width:29px;height:29px;font-size:14px}.cal-days{gap:4px}.day{height:34px;font-size:9px}.session-row{gap:8px}.quick-grid{gap:8px}.quick-grid a{padding:11px}.auth-card,.login-card{padding:26px 20px}.auth-card h1,.login-card h1{font-size:25px}}
