@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700;800&display=swap');
:root{--ink:#18243a;--muted:#8490a4;--blue:#3268e8;--line:#edf0f5;--paper:#f7f8fb}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:14px 'DM Sans','Noto Sans SC',sans-serif}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;padding:26px 17px;background:#111d34;color:#c9d2e3;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:17px;padding:0 8px}.brand-mark{width:32px;height:32px;border-radius:10px;background:linear-gradient(145deg,#ffdc91,#c78b32);display:grid;place-items:center;color:#18243a;font-size:18px;font-weight:800}.muted{color:#9faec7;margin-left:3px}.workspace{margin:34px 0 27px;background:#1c2941;border:1px solid #2a3852;border-radius:12px;padding:12px;display:flex;align-items:center;gap:10px;font-size:12px}.workspace small{display:block;color:#8290a6;margin-top:4px;font-size:10px}.avatar,.profile-avatar{width:33px;height:33px;border-radius:10px;display:grid;place-items:center;background:#f5d99d;color:#674411;font-weight:700}.chev{margin-left:auto;color:#8490a4}.nav-label{font-size:10px;color:#71809b;letter-spacing:1px;padding:0 10px 10px}nav{display:grid;gap:6px}nav a{color:#aebad0;text-decoration:none;padding:12px 11px;border-radius:9px;font-size:12px}nav a.active,nav a:hover{color:#fff;background:#2e5fca}.sidebar-bottom{margin-top:auto}.help{padding:12px 10px;color:#d9e2f2;background:#1b2942;border-radius:9px;font-size:11px}.help span{float:right}.sidebar-bottom>small{display:block;color:#71809b;font-size:10px;line-height:1.8;padding:14px 5px 0}main{margin-left:244px}header{height:70px;padding:0 40px;background:#fff;border-bottom:1px solid #edf0f4;display:flex;align-items:center;justify-content:space-between;font-size:12px}.crumb{color:#a3adbc}.header-right,.profile{display:flex;align-items:center;gap:20px}.date{color:#7d899d}.icon-btn{border:0;background:#f3f6fb;width:32px;height:32px;border-radius:9px;color:#61718b}.profile{gap:9px;color:#43516a}.profile-avatar{width:30px;height:30px;background:#e7efff;color:#3268e8}.content{max-width:1510px;margin:auto;padding:30px 40px}.welcome{height:178px;border-radius:16px;padding:30px 34px;color:#fff;background:radial-gradient(ellipse at 85% 20%,#284f8c 0,#162a4a 35%,#101d34 75%);display:flex;justify-content:space-between;overflow:hidden;position:relative}.welcome:after{content:'';position:absolute;width:270px;height:270px;border:1px solid #ffffff16;border-radius:50%;right:140px;top:-140px;box-shadow:0 0 0 28px #ffffff09,0 0 0 58px #ffffff08}.eyebrow{color:#bdcbea;font-size:9px;letter-spacing:2px}.welcome h1{font-size:24px;margin:15px 0 7px;letter-spacing:.3px}.welcome p{font-size:12px;color:#bdc8da;margin:0}.welcome-art{align-self:stretch;width:230px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}.welcome-art span{font-size:23px;line-height:1.3;letter-spacing:2px;font-weight:700;text-shadow:0 4px 18px #eebc53}.welcome-art i{font-style:normal;color:#f0c574;font-size:46px;margin-left:11px}.section-head{display:flex;align-items:end;justify-content:space-between;margin:30px 0 14px}.section-head h2,.panel h2{font-size:15px;margin:0 0 5px}.section-head p,.panel-head p{margin:0;color:#96a0af;font-size:11px}.live{font-size:10px;color:#7d8aa0}.live i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#2fbd81;margin-right:6px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stats article,.panel{background:#fff;border:1px solid #edf0f5;border-radius:12px}.stats article{padding:17px 18px 12px;position:relative;min-height:132px;overflow:hidden}.stat-top{display:flex;justify-content:space-between;color:#7d899a;font-size:11px}.stat-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center}.blue{color:#3268e8;background:#eaf0ff}.gold{color:#c38c2b;background:#fbf3e4}.green{color:#25a878;background:#e7f7f0}.violet{color:#8354d8;background:#f1eaff}.stats strong{display:block;font-size:27px;line-height:1.2;margin:7px 0 2px;color:#1d2a40}.stats em{font-size:11px;font-style:normal;margin-left:4px}.stats small{font-size:10px;color:#9ba5b4}.spark{position:absolute;right:17px;bottom:12px;font-size:17px;letter-spacing:1px;opacity:.76}.blue-line{color:#5481eb}.gold-line{color:#deb752}.green-line{color:#42bc8b}.violet-line{color:#a179ec}.columns{display:grid;grid-template-columns:minmax(360px,.92fr) minmax(430px,1.38fr);gap:15px;margin-top:16px}.panel{padding:18px 18px 10px;min-height:300px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.outline{border:1px solid #dce5f5;background:#fff;color:#386de3;padding:8px 11px;border-radius:7px;font:inherit;font-size:10px;cursor:pointer}.text-link{font-size:10px;color:#4774dc;text-decoration:none}.course-list{display:grid;gap:8px}.course-row{display:grid;grid-template-columns:31px 1fr auto;align-items:center;gap:10px;padding:8px 9px;border:1px solid #f0f2f6;border-radius:9px}.course-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#fff;background:#4b7df0}.course-row:nth-child(3n+2) .course-icon{background:#ed876a}.course-row:nth-child(3n) .course-icon{background:#9671de}.course-row b{display:block;font-size:10px}.course-row small{font-size:9px;color:#929eae;display:block;margin-top:3px}.course-row button{border:0;background:none;color:#8591a4;font-size:10px;cursor:pointer}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}th{font-size:9px;color:#98a2b1;font-weight:500;background:#fafbfd;padding:9px 8px}td{padding:12px 8px;border-bottom:1px solid #f1f3f6;font-size:10px;color:#536176}td b{display:block;color:#35425a;font-size:10px}td small{display:block;color:#a0a9b5;margin-top:4px}.score{font-weight:700;color:#3670e8}.empty{text-align:center;color:#a5afbd;padding:50px 0}footer{border-top:1px solid #e9edf2;margin-top:25px;padding-top:15px;color:#a5afbd;font-size:10px}footer span{float:right}.toast{position:fixed;right:25px;bottom:25px;padding:12px 17px;border-radius:9px;color:#fff;background:#18243a;box-shadow:0 8px 30px #12203a24;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:1050px){.sidebar{width:205px}main{margin-left:205px}.content{padding:24px}.columns{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.sidebar{width:62px;padding:20px 8px}.brand{padding:0}.brand>span:not(.brand-mark),.workspace,.nav-label,nav a:not(.active),.sidebar-bottom{display:none}nav{margin-top:30px}nav a.active{font-size:0;text-align:center;padding:13px}main{margin-left:62px}header{padding:0 15px}.date{display:none}.content{padding:15px}.welcome{padding:22px;height:auto;min-height:150px}.welcome-art{display:none}.welcome h1{font-size:19px}.stats{gap:8px}.stats article{padding:13px;min-height:120px}.columns{grid-template-columns:1fr}.panel{padding:14px 11px}.profile span{display:none}}

/* Login overlay lives in the primary stylesheet so a missing secondary asset cannot push the dashboard down. */
.login-shade{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#0f1b31ee,#203454ec);backdrop-filter:blur(9px)}
.login-shade.hidden{display:none}
.login-card{width:min(390px,100%);padding:38px;background:#fff;border-radius:18px;box-shadow:0 25px 80px #050b163d}
.login-mark{width:42px;height:42px;font-size:22px}
.login-title{font-size:23px;font-weight:700;margin-top:24px}
.login-copy{font-size:12px;color:#8792a4;margin-top:7px}
.login-card label{display:block;margin-top:24px;margin-bottom:8px;font-size:11px;color:#526078}
.login-card input{width:100%;height:43px;border:1px solid #dfe4ec;border-radius:8px;padding:0 12px;outline:none;font:inherit}
.login-card input:focus{border-color:#4775dd;box-shadow:0 0 0 3px #4775dd18}
.login-submit{width:100%;height:43px;margin-top:16px;border:0;border-radius:8px;color:white;background:#3268e8;font:inherit;font-size:12px;cursor:pointer}
.login-error{min-height:18px;margin-top:10px;color:#c44747;font-size:11px}
main{min-height:100vh}
.settings-panel{margin-top:16px;min-height:0;padding:20px 22px}
.settings-panel .panel-head{margin-bottom:19px}
.setting-status{padding:6px 10px;border-radius:20px;background:#f2f5fa;color:#7d899a;font-size:11px;white-space:nowrap}
.setting-status.is-configured{background:#e8f7f0;color:#21845f}
.settings-grid{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(220px,1fr) minmax(260px,1.5fr);gap:14px}
.settings-grid label{display:grid;gap:7px;color:#536176;font-size:11px}
.settings-grid input,.settings-grid select{width:100%;height:40px;padding:0 11px;border:1px solid #dfe4ec;border-radius:8px;background:#fff;color:#26344b;font:inherit;font-size:12px;outline:none}
.settings-grid input:focus,.settings-grid select:focus{border-color:#4775dd;box-shadow:0 0 0 3px #4775dd18}
.settings-grid input[readonly]{background:#f7f8fb;color:#7d899a}
.settings-hint{margin-top:9px;color:#919cad;font-size:10px;line-height:1.6}
.toggle-row{display:flex;align-items:flex-start;gap:10px;margin-top:18px;color:#36445b;cursor:pointer}
.toggle-row input{width:16px;height:16px;margin:1px 0 0;accent-color:#3268e8}
.toggle-row b{display:block;font-size:12px;font-weight:600}
.toggle-row small{display:block;margin-top:5px;color:#919cad;font-size:10px;line-height:1.6}
.settings-actions{display:flex;align-items:center;gap:9px;margin-top:18px}
.settings-actions .primary,.settings-actions .outline{min-height:36px;padding:8px 14px;font:inherit;font-size:11px;cursor:pointer}
.primary{border:1px solid #3268e8;border-radius:7px;background:#3268e8;color:#fff}
.primary:hover{background:#285bd0}
.text-button{border:0;background:transparent;color:#a15b5b;padding:8px 9px;font:inherit;font-size:10px;cursor:pointer}
.settings-feedback{min-height:18px;margin-top:10px;color:#5f6f86;font-size:11px}
.settings-feedback.success{color:#21845f}
.settings-feedback.error{color:#bd4646}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr 1fr}.settings-grid .key-field{grid-column:1/-1}}
@media(max-width:700px){.settings-panel{padding:15px 13px}.settings-grid{grid-template-columns:1fr}.settings-grid .key-field{grid-column:auto}.settings-actions{flex-wrap:wrap}.setting-status{font-size:10px}}

/* Routed admin pages */
nav a{display:flex;align-items:center;gap:10px}
nav a .nav-icon{display:inline-grid;place-items:center;width:18px;flex:0 0 18px;font-style:normal;font-size:13px}
.overview-actions{display:flex;align-items:center;gap:18px}
.content{min-height:calc(100vh - 130px)}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:0 0 22px}
.page-heading h1{margin:8px 0 6px;font-size:24px;letter-spacing:.2px}
.page-heading p{margin:0;color:#8d98aa;font-size:12px}
.page-eyebrow{color:#6b83b4}
.page-heading .primary{padding:10px 14px;font:inherit;font-size:11px;white-space:nowrap;cursor:pointer}
.page-panel{min-height:0;margin-top:16px;padding:20px 22px}
.page-panel .panel-head{margin-bottom:16px}
.page-count{color:#8995a8;font-size:11px;white-space:nowrap}
.page-panel .course-list{gap:9px}
.page-panel .course-row{grid-template-columns:38px minmax(150px,1fr) auto;padding:11px 12px}
.page-panel .course-icon{width:36px;height:36px;font-size:15px}
.page-panel .course-row b{font-size:12px}
.page-panel .course-row small{font-size:10px}
.page-panel .course-row button{padding:8px 10px;border:1px solid #e8edf4;border-radius:7px;background:#f9fbfd;font-size:11px}
.wide-table{min-width:1000px}
.wide-table td{vertical-align:top;line-height:1.55}
.wide-table td small{line-height:1.55}
.practice-content{max-width:390px;white-space:normal;overflow-wrap:anywhere}
.chart-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:16px}
.chart-card{min-height:300px}
.daily-chart{height:220px;display:flex;align-items:stretch;gap:5px;padding:12px 4px 0;overflow-x:auto}
.daily-bar{min-width:25px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;color:#8793a7}
.daily-bar .bar-value{height:13px;font-size:9px;color:#536783}
.bar-track{height:160px;width:100%;display:flex;align-items:flex-end;overflow:hidden;border-radius:4px 4px 0 0;background:#f4f7fc}
.bar-track i{display:block;width:100%;min-height:0;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#7799f0,#3c6fdc)}
.daily-bar small{font-size:8px;white-space:nowrap;writing-mode:vertical-rl;height:26px}
.course-chart{display:grid;gap:18px;padding:16px 2px}
.course-bar-label{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px;color:#536176;font-size:11px}
.course-bar-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.course-bar-label b{color:#74829a;font-weight:500;white-space:nowrap}
.course-bar-track{height:8px;overflow:hidden;border-radius:10px;background:#eff2f8}
.course-bar-track i{display:block;height:100%;min-width:2px;border-radius:10px;background:linear-gradient(90deg,#527de5,#8daaf2)}
.chart-empty{align-self:center;padding:70px 12px;text-align:center;color:#a2adbd;font-size:11px}
.analytics-stats{margin-bottom:16px}
.app-footer{margin:0 auto 22px;max-width:1510px;padding:16px 40px 0;border-top:1px solid #e9edf2;color:#a5afbd;font-size:10px}
.app-footer span{float:right}
@media(max-width:1050px){.chart-grid{grid-template-columns:1fr}.app-footer{padding-left:24px;padding-right:24px}}
@media(max-width:700px){
  .sidebar{inset:0 0 auto 0;width:100%;height:60px;padding:8px 10px;flex-direction:row;align-items:center}
  .brand{padding:0;margin-right:8px}
  .brand>span:not(.brand-mark){display:none}
  .workspace,.nav-label,.sidebar-bottom{display:none}
  nav{display:flex;flex:1;gap:2px;margin:0;overflow-x:auto;scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav a,nav a:not(.active){display:flex;align-items:center;justify-content:center;gap:0;flex:1;min-width:38px;padding:10px 6px;font-size:0;text-align:center}
  nav a.active{font-size:0;padding:10px 6px}
  nav a .nav-icon{width:20px;flex-basis:20px;font-size:15px}
  main{margin:60px 0 0}
  header{height:58px;padding:0 14px}
  .content{min-height:calc(100vh - 155px);padding:18px 14px}
  .page-heading{align-items:flex-start;margin-bottom:16px}
  .page-heading h1{font-size:20px}
  .page-heading p{max-width:260px;line-height:1.6}
  .overview-actions{gap:9px;flex-direction:column;align-items:flex-end}
  .page-heading .primary{padding:8px 9px;font-size:10px}
  .page-panel{padding:15px 12px}
  .chart-grid{grid-template-columns:1fr}
  .daily-chart{gap:4px}
  .daily-bar{min-width:22px}
  .app-footer{margin-bottom:16px;padding:12px 14px 0}
}
