:root{font-family:Microsoft YaHei UI,Microsoft YaHei,system-ui,sans-serif;color:#17352d;background:#eef0ec;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1080px;min-height:100vh;background:#eef0ec}button,input,select{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:266px minmax(0,1fr);min-height:100vh}.sidebar{min-height:100vh;padding:28px 18px 22px;background:#10271f;color:#d5e3dc;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:13px;padding:5px 9px 24px}.brand-mark{display:grid;width:49px;height:49px;place-items:center;border-radius:15px;background:#2f8165;color:#fff;font-size:28px;font-weight:800;box-shadow:inset 0 0 0 1px #61ad91}.brand strong{display:block;color:#fff;font-size:18px;letter-spacing:.01em}.brand small{display:block;color:#93aca1;font-size:12px;margin-top:5px}.rail-rule{height:1px;margin:0 3px 22px;background:#294439}.nav-group{margin:0 0 19px}.nav-group>span{display:block;padding:0 14px 8px;color:#779287;font-size:12px;font-weight:700}.nav-group button{position:relative;width:100%;display:flex;gap:12px;align-items:center;border:0;border-radius:11px;padding:12px 13px;color:#b5c6bf;background:transparent;text-align:left;font-size:15px;font-weight:650}.nav-group button:hover{background:#1b3b30;color:#fff}.nav-group button.active{background:#327e63;color:#fff;box-shadow:0 8px 18px #07150f66}.nav-group button.active:before{content:"";position:absolute;left:-18px;width:3px;height:23px;border-radius:4px;background:#e7ab3d}.nav-group i{width:18px;text-align:center;font-size:20px;font-style:normal}.nav-group em{margin-left:auto;padding:3px 6px;border-radius:6px;background:#e3a539;color:#3b2a08;font-size:10px;font-style:normal}.sidebar-foot{margin-top:auto;border-top:1px solid #294439;padding:18px 10px 0;color:#d6e4dd;font-size:13px;font-weight:700}.sidebar-foot small{display:block;margin:7px 0 0 20px;color:#80998d;font-size:11px;font-weight:400}.online-dot{display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:50%;background:#5fcaac;box-shadow:0 0 0 5px #2d5749}.content{min-width:0}.topbar{height:100px;padding:22px 34px;border-bottom:1px solid #dfe5df;background:#fff;display:flex;align-items:center;justify-content:space-between}.breadcrumb,.eyebrow{color:#768c82;font-size:12px;font-weight:700}.topbar h1{margin:5px 0 0;color:#122b23;font-size:25px;letter-spacing:-.04em}.top-actions{display:flex;align-items:center;gap:11px}.mode-pill,.date-pill{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border:1px solid #dfe7e1;border-radius:10px;color:#5f786c;background:#fff;font-size:12px;font-weight:700}.mode-pill{color:#28755b;background:#eff8f2;border-color:#d3e7da}.user-avatar{width:39px;height:39px;border:0;border-radius:12px;background:#17352d;color:#fff;font-weight:800}.account-menu{position:fixed;z-index:60;top:78px;right:30px;display:none;width:210px;padding:8px;border:1px solid #dce5df;border-radius:13px;background:#fff;box-shadow:0 18px 45px #10271f2e}.account-menu.open{display:grid}.account-menu-identity{display:grid;gap:3px;margin-bottom:6px;padding:10px 11px 12px;border-bottom:1px solid #e5ebe7}.account-menu-identity strong{color:#19372d;font-size:14px}.account-menu-identity span{color:#7b8e85;font-size:11px}.account-menu>button{padding:10px 11px;border:0;border-radius:8px;color:#315448;background:transparent;text-align:left;font-size:13px;font-weight:750}.account-menu>button:hover{background:#eef6f1}.account-menu>button.danger{color:#b8453e}.account-menu>button.danger:hover{background:#fff0ee}.content-body{padding:26px 32px 44px}.hero-strip{min-height:153px;padding:25px 29px;border-radius:18px;background:linear-gradient(116deg,#122c23,#1d4739);color:#fff;display:flex;justify-content:space-between;gap:28px;box-shadow:0 13px 35px #2041371f}.hero-strip>div:first-child{max-width:670px}.hero-strip>div:first-child>span{color:#e1b767;font-size:12px;font-weight:800}.hero-strip h1{margin:8px 0;font-size:28px;letter-spacing:-.045em}.hero-strip p{margin:0;color:#b7c7c0;font-size:13px;line-height:1.65}.hero-stats{display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));align-items:center;border:1px solid #3d6255;border-radius:13px;overflow:hidden;align-self:center}.hero-stats div{min-width:103px;padding:18px 17px;border-left:1px solid #3d6255}.hero-stats div:first-child{border:0}.hero-stats small{display:block;color:#9eb2a8;font-size:11px}.hero-stats b{display:block;margin-top:8px;color:#fff;font-size:25px}.hero-stats em{margin-left:3px;color:#9eb2a8;font-size:11px;font-style:normal}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:17px 0}.stat-card{min-height:116px;padding:18px;border:1px solid #e1e7e2;border-radius:15px;background:#fff;box-shadow:0 6px 18px #1c3c3010}.stat-card span,.stat-card small{display:block;color:#778c82;font-size:12px}.stat-card strong{display:block;margin:10px 0 7px;font-size:25px;letter-spacing:-.04em}.stat-card.forest strong{color:#20745b}.stat-card.amber strong{color:#a5660e}.stat-card.danger strong{color:#c74640}.stat-card.slate strong{color:#486b7a}.overview-grid{display:grid;grid-template-columns:minmax(0,1.48fr) minmax(300px,.85fr);gap:17px}.panel{border:1px solid #e0e7e1;border-radius:17px;background:#fff;box-shadow:0 8px 24px #1c3c3010}.workflow-card,.cross-card,.teachers-panel,.publish-panel,.versions-panel,.settings-panel{padding:23px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.panel-head h2{margin:4px 0 0;color:#17352d;font-size:20px;letter-spacing:-.03em}.panel-head p{margin:7px 0 0;color:#788e84;font-size:13px;line-height:1.6}.primary,.secondary,.text-button{border-radius:10px;font-size:13px;font-weight:800;white-space:nowrap}.primary{border:1px solid #2c7d61;padding:11px 15px;background:#2f8064;color:#fff;box-shadow:0 7px 16px #28735628}.primary:hover{background:#246c53}.secondary{border:1px solid #b8d3c5;padding:10px 14px;background:#fff;color:#287159}.secondary:hover{background:#f1f8f3}.text-button{padding:5px 0;border:0;color:#27725a;background:transparent}.workflow-list{display:grid;gap:16px;margin:23px 0 0;padding:0;list-style:none}.workflow-list li{display:flex;align-items:center;gap:13px}.workflow-list b{display:grid;flex:none;width:25px;height:25px;place-items:center;border-radius:50%;background:#e4f1ea;color:#29765b;font-size:12px}.workflow-list strong,.workflow-list span{display:block}.workflow-list strong{color:#254137;font-size:14px}.workflow-list span{margin-top:4px;color:#7b9087;font-size:12px}.teacher-mini-list{margin-top:19px;display:grid;gap:10px}.teacher-mini{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #e5ece6;border-radius:11px}.avatar{display:grid;width:31px;height:31px;place-items:center;border-radius:10px;background:#dfeee6;color:#257158;font-weight:800}.teacher-mini strong,.teacher-mini small{display:block}.teacher-mini small{margin-top:4px;color:#778d83;font-size:11px}.cross-tag{display:inline-block;margin-left:auto;padding:3px 7px;border-radius:7px;background:#fff0d7;color:#966215;font-size:10px;font-style:normal;font-weight:800}.publish-panel{min-height:440px}.grade-publish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-top:22px}.grade-publish-card{position:relative;padding:22px;border:1px solid #e2e9e3;border-radius:15px;background:#fdfefd}.grade-icon{display:grid;width:38px;height:38px;place-items:center;border-radius:11px;background:#e4f0e8;color:#26755a;font-size:19px;font-weight:800}.grade-publish-card h3{margin:16px 0 6px;font-size:21px}.grade-publish-card p,.grade-publish-card small{display:block;color:#6c8478;font-size:12px}.grade-publish-card small{margin:19px 0;color:#9aa9a1}.grade-publish-card .status{position:absolute;top:25px;right:20px}.status{display:inline-block;padding:4px 8px;border-radius:7px;font-size:11px;font-weight:800}.status.published{background:#e2f2e9;color:#28745a}.status.draft{background:#fff1d8;color:#9d6410}.info-strip{display:flex;justify-content:space-between;gap:18px;margin:20px 0 15px;padding:12px 14px;border:1px solid #d9e9de;border-radius:11px;color:#527064;background:#f2f8f3;font-size:12px}.info-strip b{color:#27745a}.data-table{overflow:hidden;border:1px solid #e2e8e3;border-radius:12px}.table-row{display:grid;grid-template-columns:1.1fr 1.35fr 1fr 1fr .9fr 62px;align-items:center;gap:12px;min-height:54px;padding:0 15px;border-top:1px solid #e8ede9;color:#526c60;font-size:13px}.table-row:first-child{border-top:0}.table-row strong{color:#213d33}.table-head{min-height:43px;color:#70877c;background:#f5f8f6;font-size:12px;font-weight:800}.number{font-variant-numeric:tabular-nums}.account-state{color:#28745a;font-size:12px}.table-row .cross-tag{margin-left:7px;vertical-align:middle}.table-action{border:1px solid #c8ddd2;border-radius:8px;padding:6px 9px;color:#287159;background:#f8fbf9;font-weight:800}.table-action:hover{background:#eaf5ee}.teacher-head-actions{display:flex;gap:9px}.teacher-editor-dialog{width:min(620px,calc(100vw - 32px))}.teacher-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:20px}.teacher-form-grid label>span,.teacher-form-grid legend{display:block;margin-bottom:7px;color:#536d62;font-size:12px;font-weight:800}.teacher-form-grid input[type=text],.teacher-form-grid input:not([type]){width:100%}.teacher-form-grid label input{width:100%;padding:11px 12px;border:1px solid #ccd9d1;border-radius:9px;outline:none}.teacher-form-grid label input:focus{border-color:#2f8064;box-shadow:0 0 0 3px #2f80641a}.teacher-form-grid .wide{grid-column:1 / -1}.teacher-form-grid fieldset{margin:0;padding:0;border:0}.grade-checks{display:flex;gap:10px}.grade-checks label{display:flex;align-items:center;justify-content:center;gap:7px;min-width:92px;padding:10px 14px;border:1px solid #d5e1da;border-radius:9px;color:#587065;background:#f8faf8;cursor:pointer}.grade-checks label.checked{border-color:#318264;color:#246c53;background:#eaf5ee;font-weight:800}.grade-checks input{width:auto!important}.course-card[draggable=true]{cursor:grab}.course-card[draggable=true]:active{cursor:grabbing}.schedule-page{display:grid;gap:15px}.scheduler-top{display:flex;align-items:center;gap:14px;padding:13px 15px}.grade-tabs{display:flex;padding:4px;border-radius:11px;background:#edf3ef}.grade-tabs button{padding:8px 13px;border:0;border-radius:8px;background:transparent;color:#698176;font-size:13px;font-weight:800}.grade-tabs button.active{background:#2b7a60;color:#fff;box-shadow:0 4px 11px #23624730}.top-summary{min-width:210px;margin-right:auto}.top-summary span,.top-summary small{display:block;color:#7e9188;font-size:11px}.top-summary b{display:block;margin:2px 0;color:#28443a;font-size:14px}.scheduler-layout{display:grid;grid-template-columns:254px minmax(0,1fr) 235px;gap:14px;align-items:start}.task-pool,.inspector{padding:16px}.task-pool .panel-head h2,.inspector h2{font-size:17px}.count-chip{padding:4px 8px;border-radius:7px;background:#e9f2ec;color:#2c765d;font-size:11px;font-weight:800}.muted{color:#7d9288;font-size:12px;line-height:1.55}.task-list{display:grid;gap:8px;margin-top:13px}.task-card{position:relative;display:block;width:100%;padding:11px;border:1px solid #dfe8e1;border-radius:10px;background:#fff;color:#355449;text-align:left}.task-card:hover,.task-card.selected{border-color:#4e9d7d;background:#f0f8f3;box-shadow:0 5px 12px #27745a12}.task-card.walk-task{border-left:4px solid #74857c}.task-card span,.task-card small{display:block}.task-subject{color:#1c5743;font-size:15px;font-weight:800}.task-class{margin:4px 0 5px;color:#4b6d60;font-size:12px}.task-card small{color:#8b9a92;font-size:11px}.task-card em{position:absolute;right:9px;top:10px;color:#69786f;font-size:10px;font-style:normal}.inspector p{color:#72887d;font-size:12px;line-height:1.5}.rule-status{margin-top:12px;padding:10px;border-radius:9px;background:#f4f7f5}.rule-status strong,.rule-status span{display:block}.rule-status strong{color:#36564a;font-size:12px}.rule-status span{margin-top:5px;color:#70857b;font-size:11px;line-height:1.45}.cross-preview{margin-top:16px;padding-top:14px;border-top:1px solid #e4ebe5}.cross-preview h3{margin:0 0 7px;font-size:13px}.cross-preview span,.cross-preview small{display:block}.cross-preview span{color:#2d765c;font-size:12px;font-weight:800}.cross-preview small{margin-top:8px;color:#87978f;font-size:11px;line-height:1.5}.empty-inspector{padding:42px 0;color:#778b82;text-align:center}.empty-inspector b,.empty-inspector span{display:block}.empty-inspector span{margin-top:8px;font-size:12px;line-height:1.5}.schedule-shell{min-width:0;padding:13px;overflow:auto;border:1px solid #dfe7e1;border-radius:17px;background:#fff;box-shadow:0 8px 24px #1c3c3010}.grid-caption{display:flex;align-items:center;gap:8px;padding:0 3px 11px;color:#6d8478;font-size:11px}.grid-caption b{color:#2a5948}.caption-sep{margin-right:auto}.legend{padding:3px 6px;border-radius:5px;font-size:10px}.legend.normal{color:#247057;background:#e5f2e9}.legend.walk{color:#62726a;background:#edf0ee}.schedule-grid{display:grid;min-width:1040px;grid-template-columns:78px repeat(11,minmax(80px,1fr));grid-template-rows:33px 37px repeat(13,59px);border-top:1px solid #dfe6e1;border-left:1px solid #e4eae6}.corner-cell,.week-band,.day-cell,.period-cell,.schedule-slot{border-right:1px solid #e4eae6;border-bottom:1px solid #e4eae6}.corner-cell{grid-column:1;grid-row:1 / span 2;display:grid;place-items:center;background:#f5f8f6;color:#5f786c;font-size:12px;font-weight:800}.week-band{display:flex;align-items:center;gap:7px;padding:0 11px;color:#27745a;background:#edf5ef;font-size:13px;font-weight:800}.week-band.rear{background:#f0f3ed;color:#536f63}.week-band small{color:#82958b;font-size:10px;font-weight:600}.day-cell{grid-row:2;display:grid;place-items:center;color:#536d61;background:#f9fbfa;font-size:12px;font-weight:800}.rear-day{background:#f6f8f5}.period-cell{display:grid;place-items:center;color:#456156;background:#fbfcfb;font-size:12px;font-weight:800}.schedule-slot{position:relative;padding:5px;background:#fff;transition:background .15s,box-shadow .15s}.schedule-slot.drop-ready{background:#f2fbf5;box-shadow:inset 0 0 0 1px #91c9a9}.schedule-slot.drop-blocked{background:#fff2f0}.schedule-slot.disabled{background:repeating-linear-gradient(135deg,#f2f4f2,#f2f4f2 5px,#edf0ed 5px,#edf0ed 10px)}.slot-mark,.no-slot{display:grid;height:100%;place-items:center;color:#b1beb7;font-size:12px}.drop-blocked .slot-mark{color:#cf675d;font-size:10px}.no-slot{color:#a4aea8}.course-card{width:100%;height:100%;min-height:46px;padding:4px;border:1px solid #74ad93;border-radius:8px;background:#e8f4ec;color:#24674f;text-align:center;overflow:hidden}.course-card:hover{box-shadow:0 0 0 2px #bdddc9}.course-card b,.course-card span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.course-card b{font-size:12px}.course-card span{margin-top:3px;color:#5c8d79;font-size:10px}.course-card em{display:inline-block;margin-top:3px;padding:1px 4px;border-radius:3px;color:#62726a;background:#fff;font-size:9px;font-style:normal}.course-card.walk{border-color:#8a9690;background:#edf0ee;color:#53635b}.settings-form{max-width:720px;display:grid;gap:15px;margin-top:25px}.settings-form label{display:grid;gap:7px;color:#506b5f;font-size:12px;font-weight:800}.settings-form select,.settings-form input{width:100%;min-height:43px;padding:0 12px;border:1px solid #d7e1db;border-radius:9px;outline-color:#3d8d6f;color:#29453a;background:#fff}.settings-form input:disabled{color:#9aaba2;background:#f2f5f3}.endpoint-contract{display:grid;grid-template-columns:auto repeat(2,1fr);gap:8px;align-items:center;padding:14px;border-radius:10px;background:#f3f7f4;color:#5e766b;font-size:12px}.endpoint-contract code{color:#477464;font-family:Consolas,monospace;font-size:11px}.loading-state,.error-state{min-height:360px;display:grid;place-content:center;gap:12px;border:1px solid #dfe7e1;border-radius:17px;background:#fff;color:#658076;text-align:center}.error-state b{color:#bd4b45}.toast{position:fixed;z-index:20;right:28px;bottom:26px;max-width:430px;padding:12px 16px;border-radius:10px;background:#17352d;color:#fff;box-shadow:0 15px 35px #0d241a40;font-size:13px;font-weight:700}.dialog-backdrop{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:25px;background:#0c2119aa}.dialog{position:relative;width:min(650px,100%);padding:27px;border-radius:17px;background:#fff;box-shadow:0 28px 70px #07150f61}.dialog h2{margin:6px 0;color:#17352d}.dialog>p{color:#71877d;font-size:13px;line-height:1.65}.dialog-close{position:absolute;top:14px;right:16px;border:0;background:none;color:#71857c;font-size:26px}.upload-zone{display:grid;gap:5px;margin-top:18px;padding:24px;border:1px dashed #87b6a1;border-radius:12px;background:#f5faf7;text-align:center;color:#2c765c;cursor:pointer}.upload-zone input{display:none}.upload-zone span{color:#81968b;font-size:12px}.form-error{margin-top:12px;padding:10px;border-radius:8px;background:#fff0ee;color:#be4c45;font-size:12px}.preview{margin-top:16px}.preview>b{color:#2d7059;font-size:13px}.preview-table{display:grid;grid-template-columns:1fr 1fr 1.25fr;gap:1px;margin-top:8px;overflow:hidden;border:1px solid #e0e8e2;border-radius:8px;background:#e0e8e2}.preview-table span{padding:8px 9px;background:#fff;color:#607a6f;font-size:12px}.preview-table span:nth-child(-n+3){background:#f3f7f4;color:#547065;font-weight:800}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.primary:disabled{opacity:.55;cursor:not-allowed}@media (max-width: 1250px){.app-shell{grid-template-columns:230px minmax(0,1fr)}.sidebar{padding-inline:13px}.scheduler-layout{grid-template-columns:225px minmax(0,1fr)}.inspector{display:none}.hero-stats div{min-width:86px;padding-inline:12px}.content-body{padding-inline:21px}}.primary.compact{min-height:38px;padding-block:8px}.import-flow{display:flex;align-items:center;gap:9px;margin:22px 0 0;padding:12px 14px;border:1px solid #e0e9e3;border-radius:11px;color:#668075;background:#f4f8f5;font-size:12px}.import-flow span{padding:5px 8px;border-radius:6px;background:#e1f0e6;color:#28735a;font-weight:800}.import-flow b{color:#9aab9f;font-size:11px}.import-flow b:after{content:"→";margin-left:9px;color:#a7b6ad}.import-flow b:last-child:after{display:none}.grade-card-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.master-import-dialog{width:min(780px,100%)}.master-preview{margin-top:16px}.preview-metrics{display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;border:1px solid #dfe8e2;border-radius:10px}.preview-metrics div{padding:11px 13px;border-left:1px solid #dfe8e2}.preview-metrics div:first-child{border-left:0}.preview-metrics small,.preview-metrics b{display:block}.preview-metrics small{color:#7f9289;font-size:10px}.preview-metrics b{margin-top:4px;color:#27715a;font-size:14px}.import-warning{margin:10px 0 0;padding:9px 10px;border-radius:8px;color:#8b5b13;background:#fff5e3;font-size:11px}.schedule-preview-table{grid-template-columns:.75fr 1.2fr .75fr 1fr 1fr;max-height:254px;overflow:auto}.schedule-preview-table span:nth-child(-n+5){background:#f3f7f4;color:#547065;font-weight:800}.scheduler-console{display:flex;align-items:end;gap:11px;padding:14px}.scheduler-console .grade-tabs{align-self:center}.scheduler-field{display:grid;min-width:145px;gap:5px;color:#6d8479;font-size:10px;font-weight:800}.scheduler-field input,.scheduler-field select,.import-grade-select select{height:38px;padding:0 10px;border:1px solid #d7e2db;border-radius:8px;outline-color:#3e8e70;color:#28463a;background:#fff}.scheduler-field.task-select{min-width:205px}.scheduler-check{flex:1;min-width:210px;padding:8px 11px;border-radius:9px;background:#f0f6f2}.scheduler-check b,.scheduler-check span{display:block}.scheduler-check b{color:#2c6451;font-size:12px}.scheduler-check span{margin-top:4px;color:#72877d;font-size:10.5px;line-height:1.4}.drag-course{min-height:38px;padding:0 11px;border:1px dashed #5a9d7f;border-radius:8px;color:#28735a;background:#e8f4ec;font-size:11px;font-weight:800}.drag-course:active{cursor:grabbing}.drop-replace{background:#eff9f2;box-shadow:inset 0 0 0 2px #4aab75}.drop-hint{position:absolute;z-index:2;left:4px;right:4px;bottom:4px;padding:3px;border-radius:4px;color:#fff;text-align:center;font-size:9px;font-weight:800}.drop-hint.replace{background:#2f8b63}.drop-hint.blocked{background:#c64c45}.empty-query{padding:80px 20px;color:#74897f;text-align:center}.import-grade-select{display:grid;grid-template-columns:80px 1fr;align-items:center;gap:10px;margin-top:15px;color:#517064;font-size:12px;font-weight:800}.import-grade-select select{width:170px}.schedule-shell{padding:9px;border-radius:15px}.grid-caption{gap:7px;padding:0 2px 8px;font-size:10px}.legend{padding:2px 5px;font-size:9px}.schedule-grid{min-width:890px;grid-template-columns:64px repeat(11,minmax(62px,1fr));grid-template-rows:28px 30px repeat(13,46px)}.corner-cell,.period-cell{font-size:11px}.week-band{gap:6px;padding:0 8px;font-size:12px}.week-band small{font-size:9px}.day-cell{font-size:11px}.schedule-slot{padding:3px}.slot-mark,.no-slot{font-size:10px}.drop-blocked .slot-mark{font-size:9px}.course-card{min-height:38px;padding:3px 2px;border-radius:7px}.course-card b{font-size:11px;line-height:15px}.course-card span{display:flex;align-items:center;justify-content:center;gap:3px;margin-top:0;font-size:9px;line-height:13px}.course-card em{display:inline;flex:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;font-size:9px}.course-tone-red{color:#9e403a;background:#fff0ee;border-color:#efc3bf}.course-tone-blue{color:#32689e;background:#edf4ff;border-color:#bdd4f1}.course-tone-green{color:#367454;background:#edf8f0;border-color:#bfdfc8}.course-tone-violet{color:#67518e;background:#f2effb;border-color:#d5cbed}.course-tone-amber{color:#95611b;background:#fff6e5;border-color:#ead19b}.course-tone-teal{color:#256f6c;background:#e8f7f5;border-color:#b8ded9}.course-tone-clay{color:#96533b;background:#fff0ea;border-color:#ecc7b9}.course-tone-sand{color:#89652d;background:#fbf4e8;border-color:#e7d2ab}.course-tone-sky{color:#32748d;background:#e9f7fc;border-color:#badce8}.course-tone-lime{color:#5f7a35;background:#f2f8e7;border-color:#cfe1aa}.course-tone-rose{color:#96516f;background:#fdf0f5;border-color:#e9c4d4}.course-tone-neutral{color:#586963;background:#f1f4f2;border-color:#ced8d2}.course-grade-1{color:#245c42;background:#e8f2eb;border-color:#bad7c4}.course-grade-2{color:#795018;background:#fbf0dd;border-color:#e4c995}.course-grade-3{color:#554e83;background:#eeedf7;border-color:#cec9e5}.course-card.course-tone-red span,.course-card.course-tone-blue span,.course-card.course-tone-green span,.course-card.course-tone-violet span,.course-card.course-tone-amber span,.course-card.course-tone-teal span,.course-card.course-tone-clay span,.course-card.course-tone-sand span,.course-card.course-tone-sky span,.course-card.course-tone-lime span,.course-card.course-tone-rose span,.course-card.course-tone-neutral span,.course-card.course-grade-1 span,.course-card.course-grade-2 span,.course-card.course-grade-3 span{color:currentColor;opacity:.76}.course-card small{display:block;max-width:100%;overflow:hidden;color:currentColor;font-size:8px;font-weight:800;line-height:10px;text-overflow:ellipsis;white-space:nowrap;opacity:.9}.course-card.conflict{color:#a63631;background:#fff0ee;border-color:#df625a}.course-card.conflict b{margin-top:8px}.course-card.conflict small{position:absolute;top:0;left:0;right:0;height:11px;color:#fff;background:#cf514a;font-size:7px;line-height:11px}.legend.grade-1{color:#245c42;background:#e8f2eb}.legend.grade-2{color:#795018;background:#fbf0dd}.legend.grade-3{color:#554e83;background:#eeedf7}.scheduler-check.has-conflict{color:#a23f38;background:#fff0ee}.scheduler-check.has-conflict b,.scheduler-check.has-conflict span{color:#a23f38}.stat-card.clickable{width:100%;border:1px solid #e1e7e2;cursor:pointer;text-align:left}.stat-card.clickable:hover{border-color:#e59892;box-shadow:0 9px 22px #b84e461b;transform:translateY(-1px)}.stat-card.clickable:focus-visible{outline:3px solid #f1c5c1;outline-offset:2px}.query-export{min-height:38px;align-self:end}.grade-publish-card.blocked{border-color:#edc4c0;background:snow}.publish-check{display:grid;gap:3px;margin:16px 0;padding:10px 11px;border-radius:9px;font-size:11px}.publish-check b,.publish-check span{display:block}.publish-check.passed{color:#256b50;background:#edf7f0}.publish-check.has-blocker{color:#a53f39;background:#fff0ee}.publish-check span{opacity:.78}.danger-outline{min-height:36px;padding:0 12px;border:1px solid #d96b64;border-radius:9px;color:#a83e38;background:#fff;font-weight:800}.grade-card-actions{flex-wrap:wrap;justify-content:flex-start}.grade-card-actions .primary,.grade-card-actions>:last-child{margin-left:auto}.clear-grade-button{border-color:#efb2ad;color:#bc433c;background:#fff8f7}.account-panel{padding:23px;min-height:520px}.account-notice{display:flex;gap:16px;align-items:center;margin:20px 0 16px;padding:13px 15px;border-radius:11px;background:#f2f7f3;color:#557267;font-size:12px}.account-notice b{color:#246d54}.staff-account-table .table-row{grid-template-columns:1fr 1.25fr 1fr 1.15fr 1.35fr}.staff-dialog{width:min(560px,100%)}.dialog-field{display:grid;gap:7px;margin-top:15px;color:#526a60;font-size:12px;font-weight:800}.dialog-field input{height:43px;padding:0 12px;border:1px solid #d5e0d8;border-radius:9px;outline:none}.dialog-field input:focus{border-color:#398568;box-shadow:0 0 0 3px #2f806414}.grade-checks{display:flex;gap:10px;margin:16px 0 0;padding:12px 14px;border:1px solid #dfe7e1;border-radius:10px}.grade-checks legend{padding:0 5px;color:#536e62;font-size:12px;font-weight:800}.grade-checks label{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:8px;background:#f2f7f3;color:#2f6f58;font-size:12px;font-weight:800}.default-password-note{display:flex;justify-content:space-between;margin-top:14px;padding:11px 13px;border-radius:9px;background:#fff7e8;color:#9b6716;font-size:12px}.conflict-center{margin-top:12px;padding:16px;border-color:#ecc8c4;background:snow}.conflict-center-head{display:flex;justify-content:space-between;gap:20px}.conflict-center-head h2{margin:3px 0 2px;color:#873b36;font-size:18px}.conflict-center-head p{margin:0;color:#956e69;font-size:11px}.icon-button{width:32px;height:32px;border:1px solid #e3d8d6;border-radius:8px;color:#84645f;background:#fff;font-size:20px}.conflict-focus{display:grid;grid-template-columns:180px 1fr auto;align-items:center;gap:14px;margin-top:13px;padding:12px;border:1px solid #efcbc7;border-radius:11px;background:#fff2f0}.conflict-focus>div:first-child strong,.conflict-focus>div:first-child span{display:block}.conflict-focus>div:first-child strong{color:#8f342f}.conflict-focus>div:first-child span{margin-top:3px;color:#9d625d;font-size:11px}.conflict-courses{display:flex;flex-wrap:wrap;gap:6px}.conflict-courses span{display:grid;gap:2px;padding:6px 9px;border-radius:7px;color:#8f4039;background:#fff;font-size:10px}.conflict-nav{display:flex;align-items:center;gap:7px}.conflict-nav button,.conflict-list button{border:1px solid #e6d9d6;border-radius:7px;color:#76524e;background:#fff}.conflict-nav button{min-height:30px;padding:0 8px}.conflict-nav button:disabled{opacity:.4}.conflict-nav b{min-width:48px;color:#9d4a43;text-align:center;font-size:11px}.conflict-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;max-height:136px;margin-top:10px;overflow:auto}.conflict-list button{display:grid;grid-template-columns:24px 1fr;gap:7px;align-items:center;padding:7px;text-align:left}.conflict-list button.active{border-color:#d96760;background:#fff0ee;box-shadow:0 0 0 2px #f5d5d1}.conflict-list button>span{display:grid;width:22px;height:22px;place-items:center;border-radius:6px;color:#fff;background:#c9564f;font-size:10px;font-weight:800}.conflict-list button b,.conflict-list button small,.conflict-list button em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conflict-list button b{color:#653d39;font-size:11px}.conflict-list button small{color:#9a7772;font-size:9px}.conflict-list button em{grid-column:1 / -1;color:#a24b44;font-size:9px;font-style:normal}.scheduler-check.actionable{border:0;text-align:left;cursor:pointer}.scheduler-check.actionable:hover{box-shadow:inset 0 0 0 1px #df8a83}.density-switch{display:flex;padding:2px;border-radius:7px;background:#edf2ee}.density-switch button{padding:3px 7px;border:0;border-radius:5px;color:#72857c;background:transparent;font-size:9px;font-weight:800}.density-switch button.active{color:#245e48;background:#fff;box-shadow:0 1px 4px #183a2e18}.schedule-grid.density-compact{min-width:840px;grid-template-columns:60px repeat(11,minmax(58px,1fr));grid-template-rows:25px 27px repeat(13,40px)}.schedule-grid.density-compact .schedule-slot{padding:2px}.schedule-grid.density-compact .course-card{min-height:34px;padding:2px 1px}.schedule-grid.density-compact .course-card b{font-size:10px;line-height:13px}.schedule-grid.density-compact .course-card span{font-size:8px;line-height:11px}.schedule-grid.density-standard{grid-template-rows:30px 32px repeat(13,52px)}.course-detail-dialog{width:min(560px,100%)}.course-detail-list{display:grid;gap:8px;margin-top:17px}.course-detail-list article{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 13px;border:1px solid #dce6df;border-radius:10px;background:#f7faf8}.course-detail-list article.conflict{border-color:#e08a84;background:#fff1ef}.course-detail-list article b{color:#24483a}.course-detail-list article span,.course-detail-list article small{color:#6e8479;font-size:11px}.course-detail-dialog>p{margin:6px 0 0;color:#70857b;font-size:12px}.course-detail-copy{display:grid;gap:4px;min-width:0}.course-delete-button{flex:0 0 auto;border:1px solid #e2aaa5;border-radius:8px;padding:7px 10px;color:#b83f36;background:#fff;font-size:12px;font-weight:800}.course-delete-button:hover{border-color:#cf665d;color:#fff;background:#c94f45}.teacher-compare-page{display:grid;gap:12px}.compare-console{display:grid;grid-template-columns:minmax(280px,1fr) 160px 160px 160px minmax(200px,.7fr);gap:12px;align-items:end;padding:16px}.compare-console h2{margin:3px 0;color:#193d30;font-size:18px}.compare-console p{margin:0;color:#758a80;font-size:11px}.overlap-summary{display:grid;gap:3px;padding:9px 11px;border-radius:9px;color:#2e6d55;background:#edf7f0;font-size:10px}.overlap-summary b{font-size:12px}.overlap-summary.has-overlap{color:#a43f39;background:#fff0ee}.overlap-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:11px}.overlap-list button{display:grid;gap:3px;padding:8px 10px;border:1px solid #e6bab6;border-radius:8px;color:#9b3f39;background:#fff3f1;text-align:left}.overlap-list button span{overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.compare-a-card{color:#246346;background:#e7f4eb;border-color:#77ad8d}.compare-b-card{color:#815b18;background:#fff4d9;border-color:#d8b96c}.compare-conflict-card,.course-card.compare-conflict-card.conflict{color:#9f332e;background:#ffe8e5;border-color:#d8514a}.legend.compare-a{color:#246346;background:#e7f4eb}.legend.compare-b{color:#815b18;background:#fff4d9}.legend.compare-conflict{color:#9f332e;background:#ffe8e5}.filter-bar{display:flex;align-items:end;gap:12px;margin:18px 0 13px;padding:10px;border-radius:11px;background:#f3f7f4}.filter-bar label{display:grid;gap:4px;color:#70877c;font-size:10px;font-weight:800}.filter-bar input,.filter-bar select{min-width:160px;height:36px;padding:0 10px;border:1px solid #d6e1da;border-radius:8px;color:#294b3d;background:#fff}.inline-search{margin-left:auto}.result-count{color:#6f8479;font-size:11px;font-weight:700}.section-title{margin:15px 0 9px;color:#315c4c;font-size:14px}.table-empty{padding:28px;color:#82958b;text-align:center;font-size:12px}.pending-teachers{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:18px;padding:16px;border:1px dashed #ddc38d;border-radius:12px;background:#fffaf0}.pending-teachers h3{margin:0;color:#76531c;font-size:14px}.pending-teachers p{margin:4px 0 0;color:#9a7d4d;font-size:11px}.pending-chip-list{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:7px;max-height:110px;overflow:auto}.pending-chip-list button{display:flex;align-items:center;gap:4px;padding:7px 9px;border:1px solid #ead9b5;border-radius:7px;color:#8c6d39;background:#fff;font-size:10px;text-align:left;cursor:pointer}.pending-chip-list button:hover{border-color:#c99f4f;background:#fff4d9;transform:translateY(-1px)}.pending-chip-list b{margin-right:2px;color:#60471f}.pending-chip-list em{margin-left:4px;color:#a16d13;font-style:normal;font-weight:800}.pending-actions{display:flex;align-items:center;gap:8px}.pending-download{border:1px solid #d5b674;border-radius:8px;padding:7px 10px;color:#805817;background:#fff;font-size:11px;font-weight:800}.pending-download:hover{border-color:#b9872c;background:#fff3d6}.teacher-batch-dialog{width:min(720px,100%)}.teacher-batch-preview{grid-template-columns:1fr 1fr 1.25fr 1fr;max-height:250px;overflow:auto}.teacher-batch-preview span:nth-child(-n+4){background:#f3f7f4;color:#547065;font-weight:800}.version-row{grid-template-columns:.6fr 1.55fr .7fr 1.25fr 1.1fr}.version-row span small{display:block;margin-top:3px;color:#93a198;font-size:9px}.row-actions{display:flex;gap:6px}.row-actions button{min-height:30px;padding:0 8px;border:1px solid #cddbd2;border-radius:7px;color:#2f7159;background:#fff;font-size:10px;font-weight:800}.row-actions button:disabled{color:#9aa8a0;background:#f3f5f3;cursor:not-allowed}.version-detail-dialog dl{display:grid;gap:1px;margin-top:17px;overflow:hidden;border:1px solid #dfe7e2;border-radius:10px;background:#dfe7e2}.version-detail-dialog dl div{display:grid;grid-template-columns:100px 1fr;background:#fff}.version-detail-dialog dt,.version-detail-dialog dd{margin:0;padding:10px 12px}.version-detail-dialog dt{color:#71857b;background:#f5f8f6;font-size:11px;font-weight:800}.version-detail-dialog dd{color:#294b3d;font-size:12px}@media (max-width: 1450px){.scheduler-console{flex-wrap:wrap}.scheduler-check{min-width:260px}.compare-console{grid-template-columns:1fr repeat(3,150px)}.compare-console>div:first-child,.overlap-summary{grid-column:1 / -1}.conflict-list,.overlap-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.cloud-login{min-height:100vh;display:grid;grid-template-columns:48% 52%;background:#f3f5f1;color:#15382d}.cloud-login>section{padding:48px 58px;display:flex;flex-direction:column;color:#fff;background:radial-gradient(circle at 18% 18%,rgba(86,181,139,.3),transparent 35%),linear-gradient(145deg,#0d2e24,#174333)}.cloud-login-brand{display:flex;align-items:center;gap:14px}.cloud-login-brand>span{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:#2b8a69;font-size:29px;font-weight:900}.cloud-login-brand div{display:grid;gap:3px}.cloud-login-brand b{font-size:19px}.cloud-login-brand small{color:#9fc0b4}.cloud-login-copy{margin:auto 0}.cloud-login-copy em{font-style:normal;color:#77d1ae;font-size:13px;font-weight:800}.cloud-login-copy h1{font-size:42px;line-height:1.22;margin:20px 0}.cloud-login-copy p{color:#b6cec5;font-size:16px}.cloud-login>form{width:430px;align-self:center;justify-self:center;background:#fff;padding:36px;border-radius:22px;border:1px solid #dfe6e0;box-shadow:0 25px 65px #1c372b1c}.cloud-login form h2{font-size:28px;margin:20px 0 7px}.cloud-login form>p{color:#788a82;margin:0 0 24px}.cloud-login form label{display:grid;gap:8px;margin:15px 0;font-size:13px;font-weight:800;color:#526a60}.cloud-login form input{height:47px;border:1px solid #d7e0da;border-radius:11px;padding:0 13px;outline:none}.cloud-login form input:focus{border-color:#2b8768;box-shadow:0 0 0 3px #2b87681a}.cloud-login form .primary{width:100%;height:48px;margin-top:10px}.cloud-login .form-error{padding:10px 12px;border-radius:9px;background:#fff0ee;color:#b34239;font-size:12px}
