/* Lógica cableada y diagramas de tiempos */
.circ{display:block;margin:12px 0;overflow:visible}
.circ .wire{fill:none;stroke:var(--line);stroke-width:3;stroke-linecap:round;transition:stroke .3s}
.circ .wire.on{stroke:var(--on);stroke-dasharray:7 9;animation:flujo .7s linear infinite;filter:drop-shadow(0 0 3px var(--on))}
@keyframes flujo{to{stroke-dashoffset:-16}}
.circ .nd rect{fill:var(--panel);stroke:var(--ink);stroke-width:1.5;transition:fill .3s,stroke .3s}
.circ .gate.on rect{fill:color-mix(in srgb,var(--on) 22%,var(--panel));stroke:var(--on)}
.circ .in rect{fill:var(--bg)}
.circ .in.on rect{fill:var(--pri);stroke:var(--pri)}
.circ text{font:13px 'IBM Plex Mono',monospace;fill:var(--ink);text-anchor:middle}
.circ .vv{fill:var(--muted);font-size:12px}
.circ .in.on text{fill:var(--onpri)}
.circ .out circle{fill:var(--line);stroke:var(--ink);stroke-width:1.5;transition:fill .3s,filter .3s}
.circ .out.on circle{fill:var(--on);filter:drop-shadow(0 0 8px var(--on))}
.circ .out.on text{fill:#06301A}
.circ .gid{font-size:10px;fill:var(--muted);text-anchor:start}
.circ .ft{font-size:10px;fill:var(--bad);text-anchor:start}
.circ .fault rect{stroke:var(--bad);stroke-dasharray:4 3}
.tmg{width:100%;max-width:580px;display:block;margin:10px 0}
.tmg .wv{fill:none;stroke:var(--pri);stroke-width:2.5;stroke-linejoin:round}
.tmg .gr{stroke:var(--line);stroke-dasharray:2 4}
.tmg .tn{fill:var(--ink);font:600 13px 'IBM Plex Mono',monospace}
