:root{color:#2c3337;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#ededed;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font:inherit}.loginPage{background:#eef2f5;place-items:center;min-height:100vh;padding:24px;display:grid}.loginBox{background:#fff;border:1px solid #d7dfe5;border-radius:2px;width:360px;padding:28px 30px 30px;box-shadow:0 8px 26px #00000014}.loginBox h1{color:#222;text-align:center;margin:0 0 22px;font-size:22px;font-weight:600;line-height:1.2}.loginBox p{color:#777;text-align:center;margin:0}.loginForm{gap:10px;display:grid}.loginForm label{color:#333;font-size:14px}.loginForm input{border:1px solid #c8d1d8;border-radius:2px;height:36px;padding:0 10px;font-size:14px}.loginForm input:focus{border-color:#0b8fd3;outline:1px solid #0b8fd333}.loginForm button,.topActions button{cursor:pointer;border:0;border-radius:2px}.loginForm button{color:#fff;background:#0b8fd3;height:36px;margin-top:8px;font-size:14px}.loginForm button:disabled{cursor:wait;opacity:.72}.loginError{color:#b42318;background:#fff4f2;border:1px solid #ffd5cf;padding:7px 9px;font-size:13px}.system{color:#30373b;background:#ededed;min-height:100vh}.topBar{color:#fff;background:#0b8fd3;justify-content:space-between;align-items:center;height:88px;padding:0 42px;display:flex}.platformTitle{color:#fff;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:14px;padding:0;font-size:29px;line-height:1.2;display:flex}.logoIcon{background:0 0;border:4px solid #fff;flex:none;width:55px;height:39px;position:relative}.logoIcon:before{content:"";background:#fff;border-radius:50%;width:13px;height:13px;position:absolute;bottom:7px;left:50%;transform:translate(-50%)}.logoIcon:after{content:"";background:#fff;border-radius:18px 18px 6px 6px;width:28px;height:17px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.topActions{align-items:center;gap:18px;display:flex}.searchIcon{background:#ffffff29;border-radius:50%;place-items:center;width:40px;height:40px;font-size:22px;display:grid}.userIcon{background:radial-gradient(circle at 50% 32%,#fff 0 10px,#0000 11px),radial-gradient(circle at 50% 88%,#fff 0 19px,#0000 20px),#beeae0;border-radius:50%;width:40px;height:40px;box-shadow:0 0 0 2px #ffffff73}.topActions button{color:#0b8fd3;background:#edf7f2;min-width:48px;height:30px;padding:0 9px;font-size:13px}.navBar{background:#fff;border-bottom:1px solid #e5e5e5;align-items:center;gap:0;height:72px;padding:0 56px;display:flex;overflow:visible}.navItem{flex:none;align-items:center;height:72px;display:flex;position:relative}.navBar button{color:#222;white-space:nowrap;cursor:pointer;background:0 0;border:0;font-size:18px}.navItem>button{height:72px;padding:0 20px}.navItem:hover>button{background:#ededed}.navBar span{margin-left:5px}.chevron{font-size:18px;line-height:1;display:inline-block;transform:translateY(1px)}.navMenu{z-index:10;background:#fff;border:1px solid #c8c8c8;min-width:235px;max-height:calc(100vh - 92px);padding:8px 0 10px;display:none;position:absolute;top:72px;left:0;overflow-y:auto;box-shadow:0 2px 5px #00000014}.navItem:hover .navMenu{display:grid}.navItem.noMenu:hover>button{background:#fff}.navMenu button{text-align:left;color:#1e2a31;height:34px;padding:0 30px;font-size:16px;line-height:34px}.dashboard{grid-template-columns:clamp(300px,24vw,480px) minmax(0,1fr);align-items:start;gap:6px;padding:20px 24px 32px;display:grid;overflow-x:clip}.leftRail{background:#fff;align-self:start;min-height:104px}.railHeader{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;height:60px;padding:0 28px;font-size:22px;display:flex}.railHeader span{color:#9eb5c4;font-size:24px}.contentGrid{grid-template-columns:minmax(0,.92fr) minmax(0,1.38fr);gap:22px 28px;min-width:0;display:grid}.profileCard,.panel,.modulePage{background:#fff;border:1px solid #e6e6e6;min-width:0}.profileCard{align-items:center;gap:28px;min-height:235px;padding:0 70px 0 12px;display:flex}.avatar{background-color:#eef3f6;background-image:radial-gradient(circle at 50% 32%,#fff 0 38px,#0000 39px),radial-gradient(circle at 50% 88%,#fff 0 70px,#0000 71px),none;background-position:50% 20%;background-repeat:no-repeat;background-size:cover;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #d6e2ea;border-radius:50%;width:156px;height:156px;position:relative;box-shadow:inset 0 0 0 1px #ffffffa6}.avatar:before,.avatar:after{content:none}.profileCard h2,.panel h2{color:#20262a;margin:0;font-size:20px;font-weight:700}.profileCard p{color:#8a8f94;margin:10px 0 0;font-size:14px}.panel header{border-bottom:1px solid #e4e4e4;justify-content:space-between;align-items:center;height:48px;padding:0 20px 0 10px;display:flex}.panel header button{color:#1c86d8;cursor:pointer;background:0 0;border:0;font-size:18px}.resultPanel header{padding-left:0}.resultTabs{align-self:stretch;display:flex}.resultTabs button{color:#20262a;background:#f7f7f7;border:0;border-right:1px solid #ddd;min-width:94px;height:48px;font-size:20px;font-weight:700}.resultTabs button.active{background:#fff;border-top:2px solid #f1b000}.noticePanel{height:235px;overflow:hidden}.noticeList,.courseList,.messageList,.gradeList{margin:0;padding:0;list-style:none}.noticeList{padding:8px 24px 0 20px}.noticeList li,.courseList li,.messageList li,.gradeList li{color:#858b91;border-bottom:1px dashed #c6c6c6;align-items:center;display:flex}.noticeList li{gap:10px;height:38px;font-size:14px}.noticeList li:before{content:"·";color:#333}.noticeList .pinned{color:#ff1c1c}.noticeList b{color:#fff;background:#5abf22;border-radius:2px;margin-left:auto;padding:2px 4px;font-size:10px;line-height:1}.noticeList time{text-align:right;color:#a4a4a4;min-width:110px}.courseList li{min-height:55px;padding:0 4px;font-size:14px}.calendarPanel{overflow:hidden}.calendarScroll{padding-bottom:18px;overflow-x:auto}.calendarScroll::-webkit-scrollbar{height:14px}.calendarScroll::-webkit-scrollbar-thumb{background:#8d8d8d;border-radius:10px}.calendarTable{border-collapse:collapse;text-align:center;width:100%;min-width:860px;font-size:15px}.calendarTable th,.calendarTable td{border:1px solid #d5dfcf;min-width:42px;height:29px}.calendarTable thead th{color:#373d40;background:#edf8e9}.calendarTable .weekend td{color:#ff1f1f;background:#e6ffd0}.messageList,.gradeList{padding:6px 18px 0}.messageList li,.gradeList li{justify-content:space-between;min-height:52px;font-size:14px}.messageList span,.gradeList span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.messageList time,.gradeList strong{color:#4d6479;flex:none;margin-left:18px;font-size:17px;font-weight:500}.dataState{color:#8a3f3f;justify-content:center;font-size:14px}.calendarState{color:#8a3f3f;place-items:center;min-height:150px;font-size:14px;display:grid}.dataStateCell{text-align:center;color:#8a3f3f;height:86px}.moduleDashboard{align-items:start}.railMenu{padding:10px 0;display:grid}.railMenu button{color:#4b555a;text-align:left;cursor:pointer;background:#fff;border:0;border-bottom:1px solid #f0f0f0;min-height:38px;padding:0 24px;font-size:14px}.railMenu button.active,.railMenu button:hover,.navMenu button:hover,.dataTable button:hover,.queryBar button:hover,.pager button:hover{color:#0b8fd3;background:#eef8fd}.modulePage{min-height:620px}.moduleTitle{border-bottom:1px solid #e8e8e8;justify-content:space-between;align-items:center;height:50px;padding:0 16px;display:flex}.moduleTitle h2{color:#26343b;margin:0;font-size:18px}.moduleTitle span{color:#888;font-size:13px}.queryBar{background:#fafafa;border-bottom:1px solid #eee;align-items:end;gap:12px;padding:14px 16px;display:flex}.queryBar label{color:#5f686e;gap:5px;font-size:13px;display:grid}.queryBar input,.queryBar select{background:#fff;border:1px solid #cfd8dc;border-radius:2px;min-width:210px;height:30px;padding:0 8px;font-size:13px}.queryBar button,.dataTable button,.pager button{color:#0b8fd3;cursor:pointer;background:#fff;border:1px solid #b5d8ea;border-radius:2px;height:30px;padding:0 14px;font-size:13px}.tableWrap{padding:16px;overflow-x:auto}.dataTable{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}.dataTable th,.dataTable td{text-align:left;border:1px solid #e1e5e8;height:38px;padding:0 10px}.dataTable th{color:#37474f;background:#f1f6f9;font-weight:600}.dataTable td{color:#59656b}.pager{color:#7a858b;align-items:center;gap:8px;padding:0 16px 18px;font-size:13px;display:flex}.pager strong{color:#fff;background:#0b8fd3;border-radius:2px;place-items:center;min-width:26px;height:26px;font-weight:500;display:grid}.adminPage{color:#263238;background:#eef1f5;grid-template-columns:220px minmax(0,1fr);min-height:100vh;display:grid}.adminSide{color:#dce6f2;background:#17212f;padding:18px 14px}.adminBrand{align-items:center;gap:10px;height:42px;margin-bottom:18px;padding:0 10px;font-size:15px;display:flex}.adminMark{background:#0b8fd3;border-radius:6px;width:26px;height:26px;box-shadow:inset 0 0 0 6px #ffffff38}.adminTabs{gap:6px;display:grid}.adminTabs button{color:#aebdcc;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;height:38px;padding:0 12px;font-size:13px}.adminTabs button:hover,.adminTabs button.active{color:#fff;background:#223145}.adminTabs button.active{box-shadow:inset 3px 0 #0b8fd3}.adminWorkspace{min-width:0;padding:18px 20px 26px}.adminHeader{background:#fff;border:1px solid #dfe5eb;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;min-height:70px;padding:16px 18px;display:flex}.adminHeader h2{color:#1f2a33;margin:0;font-size:18px}.adminHeader p{color:#7a8792;margin:6px 0 0;font-size:12px}.adminActions{flex:none;gap:8px;display:flex}.adminActions button{color:#41515c;cursor:pointer;background:#fff;border:1px solid #cbd8e1;border-radius:5px;height:32px;padding:0 14px;font-size:13px}.adminActions button.primary{color:#fff;background:#0b8fd3;border-color:#0b8fd3}.adminStats{grid-template-columns:repeat(6,minmax(110px,1fr));gap:12px;margin:14px 0;display:grid}.adminStat{background:#fff;border:1px solid #dfe5eb;border-radius:8px;align-content:center;gap:6px;min-height:72px;padding:0 16px;display:grid}.adminStat span{color:#7a8792;font-size:12px}.adminStat strong{color:#1f2a33;font-size:24px;line-height:1}.adminGrid{grid-template-columns:repeat(2,minmax(320px,1fr));gap:14px;display:grid}.adminToolbar{background:#fff;border:1px solid #dfe5eb;border-radius:8px;align-items:center;gap:12px;min-height:58px;margin:14px 0;padding:12px 14px;display:flex}.adminToolbar label{color:#65727d;align-items:center;gap:10px;font-size:13px;display:flex}.adminToolbar select,.adminToolbar input{background:#fbfcfd;border:1px solid #cbd8e1;border-radius:5px;min-width:280px;height:32px;padding:0 10px}.adminToolbar button{color:#41515c;cursor:pointer;background:#fff;border:1px solid #cbd8e1;border-radius:5px;height:32px;padding:0 12px}.adminToolbar span{color:#7a8792;margin-left:auto;font-size:13px}.profileGrid{grid-template-columns:repeat(3,minmax(220px,1fr))}.adminGrid.single{grid-template-columns:1fr;margin-top:14px}.adminField{background:#fff;border:1px solid #dfe5eb;border-radius:8px;gap:6px;padding:14px;display:grid}.adminField.compact{grid-column:1/-1}.adminField span{color:#1f2a33;font-size:13px;font-weight:700}.adminField small{color:#8a97a3;font-size:12px}.adminField input,.adminField textarea{color:#263238;background:#fbfcfd;border:1px solid #cbd8e1;border-radius:5px;width:100%;padding:8px 10px;font:12px/1.5 Microsoft YaHei,PingFang SC,Arial,sans-serif}.adminField input{height:34px}.adminField textarea{resize:vertical;min-height:142px}.adminGrid.single .adminField textarea{white-space:pre;min-height:430px;overflow:auto}.sourceGrid,.recordGrid,.schemaPanel{gap:14px;margin-top:14px;display:grid}.sourceGrid{grid-template-columns:repeat(3,minmax(240px,1fr))}.sourceCard,.recordCard,.schemaPanel>div{background:#fff;border:1px solid #dfe5eb;border-radius:8px;gap:7px;padding:14px;display:grid}.sourceCard span,.recordCard span,.schemaPanel h3{color:#1f2a33;margin:0;font-size:14px;font-weight:700}.sourceCard small,.recordCard small{color:#8a97a3;font-size:12px}.sourceCard input,.recordCard textarea{color:#263238;background:#fbfcfd;border:1px solid #cbd8e1;border-radius:5px;width:100%;font:12px/1.5 Microsoft YaHei,PingFang SC,Arial,sans-serif}.sourceCard input{height:34px;padding:0 10px}.recordGrid{grid-template-columns:repeat(2,minmax(320px,1fr))}.recordCard textarea{resize:vertical;min-height:210px;padding:10px}.recordCard:last-child{grid-column:1/-1}.recordCard:last-child textarea{white-space:pre;min-height:360px;overflow:auto}.schemaPanel{grid-template-columns:repeat(2,minmax(260px,1fr))}.schemaPanel p{color:#65727d;margin:0;font-size:13px;line-height:1.7}.adminPlaceholder{color:#56616a;background:#fff;border:1px solid #dfe5eb;border-radius:8px;margin-top:14px;padding:28px}.adminPlaceholder h3{color:#26343b;margin:0 0 8px;font-size:16px}.adminPlaceholder p{margin:0;font-size:13px}.adminStatus{color:#0b6ea2;background:#eaf7fd;border:1px solid #c5e8f8;border-radius:6px;margin:14px 0 0;padding:10px 12px;font-size:13px}.detailPage{background:#f3f3f3;min-height:100vh}.detailTitle{color:#fff;background:#0b8fd3;justify-content:space-between;align-items:center;height:58px;padding:0 34px;font-size:24px;display:flex}.detailTitle button{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffffb3;border-radius:2px;height:30px;padding:0 12px;display:none}.messageOverview,.queryPage{background:#fff;border:1px solid #ddd;margin:22px 28px}.tabsBar{background:#f3f3f3;border-bottom:1px solid #ddd;align-items:end;height:48px;padding-left:16px;display:flex}.tabsBar button{color:#555;background:0 0;border:1px solid #0000;border-bottom:0;height:40px;padding:0 18px;font-size:14px}.tabsBar button.active{color:#333;background:#fff;border-color:#f1b000 #ddd #ddd;border-top-style:solid;border-top-width:2px;font-weight:700}.subTabs{height:46px}.filterBar{border-bottom:1px solid #e4e4e4;align-items:center;gap:14px;height:72px;padding-left:140px;font-size:13px;display:flex}.filterBar input{border:1px solid #cfd8dc;border-radius:4px;width:320px;height:30px;padding:0 10px;font-size:13px}.wideTable{border-collapse:collapse;table-layout:fixed;width:100%;font-size:14px}.wideTable th,.wideTable td{white-space:nowrap;text-overflow:ellipsis;border:1px solid #e0e0e0;height:34px;padding:0 9px;overflow:hidden}.wideTable th{color:#5f6870;background:#fafafa;border-bottom:2px solid #47a9f5;font-weight:700}.linkCell{color:#2387d7}.queryPage{padding:18px;position:relative}.gradeFilter,.examFilter{background:#fff;border:1px solid #e1e1e1;align-items:center;gap:14px 48px;margin-bottom:16px;padding:18px 28px;display:grid}.gradeFilter{border-bottom:0;grid-template-columns:repeat(3,minmax(220px,1fr));margin-bottom:0}.examFilter{grid-template-columns:repeat(4,minmax(190px,1fr));padding-top:24px;padding-bottom:44px;position:relative}.gradeFilter label,.examFilter label{align-items:center;gap:12px;font-size:15px;display:flex}.gradeFilter select,.gradeFilter input,.examFilter input{background:#fff;border:1px solid #cfd8dc;border-radius:4px;min-width:220px;height:34px;padding:0 10px;font-size:14px}.gradeFilter p{color:#a83333;grid-column:1/3;margin:0;font-size:15px;font-weight:700}.gradeFilter button,.examFilter button,.exportBtn{color:#fff;cursor:pointer;background:#2e7fbe;border:0;border-radius:3px;height:36px;padding:0 14px;font-size:15px}.gradeFilter button{grid-column:3;justify-self:end}.gridTool{color:#1f2a33;cursor:pointer;background:#fff;border:1px solid #cfd8dc;border-radius:4px;width:32px;height:32px;margin:16px 0 6px}.gradeTableScroll{border:1px solid #e0e0e0;overflow-x:auto}.gradeTableScroll .wideTable{border:0}.examFilter button{position:absolute;bottom:8px;right:14px}.exportBtn{color:#333;background:#fff;border:1px solid #cfd8dc;position:absolute;top:18px;right:30px}.gradeQueryTable,.examQueryTable{min-width:2100px}.gradeQueryTable .failingGrade td{color:red}.gradeQueryTable .failingGrade .linkCell{color:#0b8fd3}.emptyCell{text-align:center;color:#333;height:110px}.gridPager{color:#333;border:1px solid #e0e0e0;border-top:0;justify-content:center;align-items:center;gap:10px;height:42px;font-size:14px;display:flex;position:relative}.gridPager b{font-weight:500;position:absolute;right:24px}.gridPager select{min-width:54px;height:26px}.menuQueryPage{grid-column:1/-1}@media (width<=1180px){.dashboard{grid-template-columns:1fr}.leftRail{display:none}}@media (width<=860px){.topBar{gap:14px;height:auto;min-height:78px;padding:16px}.platformTitle{font-size:21px}.topActions{gap:8px}.navBar{gap:16px;padding:0 16px}.navBar button{font-size:16px}.dashboard{padding:14px}.contentGrid{grid-template-columns:1fr}.queryBar{align-items:stretch;display:grid}.queryBar input,.queryBar select{width:100%;min-width:0}.profileCard{min-height:auto;padding:22px}.avatar{width:96px;height:96px}}
