:root{
  --bg:#f4f7f8;--card:#fff;--surface:#f8fafb;--text:#17232d;--muted:#6f7f8b;--border:#dce4e8;
  --sidebar:#101a23;--sidebar2:#1c2a35;--primary:#139ebc;--accent:#eaf7fa;--brown:#9a6b2b;--blue:#3182ce;
  --red:#c63d4d;--green:#2f855a;--amber:#b7791f;--shadow:0 3px 10px rgba(31,45,55,.07);--r:9px;--r2:12px;
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px}.hidden{display:none!important}
button,input,select{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:228px 1fr}.sidebar{background:var(--sidebar);color:#dce7ee;padding:22px 16px;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center;margin:2px 6px 30px;font-size:14px}.brandMark{width:34px;height:34px;border-radius:10px;background:var(--primary);display:grid;place-items:center;color:white;font-weight:900;font-size:18px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.navbtn{border:0;background:transparent;color:#aebbc5;border-radius:9px;padding:10px 11px;display:flex;align-items:center;gap:10px;font-weight:600;font-size:13px;text-align:left;cursor:pointer}.navbtn:hover{background:#19242e;color:white}.navbtn.active{background:var(--sidebar2);color:white}.navIcon{width:18px;text-align:center}.sideBottom{margin-top:auto;border-top:1px solid #27333d;padding:16px 6px 2px;display:flex;flex-direction:column;gap:5px}.sideBottom span{font-size:12px;font-weight:700}.sideBottom small{font-size:10px;line-height:1.45;color:#7f919f}.main{padding:24px 28px 42px;min-width:0}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.header h1{font-size:28px;margin:2px 0 0}.eyebrow{font-size:10px;letter-spacing:.13em;font-weight:800;color:var(--muted)}.headerActions{display:flex;gap:8px}.btn{border:1px solid transparent;border-radius:8px;padding:8px 12px;cursor:pointer;font-weight:700;font-size:12px;background:var(--primary);color:#fff}.btn.outline{background:#fff;color:var(--text);border-color:var(--border)}.btn.small{padding:7px 10px}.btn:disabled{opacity:.45;cursor:not-allowed}.uploadShell{max-width:1040px;margin:60px auto;display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}.uploadIntro h2{font-size:42px;line-height:1.04;max-width:620px;margin:8px 0 16px}.uploadIntro p{color:var(--muted);font-size:15px;line-height:1.65;max-width:570px}.deviceRow{display:flex;gap:8px;margin-top:24px}.dropCard{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);padding:20px;box-shadow:var(--shadow)}.dropzone{border:2px dashed #c9d7dd;border-radius:12px;padding:42px 20px;text-align:center;background:var(--surface);cursor:pointer}.dropzone:hover{border-color:var(--primary);background:#f4fbfd}.dropzone b{display:block;font-size:16px}.dropzone span{display:block;color:var(--muted);font-size:12px;margin-top:7px}.uploadNotes{display:grid;gap:8px;margin-top:16px;color:var(--muted);font-size:11px}.errorBox{margin-top:12px;padding:10px;border-radius:8px;background:#fff0f1;color:#a52e39;display:flex;gap:8px;font-size:12px}.summaryGrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.summaryCard,.summaryWarn{background:#fff;border:1px solid var(--border);border-radius:var(--r2);padding:14px 15px;box-shadow:var(--shadow)}.summaryCard span,.summaryWarn span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:800}.summaryCard b,.summaryWarn b{display:block;font:700 20px/1.25 var(--mono);margin-top:7px}.summaryCard small,.summaryWarn small{display:block;color:var(--muted);font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summaryWarn{border-color:#ead5a4;background:#fffaf0}.summaryWarn b{color:#9a6818;font-family:var(--sans);font-size:17px}.notice{margin-top:12px;background:#fff9ec;border:1px solid #ecd8aa;border-radius:var(--r);padding:10px 12px;display:flex;gap:10px;align-items:center;color:#73531d;font-size:11px}.notice div{flex:1}.notice span{color:#856d45}.sectionCard{background:#fff;border:1px solid var(--border);border-radius:var(--r2);margin-top:14px;box-shadow:var(--shadow);overflow:hidden}.sectionHeader{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--border)}.sectionHeader h2{margin:3px 0 0;font-size:23px}.workspace{margin-top:14px;display:grid;grid-template-columns:220px 1fr;gap:14px;align-items:start}.paramList{background:#fff;border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;max-height:calc(100vh - 220px);overflow-y:auto;position:sticky;top:14px}.panelTitle{padding:12px 13px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.panelTitle .badges{display:flex;gap:5px}.pill{background:#eef2f4;padding:3px 7px;border-radius:999px;font-size:10px}.paramBtn{width:100%;border:0;border-bottom:1px solid var(--border);background:transparent;padding:10px 12px;text-align:left;display:flex;justify-content:space-between;align-items:center;cursor:pointer;color:var(--text)}.paramBtn:hover{background:var(--surface)}.paramBtn.active{background:var(--accent);box-shadow:inset 3px 0 var(--primary)}.paramBtn b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.paramBtn span,.paramBtn small{font-size:10px;color:var(--muted)}.analysisTop{display:flex;justify-content:space-between;align-items:flex-start;margin:2px 2px 10px}.paramName{font-weight:800;font-size:25px;border:1px solid transparent;background:transparent;padding:0;max-width:550px}.paramName:hover,.paramName:focus{border-color:var(--border);outline:none;border-radius:6px;padding:0 5px}.analysisTop small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.status{padding:5px 9px;border-radius:999px;font-size:10px;font-weight:800}.status.good{background:#e6f6ef;color:#16754d}.status.review{background:#fff5db;color:#8b651c}.status.critical{background:#ffe9ec;color:#a52e39}.controlBar{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:10px;display:grid;grid-template-columns:190px 170px 1fr;gap:12px;align-items:end}.field label,.axisGroup label,.presetCard label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--muted);margin:0 0 5px 2px}.select,.input{width:100%;height:35px;border:1px solid var(--border);border-radius:7px;background:#fff;padding:0 9px;color:var(--text)}.sliderPair{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:end}.compactSlider label{display:flex;justify-content:space-between}.compactSlider input[type=range]{width:100%}.metrics{display:grid;grid-template-columns:repeat(6,minmax(105px,1fr));gap:8px;margin-top:10px}.metric{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:11px 12px}.metric span{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.metric b{font:600 17px var(--mono);display:block;margin-top:5px}.metric small{font-size:11px;line-height:1.3;color:var(--muted);display:block;margin-top:4px}.ft{border-top:3px solid var(--brown);background:#fffaf0}.typ{border-top:3px solid var(--text)}.qc{border-top:3px solid var(--blue);background:#f3f8fe}.outlier{border-top:3px solid var(--red);background:#fff6f7}.panel{background:#fff;border:1px solid var(--border);border-radius:var(--r);margin-top:10px;padding:12px 14px}.panelHead{display:flex;justify-content:space-between;align-items:center;gap:12px}.panelHead b{display:block;font-size:12px}.panelHead span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.miniCard{border:1px solid var(--border);background:var(--surface);border-radius:var(--r);padding:10px}.miniCard span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.miniCard b{display:block;font:600 12px var(--mono);margin:5px 0 8px}.inlineInput{display:flex;align-items:center;gap:6px;max-width:160px}.chartCard{background:#fff;border:1px solid var(--border);border-radius:var(--r2);margin-top:10px;box-shadow:var(--shadow)}.chartHead{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.chartHead b{display:block;font-size:12px}.chartHead span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.overlayBar{padding:8px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:18px;flex-wrap:wrap}.overlayBar label{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted);font-weight:700}.axisControls{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface)}.axisTitle{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:10px}.axisTitle label{display:flex;align-items:center;gap:6px;color:var(--muted);font-weight:700}.axisInputs{display:grid;grid-template-columns:1fr auto 1fr auto .7fr;gap:7px;align-items:center}.axisInputs span{font-size:10px;color:var(--muted)}.chartWrap{height:360px;padding:10px 14px 6px}.legend{border-top:1px solid var(--border);display:flex;justify-content:center;gap:24px;padding:12px 16px;font-size:12px;color:var(--muted);flex-wrap:wrap}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}.dotHist{background:#9dc8d3}.dotCurve{background:#e0a53f}.dotTyp{background:#17232d}.dotSigma{background:var(--brown)}.dotQc{background:var(--blue)}.bottomGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tableCard{background:#fff;border:1px solid var(--border);border-radius:var(--r2);margin-top:10px;overflow:hidden}.tableCard table,.dataTable{width:100%;border-collapse:collapse;font-size:11px}.tableCard td,.dataTable th,.dataTable td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.dataTable th{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface)}.tableScroll{overflow:auto}.tableCard td:last-child{text-align:right;font-family:var(--mono);font-weight:600}.checkRow{padding:9px 14px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;font-size:11px}.outlierBadge{background:#fff0f1;color:#a52e39;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800}.outlierTitleRow{display:flex;align-items:center;gap:10px;margin-top:3px}.outlierTitleRow h2{margin:0}.outlierSelect{min-width:180px}.outlierSummary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:14px 18px;border-bottom:1px solid var(--border)}.outlierSummary>div{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:10px}.outlierSummary span{display:block;font-size:9px;text-transform:uppercase;color:var(--muted);font-weight:800}.outlierSummary b{display:block;margin-top:4px;font:600 14px var(--mono)}.outlierChartCard{padding:14px 18px;border-bottom:1px solid var(--border)}.outlierChartWrap{height:310px}.miniTitle{font-size:11px;font-weight:800;margin-bottom:12px}.boxPanel{padding:14px 18px;border-bottom:1px solid var(--border);background:var(--surface)}.boxRow{display:grid;grid-template-columns:150px 1fr;gap:14px;align-items:center;margin:12px 0}.boxLabel b{display:block;font-size:11px}.boxLabel small{display:block;font-size:9px;color:var(--muted);margin-top:2px}.boxTrack{height:24px;position:relative}.whisker{position:absolute;top:11px;height:2px;background:#82929d}.cap{position:absolute;top:6px;width:2px;height:12px;background:#82929d;transform:translateX(-1px)}.boxBody{position:absolute;top:5px;height:14px;background:#daf2f6;border:1px solid var(--primary);border-radius:3px}.medianLine{position:absolute;top:3px;width:2px;height:18px;background:var(--text);transform:translateX(-1px)}.limitLine{position:absolute;top:1px;width:2px;height:22px;background:var(--brown);transform:translateX(-1px)}.boxStats{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:7px;font-size:9px;color:var(--muted)}.boxStats b{color:var(--text);font-family:var(--mono)}.collapsibleHead{padding:12px 18px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);cursor:pointer;background:var(--surface)}.collapsibleHead div b{display:block;font-size:11px}.collapsibleHead div span{display:block;font-size:9px;color:var(--muted);margin-top:2px}.collapsibleHead>span{font-size:10px;font-weight:800;color:var(--primary)}.presetGrid{padding:14px 18px;display:grid;gap:10px}.presetCard{display:grid;grid-template-columns:1.1fr .8fr 1.4fr auto;gap:8px;align-items:end;padding:10px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.conditionMappingHead{display:flex;gap:12px;align-items:center;padding:12px 18px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface)}.conditionMappingHead b{font-size:11px}.conditionMappingHead span{font-size:10px;color:var(--muted);flex:1}.binControls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.binResults{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.binResults>div{padding:10px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.binResults span,.binResults small{display:block;font-size:9px;color:var(--muted)}.binResults b{display:block;font:600 11px var(--mono);margin:4px 0}.placeholder{padding:70px 24px;text-align:center;color:var(--muted)}.placeholder b{display:block;color:var(--text);font-size:18px;margin-bottom:7px}.emptyState{padding:42px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;color:var(--muted)}.emptyState b{color:var(--text)}.goodText{color:var(--green)}.warnText{color:var(--amber)}
@media(max-width:1200px){.summaryGrid{grid-template-columns:repeat(3,1fr)}.metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1000px){.app{grid-template-columns:72px 1fr}.brand span,.navbtn span{display:none}.navbtn{justify-content:center}.sideBottom{display:none}.workspace{grid-template-columns:190px 1fr}.presetCard{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.app{display:block}.sidebar{display:none}.main{padding:16px}.uploadShell{grid-template-columns:1fr;margin:20px auto}.summaryGrid{grid-template-columns:repeat(2,1fr)}.workspace{grid-template-columns:1fr}.paramList{position:relative;max-height:240px}.controlBar{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.bottomGrid{grid-template-columns:1fr}.header{align-items:flex-start}.headerActions{display:none}.axisControls,.grid2{grid-template-columns:1fr}.outlierSummary{grid-template-columns:repeat(2,1fr)}}

/* Cloudflare parity + QA fixes */
.saveState{font-size:10px;font-weight:800;padding:6px 8px;border-radius:999px;white-space:nowrap}.saveState.dirty{color:#9b5c16;background:#fff4df}.saveState.saved{color:#16754d;background:#e8f6ef}
.summaryComplete{background:#eef9f3;border:1px solid #b8e0c8;border-radius:var(--r);padding:16px}.summaryComplete span,.summaryWarn span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.summaryComplete b,.summaryWarn b{display:block;font-size:18px;margin-top:8px}.summaryComplete b{color:#16754d}.summaryComplete small,.summaryWarn small{display:block;font-size:10px;color:var(--muted);margin-top:4px}
.headerBadges,.badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.pill.danger{background:#fff0f1;color:#a52e39}.panelTitle .badges{justify-content:flex-end}.panelTitle .pill{white-space:nowrap}
.analysisPanel{background:#fff;border:1px solid var(--border);border-radius:var(--r2);margin-top:10px;overflow:hidden}.analysisPanelHead{width:100%;border:0;background:#fff;padding:13px 15px;display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;text-align:left;color:var(--text)}.analysisPanelHead:hover{background:#fbfdfe}.analysisPanelHead>div:first-child b{display:block;font-size:12px}.analysisPanelHead>div:first-child span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.analysisPanelBody{border-top:1px solid var(--border);padding:13px 15px}.analysisPanel.collapsed .analysisPanelHead{background:#fff}.panelSummary{display:flex;align-items:center;gap:10px}.panelSummary small{max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.panelSummary>b{font-size:15px;color:var(--primary)}
.conditionBar{display:flex;justify-content:space-between;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:12px}.conditionBar.missing{background:#fff9ec;border-color:#ecd08c}.conditionBar span,.conditionBar small{display:block;font-size:10px;color:var(--muted)}.conditionBar b{display:block;margin:4px 0;font-size:14px}
.qcEditor{display:grid;grid-template-columns:1.15fr 1fr 1fr auto;gap:10px;align-items:end}.qcPreview{margin-top:10px;display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:center}.qcPreview>div{padding:10px;border:1px solid var(--border);background:var(--surface);border-radius:var(--r)}.qcPreview span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase}.qcPreview b{display:block;margin-top:4px;font:600 12px var(--mono)}.qcPreview>small{color:var(--muted);font-size:10px}
.binLabelInput{width:100%;border:0;background:transparent;font-weight:800;font-size:10px;padding:0 0 4px;color:var(--text);outline:none}.binLabelInput:focus{border-bottom:1px solid var(--primary)}.binNote{font-size:10px;color:var(--muted);margin-top:9px}
.chartInner{margin:-13px -15px -13px}.chartInner .chartHead{border-top:0}.scaleSelect{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted)}.smallSelect{height:30px;width:auto;min-width:110px}.scaleSelect small{max-width:220px}.logLegend{font-weight:800;color:#6a5d9a}.axisInputs input:disabled{background:#f1f4f6;color:#8b98a0}
.outlierSummary{grid-template-columns:repeat(5,1fr)}.distanceArrow{font-size:15px;font-weight:1000;color:#cf3345;line-height:1}.distanceArrow.up,.distanceArrow.down{color:#cf3345}
.boxPanel.vertical{background:#fbfcfd}.verticalBoxSvg{width:100%;height:auto;min-height:330px;display:block}.boxGrid{stroke:#dfe6ea;stroke-width:1;stroke-dasharray:3 4}.boxTick{font:10px var(--mono);fill:#687983}.boxAxisLabel{font:600 11px system-ui;fill:#687983}.ftRef{stroke:#9a6b2b;stroke-width:1.6;stroke-dasharray:7 5}.ftRefLabel{font:700 10px system-ui;fill:#8b5e25}.whiskerV{stroke:#71838f;stroke-width:1.7}.boxV{fill:#d9f1f5;stroke:#1396b5;stroke-width:1.8}.medianV{stroke:#c63d4d;stroke-width:2.5}.meanV{fill:#17232d}.outlierPoint,.outlierTriangle{fill:#c63d4d;stroke:#fff;stroke-width:1}.boxGroupLabel{font:700 10px system-ui;fill:#263640}.boxStats.compact{justify-content:center;padding-top:8px}
.readOnlyTag{display:inline-block;margin-top:4px;color:var(--muted);font-size:10px}
.transferCard{padding-bottom:18px}.transferGrid{display:grid;grid-template-columns:1.35fr .85fr;gap:14px;padding:16px}.transferPane{border:1px solid var(--border);border-radius:var(--r2);background:#fff;padding:14px}.transferHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.transferHead b{display:block;font-size:13px}.transferHead span{display:block;color:var(--muted);font-size:10px;margin-top:3px}.textBtn{border:0;background:transparent;color:var(--primary);font-size:10px;font-weight:800;cursor:pointer;padding:5px}.exportGroups{display:grid;gap:12px}.exportGroups>div{border:1px solid var(--border);border-radius:var(--r);overflow:hidden}.exportGroups h3{margin:0;padding:9px 11px;background:var(--surface);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.exportCheck{display:flex;align-items:flex-start;gap:9px;padding:10px 11px;border-top:1px solid var(--border);cursor:pointer}.exportCheck:first-of-type{border-top:0}.exportCheck input{margin-top:3px}.exportCheck b{display:block;font-size:11px}.exportCheck small{display:block;font-size:9px;color:var(--muted);margin-top:2px;line-height:1.35}.btn.wide{width:100%;justify-content:center;margin-top:12px}.exportNote{font-size:9.5px;color:var(--muted);line-height:1.45;margin-top:10px}.actionStack{display:flex;flex-direction:column;gap:8px}.actionStack .btn{justify-content:center}.actionStack small{font-size:9.5px;color:var(--muted);line-height:1.4}.divider{height:1px;background:var(--border);margin:5px 0}.referenceReview{margin:0 16px 16px;border:1px solid var(--border);border-radius:var(--r2);overflow:hidden}.referenceReview .sectionHeader{border-bottom:1px solid var(--border)}
.dropzone.drag{border-color:var(--primary);background:#edfafd}
@media(max-width:1150px){.qcEditor{grid-template-columns:1fr 1fr}.qcPreview{grid-template-columns:1fr 1fr}.transferGrid{grid-template-columns:1fr}.outlierSummary{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.qcEditor,.qcPreview{grid-template-columns:1fr}.outlierSummary{grid-template-columns:repeat(2,1fr)}.panelSummary small{display:none}.scaleSelect{width:100%;margin-left:0}.verticalBoxSvg{min-height:280px}}
