@import "https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&display=swap";*{box-sizing:border-box}body{color:#172033;background:#f3f6f9;margin:0;font-family:Be Vietnam Pro,Arial,sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{grid-template-columns:245px 1fr;min-height:100vh;display:grid}aside{color:#d9e3ef;background:#0b1f3a;flex-direction:column;height:100vh;padding:26px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 10px 30px;display:flex}.brand>span,.seal{color:#0b1f3a;background:#f0a535;border-radius:10px;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.brand div{display:grid}.brand b{letter-spacing:1px}.brand small{color:#899ab1;margin-top:3px}nav{gap:5px;display:grid}nav button{color:#aebccf;text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:12px;padding:12px 13px;display:flex}nav button svg{width:18px}nav button:hover,nav button.active{color:#fff;background:#163354}.profile{border-top:1px solid #294059;align-items:center;gap:10px;margin-top:auto;padding-top:20px;display:flex}.avatar{background:#2c537d;border-radius:50%;place-items:center;width:35px;height:35px;font-weight:700;display:grid}.profile>div:nth-child(2){min-width:0;display:grid}.profile small{color:#8fa0b7;font-size:11px}.profile button{color:#aebccf;background:0 0;border:0;margin-left:auto}.profile svg{width:18px}main{min-width:0;padding-bottom:0}header{background:#fff;border-bottom:1px solid #e5eaf0;justify-content:space-between;align-items:center;height:105px;padding:0 38px;display:flex}header small{color:#728198;letter-spacing:1.6px;font-size:10px;font-weight:600}header h1{margin:4px 0;font-size:25px}.role,.badge{color:#27527d;background:#eaf1f8;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:600}section{padding:30px 38px}.stats{grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px;display:grid}.stats article{background:#fff;border:1px solid #e6ebf0;border-radius:13px;padding:22px;position:relative;overflow:hidden}.stats article:after{content:"";background:#163e68;width:5px;position:absolute;inset:0 auto 0 0}.stats .blue:after{background:#3b82c4}.stats .orange:after{background:#e59a31}.stats .green:after{background:#2c9b79}.stats strong{font-size:30px;display:block}.stats span{color:#6c7b8f}.card{background:#fff;border:1px solid #e3e9ef;border-radius:14px;overflow:hidden;box-shadow:0 4px 18px #132b4610}.cardhead{border-bottom:1px solid #edf0f3;justify-content:space-between;align-items:center;padding:22px 24px;display:flex}.cardhead h2{margin:0;font-size:18px}.cardhead p{color:#7d8999;margin:4px 0 0;font-size:12px}.primary{color:#fff;background:#0d4779;border:0;border-radius:8px;align-items:center;gap:7px;padding:11px 16px;font-weight:600;display:inline-flex}.primary svg{width:16px}table{border-collapse:collapse;width:100%}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #edf0f3;padding:14px 18px}th{color:#627187;text-transform:uppercase;letter-spacing:.7px;background:#f7f9fb;font-size:10px}tbody tr:nth-child(2n){background:#fafbfd}tbody tr:hover{background:#f4f8fc}.plus{color:#14815c}.minus{color:#c74949}.rank{background:#e7edf3;border-radius:50%;place-items:center;width:27px;height:27px;display:grid}.r1{background:#f6c34f}.r2{background:#ccd4dd}.r3{background:#d8a26e}.toolbar,.filters{border-bottom:1px solid #edf0f3;gap:12px;padding:16px 20px;display:flex}.search{border:1px solid #dae1e8;border-radius:8px;flex:1;align-items:center;max-width:340px;padding:0 11px;display:flex}.search svg{color:#8190a1;width:17px}.search input{border:0;outline:0;width:100%;padding:10px}.toolbar select,.filters select,.filters input,form input,form select,form textarea{background:#fff;border:1px solid #d8e0e8;border-radius:8px;outline:none;padding:10px}.icon{color:#27557e;background:#edf3f8;border:0;border-radius:7px;margin-right:5px;padding:7px}.icon svg{width:15px;height:15px}.icon.danger{color:#c34141;background:#faeded}.small{background:#fff;border:1px solid #d4dee7;border-radius:7px;align-items:center;gap:5px;padding:6px 9px;display:flex}.small svg{width:14px}.badge.plus{color:#147451;background:#e7f6ef}.badge.minus{color:#b63e3e;background:#faeaea}code{background:#edf1f5;border-radius:5px;padding:4px 7px}.overlay{z-index:10;background:#07162599;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:min(500px,100%);max-height:90vh;padding:24px;overflow:auto}.modalhead{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modalhead h2{margin:0}.modalhead button{background:0 0;border:0;font-size:28px}.modal form,.entry{gap:16px;display:grid}.modal label,.entry>label,.grid2 label{gap:7px;font-weight:600;display:grid}.modal .primary{justify-content:center}.grid2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.entry{max-width:760px;padding:24px}.studentpick{border:1px solid #dbe2e9;border-radius:10px;grid-template-columns:repeat(2,1fr);max-height:220px;display:grid;overflow:auto}.studentpick>label{border-bottom:1px solid #edf0f3;gap:10px;padding:12px;font-weight:400;display:flex}.studentpick span{display:grid}.studentpick small{color:#8390a0}.inline{float:right;gap:8px;display:flex}.inline button{color:#17619a;background:0 0;border:0}.entry textarea{resize:vertical}.login{grid-template-columns:1.1fr .9fr;min-height:100vh;display:grid}.loginArt{color:#fff;background:linear-gradient(135deg,#09203b,#0d416b);flex-direction:column;justify-content:center;padding:9vw;display:flex;position:relative;overflow:hidden}.loginArt:after{content:"";border:70px solid #ffffff0a;border-radius:50%;width:430px;height:430px;position:absolute;bottom:-180px;right:-130px}.seal{width:58px;height:58px;font-size:19px}.loginArt h1{margin:30px 0 15px;font-size:48px;line-height:1.15}.loginArt p{color:#b8c9d9;max-width:460px;line-height:1.7}.login>form{background:#fff;flex-direction:column;justify-content:center;gap:18px;padding:10vw;display:flex}.login form h2{margin:0 0 15px;font-size:28px}.login form>small{color:#b57922;letter-spacing:1.5px;font-weight:700}.login form label{gap:8px;font-weight:600;display:grid}.login form input{border:1px solid #d8e0e8;border-radius:8px;padding:13px}.login form .primary{justify-content:center;padding:14px}.hint{color:#8490a0;text-align:center;font-size:12px}.error{color:#bd3c3c;background:#fff0f0;border-radius:7px;padding:10px}.datatools{z-index:5;gap:8px;display:flex;position:fixed;bottom:20px;right:25px}.datatools button,.datatools label{color:#fff;cursor:pointer;background:#122e4e;border:0;border-radius:9px;align-items:center;gap:7px;padding:10px 14px;display:flex;box-shadow:0 4px 15px #07182f35}.datatools svg{width:16px}.datatools input{display:none}dl{grid-template-columns:120px 1fr;gap:12px;display:grid}dt{color:#778598}dd{margin:0;font-weight:500}.empty{text-align:center;color:#718096;background:#fff;border-radius:14px;padding:50px}@media (width<=900px){.shell{grid-template-columns:75px 1fr}aside{padding:20px 10px}.brand div,nav button:not(.active){font-size:0}.brand{padding:0 5px 25px}.brand>span{width:38px}.profile>div:nth-child(2),.profile button{display:none}nav button{justify-content:center}.stats{grid-template-columns:1fr 1fr}section,header{padding-left:20px;padding-right:20px}.login{grid-template-columns:1fr}.loginArt{display:none}.login>form{min-height:100vh;padding:12vw}.filters{overflow:auto}table{min-width:700px}.card{overflow:auto}}@media (width<=560px){.stats,.grid2,.studentpick{grid-template-columns:1fr}header h1{font-size:20px}.role{display:none}}.class-grid{grid-template-columns:repeat(3,minmax(210px,1fr));gap:14px;padding:22px;display:grid}.class-tile{text-align:left;color:#173454;background:#f9fbfd;border:1px solid #dce5ed;border-radius:11px;align-items:center;gap:13px;padding:17px;display:flex}.class-tile:hover{background:#f0f6fb;border-color:#78a4c8}.class-tile>svg:first-child{background:#e4eef7;border-radius:9px;width:40px;height:40px;padding:8px}.class-tile>svg:last-child{color:#7e91a5;width:17px;margin-left:auto}.class-tile span{gap:4px;display:grid}.class-tile b{font-size:16px}.class-tile small{color:#718196}.student-nav{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;padding:15px 20px 0;display:flex}.student-nav button{color:#20527e;background:#eaf1f7;border:0;border-radius:8px;align-items:center;gap:5px;padding:9px 12px;display:flex}.student-nav svg{width:16px}.student-card-actions,.semester-actions-row>div{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.student-card-actions .secondary-action,.student-card-actions .primary{min-height:40px;margin:0}.badge.student-status.active{color:#147451;background:#e7f6ef}.badge.student-status.inactive{color:#8a5a18;background:#fff2d9}.student-status-summary{color:#53677b;background:#f5f8fb;border:1px solid #dbe6ee;border-radius:9px;margin-bottom:18px;padding:13px 15px;line-height:1.6}.student-status-summary p{margin:0}.student-status-summary p+p{margin-top:8px}.student-status-actions{border-top:1px solid #e7edf2;flex-wrap:wrap;align-items:center;gap:9px;margin-top:18px;padding-top:18px;display:flex}.student-status-actions small{color:#7a8797;flex-basis:100%;line-height:1.5}.danger-action{color:#b63e3e;background:#fff3f3;border:1px solid #e2a7a7;border-radius:8px;min-height:40px;padding:9px 12px;font-weight:700}.danger-action:disabled{cursor:not-allowed;opacity:.45}.file-action{cursor:pointer}.file-action input{display:none}.roster-course{color:#5f6f82;gap:5px;font-size:12px;font-weight:700;display:grid}.roster-course input{background:#fff;border:1px solid #d2dce5;border-radius:8px;width:170px;min-height:38px;padding:8px 10px}.roster-course small{color:#7a8797;max-width:250px;font-size:11px;font-weight:500}.search-select{display:block;position:relative}.search-select>input{width:100%}.class-options{z-index:8;background:#fff;border:1px solid #ced9e3;border-radius:8px;max-height:294px;position:absolute;top:calc(100% + 5px);left:0;right:0;overflow-y:auto;box-shadow:0 10px 25px #17345424}.class-options.five-rows{max-height:210px}.event-target-note{color:#244d70;background:#f1f7fb;border:1px solid #cfe0ed;border-radius:9px;gap:5px;padding:13px 15px;display:grid}.event-target-note span{color:#617a90;font-size:12px}.required-note{color:#b83d3d;font-size:12px}.record-class-filter{min-width:190px}.record-class-filter>input{background:#fff;border:1px solid #d8e0e8;border-radius:8px;outline:none;height:39px;padding:10px}.class-options button{color:#173454;text-align:left;background:#fff;border:0;border-bottom:1px solid #edf0f3;width:100%;height:42px;padding:0 12px;display:block}.class-options button:hover,.class-options button.selected{background:#edf4fa}.class-options p{color:#7a8797;margin:0;padding:14px 12px;font-weight:400}.student-search{width:100%;margin-top:9px}.no-result{color:#7a8797;text-align:center;grid-column:1/-1;margin:0;padding:18px;font-weight:400}.grade-groups,.student-grade-groups{gap:22px;padding:22px;display:grid}.grade-group,.student-grade-group{background:#fff;border:1px solid #dfe7ee;border-radius:12px;overflow:hidden}.grade-group h3,.student-grade-group h3{color:#173f67;background:#edf4fa;border-bottom:1px solid #dfe7ee;margin:0;padding:14px 18px;font-size:15px}.grade-table{overflow-x:auto}.grade-table tr:last-child td{border-bottom:0}.student-grade-group .class-grid{padding:16px}.group-empty{color:#7a8797;text-align:center;margin:0;padding:22px;font-weight:400}.pagination{border-top:1px solid #edf0f3;justify-content:flex-end;align-items:center;gap:14px;padding:16px 20px;display:flex}.pagination button{color:#27557e;background:#fff;border:1px solid #d4dee7;border-radius:8px;align-items:center;gap:5px;padding:8px 11px;display:flex}.pagination button:disabled{cursor:not-allowed;opacity:.45}.pagination button svg{width:15px;height:15px}.pagination span{color:#6c7b8f;font-size:12px}.table-scroll{width:100%;overflow-x:auto}.logs-table{min-width:900px}.logs-table td:last-child{min-width:340px}.datatools{flex-wrap:wrap;justify-content:flex-end}.password-field{display:block;position:relative}.password-field input{width:100%;padding-right:46px!important}.password-field button{color:#5f7185;background:0 0;border:0;border-radius:7px;place-items:center;width:36px;height:36px;padding:0;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.password-field button:hover{color:#174f7e;background:#edf4fa}.password-field button:focus-visible{outline-offset:1px;outline:2px solid #2d74ac}.password-field svg{width:19px;height:19px}.rank-tabs{background:#fbfcfd;border-bottom:1px solid #edf0f3;gap:10px;padding:16px 20px;display:flex}.rank-tabs button{color:#315b80;background:#fff;border:1px solid #cfdae4;border-radius:8px;min-width:105px;padding:10px 16px;font-weight:600}.rank-tabs button:hover{background:#f1f7fb;border-color:#7eabc9}.rank-tabs button.active{color:#fff;background:#0d4779;border-color:#0d4779}.weekly-page,.semester-page{gap:22px;display:grid}.semester-settings{background:#fff;border:1px solid #dfe7ee;border-radius:13px;grid-template-columns:145px 120px 120px minmax(220px,1fr) auto auto;align-items:end;gap:12px;padding:18px 20px;display:grid;box-shadow:0 4px 18px #132b4610}.semester-settings label{color:#31485f;gap:6px;font-size:12px;font-weight:700;display:grid}.semester-settings input,.semester-settings select{color:#173454;background:#fff;border:1px solid #d2dce5;border-radius:8px;min-height:40px;padding:9px 11px}.semester-settings input:disabled,.semester-settings select:disabled{color:#718196;background:#f3f6f8}.semester-actions-row{background:#fff;border:1px solid #dfe7ee;border-radius:11px;justify-content:space-between;align-items:center;gap:18px;padding:15px 18px;display:flex}.semester-actions-row p{color:#627388;max-width:720px;margin:0;font-size:12px;line-height:1.55}.semester-warning{color:#8a5a12;background:#fff8e9;border:1px solid #efd6aa;border-radius:9px;padding:12px 15px;font-size:13px}.semester-stats{margin-bottom:0}.semester-table{min-width:900px}.annual-table{min-width:1180px}.semester-rating{color:#205d49;white-space:nowrap;background:#eaf6f0;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700;display:inline-block}.semester-detail-table{min-width:720px}.week-controls{background:#fff;border:1px solid #dfe7ee;border-radius:13px;grid-template-columns:minmax(410px,1fr) auto;align-items:center;gap:16px;padding:18px 20px;display:grid;box-shadow:0 4px 18px #132b4610}.week-picker,.week-actions{flex-wrap:wrap;align-items:flex-end;gap:9px;display:flex}.week-actions{justify-content:flex-end;align-items:center}.week-picker label{color:#5f6f82;gap:6px;font-size:12px;font-weight:600;display:grid}.week-picker input,.week-picker button,.secondary-action,.current-week-action,.lock-action,.unlock-action{color:#285579;background:#fff;border:1px solid #d2dce5;border-radius:8px;min-height:40px;padding:9px 12px;font-weight:600}.week-picker button,.secondary-action,.current-week-action,.lock-action,.unlock-action,.week-status{align-items:center;gap:6px;display:inline-flex}.week-picker svg,.week-actions svg{width:16px;height:16px}.week-picker button:disabled,.secondary-action:disabled,.current-week-action:disabled{cursor:not-allowed;opacity:.45}.current-week-action{color:#1f5b88;background:#eef6fb;border:1px solid #7fa7c6;border-radius:8px;min-height:40px;padding:9px 12px;font-weight:700}.lock-action{color:#fff;background:#0d4779;border-color:#0d4779}.unlock-action{color:#8d570c;background:#fff8e9;border-color:#a66a16}.week-status{border-radius:999px;min-height:36px;padding:7px 10px;font-size:12px;font-weight:700}.week-status.open{color:#227151;background:#e9f6ef}.week-status.locked{color:#9a5c0e;background:#fff3dc}.week-range{color:#637388;grid-column:1/-1;margin:0}.week-range small{color:#9a661d;margin-top:6px;display:block}.week-range em{color:#176a4d;background:#e8f6ef;border-radius:999px;margin-left:10px;padding:4px 8px;font-size:11px;font-style:normal;font-weight:700;display:inline-block}.overview-week-controls{margin-bottom:24px}.schedule-settings,.week-setup{background:#fff;border:1px solid #dfe7ee;border-radius:13px;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:18px 20px;display:flex;box-shadow:0 4px 18px #132b4610}.week-setup{box-shadow:none;border:0;border-radius:0;margin:0}.schedule-settings label,.week-setup label{color:#31485f;gap:6px;font-size:12px;font-weight:700;display:grid}.schedule-settings input,.week-setup input{background:#fff;border:1px solid #d2dce5;border-radius:8px;min-height:40px;padding:9px 12px}.schedule-settings span,.week-setup p{color:#6c7b8f;margin:0;font-size:12px}.weekly-stats{margin-bottom:0}.weekly-stats strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.weekly-table{min-width:960px}.rank-change{white-space:nowrap;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:700;display:inline-block}.rank-change.up{color:#147451;background:#e7f6ef}.rank-change.down{color:#b63e3e;background:#faeaea}.rank-change.same{color:#64748b;background:#eef2f6}.wide-modal{width:min(980px,100%)}.detail-score-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px;display:grid}.detail-score-grid>div{background:#f8fafc;border:1px solid #e0e7ee;border-radius:9px;gap:4px;padding:14px;display:grid}.detail-score-grid span{color:#708094;font-size:11px}.detail-score-grid b{font-size:20px}.wide-modal h3{color:#173f67;margin:22px 0 10px;font-size:14px}.student-summary{color:#52657a;background:#f3f7fa;border-radius:8px;margin:0;padding:12px 14px;line-height:1.6}.weekly-detail-records{min-width:760px}@media (width<=900px){.class-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}.week-controls{grid-template-columns:1fr}.week-actions{justify-content:flex-start}.semester-settings{grid-template-columns:repeat(2,minmax(160px,1fr))}.excluded-weeks-field{grid-column:1/-1}.semester-actions-row{flex-direction:column;align-items:flex-start}}@media (width<=560px){.class-grid,.search-select{grid-template-columns:1fr}.pagination{flex-wrap:wrap;justify-content:center}.rank-tabs{overflow-x:auto}.week-picker,.week-actions{align-items:stretch}.week-picker label,.week-picker input,.week-picker button,.week-actions>*{width:100%}.detail-score-grid{grid-template-columns:1fr 1fr}.student-card-actions,.student-card-actions>*,.semester-settings,.semester-actions-row>div,.semester-actions-row button{width:100%}.semester-settings{grid-template-columns:1fr}.excluded-weeks-field{grid-column:auto}body{overflow-x:hidden}.shell{display:block}aside{z-index:9;height:auto;padding:8px;position:sticky;top:0}aside .brand,aside .profile{display:none}aside nav{gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}aside nav button,aside nav button:not(.active){white-space:nowrap;flex:none;justify-content:center;gap:5px;padding:8px 10px;font-size:11px}aside nav button svg{width:15px;height:15px}main{min-width:0}header,section{padding-left:12px;padding-right:12px}header{padding-top:16px;padding-bottom:16px}.cardhead{flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.cardhead>*{max-width:100%}.toolbar,.filters{flex-wrap:wrap;padding:12px}.toolbar .search,.filters>*{width:100%;max-width:none}.entry{padding:16px}.datatools{bottom:12px;left:12px;right:12px}.datatools button,.datatools label{flex:1;justify-content:center;padding:9px 6px;font-size:11px}}
