:root{--bg0: #020510;--bg1: #061229;--bg-deep: #01040c;--panel: rgba(8, 28, 58, .55);--panel-edge: rgba(64, 190, 255, .45);--border: rgba(64, 180, 255, .32);--text: #e8f4ff;--muted: #7a9ab8;--accent: #3de8ff;--accent-dim: rgba(61, 232, 255, .35);--accent2: #6dffc9;--magenta: #c94dff;--warn: #ffc14d;--danger: #ff6b8a;--grid-line: rgba(40, 140, 220, .14);--glow-cyan: 0 0 24px rgba(61, 232, 255, .25);--font: "DIN Alternate", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif}*,*:before,*:after{box-sizing:border-box}html{height:100%;min-height:100vh;min-height:100dvh}body{margin:0;height:100%;min-height:100vh;min-height:100dvh;color:var(--text);font-family:var(--font);overflow:hidden;background:var(--bg-deep)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 100% 55% at 50% -10%,rgba(30,100,200,.35),transparent 58%),radial-gradient(ellipse 80% 50% at 80% 100%,rgba(100,40,180,.12),transparent 45%),radial-gradient(ellipse 60% 40% at 10% 90%,rgba(0,180,160,.08),transparent 42%),linear-gradient(180deg,#030818,#020510 40%,#01040c)}body:after{content:"";position:fixed;left:-20%;right:-20%;bottom:-15%;height:55%;z-index:0;pointer-events:none;opacity:.55;background:linear-gradient(to top,rgba(1,4,12,.95) 0%,transparent 42%),repeating-linear-gradient(0deg,transparent 0,transparent 39px,var(--grid-line) 39px,var(--grid-line) 40px),repeating-linear-gradient(90deg,transparent 0,transparent 39px,rgba(40,140,220,.09) 39px,rgba(40,140,220,.09) 40px);transform:perspective(520px) rotateX(62deg);transform-origin:50% 100%;animation:floor-shift 20s linear infinite}@keyframes floor-shift{0%{background-position:0 0,0 0,0 0}to{background-position:0 0,40px 40px,40px 40px}}#root{position:relative;z-index:1;min-height:100vh;min-height:100dvh;height:100%;display:flex;flex-direction:column}.shell{flex:1 1 auto;min-height:0;width:100%;padding:10px 14px 14px;display:flex;flex-direction:column;gap:10px;position:relative;touch-action:manipulation}.shell:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none;opacity:.04;background:repeating-linear-gradient(transparent 0 2px,#00000059 2px,#00000059 3px);animation:scan-drift 14s linear infinite}@keyframes scan-drift{0%{transform:translateY(0)}to{transform:translateY(3px)}}.header{text-align:center;position:relative;padding:4px 0 2px}.header-frame{display:inline-block;position:relative;padding:14px 36px 16px;margin:0 auto;max-width:min(96vw,920px);border:1px solid rgba(61,232,255,.35);border-radius:4px;background:linear-gradient(165deg,#0c285880,#040e2459);box-shadow:0 0 40px #3de8ff1f,inset 0 1px #ffffff0f;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:frame-pulse 5s ease-in-out infinite}.header-frame--loading{animation:none}@keyframes frame-pulse{0%,to{box-shadow:0 0 32px #3de8ff1a,inset 0 1px #ffffff0f;border-color:#3de8ff52}50%{box-shadow:0 0 48px #3de8ff33,0 0 80px #6dffc90f,inset 0 1px #ffffff14;border-color:#6dffc961}}.header-frame-corner{position:absolute;width:12px;height:12px;border:2px solid var(--accent);opacity:.85;pointer-events:none;box-shadow:0 0 10px var(--accent-dim)}.header-frame-corner--tl{top:-1px;left:-1px;border-right:none;border-bottom:none}.header-frame-corner--tr{top:-1px;right:-1px;border-left:none;border-bottom:none}.header-frame-corner--bl{bottom:-1px;left:-1px;border-right:none;border-top:none}.header-frame-corner--br{bottom:-1px;right:-1px;border-left:none;border-top:none}.header h1{margin:0;font-size:clamp(20px,2.3vw,32px);letter-spacing:.14em;font-weight:700;line-height:1.35;background:linear-gradient(92deg,#fff,#b8f0ff 35%,#6dffc9);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 0 20px rgba(61,232,255,.35))}.header .sub{margin-top:8px;color:var(--muted);font-size:13px;letter-spacing:.08em}.grid{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(260px,.95fr) minmax(420px,1.35fr) minmax(260px,.95fr);grid-template-rows:minmax(0,1fr);align-content:stretch;gap:12px}.col{min-height:0;height:100%;display:flex;flex-direction:column;gap:12px}.col .panel{flex:1;min-height:0}.center-stack{min-height:0;height:100%;display:flex;flex-direction:column;gap:12px}.hero{flex:0 0 auto;display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:min-content;gap:8px;padding:12px 14px;border-radius:14px;position:relative;background:linear-gradient(145deg,#10346e6b,#04102abf);border:1px solid rgba(61,232,255,.28);box-shadow:0 0 36px #008cdc1f,inset 0 0 60px #3de8ff0a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.04) 50%,transparent 60%);background-size:200% 100%;animation:hero-sheen 7s ease-in-out infinite;pointer-events:none}@keyframes hero-sheen{0%,to{background-position:130% 0}50%{background-position:-30% 0}}.hero-card{text-align:center;padding:10px 6px;border-radius:10px;background:#020a1c8c;border:1px solid rgba(61,232,255,.22);transition:border-color .25s ease,box-shadow .25s ease,transform .2s ease}.hero-card .label{font-size:11px;color:var(--muted);margin-bottom:6px;line-height:1.25;letter-spacing:.02em}.hero-card .value{font-size:clamp(18px,2vw,28px);font-weight:700;color:var(--accent2);font-variant-numeric:tabular-nums;text-shadow:0 0 18px rgba(109,255,201,.35)}button.hero-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;color:inherit;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.hero-card--clickable:not(:disabled):hover{border-color:#6dffc980;box-shadow:0 0 20px #3de8ff40;transform:translateY(-2px)}.hero-card--clickable:not(:disabled):active{transform:translateY(0)}.hero-card--clickable:disabled{cursor:default;opacity:.88}.hero-visual{grid-column:1 / -1;height:76px;border-radius:10px;position:relative;overflow:hidden;border:1px solid rgba(109,255,201,.28);background:radial-gradient(circle at 22% 45%,rgba(61,232,255,.4),transparent 52%),radial-gradient(circle at 78% 35%,rgba(201,77,255,.15),transparent 48%),linear-gradient(95deg,#040c22,#0a2048 48%,#040c22);box-shadow:inset 0 0 40px #0050a040}.hero-visual:before{content:"";position:absolute;top:-45%;right:-25%;bottom:-45%;left:-25%;background:repeating-linear-gradient(118deg,#3de8ff12 0,#3de8ff12 16px,#ffffff05 16px,#ffffff05 32px);animation:drift 22s linear infinite}.hero-visual:after{content:"清和运动 · 数据脉搏";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:clamp(15px,1.6vw,19px);letter-spacing:.42em;font-weight:600;color:#e8f4ffeb;text-shadow:0 0 20px rgba(61,232,255,.6),0 0 40px rgba(61,232,255,.2);animation:title-shimmer 4s ease-in-out infinite}@keyframes drift{0%{transform:translate(-8%)}to{transform:translate(8%)}}@keyframes title-shimmer{0%,to{opacity:.88}50%{opacity:1}}.mid-row{flex:1 1 0;min-height:0;display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);grid-template-rows:minmax(0,1fr);align-content:stretch;gap:14px}.mid-row>.panel{min-height:0;height:100%}.mid-row>.panel:last-child table.board th,.mid-row>.panel:last-child table.board td{padding-left:8px;padding-right:10px}.bottom-panel{flex:.55 1 0;min-height:0;display:flex;flex-direction:column}.bottom-panel .panel{flex:1 1 auto;min-height:0}.panel{border-radius:14px;background:linear-gradient(160deg,#0a244894,#040e24b8);border:1px solid rgba(61,232,255,.22);display:flex;flex-direction:column;min-height:0;overflow:hidden;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 4px 28px #00000059,0 0 1px #6dffc926,inset 0 1px #ffffff0d;animation:panel-glow 6s ease-in-out infinite}@keyframes panel-glow{0%,to{box-shadow:0 4px 28px #00000059,0 0 0 1px #3de8ff14,inset 0 1px #ffffff0d}50%{box-shadow:0 4px 32px #00286473,0 0 24px #3de8ff1a,inset 0 1px #ffffff12}}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid rgba(61,232,255,.15);background:linear-gradient(90deg,rgba(61,232,255,.06),transparent 55%)}.panel-head-right{flex:1;min-width:0;display:flex;justify-content:flex-end}.panel-title{font-size:14px;font-weight:700;letter-spacing:.08em;flex:1 1 120px;min-width:0;line-height:1.3;color:#cfe8ff;text-shadow:0 0 12px rgba(61,232,255,.25)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.grade-select-wrap{display:block;flex-shrink:0}.grade-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:7.5rem;max-width:100%;padding:7px 30px 7px 11px;font:inherit;font-size:12px;font-weight:600;color:var(--text);background:#020c20bf url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236dffc9' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E") no-repeat right 9px center;border:1px solid rgba(61,232,255,.35);border-radius:10px;cursor:pointer;box-shadow:0 0 12px #3de8ff14;transition:border-color .2s,box-shadow .2s}.grade-select:hover{border-color:#6dffc973;box-shadow:0 0 16px #3de8ff26}.grade-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #3de8ff40}.scroll-frame{position:relative;flex:1 1 0;min-height:0;padding:0 8px 8px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 12px,#000 calc(100% - 10px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,#000 12px,#000 calc(100% - 10px),transparent 100%)}.board-scroll{min-height:0}table.board{width:100%;border-collapse:collapse;font-size:12px}table.board th,table.board td{padding:5px 7px;border-bottom:1px solid rgba(255,255,255,.05);transition:background .15s ease}@media (hover: hover) and (pointer: fine){table.board tbody tr:hover td{background:#3de8ff0f}}table.board th{color:var(--muted);font-weight:600;text-align:left;position:sticky;top:0;background:linear-gradient(180deg,#061630fa,#041026f2);z-index:1;border-bottom:1px solid rgba(61,232,255,.18);letter-spacing:.04em}table.board td.rank{width:44px;color:var(--accent);font-weight:700;text-shadow:0 0 10px rgba(61,232,255,.35)}table.board td.score{text-align:right;font-variant-numeric:tabular-nums;color:var(--accent2);text-shadow:0 0 8px rgba(109,255,201,.2)}.empty{padding:16px;color:var(--muted);font-size:13px;text-align:center;letter-spacing:.04em}.error-banner{padding:12px 14px;border-radius:12px;background:#ff6b8a1a;border:1px solid rgba(255,107,138,.4);color:#ffd3dc;font-size:13px;box-shadow:0 0 24px #ff6b8a1f}.note{font-size:11px;color:var(--muted);padding:0 8px 6px;line-height:1.35}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#000410c7;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fade-in .25s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-panel{width:min(920px,100%);max-height:min(86vh,900px);background:linear-gradient(165deg,#0c2a5cf2,#040c20fa);border:1px solid rgba(61,232,255,.35);border-radius:16px;box-shadow:0 24px 64px #0000008c,0 0 48px #3de8ff1f;display:flex;flex-direction:column;min-height:0;animation:modal-up .3s ease}@keyframes modal-up{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(61,232,255,.2);background:linear-gradient(90deg,rgba(61,232,255,.08),transparent)}.modal-head h2{margin:0;font-size:17px;letter-spacing:.08em;color:#e8f4ff;text-shadow:0 0 14px rgba(61,232,255,.3)}.modal-close{border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:var(--text);width:38px;height:38px;border-radius:10px;font-size:22px;line-height:1;cursor:pointer;transition:background .2s,border-color .2s}.modal-close:hover{background:#ff6b8a33;border-color:#ff6b8a59}.modal-hint{margin:0;padding:10px 16px 0;font-size:12px;color:var(--muted);line-height:1.45}.modal-count{margin:0;padding:8px 16px 10px;font-size:13px;color:var(--text)}.modal-body{flex:1;min-height:0;overflow:auto;padding:0 10px 14px;-webkit-overflow-scrolling:touch}.modal-table thead th{position:sticky;top:0;z-index:2}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html.dashboard--perf .header-frame{backdrop-filter:none;-webkit-backdrop-filter:none;animation:none;box-shadow:0 0 20px #3de8ff1a,inset 0 1px #ffffff0d}html.dashboard--perf .header h1{filter:none}html.dashboard--perf .hero{backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 0 20px #0064b41f,inset 0 0 40px #3de8ff08}html.dashboard--perf .hero:before{animation:none;opacity:.35}html.dashboard--perf .hero-visual:before{animation:none}html.dashboard--perf .hero-visual:after{animation:none}html.dashboard--perf .hero-card{transition:none}html.dashboard--perf body:after{animation:none}html.dashboard--perf .shell:after{content:none}html.dashboard--perf .panel{backdrop-filter:none;-webkit-backdrop-filter:none;animation:none;box-shadow:0 2px 16px #00000059,inset 0 1px #ffffff0d}html.dashboard--perf .scroll-frame{mask-image:none;-webkit-mask-image:none}html.dashboard--perf .modal-backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}html.dashboard--perf table.board th,html.dashboard--perf table.board td{transition:none}html.dashboard--perf table.board td.rank,html.dashboard--perf table.board td.score,html.dashboard--perf .panel-title,html.dashboard--perf .modal-head h2{text-shadow:none}@media (min-width: 1600px) and (min-height: 980px){.shell{padding:12px 16px 16px;gap:12px}.grid,.col,.center-stack{gap:14px}.mid-row{gap:16px}.panel-head{padding:11px 14px}.panel-title{font-size:15px}.grade-select{font-size:13px;padding:8px 32px 8px 12px}table.board{font-size:13px}table.board th,table.board td{padding:6px 8px}.hero-card .label{font-size:12px}}@media (max-width: 1100px){.grid{grid-template-columns:1fr;grid-template-rows:none;overflow:auto}.col,.center-stack{height:auto;min-height:0}html,body{overflow:auto}.hero{grid-template-columns:repeat(2,1fr)}body:after{opacity:.35}}
