:root{--bg-deep: #060a12;--panel: rgba(20, 30, 51, .82);--panel-border: rgba(74, 112, 186, .26);--text: #e8eefc;--muted: #8ba0c6;--accent: #3d8bff;--warn: #ff9f43;--danger: #ff5c5c;--success: #34d399}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,Source Han Sans SC,sans-serif;color:var(--text);background:var(--bg-deep)}.viewport{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:hidden;background:radial-gradient(circle at 20% 0%,rgba(61,139,255,.16),transparent 55%),radial-gradient(circle at 85% 100%,rgba(123,92,255,.14),transparent 50%),var(--bg-deep)}.stage{position:absolute;left:50%;top:0;width:1920px;height:1080px;transform-origin:center top;overflow:hidden}.viewport.is-login{background-image:url(/login/login-page-bg.png);background-repeat:no-repeat;background-position:center center;background-size:cover}.board{display:flex;flex-direction:column;width:100%;height:100%;padding:24px 32px 12px}.status-bar{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0 6px 18px}.status-bar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,rgba(77,155,255,.55),rgba(77,155,255,.04))}.status-brand{display:flex;align-items:center}.status-accent{width:6px;height:58px;border-radius:3px;margin-right:18px;background:linear-gradient(180deg,#4d9bff,#7b5cff);box-shadow:0 0 20px rgba(77,155,255,.55)}.status-titles{display:flex;flex-direction:column}.status-school{font-size:18px;letter-spacing:3px;color:#7f96bd;margin-bottom:7px}.status-school.is-link{display:inline-block;padding:0;font-family:inherit;text-align:left;background:none;border:0;cursor:pointer;transition:color .16s ease}.status-school.is-link:hover{color:#9cc6ff}.status-title{font-size:42px;font-weight:800;letter-spacing:5px;color:#f2f7ff;text-shadow:0 4px 24px rgba(77,155,255,.35)}.status-right,.stats{display:flex;align-items:center}.stat{display:flex;flex-direction:column;align-items:center;padding:0 30px;border-left:1px solid rgba(86,124,186,.2)}.stat:first-child{border-left:0}.stat-value{font-size:40px;font-weight:800;line-height:1;color:#eaf1ff;font-variant-numeric:tabular-nums}.stat-value.is-warn{color:#ffab5e;text-shadow:0 0 24px rgba(255,159,67,.5)}.stat-label{margin-top:9px;font-size:15px;letter-spacing:2px;color:#7f96bd}.freshness{display:flex;align-items:center;margin-left:30px;padding:9px 16px;border-radius:999px;background:rgba(28,41,66,.72);border:1px solid rgba(86,124,186,.2);font-size:16px;color:#8ba0c6;max-width:430px}.freshness-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;margin-right:10px;background:#34d399}.freshness.is-stale{color:#ffab5e;border-color:rgba(255,159,67,.35)}.freshness.is-stale .freshness-dot{background:#ff9f43}.freshness.is-error{color:#ff8f8f;border-color:rgba(255,92,92,.35)}.freshness.is-error .freshness-dot{background:#ff5c5c}.freshness-dot.is-fetching{animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{0%{opacity:.25}50%{opacity:1}to{opacity:.25}}.board-body{display:flex;flex:1;margin-top:20px;min-height:0}.grade-column{--grade: 77, 155, 255;position:relative;display:flex;flex-direction:column;flex:1;min-width:0;margin-right:20px;border-radius:20px;overflow:hidden;background:linear-gradient(180deg,rgba(30,44,72,.88),rgba(15,23,39,.92));border:1px solid rgba(86,124,186,.2);box-shadow:0 20px 44px rgba(0,0,0,.34),inset 0 1px rgba(255,255,255,.05);animation:rise .55s cubic-bezier(.22,.9,.3,1) both}.grade-column:nth-child(2){--grade: 38, 198, 178}.grade-column:nth-child(3){--grade: 124, 108, 255}.grade-column:nth-child(4){--grade: 255, 159, 67}.grade-column:nth-child(5){--grade: 240, 106, 152}.grade-column:nth-child(6){--grade: 96, 200, 255}.grade-column:last-child{margin-right:0}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.grade-header{display:flex;align-items:center;padding:17px 22px;background:linear-gradient(180deg,rgba(var(--grade),.2),rgba(var(--grade),0));border-bottom:1px solid rgba(86,124,186,.16)}.grade-badge{flex:0 0 auto;width:46px;height:44px;margin-right:14px;border-radius:13px;text-align:center;line-height:42px;font-size:23px;font-weight:800;color:rgb(var(--grade));background:rgba(var(--grade),.14);border:1px solid rgba(var(--grade),.38)}.grade-name{flex:1;min-width:0;font-size:28px;font-weight:700;letter-spacing:1px;color:#eaf1ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grade-year{margin-left:8px;font-size:16px;font-weight:500;letter-spacing:0;color:#6f88ad;vertical-align:2px}.grade-count{flex:0 0 auto;padding:7px 15px;border-radius:999px;font-size:16px;font-weight:600;color:#ffb066;background:rgba(255,159,67,.13);border:1px solid rgba(255,159,67,.3)}.grade-count.is-clear{color:#4ade80;background:rgba(52,211,153,.1);border-color:rgba(52,211,153,.3)}.grade-body{flex:1;overflow-y:auto;padding:0 16px;scrollbar-width:none;-ms-overflow-style:none}.grade-page{display:flex;flex-direction:column}.grade-page>.class-group:last-child{padding-bottom:16px}.grade-body::-webkit-scrollbar{display:none}.grade-column:before{content:"";display:none;position:absolute;top:78px;left:1px;right:1px;height:26px;z-index:2;pointer-events:none;background:linear-gradient(180deg,rgba(22,33,54,.96),rgba(22,33,54,0))}.grade-column.is-overflow:before{display:block}.grade-column:after{content:"";display:none;position:absolute;left:0;right:0;bottom:0;height:46px;pointer-events:none;background:linear-gradient(180deg,rgba(15,23,39,0),rgba(15,23,39,.94))}.grade-column.is-overflow:after{display:block}.class-group{margin-top:10px}.class-group:first-child{margin-top:7px}.class-title{display:flex;align-items:center;padding:0 2px 4px;margin-bottom:6px;line-height:1.15;border-bottom:1px solid rgba(86,124,186,.16)}.class-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;margin-right:8px;background:rgb(var(--grade));box-shadow:0 0 8px rgba(var(--grade),.8)}.class-name{flex:1;min-width:0;font-size:17px;font-weight:700;letter-spacing:1px;color:#c3d5f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-count{flex:0 0 auto;margin-left:8px;font-size:14px;color:#6b81a6}.student-grid{display:flex;flex-wrap:wrap;margin:0 -5px}.student-card{display:flex;align-items:center;width:calc(33.333% - 10px);height:56px;margin:0 5px 8px;padding:0 8px 0 12px;border-radius:12px;background:linear-gradient(180deg,rgba(var(--grade),.12),rgba(var(--grade),.04));box-shadow:inset 0 1px rgba(255,255,255,.1);animation:fade-in .4s ease both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.student-name{flex:1;min-width:0;font-size:24px;font-weight:700;letter-spacing:.5px;color:#f7faff;text-shadow:0 1px 6px rgba(0,0,0,.35);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-pill{flex:0 0 auto;min-width:26px;height:26px;margin-left:6px;padding:0 6px;border-radius:8px;text-align:center;line-height:24px;font-size:15px;font-weight:700;color:#ffb673;background:rgba(255,159,67,.1);border:1px solid rgba(255,159,67,.22);font-variant-numeric:tabular-nums}.student-pill.is-warm{color:#ffcd9e;background:rgba(255,159,67,.22);border-color:rgba(255,159,67,.46)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.empty-icon{width:76px;height:72px;line-height:70px;margin-bottom:20px;border-radius:50%;text-align:center;font-size:34px;color:#34d399;border:2px solid rgba(52,211,153,.45);box-shadow:0 0 32px rgba(52,211,153,.18)}.empty-text{font-size:23px;color:#9db3d4}.empty-sub{margin-top:10px;font-size:16px;color:#63799c}.board-loading{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;font-size:24px;color:#8ba0c6}.loading-ring{width:54px;height:54px;margin-bottom:20px;border:3px solid rgba(77,155,255,.22);border-top-color:#4d9bff;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.board-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 8px 0;font-size:16px;letter-spacing:1px;color:#5c7297}.board-footer-right{color:#7f96bd}.login-page{width:100%;height:100%;padding-top:100px;box-sizing:border-box}.login-page-title{line-height:1.1;text-align:center;font-size:48px;font-family:Microsoft YaHei,PingFang SC,sans-serif;font-weight:700;color:#fff}.login-form{width:499px;height:502px;margin:91px auto 0;padding:62px 48px 0;box-sizing:border-box;background-image:url(/login/login-form-bg.png);background-repeat:no-repeat;background-size:100% 100%}.login-form-title{margin:0 0 45px;font-size:38px;font-weight:400;line-height:1.2;text-align:center;color:#fff}.login-item{position:relative;display:block;width:100%;height:56px;margin-top:33px;padding:0 15px 0 62px;box-sizing:border-box;border:2px solid #00c0ff;border-radius:6px}.login-item.is-username{margin-top:0}.login-item:before{content:"";position:absolute;top:50%;left:11px;width:44px;height:44px;margin-top:-22px;background-size:100% 100%;background-repeat:no-repeat}.login-item.is-username:before{background-image:url(/login/icon-username.png)}.login-item.is-password:before{background-image:url(/login/icon-passworld.png)}.login-item input{width:100%;height:100%;padding:0;font-size:23px;font-family:Adobe Heiti Std,Microsoft YaHei,PingFang SC,sans-serif;color:#fff;background:transparent;border:0;outline:none}.login-item input::placeholder{font-size:23px;color:#c7cde0}.login-error{height:26px;margin-top:12px;font-size:19px;line-height:26px;text-align:center;color:#ff7b7b;opacity:0;transition:opacity .18s ease}.login-error.is-show{opacity:1}.login-btn{display:block;width:403px;height:56px;margin:27px auto 0;padding:0;font-size:26px;font-family:Microsoft YaHei,PingFang SC,sans-serif;color:#fff;cursor:pointer;background-color:transparent;background-image:url(/login/login-btn-bg.png);background-repeat:no-repeat;background-size:403px 56px;border:0}.login-btn:disabled{cursor:default;opacity:.65}.picker-page{display:flex;flex-direction:column;width:100%;height:100%;padding:64px 72px 56px}.picker-head{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:22px;margin-bottom:28px;border-bottom:1px solid rgba(86,124,186,.2)}.picker-titles{display:flex;flex-direction:column}.picker-title{font-size:34px;font-weight:800;letter-spacing:4px;color:#f2f7ff}.picker-sub{margin-top:10px;font-size:15px;letter-spacing:1px;color:#7f96bd}.picker-logout{padding:10px 20px;font-size:15px;color:#8ba0c6;cursor:pointer;background:rgba(28,41,66,.7);border:1px solid rgba(86,124,186,.26);border-radius:999px}.picker-logout:hover{color:#eaf1ff;border-color:rgba(77,155,255,.5)}.picker-list{display:flex;flex-wrap:wrap;align-content:flex-start;flex:1;overflow-y:auto;margin:0 -10px;padding:6px 6px 0 0}.picker-item{display:flex;flex-direction:column;align-items:flex-start;width:340px;margin:0 10px 20px;padding:26px 24px;text-align:left;cursor:pointer;background:rgba(24,37,63,.9);border:1px solid rgba(105,148,210,.45);border-radius:16px;transition:border-color .16s ease,transform .16s ease,background .16s ease}.picker-item:hover{transform:translateY(-3px);border-color:rgba(77,155,255,.55);background:rgba(28,42,70,.9)}.picker-name{font-size:22px;font-weight:700;color:#eaf1ff}.picker-meta{margin-top:10px;font-size:14px;color:#6b81a6}.screen-message{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.screen-message-mark{width:76px;height:76px;margin-bottom:24px;border-radius:50%;text-align:center;line-height:72px;font-size:36px;color:#34d399;border:2px solid rgba(52,211,153,.45);box-shadow:0 0 32px rgba(52,211,153,.18)}.screen-message-mark.is-warn{color:#ff9f43;border-color:rgba(255,159,67,.45);box-shadow:0 0 32px rgba(255,159,67,.16)}.screen-message-title{font-size:26px;font-weight:700;letter-spacing:2px;color:#dbe6f8}.screen-message-detail{margin-top:14px;max-width:720px;font-size:16px;line-height:1.7;text-align:center;color:#7f96bd}
