.chat-page{background:#f5f7fb;height:calc(100vh - 44px);min-height:0;display:flex}.chat-side{color:#dfe4ee;background:#182032;flex-direction:column;width:264px;min-width:264px;display:flex;overflow:hidden}.chat-side-head{border-bottom:1px solid #ffffff14;padding:14px 14px 10px}.chat-brand{color:#fff;letter-spacing:.3px;margin-bottom:12px;font-size:15px;font-weight:700}.chat-new-btn{color:#fff;cursor:pointer;background:#1890ff;border:none;border-radius:8px;width:100%;padding:8px 12px;font-size:13px;transition:background .2s}.chat-new-btn:hover{background:#40a9ff}.chat-side-list{flex:1;padding:8px;overflow-y:auto}.chat-side-list::-webkit-scrollbar{width:3px}.chat-side-list::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.chat-side-empty{text-align:center;color:#66708a;padding:28px 8px;font-size:12px}.chat-side-item{cursor:pointer;border-radius:8px;margin-bottom:2px;padding:9px 10px;transition:background .15s}.chat-side-item:hover{background:#ffffff14}.chat-side-item.active{background:#1890ff38;outline:1px solid #1890ff73}.chat-side-title{color:#eef1f8;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.4;overflow:hidden}.chat-side-item.active .chat-side-title{color:#fff}.chat-side-time{color:#66708a;margin-top:3px;font-size:11px}.chat-side-foot{border-top:1px solid #ffffff14;padding:10px 14px}.chat-legacy-btn{color:#8b93ab;cursor:pointer;background:0 0;border:1px solid #ffffff24;border-radius:7px;width:100%;padding:7px 12px;font-size:12px;transition:all .2s}.chat-legacy-btn:hover{color:#eef1f8;border-color:#ffffff59}.chat-main{flex-direction:column;flex:1;min-width:0;display:flex}.chat-head{background:#fff;border-bottom:1px solid #e8ecf3;flex-shrink:0;align-items:center;gap:10px;height:44px;padding:0 20px;display:flex}.chat-head-title{color:#1a1a2e;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.chat-head-stage{color:#1890ff;white-space:nowrap;background:#e6f7ff;border:1px solid #91d5ff;border-radius:12px;padding:2px 10px;font-size:12px}.chat-thread-area{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.chat-thread{flex-direction:column;flex:1;gap:14px;min-height:0;padding:24px 20px 16px;display:flex;overflow-y:auto}.chat-thread::-webkit-scrollbar{width:4px}.chat-thread::-webkit-scrollbar-thumb{background:#d4dae6;border-radius:2px}.chat-msg{width:100%;display:flex}.chat-msg.user{justify-content:flex-end}.chat-msg.assistant{justify-content:flex-start}.chat-bubble{word-break:break-word;white-space:pre-wrap;border-radius:14px;max-width:78%;padding:12px 16px;font-size:14px;line-height:1.7}.chat-msg.user .user-bubble{color:#fff;background:#1890ff;border-top-right-radius:4px}.chat-msg.assistant .assistant-bubble{color:#1a1a2e;background:#fff;border:1px solid #e8ecf3;border-top-left-radius:4px;max-width:92%;box-shadow:0 1px 6px #00000008}.chat-msg.assistant.error .assistant-bubble{background:#fff7f6;border-color:#ffccc7}.chat-text{white-space:normal}.chat-error-line{color:#cf1322;margin-bottom:4px;font-size:13px}.chat-replay-tip{color:#aaa;margin-top:6px;font-size:11px}.chat-stage{color:#1890ff;background:#e6f7ff;border-radius:12px;margin-bottom:8px;padding:2px 10px;font-size:12px;display:inline-block}.chat-caret{vertical-align:-2px;background:#1890ff;width:7px;height:14px;margin-left:3px;animation:1s steps(2,end) infinite chat-blink;display:inline-block}@keyframes chat-blink{50%{opacity:0}}.query-echo{background:#f8fafd;border:1px solid #e3e8f0;border-radius:8px;margin-bottom:8px;overflow:hidden}.query-echo-head{cursor:pointer;color:#4a5568;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:7px 12px;font-size:12px;display:flex}.query-echo-head:hover{background:#f0f4fa}.query-echo-icon{font-size:12px}.query-echo-lang{color:#1890ff;font-weight:600}.query-echo-summary{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f;border-radius:10px;margin-left:auto;padding:0 8px}.query-echo-waiting{color:#bbb;margin-left:auto}.query-echo-caret{color:#bbb;font-size:11px}.query-echo-sql{color:#cdd6f4;white-space:pre;background:#101726;border-top:1px solid #e3e8f0;margin:0;padding:10px 12px;font-family:SF Mono,Menlo,Monaco,Courier New,monospace;font-size:11px;line-height:1.6;overflow-x:auto}.struct-result{margin:10px 0 6px}.struct-title{color:#333;margin-bottom:6px;font-size:13px;font-weight:600}.struct-chart{background:#fff;border:1px solid #f0f0f0;border-radius:10px;width:100%;height:320px;padding:4px}.struct-chart-fallback{margin:6px 0}.struct-chart-failed{color:#8a6d3b;background:#fffbe6;border:1px solid #ffe58f;border-radius:8px;margin-bottom:6px;padding:6px 10px;font-size:12px;line-height:1.6}.struct-chart-failed summary{cursor:pointer;-webkit-user-select:none;user-select:none}.struct-chart-failed-detail{color:#7a5c22;word-break:break-all;margin-top:4px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11.5px}.struct-table-wrap{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #f0f0f0;border-radius:10px;overflow-x:auto}.struct-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}.struct-table th{text-align:left;color:#555;white-space:nowrap;background:#fafafa;border-bottom:2px solid #e8e8e8;padding:8px 12px;font-weight:600}.struct-table td{color:#333;white-space:nowrap;border-bottom:1px solid #f0f0f0;padding:7px 12px}.struct-table tbody tr:hover{background:#fafafa}.struct-table th:first-child,.struct-table td:first-child{z-index:2;background:#fff;position:sticky;left:0;box-shadow:1px 0 #f0f0f0}.struct-table th:first-child{z-index:3;background:#fafafa}.struct-table tbody tr:hover td:first-child{background:#fafafa}.chat-welcome{text-align:center;max-width:560px;margin:auto;padding:20px}.chat-welcome-title{color:#1a1a2e;margin-bottom:10px;font-size:22px;font-weight:700}.chat-welcome-sub{color:#8892a6;margin-bottom:22px;font-size:13px;line-height:1.7}.chat-examples{flex-direction:column;align-items:center;gap:10px;display:flex}.chat-example{color:#1890ff;cursor:pointer;background:#fff;border:1px solid #d6e4ff;border-radius:10px;width:100%;max-width:420px;padding:10px 16px;font-size:13px;transition:all .2s}.chat-example:hover{background:#e6f7ff;border-color:#1890ff}.chat-composer{background:#fff;border-top:1px solid #e8ecf3;flex-shrink:0;padding:12px 20px 14px}.chat-queue{color:#ad8b00;background:#fffbe6;border:1px solid #ffe58f;border-radius:6px;margin-bottom:8px;padding:6px 12px;font-size:12px}.chat-banner{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7;border-radius:6px;margin-bottom:8px;padding:6px 12px;font-size:12px}.chat-input-row{align-items:flex-end;gap:10px;display:flex}.chat-input{resize:none;border:1px solid #d9d9d9;border-radius:10px;outline:none;flex:1;min-height:42px;max-height:160px;padding:10px 14px;font-family:inherit;font-size:14px;line-height:1.6;transition:border-color .2s,box-shadow .2s}.chat-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.chat-input:disabled{background:#fafafa}.chat-send{color:#fff;cursor:pointer;white-space:nowrap;background:#1890ff;border:none;border-radius:10px;min-height:42px;padding:10px 26px;font-size:14px;font-weight:600;transition:background .2s}.chat-send:hover:not(:disabled){background:#40a9ff}.chat-send:disabled{cursor:not-allowed;background:#91d5ff}.chat-hint{color:#b0b8c8;margin-top:6px;font-size:11px}.legacy-bar{background:#fffbe6;border-bottom:1px solid #ffe58f;padding:6px 16px}.legacy-bar button{color:#ad8b00;cursor:pointer;background:0 0;border:none;font-size:12px}.legacy-bar button:hover{color:#d48806}@media (width<=768px){.chat-page{flex-direction:column;height:auto;min-height:calc(100vh - 44px)}.chat-side{width:100%;min-width:0;max-height:200px}.chat-side-head{justify-content:space-between;align-items:center;display:flex}.chat-brand{margin-bottom:0}.chat-new-btn{width:auto;padding:6px 14px}.chat-side-list{gap:4px;padding:6px 8px;display:flex;overflow-x:auto}.chat-side-item{flex-shrink:0;max-width:200px;margin-bottom:0}.chat-bubble{max-width:92%}.chat-thread{padding:16px 12px}.chat-composer{padding:10px 12px}.struct-chart{height:240px}.chat-input-row{flex-direction:column;align-items:stretch}.chat-send{width:100%}}.think-panel{background:#f6f8fc;border:1px dashed #d9e2ef;border-radius:8px;margin-bottom:8px;overflow:hidden}.think-panel-head{cursor:pointer;color:#5a6478;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:6px 12px;font-size:12px;display:flex}.think-panel-head:hover{background:#eef2f9}.think-panel-icon{font-size:12px}.think-panel-lang{color:#6b7a99;font-weight:600}.think-panel-active{color:#ad8b00;margin-left:auto;font-size:11px;animation:1s steps(2,end) infinite chat-blink}.think-panel-count{color:#b0b8c8;margin-left:auto;font-size:11px}.think-panel-caret{color:#b0b8c8;font-size:11px}.think-panel-body{color:#4a5568;white-space:pre-wrap;word-break:break-word;background:#fbfcfe;border-top:1px dashed #dce4f0;max-height:320px;padding:8px 12px;font-size:12px;line-height:1.8;overflow-y:auto}.export-actions{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 2px;display:flex}.export-btn{color:#4a6fa5;cursor:pointer;background:#f2f6fc;border:1px solid #cfe0f2;border-radius:14px;padding:2px 10px;font-size:12px;line-height:20px;transition:background .15s}.export-btn:hover{background:#e3edfa}.export-btn:disabled{opacity:.6;cursor:default}.md-body{font-size:14px;line-height:1.75}.md-body>:first-child{margin-top:0}.md-body>:last-child{margin-bottom:0}.md-body p{margin:6px 0}.md-body h1,.md-body h2,.md-body h3,.md-body h4{color:#1f2328;margin:10px 0 6px;font-weight:600}.md-body h1{font-size:16px}.md-body h2{font-size:15px}.md-body h3{font-size:14px}.md-body h4{font-size:13px}.md-body ul,.md-body ol{margin:6px 0;padding-left:24px}.md-body li{margin:2px 0}.md-body code{background:#eef1f6;border-radius:4px;padding:1px 5px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12.5px}.md-body pre{color:#cdd6f4;background:#101726;border-radius:8px;padding:10px 12px;line-height:1.6;overflow-x:auto}.md-body pre code{color:inherit;background:0 0;padding:0}.md-body blockquote{color:#5a6478;border-left:3px solid #d6e4ff;margin:6px 0;padding:2px 12px}.md-body a{color:#1890ff;text-decoration:none}.md-body hr{border:none;border-top:1px solid #e8ecf3;margin:10px 0}.md-table-wrap{overflow-x:auto}.md-body table{border-collapse:collapse;margin:6px 0;font-size:13px}.md-body th,.md-body td{text-align:left;border:1px solid #e5e7eb;padding:5px 9px}.md-body th{background:#f6f8fa}.chat-jump{z-index:20;color:#1890ff;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d6e4ff;border-radius:18px;align-items:center;gap:4px;padding:6px 14px;font-size:12px;transition:background .15s,box-shadow .15s;display:inline-flex;position:absolute;bottom:14px;right:20px;box-shadow:0 2px 10px #0000001a}.chat-jump:hover{background:#e6f7ff;box-shadow:0 3px 14px #00000024}.chat-bgnote{color:#5a6478;background:#f2f4f8;border:1px solid #dfe4ec;border-radius:6px;margin-bottom:8px;padding:6px 12px;font-size:12px}.chat-queue-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.chat-queue-row .chat-queue{flex:1;margin-bottom:0}.chat-cancel-btn{color:#cf1322;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #ffa39e;border-radius:999px;flex:none;padding:5px 14px;font-size:12px;font-weight:600;transition:all .2s}.chat-cancel-btn:hover:not(:disabled){background:#fff2f0;border-color:#cf1322}.chat-cancel-btn:disabled{color:#bbb;cursor:not-allowed;border-color:#e5e5e5}.chat-done-note{color:#1e7a4c;background:#f0f9f2;border:1px solid #b7e3c6;border-radius:6px;margin-bottom:8px;padding:6px 12px;font-size:12px}.chat-cancel-tag{color:#ffffffe6;background:#ffffff38;border:1px solid #fff6;border-radius:999px;margin-top:6px;padding:1px 9px;font-size:11px;line-height:1.4;display:inline-block}.feedback-bar{color:#8a93a6;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 0;font-size:12px;display:flex}.feedback-label{color:#9aa3b5}.feedback-btn{cursor:pointer;background:#fbfcfe;border:1px solid #e3e8f0;border-radius:12px;padding:3px 7px;font-size:13px;line-height:1;transition:all .15s}.feedback-btn:hover{background:#f0f4fb}.feedback-btn.down.active{background:#fff7e0;border-color:#c9a227}.feedback-panel{background:#fafbfd;border:1px solid #edf0f5;border-radius:8px;flex-direction:column;gap:6px;width:100%;margin:4px 0 0;padding:6px 8px;display:flex}.feedback-reasons{flex-wrap:wrap;gap:4px 12px;display:flex}.feedback-reason{cursor:pointer;color:#4b5563;align-items:center;gap:3px;display:inline-flex}.feedback-reason input{accent-color:#c9a227;margin:0}.feedback-text{box-sizing:border-box;border:1px solid #e3e8f0;border-radius:6px;outline:none;width:100%;padding:3px 8px;font-size:12px}.feedback-text:focus{border-color:#a9bdd8}.feedback-submit{color:#4a6fa5;cursor:pointer;background:#f2f6fc;border:1px solid #cfe0f2;border-radius:12px;align-self:flex-start;padding:2px 12px;font-size:12px;line-height:20px}.feedback-submit:hover:not(:disabled){background:#e3edfa}.feedback-submit:disabled{opacity:.5;cursor:default}.feedback-done{color:#7aa37a}.feedback-link{color:#4a6fa5;cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.feedback-err{color:#c0392b;font-size:12px}.admin-insight{padding:16px}.admin-sub-tabs{border-bottom:1px solid #e2e8f0;gap:8px;margin-bottom:14px;padding-bottom:8px;display:flex}.admin-sub-tab{cursor:pointer;color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:6px;padding:6px 14px;font-size:13px}.admin-sub-tab.active{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.admin-insight-block{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px}.admin-insight-block h4{color:#334155;margin:14px 0 6px}.admin-filter-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.admin-input{border:1px solid #cbd5e1;border-radius:6px;padding:6px 10px;font-size:13px}.admin-input.wide{min-width:260px}.admin-total{color:#64748b;margin-left:auto;font-size:12px}.admin-btn{cursor:pointer;color:#1e293b;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;padding:6px 12px;font-size:13px}.admin-btn:hover:not(:disabled){background:#e2e8f0}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-btn.small{padding:3px 8px;font-size:12px}.admin-table th{text-align:left;color:#475569;background:#f1f5f9;border-bottom:1px solid #e2e8f0;padding:6px 8px}.admin-table td{color:#1e293b;vertical-align:top;border-bottom:1px solid #f1f5f9;padding:6px 8px}.admin-table tbody tr.clickable{cursor:pointer}.badge{border-radius:4px;padding:1px 6px;font-size:11px;display:inline-block}.badge-ok{color:#15803d;background:#dcfce7}.badge-err{color:#b91c1c;background:#fee2e2;margin-right:4px}.mono{font-family:ui-monospace,monospace;font-size:12px}.mono-tiny{color:#64748b;font-family:ui-monospace,monospace;font-size:11px}.dim{color:#94a3b8}.center{text-align:center}.admin-drawer{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin:10px 0;padding:10px}.admin-drawer-head{justify-content:space-between;margin-bottom:6px;display:flex}.admin-pre{white-space:pre-wrap;word-break:break-all;color:#e2e8f0;background:#0f172a;border-radius:6px;max-height:220px;padding:8px;font-size:12px;overflow:auto}.admin-msg{border-bottom:1px dashed #e2e8f0;padding:6px 0}.admin-page-btns{color:#64748b;align-items:center;gap:10px;margin-top:10px;font-size:13px;display:flex}.admin-cards{flex-wrap:wrap;gap:10px;margin-bottom:8px;display:flex}.admin-card{text-align:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;min-width:90px;padding:10px 16px}.admin-card-value{color:#1d4ed8;font-size:22px;font-weight:700}.admin-card-label{color:#64748b;font-size:12px}.admin-mini-chart{color:#475569;font-size:12px;line-height:1.8}.small{font-size:12px}@media (width<=640px){.admin-insight-block{overflow-x:auto}.admin-sub-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.admin-filter-row{flex-direction:column;align-items:stretch}.admin-input.wide{width:100%;min-width:0}.admin-insight-block .admin-table{min-width:520px}.admin-cards{flex-direction:column}.admin-pre{max-height:40vh}}.ext-wrap{color:#1f2937;padding:4px 0 24px;font-size:13px}.ext-limits{color:#33507d;background:#f3f7ff;border:1px solid #d7e3ff;border-radius:8px;flex-wrap:wrap;gap:16px;margin-bottom:10px;padding:8px 12px;font-size:12.5px;display:flex}.ext-limits b{color:#1d4ed8}.ext-counts{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.ext-total{color:#6b7280;margin-left:auto}.ext-chip{color:#4b5563;background:#f1f3f5;border:1px solid #e3e6ea;border-radius:999px;padding:2px 10px;font-size:12px}.ext-chip-running{color:#1d4ed8;background:#e8f1ff;border-color:#c7dcff}.ext-chip-done{color:#15803d;background:#e9f8ee;border-color:#c5ebd3}.ext-chip-failed{color:#b91c1c;background:#fdecec;border-color:#f6cfcf}.ext-chip-expired{color:#6b7280;background:#f4f4f5;border-color:#e4e4e7}.ext-msg{color:#8a5a00;background:#fff8e6;border:1px solid #ffe2a8;border-radius:6px;margin-bottom:10px;padding:7px 12px}.ext-empty{text-align:center;color:#8b95a1;padding:28px 12px}.ext-table{border-collapse:collapse;background:#fff;width:100%}.ext-table th,.ext-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #eef0f3;padding:7px 9px}.ext-table th{color:#4b5563;white-space:nowrap;background:#fafbfc;font-weight:600}.ext-table tr:hover td{background:#fcfdff}.ext-status{white-space:nowrap;background:#f1f3f5;border-radius:999px;padding:2px 8px;font-size:12px}.ext-status-running{color:#1d4ed8;background:#e8f1ff}.ext-status-done{color:#15803d;background:#e9f8ee}.ext-status-failed{color:#b91c1c;background:#fdecec}.ext-status-expired,.ext-status-canceled{color:#6b7280;background:#f4f4f5}.ext-error{color:#b91c1c;margin-top:2px;font-size:11.5px}.ext-bar{vertical-align:middle;background:#eef0f3;border-radius:3px;width:72px;height:6px;display:inline-block;overflow:hidden}.ext-bar-in{background:#3b82f6;height:100%;transition:width .3s}.ext-pct{color:#6b7280;margin-left:6px;font-size:11.5px}.ext-dropped{color:#b45309;margin-left:4px;font-size:11.5px}.ext-fname{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.ext-fsize{color:#8b95a1;font-size:11.5px}.ext-expired{color:#9ca3af}.ext-hint{color:#8b95a1;font-size:12px}.ext-actions{white-space:nowrap}.ext-btn{cursor:pointer;color:#374151;background:#fff;border:1px solid #d7dbe0;border-radius:6px;margin-right:6px;padding:3px 10px;font-size:12px}.ext-btn:hover:not(:disabled){background:#f7f9fc;border-color:#b9c2cc}.ext-btn:disabled{opacity:.5;cursor:not-allowed}.ext-btn-primary{color:#fff;background:#2563eb;border-color:#2563eb}.ext-btn-primary:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.ext-pager{color:#6b7280;align-items:center;gap:10px;margin-top:12px;display:flex}.export-page{max-width:1200px;margin:0 auto;padding:18px 20px 60px}.export-page-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.export-page-head h2{margin:0;font-size:20px}.export-page-sub{color:#6b7280;font-size:13px}.export-page-note{color:#52627a;background:#f7f9fc;border:1px solid #e6ebf2;border-radius:8px;margin:10px 0 16px;padding:9px 12px;font-size:12.5px}.export-section-title{color:#1f2937;margin:22px 0 8px;font-size:15px;font-weight:600}*{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a2e;background:#f0f5ff;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.loading-screen{color:#555;flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100vh;display:flex}.loading-spinner{border:3px solid #e0e0e0;border-top-color:#1890ff;border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{background:linear-gradient(135deg,#e8f4fd 0%,#f0f5ff 50%,#e6f7ff 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{text-align:center;background:#fff;border-radius:12px;width:400px;max-width:90vw;padding:48px 40px;box-shadow:0 8px 40px #00000014}.login-icon{margin-bottom:16px;font-size:48px}.login-title{color:#1a1a2e;margin-bottom:8px;font-size:22px;font-weight:700}.login-desc{color:#888;margin-bottom:32px;font-size:14px}.form-group{margin-bottom:16px}.form-group input{border:1px solid #d9d9d9;border-radius:8px;outline:none;width:100%;padding:12px 16px;font-size:15px;transition:border-color .2s}.form-group input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.login-error{color:#cf1322;background:#fff2f0;border-radius:6px;margin-bottom:16px;padding:8px 12px;font-size:13px}.login-btn{color:#fff;cursor:pointer;background:#1890ff;border:none;border-radius:8px;width:100%;padding:12px;font-size:16px;font-weight:600;transition:background .2s}.login-btn:hover{background:#40a9ff}.login-btn:disabled{cursor:not-allowed;background:#91d5ff}.query-page{flex-direction:column;min-height:100vh;display:flex}.query-header{background:#fff;border-bottom:1px solid #e8e8e8;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 20px;display:flex;box-shadow:0 1px 4px #0000000a}.query-header h1{font-size:18px;font-weight:700}.header-right{align-items:center;gap:12px;display:flex}.user-badge{color:#555;background:#f5f5f5;border-radius:12px;padding:4px 12px;font-size:13px}.logout-btn{color:#999;cursor:pointer;background:0 0;border:1px solid #d9d9d9;border-radius:6px;padding:4px 12px;font-size:13px}.logout-btn:hover{color:#ff4d4f;border-color:#ff4d4f}.font-toggle{cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;min-width:36px;padding:4px 10px;line-height:1;transition:all .2s;display:inline-flex}.font-toggle .ft-letter{color:#555;font-family:Georgia,Times New Roman,serif;font-size:16px;font-weight:700;transition:font-size .15s}.font-toggle .ft-plus{color:#1890ff;vertical-align:super;margin-left:1px;font-size:11px;font-weight:700;line-height:1}.font-toggle.large .ft-letter{color:#1a1a2e;font-size:22px}.font-toggle:hover{background:#f0f5ff;border-color:#1890ff}.query-main.font-large .result-summary{font-size:20px}.query-main.font-large .result-table{font-size:18px}.query-main.font-large .result-table th,.query-main.font-large .result-table td{padding:14px 18px}.query-main.font-large .result-sql-info{font-size:17px}.query-main.font-large .algo-section-title{font-size:18px}.query-main.font-large .algo-sql-code{font-size:16px}.query-main.font-large .algo-note-label{min-width:100px;font-size:15px}.query-main.font-large .algo-note-content,.query-main.font-large .confidence-info{font-size:16px}.query-main.font-large .result-error{font-size:17px}.query-main.font-large .insight-card-value{font-size:28px}.query-main.font-large .insight-card-label{font-size:15px}.query-main.font-large .insight-subtitle{font-size:17px}.query-main.font-large .insight-tag-name{font-size:16px}.query-main.font-large .insight-tag-count,.query-main.font-large .insight-tag-rank{font-size:15px}.query-body{flex:1;height:calc(100vh - 52px);display:flex;overflow:hidden}.history-panel{background:#fff;border-right:1px solid #e8e8e8;flex-direction:column;width:300px;min-width:300px;height:100%;transition:width .2s,min-width .2s;display:flex;overflow:hidden}.history-panel.collapsed{width:48px;min-width:48px}.history-header{border-bottom:1px solid #f0f0f0;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.history-count{color:#999;background:#f5f5f5;border-radius:10px;margin-left:6px;padding:1px 7px;font-size:11px}.history-collapse-btn{cursor:pointer;color:#999;background:0 0;border:1px solid #e8e8e8;border-radius:4px;flex-shrink:0;padding:3px 6px;font-size:11px;transition:all .2s}.history-collapse-btn:hover{color:#1890ff;border-color:#1890ff}.history-collapsed-tip{writing-mode:vertical-rl;text-align:center;color:#1890ff;cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:2px;padding:16px 0;font-size:13px}.history-collapsed-tip:hover{background:#f0f7ff}.history-search{flex-shrink:0;padding:10px 12px;position:relative}.history-search-input{border:1px solid #d9d9d9;border-radius:5px;outline:none;width:100%;padding:7px 28px 7px 10px;font-size:12px;transition:border-color .2s}.history-search-input:focus{border-color:#1890ff}.history-actions{flex-shrink:0;padding:2px 12px 8px}.history-clear-btn{color:#999;cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:4px;padding:3px 10px;font-size:11px;transition:all .2s}.history-clear-btn:hover{color:#ff4d4f;border-color:#ff4d4f}.history-clear-btn:disabled{opacity:.5;cursor:not-allowed}.history-list::-webkit-scrollbar{width:3px}.history-list::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.history-item{cursor:pointer;border-bottom:1px solid #f5f5f5;padding:10px 14px;transition:background .15s}.history-item-fail{opacity:.5}.history-item-text{align-items:flex-start;gap:6px;margin-bottom:4px;display:flex}.history-item-status{flex-shrink:0;font-size:10px;line-height:1.6}.history-item-question{color:#333;text-overflow:ellipsis;-webkit-line-clamp:2;word-break:break-all;-webkit-box-orient:vertical;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.history-item-meta{color:#ccc;align-items:center;gap:8px;padding-left:20px;font-size:11px;display:flex}.history-item-time{color:#bbb}.history-item-ms{color:#ddd}.history-item-del{color:#0000;cursor:pointer;background:0 0;border:none;border-radius:3px;margin-left:auto;padding:2px 4px;font-size:10px;transition:all .15s}.history-item:hover .history-item-del{color:#ddd}.history-item-del:hover{background:#fff2f0;color:#ff4d4f!important}.history-loading{text-align:center;color:#999;padding:20px;font-size:12px}.history-load-more{text-align:center;color:#ccc;padding:12px;font-size:11px}.history-end{text-align:center;color:#ddd;padding:16px;font-size:11px}.query-main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:24px;overflow-y:auto}.query-input-area{gap:12px;margin-bottom:12px;display:flex}.query-input{border:1px solid #d9d9d9;border-radius:8px;outline:none;flex:1;padding:14px 18px;font-size:15px;transition:border-color .2s,box-shadow .2s}.query-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.query-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#1890ff;border:none;border-radius:8px;padding:14px 32px;font-size:15px;font-weight:600;transition:background .2s}.query-btn:hover{background:#40a9ff}.query-btn:disabled{cursor:not-allowed;background:#91d5ff}.templates-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:24px;display:flex}.templates-label{color:#888;white-space:nowrap;font-size:13px}.template-tag{color:#1890ff;cursor:pointer;background:#e6f7ff;border:1px solid #91d5ff;border-radius:14px;padding:4px 14px;font-size:13px;transition:all .2s}.template-tag:hover{color:#fff;background:#1890ff;border-color:#1890ff}.result-error{color:#cf1322;white-space:pre-wrap;background:#fff2f0;border-radius:8px;margin-bottom:16px;padding:16px 20px;font-size:14px;line-height:1.6}.intent-card{background:#fff;border:1px solid #e8e8e8;border-radius:10px;margin-bottom:4px;padding:14px 18px;box-shadow:0 1px 8px #0000000a}.intent-card-header{align-items:center;gap:8px;margin-bottom:10px;display:flex}.intent-card-icon{font-size:18px}.intent-card-title{color:#333;font-size:14px;font-weight:600}.intent-card-badge{color:#fff;background:#1890ff;border-radius:4px;margin-left:auto;padding:2px 10px;font-size:12px;font-weight:500}.intent-card-body{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.intent-chip{color:#1a1a2e;background:#f0f5ff;border:1px solid #d6e4ff;border-radius:6px;padding:3px 10px;font-size:13px;font-weight:500;display:inline-block}.intent-chip-agg{color:#389e0d;background:#f6ffed;border-color:#b7eb8f}.intent-chip-dim{color:#d46b08;background:#fff7e6;border-color:#ffd591}.intent-arrow{color:#ccc;font-size:14px}.intent-conditions{flex-wrap:wrap;gap:4px;margin-left:4px;display:flex}.intent-condition-tag{color:#555;background:#fafafa;border:1px solid #eee;border-radius:4px;padding:2px 8px;font-size:12px}.intent-card-warnings{border-top:1px solid #f5f5f5;margin-top:10px;padding-top:10px}.intent-warning-item{color:#d46b08;background:#fffbe6;border-radius:4px;margin-bottom:4px;padding:4px 10px;font-size:13px}.query-main.font-large .intent-card-title{font-size:16px}.query-main.font-large .intent-chip{font-size:14px}.query-main.font-large .intent-condition-tag{font-size:13px}.query-main.font-large .intent-warning-item{font-size:14px}.scope-warning{color:#ad8b00;background:#fffbe6;border:1px solid #ffe58f;border-radius:8px;align-items:flex-start;gap:10px;margin-bottom:16px;padding:12px 16px;font-size:14px;line-height:1.6;display:flex}.scope-warning-icon{flex-shrink:0;font-size:18px;line-height:1.4}.scope-warning-text{white-space:pre-line}.query-main.font-large .scope-warning{padding:14px 18px;font-size:16px}.result-area{flex-direction:column;gap:20px;display:flex}.result-chart{background:#fff;border:1px solid #f0f0f0;border-radius:10px;padding:16px;box-shadow:0 2px 12px #0000000a}.result-sql-info{color:#888;align-items:center;gap:8px;font-size:13px;display:flex}.sql-source-tag{color:#1890ff;background:#f0f5ff;border:1px solid #d6e4ff;border-radius:10px;padding:2px 10px;font-size:12px;font-weight:500}.sql-elapsed{color:#bbb;font-size:12px}.algo-toggle{color:#1890ff;cursor:pointer;background:0 0;border:1px solid #d6e4ff;border-radius:6px;margin-left:auto;padding:4px 12px;font-size:13px;transition:all .2s}.algo-toggle:hover,.algo-toggle.active{background:#e6f7ff;border-color:#1890ff}.algo-panel{background:#fafbfc;border:1px solid #e8e8e8;border-radius:8px;margin-top:8px;padding:16px 20px}.algo-section{margin-bottom:14px}.algo-section:last-child{margin-bottom:0}.algo-section-title{color:#333;margin-bottom:8px;font-size:14px;font-weight:600}.algo-sql-code{color:#cdd6f4;white-space:pre;background:#1e1e2e;border-radius:6px;padding:12px 16px;font-family:SF Mono,Menlo,Monaco,Courier New,monospace;font-size:13px;line-height:1.6;overflow-x:auto}.algo-notes{flex-direction:column;gap:6px;display:flex}.algo-note-item{align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;display:flex}.algo-note-label{color:#1890ff;text-align:center;background:#e6f7ff;border-radius:4px;flex-shrink:0;min-width:80px;padding:1px 8px;font-size:12px;font-weight:500}.algo-note-content{color:#555}.result-table-wrapper{background:#fff;border:1px solid #f0f0f0;border-radius:10px;padding:20px 24px;overflow-x:auto;box-shadow:0 2px 12px #0000000a}.result-summary{color:#1a1a2e;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-size:15px;font-weight:600;display:flex}.csv-download-btn{color:#52c41a;cursor:pointer;white-space:nowrap;background:#f6ffed;border:1px solid #b7eb8f;border-radius:6px;flex-shrink:0;padding:4px 12px;font-size:12px;font-weight:500;transition:all .2s}.csv-download-btn:hover{color:#389e0d;background:#d9f7be;border-color:#73d13d}.pagination-bar{border-top:1px solid #f0f0f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding:12px 0;font-size:13px;display:flex}.pagination-info{color:#666;white-space:nowrap;font-weight:500}.pagination-controls{align-items:center;gap:4px;display:flex}.pagination-controls button{cursor:pointer;color:#333;background:#fff;border:1px solid #d9d9d9;border-radius:4px;padding:4px 12px;font-size:13px;transition:all .2s}.pagination-controls button:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.pagination-controls button:disabled{opacity:.35;cursor:not-allowed;background:#fafafa}.pagination-pages{color:#666;white-space:nowrap;margin:0 8px;font-weight:500}.pagination-page-size{color:#666;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:4px;outline:none;padding:4px 8px;font-size:12px}.pagination-page-size:focus{border-color:#1890ff}.result-summary>span{flex:1;min-width:0}.result-table{border-collapse:collapse;width:100%;font-size:14px}.result-table th{text-align:left;color:#555;white-space:nowrap;background:#fafafa;border-bottom:2px solid #e8e8e8;padding:10px 14px;font-weight:600}.result-table td{color:#333;border-bottom:1px solid #f0f0f0;padding:9px 14px}.result-table tbody tr:hover{background:#fafafa}.confidence-info{color:#888;margin-top:12px;font-size:13px}.query-layout{flex:1;min-height:0;display:flex}.sidebar-toggle{color:#888;cursor:pointer;background:0 0;border:1px solid #e8e8e8;border-radius:6px;padding:4px 10px;font-size:12px;transition:all .2s}.sidebar-toggle:hover{color:#1890ff;background:#f5f5f5;border-color:#1890ff}.query-main{flex:1;width:100%;min-width:0;max-width:1100px;margin:0 auto;padding:24px}.history-panel{background:#fff;border-right:1px solid #e8e8e8;flex-direction:column;width:320px;min-width:320px;max-height:calc(100vh - 57px);display:flex;overflow:hidden}.history-header{border-bottom:1px solid #f0f0f0;justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex}.history-title{color:#1a1a2e;font-size:15px;font-weight:600}.history-count{color:#bbb;font-size:12px}.history-search{padding:10px 16px;position:relative}.history-search-input{box-sizing:border-box;border:1px solid #d9d9d9;border-radius:6px;outline:none;width:100%;padding:8px 32px 8px 12px;font-size:13px;transition:border-color .2s}.history-search-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.history-search-clear{color:#bbb;cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:14px;position:absolute;top:50%;right:22px;transform:translateY(-50%)}.history-search-clear:hover{color:#666}.history-list{flex:1;padding:0 8px 8px;overflow-y:auto}.history-date-group{color:#bbb;letter-spacing:.5px;padding:10px 8px 4px;font-size:11px;font-weight:500}.history-item{cursor:pointer;border-radius:6px;align-items:center;gap:6px;min-height:36px;padding:8px 10px;transition:background .15s;display:flex;position:relative}.history-item:hover{background:#f5f8ff}.history-item-failed{opacity:.5;cursor:default}.history-item-deleting{opacity:.3;pointer-events:none}.history-item-icon{flex-shrink:0;font-size:12px}.history-item-text{color:#333;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;line-height:1.4;overflow:hidden}.history-item:hover .history-item-text{color:#1890ff}.history-item-time{color:#ccc;flex-shrink:0;margin-left:auto;font-size:11px}.history-item-delete{color:#ccc;cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:14px;line-height:1;display:none}.history-item:hover .history-item-delete{display:flex}.history-item-delete:hover{color:#ff4d4f;background:#fff1f0}.history-empty{text-align:center;color:#bbb;padding:40px 16px;font-size:13px}.history-load-more{color:#888;cursor:pointer;background:0 0;border:1px dashed #d9d9d9;border-radius:6px;width:100%;margin-top:4px;padding:10px;font-size:13px;transition:all .2s}.history-load-more:hover{color:#1890ff;background:#f5f8ff;border-color:#1890ff}.history-load-more:disabled{cursor:not-allowed;opacity:.5}.history-loading{padding:12px}.history-loading-item{background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%) 0 0/200% 100%;border-radius:4px;height:14px;margin-bottom:12px;animation:1.5s ease-in-out infinite shimmer}.history-loading-item:first-child{width:85%}.history-loading-item:nth-child(2){width:70%}.history-loading-item:nth-child(3){width:90%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.history-footer{border-top:1px solid #f0f0f0;padding:8px 16px}.history-clear-btn{color:#ff7875;cursor:pointer;background:0 0;border:1px solid #ffd9d9;border-radius:6px;width:100%;padding:8px;font-size:13px;transition:all .2s}.history-clear-btn:hover{color:#ff4d4f;background:#fff2f0;border-color:#ff4d4f}.chart-container{width:100%;height:400px}@media (width<=768px){.query-header{padding:10px 12px}.query-header h1{font-size:15px}.header-right{gap:6px}.user-badge,.logout-btn{padding:2px 8px;font-size:11px}.dict-btn{padding:2px 6px;font-size:13px}.query-main{max-width:100%;padding:12px}.history-panel{z-index:1000;border-right:none;width:85vw;max-width:320px;height:100vh;max-height:100vh;transition:left .25s;position:fixed;top:0;left:-100%;box-shadow:4px 0 20px #00000026}.history-panel.mobile-open{left:0}.history-overlay{z-index:999;background:#00000059;width:100vw;height:100vh;position:fixed;top:0;left:0}.query-input-area{flex-direction:column;gap:8px}.query-input{padding:12px 14px;font-size:16px}.query-btn{width:100%;padding:12px}.templates-bar{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:6px;padding-bottom:4px;overflow-x:auto}.templates-bar::-webkit-scrollbar{height:2px}.templates-bar::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.templates-label{flex-shrink:0}.template-tag{flex-shrink:0;padding:6px 12px;font-size:12px}.result-area{gap:12px}.chart-container{height:250px}.result-chart{padding:8px}.result-table-wrapper{border-radius:0;margin:0 -12px;padding:12px;overflow-x:auto}.result-summary{font-size:14px}.result-table{min-width:500px;font-size:12px}.result-table th,.result-table td{padding:6px 10px}.algo-panel{padding:12px}.algo-sql-code{white-space:pre-wrap;padding:10px;font-size:11px}.algo-note-label{min-width:60px;font-size:11px}.algo-note-content{font-size:12px}.result-sql-info{flex-wrap:wrap;gap:6px}.algo-toggle{margin-left:0}.result-error{padding:12px 16px;font-size:13px}.confidence-info{font-size:12px}.font-toggle{min-width:32px;padding:3px 8px}.font-toggle .ft-letter{font-size:14px}.font-toggle .ft-plus{font-size:10px}.font-toggle.large .ft-letter{font-size:18px}.query-main.font-large .result-table{font-size:16px}.query-main.font-large .result-table th,.query-main.font-large .result-table td{padding:10px 12px}.query-main.font-large .result-summary{font-size:17px}.query-main.font-large .insight-card-value{font-size:22px}.query-main.font-large .insight-card-label{font-size:13px}.query-main.font-large .insight-subtitle{font-size:15px}.query-main.font-large .insight-tag-name{font-size:14px}.query-main.font-large .insight-tag-count,.query-main.font-large .insight-tag-rank{font-size:13px}}.insights-bar{background:#fff;border:1px solid #f0f0f0;border-radius:10px;margin-bottom:16px;padding:16px 20px;box-shadow:0 2px 12px #0000000a}.insights-bar.loading{padding:12px 20px}.insights-bar.collapsed{padding:8px 20px}.insights-loading{color:#bbb;text-align:center;padding:4px;font-size:13px}.insights-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.insights-bar.collapsed .insights-header{margin-bottom:0}.insights-title{color:#1a1a2e;font-size:15px;font-weight:700}.insights-toggle{color:#1890ff;cursor:pointer;background:0 0;border:1px solid #d6e4ff;border-radius:4px;padding:2px 10px;font-size:12px;transition:all .2s}.insights-toggle:hover{background:#e6f7ff}.insights-cards{grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px;display:grid}.insight-card{text-align:center;background:#fafbff;border:1px solid #f0f0f0;border-radius:8px;padding:12px 10px;transition:transform .15s,box-shadow .15s}.insight-card:hover{transform:translateY(-1px);box-shadow:0 2px 8px #1890ff14}.insight-card.highlight{background:#e6f7ff;border-color:#91d5ff}.insight-card.rate{background:#fffbe6;border-color:#ffe58f}.insight-card-label{color:#888;margin-bottom:4px;font-size:11px}.insight-card-value{color:#1a1a2e;font-size:22px;font-weight:700}.insight-card.highlight .insight-card-value{color:#1890ff}.insight-card.rate .insight-card-value{color:#d48806}.insights-detail{gap:16px;margin-bottom:12px;display:flex}.insight-trend-chart{flex:1;min-width:0}.insight-trend-container{width:100%;height:100px}.insight-subtitle{color:#666;margin-bottom:6px;font-size:12px;font-weight:600}.insight-top-lists{flex-shrink:0;gap:16px;display:flex}.insight-top-list{min-width:160px}.insight-tags{flex-direction:column;gap:4px;display:flex}.insight-tag{color:#555;background:#fafafa;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;transition:background .15s;display:flex}.insight-tag:hover{background:#f0f5ff}.insight-tag-rank{color:#bbb;min-width:18px;font-size:11px;font-weight:700}.insight-tag-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.insight-tag-count{color:#1890ff;font-size:11px;font-weight:600}.insights-alerts{margin-bottom:8px}.insight-alert{border-radius:6px;margin-bottom:4px;padding:6px 12px;font-size:12px;line-height:1.5}.insight-alert.warning{color:#d46b08;background:#fff7e6;border:1px solid #ffd591}.insight-alert.info{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.insights-footer{color:#ccc;text-align:right;font-size:11px}.feedback-buttons{border-top:1px solid #f5f5f5;align-items:center;gap:8px;margin-top:16px;padding-top:12px;display:flex}.feedback-label{color:#999;margin-right:4px;font-size:13px}.feedback-btn{cursor:pointer;color:#888;background:#fafafa;border:1px solid #e8e8e8;border-radius:6px;padding:6px 14px;font-size:13px;transition:all .2s}.feedback-btn:hover{color:#1890ff;background:#f0f5ff;border-color:#1890ff}.feedback-btn.like.active{color:#52c41a;background:#e6f7ff;border-color:#52c41a}.feedback-btn.dislike.active{color:#ff4d4f;background:#fff2f0;border-color:#ff4d4f}.feedback-btn:disabled{opacity:.5;cursor:not-allowed}@media (width<=768px){.insights-bar{margin-bottom:12px;padding:12px}.insights-cards{grid-template-columns:repeat(2,1fr);gap:6px}.insight-card:last-child:nth-child(odd){grid-column:1/-1}.insight-card{padding:8px 10px}.insight-card-value{font-size:18px}.insights-detail,.insight-top-lists{flex-direction:column;gap:12px}.insight-top-list{min-width:auto}.insight-trend-container{height:80px}.feedback-buttons{flex-wrap:wrap}.feedback-label{width:100%;margin-bottom:4px}}.dict-btn{cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;padding:4px 8px;font-size:16px;line-height:1;transition:all .2s;display:inline-flex}.dict-btn:hover{background:#f0f5ff;border-color:#1890ff}.dict-overlay{z-index:2000;background:#0006;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dict-modal{background:#fff;border-radius:14px;flex-direction:column;width:600px;max-width:100%;max-height:85vh;animation:.2s ease-out dict-slide-in;display:flex;box-shadow:0 20px 60px #00000026}@keyframes dict-slide-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.dict-header{flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px 0;display:flex}.dict-title{color:#1a1a2e;font-size:18px;font-weight:700}.dict-close{color:#bbb;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:18px;transition:all .15s}.dict-close:hover{color:#333;background:#f5f5f5}.dict-search{flex-shrink:0;padding:12px 20px;position:relative}.dict-search-input{border:1px solid #d9d9d9;border-radius:8px;outline:none;width:100%;padding:10px 36px 10px 14px;font-size:14px;transition:border-color .2s}.dict-search-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.dict-search-clear{color:#ccc;cursor:pointer;background:0 0;border:none;padding:4px;font-size:13px;position:absolute;top:50%;right:24px;transform:translateY(-50%)}.dict-search-clear:hover{color:#666}.dict-tabs{border-bottom:1px solid #f0f0f0;flex-shrink:0;gap:4px;padding:0 20px 10px;display:flex}.dict-tab{cursor:pointer;color:#888;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 14px;font-size:13px;transition:all .2s}.dict-tab:hover{color:#1890ff;background:#f0f5ff}.dict-tab.active{color:#1890ff;background:#e6f7ff;border-color:#91d5ff;font-weight:600}.dict-body{flex:1;padding:12px 20px 4px;overflow-y:auto}.dict-body::-webkit-scrollbar{width:4px}.dict-body::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.dict-body::-webkit-scrollbar-thumb:hover{background:#ccc}.dict-empty{text-align:center;color:#bbb;padding:40px 16px;font-size:14px}.dict-group{margin-bottom:16px}.dict-group-title{color:#555;align-items:center;gap:6px;margin-bottom:8px;font-size:14px;font-weight:700;display:flex}.dict-group-count{color:#bbb;background:#f5f5f5;border-radius:8px;padding:0 7px;font-size:11px;font-weight:400}.dict-list{flex-direction:column;gap:4px;display:flex}.dict-card{cursor:pointer;background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px;transition:all .15s}.dict-card:hover{background:#f5faff;border-color:#d6e4ff}.dict-card.expanded{background:#f0f7ff;border-color:#91d5ff}.dict-card-header{align-items:center;gap:8px;display:flex}.dict-card-term{color:#1a1a2e;font-size:14px;font-weight:700}.dict-card-cat{color:#1890ff;background:#e6f7ff;border-radius:4px;padding:1px 7px;font-size:10px;font-weight:500}.dict-card-arrow{color:#ccc;margin-left:auto;font-size:10px;transition:transform .15s}.dict-card.expanded .dict-card-arrow{color:#1890ff}.dict-card-short{color:#888;margin-top:3px;font-size:12px;line-height:1.4}.dict-card-detail{border-top:1px solid #e8e8e8;margin-top:8px;padding-top:8px}.dict-card-detail p{color:#555;font-size:13px;line-height:1.6}.dict-card-example{color:#555;background:#f5f8ff;border:1px solid #e6f0ff;border-radius:6px;margin-top:8px;padding:8px 10px;font-size:13px;line-height:1.5}.dict-example-label{color:#1890ff;font-weight:600}.dict-footer{color:#bbb;text-align:center;border-top:1px solid #f0f0f0;flex-shrink:0;padding:10px 20px;font-size:12px}.dict-modal.font-large .dict-title{font-size:20px}.dict-modal.font-large .dict-search-input{padding:12px 38px 12px 16px;font-size:16px}.dict-modal.font-large .dict-tab{padding:8px 16px;font-size:15px}.dict-modal.font-large .dict-card-term{font-size:16px}.dict-modal.font-large .dict-card-short{font-size:14px}.dict-modal.font-large .dict-card-detail p,.dict-modal.font-large .dict-card-example{font-size:15px}.dict-modal.font-large .dict-group-title{font-size:16px}@media (width<=768px){.dict-overlay{align-items:flex-end;padding:0}.dict-modal{border-radius:14px 14px 0 0;width:100%;max-width:100%;max-height:90vh;animation:.25s ease-out dict-slide-up}@keyframes dict-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dict-header{padding:14px 16px 0}.dict-search{padding:10px 16px}.dict-tabs{gap:2px;padding:0 16px 8px;overflow-x:auto}.dict-tab{white-space:nowrap;padding:5px 10px;font-size:12px}.dict-body{padding:8px 16px 4px}.dict-card{padding:8px 12px}.dict-card-header{gap:6px}.dict-card-term{font-size:13px}.dict-card-short{font-size:11px}.dict-card-detail p{font-size:12px}.dict-footer{padding:8px 16px}.dict-btn{padding:3px 6px;font-size:14px}}.login-log-modal{max-height:70vh}.login-log-modal .dict-title-count{color:#bbb;flex:1;margin-left:10px;font-size:12px;font-weight:400}.log-list{flex-direction:column;gap:6px;display:flex}.log-item{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px;transition:background .15s}.log-item:hover{background:#f5faff;border-color:#d6e4ff}.log-item-fail{background:#fff8f8;border-color:#ffe0e0}.log-item-fail:hover{background:#fff2f0;border-color:#ffccc7}.log-item-header{align-items:center;gap:8px;margin-bottom:3px;display:flex}.log-item-user{color:#1a1a2e;font-size:14px;font-weight:700}.log-item-status{font-size:11px;font-weight:500}.log-item-status.success{color:#52c41a}.log-item-status.fail{color:#ff4d4f}.log-item-time{color:#bbb;margin-left:auto;font-size:11px}.log-item-detail{color:#888;align-items:center;gap:10px;font-size:12px;display:flex}.log-item-ip{color:#999}.log-item-reason{color:#ff7875;background:#fff2f0;border-radius:4px;padding:1px 6px;font-size:11px}.log-item-ua{color:#ccc;text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:10px;overflow:hidden}.login-log-modal.font-large .log-item-user{font-size:16px}.login-log-modal.font-large .log-item-time{font-size:13px}.login-log-modal.font-large .log-item-detail{font-size:14px}@media (width<=768px){.login-log-modal .dict-title-count{font-size:11px}.log-item{padding:8px 12px}.log-item-user{font-size:13px}.log-item-time{font-size:10px}.log-item-detail{flex-wrap:wrap;font-size:11px}.log-item-ua{font-size:9px}}.sql-editor-hint{color:#bbb;margin-left:8px;font-size:12px;font-weight:400}.algo-sql-editor{color:#1a1a2e;resize:vertical;background:#fafbfc;border:1px solid #d9d9d9;border-radius:6px;outline:none;width:100%;min-height:120px;padding:12px 14px;font-family:SF Mono,Monaco,Menlo,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;transition:border-color .2s,box-shadow .2s}.algo-sql-editor:focus{background:#fff;border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.algo-sql-editor::placeholder{color:#ccc}.sql-editor-actions{align-items:center;gap:8px;margin-top:8px;display:flex}.sql-run-btn{color:#fff;cursor:pointer;background:#52c41a;border:none;border-radius:6px;padding:8px 18px;font-size:13px;font-weight:600;transition:background .2s}.sql-run-btn:hover{background:#73d13d}.sql-run-btn:disabled{cursor:not-allowed;background:#b7eb8f}.sql-reset-btn{color:#888;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:8px 14px;font-size:12px;transition:all .2s}.sql-reset-btn:hover{color:#1890ff;background:#f0f5ff;border-color:#1890ff}.sql-error-msg{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7;border-radius:6px;margin-top:8px;padding:8px 12px;font-size:13px}.query-main.font-large .algo-sql-editor{padding:14px 16px;font-size:16px}.query-main.font-large .sql-run-btn{padding:10px 22px;font-size:15px}.query-main.font-large .sql-reset-btn{padding:10px 16px;font-size:14px}.query-main.font-large .sql-error-msg{font-size:15px}.query-main.font-large .sql-editor-hint{font-size:14px}.modal-overlay{z-index:2000;background:#0006;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:14px;width:400px;max-width:100%;animation:.2s ease-out dict-slide-in;box-shadow:0 20px 60px #00000026}.modal-header{justify-content:space-between;align-items:center;padding:16px 20px 0;display:flex}.modal-header h2{color:#1a1a2e;font-size:18px;font-weight:700}.modal-close{color:#bbb;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:22px;line-height:1;transition:all .15s}.modal-close:hover{color:#333;background:#f5f5f5}.modal-body{padding:16px 20px 20px}.password-modal .form-group{margin-bottom:14px}.form-label{color:#555;margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-input{border:1px solid #d9d9d9;border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s,box-shadow .2s}.form-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.password-message{border-radius:6px;margin-bottom:14px;padding:8px 12px;font-size:13px}.password-message.success{color:#389e0d;background:#f6ffed;border:1px solid #b7eb8f}.password-message.error{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7}.password-submit-btn{color:#fff;cursor:pointer;background:#1890ff;border:none;border-radius:8px;width:100%;margin-top:4px;padding:10px;font-size:15px;font-weight:600;transition:background .2s}.password-submit-btn:hover{background:#40a9ff}.password-submit-btn:disabled{cursor:not-allowed;background:#91d5ff}@media (width<=768px){.modal-overlay{align-items:flex-end;padding:0}.modal-content{border-radius:14px 14px 0 0;width:100%;max-width:100%;animation:.25s ease-out dict-slide-up}.modal-header{padding:14px 16px 0}.modal-header h2{font-size:16px}.modal-body{padding:12px 16px 20px}.form-label{font-size:12px}.form-input{padding:10px 12px;font-size:13px}.password-submit-btn{font-size:14px}}.admin-nav-bar{color:#fff;background:#1a1a2e;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 20px;font-size:13px;display:flex}.admin-nav-title{letter-spacing:.5px;font-weight:600}.admin-nav-btn{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:6px;padding:5px 14px;font-size:12px;transition:all .2s}.admin-nav-btn:hover{background:#fff3;border-color:#fff6}.admin-page{background:#f0f2f5;flex-direction:column;min-height:100vh;display:flex}.admin-header{z-index:10;background:#fff;border-bottom:1px solid #e8e8e8;flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 20px;display:flex;box-shadow:0 1px 4px #0000000a}.admin-header-left{align-items:center;gap:10px;display:flex}.admin-header-icon{font-size:22px}.admin-header-title{color:#1a1a2e;font-size:17px;font-weight:700}.admin-header-right{align-items:center;gap:10px;display:flex}.admin-user-badge{color:#555;background:#f5f5f5;border-radius:10px;padding:4px 10px;font-size:12px}.admin-back-btn{color:#1890ff;cursor:pointer;background:#f0f5ff;border:1px solid #d6e4ff;border-radius:6px;padding:5px 12px;font-size:12px;transition:all .2s}.admin-back-btn:hover{color:#096dd9;background:#e6f0ff}.admin-logout-btn{color:#999;cursor:pointer;background:0 0;border:1px solid #d9d9d9;border-radius:6px;padding:5px 12px;font-size:12px;transition:all .2s}.admin-logout-btn:hover{color:#ff4d4f;border-color:#ff4d4f}.admin-sync-btn{color:#52c41a;cursor:pointer;white-space:nowrap;background:#f6ffed;border:1px solid #b7eb8f;border-radius:6px;padding:5px 12px;font-size:12px;transition:all .2s}.admin-sync-btn:hover:not(:disabled){color:#389e0d;background:#d9f7be}.admin-sync-btn:disabled{opacity:.6;cursor:not-allowed}.admin-sync-toast{color:#389e0d;z-index:9999;background:#f6ffed;border:1px solid #b7eb8f;border-radius:8px;max-width:400px;padding:12px 20px;font-size:14px;line-height:1.5;animation:.3s ease-out toast-in;position:fixed;top:60px;right:20px;box-shadow:0 4px 12px #0000001a}.sync-result-modal{max-width:600px!important}.sync-result-section{margin-bottom:16px}.sync-result-label{color:#555;margin-bottom:8px;font-size:13px;font-weight:600}.sync-result-label.error{color:#cf1322}.sync-result-files{flex-direction:column;gap:4px;display:flex}.sync-result-file{background:#fafafa;border-radius:4px;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.sync-result-file.backend{border-left:3px solid #1890ff}.sync-result-file.frontend{border-left:3px solid #52c41a}.sync-result-filename{color:#333;font-family:monospace}.sync-result-diff{color:#999;font-family:monospace;font-size:11px}.sync-result-log{color:#a6e3a1;white-space:pre-wrap;word-break:break-all;background:#1e1e2e;border-radius:6px;max-height:200px;padding:12px 14px;font-family:SF Mono,Monaco,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;overflow:auto}.sync-result-log.error{color:#ff6b6b;background:#2e1e1e}.sync-result-close{text-align:right;margin-top:8px}.dh-alerts{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.dh-alert{border-radius:8px;align-items:flex-start;gap:8px;padding:10px 14px;font-size:13px;line-height:1.5;display:flex}.dh-alert-error{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7}.dh-alert-warning{color:#d48806;background:#fffbe6;border:1px solid #ffe58f}.dh-alert-info{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.dh-alert-icon{flex-shrink:0;font-size:16px;line-height:1.4}.dh-alert-text{flex:1}.dh-sync-list{flex-direction:column;gap:4px;display:flex}.dh-sync-item{background:#fafafa;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-size:12px;display:flex}.dh-sync-item:nth-child(odd){background:#f5f5f5}.dh-sync-time{color:#888;min-width:120px;font-family:monospace}.dh-sync-status{min-width:80px;font-weight:600}.dh-sync-status.status-success{color:#52c41a}.dh-sync-status.status-no_data{color:#1890ff}.dh-sync-status.status-error{color:#cf1322}.dh-sync-rows{color:#999;margin-left:auto;font-family:monospace}.dh-sync-total{color:#999;justify-content:space-between;align-items:center;margin-top:8px;font-size:12px;display:flex}.dh-sync-file{cursor:pointer;color:#1890ff;text-underline-offset:2px;text-decoration:underline}.dh-empty-state{text-align:center;color:#ccc;padding:40px 0;font-size:13px}.dh-file-info{flex-direction:column;gap:6px;display:flex}.dh-file-row{border-bottom:1px solid #f5f5f5;justify-content:space-between;align-items:center;padding:6px 0;font-size:13px;display:flex}.dh-file-row:last-child{border-bottom:none}.dh-file-label{color:#888;flex-shrink:0}.dh-file-value{color:#333;text-align:right;word-break:break-all;font-weight:500}.dh-file-path{color:#999;text-overflow:ellipsis;max-width:200px;font-family:monospace;font-size:11px;overflow:hidden}.dh-trend-section{background:#fff;border-radius:10px;margin-top:20px;padding:20px;box-shadow:0 1px 4px #0000000a}.dh-trend-table-wrapper{max-height:400px;overflow:auto}.dh-trend-table{border-collapse:collapse;width:100%;font-size:13px}.dh-trend-table th{text-align:left;color:#555;background:#fafafa;border-bottom:2px solid #f0f0f0;padding:8px 14px;font-weight:600;position:sticky;top:0}.dh-trend-table td{border-bottom:1px solid #f5f5f5;padding:7px 14px}.dh-trend-table tbody tr:hover{background:#f5faff}.dh-trend-date{color:#555;font-family:monospace}.dh-trend-value{color:#333;font-family:monospace;font-weight:600}.dh-trend-change{font-family:monospace;font-size:12px}.dh-change-up{color:#52c41a}.dh-change-down{color:#cf1322}.dh-change-flat{color:#999}.admin-body{flex:1;height:calc(100vh - 54px);display:flex;overflow:hidden}.admin-sidebar{background:#fff;border-right:1px solid #e8e8e8;flex-direction:column;gap:2px;width:160px;min-width:160px;padding:12px 0;display:flex}.admin-sidebar-item{color:#555;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;width:calc(100% - 16px);margin:0 8px;padding:10px 16px;font-size:14px;transition:all .15s;display:flex}.admin-sidebar-item:hover{color:#1a1a2e;background:#f5f5f5}.admin-sidebar-item.active{color:#1890ff;background:#e6f7ff;font-weight:600}.admin-sidebar-icon{flex-shrink:0;font-size:16px}.admin-sidebar-label{font-size:13px}.admin-main{flex:1;padding:24px;overflow-y:auto}.admin-content{max-width:1200px}.admin-page-title{color:#1a1a2e;margin-bottom:8px;font-size:20px;font-weight:700}.admin-page-desc{color:#888;font-size:14px}.overview-cards{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.overview-card{background:#fff;border-radius:10px;align-items:center;gap:14px;padding:20px;transition:box-shadow .2s;display:flex;box-shadow:0 1px 4px #0000000a}.overview-card:hover{box-shadow:0 4px 16px #00000014}.overview-card-icon{flex-shrink:0;font-size:28px}.overview-card-body{min-width:0}.overview-card-value{color:#1a1a2e;font-size:28px;font-weight:700;line-height:1.2}.overview-card-label{color:#888;margin-top:2px;font-size:13px}.overview-card.highlight .overview-card-value{color:#1890ff}.overview-card.warn .overview-card-value{color:#fa8c16}.overview-grid{grid-template-columns:1.5fr 1fr;gap:16px;display:grid}.overview-chart-card,.overview-pending-card{background:#fff;border-radius:10px;padding:20px;box-shadow:0 1px 4px #0000000a}.overview-section-title{color:#1a1a2e;align-items:center;gap:8px;margin-bottom:16px;font-size:15px;font-weight:600;display:flex}.overview-chart-container{width:100%;height:240px}.overview-pending-badge{color:#fff;background:#fa8c16;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:600}.overview-empty-state{text-align:center;color:#bbb;padding:40px 0;font-size:14px}.overview-pending-list{flex-direction:column;gap:6px;display:flex}.overview-pending-item{cursor:pointer;background:#fafafa;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;transition:background .15s;display:flex}.overview-pending-item:hover{background:#f0f7ff}.overview-pending-type{border-radius:4px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:600}.overview-pending-type.type-validation_fail{color:#cf1322;background:#fff2f0}.overview-pending-type.type-user_dislike{color:#d46b08;background:#fff7e6}.overview-pending-question{color:#333;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.overview-pending-time{color:#bbb;flex-shrink:0;font-size:11px}.admin-loading{text-align:center;color:#999;padding:60px 0;font-size:14px}.admin-empty{text-align:center;color:#bbb;padding:60px 0;font-size:14px}@media (width<=900px){.overview-cards{grid-template-columns:repeat(2,1fr)}.overview-grid{grid-template-columns:1fr}}.admin-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.admin-toolbar-right{align-items:center;gap:12px;display:flex}.admin-search-box{align-items:center;display:flex;position:relative}.admin-search-input{border:1px solid #d9d9d9;border-radius:6px;outline:none;width:200px;padding:8px 36px 8px 12px;font-size:13px;transition:border-color .2s}.admin-search-input:focus{border-color:#1890ff}.admin-search-btn{cursor:pointer;color:#999;background:0 0;border:none;padding:4px 6px;font-size:14px;line-height:1;position:absolute;right:4px}.admin-search-btn:hover{color:#1890ff}.admin-search-clear{cursor:pointer;color:#ccc;background:0 0;border:none;padding:2px;font-size:12px;line-height:1;position:absolute;right:28px}.admin-search-clear:hover{color:#666}.admin-btn-primary{color:#fff;cursor:pointer;white-space:nowrap;background:#1890ff;border:none;border-radius:6px;padding:8px 18px;font-size:13px;font-weight:600;transition:background .2s}.admin-btn-primary:hover{background:#40a9ff}.admin-btn-cancel{color:#666;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:8px 18px;font-size:13px;transition:all .2s}.admin-btn-cancel:hover{color:#333;border-color:#bbb}.admin-btn-confirm{color:#fff;cursor:pointer;background:#1890ff;border:none;border-radius:6px;padding:8px 18px;font-size:13px;font-weight:600;transition:background .2s}.admin-btn-confirm:hover{background:#40a9ff}.admin-btn-confirm.danger{background:#ff4d4f}.admin-btn-confirm.danger:hover{background:#ff7875}.admin-toast{border-radius:6px;margin-bottom:12px;padding:10px 16px;font-size:13px;animation:.25s ease-out toast-in}.admin-toast.success{color:#389e0d;background:#f6ffed;border:1px solid #b7eb8f}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.admin-table-meta{color:#888;margin-bottom:12px;font-size:13px}.admin-table-wrapper{background:#fff;border-radius:10px;overflow-x:auto;box-shadow:0 1px 4px #0000000a}.admin-table{border-collapse:collapse;width:100%;font-size:13px}.admin-table th{text-align:left;color:#555;white-space:nowrap;background:#fafafa;border-bottom:1px solid #f0f0f0;padding:12px 14px;font-weight:600}.admin-table td{color:#333;border-bottom:1px solid #f5f5f5;padding:10px 14px}.admin-table tbody tr:hover{background:#fafbff}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table-loading,.admin-table-empty{text-align:center;color:#999;padding:40px 0!important}.admin-cell-username{color:#1a1a2e;font-weight:600}.admin-cell-desc{color:#888;text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.admin-cell-time{color:#999;white-space:nowrap;font-size:12px}.admin-cell-num{text-align:center;color:#555;font-weight:600}.admin-cell-actions{white-space:nowrap;gap:4px;display:flex}.admin-role-tag{border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.admin-role-tag.admin{color:#1890ff;background:#e6f7ff}.admin-role-tag.user{color:#666;background:#f5f5f5}.admin-role-tag.analyst{color:#fa8c16;background:#fff7e6}.admin-cell-perms{min-width:150px}.admin-perm-note{color:#1890ff;font-size:12px;font-weight:600}.admin-perm-dots{flex-wrap:wrap;gap:4px;display:flex}.admin-perm-chip{white-space:nowrap;border-radius:4px;padding:0 6px;font-size:11px;line-height:18px;display:inline-block}.admin-perm-chip.on{color:#2e7d32;background:#e8f5e9;border:1px solid #a5d6a7}.admin-perm-chip.off{color:#bbb;background:#f5f5f5;border:1px solid #ececec}.admin-perm-checkboxes{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.admin-perm-check{cursor:pointer;-webkit-user-select:none;user-select:none;background:#fafafa;border:1px solid #ddd;border-radius:6px;align-items:center;gap:5px;padding:5px 10px;font-size:13px;display:inline-flex}.admin-perm-check.on{background:#e8f5e9;border-color:#a5d6a7}.admin-perm-check.locked{opacity:.75;cursor:not-allowed;background:#f5f5f5}.admin-form-hint{color:#999;margin-top:6px;font-size:12px}.admin-status-tag{font-size:12px}.admin-action-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:3px 5px;font-size:14px;line-height:1;transition:all .15s}.admin-action-btn:hover{background:#f5f5f5;border-color:#e0e0e0}.admin-action-btn.danger:hover{background:#fff2f0;border-color:#ffccc7}.admin-pagination{color:#888;justify-content:center;align-items:center;gap:12px;margin-top:16px;font-size:13px;display:flex}.admin-pagination button{color:#555;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:6px 14px;font-size:12px;transition:all .15s}.admin-pagination button:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.admin-pagination button:disabled{opacity:.4;cursor:not-allowed}.form-select{appearance:auto;background:#fff;border:1px solid #d9d9d9;border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s}.form-select:focus{border-color:#1890ff}.admin-form-error{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7;border-radius:6px;margin-bottom:14px;padding:8px 12px;font-size:13px}.admin-confirm-text{color:#555;margin-bottom:20px;font-size:14px;line-height:1.6}.admin-confirm-actions{justify-content:flex-end;gap:10px;display:flex}@media (width<=768px){.admin-toolbar{flex-direction:column;align-items:flex-start}.admin-toolbar-right{flex-wrap:wrap;width:100%}.admin-search-input{width:100%}.admin-table th,.admin-table td{padding:8px 10px;font-size:12px}}.incident-stats-bar{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.incident-stat{background:#fff;border-radius:8px;flex-direction:column;align-items:center;min-width:80px;padding:12px 20px;display:flex;box-shadow:0 1px 4px #0000000a}.incident-stat.highlight{border:1px solid #fa8c16}.incident-stat-value{color:#1a1a2e;font-size:22px;font-weight:700}.incident-stat.highlight .incident-stat-value{color:#fa8c16}.incident-stat-label{color:#888;margin-top:2px;font-size:11px}.incident-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.incident-filter-select,.incident-filter-date{background:#fff;border:1px solid #d9d9d9;border-radius:6px;outline:none;min-width:100px;padding:7px 10px;font-size:12px}.incident-filter-select:focus,.incident-filter-date:focus{border-color:#1890ff}.incident-filter-sep{color:#ccc;font-size:12px}.incident-filter-input{border:1px solid #d9d9d9;border-radius:6px;outline:none;width:180px;padding:7px 10px;font-size:12px;transition:border-color .2s}.incident-filter-input:focus{border-color:#1890ff}.incident-filter-btn{padding:7px 16px!important;font-size:12px!important}.incident-filter-clear{color:#999;cursor:pointer;background:0 0;border:1px solid #d9d9d9;border-radius:6px;padding:6px 10px;font-size:11px;transition:all .15s}.incident-filter-clear:hover{color:#ff4d4f;border-color:#ff4d4f}.incident-batch-bar{background:#fff7e6;border:1px solid #ffd591;border-radius:8px;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;animation:.2s ease-out toast-in;display:flex}.incident-batch-info{color:#d46b08;font-size:13px;font-weight:600}.incident-batch-btn{cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;transition:all .15s}.incident-batch-btn:disabled{opacity:.5;cursor:not-allowed}.incident-batch-btn.approve{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.incident-batch-btn.approve:hover:not(:disabled){background:#d9f7be}.incident-batch-btn.ignore{color:#888;background:#f5f5f5;border:1px solid #d9d9d9}.incident-batch-btn.ignore:hover:not(:disabled){background:#e8e8e8}.incident-batch-btn.danger{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7}.incident-batch-btn.danger:hover:not(:disabled){background:#ffd8d2}.incident-table-meta{color:#888;margin-bottom:8px;font-size:13px}.incident-list{flex-direction:column;gap:6px;display:flex}.incident-loading,.incident-empty{text-align:center;color:#999;background:#fff;border-radius:10px;padding:60px 0;font-size:14px;box-shadow:0 1px 4px #0000000a}.incident-card{background:#fff;border-radius:8px;transition:box-shadow .15s;box-shadow:0 1px 4px #0000000a}.incident-card:hover{box-shadow:0 2px 8px #00000014}.incident-card.expanded{border:1px solid #d6e4ff;box-shadow:0 2px 12px #1890ff1a}.incident-card-header{cursor:pointer;align-items:center;gap:8px;padding:10px 14px;display:flex}.incident-checkbox{cursor:pointer;flex-shrink:0;align-items:center;display:flex}.incident-checkbox input{display:none}.incident-checkbox-custom{border:2px solid #d9d9d9;border-radius:3px;flex-shrink:0;width:16px;height:16px;transition:all .15s;display:inline-block;position:relative}.incident-checkbox input:checked+.incident-checkbox-custom{background:#1890ff;border-color:#1890ff}.incident-checkbox input:checked+.incident-checkbox-custom:after{content:"✓";color:#fff;font-size:12px;font-weight:700;position:absolute;top:-2px;left:2px}.incident-type-tag{border-radius:4px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600}.incident-type-tag.type-validation_fail{color:#cf1322;background:#fff2f0}.incident-type-tag.type-user_dislike{color:#d46b08;background:#fff7e6}.incident-status-tag{border-radius:4px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600}.incident-status-tag.status-pending{color:#d46b08;background:#fff7e6}.incident-status-tag.status-analyzing{color:#1890ff;background:#e6f7ff}.incident-status-tag.status-resolved{color:#52c41a;background:#f6ffed}.incident-status-tag.status-wontfix{color:#999;background:#f5f5f5}.incident-env-tag{color:#888;background:#f0f0f0;border-radius:3px;flex-shrink:0;padding:1px 6px;font-size:10px;font-weight:500}.incident-question{color:#333;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.incident-expand-btn{color:#999;cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:4px;flex-shrink:0;padding:3px 10px;font-size:11px;transition:all .15s}.incident-expand-btn:hover{color:#1890ff;border-color:#1890ff}.incident-card-meta{color:#bbb;align-items:center;gap:12px;padding:0 14px 8px 42px;font-size:11px;display:flex}.incident-meta-id{color:#ddd;font-family:monospace}.incident-meta-time{color:#ccc}.incident-meta-resolved{color:#52c41a}.incident-fix-status-tag{color:#8c8c8c;background:#f5f5f5;border:1px solid #d9d9d9;border-radius:10px;margin-left:6px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.incident-fix-status-tag.fix-fix_applying{color:#d46b08;background:#fff7e6;border-color:#ffd591;animation:1.2s ease-in-out infinite pulse-fix}.incident-fix-status-tag.fix-fix_verified{color:#389e0d;background:#f6ffed;border-color:#b7eb8f}.incident-fix-status-tag.fix-fix_failed{color:#cf1322;background:#fff2f0;border-color:#ffccc7}@keyframes pulse-fix{0%,to{opacity:1}50%{opacity:.6}}.incident-detail-meta{color:#8c8c8c;margin-top:4px;font-size:12px}.incident-detail{border-top:1px solid #f0f0f0;padding:14px 14px 14px 42px}.incident-detail-loading{text-align:center;color:#999;padding:20px;font-size:13px}.incident-detail-section{margin-bottom:14px}.incident-detail-label{color:#555;margin-bottom:6px;font-size:12px;font-weight:600}.incident-detail-text{color:#333;background:#fafafa;border-radius:6px;padding:8px 12px;font-size:13px;line-height:1.6}.incident-detail-sql{color:#a6e3a1;white-space:pre-wrap;word-break:break-all;background:#1e1e2e;border-radius:6px;padding:12px 14px;font-family:SF Mono,Monaco,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;overflow-x:auto}.incident-detail-error{color:#cf1322;background:#fff2f0;border-radius:6px;padding:8px 12px;font-size:13px}.incident-detail-warnings{margin:0;padding:0;list-style:none}.incident-detail-warnings li{color:#d46b08;background:#fff7e6;border-radius:4px;margin-bottom:4px;padding:6px 10px;font-size:13px}.incident-detail-analysis{color:#333;white-space:pre-wrap;background:#f0f5ff;border-radius:6px;padding:8px 12px;font-size:13px;line-height:1.6}.incident-detail-fix{color:#333;white-space:pre-wrap;background:#f6ffed;border-radius:6px;padding:8px 12px;font-size:13px;line-height:1.6}.incident-detail-links{color:#888;font-size:12px}.incident-detail-actions{border-top:1px solid #f0f0f0;flex-wrap:wrap;gap:8px;margin-top:16px;padding-top:12px;display:flex}.incident-action-btn{cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;transition:all .15s}.incident-action-btn:disabled{opacity:.5;cursor:not-allowed}.incident-action-btn.approve{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.incident-action-btn.approve:hover:not(:disabled){background:#d9f7be}.incident-action-btn.ignore{color:#888;background:#f5f5f5;border:1px solid #d9d9d9}.incident-action-btn.ignore:hover:not(:disabled){background:#e8e8e8}.incident-action-btn.reopen{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.incident-action-btn.reopen:hover:not(:disabled){background:#bae7ff}.incident-action-btn.analyze{color:#722ed1;background:#f0f5ff;border:1px solid #d3adf7}.incident-action-btn.analyze:hover:not(:disabled){background:#efdbff}.incident-action-btn.fix{color:#08979c;background:#e6fffb;border:1px solid #87e8de}.incident-action-btn.fix:hover:not(:disabled){background:#b5f5ec}.incident-action-btn.danger{color:#cf1322;background:#fff2f0;border:1px solid #ffccc7}.incident-action-btn.danger:hover:not(:disabled){background:#ffd8d2}.incident-footer{justify-content:space-between;align-items:center;margin-top:16px;display:flex}.incident-select-all-label{color:#888;cursor:pointer;margin-left:6px;font-size:12px}.select-all{align-items:center;display:flex}.admin-btn-secondary{color:#555;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:8px 18px;font-size:13px;transition:all .2s}.admin-btn-secondary:hover{color:#1890ff;border-color:#1890ff}.query-status-dot{flex-shrink:0;font-size:14px;line-height:1}.query-username-tag{color:#1890ff;background:#f0f5ff;border-radius:4px;flex-shrink:0;padding:2px 8px;font-family:monospace;font-size:11px;font-weight:600}.query-elapsed{color:#999;background:#f5f5f5;border-radius:4px;flex-shrink:0;padding:2px 8px;font-family:monospace;font-size:11px}.incident-filter-select{background:#fff;border:1px solid #d9d9d9;border-radius:6px;outline:none;min-width:120px;padding:7px 12px;font-size:12px;transition:border-color .2s}.incident-filter-select:focus{border-color:#1890ff}.admin-table-meta-filtered{color:#888;margin-left:8px;font-size:12px;font-weight:400}.admin-search-clear-inline{color:#1890ff;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin-left:6px;font-size:12px;text-decoration:underline}.admin-search-clear-inline:hover{color:#ff4d4f}@media (width<=900px){.query-username-tag{padding:1px 5px;font-size:10px}.query-elapsed{font-size:10px}.incident-filters{flex-direction:column;align-items:stretch}.incident-filter-input{width:100%}.incident-filter-date{min-width:auto}.incident-card-header{flex-wrap:wrap}.incident-question{order:10;width:100%;margin-top:4px}.incident-expand-btn{margin-left:auto}.incident-detail{padding-left:14px}.incident-detail-actions{flex-direction:column}.incident-footer{flex-direction:column;gap:12px}}.query-tabs{background:#fff;border-bottom:1px solid #e8e8e8;gap:0;padding:0 24px;display:flex}.query-tab{color:#666;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:12px 24px;font-size:14px;font-weight:500;transition:all .2s}.query-tab:hover{color:#1890ff;background:#f0f8ff}.query-tab.active{color:#1890ff;background:0 0;border-bottom-color:#1890ff}.export-panel{max-width:800px;margin:0 auto;padding:20px 24px}.export-loading{text-align:center;color:#999;padding:40px;font-size:14px}.export-section{background:#fff;border-radius:8px;margin-bottom:16px;padding:16px 20px;box-shadow:0 1px 4px #0000000f}.export-section-title{color:#1a1a2e;align-items:center;margin-bottom:12px;font-size:15px;font-weight:600;display:flex}.export-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.export-grid{grid-template-columns:1fr}}.export-field{flex-direction:column;gap:4px;display:flex}.export-field-label{color:#555;font-size:13px;font-weight:500}.export-input{border:1px solid #d9d9d9;border-radius:6px;outline:none;width:100%;padding:8px 12px;font-size:13px;transition:border-color .2s}.export-input:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.export-select{cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-radius:6px;outline:none;padding:8px 12px;font-size:13px}.export-month-range{align-items:center;gap:8px;display:flex}.export-range-sep{color:#999;flex-shrink:0}.export-range{accent-color:#1890ff;width:100%}.export-range-labels{color:#999;justify-content:space-between;font-size:11px;display:flex}.export-tag-input{flex-direction:column;gap:6px;display:flex}.export-tags{flex-wrap:wrap;gap:4px;display:flex}.export-tag{color:#1890ff;background:#e6f7ff;border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;display:inline-flex}.export-tag button{color:#1890ff;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.export-tag button:hover{color:#ff4d4f}.ms-wrapper{position:relative}.ms-label{color:#555;margin-bottom:4px;font-size:13px;font-weight:500}.ms-trigger{cursor:pointer;border:1px solid #d9d9d9;border-radius:6px;justify-content:space-between;align-items:center;min-height:36px;padding:8px 12px;font-size:13px;transition:border-color .2s;display:flex}.ms-trigger:hover{border-color:#1890ff}.ms-placeholder{color:#bbb}.ms-count{color:#1890ff;font-weight:500}.ms-arrow{color:#999;margin-left:8px;font-size:10px}.ms-dropdown{z-index:100;background:#fff;border:1px solid #d9d9d9;border-radius:6px;flex-direction:column;max-height:300px;margin-top:4px;display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 4px 12px #0000001a}.ms-search{border:none;border-bottom:1px solid #f0f0f0;outline:none;padding:8px 12px;font-size:13px}.ms-options{flex:1;overflow-y:auto}.ms-option{cursor:pointer;align-items:center;gap:8px;padding:6px 12px;font-size:13px;transition:background .15s;display:flex}.ms-option:hover{background:#f5f9ff}.ms-option input[type=checkbox]{accent-color:#1890ff}.ms-empty{text-align:center;color:#999;padding:12px;font-size:13px}.ms-actions{text-align:right;border-top:1px solid #f0f0f0;padding:6px 12px}.ms-actions button{color:#999;cursor:pointer;background:0 0;border:none;font-size:12px}.ms-actions button:hover{color:#ff4d4f}.export-formats{flex-direction:column;gap:8px;display:flex}.export-format-option{cursor:pointer;border:1px solid #e8e8e8;border-radius:6px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;transition:all .2s;display:flex}.export-format-option:hover{background:#f8fbff;border-color:#1890ff}.export-format-option.active{background:#f0f8ff;border-color:#1890ff}.export-format-option input[type=radio]{accent-color:#1890ff}.export-format-label{color:#333;flex:1}.export-format-size{color:#1890ff;white-space:nowrap;font-size:12px;font-weight:500}.export-preview-bar{margin-bottom:12px}.export-preview-loading{color:#999;text-align:center;padding:12px;font-size:13px}.export-preview-info{color:#333;background:#f5f9ff;border:1px solid #e6f0ff;border-radius:6px;align-items:center;gap:8px;padding:10px 14px;font-size:14px;display:flex}.export-preview-info.dim{color:#999;background:#fafafa;border-color:#eee}.export-preview-icon{font-size:18px}.export-preview-csv{color:#999;margin-left:4px;font-size:12px}.export-download-btn{cursor:pointer;color:#fff;background:#1890ff;border:none;border-radius:8px;width:100%;padding:12px;font-size:15px;font-weight:600;transition:background .2s}.export-download-btn:hover:not(:disabled){background:#096dd9}.export-download-btn:disabled{cursor:not-allowed;background:#bae0ff}.export-history-count{color:#1890ff;background:#e6f7ff;border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.export-history-empty{text-align:center;color:#999;padding:20px;font-size:13px}.export-history-item{border-bottom:1px solid #f5f5f5;padding:10px 0}.export-history-item:last-child{border-bottom:none}.export-history-name{color:#333;word-break:break-all;font-size:13px;font-weight:500}.export-history-meta{color:#999;margin-top:2px;font-size:12px}.export-history-filters{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.export-history-filter-tag{color:#666;background:#f5f5f5;border-radius:3px;padding:1px 6px;font-size:11px}.export-disease-row{gap:12px;width:100%;display:flex}.export-disease-row .ms-wrapper{flex:1;min-width:0}@media (width<=900px){.admin-main{padding:16px}.admin-page .modal-content{max-width:94vw}}@media (width<=640px){.admin-header{flex-wrap:wrap;gap:6px 8px;padding:8px 12px}.admin-header-right{flex-wrap:wrap;flex:100%;justify-content:flex-end;gap:8px}.admin-header-right .admin-user-badge,.admin-header-right .admin-back-btn,.admin-header-right .admin-logout-btn,.admin-header-right .admin-sync-btn{align-items:center;min-height:36px;display:inline-flex}.admin-body{flex-direction:column;height:auto;min-height:0;overflow:visible}.admin-sidebar{-webkit-overflow-scrolling:touch;z-index:20;border-bottom:1px solid #e8e8e8;border-right:none;flex-direction:row;gap:6px;width:100%;min-width:0;padding:6px 8px;position:sticky;top:0;overflow-x:auto}.admin-sidebar-item{flex:none;width:auto;margin:0;padding:9px 14px}.admin-main{flex:none;padding:12px;overflow:visible}.admin-content{max-width:none}.admin-page-title{font-size:18px}.overview-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.overview-cards>*{min-width:0}.overview-grid{grid-template-columns:1fr;gap:12px}.admin-table-wrapper{-webkit-overflow-scrolling:touch}.admin-table th,.admin-table td{padding:8px 10px}.admin-table td{word-break:break-word}.admin-toolbar{flex-direction:column;align-items:stretch;gap:10px}.admin-toolbar-right{flex-wrap:wrap;justify-content:flex-start}.admin-search-box{flex:auto;min-width:160px}.admin-main input[type=text],.admin-main input[type=search],.admin-main input[type=password],.admin-main select,.admin-main textarea,.admin-main input:not([type]){font-size:16px}.admin-main input,.admin-main select,.admin-main textarea{min-height:38px}.admin-btn-primary,.admin-btn{min-height:36px}.admin-page button,.admin-header button{min-height:34px}.admin-page .modal-content{width:94vw;max-height:84vh;overflow:auto}.overview-card{align-items:center;gap:8px;padding:12px;overflow:hidden}.overview-card-icon{text-align:center;flex:none;width:34px;font-size:20px}.overview-card-body{flex:1;min-width:0}.overview-card-value{white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:18px;line-height:1.3}.overview-card-label{white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.incident-card-header{flex-wrap:wrap;align-items:flex-start;row-gap:4px}.incident-question{white-space:normal;text-overflow:clip;word-break:break-word;flex:100%;order:10;width:100%;min-width:0;margin-top:2px;overflow:visible}.incident-expand-btn{flex:none;order:11;margin-left:auto}.incident-card-meta{flex-wrap:wrap;row-gap:4px}.admin-table td,.admin-table th{vertical-align:top}}
