:root{--bg:#f5f6fa;--card:#fff;--ink:#1c2230;--muted:#6b7385;--line:#e3e6ee;--brand:#2b4bd6;--red:#c62828;--green:#1b7a3d}@media (prefers-color-scheme: dark){:root{--bg:#12151d;--card:#1b2030;--ink:#e8ebf3;--muted:#9aa3b8;--line:#2b3248;--brand:#7b93ff;--red:#ff7b7b;--green:#5fd48a}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,sans-serif}header{display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0}nav{display:flex;gap:4px;flex:1}main{padding:20px;max-width:1200px;margin:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px}button{background:var(--brand);color:#fff;border:0;border-radius:6px;padding:7px 12px;cursor:pointer;font:inherit}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;color:var(--brand);border:1px solid var(--line)}button.link{background:none;color:var(--brand);padding:2px 6px}button.red,.red{color:var(--red)}.tab{background:transparent;color:var(--muted)}.tab.on{background:var(--bg);color:var(--ink);font-weight:600}input,select{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:7px 9px;font:inherit}label{display:block;margin:10px 0}label input{display:block;width:100%;margin-top:4px}.chk{display:inline-flex;gap:5px;align-items:center;margin:0}.chk input{width:auto;margin:0}.login{max-width:340px;margin:12vh auto}.login h1{margin-top:0}.login button{width:100%}table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-weight:500;font-size:13px}tbody tr{cursor:pointer}tbody tr.sel,tbody tr:hover{background:var(--bg)}.split{display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start}@media (max-width:850px){.split{grid-template-columns:1fr}}.search{width:100%;margin-bottom:10px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.muted{color:var(--muted);font-size:13px}.error{color:var(--red)}.note{color:var(--green)}.pill{display:inline-block;font-size:11px;padding:1px 7px;border-radius:99px;background:var(--bg);border:1px solid var(--line)}.pill.red{color:var(--red)}.pill.green{color:var(--green)}.temp{background:var(--bg);border:1px dashed var(--brand);padding:10px;border-radius:8px}code{font-size:12px;word-break:break-all}.tree .node{margin:8px 0 8px 14px;padding-left:12px;border-left:2px solid var(--line)}.tree .cat{margin-left:0;border-left-color:var(--brand)}.tree .head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.tree ul{margin:4px 0;padding-left:18px}.inline{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0}nav{flex-wrap:wrap}.tab{white-space:nowrap}.form{display:grid;gap:4px;margin-bottom:16px;max-width:640px}.form label{margin:6px 0}.form textarea,textarea{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:8px;font:inherit}.form select{width:100%}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding:4vh 12px;overflow:auto;z-index:50}.modal{background:var(--card);border:1px solid var(--line);border-radius:12px;width:min(560px,100%)}.modal.wide{width:min(820px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0}.modal-body{padding:16px}.field{display:block;margin:10px 0}.field-label{display:block;font-size:13px;color:var(--muted);margin-bottom:3px}.field input:not([type=checkbox]),.field select,.field textarea{width:100%}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}@media (max-width:640px){.grid2{grid-template-columns:1fr}}.toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;margin:4px 12px 4px 0}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle .track{width:36px;height:20px;border-radius:99px;background:var(--line);position:relative;transition:.15s;flex:none}.toggle .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s}.toggle input:checked+.track{background:var(--brand)}.toggle input:checked+.track:after{left:18px}.toggle input:focus-visible+.track{outline:2px solid var(--brand);outline-offset:2px}.steps{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.steps button{background:var(--bg);color:var(--muted);border:1px solid var(--line)}.steps button.on{background:var(--brand);color:#fff;border-color:var(--brand)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}.toolbar .search{flex:1;min-width:180px;margin:0}.crumbs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:8px 0}.crumbs button{padding:2px 4px}.node{display:flex;gap:10px;align-items:center;padding:8px 10px;background:var(--card);border:1px solid var(--line);border-radius:8px;margin-bottom:6px}.node.over{outline:2px dashed var(--brand)}.node.dim{opacity:.55}.node .grip{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none;padding:0 4px}.node .thumb{width:56px;height:38px;border-radius:6px;background:var(--bg);object-fit:cover;flex:none;display:flex;align-items:center;justify-content:center;font-size:20px}.node .main{flex:1;min-width:0}.node .main .title{font-weight:600;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.node .acts{display:flex;gap:2px;flex-wrap:wrap;justify-content:flex-end}.bulkbar{position:sticky;bottom:8px;background:var(--brand);color:#fff;border-radius:10px;padding:8px 12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.bulkbar button{background:#ffffff2e}.tabs2{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:12px 0;flex-wrap:wrap}.tabs2 button{background:transparent;color:var(--muted);border-radius:6px 6px 0 0}.tabs2 button.on{color:var(--ink);border-bottom:2px solid var(--brand);font-weight:600}.tabs2 button:disabled{opacity:.5;cursor:not-allowed}.course-row{display:flex;gap:12px;align-items:center;padding:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:8px;flex-wrap:wrap}.course-row img,.course-row .cover{width:96px;height:54px;border-radius:6px;object-fit:cover;background:var(--bg);flex:none}.course-row .main{flex:1;min-width:220px}.kv{display:grid;grid-template-columns:160px 1fr;gap:6px 12px}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.chap{display:grid;grid-template-columns:90px 90px 1fr auto;gap:6px;margin-bottom:6px}.info{background:var(--bg);border:1px dashed var(--line);border-radius:8px;padding:10px;font-size:13px;color:var(--muted)}button.small{padding:3px 8px;font-size:13px}:root{--bg:#f3f5fa;--card:#fff;--ink:#17233c;--muted:#67758f;--line:#e3e8f2;--brand:#465bd3;--sidebar:#16213c;--shadow:0 8px 28px #1a315108}:root[data-theme=light]{--bg:#f3f5fa;--card:#fff;--ink:#17233c;--muted:#67758f;--line:#e3e8f2;--brand:#465bd3;--red:#b8293d;--green:#13764d;color-scheme:light}:root[data-theme=dark]{--bg:#101624;--card:#192235;--ink:#edf2ff;--muted:#a2afc8;--line:#2c3850;--brand:#a6b4ff;--red:#ff879a;--green:#7bd7a8;--shadow:none;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101624;--card:#192235;--ink:#edf2ff;--muted:#a2afc8;--line:#2c3850;--brand:#a6b4ff;--red:#ff879a;--green:#7bd7a8;--shadow:none;color-scheme:dark}}body{font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.6}a{color:var(--brand)}button,input,select,textarea{border-radius:9px}button{padding:9px 14px;font-weight:600;transition:background-color .15s,box-shadow .15s}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--brand);outline-offset:3px}input,select,textarea{padding:10px 12px;min-height:42px}h1,h2,h3,h4{line-height:1.3;letter-spacing:-.025em}h3{font-size:19px}.card{border-radius:16px;padding:22px;box-shadow:var(--shadow)}.muted{font-size:13px}.admin-layout{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.app-sidebar{background:var(--sidebar);color:#e6ecff;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:26px 14px 14px}.brand{display:flex;gap:12px;align-items:center;padding:0 12px 24px}.brand strong{font-size:23px;letter-spacing:.09em}.brand small{display:block;color:#a9b7d5;font-size:11px}.brand-mark{display:grid;place-items:center;width:42px;height:44px;border-radius:13px;background:#7184ff;color:#fff;font-size:25px;font-weight:800}.app-sidebar nav{display:block;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#465675 transparent}.nav-group{margin-bottom:18px}.nav-label{display:block;font-size:10px;color:#9eaccb;letter-spacing:.14em;text-transform:uppercase;padding:3px 14px 7px}.nav-item{display:flex;gap:12px;width:100%;align-items:center;text-align:left;border-radius:10px;background:transparent;color:#bfcce4;font-weight:500;padding:9px 13px;margin:2px 0}.nav-item>span{font-size:18px;width:22px;text-align:center}.nav-item:hover{background:#253454;color:#fff}.nav-item.selected{background:#687bed29;color:#e9edff;box-shadow:inset 3px 0 #91a0ff}.sidebar-foot{display:flex;justify-content:space-between;align-items:center;padding:15px 10px 0;border-top:1px solid #34405a}.sidebar-foot .pill{background:#263654;color:#cdd9f4;border:0}.sidebar-foot button{color:#d2dcf8}.admin-workspace{min-width:0}.workspace-header{padding:18px 32px;gap:20px;z-index:20;position:sticky;top:0;border-bottom:1px solid var(--line);background:var(--card)}.workspace-main{max-width:1440px;padding:30px 36px 60px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:12px}.page-heading h1{font-size:30px;margin:4px 0}.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:.17em;font-weight:700;color:var(--muted)}.workspace-badge{color:var(--muted);font-size:12px;border:1px solid var(--line);border-radius:30px;padding:6px 12px}.global-search{max-width:620px;flex:1;position:relative;display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:0 12px}.global-search>span{font-size:23px;color:var(--muted)}.global-search>input{width:100%;min-width:0;border:0;background:none;outline:none}.search-results{position:absolute;left:0;right:0;top:calc(100% + 8px);max-height:65vh;overflow:auto;background:var(--card);border:1px solid var(--line);box-shadow:0 14px 40px #0002;border-radius:14px;padding:12px}.search-results>.row{justify-content:space-between;padding:4px 8px}.search-result{display:block;width:100%;text-align:left;background:transparent;color:var(--ink);padding:10px}.search-result:hover{background:var(--bg)}.search-result small{display:block;color:var(--muted);font-weight:400}.theme-picker{max-width:150px;font-size:12px}.mobile-menu,.nav-backdrop{display:none}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--card);margin:12px 0}.table-scroll table{border:0}.table-scroll td{padding:14px}.table-scroll th{padding:13px 14px;white-space:nowrap;background:var(--bg)}table td button.link{text-align:left}.section-intro{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:22px 0 16px}.section-intro h3,.section-intro p{margin:4px 0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.stat{display:flex;flex-direction:column;gap:6px}.stat strong{font-size:29px;line-height:1.3}.stat small{color:var(--muted);font-size:11px}.chart-card{margin:18px 0}.chart-card svg{max-width:100%}.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.filter-grid label{color:var(--muted);font-size:12px}.filter-grid input,.filter-grid select{display:block;width:100%;margin-top:5px;color:var(--ink)}.followup-panel{margin-top:24px}.empty-state{text-align:center;padding:40px 20px;color:var(--muted);border:1px dashed var(--line);border-radius:14px;margin:15px 0}.empty-state>span{font-size:38px}.loading-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:30px;color:var(--muted)}.loading-dot{display:inline-block;width:10px;height:10px;background:var(--brand);border-radius:50%;margin-right:12px}.request-card{margin:12px 0}.profile-heading{display:flex;gap:18px;align-items:center;margin:24px 0}.profile-heading h2{margin:0;font-size:27px}.profile-heading p{margin:4px 0}.profile-heading>button{margin-left:auto}.profile-avatar{display:grid;place-items:center;width:60px;height:60px;border-radius:18px;background:var(--brand);color:var(--bg);font-size:26px;font-weight:700}.student-actions{margin-top:26px}.student-actions summary{cursor:pointer;font-weight:600}.student-actions>aside{border:0;padding:20px 0;box-shadow:none}.progress-course{display:block;width:100%;text-align:left;color:var(--ink);margin:12px 0}.progress-course .row{justify-content:space-between}.progress-course progress{width:100%;height:8px;accent-color:var(--brand);margin:14px 0}progress{accent-color:var(--brand)}.pill.amber{color:#aa650b;background:#eab54d20}.timeline{margin:22px 0}.timeline article{display:flex;gap:17px;padding:0 0 22px 10px;position:relative}.timeline article:before{content:"";position:absolute;left:15px;top:10px;bottom:0;border-left:1px solid var(--line)}.timeline-dot{width:11px;height:11px;border:3px solid var(--brand);border-radius:50%;margin-top:6px;flex:none;background:var(--card);z-index:1}.timeline p{margin:2px 0}.answer-text{white-space:pre-wrap;word-break:break-word;font:inherit}.course-row{padding:18px;border-radius:14px;box-shadow:var(--shadow)}.course-row .cover{display:grid;place-items:center}.course-row .cover:before{content:"▣";font-size:32px;color:var(--brand)}.course-row .acts{max-width:390px}.student-directory>section>table{margin-top:14px}.tabs2{gap:8px;padding-bottom:2px}.tabs2 button{padding:10px 14px}.login{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:var(--shadow);max-width:400px}.login h1{font-size:27px}.login label{margin:16px 0}.login button{margin-top:10px}.modal-head{position:sticky;top:0;background:var(--card);z-index:1;border-radius:12px 12px 0 0}.modal-body{padding:24px}.row>input{min-width:0}.info{color:var(--muted)}@media (min-width:1500px){.workspace-main{padding-top:40px}}@media (max-width:1100px){.admin-layout{grid-template-columns:210px minmax(0,1fr)}.workspace-main{padding:25px 22px}.workspace-header{padding:15px 22px}.stats-grid,.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-badge{display:none}}@media (max-width:760px){.admin-layout{display:block}.app-sidebar{position:fixed;left:0;top:0;width:250px;z-index:45;transform:translate(-100%);transition:transform .2s}.nav-open .app-sidebar{transform:translate(0)}.nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0008;border-radius:0;z-index:44}.mobile-menu{display:block;padding:8px 10px}.workspace-header{padding:12px;gap:8px}.workspace-main{padding:22px 14px 45px}.page-heading h1{font-size:26px}.theme-picker{width:78px}.global-search{padding:0 8px}.global-search>input{font-size:12px;padding:8px 2px}.global-search>span{display:none}.section-intro{align-items:flex-start;flex-wrap:wrap}.card{padding:17px}.profile-heading{flex-wrap:wrap;gap:12px}.profile-heading>button{margin-left:0}.profile-heading h2{font-size:23px}.kv{grid-template-columns:120px 1fr}.stat strong{font-size:26px}.student-directory{overflow-x:auto}.stats-grid,.filter-grid{gap:10px}.modal-body{padding:17px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.course-more{position:relative}.course-more summary{cursor:pointer;list-style:none;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--brand)}.course-more summary:after{content:" ⋯"}.course-more .action-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:190px;display:grid;gap:5px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:10px;box-shadow:0 12px 30px #0002;z-index:15}.action-menu button{text-align:left;padding:8px 10px}.action-menu button:hover{background:var(--bg)}
