/* ProcessStat DOE builder — layout on top of styles.css, colours from Mellow UI tokens only. */
.nav-button:hover{text-decoration:none}
.doe-main{max-width:1600px}
.text-link{font-size:13.5px;white-space:nowrap}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* purpose */
.purpose-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px}
.purpose-bar button{display:block;text-align:left;padding:16px 20px;white-space:normal;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink);font-weight:400;position:relative;min-height:0}
.purpose-bar button:hover{border-color:var(--ink);background:var(--paper)}
.purpose-bar span{position:absolute;right:16px;top:15px;font:600 13px var(--font-num);color:var(--ink-3)}
.purpose-bar strong{display:block;font-size:15px;font-weight:700;color:var(--ink);margin-bottom:5px}
.purpose-bar small{display:block;font-size:13px;color:var(--ink-2);line-height:1.6}
.purpose-bar button.active{background:var(--ink);border-color:var(--ink)}
.purpose-bar button.active strong{color:var(--paper)}
.purpose-bar button.active small,.purpose-bar button.active span{color:var(--paper);opacity:.78}

/* builder panels */
.doe-builder{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(270px,1fr);gap:18px;align-items:start;margin-bottom:18px}
.doe-panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);min-width:0;overflow:hidden}
.step{display:inline-flex!important;align-items:center;justify-content:center;width:24px;height:24px;background:var(--surface-2);border-radius:50%;font:600 13px var(--font-num)!important;color:var(--ink)!important}
.panel-hint{font-size:13px;line-height:1.8;color:var(--ink-2);margin:0;padding:0 18px 14px}
.factor-table{border-collapse:collapse;width:100%;min-width:470px}
.factor-table th{white-space:nowrap;font-size:12.5px;font-weight:600;text-align:left;background:var(--surface-2);color:var(--ink-2);padding:9px 8px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.factor-table th:first-child{padding-left:18px}
.factor-table td{padding:6px 5px;border-bottom:1px solid var(--line)}
.factor-table td:first-child{width:45px;text-align:center;font:600 15px var(--font-num);color:var(--ink)}
.factor-table td:nth-child(2){width:32%}
.factor-table td:nth-child(3){width:16%}
.factor-table td:last-child{width:40px}
.factor-table input{width:100%;min-width:65px;padding:6px 8px;font-size:14px}
.factor-table input[type=number]{font-family:var(--font-num);font-variant-numeric:tabular-nums}
.factor-table button{padding:4px 8px;border:0;background:transparent;font-size:18px;font-weight:400;color:var(--ink-3)}
.factor-table button:hover{color:var(--bad);background:var(--bad-soft)}
.factor-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 17px;font-size:12.5px;color:var(--ink-3)}
.factor-footer select{font-size:13.5px;max-width:190px;padding:4px 8px}
.budget-label{display:flex;justify-content:space-between;align-items:center;padding:0 18px 14px;color:var(--ink-2);font-size:14px}
.budget-label input{width:85px;padding:6px 10px;font:600 15px var(--font-num)}
.recommendation-panel .panel-hint{font-size:12.5px}
.recommendation{display:flex;align-items:center;justify-content:space-between;width:calc(100% - 28px);margin:0 14px 7px;text-align:left;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-weight:400;min-height:0}
.recommendation:hover{border-color:var(--ink);background:var(--paper)}
.recommendation .rec-name{display:block;font-size:13.5px;font-weight:600;white-space:normal;line-height:1.5}
.recommendation small{display:block;font-size:12px;color:var(--ink-3);margin-top:3px;font-weight:400}
.recommendation .rec-runs{font:600 24px/1 var(--font-num);color:var(--ink);flex-shrink:0;font-variant-numeric:tabular-nums}
.recommendation .rec-runs small{display:inline;margin-left:3px;font-family:var(--font)}
.recommendation.recommended{background:var(--surface);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.recommendation.over-budget .rec-runs{color:var(--warn)}
.recommendation-note{display:block;padding:6px 18px 16px;font-size:12px;color:var(--ink-3);line-height:1.8}
.scope-chip{font-size:12.5px!important;font-weight:600;border-radius:4px;padding:2px 8px;background:var(--surface-2);color:var(--ink-2)!important}
.family-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:0 18px 18px}
.family-card{display:block;padding:12px 10px;text-align:left;white-space:normal;min-height:87px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font-weight:400}
.family-card:hover{border-color:var(--ink);background:var(--paper)}
.family-card strong{display:block;font-size:13.5px;color:var(--ink);line-height:1.4}
.family-card small{display:block;font-size:12px;color:var(--ink-3);font-weight:400;margin-top:6px;line-height:1.55}
.family-card.selected{background:var(--surface);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.design-options{padding:0 18px 16px}
.design-options .settings-fields{align-items:stretch}
.design-options .field{max-width:320px}
.design-description{font-size:13.5px;color:var(--ink-2);line-height:1.8;margin-bottom:15px}
.advanced-options{margin:0 18px;border-top:1px solid var(--line);padding:13px 0 0}
.advanced-options summary,.alias-panel summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--ink)}
.advanced-options .settings-fields{padding-top:18px}
.advanced-options p{font-size:12.5px;line-height:1.7;color:var(--ink-3);margin-top:13px}
.design-panel>.run-row{margin:16px 18px 0;padding:16px 0}
.run-row strong{display:block;font-size:16px;color:var(--ink);margin-bottom:4px}
.design-panel .error-state{margin:12px 18px;font-size:13.5px;padding:13px}

/* evidence: projection plot and model checks */
.design-evidence{display:grid;grid-template-columns:1fr 1.15fr;gap:14px;margin:14px 0}
.projection-panel svg{display:block;width:100%;height:auto;max-height:300px}
.plot-axis{stroke:var(--ink-3);stroke-width:1}
.plot-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5}
.plot-point{fill:var(--chart-1);stroke:var(--paper);stroke-width:2;opacity:.9}
.plot-point.center{fill:var(--chart-3)}
.plot-point.star{fill:var(--chart-6)}
.plot-label{font:12px var(--font);fill:var(--ink-2)}
.plot-count{font:600 12px var(--font-num);fill:var(--paper);pointer-events:none}
.projection-panel .toolbar select{max-width:150px;font-size:13px}
.model-rows{padding:0 18px}
.model-row{display:grid;grid-template-columns:1fr auto;gap:3px 14px;border-bottom:1px solid var(--line);padding:11px 0}
.model-row strong{font-size:14px;font-weight:600;color:var(--ink)}
.model-row small{font-size:12.5px;color:var(--ink-3);line-height:1.7}
.model-row .fit{color:var(--ok);font-size:13px;font-weight:600;grid-row:span 2;align-self:center;white-space:nowrap}
.model-row .unfit{color:var(--warn)}
.alias-panel{margin:14px 0}
.alias-panel summary{padding:15px 18px}
.alias-body{padding:0 18px 18px;font-size:13.5px;line-height:1.85;color:var(--ink-2)}
.alias-body h3{font-size:14px;color:var(--ink);margin:18px 0 9px}
.alias-body code{font:12.5px var(--mono);background:var(--surface-2);padding:2px 6px;border-radius:4px;color:var(--ink)}
.alias-pairs{display:flex;gap:6px;flex-wrap:wrap}
.alias-pairs span{padding:3px 9px;background:var(--warn-soft);border-radius:4px;font:12.5px var(--mono);color:var(--warn)}
.range-table{width:100%;border-collapse:collapse;font-size:13.5px}
.range-table td,.range-table th{text-align:left;border-bottom:1px solid var(--line);padding:7px 8px}
.range-table th{font-size:12.5px;font-weight:600;color:var(--ink-2);background:var(--surface-2)}
.range-table .outside{color:var(--warn);font-weight:600}

/* run matrix */
.matrix-scroll{overflow:auto;max-height:650px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.matrix-table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:14px;font-variant-numeric:tabular-nums}
.matrix-table th{position:sticky;top:0;z-index:1;background:var(--surface-2);color:var(--ink-2);text-align:right;font-size:12.5px;font-weight:600;padding:10px;white-space:nowrap;border-bottom:1px solid var(--line)}
.matrix-table th small{display:block;font-size:11.5px;font-weight:400;margin-top:2px;color:var(--ink-2)}
.matrix-table td{padding:8px 10px;text-align:right;border-right:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap;color:var(--ink);font-family:var(--font-num)}
.matrix-table td:first-child{font-family:var(--mono);font-size:12.5px;background:var(--surface);color:var(--ink-3)}
.matrix-table .run-id{font:11.5px var(--mono);color:var(--ink-3)}
.matrix-table .row-center td{background:var(--surface)}
.matrix-table .coded-low{color:var(--info);background:var(--info-soft)}
.matrix-table .coded-high{color:var(--ok);background:var(--ok-soft)}
.matrix-table .coded-zero{color:var(--warn)}
.matrix-table input{width:100px;min-height:30px;padding:4px 8px;font:14px var(--font-num);background:var(--paper)}
.matrix-table input[data-note]{width:160px;font-family:var(--font)}
.matrix-table input.invalid{border-color:var(--bad);background:var(--bad-soft)}
.matrix-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 17px;font-size:12.5px;color:var(--ink-3)}
.matrix-footer .toolbar{flex-shrink:0}
#matrix-page{font:13px var(--font-num)}
#response-count{font-size:12.5px;color:var(--ink-3)}
#design-warnings .warning-list{margin:0 0 12px}
#draft-status{max-width:700px}

/* saved plan (standalone HTML built by doe-app.js from Mellow UI + styles.css + doe.css) */
.report-body{background:var(--surface);padding:30px}
.report-body main{max-width:1100px;margin:auto;background:var(--paper);padding:30px;border-radius:var(--radius-lg)}
.report-body h1{margin-bottom:14px}
.report-body .matrix-scroll{max-height:none}
.report-body .matrix-table th{position:static}
.report-body .matrix-table td{font-size:12.5px}
.report-body .report-meta{line-height:1.8;font-size:13.5px;color:var(--ink-2);margin:15px 0}
.report-body .matrix-table{min-width:100%;width:100%}
.report-body .alias-panel{overflow:visible}
.report-body svg{max-width:600px}
.doe-entry{display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:var(--radius-lg);background:var(--surface);padding:16px 20px;margin-bottom:20px;font-size:13.5px;color:var(--ink-2)}
.doe-entry strong{display:block;font-size:15px;color:var(--ink);margin-bottom:4px}
.doe-entry a{font-weight:600;white-space:nowrap}
.doe-entry p{font-size:13px;line-height:1.6}
.plot-axis,.plot-grid{fill:none}

@media(max-width:1250px){.family-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.doe-builder{grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr)}.design-evidence{grid-template-columns:1fr}.purpose-bar strong{font-size:14px}.purpose-bar small{font-size:12.5px}.purpose-bar button{padding:14px}}
@media(max-width:960px){.doe-builder{grid-template-columns:1fr}.recommendation-panel #recommendations{display:grid;grid-template-columns:1fr 1fr;padding:0 12px;gap:7px}.recommendation{width:100%;margin:0}.recommendation-note{padding-top:12px}.purpose-bar span{display:none}.page-heading .text-link{display:none}.factor-footer{flex-wrap:wrap}}
@media(max-width:600px){.purpose-bar{gap:6px}.purpose-bar button{padding:11px 10px}.purpose-bar strong{font-size:13px;line-height:1.45;margin:0}.purpose-bar small{display:none}.family-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 12px 12px}.family-card{min-height:70px}.factor-footer span{display:none}.factor-footer select{max-width:none;width:100%}.doe-panel .section-bar{padding:13px 12px}.panel-hint{padding:0 12px 12px}.design-options{padding:0 12px 12px}.advanced-options{margin:0 12px}.advanced-options .field{min-width:100px}.design-panel>.run-row{align-items:stretch;flex-direction:column;margin:12px 12px 0}.run-row>.toolbar{justify-content:flex-end}.matrix-footer>span{display:none}.matrix-footer{justify-content:flex-end}.matrix-panel .section-bar{flex-wrap:wrap}.report-body{padding:0}.report-body main{padding:16px}.doe-entry{flex-direction:column;align-items:flex-start}.model-row strong{font-size:13px}}
@media print{.doe-entry{display:none}.report-body{padding:0;background:none}.report-body main{padding:0}.report-body .matrix-scroll{overflow:visible}.report-body .matrix-table{font-size:9px}.report-body .matrix-table th{font-size:9px}.report-body .matrix-table td{font-size:9px;padding:4px}.report-body .doe-panel{break-inside:auto}.report-body .design-evidence{display:block}.report-body .matrix-table tr{break-inside:avoid}}

/* ---------- result analysis ---------- */
.analysis-panel{margin-top:18px}
.analysis-options{margin:6px 0 14px}
.analysis-summary{margin:14px 0 6px}
.analysis-summary h3{margin:0 0 6px;font-size:15px}
.analysis-summary ul{margin:0;padding-left:20px;display:grid;gap:5px;font-size:14px;line-height:1.55}
.analysis-panel .doe-panel{margin-top:14px}
.analysis-panel .design-evidence{margin-top:14px}
.effects-table tr.dropped td{color:var(--ink-3)}
.effects-table tr.sig td:first-child{font-weight:700}
.anova-table tr.anova-model td,.anova-table tr.anova-residual td{font-weight:600}
.anova-table tr.anova-total td{border-top:2px solid var(--line)}
.pareto-bar{fill:var(--ink-3);opacity:.55}
.pareto-bar.sig{fill:var(--chart-1);opacity:.95}
.pareto-bar.dropped{opacity:.3}
.pareto-threshold{stroke:var(--warn);stroke-width:1.6;stroke-dasharray:5 4;fill:none}
.plot-label.small{font-size:10.5px;fill:var(--ink-3)}
.small-multiples{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.mini-plot{max-width:440px}
.mini-plot{border:1px solid var(--line);border-radius:12px;padding:6px;background:var(--surface)}
.mini-plot.sig{border-color:var(--chart-1);box-shadow:inset 0 0 0 1px var(--chart-1)}
.mini-plot svg{display:block;width:100%;height:auto}
.best-box{display:grid;gap:12px}
.best-head{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;font-size:14.5px}
.best-head b{font-size:19px}
.best-box .muted{color:var(--ink-3)}
.predict-row{display:flex;flex-wrap:wrap;gap:10px;align-items:end;padding:12px;border:1px dashed var(--line);border-radius:12px}
.predict-row .field{min-width:120px;flex:1 1 120px}
.predict-row strong{flex-basis:100%;font-size:13.5px}
.predict-out{font-weight:700;font-size:15px;flex-basis:100%}
.surface{display:block;width:100%;max-width:560px;height:auto}
.surface .band{stroke:none}
.surface .band-0{fill:#1e3a8a}.surface .band-1{fill:#2b5fb5}.surface .band-2{fill:#3b82c4}.surface .band-3{fill:#5fa7c7}.surface .band-4{fill:#8fc7bd}.surface .band-5{fill:#c2dd9c}.surface .band-6{fill:#f3e77b}.surface .band-7{fill:#f7b84b}.surface .band-8{fill:#ef7d2e}
.surface .design-dot{fill:var(--ink);stroke:var(--paper);stroke-width:1.5;opacity:.85}
.surface .best-mark{stroke:var(--ink);stroke-width:2.5;fill:none}
#analysis-status{font-size:12.5px;color:var(--warn)}
@media (max-width:640px){.small-multiples{grid-template-columns:1fr 1fr}.predict-row .field{flex-basis:45%}}
@media (max-width:420px){.small-multiples{grid-template-columns:1fr}}
