/* PLC rack (DEV) */
.rkw{fill:#e5e7eb;font:18px Helvetica,Arial,sans-serif}.rkw.s{font-size:20px;font-weight:bold}.rkw.t{font-size:15px}.rkw.b{font:bold 30px Helvetica,Arial,sans-serif;fill:#f3f4f6}.rkw.b2{font:bold 22px Helvetica,Arial,sans-serif;fill:#fff}
.rkk{fill:#374151;font:bold 24px Helvetica,Arial,sans-serif}.rkk.s{font-size:16px}.rkab{font:bold 26px Georgia,serif;fill:#111}.rkdisp{font:bold 34px monospace;fill:#a3e635}
.rkcap{font:bold 26px Helvetica,Arial,sans-serif;fill:#b45309}
.rkled{fill:#4b5563;stroke:#111;stroke-width:2}.rkled.g{fill:#4ade80;filter:url(#glow2)}.rkled.a{fill:#f59e0b;filter:url(#glow2)}
.rkpt{fill:#6b5a3a;stroke:#3f3f46;stroke-width:2;cursor:help}.rkpt.on{fill:#fbbf24;stroke:#b45309;filter:url(#glow2)}
.rkpt.tbw{stroke:#dc2626;stroke-width:3}.rkk.tbw{fill:#dc2626}.rktbw{fill:#dc2626;font:bold 13px Helvetica,Arial,sans-serif}
#plcrack .rkwrap{background:#fff;margin:0 6px 14px;padding:10px}#plcrack svg{display:block;width:100%;max-width:1300px;height:auto;margin:0 auto}
/* -CB1 GV3P50 widget (TEST) */
.gvbody{fill:#2b2d30;stroke:#111;stroke-width:4}.gvterm{fill:#8f949a;stroke:#4b5563;stroke-width:2}.gvscrew{fill:#d1d5db;stroke:#374151;stroke-width:3}
.gvface{fill:#3b3e42;stroke:#1f2937;stroke-width:2}.gvlogo{font:bold 30px Arial,sans-serif;fill:#3dcd58}.gvlogo.s{font-size:22px;font-weight:normal}
.gvtxt{font:bold 24px Arial,sans-serif;fill:#e5e7eb}.gvtxt.s{font-size:20px;font-weight:normal}.gvsm{font:18px Arial,sans-serif;fill:#e5e7eb}.gvsm.b{font-weight:bold}.gvsm.r{fill:#f87171;font-weight:bold}
.gvhbase{fill:#1f2023;stroke:#6b7280;stroke-width:4}.gvhandle{cursor:pointer;transition:transform .2s}.gvhbar{fill:#111;stroke:#9ca3af;stroke-width:3}.gvhptr{fill:#f8fafc}.gvhandle.trip .gvhptr{fill:#f87171}.gvhandle:hover .gvhbar{stroke:#f59e0b}
.gvdring{fill:#1e293b;stroke:#94a3b8;stroke-width:3}.gvtick{stroke:#e5e7eb;stroke-width:3}.gvtick.fla{stroke:#4ade80;stroke-width:6}.gvtick.burn{stroke:#f87171}
.gvdial{cursor:grab}.gvdblue{fill:#1d4ed8;stroke:#93c5fd;stroke-width:4}.gvdptr{fill:#fff}
.gvread{font:bold 30px Arial,sans-serif;fill:#e5e7eb}.gvread.burn{fill:#f87171}.gvread.low{fill:#fbbf24}
.gvstat{font:bold 26px Arial,sans-serif;fill:#cbd5e1}.gvstat.g{fill:#4ade80}.gvstat.r{fill:#f87171}
.mburnt{display:none;pointer-events:none}.mburnt.on{display:inline}.mbring{fill:#dc262633;stroke:#dc2626;stroke-width:8}.mbtxt{font:bold 40px Arial,sans-serif;fill:#dc2626;paint-order:stroke;stroke:#fff;stroke-width:6}
.gvbtn{display:none;cursor:pointer}.gvbtn.on{display:inline}.gvbtn rect{fill:#dc2626;stroke:#111;stroke-width:3}.gvbtn text{font:bold 30px Arial,sans-serif;fill:#fff;pointer-events:none}.gvbtn:hover rect{fill:#b91c1c}
.smoke{pointer-events:none}.smoke .puff{fill:#6b7280;opacity:0;transform-box:fill-box;transform-origin:center;animation:puffup 3s ease-out forwards}
@keyframes puffup{0%{opacity:var(--o);transform:translate(0,0) scale(.6)}100%{opacity:0;transform:translate(var(--dx),-420px) scale(3)}}
/* SCADA monitor (TEST) */
#plcrack .scwrap{background:#fff;margin:0 6px 14px;padding:10px}#plcrack #vscada{display:block;width:100%;max-width:820px;height:auto;margin:0 auto}
.scbezel{fill:#1b1c1f;stroke:#000;stroke-width:3}.scstand{fill:#2a2b2f;stroke:#111;stroke-width:2}.sclogo{fill:#6b7280;font:14px Arial}.scpwr{fill:#60a5fa}
.scscreen{fill:#c0c4c8}.sctitle{fill:#1e3a8a}.sctitlet{fill:#fff;font:bold 18px Segoe UI,Arial,sans-serif}.scmenu{fill:#dfe2e6;stroke:#9ca3af}.scmenut{fill:#111;font:15px Segoe UI,Arial,sans-serif}
.schead{fill:#111;font:bold 22px Arial,sans-serif}.scpipe{stroke:#6b7280;stroke-width:10}.scbase{fill:#6b7280}
.scmotor{fill:#9ca3af;stroke:#374151;stroke-width:5}.scmotor.on{fill:#22c55e;stroke:#15803d}.scmotor.trip{fill:#ef4444;stroke:#991b1b}.scm{fill:#111;font:bold 48px Arial;pointer-events:none}
.scind{fill:#6b7280;stroke:#374151;stroke-width:2}.scind.on{fill:#16a34a}.scindt{fill:#fff;font:bold 22px Arial}
.sclab{fill:#1f2937;font:18px Arial}.scval{fill:#111;font:bold 18px Arial}.scval.g{fill:#15803d}.scval.r{fill:#dc2626}.scval.a{fill:#b45309}
.scbtn{cursor:pointer}.scbtn rect{stroke:#374151;stroke-width:2}.scbtn text{fill:#fff;font:bold 24px Arial;pointer-events:none}
.scbtn.go rect{fill:#16a34a}.scbtn.st rect{fill:#dc2626}.scbtn:hover rect{stroke:#111;stroke-width:4}.scbtn:active rect{transform:translate(1px,1px)}
.scmsg{fill:#1f2937;font:italic 18px Arial}.eforce{fill:#dc2626;font:bold 22px Arial,sans-serif;pointer-events:none}
.sclab.b{font-weight:bold}.sctile rect{fill:#9ca3af;stroke:#374151;stroke-width:2}.sctile text{font:bold 16px Arial;fill:#111}.sctile.run rect{fill:#22c55e}.sctile.trip rect{fill:#ef4444}
/* Other drives strip (plant.js) */
#plcrack .odstrip{background:#111827;color:#e5e7eb;margin:0 6px 14px;padding:8px 10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;border-radius:6px}
.odnyd{background:#7f1d1d;color:#fecaca;padding:1px 6px;border-radius:4px;font-weight:bold;font-size:11px}
.odd{display:inline-flex;gap:4px;align-items:center;background:#1f2937;padding:3px 6px;border-radius:5px}.odd .n{margin:0 4px}.odd.nm{opacity:.5}
.odd i.l{width:10px;height:10px;border-radius:50%;background:#4b5563;display:inline-block}.odd i.run.on{background:#60a5fa}.odd i.rng.on{background:#22c55e}.odd i.trp.on{background:#ef4444}
.odd button,.odfr{padding:2px 8px;font-size:12px;background:#475569}.odfr{background:#b45309}.odfr.on{background:#dc2626;box-shadow:0 0 6px #f87171}
.minirack{cursor:pointer}.minirack .mrhl{fill:#fde68a22;stroke:#f59e0b;stroke-width:6;pointer-events:none}.minirack:hover use{opacity:.9}
/* S2 mobile fix (16 Oct 2026): keep sheet sections clear of the sticky header (sim.css header) when jumped/scrolled to */
section[id^="s"]{scroll-margin-top:96px}
@media (max-width:900px){section[id^="s"]{scroll-margin-top:200px}}
@media (max-width:600px){section[id^="s"]{scroll-margin-top:275px}}
