:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#0d1b42;background:#f7fbff;font-synthesis:none;--line:#d9e7f5;--muted:#607195;--blue:#1769e8;--green:#0bbf63;--red:#ef3f45;--shadow:0 12px 32px rgba(45,91,145,.12)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 50% 0,#fff 0,#f5faff 55%,#eef6fc 100%);min-height:100vh}button,input,select,textarea{font:inherit;letter-spacing:0}.topbar{height:58px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10;backdrop-filter:blur(10px)}.brand{font-weight:800;color:#0b2255;text-decoration:none;font-size:19px}.topbar nav{display:flex;height:100%;gap:4px}.nav-link{border:0;background:transparent;color:#526484;padding:0 16px;cursor:pointer;border-bottom:2px solid transparent}.nav-link:hover,.nav-link.active{color:var(--blue);border-color:var(--blue)}.shell{max-width:1720px;margin:0 auto;padding:24px 30px 32px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}.title-mark{border-left:6px solid #153c8c;padding-left:18px}.title-mark h1{font-size:31px;line-height:1.2;margin:0 0 8px;font-weight:800;letter-spacing:0}.title-mark p{margin:0;color:var(--muted);font-size:15px}.heading-tools{display:flex;gap:12px;align-items:stretch}.window-select,.speed-legend{border:1px solid #cfdeef;background:#fff;border-radius:8px;height:64px;padding:10px 18px}.window-select label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.window-select select{border:0;background:transparent;color:#12224d;font-weight:700;min-width:150px;outline:0}.speed-legend{width:360px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px}.speed-legend strong{font-size:14px}.legend-wrap{display:grid;grid-template-columns:1fr 1fr;gap:4px}.legend-bar{grid-column:1/-1;height:10px;background:linear-gradient(90deg,#6495ed,#1185ef,#14c45b);border-radius:5px}.legend-wrap span:last-child{text-align:right}.data-panel{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:rgba(255,255,255,.84)}table{border-collapse:collapse;width:100%}th,td{border-right:1px solid #e0ebf5;border-bottom:1px solid #e0ebf5;text-align:left;padding:11px 14px;white-space:nowrap}th:last-child,td:last-child{border-right:0}tbody tr:last-child td{border-bottom:0}th{height:56px;background:#eef7ff;color:#13254f;font-size:14px;text-align:center}td{text-align:center;color:#14234a;font-weight:600}tbody tr:hover{background:#f8fcff}.rank{font-size:18px;font-weight:800}.rank-medal{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;margin-right:6px;color:#fff;font-size:13px;box-shadow:inset 0 -3px 0 rgba(0,0,0,.13)}.gold{background:#eaaa00}.silver{background:#91a2bb}.bronze{background:#dc711b}.station-link{color:#096eea;text-decoration:none}.station-link:hover{text-decoration:underline}.spark{width:100%;min-width:190px;height:42px;display:block}.score-cell{min-width:210px}.score-layout{display:grid;grid-template-columns:42px 1fr;align-items:center;gap:12px}.score-number{font-size:20px;font-weight:800}.score-track{height:14px;background:#e9f0f6;border-radius:7px;overflow:hidden}.score-fill{height:100%;border-radius:7px;background:linear-gradient(90deg,#10b969,#13cf70)}.score-mid{background:linear-gradient(90deg,#1593ef,#39bfea)}.score-low{background:linear-gradient(90deg,#ff9e25,#ffbf31)}.score-bad{background:linear-gradient(90deg,#ff5159,#ff7a3d)}.button{border:1px solid #bfcfe3;background:#fff;color:#17305f;border-radius:6px;padding:9px 15px;cursor:pointer;font-weight:700}.button:hover{border-color:#6b9de0;background:#f5f9ff}.button.primary{background:#1269df;border-color:#1269df;color:#fff}.button.danger{color:#bf2430;border-color:#f2b8bc}.button.small{padding:6px 10px;font-size:13px}.button:disabled{opacity:.55;cursor:not-allowed}.footer-line{display:flex;justify-content:space-between;color:var(--muted);font-size:13px;padding:16px 2px}.loading,.empty{color:var(--muted);padding:52px;text-align:center}.modal-backdrop{position:fixed;inset:0;background:rgba(10,26,54,.42);display:grid;place-items:center;padding:20px;z-index:50}.modal-backdrop.hidden{display:none}.modal{background:#fff;border-radius:8px;width:min(680px,100%);max-height:88vh;overflow:auto;box-shadow:var(--shadow)}.modal>header{position:sticky;top:0;z-index:1;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal h2{font-size:19px;margin:0}.icon-button{width:34px;height:34px;border:0;background:#edf3f9;border-radius:5px;font-size:24px;line-height:1;cursor:pointer}.modal-body{padding:22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:13px;color:#435574;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid #cddbeb;border-radius:6px;padding:10px 11px;background:#fff;color:#15264c;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:#4388df;box-shadow:0 0 0 3px rgba(67,136,223,.12)}.field textarea{min-height:98px;resize:vertical}.field small{color:var(--muted)}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.toast{position:fixed;right:24px;bottom:24px;background:#13254f;color:#fff;padding:12px 17px;border-radius:6px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s;z-index:80}.toast.show{opacity:1;transform:none}.toast.error{background:#b5232d}.admin-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:22px}.admin-side{border-right:1px solid var(--line);padding-right:18px;min-height:calc(100vh - 110px)}.admin-side h2{font-size:17px;margin:4px 8px 16px}.admin-tab{display:block;width:100%;text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:6px;color:#526484;cursor:pointer;margin:2px 0}.admin-tab:hover,.admin-tab.active{background:#eaf3ff;color:#1269df;font-weight:700}.admin-main{min-width:0}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.section-head h1{font-size:23px;margin:0}.section-actions{display:flex;gap:8px}.metric-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.metric{border:1px solid var(--line);background:#fff;padding:18px;border-radius:7px}.metric span{color:var(--muted);font-size:13px}.metric strong{display:block;font-size:28px;margin-top:9px}.admin-table{background:#fff;border:1px solid var(--line);border-radius:7px;overflow:auto}.admin-table table{min-width:920px}.admin-table th{height:44px}.admin-table td,.admin-table th{padding:9px 11px;font-size:13px}.status{display:inline-block;border-radius:10px;padding:3px 8px;font-size:12px;background:#edf2f7;color:#526484}.status.ok{background:#e3f8ec;color:#087b3b}.status.bad{background:#ffebec;color:#b71f2a}.status.wait{background:#fff5d9;color:#9a6500}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:13px 0;color:var(--muted);font-size:13px}.login-wrap{max-width:390px;margin:11vh auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:28px;box-shadow:var(--shadow)}.login-wrap h1{font-size:24px;margin:0 0 8px}.login-wrap p{color:var(--muted);margin:0 0 22px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;background:#fff;border:1px solid var(--line);padding:22px;border-radius:7px}.settings-grid .wide{grid-column:1/-1}.detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.detail-summary div{background:#f4f8fc;border-radius:6px;padding:12px}.detail-summary span{display:block;color:var(--muted);font-size:12px}.detail-summary strong{display:block;margin-top:5px}.run-list{display:grid;gap:8px}.run-item{border:1px solid var(--line);border-left:4px solid var(--green);border-radius:5px;padding:11px}.run-item.bad{border-left-color:var(--red)}.run-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.run-answer{margin-top:7px;white-space:normal;overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:13px}.mobile-cards{display:none}
@media(max-width:900px){.topbar{padding:0 14px}.brand{font-size:16px}.nav-link{padding:0 9px}.shell{padding:18px 14px}.page-heading{display:block}.title-mark h1{font-size:25px}.heading-tools{margin-top:16px}.speed-legend{display:none}.window-select{width:100%}.data-panel{display:none}.mobile-cards{display:grid;gap:10px}.rank-card{background:#fff;border:1px solid var(--line);border-radius:7px;padding:14px}.rank-card-head,.rank-card-score{display:flex;align-items:center;justify-content:space-between;gap:10px}.rank-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0;color:var(--muted);font-size:13px}.rank-card-grid strong{display:block;color:#14234a;margin-top:3px}.admin-layout{grid-template-columns:1fr}.admin-side{border:0;min-height:auto;padding:0;display:flex;overflow:auto}.admin-side h2{display:none}.admin-tab{width:auto;white-space:nowrap}.metric-grid{grid-template-columns:1fr 1fr}.form-grid,.settings-grid{grid-template-columns:1fr}.field.full,.settings-grid .wide{grid-column:auto}.detail-summary{grid-template-columns:1fr}.footer-line{display:block;line-height:1.8}}
.table-note{display:block;margin-top:3px;color:var(--muted);font-size:11px;font-weight:500}
.switch-row{display:flex!important;align-items:center;gap:9px;min-height:41px;cursor:pointer}.switch-row input{position:absolute;opacity:0;pointer-events:none}.switch-control{position:relative;width:42px;height:24px;border-radius:12px;background:#aab8ca;transition:.18s;flex:0 0 auto}.switch-control:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.22);transition:.18s}.switch-row input:checked+.switch-control{background:var(--blue)}.switch-row input:checked+.switch-control:after{transform:translateX(18px)}.switch-row input:focus-visible+.switch-control{outline:3px solid rgba(67,136,223,.24);outline-offset:2px}
