:root{--lab-ink: var(--ink);--lab-ink-2: var(--ink-2);--lab-muted: var(--ink-3);--lab-grid: #e1e7e2;--lab-axis: #b8c5bd;--lab-observed: var(--ink);--lab-forecast: var(--accent);--lab-secondary: #6f857d;--lab-accent: var(--accent);--lab-warning: #a2600b;--lab-warning-text: var(--label);--lab-band: rgba(8, 109, 103, .13);--lab-band-faint: rgba(8, 109, 103, .045);--lab-leak: #f4e6cb;--lab-shortage: rgba(162, 96, 11, .075);--lab-bar: #7a948a;--lab-train: #b9d8cf;--lab-inactive: #e7ece8;--lab-surface: #fff;--lab-code: #f3f5f1;--lab-t: .22s var(--motion-ease)}.lab-back{margin:1rem 0 0;font-weight:700}.lab-article{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"body" "rail" "implementation";gap:2.5rem;max-width:46rem}@media(min-width:1100px){.lab-article{grid-template-columns:minmax(0,46rem) minmax(14rem,17rem);grid-template-areas:"body rail" "implementation rail";column-gap:clamp(3rem,5vw,5rem);max-width:none;justify-content:start}}.lab-body{grid-area:body;min-width:0}.lab-rail{grid-area:rail;min-width:0;align-self:start}.lab-implementation{grid-area:implementation;min-width:0}.lab-body>*+*,.lab-implementation>*+*{margin-top:1.1rem}.lab-body h2,.lab-implementation h2{font-size:var(--step-2);margin-top:2.6rem}.lab-body h3{font-size:var(--step-1);margin-top:1.8rem}.lab-implementation>h2:first-child{margin-top:0}.lab-main{max-width:46rem;min-width:0}.lab-main>*+*{margin-top:1.1rem}.lab-status{margin:0;font-size:var(--step--1);color:var(--lab-muted)}.lab-status-mark{display:inline-block;width:.45rem;height:.45rem;margin-right:.5rem;border-radius:50%;background:var(--lab-warning);vertical-align:.1em}.lab-concept p{margin:0;max-width:62ch;font-size:var(--step-0);color:var(--lab-ink-2)}.lab-concept p:first-child{font-family:var(--font-display);font-size:var(--step-1);line-height:1.4;color:var(--lab-ink)}.lab-concept p+p{margin-top:.6rem}.lab-rail{border-top:1px solid var(--rule);padding-top:1rem;font-size:.92rem}@media(min-width:1100px){.lab-rail{border-top:0;border-left:1px solid var(--rule);padding:.2rem 0 0 1.5rem;margin-top:.15rem}}.lab-rail h2{margin:0 0 .9rem;font-family:var(--font-body);font-size:.95rem;font-weight:700;color:var(--lab-ink)}.lab-rail dl{margin:0}.lab-rail div+div{margin-top:.85rem}.lab-rail dt{font-weight:650;color:var(--lab-ink)}.lab-rail dd{margin:.1rem 0 0;color:var(--lab-ink-2);line-height:1.5}.lab-controls{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin:1.4rem 0 0;padding:0;border:0}.lab-controls>div{min-width:0}.lab-controls label{display:block;font-size:.88rem;font-weight:600;color:var(--lab-ink-2);margin-bottom:.3rem}.lab-controls select{min-height:44px;min-width:min(100%,15rem);max-width:100%;font:inherit;font-size:.98rem;color:var(--ink);background:var(--lab-surface);border:1px solid var(--lab-axis);border-radius:6px;padding:.35rem .65rem;transition:border-color var(--motion-quick) ease}.lab-controls select:hover{border-color:var(--lab-muted)}@media(max-width:640px){.lab-controls>div{flex:1 1 100%}.lab-controls select{width:100%}}.lab-figure{container-type:inline-size;margin:1rem 0 0}.lab-figure+.lab-figure{margin-top:2rem}.lab-plot{position:relative}.lab-svg svg{display:block;width:100%;height:auto;overflow:visible}.lab-svg--wide{display:none}@container (min-width: 35rem){.lab-svg--compact{display:none}.lab-svg--wide{display:block}.lab-key--compact{display:none}}.lab-figure figcaption{margin-top:.75rem;max-width:64ch;font-size:var(--step--1);color:var(--lab-ink-2)}.lab-figure figcaption strong{display:block;margin-bottom:.15rem;font-weight:650;color:var(--lab-ink)}.lab-key{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;list-style:none;margin:.55rem 0 0;padding:0;font-size:.86rem;color:var(--lab-ink-2)}.lab-key li{display:inline-flex;align-items:center;gap:.4rem;margin:0}.lab-key .sw{flex:none;display:inline-block;width:1.1rem;height:0;border-top:1.75px solid currentColor}.lab-key .k-observed{color:var(--lab-observed)}.lab-key .k-forecast{color:var(--lab-forecast)}.lab-key .k-mean{color:var(--lab-secondary);border-top-style:dashed}.lab-key .k-croston{color:var(--lab-forecast)}.lab-key .k-tsb{color:var(--lab-warning);border-top-style:dotted;border-top-width:2px}.lab-key .k-band{height:.6rem;border:0;background:var(--lab-band)}.lab-key .k-dot{width:.4rem;height:.4rem;border:0;border-radius:50%;background:var(--lab-observed)}.lab-key .k-bar{width:.35rem;height:.7rem;border:0;background:var(--lab-bar)}.lab-key .k-train{width:.8rem;height:.6rem;border:0;border-radius:1.5px;background:var(--lab-train)}.lab-key .k-test{width:.8rem;height:.6rem;border:1.25px solid var(--lab-forecast);border-radius:1.5px}.lab-key .k-later{width:.8rem;height:.6rem;border:0;border-radius:1.5px;background:var(--lab-inactive)}.lab-key .k-leak{width:.8rem;height:.6rem;border:1.5px solid var(--lab-warning);border-radius:1.5px;background:var(--lab-train)}.lab-key .k-stock{width:.9rem;height:.5rem;border:0;background:var(--lab-axis)}.lab-key .k-order{width:.9rem;height:.5rem;border:0;background:var(--lab-forecast)}.lab-key .k-short{width:.9rem;height:.5rem;border:1px solid var(--lab-warning);background:var(--lab-leak)}.lab-key .k-dot--teal{background:var(--lab-forecast)}.lab-key .k-tick{width:0;height:.9rem;border:0;border-left:1.5px solid var(--lab-observed)}.lab-key .k-window{width:1.1rem;height:.4rem;border:1.1px solid var(--lab-ink-2);border-top:0;border-bottom:0;background:linear-gradient(var(--lab-ink-2),var(--lab-ink-2)) center / 100% 1.1px no-repeat}.lab-key .k-moq{width:0;height:.45rem;border:0;border-left:1.5px solid var(--lab-warning);align-self:flex-end}.lab-chart text{font-family:var(--font-body);font-size:11.5px;fill:var(--lab-muted);font-variant-numeric:tabular-nums}.lab-chart .t-axis{font-size:11px;fill:var(--lab-muted)}.lab-chart .t-label{font-size:12.5px;font-weight:600;fill:var(--lab-ink-2)}.lab-chart .t-note{font-size:12px;fill:var(--lab-ink-2)}.lab-chart .t-key{font-size:12px;font-weight:650;fill:var(--accent-strong)}.lab-chart .t-warm{font-size:11.5px;fill:var(--lab-warning-text)}.lab-chart .t-warm-strong{font-size:13px;font-weight:650;fill:var(--lab-warning-text)}.lab-chart .t-node{font-size:11px;font-weight:650;fill:var(--lab-ink)}.lab-chart .t-order{font-size:9.5px;font-weight:600;fill:var(--accent-strong)}.lab-chart tspan.t-key{font-weight:650;fill:var(--accent-strong)}.lab-chart path,.lab-chart rect,.lab-chart circle{vector-effect:non-scaling-stroke;transition:d var(--lab-t),x var(--lab-t),y var(--lab-t),width var(--lab-t),height var(--lab-t),cx var(--lab-t),cy var(--lab-t),r var(--lab-t),opacity var(--lab-t),fill var(--lab-t),stroke var(--lab-t)}.lab-grid{fill:none;stroke:var(--lab-grid);stroke-width:.75px}.lab-baseline{fill:none;stroke:var(--lab-axis);stroke-width:.75px}.lab-future{fill:var(--lab-band-faint)}.lab-origin{fill:none;stroke:var(--lab-ink-2);stroke-width:.75px;stroke-dasharray:2 3}.lab-guide{fill:none;stroke:var(--lab-forecast);stroke-width:.75px;stroke-dasharray:1.5 2.5;opacity:.8}.lab-leader{fill:none;stroke:var(--lab-axis);stroke-width:.75px}.lab-band{fill:var(--lab-band);stroke:none}.lab-observed{fill:none;stroke:var(--lab-observed);stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.lab-forecast{fill:none;stroke:var(--lab-forecast);stroke-width:1.75px;stroke-linejoin:round;stroke-linecap:round}.lab-alt{fill:none;stroke:var(--lab-secondary);stroke-width:1px;stroke-linejoin:round;opacity:.85}.lab-forecast-node{fill:var(--lab-forecast)}.lab-actual{fill:var(--lab-observed);stroke:var(--surface);stroke-width:1px}.lab-error{fill:none;stroke:var(--lab-ink-2);stroke-width:1px}.lab-marker{fill:var(--surface);stroke:var(--lab-forecast);stroke-width:1.5px}.lab-reference{fill:none;stroke:var(--lab-muted);stroke-width:.75px;stroke-dasharray:3 3}.lab-hit{fill:transparent;stroke:none;cursor:pointer}.lab-bar{fill:var(--lab-bar)}.lab-zero{fill:var(--surface);stroke:var(--lab-muted);stroke-width:.9px}.lab-mean{fill:none;stroke:var(--lab-secondary);stroke-width:1.1px;stroke-dasharray:4 3}.lab-croston{fill:none;stroke:var(--lab-forecast);stroke-width:1.6px;stroke-linejoin:round}.lab-tsb{fill:none;stroke:var(--lab-warning);stroke-width:1.6px;stroke-linejoin:round;stroke-dasharray:1 2.4;stroke-linecap:round}.lab-run{fill:var(--lab-shortage)}.lab-bracket{fill:none;stroke:var(--lab-ink-2);stroke-width:.75px}.lab-cell{stroke-width:1.25px}.lab-cell--train{fill:var(--lab-train);stroke:none}.lab-cell--test{fill:var(--lab-surface);stroke:var(--lab-forecast)}.lab-cell--later{fill:var(--lab-inactive);stroke:none}.lab-cell--leak{fill:var(--lab-train);stroke:var(--lab-warning);stroke-width:1.5px}.lab-leak-mark{fill:var(--lab-warning)}.lab-chain-expected{fill:var(--lab-band)}.lab-chain-safety{fill:#086d6752}.lab-chain-position{fill:var(--lab-axis)}.lab-chain-order{fill:var(--lab-forecast)}.lab-pack{fill:none;stroke:var(--lab-surface);stroke-width:1px}.lab-target{fill:none;stroke:var(--accent-strong);stroke-width:1px;stroke-dasharray:2 2.5}.lab-shortage-zone{fill:var(--lab-shortage)}.lab-leadtime{fill:#1b302f09}.lab-arrival{fill:none;stroke:var(--lab-forecast);stroke-width:1px;stroke-dasharray:1.5 2.5}.lab-zero-line{fill:none;stroke:var(--lab-warning);stroke-width:1px}.lab-stock{fill:none;stroke:var(--lab-forecast);stroke-width:1.6px;stroke-linejoin:round}.lab-stock-node{fill:var(--lab-forecast);stroke:var(--surface);stroke-width:1px}.lab-stock-node--short{fill:var(--lab-warning)}.lab-stock-node--start{fill:var(--surface);stroke:var(--lab-forecast);stroke-width:1.25px}.lab-route{fill:none;stroke:var(--lab-forecast);stroke-width:1.75px;stroke-linejoin:round;stroke-linecap:round;vector-effect:none}.lab-route-arrow{fill:none;stroke:var(--lab-forecast);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round}.lab-depot{fill:var(--lab-ink)}.lab-node-ring{fill:var(--lab-surface);stroke:var(--lab-ink);stroke-width:1px}.lab-node.is-muted .lab-node-ring{stroke:var(--lab-axis)}.lab-node.is-muted .t-node{fill:var(--lab-muted)}.lab-node.is-active .lab-node-ring{stroke:var(--lab-forecast);stroke-width:2px}.lab-scale{fill:none;stroke:var(--lab-muted);stroke-width:.9px}.lab-window{fill:none;stroke:var(--lab-ink-2);stroke-width:1.1px}.lab-wait{fill:none;stroke:var(--lab-forecast);stroke-width:1px;stroke-dasharray:1.5 2}.lab-arrive{fill:var(--lab-forecast)}.lab-arrive-early{fill:var(--surface);stroke:var(--lab-forecast);stroke-width:1px}.lab-schedule-row.is-muted .lab-window{stroke:var(--lab-axis)}.lab-schedule-row.is-active .t-node{fill:var(--accent-strong)}.lab-schedule-row.is-active .lab-window{stroke:var(--lab-forecast);stroke-width:1.75px}@media(prefers-reduced-motion:no-preference){[data-draw] .lab-route{stroke-dasharray:1;animation:lab-draw 1.1s var(--motion-ease) both}}@keyframes lab-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.lab-bullet{display:block;width:100%;height:1.4rem;overflow:visible}.lab-bullet path,.lab-bullet rect{vector-effect:non-scaling-stroke;transition:d var(--lab-t),x var(--lab-t),width var(--lab-t),opacity var(--lab-t)}.lab-bullet-stock{fill:var(--lab-axis)}.lab-bullet-order{fill:var(--lab-forecast)}.lab-bullet-short{fill:var(--lab-leak);stroke:var(--lab-warning);stroke-width:1px}.lab-bullet-forecast{fill:none;stroke:var(--lab-observed);stroke-width:1.75px}.lab-bullet-moq{fill:none;stroke:var(--lab-warning);stroke-width:1.5px}.lab-alloc{fill:var(--lab-forecast);stroke:var(--surface);stroke-width:1.5px}.lab-alloc-free{fill:none;stroke:var(--lab-muted);stroke-width:.9px;stroke-dasharray:2 2}.lab-unmet{fill:none;stroke:var(--lab-warning);stroke-width:1.6px}.lab-surplus{fill:none;stroke:var(--lab-secondary);stroke-width:1.1px;stroke-dasharray:4 3}.lab-unmet-node{fill:var(--lab-warning);stroke:var(--surface);stroke-width:1px}.lab-surplus-node{fill:var(--surface);stroke:var(--lab-secondary);stroke-width:1px}.order-list{list-style:none;margin:.4rem 0 0;padding:0}.order-row{display:grid;grid-template-columns:4.6rem minmax(0,1fr) 9.5rem;gap:.25rem 1rem;align-items:center;margin:0;padding:.55rem 0;border-bottom:1px solid var(--lab-grid)}.order-id{font-family:var(--font-mono);font-size:.82rem;color:var(--lab-ink)}.order-figures{font-size:.88rem;color:var(--lab-ink-2);font-variant-numeric:tabular-nums;text-align:right}.order-figures strong{font-family:var(--font-mono);font-weight:600;color:var(--accent-strong)}.order-figures .is-short{color:var(--lab-warning-text)}.order-bullet{display:block;min-width:0}@media(max-width:640px){.order-row{grid-template-columns:1fr auto}.order-bullet{grid-column:1 / -1;grid-row:2}}.lab-result{margin:1.1rem 0 0;padding-top:.9rem;border-top:1px solid var(--rule);max-width:64ch;color:var(--lab-ink-2)}.lab-figures{display:flex;flex-wrap:wrap;gap:.6rem 2.25rem;margin:1.1rem 0 0}.lab-figures div{margin:0}.lab-figures dt{font-size:.85rem;color:var(--lab-muted)}.lab-figures dd{margin:0;font-family:var(--font-display);font-size:var(--step-1);font-variant-numeric:tabular-nums;color:var(--lab-ink)}.lab-detail{min-height:1.6em;margin:.4rem 0 0;font-size:var(--step--1);color:var(--lab-ink-2)}.lab-detail .mono{font-size:.85em}.lab-formula{margin:1.1rem 0 0;padding:.7rem 0;border-block:1px solid var(--lab-grid);overflow-x:auto;font-size:.98rem;line-height:1.6;color:var(--lab-ink-2)}.lab-formula strong{display:block;font-size:.9rem;color:var(--lab-ink)}.lab-formula strong:not(:first-child){margin-top:.45rem}.lab-formula code,.lab-formula .mono{font-family:var(--font-mono);font-size:.88em;color:var(--lab-ink)}.lab-stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr));gap:.6rem 1.5rem;margin:1.1rem 0 0}.lab-stages div{margin:0}.lab-stages dt{font-size:.85rem;color:var(--lab-muted)}.lab-stages dd{margin:.1rem 0 0;font-variant-numeric:tabular-nums;color:var(--lab-ink)}.lab-table-wrap{overflow-x:auto;max-width:100%;margin-top:1rem}.lab-table{width:100%;border-collapse:collapse;font-size:.94rem;font-variant-numeric:tabular-nums}.lab-table th,.lab-table td{text-align:left;padding:.45rem .6rem .45rem 0;border-bottom:1px solid var(--lab-grid);white-space:nowrap}.lab-table thead th{font-size:.82rem;font-weight:600;color:var(--lab-muted);border-bottom-color:var(--lab-axis)}.lab-table td,.lab-table tbody th{transition:background-color var(--motion-quick) ease,color var(--motion-quick) ease}.lab-table td.is-selected{color:var(--accent-strong);font-weight:700;background:var(--lab-band-faint)}.lab-table tr.is-active th,.lab-table tr.is-active td{background:var(--lab-band-faint)}.lab-source{display:flex;flex-wrap:wrap;gap:.25rem 1.1rem;align-items:baseline;font-size:.92rem}.lab-source .mono{color:var(--lab-ink-2)}.lab-source a{font-weight:650}.lab-solver{margin:.6rem 0 0}.lab-snippet,.lab-code figure{margin:.8rem 0 0}.lab-snippet figcaption,.lab-code figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.15rem 1rem;margin-bottom:.4rem;font-size:.9rem;color:var(--lab-ink-2)}.lab-code-path{font-family:var(--font-mono);font-size:.76rem;color:var(--lab-muted)}.lab-snippet pre,.lab-code pre{margin:0;overflow-x:auto;max-width:100%;background:var(--lab-code);border:0;border-radius:6px;padding:.9rem 1rem;font-family:var(--font-mono);font-size:.8rem;line-height:1.6;tab-size:2}.lab-code{margin-top:.6rem}.lab-code summary{display:flex;align-items:center;min-height:44px;font-weight:650;cursor:pointer;width:fit-content;color:var(--accent-strong)}.tok-keyword{color:#07534f;font-weight:650}.tok-string{color:#8a5300}.tok-comment{color:#5e716b}.tok-number{color:#325977}.lab-also h2{font-size:var(--step-2)}.lab-also ul{list-style:none;display:flex;flex-wrap:wrap;gap:.45rem 1.4rem;margin:0;padding:0;font-weight:700}.lab-intro p{max-width:62ch}.lab-group{padding-block:clamp(2rem,4vw,3.25rem);border-top:1px solid var(--rule)}.lab-group-head{display:grid;gap:.35rem;margin-bottom:1.6rem}.lab-group-head h2{margin:0}.lab-group-head p{margin:0;max-width:62ch;color:var(--lab-ink-2)}.lab-entries{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:2rem clamp(1.5rem,3vw,2.75rem);list-style:none;margin:0;padding:0}.lab-entry{position:relative;display:grid;gap:.45rem;align-content:start;margin:0}.lab-entry-preview{display:block;padding:.6rem 0 .4rem;border-bottom:1px solid var(--lab-grid);transition:border-color var(--motion-quick) ease}.lab-entry-preview svg{display:block;width:100%;height:auto}.lab-entry-preview .lab-chart *{transition:none}.lab-entry h3{margin:.35rem 0 0;font-size:var(--step-1)}.lab-entry h3 a{color:var(--lab-ink);text-decoration:none}.lab-entry h3 a:after{content:"";position:absolute;inset:0}.lab-entry:hover h3 a,.lab-entry h3 a:focus-visible{color:var(--accent-strong);text-decoration:underline;text-underline-offset:.2em}.lab-entry h3 a:focus-visible{outline:none}.lab-entry:has(a:focus-visible){outline:2px solid var(--focus);outline-offset:6px;border-radius:4px}.lab-entry:hover .lab-entry-preview{border-color:var(--accent)}.lab-entry p{margin:0;color:var(--lab-ink-2)}.lab-entry .lab-entry-meta{font-size:.86rem;color:var(--lab-muted)}@media(prefers-reduced-motion:reduce){.lab-chart *,.lab-bullet *,.lab-table td,.lab-table tbody th{transition:none!important;animation:none!important}}
