:root{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a;background:#f7f7f8}*{box-sizing:border-box}html,body{margin:0;padding:0}body:has(.app.results-open){overflow:hidden;height:100%}.app{max-width:1080px;margin:0 auto;padding:32px 24px 64px;transition:max-width .2s ease}.app.results-open{max-width:1600px}h1{font-size:24px;margin:0 0 24px}.card{background:#fff;border:1px solid #e2e2e5;border-radius:8px;padding:20px;margin-bottom:16px}label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:#444}select,input[type=file],button{font-size:14px}select{width:100%;padding:8px 10px;border:1px solid #ccc;border-radius:6px;background:#fff}button{background:#1f6feb;color:#fff;border:0;border-radius:6px;padding:10px 18px;font-weight:600;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:#444;margin-left:8px}.row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.row>div{flex:1;min-width:200px}.status{font-size:13px;color:#666;margin-top:8px}.status.error{color:#c0392b}.status.ok{color:#2c7a2c}.json-tree{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#e2e8f0;padding:12px;border-radius:6px;max-height:480px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:6px 8px;border-bottom:1px solid #eee}th{font-weight:600;color:#555}details>summary{cursor:pointer;font-weight:600;margin:6px 0}details>div{margin-left:16px}.results-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;align-items:stretch;height:calc(100vh - 140px);min-height:500px}@media (max-width: 1100px){.results-grid{grid-template-columns:1fr;height:auto}}.results-col-left,.results-col-right{min-width:0;min-height:0;display:flex;flex-direction:column}.results-col-left>.card,.results-col-right>.card{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.doc-scroll{flex:1;min-height:0;overflow-y:auto;background:#2a2a30;border-radius:6px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:12px}.results-scroll{flex:1;min-height:0;overflow-y:auto;padding-right:4px}.result-header{display:flex;align-items:center;gap:16px;padding-bottom:12px;border-bottom:1px solid #eef0f3;flex-wrap:wrap}.user-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-bottom:12px;font-size:13px;color:#4b5563}.user-bar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-toolbar{flex-basis:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}.result-nav{display:flex;align-items:center;gap:8px}.result-nav-pos{min-width:56px;text-align:center;font-size:12px;color:#6b7280;font-variant-numeric:tabular-nums}.result-header-meta{flex:1;min-width:0}.result-title{font-size:14px;font-weight:600;margin-bottom:2px;word-break:break-word}.doc-page{background:#fff;border-radius:4px;overflow:hidden;box-shadow:0 1px 3px #0003;max-height:100%;width:auto;flex-shrink:0}.doc-page-label{position:sticky;top:0;background:#1f2937;color:#fff;font-size:12px;font-weight:600;padding:4px 10px;text-align:right;z-index:1}.doc-page img{display:block;height:calc(var(--doc-page-h, calc(100vh - 240px) ) * var(--doc-zoom, 1));max-height:none;width:auto}.doc-fit-width .doc-page{width:100%;max-height:none}.doc-fit-width .doc-page img{width:100%;height:auto}.doc-page-placeholder{height:calc(var(--doc-page-h, calc(100vh - 240px) ) * var(--doc-zoom, 1));width:calc(var(--doc-page-h, calc(100vh - 240px) ) * var(--doc-zoom, 1) * .77);max-width:100%}.doc-page-selected{outline:3px solid #2563eb}.doc-page-selected .doc-page-label{background:#1d4ed8}.doc-page-badge{float:left;font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:10px;padding-top:1px}.doc-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}.doc-title{flex-basis:100%;min-width:0}.doc-toolbar button{padding:5px 10px;font-size:12px;margin-left:0}.doc-zoom{display:flex;align-items:center;gap:4px}.doc-zoom-level{min-width:44px;text-align:center;font-size:12px;color:#4b5563;font-variant-numeric:tabular-nums}.seg{display:inline-flex;border-radius:6px;overflow:hidden}.seg button{border-radius:0;background:#e5e7eb;color:#111827}.seg button.active{background:#111827;color:#fff}.doc-viewer-expanded{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;border-radius:0;--doc-page-h: calc(100vh - 150px) }.results-col-left>.card.doc-viewer-expanded{overflow:hidden}.doc-scroll{overflow-x:auto}.doc-scroll>.doc-page{max-height:none;margin-left:auto;margin-right:auto}.doc-page-placeholder,.doc-page-missing{display:flex;align-items:center;justify-content:center;min-height:200px;color:#888;font-size:13px;font-style:italic}.fields-list{display:flex;flex-direction:column;gap:2px}.field{padding:10px 12px;border-radius:6px;border:1px solid transparent}.field:hover{background:#fafbfc;border-color:#eef0f3}.field-missing .field-value{opacity:.5}.field-header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}.field-name{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;font-weight:600;color:#1a1a1a}.field-type{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:10px;background:#eef2f7;color:#4a5568}.field-type-string{background:#e6f4ea;color:#1e7a3a}.field-type-number,.field-type-integer{background:#eaf1fb;color:#1a4ea0}.field-type-boolean{background:#f4ecf9;color:#6b3fa0}.field-type-array{background:#fff3e0;color:#b45f06}.field-required{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#c0392b}.field-pages{margin-left:auto;font-size:11px;color:#888;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.field-description{font-size:12px;color:#666;line-height:1.45;margin-bottom:6px;white-space:pre-wrap}.field-value{font-size:14px;line-height:1.5;color:#1a1a1a;white-space:pre-wrap;word-break:break-word}.field-empty{color:#aaa;font-style:italic}.field-string{white-space:pre-wrap}.field-number{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;font-weight:500}.field-bool{display:inline-block;font-size:12px;font-weight:700;padding:2px 10px;border-radius:12px}.field-bool.yes{background:#e6f4ea;color:#1e7a3a}.field-bool.no{background:#fdecea;color:#a02b1c}.field-array{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.field-array>li{background:#fafbfc;border:1px solid #eef0f3;border-radius:4px;padding:8px 10px}.field-array-item{display:flex;flex-direction:column;gap:3px}.field-array-row{display:flex;gap:8px;font-size:13px}.field-array-key{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#555;min-width:110px;flex:0 0 auto}.field-array-val{flex:1;word-break:break-word}.raw-json details>summary{margin-top:12px;cursor:pointer;font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.jobs-table{width:100%;border-collapse:collapse;font-size:13px}.jobs-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#888;padding:4px 8px;border-bottom:1px solid #e2e2e5;font-weight:600}.jobs-table td{padding:8px;border-bottom:1px solid #f0f0f3;vertical-align:middle}.jobs-table tr:last-child td{border-bottom:0}.jobs-table tr:hover td{background:#fafbfc}.jobs-filename{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.small{padding:4px 10px;font-size:12px;font-weight:500}.results-scroll,.doc-scroll{scrollbar-width:thin;scrollbar-color:#999 #eef0f3}.results-scroll::-webkit-scrollbar,.doc-scroll::-webkit-scrollbar{width:8px}.results-scroll::-webkit-scrollbar-thumb,.doc-scroll::-webkit-scrollbar-thumb{background:#999;border-radius:4px}.results-scroll::-webkit-scrollbar-thumb:hover,.doc-scroll::-webkit-scrollbar-thumb:hover{background:#555}.results-scroll::-webkit-scrollbar-track,.doc-scroll::-webkit-scrollbar-track{background:transparent}.progress-wrap{display:flex;flex-direction:column;gap:4px;margin:6px 0}.progress-track{height:6px;background:#eef0f3;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#1f6feb,#4c8bf5);transition:width .3s ease-out}.progress-label{font-size:11px;color:#555}.progress-label.muted{color:#999;font-style:italic}.usage-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;background:#fafbfc;border:1px solid #eef0f3;border-radius:6px;padding:10px 14px;margin:12px 0}.usage-cell{display:flex;flex-direction:column;gap:2px;min-width:0}.usage-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#888;font-weight:600}.usage-value{font-size:14px;font-weight:500}.usage-value.mono,.stats-value.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.stats-panel{margin-bottom:16px}.stats-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.stats-refresh{font-size:11px;color:#888;font-style:italic}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stats-cell{background:#fafbfc;border:1px solid #eef0f3;border-radius:6px;padding:10px 12px}.stats-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#888;font-weight:600}.stats-value{font-size:22px;font-weight:600;margin-top:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.stats-sublabel{font-size:11px;color:#888;margin-top:2px}.stats-failed{font-size:11px;color:#c0392b;margin-top:2px}.stats-by-model{margin-top:12px}.stats-model-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:4px}.stats-model-table th,.stats-model-table td{padding:4px 8px;text-align:left;border-bottom:1px solid #f0f0f3}.stats-model-table th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#888}.stats-model-table td:nth-child(n+2),.stats-model-table th:nth-child(n+2){text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.in-progress-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:16px}.in-progress-hint{margin-top:12px;font-style:italic}.provider-options{display:flex;flex-direction:column;gap:0}.file-list{display:flex;flex-direction:column;gap:4px;margin-top:8px}.file-list-row{display:flex;align-items:center;gap:10px;padding:6px 10px;background:#fafbfc;border:1px solid #eef0f3;border-radius:4px;font-size:13px}.file-list-row .filename{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list-row .filesize{color:#888;font-size:11px}.file-list-row button{font-size:11px;padding:2px 8px;background:transparent;color:#c0392b;border:1px solid #e2c0bb}.file-list-row button:hover{background:#fdecea}.toast{position:fixed;bottom:24px;right:24px;background:#1f6feb;color:#fff;padding:10px 16px;border-radius:6px;font-size:13px;box-shadow:0 4px 12px #00000026;z-index:100}.active-jobs-list{display:flex;flex-direction:column;gap:12px}.active-job{border-bottom:1px solid #eef0f3;padding-bottom:10px}.active-job:last-child{border-bottom:none;padding-bottom:0}.active-job-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}.active-job-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.active-job-meta{flex:1;font-size:12px;color:#6b7280;white-space:nowrap}.job-status-failed,.job-status-cancelled{color:#b91c1c}.job-status-cancelling{color:#b45309}.jobs-run-by{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fields-toolbar{display:flex;justify-content:flex-end;margin-bottom:6px}.link-button{background:none;color:#1f6feb;padding:0;margin:0;font-size:12px;font-weight:600;border-radius:0}.link-button.active{text-decoration:underline}.field-actions{display:flex;gap:14px;margin-top:4px}.field-panel{margin-top:6px;padding:8px 10px;background:#f6f8fa;border-left:3px solid #1f6feb;border-radius:4px;font-size:12px;line-height:1.5}.why-quote{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#fff;border:1px solid #e5e7eb;border-radius:4px;padding:3px 6px;margin:4px 0;white-space:pre-wrap;word-break:break-word}.why-reason{color:#374151}.why-empty{color:#6b7280;font-style:italic}.why-rule{margin-bottom:4px}.why-inputs{margin:4px 0 0;padding-left:18px}.why-inputs li{margin-bottom:6px}.badge-computed{background:#ede9fe;color:#5b21b6;border-radius:4px;padding:0 6px;font-size:10px;font-weight:600;text-transform:uppercase}.page-link{background:#dbeafe;color:#1d4ed8;border-radius:4px;padding:0 6px;margin:0 4px 0 0;font-size:11px;font-weight:600}button.page-link{cursor:pointer}.logic{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:4px 10px}.logic dt{font-weight:600;color:#374151}.logic dd{margin:0;white-space:pre-wrap}.label-chip{display:inline-block;background:#fff;border:1px solid #d1d5db;border-radius:4px;padding:0 5px;margin:0 4px 3px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.logic-hint{color:#6b7280}.prompt-block pre{white-space:pre-wrap;word-break:break-word;font-size:11px;background:#f6f8fa;padding:8px;border-radius:4px;max-height:420px;overflow:auto}.prompt-block h4{margin:10px 0 4px;font-size:12px}.doc-page-flash{outline:4px solid #f59e0b!important;transition:outline-color .3s}.jobs-table th{padding:0}.sort-header{background:none;color:inherit;font:inherit;font-weight:600;padding:6px 8px;margin:0;border-radius:4px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.sort-header:hover{background:#eef0f3}.sort-header.active{color:#1f6feb}.sort-arrow{font-size:10px;opacity:.45}.sort-header.active .sort-arrow{opacity:1}.jobs-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.jobs-filters input[type=search]{width:auto;flex:1 1 200px;min-width:180px;max-width:320px;margin:0;padding:8px 10px;border:1px solid #ccc;border-radius:6px;font-size:14px}.jobs-filters select{width:auto;flex:0 1 auto;min-width:150px;margin:0}.jobs-filters button{margin-left:0}.xml-view{flex:1;min-height:0;overflow:auto;margin:0;padding:12px;background:#0f172a;color:#e2e8f0;border-radius:6px;font-size:11px;line-height:1.5;white-space:pre}.label-hint{font-weight:400;color:#6b7280;font-size:12px}
