:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;display:flex;min-width:320px;min-height:100vh}#root{width:100%}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}input{border-radius:8px;border:1px solid #ccc;padding:.6em 1.2em;font-size:1em;font-family:inherit;background-color:#1a1a1a;color:#ffffffde}input:focus{outline:2px solid #646cff}.app{width:100%;min-height:100vh;display:flex;flex-direction:column}.app.loading{justify-content:center;align-items:center}.loading-spinner{color:#ffffffde;font-size:1.2rem}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;width:100%;background:linear-gradient(135deg,#1a1a1a,#2d2d2d)}.login-box{background:#2a2a2a;border-radius:12px;padding:2.5rem;width:100%;max-width:420px;box-shadow:0 8px 32px #0006}.login-box h1{text-align:center;margin-bottom:.5rem;color:#646cff;font-size:1.8rem}.login-box h2{text-align:center;margin-bottom:2rem;color:#ffffffde;font-size:1.3rem;font-weight:400}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;color:#ffffffde;font-size:.9rem}.form-group input{width:100%;padding:.75rem 1rem}.error-message{background:#ef44441a;border:1px solid rgba(239,68,68,.5);color:#ef4444;padding:.75rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.login-box button[type=submit]{width:100%;background-color:#646cff;color:#fff;border:none;padding:.75rem;font-size:1rem;margin-top:.5rem}.login-box button[type=submit]:hover:not(:disabled){background-color:#535bf2}.login-box button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.toggle-mode{width:100%;background:transparent;color:#646cff;border:1px solid #646cff;margin-top:1rem}.toggle-mode:hover:not(:disabled){background:#646cff1a}.toggle-mode:disabled{opacity:.6;cursor:not-allowed}.workspace-dashboard{display:grid;grid-template-columns:320px 1fr;grid-template-rows:60px 1fr;grid-template-areas:"header header" "sidebar workspace";height:100vh;background:linear-gradient(135deg,#0f0f1e,#1a1a2e,#16213e);color:#ffffffe6;overflow:hidden}.workspace-header{grid-area:header;display:flex;justify-content:space-between;align-items:center;padding:0 1.5rem;background:#0000004d;border-bottom:1px solid rgba(100,108,255,.2);box-shadow:0 2px 8px #0003}.header-left{display:flex;align-items:center;gap:2rem}.workspace-header h1{margin:0;font-size:1.3rem;font-weight:700;letter-spacing:1px;background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.version-badge{position:fixed;bottom:8px;right:12px;font-size:.65rem;color:#6b7280;font-family:monospace;opacity:.6;transition:opacity .2s;z-index:1}.version-badge:hover{opacity:1}.global-stats{display:flex;gap:1.5rem;font-family:Monaco,Courier New,monospace;font-size:.9rem}.global-stat{padding:.35rem .75rem;border-radius:4px;font-weight:700;letter-spacing:.5px}.global-stat.tx{background:#60a5fa1a;color:#60a5fa;border:1px solid rgba(96,165,250,.3)}.global-stat.rx{background:#34d3991a;color:#34d399;border:1px solid rgba(52,211,153,.3)}.header-right{display:flex;align-items:center;gap:1.5rem}.connection-status{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.connection-status.connected{background:#34d3991a;border:1px solid rgba(52,211,153,.3)}.connection-status.disconnected{background:#ef44441a;border:1px solid rgba(239,68,68,.3)}.status-dot{width:8px;height:8px;border-radius:50%;animation:pulse 2s ease-in-out infinite}.connection-status.connected .status-dot{background:#34d399;box-shadow:0 0 8px #34d39999}.connection-status.disconnected .status-dot{background:#ef4444;box-shadow:0 0 8px #ef444499}.status-text{font-size:.75rem}.connection-status.connected .status-text{color:#34d399}.connection-status.disconnected .status-text{color:#ef4444}.btn-logout{padding:.6rem 1.2rem;background:#646cff1a;border:1px solid rgba(100,108,255,.3);color:#ffffffe6;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .2s}.btn-logout:hover{background:#646cff33;border-color:#646cff80;box-shadow:0 4px 12px #646cff33}.btn-admin{padding:.6rem 1.2rem;background:#fbbf241a;border:1px solid rgba(251,191,36,.3);color:#fbbf24;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .2s}.btn-admin:hover{background:#fbbf2433;border-color:#fbbf2480;box-shadow:0 4px 12px #fbbf2433}.control-panel{grid-area:sidebar;background:#0003;border-right:1px solid rgba(100,108,255,.2);padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem}.panel-section{background:#646cff0d;border:1px solid rgba(100,108,255,.2);border-radius:8px;padding:1.25rem}.panel-section h3{margin:0 0 1rem;font-size:.9rem;text-transform:uppercase;letter-spacing:1.5px;color:#fffc}.btn-add-node{width:100%;padding:.8rem;background:linear-gradient(135deg,#60a5fa,#3b82f6);border:none;border-radius:6px;color:#fff;font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s}.btn-add-node:hover:not(:disabled){background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 6px 20px #3b82f666;transform:translateY(-2px)}.btn-add-node:disabled{opacity:.4;cursor:not-allowed;transform:none}.node-count{margin-top:.75rem;text-align:center;font-size:.85rem;color:#fff9;font-family:Monaco,Courier New,monospace}.btn-open-topology{width:100%;padding:.8rem;background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:6px;color:#fff;font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s}.btn-open-topology:hover{background:linear-gradient(135deg,#7c3aed,#6d28d9);box-shadow:0 6px 20px #8b5cf666;transform:translateY(-2px)}.workspace-area{grid-area:workspace;position:relative;overflow:hidden;background-image:linear-gradient(rgba(100,108,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(100,108,255,.03) 1px,transparent 1px);background-size:50px 50px;isolation:isolate}.workspace-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#fff6;max-width:400px}.workspace-empty p{margin:.5rem 0;font-size:.95rem}.workspace-hint{font-size:.85rem!important;color:#ffffff4d!important}.network-manager-panel{background:#646cff0d;border:1px solid rgba(100,108,255,.2);border-radius:8px;padding:1.25rem;display:flex;flex-direction:column;gap:1.25rem}.network-manager-panel h3{margin:0;font-size:.9rem;text-transform:uppercase;letter-spacing:1.5px;color:#fffc}.section{display:flex;flex-direction:column;gap:.75rem}.section-header{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;color:#ffffffb3;text-transform:uppercase;letter-spacing:.5px}.btn-add-small{width:24px;height:24px;border-radius:4px;background:#646cff33;border:1px solid rgba(100,108,255,.4);color:#ffffffe6;cursor:pointer;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-add-small:hover{background:#646cff4d;border-color:#646cff99}.btn-remove-small{padding:0;width:20px;height:20px;border-radius:50%;background:#ef444433;border:1px solid rgba(239,68,68,.4);color:#ef4444;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-remove-small:hover{background:#ef4444;color:#fff;transform:scale(1.1)}.bus-list{display:flex;flex-direction:column;gap:.5rem;max-height:150px;overflow-y:auto}.bus-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#0003;border:1px solid rgba(100,108,255,.2);border-radius:6px;font-size:.85rem;transition:all .2s}.bus-item:hover{background:#0000004d;border-color:#646cff66}.bus-icon{font-size:1rem}.bus-name{flex:1;color:#ffffffe6}.node-actions{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.btn-create-node{padding:.75rem;border:none;border-radius:6px;color:#fff;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.4rem}.btn-create-node.pcan{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-create-node.pcan:hover:not(:disabled){background:linear-gradient(135deg,#d97706,#b45309);box-shadow:0 4px 12px #f59e0b4d}.btn-create-node.virtual{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.btn-create-node.virtual:hover:not(:disabled){background:linear-gradient(135deg,#7c3aed,#6d28d9);box-shadow:0 4px 12px #8b5cf64d}.btn-create-node:disabled{opacity:.4;cursor:not-allowed}.node-list{display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto}.node-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#0003;border:1px solid rgba(100,108,255,.2);border-radius:6px;transition:all .2s}.node-item:hover{background:#0000004d;border-color:#646cff66}.node-info{flex:1;display:flex;flex-direction:column;gap:.4rem}.node-name{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:600;color:#ffffffe6}.node-icon{font-size:1rem}.node-status{display:flex;align-items:center;gap:.4rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;color:#fff9}.status-dot{width:6px;height:6px;border-radius:50%;background:#ffffff4d}.node-status.status-connected .status-dot{background:#34d399;box-shadow:0 0 6px #34d39999}.node-status.status-connecting .status-dot{background:#fbbf24;animation:pulse 1s ease-in-out infinite}.node-status.status-error .status-dot{background:#ef4444}.node-status.status-disconnected .status-dot{background:#6b7280}.node-item.disconnected{opacity:.6;border-style:dashed}.node-item.disconnected .node-name{color:#ffffff80}.btn-reconnect{padding:.25rem .5rem;border-radius:4px;background:#646cff33;border:1px solid rgba(100,108,255,.4);color:#fffc;cursor:pointer;font-size:.7rem;font-weight:600;text-transform:uppercase;transition:all .2s}.btn-reconnect:hover{background:#646cff66;border-color:#646cff99}.btn-remove-node{padding:0;width:24px;height:24px;border-radius:50%;background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-remove-node:hover{background:#ef4444;color:#fff;transform:scale(1.1)}.no-items{text-align:center;padding:1rem;font-size:.8rem;color:#ffffff80}.no-items p{margin:.25rem 0}.no-items .hint{font-size:.75rem;color:#fff6;font-style:italic}.manager-info{margin-top:.5rem;padding-top:1rem;border-top:1px solid rgba(100,108,255,.2);display:flex;flex-direction:column;gap:.5rem}.info-row{display:flex;justify-content:space-between;font-size:.8rem}.info-label{color:#fff9}.info-value{color:#ffffffe6;font-weight:600;font-family:Monaco,Courier New,monospace}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}.modal-content{background:#2a2a2a;border-radius:12px;padding:2rem;width:90%;max-width:600px;box-shadow:0 8px 32px #0006}.modal-content h2{margin:0 0 .5rem;color:#646cff;font-size:1.5rem}.modal-subtitle{margin:0 0 1.5rem;color:#fff9;font-size:.9rem}.adapter-options{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.adapter-option{display:flex;align-items:center;gap:1rem;padding:1rem;background:#1a1a1a;border:2px solid #333;border-radius:8px;cursor:pointer;transition:all .2s}.adapter-option:hover{border-color:#646cff;background:#252525}.adapter-option.selected{border-color:#646cff;background:#646cff1a}.option-icon{font-size:2rem;width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:#333;border-radius:8px}.option-content{flex:1}.option-content h3{margin:0 0 .25rem;color:#ffffffe6;font-size:1.1rem}.option-content p{margin:0;color:#fff9;font-size:.85rem}.option-badge{display:inline-block;padding:.25rem .75rem;background:#646cff33;color:#646cff;border-radius:12px;font-size:.75rem;font-weight:600;margin-top:.5rem}.option-badge.disabled{background:#ffffff1a;color:#ffffff80}.modal-actions{display:flex;gap:1rem;justify-content:flex-end}.btn-cancel,.btn-primary{padding:.6rem 1.5rem;border:none;border-radius:6px;font-size:.95rem;cursor:pointer;transition:all .2s}.btn-cancel{background:transparent;color:#ffffffb3;border:1px solid #444}.btn-cancel:hover{background:#ffffff0d;color:#ffffffe6}.btn-primary{background:#646cff;color:#fff}.btn-primary:hover:not(:disabled){background:#535bf2}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.grid-topology-canvas{position:relative;width:100%;height:100%;background:#1a1a1a;background-image:linear-gradient(rgba(255,255,255,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.1) 1px,transparent 1px);background-size:20px 20px;overflow:auto;-webkit-user-select:none;user-select:none;outline:none;touch-action:none}.topology-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.topology-svg circle,.topology-svg line{pointer-events:all}.wire-line{cursor:default}.wire-line-drawing{cursor:crosshair}.topology-node,.topology-bus{position:absolute;background:#2d2d2d;border:2px solid #444;border-radius:8px;padding:8px;width:120px;height:80px;box-sizing:border-box;box-shadow:0 2px 8px #0000004d;transition:box-shadow .2s}.topology-node:hover,.topology-bus:hover{box-shadow:0 4px 12px #646cff66}.topology-bus{background:#2a2d3a;border-color:#646cff}.node-content,.bus-content{text-align:center;pointer-events:none}.node-title,.bus-title{font-weight:600;color:#fff;font-size:.9rem;margin-bottom:4px}.node-status{font-size:.75rem;color:#888}.port{position:absolute;width:12px;height:12px;background:#666;border:2px solid #fff;border-radius:50%;cursor:pointer;transition:all .2s;z-index:10}.port:hover{background:#4caf50;transform:scale(1.3)}.port.active{background:#ff9800;animation:pulse 1s infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}.connection-hint{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:#ff9800e6;color:#fff;padding:8px 16px;border-radius:4px;font-size:.9rem;z-index:1000;box-shadow:0 2px 8px #0000004d}.draggable-window{position:fixed;background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid rgba(100,108,255,.3);border-radius:8px;box-shadow:0 8px 32px #0006;display:flex;flex-direction:column;overflow:hidden;transition:box-shadow .2s}.draggable-window:hover{box-shadow:0 12px 48px #646cff33}.window-header{background:#646cff1a;padding:.75rem 1rem;cursor:move;-webkit-user-select:none;user-select:none;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(100,108,255,.2);flex-shrink:0}.window-title{color:#fffffff2;font-weight:600;font-size:.9rem;letter-spacing:.5px}.window-title.editable{cursor:text}.window-title.editable:hover{text-decoration:underline;text-decoration-style:dotted}.window-title-input{background:#ffffff1a;border:1px solid var(--primary, #646cff);border-radius:4px;color:inherit;font-size:inherit;font-weight:inherit;padding:2px 6px;margin:-3px 0;width:200px;max-width:60%;outline:none}.window-title-input:focus{background:#ffffff26;box-shadow:0 0 0 2px #646cff4d}.window-close{background:transparent;border:none;color:#fff9;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.window-close:hover{background:#ef444433;color:#ef4444}.window-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.window-resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0%,transparent 50%,rgba(100,108,255,.3) 50%,rgba(100,108,255,.3) 100%)}.window-resize-handle:hover{background:linear-gradient(135deg,transparent 0%,transparent 50%,rgba(100,108,255,.5) 50%,rgba(100,108,255,.5) 100%)}.can-node-instance{display:flex;flex-direction:column;gap:.5rem;height:100%;padding:.5rem;color:#ffffffe6;font-family:Monaco,Courier New,monospace;overflow:auto}.instance-error{padding:.5rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:4px;color:#ef4444;font-size:.85rem}.adapter-info{padding:.75rem;background:#fbbf241a;border:1px solid rgba(251,191,36,.3);border-radius:4px;color:#fbbf24;font-size:.85rem;display:flex;align-items:center;gap:.5rem}.adapter-info .info-icon{font-size:1rem}.stats-bar{display:flex;gap:1rem;padding:.35rem .5rem;background:#646cff0d;border-radius:4px;border:1px solid rgba(100,108,255,.2)}.stat{display:flex;gap:.35rem;align-items:center}.stat-label{font-size:.65rem;color:#fff9;text-transform:uppercase;letter-spacing:1px}.stat-value{font-size:.9rem;font-weight:700;font-family:Monaco,Courier New,monospace}.tx-count{color:#60a5fa}.rx-count{color:#34d399}.section{border:1px solid rgba(100,108,255,.2);border-radius:4px;padding:.5rem;background:#0003}.section h4{margin:0 0 .35rem;font-size:.7rem;text-transform:uppercase;letter-spacing:1.5px;color:#fffc}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}.section-header h4{margin:0}.form-row{margin-bottom:.35rem}.form-row label{display:block;margin-bottom:.15rem;color:#ffffffb3;font-size:.65rem;text-transform:uppercase;letter-spacing:.5px}.form-row input[type=text],.form-row input[type=number]{width:100%;background:#0000004d;border:1px solid rgba(100,108,255,.3);color:#fffffff2;padding:.3rem .4rem;border-radius:4px;font-family:Monaco,Courier New,monospace;font-size:.8rem}.form-row input:focus{outline:none;border-color:#646cff99;box-shadow:0 0 0 2px #646cff1a}.form-row input:disabled{opacity:.5;cursor:not-allowed}.checkbox-row label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.checkbox-row input[type=checkbox]{width:auto;cursor:pointer}button{padding:.6rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .2s}.btn-send{width:100%;background:linear-gradient(135deg,#60a5fa,#3b82f6);color:#fff}.btn-send:hover:not(:disabled){background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 4px 12px #3b82f64d}.btn-send:disabled{opacity:.4;cursor:not-allowed}.btn-start{width:100%;background:linear-gradient(135deg,#34d399,#10b981);color:#fff}.btn-start:hover{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 12px #10b9814d}.btn-stop{width:100%;background:linear-gradient(135deg,#f87171,#ef4444);color:#fff}.btn-stop:hover{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 4px 12px #ef44444d}.btn-clear{padding:.4rem .8rem;background:#646cff1a;color:#ffffffb3;border:1px solid rgba(100,108,255,.3);font-size:.75rem}.btn-clear:hover{background:#646cff33;color:#ffffffe6}.cyclic-controls{margin-top:.5rem}.rx-messages{max-height:200px;overflow-y:auto;background:#0000004d;border:1px solid rgba(100,108,255,.2);border-radius:4px;padding:.5rem}.rx-messages::-webkit-scrollbar{width:8px}.rx-messages::-webkit-scrollbar-track{background:#0003;border-radius:4px}.rx-messages::-webkit-scrollbar-thumb{background:#646cff4d;border-radius:4px}.rx-messages::-webkit-scrollbar-thumb:hover{background:#646cff80}.no-messages{text-align:center;padding:2rem;color:#fff6;font-size:.85rem}.rx-message{display:grid;grid-template-columns:40px 80px 1fr;gap:.75rem;padding:.5rem;margin-bottom:.25rem;background:#0000004d;border-radius:3px;font-size:.8rem;border-left:3px solid transparent}.rx-message.tx{border-left-color:#60a5fa}.rx-message.rx{border-left-color:#34d399}.msg-type{font-weight:700;font-size:.7rem}.rx-message.tx .msg-type{color:#60a5fa}.rx-message.rx .msg-type{color:#34d399}.msg-id{font-family:Monaco,Courier New,monospace;color:#ffffffe6}.msg-data{font-family:Monaco,Courier New,monospace;color:#ffffffb3}.dbc-section{padding:.35rem .5rem}.dbc-section h4{display:inline;margin-right:.5rem;font-size:.65rem}.dbc-controls{display:flex;gap:.5rem;align-items:center}.btn-dbc{flex:1;padding:.5rem .75rem;background:#646cff1a;border:1px solid rgba(100,108,255,.3);border-radius:4px;color:#ffffffb3;font-size:.8rem;font-family:Monaco,Courier New,monospace;cursor:pointer;transition:all .2s;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-dbc:hover{background:#646cff33;border-color:#646cff80;color:#ffffffe6}.btn-dbc.loaded{background:#4caf5026;border-color:#4caf5066;color:#81c784}.btn-dbc-view{width:28px;height:28px;padding:0;background:#646cff1a;border:1px solid rgba(100,108,255,.3);border-radius:4px;color:#646cffcc;font-size:.9rem;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-dbc-view:hover{background:#646cff33;border-color:#646cff80;color:#9fa8da}.btn-dbc-remove{width:28px;height:28px;padding:0;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:4px;color:#ef4444b3;font-size:1.1rem;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-dbc-remove:hover{background:#ef444433;border-color:#ef444480;color:#ef5350}.dbc-info{margin-top:.25rem;font-size:.6rem;color:#ffffff80;font-family:Monaco,Courier New,monospace}.rename-section{padding:.5rem .75rem;background:transparent;border:none}.rename-row{display:flex;align-items:center}.name-display{display:flex;align-items:center;gap:.5rem;width:100%}.current-name{font-size:1rem;font-weight:600;color:#ffffffe6;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-rename{width:28px;height:28px;padding:0;background:#646cff1a;border:1px solid rgba(100,108,255,.2);border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;opacity:.6}.btn-rename:hover{background:#646cff33;border-color:#646cff66;opacity:1}.rename-input-container{display:flex;align-items:center;gap:.25rem;width:100%}.rename-input{flex:1;background:#0006;border:1px solid rgba(100,108,255,.5);color:#fffffff2;padding:.4rem .6rem;border-radius:4px;font-family:inherit;font-size:1rem;font-weight:600}.rename-input:focus{outline:none;border-color:#646cffcc;box-shadow:0 0 0 2px #646cff26}.btn-rename-confirm,.btn-rename-cancel{width:28px;height:28px;padding:0;border-radius:4px;font-size:.9rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-rename-confirm{background:#4caf5033;border:1px solid rgba(76,175,80,.4);color:#81c784}.btn-rename-confirm:hover{background:#4caf504d;border-color:#4caf5099}.btn-rename-cancel{background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#ef5350}.btn-rename-cancel:hover{background:#ef444440;border-color:#ef444480}.tx-messages-list{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem;max-height:250px;overflow-y:auto}.tx-message-item{display:grid;grid-template-columns:18px 65px 1fr auto 100px;gap:.25rem;padding:.2rem .4rem;min-height:24px;align-items:center;background:#0000004d;border:1px solid rgba(100,108,255,.2);border-radius:3px;transition:all .2s}.tx-message-item.running{border-color:#34d39980;background:#34d3991a}.tx-message-info{display:contents}.tx-can-id{font-family:Monaco,Courier New,monospace;font-weight:600;color:#60a5fa;font-size:.75rem}.tx-data{font-family:Monaco,Courier New,monospace;color:#fffc;font-size:.7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-interval{font-family:Monaco,Courier New,monospace;color:#ffffff80;font-size:.65rem;padding:.1rem .3rem;background:#646cff26;border-radius:3px}.tx-message-actions{display:flex;gap:.15rem}.btn-tx-send,.btn-tx-cyclic,.btn-tx-remove{width:22px;height:22px;padding:0;border-radius:3px;font-size:.75rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-tx-send{background:#60a5fa26;border:1px solid rgba(96,165,250,.3);color:#60a5fa}.btn-tx-send:hover:not(:disabled){background:#60a5fa40;border-color:#60a5fa80}.btn-tx-send:disabled{opacity:.4;cursor:not-allowed}.btn-tx-send-raw{background:#ffffff14;border:1px solid rgba(255,255,255,.2);color:#fff9}.btn-tx-send-raw:hover:not(:disabled){background:#ffffff26;border-color:#ffffff59;color:#ffffffd9}.btn-tx-cyclic{background:#34d39926;border:1px solid rgba(52,211,153,.3);color:#34d399}.btn-tx-cyclic:hover{background:#34d39940;border-color:#34d39980}.btn-tx-cyclic.running{background:#ef444426;border-color:#ef444466;color:#ef5350}.btn-tx-cyclic.running:hover{background:#ef444440;border-color:#ef444480}.btn-tx-remove{background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#ef444499}.btn-tx-remove:hover:not(:disabled){background:#ef444433;border-color:#ef444466;color:#ef5350}.btn-tx-remove:disabled{opacity:.4;cursor:not-allowed}.tx-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}.tx-section-header h4{margin:0}.tx-section-actions{display:flex;gap:.35rem}.btn-tx-add{padding:.2rem .4rem;background:#60a5fa26;border:1px solid rgba(96,165,250,.3);border-radius:3px;color:#60a5fa;font-size:.65rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-tx-add:hover{background:#60a5fa40;border-color:#60a5fa80;color:#93c5fd}.btn-dbc-import{padding:.2rem .4rem;background:#4caf5026;border:1px solid rgba(76,175,80,.3);border-radius:3px;color:#81c784;font-size:.65rem;font-weight:600;cursor:pointer;transition:all .2s;text-transform:none;letter-spacing:normal}.btn-dbc-import:hover{background:#4caf5040;border-color:#4caf5080;color:#a5d6a7}.tx-empty-state{padding:.75rem;text-align:center;color:#fff6;font-size:.7rem;font-style:italic}.tx-name{font-size:.65rem;color:#ffffff80;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-tx-edit{width:22px;height:22px;padding:0;border-radius:3px;font-size:.7rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;background:#646cff1a;border:1px solid rgba(100,108,255,.2);color:#646cffb3}.btn-tx-edit:hover:not(:disabled){background:#646cff33;border-color:#646cff66;color:#9fa8da}.btn-tx-edit:disabled{opacity:.4;cursor:not-allowed}.tx-dbc-link{font-size:.65rem;opacity:.7;cursor:help}.tx-expand{font-size:.6rem;color:#ffffff80;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.tx-expand:hover{color:#fffc}.tx-expand.expanded{color:#81c784}.tx-signal-rows{grid-column:1 / -1;display:flex;flex-direction:column;margin-top:.15rem;padding-top:.15rem;border-top:1px solid rgba(100,108,255,.1)}.tx-signal-row{display:grid;grid-template-columns:20px 120px 80px 1fr;padding:1px 0;font-size:.65rem;background:#646cff0a;align-items:center}.tx-signal-row .signal-name{color:#ffffffd9;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-signal-row .signal-value{color:#81c784;font-weight:600;font-family:Monaco,Courier New,monospace}.tx-signal-row .signal-raw{color:#fff6;font-size:.6rem;font-family:Monaco,Courier New,monospace}.script-section{background:#646cff0d;border:1px solid rgba(100,108,255,.2);border-radius:4px;padding:.4rem .5rem}.script-section-header{display:flex;justify-content:space-between;align-items:center}.script-section-header h4{margin:0;font-size:.7rem;font-weight:600;color:#ffffffe6}.script-controls{display:flex;align-items:center;gap:.5rem}.script-status-indicator{font-size:.65rem;padding:.15rem .4rem;border-radius:3px;background:#ffffff1a;color:#ffffff80}.script-status-indicator.active{background:#4caf5033;color:#4caf50}.btn-script-edit{padding:.25rem .5rem;font-size:.7rem;background:#646cff33;border:1px solid rgba(100,108,255,.4);border-radius:3px;color:#a5a8ff;cursor:pointer;transition:all .15s}.btn-script-edit:hover{background:#646cff4d;border-color:#646cff99}.btn-script-delete{width:22px;height:22px;padding:0;font-size:.85rem;background:#ef444426;border:1px solid rgba(239,68,68,.3);border-radius:3px;color:#ef4444b3;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center}.btn-script-delete:hover{background:#ef444440;border-color:#ef444480;color:#ef5350}.script-info{margin-top:.25rem;font-size:.6rem;color:#ffffff80}.mode-section{padding:.25rem .5rem;background:transparent;border:none;border-bottom:1px solid rgba(100,108,255,.15)}.mode-toggle-container{display:flex;align-items:center;gap:.5rem}.mode-toggle-label{font-size:.65rem;color:#fff9;text-transform:uppercase;letter-spacing:.5px}.mode-toggle{display:flex;background:#0000004d;border:1px solid rgba(100,108,255,.2);border-radius:3px;overflow:hidden}.mode-toggle-btn{padding:.25rem .5rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:transparent;border:none;color:#ffffff80;cursor:pointer;transition:all .2s}.mode-toggle-btn:first-child{border-right:1px solid rgba(100,108,255,.2)}.mode-toggle-btn:hover:not(.active){background:#646cff1a;color:#ffffffb3}.mode-toggle-btn.active{background:#646cff40;color:#a5a8ff}.mode-toggle-btn.active.virtual{background:#60a5fa40;color:#60a5fa}.mode-toggle-btn.active.real{background:#4caf5040;color:#81c784}.mode-info{font-size:.6rem;color:#fff6;margin-left:auto}.real-mode-notice{padding:.5rem;background:#4caf501a;border:1px solid rgba(76,175,80,.2);border-radius:4px;color:#4caf50cc;font-size:.7rem;text-align:center}.dbc-viewer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}.dbc-viewer-modal{background:var(--bg-secondary, #1e1e2e);border:1px solid rgba(255,255,255,.15);border-radius:8px;width:95%;max-width:900px;height:65vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0006}.dbc-viewer-header{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.dbc-viewer-title{font-weight:600;color:#9fa8da;font-family:Courier New,monospace}.dbc-viewer-stats{color:#ffffff80;font-size:.75rem}.dbc-viewer-node{color:#fff6;font-size:.7rem;padding:.2rem .5rem;background:#646cff1a;border-radius:3px}.dbc-viewer-close{margin-left:auto;background:transparent;border:none;color:#ffffff80;font-size:1.5rem;cursor:pointer;padding:0 .5rem;line-height:1}.dbc-viewer-close:hover{color:#fff}.dbc-viewer-body{display:flex;flex:1;min-height:0;overflow:hidden}.dbc-sidebar{width:220px;min-width:220px;flex-shrink:0;border-right:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;background:#0003;overflow:hidden}.dbc-sidebar-header{padding:.5rem .75rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#ffffff80;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.dbc-sidebar-list{flex:1;overflow-y:auto;overflow-x:hidden}.dbc-sidebar-item{display:grid;grid-template-columns:42px 1fr;gap:.3rem;padding:.35rem .5rem;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.03);transition:background .1s}.dbc-sidebar-item:hover{background:#646cff1a}.dbc-sidebar-item.selected{background:#646cff33;border-left:3px solid #646cff}.dbc-sidebar-id{color:#64b5f6;font-family:Courier New,monospace;font-size:.7rem;font-weight:600}.dbc-sidebar-name{color:#ffffffe6;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dbc-sidebar-empty{padding:2rem;text-align:center;color:#fff6;font-size:.8rem}.dbc-detail{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:1rem}.dbc-detail-header{display:flex;align-items:baseline;gap:.75rem;margin-bottom:.5rem}.dbc-detail-id{color:#64b5f6;font-family:Courier New,monospace;font-size:1.1rem;font-weight:700}.dbc-detail-name{color:#fff;font-size:1rem;font-weight:600}.dbc-detail-meta{display:flex;gap:1.5rem;font-size:.75rem;color:#fff9;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.1)}.dbc-detail-comment{font-size:.8rem;color:#fff9;font-style:italic;margin-bottom:1rem;padding:.6rem .8rem;background:#646cff14;border-radius:4px;border-left:3px solid rgba(100,108,255,.4)}.dbc-detail-signals-wrapper{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0;background:#0000001a;border-radius:4px;overflow:auto}.dbc-detail-signals-header{display:grid;grid-template-columns:150px 70px 50px 110px 90px 60px;gap:.5rem;padding:.5rem .75rem;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#fff6;background:#0000004d;flex-shrink:0;position:sticky;top:0;z-index:1;min-width:max-content}.dbc-detail-signals{min-width:max-content}.dbc-detail-signals::-webkit-scrollbar{width:8px}.dbc-detail-signals::-webkit-scrollbar-track{background:#0003}.dbc-detail-signals::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}.dbc-detail-signals::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.dbc-detail-signal{display:grid;grid-template-columns:150px 70px 50px 110px 90px 60px;gap:.5rem;padding:.5rem .75rem;font-family:Courier New,monospace;font-size:.75rem;border-bottom:1px solid rgba(255,255,255,.05);min-width:max-content}.dbc-detail-signal:hover{background:#646cff0d}.dbc-detail-signal .dbc-sig-name{color:#fffffff2;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dbc-detail-signal .dbc-sig-bits{color:#81c784}.dbc-detail-signal .dbc-sig-order{color:#ffffff80}.dbc-detail-signal .dbc-sig-factor{color:#ffa726;font-size:.7rem}.dbc-detail-signal .dbc-sig-range{color:#ffffff80;font-size:.7rem}.dbc-detail-signal .dbc-sig-unit{color:#9fa8da}.dbc-detail-empty{padding:1.5rem;text-align:center;color:#fff6;font-size:.8rem}.dbc-detail-placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:#fff6;font-size:.9rem}@media(max-width:800px){.dbc-detail-signals-header,.dbc-detail-signal{grid-template-columns:minmax(100px,1.5fr) 60px 45px 100px}.dbc-detail-signals-header span:nth-child(5),.dbc-detail-signals-header span:nth-child(6),.dbc-detail-signal .dbc-sig-range,.dbc-detail-signal .dbc-sig-unit{display:none}}.tx-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.tx-editor-modal{background:linear-gradient(145deg,#1a1a2e,#16213e);border:1px solid rgba(255,255,255,.1);border-radius:12px;box-shadow:0 20px 60px #00000080;width:90%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.tx-editor-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1);background:#0003}.tx-editor-header h3{margin:0;font-size:1.1rem;font-weight:600;color:#fff}.tx-editor-header .btn-close{background:transparent;border:none;color:#fff9;font-size:1.5rem;cursor:pointer;padding:0;line-height:1;transition:color .2s}.tx-editor-header .btn-close:hover{color:#fff}.tx-editor-content{padding:1.25rem;overflow-y:auto;flex:1}.tx-editor-error{background:#f4433633;border:1px solid rgba(244,67,54,.3);color:#f44336;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.tx-editor-section{margin-bottom:1.5rem}.tx-editor-section h4{margin:0 0 .75rem;font-size:.85rem;font-weight:600;color:#ffffffb3;text-transform:uppercase;letter-spacing:.05em}.tx-editor-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.tx-editor-section-header h4{margin:0}.tx-editor-mode-toggle{display:flex;gap:0;background:#ffffff0d;border-radius:6px;overflow:hidden}.tx-editor-mode-toggle button{background:transparent;border:none;color:#ffffff80;padding:.4rem .75rem;font-size:.8rem;cursor:pointer;transition:all .2s}.tx-editor-mode-toggle button:hover{color:#fffc}.tx-editor-mode-toggle button.active{background:#646cff4d;color:#fff}.tx-editor-dbc-link-info{font-size:.75rem;color:#4caf50e6;background:#4caf5026;padding:.3rem .6rem;border-radius:4px}.tx-editor-row{margin-bottom:.75rem}.tx-editor-row label{display:block;font-size:.85rem;color:#ffffffb3;margin-bottom:.35rem}.tx-editor-row input[type=text],.tx-editor-row input[type=number]{width:100%;padding:.6rem .75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:.9rem;transition:border-color .2s}.tx-editor-row input:focus{outline:none;border-color:#646cff80}.tx-editor-row .mono-input{font-family:JetBrains Mono,Fira Code,monospace;letter-spacing:.05em}.tx-editor-row .input-hint{display:block;font-size:.75rem;color:#fff6;margin-top:.25rem}.tx-editor-row.checkbox-row label{display:flex;align-items:center;gap:.5rem;cursor:pointer;color:#fff}.tx-editor-row.checkbox-row input[type=checkbox]{width:auto}.tx-editor-preview{background:#0000004d;border-radius:6px;padding:.75rem;margin-top:.75rem}.tx-editor-preview label{display:block;font-size:.75rem;color:#ffffff80;margin-bottom:.35rem;text-transform:uppercase}.tx-editor-preview code{font-family:JetBrains Mono,Fira Code,monospace;color:#4caf50;font-size:.95rem}.tx-editor-signals{display:flex;flex-direction:column;gap:1rem}.signal-input{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.75rem}.signal-input-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.signal-name{font-weight:600;color:#fff;font-size:.9rem}.signal-unit{font-size:.8rem;color:#ffffff80;background:#ffffff1a;padding:.15rem .4rem;border-radius:4px}.signal-numeric-input{display:flex;align-items:center;gap:.5rem}.signal-slider{flex:1;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border-radius:3px;outline:none}.signal-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:linear-gradient(135deg,#646cff,#5558e3);border-radius:50%;cursor:pointer}.signal-slider::-moz-range-thumb{width:16px;height:16px;background:linear-gradient(135deg,#646cff,#5558e3);border-radius:50%;cursor:pointer;border:none}.signal-number{width:110px;padding:.4rem .5rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:4px;color:#fff;font-family:JetBrains Mono,monospace;font-size:.85rem;text-align:right}.signal-range{font-size:.75rem;color:#fff6;white-space:nowrap}.signal-enum-select{width:100%;padding:.6rem .75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:.9rem;cursor:pointer}.signal-enum-select option{background:#1a1a2e;color:#fff}.signal-comment{font-size:.75rem;color:#fff6;margin-top:.35rem;font-style:italic}.signal-range-auto{font-size:.65rem;color:#ff9800cc;background:#ff980026;padding:.1rem .35rem;border-radius:3px;text-transform:uppercase;font-weight:600}.tx-editor-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1);background:#0003}.tx-editor-footer button{padding:.6rem 1.25rem;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.tx-editor-footer .btn-cancel{background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3}.tx-editor-footer .btn-cancel:hover{background:#ffffff0d;color:#fff}.tx-editor-footer .btn-save{background:linear-gradient(135deg,#646cff,#5558e3);border:none;color:#fff}.tx-editor-footer .btn-save:hover{filter:brightness(1.1)}.tx-add-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.tx-add-modal{background:#1a1a2e;border:1px solid rgba(100,108,255,.3);border-radius:6px;width:320px;max-width:90vw;box-shadow:0 8px 32px #0006}.tx-add-header{display:flex;justify-content:space-between;align-items:center;padding:.6rem .75rem;border-bottom:1px solid rgba(100,108,255,.2)}.tx-add-header h3{margin:0;font-size:.8rem;font-weight:600;color:#ffffffe6;text-transform:uppercase;letter-spacing:1px}.tx-add-header .btn-close{width:22px;height:22px;padding:0;background:#ffffff1a;border:none;border-radius:3px;color:#fff9;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.tx-add-header .btn-close:hover{background:#ef44444d;color:#ef5350}.tx-add-content{padding:.75rem}.tx-add-error{padding:.4rem .5rem;margin-bottom:.5rem;background:#ef444426;border:1px solid rgba(239,68,68,.3);border-radius:3px;color:#ef5350;font-size:.7rem}.tx-add-row{margin-bottom:.5rem}.tx-add-row-inline{display:flex;gap:.5rem;margin-bottom:.5rem}.tx-add-field{flex:0 0 80px}.tx-add-field-name{flex:1}.tx-add-field label{display:block;margin-bottom:.2rem;color:#ffffffb3;font-size:.65rem;text-transform:uppercase;letter-spacing:.5px}.tx-add-field input{width:100%;background:#0000004d;border:1px solid rgba(100,108,255,.3);color:#fffffff2;padding:.4rem .5rem;border-radius:4px;font-family:Monaco,Courier New,monospace;font-size:.8rem}.tx-add-field input:focus{outline:none;border-color:#646cff99;box-shadow:0 0 0 2px #646cff26}.tx-add-row label{display:block;margin-bottom:.2rem;color:#ffffffb3;font-size:.65rem;text-transform:uppercase;letter-spacing:.5px}.tx-add-row input[type=text],.tx-add-row input[type=number]{width:100%;background:#0000004d;border:1px solid rgba(100,108,255,.3);color:#fffffff2;padding:.4rem .5rem;border-radius:4px;font-family:Monaco,Courier New,monospace;font-size:.8rem}.tx-add-row input:focus{outline:none;border-color:#646cff99;box-shadow:0 0 0 2px #646cff26}.tx-add-row .mono-input{font-family:Monaco,Courier New,monospace;letter-spacing:.5px}.tx-add-hint{display:block;margin-top:.15rem;font-size:.6rem;color:#fff6}.tx-add-cyclic{display:flex;align-items:center;gap:.75rem}.tx-add-cyclic>label{display:flex;align-items:center;gap:.35rem;margin-bottom:0;cursor:pointer}.tx-add-cyclic input[type=checkbox]{width:auto;cursor:pointer}.tx-add-interval{display:flex;align-items:center;gap:.25rem}.tx-add-interval input{width:70px;padding:.3rem .4rem;font-size:.75rem}.tx-add-interval span{font-size:.65rem;color:#ffffff80}.tx-add-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.6rem .75rem;border-top:1px solid rgba(100,108,255,.15)}.tx-add-footer button{padding:.4rem .75rem;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s}.tx-add-footer .btn-cancel{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ffffffb3}.tx-add-footer .btn-cancel:hover{background:#ffffff26;color:#ffffffe6}.tx-add-footer .btn-add{background:linear-gradient(135deg,#60a5fa,#3b82f6);border:none;color:#fff}.tx-add-footer .btn-add:hover{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 2px 8px #3b82f64d}.dbc-import-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.dbc-import-modal{background:linear-gradient(145deg,#1a1a2e,#16213e);border:1px solid rgba(255,255,255,.1);border-radius:12px;box-shadow:0 20px 60px #00000080;width:90%;max-width:550px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.dbc-import-modal.dbc-import-empty{max-width:400px}.dbc-import-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1);background:#0003}.dbc-import-header h3{margin:0;font-size:1.1rem;font-weight:600;color:#fff}.dbc-import-header .dbc-name{font-size:.85rem;color:#ffffff80;background:#ffffff1a;padding:.2rem .5rem;border-radius:4px;font-family:JetBrains Mono,monospace}.dbc-import-header .btn-close{margin-left:auto;background:transparent;border:none;color:#fff9;font-size:1.5rem;cursor:pointer;padding:0;line-height:1;transition:color .2s}.dbc-import-header .btn-close:hover{color:#fff}.dbc-import-content{padding:1rem 1.25rem;overflow:hidden;display:flex;flex-direction:column;flex:1}.dbc-import-no-dbc{text-align:center;padding:2rem 1rem}.dbc-import-no-dbc p{margin:0 0 .5rem;color:#fffc}.dbc-import-no-dbc .hint{font-size:.9rem;color:#ffffff80}.dbc-import-controls{display:flex;gap:.75rem;margin-bottom:1rem}.dbc-import-search{flex:1;padding:.6rem .75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:.9rem}.dbc-import-search:focus{outline:none;border-color:#646cff80}.dbc-import-search::placeholder{color:#ffffff4d}.btn-select-all{padding:.6rem 1rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fffc;font-size:.85rem;cursor:pointer;white-space:nowrap;transition:all .2s}.btn-select-all:hover{background:#ffffff26;color:#fff}.dbc-import-list{flex:1;overflow-y:auto;margin:0 -.5rem;padding:0 .5rem;max-height:350px}.dbc-import-no-results{text-align:center;padding:2rem;color:#ffffff80}.dbc-import-item{display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;margin-bottom:.35rem;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:6px;cursor:pointer;transition:all .15s}.dbc-import-item:hover{background:#ffffff0f;border-color:#ffffff1a}.dbc-import-item.selected{background:#646cff26;border-color:#646cff4d}.dbc-import-item input[type=checkbox]{width:16px;height:16px;accent-color:#646cff}.dbc-import-item .msg-id{font-family:JetBrains Mono,monospace;font-size:.85rem;color:#4caf50;font-weight:600;min-width:60px}.dbc-import-item .msg-name{flex:1;font-size:.9rem;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dbc-import-item .msg-info{font-size:.8rem;color:#fff6;white-space:nowrap}.dbc-import-selection-info{margin-top:.75rem;font-size:.85rem;color:#ffffff80;text-align:center}.dbc-import-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1);background:#0003}.dbc-import-footer button{padding:.6rem 1.25rem;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.dbc-import-footer .btn-cancel{background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3}.dbc-import-footer .btn-cancel:hover{background:#ffffff0d;color:#fff}.dbc-import-footer .btn-import{background:linear-gradient(135deg,#4caf50,#388e3c);border:none;color:#fff;min-width:140px}.dbc-import-footer .btn-import:hover:not(:disabled){filter:brightness(1.1)}.dbc-import-footer .btn-import:disabled{opacity:.5;cursor:not-allowed}.script-help-panel{position:absolute;width:380px;background:var(--bg-secondary, #1e1e1e);border:1px solid var(--border-color, #3c3c3c);border-radius:8px;box-shadow:0 8px 24px #0006;z-index:100;overflow:hidden}.help-panel-header{display:flex;justify-content:space-between;align-items:center;padding:.6rem .75rem;background:var(--bg-tertiary, #252526);border-bottom:1px solid var(--border-color, #3c3c3c);cursor:move;-webkit-user-select:none;user-select:none}.help-panel-title{font-size:.9rem;font-weight:500;color:var(--text-primary, #cccccc)}.help-close-btn{background:transparent;border:none;color:var(--text-secondary, #9d9d9d);font-size:1.2rem;line-height:1;padding:.2rem .4rem;cursor:pointer;border-radius:4px;transition:all .15s}.help-close-btn:hover{background:#f4433633;color:#f44336}.help-content{padding:.5rem;max-height:500px;overflow-y:auto}.help-section{margin-bottom:.25rem;border-radius:4px;overflow:hidden;background:var(--bg-tertiary, #252526)}.help-section-header{display:flex;align-items:center;gap:.5rem;width:100%;padding:.6rem .75rem;background:transparent;border:none;color:var(--text-primary, #cccccc);font-size:.9rem;font-weight:500;cursor:pointer;text-align:left;transition:background .15s}.help-section-header:hover{background:var(--bg-hover, #2a2a2a)}.help-section-header.expanded{background:var(--bg-hover, #2a2a2a);border-bottom:1px solid var(--border-color, #3c3c3c)}.expand-icon{font-size:.7rem;color:var(--text-secondary, #9d9d9d);width:12px}.help-section-content{padding:.75rem;font-size:.85rem;color:var(--text-secondary, #9d9d9d)}.help-section-content p{margin:0 0 .5rem}.help-section-content h4{margin:.75rem 0 .25rem;font-size:.8rem;color:var(--text-primary, #cccccc)}.help-section-content h4:first-child{margin-top:0}.code-block{background:#0d0d0d;border:1px solid var(--border-color, #3c3c3c);border-radius:4px;padding:.6rem;font-family:Fira Code,Consolas,monospace;font-size:.8rem;line-height:1.4;color:#d4d4d4;white-space:pre;overflow-x:auto;margin:.5rem 0}.code-comment{color:#6a9955}.help-table{width:100%;border-collapse:collapse}.help-table td{padding:.4rem .5rem;border-bottom:1px solid var(--border-color, #3c3c3c);vertical-align:top}.help-table tr:last-child td{border-bottom:none}.help-table td:first-child{width:40%;white-space:nowrap}.help-table code{background:#646cff26;color:#9cdcfe;padding:.1rem .3rem;border-radius:3px;font-family:Fira Code,Consolas,monospace;font-size:.8rem}.help-note{font-style:italic;color:#9fa8da;font-size:.8rem;margin-top:.5rem!important}.script-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.script-editor{width:800px;max-width:90vw;height:600px;max-height:85vh;background:var(--bg-secondary, #1e1e1e);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080;border:1px solid var(--border-color, #3c3c3c)}.script-editor-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-color, #3c3c3c);background:var(--bg-tertiary, #252526);border-radius:8px 8px 0 0}.script-editor-header h2{margin:0;font-size:1rem;font-weight:500;color:var(--text-primary, #cccccc)}.script-editor-actions{display:flex;gap:.5rem;align-items:center}.script-enabled-toggle{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.85rem;color:var(--text-secondary, #9d9d9d);padding:.4rem .6rem;border-radius:4px;background:var(--bg-secondary, #1e1e1e)}.script-enabled-toggle:hover{background:var(--bg-hover, #2a2a2a)}.script-enabled-toggle input[type=checkbox]{width:14px;height:14px;cursor:pointer}.script-error{padding:.6rem 1rem;background:#f4433626;color:#f44336;font-size:.8rem;font-family:monospace;border-bottom:1px solid rgba(244,67,54,.3)}.script-editor-body{flex:1;overflow:hidden}.script-editor-footer{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-top:1px solid var(--border-color, #3c3c3c);background:var(--bg-tertiary, #252526);font-size:.75rem;color:var(--text-secondary, #9d9d9d);border-radius:0 0 8px 8px}.script-help{flex:1}.script-shortcuts{color:var(--text-tertiary, #6e6e6e);margin:0 1rem}.script-status{font-weight:600;padding:.25rem .5rem;border-radius:3px}.script-status.active{color:#4caf50;background:#4caf5026}.script-status.disabled{color:var(--text-tertiary, #6e6e6e);background:#6e6e6e26}.btn-save{background:var(--primary, #0e639c);color:#fff;border:none;padding:.4rem .75rem;border-radius:4px;cursor:pointer;font-size:.85rem;transition:opacity .15s}.btn-save:hover:not(:disabled){background:var(--primary-hover, #1177bb)}.btn-save:disabled{opacity:.5;cursor:not-allowed}.btn-help{background:transparent;border:1px solid var(--border-color, #3c3c3c);color:var(--text-secondary, #9d9d9d);padding:.4rem .7rem;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:600}.btn-help:hover{background:#646cff33;border-color:#646cff;color:#646cff}.btn-close{background:transparent;border:1px solid var(--border-color, #3c3c3c);color:var(--text-secondary, #9d9d9d);padding:.4rem .6rem;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:700}.btn-close:hover{background:#f4433633;border-color:#f44336;color:#f44336}.script-validation-errors{padding:.5rem 1rem;background:#f443361a;border-bottom:1px solid rgba(244,67,54,.2)}.validation-error{font-size:.8rem;color:#f44336;font-family:monospace;padding:.2rem 0}.script-validation-warnings{padding:.5rem 1rem;background:#ff98001a;border-bottom:1px solid rgba(255,152,0,.2)}.validation-warning{font-size:.8rem;color:#ff9800;font-family:monospace;padding:.2rem 0}.can-bus-monitor{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.monitor-toolbar{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;height:28px;flex-shrink:0;background:var(--bg-secondary);border-bottom:1px solid rgba(255,255,255,.1)}.toolbar-btn{padding:.15rem .4rem;background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:3px;color:#ffffffb3;cursor:pointer;font-size:.75rem;font-family:Courier New,monospace;line-height:1;min-width:24px}.toolbar-btn:hover{background:#ffffff1a}.toolbar-btn.paused{background:#4caf5033;border-color:#4caf5080;color:#81c784}.toolbar-btn.pause-mode-btn{font-size:.65rem;font-weight:600;min-width:20px;padding:.15rem .25rem}.toolbar-btn.pause-mode-btn.hard{background:#ef444433;border-color:#ef444480;color:#ef5350}.toolbar-separator{width:1px;height:16px;background:#fff3}.toolbar-filter{display:flex;align-items:center;gap:.25rem}.toolbar-filter input[type=checkbox]{margin:0;cursor:pointer}.filter-input{width:80px;padding:.1rem .3rem;background:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:3px;color:#fff;font-family:Courier New,monospace;font-size:.7rem}.filter-input:disabled{opacity:.5}.filter-input::placeholder{color:#ffffff4d}.toolbar-stats{font-family:Courier New,monospace;font-size:.7rem;color:#ffffff80;padding:0 .25rem;white-space:nowrap}.memory-indicator{transition:color .3s ease}.memory-indicator.warning{color:#ffa726}.memory-indicator.danger{color:#ef5350;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.toolbar-btn.scroll-btn{background:#646cff4d;border-color:#646cff80;color:#9fa8da;margin-left:auto;animation:pulse-scroll 1s ease-in-out infinite}.toolbar-btn.scroll-btn:hover{background:#646cff80}@keyframes pulse-scroll{0%,to{opacity:1}50%{opacity:.6}}.can-bus-monitor .rx-messages{flex:1;min-height:0;max-height:none;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary);border:none;border-radius:0;padding:0}.no-messages{display:flex;align-items:center;justify-content:center;height:100%;color:#ffffff4d;font-size:.8rem}.message-header{display:grid;grid-template-columns:20px 90px 28px 75px 18px 28px 1fr;gap:.25rem;padding:.15rem .4rem;font-family:Courier New,monospace;font-size:.65rem;font-weight:600;color:#fff6;border-bottom:1px solid rgba(255,255,255,.15);background:var(--bg-primary);height:20px;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0;align-items:center}.messages-list{flex:1;min-height:0;overflow-y:scroll;overflow-x:hidden}.messages-list::-webkit-scrollbar{width:12px}.messages-list::-webkit-scrollbar-track{background:#0003}.messages-list::-webkit-scrollbar-thumb{background:#646cff66;border-radius:6px;min-height:40px}.messages-list::-webkit-scrollbar-thumb:hover{background:#646cff99}.bus-message{display:grid;grid-template-columns:20px 90px 28px 75px 18px 28px 1fr;gap:.25rem;padding:.1rem .4rem;font-family:Courier New,monospace;font-size:.75rem;border-bottom:1px solid rgba(255,255,255,.03);min-height:20px;align-items:start;align-content:start}.bus-message:nth-child(2n){background:#ffffff05}.bus-message.tx{background:#646cff08}.bus-message.rx{background:#4caf5008}.bus-message .msg-time{color:#ffffff80;font-size:.7rem;overflow:hidden;text-overflow:ellipsis}.bus-message .msg-dir{font-size:.6rem;padding:.05rem .2rem;border-radius:2px;text-align:center;font-weight:600}.bus-message .msg-dir.rx{background:#4caf504d;color:#81c784}.bus-message .msg-dir.tx{background:#646cff4d;color:#9fa8da}.bus-message .msg-id{color:#64b5f6;font-weight:600;font-size:.7rem;overflow:hidden;text-overflow:ellipsis}.bus-message .msg-type{color:#ffffff80;font-size:.65rem;text-align:center}.bus-message .msg-dlc{color:#fff9;text-align:center;font-size:.7rem;display:flex;align-items:center;justify-content:center;gap:2px}.dlc-warning{color:#ffa726;font-size:.9rem;cursor:help;line-height:1}.bus-message .msg-data{color:#ffffffe6;font-weight:500;font-size:.7rem;overflow:hidden;text-overflow:ellipsis}.msg-expand{display:flex;align-items:center;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;color:#fff3;font-size:.7rem;font-weight:600;height:20px}.msg-expand.expandable{cursor:pointer;color:#646cffb3}.msg-expand.expandable:hover{color:#646cff}.signal-row{grid-column:1 / -1;display:grid;grid-template-columns:20px 1fr;padding:1px 0;font-size:.68rem;color:#ffffffb3;background:#646cff0a}.signal-row:last-child{border-bottom:1px solid rgba(100,108,255,.15);padding-bottom:3px;margin-bottom:2px}.signal-content{display:grid;grid-template-columns:140px 90px 70px 1fr;gap:.4rem;padding-left:4px;align-items:center}.signal-name{color:#ffffffd9;font-weight:500;font-family:Courier New,monospace}.signal-value{color:#81c784;font-family:Courier New,monospace;font-weight:600}.signal-value.invalid{color:#ffa726}.signal-raw{color:#fff6;font-size:.6rem;font-family:Courier New,monospace}.signal-comment{color:#ffffff59;font-size:.6rem;font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-dbc{background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:3px;padding:.15rem .5rem;font-size:.68rem;color:#fff9;cursor:pointer;transition:all .15s ease;font-family:Courier New,monospace}.btn-dbc:hover{background:#ffffff1a;color:#ffffffe6;border-color:#646cff80}.btn-dbc.loaded{background:#646cff26;border-color:#646cff66;color:#9fa8da}.project-selector{position:relative;z-index:1000}.project-selector-header{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#1a1a2ef2;border-bottom:1px solid rgba(100,108,255,.2)}.project-selector-button{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#646cff1a;border:1px solid rgba(100,108,255,.3);border-radius:6px;color:#ffffffe6;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;min-width:200px}.project-selector-button:hover{background:#646cff33;border-color:#646cff80;transform:translateY(-1px)}.project-icon{font-size:1rem}.project-name{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-arrow{font-size:.7rem;color:#fff9}.action-button{padding:.5rem .75rem;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s;border:1px solid transparent}.save-button{background:#22c55e1a;border-color:#22c55e4d;color:#22c55e}.save-button:hover{background:#22c55e33;border-color:#22c55e80;transform:translateY(-1px)}.new-button{background:#646cff1a;border-color:#646cff4d;color:#818cf8}.new-button:hover{background:#646cff33;border-color:#646cff80;transform:translateY(-1px)}.project-dropdown{position:absolute;top:100%;left:.5rem;width:400px;max-height:500px;background:#1a1a2efa;border:1px solid rgba(100,108,255,.3);border-radius:8px;box-shadow:0 8px 32px #00000080;margin-top:.5rem;display:flex;flex-direction:column;overflow:hidden;animation:dropdownSlideIn .2s ease-out}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.project-dropdown-search{padding:.75rem;border-bottom:1px solid rgba(100,108,255,.2)}.project-dropdown-search input{width:100%;padding:.5rem;background:#0000004d;border:1px solid rgba(100,108,255,.3);border-radius:6px;color:#ffffffe6;font-size:.85rem}.project-dropdown-search input:focus{outline:none;border-color:#646cff99}.project-dropdown-list{flex:1;overflow-y:auto;padding:.5rem 0}.project-dropdown-loading,.project-dropdown-empty{padding:2rem;text-align:center;color:#ffffff80;font-size:.85rem}.project-dropdown-item{padding:.75rem 1rem;cursor:pointer;transition:background .15s;border-left:3px solid transparent}.project-dropdown-item:hover{background:#646cff1a}.project-dropdown-item.active{background:#646cff26;border-left-color:#646cff}.project-item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem;position:relative}.project-active-indicator{color:#22c55e;font-weight:700;font-size:.9rem}.project-item-name{flex:1;font-weight:600;color:#fffffff2;font-size:.9rem}.project-rename-input{flex:1;padding:.25rem .5rem;background:#00000080;border:1px solid rgba(100,108,255,.5);border-radius:4px;color:#fffffff2;font-size:.9rem;font-weight:600}.project-rename-input:focus{outline:none;border-color:#646cff}.project-item-actions{display:flex;gap:.25rem;opacity:0;transition:opacity .2s}.project-dropdown-item:hover .project-item-actions{opacity:1}.project-action-btn{background:none;border:none;cursor:pointer;font-size:1rem;padding:.25rem;border-radius:4px;transition:all .2s;opacity:.6}.project-action-btn:hover{opacity:1;transform:scale(1.1)}.project-action-btn.delete-btn:hover{background:#ef444433}.project-item-description{color:#fff9;font-size:.8rem;margin-bottom:.25rem;line-height:1.3}.project-item-meta{color:#fff6;font-size:.75rem}.project-dropdown-footer{padding:.75rem;border-top:1px solid rgba(100,108,255,.2)}.project-dropdown-action{width:100%;padding:.5rem;background:#646cff1a;border:1px solid rgba(100,108,255,.3);border-radius:6px;color:#818cf8;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.project-dropdown-action:hover{background:#646cff33;border-color:#646cff80;transform:translateY(-1px)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .2s ease-out}.modal-content{background:#1a1a2efa;border:1px solid rgba(100,108,255,.3);border-radius:12px;box-shadow:0 12px 48px #0009;width:90%;max-width:500px;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid rgba(100,108,255,.2)}.modal-header h2{margin:0;font-size:1.25rem;color:#fffffff2}.modal-close{background:none;border:none;color:#fff9;font-size:2rem;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s}.modal-close:hover{background:#ef44441a;color:#ef4444}.modal-body{padding:1.5rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;color:#fffc;font-size:.9rem;font-weight:600}.form-group input,.form-group textarea{width:100%;padding:.75rem;background:#0000004d;border:1px solid rgba(100,108,255,.3);border-radius:6px;color:#ffffffe6;font-size:.9rem;font-family:inherit;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#646cff99}.form-group textarea{resize:vertical;min-height:80px}.form-error{padding:.75rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:6px;color:#f87171;font-size:.85rem;margin-top:1rem}.modal-footer{display:flex;gap:.75rem;padding:1.5rem;border-top:1px solid rgba(100,108,255,.2);justify-content:flex-end}.button-primary,.button-secondary{padding:.75rem 1.5rem;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;border:1px solid transparent}.button-primary{background:#646cff;color:#fff}.button-primary:hover{background:#818cf8;transform:translateY(-1px);box-shadow:0 4px 12px #646cff66}.button-secondary{background:#646cff1a;border-color:#646cff4d;color:#fffc}.button-secondary:hover{background:#646cff33;border-color:#646cff80}.wizard-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.wizard-modal{background:#1e1e1e;border-radius:12px;box-shadow:0 20px 60px #00000080;width:600px;max-width:90vw;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.wizard-header{padding:24px;border-bottom:1px solid #333}.wizard-header h2{margin:0 0 8px;color:#fff;font-size:24px}.wizard-subtitle{margin:0;color:#aaa;font-size:14px}.wizard-progress{padding:20px 24px;background:#252525}.progress-bar{height:8px;background:#333;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background:linear-gradient(90deg,#4caf50,#66bb6a);transition:width .3s ease}.progress-text{color:#aaa;font-size:13px;text-align:center}.wizard-steps{padding:16px 24px;max-height:300px;overflow-y:auto}.wizard-step{display:flex;align-items:center;gap:12px;padding:12px;margin-bottom:8px;background:#252525;border-radius:8px;border:2px solid transparent;transition:all .2s ease}.wizard-step.active{border-color:#4caf50;background:#2a3a2a}.wizard-step.success{opacity:.7}.step-number{width:32px;height:32px;border-radius:50%;background:#333;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0}.wizard-step.success .step-number{background:#4caf50}.wizard-step.wrong_adapter .step-number{background:#f44336}.step-info{flex:1}.step-name{color:#fff;font-weight:500;margin-bottom:4px}.step-serial{color:#888;font-size:12px;font-family:monospace}.step-status{font-size:12px;font-weight:700;padding:4px 8px;border-radius:4px}.step-status.success{color:#4caf50;background:#4caf501a}.step-status.error{color:#f44336;background:#f443361a}.wizard-current{padding:24px;border-top:1px solid #333}.current-instruction h3{margin:0 0 12px;color:#fff;font-size:18px}.current-instruction p{margin:8px 0;color:#ccc;font-size:14px}.bus-hint{margin-top:8px!important;padding:10px 12px;background:#252525;border-left:3px solid #2196F3;border-radius:4px;color:#aaa}.bus-hint strong{color:#64b5f6}.serial-hint{margin-top:12px!important;padding:12px;background:#252525;border-left:3px solid #4CAF50;border-radius:4px}.serial-hint code{color:#4caf50;font-family:monospace;font-size:14px;font-weight:700}.error-message{margin:16px 0;padding:16px;background:#f443361a;border:1px solid #f44336;border-radius:8px;color:#ff6b6b}.error-message strong{display:block;margin-bottom:8px;color:#f44336}.error-message pre{margin:8px 0;padding:8px;background:#0003;border-radius:4px;font-size:12px;overflow-x:auto;color:#ffcccb}.error-message p{margin:8px 0 0;font-size:13px;color:#ff8a80}.wizard-actions{display:flex;gap:12px;margin-top:20px}.btn-connect-adapter{flex:1;padding:14px 24px;background:linear-gradient(135deg,#4caf50,#66bb6a);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s ease}.btn-connect-adapter:hover:not(:disabled){background:linear-gradient(135deg,#66bb6a,#81c784);transform:translateY(-2px);box-shadow:0 4px 12px #4caf5066}.btn-connect-adapter:disabled{opacity:.6;cursor:not-allowed}.btn-skip{padding:14px 24px;background:transparent;color:#aaa;border:1px solid #444;border-radius:8px;font-size:14px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-skip:hover:not(:disabled){background:#333;color:#fff;border-color:#666}.btn-skip:disabled{opacity:.5;cursor:not-allowed}.wizard-footer{padding:16px 24px;border-top:1px solid #333;display:flex;justify-content:flex-end}.btn-cancel{padding:10px 20px;background:transparent;color:#888;border:1px solid #444;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s ease}.btn-cancel:hover{background:#333;color:#fff;border-color:#666}.confirmation-content{text-align:center;padding:20px 0}.confirmation-icon{width:64px;height:64px;margin:0 auto 16px;background:linear-gradient(135deg,#4caf50,#66bb6a);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;color:#fff;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #4caf5066}50%{box-shadow:0 0 0 15px #4caf5000}}.confirmation-content h3{margin:0 0 8px;color:#4caf50;font-size:20px}.confirmation-hint{color:#aaa;font-size:14px;margin:0 0 20px}.confirmation-question{color:#fff;font-size:16px;margin:0}.confirmation-question strong{color:#64b5f6}.confirmation-actions{justify-content:center}.btn-confirm-yes{padding:14px 24px;background:linear-gradient(135deg,#4caf50,#66bb6a);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:700;cursor:pointer;transition:all .2s ease}.btn-confirm-yes:hover{background:linear-gradient(135deg,#66bb6a,#81c784);transform:translateY(-2px);box-shadow:0 4px 12px #4caf5066}.btn-confirm-no{padding:14px 24px;background:transparent;color:#f44336;border:1px solid #f44336;border-radius:8px;font-size:15px;cursor:pointer;transition:all .2s ease}.btn-confirm-no:hover{background:#f443361a}.quick-recovery-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:10000;animation:quickFadeIn .2s ease-out}@keyframes quickFadeIn{0%{opacity:0}to{opacity:1}}.quick-recovery-modal{background:#1e1e1e;border-radius:12px;box-shadow:0 20px 60px #00000080;width:550px;max-width:90vw;max-height:90vh;overflow-y:auto;animation:quickSlideUp .3s ease-out}@keyframes quickSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.quick-recovery-header{padding:24px 24px 16px;border-bottom:1px solid #333}.quick-recovery-header h2{margin:0 0 8px;color:#fff;font-size:22px}.quick-recovery-subtitle{margin:0;color:#4caf50;font-size:14px}.quick-recovery-content{padding:20px 24px}.mapping-table{width:100%;border-collapse:collapse;margin-bottom:16px}.mapping-table th{text-align:left;padding:10px 12px;background:#252525;color:#aaa;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.mapping-table th:first-child{border-radius:6px 0 0}.mapping-table th:last-child{border-radius:0 6px 0 0}.mapping-table td{padding:12px;border-bottom:1px solid #333;vertical-align:middle}.mapping-table tr:last-child td{border-bottom:none}.adapter-cell{background:#252525}.adapter-name{color:#fff;font-weight:500;font-size:14px}.adapter-bus{color:#64b5f6;font-size:12px;margin-top:2px}.device-cell{background:#1e1e1e}.device-cell select{width:100%;padding:10px 12px;background:#333;color:#fff;border:1px solid #444;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s ease}.device-cell select:hover:not(:disabled){border-color:#4caf50}.device-cell select:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 2px #4caf5033}.device-cell select:disabled{opacity:.6;cursor:not-allowed}.th-identify{width:70px;text-align:center}.identify-cell{text-align:center;background:#1e1e1e}.btn-identify{width:36px;height:36px;border-radius:50%;border:2px solid #444;background:#252525;color:#888;font-size:18px;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.btn-identify:hover:not(:disabled){border-color:#4caf50;color:#4caf50}.btn-identify.blinking{border-color:#4caf50;background:#4caf5033;color:#4caf50;animation:pulse-identify 1s ease-in-out infinite}@keyframes pulse-identify{0%,to{box-shadow:0 0 #4caf5066}50%{box-shadow:0 0 0 8px #4caf5000}}.btn-identify:disabled{opacity:.4;cursor:not-allowed}.quick-recovery-hint{color:#888;font-size:13px;margin:0;padding:12px;background:#252525;border-left:3px solid #ff9800;border-radius:4px}.quick-recovery-error{margin-top:16px;padding:14px;background:#f443361a;border:1px solid #f44336;border-radius:8px;color:#ff6b6b;font-size:14px}.quick-recovery-error strong{color:#f44336;margin-right:6px}.quick-recovery-actions{padding:16px 24px;border-top:1px solid #333;display:flex;justify-content:flex-end;gap:12px}.quick-recovery-actions .btn-cancel{padding:10px 18px;background:transparent;color:#888;border:1px solid #444;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s ease}.quick-recovery-actions .btn-cancel:hover:not(:disabled){background:#333;color:#fff;border-color:#666}.quick-recovery-actions .btn-manual{padding:10px 18px;background:transparent;color:#aaa;border:1px solid #444;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s ease}.quick-recovery-actions .btn-manual:hover:not(:disabled){background:#333;color:#fff;border-color:#666}.quick-recovery-actions .btn-manual:disabled,.quick-recovery-actions .btn-cancel:disabled{opacity:.5;cursor:not-allowed}.quick-recovery-actions .btn-connect-all{padding:10px 24px;background:linear-gradient(135deg,#4caf50,#66bb6a);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.quick-recovery-actions .btn-connect-all:hover:not(:disabled){background:linear-gradient(135deg,#66bb6a,#81c784);transform:translateY(-1px);box-shadow:0 4px 12px #4caf5066}.quick-recovery-actions .btn-connect-all:disabled{opacity:.7;cursor:not-allowed;transform:none;box-shadow:none}.admin-panel-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:10000}.admin-panel{background:#1e1e2e;border-radius:12px;width:90%;max-width:700px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080;border:1px solid rgba(100,108,255,.2)}.admin-panel-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:#0000004d;border-bottom:1px solid rgba(100,108,255,.2)}.admin-panel-header h2{margin:0;font-size:1.2rem;color:#ffffffe6}.btn-close{background:transparent;border:none;color:#fff9;font-size:1.5rem;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.btn-close:hover{background:#ffffff1a;color:#ffffffe6}.admin-tabs{display:flex;background:#0003;border-bottom:1px solid rgba(100,108,255,.1)}.admin-tab{flex:1;padding:.75rem 1rem;background:transparent;border:none;color:#fff9;font-size:.9rem;cursor:pointer;transition:all .2s}.admin-tab:hover{background:#646cff1a;color:#fffc}.admin-tab.active{background:#646cff26;color:#646cff;border-bottom:2px solid #646cff}.admin-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;padding:.75rem 1rem;margin:1rem;border-radius:6px;font-size:.9rem}.admin-content{flex:1;overflow-y:auto;padding:1.5rem}.admin-loading{text-align:center;color:#fff9;padding:2rem}.settings-tab{display:flex;flex-direction:column;gap:1rem}.setting-row{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#0003;border-radius:8px;border:1px solid rgba(255,255,255,.05)}.setting-info{display:flex;flex-direction:column;gap:.25rem}.setting-info label{color:#ffffffe6;font-weight:500}.setting-description{font-size:.8rem;color:#ffffff80}.toggle-switch{position:relative;display:inline-block;width:48px;height:26px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#ffffff1a;transition:.3s;border-radius:26px}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background:#fff;transition:.3s;border-radius:50%}.toggle-switch input:checked+.toggle-slider{background:#646cff}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.toggle-switch input:disabled+.toggle-slider{opacity:.5;cursor:not-allowed}.users-tab{overflow-x:auto}.users-table{width:100%;border-collapse:collapse;font-size:.9rem}.users-table th,.users-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.05)}.users-table th{color:#ffffff80;font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.users-table td{color:#fffc}.users-table tbody tr:hover{background:#646cff0d}.badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-admin{background:#fbbf2426;color:#fbbf24;border:1px solid rgba(251,191,36,.3)}.badge-user{background:#646cff1a;color:#818cf8;border:1px solid rgba(100,108,255,.2)}.btn-delete-user{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;padding:.35rem .75rem;font-size:.8rem;border-radius:4px;cursor:pointer;transition:all .2s}.btn-delete-user:hover{background:#ef444433;border-color:#ef444480}
