:root{color:#172026;background:#f4f7f8;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;font-size:15px;letter-spacing:0}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}label{color:#405a55;font-size:12px}.checkline{display:grid;grid-template-columns:18px 1fr;gap:8px;align-items:center;font-size:13px}.checkline input{width:16px;height:16px}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;border:1px solid #b9c8c5;border-radius:6px;background:#fff;color:#172026;cursor:pointer}button:hover:not(:disabled){border-color:#1f7a70;color:#115c55}button:disabled{cursor:not-allowed;opacity:.55}.primary{width:100%;background:#176c63;color:#fff;border-color:#176c63}.compact-primary{width:auto;padding:6px 12px}input,select,textarea{width:100%;border:1px solid #c8d5d2;border-radius:6px;background:#fff;color:#172026;padding:9px 10px}textarea{min-height:360px;resize:vertical;line-height:1.65}.shell{min-height:100vh}.global-loading{position:fixed;top:18px;left:50%;z-index:1200;display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:7px 14px;border:1px solid #d8c181;border-radius:999px;background:#fff9e8;color:#7a4c0a;box-shadow:0 8px 24px #202a2d29;transform:translate(-50%);font-size:13px;font-weight:600}.topbar{display:flex;align-items:center;justify-content:space-between;padding:24px 32px 18px;border-bottom:1px solid #d9e2df;background:#fff}.brand-row{display:flex;align-items:center;gap:16px}.topbar h1{margin:0;font-size:24px;font-weight:700}.badge{padding:8px 12px;border:1px solid #f1c27b;border-radius:6px;color:#7a4c0a;background:#fff7e8;white-space:nowrap}.layout{display:grid;grid-template-columns:300px 1fr;gap:20px;padding:20px 32px 32px}.tabs{display:flex;gap:6px;padding-left:16px;border-left:1px solid #cfdcd8}.tabs button{min-width:92px;min-height:30px;padding:5px 10px;font-size:13px}.tabs .active{border-color:#176c63;background:#176c63;color:#fff}.sidebar,.workspace{display:flex;flex-direction:column;gap:14px}.panel,.surface{border:1px solid #d8e3e0;border-radius:8px;background:#fff;padding:14px}.panel{display:flex;flex-direction:column;gap:10px}.panel-note{margin:0;color:#647772;font-size:12px;line-height:1.5}h2{margin:0 0 10px;font-size:16px}.case-meta{display:flex;flex-wrap:wrap;gap:6px}.model-status{display:grid;gap:5px;padding:8px;border-radius:6px;background:#eef4f2;color:#405a55;font-size:12px}.model-status p{margin:0;line-height:1.45}.model-status .error{color:#9b2c2c}.model-page{display:grid;gap:16px;padding:20px 32px 32px}.status-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px}.status-card{min-height:82px;border:1px solid #d8e3e0;border-radius:8px;padding:12px;background:#fff}.status-card span{display:block;color:#647772;font-size:12px;margin-bottom:8px}.status-card strong{display:block;font-size:15px;word-break:break-word}.status-card.ok{border-color:#82b89f;background:#f0faf4}.status-card.warn{border-color:#e2c578;background:#fff9e8}.status-card.bad{border-color:#e6a7a7;background:#fff3f3}.hint{color:#405a55;line-height:1.6}.error{color:#9b2c2c}.install-actions{display:flex;flex-wrap:wrap;gap:10px}.settings-grid{display:grid;grid-template-columns:180px minmax(260px,1fr);gap:10px 12px;align-items:center}.settings-grid .wide{grid-column:1 / -1}.job-list{display:grid;gap:10px}.job-item{display:grid;grid-template-columns:220px 120px minmax(280px,1fr);gap:10px;align-items:center;border:1px solid #e2e9e7;border-radius:8px;padding:10px}.job-item code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-item p{grid-column:1 / -1;margin:0;color:#647772}.table-wrap{width:100%;overflow-x:auto}.case-table{width:100%;border-collapse:collapse;min-width:900px}.case-table th,.case-table td{border-bottom:1px solid #e1eae7;padding:10px;text-align:left;vertical-align:middle}.case-table th{color:#405a55;font-size:13px;background:#f4f8f7}.selected-row{background:#eef8f5}.row-actions,.pager{display:flex;align-items:center;gap:8px}.danger{border-color:#e2aaaa;color:#9b2c2c}.empty-cell{color:#647772;text-align:center!important}.modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:#0f181c73}.dialog{width:min(460px,100%);border:1px solid #d8e3e0;border-radius:8px;background:#fff;padding:18px;box-shadow:0 16px 42px #0d1f2438}.json-dialog{width:min(920px,96vw)}.dialog h2{margin-bottom:8px}.dialog p{margin:0;color:#405a55;line-height:1.65}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.case-meta span{padding:4px 7px;border-radius:6px;background:#eef4f2;color:#405a55;font-size:12px}.toolbar{display:grid;grid-template-columns:minmax(260px,1fr) repeat(5,minmax(84px,auto));gap:8px}.action-toolbar{display:flex;justify-content:flex-end;flex-wrap:wrap}.query-pill{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#405a55;font-size:12px}.pipeline{display:grid;gap:10px}.pipeline-head{display:flex;align-items:center;justify-content:flex-start;gap:10px}.pipeline-head h2{margin-bottom:0}.status-pill{max-width:min(420px,70%);min-height:26px;display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border:1px solid #cfdcd8;border-radius:999px;background:#f7faf9;color:#405a55;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-pill.ok{border-color:#a6cec4;background:#effaf6;color:#1d5f56}.status-pill.busy{border-color:#e2c578;background:#fff9e8;color:#7a4c0a}.status-pill.warn{border-color:#e5b4b4;background:#fff6f6;color:#8f3030}.pipeline-track{display:grid;grid-template-columns:repeat(10,minmax(86px,1fr));gap:6px}.pipeline-step{min-height:66px;border:1px solid #d8e3e0;border-radius:8px;padding:8px;background:#f8fbfa;color:#60756f}.pipeline-step span{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%;background:#dfe9e6;color:#405a55;font-weight:700;font-size:12px}.pipeline-step strong{display:block;margin-top:6px;font-size:12px;line-height:1.25}.pipeline-step.done{border-color:#9ecbc0;background:#f0faf7;color:#1d5f56}.pipeline-step.current{border-color:#176c63;box-shadow:inset 0 0 0 1px #176c63}.grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.results{display:flex;flex-direction:column;gap:10px;max-height:520px;overflow:auto}.compact-results{max-height:360px;margin-top:12px}.free-search{display:grid;grid-template-columns:minmax(260px,1fr) 220px;gap:10px}.result{border:1px solid #e2e9e7;border-radius:8px;padding:10px}.result header{display:flex;flex-direction:column;gap:3px}.result span,.result footer{color:#647772;font-size:12px}.matched-query-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.matched-query-list span{max-width:100%;border:1px solid #d5e3df;border-radius:6px;background:#f2f8f6;color:#2c5f57;font-size:12px;line-height:1.35;padding:3px 6px;overflow-wrap:anywhere}.result p{margin:8px 0;line-height:1.55}.retrieval-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.retrieval-group{min-width:0;border:1px solid #e2e9e7;border-radius:8px;background:#fbfdfc;overflow:hidden}.retrieval-group>header{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;min-height:58px;padding:10px 12px;border-bottom:1px solid #e2e9e7;background:#f4f8f7}.retrieval-group>header div{display:flex;align-items:center;gap:8px}.retrieval-group>header span{color:#1b3d39;font-weight:700}.retrieval-group>header strong{min-width:26px;min-height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#176c63;color:#fff;font-size:12px}.retrieval-group>header small{color:#647772;font-size:12px;text-align:right}.retrieval-group.case-reference>header{background:#f7f4ec}.retrieval-group.case-reference>header strong{background:#7a5a1d}.retrieval-group.other{grid-column:1 / -1}.grouped-results{max-height:460px;padding:10px}.json{max-height:520px;margin:0;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px}.json-modal{max-height:70vh;margin-top:12px;padding:12px;border:1px solid #d8e3e0;border-radius:6px;background:#f7faf9}.analysis-view{display:grid;gap:12px;max-height:520px;overflow:auto;padding-right:4px}.analysis-block{display:grid;gap:8px;border-bottom:1px solid #edf2f1;padding-bottom:12px}.analysis-block:last-child{border-bottom:0;padding-bottom:0}.analysis-block h3{margin:0;color:#1b3d39;font-size:14px}.analysis-block p{margin:0;color:#2f4944;line-height:1.7}.analysis-tags{display:flex;flex-wrap:wrap;gap:6px}.analysis-tags span,.evidence-mini-list em{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#eef4f2;color:#405a55;font-size:12px;font-style:normal}.analysis-list{display:grid;gap:8px;margin:0;padding-left:20px}.analysis-list li{padding-left:4px;line-height:1.6}.analysis-list strong{display:inline-block;margin-right:8px;color:#115c55}.focus-list,.evidence-mini-list{display:grid;gap:8px}.focus-list article,.evidence-mini-list article{border:1px solid #e2e9e7;border-radius:8px;background:#fbfdfc;padding:9px;line-height:1.55}.evidence-mini-list article{display:block;padding:0;overflow:hidden}.evidence-summary{width:100%;display:grid;grid-template-columns:64px minmax(0,1fr) auto 42px;gap:8px;align-items:center;min-height:38px;border:0;border-radius:0;background:transparent;padding:9px;text-align:left}.evidence-summary:hover:not(:disabled){border-color:transparent;color:inherit;background:#f3f8f6}.evidence-mini-list strong,.evidence-summary strong{color:#115c55}.evidence-summary span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.evidence-summary small{color:#60756f;font-size:12px;text-align:right}.evidence-mini-list article.expanded{background:#f7fbfa}.evidence-mini-list article.expanded .evidence-summary span{white-space:normal;overflow:visible;text-overflow:clip}.evidence-detail{display:grid;gap:6px;padding:0 9px 10px 81px}.evidence-detail p{margin:0;color:#405a55;line-height:1.6}.evidence-detail b{color:#1b3d39}.warn-block{border:1px solid #ead7a3;border-radius:8px;background:#fffaf0;padding:10px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.draft{display:flex;flex-direction:column;gap:10px}.llm-debug-panel{display:flex;flex-direction:column;gap:10px;max-height:320px;overflow:hidden}.llm-log-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}.llm-log-item{display:flex;flex-direction:column;gap:6px;border:1px solid #dfe8e5;border-radius:6px;padding:8px;background:#fbfdfc;min-width:0}.llm-log-item header{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;flex-wrap:wrap}.llm-log-item header span,.llm-log-item summary{color:#647772;font-size:12px}.llm-log-item details{border:1px solid #edf2f1;border-radius:6px;background:#fff;padding:8px}.llm-log-item summary{cursor:pointer;font-weight:600}.llm-log-item pre{max-height:120px;margin:4px 0 0;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.55}.audit-list{display:grid;gap:8px;max-height:260px;overflow:auto}.audit-item{display:grid;grid-template-columns:180px 160px 1fr;gap:8px;align-items:center;border-bottom:1px solid #edf2f1;padding-bottom:8px;font-size:13px}.audit-item span{color:#647772}.audit-item code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty{color:#647772}@media(max-width:980px){.topbar{align-items:flex-start;flex-direction:column;gap:12px}.brand-row{align-items:flex-start;flex-direction:column;gap:10px}.tabs{border-left:0;padding-left:0}.layout,.grid,.retrieval-columns,.status-grid,.settings-grid,.job-item{grid-template-columns:1fr}.toolbar{grid-template-columns:1fr 1fr}.pipeline-track{grid-template-columns:repeat(2,minmax(0,1fr))}}.materials-nav{display:flex;gap:8px;padding:0 0 8px;border-bottom:1px solid #d9e2df;background:#fff}.materials-nav button{min-width:auto;padding:8px 16px;border-radius:6px 6px 0 0;border-bottom:2px solid transparent;border-color:transparent;background:transparent;color:#405a55;font-size:14px}.materials-nav button:hover:not(:disabled){background:#f4f8f7;border-color:transparent;color:#176c63}.materials-nav button.active{border-bottom-color:#176c63;background:#f4f8f7;color:#176c63}.file-toolbar{margin-bottom:12px}.file-search{display:flex;align-items:center;gap:8px;max-width:400px}.file-search svg{color:#647772;flex-shrink:0}.file-search input{flex:1;min-width:200px}.file-search button{min-width:70px;min-height:36px}.file-stats{display:flex;align-items:center;gap:16px;padding:8px 0;color:#647772;font-size:13px;flex-wrap:wrap}.search-tag{display:inline-flex;align-items:center;gap:8px;padding:3px 8px;background:#eef4f2;border-radius:4px}.search-tag button{min-height:22px;padding:2px 8px;font-size:12px;border-color:#b9c8c5}.filename-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-pager{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 0 0;color:#405a55;font-size:13px}.file-pager button{min-width:60px;min-height:32px;font-size:13px}.batch-actions{display:flex;gap:8px}.batch-actions .danger{border-color:#e6a7a7;color:#9b2c2c}.batch-actions .danger:hover:not(:disabled){background:#fff3f3;border-color:#c53030;color:#c53030}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:4px;font-size:12px}.badge.ok{background:#f0faf4;color:#1d5f56;border:1px solid #82b89f}.badge.warn{background:#fff9e8;color:#7a4c0a;border:1px solid #e2c578}.badge.error{background:#fff3f3;color:#9b2c2c;border:1px solid #e6a7a7}.quality-summary{display:flex;align-items:center;gap:12px;padding:16px;border-radius:8px;margin-bottom:16px;font-size:15px}.quality-summary.passed{background:#f0faf4;border:1px solid #82b89f;color:#1d5f56}.quality-summary.failed{background:#fff3f3;border:1px solid #e6a7a7;color:#9b2c2c}.quality-summary span{margin-left:auto;font-size:13px;color:#647772}.issue-summary{display:flex;flex-wrap:wrap;gap:8px;padding:12px;background:#f4f8f7;border-radius:8px;margin-bottom:16px}.issue-badge{padding:4px 10px;border-radius:4px;background:#fff;border:1px solid #d9e2df;font-size:12px;color:#405a55}.issue-list{display:grid;gap:8px}.issue-card{border:1px solid #d9e2df;border-radius:8px;padding:10px;cursor:pointer;transition:background .15s}.issue-card:hover{background:#f8fafa}.issue-card.error{border-left:3px solid #e6a7a7}.issue-card.warning{border-left:3px solid #e2c578}.issue-header{display:flex;align-items:center;gap:8px}.issue-type{font-weight:600;color:#1b3d39;font-size:13px}.issue-message{color:#405a55;font-size:13px}.issue-ref{margin-left:auto;font-size:12px;color:#647772}.issue-detail{margin-top:10px;padding-top:10px;border-top:1px solid #e2e9e7;font-size:12px;color:#405a55}.issue-detail p{margin:4px 0}.reindex-actions{display:flex;gap:12px;margin-bottom:16px}.rebuild-result,.index-info{padding:16px;background:#f4f8f7;border-radius:8px;margin-top:16px}.rebuild-result h3,.index-info h3{margin:0 0 12px;color:#1b3d39;font-size:14px}.rebuild-result p,.index-info p{margin:6px 0;color:#405a55;font-size:13px}.busy{color:#7a4c0a;padding:8px;background:#fff9e8;border-radius:6px}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-list{padding:12px;background:#fff3f3;border:1px solid #e6a7a7;border-radius:8px;margin-top:12px}.error-list h4{margin:0 0 8px;color:#9b2c2c;font-size:13px}.error-list p{margin:4px 0;font-size:12px}.ingest-settings{display:flex;flex-direction:column;gap:10px}.dir-row{display:flex;gap:8px;align-items:center}.dir-row input{flex:1}.dir-row button{min-width:40px;min-height:36px}.ingest-logs{margin-top:16px;border:1px solid #d8e3e0;border-radius:8px;background:#1a1a2e;overflow:hidden}.logs-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#16213e;color:#a0a0a0;font-size:12px}.ingesting-indicator{color:#4ade80;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.logs-content{max-height:300px;overflow-y:auto;padding:10px 12px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:1.6}.log-entry{display:flex;gap:8px;color:#a0a0a0;white-space:pre-wrap;word-break:break-word}.log-entry.log-success{color:#4ade80}.log-entry.log-error{color:#f87171}.log-entry.log-warn{color:#fbbf24}.log-entry.log-info{color:#60a5fa}.log-icon{flex-shrink:0;width:14px;text-align:center}.log-message{flex:1}.password-gate{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#f4f7f8,#e8f0ed)}.password-card{display:flex;flex-direction:column;align-items:center;gap:16px;width:min(420px,90vw);padding:40px 32px;background:#fff;border:1px solid #d8e3e0;border-radius:12px;box-shadow:0 16px 48px #172a261f;text-align:center}.password-card svg{color:#176c63}.password-card h1{margin:0;font-size:22px;font-weight:700;color:#172026}.password-card p{margin:0;color:#647772;font-size:14px}.password-card form{display:flex;flex-direction:column;gap:12px;width:100%}.password-card input{text-align:center;font-size:16px;padding:12px}.password-error{margin:0;color:#9b2c2c;font-size:13px}
