:root{--font-sans:"Inter", -apple-system, sans-serif;--font-mono:"JetBrains Mono", monospace;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:15px;--fs-xl:18px;--fs-stat:22px;--metro-cd:#78d25a;--metro-depth:#55d2dc;--metro-layer:#be73eb;--metro-baseline:#f44;--metro-contour:#f0f;--metro-scalebar:#f0e442;--metro-active:#00e5ff;--metro-label:#aab0b8;--metro-delete:#f85149;--label-bg:#000000a6;--label-text:#fff}:root,[data-theme=dark]{--bg-dark:#0a0b0e;--bg-panel:#0d1117;--bg-card:#161b22;--bg-card-hover:#1f242c;--border-color:#21262d;--border-color-light:#30363d;--accent-blue:#58a6ff;--accent-blue-hover:#1f6feb;--accent-blue-alpha:#58a6ff26;--accent-cyan:#00e5ff;--accent-cyan-hover:#00b4cc;--accent-green:#7ee787;--accent-orange:#f0883e;--text-primary:#f5f6f8;--text-secondary:#8b949e;--text-muted:#536271;--table-head-bg:#161b22;--row-bg-alt:#1a2029;--viewer-bg:#0b0c10}[data-theme=huachuang]{--bg-dark:#0a1628;--bg-panel:#0f1f3a;--bg-card:#152a4a;--bg-card-hover:#1d3760;--border-color:#1e3358;--border-color-light:#2a4674;--accent-blue:#4d9fff;--accent-blue-hover:#2b7fff;--accent-blue-alpha:#4d9fff2e;--accent-cyan:#38d6ff;--accent-cyan-hover:#1bb8e0;--accent-green:#5ee89a;--accent-orange:#ffa040;--text-primary:#f0f6ff;--text-secondary:#9bb4d8;--text-muted:#5a7299;--table-head-bg:#152a4a;--row-bg-alt:#182f54;--viewer-bg:#0a1628}[data-theme=light]{--bg-dark:#dcdcdc;--bg-panel:#ececec;--bg-card:#fff;--bg-card-hover:#f5f5f5;--border-color:#d4d4d4;--border-color-light:#bdbdbd;--accent-blue:#0a6ffd;--accent-blue-hover:#0058d4;--accent-blue-alpha:#0a6ffd1f;--accent-cyan:#0098c4;--accent-cyan-hover:#007aa0;--accent-green:#1a9f4f;--accent-orange:#d9680a;--text-primary:#000000eb;--text-secondary:#0000009e;--text-muted:#0000006b;--table-head-bg:#e8e8e8;--row-bg-alt:#f5f5f5;--viewer-bg:#e8e8e8}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overflow:hidden}.app-layout{width:100vw;height:100vh;display:flex;overflow:hidden}.panel-left,.panel-center,.panel-right{flex-direction:column;height:100%;display:flex}.panel-left{background-color:var(--bg-panel);border-right:1px solid var(--border-color);width:320px;min-width:320px;max-width:320px;overflow:hidden auto}.panel-header{border-bottom:1px solid var(--border-color);flex-direction:column;gap:12px;padding:16px;display:flex}.header-title-row{align-items:center;gap:10px;display:flex}.header-icon{font-size:24px}.header-logo{object-fit:cover;border-radius:4px;flex-shrink:0;width:28px;height:28px}.header-title{font-size:var(--fs-xl);color:var(--text-primary);font-weight:700;line-height:1.2}.header-sub{font-size:var(--fs-sm);color:var(--text-secondary);font-family:var(--font-mono)}.header-badges{align-items:center;gap:8px;display:flex}.recipe-bar{border-bottom:1px solid var(--border-color);align-items:center;gap:6px;padding:8px 16px;display:flex}.recipe-select{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-sm);cursor:pointer;border-radius:4px;flex:1;padding:4px 8px}.recipe-select:hover{border-color:var(--accent-blue)}.recipe-btn{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-primary);cursor:pointer;border-radius:4px;padding:4px 8px;font-size:12px;transition:all .2s}.recipe-btn:hover{background-color:var(--bg-card-hover);border-color:var(--accent-blue)}.recipe-delete:hover{border-color:#f85149}.recipe-save-dialog{align-items:center;gap:6px;width:100%;display:flex}.recipe-name-input{background-color:var(--bg-card);border:1px solid var(--accent-blue);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-sm);border-radius:4px;flex:1;padding:4px 8px}.batch-trend-chart{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;margin-bottom:16px;padding:12px 16px}.batch-trend-header{color:var(--text-primary);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.batch-trend-alert{font-size:var(--fs-base);color:#f85149;font-weight:500;font-family:var(--font-mono)}.batch-trend-svg{width:100%;height:auto}.batch-mock-btn{border:1px solid var(--accent-orange);color:var(--accent-orange);font-size:var(--fs-base);cursor:pointer;background-color:#f0883e26;border-radius:4px;width:100%;margin-bottom:16px;padding:8px 16px;font-weight:600}.batch-panel{background-color:var(--bg-dark);flex-direction:column;flex:1;display:flex}.batch-config-summary{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:6px;margin-bottom:16px;padding:12px 16px}.batch-config-label{font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:8px}.batch-config-tags{flex-wrap:wrap;gap:6px;display:flex}.batch-config-tag{font-size:var(--fs-sm);font-family:var(--font-mono);color:var(--accent-blue);background-color:var(--accent-blue-alpha);border:1px solid var(--accent-blue);border-radius:3px;padding:2px 8px;font-weight:600}.batch-config-tag-roi{color:var(--accent-orange);border-color:var(--accent-orange);background-color:#f0883e26}.batch-config-hint{font-size:var(--fs-sm);color:var(--text-muted);margin-top:8px}.batch-content{flex:1;width:100%;max-width:700px;margin:0 auto;padding:24px;overflow-y:auto}.batch-drop-zone{border:2px dashed var(--border-color-light);text-align:center;cursor:pointer;border-radius:8px;margin-bottom:16px;padding:48px 24px;transition:all .2s}.batch-drop-zone.drop-hover{border-color:var(--accent-blue);background-color:var(--accent-blue-alpha)}.batch-drop-zone .drop-icon{margin-bottom:12px;font-size:36px}.batch-drop-zone .drop-label{color:var(--text-primary);margin-bottom:6px;font-size:14px}.batch-drop-zone .drop-hint{font-size:var(--fs-base);color:var(--text-muted);font-family:var(--font-mono)}.batch-drop-zone .drop-summary{color:var(--text-secondary);font-size:13px}.batch-dir-section{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.batch-dir-row{align-items:center;gap:12px;display:flex}.batch-dir-btn{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-primary);cursor:pointer;white-space:nowrap;border-radius:4px;padding:8px 20px;font-size:12px;font-weight:600;transition:all .2s}.batch-dir-btn:hover:not(:disabled){background-color:var(--bg-card-hover);border-color:var(--accent-blue);color:var(--accent-blue)}.batch-dir-btn:disabled{opacity:.5;cursor:not-allowed}.batch-dir-path{font-size:var(--fs-base);color:var(--accent-green,#7ee787);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.batch-dir-hint{font-size:var(--fs-base);color:var(--text-muted);font-family:var(--font-mono)}.batch-done-notice{color:#7ee787;background-color:#7ee7871a;border:1px solid #7ee7874d;border-radius:6px;margin-bottom:16px;padding:10px 16px;font-size:13px}.batch-expected-input{width:130px;font-size:var(--fs-sm);font-family:var(--font-mono);background:var(--bg-input);border:1px solid var(--border-color);color:var(--text-primary);border-radius:6px;padding:8px 10px}.batch-expected-input:focus{border-color:var(--accent-blue);outline:none}.batch-pause-btn{font-size:var(--fs-sm);color:var(--accent-orange,#f0883e);cursor:pointer;background:#f0883e1f;border:1px solid #f0883e73;border-radius:6px;padding:8px 16px;font-weight:600}.batch-pause-btn:hover{background:#f0883e38}.batch-stop-btn{font-size:var(--fs-sm);color:#e5484d;cursor:pointer;background:#e5484d1f;border:1px solid #e5484d73;border-radius:6px;padding:8px 16px;font-weight:600}.batch-stop-btn:hover{background:#e5484d38}.batch-missing-banner{border-radius:6px;margin-bottom:16px;padding:10px 16px;font-size:13px;font-weight:600}.batch-missing-banner.severe{color:#e5484d;background-color:#e5484d1f;border:1px solid #e5484d73}.batch-missing-banner.pass{color:#7ee787;background-color:#7ee7871a;border:1px solid #7ee7874d;font-weight:400}.batch-missing-banner:not(.severe):not(.pass){color:var(--accent-orange,#f0883e);background-color:#f0883e1f;border:1px solid #f0883e73}.batch-file-list{border:1px solid var(--border-color);border-radius:6px;margin-bottom:16px;overflow:hidden}.batch-file-row{border-bottom:1px solid var(--border-color);font-size:var(--fs-base);align-items:center;gap:12px;padding:8px 12px;display:flex}.batch-file-row:last-child{border-bottom:none}.batch-file-name{color:var(--text-primary);font-family:var(--font-mono);flex:1}.batch-file-size{color:var(--text-muted);font-family:var(--font-mono)}.batch-file-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 6px;font-size:12px}.batch-file-remove:hover{color:#f85149;background-color:#f851491a}.batch-actions{gap:8px;margin-bottom:16px;display:flex}.batch-actions .run-btn{flex:1}.batch-clear-btn{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-secondary);font-size:var(--fs-base);cursor:pointer;border-radius:4px;padding:8px 16px}.batch-clear-btn:hover{color:#f85149;border-color:#f85149}.batch-progress{align-items:center;gap:12px;margin-bottom:16px;display:flex}.batch-progress-bar{background-color:var(--bg-card);border-radius:3px;flex:1;height:6px;overflow:hidden}.batch-progress-fill{background-color:var(--accent-blue);height:100%;transition:width .3s}.batch-progress-text{font-size:var(--fs-base);color:var(--text-secondary);font-family:var(--font-mono);white-space:nowrap}.batch-results{border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.batch-results-header{background-color:var(--bg-card);color:var(--text-primary);border-bottom:1px solid var(--border-color);padding:10px 12px;font-size:12px;font-weight:600}.batch-result-list{max-height:400px;overflow-y:auto}.batch-result-row{border-bottom:1px solid var(--border-color);padding:10px 12px}.batch-result-row:last-child{border-bottom:none}.batch-result-row.result-error{background-color:#f851490d}.batch-result-main{align-items:center;gap:8px;margin-bottom:4px;display:flex}.batch-result-status{font-size:14px}.batch-result-name{color:var(--text-primary);font-size:12px;font-family:var(--font-mono)}.batch-result-detail{align-items:center;gap:12px;padding-left:22px;display:flex}.batch-result-cd{font-size:var(--fs-base);color:var(--accent-green);font-family:var(--font-mono)}.batch-result-link{font-size:var(--fs-sm);color:var(--accent-blue);font-family:var(--font-mono);text-decoration:none}.batch-result-link:hover{text-decoration:underline}.batch-result-err{font-size:var(--fs-base);color:#f85149;font-family:var(--font-mono)}.badge{font-size:var(--fs-xs);font-family:var(--font-mono);border-radius:4px;padding:2px 6px;font-weight:600}.badge-version{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--accent-blue)}.badge-trial{color:#ffb454;background-color:#ffa60026;border:1px solid #ffa60066}.badge-status{color:#56d364;background-color:#2ea04326;border:1px solid #2ea04366}.status-dot{background-color:#3fb950;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #3fb950}.panel-section{border-bottom:1px solid var(--border-color);padding:14px 16px}.section-label{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-secondary);letter-spacing:.05em;text-transform:uppercase;margin-bottom:10px;font-weight:700}.section-toggle{text-align:left;cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;justify-content:space-between;align-items:center;padding:4px 0;display:flex}.toggle-chevron{color:var(--text-secondary);font-size:14px;transition:transform .2s}.toggle-chevron.open{transform:rotate(90deg)}.section-body{flex-direction:column;gap:12px;margin-top:12px;display:flex}.drop-zone{border:1px dashed var(--border-color-light);background-color:var(--bg-card);text-align:center;cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;min-height:80px;padding:16px;transition:all .2s;display:flex}.drop-zone:hover{border-color:var(--accent-blue);background-color:var(--bg-card-hover)}.drop-hover{border-color:var(--accent-blue);background-color:var(--accent-blue-alpha)}.drop-has-file{border-style:solid;border-color:var(--border-color-light)}.drop-icon{font-size:var(--fs-xl);color:var(--text-secondary);margin-bottom:4px}.drop-label{font-size:var(--fs-base);color:var(--text-primary);margin-bottom:2px;font-weight:500}.drop-hint{font-size:var(--fs-xs);color:var(--text-muted);font-family:var(--font-mono)}.drop-file-info{align-items:center;gap:8px;width:100%;display:flex}.drop-file-icon{font-size:var(--fs-xl)}.drop-file-name{font-size:var(--fs-base);font-family:var(--font-mono);text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.drop-file-size{font-size:var(--fs-sm);font-family:var(--font-mono);color:var(--text-secondary)}.drop-clear{color:var(--text-secondary);cursor:pointer;font-size:var(--fs-sm);background:0 0;border:none;border-radius:4px;padding:4px}.drop-clear:hover{color:var(--text-primary);background-color:var(--border-color-light)}.sample-btn{width:100%;font-size:var(--fs-base);background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--accent-blue);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:6px;margin-bottom:8px;padding:8px 12px;font-weight:500;transition:all .2s;display:flex}.sample-btn:hover:not(:disabled){border-color:var(--accent-blue);background-color:var(--bg-card-hover)}.sample-btn:disabled{opacity:.5;cursor:not-allowed}.sample-modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:3000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.sample-modal{background:var(--bg-panel);border:1px solid var(--border-color-light);border-radius:10px;flex-direction:column;width:440px;max-width:90vw;max-height:70vh;display:flex;overflow:hidden;box-shadow:0 12px 40px #0006}.sample-modal-header{border-bottom:1px solid var(--border-color);font-size:var(--fs-lg);color:var(--text-primary);justify-content:space-between;align-items:center;padding:14px 16px;font-weight:600;display:flex}.sample-modal-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;font-size:16px}.sample-modal-close:hover{color:var(--text-primary);background-color:var(--border-color-light)}.sample-modal-body{flex:1;padding:8px;overflow-y:auto}.sample-loading{text-align:center;color:var(--text-muted);font-size:var(--fs-base);padding:32px}.sample-item{cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:10px 12px;transition:background .15s;display:flex}.sample-item:hover{background-color:var(--bg-card-hover)}.sample-item-name{font-size:var(--fs-base);font-family:var(--font-mono);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.sample-item-size{font-size:var(--fs-sm);font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0}.sample-item-thumb-wrap{background-color:var(--bg-card-hover);border-radius:4px;flex-shrink:0;width:48px;height:48px;position:relative;overflow:hidden}.sample-item-thumb{object-fit:cover;width:100%;height:100%;display:block}.sample-badge-overlay{color:#fff;background-color:#000000a6;border:none;border-radius:2px;padding:1px 4px;font-size:9px;line-height:1;position:absolute;bottom:2px;left:2px}.sample-badge{font-size:11px;font-weight:600;font-family:var(--font-mono);border-radius:3px;flex-shrink:0;padding:2px 6px}.sample-badge-jpg{color:#58a6ff;background-color:#1f6feb26;border:1px solid #1f6feb4d}.sample-badge-dm3{color:#c4a7fd;background-color:#a371f726;border:1px solid #a371f74d}.sample-badge-img{color:#56d364;background-color:#2ea04326;border:1px solid #2ea0434d}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-secondary);text-transform:uppercase;justify-content:space-between;display:flex}.field-value{color:var(--accent-blue)}.seg-group{background-color:var(--bg-dark);border:1px solid var(--border-color-light);border-radius:4px;gap:2px;padding:2px;display:flex}.seg-btn{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:3px;flex:1;padding:4px 2px;font-weight:500;transition:all .2s}.seg-btn:hover:not(:disabled){color:var(--text-primary);background-color:var(--bg-card)}.seg-active{border:1px solid #58a6ff4d;background-color:var(--accent-blue-alpha)!important;color:var(--accent-blue)!important;font-weight:700!important}.text-input{background-color:var(--bg-dark);border:1px solid var(--border-color-light);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-base);border-radius:4px;width:100%;padding:6px 8px;transition:border-color .2s}.text-input:focus{border-color:var(--accent-blue);outline:none}.field-hint{font-size:var(--fs-sm);color:var(--text-muted);margin-left:6px;font-weight:400}.spec-name-list{flex-direction:column;gap:4px;display:flex}.spec-name-row{align-items:center;gap:6px;display:flex}.spec-key{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-secondary);text-align:right;min-width:48px}.spec-input{font-size:var(--fs-sm);flex:1;padding:4px 6px}.range-input{-webkit-appearance:none;background:var(--border-color-light);border-radius:2px;outline:none;width:100%;height:4px;margin:6px 0}.range-input::-webkit-slider-thumb{appearance:none;background:var(--accent-blue);cursor:pointer;border-radius:50%;width:12px;height:12px;transition:transform .1s}.range-input::-webkit-slider-thumb:hover{transform:scale(1.2)}.range-labels{font-size:var(--fs-xs);color:var(--text-muted);font-family:var(--font-mono);justify-content:space-between;display:flex}.run-section{background-color:var(--bg-panel);border-top:1px solid var(--border-color);gap:8px;padding:16px;display:flex;position:sticky;bottom:0}.run-section .run-btn{flex:1;width:auto}.run-section .mode-switch-btn:only-child{flex:1}.mode-switch-btn{background-color:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-secondary);font-size:var(--fs-sm);white-space:nowrap;cursor:pointer;border-radius:4px;padding:10px 14px;font-weight:500;transition:background-color .2s,color .2s}.mode-switch-btn:hover:not(:disabled){background-color:var(--bg-card-hover);color:var(--accent-blue);border-color:var(--accent-blue)}.mode-switch-btn:disabled{opacity:.5;cursor:not-allowed}.run-btn{background-color:var(--accent-blue);color:#fff;cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;gap:8px;width:100%;padding:10px;font-size:12px;font-weight:600;transition:background-color .2s;display:flex}.run-btn:hover:not(:disabled){background-color:var(--accent-blue-hover)}.run-btn:disabled{opacity:.5;cursor:not-allowed}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.panel-center{background-color:var(--bg-dark);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.center-header,.right-header{border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:var(--fs-base);color:var(--text-primary);letter-spacing:.05em;justify-content:space-between;align-items:center;height:52px;padding:16px;font-weight:700;display:flex}.right-header{padding-right:56px}.center-header{flex-direction:column;justify-content:flex-start;align-items:stretch;gap:4px;height:auto;min-height:44px;padding:6px 16px}.toolbar-row{flex-wrap:wrap;align-items:center;gap:8px;width:100%;min-height:30px;display:flex}.float-tools{background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:900;cursor:move;border-radius:8px;flex-direction:column;max-width:92vw;padding:5px 6px 3px;display:flex;position:fixed;box-shadow:0 4px 18px #00000059}.float-tools-row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.float-tool-divider{background:var(--border-color-light,#30363d);flex:0 0 1px;width:1px;height:18px;margin:0 2px}.float-tools-hint{color:var(--text-secondary,#8b949e);border-top:1px dashed var(--border-color-light,#30363d);cursor:default;-webkit-user-select:none;user-select:none;max-width:420px;min-height:18px;margin-top:4px;padding:3px 2px 1px;font-size:11px;line-height:1.4}.icon-tool{width:28px;height:28px;color:var(--text-secondary,#8b949e);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.icon-tool:hover{border-color:var(--accent-blue,#58a6ff);color:var(--text-primary,#e6edf3)}.icon-tool.icon-tool-active{background:var(--accent-blue,#238636);border-color:var(--accent-blue,#2ea043);color:#fff}.icon-tool:disabled{opacity:.55;cursor:default}.tool-select{background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);color:var(--text-secondary,#8b949e);cursor:pointer;border-radius:6px;padding:3px 6px;font-size:11px}.toolbar-spacer{flex:1}.status-bar{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-secondary);background:var(--bg-card);border-bottom:1px solid var(--border);align-items:center;gap:10px;min-height:24px;padding:4px 12px;display:flex}.status-bar b{color:var(--text-primary);font-weight:600}.status-endpoint-editor{color:var(--accent-blue,#58a6ff);align-items:center;gap:6px;display:flex}.status-endpoint-editor b{color:var(--accent-blue,#58a6ff)}.status-endpoint-editor input{width:72px;font-family:var(--font-mono);background:var(--bg-dark,#0a0b0e);border:1px solid var(--accent-blue,#58a6ff);color:var(--text-primary,#e6edf3);border-radius:4px;padding:1px 6px;font-size:11px}.status-endpoint-editor input:focus{box-shadow:0 0 0 1px var(--accent-blue,#58a6ff);outline:none}.status-bar .status-sep{color:var(--text-muted);opacity:.5}.status-bar .status-muted{color:var(--text-muted);font-style:italic}.pill-toggle{font-family:var(--font-mono);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid;border-radius:12px;padding:3px 12px;font-weight:600;line-height:1.4;transition:all .15s}.pill-toggle:hover{opacity:.85}.pill-toggle.pill-active{color:#fff}.toolbar-row{container-type:inline-size}@container (width<=620px){.pill-toggle{border-width:2.5px;border-radius:50%;width:14px;min-width:14px;height:14px;padding:0}.pill-toggle .pill-label{display:none}.pill-toggle.pill-active{box-shadow:0 0 0 2px var(--bg-dark,#0a0b0e), 0 0 6px currentColor}}.center-icon,.right-icon{margin-right:8px;font-size:14px}.zoom-indicator-btn{background-color:var(--bg-card);border:1px solid var(--accent-blue);color:var(--accent-blue);font-family:var(--font-mono);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;border-radius:4px;margin-left:8px;padding:4px 8px;font-weight:600;transition:all .2s}.zoom-indicator-btn:hover{background-color:var(--accent-blue-hover);color:#fff}.minimap-floating{z-index:500;background-color:var(--bg-panel);border:1px solid var(--border-color-light);-webkit-user-select:none;user-select:none;border-radius:6px;position:fixed;box-shadow:0 4px 16px #0006}.minimap-titlebar{border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:4px 8px;display:flex}.minimap-title{white-space:nowrap}.minimap-close{background:var(--bg-card);border:1px solid var(--border-color-light);width:18px;height:18px;color:var(--text-secondary);cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;line-height:1;display:flex}.minimap-close:hover{color:#f66;border-color:#f66}.minimap{border:1px solid var(--border-color-light);cursor:crosshair;background:var(--viewer-bg);border-radius:4px;width:200px;height:150px;margin:8px;position:relative;overflow:hidden}.minimap-thumb{object-fit:contain;pointer-events:none;width:100%;height:100%;display:block}.minimap-box{pointer-events:none;box-sizing:border-box;background:#ff44441a;border:2px solid #f44;position:absolute}.viewer-area{background-color:var(--viewer-bg);flex:1;justify-content:center;align-items:center;padding:24px;display:flex;position:relative;overflow:hidden}.calib-banner{z-index:30;color:#e3b341;max-width:70%;font-size:var(--fs-sm,12px);background:#412e02eb;border:1px solid #d2992299;border-radius:6px;padding:7px 12px;line-height:1.6;position:absolute;top:10px;left:12px}.calib-banner-input{white-space:nowrap;align-items:center;gap:8px;display:flex}.angle-error-toast{z-index:30;color:#ffd8b3;font-size:var(--fs-sm,12px);pointer-events:none;white-space:nowrap;background:#8c2814eb;border:1px solid #f0883e99;border-radius:6px;padding:6px 14px;position:absolute;top:10px;left:50%;transform:translate(-50%)}.brand-footer{border-top:1px solid var(--border-color);background-color:var(--bg-panel);justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;display:flex}.brand-copyright{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);letter-spacing:.02em}.brand-logo{width:auto;height:22px;display:block}.brand-logos{align-items:center;gap:12px;display:flex}.viewer-image{object-fit:contain;outline:1px solid var(--border-color-light);outline-offset:-1px;background-color:var(--viewer-bg);border-radius:6px;max-width:100%;max-height:100%}.viewer-image-wrapper{max-width:100%;max-height:100%;display:inline-block;position:relative}.viewer-image-wrapper .viewer-image{display:block}.roi-overlay,.measurement-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.measurement-overlay circle{pointer-events:all}.center-actions{align-items:center;gap:8px;display:flex}.layer-toggles{align-items:center;gap:4px;display:flex}.scale-apply-btn{background:var(--bg-card);border:1px solid var(--accent-blue);color:var(--accent-blue);cursor:pointer;border-radius:4px;flex-shrink:0;padding:4px 10px;font-size:14px;transition:all .15s}.scale-apply-btn:hover:not(:disabled){background:var(--accent-blue-hover);color:#fff}.scale-apply-btn:disabled{opacity:.3;cursor:default}.context-menu{z-index:9999;background:var(--bg-card);border:1px solid var(--border-color-light);border-radius:6px;min-width:160px;padding:4px;position:fixed;box-shadow:0 4px 16px #0006}.context-menu-item{text-align:left;width:100%;color:var(--text-primary);font-size:12px;font-family:var(--font-sans);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:8px 12px;display:block}.context-menu-item:hover{background:var(--bg-card-hover)}.context-menu-item.danger:hover{color:#f85149;background:#f8514926}.context-menu-empty{font-size:var(--fs-base);color:var(--text-muted);padding:8px 12px;font-style:italic}.layer-toggle-item{cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-sm);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-weight:500;display:flex}.layer-toggle-item input[type=checkbox]{width:12px;height:12px;accent-color:var(--accent-blue);cursor:pointer;margin:0}.roi-toggle,.roi-clear{font-family:var(--font-mono);font-size:var(--fs-base);color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border-color);cursor:pointer;border-radius:6px;padding:4px 10px;font-weight:500;transition:all .2s}.roi-toggle:hover,.roi-clear:hover{border-color:var(--accent-cyan);color:var(--accent-cyan)}.roi-toggle.roi-active{border-color:var(--accent-cyan);color:var(--accent-cyan);background:#00e5ff26}.viewer-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-icon-large{color:var(--text-muted);font-size:48px;font-family:var(--font-mono);margin-bottom:16px}.empty-title{color:var(--text-secondary);margin-bottom:4px;font-size:14px;font-weight:600}.empty-sub{font-size:var(--fs-base);color:var(--text-muted)}.thumb-strip{background-color:var(--bg-panel);border-top:1px solid var(--border-color);gap:8px;padding:12px 16px;display:flex;overflow-x:auto}.thumb{border:1px solid var(--border-color-light);cursor:pointer;background:#000;border-radius:4px;flex-shrink:0;width:60px;height:60px;padding:0;transition:all .2s;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%}.thumb-active{border-color:var(--accent-blue);box-shadow:0 0 6px var(--accent-blue)}.panel-right{width:var(--right-w,460px);min-width:var(--right-w,460px);max-width:var(--right-w,460px);background-color:var(--bg-panel);border-left:1px solid var(--border-color);overflow:hidden auto}.panel-splitter{cursor:col-resize;z-index:20;background:0 0;flex:0 0 7px;width:7px;position:relative}.panel-splitter:before{content:"";background:0 0;transition:background .15s;position:absolute;inset:0}.panel-splitter:hover:before,.panel-splitter:active:before{background:#58a6ff47}.panel-splitter:after{content:"";background:var(--border-color-light);border-radius:1px;width:2px;height:30px;position:absolute;top:50%;left:2.5px;transform:translateY(-50%)}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;padding:16px;display:grid}.stat-card{background-color:var(--bg-card);border:1px solid var(--border-color-light);border-radius:6px;flex-direction:column;padding:12px;display:flex}.stat-label{font-size:var(--fs-sm);color:var(--text-secondary);text-transform:uppercase;font-family:var(--font-mono);margin-bottom:6px}.stat-value{font-family:var(--font-mono);font-size:var(--fs-stat);align-items:baseline;font-weight:700;display:flex}.stat-unit{font-size:var(--fs-base);color:var(--text-secondary);margin-left:3px;font-weight:400}.layers-section{padding:0 16px 16px}.layers-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.card-title{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-secondary);text-transform:uppercase;margin-bottom:8px;font-weight:700}.right-tabs{border-bottom:1px solid var(--border-color);background-color:var(--bg-dark);flex-wrap:nowrap;flex-shrink:0;padding:0 16px;display:flex;overflow-x:auto}.right-tab{font-size:var(--fs-base);color:var(--text-secondary);white-space:nowrap;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:10px 12px;font-weight:500;transition:color .2s;position:relative}.right-tab:hover{color:var(--text-primary)}.right-tab-active{font-weight:600;color:var(--accent-blue)!important}.right-tab-active:after{content:"";background-color:var(--accent-blue);height:2px;position:absolute;bottom:0;left:0;right:0}.tab-content{padding:16px}.tab-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 16px;display:flex}.empty-icon-small{color:var(--text-muted);margin-bottom:8px;font-size:24px}.empty-hint{font-size:var(--fs-base);color:var(--text-secondary)}.tables-container{flex-direction:column;gap:16px;padding:16px;display:flex}.table-block{flex-direction:column;gap:6px;display:flex}.table-block-title{font-size:var(--fs-sm);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-family:var(--font-mono);padding:4px 0}.table-filter-bar{flex-wrap:wrap;gap:4px;padding:2px 0;display:flex}.filter-chip{font-size:11px;font-family:var(--font-mono);border:1px solid var(--border-color-light);color:var(--text-primary);cursor:pointer;background:#58a6ff1f;border-radius:10px;padding:2px 8px;transition:opacity .15s}.filter-chip:hover{border-color:var(--accent-blue)}.filter-chip.off{color:var(--text-muted);opacity:.55;background:0 0;text-decoration:line-through}.filter-chip.warn{border-color:var(--accent-red,#e5484d);background:#e5484d2e}.filter-note{color:var(--accent-orange,#f0883e);padding:0 2px;font-size:11px}.data-table th.th-sortable{cursor:pointer}.data-table th.th-sortable:hover{background:#58a6ff14}.tables-container .data-table-wrap{max-height:none}.data-table-global tbody tr{background:#58a6ff0a}.data-table-global tbody tr:nth-child(2n){background:#58a6ff17}.data-table td.cell-vert{background:#58a6ff0d}.data-table tbody tr:nth-child(2n) td.cell-vert{background:#58a6ff1a}.data-table tr.stat-row td.cell-vert{background:#58a6ff12}.data-table tr.stat-row:first-of-type td.cell-vert{background:#58a6ff17}.data-table th.col-vert{background:#58a6ff1f}.data-table-wrap{border:1px solid var(--border-color-light);background-color:var(--bg-card);border-radius:6px;width:100%;max-height:calc(100vh - 320px);overflow:auto}.data-table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:var(--fs-sm);text-align:left}.data-table th,.data-table td{border-bottom:1px solid var(--border-color-light);border-right:1px solid var(--border-color-light);white-space:nowrap;padding:8px 10px}.data-table th:last-child,.data-table td:last-child{border-right:none}.data-table th{background-color:var(--table-head-bg);color:var(--text-secondary);font-weight:600}.data-table tbody tr{--row-bg:var(--bg-card)}.data-table tbody tr:nth-child(2n){--row-bg:var(--row-bg-alt)}.data-table tbody td{background-color:var(--row-bg)}.data-table thead th{z-index:2;background-color:var(--table-head-bg);position:sticky;top:0}.data-table .sticky-col{z-index:1;background-color:var(--row-bg);position:sticky;left:0}.data-table thead .sticky-corner{z-index:3;left:0}.data-table tr:last-child td{border-bottom:none}.data-table tr.stat-row td{border-top:1px solid var(--border-color);font-weight:600}.data-table tr.stat-row:first-of-type td{border-top-width:2px}.micro-bar{border-top:1px solid var(--border-color,#21262d);background:var(--bg-panel,#0d1117);flex:none;position:relative}.micro-bar-line{font-size:11px;font-family:var(--font-mono,monospace);white-space:nowrap;align-items:center;gap:10px;padding:4px 14px;display:flex;overflow:hidden}.micro-bar .mm-title{color:var(--text-secondary,#8b949e);font-size:11px}.micro-bar-key{color:var(--text-primary,#e6edf3);text-overflow:ellipsis;overflow:hidden}.micro-bar-more{color:var(--text-muted,#6e7681);flex-shrink:0;margin-left:auto;font-size:11px}.micro-popover{background:var(--bg-panel,#0d1117);border:1px solid var(--border-color-light,#30363d);z-index:60;border-bottom:none;border-radius:6px 6px 0 0;max-height:46vh;padding:10px 12px;display:none;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -10px 28px #00000073}.micro-bar:hover .micro-popover{display:block}.mm-chips{flex-wrap:wrap;gap:4px 6px;display:flex}.mm-chip{border:1px solid var(--border-color-light,#30363d);background:#1f6feb0f;border-radius:4px;align-items:center;gap:4px;padding:1px 6px;font-size:11px;line-height:1.6;display:inline-flex}.mm-chip i{color:var(--text-secondary,#8b949e);font-style:normal}.mm-chip b{color:var(--text-primary,#e6edf3);font-family:monospace;font-weight:600}.data-table tbody tr.row-linked td{background-color:#58a6ff38}.data-table tbody tr.row-linked td.sticky-col{color:var(--accent-blue,#58a6ff);font-weight:600}.data-table tbody td.cell-linked{color:var(--accent-blue,#58a6ff);outline:1px solid #58a6ffcc;font-weight:700;background-color:#58a6ff52!important}.data-table th.col-linked{color:var(--accent-blue,#58a6ff);background-color:#58a6ff38}.data-table tbody tr[data-link]:hover td{background-color:#58a6ff1f}@keyframes link-pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.45}}.link-pulse :is(line,polyline,polygon,ellipse){animation:1.2s ease-in-out infinite link-pulse}.editable-cell{cursor:text;border-bottom:1px dashed var(--text-muted);min-width:60px;display:inline-block}.editable-cell:hover{border-bottom-color:var(--accent-cyan);color:var(--accent-cyan)}.cell-edit-input{background:var(--bg-dark);border:1px solid var(--accent-cyan);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-base);border-radius:3px;width:100%;min-width:80px;padding:2px 4px}.cell-edit-input:focus{outline:none}.export-tab{margin-left:auto;color:var(--accent-green)!important;border-color:var(--accent-green)!important}.export-tab:hover{background:#7ee7871a!important}.report-content{color:var(--text-secondary);font-size:12px;line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--text-primary);font-family:var(--font-mono);border-bottom:1px solid var(--border-color-light);margin-top:16px;margin-bottom:8px;padding-bottom:4px}.markdown-body h3{font-size:13px}.markdown-body h4{font-size:12px}.markdown-body ul,.markdown-body ol{margin-bottom:12px;padding-left:20px}.markdown-body li{margin-bottom:4px}.markdown-body code{font-family:var(--font-mono);font-size:var(--fs-sm);background-color:var(--bg-dark);border:1px solid var(--border-color-light);color:var(--accent-cyan);border-radius:3px;padding:1px 4px}.markdown-body pre{background-color:var(--bg-dark);border:1px solid var(--border-color-light);border-radius:6px;margin-bottom:12px;padding:12px;overflow-x:auto}.markdown-body pre code{color:var(--text-primary);background:0 0;border:none;padding:0}.json-viewer{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--accent-green);background-color:var(--bg-dark);border:1px solid var(--border-color-light);white-space:pre-wrap;border-radius:6px;max-height:400px;padding:12px;overflow-x:auto}.error-toast{z-index:1000;background-color:#2a1b1d;border:1px solid #f85149;border-radius:6px;align-items:center;gap:10px;max-width:360px;padding:10px 14px;animation:.2s cubic-bezier(.16,1,.3,1) slide-in;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 4px 12px #0006}@keyframes slide-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.toast-icon{color:#f85149;font-size:14px}.toast-msg{color:#ff9e9a;font-size:var(--fs-base);flex:1}.toast-close{color:#f85149;cursor:pointer;font-size:var(--fs-sm);background:0 0;border:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--border-color-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}.tplgen-modal{background:var(--bg-panel);border:1px solid var(--border-color-light);border-radius:10px;flex-direction:column;width:960px;max-width:94vw;max-height:88vh;display:flex;overflow:hidden;box-shadow:0 12px 40px #0006}.tplgen-body{flex-direction:column;flex:1;gap:12px;padding:14px 16px;display:flex;overflow-y:auto}.tplgen-review{grid-template-columns:minmax(320px,42%) 1fr;gap:14px;display:grid}.tplgen-section{flex-direction:column;gap:6px;display:flex}.tplgen-som{flex-direction:column;gap:6px;min-width:0;display:flex}.tplgen-som img{border:1px solid var(--border-color-light);border-radius:6px;width:100%;display:block}.tplgen-noimg{text-align:center;color:var(--text-muted);border:1px dashed var(--border-color-light);border-radius:6px;padding:40px}.tplgen-model{font-size:var(--fs-sm);color:var(--text-muted)}.tplgen-form{flex-direction:column;gap:12px;min-width:0;display:flex}.tplgen-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.tplgen-field{flex-direction:column;gap:3px;min-width:0;display:flex}.tplgen-label{font-size:var(--fs-sm);color:var(--text-secondary)}.tplgen-input{background:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-primary);font-size:var(--fs-base);box-sizing:border-box;border-radius:5px;width:100%;padding:5px 8px}.tplgen-input:focus{border-color:var(--accent-blue);outline:none}.tplgen-textarea{resize:vertical;font-family:inherit}.tplgen-item{border:1px solid var(--border-color-light);border-radius:6px;flex-direction:column;gap:6px;padding:8px 10px;display:flex}.tplgen-item-head{justify-content:space-between;align-items:center;display:flex}.tplgen-item-type{color:var(--accent-blue);font-weight:600;font-size:var(--fs-sm)}.tplgen-item-body{flex-wrap:wrap;gap:8px;display:flex}.tplgen-item-body .tplgen-field{flex:1;min-width:110px}.tplgen-check{font-size:var(--fs-base);color:var(--text-primary);align-items:center;gap:6px;padding:6px 0;display:flex}.tplgen-ref{font-size:var(--fs-sm);color:var(--text-secondary);padding:4px 0 8px}.tplgen-ref.mismatch{color:var(--accent-orange)}.tplgen-add-item{width:auto;font-size:var(--fs-sm);margin-left:10px;padding:2px 6px}.tplgen-json-toggle{color:var(--text-secondary);cursor:pointer;font-size:var(--fs-sm);text-align:left;background:0 0;border:none;padding:4px 0}.tplgen-json-toggle:hover{color:var(--text-primary)}.tplgen-json{box-sizing:border-box;background:var(--bg-card);border:1px solid var(--border-color-light);width:100%;color:var(--text-primary);resize:vertical;border-radius:6px;padding:8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px}.tplgen-json:focus{border-color:var(--accent-blue);outline:none}.tplgen-error{color:#f85149;font-size:var(--fs-sm);overflow-wrap:anywhere;background:#f851491f;border:1px solid #f8514966;border-radius:6px;padding:8px 10px}.tplgen-raw{white-space:pre-wrap;word-break:break-all;max-height:120px;margin:6px 0 0;font-size:11px;overflow-y:auto}.tplgen-footer{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.tplgen-primary{background:var(--accent-blue);color:#fff;font-size:var(--fs-base);cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:7px 18px}.tplgen-primary:hover:not(:disabled){background:var(--accent-blue-hover)}.tplgen-primary:disabled{opacity:.5;cursor:not-allowed}.tplgen-done{justify-content:center;align-items:center;padding:48px 24px}.tplgen-done-icon{font-size:42px}.tplgen-done-text{font-size:var(--fs-lg);color:var(--text-primary);margin-top:12px}.tplgen-done-hint{font-size:var(--fs-sm);color:var(--text-muted);text-align:center;margin-top:6px}.tplgen-som-wrap{width:100%;display:inline-block;position:relative}.tplgen-som-wrap img{border:1px solid var(--border-color-light);border-radius:6px;width:100%;display:block}.tplgen-anchor-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.tplgen-anchor-hint{font-size:var(--fs-sm);color:#ff9f43}.tplgen-add-anchor{font-size:var(--fs-sm);border:1px solid var(--border-color-light);color:var(--accent-blue);cursor:pointer;background:0 0;border-radius:4px;margin-left:10px;padding:2px 10px}.tplgen-add-anchor:hover{border-color:var(--accent-blue)}.tpl-select-row{align-items:stretch;gap:4px;display:flex}.tpl-select{background:var(--bg-card);border:1px solid var(--border-color-light);min-width:0;color:var(--text-primary);font-size:var(--fs-base);border-radius:5px;flex:1;padding:5px 8px}.tpl-select:focus{border-color:var(--accent-blue);outline:none}.tpl-tool-btn{background:var(--bg-card);border:1px solid var(--border-color-light);color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;border-radius:5px;padding:4px 8px}.tpl-tool-btn:hover:not(:disabled){color:var(--accent-blue);border-color:var(--accent-blue)}.tpl-tool-btn:disabled{opacity:.4;cursor:not-allowed}.tpl-variant-dlg{gap:4px;display:flex}.tpl-variant-input{background:var(--bg-card);border:1px solid var(--accent-blue);min-width:0;color:var(--text-primary);font-size:var(--fs-base);border-radius:5px;flex:1;padding:5px 8px}.tpl-variant-input:focus{outline:none}.tpl-variant-error{font-size:var(--fs-sm);color:#f85149;margin-top:4px}.tplmgr-hint{font-size:var(--fs-sm);color:var(--text-muted);padding:2px 0 8px}.tplmgr-group{margin-bottom:10px}.tplmgr-group-label{font-size:var(--fs-sm);color:var(--accent-blue);border-bottom:1px solid var(--border-color);padding:4px 0;font-weight:600}.tplmgr-item{border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:7px 6px;display:flex}.tplmgr-item:hover{background-color:var(--bg-card-hover)}.tplmgr-info{flex-direction:column;gap:2px;min-width:0;display:flex}.tplmgr-name{font-size:var(--fs-base);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tplmgr-id{font-size:var(--fs-sm);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tplmgr-actions{flex-shrink:0;gap:4px;display:flex}.tplmgr-del:hover:not(:disabled){color:#f85149;border-color:#f85149}.anchor-fail-row{opacity:.55}.anchor-fail-row td:last-child{color:var(--text-muted);font-size:var(--fs-sm)}.tpl-match-on{color:var(--accent-blue);border-color:var(--accent-blue)}.shortcut-overlay{z-index:2500;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.shortcut-card{background:var(--bg-panel,#0d1117);border:1px solid var(--border-color-light,#30363d);border-radius:10px;max-width:640px;max-height:82vh;padding:18px 22px;overflow-y:auto;box-shadow:0 12px 40px #00000080}.shortcut-title{color:var(--text-primary,#e6edf3);margin-bottom:12px;font-size:15px;font-weight:700}.shortcut-grid{grid-template-columns:1fr 1fr;gap:4px 18px;display:grid}.shortcut-row{color:var(--text-secondary,#8b949e);align-items:center;gap:7px;padding:2px 0;font-size:11px;display:flex}.shortcut-key{min-width:34px;font-family:var(--font-mono,monospace);color:var(--text-primary,#e6edf3);background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);border-bottom-width:2px;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:1px 6px;font-size:11px;font-weight:700;display:inline-flex}.shortcut-icon{text-align:center;flex-shrink:0;width:16px;font-size:12px}.shortcut-name{color:var(--text-primary,#e6edf3);flex-shrink:0;font-weight:600}.shortcut-desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.shortcut-sep{background:var(--border-color,#21262d);height:1px;margin:12px 0}.shortcut-general{color:var(--text-secondary,#8b949e);flex-direction:column;gap:6px;font-size:11px;display:flex}.shortcut-general .shortcut-key{min-width:90px}.analyze-progress{z-index:120;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0b0e8c;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.analyze-progress .spinner{width:34px;height:34px}.analyze-progress-text{color:var(--text-primary,#e6edf3);flex-direction:column;align-items:center;gap:5px;font-size:13px;display:flex}.analyze-progress-text b{font-size:15px}.analyze-progress-text span{color:var(--text-secondary,#8b949e)}.analyze-elapsed{font-family:var(--font-mono,monospace);font-size:20px;color:var(--accent-blue,#58a6ff)!important}.analyze-hint{font-size:11px;color:var(--text-muted,#6e7681)!important}.history-rail{z-index:1500;position:fixed;top:190px;left:326px}.history-rail-tab{background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);color:var(--text-secondary,#8b949e);cursor:pointer;border-right:none;border-radius:8px 0 0 8px;flex-direction:column;align-items:center;gap:3px;padding:12px 5px;font-size:15px;line-height:1;display:flex}.history-rail-tab:hover{color:var(--accent-blue,#58a6ff);border-color:var(--accent-blue,#58a6ff)}.history-rail-tab-text{writing-mode:vertical-rl;letter-spacing:.2em;font-size:11px}.history-rail-panel{background:var(--bg-panel,#0d1117);border:1px solid var(--border-color-light,#30363d);border-radius:10px;flex-direction:column;width:248px;max-height:68vh;display:flex;position:relative;overflow:hidden;box-shadow:-6px 4px 24px #0006}.history-rail-head{color:var(--text-primary,#e6edf3);border-bottom:1px solid var(--border-color,#21262d);justify-content:space-between;align-items:center;padding:9px 12px;font-size:12px;font-weight:700;display:flex}.history-rail-head button{color:var(--text-secondary,#8b949e);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px}.history-rail-list{flex-direction:column;gap:3px;padding:6px;display:flex;overflow-y:auto}.history-rail-item{cursor:pointer;text-align:left;color:var(--text-primary,#e6edf3);background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:9px;padding:6px;display:flex}.history-rail-item:hover{background:var(--bg-card,#21262d);border-color:var(--border-color-light,#30363d)}.history-rail-item:disabled{opacity:.6;cursor:default}.history-rail-item img{object-fit:cover;border:1px solid var(--border-color-light,#30363d);border-radius:4px;flex-shrink:0;width:46px;height:34px}.history-rail-thumb-ph{border:1px solid var(--border-color-light,#30363d);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:34px;display:inline-flex}.history-rail-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.history-rail-name{white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.history-rail-time{color:var(--text-muted,#6e7681);font-size:11px;font-family:var(--font-mono,monospace)}.history-rail-spin{margin-left:auto;font-size:12px}.history-rail-empty{color:var(--text-muted,#6e7681);text-align:center;padding:18px 10px;font-size:11px}.left-panel-wrap{display:flex;position:relative}.left-collapse-btn{z-index:25;background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);width:16px;height:56px;color:var(--text-muted,#6e7681);cursor:pointer;border-right:none;border-radius:6px 0 0 6px;padding:0;font-size:11px;line-height:1;position:absolute;top:50%;right:-1px;transform:translateY(-50%)}.left-collapse-btn:hover{color:var(--accent-blue,#58a6ff);border-color:var(--accent-blue,#58a6ff)}.left-expand-btn{z-index:2500;background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);color:var(--text-secondary,#8b949e);cursor:pointer;border-radius:7px;padding:5px 11px;font-size:12px;font-weight:600;position:fixed;top:66px;left:20px}.left-expand-btn:hover{color:var(--accent-blue,#58a6ff);border-color:var(--accent-blue,#58a6ff)}.status-provenance{color:var(--text-muted,#6e7681);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;margin-left:auto;font-size:11px;overflow:hidden}.viewer-legend{z-index:45;position:absolute;bottom:10px;left:10px}.viewer-legend-toggle{background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);color:var(--text-secondary,#8b949e);cursor:pointer;border-radius:10px;padding:3px 10px;font-size:11px}.viewer-legend-toggle:hover{color:var(--accent-blue,#58a6ff);border-color:var(--accent-blue,#58a6ff)}.viewer-legend-body{background:var(--bg-panel,#0d1117);border:1px solid var(--border-color-light,#30363d);color:var(--text-secondary,#8b949e);border-radius:8px;flex-direction:column;gap:4px;min-width:110px;padding:8px 12px;font-size:11px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;box-shadow:0 4px 18px #00000059}.viewer-legend-body>div{white-space:nowrap;align-items:center;gap:7px;display:flex}.viewer-legend-body i{border-radius:2px;flex-shrink:0;width:14px;height:3px}.viewer-legend-sep{background:var(--border-color,#21262d);height:1px;margin:2px 0}.density-compact .data-table th,.density-compact .data-table td{padding:3px 7px}.density-compact .data-table tbody tr.stat-row td{padding:2px 7px}.density-compact .table-block{gap:4px}.density-compact .stats-grid{gap:7px;padding:10px 12px}.density-toggle{border:1px solid var(--border-color-light,#30363d);color:var(--text-muted,#6e7681);cursor:pointer;white-space:nowrap;background:0 0;border-radius:9px;padding:2px 9px;font-size:11px}.density-toggle.on{background:var(--accent-blue,#58a6ff);border-color:var(--accent-blue,#58a6ff);color:#fff}.batch-rerun-btn{color:var(--accent-blue,#58a6ff);cursor:pointer;background:#58a6ff1f;border:1px solid #58a6ff73;border-radius:5px;padding:1px 8px;font-size:11px}.batch-rerun-btn:hover{background:#58a6ff38}.batch-rerun-btn:disabled{opacity:.5;cursor:default}.onboard-overlay{z-index:2600;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.onboard-card{background:var(--bg-panel,#0d1117);border:1px solid var(--border-color-light,#30363d);border-radius:12px;max-width:560px;padding:26px 30px;box-shadow:0 16px 48px #0000008c}.onboard-title{color:var(--text-primary,#e6edf3);margin-bottom:16px;font-size:17px;font-weight:700}.onboard-steps{color:var(--text-secondary,#8b949e);flex-direction:column;gap:10px;margin:0 0 14px;padding-left:20px;font-size:12px;display:flex}.onboard-steps b{color:var(--text-primary,#e6edf3)}.onboard-hint{color:var(--text-muted,#6e7681);margin-bottom:16px;font-size:11px}.onboard-btn{background:var(--accent-blue,#58a6ff);color:#fff;cursor:pointer;border:none;border-radius:7px;padding:8px 26px;font-size:13px;font-weight:700}.onboard-btn:hover{filter:brightness(1.1)}.left-collapse-btn{border:1px solid var(--border-color-light,#30363d);border-radius:8px;width:16px;height:46px;font-size:11px;right:-8px;box-shadow:1px 2px 8px #0000004d}.micro-bar-prov{color:var(--text-muted,#6e7681);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;margin-left:auto;padding-left:14px;font-size:10px;overflow:hidden}.center-title{white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden}.center-title-text{text-overflow:ellipsis;overflow:hidden}.toolbar-row{gap:7px;min-height:24px}.center-title{flex-shrink:0;min-width:0;font-size:13px;overflow:visible}.left-expand-btn{z-index:2500;background:var(--bg-card,#21262d);border:1px solid var(--border-color-light,#30363d);width:16px;height:46px;color:var(--text-muted,#6e7681);cursor:pointer;border-left:none;border-radius:0 8px 8px 0;padding:0;font-size:11px;position:fixed;top:50%;left:0;transform:translateY(-50%);box-shadow:-1px 2px 8px #0000004d}.center-header{padding:6px 16px 2px}.toolbar-row{min-height:20px}.toolbar-row.toolbar-main{min-height:34px}.center-title{font-size:12px}.micro-popover-prov{border-top:1px dashed var(--border-color-light,#30363d);flex-wrap:wrap;gap:4px 6px;margin-top:8px;padding-top:7px;display:flex}.loupe-ep-editor{font-size:11px;font-family:var(--font-mono,monospace);color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.loupe-ep-name{color:var(--accent-blue);font-weight:700}.loupe-ep-editor input{width:64px;font-family:var(--font-mono,monospace);background:var(--viewer-bg);border:1px solid var(--accent-blue);color:var(--text-primary);border-radius:4px;padding:1px 6px;font-size:11px}.loupe-ep-editor input:focus{box-shadow:0 0 0 1px var(--accent-blue);outline:none}.loupe-ep-hint{color:#6e7681;margin-left:auto;font-size:10px}.sample-history-row{gap:6px;display:flex}.sample-history-row .sample-btn{white-space:nowrap;flex:1}.spec-table{border-collapse:collapse;width:100%;font-family:var(--font-mono)}.spec-table th{background:var(--table-head-bg);color:var(--text-secondary);text-align:center;border-bottom:1px solid var(--border-color-light);padding:4px;font-size:10px;font-weight:600}.spec-table th:first-child{text-align:left;padding-left:6px}.spec-table td{border-bottom:1px solid var(--border-color-light);padding:0}.spec-table th,.spec-table td{border-right:1px solid var(--border-color-light)}.spec-table th:last-child,.spec-table td:last-child{border-right:none}.spec-table tbody tr:nth-child(odd) td{background:var(--bg-card)}.spec-table tbody tr:nth-child(2n) td{background:var(--row-bg-alt)}.spec-table .text-input{box-sizing:border-box;width:100%;min-width:0;color:var(--text-primary);font-family:var(--font-mono);background:0 0;border:none;border-radius:0;padding:5px 4px;font-size:11px}.spec-table td:first-child .text-input{text-align:left;padding-left:6px}.spec-table td:not(:first-child) .text-input{text-align:center}.spec-table .text-input:focus{background:var(--bg-dark);outline:1px solid var(--accent-blue);outline-offset:-1px}.spec-table input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.spec-table input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spec-table input[type=number]{appearance:textfield}.export-popover{z-index:3000;background:var(--bg-panel);border:1px solid var(--border-color-light);border-radius:10px;flex-direction:column;max-height:calc(100vh - 90px);display:flex;position:fixed;overflow:hidden;box-shadow:0 12px 40px #00000073}.export-popover-head{border-bottom:1px solid var(--border-color);font-size:var(--fs-lg);color:var(--text-primary);flex:none;justify-content:space-between;align-items:center;padding:10px 14px;font-weight:600;display:flex}.export-modal-body{flex:1;padding:12px 14px;overflow-y:auto}.export-section-label{letter-spacing:.06em;color:var(--text-secondary);margin:6px 0 10px;font-size:11px;font-weight:600}.export-naming-grid{grid-template-columns:1fr 1fr;gap:10px 12px;display:grid}.export-naming-grid .field{flex-direction:column;gap:4px;display:flex}.export-naming-grid .field-label{color:var(--text-secondary);font-size:11px}.export-tpl-field{grid-column:1/-1}.export-tpl-hint{color:var(--text-muted);margin:8px 0 14px;font-size:11px}.export-tpl-hint code{background:var(--bg-card);border:1px solid var(--border-color-light);color:var(--accent-blue);border-radius:3px;padding:1px 5px}.export-unit-toggle{border:1px solid var(--border-color-light);background:var(--bg-card);height:28px;color:var(--text-secondary);cursor:pointer;border-radius:4px;font-size:12px}.export-unit-toggle.on{color:var(--accent-blue);border-color:var(--accent-blue);font-weight:600}.export-dl-grid{grid-template-columns:repeat(2,1fr);gap:8px 10px;display:grid}.export-dl-btn{border:1px solid var(--border-color-light);background:var(--bg-card);color:var(--text-primary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:9px 10px;font-size:12.5px;transition:border-color .15s,color .15s;display:flex}.export-dl-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.export-dl-btn:disabled{opacity:.45;cursor:default}.export-dl-grid .export-dl-btn:first-child{border-color:var(--accent-blue);color:var(--accent-blue);grid-column:1/-1;font-weight:600}.batch-export-row{align-items:center;gap:10px;margin:8px 0 4px;display:flex}.batch-export-btn{border:1px solid var(--accent-blue);background:var(--bg-card);color:var(--accent-blue);cursor:pointer;border-radius:6px;padding:6px 14px;font-size:12.5px;font-weight:600}.batch-export-btn:hover:not(:disabled){background:var(--accent-blue);color:#fff}.batch-export-btn:disabled{opacity:.55;cursor:default}.batch-export-hint{color:var(--text-muted);font-size:11px}.batch-spc-select{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color-light);border-radius:4px;max-width:220px;margin-left:8px;padding:2px 6px;font-size:11px}.spc-legend{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0 2px;font-size:11px;display:flex}.spc-legend-item{cursor:pointer;align-items:center;gap:4px;margin:0;display:inline-flex}.spc-chip{border-radius:1px;width:10px;height:3px;display:inline-block}.spc-legend-hint{opacity:.75}.batch-verdict{border-radius:8px;padding:0 5px;font-size:10px;font-weight:700;line-height:16px}.batch-verdict.ok{color:#2ea043;border:1px solid #2ea04366}.batch-verdict.ng{color:#ff7b72;background:#ff7b7222;border:1px solid #ff7b7288}.spc-legend-item.muted{opacity:.55}.spc-legend-nolim{opacity:.85;font-size:10px}.spc-lane{border-top:1px solid #232a33;padding:2px 0 4px}.spc-lane:first-of-type{border-top:none}.spc-lane-head{align-items:baseline;gap:10px;padding:2px 4px;display:flex}.spc-lane-name{color:var(--text-secondary);font-size:11px;font-weight:600}:root,[data-theme=dark]{--spc-series:#22d3ee;--spc-point-label:#7fd4e8;--spc-outlier:#ff7b72;--spc-outlier-label:#ff9b94;--spc-mean:#ffd166;--spc-spec:#f0a35e;--spc-target:#c9a86a;--spc-ctrl:#b4706a;--spc-median:#8b9cab;--spc-axis:#98a6b3;--spc-divider:#3d4a59;--spc-band:#1c3a26;--spc-dot-edge:#0a0b0e}[data-theme=huachuang]{--spc-series:#38d6ff;--spc-point-label:#8fd8f2;--spc-outlier:#ff8a80;--spc-outlier-label:#ffa39a;--spc-mean:#ffd97a;--spc-spec:#f5ae6b;--spc-target:#cbb37e;--spc-ctrl:#c07d76;--spc-median:#9db0cf;--spc-axis:#a3b6d6;--spc-divider:#35507e;--spc-band:#1b3550;--spc-dot-edge:#0a1628}[data-theme=light]{--spc-series:#0276a5;--spc-point-label:#0f6e8c;--spc-outlier:#cc2f2a;--spc-outlier-label:#b32722;--spc-mean:#b07d10;--spc-spec:#b45309;--spc-target:#8a6a1f;--spc-ctrl:#a54d44;--spc-median:#5b6b7a;--spc-axis:#55606b;--spc-divider:#c2cbd4;--spc-band:#d9e8dd;--spc-dot-edge:#fff}.spc-band{fill:var(--spc-band);opacity:.3}.spc-ln-series{stroke:var(--spc-series)}.spc-ln-ctrl{stroke:var(--spc-ctrl)}.spc-ln-med{stroke:var(--spc-median)}.spc-ln-spec{stroke:var(--spc-spec)}.spc-ln-target{stroke:var(--spc-target)}.spc-ln-div{stroke:var(--spc-divider)}.spc-dot{fill:var(--spc-series);stroke:var(--spc-dot-edge)}.spc-dot-out{fill:var(--spc-outlier);stroke:var(--spc-outlier)}.spc-mean-dot{fill:var(--spc-mean);stroke:var(--spc-dot-edge)}.spc-t-ctrl,.spc-t-med,.spc-t-spec,.spc-t-target,.spc-t-axis,.spc-t-point,.spc-t-outlier,.spc-t-mean{font-family:ui-monospace,Menlo,monospace;font-size:10px}.spc-t-ctrl{fill:var(--spc-ctrl)}.spc-t-med{fill:var(--spc-median)}.spc-t-spec{fill:var(--spc-spec)}.spc-t-target{fill:var(--spc-target)}.spc-t-axis{fill:var(--spc-axis);font-size:11px}.spc-t-point{fill:var(--spc-point-label);font-size:9px}.spc-t-outlier{fill:var(--spc-outlier-label);font-size:9px}.spc-t-mean{fill:var(--spc-mean);font-size:9px}.spc-lane-name{font-size:12.5px}.spc-lane .batch-trend-stats{font-size:12px}
