:root{--bg: #f4f5f7;--panel: #ffffff;--panel-2: #f8f9fb;--text: #16181d;--muted: #5f6672;--border: #dde1e7;--accent: #1f6feb;--warn: #b45309;--warn-bg: #fff7e6;--error: #c62828;--error-bg: #fdecec;--ok: #18794e;--skid: #e7e9ee;--skid-line: #9aa1ad;--container: #fbfbfc;--container-line: #39404b;--equip: #eef1f6;--equip-line: #59606c;--walkway: #f0f2f5;--clear: #fde68a;--bund: #e4e8ee;--label: #1d2026;--dot: #ffffff;--ard: #2f6fdb;--organic: #d98a0b;--organic-dark: #8a4b00;--electrolyte: #d33a2c;--acid: #d33a2c;--slurry: #8a5a2b;--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--grid: #e8ebef;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #111317;--panel: #1a1d23;--panel-2: #20242b;--text: #e7e9ee;--muted: #9aa1ad;--border: #2d323b;--accent: #5b9bff;--warn: #f0b252;--warn-bg: #2d2412;--error: #ff7b72;--error-bg: #3a1c1c;--ok: #4cc38a;--skid: #23272e;--skid-line: #4a515c;--container: #1b1e24;--container-line: #b8bfca;--equip: #2a2f38;--equip-line: #9aa1ad;--walkway: #20242b;--clear: #6b5a17;--bund: #262b33;--label: #e7e9ee;--dot: #f6f7f9;--ard: #5b95f5;--organic: #f0a630;--organic-dark: #b86b00;--electrolyte: #ff6a5c;--acid: #ff6a5c;--slurry: #b77c45;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--grid: #2a2f37;color-scheme:dark}}:root[data-theme=dark]{--bg: #111317;--panel: #1a1d23;--panel-2: #20242b;--text: #e7e9ee;--muted: #9aa1ad;--border: #2d323b;--accent: #5b9bff;--warn: #f0b252;--warn-bg: #2d2412;--error: #ff7b72;--error-bg: #3a1c1c;--ok: #4cc38a;--skid: #23272e;--skid-line: #4a515c;--container: #1b1e24;--container-line: #b8bfca;--equip: #2a2f38;--equip-line: #9aa1ad;--walkway: #20242b;--clear: #6b5a17;--bund: #262b33;--label: #e7e9ee;--dot: #f6f7f9;--ard: #5b95f5;--organic: #f0a630;--organic-dark: #b86b00;--electrolyte: #ff6a5c;--acid: #ff6a5c;--slurry: #b77c45;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--grid: #2a2f37;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:14px/1.4 Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:5px 10px;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.on{background:var(--error-bg);border-color:var(--error);color:var(--error)}button:disabled{opacity:.5;cursor:default}.app{display:grid;grid-template-columns:300px minmax(0,1fr) 330px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"top top top" "inputs main side";height:100vh}.topbar{grid-area:top;display:flex;gap:18px;align-items:center;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border);overflow-x:auto}.topbar h1{font-size:16px;margin:0;white-space:nowrap}.prod{display:flex;gap:18px;align-items:baseline}.prod .kpi{display:flex;flex-direction:column;white-space:nowrap}.prod .kpi b{font-size:18px;font-variant-numeric:tabular-nums}.prod .kpi span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.prod .kpi.big b{font-size:22px}.badge{padding:2px 8px;border-radius:99px;font-size:12px;font-weight:600}.badge.sx{background:color-mix(in srgb,var(--ard) 18%,transparent);color:var(--ard)}.badge.ew{background:color-mix(in srgb,var(--electrolyte) 18%,transparent);color:var(--electrolyte)}.topbar .spacer{flex:1}.inputs,.side{overflow-y:auto;background:var(--panel)}.inputs{grid-area:inputs;border-right:1px solid var(--border);padding:12px 14px 40px}.side{grid-area:side;border-left:1px solid var(--border);padding:12px 14px 40px}.main{grid-area:main;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px}.card h2,.side h2,.inputs h2{font-size:13px;margin:0 0 8px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.row button{padding:4px 8px;font-size:12px}.group{margin-top:14px}.group h3{font-size:12px;margin:0 0 6px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.field{margin-bottom:9px}.field label{display:flex;justify-content:space-between;gap:6px;font-size:13px}.field label .val{display:flex;gap:4px;align-items:center}.field input[type=number]{width:78px;text-align:right;padding:2px 4px;border:1px solid var(--border);border-radius:4px;background:var(--panel-2)}.field input[type=range]{width:100%;accent-color:var(--accent)}.field .unit{color:var(--muted);font-size:12px;min-width:34px}.field .hint{color:var(--muted);font-size:11px}.field.auto input[type=range],.field.auto input[type=number]{opacity:.45}.field .autobox{font-size:12px;color:var(--muted);display:inline-flex;gap:3px;align-items:center}.planbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--border)}.planbar .sep{width:1px;height:20px;background:var(--border)}.planbar .clock{font-variant-numeric:tabular-nums;font-weight:600;min-width:120px}.planbar .state{font-size:12px;color:var(--muted)}.planbar label{font-size:13px;display:inline-flex;gap:4px;align-items:center}.planwrap{position:relative;height:min(62vh,640px);min-height:360px;overflow:hidden}.planwrap svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.planwrap svg.dragging{cursor:grabbing}.legend{position:absolute;right:10px;top:8px;display:flex;gap:10px;font-size:11px;color:var(--muted);background:color-mix(in srgb,var(--panel) 85%,transparent);padding:3px 8px;border-radius:6px}.legend i{display:inline-block;width:14px;height:4px;border-radius:2px;margin-right:4px;vertical-align:middle}.tooltip{position:absolute;pointer-events:none;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px;box-shadow:0 4px 14px #00000026;max-width:260px;display:none}.tooltip b{display:block;margin-bottom:2px}.loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted)}.equip{fill:var(--equip);stroke:var(--equip-line);stroke-width:.02;cursor:pointer}.equip:hover{stroke:var(--accent);stroke-width:.04}.equip.sel{stroke:var(--accent);stroke-width:.06}.equip.over{fill:var(--error-bg);stroke:var(--error);stroke-dasharray:.12 .06}.equip.bund{fill:var(--bund);stroke-dasharray:.15 .08}.equip.tank{fill:var(--panel)}.lbl{fill:var(--label);font-weight:600;pointer-events:none;text-anchor:middle;dominant-baseline:middle}.lbl.dim{font-weight:400;fill:var(--muted)}.dimline{stroke:var(--muted);stroke-width:.015;fill:none}.dimtext{fill:var(--muted);font-size:.22px;text-anchor:middle}.pipe{fill:none;stroke-linejoin:round;stroke-linecap:butt;cursor:pointer;opacity:.9}.pipe:hover,.pipe.sel{opacity:1;filter:drop-shadow(0 0 .04px var(--accent))}.flow{fill:none;stroke:var(--dot);stroke-linecap:round;pointer-events:none}.focus [data-stream]{opacity:.1;transition:opacity .15s}.focus [data-stream].lit{opacity:1}svg.hide-ard [data-fluid=ard],svg.hide-organic [data-fluid=organic],svg.hide-mixed [data-fluid=mixed],svg.hide-electrolyte [data-fluid=electrolyte],svg.hide-acid [data-fluid=acid],svg.hide-slurry [data-fluid=slurry]{display:none}.legend button{background:none;border:0;padding:0 2px;font-size:11px;color:var(--muted);cursor:pointer}.legend button.off{opacity:.35;text-decoration:line-through}.hit{fill:none;stroke:transparent;cursor:pointer}.warnlist{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.warning{padding:7px 9px;border-radius:6px;font-size:13px;border-left:3px solid;cursor:default}.warning.warn{background:var(--warn-bg);border-color:var(--warn)}.warning.error{background:var(--error-bg);border-color:var(--error)}.warning.link{cursor:pointer}.ok{color:var(--ok);font-size:13px;margin-bottom:14px}.info h3{margin:0 0 2px;font-size:16px}.info .what{margin:6px 0 10px}.info table{width:100%;border-collapse:collapse;font-size:13px}.info td{padding:3px 0;border-bottom:1px solid var(--border);vertical-align:top}.info td:last-child{text-align:right;font-variant-numeric:tabular-nums;padding-left:8px}.info .sub{font-size:12px;color:var(--muted);margin:10px 0 4px;text-transform:uppercase;letter-spacing:.04em}.info .note{font-size:12px;color:var(--muted);margin-top:6px}.empty{color:var(--muted);font-size:13px}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.chart{padding:10px;min-width:0;overflow:hidden}.chart h2{margin-bottom:4px}.uplot{font-family:inherit}.uplot .u-legend{font-size:11px}.summary{padding:10px}.summary table{width:100%;border-collapse:collapse;font-size:13px}.summary th,.summary td{padding:3px 6px;border-bottom:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums}.summary th:first-child,.summary td:first-child{text-align:left}.summary .up{color:var(--ok)}.summary .down{color:var(--error)}dialog{border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);max-width:640px;padding:18px 20px}dialog::backdrop{background:#00000059}dialog li{margin-bottom:6px}@media (max-width: 1100px){.app{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;grid-template-areas:"top" "main" "side" "inputs";height:auto}.inputs,.side{overflow:visible;border:0;border-top:1px solid var(--border)}.planwrap{height:60vh}}@media (max-width: 600px){.main{padding:8px 0}.card{border-radius:0;border-left:0;border-right:0}.inputs,.side{padding:12px 16px 30px}.topbar{padding:8px 16px}}.scalebar{position:absolute;left:12px;bottom:10px;font-size:11px;color:var(--muted)}.scalebar div{height:6px;border:1px solid var(--muted);border-top:0;margin-bottom:2px}.app{grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "main"}.app.show-inputs{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"top top" "inputs main"}.app.show-side{grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"top top" "main side"}.app.show-inputs.show-side{grid-template-columns:300px minmax(0,1fr) 340px;grid-template-areas:"top top top" "inputs main side"}.inputs,.side{display:none}.app.show-inputs .inputs,.app.show-side .side{display:block}.topbar{gap:28px;padding:12px 20px}.prod{gap:32px}.prod .kpi b{font-size:20px}.prod .kpi.big b{font-size:24px;color:#b87333}.prod .kpi span{text-transform:none;letter-spacing:0;font-size:12px}.prod .kpi.over b{color:var(--warn)}.chip{border-radius:99px;padding:5px 14px;white-space:nowrap}.chip.active{border-color:var(--accent);color:var(--accent)}.chip .count{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:99px;font-size:11px;font-weight:700}.chip .count.warn{background:var(--warn-bg);color:var(--warn)}.chip .count.error{background:var(--error-bg);color:var(--error)}.chip .count:empty{display:none}.drawerhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.drawerhead h2{margin:0}.x{border:0;background:none;font-size:20px;line-height:1;padding:0 4px;color:var(--muted)}.planbar .spacer{flex:1}.planbar .hint{font-size:12px;color:var(--muted)}details.menu{position:relative}details.menu>summary{list-style:none;cursor:pointer;border:1px solid var(--border);border-radius:6px;padding:5px 10px;background:var(--panel-2);font-size:13px}details.menu>summary::-webkit-details-marker{display:none}details.menu>summary:after{content:" ▾";color:var(--muted)}details.menu[open]>summary{border-color:var(--accent)}.menu-body{position:absolute;right:0;top:calc(100% + 4px);z-index:5;display:flex;flex-direction:column;gap:6px;min-width:190px;padding:8px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000040}.menu-body label{font-size:13px;display:flex;gap:6px;align-items:center}.menu-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:4px}.menu-col{display:flex;flex-direction:column;gap:6px}details.fold>summary{cursor:pointer;padding:10px 12px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}details.fold[open]>summary{border-bottom:1px solid var(--border)}details.fold .charts{padding:12px}.engineering .facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 20px;padding:12px}.engineering .facts div{display:flex;flex-direction:column}.engineering .facts span{font-size:12px;color:var(--muted)}details.group{margin-top:6px;border-top:1px solid var(--border)}details.group>summary{cursor:pointer;padding:8px 0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}details.group[open]>summary{color:var(--text)}@media (max-width: 1100px){.app,.app.show-inputs,.app.show-side,.app.show-inputs.show-side{grid-template-columns:1fr;grid-template-areas:"top" "main" "side" "inputs"}.prod{gap:18px;flex-wrap:wrap}}@media (max-width: 700px){.topbar{flex-wrap:wrap;gap:10px 12px;overflow:visible}.topbar h1{flex:1}.topbar .spacer{display:none}.prod{order:3;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}.prod .kpi{white-space:normal}.prod .kpi b{font-size:17px}.prod .kpi.big b{font-size:20px}.planbar .hint{display:none}.legend{flex-wrap:wrap;gap:4px 8px;left:10px}.legend button{white-space:nowrap}}.planwrap{height:calc(100vh - 205px);min-height:480px}.tabs{display:flex;gap:4px}.tabs button{border-radius:6px 6px 0 0;border-bottom:0;background:none;color:var(--muted);padding:6px 14px}.tabs button.sel{background:var(--panel);color:var(--text);border-color:var(--border);font-weight:600}.tab[hidden]{display:none}#tab-plan:not([hidden]){display:flex;flex-direction:column;gap:12px}.listcard{padding:12px}.listhead{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;margin-bottom:8px}.listhead h2{margin:0}.tablewrap{overflow-x:auto}table.list{width:100%;border-collapse:collapse;font-size:13px}table.list th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;background:var(--panel)}table.list td{padding:5px 8px;border-bottom:1px solid var(--border);vertical-align:top}table.list td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.list td.mono,.tagline{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;white-space:nowrap}table.list tr[data-id]{cursor:pointer}table.list tr[data-id]:hover td{background:var(--panel-2)}.tagline{color:var(--accent);margin-bottom:2px}.snumtag{display:inline-block;min-width:26px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted)}.snum{cursor:pointer}svg.hide-snums .snums{display:none}@media (max-width: 1100px){.planwrap{height:60vh;min-height:360px}}ol.steps{margin:4px 0 0;padding:0;list-style:none;counter-reset:step;display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px}ol.steps>li{counter-increment:step;border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--panel-2)}.stephead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:4px}.stephead b:before{content:counter(step) ". ";color:var(--accent)}.stephead .key{font-size:12px;color:var(--accent);font-variant-numeric:tabular-nums}ol.steps ul{margin:0;padding-left:16px;font-size:13px}ol.steps ul li{margin:2px 0}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;white-space:nowrap}.mono.dim{color:var(--muted)}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
