/* Four concept illustrations: no internal text, shared visual and typographic scale. */
.category-visual{--category-visual-ink:#1b2420;--category-visual-muted:#536259;--category-visual-sage:#536f5f;--category-visual-lavender:#7e699b;--category-visual-line:#a5afa5;min-width:0;margin:0;color:var(--category-visual-ink)}
.category-visual__drawing{display:block;width:100%;height:auto;overflow:visible;max-height:310px}
.category-visual__legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:8px;color:var(--category-visual-muted);font:400 var(--type-caption)/1.5 var(--font-sans,Arial,sans-serif)}
.category-visual__legend>span{display:inline-flex;align-items:center;gap:9px}
.category-visual__swatch{display:inline-block;width:22px;height:0;border-top:2px solid var(--category-visual-line);flex:none}
.category-visual__swatch--alternatives{border-top-width:1px}
.category-visual__swatch--selection{border-color:var(--category-visual-lavender)}
.category-visual__swatch--resource{border-color:var(--category-visual-sage)}
.category-visual figcaption{margin:10px 0 0;color:var(--category-visual-muted);font:400 var(--type-caption)/1.5 var(--font-sans,Arial,sans-serif);text-wrap:pretty}
@media(max-width:760px){.category-visual__drawing{max-height:none}.category-visual__legend{gap:8px 20px;margin-top:12px}.category-visual figcaption{margin-top:10px}}

/* A layered combinatorial field. Synthetic states and symbols, not a solver output. */
.category-visual--sequence .sequence-field{max-height:none}
.sequence-field path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.sequence-field__dependencies{stroke:var(--category-visual-sage);stroke-width:.65;opacity:.2}
.sequence-field__edges{stroke:var(--category-visual-line);stroke-width:.42;opacity:.32}
.sequence-field__edges--1{stroke:var(--category-visual-sage);opacity:.2}
.sequence-field__states{stroke:var(--category-visual-sage);stroke-width:1.35;opacity:.49}
.sequence-field__states--0{opacity:.22}
.sequence-field__states--2{stroke-width:1.7;opacity:.65}
.sequence-field__order-halo{stroke:var(--category-visual-lavender);stroke-width:8;opacity:.07}
.sequence-field__order{stroke:var(--category-visual-lavender);stroke-width:1.85}
.sequence-field__direction{stroke:var(--category-visual-lavender);stroke-width:1.35}
.sequence-field__selected circle{fill:var(--paper);stroke:var(--category-visual-lavender);stroke-width:1.25}
.sequence-field__projection{stroke:var(--category-visual-line);stroke-width:.8;stroke-dasharray:2 4;opacity:.65}
.sequence-field__symbols{fill:var(--category-visual-sage);font:400 8.5px/1 var(--font-sans);opacity:.46}
.sequence-field .sequence-field__symbol-selection{stroke:var(--category-visual-lavender);stroke-width:2.6;opacity:1}
.sequence-field__bonds{fill:var(--paper);stroke:var(--category-visual-sage);stroke-width:.85;opacity:.52}
.sequence-field__bond-selection{stroke:var(--category-visual-lavender);stroke-width:1.4;opacity:.85}

/* A synthetic temporal weave: candidate activities, precedence and a resource-feasible plan. */
.category-visual--scheduling .scheduling-field{max-height:none}
.scheduling-field path{stroke-linecap:round;stroke-linejoin:round}
.scheduling-field__grid{fill:none;stroke:var(--category-visual-line);stroke-width:.4;opacity:.25}
.scheduling-field__ticks{fill:none;stroke:var(--category-visual-sage);stroke-width:.65;opacity:.42}
.scheduling-field__window{fill:var(--category-visual-sage);opacity:.045;stroke:none}
.scheduling-field__window-edge{fill:none;stroke:var(--category-visual-sage);stroke-width:.7;stroke-dasharray:2 4;opacity:.26}
.scheduling-field__alternatives{fill:var(--paper);stroke:var(--category-visual-line);stroke-width:.55;opacity:.5}
.scheduling-field__alternatives--1{fill:var(--category-visual-sage);fill-opacity:.055;opacity:.35}
.scheduling-field__alternatives--2{fill:var(--category-visual-line);fill-opacity:.08;opacity:.34}
.scheduling-field__precedence{fill:none;stroke:var(--category-visual-sage);stroke-width:.65;opacity:.21}
.scheduling-field__assignments{fill:none;stroke:var(--category-visual-sage);stroke-width:.7;stroke-dasharray:1.5 3;opacity:.47}
.scheduling-field__commitment-halo{fill:none;stroke:var(--category-visual-lavender);stroke-width:5;opacity:.06}
.scheduling-field__commitment{fill:none;stroke:var(--category-visual-lavender);stroke-width:1;opacity:.66}
.scheduling-field__plan{fill:var(--category-visual-sage);fill-opacity:.21;stroke:var(--category-visual-sage);stroke-width:.8}
.scheduling-field__critical{fill:var(--category-visual-lavender);fill-opacity:.25;stroke:var(--category-visual-lavender);stroke-width:1.1}
.scheduling-field__milestones{fill:none;stroke:var(--paper);stroke-width:1;opacity:.9}
.scheduling-field__resource-pools{fill:none;stroke:var(--category-visual-sage);stroke-width:1;opacity:.55}
.scheduling-field__time{fill:none;stroke:var(--category-visual-sage);stroke-width:.9;opacity:.56}
.scheduling-field__time-ticks{fill:none;stroke:var(--category-visual-sage);stroke-width:.65;opacity:.5}

/* Spatial combinatorial field: finite space, heterogeneous footprints and connected placements. */
.category-visual--spatial .spatial-field{max-height:none}
.spatial-field path{stroke-linecap:round;stroke-linejoin:round}
.spatial-field__substrate{fill:var(--category-visual-sage);fill-opacity:.035;stroke:var(--category-visual-line);stroke-width:1}
.spatial-field__edge-depth{fill:var(--category-visual-sage);fill-opacity:.035;stroke:var(--category-visual-line);stroke-width:.7;stroke-opacity:.55}
.spatial-field__grid{fill:none;stroke:var(--category-visual-line);stroke-width:.45;opacity:.25}
.spatial-field__alternatives{fill:none;stroke:var(--category-visual-line);stroke-width:.65;stroke-dasharray:2 4;opacity:.42}
.spatial-field__interconnects{fill:none;stroke:var(--category-visual-sage);stroke-width:.6;opacity:.29}
.spatial-field__module{stroke:var(--category-visual-sage);stroke-width:.75;stroke-opacity:.65}
.spatial-field__module-side{fill:var(--category-visual-sage);fill-opacity:.12}
.spatial-field__module-top{fill:var(--paper);fill-opacity:.96}
.spatial-field__module--selected{stroke:var(--category-visual-lavender);stroke-opacity:.85}
.spatial-field__module--selected .spatial-field__module-side{fill:var(--category-visual-lavender);fill-opacity:.17}
.spatial-field__module--selected .spatial-field__module-top{fill:var(--category-visual-lavender);fill-opacity:.10}
.spatial-field__terminals{fill:none;stroke:var(--category-visual-sage);stroke-width:.85;opacity:.6}
.spatial-field__subdivisions{fill:none;stroke:var(--category-visual-sage);stroke-width:.6;opacity:.5}
.spatial-field__clearances{fill:none;stroke:var(--category-visual-lavender);stroke-width:.8;stroke-dasharray:2 3;opacity:.5}
.spatial-field__selection-halo{fill:none;stroke:var(--category-visual-lavender);stroke-width:6;opacity:.08}
.spatial-field__selection{fill:none;stroke:var(--category-visual-lavender);stroke-width:1.65;opacity:.98}
.spatial-field__selection--secondary{stroke-width:1.05;opacity:.65}
.spatial-field__junction{fill:var(--paper);stroke:var(--category-visual-lavender);stroke-width:1.05}
.spatial-field__volume-limit{fill:none;stroke:var(--category-visual-line);stroke-width:.7;stroke-dasharray:2 5;opacity:.55}
.spatial-field__registration{fill:none;stroke:var(--category-visual-sage);stroke-width:1.5;opacity:.8}

/* Synthetic inventory-control field: variable lots, bounded stock buffers, delayed replenishment. */
.category-visual--inventory .inventory-field{max-height:none}
.inventory-field path{stroke-linecap:round;stroke-linejoin:round}
.inventory-field__horizon{fill:none;stroke:var(--category-visual-line);stroke-width:.65;opacity:.16}
.inventory-field__uncertainty{fill:none;stroke:var(--category-visual-sage);stroke-width:.55;opacity:.18}
.inventory-field__possibilities{fill:none;stroke:var(--category-visual-line);stroke-width:.65;opacity:.36}
.inventory-field__leadtime{fill:none;stroke:var(--category-visual-sage);stroke-width:.55;stroke-dasharray:1.5 3.5;opacity:.3}
.inventory-field__supply{fill:var(--category-visual-sage);stroke:none;opacity:.38}
.inventory-field__supply--1{opacity:.2}
.inventory-field__demand{fill:var(--category-visual-sage);stroke:none;opacity:.38}
.inventory-field__demand--1{fill:none;stroke:var(--category-visual-sage);stroke-width:.55;opacity:.48}
.inventory-field__previous{fill:none;stroke:var(--category-visual-line);stroke-width:.7;stroke-dasharray:2 3;opacity:.48}
.inventory-field__capacity-back{fill:none;stroke:var(--category-visual-sage);stroke-width:.8;opacity:.42}
.inventory-field__capacity{fill:var(--paper);fill-opacity:.7;stroke:var(--category-visual-sage);stroke-width:.8;opacity:.7}
.inventory-field__capacity-front{fill:none;stroke:var(--category-visual-sage);stroke-width:.75;opacity:.4}
.inventory-field__capacity-ticks{fill:none;stroke:var(--category-visual-sage);stroke-width:.65;opacity:.4}
.inventory-field__stock{fill:var(--category-visual-sage);stroke:none;opacity:.62}
.inventory-field__stock--1{opacity:.34}
.inventory-field__stock--2{opacity:.48}
.inventory-field__ageing{fill:var(--category-visual-line);stroke:none;opacity:.32}
.inventory-field__vacancy{fill:none;stroke:var(--category-visual-line);stroke-width:.5;opacity:.65}
.inventory-field__feedback{fill:none;stroke:var(--category-visual-sage);stroke-width:.9;stroke-dasharray:2 4;opacity:.6}
.inventory-field__decision-halo{fill:none;stroke:var(--category-visual-lavender);stroke-width:6;opacity:.06}
.inventory-field__decisions{fill:none;stroke:var(--category-visual-lavender);stroke-width:1.2;opacity:.88}
.inventory-field__arrivals{fill:none;stroke:var(--category-visual-lavender);stroke-width:1.1}
.inventory-field__selected-batch{fill:var(--category-visual-lavender);stroke:none;opacity:.8}
.inventory-field__replenished{fill:var(--category-visual-lavender);stroke:none;opacity:.77}
.inventory-field__reorder{fill:none;stroke:var(--category-visual-lavender);stroke-width:1;opacity:.74}
.inventory-field__observations circle{fill:var(--paper);stroke:var(--category-visual-lavender);stroke-width:.95}
