@font-face{font-family:'DM Sans';font-style:normal;font-weight:100 1000;font-display:swap;src:url('../fonts/dm-sans.ttf') format('truetype')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url('../fonts/manrope.ttf') format('truetype')}
:root{--ink:#18243e;--muted:#7b8498;--primary:#4d5ce5;--primary-dark:#3948ce;--pale:#eef0ff;--line:#e8ebf2;--bg:#f7f8fc;--green:#239678;--red:#d55661;--amber:#c49231;--radius:16px}html,body{overflow-x:hidden;max-width:100vw;width:100%}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,.brand{font-family:'Manrope',sans-serif}h1{font-size:29px;line-height:1.35;letter-spacing:-1px;font-weight:800}h2{font-size:18px;letter-spacing:-.4px;font-weight:750}h3{font-size:16px;font-weight:750}p{line-height:1.7}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #a3abff;outline-offset:4px}svg.lucide{width:19px;height:19px;stroke-width:1.8;flex-shrink:0}button svg,a svg{pointer-events:none}[hidden],[x-cloak],.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{text-transform:uppercase;font-size:10px;font-weight:700;letter-spacing:1.8px;color:var(--muted)}.flex{display:flex}.between{display:flex;justify-content:space-between;align-items:center;gap:16px}.align{display:flex;align-items:center;gap:10px}.gap{gap:14px}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:20px}.mt{margin-top:24px}.mb{margin-bottom:22px}.text-right{text-align:right}.text-center{text-align:center}.grow{flex:1}.btn{border:1px solid var(--line);background:white;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;border-radius:9px;font-weight:600;font-size:12px;white-space:nowrap;transition:all .18s}.btn:hover{border-color:#ccd2e4;background:#f9faff;transform:translateY(-1px)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 3px 7px #4d5ce518}.btn.primary:hover{background:var(--primary-dark)}.btn.subtle{background:transparent;border-color:transparent;color:var(--muted)}.btn.danger{color:var(--red);background:#fff2f3;border-color:#f8dce0}.btn.success{color:var(--green);background:#edf8f4;border-color:#d3eee4}.btn.compact{padding:7px 10px;font-size:11px}.btn.icon{padding:9px}.btn.full{width:100%}.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:6px;font-size:10px;font-weight:700;line-height:1.3;white-space:nowrap;background:#f0f2f7;color:#73809a}.badge.blue{background:#eef0ff;color:#5964d9}.badge.green,.badge.APPROVED{background:#eaf7f1;color:#288e71}.badge.amber,.badge.PENDING{background:#fff6e6;color:#b98725}.badge.red,.badge.REJECTED{background:#fff0f1;color:#cf5260}.dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.avatar{display:inline-flex;align-items:center;justify-content:center;background:#eeeefb;color:#6964a3;width:36px;height:36px;border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0}.avatar.large{width:48px;height:48px;font-size:15px}.card{background:white;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 3px 5px #192c5c02;overflow:hidden}.card-body{padding:24px}.card-header{padding:21px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:14px}.card-header p{font-size:12px;color:var(--muted);margin-top:4px}.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;letter-spacing:-.5px}.brand-mark{background:var(--primary);color:#fff;border-radius:10px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 8px #4d5ce526}.brand-mark svg{width:22px;height:22px}.sidebar{position:fixed;left:0;top:0;bottom:0;width:245px;background:white;border-right:1px solid var(--line);padding:30px 19px 20px;display:flex;flex-direction:column;z-index:40}.sidebar .brand{padding:0 10px}.sidebar-label{margin:39px 14px 13px;font-size:9px;text-transform:uppercase;letter-spacing:1.8px;color:#99a0af;font-weight:600}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px 15px;color:#788197;border-radius:9px;font-size:12px;font-weight:550;transition:all .15s}.nav-link:hover{background:#f7f8fc;color:var(--ink)}.nav-link.active{color:var(--primary);background:#eef0ff;font-weight:700}.nav-link.active:after{content:'';width:5px;height:5px;border-radius:50%;background:var(--primary);margin-left:auto}.sidebar-bottom{margin-top:auto;padding:22px 8px 0}.term-card{border:1px solid var(--line);background:#fafbfe;padding:14px;border-radius:11px;margin-bottom:17px}.term-card .align{font-size:11px;font-weight:600}.term-card p{font-size:10px;color:var(--muted);margin-top:8px}.sidebar-user{border-top:1px solid var(--line);padding-top:17px;display:flex;align-items:center;gap:10px}.sidebar-user strong{font-size:11px;display:block}.sidebar-user small{font-size:10px;color:var(--muted)}.workspace{margin-left:245px}.topbar{height:79px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);padding:0 36px;display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar-left{display:flex;align-items:center;gap:12px}.institution-select{border:0!important;background:transparent!important;padding:7px 26px 7px 4px!important;font-weight:600!important;width:auto!important;font-size:12px!important}.topbar-right{display:flex;align-items:center;gap:19px}.divider-v{height:26px;width:1px;background:var(--line)}.topbar .user-name{font-size:11px;font-weight:600}.topbar .user-role{font-size:10px;color:var(--muted);margin-top:4px}.main{max-width:1640px;padding:26px 36px 35px;margin:auto}.breadcrumb{display:flex;align-items:center;gap:7px;font-size:10px;color:#8e97a8;margin-bottom:24px}.breadcrumb svg{width:12px;height:12px}.breadcrumb span:last-child{color:#536078}.page-header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px}.page-header p{font-size:12px;color:var(--muted);margin-top:8px}.page-date{font-size:11px;color:#6c7890;display:flex;align-items:center;gap:8px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:25px}.stats-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.stat-card{padding:20px;background:#fff;border:1px solid var(--line);border-radius:13px;position:relative}.stat-label{font-size:11px;color:#7c869a;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}.stat-icon{width:33px;height:33px;border-radius:9px;display:flex;justify-content:center;align-items:center;background:#eef0ff;color:#6571dc}.stat-icon.green{background:#eaf7f2;color:#36997d}.stat-icon.amber{background:#fff6e7;color:#c39849}.stat-icon.purple{background:#f3edfc;color:#9273c5}.stat-number{font-family:'Manrope',sans-serif;font-size:29px;font-weight:800;letter-spacing:-1px}.stat-foot{font-size:10px;color:#96a0b1;margin-top:12px}.stat-foot strong{color:var(--green);font-weight:550;margin-right:4px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px}.chart-wrap{height:247px;padding:13px 20px 20px}.chart-wrap canvas{width:100%!important;height:100%!important}.legend{display:flex;align-items:center;gap:6px;font-size:10px;color:#8890a2}.legend .dot{color:var(--primary)}.activity-item{padding:17px 0;border-bottom:1px solid #f0f2f6;display:flex;gap:11px;align-items:flex-start}.activity-item:last-child{border:0;padding-bottom:0}.activity-icon{width:30px;height:30px;border:1px solid var(--line);border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--primary);flex-shrink:0}.activity-icon svg{width:14px;height:14px}.activity-item p{font-size:11px;line-height:1.65}.activity-item small{font-size:9px;color:#9da5b3}.activity-item strong{font-weight:600}.table-scroll{overflow-x:auto;width:100%;max-height:650px}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{background:#fafbfe;color:#8b94a6;text-transform:none;font-size:10px;letter-spacing:.1px;font-weight:550;padding:13px 23px;position:sticky;top:0;z-index:1;border-bottom:1px solid var(--line)}td{padding:16px 23px;border-bottom:1px solid #f0f2f7;font-size:11px;color:#5d6980}td strong{color:var(--ink);font-weight:600}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fcfcff}.table-name{display:flex;align-items:center;gap:10px}.table-name .avatar{width:30px;height:30px;font-size:9px}.table-name small{display:block;color:#929bae;font-size:10px;margin-top:4px}.table-link:hover{color:var(--primary)}.pagination{padding:16px 22px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}.filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap;padding:18px 22px;border-bottom:1px solid var(--line);background:#fff}.filters .field{margin:0;min-width:120px;flex:1}.filters .field.search{flex:2;min-width:180px}label,.field-label{display:block;font-size:11px;font-weight:600;color:#5d6980;margin-bottom:8px}.field{margin-bottom:19px}input:not([type=checkbox]):not([type=radio]),select,textarea{display:block;width:100%;border:1px solid #e0e5ef;border-radius:8px;background:#fff;padding:11px 12px;outline:none;color:var(--ink);font-size:12px;transition:border .15s,box-shadow .15s;min-height:41px}input:focus,select:focus,textarea:focus{border-color:#7f8af0!important;box-shadow:0 0 0 3px #4d5ce512}input:disabled,select:disabled{background:#f6f7fb!important;color:#8e98ac}input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:16px;height:16px}input::placeholder,textarea::placeholder{color:#a3aaba}select{cursor:pointer}textarea{resize:vertical;min-height:100px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field-help{font-size:10px;color:#8b94a6;margin-top:7px;line-height:1.6}.errorlist{color:var(--red);padding:0;list-style:none;font-size:11px;line-height:1.7;margin:6px 0}.alert{padding:13px 16px;border:1px solid #efd1d6;border-radius:10px;color:#ba4c5a;background:#fff5f6;line-height:1.7;font-size:12px;margin-bottom:18px}.info-strip{background:#f3f5ff;border:1px solid #e5e8ff;color:#707cbb;font-size:11px;padding:13px 16px;border-radius:10px;display:flex;align-items:center;gap:10px}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:19px 24px;border-top:1px solid var(--line);background:#fdfdff}.form-section{padding:25px;border-bottom:1px solid var(--line)}.form-section:last-child{border:0}.section-number{width:25px;height:25px;font-size:11px;color:var(--primary);background:var(--pale);display:inline-flex;align-items:center;justify-content:center;border-radius:7px;margin-right:9px}.section-title{display:flex;align-items:center;font-size:13px;font-weight:650;margin-bottom:22px}.record-types{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:23px}.record-type{border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;gap:12px;padding:16px;cursor:pointer;color:#7b8598;position:relative}.record-type:has(input:checked){background:#f5f6ff;border-color:#7d88ee;color:var(--primary);box-shadow:0 0 0 1px #7d88ee22}.record-type input{margin-left:auto}.record-type strong{font-size:12px}.record-type small{display:block;font-size:10px;margin-top:4px;font-weight:400;color:#98a0b2}.student-editor{border:1px solid var(--line);border-radius:11px;margin-bottom:12px;padding:18px 20px}.student-editor .student-title{display:flex;align-items:center;gap:10px}.student-editor .student-title strong{font-size:12px}.topic-row{display:flex;align-items:center;gap:10px;margin-top:13px;margin-left:45px}.topic-row select{flex:1}.counter{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;flex-shrink:0}.counter button{border:0;background:#f8f9fc;color:#77839b;width:31px;height:37px;font-size:18px}.counter input{width:52px!important;border:0!important;min-height:37px!important;padding:6px!important;text-align:center;border-radius:0!important;-moz-appearance:textfield}.counter input::-webkit-inner-spin-button{-webkit-appearance:none}.add-topic{color:var(--primary);font-size:10px;border:0;background:transparent;margin:12px 0 0 45px;padding:0;display:flex;gap:4px;align-items:center}.add-topic svg{width:13px;height:13px}.attendance-controls{display:flex;gap:7px}.attendance-controls button{font-size:11px;padding:8px 14px}.sticky-save{position:sticky;bottom:12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.97);box-shadow:0 4px 30px #1b284e0c;padding:17px 23px;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;z-index:10}.empty-state{text-align:center;padding:55px 20px}.empty-state .empty-icon{background:#f3f5fc;color:#a2adc6;border-radius:14px;display:inline-flex;padding:18px;margin-bottom:18px}.empty-state h3{font-size:14px;margin-bottom:8px}.empty-state p{font-size:12px;color:var(--muted);margin-bottom:18px}.segmented{background:#f0f2f8;border:1px solid #e8ecf3;display:inline-flex;border-radius:8px;padding:4px;gap:3px}.segmented a,.segmented button{border:0;background:transparent;padding:7px 15px;border-radius:5px;color:#8a94a8;font-size:11px;font-weight:550}.segmented .active{background:white;box-shadow:0 1px 4px #152a5520;color:var(--primary)}.tabs{display:flex;gap:27px;border-bottom:1px solid var(--line);padding:0 23px;overflow-x:auto}.tabs a{white-space:nowrap;display:flex;align-items:center;gap:7px;padding:16px 0;color:#8a93a5;font-size:12px;border-bottom:2px solid transparent}.tabs a.active{color:var(--primary);border-color:var(--primary);font-weight:600}.progress{height:5px;background:#eef0f6;overflow:hidden;border-radius:10px}.progress>span{height:100%;display:block;background:var(--primary);border-radius:10px}.progress.full>span{background:var(--red)}.courses-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.course-card{padding:24px;display:flex;flex-direction:column}.course-card h3{font-size:16px;margin:21px 0 16px;line-height:1.6}.course-symbol{width:43px;height:43px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:#eef0ff;color:#6872d3}.course-meta{display:flex;align-items:center;gap:8px;color:#8a94a7;font-size:11px;margin-bottom:12px}.course-meta svg{width:15px;height:15px}.course-capacity{margin:16px 0 21px}.course-capacity .between{font-size:10px;color:#8b94a8;margin-bottom:10px}.course-capacity strong{font-size:11px;color:#55617a}.course-card .course-action{margin-top:auto}.course-hero{padding:27px;display:flex;align-items:center;justify-content:space-between;gap:24px}.course-hero .progress{min-width:200px}.weeks-grid{display:grid;grid-template-columns:repeat(13,1fr);gap:12px;padding:27px}.week{border:1px solid var(--line);background:#f5f6fa;color:#949db0;border-radius:10px;height:55px;display:flex;align-items:center;justify-content:center;font-weight:600;transition:.15s;width:100%}.week.active{color:white;background:var(--primary);border-color:var(--primary)}.week:hover{transform:translateY(-2px);box-shadow:0 3px 8px #4d5ce520}.week.current{outline:2px solid #a3adff;outline-offset:3px}.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.class-card{padding:20px;display:flex;align-items:center;justify-content:space-between}.checkbox-list{display:flex;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:9px;padding:12px}.checkbox-list label{display:flex;align-items:center;gap:6px;margin:0;font-size:11px}.modal-backdrop{position:fixed;inset:0;background:#101b395e;backdrop-filter:blur(5px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:480px;max-width:100%;background:white;border-radius:18px;box-shadow:0 25px 100px #10205040;overflow:hidden;max-height:90vh;overflow-y:auto}.modal-header{padding:22px 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.modal-body{padding:24px}.modal-body p{color:var(--muted);font-size:12px;margin-top:10px}.toast-container{position:fixed;bottom:25px;right:25px;z-index:150;max-width:calc(100% - 40px)}.toast{padding:15px 18px;background:white;border:1px solid #d1e9df;box-shadow:0 8px 25px #20335417;border-radius:11px;display:flex;gap:11px;align-items:center;font-size:12px;margin-top:10px;animation:slidein .25s ease}.toast>svg{color:var(--green)}.toast.error{border-color:#efcbd1}.toast.error>svg{color:var(--red)}@keyframes slidein{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.login-page{min-height:100vh;background:#fafbfe;position:relative;display:flex;flex-direction:column}.login-top{padding:35px 55px;display:flex;align-items:center;justify-content:space-between}.login-top .badge{padding:8px 12px;border:1px solid #e7eaf1;background:transparent;color:#9099ab}.login-main{width:min(1060px,calc(100% - 60px));margin:60px auto 80px}.login-heading{text-align:center}.login-heading .overline{display:inline-flex;align-items:center;gap:7px;color:#6470c6;background:#f0f2ff;padding:7px 12px;border-radius:20px;font-size:10px;font-weight:600;margin-bottom:22px}.login-heading h1{font-size:40px;letter-spacing:-1.6px;line-height:1.35}.login-heading p{color:#9199ac;margin:17px auto 0;font-size:14px;max-width:490px}.roles-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:19px;margin-top:50px}.role-card{display:flex;flex-direction:column;background:white;border:1px solid #e6e9f1;border-radius:16px;padding:29px 24px 23px;min-height:248px;box-shadow:0 3px 6px #2d3e6502;transition:all .2s}.role-card:hover{border-color:#a0a9ed;transform:translateY(-6px);box-shadow:0 12px 30px #3c498513}.role-icon{width:50px;height:50px;background:#eff1ff;color:#6671d3;border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:27px}.role-card:nth-child(2) .role-icon{background:#edf7f4;color:#5b9c89}.role-card:nth-child(3) .role-icon{background:#f3effa;color:#9476bb}.role-card:nth-child(4) .role-icon{background:#fff6e8;color:#c19b5c}.role-icon svg{width:25px;height:25px}.role-card h2{font-size:16px;letter-spacing:-.4px;margin-bottom:10px}.role-card p{font-size:11px;color:#98a0b0;line-height:1.8}.role-card .role-next{display:flex;justify-content:space-between;align-items:center;color:#adb4c3;font-size:10px;margin-top:26px}.role-card:hover .role-next{color:var(--primary)}.login-trust{display:flex;gap:22px;justify-content:center;margin-top:34px;font-size:10px;color:#a2aabb}.login-trust span{display:flex;align-items:center;gap:6px}.login-trust svg{width:13px;height:13px}.login-footer{margin-top:auto;padding:23px 55px;border-top:1px solid #edf0f5;display:flex;align-items:center;justify-content:space-between;color:#a4acbc;font-size:10px}.login-panel{max-width:630px;margin:30px auto}.login-panel .back{font-size:11px;color:#8f98ab;display:inline-flex;align-items:center;gap:6px;margin-bottom:26px}.login-panel h1{font-size:28px}.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}.person-card{width:100%;text-align:left;border:1px solid var(--line);border-radius:11px;background:#fff;padding:17px;display:flex;align-items:center;gap:12px;transition:.15s}.person-card:hover{border-color:#9da7ee;box-shadow:0 4px 15px #4d5ce510}.person-card strong{font-size:12px;display:block}.person-card small{color:#939caf;display:block;font-size:10px;margin-top:5px}.person-card>svg{width:14px;color:#a4adbf;margin-left:auto}.step-line{display:flex;align-items:center;gap:9px;color:#8f99af;font-size:10px;margin:25px 0}.step-line span{color:var(--primary);font-weight:600}.upload-zone{border:1px dashed #b7c0e4;background:#fafbff;border-radius:14px;padding:35px;text-align:center}.upload-zone>svg{color:var(--primary);width:35px;height:35px;margin-bottom:17px}.upload-zone input{max-width:390px;margin:20px auto 0;background:white}.preview-table input{min-width:130px;font-size:11px;padding:8px}.preview-table td{padding:10px 13px}.preview-table tr.invalid{background:#fff2f3}.preview-table tr.invalid input{border-color:#eeb9c1}.mobile-menu{display:none}.footer-note{font-size:9px;color:#a6aebd;display:flex;justify-content:space-between;padding-top:27px}.report-period{display:flex;align-items:center;gap:13px;font-size:12px;font-weight:600}.report-period svg{width:16px}.distribution{display:flex;align-items:center;gap:25px;padding:20px 24px}.distribution canvas{max-width:110px!important;max-height:110px!important}.distribution-list{flex:1}.distribution-list>div{display:flex;align-items:center;justify-content:space-between;font-size:11px;gap:18px;margin:14px 0}.greeting-banner{background:#eef1ff;border:1px solid #e2e7ff;padding:26px 28px;border-radius:15px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.greeting-banner h2{font-size:21px}.greeting-banner p{font-size:12px;color:#8390b2;margin-top:7px}.greeting-banner .banner-icon{width:65px;height:65px;color:#8995dc;display:flex;align-items:center;justify-content:center;border:1px solid #cdd5f6;border-radius:18px;transform:rotate(-8deg)}.banner-icon svg{width:32px;height:32px}.htmx-request .htmx-indicator{display:inline-block}.htmx-indicator{display:none}.htmx-request{cursor:progress}.wide-form{max-width:980px;margin:auto}
@media(min-width:1600px){.main{padding:35px 48px}.topbar{padding:0 48px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 340px}.chart-wrap{height:285px}.stat-card{padding:24px}.stat-number{font-size:34px}}
@media(max-width:1200px){.sidebar{width:220px;padding:27px 13px}.workspace{margin-left:220px}.main{padding:24px}.topbar{padding:0 24px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 260px;gap:17px}.stats-grid{gap:12px}.stat-card{padding:16px}.stats-grid.five{grid-template-columns:repeat(3,1fr)}.topbar .user-copy{display:none}.courses-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.role-card{padding:23px 18px}.weeks-grid{grid-template-columns:repeat(9,1fr)}}
@media(max-width:1000px){.sidebar{width:200px}.workspace{margin-left:200px}.brand{font-size:16px}.dashboard-grid{grid-template-columns:1fr}.dashboard-side{display:grid;grid-template-columns:1fr 1fr;gap:17px}.stats-grid{grid-template-columns:repeat(2,1fr)}.topbar-right{gap:9px}.topbar .return-label{display:none}.main{padding:22px}.roles-grid{grid-template-columns:repeat(2,1fr);max-width:670px;margin:35px auto 0}.login-main{margin-top:30px}.role-card{min-height:220px}.role-card .role-icon{margin-bottom:20px}.class-grid{grid-template-columns:1fr 1fr}.form-grid.three{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:245px}.sidebar.open{transform:translateX(0)}.sidebar-overlay{position:fixed;inset:0;background:#17234360;z-index:35}.workspace{margin-left:0}.mobile-menu{display:inline-flex}.topbar{height:67px;padding:0 18px}.main{padding:20px 17px}.breadcrumb{margin-bottom:18px}.page-header{align-items:flex-start;margin-bottom:20px;flex-wrap:wrap}.page-header h1{font-size:25px}.page-header p{font-size:11px}.page-date{display:none}.topbar-right .divider-v,.topbar-right .user-copy{display:none}.topbar-right{gap:6px}.topbar-right .btn{padding:8px}.topbar-left{gap:5px}.institution-select{font-size:11px!important}.stat-label{font-size:10px}.stat-number{font-size:27px}.stat-foot{font-size:9px}.stats-grid.five{grid-template-columns:1fr 1fr}.dashboard-side{display:flex;flex-direction:column}.card-header{padding:18px}.card-header h2{font-size:15px}.card-body{padding:18px}.chart-wrap{height:225px;padding:12px}.form-grid,.form-grid.three{grid-template-columns:1fr}.form-section{padding:18px}.record-types{gap:8px}.record-type{padding:12px 8px;gap:7px;flex-direction:column;text-align:center}.record-type input{margin:auto}.record-type small{display:none}.record-type strong{font-size:10px}.topic-row{margin-left:0;gap:5px}.topic-row select{min-width:0;font-size:10px;padding:9px 5px}.counter input{width:35px!important}.counter button{width:26px}.student-editor{padding:13px}.student-editor .student-title strong{font-size:11px}.student-editor .student-title{gap:7px}.student-editor .between{gap:7px}.student-editor .avatar{width:29px;height:29px;font-size:9px}.attendance-controls button{padding:8px;font-size:10px}.sticky-save{padding:13px;bottom:8px}.sticky-save .muted{font-size:10px}.filters{padding:14px;gap:10px}.filters .field{min-width:125px}.filters .field.search{min-width:100%}.courses-grid{grid-template-columns:1fr}.course-hero{align-items:flex-start;flex-direction:column}.tabs{gap:21px;padding:0 17px}.tabs a{font-size:11px}.weeks-grid{grid-template-columns:repeat(6,1fr);gap:9px;padding:20px}.class-grid{grid-template-columns:1fr}.login-top{padding:25px}.login-top .badge{display:none}.login-main{width:calc(100% - 36px);margin-top:30px;margin-bottom:45px}.login-heading h1{font-size:30px;letter-spacing:-1px}.login-heading p{font-size:12px;max-width:300px}.roles-grid{gap:12px;margin-top:30px}.role-card{padding:20px 17px;min-height:230px}.role-card h2{font-size:14px}.role-card p{font-size:10px}.role-card .role-next{margin-top:17px}.login-trust{gap:13px;font-size:9px;flex-wrap:wrap}.login-footer{padding:20px;gap:15px;font-size:9px}.people-grid{grid-template-columns:1fr}.login-panel{margin-top:10px}.greeting-banner{padding:22px}.greeting-banner h2{font-size:18px}.greeting-banner .banner-icon{display:none}.report-period{gap:7px;font-size:10px}.segmented a{padding:7px 12px}.footer-note{font-size:8px}.form-actions{padding:17px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.group-row td{background:#f5f7fc;color:#6874a5;font-size:10px;font-weight:700;padding:11px 23px;border-top:1px solid var(--line)}

/* Curriculum navigation stays reachable on shorter screens. */
.sidebar{overflow-y:auto}

/* Allow flex/grid children to shrink without widening the page. Tables scroll locally. */
.workspace,.main,.wide-form,.card,.field,.dashboard-grid>*,.form-grid>*,.courses-grid>*,.people-grid>*{min-width:0}
input:not([type=checkbox]):not([type=radio]),select,textarea{min-width:0;max-width:100%}
.topbar-left,.topbar-left form{min-width:0}
.sidebar-user>div,.person-card>span:not(.avatar){min-width:0;overflow-wrap:anywhere}

@media(max-width:760px){
 html,body{overflow-x:hidden;max-width:100vw}
 .sidebar{transform:translateX(-100%);transition:transform .2s;width:245px}.sidebar.open{transform:translateX(0)}.sidebar-overlay{position:fixed;inset:0;background:#17234360;z-index:35}
 .workspace{margin-left:0;width:100%;max-width:100%;overflow-x:hidden}
 .mobile-menu{display:inline-flex}
 .topbar{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;padding:0 12px!important;min-height:60px!important;height:auto!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;overflow:hidden!important}
 .topbar-left{flex:1 1 auto!important;min-width:0!important;display:flex!important;align-items:center!important;gap:6px!important;overflow:hidden!important}
 .topbar-left form{flex:1 1 auto!important;min-width:0!important;overflow:hidden!important}
 .topbar-left>.badge,.topbar-left>i,.topbar-left>svg{display:none!important}
 .institution-select{width:100%!important;max-width:100%!important;min-width:0!important;font-size:13px!important;padding:6px 18px 6px 0!important;text-overflow:ellipsis!important;overflow:hidden!important;white-space:nowrap!important}
 .topbar-right{flex:0 0 auto!important;display:flex!important;align-items:center!important;gap:4px!important}
 .topbar-right .divider-v,.topbar-right .user-copy{display:none!important}
 .topbar-right .btn{width:38px!important;height:38px!important;min-height:38px!important;padding:6px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
 .topbar-right .avatar{width:32px!important;height:32px!important}
 .main{width:100%!important;max-width:100%!important;padding:16px 14px 30px!important;box-sizing:border-box!important;overflow-x:hidden!important}
 .breadcrumb{margin-bottom:18px}
 .page-header{align-items:flex-start;margin-bottom:20px;flex-wrap:wrap;gap:12px}
 .page-header>div,.card-header>div{min-width:0;max-width:100%}
 .page-header h1{font-size:23px}
 .page-header p{font-size:11px}
 .page-header h1,.page-header p,.card-header h2{overflow-wrap:anywhere}
 .page-header>.align,.page-header>.align.wrap{width:100%;flex-wrap:wrap;gap:8px}
 .page-header>.align>.btn,.page-header>.align.wrap>.btn{flex:1 1 auto;min-width:0;justify-content:center;text-align:center;min-height:40px}
 .page-date{display:none}
 .stat-label{font-size:10px}.stat-number{font-size:27px}.stat-foot{font-size:9px}.stats-grid.five{grid-template-columns:1fr 1fr}.dashboard-side{display:flex;flex-direction:column}
 .card{max-width:100%!important;box-sizing:border-box!important;overflow:hidden!important}
 .card-header{padding:16px}.card-header h2{font-size:15px}.card-body{padding:16px}
 .card-header,.card-body.between,.pagination,.footer-note,.form-actions,.sticky-save{flex-wrap:wrap;gap:12px}
 .footer-note>span{max-width:100%}
 .chart-wrap{height:225px;padding:12px}
 .table-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch;width:100%!important;max-width:100%!important}
 .tabs{gap:16px!important;padding:0 14px!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch;max-width:100%!important;width:100%!important;box-sizing:border-box!important}
 .tabs::-webkit-scrollbar{display:none}
 .filters{padding:12px!important;gap:10px!important;width:100%!important;box-sizing:border-box!important}
 .filters .field{min-width:0!important;flex:1 1 calc(50% - 10px)!important;max-width:100%!important}
 .filters .field.search{flex-basis:100%!important;width:100%!important}
 .filters input,.filters select,.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea{font-size:16px!important}
 .form-grid,.form-grid.three{grid-template-columns:1fr}.form-section{padding:18px}.record-types{gap:8px}.record-type{padding:12px 8px;gap:7px;flex-direction:column;text-align:center}.record-type input{margin:auto}.record-type small{display:none}.record-type strong{font-size:10px}.topic-row{margin-left:0;gap:5px}.topic-row select{min-width:0;font-size:10px;padding:9px 5px}.counter input{width:35px!important}.counter button{width:26px}.student-editor{padding:13px}.student-editor .student-title strong{font-size:11px}.student-editor .student-title{gap:7px}.student-editor .between{gap:7px}.student-editor .avatar{width:29px;height:29px;font-size:9px}.attendance-controls button{padding:8px;font-size:10px}.sticky-save{padding:13px;bottom:8px}.sticky-save .muted{font-size:10px}
 .courses-grid{grid-template-columns:1fr}.course-hero{align-items:flex-start;flex-direction:column}.tabs a{font-size:11px}.weeks-grid{grid-template-columns:repeat(6,1fr);gap:9px;padding:20px}.class-grid{grid-template-columns:1fr}.login-top{padding:25px}.login-top .badge{display:none}.login-main{width:calc(100% - 36px);margin-top:30px;margin-bottom:45px}.login-heading h1{font-size:30px;letter-spacing:-1px}.login-heading p{font-size:12px;max-width:300px}.roles-grid{gap:12px;margin-top:30px}.role-card{padding:20px 17px;min-height:230px}.role-card h2{font-size:14px}.role-card p{font-size:10px}.role-card .role-next{margin-top:17px}.login-trust{gap:13px;font-size:9px;flex-wrap:wrap}.login-footer{padding:20px;gap:15px;font-size:9px}.people-grid{grid-template-columns:1fr}.login-panel{margin-top:10px}.greeting-banner{padding:22px}.greeting-banner h2{font-size:18px}.greeting-banner .banner-icon{display:none}.report-period{gap:7px;font-size:10px}.segmented a{padding:7px 12px}.footer-note{font-size:8px}.form-actions{padding:17px}
 .student-title{min-width:0;overflow-wrap:anywhere}
 .info-strip{flex-wrap:wrap;overflow-wrap:anywhere}
 .modal-header{gap:12px}
 .modal-header h2{min-width:0;overflow-wrap:anywhere}
 .login-footer{flex-wrap:wrap}
}
@media(max-width:480px){
 .filters .field,.filters .field.search{flex-basis:100%!important;width:100%!important}
 .filters .btn{width:100%!important;justify-content:center!important}
 .page-header>.align,.page-header>.align.wrap{width:100%!important}
 .page-header>.align>.btn,.page-header>.align.wrap>.btn{width:100%!important;flex:1 1 100%!important;white-space:normal!important;min-height:42px!important}
 .record-types{grid-template-columns:repeat(3,minmax(0,1fr))}
 .record-type{min-width:0}
 .sticky-save>.align{flex-wrap:wrap}
 .roles-grid{grid-template-columns:1fr}
 .weeks-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* Institution and academic term are workspace-wide filters. */
.topbar-term{display:flex;align-items:center;gap:6px;border-left:1px solid var(--line);padding-left:12px;margin-right:auto}
.topbar-term label{display:flex;align-items:center;gap:6px;white-space:nowrap;margin:0;font-size:10px;color:#79869a}
.topbar-term label svg{width:15px;height:15px}.topbar-term label span{display:none}
.topbar-term select{width:auto;min-height:34px;background:#f5f7fc;border-color:#e6ebf4;font-size:11px;font-weight:600;padding:6px 8px}
.test-environment-banner{background:#fff1ce;color:#73531b;border-bottom:1px solid #ebd6a5;text-align:center;font-size:12px;line-height:1.6;padding:8px 14px;font-weight:600}
@media(max-width:1100px){.topbar{padding:0 20px;gap:12px}.topbar-right{gap:10px}.return-label{display:none}.topbar-right .user-copy{display:none}}
@media(max-width:760px){
 .topbar{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;padding:9px 12px!important;gap:8px 6px!important;overflow:visible!important}
 .topbar-left{grid-column:1;grid-row:1;width:auto!important;overflow:hidden!important;flex-wrap:nowrap!important;gap:6px!important}
 .topbar-right{grid-column:2;grid-row:1;align-self:center;margin:0!important}
 .topbar>form.topbar-term{grid-column:1/-1;grid-row:2;border-left:0;border-top:1px solid #f0f2f7;padding:8px 0 0;margin:0;justify-content:space-between;min-width:0}
 .topbar-term label{font-size:11px}.topbar-term label span{display:inline}.topbar-term select{font-size:12px;min-height:32px;max-width:160px;padding:5px 7px}
 .topbar-left .mobile-menu{padding:6px;min-height:34px}
}
/* Navigation and table guidance shared by working screens. */
.skip-content{position:fixed;top:10px;left:10px;transform:translateY(-160%);z-index:9999;background:#26359d;color:white;padding:12px 18px;border-radius:8px}.skip-content:focus{transform:translateY(0)}.main:focus{outline:none}.table-scroll-hint{margin:0;padding:10px 20px;background:#f5f7ff;color:#536487;border-bottom:1px solid #e3e9f2;font-size:12px}.table-scroll:focus-visible{outline:2px solid #6374dd;outline-offset:-2px}@media(max-width:640px){.pagination{gap:12px;flex-wrap:wrap}.pagination .btn{min-height:40px;min-width:40px}}

.nav-search{width:100%;min-height:38px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:0 0 12px;font-size:12px;background:#f8f9fd;flex-shrink:0}.sidebar .nav-link{min-height:40px}.sidebar .nav-link[hidden]{display:none!important}

/* Keep times and course details readable inside narrow cards. */
.course-meta,.schedule-event,.schedule-event-top{white-space:normal;overflow-wrap:anywhere;min-width:0}
.course-meta svg{flex-shrink:0}
.course-time strong{min-width:0;white-space:normal}
@media(max-width:600px){.schedule-event-top{flex-wrap:wrap;gap:6px}.courses-grid>article{min-width:0}.schedule-event .small{white-space:normal}}

/* Sidebar branding: larger logo, quieter institution name. */
.brand-logo{width:36px;height:36px;object-fit:contain;flex-shrink:0}
.brand-name{overflow-wrap:anywhere;min-width:0}
.sidebar .brand{flex-direction:column;gap:4px;align-items:center;text-align:center}
.sidebar .brand-logo{display:block;width:100%;height:auto;max-width:100%;object-fit:contain}
.sidebar .brand-name{font-size:11.5px;line-height:1.5;font-weight:700;letter-spacing:0;flex:none;width:100%}

/* Public header: readable logo with a balanced institution name. */
.login-top{gap:24px}
.login-top .brand{gap:16px;min-width:0;max-width:100%}
.login-top .brand-logo{width:144px;height:auto;max-height:80px;object-fit:contain}
.login-top .brand-name{font-size:14px;line-height:1.5;font-weight:700;letter-spacing:0;max-width:300px;overflow-wrap:normal}
@media(max-width:600px){.login-top{gap:12px}.login-top .brand{gap:12px}.login-top .brand-logo{width:96px;max-height:60px}.login-top .brand-name{font-size:12px;max-width:190px}}

.module-export-bar{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin:0 0 20px;flex-wrap:wrap}.module-export-bar>span{font-size:12px;color:var(--muted);margin-right:auto}@media(max-width:600px){.module-export-bar>span{flex-basis:100%}.module-export-bar>.btn{flex:1}}
