*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;background:#f7f5f1;color:#263439}.layout,.sidebar{min-height:100vh}.sidebar{background:#26383c;display:flex;flex-direction:column}.brand{height:108px;display:flex;align-items:center;gap:12px;padding:0 22px;color:#fff;font-family:Songti SC,STSong,serif;font-size:19px;letter-spacing:1px;font-weight:500;white-space:nowrap}.brand-logo{width:48px;height:48px;-o-object-fit:contain;object-fit:contain;flex:0 0 48px}.brand small{display:block;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;font-size:8px;color:#b5c0bd;letter-spacing:2px;margin-top:8px}.side-caption{color:#849997;font-size:10px;letter-spacing:3px;padding:0 27px 14px}.sidebar .el-menu{border-right:0;padding:0 13px}.sidebar .el-menu-item{border-radius:8px;margin:3px 0;font-size:13px}.sidebar .el-menu-item:hover{background:#364c50!important}.sidebar .el-menu-item.is-active{background:#364c50!important;box-shadow:inset 2px 0 0 #c1a48a}.sidebar .el-menu-item i{color:#b6c6c0}.sidebar-bottom{margin-top:auto;padding:22px 27px;color:#b5c0bd;border-top:1px solid #486064;font-size:12px}.topbar{display:flex;justify-content:space-between;align-items:center;background:#fdfcf9;border-bottom:1px solid #e9e6e0;color:#8b9692;font-size:12px;height:74px!important;padding:0 39px}.breadcrumb i{font-style:normal;margin:0 10px;color:#c3c8c2}.breadcrumb strong{color:#263439;font-weight:600}.topbar .el-button--text{color:#59736c}.mobile-nav-button{display:none;font-size:22px;margin-right:12px}.el-main{padding:42px 39px 65px;max-width:1550px;width:100%}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:29px;gap:16px}.page-head h1{margin:0;font-family:Songti SC,STSong,serif;font-size:34px;font-weight:500}.page-head p{color:#89938f;font-size:12px;margin:9px 0 0}.panel{background:#fff;border:1px solid #e8e4dd;border-radius:12px;padding:25px;box-shadow:0 8px 26px rgba(39,51,52,.03)}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:21px}.el-button{border-radius:7px;font-weight:500}.el-button--primary{background:#304348;border-color:#304348}.el-button--primary:focus,.el-button--primary:hover{background:#23373c;border-color:#23373c}.el-button--default:focus,.el-button--default:hover{color:#304348;border-color:#9dad9f;background:#fff}.el-input__inner,.el-select .el-input__inner{border-color:#e2e1da;border-radius:7px}.el-input__inner:focus,.el-select .el-input__inner:focus{border-color:#79918b}.el-table th.el-table__cell{background:#f8f7f3;color:#88918d;font-weight:600}.el-table td.el-table__cell{color:#586663}.el-tag--success{color:#4b7666;border-color:#dbe8df;background:#e9f1ed}.el-dialog{border-radius:14px}@media (max-width:768px){body{background:#f7f5f1}.layout>.el-container{min-width:0}.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:2100;width:260px!important;min-height:100vh;transform:translateX(-100%);transition:transform .22s ease;box-shadow:12px 0 32px rgba(27,43,43,.18)}.sidebar.is-open{transform:translateX(0)}.mobile-mask{position:fixed;inset:0;z-index:2099;background:rgba(22,34,35,.38)}.mobile-nav-button{display:inline-flex;align-items:center;padding:8px 0}.topbar{height:58px!important;padding:0 18px}.breadcrumb{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb i{margin:0 6px}.topbar>.el-button:last-child{padding-right:0}.el-main{padding:22px 14px 42px}.page-head{align-items:flex-start;margin-bottom:18px}.page-head h1{font-size:26px}.page-head p{line-height:1.5;margin-top:5px}.page-head>.el-button{flex:0 0 auto;margin-top:3px;padding:10px 12px}.panel{padding:16px;border-radius:10px;overflow-x:auto}.toolbar{flex-wrap:wrap;gap:8px;margin-bottom:16px}.toolbar .el-input,.toolbar .el-select{width:100%!important}.el-table{min-width:680px}.el-row{margin-left:0!important;margin-right:0!important}.el-row>[class*=el-col-]{width:100%;padding-left:0!important;padding-right:0!important;margin-bottom:14px}.el-dialog{width:calc(100% - 28px)!important;margin:7vh auto 0!important}.el-dialog__header{padding:19px 18px 12px}.el-dialog__body{padding:16px 18px;max-height:67vh;overflow-y:auto}.el-dialog__footer{padding:10px 18px 18px}.el-form-item__label{float:none;display:block;width:auto!important;text-align:left;line-height:1.4;padding:0 0 7px}.el-form-item__content{margin-left:0!important;line-height:1.4}.el-form-item{margin-bottom:17px}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:100%!important}.el-radio-group{display:flex;flex-wrap:wrap;gap:6px}.el-radio-button__inner{border-left:1px solid #dcdfe6!important;border-radius:4px!important}}.login-page[data-v-3822afaf]{min-height:100vh;display:grid;place-items:center;background:#f7f5f1}.login-card[data-v-3822afaf]{width:400px;background:#fff;border:1px solid #e8e4dd;border-radius:16px;padding:45px 42px;text-align:center;box-shadow:0 24px 65px rgba(39,51,52,.08)}.login-logo[data-v-3822afaf]{width:88px;height:70px;-o-object-fit:contain;object-fit:contain;display:block;margin:-8px auto -3px}h1[data-v-3822afaf]{font-family:Songti SC,STSong,serif;font-weight:500;letter-spacing:5px;margin:20px 0 6px}p[data-v-3822afaf]{color:#89938f;font-size:12px;margin:0 0 31px}.login-button[data-v-3822afaf]{width:100%;margin-top:5px}.metric[data-v-020825ca]{background:#fff;border:1px solid #e8e4dd;border-radius:12px;padding:25px;min-height:140px;box-shadow:0 8px 26px rgba(39,51,52,.03)}.metric small[data-v-020825ca],.metric span[data-v-020825ca]{display:block;color:#89938f;font-size:12px}.metric strong[data-v-020825ca]{display:block;color:#263439;font-family:Georgia,Songti SC,serif;font-size:34px;font-weight:500;margin:17px 0 6px}h3[data-v-020825ca]{margin-top:0;color:#263439;font-size:17px}.filters[data-v-563cbea2]{display:flex;align-items:center;gap:14px;margin:-2px 0 18px;color:#68726e;font-size:13px}.difficulty[data-v-563cbea2]{color:#c89436;letter-spacing:1px}.course-cell[data-v-563cbea2]{display:flex;flex-direction:column;gap:5px;line-height:1.35}.course-cell strong[data-v-563cbea2]{color:#304348;font-size:14px}.course-cell span[data-v-563cbea2]{color:#84908a;font-size:12px}.form-hint[data-v-563cbea2]{color:#8a958d;font-size:12px;line-height:1.5;margin-top:8px}.opening-rule[data-v-563cbea2]{display:flex;flex-direction:column;gap:4px;font-size:12px;line-height:1.3}.opening-rule strong[data-v-563cbea2]{font-size:13px}.opening-rule span[data-v-563cbea2]{color:#8a958d}.opening-ready strong[data-v-563cbea2]{color:#527865}.opening-pending strong[data-v-563cbea2]{color:#c07b2d}h3[data-v-a29a5732]{margin:0 0 15px;font-size:15px}.class-list[data-v-a29a5732]{max-height:650px;overflow:auto}.class-choice[data-v-a29a5732]{display:block;width:100%;border:1px solid transparent;border-radius:9px;padding:13px;text-align:left;background:transparent;cursor:pointer}.class-choice.active[data-v-a29a5732]{border-color:#b8c8bd;background:#f1f5f0}.class-choice[data-v-a29a5732]:hover{background:#f8faf6}.class-choice small[data-v-a29a5732],.class-choice span[data-v-a29a5732],.class-choice strong[data-v-a29a5732]{display:block}.class-choice small[data-v-a29a5732],.class-choice span[data-v-a29a5732]{color:#999;font-size:11px}.class-choice strong[data-v-a29a5732]{margin:6px 0;font-size:13px}.roster-head[data-v-a29a5732]{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.roster-head h2[data-v-a29a5732]{margin:0 0 7px;font-size:20px}.roster-head p[data-v-a29a5732]{margin:0;color:#999;font-size:12px}.attendance-summary[data-v-d275c972]{margin:0 0 18px;padding:12px 16px;border-radius:6px;background:#f6f8f7;color:#58645f}.attendance-summary span[data-v-d275c972]{margin-right:22px}.attended[data-v-d275c972],.complete[data-v-d275c972]{color:#4b7666}.pending[data-v-d275c972]{color:#a57070}