*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-3{bottom:.75rem}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-12{grid-column:span 12/span 12}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-5{margin-bottom:1.25rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\/3{height:33.3333%}.h-2{height:.5rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.max-h-32{max-height:8rem}.max-h-\[520px\]{max-height:520px}.min-h-0{min-height:0}.min-h-64{min-height:16rem}.w-12{width:3rem}.w-2\/3{width:66.6667%}.w-20{width:5rem}.w-4{width:1rem}.w-80{width:20rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-32{min-width:8rem}.min-w-40{min-width:10rem}.min-w-48{min-width:12rem}.min-w-64{min-width:16rem}.min-w-\[2px\]{min-width:2px}.max-w-\[260px\]{max-width:260px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-px{gap:1px}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.\!border-amber-600{--tw-border-opacity:1!important;border-color:rgb(217 119 6/var(--tw-border-opacity,1))!important}.\!border-red-600{--tw-border-opacity:1!important;border-color:rgb(220 38 38/var(--tw-border-opacity,1))!important}.border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity,1))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity,1))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity,1))}.border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity,1))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity,1))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.border-red-900\/50{border-color:#7f1d1d80}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity,1))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity,1))}.border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity,1))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity,1))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity,1))}.border-transparent{border-color:#0000}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.bg-amber-950\/35{background-color:#451a0359}.bg-amber-950\/80{background-color:#451a03cc}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity,1))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity,1))}.bg-emerald-950\/30{background-color:#022c224d}.bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.bg-red-950\/40{background-color:#450a0a66}.bg-red-950\/80{background-color:#450a0acc}.bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity,1))}.bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity,1))}.bg-sky-950\/40{background-color:#082f4966}.bg-sky-950\/60{background-color:#082f4999}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-800\/50{background-color:#1e293b80}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.bg-slate-950\/50{background-color:#02061780}.bg-slate-950\/70{background-color:#020617b3}.bg-slate-950\/80{background-color:#020617cc}.bg-transparent{background-color:#0000}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/20{background-color:#fff3}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity,1))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity,1))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity,1))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-sky-500\/20{--tw-ring-color:#0ea5e933}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}:root{--pilab-bg:#020617;--pilab-panel:#0f172a;--pilab-panel2:#111827;--pilab-border:#1e293b;--pilab-border2:#334155;--pilab-text:#cbd5e1;--pilab-muted:#64748b;--pilab-accent:#38bdf8}html,body,#app{background:var(--pilab-bg);min-height:100%;color:var(--pilab-text)}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}[v-cloak]{display:none}.lcd{letter-spacing:.04em;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.panel{background:linear-gradient(#1e293b94,#0f172ae0);border:1px solid #1e293b;border-top-color:#334155;box-shadow:0 18px 40px #00000047}.hard-panel{background:#020617;border:1px solid #1e293b;border-top:2px solid #334155;box-shadow:inset 0 1px #94a3b814}.led{background:#334155;border-radius:999px;width:.72rem;height:.72rem;box-shadow:inset 0 0 4px #000000b3}.led-on{background:#10b981;box-shadow:0 0 16px #10b981bf,inset 0 0 3px #fff6}.led-warn{background:#f59e0b;box-shadow:0 0 16px #f59e0ba6,inset 0 0 3px #fff6}.led-bad{background:#ef4444;box-shadow:0 0 16px #ef4444a6,inset 0 0 3px #fff6}.scan-grid{background-image:linear-gradient(#33415538 1px,#0000 1px),linear-gradient(90deg,#33415538 1px,#0000 1px);background-size:18px 18px}.faceplate{background:linear-gradient(#111827,#020617 55%,#0f172a);border:1px solid #334155;border-top:3px solid #475569;box-shadow:inset 0 1px #ffffff0f,0 18px 40px #00000059}.rail{background:repeating-linear-gradient(90deg,#94a3b81f 0 10px,#0000 10px 20px)}.screw{background:radial-gradient(circle at 35% 35%,#64748b,#0f172a);border:1px solid #475569;border-radius:999px;width:14px;height:14px;box-shadow:inset 0 0 3px #000c}.canvas-grid{background-color:#0f172a;background-image:radial-gradient(circle,#334155 1px,#0000 1px);background-size:20px 20px}.font-lcd{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.resizer{cursor:nwse-resize;z-index:100;background:#38bdf8;border-radius:4px 0 0;width:15px;height:15px;position:absolute;bottom:0;right:0}.widget-box{touch-action:none;transition:box-shadow .2s,border-color .2s,opacity .2s}input[type=range]{appearance:none;background:#334155;border-radius:2px;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#38bdf8;border-radius:50%;width:12px;height:12px}.alarm-pulse{animation:.9s infinite alternate alarmPulse}@keyframes alarmPulse{0%{box-shadow:0 0 #ef44441a}to{box-shadow:0 0 24px #ef44448c}}:root{--app-topbar-height:66px;--app-edge:24px}.app-shell{color:#cbd5e1;background:#020617;min-height:100vh}.app-topbar{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020617f7;border-bottom:1px solid #1e293b;position:sticky;top:0}.app-topbar-inner{width:100%;max-width:none;padding:8px var(--app-edge);min-height:var(--app-topbar-height);justify-content:space-between;align-items:center;gap:18px;margin:0;display:flex}.app-brand-block{flex-direction:column;gap:4px;min-width:0;display:flex}.app-brand{flex-direction:column;line-height:1.05;display:flex}.app-brand-title{color:#e2e8f0;letter-spacing:.02em;font-size:15px;font-weight:800}.app-brand-sub{color:#64748b;margin-top:3px;font-size:11px}.app-nav{white-space:nowrap;align-items:center;gap:18px;font-size:12px;display:flex}.app-nav a{color:#94a3b8;letter-spacing:.04em;text-transform:uppercase;font-weight:700;text-decoration:none}.app-nav a:hover{color:#e2e8f0}.app-nav a.router-link-active{color:#38bdf8}.app-content{min-height:calc(100vh - var(--app-topbar-height))}.app-frame{width:100%;max-width:none;padding-left:var(--app-edge);padding-right:var(--app-edge);margin:0}.app-page{width:100%;max-width:none;padding:18px var(--app-edge) 24px var(--app-edge);margin:0}.script-frame-page{height:calc(100vh - var(--app-topbar-height));background:#020617;flex-direction:column;display:flex}.frame-note{background:#0f172a;border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;gap:16px;padding-top:10px;padding-bottom:10px;display:flex}.open-link{text-transform:uppercase;color:#38bdf8;white-space:nowrap;font-size:12px;font-weight:800;text-decoration:none}.script-frame-page iframe{background:#020617;border:0;flex:1;width:100%}.header-status{white-space:nowrap;color:#64748b;text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:10px;display:flex;overflow:hidden}.hs-item{color:#94a3b8;align-items:center;gap:5px;font-weight:800;display:inline-flex}.hs-item b{font-weight:900}.hs-dot{background:#475569;border-radius:999px;width:6px;height:6px;box-shadow:0 0 0 2px #ffffff08}.hs-item.ok,.ok-text{color:#86efac}.hs-item.ok .hs-dot{background:#10b981;box-shadow:0 0 10px #10b98185}.hs-item.run{color:#7dd3fc}.hs-item.stop,.hs-item.warn,.warn-text{color:#fcd34d}.hs-item.bad,.bad-text{color:#fca5a5}.hs-item.bad .hs-dot{background:#ef4444;box-shadow:0 0 10px #ef444480}.hs-sep{color:#334155;font-weight:800}@media (width<=980px){:root{--app-topbar-height:72px;--app-edge:14px}.app-topbar-inner{flex-direction:column;align-items:flex-start;gap:8px}.app-nav{width:100%;padding-bottom:2px;overflow-x:auto}}@media (width<=760px){.hide-lg{display:none}}@media (width<=640px){.hide-md{display:none}}@media (width<=520px){.hide-sm{display:none}}@media (width<=420px){.hide-xs{display:none}}.hmi-toolbar{height:54px;padding:0 var(--app-edge);-moz-column-gap:18px;box-shadow:none;background:#0b1220;border-bottom:1px solid #1e293b;flex-shrink:0;grid-template-columns:240px minmax(360px,1fr) 330px;align-items:center;column-gap:18px;display:grid}.hmi-toolbar-left,.hmi-toolbar-actions,.hmi-widget-links{align-items:center;min-width:0;display:flex}.hmi-toolbar-left{justify-content:flex-start;gap:12px}.hmi-widget-links{scrollbar-width:thin;justify-content:center;gap:18px;padding:0 8px;overflow-x:auto}.hmi-toolbar-actions{justify-content:flex-end;gap:16px}.hmi-mode-switch{background:#020617;border:1px solid #334155;border-radius:7px;align-items:center;gap:2px;padding:3px;display:inline-flex;box-shadow:inset 0 1px #ffffff0a}.hmi-mode-button{appearance:none;color:#64748b;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-radius:5px;min-width:58px;padding:7px 12px;font-size:11px;font-weight:900}.hmi-mode-button:hover{color:#dbeafe;background:#0f172a}.hmi-mode-button.active{color:#fff;background:#0284c7;box-shadow:0 0 18px #0ea5e938}.hmi-mode-button.active.live{color:#ecfdf5;background:#059669;box-shadow:0 0 18px #10b98133}.hmi-text-link{appearance:none;color:#9fb2cc;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:4px 0;font-size:10px;font-weight:900;line-height:1}.hmi-widget-links .hmi-text-link{color:#a9bad2}.hmi-widget-links .hmi-text-link:hover{color:#e2e8f0}.hmi-toolbar-actions .hmi-text-link{color:#38bdf8}.hmi-toolbar-actions .hmi-text-link:hover{color:#7dd3fc}.hmi-text-link:hover{text-underline-offset:4px;text-decoration:underline}.hmi-text-link.muted{color:#8ea2bd}.hmi-live-note{text-align:center;color:#64748b;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:800}.hmi-alarm-inline{color:#fca5a5;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:900}@media (width<=1180px){.hmi-toolbar{-moz-column-gap:12px;grid-template-columns:auto 1fr auto;column-gap:12px}.hmi-widget-links{justify-content:flex-start;gap:12px}.hmi-toolbar-actions{gap:12px}}@media (width<=900px){.hmi-toolbar{height:auto;padding:8px var(--app-edge);grid-template-columns:1fr;align-items:stretch;row-gap:8px}.hmi-toolbar-left,.hmi-toolbar-actions,.hmi-widget-links{justify-content:flex-start}.hmi-live-note{text-align:left}}.script-page{height:calc(100vh - var(--app-topbar-height));background:#020617;flex-direction:column;gap:14px;display:flex;overflow:hidden}.script-toolbar{flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.script-toolbar-left,.script-toolbar-right{align-items:center;gap:12px;min-width:0;display:flex}.script-toolbar-left{flex:1;overflow:hidden}.script-title{color:#e2e8f0;letter-spacing:.02em;white-space:nowrap;font-size:14px;font-weight:900}.script-subtitle{color:#64748b;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.script-status-chip{color:#94a3b8;letter-spacing:.06em;background:#020617;border:1px solid #334155;border-radius:999px;align-items:center;gap:7px;padding:6px 10px;font-size:10px;font-weight:900;display:inline-flex}.script-status-chip.ok{color:#86efac;background:#14532d2e;border-color:#14532d}.script-status-chip.warn{color:#fcd34d;background:#78350f38;border-color:#854d0e}.script-status-chip.bad{color:#fca5a5;background:#7f1d1d38;border-color:#7f1d1d}.script-meta{color:#64748b;letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:900}.script-name-label{color:#64748b;text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:8px;font-size:10px;font-weight:900;display:flex}.script-name-input{color:#cbd5e1;background:#020617;border:1px solid #334155;border-radius:7px;outline:none;width:110px;padding:7px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px}.script-name-input:focus{border-color:#38bdf8;box-shadow:0 0 0 2px #38bdf824}.script-action{appearance:none;color:#cbd5e1;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:#0f172a;border:1px solid #334155;border-radius:7px;padding:8px 12px;font-size:11px;font-weight:900}.script-action:hover{color:#e0f2fe;border-color:#38bdf8}.script-action:disabled{opacity:.45;cursor:not-allowed}.script-action.primary{color:#e0f2fe;background:#075985;border-color:#0284c7}.script-action.primary:hover{background:#0369a1}.script-action.muted{color:#94a3b8;background:#020617}.script-workspace{flex:1;grid-template-columns:minmax(0,1fr) 360px;gap:14px;min-height:0;display:grid}.script-editor-card{min-width:0;min-height:0;padding:0;display:grid;overflow:hidden}.script-editor-host{background:#020617;width:100%;height:100%;min-height:0;display:grid}.script-editor-host>*{min-height:0}.script-side{flex-direction:column;gap:14px;min-height:0;display:flex;overflow:hidden}.script-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.script-panel-head{color:#94a3b8;letter-spacing:.08em;text-transform:uppercase;background:#0206175c;border-bottom:1px solid #1e293b;flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;font-size:10px;font-weight:900;display:flex}.script-count{font-size:10px}.script-diagnostics{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow:auto}.script-library-panel{flex:none;max-height:260px}.script-library-actions{align-items:center;gap:10px;display:flex}.script-library-actions .script-clear-log:disabled{opacity:.45;cursor:not-allowed;color:#64748b}.script-library-body{flex-direction:column;gap:8px;min-height:0;padding:10px;display:flex;overflow:auto}.script-file-item{appearance:none;text-align:left;color:#cbd5e1;cursor:pointer;background:#020617;border:1px solid #334155;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:9px;display:flex}.script-file-item:hover{border-color:#38bdf8}.script-file-item.selected{background:#0ea5e91f;border-color:#0ea5e9}.script-file-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:800;overflow:hidden}.script-file-meta{color:#64748b;letter-spacing:.04em;flex-shrink:0;font-size:10px;font-weight:900}.script-diag-item{appearance:none;text-align:left;color:#cbd5e1;cursor:pointer;background:#020617;border:1px solid #334155;border-radius:8px;padding:9px}.script-diag-item:hover{border-color:#38bdf8}.script-diag-item.err{background:#7f1d1d29;border-color:#ef444473}.script-diag-item.warn{background:#78350f24;border-color:#f59e0b66}.script-diag-loc{letter-spacing:.06em;color:#94a3b8;margin-bottom:4px;font-size:10px;font-weight:900}.script-diag-item.err .script-diag-loc{color:#fca5a5}.script-diag-item.warn .script-diag-loc{color:#fcd34d}.script-diag-msg{color:#cbd5e1;white-space:pre-wrap;font-size:12px;line-height:1.35}.script-log{background:#0206175c;height:230px;min-height:0;padding:10px;font-size:11px;line-height:1.45;overflow:auto}.script-log-line{color:#cbd5e1;margin-bottom:3px}.script-log-line span{color:#475569}.script-log-line.ok{color:#86efac}.script-log-line.err{color:#fca5a5}.script-log-line.warn{color:#fcd34d}.script-log-line.dim{color:#94a3b8}.script-empty{color:#64748b;padding:8px;font-size:12px;font-style:italic}.script-clear-log{appearance:none;color:#38bdf8;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;font-size:10px;font-weight:900}.script-help{color:#94a3b8;padding:12px;font-size:12px;line-height:1.7}.script-help b{color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}@media (width<=1180px){.script-workspace{grid-template-columns:1fr;overflow:auto}.script-editor-card{min-height:620px}.script-side{overflow:visible}}@media (width<=780px){.script-toolbar{flex-direction:column;align-items:stretch}.script-toolbar-left,.script-toolbar-right{flex-wrap:wrap}}.app-settings-link{background:#020617;border:1px solid #1e293b;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;margin-left:2px;font-size:16px;line-height:1;display:inline-flex}.app-settings-link:hover{background:#0f172a;border-color:#38bdf8;text-decoration:none}.app-settings-link.router-link-active{color:#7dd3fc;border-color:#0284c7;box-shadow:0 0 18px #0ea5e924}.settings-page{min-height:calc(100vh - var(--app-topbar-height))}.settings-hero{justify-content:space-between;align-items:center;gap:18px;padding:12px 16px;display:flex}.settings-hero-main{align-items:center;gap:18px;min-width:0;display:flex}.settings-kicker{color:#64748b;letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:900}.settings-title{color:#f1f5f9;letter-spacing:-.025em;margin-top:2px;font-size:22px;font-weight:900;line-height:1}.settings-hero-text{color:#94a3b8;max-width:760px;margin:0;font-size:12px;line-height:1.45}.settings-hero-status{letter-spacing:.06em;white-space:nowrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:10px;font-size:11px;font-weight:900;display:flex}.settings-hero-status span{background:#020617;border:1px solid #1e293b;border-radius:999px;padding:6px 9px}.settings-layout{grid-template-columns:280px minmax(0,1fr);align-items:start;gap:20px;display:grid}.settings-sidebar{top:calc(var(--app-topbar-height) + 18px);max-height:calc(100vh - var(--app-topbar-height) - 34px);flex-direction:column;gap:7px;display:flex;position:sticky;overflow:auto}.settings-topic{appearance:none;text-align:left;color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:11px;width:100%;padding:10px 11px;display:flex}.settings-topic:hover{color:#e2e8f0;background:#020617;border-color:#334155}.settings-topic.active{color:#e0f2fe;background:#0ea5e91f;border-color:#0284c7;box-shadow:inset 3px 0 #38bdf8}.settings-topic-icon{color:#38bdf8;background:#020617;border:1px solid #334155;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:11px;font-weight:900;display:inline-flex}.settings-topic-title{letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:900;display:block;overflow:hidden}.settings-topic-subtitle{color:#64748b;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;display:block;overflow:hidden}.settings-panel{min-height:560px}.settings-panel-head{background:#02061761;border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.settings-state-chip{letter-spacing:.08em;text-transform:uppercase;background:#020617;border:1px solid #334155;border-radius:999px;padding:6px 10px;font-size:10px;font-weight:900}.settings-state-chip.ready{color:#86efac;background:#14532d38;border-color:#14532d}.settings-state-chip.planned{color:#94a3b8;border-color:#334155}.settings-panel-body{padding:18px 20px 22px}.settings-section{background:#02061738;border:1px solid #334155cc;border-radius:10px;padding:14px}.settings-section-title{color:#cbd5e1;letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:12px;font-weight:900}.settings-form-grid,.settings-control-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.settings-field-label{color:#64748b;letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:900}.settings-field-value{color:#e2e8f0;white-space:nowrap;text-overflow:ellipsis;margin-top:7px;font-size:15px;font-weight:900;overflow:hidden}.settings-field-value.tone-sky{color:#7dd3fc}.settings-field-value.tone-green{color:#86efac}.settings-field-value.tone-amber{color:#fcd34d}.settings-control{background:#020617;border:1px solid #1e293b;border-radius:8px;padding:11px 12px;display:block}.settings-input{color:#cbd5e1;opacity:1;background:#030712;border:1px solid #334155;border-radius:7px;outline:none;width:100%;margin-top:7px;padding:8px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;font-weight:800}.settings-input:disabled{cursor:not-allowed;color:#94a3b8;background:#020617}.settings-help{color:#64748b;margin-top:7px;font-size:11px;line-height:1.35;display:block}.settings-note{border:1px solid #334155;border-radius:8px;align-items:center;gap:10px;padding:12px 13px;font-size:12px;font-weight:800;display:flex}.settings-note.ok{color:#bbf7d0;background:#14532d2e;border-color:#14532d}.settings-note.warn{color:#fde68a;background:#78350f38;border-color:#854d0e}.settings-action-row{flex-wrap:wrap;gap:10px;display:flex}.settings-action{appearance:none;color:#94a3b8;letter-spacing:.06em;text-transform:uppercase;background:#0f172a;border:1px solid #334155;border-radius:8px;padding:10px 12px;font-size:11px;font-weight:900}.settings-action.danger{color:#fca5a5;background:#7f1d1d2e;border-color:#7f1d1d}@media (width<=1180px){.settings-hero{flex-direction:column;align-items:stretch}.settings-hero-main{flex-direction:column;align-items:flex-start;gap:6px}.settings-hero-status{flex-wrap:wrap;justify-content:flex-start}}@media (width<=980px){.settings-layout{grid-template-columns:1fr}.settings-sidebar{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none;display:grid;position:static}}@media (width<=640px){.settings-sidebar,.settings-form-grid,.settings-control-grid{grid-template-columns:1fr}}.compact-settings-hero{min-height:0!important;padding:1rem 1.25rem!important}.compact-settings-hero .settings-title{font-size:1.5rem!important;line-height:1.1!important}.compact-settings-hero .settings-hero-text{max-width:62rem;margin-top:.35rem!important}.compact-status-box{min-width:13rem!important;padding:.75rem 1rem!important}.compact-panel-head{padding-top:1rem!important;padding-bottom:1rem!important}.settings-checkbox{accent-color:#0ea5e9;width:1.1rem;height:1.1rem;margin-top:.4rem}.settings-action:disabled{opacity:.45;cursor:not-allowed}.mb-4{margin-bottom:1rem}.mt-3{margin-top:.75rem}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity,1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity,1))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity,1))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity,1))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity,1))}.hover\:bg-sky-900\/40:hover{background-color:#0c4a6e66}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.hover\:bg-slate-800\/40:hover{background-color:#1e293b66}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity,1))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}@media (width>=768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1024px){.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-8{grid-column:span 8/span 8}}@media (width>=1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
/*$vite$:1*/