:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f6f8;--panel:#fff;--panel-soft:#f8fafc;--text:#1f2328;--muted:#6b7280;--line:#e5e7eb;--line-soft:#f1f3f5;--up:#d64545;--down:#2f9e44;--net:#1c7ed6;--accent:#2f6fdd;--accent-strong:#255fce;--accent-soft:#e8efff;--warn:#b45309;--danger:#b91c1c;--danger-bg:#fef2f2;--danger-line:#fecaca;--info:#1d4ed8;--info-bg:#eff6ff;--info-line:#bfdbfe;--shadow-menu:0 10px 28px #0f172a24;--tooltip-bg:#fffffff7;--tooltip-border:#e5e7eb;--chart-split:#f1f3f5;--scrollbar:#cbd5e1;--ma5:#f59f00;--ma10:#7048e8;--ma20:#0ca678}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1115;--panel:#161a20;--panel-soft:#1b2027;--text:#e5e7eb;--muted:#9ca3af;--line:#262b33;--line-soft:#20252d;--up:#ff6b6b;--down:#51cf66;--net:#4dabf7;--accent:#5c9dff;--accent-strong:#74adff;--accent-soft:#1e2a44;--warn:#fbbf24;--danger:#fca5a5;--danger-bg:#2a1616;--danger-line:#7f1d1d;--info:#93c5fd;--info-bg:#14202f;--info-line:#1e3a5f;--shadow-menu:0 10px 28px #0000008c;--tooltip-bg:#161a20f7;--tooltip-border:#2f3540;--chart-split:#232830;--scrollbar:#3f4650;--ma5:#ffd43b;--ma10:#b197fc;--ma20:#38d9a9}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Noto Sans CJK SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:13px}#app{min-height:100%}.app-shell{flex-direction:column;min-height:100vh;display:flex}.nav{background:var(--panel-soft);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;min-height:44px;padding:0 18px;display:flex}.nav-left{align-items:center;gap:18px;min-width:0;display:flex}.nav-brand{color:var(--muted);letter-spacing:.4px;white-space:nowrap;font-size:12px;font-weight:650}.nav-tabs{scrollbar-width:none;align-items:center;gap:4px;display:flex;overflow-x:auto}.nav-tabs::-webkit-scrollbar{display:none}.nav-tabs button{height:30px;color:var(--muted);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 14px;font-size:13px}.nav-tabs button:hover{background:var(--line-soft);color:var(--text)}.nav-tabs button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-right{align-items:center;gap:8px;margin-left:auto;display:flex}.nav-theme-label{color:var(--muted);font-size:11px}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 24px;padding:12px 18px;display:flex}.headline h1{letter-spacing:.2px;margin:0 0 4px;font-size:18px;font-weight:650}.headline .product-name{color:var(--accent)}.meta{color:var(--muted);flex-wrap:wrap;gap:6px 16px;font-size:12px;display:flex}.warn{color:var(--warn)}.controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--muted);font-size:11px}.combo{align-items:center;display:flex;position:relative}.combo input{border:1px solid var(--line);background:var(--panel);width:230px;height:32px;color:var(--text);border-radius:7px;outline:none;padding:0 30px 0 10px;font-size:13px}.combo input:focus{border-color:var(--accent)}.combo-toggle{width:26px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:12px;position:absolute;right:2px}.combo-menu{z-index:20;border:1px solid var(--line);background:var(--panel);width:330px;max-height:340px;box-shadow:var(--shadow-menu);border-radius:8px;padding:4px;position:absolute;top:36px;left:0;overflow:auto}.combo-menu button{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 9px;font-size:13px;display:flex}.combo-menu button:hover{background:var(--accent-soft)}.combo-menu .hint{color:var(--muted);font-size:11px}.combo-menu .empty{color:var(--muted);padding:10px}.seg{border:1px solid var(--line);background:var(--panel);border-radius:7px;height:32px;padding:2px;display:inline-flex}.seg button{min-width:52px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;padding:0 12px;font-size:13px}.seg button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.select{border:1px solid var(--line);background:var(--panel);max-width:280px;height:32px;color:var(--text);border-radius:7px;outline:none;padding:0 8px;font-size:13px}.select:focus{border-color:var(--accent)}.select-sm{max-width:160px}.button,.button-primary,.icon-button{cursor:pointer;border-radius:7px;height:32px;font-size:13px}.button{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:0 14px}.button:hover{border-color:var(--accent);color:var(--accent)}.button-primary{border:1px solid var(--accent);background:var(--accent);color:#fff;padding:0 16px}.button-primary:hover{background:var(--accent-strong)}.button-primary:disabled{opacity:.55;cursor:progress}.icon-button{border:1px solid var(--line);background:var(--panel);width:34px;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{border-color:var(--accent);color:var(--accent)}.refresh-bar{border:1px solid var(--info-line);background:var(--info-bg);color:var(--info);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:8px 18px 0;padding:7px 12px;font-size:12px;display:flex}.refresh-text{flex:0 auto}.progress{background:var(--info-line);border-radius:999px;flex:220px;height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:999px;width:0;height:100%}.progress-fill.indeterminate{width:35%;animation:1.4s ease-in-out infinite progress-slide}@keyframes progress-slide{0%{margin-left:0}50%{margin-left:65%}to{margin-left:0}}.banner{white-space:pre-wrap;border-radius:8px;margin:10px 18px 0;padding:9px 12px;font-size:12px}.banner-error{border:1px solid var(--danger-line);background:var(--danger-bg);color:var(--danger)}.banner-info{border:1px solid var(--info-line);background:var(--info-bg);color:var(--info)}.layout{flex:auto;gap:10px;min-height:0;padding:6px 12px 0;display:flex}.chart{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex:auto;min-width:0;min-height:520px}.boards{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-direction:column;flex:0 0 330px;min-height:0;padding:10px 12px 12px;display:flex}.boards-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 10px;display:flex}.boards-head h2{margin:0;font-size:13px;font-weight:650}.boards-day{color:var(--muted);font-size:11px}.boards-tools{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.board-reset{border:1px solid var(--line);background:var(--panel);height:22px;color:var(--accent);cursor:pointer;border-radius:6px;padding:0 8px;font-size:11px}.board-reset:hover{border-color:var(--accent);background:var(--accent-soft)}.boards-tip{color:var(--muted);margin:0 0 6px;font-size:11px}.boards-notice{background:var(--line-soft);color:var(--warn);border-radius:6px;margin:6px 0 0;padding:4px 8px;font-size:11px;line-height:1.5}.tabs{flex-wrap:wrap;gap:4px;margin:8px 0;display:flex}.tabs button{border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;border-radius:6px;padding:4px 9px;font-size:11px}.tabs button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.board-list{flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow:auto}.board-item{border-bottom:1px dashed var(--line-soft);cursor:pointer;grid-template-columns:18px minmax(0,1fr) auto;align-items:baseline;gap:6px;padding:5px 4px;display:grid}.board-item:hover{background:var(--panel-soft)}.board-rank{color:var(--muted);text-align:right;font-size:11px}.board-name{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.board-value{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.board-value.up{color:var(--up)}.board-value.down{color:var(--down)}.board-empty{color:var(--muted);margin:0;padding:14px 4px;font-size:12px}.index-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0 4px;display:grid}.stat{border:1px solid var(--line-soft);background:var(--panel-soft);border-radius:7px;flex-direction:column;gap:2px;padding:6px 8px;display:flex}.stat .label{color:var(--muted);font-size:11px}.stat .value{font-variant-numeric:tabular-nums;font-size:14px;font-weight:650}.stat .value.small{font-size:12px;font-weight:500}.stat .value.up{color:var(--up)}.stat .value.down{color:var(--down)}.chart.index-empty{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex}.chart.index-empty p{text-align:center;max-width:460px;margin:0;line-height:1.7}.foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding:7px 18px;font-size:11px;display:flex}.tt-date{color:var(--text);margin-bottom:4px;font-weight:600}.tt-sec{color:var(--muted);margin:5px 0 2px}.tt-muted{color:var(--muted);margin-top:5px}.tt-row{justify-content:space-between;gap:18px;line-height:1.65;display:flex}.tt-row b{font-weight:600}.tt-row b.up{color:var(--up)}.tt-row b.down{color:var(--down)}.relation-view{flex-direction:column;flex:auto;gap:10px;min-height:0;padding:6px 12px 4px;display:flex}.relation-overview{flex-wrap:wrap;align-items:flex-start;gap:8px 12px;display:flex}.relation-stats{flex:620px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;display:grid}.relation-hint{color:var(--muted);flex:100%;margin:0;font-size:11px;line-height:1.7}.relation-days{text-align:right;width:96px;max-width:96px}.relation-body{--relation-panel-height:560px;flex-wrap:wrap;align-items:stretch;gap:10px;display:flex}.relation-groups{height:var(--relation-panel-height);border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-direction:column;flex:520px;min-width:0;min-height:0;padding:10px 12px 12px;display:flex}.group-list{flex-direction:column;flex:auto;gap:8px;min-height:0;margin-top:8px;display:flex;overflow-y:auto}.group-card{border:1px solid var(--line-soft);background:var(--panel-soft);border-radius:8px;padding:8px 9px}.group-card.other{opacity:.9;border-style:dashed}.group-head{justify-content:space-between;align-items:baseline;gap:4px 8px;display:flex}.group-name{font-size:12px;font-weight:650}.group-meta{color:var(--muted);font-size:11px}.group-members{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.member-chip{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;display:inline-flex}.member-chip:hover,.member-chip.active{border-color:var(--accent);background:var(--accent-soft)}.member-chip.active{box-shadow:inset 0 0 0 1px var(--accent)}.member-code{color:var(--muted);font-size:10px}.member-chip b{color:var(--muted);font-variant-numeric:tabular-nums}.member-chip.strong b{color:var(--up)}.member-chip.medium b{color:var(--warn)}.relation-panel{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex:460px;min-width:0;padding:10px 12px}.relation-rank{height:var(--relation-panel-height);flex-direction:column;flex:560px;min-height:0;display:flex}.relation-rank-list{flex-direction:column;flex:auto;gap:1px;min-height:0;margin:6px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.relation-rank-list li{border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums;grid-template-columns:24px minmax(110px,1fr) 64px 52px 72px;align-items:center;gap:8px;padding:4px 6px;font-size:12px;display:grid}.relation-rank-list li:hover{background:var(--panel-soft)}.rank-index{color:var(--muted);text-align:right}.rank-name{text-overflow:ellipsis;white-space:nowrap;align-items:baseline;gap:4px;display:flex;overflow:hidden}.rank-name em{color:var(--muted);font-size:11px;font-style:normal}.rank-same{border:1px solid var(--line);color:var(--accent);border-radius:999px;padding:0 4px;font-size:10px}.rank-value{text-align:right;font-weight:650}.relation-top,.relation-notes,.relation-empty{flex:none}.relation-empty{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:36px 12px;display:flex}.relation-empty p{margin:0;line-height:1.7}.relation-panel h2{margin:0 0 8px;font-size:13px;font-weight:650}.relation-note{color:var(--muted);margin:0 0 6px;font-size:11px;line-height:1.75}.relation-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;max-width:1180px;font-size:12px}.relation-table th,.relation-table td{border-bottom:1px solid var(--line-soft);text-align:left;padding:4px 6px}.relation-table th{color:var(--muted);font-weight:500}.relation-table tbody tr:hover{background:var(--panel-soft)}.relation-bar{background:var(--line-soft);vertical-align:middle;border-radius:999px;width:56px;height:5px;margin-right:6px;display:inline-block;overflow:hidden}.relation-bar i{background:linear-gradient(90deg, var(--net), var(--up));height:100%;display:block}.relation-label{border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:999px;padding:0 6px;font-size:11px;display:inline-block}.relation-label.strong{border-color:var(--up);color:var(--up)}.relation-label.medium{border-color:var(--warn);color:var(--warn)}.relation-excluded{margin:0;padding-left:16px;font-size:12px;line-height:1.8}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);background-clip:content-box;border:3px solid #0000;border-radius:999px}@media (width<=1080px){.layout{flex-direction:column}.boards{flex:auto;width:100%;max-height:340px}.relation-body{flex-direction:column}.relation-groups,.relation-rank{flex:auto;width:100%;height:420px}}@media (width<=760px){.nav{padding:0 12px}.nav-left{gap:10px}.nav-brand{display:none}.topbar{align-items:stretch}.controls,.combo input{width:100%}.combo,.field{flex:100%}.select{max-width:100%}.chart{min-height:480px}}body,.topbar,.chart,.boards,.combo-menu,.select,.button,.button-primary,.icon-button,.refresh-bar,.banner{transition:background-color .16s,border-color .16s,color .16s}.progress-fill{transition:width .25s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:32px 18px;display:flex;position:relative}.login-theme{align-items:center;gap:8px;display:flex;position:absolute;top:16px;right:20px}.login-card{border:1px solid var(--line);background:var(--panel);border-radius:14px;width:min(420px,100%);padding:28px;box-shadow:0 18px 48px #0f172a1a}.login-brand{align-items:center;gap:12px;margin-bottom:22px;display:flex}.login-logo{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:10px;justify-content:center;align-items:center;font-size:18px;font-weight:600;display:inline-flex}.login-title{color:var(--text);margin:0;font-size:19px;font-weight:600}.login-sub{color:var(--muted);margin:3px 0 0;font-size:12px}.login-form{flex-direction:column;gap:14px;display:flex}.login-field{flex-direction:column;gap:6px;display:flex}.login-field input{border:1px solid var(--line);background:var(--panel);width:100%;height:38px;color:var(--text);border-radius:8px;outline:none;padding:0 12px;font-size:14px}.login-field input:focus{border-color:var(--accent)}.login-field input:disabled{opacity:.6}.login-password{align-items:center;display:flex;position:relative}.login-password input{padding-right:54px}.login-eye{background:var(--accent-soft);height:28px;color:var(--accent);cursor:pointer;border:none;border-radius:6px;padding:0 8px;font-size:12px;position:absolute;right:4px}.login-caps,.login-lock{color:var(--warn);margin:-6px 0 0;font-size:12px}.login-remember{color:var(--muted);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.login-remember input{accent-color:var(--accent)}.login-error{margin:0}.login-submit{width:100%;height:38px}.login-foot{color:var(--muted);margin:18px 0 0;font-size:11px;line-height:1.6}.auth-loading{background:var(--bg);min-height:100vh;color:var(--muted);justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.auth-loading-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;animation:1s ease-in-out infinite auth-pulse}@keyframes auth-pulse{0%,to{opacity:.3;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}.nav-username{max-width:140px;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}.nav-action{height:28px;padding:0 10px;font-size:12px}.dialog-mask{z-index:40;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--line);background:var(--panel);width:min(400px,100%);box-shadow:var(--shadow-menu);border-radius:12px}.dialog-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.dialog-head h2{color:var(--text);margin:0;font-size:15px;font-weight:600}.dialog-close{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;font-size:20px;line-height:1}.dialog-close:hover{background:var(--panel-soft);color:var(--text)}.dialog-body{flex-direction:column;gap:14px;padding:18px;display:flex}.dialog-hint{color:var(--muted);margin:0;font-size:12px}.dialog-actions{justify-content:flex-end;gap:10px;display:flex}@media (width<=760px){.login-card{padding:22px}.nav-username{display:none}.nav-action{padding:0 8px}}
