:root{--blue:#315ff2;--ink:#172033;--muted:#667085;--line:#e4e8ef;--surface:#fff;--sidebar:#f7f8fb;--success:#087f5b;--warning:#a16207;--danger:#b42318}*{box-sizing:border-box}body{margin:0;background:#fbfcfe;color:var(--ink);font-family:Arial,"Microsoft YaHei",sans-serif;font-size:14px}.admin-shell{display:flex;min-height:100vh}.admin-side{width:238px;background:var(--sidebar);border-right:1px solid var(--line);padding:24px 16px 18px;display:flex;flex-direction:column}.admin-brand{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;padding:2px 8px 28px}.admin-brand img{width:31px;height:43px;object-fit:contain}.admin-brand b{display:block;font-size:17px;letter-spacing:.01em}.admin-brand small{display:block;margin-top:3px;font-size:11px;color:var(--muted)}nav{display:grid;gap:4px}.nav-item{border:0;background:transparent;color:#526078;text-align:left;padding:11px 12px;border-radius:7px;font:inherit;cursor:pointer}.nav-item:hover{background:#edf2ff;color:var(--blue)}.nav-item.active{background:#e8efff;color:#264dcc;font-weight:600}.back-link{margin-top:auto;color:#526078;text-decoration:none;padding:11px 12px;font-size:13px}.back-link:hover{color:var(--blue)}.admin-main{flex:1;min-width:0;padding:28px 34px 50px}.admin-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:20px}.eyebrow{margin:0 0 6px;color:#8a96a8;font-size:10px;letter-spacing:.12em}.admin-header h1{font-size:22px;margin:0}.header-actions{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:12px}.header-actions button{border:1px solid var(--line);background:#fff;color:#526078;border-radius:6px;padding:7px 10px;cursor:pointer}.view{padding-top:28px}.section-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;margin-bottom:18px}.section-heading h2{margin:0;font-size:17px}.section-heading p{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.55}.primary,.secondary{border-radius:6px;padding:8px 13px;font:inherit;font-size:12px;cursor:pointer}.primary{border:1px solid var(--blue);background:var(--blue);color:#fff}.primary:hover{background:#244edb}.secondary{border:1px solid var(--line);background:#fff;color:#526078}.secondary:hover{border-color:#b9c8ee;color:var(--blue)}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:10px}.metric{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:15px 14px;min-height:88px}.metric-label{font-size:11px;color:var(--muted)}.metric-value{margin-top:10px;font-size:22px;font-weight:650;color:#1f3e9c}.metric-value.empty{color:#9aa5b6}.metric-note{margin-top:5px;font-size:10px;color:#98a2b3}.overview-grid,.data-columns{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;margin-top:14px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.panel-heading h3{font-size:13px;margin:0}.panel-heading>span:not(.status-badge){font-size:11px;color:var(--muted)}.panel-note{font-size:13px;margin:0 0 13px;color:#3c4a61;line-height:1.55}.connection-note{font-size:12px;color:var(--muted);line-height:1.6;background:#f7f9fc;border-radius:6px;padding:10px}.status-badge{font-size:10px;padding:4px 7px;border-radius:10px;background:#edf1f6;color:#667085}.status-badge.ready{background:#e7f7f1;color:var(--success)}.status-badge.waiting{background:#fff7e5;color:var(--warning)}.status-badge.failed{background:#fff0ee;color:var(--danger)}.source-list{display:grid;gap:10px}.source-row{display:grid;grid-template-columns:minmax(100px,1fr) 1fr 45px;align-items:center;gap:8px;font-size:12px}.source-bar{height:6px;background:#e9eef8;border-radius:3px;overflow:hidden}.source-bar i{display:block;height:100%;background:#6b8bf5;border-radius:3px}.source-count{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.empty{padding:26px 12px;text-align:center;color:#98a2b3;font-size:12px;border:1px dashed var(--line);border-radius:7px}.inline-form{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-bottom:14px}.inline-form input,.auth-row input{border:1px solid #d8dee9;border-radius:6px;background:#fff;padding:9px 10px;outline:0;font:inherit;font-size:12px}.inline-form input:focus,.auth-row input:focus{border-color:#7090ef;box-shadow:0 0 0 3px #315ff216}.knowledge-list{display:grid;gap:10px}.knowledge-item{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px}.knowledge-title{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.knowledge-title h3{margin:0;font-size:14px}.knowledge-title p{margin:5px 0 0;font-size:11px;color:var(--muted)}.knowledge-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:11px;font-size:11px;color:#718096}.document-list{display:grid;gap:6px;margin-top:13px;padding-top:11px;border-top:1px solid #edf0f4}.document-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:6px 0;font-size:11px}.document-row span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.document-status{color:var(--muted)}.document-status.ready{color:var(--success)}.document-status.failed{color:var(--danger)}.document-status.waiting{color:var(--warning)}.upload-row{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.upload-row input[type=file]{max-width:260px;font-size:11px}.data-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:11px}.data-table th,.data-table td{padding:8px 6px;text-align:left;border-bottom:1px solid #edf0f4;white-space:nowrap}.data-table th{color:#667085;font-weight:600;background:#fbfcfe}.data-table td{color:#3d4a60}.auth-gate{max-width:440px;margin:62px auto;background:#fff;border:1px solid var(--line);border-radius:9px;padding:22px}.auth-gate h2{margin:0 0 6px;font-size:17px}.auth-gate>p{margin:0 0 16px;color:var(--muted);font-size:12px;line-height:1.5}.auth-row{display:flex;gap:8px;margin-top:9px}.auth-row input{flex:1}.auth-row button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:8px 10px;cursor:pointer;color:#526078;font-size:12px}.auth-row .primary{color:#fff;border-color:var(--blue)}.status-text{min-height:17px!important;margin:10px 0 0!important;color:#526078!important}.toast{position:fixed;right:24px;bottom:24px;background:#172033;color:#fff;border-radius:6px;padding:9px 12px;font-size:12px;opacity:0;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.toast.show{opacity:1;transform:none}@media(max-width:980px){.metric-grid{grid-template-columns:repeat(3,1fr)}.overview-grid,.data-columns{grid-template-columns:1fr}}@media(max-width:700px){.admin-shell{display:block}.admin-side{width:auto;min-height:0;padding:12px;display:flex;flex-direction:row;align-items:center;gap:12px}.admin-brand{padding:0;flex:1}.admin-brand img{width:25px;height:34px}.admin-brand b{font-size:15px}.admin-brand small{font-size:10px}nav{display:flex}.nav-item{font-size:11px;padding:7px}.back-link{display:none}.admin-main{padding:20px 14px 35px}.admin-header{display:block}.header-actions{margin-top:12px;justify-content:space-between}.metric-grid{grid-template-columns:repeat(2,1fr)}.inline-form{grid-template-columns:1fr}.section-heading{align-items:flex-start;display:block}.section-heading button{margin-top:12px}}
.section-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.updated-at{color:var(--muted);font-size:11px;white-space:nowrap}.range-toolbar{display:grid;gap:10px;margin-bottom:14px}.range-options{display:flex;flex-wrap:wrap;gap:6px}.range-button{border:1px solid var(--line);border-radius:6px;background:#fff;color:#526078;padding:7px 10px;font:inherit;font-size:11px;line-height:1;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.range-button:hover{border-color:#b9c8ee;color:var(--blue)}.range-button:focus-visible,.primary:focus-visible,.secondary:focus-visible,.nav-item:focus-visible{outline:2px solid #315ff24d;outline-offset:2px}.range-button.active{border-color:#adc0fa;background:#edf2ff;color:#264dcc;font-weight:600}.custom-range{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}.custom-range[hidden]{display:none}.custom-range label{display:grid;gap:5px;color:var(--muted);font-size:11px}.custom-range input{min-height:32px;border:1px solid #d8dee9;border-radius:6px;padding:6px 8px;color:var(--ink);font:inherit;font-size:12px}.custom-range input:focus{border-color:#7090ef;outline:2px solid #315ff216}.analytics-metrics{grid-template-columns:repeat(6,minmax(112px,1fr))}.chart-panel,.tools-panel,.usage-summary,.usage-purpose{margin-top:14px}.chart-panel .panel-heading{align-items:flex-start}.panel-heading p{margin:5px 0 0;color:var(--muted);font-size:11px}.chart{min-height:270px;display:flex;align-items:center;justify-content:center;overflow:hidden}.compact-chart{min-height:250px}.chart svg{display:block;width:100%;height:auto;overflow:visible}.chart-grid{stroke:#e8ecf3;stroke-width:1}.chart-axis-label{fill:#7b8799;font-size:10px}.chart-line{fill:none;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round}.chart-dot{stroke:#fff;stroke-width:1.5}.chart-series-a{stroke:#315ff2}.chart-series-b{stroke:#16a3a5}.chart-dot.chart-series-a{fill:#315ff2}.chart-dot.chart-series-b{fill:#16a3a5}.chart-legend{display:flex;align-items:center;gap:13px;color:var(--muted);font-size:11px}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{display:inline-block;width:8px;height:8px;border-radius:50%}.legend-uv,.legend-deepseek{background:#315ff2}.legend-pv,.legend-bailian{background:#16a3a5}.rank-list{display:grid;gap:12px}.rank-row{display:grid;grid-template-columns:minmax(92px,1fr) minmax(100px,2.2fr) auto;align-items:center;gap:9px;font-size:12px}.rank-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3d4a60}.rank-track{height:7px;overflow:hidden;border-radius:4px;background:#edf0f5}.rank-track i{display:block;height:100%;min-width:3px;border-radius:4px;background:#6b8bf5}.funnel-list .rank-track i{background:#22a4a6}.rank-value{min-width:38px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.rank-note{margin-left:4px;color:#98a2b3;font-size:10px}.analytics-details{align-items:stretch}.analytics-details .panel{min-height:228px}.usage-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.usage-table{width:100%;min-width:940px;border-collapse:collapse;font-size:11px}.usage-table th,.usage-table td{padding:10px 8px;border-bottom:1px solid #edf0f4;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.usage-table th{background:#fbfcfe;color:#667085;font-weight:600}.usage-table th:first-child,.usage-table td:first-child,.usage-table th:nth-child(2),.usage-table td:nth-child(2){text-align:left}.usage-table td{color:#3d4a60}.provider-name{display:flex;align-items:center;gap:7px;font-weight:600;color:var(--ink)}.provider-dot{width:8px;height:8px;border-radius:50%;background:#315ff2}.provider-dot.bailian{background:#16a3a5}.status-good{color:var(--success);font-weight:600}.status-warn{color:var(--warning);font-weight:600}.skeleton{width:100%;height:12px;border-radius:4px;background:#edf0f4;animation:skeleton-pulse 1.2s ease-in-out infinite}.chart .skeleton{height:190px}.empty-chart{width:100%;padding:76px 12px;text-align:center;color:#98a2b3;font-size:12px;border:1px dashed var(--line);border-radius:7px}@keyframes skeleton-pulse{0%,100%{opacity:.55}50%{opacity:1}}@media(max-width:1100px){.analytics-metrics{grid-template-columns:repeat(3,1fr)}.usage-chart-grid{grid-template-columns:1fr}}@media(max-width:700px){.section-actions{margin-top:12px;justify-content:space-between}.updated-at{white-space:normal}.range-options{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.range-button{flex:0 0 auto}.custom-range{align-items:stretch;flex-wrap:wrap}.custom-range label{flex:1 1 130px}.custom-range>span{display:none}.custom-range .primary{align-self:flex-end}.analytics-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.chart{min-height:225px;overflow-x:auto;justify-content:flex-start}.chart svg{min-width:620px}.panel-heading{align-items:flex-start}.chart-legend{flex-wrap:wrap;justify-content:flex-end}.rank-row{grid-template-columns:minmax(78px,.9fr) minmax(80px,1.5fr) auto}.usage-summary,.usage-purpose,.chart-panel,.tools-panel{margin-top:12px}}@media(prefers-reduced-motion:reduce){.range-button,.toast{transition:none}.skeleton{animation:none}}
.overview-range{display:flex;align-items:center;justify-content:space-between}.period-label{color:var(--muted);font-size:11px}.overview-metrics{grid-template-columns:repeat(6,minmax(112px,1fr))}.overview-metric{appearance:none;display:flex;min-height:112px;flex-direction:column;align-items:flex-start;text-align:left;font:inherit;cursor:pointer;transition:border-color .18s ease,background-color .18s ease}.overview-metric:hover{border-color:#b9c8ee;background:#fbfcff}.overview-metric:focus-visible{outline:2px solid #315ff24d;outline-offset:2px}.metric-change{display:block;margin-top:5px;color:#718096;font-size:10px;line-height:1.4}.metric-change.positive{color:var(--success)}.metric-change.negative{color:var(--danger)}.overview-dashboard-grid{display:grid;gap:14px;margin-top:14px}.overview-primary-grid{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr)}.overview-secondary-grid{grid-template-columns:minmax(330px,.75fr) minmax(0,1.25fr)}.panel-link{border:0;background:transparent;color:var(--blue);padding:3px;font:inherit;font-size:11px;cursor:pointer}.panel-link:hover{text-decoration:underline}.panel-link:focus-visible{outline:2px solid #315ff24d;outline-offset:2px}.service-list,.attention-list,.feedback-preview-list{display:grid;gap:2px}.service-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf0f4}.service-row:last-child,.attention-row:last-child,.feedback-preview:last-child{border-bottom:0}.service-indicator{width:8px;height:8px;border-radius:50%;background:#98a2b3}.service-indicator.ready{background:var(--success)}.service-indicator.waiting{background:#d18b00}.service-indicator.failed{background:var(--danger)}.service-copy{min-width:0}.service-copy b{display:block;color:var(--ink);font-size:12px}.service-copy small{display:block;margin-top:4px;color:var(--muted);font-size:10px;line-height:1.45}.service-state{font-size:10px;font-weight:600}.service-state.ready{color:var(--success)}.service-state.waiting{color:var(--warning)}.service-state.failed{color:var(--danger)}.attention-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:0;border-bottom:1px solid #edf0f4;background:transparent;padding:11px 0;color:#3d4a60;text-align:left;font:inherit;font-size:12px;cursor:pointer}.attention-row:hover .attention-label{color:var(--blue)}.attention-row:focus-visible{outline:2px solid #315ff24d;outline-offset:2px}.attention-label{display:grid;gap:3px}.attention-label small{color:var(--muted);font-size:10px}.attention-count{min-width:28px;border-radius:10px;background:#edf1f6;color:#667085;padding:3px 7px;text-align:center;font-size:10px;font-weight:600}.attention-row.warning .attention-count{background:#fff7e5;color:var(--warning)}.attention-row.failed .attention-count{background:#fff0ee;color:var(--danger)}.feedback-preview{padding:10px 0;border-bottom:1px solid #edf0f4}.feedback-preview-head{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px}.feedback-preview-head b{color:#3d4a60;font-size:11px}.feedback-preview p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin:5px 0 0;color:#526078;font-size:11px;line-height:1.55}.overview-empty{padding:18px 0;color:#98a2b3;text-align:center;font-size:11px}@media(max-width:1100px){.overview-metrics{grid-template-columns:repeat(3,1fr)}.overview-primary-grid,.overview-secondary-grid{grid-template-columns:1fr}}@media(max-width:700px){.overview-range{align-items:flex-start}.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-dashboard-grid{margin-top:12px}.service-row{grid-template-columns:10px minmax(0,1fr)}.service-state{grid-column:2}.overview-secondary-grid{grid-template-columns:minmax(0,1fr)}}
