*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0f1e;--bg2:#111827;--bg3:#1e293b;--border:#1e3a5f;--accent:#0ea5e9;--accent2:#7c3aed;--text:#f1f5f9;--text2:#94a3b8;--green:#22c55e;--red:#ef4444;--yellow:#f59e0b}body,html{height:100%}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#334155;border-radius:4px}@keyframes hmi-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes hmi-flow-r{0%{stroke-dashoffset:36}to{stroke-dashoffset:0}}@keyframes hmi-flow-l{0%{stroke-dashoffset:0}to{stroke-dashoffset:36}}@keyframes hmi-flow-d{0%{stroke-dashoffset:36}to{stroke-dashoffset:0}}@keyframes hmi-flow-u{0%{stroke-dashoffset:0}to{stroke-dashoffset:36}}@keyframes hmi-pulse-r{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}@keyframes hmi-pulse-l{0%{stroke-dashoffset:0}to{stroke-dashoffset:100}}@keyframes hmi-pulse-d{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}@keyframes hmi-pulse-u{0%{stroke-dashoffset:0}to{stroke-dashoffset:100}}@keyframes hmi-blink-bg{0%,49%{opacity:1}50%,to{opacity:.45}}.hcv-root{flex-direction:column;width:100%;height:100%;overflow:hidden}.hcv-root,.hcv-toolbar{display:flex;background:var(--bg-dark)}.hcv-toolbar{align-items:center;gap:5px;padding:5px 10px;border-bottom:1px solid var(--bg-card);flex-shrink:0;min-height:42px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hcv-tb-btn{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:background .12s,color .12s,border-color .12s;white-space:nowrap}.hcv-tb-btn:hover:not(:disabled){background:var(--border);color:var(--text-primary)}.hcv-tb-btn:disabled{opacity:.35;cursor:not-allowed}.hcv-tb-btn.hcv-tb-primary{background:var(--primary);border-color:var(--primary);color:#fff}.hcv-tb-btn.hcv-tb-primary:hover:not(:disabled){background:var(--primary-dark);border-color:var(--primary-dark)}.hcv-tb-btn.hcv-tb-danger:not(:disabled){color:#ef4444;border-color:rgba(239,68,68,.5)}.hcv-tb-btn.hcv-tb-danger:hover:not(:disabled){background:rgba(239,68,68,.12)}.hcv-tb-btn.hcv-tb-active{background:var(--border);color:var(--text-primary);border-color:var(--text-secondary)}.hcv-sep{width:1px;height:20px;background:var(--bg-card);flex-shrink:0;margin:0 1px}.hcv-tb-spacer{flex:1 1}.hcv-zoom-ctrl{display:flex;align-items:center;gap:3px;background:var(--bg-dark);border:1px solid var(--bg-card);border-radius:7px;padding:2px 4px}.hcv-zoom-btn{padding:2px 8px!important;font-size:14px!important;font-weight:700!important;border:none!important;background:none!important;min-width:24px}.hcv-zoom-btn:hover:not(:disabled){background:var(--border)!important}.hcv-zoom-input{width:44px;background:transparent;border:none;color:var(--text-secondary);font-size:11px;font-family:Consolas,monospace;font-weight:600;text-align:center;outline:none;padding:0}.hcv-zoom-input::-webkit-inner-spin-button,.hcv-zoom-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.hcv-zoom-pct{font-size:11px;color:var(--text-secondary);margin-right:2px}.hcv-zoom-fit{padding:2px 8px!important;font-size:13px!important;border:none!important;background:none!important}.hcv-zoom-fit:hover:not(:disabled){background:var(--border)!important}.hcv-status-bar{display:flex;align-items:center;gap:8px;flex-shrink:0}.hcv-status-coord{font-size:10px;color:var(--text-secondary);font-family:Consolas,monospace;min-width:88px}.hcv-status-count{font-size:11px;color:var(--text-secondary)}.hcv-sel-count{font-size:10px;color:#60a5fa;font-weight:600;background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.25);border-radius:8px;padding:1px 7px}.hcv-rot-display{font-size:10px;color:var(--text-secondary);font-family:Consolas,monospace}.hcv-saving{font-size:10px;color:#3b82f6;animation:hmi-blink .8s step-start infinite}.hcv-align-bar{display:flex;align-items:center;gap:3px;padding:4px 10px;background:var(--bg-dark);border-bottom:1px solid var(--bg-card);flex-shrink:0;min-height:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hcv-align-label{font-size:10px;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-right:2px}.hcv-ab-btn{display:flex;align-items:center;justify-content:center;min-width:28px;height:22px;padding:0 6px;border:1px solid var(--bg-card);border-radius:5px;background:var(--bg-card);color:var(--text-secondary);font-size:11px;cursor:pointer;transition:background .1s,color .1s,border-color .1s;white-space:nowrap}.hcv-ab-btn:hover:not(:disabled){background:var(--border);color:var(--text-primary);border-color:var(--text-secondary)}.hcv-ab-btn:disabled{opacity:.3;cursor:not-allowed}.hcv-workspace{display:flex;flex:1 1;overflow:hidden;min-height:0}.hcv-editor-area{display:flex;flex-direction:column;flex:1 1;min-width:0;overflow:hidden}.hcv-ruler-row{display:flex;flex-direction:row;flex-shrink:0;height:20px}.hcv-ruler-corner{width:20px;height:20px;background:var(--bg-dark);border-right:1px solid var(--bg-card);border-bottom:1px solid var(--bg-card);flex-shrink:0}.hcv-ruler-h-wrap{flex:1 1;height:20px;overflow:hidden;position:relative}.hcv-ruler-canvas{display:block;width:100%;height:100%}.hcv-canvas-area{display:flex;flex-direction:row;flex:1 1;min-height:0;overflow:hidden}.hcv-ruler-v-wrap{width:20px;flex-shrink:0}.hcv-ruler-v-wrap,.hcv-viewport{overflow:hidden;position:relative}.hcv-viewport{flex:1 1;background:var(--bg-dark);min-width:0}.hcv-canvas-inner{position:absolute;top:0;left:0;box-shadow:0 0 0 1px #1a3050,0 4px 40px rgba(0,0,0,.8),0 0 80px rgba(0,0,0,.4);transform-origin:0 0}.hcv-obj{position:absolute;box-sizing:border-box}.hcv-obj-edit{cursor:-webkit-grab;cursor:grab}.hcv-obj-edit:active{cursor:-webkit-grabbing;cursor:grabbing}.hcv-obj-selected{outline:2px solid #3b82f6;outline-offset:1px;border-radius:2px}.hcv-rh{position:absolute;width:9px;height:9px;background:#3b82f6;border:1.5px solid #1e3a6e;border-radius:2px;z-index:10}.hcv-rh-e{right:-5px;top:50%;transform:translateY(-50%);cursor:e-resize}.hcv-rh-s{bottom:-5px;left:50%;transform:translateX(-50%);cursor:s-resize}.hcv-rh-se{right:-5px;bottom:-5px;cursor:se-resize}.hcv-rot-line{top:-26px;left:calc(50% - .5px);width:1px;height:26px;pointer-events:none;z-index:19}.hcv-rot-handle,.hcv-rot-line{position:absolute;background:#3b82f6}.hcv-rot-handle{top:-40px;left:50%;transform:translateX(-50%);width:13px;height:13px;border-radius:50%;border:2px solid var(--text-primary);cursor:-webkit-grab;cursor:grab;z-index:20;transition:background .12s}.hcv-rot-handle:hover{background:#60a5fa}.hcv-rot-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.hcv-conn-pt{position:absolute;width:11px;height:11px;border-radius:50%;background:rgba(14,165,233,.25);border:2px solid rgba(14,165,233,.7);pointer-events:none;z-index:15;transition:background .1s,border-color .1s,transform .12s;box-shadow:0 0 5px rgba(14,165,233,.4)}.hcv-conn-pt.snap{width:15px;height:15px;background:#22c55e;border-color:#86efac;border-width:2.5px;box-shadow:0 0 12px rgba(34,197,94,.85),0 0 4px #22c55e;transform:translate(-50%,-50%) scale(1.15)!important}.hcv-obj-snap-target{outline:2.5px solid #22c55e!important;outline-offset:3px;box-shadow:0 0 18px rgba(34,197,94,.45)}.hcv-selbox{border:1.5px dashed #3b82f6;background:rgba(59,130,246,.07);border-radius:2px;z-index:50}.hcv-empty,.hcv-selbox{position:absolute;pointer-events:none}.hcv-empty{inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--primary-dark);font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hcv-empty-icon{font-size:48px;opacity:.2}.hcv-ctx-menu{position:fixed;z-index:500;background:var(--bg-card);border:1px solid var(--border);border-radius:9px;box-shadow:0 8px 36px rgba(0,0,0,.65),0 2px 8px rgba(0,0,0,.3);padding:5px 0;min-width:190px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hcv-ctx-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:6px 14px;background:none;border:none;color:var(--text-secondary);font-size:12px;text-align:left;cursor:pointer;transition:background .1s,color .1s;gap:16px}.hcv-ctx-item:hover:not(:disabled){background:rgba(51,65,85,.6);color:var(--text-primary)}.hcv-ctx-item:disabled{opacity:.35;cursor:not-allowed}.hcv-ctx-item.danger{color:#f87171}.hcv-ctx-item.danger:hover:not(:disabled){background:rgba(239,68,68,.12)}.hcv-ctx-shortcut{font-size:10px;color:var(--text-secondary);font-family:Consolas,monospace;flex-shrink:0}.hcv-ctx-sep{height:1px;background:var(--border);margin:4px 0}.hmi-caption{position:absolute;font-size:10px;color:var(--text-secondary);white-space:nowrap;pointer-events:none;z-index:5;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hmi-caption-bottom{bottom:3px;left:50%;transform:translateX(-50%)}.hmi-caption-top{top:3px;left:50%;transform:translateX(-50%)}.hmi-caption-left{left:4px;top:50%;writing-mode:vertical-rl;transform:translateY(-50%) rotate(180deg)}.hmi-caption-right{right:4px;top:50%;writing-mode:vertical-rl;transform:translateY(-50%)}.hcv-design-wrap{position:relative}.hcv-design-btn{max-width:180px}.hcv-des-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px;display:inline-block;vertical-align:bottom}.hcv-design-arr{font-size:9px;opacity:.7;margin-left:2px}.hcv-design-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:300;width:280px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.6);overflow:hidden}.hcv-dp-title{font-size:10px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;padding:7px 12px 5px;border-bottom:1px solid var(--border)}.hcv-dp-list{max-height:200px;overflow-y:auto;padding:3px 0}.hcv-dp-list::-webkit-scrollbar{width:4px}.hcv-dp-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.hcv-dp-item{display:flex;align-items:center;gap:6px;padding:5px 10px;transition:background .1s}.hcv-dp-item:hover{background:rgba(51,65,85,.5)}.hcv-dp-item.active{background:rgba(59,130,246,.1)}.hcv-dp-radio{background:none;border:none;cursor:pointer;color:var(--text-secondary);font-size:12px;padding:0;line-height:1;flex-shrink:0;width:14px;transition:color .12s}.hcv-dp-item.active .hcv-dp-radio{color:#3b82f6;cursor:default}.hcv-dp-name{flex:1 1;font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default}.hcv-dp-item.active .hcv-dp-name{color:#60a5fa;font-weight:600}.hcv-dp-rename{flex:1 1;background:var(--bg-dark);border:1px solid #3b82f6;border-radius:4px;color:var(--text-primary);font-size:11px;padding:2px 6px;outline:none}.hcv-dp-count{min-width:18px;text-align:right}.hcv-dp-count,.hcv-dp-del{font-size:10px;color:var(--text-secondary);flex-shrink:0}.hcv-dp-del{background:none;border:none;cursor:pointer;padding:2px 5px;border-radius:4px;transition:color .1s,background .1s}.hcv-dp-del:hover{color:#ef4444;background:rgba(239,68,68,.12)}.hcv-dp-add{display:flex;gap:6px;padding:7px 10px;border-top:1px solid var(--border)}.hcv-dp-input{flex:1 1;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:11px;padding:4px 8px;outline:none}.hcv-dp-input:focus{border-color:#3b82f6}.hcv-dp-add-btn{padding:4px 10px}.hcv-paint-wrap{position:relative}.hcv-paint-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:300;width:240px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.6);overflow:hidden;padding-bottom:10px}.hcv-pp-title{font-weight:700;letter-spacing:.8px;padding:7px 12px 5px;border-bottom:1px solid var(--border)}.hcv-pp-section,.hcv-pp-title{font-size:10px;color:var(--text-secondary);text-transform:uppercase}.hcv-pp-section{font-weight:600;letter-spacing:.5px;padding:7px 12px 4px}.hcv-pp-swatches{display:flex;flex-wrap:wrap;gap:5px;padding:0 12px 6px}.hcv-pp-swatch{width:24px;height:24px;border-radius:5px;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:0 1px 4px rgba(0,0,0,.45);transition:transform .1s,border-color .1s;flex-shrink:0}.hcv-pp-swatch:hover{transform:scale(1.18)}.hcv-pp-swatch.active{border-color:#3b82f6;outline:2px solid rgba(59,130,246,.3);outline-offset:1px}.hcv-pp-custom{display:flex;align-items:center;gap:6px;padding:2px 12px 4px}.hcv-pp-clabel{font-size:10px;color:var(--text-secondary);flex-shrink:0}.hcv-pp-cpicker{width:26px;height:20px;border:1px solid var(--border);border-radius:4px;padding:1px 2px;background:var(--bg-dark);cursor:pointer;flex-shrink:0}.hcv-pp-hex{font-size:10px;color:var(--text-secondary);font-family:Consolas,monospace}.hcv-pp-grid-row{display:flex;flex-wrap:wrap;gap:4px;padding:0 12px}.hcv-pp-gopt{background:var(--bg-dark);border:1px solid var(--border);border-radius:5px;color:var(--text-secondary);font-size:10px;padding:3px 7px;cursor:pointer;transition:background .1s,color .1s,border-color .1s}.hcv-pp-gopt:hover{background:var(--border);color:var(--text-primary)}.hcv-pp-gopt.active{background:#1e3a8a;border-color:#3b82f6;color:#93c5fd}.hcv-pp-size-row{display:flex;align-items:center;gap:5px;padding:4px 12px}.hcv-pp-size-row label{font-size:10px;color:var(--text-secondary);flex-shrink:0}.hcv-pp-size-inp{width:60px;background:var(--bg-dark);border:1px solid var(--border);border-radius:5px;color:var(--text-primary);font-size:11px;padding:3px 6px;outline:none;text-align:center}.hcv-pp-size-inp:focus{border-color:#3b82f6}.hcv-pp-size-inp::-webkit-inner-spin-button,.hcv-pp-size-inp::-webkit-outer-spin-button{-webkit-appearance:none}.hcv-pp-size-px{font-size:10px;color:var(--text-secondary)}.hcv-pp-size-presets{display:flex;gap:4px;padding:4px 12px 0}.hcv-screens-sidebar{width:160px;flex-shrink:0;background:var(--bg-dark);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;z-index:10}.hcv-ss-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 7px;border-bottom:1px solid var(--bg-card);font-size:10px;text-transform:uppercase;letter-spacing:.6px;flex-shrink:0}.hcv-ss-count,.hcv-ss-header{font-weight:700;color:var(--text-secondary)}.hcv-ss-count{background:var(--bg-card);border-radius:8px;padding:0 6px;font-size:9px}.hcv-ss-list{flex:1 1;overflow-y:auto;padding:4px 0}.hcv-ss-item{display:flex;align-items:center;gap:5px;padding:6px 8px 6px 10px;cursor:pointer;transition:background .12s;position:relative;min-width:0}.hcv-ss-item:hover{background:var(--bg-card)}.hcv-ss-item.active{background:var(--primary-dark)}.hcv-ss-dot{font-size:7px;color:var(--border);flex-shrink:0;line-height:1}.hcv-ss-item.active .hcv-ss-dot{color:#3b82f6}.hcv-ss-name{flex:1 1;font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.hcv-ss-item.active .hcv-ss-name{color:var(--text-primary);font-weight:600}.hcv-ss-item:hover:not(.active) .hcv-ss-name{color:var(--text-secondary)}.hcv-ss-rename{flex:1 1;background:var(--bg-dark);border:1px solid #3b82f6;border-radius:3px;color:var(--text-primary);font-size:11px;padding:2px 5px;outline:none;min-width:0;font-family:inherit}.hcv-ss-objs{font-size:9px;color:var(--bg-card);flex-shrink:0}.hcv-ss-item.active .hcv-ss-objs,.hcv-ss-item:hover .hcv-ss-objs{color:var(--border)}.hcv-ss-del{display:none;position:absolute;right:4px;width:16px;height:16px;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:9px;border-radius:3px;align-items:center;justify-content:center;padding:0;line-height:1}.hcv-ss-item:hover .hcv-ss-del{display:flex}.hcv-ss-del:hover{background:#ef4444;color:#fff}.hcv-ss-add{display:flex;gap:4px;padding:6px 8px;border-top:1px solid var(--bg-card);flex-shrink:0}.hcv-ss-add-input{flex:1 1;background:var(--bg-dark);border:1px solid var(--bg-card);border-radius:4px;color:var(--text-secondary);font-size:11px;padding:4px 6px;outline:none;font-family:inherit;min-width:0}.hcv-ss-add-input:focus{border-color:#3b82f6;color:var(--text-primary)}.hcv-ss-add-input::placeholder{color:var(--border)}.hcv-ss-add-btn{width:24px;height:24px;background:#1d4ed8;border:none;border-radius:4px;color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s;line-height:1}.hcv-ss-add-btn:hover{background:#2563eb}.hcv-write-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center}.hcv-write-dialog{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 16px 48px rgba(0,0,0,.6);width:300px;display:flex;flex-direction:column;overflow:hidden}.hcv-write-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-dark);border-bottom:1px solid var(--border);font-size:13px;font-weight:700;color:var(--text-primary)}.hcv-write-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:14px;padding:2px 5px;border-radius:4px;transition:background .15s,color .15s}.hcv-write-close:hover{background:rgba(239,68,68,.2);color:#ef4444}.hcv-write-body{padding:12px 14px;display:flex;flex-direction:column;gap:8px}.hcv-write-row{display:flex;align-items:center;gap:8px;font-size:12px}.hcv-write-row>span{flex:0 0 80px;color:var(--text-secondary);font-size:11px}.hcv-write-row>code{font-size:12px;color:#93c5fd;padding:3px 7px;border-radius:4px;border:1px solid var(--border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hcv-write-input,.hcv-write-row>code{flex:1 1;font-family:Consolas,monospace;background:var(--bg-dark)}.hcv-write-input{border:1px solid #3b82f6;border-radius:5px;color:var(--text-primary);font-size:13px;padding:5px 8px;outline:none}.hcv-write-input:focus{border-color:#60a5fa}.hcv-write-error{font-size:11px;color:#f87171;background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:5px;padding:5px 8px}.hcv-write-ok{font-size:11px;color:#4ade80;background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.3);border-radius:5px;padding:5px 8px}.hcv-write-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--bg-card);background:var(--bg-dark)}.hcv-write-cancel{background:var(--border);border:1px solid var(--text-secondary);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:12px;padding:5px 14px;transition:background .15s,color .15s}.hcv-write-cancel:hover{background:var(--text-secondary);color:var(--text-primary)}.hcv-write-send{background:#1d4ed8;border:1px solid #3b82f6;border-radius:6px;color:var(--text-primary);cursor:pointer;font-size:12px;font-weight:600;padding:5px 18px;transition:background .15s}.hcv-write-send:hover:not(:disabled){background:#2563eb}.hcv-write-send:disabled{opacity:.5;cursor:not-allowed}.hcv-anim-badge{position:absolute;top:2px;right:2px;display:flex;gap:1px;pointer-events:none;z-index:10}.hcv-anim-badge span{font-size:9px;background:rgba(14,165,233,.85);border-radius:3px;padding:1px 2px;line-height:1;color:#fff}.hcv-alarm-bar{display:flex;align-items:center;gap:8px;padding:0 14px;height:28px;min-height:28px;flex-shrink:0;font-size:12px;color:#fef2f2;border-top:1px solid hsla(0,0%,100%,.1);overflow:hidden}.hcv-alarm-bar-dot{font-size:10px;animation:alm-pulse 1.2s ease-in-out infinite}.hcv-alarm-bar-count{background:rgba(0,0,0,.3);border-radius:4px;padding:0 5px;font-size:11px}.hcv-alarm-bar-pri{font-size:10px;font-weight:700;letter-spacing:.5px;opacity:.8}.hcv-alarm-bar-time{font-family:Consolas,monospace;font-size:11px;opacity:.75}.hcv-alarm-bar-sep{opacity:.4}.hcv-alarm-bar-msg{font-weight:600;flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hcv-alarm-bar-unack{opacity:.65;font-size:11px;flex-shrink:0}@keyframes alm-pulse{0%,to{opacity:1}50%{opacity:.3}}.hcv-console{position:absolute;bottom:28px;left:0;right:0;height:260px;border-top:1px solid var(--bg-card);flex-direction:column;z-index:90;font-size:12px}.hcv-con-header,.hcv-console{background:var(--bg-dark);display:flex}.hcv-con-header{align-items:center;gap:8px;padding:4px 10px;border-bottom:1px solid var(--bg-card);flex-shrink:0}.hcv-con-title{font-size:12px;font-weight:700;color:var(--text-secondary);white-space:nowrap}.hcv-con-tabs{display:flex;gap:2px}.hcv-con-tab{padding:3px 10px;background:none;border:1px solid var(--bg-card);border-radius:5px;color:var(--text-secondary);font-size:11px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px;transition:background .15s,color .15s}.hcv-con-tab.active{background:var(--bg-card);color:var(--text-primary);border-color:var(--border)}.hcv-con-badge,.hcv-con-tab:hover:not(.active){color:var(--text-secondary)}.hcv-con-badge{background:var(--bg-card);border-radius:8px;padding:0 5px;font-size:10px}.hcv-con-tab.active .hcv-con-badge{background:var(--border);color:var(--text-secondary)}.hcv-con-search{flex:1 1;max-width:200px;background:var(--bg-card);border:1px solid var(--border);border-radius:5px;color:var(--text-primary);font-size:11px;padding:3px 8px;outline:none;margin-left:auto}.hcv-con-search::placeholder{color:var(--text-secondary)}.hcv-con-search:focus{border-color:#0ea5e9}.hcv-con-close{background:none;border:none;color:var(--text-secondary);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:4px;transition:color .15s,background .15s}.hcv-con-close:hover{background:#ef4444;color:#fff}.hcv-con-body{flex:1 1;overflow-y:auto;overflow-x:hidden}.hcv-con-table{width:100%;border-collapse:collapse;font-size:11px}.hcv-con-table thead tr{position:-webkit-sticky;position:sticky;top:0;background:var(--bg-dark);z-index:1}.hcv-con-table th{padding:4px 10px;text-align:left;font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--text-secondary);border-bottom:1px solid var(--bg-card)}.hcv-con-table tr:hover td{background:#161b22}.hcv-con-table td{padding:3px 10px;border-bottom:1px solid var(--bg-dark)}.hcv-con-device{font-size:11px;color:var(--text-secondary);white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}.hcv-con-tag{color:#7dd3fc}.hcv-con-tag,.hcv-con-val{font-family:Consolas,monospace}.hcv-con-val{color:#86efac;font-weight:600}.hcv-con-time{font-family:Consolas,monospace;color:var(--text-secondary);white-space:nowrap}.hcv-con-empty{text-align:center;color:var(--border);padding:20px 0;font-style:italic}.hcv-pp-img-row{display:flex;gap:6px;margin-top:2px}.hcv-pp-imgbtn{flex:1 1;padding:5px 8px;border-radius:5px;border:1px solid var(--border);background:var(--bg-dark);color:var(--text-secondary);cursor:pointer;font-size:11px;font-weight:600;transition:background .15s,color .15s}.hcv-pp-imgbtn:hover{background:var(--border);color:var(--text-primary)}.hcv-pp-imgbtn-del{border-color:var(--danger);color:var(--danger)}.hcv-pp-imgbtn-del:hover{background:rgba(239,68,68,.12)}.hcv-align-group{display:flex;align-items:center;gap:2px}.hcv-align-btn{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:13px;padding:3px 6px;transition:background .15s,color .15s}.hcv-align-btn:hover{background:var(--border);color:var(--text-primary)}.hcv-lock-badge{position:absolute;top:2px;right:2px;font-size:10px;line-height:1;pointer-events:none;opacity:.7}@keyframes hmi-blink{0%,to{opacity:1}50%{opacity:.2}}.hmi-anim-blink{animation:hmi-blink .8s ease-in-out infinite}.hcv-offline-obj-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(0,0,0,.45);border-radius:3px;z-index:5}.hcv-offline-obj-overlay span{font-size:13px;font-weight:700;color:#f97316;letter-spacing:2px;text-shadow:0 0 6px rgba(249,115,22,.8)}.hcv-offline-banner{position:absolute;top:10px;right:12px;z-index:200;display:flex;flex-direction:column;gap:4px;pointer-events:none}.hcv-offline-item{display:flex;align-items:center;gap:6px;background:rgba(239,68,68,.92);color:#fff;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.4);animation:hcv-offline-pulse 1.5s ease-in-out infinite}.hcv-offline-dot{width:8px;height:8px;background:#fca5a5;border-radius:50%;flex-shrink:0}@keyframes hcv-offline-pulse{0%,to{opacity:1}50%{opacity:.7}}.hpal-root{width:260px;height:100%;background:#0f1117;border-right:1px solid #1e293b;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.hpal-header{padding:12px 16px;background:#1e293b;color:#f1f5f9;font-weight:600;display:flex;justify-content:space-between;align-items:center;font-size:14px}.hpal-close{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px}.hpal-close:hover{color:#f1f5f9}.hpal-search-wrap{padding:8px 12px;position:relative;background:#0f1117;border-bottom:1px solid #1e293b}.hpal-search-input{width:100%;background:#1e293b;border:1px solid #334155;border-radius:4px;padding:6px 28px 6px 8px;color:#f1f5f9;font-size:13px;outline:none}.hpal-search-input:focus{border-color:#3b82f6}.hpal-search-clear{position:absolute;right:18px;top:50%;transform:translateY(-50%);background:none;border:none;color:#64748b;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}.hpal-search-clear:hover{color:#f1f5f9}.hpal-body{flex:1 1;overflow-y:auto;padding:8px 0}.hpal-body::-webkit-scrollbar{width:6px}.hpal-body::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.hpal-group{margin-bottom:12px}.hpal-group-label{padding:4px 16px;font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.05em;background:rgba(15,17,23,.8);position:-webkit-sticky;position:sticky;top:0;z-index:10}.hpal-items{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px;padding:8px 12px}.hpal-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;background:transparent;border:1px solid transparent;border-radius:4px;color:#94a3b8;cursor:pointer;transition:all .15s ease}.hpal-item:hover{background:#1e293b;color:#f1f5f9;border-color:#334155}.hpal-item:active{background:#0f172a}.hpal-icon{font-size:20px;line-height:1}.hpal-label{font-size:11px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.hpal-no-results{padding:24px 16px;text-align:center;color:#64748b;font-size:13px}.hprop-root{width:230px;min-width:230px;background:var(--surface,var(--bg-card));border-left:1px solid var(--border,var(--border));display:flex;flex-direction:column;overflow:hidden}.hprop-empty{align-items:center;justify-content:center;color:var(--text-secondary);font-size:13px;font-style:italic}.hprop-header{justify-content:space-between;padding:10px 12px;background:var(--surface2,var(--bg-dark));border-bottom:1px solid var(--border,var(--border));flex-shrink:0}.hprop-header,.hprop-title{display:flex;align-items:center}.hprop-title{gap:6px;font-size:13px;font-weight:700;color:var(--text,var(--text-primary))}.hprop-del{background:none;border:none;cursor:pointer;font-size:15px;padding:3px 6px;border-radius:5px;transition:background .15s;line-height:1}.hprop-del:hover{background:rgba(239,68,68,.2)}.hprop-body{flex:1 1;overflow-y:auto;padding:4px 0 12px}.hprop-body::-webkit-scrollbar{width:4px}.hprop-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.hprop-section{font-size:10px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;padding:10px 12px 4px}.hprop-row2{display:flex;gap:6px;padding:2px 12px}.hprop-kv{display:flex;align-items:center;gap:4px;flex:1 1;font-size:11px}.hprop-kv,.hprop-kv>span{color:var(--text-secondary)}.hprop-kv>span{width:10px;font-weight:700}.hprop-kv>input{flex:1 1;width:0;background:var(--surface2,var(--bg-dark));border:1px solid var(--border);border-radius:5px;color:var(--text,var(--text-primary));font-size:11px;padding:3px 6px;outline:none}.hprop-kv>input:focus{border-color:var(--primary,#3b82f6)}.hprop-field{display:flex;align-items:center;padding:4px 12px;gap:6px;min-height:30px}.hprop-label{font-size:11px;color:var(--text-secondary);flex:0 0 90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hprop-input{flex:1 1;background:var(--surface2,var(--bg-dark));border:1px solid var(--border);border-radius:5px;color:var(--text,var(--text-primary));font-size:11px;padding:4px 7px;outline:none;min-width:0}.hprop-input:focus{border-color:var(--primary,#3b82f6)}.hprop-select{flex:1 1;background:var(--surface2,var(--bg-dark));border:1px solid var(--border);border-radius:5px;color:var(--text,var(--text-primary));font-size:11px;padding:4px 6px;outline:none;cursor:pointer}.hprop-select:focus{border-color:var(--primary,#3b82f6)}.hprop-color-row{flex:1 1;display:flex;align-items:center;gap:5px;min-width:0}.hprop-color-row input[type=color]{width:28px;height:28px;border:1px solid var(--border);border-radius:5px;padding:2px;background:var(--surface2,var(--bg-dark));cursor:pointer;flex-shrink:0}.hprop-color-row .hprop-input{min-width:0;font-size:10px;padding:4px 5px}.hprop-rot-row{display:flex;align-items:center;gap:4px;flex:1 1}.hprop-rot-row .hprop-input{flex:1 1}.hprop-rot-reset{background:var(--border);border:1px solid var(--text-secondary);border-radius:5px;color:var(--text-secondary);cursor:pointer;font-size:13px;padding:3px 7px;line-height:1;flex-shrink:0;transition:background .15s,color .15s}.hprop-rot-reset:hover{background:var(--text-secondary);color:var(--text-primary)}.hprop-toggle{display:flex;align-items:center;cursor:pointer;margin:0}.hprop-toggle input[type=checkbox]{display:none}.hprop-toggle-track{display:block;width:34px;height:18px;background:var(--border);border-radius:9px;position:relative;transition:background .2s}.hprop-toggle input:checked~.hprop-toggle-track{background:var(--primary,#3b82f6)}.hprop-toggle-thumb{position:absolute;top:2px;left:2px;width:14px;height:14px;background:var(--text-primary);border-radius:50%;transition:left .2s}.hprop-toggle input:checked~.hprop-toggle-track .hprop-toggle-thumb{left:18px}.hprop-rot-sm{background:var(--border);border:1px solid var(--text-secondary);border-radius:5px;color:var(--text-secondary);cursor:pointer;font-size:10px;padding:3px 7px;line-height:1;flex-shrink:0;white-space:nowrap;transition:background .15s,color .15s}.hprop-rot-sm:hover{background:var(--text-secondary);color:var(--text-primary)}.hprop-tag-wrap{flex:1 1;display:flex;align-items:center;gap:3px;position:relative;min-width:0}.hprop-tag-btn{background:var(--border);border:1px solid var(--text-secondary);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:13px;padding:2px 5px;line-height:1;flex-shrink:0;transition:background .12s,color .12s}.hprop-tag-btn:hover{background:var(--text-secondary);color:var(--text-primary)}.hprop-tag-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:200;background:var(--bg-card);border:1px solid var(--border);border-radius:7px;box-shadow:0 6px 24px rgba(0,0,0,.5);overflow:hidden;min-width:160px}.hprop-tag-search{width:100%;box-sizing:border-box;background:var(--bg-dark);border:none;border-bottom:1px solid var(--border);color:var(--text-primary);font-size:11px;padding:6px 8px;outline:none}.hprop-tag-search::placeholder{color:var(--text-secondary)}.hprop-tag-list{max-height:180px;overflow-y:auto;padding:3px 0}.hprop-tag-list::-webkit-scrollbar{width:3px}.hprop-tag-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.hprop-tag-item{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;background:none;border:none;color:var(--text-secondary);font-size:11px;padding:5px 9px;cursor:pointer;text-align:left;transition:background .1s}.hprop-tag-item:hover{background:rgba(51,65,85,.6);color:var(--text-primary)}.hprop-tag-addr{font-size:9px;color:var(--text-secondary);font-family:Consolas,monospace;flex-shrink:0}.hprop-tag-empty{padding:8px 10px;font-size:10px;color:var(--text-secondary);font-style:italic;text-align:center}.hprop-btn{padding:5px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg-dark);color:var(--text-secondary);cursor:pointer;font-size:11px;font-weight:600;transition:background .15s,color .15s}.hprop-btn:hover{background:var(--border);color:var(--text-primary)}.hprop-btn-danger{border-color:var(--danger);color:var(--danger)}.hprop-btn-danger:hover{background:rgba(239,68,68,.12)}.hprop-anim-add{padding:2px 8px;background:#7c3aed;border:none;border-radius:4px;color:#fff;font-size:11px;font-weight:600;cursor:pointer}.hprop-anim-add:hover{background:#6d28d9}.hprop-anim-rule{display:flex;flex-direction:column;gap:4px;padding:6px 8px;margin-bottom:4px;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px}.hprop-anim-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.hprop-anim-sel{flex:1 1;min-width:0;font-size:11px;padding:3px 5px}.hprop-anim-thr{width:54px;padding:3px 5px;background:var(--bg-main);color:var(--text-primary);font-size:11px}.hprop-anim-color,.hprop-anim-thr{border:1px solid var(--border);border-radius:4px}.hprop-anim-color{width:32px;height:26px;padding:0;cursor:pointer;background:none}.hprop-anim-del{background:none;border:none;color:#ef4444;cursor:pointer;font-size:13px;line-height:1;padding:0 2px;flex-shrink:0}.hprop-anim-del:hover{color:#fca5a5}