@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap";.sim-spin{animation:sim-spin 1.6s linear infinite;transform-box:fill-box;transform-origin:center}@keyframes sim-spin{to{transform:rotate(360deg)}}.sim-belt-dash{animation:sim-belt 1.2s linear infinite}@keyframes sim-belt{to{stroke-dashoffset:-22}}.sim-bottle{animation:sim-ride 7.8s linear infinite}@keyframes sim-ride{0%{transform:translate(310px)}to{transform:translate(740px)}}.sim-drip{animation:sim-drip 1.1s ease-in infinite}@keyframes sim-drip{0%{opacity:0;transform:translateY(0)}25%{opacity:1}to{opacity:0;transform:translateY(14px)}}.sim-beam{animation:sim-beam 1.4s linear infinite}@keyframes sim-beam{to{stroke-dashoffset:-16}}.sim-press{animation:sim-press 2.4s ease-in-out infinite}@keyframes sim-press{0%,55%,to{transform:translateY(0)}70%,80%{transform:translateY(13px)}}.sim-liquid{transition:y .8s ease,height .8s ease}.sim-flash{animation:sim-flash .5s steps(2) infinite}@keyframes sim-flash{50%{opacity:.25}}.sim-flow{stroke-width:2;opacity:0;transition:opacity .18s ease;pointer-events:none}.sim-flow.rel-on{opacity:.95}.sim-flow-liquid{stroke:var(--blu);stroke-dasharray:6 6;animation:sim-belt 1s linear infinite}.sim-flow-item{stroke:var(--line2);stroke-width:2.5}.sim-flow-signal{stroke:var(--run);stroke-width:1.3;stroke-dasharray:3 5}.sim-piston{animation:sim-piston 2.6s ease-in-out infinite}@keyframes sim-piston{0%,55%,to{transform:translate(0)}70%,82%{transform:translate(12px)}}.sim-piston-v{animation:sim-piston-v 2.6s ease-in-out infinite}@keyframes sim-piston-v{0%,55%,to{transform:translateY(0)}70%,82%{transform:translateY(12px)}}.sim-push-arrow{animation:sim-push 1.6s ease-in-out infinite}@keyframes sim-push{0%,45%,to{transform:translateY(0);opacity:.55}60%,75%{transform:translateY(7px);opacity:1}}.sim-sweep{animation:sim-sweep 3.4s ease-in-out infinite;transform-box:fill-box}@keyframes sim-sweep{0%,to{transform:rotate(-12deg)}50%{transform:rotate(14deg)}}.sim-arm{animation:sim-sweep 3.6s ease-in-out infinite;transform-box:fill-box;transform-origin:42% 92%}.sim-grip{animation:sim-grip 1.8s ease-in-out infinite;transform-box:fill-box;transform-origin:0% 50%}@keyframes sim-grip{0%,to{transform:scale(1)}50%{transform:scale(.82)}}.sim-held{animation:sim-held 3.6s ease-in-out infinite}@keyframes sim-held{0%,22%{opacity:0}30%,68%{opacity:1}76%,to{opacity:0}}.sim-product{transition:transform .32s linear,opacity .3s linear}.sim-product.jump{transition:none}.sim-heat{animation:sim-heat 1.6s ease-out infinite}@keyframes sim-heat{0%{opacity:0;transform:translateY(4px)}35%{opacity:.9}to{opacity:0;transform:translateY(-6px)}}.sim-spin-fast{animation:sim-spin .8s linear infinite;transform-box:fill-box;transform-origin:center}.sim-laser{animation:sim-flash .8s steps(2) infinite}.sim-gate{animation:sim-gate 3s ease-in-out infinite;transform-box:fill-box}@keyframes sim-gate{0%,60%,to{transform:rotate(0)}72%,86%{transform:rotate(-34deg)}}.sim-logic.firing rect{stroke:var(--warn);stroke-width:2;filter:drop-shadow(0 0 6px rgba(255,176,32,.55))}.sim-logic.firing .sim-wire{opacity:1;stroke-width:2}.sim-edit{cursor:pointer}.sim-edit:hover rect{fill:var(--blu)}.sim-edit:hover text{fill:#fff}.sim-control{cursor:pointer}.sim-control:hover circle:first-of-type,.sim-control:hover rect:first-of-type{filter:brightness(1.25)}.sim-locked{cursor:not-allowed}.sim-bg{cursor:grab}.sim-bg:active{cursor:grabbing}.sim-node{cursor:grab}.sim-node:active{cursor:grabbing}.sim-node text{user-select:none;-webkit-user-select:none}.sim-wire{fill:none;stroke-width:1.4;opacity:0;transition:opacity .15s ease}.sim-wire-in{stroke:var(--run);stroke-dasharray:4 4}.sim-wire-out{stroke:var(--warn)}.sim-logic:hover .sim-wire{opacity:1;stroke-width:2}.sim-logic:hover rect{stroke:var(--blu)}.sim-logic.spotlight .sim-wire{opacity:1;stroke-width:2}.sim-logic.spotlight rect{stroke:var(--blu)}.sim-logic rect{transition:stroke .15s ease}.sim-stopped .sim-bottle,.ch-run-off{opacity:.55}.ch-run-off *{animation-play-state:paused!important}.ch-run-off .sim-heat{opacity:0}.ch-open-off{opacity:.7}.ch-open-off .sim-gate{animation-play-state:paused}.ch-open-off .sim-drip{display:none}.ch-extend-off .sim-piston,.ch-extend-off .sim-piston-v,.ch-extend-off .sim-push-arrow{animation-play-state:paused}.ch-slow-on .sim-belt-dash{animation-duration:3.6s!important}.ch-reverse-on .sim-spin,.ch-reverse-on .sim-spin-fast{animation-direction:reverse}.ch-alarm-off .sim-buzz{opacity:.15;animation:none}.ch-press-on .sim-press{animation-duration:.5s!important}.ch-scan-on .sim-laser{animation-duration:.2s!important;stroke:var(--warn)}.sim-idle .sim-piston-v,.sim-idle .sim-push-arrow,.sim-stopped .sim-belt-dash,.sim-stopped .sim-spin,.sim-stopped .sim-press,.sim-stopped .sim-drip,.sim-stopped .sim-piston,.sim-stopped .sim-piston-v,.sim-stopped .sim-push-arrow,.sim-stopped .sim-sweep,.sim-stopped .sim-arm,.sim-stopped .sim-grip,.sim-stopped .sim-held,.sim-stopped .sim-heat,.sim-stopped .sim-spin-fast,.sim-stopped .sim-gate{animation-play-state:paused}@media (prefers-reduced-motion: reduce){.sim-spin,.sim-belt-dash,.sim-bottle,.sim-drip,.sim-beam,.sim-press,.sim-flash,.sim-piston,.sim-piston-v,.sim-push-arrow,.sim-sweep,.sim-heat,.sim-spin-fast,.sim-laser,.sim-gate,.sim-held,.sim-flow-liquid{animation:none}}.lad{display:block}.lad-rail{stroke:var(--mut);stroke-width:2.6;stroke-linecap:round}.lad-wire{stroke:var(--line2);stroke-width:1.6}.lad-el{stroke:var(--blu);stroke-width:2;stroke-linecap:round}.lad-block{fill:var(--panel2);stroke:var(--blu);stroke-width:1.4}.lad-blockname{fill:var(--blu);font-size:10.5px;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.lad-sym{fill:var(--tx);font-size:10.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.lad-addr{fill:var(--dim);font-size:9.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.lad-mark{fill:var(--warn);font-size:10px;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}:root{--bg:#0E1116;--panel:#151B23;--panel2:#1B222C;--line:#28303B;--line2:#39424F;--tx:#E8EDF2;--mut:#8B96A5;--dim:#5C6775;--run:#3DDC97;--run-bg:rgba(61,220,151,.12);--warn:#FFB020;--warn-bg:rgba(255,176,32,.12);--stop:#FF5C5C;--stop-bg:rgba(255,92,92,.12);--blu:#4F9CF9;--blu-bg:rgba(79,156,249,.13);--r:10px}*{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{background:var(--bg);color:var(--tx);font-family:IBM Plex Sans Thai,system-ui,sans-serif;line-height:1.55}.mono{font-family:IBM Plex Mono,monospace}button{font-family:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--blu);outline-offset:2px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px}.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);font-size:.9rem;font-weight:600;flex-wrap:wrap}.tag{font-size:.7rem;font-weight:500;color:var(--mut);background:var(--panel2);padding:3px 9px;border-radius:20px}.btn{background:var(--panel2);border:1px solid var(--line2);color:var(--tx);border-radius:8px;padding:6px 12px;font-size:.82rem}.btn:hover{border-color:var(--blu)}.btn.primary{background:var(--blu);border-color:var(--blu);color:#fff;font-weight:600}.btn.primary:disabled{opacity:.5;cursor:wait}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.run{background:var(--run)}.dot.warn{background:var(--warn)}.dot.stop{background:var(--stop)}.dot.off{background:var(--dim)}.ch{padding:1px 8px;border-radius:7px;font-weight:600;font-size:.83rem;white-space:nowrap}.ch.dev{background:var(--run-bg);color:var(--run)}.ch.val{background:var(--blu-bg);color:var(--blu)}.ch.act{background:var(--stop-bg);color:var(--stop)}
