: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:50%;width:1920px;height:1080px;transform-origin:center center;overflow:hidden}.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-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}
