:root{--app-bg: #f6f8fa;--surface: #fff;--surface-2: #f0f3f5;--sim: #15212c;--sim-raised: #22313e;--primary: #1967d2;--primary-hover: #1558b0;--amber: #f6c344;--fault: #d93025;--success: #188038;--text: #17212b;--text-2: #667585;--border: #dce3e8;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--control-r: 8px;--panel-r: 12px;--shadow-1: 0 1px 2px rgb(23 33 43 / .08);--shadow-2: 0 12px 32px rgb(23 33 43 / .12)}*{box-sizing:border-box}html,body,#root{margin:0;min-width:320px;height:100%}body{background:var(--app-bg);color:var(--text);font:14px/1.45 Inter,Segoe UI,system-ui,sans-serif}button,select,input{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:2px}.mono{font-family:JetBrains Mono,Consolas,monospace}.status-badge{display:inline-flex;align-items:center;gap:var(--s2);color:var(--text-2);font-size:12px}.status-badge i{width:8px;height:8px;border-radius:50%;background:currentColor}.status-badge[data-tone=success]{color:var(--success)}.status-badge[data-tone=warning]{color:#8a6300}.status-badge[data-tone=fault]{color:var(--fault)}.status-badge[data-tone=info]{color:var(--primary)}.segmented-tabs{display:flex;gap:var(--s1)}.segmented-tabs button{min-height:40px;padding:0 var(--s3);border:0;border-radius:var(--control-r);color:var(--text-2);background:transparent}.segmented-tabs button[aria-selected=true]{color:var(--primary);background:#e8f0fe;font-weight:700}.progress-wrap{display:flex;align-items:center;gap:var(--s3);color:var(--text-2);font-size:12px}.progress-track{width:140px;height:5px;overflow:hidden;border-radius:99px;background:var(--border)}.progress-track i{display:block;height:100%;background:var(--primary)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}.lesson-rail{min-height:52px;display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s5);background:var(--surface-2);border-bottom:1px solid var(--border)}.lesson-rail select{min-height:40px;max-width:210px;border:1px solid var(--border);border-radius:var(--control-r);background:var(--surface);color:var(--text)}.lesson-copy{min-width:0;display:flex;flex-direction:column}.lesson-copy strong,.lesson-copy span{overflow-wrap:anywhere;white-space:normal}.lesson-copy span{color:var(--text-2);font-size:12px}.lesson-count,.machine-status{color:var(--text-2);font-size:11px;white-space:nowrap}.widen-window{display:none;flex:1;place-content:center;text-align:center;padding:var(--s6)}.widen-window span{font-size:40px;color:var(--primary)}@media(max-width:1179px){.lab-content,.lesson-rail{display:none!important}.widen-window{display:grid}}@media(prefers-contrast:more){:root{--border: #7b8792;--text-2: #3f4c58}button,select,input{border-width:2px!important}}@media(forced-colors:active){.status-badge i,.progress-track i{forced-color-adjust:none;background:Highlight}}.app{min-height:100%;display:flex;flex-direction:column}.topbar{height:56px;flex:none;display:flex;align-items:center;gap:var(--s4);padding:0 var(--s5);background:var(--surface);border-bottom:1px solid var(--border)}.brand-button{min-height:40px;border:0;background:transparent;color:var(--text);font-weight:800}.brand-button span{color:var(--text-2);font-weight:500}.spacer{flex:1}.course-hub{width:min(1180px,calc(100vw - 48px));margin:0 auto;padding:64px 0}.hub-hero{max-width:720px;margin-bottom:var(--s6)}.hub-hero h1{margin:var(--s2) 0;font-size:clamp(36px,5vw,64px);line-height:1.02;letter-spacing:-.05em}.eyebrow{color:var(--primary);font:700 11px/1.2 JetBrains Mono,Consolas,monospace;letter-spacing:.12em;text-transform:uppercase}.resume-card,.path-card{border:1px solid var(--border);border-radius:var(--panel-r);background:var(--surface);box-shadow:var(--shadow-1)}.resume-card{width:100%;min-height:144px;display:grid;gap:var(--s2);padding:var(--s5);text-align:left;color:#fff;background:var(--primary);border:0}.resume-card .progress-track{background:#ffffff4d}.resume-card .progress-track i{background:#fff}.resume-card .progress-wrap{color:#fff}.path-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4);margin-top:var(--s4)}.path-card{padding:var(--s5)}.path-card button{min-height:44px;margin-top:var(--s4);padding:0 var(--s4);border:0;border-radius:var(--control-r);color:#fff;background:var(--primary)}@media(max-width:768px){.path-grid{grid-template-columns:1fr}.course-hub{width:min(100% - 32px,620px);padding:40px 0}}.robotlab{flex:1;min-height:0;height:calc(100vh - 56px);max-height:calc(100vh - 56px);display:flex;flex-direction:column}.robot-workspace{flex:1;min-height:0;display:grid;grid-template-columns:clamp(340px,25vw,400px) 1fr;overflow:hidden}.robot-workspace.pendant-closed{grid-template-columns:44px 1fr}.robot-stage{min-width:0;min-height:0;display:grid;grid-template-rows:180px minmax(280px,1fr) 104px;background:var(--surface)}.teach-pendant{overflow:auto;padding:var(--s2);color:#eef3f6;background:var(--sim-raised);border-right:1px solid #111a22;scrollbar-color:#516577 transparent;scrollbar-width:thin}.teach-pendant .devhead{min-height:64px;display:grid;grid-template-columns:10px minmax(0,1fr) auto 64px;align-items:center;gap:var(--s2);padding:var(--s2);border-radius:var(--panel-r);background:#17232d}.teach-pendant .led{width:9px;height:9px;border-radius:50%;background:#42c968;box-shadow:0 0 0 3px #42c96824}.teach-pendant .brand{min-width:0;color:#f5f8fa;font-size:12px;font-weight:800;letter-spacing:.05em}.teach-pendant .brand span{display:block;overflow:hidden;color:#9eb0bf;font:600 8px/1.4 JetBrains Mono,Consolas,monospace;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap}.teach-pendant .pull{min-height:40px;padding:0 var(--s2);border:1px solid #536676;border-radius:var(--control-r);color:#dce5eb;background:transparent;font-size:9px;font-weight:700}.estopwrap{color:#b9c5ce;font:700 8px/1.2 JetBrains Mono,Consolas,monospace;text-align:center}.estopwrap .estop{width:44px;min-height:44px;padding:0;border:6px solid var(--amber);border-radius:50%;background:radial-gradient(circle at 38% 32%,#ff6a5f,var(--fault) 48%,#8d1711);box-shadow:inset 0 -4px 8px #48040073,0 3px #9a7200}.modesel,.subrow,.run,.run2,.dmgrid{display:grid;gap:var(--s2);margin-top:var(--s2)}.modesel{grid-template-columns:1fr 1fr 1.4fr}.subrow{grid-template-columns:repeat(4,1fr)}.run{grid-template-columns:1.4fr 1fr 1fr}.run2{grid-template-columns:1.25fr 1fr}.dmgrid{grid-template-columns:repeat(3,1fr)}.teach-pendant .key{min-width:0;min-height:40px;padding:0 var(--s2);border:0;border-radius:var(--control-r);color:#1a2731;background:#f1f4f6;box-shadow:inset 0 -2px #b7c1c8;font-size:10px;font-weight:750}.teach-pendant .key:hover{background:#fff}.teach-pendant .key.sel,.teach-pendant .key.on,.teach-pendant .key[aria-pressed=true]{box-shadow:inset 0 0 0 2px #74aaf0,inset 0 -2px #b7c1c8}.teach-pendant .key.jog{color:#fff;background:#3978b7;box-shadow:inset 0 -2px #20598e;font-size:12px}.teach-pendant .key.jog:hover{background:#4488ca}.teach-pendant .key.go{color:#fff;background:var(--success);box-shadow:inset 0 -2px #0e5b27}.teach-pendant .key.holdk{color:#392900;background:var(--amber);box-shadow:inset 0 -2px #aa7c00}.teach-pendant .key.sqz{color:#fff;background:var(--fault);box-shadow:inset 0 -2px #8d1711}.teach-pendant .key.dmhold.ledon{color:#fff;background:var(--success)}.teach-pendant .lcd{min-height:88px;margin-top:var(--s2);padding:var(--s2);border:1px solid #9fb6a7;border-radius:var(--panel-r);color:#173524;background:#d9eadf;box-shadow:inset 0 0 0 1px #ffffff8c;font:10px/1.45 JetBrains Mono,Consolas,monospace}.lcd .r{display:flex;justify-content:space-between;gap:var(--s2)}.lcd .big{overflow:hidden;margin:var(--s2) 0;font-size:11px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.lcd .xyz{font-weight:700}.lcd .dim{margin-top:var(--s2);color:#4d6b59;font-size:9px}.teach-pendant .sect{margin-top:var(--s2);color:#a7b6c2;font:700 9px/1 JetBrains Mono,Consolas,monospace;letter-spacing:.1em}.teach-pendant .pad{margin-top:var(--s2);padding:var(--s2);border-radius:var(--panel-r);background:#17232d}.joggrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2)}.dead{display:flex;justify-content:space-between;gap:var(--s2);margin-top:var(--s2);color:#b6c4ce;font:8px/1.35 JetBrains Mono,Consolas,monospace}.dead b{color:#70df8e}.dead b.off{color:#b9c5ce}.specplate{margin-top:var(--s2);padding-top:var(--s2);border-top:1px solid #435462;color:#8fa0ad;font:8px/1.2 JetBrains Mono,Consolas,monospace;text-align:center;letter-spacing:.08em}.pendanttab{width:44px;min-height:100%;padding:var(--s2);border:0;border-right:1px solid #111a22;color:#dce5eb;background:var(--sim-raised);font-size:9px;font-weight:800;letter-spacing:.08em;writing-mode:vertical-rl}.program-panel{min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border-bottom:1px solid var(--border)}.program-panel .edh{min-height:40px;display:flex;align-items:center;gap:var(--s2);padding:0 var(--s2);color:var(--text-2);font:700 10px/1 JetBrains Mono,Consolas,monospace}.program-panel .edh>b{color:var(--text)}.progtabs{display:flex;align-items:center;gap:var(--s2)}.progtabs button{min-height:40px;padding:0 var(--s2);border:0;border-radius:var(--control-r);color:var(--text-2);background:transparent;font-size:10px;font-weight:750}.progtabs button.on{color:var(--primary);background:#e8f0fe}.pointinfo{margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette{min-height:48px;display:flex;align-items:center;gap:var(--s2);overflow-x:auto;padding:0 var(--s2);background:var(--surface-2);scrollbar-width:thin}.palette button,.lineedit button,.lineedit select{flex:none;min-height:40px;padding:0 var(--s2);border:1px solid var(--border);border-radius:var(--control-r);color:var(--text-2);background:var(--surface);font-size:9px}.palette .sp{flex:1}.palette button.demo{color:#fff;background:var(--primary);border-color:var(--primary)}.lineedit{min-height:48px;display:flex;align-items:center;gap:var(--s2);padding:0 var(--s2);border-bottom:1px solid var(--border);color:var(--text-2);font:9px/1 JetBrains Mono,Consolas,monospace}.lineedit select{min-width:110px}.lineedit .syncbtn{margin-left:auto}.program-panel .lines{min-height:0;overflow:auto;padding:0;background:#fbfcfd;font:10px/1.5 JetBrains Mono,Consolas,monospace}.program-panel .ln{width:100%;min-height:40px;display:grid;grid-template-columns:96px 32px 1fr;align-items:center;padding:0 var(--s2);border:0;border-left:3px solid transparent;border-radius:0;color:#435466;background:transparent;text-align:left}.program-panel .line-state{display:flex;gap:var(--s2);color:var(--primary);font-size:8px;font-weight:800}.program-panel .line-number{color:#93a0ac;text-align:right;padding-right:var(--s2)}.program-panel .ln code{font:inherit}.program-panel .ln.sel{border-left-color:var(--primary);background:#e8f0fe}.program-panel .ln.on{color:#0d5b27;background:#e5f4e9;border-left-color:var(--success)}.cell-panel{position:relative;min-height:0;overflow:hidden;color:#eef3f6;background:var(--sim)}.cell-panel .tabs,.viewbtns{position:absolute;z-index:3;top:var(--s2);display:flex;gap:var(--s2)}.cell-panel .tabs{left:var(--s2)}.viewbtns{left:190px}.cell-panel .tab,.viewbtns button{min-height:40px;padding:0 var(--s2);border:1px solid rgb(255 255 255 / .12);border-radius:var(--control-r);color:#e4ebef;background:#091016b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:10px;font-weight:700}.cell-panel .tab.on{color:#17212b;background:#fff;border-color:#fff}.viewbtns button:hover{background:#ffffff29}.threehost,.layout2d{width:100%;height:100%}.layout2d{touch-action:none}.hud,.selinfo,.hint,.alarm{position:absolute;z-index:3;border-radius:var(--panel-r);background:#080e14c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud{top:var(--s2);right:var(--s2);padding:var(--s2);color:#c5d3dc;font:9px/1.5 JetBrains Mono,Consolas,monospace}.selinfo{top:64px;right:var(--s2);max-width:260px;padding:var(--s2);border-left:3px solid var(--amber);color:#d8e1e7;font-size:10px}.hint{left:var(--s2);bottom:var(--s2);padding:var(--s2);color:#bac7d0;font-size:10px}.alarm{top:64px;left:50%;transform:translate(-50%);padding:var(--s2);border:1px solid #ff776d;color:#ffe1de;background:#69140fe6;font:700 10px/1.4 JetBrains Mono,Consolas,monospace}.machine-dock{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:var(--s2);padding:var(--s2);overflow:hidden;background:var(--surface-2);border-top:0;box-shadow:inset 0 1px 0 var(--border)}.machine-dock>div{min-width:0;min-height:0;position:relative}.machine-dock h4{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.machine-dock .joints{height:100%;display:grid;grid-template-columns:repeat(6,1fr);gap:var(--s2)}.machine-dock .joint,.machine-dock .toolbox{min-width:0;min-height:0;padding:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--panel-r);background:var(--surface)}.machine-dock .joint{position:relative;display:grid;grid-template-rows:40px 40px;align-content:center}.machine-dock .joint label{position:absolute;z-index:1;top:0;left:var(--s2);right:var(--s2);display:flex;justify-content:space-between;color:var(--text-2);font:8px/1 JetBrains Mono,Consolas,monospace;pointer-events:none}.machine-dock .joint input{width:100%;min-height:40px;margin:0;accent-color:var(--primary)}.machine-dock .steps{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}.machine-dock .steps button{min-height:40px;padding:0;border:0;border-radius:var(--control-r);color:var(--primary);background:#e8f0fe;font-size:8px;font-weight:700}.machine-dock .toolbox{display:grid;grid-template-rows:40px repeat(3,minmax(0,1fr))}.toolbox .row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s2)}.toolbox .tbtn{min-height:40px;padding:0;border:0;border-radius:var(--control-r);color:#fff;background:var(--primary);font-size:8px;font-weight:700}.toolbox .tbtn.green{background:var(--success)}.toolbox .tbtn.grey{background:#5c6a76}.toolbox .tbtn.warn{color:#392900;background:var(--amber)}.toolbox .read{min-height:0;display:flex;align-items:center;overflow:hidden;margin:0;padding:0 var(--s2);color:var(--text-2);font-size:8px;line-height:1;text-overflow:ellipsis;white-space:nowrap}.toolbox .read b.on{color:var(--success)}.toolbox .read b.warn{color:#8a6300}@media(max-height:820px){.robot-stage{grid-template-rows:180px minmax(280px,1fr) 104px}.teach-pendant{padding:var(--s2)}.teach-pendant .devhead{min-height:56px}.teach-pendant .sect{margin-top:var(--s2)}.teach-pendant .lcd{min-height:80px;padding:var(--s2)}.teach-pendant .pad{padding:var(--s2)}.modesel,.subrow,.run,.run2,.dmgrid,.joggrid{gap:var(--s2)}}@media(min-width:1800px){.robot-workspace{grid-template-columns:clamp(380px,22vw,400px) 1fr}.robot-stage{grid-template-rows:220px minmax(360px,1fr) 104px}.teach-pendant{padding:var(--s4)}.program-panel .lines{font-size:11px}.machine-dock{grid-template-columns:minmax(0,1fr) 360px;padding:var(--s2) var(--s4)}.hud,.selinfo,.hint{font-size:11px}}.plclab{flex:1;min-height:0;height:calc(100vh - 56px);max-height:calc(100vh - 56px);display:flex;flex-direction:column}.plc-workspace{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(560px,1fr) 340px;grid-template-rows:minmax(0,1fr) 82px;overflow:hidden;background:var(--app-bg)}.device-panel,.ladder-panel,.block-panel{min-width:0;min-height:0;overflow:auto;padding:var(--s4);background:var(--surface);border-right:1px solid var(--border);scrollbar-color:#b4c0c9 transparent;scrollbar-width:thin}.ladder-panel{background:#fbfcfd}.block-panel{border-right:0}.plc-panel-heading{position:sticky;z-index:2;top:calc(var(--s4) * -1);min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin:calc(var(--s4) * -1) calc(var(--s4) * -1) var(--s4);padding:0 var(--s4);border-bottom:1px solid var(--border);background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ladder-panel .plc-panel-heading{background:#fbfcfdf5}.plc-panel-heading h2{margin:0;font-size:15px;line-height:1;letter-spacing:-.01em}.plc-panel-index,.plc-panel-intro,.device-panel h3,.block-panel h3{color:var(--text-2);font:700 10px/1.3 JetBrains Mono,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase}.device-panel h3,.block-panel h3{margin:var(--s4) 0 var(--s2)}.plc-panel-intro{margin:0 0 var(--s3);letter-spacing:.04em}.devrow{min-height:56px;display:grid;grid-template-columns:minmax(86px,1fr) minmax(72px,auto) minmax(78px,auto);align-items:center;gap:var(--s2);padding:var(--s2) 0;border-bottom:1px solid var(--border);color:var(--text);font-size:11px}.devrow>span:first-child{font-weight:700}.device-panel .key,.block-panel .key,.ladder-panel .key,.rung button,.rung select{min-height:40px;padding:0 var(--s2);border:1px solid var(--border);border-radius:var(--control-r);color:var(--text);background:var(--surface);font-size:10px;font-weight:750}.device-panel .key:hover,.block-panel .key:hover,.ladder-panel .key:hover,.rung button:hover{border-color:#a8b5c0;background:var(--surface-2)}.device-panel .key.sel,.device-panel .key[aria-pressed=true],.rung button[aria-pressed=true]{border-color:var(--primary);color:var(--primary);background:#e8f0fe;box-shadow:inset 0 0 0 1px var(--primary)}.device-panel .key.go,.block-panel .key.go{border-color:var(--primary);color:#fff;background:var(--primary)}.device-panel .key.go.is-energized,.block-panel .key.go.is-energized{border-color:var(--success);background:var(--success)}.device-panel .key.caution{border-color:var(--amber);color:#392900;background:var(--amber)}.device-panel .key.sqz,.device-panel .key.sqz[aria-pressed=true]{border-color:var(--fault);color:#fff;background:var(--fault);box-shadow:none}.hoas{grid-column:2 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}.bitread{color:var(--text-2);font:9px/1.35 JetBrains Mono,Consolas,monospace}.plamp-status{display:inline-flex;align-items:center;gap:var(--s2);color:var(--text-2);font:700 9px/1 JetBrains Mono,Consolas,monospace;white-space:nowrap}.plamp{width:10px;height:10px;flex:none;border:1px solid rgb(0 0 0 / .22);border-radius:50%}.plamp.is-energized{border-color:#ffffffb3}.motorbox{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--panel-r);background:var(--surface-2)}.motor{position:relative;width:56px;height:56px;border:6px solid #80909d;border-radius:50%;background:#d8dee3;box-shadow:inset 0 0 0 7px #eef1f3}.motor.spin{border-color:var(--success);animation:plc-motor-spin 1s linear infinite}.motor .spoke{position:absolute;top:23px;left:5px;width:34px;height:3px;border-radius:2px;background:#52616d}.motor .s2{transform:rotate(60deg)}.motor .s3{transform:rotate(120deg)}@keyframes plc-motor-spin{to{transform:rotate(360deg)}}.rung{min-height:74px;padding:var(--s3);margin-bottom:var(--s3);border:1px solid var(--border);border-radius:var(--control-r);background:var(--surface);box-shadow:var(--shadow-1)}.rung:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px #1967d21f}.runghead{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2);color:var(--text-2);font:700 10px/1 JetBrains Mono,Consolas,monospace}.runghead button{min-height:40px;color:var(--text-2);background:transparent}.rail{min-width:max-content;display:flex;align-items:center;gap:var(--s2)}.bus{align-self:stretch;display:grid;place-items:center;color:#536270;font:800 24px/1 JetBrains Mono,Consolas,monospace}.contact{min-height:40px;display:inline-grid;grid-template-columns:minmax(138px,1fr) 44px 40px;align-items:center;gap:var(--s1);padding:var(--s1);border:1px solid var(--border);border-radius:var(--control-r);background:var(--surface-2)}.contact select,.contact button{min-width:0;min-height:40px}.contact button:last-child{color:var(--text-2);font-size:16px}.addc{min-width:88px;color:var(--primary)!important;border-color:#b9d0ef!important;background:#eef5ff!important}.orlbl{color:#8a6300;font:700 9px/1 JetBrains Mono,Consolas,monospace;text-transform:uppercase}.coilwrap{min-height:40px;display:inline-flex;align-items:center;gap:var(--s2);color:#805c00;font-family:JetBrains Mono,Consolas,monospace;white-space:nowrap}.coilwrap select{min-width:150px}.addrun{width:100%;color:#fff!important;border-color:var(--primary)!important;background:var(--primary)!important}.note{color:var(--text-2);font-size:11px;line-height:1.55}.doorframe{position:relative;height:220px;overflow:hidden;border:8px solid #455562;border-bottom-width:12px;border-radius:var(--control-r) var(--control-r) 2px 2px;background:linear-gradient(90deg,transparent 49%,rgb(255 255 255 / .08) 50%,transparent 51%),var(--sim)}.doorleaf{position:absolute;top:0;right:0;left:0;min-height:0;display:grid;place-items:center;overflow:hidden;border-bottom:3px solid #27333d;color:#40505c;background:repeating-linear-gradient(0deg,#d7dde1 0 29px,#bcc6cc 30px 32px);font:800 13px/1 JetBrains Mono,Consolas,monospace;letter-spacing:.18em}.doorpos{position:absolute;right:var(--s2);bottom:var(--s2);left:var(--s2);padding:var(--s2);border-radius:var(--control-r);color:#e4edf2;background:#080e14d6;font:700 10px/1 JetBrains Mono,Consolas,monospace;text-align:center}.blockbits{display:grid;gap:var(--s2);margin-top:var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--panel-r);background:var(--surface-2);color:var(--text-2);font:9px/1.55 JetBrains Mono,Consolas,monospace}.bbhead{padding-top:var(--s2);border-top:1px solid var(--border);color:var(--text);font-weight:800;letter-spacing:.06em}.bbhead:first-child{padding-top:0;border-top:0}.plc-watchbar{grid-column:1 / -1;min-width:0;display:flex;align-items:center;gap:var(--s5);padding:var(--s3) var(--s4);overflow-x:auto;background:var(--sim);color:#dce8ef;scrollbar-color:#526675 transparent;scrollbar-width:thin}.watch-item{min-width:max-content;display:grid;gap:var(--s1)}.watch-item span{color:#8fa5b5;font:700 9px/1 JetBrains Mono,Consolas,monospace;letter-spacing:.1em}.watch-item strong{color:#e7eef2;font:700 10px/1.25 JetBrains Mono,Consolas,monospace}.watch-bits{padding-left:var(--s4);border-left:1px solid #41515f}.watch-item .state-ok{color:var(--success)}.watch-item .state-caution{color:var(--amber)}.watch-item .state-fault{color:var(--fault)}@media(prefers-reduced-motion:reduce){.motor.spin{animation:none}}@media(min-width:1800px){.plc-workspace{grid-template-columns:340px minmax(680px,1fr) 380px}.device-panel,.ladder-panel,.block-panel{padding:var(--s5)}.plc-panel-heading{top:calc(var(--s5) * -1);margin:calc(var(--s5) * -1) calc(var(--s5) * -1) var(--s4);padding:0 var(--s5)}}
