@font-face{font-family:JetBrains Mono;src:url(/font/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/font/JetBrainsMono-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/font/JetBrainsMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Source Han Sans CN;src:url(/font/SourceHanSansCN-Regular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Source Han Sans CN;src:url(/font/SourceHanSansCN-Medium.otf) format("opentype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Source Han Sans CN;src:url(/font/SourceHanSansCN-Bold.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}:root,[data-theme=dark]{color-scheme:dark;--bg: #0f1115;--panel: #1a1d24;--panel-2: #12151c;--border: #2a2f3a;--text: #e8eaed;--muted: #8b949e;--accent: #3b82f6;--ok: #22c55e;--warn: #f59e0b;--fail: #ef4444;--chip: #252830;--font-sans-family: "JetBrains Mono", "Source Han Sans CN", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif;--font-mono-family: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;font-family:var(--font-sans-family)}[data-theme=light]{color-scheme:light;--bg: #f1f5f9;--panel: #ffffff;--panel-2: #e8eef5;--border: #d0d7e2;--text: #0f172a;--muted: #64748b;--accent: #2563eb;--ok: #16a34a;--warn: #d97706;--fail: #dc2626;--chip: #e2e8f0}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh;overflow:hidden}#root{height:100vh;min-height:100vh;max-height:100vh;display:flex;flex-direction:column;overflow:hidden}header.app-bar{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--panel)}.app-bar-start{display:flex;align-items:center;gap:12px;flex-shrink:0}.app-bar-end{display:flex;align-items:center;justify-content:flex-end;gap:8px 12px;flex:1;min-width:0;flex-wrap:wrap}.app-bar-end .chip{display:inline-flex;align-items:center;flex:0 0 auto;width:auto;margin:0;padding:6px 10px;font-size:11px;border-radius:8px;background:var(--chip);border:1px solid var(--border);color:var(--text);font-weight:500}.icon-btn{width:32px;height:32px;margin:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:var(--chip);border:1px solid var(--border);color:var(--text);font-weight:500;cursor:pointer}.icon-btn svg{width:16px;height:16px}.icon-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 45%,var(--border));color:var(--accent)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}header.app-bar h1{margin:0;font-size:16px;font-weight:600}.app-menu{position:relative}.app-menu-trigger{width:auto;margin:0;padding:6px 12px;border-radius:8px;background:transparent;border:1px solid transparent;color:var(--text);font-weight:500;font-size:13px;cursor:pointer}.app-menu-trigger:hover,.app-menu-trigger[aria-expanded=true]{background:var(--chip);border-color:var(--border)}.app-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:240px;max-width:320px;max-height:min(80vh,640px);overflow-y:auto;overscroll-behavior:contain;padding:6px;border:1px solid var(--border);border-radius:10px;background:var(--panel);box-shadow:0 10px 28px color-mix(in srgb,#000 24%,transparent)}.app-menu--right .app-menu-panel{left:auto;right:0}.app-menu-item{width:100%;margin:0;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:none;border-radius:6px;background:transparent;color:var(--text);font-weight:500;font-size:12px;text-align:left;cursor:pointer}.app-menu-item:hover:not(:disabled){background:var(--chip)}.app-menu-item:disabled{opacity:.45;cursor:not-allowed}.app-menu-hint{font-size:11px;color:var(--muted);font-family:var(--font-mono-family);flex-shrink:0;min-width:14px;text-align:right}.app-menu-item[aria-checked=true] .app-menu-hint{color:var(--accent)}.app-menu-divider{height:1px;margin:6px 4px;background:var(--border)}.app-menu-header{padding:4px 10px 6px;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.app-menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-bar-file-input{display:none}.app-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.app-dialog{width:min(100%,420px);border:1px solid var(--border);border-radius:12px;background:var(--panel);box-shadow:0 16px 40px color-mix(in srgb,#000 28%,transparent)}.app-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.app-dialog-header h2{margin:0;font-size:14px;font-weight:600}.app-dialog-close{font-size:18px;line-height:1}.app-dialog-body{padding:16px}.app-dialog-text{margin:0;font-size:12px;line-height:1.55;color:var(--text);font-family:var(--font-mono-family)}.import-axis-hint-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 8px}.import-axis-hint-row .dialog-hint{margin:0;flex:1;min-width:140px}.shortcut-help-search{display:block;margin-bottom:12px}.shortcut-help-search input{width:100%;box-sizing:border-box;font-family:var(--font-mono-family);font-size:12px;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--panel);color:var(--text)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.shortcut-help{display:flex;flex-direction:column;gap:14px;max-height:min(60vh,480px);overflow:auto;font-family:var(--font-sans-family)}.shortcut-help-title{margin:0 0 6px;font-size:12px;font-weight:600;color:var(--muted)}.shortcut-help-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.shortcut-help-list li{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:center;font-size:13px}.shortcut-kbd{font-family:var(--font-mono-family);font-size:11px;padding:2px 6px;border:1px solid var(--border);border-radius:4px;background:var(--chip);color:var(--text);width:fit-content}.shortcut-hit{background:color-mix(in srgb,var(--accent, #5b8def) 35%,transparent);color:inherit;border-radius:2px;padding:0 1px}.app-dialog-meta{margin:0;display:grid;gap:10px}.app-dialog-meta div{display:grid;grid-template-columns:96px 1fr;gap:8px;align-items:baseline}.app-dialog-meta dt{font-size:11px;color:var(--muted)}.app-dialog-meta dd{margin:0;font-size:13px;font-family:var(--font-mono-family)}.badge{font-size:11px;padding:3px 8px;border-radius:999px;background:var(--chip);color:var(--muted);font-family:var(--font-mono-family)}.badge-warn{background:color-mix(in srgb,var(--warn) 28%,var(--chip));color:var(--warn)}.sample-panel{margin-top:12px;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:var(--panel-2)}.sample-panel>summary{cursor:pointer;font-size:12px;color:var(--muted);font-weight:500;-webkit-user-select:none;user-select:none}.sample-panel[open]>summary{margin-bottom:8px;color:var(--text)}.data-grid-scroll{max-height:280px}.data-grid-scroll-tall{max-height:480px}.data-grid{outline:none}.data-grid:focus{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent);border-radius:6px}.data-grid .row-idx{text-align:center;color:var(--muted);width:2.5em}.data-grid .row-ops{width:2.5em;text-align:center;padding:2px!important}.data-grid .col-unit{font-weight:400;color:var(--muted)}.data-grid .cell-editable{cursor:cell}.data-grid .cell-editable:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.data-grid .cell-selected{outline:2px solid var(--accent);outline-offset:-2px;background:color-mix(in srgb,var(--accent) 16%,transparent)}.data-grid .cell-editing{padding:0!important}.data-grid .cell-input{width:100%;margin:0;border:1px solid var(--accent);border-radius:0;background:var(--panel);color:var(--text);font:inherit;padding:4px 6px;text-align:right}.sheet-bar{display:flex;gap:4px;padding:6px 12px;background:var(--panel-2);border-bottom:1px solid var(--border);overflow-x:auto;align-items:flex-end}.sheet-tab-wrap{display:flex;align-items:stretch;position:relative}.sheet-tab{width:auto!important;margin:0!important;padding:6px 22px 6px 12px!important;border-radius:6px 6px 0 0!important;background:var(--chip)!important;border:1px solid var(--border)!important;border-bottom:none!important;color:var(--muted)!important;font-weight:500!important;font-size:12px!important}.sheet-tab.active,.sheet-tab-wrap.active .sheet-tab{background:var(--panel)!important;color:var(--text)!important}.sheet-tab.add{min-width:36px;padding:6px 12px!important}.sheet-close{position:absolute;right:2px;top:2px;width:18px!important;margin:0!important;padding:0!important;font-size:12px!important;line-height:18px;background:transparent!important;border:none!important;color:var(--muted)!important;font-weight:400!important}.sheet-close:hover{color:var(--fail)!important}.sheet-rename{width:96px;margin:0;padding:5px 8px;border:1px solid var(--accent);border-radius:6px 6px 0 0;background:var(--bg);color:var(--text);font-size:12px;font-family:var(--font-mono-family)}label.check{display:flex;align-items:center;gap:8px;margin:10px 0 4px;font-size:12px;color:var(--muted);cursor:pointer}label.check.compact{margin:4px 0;font-family:var(--font-mono-family);font-size:11px}label.check input{width:auto;margin:0}.comp-list{margin:6px 0 10px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--bg);max-height:220px;overflow:auto}.comp-row{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:6px;align-items:center;margin-bottom:6px;font-size:12px}.comp-field{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--muted)}.comp-field input{width:100%;padding:4px 6px;font-size:12px}.sample-hint{margin:4px 0 10px;font-size:12px;color:var(--muted);line-height:1.4}.stats-table table{font-size:11px}.stats-table th,.stats-table td{padding:4px 6px;white-space:nowrap}.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.sample-tags-label{font-size:11px;color:var(--muted);margin-bottom:4px}.stage-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 12px 0}.stage-toolbar button.chip{flex:0 0 auto;width:auto;margin-top:0;padding:6px 10px;font-size:11px}.stage-toolbar .check{margin:0;font-size:11px;white-space:nowrap}.layer-bar{display:flex;gap:10px;padding:4px 12px 0;flex-wrap:wrap;font-size:11px;color:var(--muted)}.peak-params{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-bottom:8px}.peak-params label{font-size:11px}.peak-params input{width:100%;padding:4px 6px;font-size:12px}.stage-toolbar .chip.active{border-color:var(--accent);color:var(--accent)}.fit-template-list{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}aside label input[type=text]{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:inherit;font-family:var(--font-mono-family, ui-monospace, monospace);font-size:12px}.tag-row .chip.active{border-color:var(--accent);color:var(--accent)}.sample-list{list-style:none;margin:0 0 10px;padding:0;max-height:180px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.sample-list li+li{border-top:1px solid var(--border)}.sample-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px 10px;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left;font:inherit}.sample-item:hover:not(:disabled){background:#3b82f614}.sample-name{font-size:12px;font-family:var(--font-mono-family, ui-monospace, monospace)}.sample-meta{margin-top:2px;font-size:11px;color:var(--muted);line-height:1.3}.sheet-tab-wrap.dragging{opacity:.55}.sheet-tab-wrap{cursor:grab}.layout{display:grid;--jm-left-auto: clamp(200px, 22vw, 340px);--jm-right-auto: clamp(220px, 24vw, 380px);grid-template-columns:var(--jm-left-w, var(--jm-left-auto)) 1fr var(--jm-right-w, var(--jm-right-auto));flex:1;min-height:0;overflow:hidden;position:relative}@media(max-width:1100px){.layout{grid-template-columns:1fr;overflow-y:auto}.panel-resize-handle{display:none!important}}aside.left-full,.side.right-rail{position:relative}.panel-resize-handle{position:absolute;top:0;bottom:0;width:6px;z-index:8;cursor:col-resize;touch-action:none;background:transparent}.panel-resize-handle:after{content:"";position:absolute;top:0;bottom:0;left:2px;width:2px;background:transparent;transition:background .12s ease}.panel-resize-handle:hover:after,body.panel-resizing .panel-resize-handle:after{background:color-mix(in srgb,var(--accent) 55%,transparent)}.panel-resize-left{right:-3px}.panel-resize-right{left:-3px}body.panel-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.panel-resizing iframe,body.panel-resizing .chart{pointer-events:none!important}aside,.side{background:var(--panel);border-right:1px solid var(--border);padding:16px;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}aside::-webkit-scrollbar,.side::-webkit-scrollbar{width:8px}aside::-webkit-scrollbar-thumb,.side::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 35%,var(--border));border-radius:4px}aside::-webkit-scrollbar-track,.side::-webkit-scrollbar-track{background:transparent}.side{border-right:none;border-left:1px solid var(--border)}aside h2,.side h2{margin:0 0 12px;font-size:13px;color:var(--muted);font-weight:500}.panel-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.panel-section:first-child{margin-top:0;padding-top:0;border-top:none}.graph-bar{display:flex;gap:4px;flex-shrink:0;padding:4px 12px 6px;background:var(--panel-2);border-bottom:1px solid var(--border);overflow-x:auto;align-items:flex-end;position:relative;min-height:36px}.graph-bar.drop-active{outline:2px dashed var(--accent);outline-offset:-2px;background:color-mix(in srgb,var(--accent) 10%,var(--panel-2))}.graph-bar-drop-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2;font-size:12px;color:var(--accent);background:color-mix(in srgb,var(--panel-2) 72%,transparent)}.sheet-tab.graph-tab{display:inline-flex;align-items:center;gap:6px;max-width:180px}.graph-tab-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graph-thumb{width:22px;height:14px;border-radius:2px;border:1px solid var(--border);flex-shrink:0;background:var(--panel)}.graph-thumb.tmpl-default{background:linear-gradient(180deg,#5b8def 0%,#5b8def 42%,transparent 42%)}.graph-thumb.tmpl-dual_y{background:linear-gradient(90deg,#5b8def 0 50%,#e67e22 50% 100%)}.graph-thumb.tmpl-peaks{background:linear-gradient(180deg,#9b59b6 0%,#9b59b6 35%,transparent 35%)}.graph-thumb.tmpl-scatter{background:radial-gradient(circle at 28% 38%,#5b8def 2px,transparent 2px),radial-gradient(circle at 62% 62%,#5b8def 2px,transparent 2px),var(--panel)}.graph-thumb.tmpl-linreg{background:linear-gradient(135deg,transparent 45%,#5b8def 45%,#5b8def 55%,transparent 55%)}.graph-thumb-img{width:22px;height:14px;border-radius:2px;border:1px solid var(--border);flex-shrink:0;object-fit:cover;display:block}.hint-line{margin:0 0 8px;font-size:11px;color:var(--muted)}.fit-history-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.result.compact{margin-top:8px;font-size:11px;max-height:none;white-space:normal}label{display:block;font-size:12px;color:var(--muted);margin-bottom:10px}select,input[type=file],input[type=number],button{font-family:inherit}select,input[type=number],textarea{width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:var(--font-mono-family);font-size:12px}textarea{min-height:96px;resize:vertical;line-height:1.45}.job-bar{font-size:12px;color:var(--muted);font-family:var(--font-mono-family);margin-top:8px}button{width:100%;margin-top:8px;padding:9px 12px;border:none;border-radius:8px;background:var(--accent);color:#fff;font-weight:600;font-size:13px;cursor:pointer}button.secondary{background:var(--chip);border:1px solid var(--border);color:var(--text);font-weight:500}button:disabled{opacity:.45;cursor:not-allowed}.btn-row{display:flex;gap:8px}.btn-row.wrap{flex-wrap:wrap}.btn-row button{flex:1}.btn-row.wrap button.chip{flex:0 0 auto;width:auto;margin-top:0;padding:6px 10px;font-size:11px}.analysis-entry-row button{flex:1 1 calc(50% - 4px);min-width:0;margin-top:0;font-family:var(--font-sans-family)}tr.row-active td{background:#1e3a5f}tr.row-qc-fail td{background:#f871711f}.batch-qc-bar{margin-bottom:8px;gap:10px;align-items:center}.batch-qc-threshold input{width:52px;margin-left:4px}.batch-qc-stats{font-size:11px;color:var(--muted);font-family:var(--font-mono-family)}main.stage{padding:16px;display:flex;flex-direction:column;gap:12px;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.chart-wrap{position:relative;flex:1;min-height:360px;max-height:480px;overflow:hidden;display:flex;flex-direction:column}.chart-wrap .chart{flex:1;min-height:360px;max-height:480px;overflow:hidden}.chart-wrap.is-empty .chart{opacity:.35}.chart-empty{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--muted);font-size:14px;letter-spacing:.02em}.chart{flex:1;min-height:360px;background:var(--panel-2, var(--panel));border:1px solid var(--border);border-radius:12px;padding:8px}.table-wrap{max-height:180px;overflow:auto;border:1px solid var(--border);border-radius:8px}.batch-table{max-height:160px;margin-top:4px}table{width:100%;border-collapse:collapse;font-size:12px;font-family:var(--font-mono-family)}th,td{border-bottom:1px solid var(--border);padding:6px 8px;text-align:right}th{position:sticky;top:0;background:var(--chip);color:var(--muted);font-weight:500}.err{color:var(--fail, var(--warn, #f87171));font-size:12px;min-height:1.2em;margin-top:6px}.result{font-size:12px;line-height:1.55;color:var(--text);font-family:var(--font-mono-family);white-space:pre-wrap;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;max-height:280px;overflow:auto}.api-bootstrap-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0f1115b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.api-bootstrap-card{min-width:280px;max-width:420px;padding:24px 28px;border:1px solid var(--border);border-radius:12px;background:var(--panel);text-align:center}.api-bootstrap-spinner{width:28px;height:28px;margin:0 auto 14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:api-bootstrap-spin .9s linear infinite}.api-bootstrap-title{margin:0;font-size:14px;color:var(--text)}.api-bootstrap-hint{margin:10px 0 0;font-size:12px;color:var(--muted)}@keyframes api-bootstrap-spin{to{transform:rotate(360deg)}}body.chart-focus .graph-bar{display:none}body.chart-focus .layout>aside,body.chart-focus .layout>.side{display:none}body.chart-focus .layout{grid-template-columns:1fr}body.chart-focus main.stage .chart-wrap,body.chart-focus main.stage .chart-wrap .chart{max-height:none;min-height:65vh}body.chart-focus main.stage .table-wrap{max-height:140px}body.layout-data .layout>.side{display:none}body.layout-data .layout{grid-template-columns:var(--jm-left-w, clamp(240px, 28vw, 400px)) 1fr}body.hide-right-rail .layout{grid-template-columns:var(--jm-left-w, var(--jm-left-auto)) 1fr 52px}body.hide-right-rail.layout-data .layout,body.layout-data.hide-right-rail .layout{grid-template-columns:var(--jm-left-w, clamp(240px, 28vw, 400px)) 1fr 52px}body.hide-right-rail .layout>.side.right-rail{display:none}body.hide-left-aside .layout{grid-template-columns:52px 1fr var(--jm-right-w, var(--jm-right-auto))}body.hide-left-aside.hide-right-rail .layout{grid-template-columns:52px 1fr 52px}body.hide-left-aside aside.left-full{display:none}body.pure-chart .layout{grid-template-columns:52px 1fr 52px!important}body.pure-chart aside.left-full,body.pure-chart .side.right-rail{display:none!important}body.pure-chart .results-bar{display:none}body.pure-chart .chart-status-bar{display:flex}aside.left-strip{width:52px;min-width:52px;padding:8px 4px;border-right:1px solid var(--border);background:var(--panel);overflow-x:hidden;overflow-y:auto}aside.right-strip{width:52px;min-width:52px;padding:8px 4px;border-left:1px solid var(--border);border-right:none;background:var(--panel);overflow-x:hidden;overflow-y:auto}.analysis-rail-strip,.project-tree-strip{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.strip-expand{width:40px;height:28px;border:1px solid var(--border);border-radius:6px;background:var(--chip);color:var(--muted);cursor:pointer;font-size:12px;padding:0}.strip-expand:hover{background:var(--panel-2);color:var(--text)}.strip-section{font-size:9px;color:var(--muted);font-weight:500;margin-top:4px}.strip-list{list-style:none;margin:0;padding:0;width:100%}.strip-item{width:40px;height:28px;margin:2px auto;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--chip);font-size:10px;font-family:var(--font-mono-family);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center}.strip-item.active{background:color-mix(in srgb,var(--accent) 18%,var(--chip));border-color:var(--accent);color:var(--accent)}.strip-item.strip-graph{height:32px;padding:2px}.strip-thumb{width:100%;height:100%;object-fit:cover;border-radius:2px}body.layout-data.hide-left-aside .layout{grid-template-columns:1fr}.status-batch{font-family:var(--font-mono-family);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-qc{font-family:var(--font-mono-family);font-size:11px;color:var(--muted)}.status-qc.has-fail{color:#c0392b}.status-next-fail{color:#c0392b!important;border-color:color-mix(in srgb,#c0392b 40%,var(--border))!important}.status-hints{font-size:10px;color:var(--muted);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85;cursor:pointer}.status-hints.collapsed{max-width:36px;font-size:12px;opacity:1}.chart-status-bar.pure-mini{border-top:1px solid var(--border);background:color-mix(in srgb,var(--panel) 92%,var(--accent))}.status-toggle{border:1px solid var(--border);border-radius:4px;background:var(--chip);cursor:pointer;font-size:11px;padding:1px 8px;color:var(--muted)}.status-toggle.active{background:color-mix(in srgb,var(--accent) 18%,var(--chip));border-color:var(--accent);color:var(--accent)}.status-toggle:hover{color:var(--text)}.ctx-menu{position:fixed;z-index:1000;margin:0;padding:4px 0;list-style:none;min-width:140px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px color-mix(in srgb,#000 18%,transparent)}.ctx-menu-item{display:block;width:100%;margin:0;padding:6px 12px;text-align:left;border:none;background:transparent;color:var(--text);font-size:12px;font-weight:500;cursor:pointer;border-radius:0}.ctx-menu-item:hover:not(:disabled){background:var(--chip)}.ctx-menu-item:disabled{opacity:.45;cursor:default}.ctx-menu-div{height:1px;margin:4px 8px;background:var(--border)}.left-aside-expand{position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:20;width:28px;height:56px;border:1px solid var(--border);border-left:none;border-radius:0 8px 8px 0;background:var(--panel);color:var(--muted);font-size:14px;cursor:pointer;padding:0}.left-aside-expand:hover{background:var(--chip);color:var(--text)}.chart-window-mini-bar{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--panel-2);border-bottom:1px solid var(--border);flex-shrink:0}.chart-window-title{font-size:12px;font-family:var(--font-mono-family);color:var(--muted);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-mini-qc{font-size:11px;font-family:var(--font-mono-family);color:var(--muted);padding:0 6px}.chart-mini-qc.has-fail{color:#c0392b}.chart-toolbar-mini{flex:1;border:none;padding:0;background:transparent}.batch-wizard-row{cursor:pointer}.batch-wizard-row:hover td{background:var(--chip)}body.layout-data main.stage .data-dock{flex:1;min-height:200px;max-height:42vh;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--panel);padding:8px}.chart-stage{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;gap:0;border:1px solid var(--border);border-radius:10px;background:var(--panel);overflow:hidden}.chart-toolbar{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--panel-2);flex-shrink:0}.chart-tool-btn{width:auto;min-width:32px;margin:0;padding:4px 10px;font-size:12px;border-radius:6px;background:var(--chip);border:1px solid var(--border);color:var(--text);font-weight:500;cursor:pointer}.chart-tool-btn.accent{background:var(--accent);border-color:transparent;color:#fff}.chart-tool-btn.active{border-color:var(--accent);color:var(--accent)}.chart-tool-btn:disabled{opacity:.45;cursor:not-allowed}.chart-tool-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.chart-stage .chart-wrap{border:none;border-radius:0;max-height:none}.chart-status-bar{display:flex;align-items:center;gap:12px;padding:4px 10px;border-top:1px solid var(--border);background:var(--panel-2);font-size:11px;font-family:var(--font-mono-family);flex-shrink:0}.status-cell{white-space:nowrap}.status-muted{color:var(--muted)}.status-end{margin-left:auto}.layer-panel{position:absolute;top:8px;right:8px;z-index:4;width:148px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000040}.layer-panel-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-bottom:1px solid var(--border);font-size:11px;color:var(--muted)}.layer-panel-close{width:24px;height:24px}.layer-panel-list{list-style:none;margin:0;padding:6px 8px}.layer-row{font-size:12px;color:var(--text)}.stage-stats-fold{margin:0}.stage-stats-fold summary{cursor:pointer;font-size:12px;color:var(--muted);-webkit-user-select:none;user-select:none}.dialog-panel button{width:100%}.dialog-panel .btn-row button{flex:1}.dialog-check-row{display:flex;flex-wrap:wrap;gap:8px 12px;margin:8px 0}.check.inline{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:12px;color:var(--text)}.dialog-hint{margin:8px 0 0;font-size:11px;color:var(--muted)}.import-preview-wrap{max-height:120px;overflow:auto;margin:8px 0;border:1px solid var(--border);border-radius:6px}.import-preview{width:100%;border-collapse:collapse;font-size:10px;font-family:var(--font-mono-family)}.import-preview th,.import-preview td{padding:3px 6px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.import-preview th{background:var(--panel-2);color:var(--muted);position:sticky;top:0}.batch-wizard-preview{max-height:220px}.strip-item.strip-col{font-size:9px;letter-spacing:-.02em}.dialog-axis-range{display:flex;align-items:center;gap:8px;margin-bottom:10px}.dialog-axis-range input{flex:1;margin-top:0}.dialog-axis-label{font-size:11px;color:var(--muted);min-width:48px}.analysis-summary .hint-line{margin-top:8px}.job-progress-bar{position:relative;height:3px;background:var(--border);flex-shrink:0}.job-progress-fill{height:100%;background:var(--accent);transition:width .2s ease}.job-progress-label{position:absolute;right:8px;top:4px;font-size:10px;color:var(--muted);pointer-events:none}.chart-window-shell{display:flex;flex-direction:column;flex:1;min-height:0;height:100vh}.chart-window-shell main.stage{flex:1;min-height:0}.aside-docks{margin-top:8px}.aside-dock{border-top:1px solid var(--border);padding-top:8px;margin-top:8px}.aside-dock:first-child{border-top:none;padding-top:0;margin-top:0}.aside-dock>summary{cursor:pointer;font-size:12px;font-weight:500;color:var(--muted);list-style:none;display:flex;align-items:center;gap:6px;margin-bottom:8px;-webkit-user-select:none;user-select:none}.aside-dock>summary::-webkit-details-marker{display:none}.aside-dock>summary:before{content:"▸";font-size:10px;color:var(--muted)}.aside-dock[open]>summary:before{content:"▾"}.aside-dock-body{padding-bottom:4px}.right-rail .rail-dock{border-top:1px solid var(--border);padding-top:10px;margin-top:10px}.right-rail .rail-dock:first-child{border-top:none;padding-top:0;margin-top:0}.rail-dock>summary{cursor:pointer;font-size:12px;font-weight:500;color:var(--muted);list-style:none;display:flex;align-items:center;gap:6px;margin-bottom:8px;-webkit-user-select:none;user-select:none}.rail-dock>summary::-webkit-details-marker{display:none}.rail-dock>summary:before{content:"▸";font-size:10px;color:var(--muted)}.rail-dock[open]>summary:before{content:"▾"}.rail-dock-body{padding-bottom:4px}tr.row-error td{color:color-mix(in srgb,#e74c3c 75%,var(--text))}.dialog-progress{position:relative;height:22px;margin:8px 0;background:var(--chip);border-radius:4px;overflow:hidden;font-size:11px}.dialog-progress-fill{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--accent) 35%,transparent);transition:width .2s ease}.dialog-progress span{position:relative;display:block;padding:3px 8px;color:var(--text)}.status-progress{position:relative;min-width:120px;max-width:200px;height:18px;background:var(--chip);border-radius:3px;overflow:hidden;padding:0}.status-progress-fill{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--accent) 30%,transparent)}.status-progress-text{position:relative;padding:0 6px;font-size:10px;line-height:18px;white-space:nowrap}.project-tree{margin-bottom:12px}.tree-meta-label{display:block;font-size:11px;color:var(--muted);margin-bottom:8px}.tree-meta-label input,.tree-meta-label textarea{margin-top:4px}.tree-section-label{font-size:11px;color:var(--muted);margin:10px 0 4px;font-weight:500}.tree-list{list-style:none;margin:0;padding:0}.tree-list.nested{margin-left:10px;margin-top:2px}.tree-item{width:100%;margin:0;padding:5px 8px;text-align:left;font-size:12px;border-radius:6px;background:transparent;border:none;color:var(--text);font-weight:500;cursor:pointer}.tree-item:hover:not(:disabled){background:var(--chip)}.tree-item.active{background:color-mix(in srgb,var(--accent) 18%,var(--chip));color:var(--accent)}.tree-col{font-family:var(--font-mono-family);font-size:11px}.tree-axis-row{display:flex;gap:6px;margin:4px 0 4px 10px}.axis-pill{font-size:10px;font-family:var(--font-mono-family);padding:2px 6px;border-radius:4px;background:var(--chip);color:var(--muted);max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axis-pill.x{color:color-mix(in srgb,var(--accent) 80%,var(--text))}.axis-pill.y{color:color-mix(in srgb,#e67e22 70%,var(--text))}.tree-item.tree-graph{display:flex;align-items:center;gap:6px}.tree-graph-thumb{width:28px;height:16px}.tree-empty{font-size:11px;color:var(--muted);padding:4px 8px}.tree-details{margin-top:12px;font-size:12px}.tree-details summary{cursor:pointer;color:var(--muted);margin-bottom:8px}.chart-stage.drop-active{outline:2px dashed var(--accent);outline-offset:-2px}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:13px;color:var(--accent);pointer-events:none}.results-bar{flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--panel);max-height:220px;display:flex;flex-direction:column;overflow:hidden}.results-tabs{display:flex;gap:2px;padding:4px 6px;border-bottom:1px solid var(--border);background:var(--panel-2)}.results-tab{width:auto;margin:0;padding:4px 12px;font-size:11px;border-radius:6px;background:transparent;border:1px solid transparent;color:var(--muted);font-weight:500;cursor:pointer}.results-tab.active{background:var(--panel);border-color:var(--border);color:var(--text)}.results-body{padding:8px 10px;overflow:auto;flex:1;min-height:0}.result-line{margin:0 0 6px;font-size:11px;font-family:var(--font-mono-family)}.results-body .table-wrap{max-height:160px}
