:root{--bg-primary: #FFFCF9;--bg-secondary: #FFF8F3;--bg-tertiary: #F5EDE6;--text-primary: #2D2A26;--text-secondary: #6B6560;--text-tertiary: #A89F96;--border: #E8E0D8;--border-light: #F0E8E0;--accent: #7C5CFC;--accent-light: #EDE5FF;--radius: 14px;--radius-sm: 10px;--radius-lg: 20px;--font: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--transition: .2s cubic-bezier(.4, 0, .2, 1);--shadow-card: 0 1px 4px rgba(124, 92, 252, .06);--shadow-hover: 0 4px 16px rgba(124, 92, 252, .12), 0 1px 4px rgba(0,0,0,.04)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg-secondary);color:var(--text-primary);overflow:hidden;height:100vh}#root{height:100vh}.app-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.toolbar{padding:10px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--bg-primary);flex-shrink:0;gap:12px}.toolbar-left{display:flex;gap:8px;align-items:center}.toolbar button{font-size:16px;padding:8px 20px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-family:var(--font);font-weight:600;transition:all var(--transition)}.toolbar button:hover{background:var(--bg-tertiary);transform:translateY(-1px)}.toolbar button:active{transform:translateY(0)}.toolbar button:disabled{opacity:.4;cursor:default;transform:none}.toolbar-hint{font-size:14px;color:var(--text-tertiary);margin-left:8px}.data-bar{padding:8px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--bg-secondary);flex-shrink:0;gap:12px}.data-bar-left{display:flex;gap:8px;align-items:center}.data-bar-right{display:flex;gap:10px;align-items:center}.data-bar-title{font-size:14px;color:var(--text-tertiary);font-weight:600;margin-right:4px}.data-bar button{font-size:15px;padding:6px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;font-family:var(--font);transition:all var(--transition)}.data-bar button:hover{background:var(--bg-tertiary);transform:translateY(-1px)}.data-bar button:active{transform:translateY(0)}.data-bar button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.data-bar .stop-btn{background:none;border-color:#ef4444;color:#ef4444}.data-bar .stop-btn:hover{background:#fef2f2}.pulse{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:pulse-anim 1s ease-in-out infinite}@keyframes pulse-anim{0%,to{opacity:1}50%{opacity:.3}}.frame-count{font-size:14px;color:var(--text-tertiary);font-variant-numeric:tabular-nums}.csv-cols{font-size:14px;color:var(--text-tertiary);background:var(--bg-tertiary);padding:3px 8px;border-radius:var(--radius-sm)}.webcam-preview{width:80px;height:60px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);margin-left:8px}.model-toggle{display:flex;align-items:center;gap:8px}.toggle-track{display:flex;background:var(--bg-tertiary);border-radius:var(--radius-lg);padding:3px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-track span{font-size:15px;padding:6px 16px;border-radius:18px;transition:all var(--transition);color:var(--text-tertiary);font-weight:600}.toggle-track span.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:0 1px 3px #0000001a}.model-active-badge{font-size:14px;color:#065f46;font-weight:600;padding:4px 12px;background:#d1fae5;border-radius:var(--radius-lg);white-space:nowrap}.model-active-badge.clickable{cursor:pointer}.model-active-badge.clickable:hover{background:#a7f3d0}.ollama-config{display:flex;align-items:center;gap:6px}.ollama-config-label{font-size:14px;color:var(--text-tertiary);font-weight:600}.ollama-url-badge{font-size:14px;color:var(--text-tertiary);padding:3px 10px;background:var(--bg-tertiary);border-radius:var(--radius-lg);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ollama-url-badge.clickable{cursor:pointer}.ollama-url-badge.clickable:hover{color:var(--text-secondary);background:var(--border)}.model-input{font-size:14px;padding:5px 12px;border:1px solid var(--accent);border-radius:var(--radius-sm);outline:none;width:140px;font-family:var(--font)}.model-input.url-input{width:200px}.canvas-area{flex:1;overflow:hidden;position:relative;background:var(--bg-tertiary);cursor:grab;touch-action:none}.canvas-area:active{cursor:grabbing}.canvas-inner{position:absolute;width:8000px;height:8000px;will-change:transform}.connectors-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.node-card{position:absolute;width:240px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:box-shadow var(--transition),transform var(--transition);box-shadow:var(--shadow-card);animation:card-appear .3s cubic-bezier(.4,0,.2,1) both}@keyframes card-appear{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.node-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.node-card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light),var(--shadow-hover)}.node-card.loading{animation:gentle-pulse 2s ease-in-out infinite}@keyframes gentle-pulse{0%,to{opacity:.7}50%{opacity:.5}}.node-title{font-size:17px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px}.node-preview{font-size:15px;color:var(--text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px}.node-actions{display:flex;gap:6px;margin-top:10px;align-items:center}.node-actions button{font-size:14px;padding:4px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;font-family:var(--font);transition:all var(--transition)}.node-actions button:hover{background:var(--bg-tertiary)}.node-actions .delete-btn{flex:none;color:var(--text-tertiary);border-color:transparent}.node-actions .delete-btn:hover{color:#dc2626;background:#fef2f2}.code-badge{font-size:14px;padding:4px 12px;border-radius:var(--radius-sm);background:var(--accent-light);color:var(--accent);font-weight:600}.stage-badge{font-size:14px;padding:4px 12px;border-radius:var(--radius-sm);font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--transition)}.stage-badge:hover{opacity:.7}.stage-sketch{background:#fef3c7;color:#92400e}.stage-explore{background:var(--accent-light);color:#5b3cc4}.stage-refine{background:#d1fae5;color:#065f46}.node-add-handle{position:absolute;bottom:-38px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;cursor:pointer;opacity:0;transition:opacity var(--transition)}.node-card:hover .node-add-handle{opacity:1}@media (hover: none){.node-add-handle{opacity:.6}}.node-add-stem{display:block}.node-add-circle{width:28px;height:28px;border-radius:50%;background:var(--bg-primary);border:2px solid var(--accent);color:var(--accent);font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all var(--transition);box-shadow:var(--shadow-card)}.node-add-circle:hover{background:var(--accent);color:#fff;transform:scale(1.15);box-shadow:0 2px 12px #7c5cfc4d}.node-expanded{position:absolute;width:420px;height:500px;background:var(--bg-primary);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:0 8px 30px #7c5cfc1f,0 2px 8px #0000000f;display:flex;flex-direction:column;z-index:10;cursor:default;overflow:hidden;animation:panel-slide-in .25s cubic-bezier(.4,0,.2,1) both}@keyframes panel-slide-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.node-expanded.ne-maximized{position:fixed;top:0;left:0;right:0;bottom:0;width:100%!important;height:100%!important;border-radius:0;z-index:1000;border-left-width:3px}.ne-header{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700;flex-shrink:0}.ne-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.close-btn{background:none;border:none;font-size:20px;color:var(--text-tertiary);cursor:pointer;padding:0 4px;line-height:1;transition:color var(--transition)}.close-btn:hover{color:var(--text-primary)}.ne-code-toggle{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:monospace;color:var(--text-tertiary);padding:2px 8px;cursor:pointer;transition:all var(--transition)}.ne-code-toggle:hover,.ne-code-toggle.active{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.ne-maximize-btn{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:15px;color:var(--text-tertiary);padding:0 6px;cursor:pointer;transition:all var(--transition);line-height:1.4}.ne-maximize-btn:hover{color:var(--text-primary);border-color:var(--text-tertiary)}.ne-ancestors{padding:6px 16px;display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border-light);flex-shrink:0}.ne-ancestor{font-size:14px;color:var(--text-tertiary);background:var(--bg-tertiary);padding:2px 10px;border-radius:var(--radius-lg);cursor:pointer;transition:color var(--transition)}.ne-ancestor:hover{color:var(--accent)}.ne-main{display:flex;flex-direction:column;flex:1;min-height:0}.ne-prompt-bar{display:flex;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border-light);align-items:flex-end;flex-shrink:0}.ne-prompt{flex:1;font-size:16px;resize:none;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);line-height:1.4;color:var(--text-primary);outline:none;transition:border-color var(--transition);min-height:0}.ne-prompt:focus{border-color:var(--accent)}.ne-prompt::placeholder{color:var(--text-tertiary)}.ne-send{padding:10px 18px;font-size:16px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;font-family:var(--font);font-weight:600;transition:all var(--transition);flex-shrink:0;line-height:1.4}.ne-send:hover{opacity:.85;transform:translateY(-1px)}.ne-send:active{transform:translateY(0)}.ne-send:disabled{opacity:.3;cursor:default;transform:none}.ne-ask{padding:10px 14px;font-size:16px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--accent);cursor:pointer;font-family:var(--font);font-weight:700;transition:all var(--transition);flex-shrink:0;line-height:1.4}.ne-ask:hover{background:var(--accent-light);transform:translateY(-1px)}.ne-ask:active{transform:translateY(0)}.ne-ask:disabled{opacity:.3;cursor:default;transform:none}.ne-explore{padding:10px 14px;font-size:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;font-family:var(--font);font-weight:600;transition:all var(--transition);flex-shrink:0;line-height:1.4}.ne-explore:hover{background:var(--accent-light);color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}.ne-explore:active{transform:translateY(0)}.ne-explore:disabled{opacity:.3;cursor:default;transform:none}.ne-whatelse-btn{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-tertiary);padding:2px 10px;cursor:pointer;font-family:var(--font);font-weight:600;transition:all var(--transition);white-space:nowrap}.ne-whatelse-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.ne-whatelse-btn:disabled{opacity:.3;cursor:default}.ne-keepchange-toggle{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-tertiary);padding:2px 10px;cursor:pointer;font-family:var(--font);font-weight:600;transition:all var(--transition);white-space:nowrap}.ne-keepchange-toggle:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.ne-keepchange{padding:12px 16px;border-bottom:1px solid var(--border-light);display:flex;flex-direction:column;gap:8px;background:var(--bg-secondary);flex-shrink:0;animation:panel-slide-in .2s ease both}.ne-keepchange-field{display:flex;align-items:center;gap:8px}.ne-keepchange-field label{font-size:14px;font-weight:700;color:var(--text-secondary);min-width:60px}.ne-keepchange-field input{flex:1;font-size:14px;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);outline:none;color:var(--text-primary);transition:border-color var(--transition)}.ne-keepchange-field input:focus{border-color:var(--accent)}.ne-keepchange-field input::placeholder{color:var(--text-tertiary)}.ne-keepchange-send{align-self:flex-end;font-size:14px!important;padding:7px 18px!important}.ne-response-text{padding:16px;font-size:15px;line-height:1.7;color:var(--text-primary);white-space:pre-wrap;overflow-y:auto;flex:1}.ne-response-hint{margin-top:16px;padding:10px 12px;background:var(--accent-light);color:var(--accent);border-radius:var(--radius-sm);font-size:14px;font-weight:600;white-space:normal}.ne-loading{position:relative;height:32px;background:var(--bg-secondary);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ne-loading-bar{position:absolute;top:0;left:0;height:3px;width:40%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:ne-slide 1.5s ease-in-out infinite}@keyframes ne-slide{0%{left:-40%}to{left:100%}}.ne-loading-text{font-size:15px;color:var(--text-tertiary);position:relative;z-index:1}.ne-output{flex:1;min-height:320px;display:flex;flex-direction:column}.ne-output .node-iframe{width:100%;flex:1;border:none;display:block;min-height:320px}.ne-empty{flex:1;min-height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-tertiary);font-size:16px}.ne-empty-icon{font-size:32px;opacity:.3}.ne-error{font-size:14px;padding:8px 12px;margin:8px 16px 0;background:#fef2f2;color:#dc2626;border-radius:var(--radius-sm);border:1px solid #FECACA;flex-shrink:0}.ne-code-drawer{border-top:1px solid var(--border);padding:12px 16px;background:var(--bg-secondary);flex-shrink:0;max-height:250px;display:flex;flex-direction:column;gap:8px}.ne-code{width:100%;min-height:140px;max-height:180px;font-size:13px;resize:vertical;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:SF Mono,Fira Code,Consolas,monospace;line-height:1.5;color:var(--text-primary);background:#fff;outline:none;-moz-tab-size:2;tab-size:2}.ne-code:focus{border-color:var(--accent)}.ne-code-actions{display:flex;gap:6px}.ne-code-actions .ne-send{width:auto;font-size:14px;padding:7px 16px}.ne-resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:nwse-resize;z-index:11}.ne-resize-handle:after{content:"";position:absolute;bottom:4px;right:4px;width:8px;height:8px;border-right:2px solid var(--text-tertiary);border-bottom:2px solid var(--text-tertiary);opacity:.5}.ne-sketch-bar{padding:8px 16px;border-bottom:1px solid var(--border-light);flex-shrink:0;display:flex;align-items:center;gap:8px}.ne-sketch-actions{display:flex;gap:8px}.ne-sketch-btn{font-size:15px;padding:6px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;font-family:var(--font);transition:all var(--transition)}.ne-sketch-btn:hover{background:var(--bg-tertiary)}.ne-sketch-preview{display:flex;align-items:center;gap:8px}.ne-sketch-thumb{width:40px;height:30px;object-fit:cover;border:1px solid var(--border);border-radius:var(--radius-sm)}.ne-sketch-label{font-size:14px;color:var(--text-tertiary)}.sketch-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:2000;display:flex;align-items:center;justify-content:center}.sketch-modal{background:var(--bg-primary);border-radius:var(--radius);box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-width:90vw;max-height:90vh}.sketch-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.sketch-colors{display:flex;gap:6px;align-items:center}.sketch-color-btn{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:border-color var(--transition)}.sketch-color-btn.active{border-color:var(--text-primary)}.sketch-eraser-btn{font-size:14px;padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);cursor:pointer;font-family:var(--font)}.sketch-eraser-btn.active{background:var(--bg-tertiary);border-color:var(--text-primary)}.sketch-sizes{display:flex;gap:4px;align-items:center}.sketch-size-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;background:none;color:var(--text-tertiary)}.sketch-size-btn.active{border-color:var(--text-primary);color:var(--text-primary)}.sketch-actions{margin-left:auto;display:flex;gap:8px}.sketch-actions button{font-size:15px;padding:7px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-family:var(--font)}.sketch-actions button:hover{background:var(--bg-tertiary)}.sketch-save-btn{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}.sketch-save-btn:hover{opacity:.85}.sketch-canvas{display:block;cursor:crosshair;border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);max-width:100%;max-height:calc(90vh - 60px)}.data-bar-models{display:flex;gap:6px;align-items:center;margin-left:8px;padding-left:10px;border-left:1px solid var(--border)}.model-pill{display:inline-flex;align-items:center;gap:4px;font-size:14px;padding:4px 12px;border-radius:var(--radius-lg);background:var(--accent-light);color:var(--accent);font-weight:600;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}.model-pill-x{background:none;border:none;font-size:14px;color:var(--accent);cursor:pointer;padding:0 2px;line-height:1;opacity:.6}.model-pill-x:hover{opacity:1}.model-add-btn{font-size:14px;padding:4px 12px;border-radius:var(--radius-lg);border:1px dashed var(--border);background:none;color:var(--text-tertiary);cursor:pointer;font-family:var(--font);white-space:nowrap;transition:all var(--transition)}.model-add-btn:hover{border-color:var(--accent);color:var(--accent)}.model-upload-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:2000;display:flex;align-items:center;justify-content:center}.model-upload-modal{background:var(--bg-primary);border-radius:var(--radius);box-shadow:0 20px 60px #0000004d;width:440px;max-width:90vw;display:flex;flex-direction:column}.model-upload-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);font-size:17px;font-weight:700}.model-upload-body{padding:18px;display:flex;flex-direction:column;gap:14px}.model-upload-field{display:flex;flex-direction:column;gap:5px}.model-upload-field label{font-size:14px;font-weight:600;color:var(--text-secondary)}.model-upload-field input[type=text]{font-size:15px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);outline:none;color:var(--text-primary)}.model-upload-field input[type=text]:focus{border-color:var(--accent)}.model-upload-file-btn{font-size:15px;padding:8px 12px;border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;font-family:var(--font);text-align:left;transition:border-color var(--transition)}.model-upload-file-btn:hover{border-color:var(--accent)}.model-upload-hint{font-weight:400;color:var(--text-tertiary)}.model-upload-help{font-size:14px;color:var(--text-tertiary);line-height:1.6;padding:10px 12px;background:var(--bg-secondary);border-radius:var(--radius-sm)}.model-upload-help code{font-size:13px;background:var(--bg-tertiary);padding:2px 6px;border-radius:4px}.model-upload-error{font-size:14px;padding:8px 12px;background:#fef2f2;color:#dc2626;border-radius:var(--radius-sm);border:1px solid #FECACA}.model-upload-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 18px;border-top:1px solid var(--border)}.model-upload-footer button{font-size:15px;padding:8px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-family:var(--font)}.model-upload-footer button:hover{background:var(--bg-tertiary)}.model-upload-submit{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}.model-upload-submit:hover{opacity:.85}.model-upload-submit:disabled{opacity:.4;cursor:default}.sensor-picker-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:2000;display:flex;align-items:center;justify-content:center}.sensor-picker{background:var(--bg-primary);border-radius:var(--radius);box-shadow:0 20px 60px #0000004d;width:620px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column}.sensor-picker-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);font-size:17px;font-weight:700}.sensor-picker-close{background:transparent;border:none;font-size:22px;color:var(--text-tertiary);cursor:pointer;padding:0 6px;line-height:1}.sensor-picker-close:hover{color:var(--text-primary)}.sensor-picker-body{padding:18px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}.sensor-picker-help{font-size:14px;color:var(--text-secondary);line-height:1.5}.sensor-picker-device{font-size:14px;color:var(--text-primary);line-height:1.5}.sensor-picker-error{font-size:14px;padding:10px 12px;background:#fef2f2;color:#dc2626;border-radius:var(--radius-sm);border:1px solid #FECACA;line-height:1.5}.sensor-picker-error code{font-size:13px;background:#0000000f;padding:1px 5px;border-radius:4px}.sensor-picker-primary{font-size:15px;padding:9px 18px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font);align-self:flex-start}.sensor-picker-primary:hover{opacity:.88}.sensor-picker-primary:disabled{opacity:.4;cursor:default}.sensor-picker-list{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;padding-right:4px}.sensor-char-row{border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;background:var(--bg-primary);transition:border-color var(--transition),background var(--transition)}.sensor-char-row:hover{border-color:var(--accent-light)}.sensor-char-row.selected{border-color:var(--accent);background:var(--accent-light)}.sensor-char-head{display:flex;align-items:center;gap:10px;font-size:14px;margin-bottom:6px}.sensor-char-service{font-weight:700;color:var(--text-primary)}.sensor-char-uuid{font-family:ui-monospace,monospace;font-size:12px;color:var(--text-tertiary)}.sensor-char-pulse{margin-left:auto;color:#10b981;font-size:12px;animation:gentle-pulse 1.5s ease-in-out infinite}.sensor-char-data{font-size:13px;color:var(--text-secondary);display:flex;flex-direction:column;gap:3px}.sensor-char-data .label{display:inline-block;width:54px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary)}.sensor-char-data .mono{font-family:ui-monospace,monospace;font-size:12px;word-break:break-all}.sensor-char-parser{font-family:var(--font);font-size:12px;padding:2px 6px;margin-right:8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);cursor:pointer}.sensor-char-primary{color:var(--accent);font-weight:600}.sensor-char-ai-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;padding-top:6px;border-top:1px dashed var(--border-light)}.sensor-char-ai-btn{font-size:12px;padding:4px 10px;border:1px solid var(--accent);background:transparent;color:var(--accent);border-radius:6px;cursor:pointer;font-family:var(--font);font-weight:600}.sensor-char-ai-btn:hover:not(:disabled){background:var(--accent-light)}.sensor-char-ai-btn:disabled{opacity:.4;cursor:default}.sensor-char-ai-desc{font-size:12px;color:var(--text-secondary);line-height:1.4}.sensor-char-ai-error{font-size:12px;color:#dc2626}.sensor-char-waiting{color:var(--text-tertiary);font-style:italic}.sensor-char-age{font-size:11px;color:var(--text-tertiary);margin-top:2px}.sensor-picker-name{display:flex;flex-direction:column;gap:5px;padding-top:6px;border-top:1px dashed var(--border-light)}.sensor-picker-name label{font-size:14px;font-weight:600;color:var(--text-secondary)}.sensor-picker-name input{font-size:15px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);outline:none;color:var(--text-primary)}.sensor-picker-name input:focus{border-color:var(--accent)}.sensor-picker-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:8px}.sensor-picker-actions button{font-size:15px;padding:8px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;font-family:var(--font)}.sensor-picker-actions button:hover{background:var(--bg-tertiary)}
