@charset "UTF-8";
@import url("./theme.css");
/* The page wears the shared Wiki article template (/wiki/wiki.css); this sheet styles only the study inside it: the inputs above the results, then the guide's graphs and the glossary. */
:root{--bg:var(--ground);--line-strong:color-mix(in srgb,var(--line) 75%,var(--ink));--blue:var(--accent);--blue-hover:color-mix(in srgb,var(--accent) 84%,var(--ink));--ok:var(--accent);--ok-soft:var(--accent-soft);--warn-soft:color-mix(in srgb,var(--warn) 12%,var(--surface));--fail-soft:color-mix(in srgb,var(--fail) 12%,var(--surface));font-family:var(--sans);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:16px}
button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button,a,summary{touch-action:manipulation}button{cursor:pointer;color:inherit}
a{color:var(--blue);text-underline-offset:.18em}a:hover{color:var(--blue-hover)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.study-shell{font-size:15px;line-height:1.6}.study-shell :is(h2,h3,h4,p),.term-drawer :is(h2,h3,p){margin-top:0}.study-shell :is(h2,h3,h4){line-height:1.2;letter-spacing:-.02em}.study-shell h3{font-size:16px}.study-shell p{margin-bottom:1em}small{font-size:12px}
section[id]{scroll-margin-top:26px}[hidden]{display:none!important}
.eyebrow,.overline{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.eyebrow{color:var(--accent);margin-bottom:14px}.overline{color:var(--muted);margin-bottom:8px}
.study-shell{display:grid;gap:14px;margin:8px 0 6px;min-width:0}
/* Inside the article grid the study spans both columns; the contents and the guide sit below it. */
.wiki-article>.study-shell{grid-column:1/-1;grid-row:2}.wiki-article>.wiki-toc,.wiki-article>.wiki-prose{grid-row:3}
.input-panel,.workspace{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:0}
.input-panel{padding:18px 20px}.workspace{padding:20px 22px}
.input-main{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 24px}
.parameter-groups{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:dense;gap:8px;margin-top:4px}
.parameter-groups .parameter-group{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:10px 12px;min-width:0}
.parameter-groups .parameter-group[open]{grid-column:1/-1}
.parameter-groups .parameter-group[open] .form-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.parameter-groups .parameter-group[open] .full-width{grid-column:span 2}
.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.panel-heading h2{font-size:18px;margin:0}
.badge{font-size:10px;white-space:nowrap;font-weight:600;border:1px solid var(--line);border-radius:var(--radius);padding:3px 7px;color:var(--muted);background:var(--surface-2)}
.field{display:block;font-size:11px;font-weight:600;line-height:1.4;color:var(--muted);min-width:0}
.field input,.field select{display:block;width:100%;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:9px 10px;margin-top:6px;font-size:13px;font-weight:500;min-width:0;min-height:40px}
.field input:focus,.field select:focus{border-color:var(--blue)}.unit{float:right;font-size:9px;font-weight:400;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 10px}.full-width{grid-column:1/-1}
.form-section{margin:0;padding:0 0 16px;border:0}.form-section legend{font-size:11px;font-weight:700;color:var(--ink);padding:0;margin-bottom:10px}
.parameter-group summary{font-size:11px;font-weight:700;cursor:pointer;list-style:none;position:relative;padding-left:16px}.parameter-group summary::-webkit-details-marker{display:none}
.parameter-group summary::before,.gl-group>summary::before,.gl-entry>summary::before{content:"";position:absolute;left:0;top:.45em;width:6px;height:6px;border-right:2px solid var(--ink-2);border-bottom:2px solid var(--ink-2);transform:rotate(-45deg);transition:transform .15s}
.parameter-group[open]>summary::before,.gl-group[open]>summary::before,.gl-entry[open]>summary::before{transform:rotate(45deg)}.parameter-group summary span{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:3px}.parameter-group[open] summary{margin-bottom:12px}
.check{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500;color:var(--ink);margin:4px 10px 0 0}.check input{accent-color:var(--accent);width:16px;height:16px;margin:0}
.preset-note,.field-note{font-size:11px;line-height:1.6;color:var(--muted);margin:8px 0 0}
#status{color:var(--fail);font-size:12px;min-height:1em;margin:0}
/* A value outside its field's range: named at the field, and the results marked as the last valid run. */
.field input[aria-invalid="true"]{border-color:var(--fail);box-shadow:0 0 0 1px var(--fail)}.field-error{margin:4px 0 0;color:var(--fail);font-size:12px;font-weight:600;line-height:1.4}
.stale-note{margin:0 0 12px;padding:10px 12px;border:1px solid var(--warn);border-left-width:4px;border-radius:var(--radius);background:var(--warn-soft);color:var(--ink);font-size:13px;line-height:1.5}
.workspace.is-stale>:not(.stale-note):not(.workspace-nav){opacity:.5;filter:saturate(.4)}
.plant-more{margin:6px 0 0}
/* Key figures as one facts panel, the way Lemonergy's Data pages show a dataset's facts: white surface, hairline rules, sans values. */
.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0 0 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--line);overflow:hidden}
.metric{background:var(--surface);padding:14px 16px;min-width:0}@media (min-width:1180px){.metrics{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (max-width:560px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.metric.ok b::before,.metric.warn b::before,.metric.fail b::before{display:inline-block;margin-right:6px;font-weight:700}
.metric.ok b::before{content:"✓";color:var(--accent)}.metric.warn b::before{content:"!";color:var(--warn)}.metric.fail b::before{content:"✕";color:var(--fail)}
.metric-label{display:block;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.metric b{display:block;font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.4}.metric small{display:block;color:var(--muted);margin-top:4px;font-size:12px}
.verdict{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--surface);padding:12px 16px;margin:0 0 18px;font-size:14px}.verdict p{margin:6px 0 0;color:var(--muted);font-size:13px}.verdict .verdict-hint{color:var(--ink)}
.workspace h3{margin:0 0 6px}.workspace h4{font-size:14px;margin:0 0 8px}
/* Species take the site's shared series slots (the same light and dark steps as data/data.css and tools/site-theme.mjs), in their fixed order; Other folds to neutral. Text never wears these. */
:root{--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--series-5:#e87ba4;--series-6:#008300;--series-7:#6250d6;--series-8:#e34948}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-7:#9085e9;--series-8:#e66767}}
:root[data-theme="dark"]{--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-7:#9085e9;--series-8:#e66767}
:root{--sp-li:var(--series-1);--sp-ni:var(--series-2);--sp-co:var(--series-3);--sp-mn:var(--series-4);--sp-al:var(--series-5);--sp-cu:var(--series-6);--sp-fe:var(--series-7);--sp-c:var(--series-8);--sp-other:color-mix(in srgb,var(--muted) 55%,var(--surface))}
.sp-Li,.sw-Li{fill:var(--sp-li);background:var(--sp-li)}.sp-Ni,.sw-Ni{fill:var(--sp-ni);background:var(--sp-ni)}.sp-Co,.sw-Co{fill:var(--sp-co);background:var(--sp-co)}.sp-Mn,.sw-Mn{fill:var(--sp-mn);background:var(--sp-mn)}
.sp-Al,.sw-Al{fill:var(--sp-al);background:var(--sp-al)}.sp-Cu,.sw-Cu{fill:var(--sp-cu);background:var(--sp-cu)}.sp-Fe,.sw-Fe{fill:var(--sp-fe);background:var(--sp-fe)}.sp-C,.sw-C{fill:var(--sp-c);background:var(--sp-c)}.sp-other,.sw-other{fill:var(--sp-other);background:var(--sp-other)}
/* Roles that are not species: product, loss, carried on, bought virgin, surplus. */
:root{--role-product:var(--accent);--role-product-2:color-mix(in srgb,var(--accent) 72%,var(--ink));--role-carried:color-mix(in srgb,var(--accent) 32%,var(--surface));--role-loss:color-mix(in srgb,var(--muted) 52%,var(--surface));--role-loss-2:color-mix(in srgb,var(--muted) 32%,var(--surface));--role-virgin:var(--warn);--role-surplus:color-mix(in srgb,var(--muted) 30%,var(--surface))}
.seg-product,.sw-product,.dest-prod-a{fill:var(--role-product);background:var(--role-product)}.dest-prod-b{fill:var(--role-product-2)}
.seg-carried{fill:var(--role-carried)}.seg-loss,.sw-loss,.dest-loss-a{fill:var(--role-loss);background:var(--role-loss)}.dest-loss-b{fill:var(--role-loss-2)}
.seg-loop{fill:var(--role-product);background:var(--role-product)}.seg-virgin{fill:var(--role-virgin);background:var(--role-virgin)}.seg-surplus{fill:var(--role-surplus);background:var(--role-surplus)}
.sw{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px;flex:none}
.dim{opacity:.22}li.dim{opacity:.5}
/* Workspace navigation and panels */
.workspace-nav{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.workspace-nav a{font-size:12px;font-weight:600;color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:var(--radius)}.workspace-nav a:hover{background:var(--surface-2);color:var(--ink)}
.panel{border-top:1px solid var(--line);padding-top:18px;margin-top:22px;scroll-margin-top:16px}
.panel-bar{display:flex;justify-content:space-between;align-items:flex-end;gap:12px 20px;flex-wrap:wrap;margin-bottom:12px}
.button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 14px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);font-size:13px;font-weight:600}
.button:hover{background:var(--blue-hover);border-color:var(--blue-hover)}.button.secondary{background:var(--surface);color:var(--accent);border-color:var(--line-strong)}.button.secondary:hover{background:var(--accent-soft);border-color:var(--accent)}
.button:disabled{opacity:.45;cursor:default}.button:disabled:hover{background:var(--surface);border-color:var(--line-strong)}
.stepper{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.step-caption{font-size:13px;font-weight:600;min-width:200px;text-align:center;font-variant-numeric:tabular-nums}
.follow-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}.follow-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.chips,.milestone-chips{display:flex;flex-wrap:wrap;gap:6px}
.chip-button{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 11px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:12px;font-weight:600}
.chip-button:hover{border-color:var(--accent)}.chip-button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent)}
.chip-button b{font-variant-numeric:tabular-nums;font-weight:700;color:var(--muted)}
/* The line */
.figure{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);padding:8px;background:var(--surface)}
svg{font-family:var(--sans)}svg.flowsheet{display:block;min-width:820px;width:100%;max-width:1500px;height:auto}
svg .ink{fill:var(--ink)}svg .muted{fill:var(--muted)}svg .on-accent{fill:var(--accent-ink)}svg .feed-box{fill:var(--accent-soft);stroke:var(--accent)}
svg .unit-box{fill:var(--surface-2);stroke:var(--line-strong);transition:fill .15s,stroke .15s}
svg .unit{cursor:pointer;outline:none}svg .unit:hover .unit-box,svg .unit:hover .cathode-box{stroke:var(--accent);stroke-width:2}
svg .unit:focus-visible .unit-box,svg .unit:focus-visible .cathode-box{stroke:var(--accent);stroke-width:3}
svg .unit.selected .unit-box{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2.5}
svg .main-band{fill:var(--accent);opacity:.42}svg .product-band{fill:var(--accent);opacity:.72}svg .carry-band{fill:var(--accent);opacity:.3}svg .loss-band{fill:var(--muted);opacity:.42}
svg .product-text{fill:var(--accent);font-weight:600}svg .side{cursor:pointer;opacity:.62;transition:opacity .15s}svg .side.hot,svg .side:hover{opacity:1}
svg .cathode-box{fill:var(--accent-soft);stroke:var(--accent)}svg .cathode.selected .cathode-box{stroke-width:3}svg .cathode.empty .cathode-box{fill:var(--fail-soft);stroke:var(--fail)}
svg .makeup-line{stroke:var(--warn);stroke-dasharray:4 3;stroke-width:2}svg .warn-text{fill:var(--warn)}
.inspector{margin-top:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);padding:16px 18px}
.inspector-grid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:22px;align-items:start}
.inspector-text p{font-size:13px;margin-bottom:8px}.inspector-text .overline{margin-bottom:4px}.inspector-text .split{font-weight:600}
.inspector-chart{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
svg.composition{display:block;width:100%;max-width:720px;height:auto}
.legend{list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0;font-size:11px;color:var(--muted)}.legend li{display:inline-flex;align-items:center;gap:5px}
/* Where every kilogram went */
.species-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:8px;margin:10px 0 14px}
.species-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);min-width:0}
.species-card:hover{border-color:var(--accent)}.species-card.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 3px 0 var(--accent)}
.species-name{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--muted)}
.species-card b{font-size:20px;font-variant-numeric:tabular-nums;line-height:1.2}.species-card small{color:var(--muted);font-size:11px}
svg.mini{display:block;width:100%;height:8px;margin-top:6px}svg .mini-track{fill:var(--surface-2);stroke:var(--line)}svg .mini-value{fill:var(--accent)}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:12px}
.dash-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px;background:var(--surface);min-width:0}
svg.destinations{display:block;width:100%;height:auto}svg.destinations rect{cursor:pointer}svg.destinations rect:hover{opacity:.85}
.dest-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:2px}
.dest-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto auto;align-items:center;gap:8px;width:100%;text-align:left;padding:6px 8px;border:0;border-radius:var(--radius);background:transparent;color:var(--ink);font-size:12px}
.dest-row:hover{background:var(--surface-2)}.dest-name{overflow-wrap:anywhere}.dest-kind{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.dest-mass{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
svg.funnel{display:block;width:100%;height:auto}svg .funnel-row{cursor:pointer;outline:none}svg .row-hit{fill:transparent}svg .funnel-row:hover .row-hit{fill:var(--surface-2)}
svg .funnel-row.selected .row-hit{fill:var(--accent-soft)}svg .funnel-row:focus-visible .row-hit{stroke:var(--accent);stroke-width:2}
/* EU Battery Regulation */
.eu-dashboard>.figure{margin:8px 0 10px}svg.timeline{display:block;min-width:720px;width:100%;max-width:1180px;height:auto;margin:auto}svg .leader{stroke:var(--line-strong);stroke-width:1}
svg .axis{stroke:var(--line-strong);stroke-width:1.5}svg .today{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:3 3}
svg .milestone{cursor:pointer;outline:none}svg .milestone circle{fill:var(--surface);stroke:var(--ink-2);stroke-width:2}svg .milestone.past circle{fill:var(--muted)}
svg .milestone:hover circle,svg .milestone:focus-visible circle{stroke:var(--accent);stroke-width:3}svg .milestone.on circle{fill:var(--accent);stroke:var(--accent)}
.milestone-chips{margin:0 0 10px}.eu-dashboard .callout{margin:0 0 12px}
.eu-panels{display:grid;gap:10px}.eu-panel{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface);transition:opacity .15s}.eu-panel.dim{opacity:.45}
.eu-panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:6px}.eu-panel-head h4{margin:0}.eu-panel-head .ref{font-size:12px;font-weight:600}
.eu-rows{display:grid;gap:4px}.eu-row{display:grid;grid-template-columns:150px minmax(180px,320px) 64px minmax(120px,auto) minmax(0,1fr);align-items:center;gap:12px;font-size:12px;padding:3px 0;border-bottom:1px solid var(--line)}
.eu-row:last-child{border-bottom:0}.eu-name{font-weight:600}.eu-value{font-variant-numeric:tabular-nums;font-weight:700;text-align:right}.eu-ref{font-size:11px;color:var(--muted)}
svg.bullet{display:block;width:100%;max-width:340px;height:auto}svg .bar-track{fill:var(--surface-2);stroke:var(--line)}svg .bar-fill{fill:var(--accent)}svg .tick{stroke:var(--ink);stroke-width:1.5}
.chip{display:inline-flex;align-items:center;gap:5px;justify-self:start;font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--radius);border:1px solid;white-space:nowrap}
.chip.ok{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 40%,var(--surface))}.chip.ok::before{content:"✓"}
.chip.warn{color:var(--warn);background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 40%,var(--surface))}.chip.warn::before{content:"!"}
.chip.fail{color:var(--fail);background:var(--fail-soft);border-color:color-mix(in srgb,var(--fail) 40%,var(--surface))}.chip.fail::before{content:"✕"}
.chip.na{color:var(--muted);background:var(--surface-2);border-color:var(--line)}
.eu-refs{margin-top:12px;font-size:13px}.eu-refs ul{padding-left:18px;margin:0 0 8px}.eu-refs li{margin-bottom:6px;overflow-wrap:anywhere}
/* Routes compared */
.route-compare{margin:16px 0 20px}.route-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}
.route-card{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:var(--radius);padding:14px;background:var(--surface);min-width:0}
.route-card.on{border-color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}.route-card .note{margin:0;font-size:12px;line-height:1.5}.route-card .button{align-self:flex-start;margin-top:auto}
.route-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.route-head h3{font-size:15px;margin:0}
.route-chain{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0;padding:0}
.route-chain li{position:relative;font-size:11px;font-weight:600;padding:2px 7px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2)}
.route-chain li+li::before{content:"→";position:absolute;left:-13px;top:50%;transform:translateY(-52%);color:var(--muted);font-weight:400}.route-chain li.end{background:var(--accent-soft);border-color:var(--accent)}
svg.route-bars{display:block;width:100%;height:auto}
/* The plant: machines in neutral steel on the workbench surfaces; accent only for what is selected and for flow. */
.view-toggle{display:flex;gap:4px;margin-left:auto}
.figure.plant-figure{padding:0;background:var(--surface);scroll-behavior:smooth}
svg.plant{display:block;width:100%;max-width:none;height:auto;font-family:var(--sans);
  --m-front:color-mix(in srgb,var(--surface-2) 78%,var(--line));--m-top:color-mix(in srgb,var(--surface) 70%,var(--surface-2));--m-side:color-mix(in srgb,var(--line) 78%,var(--surface-2));
  --m-edge:color-mix(in srgb,var(--line-strong) 80%,var(--ink-2));--m-dark:color-mix(in srgb,var(--ink-2) 72%,var(--surface));--m-hole:color-mix(in srgb,var(--ink) 55%,var(--surface-2))}
svg.plant polygon,svg.plant .c-body,svg.plant ellipse,svg.plant .d-body{stroke:var(--m-edge);stroke-width:.8;stroke-linejoin:round}
svg.plant .f-front{fill:var(--m-front)}svg.plant .f-top{fill:var(--m-top)}svg.plant .f-side{fill:var(--m-side)}svg.plant .f-hole{fill:var(--m-hole)}
svg.plant .c-body{fill:url(#plant-steel) var(--m-side)}svg.plant .d-body{fill:url(#plant-steel-v) var(--m-side)}
svg.plant .st-hi{stop-color:var(--m-top)}svg.plant .st-lo{stop-color:var(--m-side)}
svg.plant .floor{fill:color-mix(in srgb,var(--surface-2) 65%,var(--surface));stroke:none}
svg.plant .aisle{stroke:var(--line-strong);stroke-width:1.5;stroke-dasharray:10 8;fill:none}
svg.plant .hall{stroke:var(--line);stroke-width:1;fill:none}
svg.plant .strut{stroke:var(--m-edge);stroke-width:2;fill:none}
svg.plant .pack .f-front,svg.plant .pack .f-side{fill:var(--m-dark)}svg.plant .pack .f-top{fill:color-mix(in srgb,var(--m-dark) 80%,var(--surface))}
svg.plant .terminal .f-front,svg.plant .terminal .f-top,svg.plant .terminal .f-side{fill:var(--m-edge)}
svg.plant .pallet .f-front,svg.plant .pallet .f-top,svg.plant .pallet .f-side,svg.plant .bench .f-top{fill:color-mix(in srgb,var(--warn) 22%,var(--surface-2))}
svg.plant .arm{stroke:var(--m-dark);stroke-width:7;stroke-linecap:round;stroke-linejoin:round;fill:none}svg.plant .joint{fill:var(--m-top);stroke:var(--m-dark);stroke-width:2}
svg.plant .gripper{stroke:var(--m-dark);stroke-width:2.5;fill:none;stroke-linecap:round}
svg.plant .refractory .f-front,svg.plant .refractory .f-side{fill:color-mix(in srgb,var(--m-dark) 55%,var(--m-side))}
svg.plant .settler .f-top{fill:color-mix(in srgb,var(--accent) 14%,var(--m-top))}svg.plant .settler.idle{opacity:.45}
svg.plant .plate .f-front{fill:var(--m-top)}svg.plant .heater{fill:var(--m-dark);opacity:.55;stroke:none}
svg.plant .screen-deck{fill:color-mix(in srgb,var(--m-dark) 30%,var(--m-top))}
svg.plant .glow{fill:var(--warn);stroke:none;animation:plant-glow 2.4s ease-in-out infinite alternate}
svg.plant .makeup{stroke:var(--warn);stroke-width:2;stroke-dasharray:4 3;fill:none}
svg.plant .belt-top{fill:var(--m-dark)}svg.plant .belt-side{fill:var(--m-edge)}
svg.plant .pipe-outer{stroke:var(--m-edge);stroke-width:9;stroke-linecap:round;fill:none}svg.plant .pipe-inner{stroke:var(--m-top);stroke-width:5;stroke-linecap:round;fill:none}
svg.plant .flow{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-dasharray:1 11;animation:plant-flow 1.3s linear infinite}
svg.plant .flow.lumps{stroke:var(--m-top);stroke-width:5;stroke-linecap:butt;stroke-dasharray:6 8}
svg.plant .flow.sp-Li{stroke:var(--sp-li)}svg.plant .flow.sp-Ni{stroke:var(--sp-ni)}svg.plant .flow.sp-Co{stroke:var(--sp-co)}svg.plant .flow.sp-Mn{stroke:var(--sp-mn)}svg.plant .flow.sp-Al{stroke:var(--sp-al)}svg.plant .flow.sp-Cu{stroke:var(--sp-cu)}svg.plant .flow.sp-Fe{stroke:var(--sp-fe)}svg.plant .flow.sp-C{stroke:var(--sp-c)}svg.plant .flow.sp-other{stroke:var(--sp-other)}
svg.plant .conveyor.idle{opacity:.35}
svg.plant .vent-pipe{stroke:var(--m-edge);stroke-width:5;fill:none}svg.plant .vent-cap{fill:var(--m-edge);stroke:none}
svg.plant .puff{fill:var(--line-strong);stroke:none;opacity:0;transform-box:fill-box;transform-origin:center;animation:plant-puff 3.2s ease-out infinite}svg.plant .puff.late{animation-delay:1.6s}
svg.plant .bin .f-front{fill:var(--surface)}svg.plant .bin .f-top{fill:var(--m-top)}svg.plant .skip .f-front,svg.plant .skip .f-side{fill:var(--m-side)}
svg.plant .loops,svg.plant .cage-lines{stroke:var(--m-edge);stroke-width:1.2;fill:none}
svg.plant .fill{stroke:none}svg.plant .fill.loss{fill:var(--role-loss)}svg.plant .fill.cam{fill:var(--accent)}
svg.plant .chute{stroke:var(--m-edge);stroke-width:2.5;stroke-linecap:round;fill:none}svg.plant .chute.loss{stroke-dasharray:3 3}
svg.plant .out.empty .bin{opacity:.45}
svg.plant .lbl{fill:var(--ink);font-size:10.5px;font-weight:600}svg.plant .lbl-m{fill:var(--muted);font-size:10px}svg.plant .lbl-s{fill:var(--ink-2);font-size:9.5px}
svg.plant .lbl-warn{fill:var(--warn);font-size:10px;font-weight:600}svg.plant .lbl-plate{fill:var(--ink);font-size:10px;font-weight:700}
svg.plant .tag{fill:var(--ink-2);font-size:10px;font-weight:700}
svg.plant .halo{paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}
svg.plant .rope{stroke:var(--line-strong);stroke-width:1;fill:none}
svg.plant .sign rect{fill:var(--surface);stroke:var(--line-strong);stroke-width:1}
svg.plant .sign-title{fill:var(--ink);font-size:12px;font-weight:700}svg.plant .sign-sub{fill:var(--muted);font-size:10px}svg.plant .sign-sub.warn{fill:var(--warn);font-weight:600}
svg.plant .bay{fill:transparent;stroke:none}svg.plant .hit{fill:transparent;stroke:none}
svg.plant .station{cursor:pointer;outline:none}svg.plant .station.idle .machine{opacity:.5}
svg.plant .station:hover .sign rect{stroke:var(--accent)}
svg.plant .bay.on{fill:color-mix(in srgb,var(--accent-soft) 85%,transparent);stroke:none}
svg.plant .station.on .sign rect{fill:var(--accent);stroke:var(--accent)}svg.plant .station.on .sign-title,svg.plant .station.on .sign-sub{fill:var(--accent-ink)}
svg.plant .station:focus-visible .sign rect{stroke:var(--accent);stroke-width:3}
@keyframes plant-flow{to{stroke-dashoffset:-24}}
@keyframes plant-puff{0%{opacity:0;transform:translateY(4px) scale(.6)}25%{opacity:.6}100%{opacity:0;transform:translateY(-16px) scale(1.4)}}
@keyframes plant-glow{from{opacity:.55}to{opacity:1}}
/* ? buttons and the term guide (the Design page's field-guide pattern on the workbench tokens) */
.help{display:inline-grid;place-items:center;flex:none;width:20px;height:20px;min-height:20px;padding:0;margin-left:6px;border:1px solid var(--line-strong);border-radius:50%;background:var(--surface);color:var(--accent);font:700 11px/1 var(--sans);vertical-align:middle;cursor:pointer}
.help:hover,.help:focus-visible{border-color:var(--accent);background:var(--accent-soft)}.help-inline{display:inline-grid;margin:0 2px}
.field-head{display:flex;align-items:center;gap:4px;min-height:22px}.field-head label{color:inherit}.field-head .unit{float:none;margin-left:auto;text-align:right}.field-head .help{margin-left:4px}
.check-row{display:flex;align-items:center;gap:4px}.check-row .check{margin-right:0}
.metric-label{display:flex;align-items:center;gap:2px}.metric-label .help{width:18px;height:18px;min-height:18px;font-size:10px;margin-left:auto}
.eu-panel-head h4{display:flex;align-items:center}.eu-refs h4{display:flex;align-items:center}.route-head h3{display:flex;align-items:center}
body.term-pinned{padding-right:min(420px,32vw)}
.term-drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(420px,100vw);max-width:100vw;height:100vh;height:100dvh;max-height:100dvh;padding:0;border:0;border-left:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:-12px 0 40px #0002;overflow-y:auto;overscroll-behavior:contain}
.term-drawer::backdrop{background:#10192555}.term-drawer.pinned{z-index:70;width:min(420px,32vw);box-shadow:none}
.term-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:700}
.term-actions{display:flex;gap:8px}.term-actions button{min-height:34px;min-width:34px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:12px;font-weight:600}
#term-close{font-size:20px;line-height:1}#term-pin[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.term-body{padding:18px 20px 28px}.term-body .eyebrow{margin-bottom:8px}.term-body h2{font-size:22px;margin:0 0 10px}.term-body h3{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 6px}
.term-meaning{font-size:15px;line-height:1.6}.term-body p{font-size:14px;line-height:1.6;margin:0}.term-links{padding-left:18px;margin:0;font-size:14px}.term-links li{margin-bottom:6px}
/* The inspector: header, the machine diagram with its story, then the details */
.inspector-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.inspector-head h4{display:flex;align-items:center;font-size:17px;margin:0}
.inspector-lead{font-size:14px;max-width:900px;margin:8px 0 14px}
.unit-how{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,1fr);gap:18px;align-items:start;margin:0 0 16px}
.unit-figure{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:8px}
.unit-story h5,.inspector-chart h5{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px}
.story{list-style:none;margin:0;padding:0;display:grid;gap:10px}.story li{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:8px;align-items:start;font-size:13px;line-height:1.55}
.story-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:700}
.story .help{margin-left:0}
.term-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}.term-chips-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}
.term-chip{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:3px 6px 3px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:12px;font-weight:600}
.term-chip:hover{border-color:var(--accent)}.help-dot{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--line-strong);color:var(--accent);font-size:10px;font-weight:700}
/* Machine cutaways */
svg.unit-diagram{display:block;width:100%;height:auto;font-family:var(--sans)}
svg.unit-diagram text{font-size:11px;fill:var(--ink)}svg.unit-diagram .u-note{fill:var(--muted);font-size:10.5px}svg.unit-diagram .u-note-strong{font-weight:700;font-size:11px}
svg.unit-diagram .u-note-inv{fill:var(--accent-ink);font-size:10.5px;font-weight:600}svg.unit-diagram .u-flow-lbl{font-size:11px;font-weight:600;fill:var(--ink-2)}
svg.unit-diagram .u-warn{fill:var(--warn);font-size:10.5px;font-weight:600}svg.unit-diagram .u-chip-text{fill:#fff;font-size:11px;font-weight:700}
svg.unit-diagram .u-steel{fill:var(--surface-2);stroke:var(--m-edge,var(--line-strong));stroke-width:1.2}svg.unit-diagram .u-tray{fill:none;stroke:var(--line-strong);stroke-width:2;stroke-dasharray:6 4}
svg.unit-diagram .u-module{fill:color-mix(in srgb,var(--ink-2) 70%,var(--surface));stroke:var(--line-strong)}svg.unit-diagram .u-busbar{fill:var(--sp-cu)}svg.unit-diagram .u-pcb{fill:color-mix(in srgb,var(--sp-cu) 45%,var(--surface))}
svg.unit-diagram .u-cable{fill:none;stroke:var(--ink-2);stroke-width:2.5}svg.unit-diagram .u-arm{fill:none;stroke:var(--ink-2);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}svg.unit-diagram .u-joint{fill:var(--surface);stroke:var(--ink-2);stroke-width:2}
svg.unit-diagram .u-wall{fill:var(--surface);stroke:var(--ink-2);stroke-width:2}svg.unit-diagram .u-jacket{fill:none;stroke:var(--warn);stroke-width:2;stroke-dasharray:3 3}
svg.unit-diagram .u-liquid{fill:color-mix(in srgb,var(--accent) 16%,var(--surface));stroke:none}svg.unit-diagram .u-powder{fill:var(--ink-2);opacity:.75}svg.unit-diagram .u-precip{fill:var(--muted);opacity:.8}svg.unit-diagram .u-crystal{fill:var(--surface);stroke:var(--ink-2);stroke-width:.8}
svg.unit-diagram .u-bubble{fill:none;stroke:var(--accent);stroke-width:1}svg.unit-diagram .u-charge{fill:var(--ink-2);opacity:.6}
svg.unit-diagram .u-motor{fill:var(--ink-2)}svg.unit-diagram .u-shaft{stroke:var(--ink-2);stroke-width:2}svg.unit-diagram .u-blade{stroke:var(--ink-2);stroke-width:3;stroke-linecap:round}
svg.unit-diagram .u-rotor-disc{fill:var(--surface);stroke:var(--ink-2);stroke-width:1.5}svg.unit-diagram .u-teeth{stroke:var(--ink-2);stroke-width:2}
svg.unit-diagram .u-kiln{fill:color-mix(in srgb,var(--warn) 18%,var(--surface-2));stroke:var(--ink-2);stroke-width:1.2}svg.unit-diagram .u-heater{fill:var(--warn);opacity:.5}svg.unit-diagram .u-sagger{fill:var(--surface);stroke:var(--ink-2)}
svg.unit-diagram .u-gas{fill:color-mix(in srgb,var(--accent) 22%,var(--surface));stroke:var(--ink-2)}svg.unit-diagram .u-gasline{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:3 3}
svg.unit-diagram .u-screen{stroke:var(--ink-2);stroke-width:3}svg.unit-diagram .u-screen-mesh{stroke:var(--ink-2);stroke-width:2;stroke-dasharray:2 4}svg.unit-diagram .u-fall{stroke:var(--ink-2);stroke-width:1.5;stroke-dasharray:2 5}
svg.unit-diagram .u-hopper-bm{fill:color-mix(in srgb,var(--ink) 70%,var(--surface));stroke:var(--ink-2)}svg.unit-diagram .u-hopper-bm+text{fill:var(--surface)}
svg.unit-diagram .u-zigzag{fill:none;stroke:var(--ink-2);stroke-width:2}
svg.unit-diagram .u-plates{stroke:var(--ink-2);stroke-width:2}svg.unit-diagram .u-plate{fill:var(--surface);stroke:var(--ink-2)}
svg.unit-diagram .u-organic{fill:color-mix(in srgb,var(--warn) 55%,var(--surface))}svg.unit-diagram .u-aqueous{fill:color-mix(in srgb,var(--accent) 18%,var(--surface))}
svg.unit-diagram .u-refractory{fill:color-mix(in srgb,var(--ink-2) 55%,var(--surface));stroke:var(--ink-2)}svg.unit-diagram .u-melt-space{fill:var(--surface)}
svg.unit-diagram .u-slag{fill:color-mix(in srgb,var(--muted) 70%,var(--surface))}svg.unit-diagram .u-alloy{fill:color-mix(in srgb,var(--ink) 75%,var(--surface))}
svg.unit-diagram .u-temp{fill:none;stroke:var(--warn);stroke-width:2.5}svg.unit-diagram .u-chip{stroke:none}
svg.unit-diagram .u-eq-box{fill:var(--surface-2);stroke:var(--line-strong)}svg.unit-diagram .u-eq-text{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10.5px;fill:var(--ink)}
svg.unit-diagram .u-flow path{fill:none;stroke-width:2.2}svg.unit-diagram .u-flow polygon{stroke:none}
svg.unit-diagram .u-in path,svg.unit-diagram .u-main path{stroke:var(--ink-2)}svg.unit-diagram .u-in polygon,svg.unit-diagram .u-main polygon{fill:var(--ink-2)}
svg.unit-diagram .u-product path{stroke:var(--accent)}svg.unit-diagram .u-product polygon{fill:var(--accent)}
svg.unit-diagram .u-loss path{stroke:var(--muted);stroke-dasharray:5 4}svg.unit-diagram .u-loss polygon{fill:var(--muted)}
svg.unit-diagram .u-gas path{stroke:var(--muted);stroke-dasharray:2 4}svg.unit-diagram .u-gas polygon{fill:var(--muted)}
svg.unit-diagram .u-reagent path,svg.unit-diagram .u-virgin path{stroke:var(--warn)}svg.unit-diagram .u-reagent polygon,svg.unit-diagram .u-virgin polygon{fill:var(--warn)}svg.unit-diagram .u-virgin path{stroke-dasharray:4 3}
svg.unit-diagram .u-organic-flow path{stroke:color-mix(in srgb,var(--warn) 70%,var(--ink));stroke-dasharray:4 3}svg.unit-diagram .u-organic-flow polygon{fill:color-mix(in srgb,var(--warn) 70%,var(--ink))}
svg.unit-diagram .u-move path{stroke:var(--muted)}svg.unit-diagram .u-move polygon{fill:var(--muted)}
svg.unit-diagram .u-badge circle{fill:var(--accent);stroke:var(--surface);stroke-width:2}svg.unit-diagram .u-badge .u-hl-ring{fill:none;stroke:var(--warn);stroke-width:3;animation:u-ring 1.6s ease-in-out infinite alternate}@keyframes u-ring{from{opacity:.45}to{opacity:1}}svg.unit-diagram .u-badge .u-badge-n{fill:var(--accent-ink);font-size:11px;font-weight:700}svg.unit-diagram .u-badge[role=button]{cursor:pointer;outline:none}
svg.unit-diagram .u-badge[role=button]:hover circle,svg.unit-diagram .u-badge[role=button]:focus-visible circle{stroke:var(--accent);stroke-width:3}
svg.unit-diagram .u-rotor{transform-box:fill-box;transform-origin:center;animation:u-spin 2.4s linear infinite}svg.unit-diagram .u-impeller{transform-box:fill-box;transform-origin:center;animation:u-wobble 1.2s ease-in-out infinite alternate}
@keyframes u-spin{to{transform:rotate(360deg)}}@keyframes u-wobble{from{transform:scaleX(1)}to{transform:scaleX(.35)}}
/* Plant parts: hover names a part and shows its ?; the robot and screen move */
svg.plant .part{cursor:help}svg.plant .part:hover polygon,svg.plant .part:hover .c-body,svg.plant .part:hover .d-body,svg.plant .part:hover ellipse{stroke:var(--accent);stroke-width:1.6}
svg.plant .qmark{visibility:hidden;cursor:pointer;outline:none}svg.plant .station:hover .qmark,svg.plant .station.on .qmark,svg.plant .qmark:focus-visible,svg.plant .conveyor:hover .qmark{visibility:visible}
svg.plant .qmark circle{fill:var(--surface);stroke:var(--accent);stroke-width:1.5}svg.plant .qmark text{fill:var(--accent);font-size:10px;font-weight:700}
svg.plant .qmark:hover circle,svg.plant .qmark:focus-visible circle{fill:var(--accent)}svg.plant .qmark:hover text,svg.plant .qmark:focus-visible text{fill:var(--accent-ink)}
svg.plant .station.on .sign-mark circle{fill:var(--surface);stroke:var(--surface)}svg.plant .station.on .sign-mark text{fill:var(--accent)}
svg.plant .arm-upper,svg.plant .arm-fore{transform-box:view-box}svg.plant .arm-upper{animation:arm-shoulder 3.4s ease-in-out infinite alternate}svg.plant .arm-fore{animation:arm-elbow 2.6s ease-in-out infinite alternate}
svg.plant .shake{animation:plant-shake .16s linear infinite alternate}
svg.plant .chute-flow{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:1 7;animation:plant-flow 1.1s linear infinite}svg.plant .chute-flow.loss{stroke:var(--muted)}
@keyframes arm-shoulder{from{transform:rotate(-7deg)}to{transform:rotate(9deg)}}@keyframes arm-elbow{from{transform:rotate(14deg)}to{transform:rotate(-12deg)}}@keyframes plant-shake{from{transform:translate(0,0)}to{transform:translate(1px,-1px)}}
/* The glossary at the foot of the guide */
.glossary h3{font-size:16px;margin:26px 0 8px}.glossary dl{margin:0}.gl-entry{padding:10px 0;border-top:1px solid var(--line);scroll-margin-top:24px}.gl-entry:target{background:var(--accent-soft);outline:2px solid var(--accent);outline-offset:4px}
.gl-entry dt{font-weight:700;font-size:15px}.gl-entry dd{margin:4px 0 0}.gl-entry dd p{margin:0 0 4px;font-size:14px;line-height:1.6}.gl-here{color:var(--muted)}.gl-link{font-size:13px}
/* One tooltip, positioned through the CSSOM */
.tip{position:fixed;z-index:60;max-width:280px;padding:7px 10px;border-radius:var(--radius);background:var(--ink);color:var(--surface);font-size:12px;line-height:1.45;pointer-events:none}
.loop-empty{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.loop-empty .note{margin:0;flex:1 1 320px}
.callout{border-left:3px solid var(--accent);padding:6px 14px;margin:0}.callout.warn{border-left-color:var(--warn)}.callout.ok{border-left-color:var(--ok)}.callout p{margin:6px 0 0;color:var(--muted);font-size:13px}
.note{font-size:12px;color:var(--muted)}
details.evidence{border-top:1px solid var(--line);margin-top:18px;padding-top:12px}details.evidence summary{font-weight:700;cursor:pointer;font-size:14px}details.evidence[open] summary{margin-bottom:10px}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 8px}.study-shell table{width:auto;border-collapse:collapse;font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums;min-width:100%}.study-shell th{text-align:left;font-weight:700;color:var(--muted);background:none;padding:5px 8px;border-bottom:1px solid var(--line-strong);white-space:nowrap;min-width:0}.study-shell td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap;min-width:0}.study-shell tr:last-child td{border-bottom:1px solid var(--line)}
/* The guide, in the article's prose column */
.wiki-prose section[id]{scroll-margin-top:16px}.wiki-prose .sources li{margin-bottom:8px;font-size:14px;overflow-wrap:anywhere}
.wiki-prose .route-card p{font-size:12px}.wiki-prose .route-chain li{font-size:11px;line-height:1.4}.wiki-prose .route-card h3{margin:0}
.wiki-prose code{background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:0 4px}
/* Formula graphs: thin marks on the workbench surfaces, the formula printed under each one */
.fx-figure{margin:18px 0 24px;padding:14px 16px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.fx-figure figcaption{font-size:13px;line-height:1.55;color:var(--muted);margin-top:10px}
.fx{min-width:0}.fx-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.fx-chips{margin:0 0 8px}
svg.fx-chart{display:block;width:100%;min-width:560px;height:auto;font-family:var(--sans)}
svg.fx-chart text{font-size:11px;fill:var(--ink-2)}svg.fx-chart .fx-axis{fill:var(--muted);font-size:11px}svg.fx-chart .fx-axis-title{fill:var(--muted);font-size:11px;font-weight:600}
svg.fx-chart .fx-factor{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;fill:var(--ink);font-weight:600}
svg.fx-chart .fx-grid{stroke:var(--line);stroke-width:1}svg.fx-chart .fx-base{stroke:var(--line-strong);stroke-width:1}
svg.fx-chart .fx-target{stroke:var(--ink-2);stroke-width:1.2;stroke-dasharray:5 4}svg.fx-chart .fx-target-lbl{fill:var(--ink-2);font-size:11px;font-weight:600}
svg.fx-chart .fx-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
svg.fx-chart .fx-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}
svg.fx-chart [data-sp=Li]{stroke:var(--sp-li)}svg.fx-chart [data-sp=Ni]{stroke:var(--sp-ni)}svg.fx-chart [data-sp=Co]{stroke:var(--sp-co)}svg.fx-chart [data-sp=Mn]{stroke:var(--sp-mn)}svg.fx-chart [data-sp=Fe]{stroke:var(--sp-fe)}svg.fx-chart [data-sp=Cu]{stroke:var(--sp-cu)}svg.fx-chart [data-sp=Al]{stroke:var(--sp-al)}svg.fx-chart [data-sp=other]{stroke:var(--sp-other)}
svg.fx-chart .fx-dot[data-sp=Li]{fill:var(--sp-li)}svg.fx-chart .fx-dot[data-sp=Ni]{fill:var(--sp-ni)}svg.fx-chart .fx-dot[data-sp=Co]{fill:var(--sp-co)}svg.fx-chart .fx-dot[data-sp=Mn]{fill:var(--sp-mn)}svg.fx-chart .fx-dot[data-sp=Fe]{fill:var(--sp-fe)}
svg.fx-chart .fx-dot{stroke:var(--surface)}
svg.fx-chart .fx-drop{stroke:var(--role-loss);stroke-width:6;stroke-linecap:butt}svg.fx-chart .fx-drop-lbl{fill:var(--muted);font-size:10.5px}
svg.fx-chart .fx-end{fill:var(--ink);font-size:12px;font-weight:700}
svg.fx-chart .halo{paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}svg.fx-chart .fx-plate{fill:var(--surface);opacity:.94}
svg.fx-chart .fx-hit{fill:transparent;cursor:crosshair}svg.fx-chart .fx-hit[role=button]{cursor:pointer}svg.fx-chart .fx-hit:focus-visible{outline:none;stroke:var(--accent);stroke-width:2}
svg.fx-chart .fx-crosshair{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:2 3}
svg.fx-chart .fx-now{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3}svg.fx-chart .fx-now-lbl{fill:var(--accent);font-size:11px;font-weight:600}
svg.fx-chart .fx-cross{fill:var(--surface);stroke:var(--ink);stroke-width:2}svg.fx-chart .fx-cross-lbl{fill:var(--ink);font-size:11px;font-weight:600}
svg.fx-chart .fx-series-lbl{fill:var(--ink-2);font-size:11px;font-weight:600}
svg.fx-chart .fx-batch{stroke:var(--ink);stroke-width:1.5}svg.fx-chart .fx-batch-lbl{fill:var(--ink);font-size:11px;font-weight:700}
svg.fx-chart .fx-row-name{fill:var(--ink);font-size:12px;font-weight:700}svg.fx-chart .fx-row-sub{fill:var(--muted);font-size:10.5px}
svg.fx-chart .fx-row-value{fill:var(--ink-2);font-size:11.5px}svg.fx-chart .fx-row-value.strong{fill:var(--ink);font-weight:700}
svg.fx-chart .fx-surplus{opacity:.35}svg.fx-chart .fx-virgin{fill:var(--warn-soft);stroke:var(--warn);stroke-width:1.2;stroke-dasharray:4 3}
svg.fx-chart .fx-loop-bar{fill:var(--accent)}svg.fx-chart .fx-tick{stroke:var(--ink);stroke-width:1.5}svg.fx-chart .fx-tick-lbl{fill:var(--muted);font-size:10px}
svg.fx-chart .fx-bar{fill:color-mix(in srgb,var(--muted) 35%,var(--surface))}svg.fx-chart .fx-bar-on{fill:var(--accent)}
svg.fx-chart .fx-prod-a{fill:var(--role-product)}svg.fx-chart .fx-prod-b{fill:var(--role-product-2)}svg.fx-chart .fx-loss-a{fill:var(--role-loss)}svg.fx-chart .fx-loss-b{fill:var(--role-loss-2)}
/* The recipe's bars wear each element's colour; its legend names the kind of segment, so the swatches are neutral. */
.sw-loop-bar{background:var(--ink-2)}.sw-surplus{background:color-mix(in srgb,var(--ink-2) 30%,var(--surface))}.sw-virgin{background:var(--warn-soft);outline:1px dashed var(--warn);outline-offset:-1px}
.fx-formula{margin:10px 0 0;padding:10px 12px;border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 var(--radius) var(--radius) 0}
.fx-formula .fx-eq{margin:0 0 4px;font-size:13px;overflow-x:auto}.fx-formula .fx-eq code{background:none;border:0;padding:0;font-size:13px;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.fx-note{font-size:12.5px;line-height:1.55;color:var(--muted);margin:6px 0 0}
.fx-factors{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--muted)}.fx-factors code{color:var(--ink);font-weight:600}
.fx-verdict{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;margin:10px 0 0}
.fx-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:4px 20px;margin-top:6px}.fx-columns h5{font-size:12px;margin:6px 0 4px;color:var(--ink)}
.fx-list{list-style:none;margin:0;padding:0;font-size:12px;color:var(--ink-2)}.fx-list li{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:2px 0}
.fx-empty{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fx-empty .note{margin:0;flex:1 1 300px}
/* The glossary: groups and terms open and close; an opened term shows its picture or its graph */
.glossary .gl-group{border-top:1px solid var(--line)}.glossary .gl-group:last-of-type{border-bottom:1px solid var(--line)}
.gl-group>summary{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 4px 12px 22px;cursor:pointer;list-style:none}
.gl-group>summary::-webkit-details-marker,.gl-entry>summary::-webkit-details-marker{display:none}
.gl-group>summary::before{left:4px;top:1.15em;width:8px;height:8px}
.gl-group>summary h3{display:inline;margin:0;font-size:17px}.gl-count{font-size:12px;color:var(--muted)}
.gl-group>summary:hover h3{color:var(--accent)}
.gl-list{padding:0 0 10px 22px}
.gl-entry{border-top:1px solid var(--line);scroll-margin-top:24px}
.gl-entry>summary{position:relative;display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr) auto;gap:4px 14px;align-items:baseline;padding:9px 4px 9px 20px;cursor:pointer;list-style:none}
.gl-entry>summary::before{left:4px;top:1.05em}
.gl-entry>summary:hover .gl-term{color:var(--accent)}
.gl-term{font-weight:700;font-size:15px;color:var(--ink)}.gl-short{font-size:13.5px;color:var(--muted);line-height:1.5}
.gl-kind{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,var(--surface));border-radius:var(--radius);padding:1px 6px;background:var(--accent-soft)}
.gl-entry[open]{background:color-mix(in srgb,var(--surface-2) 55%,var(--surface))}.gl-entry:target{outline:2px solid var(--accent);outline-offset:2px}
.gl-body{padding:0 12px 14px 20px}.gl-body p{margin:0 0 6px;font-size:14px;line-height:1.6}.gl-here{color:var(--muted)}.gl-link{font-size:13px}
.gl-figure{margin:12px 0 10px}.gl-figure:empty{display:none}
.gl-picture .unit-figure{margin:0}.gl-picture figcaption{font-size:12.5px;color:var(--muted);margin-top:6px}
.gl-picture .story{margin-top:10px}.gl-picture .story li{grid-template-columns:24px minmax(0,1fr)}.gl-actions{margin:10px 0 0}
.gl-figure .fx{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}
@media (max-width:1100px){.input-main{grid-template-columns:repeat(2,minmax(0,1fr))}.parameter-groups{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:980px){.inspector-grid{grid-template-columns:1fr}.unit-how{grid-template-columns:1fr}.eu-row{grid-template-columns:120px minmax(0,1fr) 56px;row-gap:4px}.eu-row .chip{grid-column:2/4}.eu-row .eu-ref{grid-column:1/-1}}
@media (max-width:640px){body.term-pinned{padding-right:0}.term-drawer.pinned{width:100vw}.milestone-chips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}.milestone-chips .chip-button{flex:none}.form-grid,.parameter-groups .parameter-group[open] .form-grid{grid-template-columns:1fr}.parameter-groups .parameter-group[open] .full-width{grid-column:1/-1}.input-main,.parameter-groups{grid-template-columns:1fr}.input-panel{padding:14px}.workspace{padding:16px 14px}.gl-entry>summary{grid-template-columns:minmax(0,1fr) auto}.gl-short{grid-column:1/-1;grid-row:2}.gl-list{padding-left:8px}.gl-body{padding:0 6px 12px 10px}.step-caption{order:-1;width:100%;text-align:left;min-width:0}.eu-row{grid-template-columns:1fr 56px}.eu-row svg.bullet{grid-column:1/-1}.eu-row .chip{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}svg .unit-box,svg .side,.eu-panel{transition:none}.figure.plant-figure{scroll-behavior:auto}svg.plant .flow,svg.plant .puff,svg.plant .glow,svg.plant .arm-upper,svg.plant .arm-fore,svg.plant .shake,svg.plant .chute-flow,svg.unit-diagram .u-rotor,svg.unit-diagram .u-impeller,svg.unit-diagram .u-hl-ring{animation:none}svg.plant .puff{opacity:.4}}
/* The results bar under the key figures: the workbook download */
.results-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-6px 0 18px}.results-actions .note{margin:0}a.button{text-decoration:none}
/* The answer to a claim, where the claim is entered */
.claim-result{margin:10px 0 0;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);font-size:13px;line-height:1.5}
.claim-result:empty{display:none}.claim-result.ok{border-left-color:var(--accent)}.claim-result.warn{border-left-color:var(--warn)}.claim-result.fail{border-left-color:var(--fail)}
.claim-result.ok strong::before{content:"✓ ";color:var(--accent)}.claim-result.warn strong::before{content:"! ";color:var(--warn)}.claim-result.fail strong::before{content:"✕ ";color:var(--fail)}
#loop-result .fx{margin-top:14px;max-width:820px}
/* The whole plant on one screen: the drawing scaled to the window instead of scrolling */
.plant-dialog{width:min(1800px,98vw);max-width:98vw;max-height:96vh;margin:auto;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);box-shadow:0 20px 60px #0004;overflow:auto}
.plant-dialog::backdrop{background:#10192580}
.plant-dialog-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--surface)}
.plant-dialog-head h2{font-size:18px;margin:0 0 2px}.plant-dialog-head .note{margin:0}
#plant-dialog-close{min-width:36px;min-height:36px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:20px;line-height:1}
.plant-dialog-body{padding:10px 14px 16px}
.plant-dialog-body svg.plant{min-width:0!important;width:100%;max-height:calc(96vh - 90px)}

/* The whole plant on a phone: drawn large enough to read, and scrolled sideways. The drawings of each unit likewise. */
.plant-scroll-hint{display:none}
@media (max-width:760px){
  .plant-dialog-body{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .plant-dialog-body svg.plant{min-width:1100px!important;width:1100px;max-height:none}
  .plant-scroll-hint{display:block}
  .unit-figure{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .unit-figure svg.unit-diagram{min-width:600px}
  .inspector-chart{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .inspector-chart svg.composition{min-width:520px}
}

/* Advanced inputs: every engine number, grouped by unit. */
.advanced-group .field-note{margin:6px 0 10px}
.advanced-section{border:0;border-top:1px solid var(--line);margin:10px 0 0;padding:10px 0 0;min-width:0}
.advanced-section legend{font-size:12px;font-weight:700;color:var(--ink-2);padding:0 6px 0 0}
.advanced-group .field input::placeholder{color:var(--muted)}
.case-link{flex:1 1 320px;min-width:0;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--ink);padding:8px 10px;font:12px/1.4 var(--sans)}
.results-actions{flex-wrap:wrap}

/* Engineering figures: one card per question. */
.eng-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:14px;margin-top:10px}
.eng-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:14px;min-width:0}
.eng-card.wide{grid-column:1/-1}
.eng-card h4{display:flex;align-items:center;gap:6px;font-size:14px;margin:0 0 8px}
.eng-card .table-wrap{margin:6px 0}
.eng-headline{margin:4px 0 8px;font-size:13px;font-weight:600;color:var(--ink)}
.eng-reading{font-size:12px;color:var(--muted);margin:6px 0}
.eng-reading summary{cursor:pointer;color:var(--ink)}
.eng-reading ul{margin:6px 0 0;padding-left:18px}
.eng-reading li{margin:2px 0}
svg.tornado .tz-down{fill:var(--ink-2)}svg.tornado .tz-up{fill:var(--accent)}
.scenario-table th{text-align:left;vertical-align:top}.scenario-actions{display:flex;gap:4px;margin-top:4px}
.scenario-table td,.scenario-table th{white-space:nowrap}
