:root{--plc-on:#139948;--plc-wire:#4c56668c;--plc-ink:#343e4d;--plc-liquid:#0093c38c}@supports (color:lab(0% 0 0)){:root{--plc-on:lab(55.589% -48.608 32.4008);--plc-wire:lab(36.0748% -1.03399 -10.9641/.55);--plc-ink:lab(25.6259% -.873417 -10.9065);--plc-liquid:lab(56.1536% -21.404 -36.044/.55)}}.dark{--plc-on:#56d57b;--plc-wire:#acb8cb59;--plc-ink:#b5c5dfd9;--plc-liquid:#0093c380}@supports (color:lab(0% 0 0)){.dark{--plc-on:lab(76.6247% -51.2812 33.7572);--plc-wire:lab(74.3695% -1.29968 -11.0752/.35);--plc-ink:lab(78.9656% -1.6045 -14.7098/.85);--plc-liquid:lab(56.1536% -21.404 -36.044/.5)}}.plc-workspace{background-color:var(--netsim-stage-bg)}.plc-workspace__machine{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--card) 70%, transparent);flex-shrink:0;max-height:50%;overflow-y:auto}.plc-machine{padding:10px 12px}.plc-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;display:grid}.plc-card{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;gap:8px;min-width:0;padding:6px 8px;display:flex}.plc-pb{border:2px solid var(--border);background:var(--secondary);touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.plc-pb:focus-visible,.plc-switch:focus-visible,.plc-control:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.plc-pb__cap{background:#79818d;background:lab(53.5281% -.898093 -7.39828);border-radius:999px;width:22px;height:22px;transition:transform 60ms,box-shadow 60ms;box-shadow:0 2px #00000040;box-shadow:0 2px lab(0% 0 0/.25)}.plc-pb__cap[data-color=green]{background:#03a14a;background:lab(58.0286% -51.707 34.5419)}.plc-pb__cap[data-color=red]{background:#e23439;background:lab(51.4697% 66.4876 41.5698)}.plc-pb__cap[data-color=amber]{background:#ecaa0b;background:lab(74.4754% 17.3326 75.9449)}.plc-pb__cap[data-color=blue]{background:#0086d5;background:lab(53.0136% -8.71643 -51.7968)}.plc-pb.is-pressed .plc-pb__cap{box-shadow:none;transform:translateY(1px)scale(.92)}.plc-switch{border:2px solid var(--border);background:var(--secondary);cursor:pointer;border-radius:6px;flex-shrink:0;width:20px;height:34px;position:relative}.plc-switch__lever{background:var(--muted-foreground);border-radius:3px;height:13px;transition:transform .1s,background .1s;position:absolute;bottom:2px;left:2px;right:2px}.plc-switch.is-on .plc-switch__lever{background:var(--plc-on);transform:translateY(-13px)}.plc-sensor{border:2px solid var(--border);background:var(--secondary);border-radius:4px;flex-shrink:0;width:16px;height:16px;margin:9px}.plc-sensor.is-on{background:var(--plc-on);border-color:var(--plc-on)}.plc-lamp{--lamp:#f4eee0;border:2px solid color-mix(in srgb, var(--lamp) 55%, var(--border));background:color-mix(in srgb, var(--lamp) 12%, var(--card));border-radius:999px;flex-shrink:0;width:26px;height:26px;margin:4px;transition:background 80ms linear,box-shadow 80ms linear}@supports (color:lab(0% 0 0)){.plc-lamp{--lamp:lab(94.2988% .0428557 7.6926)}}.plc-lamp[data-color=green]{--lamp:#2dcb65}@supports (color:lab(0% 0 0)){.plc-lamp[data-color=green]{--lamp:lab(72.209% -57.6345 38.3117)}}.plc-lamp[data-color=red]{--lamp:#fc4447}@supports (color:lab(0% 0 0)){.plc-lamp[data-color=red]{--lamp:lab(58.3383% 69.5703 42.8339)}}.plc-lamp[data-color=amber]{--lamp:#fab72a}@supports (color:lab(0% 0 0)){.plc-lamp[data-color=amber]{--lamp:lab(79.137% 16.9725 73.9414)}}.plc-lamp[data-color=blue]{--lamp:#26a9f1}@supports (color:lab(0% 0 0)){.plc-lamp[data-color=blue]{--lamp:lab(65.0096% -15.512 -46.7948)}}.plc-lamp.is-on{background:radial-gradient(circle at 35% 35%, #ffffffbf, var(--lamp) 50%);border-color:var(--lamp);box-shadow:0 0 14px 2px color-mix(in srgb, var(--lamp) 55%, transparent)}@supports (color:lab(0% 0 0)){.plc-lamp.is-on{background:radial-gradient(circle at 35% 35%, lab(100% 0 0/.75), var(--lamp) 50%)}}.plc-lamp--buzzer{border-radius:6px}.plc-lamp--big{width:34px;height:34px;margin:3px}.plc-coil{flex-shrink:0;width:30px;height:30px;margin:2px}.plc-coil rect{fill:var(--card);stroke:var(--plc-ink);stroke-width:1.8px}.plc-coil text{fill:var(--plc-ink);font-family:var(--font-mono);font-size:12px;font-weight:800}.plc-coil.is-on rect{fill:color-mix(in srgb, var(--plc-on) 25%, var(--card));stroke:var(--plc-on)}.plc-control{border:1px solid var(--border);background:var(--card);color:var(--foreground);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:700}.plc-control.is-on,.plc-control.is-pressed{color:#cc272e;color:lab(45.7636% 63.3818 40.1799);background:#ea3c3f1f;background:lab(53.7962% 66.4339 41.0992/.12);border-color:#ea3c3f99;border-color:lab(53.7962% 66.4339 41.0992/.6)}.plc-process{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.plc-motor{fill:var(--secondary);stroke:var(--plc-ink);stroke-width:2px}.plc-motor.is-on{fill:color-mix(in srgb, var(--plc-on) 22%, var(--card));stroke:var(--plc-on)}.plc-motor.is-fault{fill:#ea3c3f26;fill:lab(53.7962% 66.4339 41.0992/.15);stroke:#ea3c3f;stroke:lab(53.7962% 66.4339 41.0992)}.plc-motor__shaft{fill:var(--plc-ink);opacity:.6}.plc-motor__label{fill:var(--plc-ink);font-family:var(--font-mono);font-size:18px;font-weight:800}.plc-arrow{fill:none;stroke:var(--plc-on);stroke-width:2.2px;stroke-linecap:round}.plc-tank{fill:var(--secondary);stroke:var(--plc-ink);stroke-width:2px}.plc-liquid{fill:var(--plc-liquid)}.plc-pipe{fill:none;stroke:var(--plc-wire);stroke-width:4px;stroke-linejoin:round}.plc-pipe.is-on{stroke:#0093c3;stroke:lab(56.1536% -21.404 -36.044)}.plc-valve{fill:var(--card);stroke:var(--plc-ink);stroke-width:1.6px}.plc-valve.is-on{fill:var(--plc-on)}.plc-mark{stroke:var(--plc-ink);stroke-width:1.4px}.plc-sensor-dot{fill:var(--secondary);stroke:var(--plc-ink);stroke-width:1.2px}.plc-sensor-dot.is-on{fill:var(--plc-on)}.plc-tick,.plc-level{fill:var(--muted-foreground);font-family:var(--font-mono);font-size:9px;font-weight:700}.plc-level{fill:var(--foreground);font-size:11px}.plc-belt{fill:var(--secondary);stroke:var(--plc-ink);stroke-width:1.6px}.plc-belt.is-on{stroke:var(--plc-on)}.plc-part{fill:#db9152;fill:lab(67.0794% 24.2741 45.228);stroke:var(--plc-ink);stroke-width:1px}.plc-beam{stroke:#ea3c3fb3;stroke:lab(53.7962% 66.4339 41.0992/.7);stroke-width:1.5px;stroke-dasharray:3 2}.plc-sensor-head{fill:var(--plc-ink)}.plc-traffic{background:#161b24;background:lab(9.40407% .0471547 -7.33441);border-radius:10px;flex-direction:column;gap:2px;padding:4px;display:flex}.lad-scroll{overscroll-behavior:contain;height:100%;overflow:auto}.lad-program{flex-direction:column;gap:6px;min-width:100%;padding:10px 12px 16px;display:inline-flex}.lad-rung{border:1px solid #0000;border-radius:8px;padding:2px 4px 4px}.lad-rung:hover{border-color:var(--border)}.lad-rung--selected{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 5%, transparent)}.lad-rung__head{color:var(--muted-foreground);align-items:center;gap:8px;padding:2px 4px;font-size:11px;display:flex}.lad-rung__number{font-family:var(--font-mono);color:var(--foreground);font-weight:800}.lad-rung__state{font-family:var(--font-mono);background:var(--secondary);border-radius:4px;padding:0 6px;font-size:10px;font-weight:800}.lad-rung__state--on{background:color-mix(in srgb, var(--plc-on) 20%, transparent);color:var(--plc-on)}.lad-svg{display:block;overflow:visible}.lad-rail{stroke:var(--plc-ink);stroke-width:3px}.lad-wire{stroke:var(--plc-wire);stroke-width:2px;fill:none}.lad-wire--on{stroke:var(--plc-on);stroke-width:3px}.lad-plate{stroke:var(--plc-ink);stroke-width:2.4px;stroke-linecap:round}.lad-plate--on{stroke:var(--plc-on);stroke-width:3px}.lad-letter{fill:var(--plc-ink);font-family:var(--font-mono);font-size:11px;font-weight:800}.lad-address{fill:var(--foreground);font-family:var(--font-mono);font-size:11px;font-weight:700}.lad-name{fill:var(--muted-foreground);font-family:var(--font-sans);font-size:10px;font-weight:600}.lad-hit{fill:#0000;stroke:#0000}.lad-el{cursor:pointer}.lad-el:hover .lad-hit{fill:color-mix(in srgb, var(--primary) 6%, transparent)}.lad-el--selected .lad-hit{fill:color-mix(in srgb, var(--primary) 10%, transparent);stroke:var(--primary);stroke-width:1.5px}.lad-box{fill:var(--card);stroke:var(--plc-ink);stroke-width:1.6px}.lad-box--done{stroke:var(--plc-on);fill:color-mix(in srgb, var(--plc-on) 12%, var(--card))}.lad-boxtitle{fill:var(--foreground);font-family:var(--font-mono);font-size:11px;font-weight:800}.lad-boxline{fill:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.lad-empty{fill:none;stroke:var(--plc-wire);stroke-dasharray:4 3}.lad-add{border:1px dashed var(--border);color:var(--muted-foreground);border-radius:6px;align-self:flex-start;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.lad-add:hover{border-color:var(--primary);color:var(--primary)}@media (pointer:coarse) and (max-width:640px){.plc-pb{width:40px;height:40px}.plc-switch{width:28px;height:40px}.plc-control{min-height:40px;font-size:13px}}@media (prefers-reduced-motion:reduce){.plc-pb__cap,.plc-switch__lever,.plc-lamp{transition:none}}
