:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #93c5fd;--color-success: #22c55e;--color-error: #ef4444;--color-error-hover: #dc2626;--color-warning: #eab308;--color-text: #1a1a1a;--color-text-muted: #555;--color-text-dim: #888;--color-text-error: #991b1b;--color-text-success: #166534;--color-bg: #f5f5f5;--color-bg-card: #fff;--color-bg-muted: #f9fafb;--color-bg-error: #fef2f2;--color-bg-success: #f0fdf4;--color-border: #ccc;--color-border-light: #e5e7eb;--color-border-error: #fecaca;--color-border-success: #bbf7d0;--color-bg-warning: #fefce8;--color-border-warning: #fde68a;--color-text-warning: #92400e;--color-direction-inbound: #16a34a;--color-direction-outbound: #2563eb;--radius-sm: 4px;--radius-md: 6px;--radius-pill: 12px;--shadow-card: 0 1px 3px rgba(0, 0, 0, .1);--color-bg-hover: #f3f4f6;--color-text-secondary: #6b7280;--color-badge-bg: #e0e7ff;--color-badge-text: #3730a3;--color-direction-debug: #d97706;--color-focus-ring: rgba(37, 99, 235, .2);--font-mono: monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 1.5rem;background:var(--color-bg-card);border-bottom:1px solid var(--color-border-light);height:56px;flex-shrink:0;position:sticky;top:0;z-index:20}.app-header-brand{display:flex;align-items:center;gap:.625rem;min-width:0}.app-header-logo{width:28px;height:28px;object-fit:contain;flex-shrink:0}.app-header-title{font-size:1.1rem;font-weight:700;color:var(--color-text);white-space:nowrap}.app-header-user{position:relative;flex-shrink:0}.app-header-user-button{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-card);cursor:pointer;font-size:.85rem;color:var(--color-text)}.app-header-user-button:hover{border-color:var(--color-primary)}.app-header-icon,.app-header-chevron{flex-shrink:0;color:var(--color-text-muted)}.app-header-email{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:140px;background:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-card);z-index:10;padding:.25rem}.app-header-menu-item{display:block;width:100%;text-align:left;padding:.45rem .6rem;border:none;border-radius:var(--radius-sm);background:none;cursor:pointer;font-size:.85rem;color:var(--color-text)}.app-header-menu-item:hover{background:var(--color-bg)}.auth-status{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:4rem 1.5rem;color:var(--color-text-muted)}.app-layout{display:grid;grid-template-columns:280px 1fr;flex:1;min-height:0}.main-content{max-width:960px;padding:1.5rem;min-width:0}.main-content-wide{max-width:none;display:flex;flex-direction:column;min-height:0}.main-content h1{font-size:1.5rem;margin-bottom:1.5rem;border-bottom:2px solid var(--color-text);padding-bottom:.5rem}.main-placeholder{color:var(--color-text-dim);font-size:1rem;text-align:center;margin-top:4rem}.selected-device-header,.detail-back-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.page-title:focus,.page-title:focus-visible{outline:none}.page-title-barcode{font-family:var(--font-mono)}.page-title-label{margin-left:.6rem;font-family:var(--font-sans);font-size:.9rem;font-weight:500;color:var(--color-text-muted)}.refresh-btn{padding:.4rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer;font-size:.8rem;font-weight:600}.refresh-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.sidebar{background:var(--color-bg-card);border-right:1px solid var(--color-border-light);padding:1rem;overflow-y:auto;position:sticky;top:56px;height:calc(100vh - 56px);display:flex;flex-direction:column}.sidebar>*{flex-shrink:0}.sidebar-footer{display:flex;flex-wrap:wrap;gap:.25rem .5rem;align-items:baseline;margin-top:auto;padding-top:.75rem;border-top:1px solid var(--color-border-light);flex-shrink:0}.sidebar-footer-version{color:var(--color-text-muted);font-size:.75rem;font-variant-numeric:tabular-nums}.sidebar-footer-link{color:var(--color-primary);font-size:.75rem;text-decoration:none}.sidebar-footer-link:hover,.sidebar-footer-link:focus-visible{text-decoration:underline}.sidebar-footer-link.active{font-weight:600;text-decoration:underline}.sidebar-label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem;margin-top:.5rem}.sidebar-input{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.sidebar-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.sidebar-select{width:100%;padding:.4rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.sidebar-nav-list{display:flex;flex-direction:column;gap:.125rem;margin-bottom:1rem}.sidebar-nav-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.5rem .625rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--color-text-muted);text-align:left;text-decoration:none}.sidebar-nav-item:hover{background:var(--color-bg-card);color:var(--color-primary)}.sidebar-nav-item.active{background:var(--color-badge-bg);border-color:var(--color-primary);color:var(--color-primary);font-weight:600}.sidebar-nav-icon{flex:0 0 16px;display:block}.sidebar-nav-label{flex:1 1 auto;min-width:0}.sidebar-connect-btn{width:100%;margin-top:.5rem;padding:.5rem;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-size:.85rem;font-weight:600}.sidebar-connect-btn:hover{background:var(--color-primary-hover)}.sidebar-error{padding:.5rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);font-size:.8rem;margin-bottom:.75rem}.sidebar-loading{color:var(--color-text-dim);font-size:.85rem;font-style:italic;margin-top:1rem}.sidebar-empty{color:var(--color-text-dim);font-size:.85rem;font-style:italic;text-align:center;padding:1rem 0}.sidebar-section-title{font-size:.85rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.5rem;margin-top:.5rem}.sidebar-refresh-warning{padding:.375rem .5rem;background:var(--color-bg-warning);border:1px solid var(--color-border-warning);border-radius:var(--radius-sm);color:var(--color-text-warning);font-size:.75rem;margin-bottom:.5rem}.sidebar-device-list{border:1px solid var(--color-border-light);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:.75rem}.sidebar-device-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.625rem .5rem;border:none;border-bottom:1px solid var(--color-border-light);background:none;cursor:pointer;text-align:left;font-size:.85rem}.sidebar-device-item:last-child{border-bottom:none}.sidebar-device-item:hover{background:var(--color-bg-hover)}.sidebar-device-item.selected{background:var(--color-badge-bg)}.sidebar-device-status{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sidebar-device-status.online{background:var(--color-success)}.sidebar-device-status.offline{background:var(--color-text-dim)}.sidebar-device-info{display:flex;flex-direction:column;min-width:0}.sidebar-device-identity{display:flex;align-items:baseline;gap:.4rem;min-width:0}.sidebar-device-barcode{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 0 auto}.sidebar-device-label{font-size:.75rem;color:var(--color-text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sidebar-device-detail{font-size:.75rem;color:var(--color-text-dim)}.sidebar-device-item.offline .sidebar-device-barcode{font-weight:500;color:var(--color-text-muted)}.selected-device-offline-badge{font-size:.75rem;padding:.2rem .5rem;border-radius:var(--radius-sm);background:var(--color-badge-bg);color:var(--color-text-muted)}.sidebar-manual-section{margin-bottom:.75rem}.sidebar-manual-toggle{border:none;background:none;cursor:pointer;font-size:.8rem;color:var(--color-text-muted);padding:.25rem 0}.sidebar-manual-toggle:hover{color:var(--color-primary)}.sidebar-manual-form{margin-top:.5rem}.panel{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.panel h2{font-size:1rem;margin-bottom:.75rem;color:var(--color-text)}.status-indicator{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:.5rem}.status-indicator.online{background:var(--color-success)}.status-indicator.offline{background:var(--color-error)}.status-row{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.status-detail{color:var(--color-text-muted);font-size:.85rem;margin-top:.25rem}.send-message textarea{width:100%;min-height:80px;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.85rem;resize:vertical}.send-message textarea:focus{outline:none;border-color:var(--color-primary)}.send-message button{margin-top:.5rem;padding:.5rem 1.25rem;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600}.send-message button:hover{background:var(--color-primary-hover)}.send-message button:disabled{background:var(--color-primary-light);cursor:not-allowed}.send-result{margin-top:.5rem;padding:.5rem;background:var(--color-bg-success);border:1px solid var(--color-border-success);border-radius:var(--radius-sm);font-size:.85rem;color:var(--color-text-success)}.message-log-controls{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.message-log-controls button{padding:.4rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer;font-size:.8rem}.message-log-controls button.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.message-log-controls select,.message-log-controls input[type=number]{padding:.4rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8rem}.message-table{width:100%;border-collapse:collapse;font-size:.85rem}.message-table th,.message-table td{text-align:left;padding:.5rem;border-bottom:1px solid var(--color-border-light)}.message-table th{font-weight:600;color:var(--color-text-muted);background:var(--color-bg-muted)}.direction-inbound{color:var(--color-direction-inbound);font-weight:600}.direction-outbound{color:var(--color-direction-outbound);font-weight:600}.message-body{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;max-width:400px}.s3-placeholder{color:var(--color-text-dim);font-style:italic;font-size:.8rem}.interval-input{width:60px;margin-left:4px}.interval-pending{font-size:.75rem;color:var(--color-text-dim);font-style:italic}.direction-select{margin-left:4px}.message-id{font-size:.75rem;color:var(--color-text-dim)}.load-more-row{text-align:center;padding:.75rem}.load-more-row button{padding:.4rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer}.error-banner{padding:.75rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);font-size:.85rem;margin-bottom:1rem}.empty-state{color:var(--color-text-dim);font-size:.85rem;font-style:italic}.error-boundary{padding:2rem;text-align:center}.error-boundary__message{color:var(--color-text-muted);margin-top:.5rem}.error-boundary__details{text-align:left;margin-top:1rem;border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg-muted);padding:.5rem .75rem}.error-boundary__details summary{cursor:pointer;font-weight:600;color:var(--color-text-muted)}.error-boundary__trace{font-family:var(--font-mono);font-size:.8rem;color:var(--color-text);white-space:pre-wrap;word-break:break-word;margin-top:.5rem;max-height:20rem;overflow:auto}.error-boundary__actions{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.inline-error{color:var(--color-error);margin:4px 0 0}.link-button{background:none;border:none;padding:0;margin:0;color:var(--color-primary);text-decoration:underline;cursor:pointer;font:inherit}.link-button:hover{color:var(--color-primary-hover)}.link-button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.mode-toggle{display:flex;justify-content:center;gap:0;margin-bottom:1rem}.mode-toggle button{padding:.5rem 1.25rem;border:1px solid var(--color-primary);background:var(--color-bg-card);color:var(--color-primary);cursor:pointer;font-size:.85rem;font-weight:600}.mode-toggle button:first-child{border-radius:20px 0 0 20px}.mode-toggle button:last-child{border-radius:0 20px 20px 0}.mode-toggle button+button{border-left:none}.mode-toggle .active{background:var(--color-primary);color:#fff}.driver-info-note{text-align:center;font-size:.8rem;color:var(--color-text-muted);margin-bottom:1rem;font-style:italic}.driver-readonly-note{text-align:center;font-size:.8rem;color:var(--color-text-muted);background:var(--color-bg-card);border:1px solid var(--color-border-warning);border-radius:var(--radius-sm);padding:.5rem;margin-bottom:1rem}.field-hint{font-size:.8rem;color:var(--color-text-muted);margin:0 0 .75rem;line-height:1.4}.secondary-btn{margin-bottom:.75rem;padding:.35rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);cursor:pointer;font-size:.85rem}.secondary-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.driver-panel{margin-top:0}.operation-selector{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.operation-selector h3{font-size:.8rem;color:var(--color-text-muted);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.05em}.operation-selector>div+div{margin-top:.75rem}.operation-btn-group{display:flex;flex-wrap:wrap;gap:.375rem}.operation-btn{padding:.375rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer;font-size:.8rem;font-weight:500;color:var(--color-text)}.operation-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.operation-btn.selected{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.venus-version-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.85rem}.venus-version-selector label{font-weight:600;color:var(--color-text)}.venus-version-selector select{padding:.25rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.version-badge{display:inline-block;font-size:.65rem;font-weight:700;padding:.1rem .35rem;border-radius:3px;margin-left:.35rem;vertical-align:middle;background:var(--color-badge-bg);color:var(--color-badge-text)}.operation-btn.selected .version-badge{background:#ffffff4d;color:#fff}.operation-form{margin-bottom:1rem}.operation-form .field{margin-bottom:.75rem}.operation-form .field label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem}.operation-form .field input[type=text]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.operation-form .field input[type=text]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.operation-form .field textarea{width:100%;min-height:60px;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.85rem;resize:vertical}.operation-form .field textarea:focus{outline:none;border-color:var(--color-primary)}.operation-form .field input[type=checkbox]{margin-right:.25rem}.operation-form .field-error{color:var(--color-error);font-size:.8rem;margin-top:.25rem}.operation-form p{font-size:.85rem;color:var(--color-text-muted);margin-bottom:.75rem}.operation-form button[type=submit]{padding:.5rem 1.25rem;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600;font-size:.85rem}.operation-form button[type=submit]:hover{background:var(--color-primary-hover)}.operation-form button[type=submit]:disabled{background:var(--color-primary-light);cursor:not-allowed}.response-viewer{margin-bottom:1rem}.response-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.response-status{display:inline-block;padding:.2rem .6rem;border-radius:var(--radius-pill);font-size:.8rem;font-weight:700;color:#fff}.response-status.success{background:var(--color-success)}.response-status.error{background:var(--color-error)}.response-timing{font-size:.8rem;color:var(--color-text-dim)}.response-error-type{padding:.375rem .75rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);font-size:.85rem;font-weight:600;margin-bottom:.75rem}.response-body{background:var(--color-bg-muted);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.75rem;font-family:var(--font-mono);font-size:.8rem;white-space:pre-wrap;word-break:break-all;overflow:auto;max-height:400px}.response-viewer__heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.response-viewer__heading h2{margin:0}.tabs{margin-top:.5rem}.tabs__strip{display:flex;gap:0;border-bottom:1px solid var(--color-border-light);margin-bottom:.75rem}.tabs__tab{padding:.4rem .75rem;border:none;background:none;font-size:.8rem;font-weight:500;color:var(--color-text-dim);cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.tabs__tab:hover{color:var(--color-text)}.tabs__tab--active{color:var(--color-text);border-bottom-color:var(--color-accent, #3b82f6);font-weight:600}.response-viewer__tabcontent{position:relative}.response-viewer__tab-actions{display:flex;justify-content:flex-end;margin-bottom:.375rem}.response-history{margin-bottom:1rem}.response-history__heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-bottom:.5rem}.response-history__heading h2{margin:0}.response-history__error{margin:.5rem 0 0;padding:.5rem .75rem;border-radius:var(--radius-sm);background:var(--color-bg-error);color:var(--color-text-error);font-size:.8rem}.response-history-item{border-bottom:1px solid var(--color-border-light)}.response-history-item:last-child{border-bottom:none}.response-history-item-header{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 0;border:none;background:none;cursor:pointer;font-size:.85rem;text-align:left;color:var(--color-text)}.response-history-item-header:hover{background:var(--color-bg-muted)}.response-history-item-header .chevron{font-size:.7rem;width:1rem;text-align:center;flex-shrink:0}.response-history-item-header .history-operation{font-weight:600;flex:1}.response-history-item-header .history-timestamp{font-size:.75rem;color:var(--color-text-dim)}.response-history-item .response-body{margin:0 0 .5rem 1.5rem;max-height:200px}.response-history-item__body{margin:0 0 .5rem 1.5rem;display:flex;flex-direction:column;gap:.5rem}.response-history-item__section{display:flex;flex-direction:column;gap:.25rem}.response-history-item__section-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.78rem;font-weight:600;color:var(--color-text-muted)}.response-history-item__section-header code{font-family:var(--font-mono);font-size:.75rem;background:var(--color-bg-muted);border-radius:var(--radius-sm);padding:0 .3rem}.response-history-item__empty{margin:0;font-size:.8rem;color:var(--color-text-muted);font-style:italic}.response-history-item__body .response-body{margin:0}.history-source{padding:.05rem .35rem;border-radius:var(--radius-sm);background:var(--color-bg-muted);color:var(--color-text-muted);font-size:.7rem;font-weight:600;text-transform:uppercase}.history-time-range{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.history-time-range__field{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem}.history-time-range__label{color:var(--color-text-muted);font-weight:600}.history-time-range__field select,.history-time-range__field input[type=datetime-local]{padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8rem}.history-time-range__custom{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap}.history-time-range__refresh{padding:.3rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);font-size:.8rem;font-weight:600;cursor:pointer}.history-time-range__refresh:hover,.history-time-range__refresh:focus-visible{background:var(--color-bg-hover);outline:none}.history-time-range__refresh:disabled{opacity:.5;cursor:not-allowed}.instruments-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.instruments-header h2{font-size:1.1rem;margin:0}.btn-primary{padding:.5rem 1.25rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600;font-size:.85rem}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{background:var(--color-primary-light);cursor:not-allowed}.btn-secondary{padding:.5rem 1.25rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer;font-size:.85rem;font-weight:500;color:var(--color-text)}.btn-secondary:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-danger{padding:.5rem 1.25rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--color-error);color:#fff;cursor:pointer;font-weight:600;font-size:.85rem}.btn-danger:hover{background:#dc2626}.btn-sm{padding:.3rem .75rem;font-size:.8rem}.instrument-form{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.instrument-form h3{font-size:1rem;margin-bottom:.75rem}.form-group{margin-bottom:.75rem}.form-group label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem}.form-group input[type=text],.form-group input[type=url],.form-group input[type=number],.form-group input[type=password]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.form-group select{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem;background:var(--color-bg-card)}.form-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.form-error{padding:.5rem .75rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);font-size:.85rem;margin-bottom:.75rem}.form-actions{display:flex;gap:.5rem;margin-top:.75rem}.driver-config-fields{border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.75rem;margin-bottom:.75rem}.driver-config-fields legend{font-size:.85rem;font-weight:600;color:var(--color-text-muted);padding:0 .25rem}.form-help{display:block;font-size:.75rem;color:var(--color-text-muted);margin-top:.2rem;line-height:1.3}.form-group-checkbox{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.6rem}.form-group-checkbox .checkbox-label{display:flex;align-items:center;gap:.5rem;font-weight:400}.form-group-checkbox .checkbox-label input[type=checkbox]{margin:0}.pairing-complete{display:flex;flex-direction:column;gap:1rem}.pairing-complete button{flex:0}.pairing-code-active{display:flex;align-items:center;gap:.75rem}.pairing-code-badge{font-size:.9rem;font-weight:600;font-family:var(--font-mono)}.instrument-list{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem}.instrument-list table{width:100%;border-collapse:collapse;font-size:.85rem}.instrument-list th,.instrument-list td{text-align:left;padding:.5rem;border-bottom:1px solid var(--color-border-light);vertical-align:middle}.instrument-list th{font-weight:600;color:var(--color-text-muted);background:var(--color-bg-muted)}.instrument-list th .column-sort{display:inline-flex;align-items:center;gap:.3rem;padding:0;border:none;background:none;font:inherit;color:inherit;cursor:pointer}.instrument-list th .column-sort:hover,.instrument-list th .column-sort.active{color:var(--color-text)}.instrument-list th .column-sort-indicator{font-size:.7rem;opacity:.45}.instrument-list th .column-sort.active .column-sort-indicator{opacity:1}.instrument-list tr.revoked td{color:var(--color-text-dim)}.instrument-list tr.revoked td:last-child{color:var(--color-text)}.instrument-list td.instrument-label{overflow-wrap:anywhere}.instrument-actions{display:flex;gap:.375rem;align-items:center}.instrument-list .btn-secondary{margin:0}.status-badge{display:inline-block;padding:.15rem .5rem;border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;text-transform:uppercase}.status-badge.active{background:var(--color-bg-success);color:var(--color-text-success)}.status-badge.revoked{background:var(--color-bg-muted);color:var(--color-text-dim)}.instrument-detail{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.instrument-detail h3{font-size:1rem;margin-bottom:.75rem}.instrument-detail dl{display:grid;grid-template-columns:auto 1fr;gap:.375rem 1rem;font-size:.85rem;margin-bottom:.75rem}.instrument-detail dt{font-weight:600;color:var(--color-text-muted)}.instrument-detail dd{margin:0}.instrument-detail .agent-id-value{font-family:var(--font-mono);font-size:.8rem;word-break:break-all}.creation-success{background:var(--color-bg-success);border:1px solid var(--color-border-success);border-radius:var(--radius-md);padding:1rem;margin-bottom:1rem}.creation-success h3{font-size:1rem;color:var(--color-text-success);margin-bottom:.5rem}.creation-success p{font-size:.85rem;margin-bottom:.75rem}.token-display{margin-bottom:.75rem}.token-display strong{display:block;font-size:.8rem;color:var(--color-text-muted);margin-bottom:.25rem}.token-value{display:block;padding:.5rem .75rem;background:var(--color-bg-muted);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.8rem;word-break:break-all}.token-value--hidden{filter:blur(4px);-webkit-user-select:none;user-select:none}.token-actions{display:flex;gap:.5rem;margin-top:.5rem;align-items:center}.token-copy-confirm{font-size:.8rem;color:var(--color-text-success)}.loading{color:var(--color-text-dim);font-size:.85rem;font-style:italic;text-align:center;padding:2rem 0}.rack-scan-grid{margin:1rem 0;padding:.75rem;border:1px solid var(--color-border);border-radius:6px;overflow-x:auto}.rack-scan-grid__header{display:flex;gap:1rem;margin-bottom:.5rem;font-size:.85rem}.rack-scan-grid__table{border-collapse:collapse;font-size:.7rem}.rack-scan-grid__table th,.rack-scan-grid__table td{border:1px solid var(--color-border);padding:.2rem .3rem;text-align:center;min-width:2.5rem}.rack-cell--filled{background:var(--color-accent, #1565c0);color:#fff;font-family:var(--font-mono, monospace)}.rack-cell--empty{background:transparent;color:var(--color-text-muted, #888)}.rack-scan-grid__list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.25rem;font-size:.8rem}.rack-scan-grid__pos{display:inline-block;min-width:2.5rem;font-weight:600}.method-runs-page{margin-top:0}.method-runs-header{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem}.start-run-toggle{padding:.5rem 1.25rem;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600;font-size:.85rem}.start-run-toggle:hover{background:var(--color-primary-hover)}.run-status-badge{display:inline-block;padding:.15rem .5rem;border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;text-transform:uppercase}.run-status-completed{background:var(--color-bg-success);color:var(--color-text-success)}.run-status-running,.run-status-accepted{background:var(--color-bg-warning);color:var(--color-text-warning)}.run-status-failed{background:var(--color-bg-error);color:var(--color-text-error)}.run-status-aborted{background:var(--color-bg-muted);color:var(--color-text-dim)}.run-list{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.run-list__filters{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.run-list__filters input,.run-list__filters select{padding:.4rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8rem}.run-list__table{width:100%;border-collapse:collapse;font-size:.85rem}.run-list__table th,.run-list__table td{text-align:left;padding:.5rem;border-bottom:1px solid var(--color-border-light)}.run-list__table th{font-weight:600;color:var(--color-text-muted);background:var(--color-bg-muted)}.run-list__th--active{color:var(--color-text)}.run-list__sort-btn{display:inline-flex;align-items:center;gap:.25rem;padding:0;border:none;background:transparent;font:inherit;color:inherit;cursor:pointer}.run-list__sort-btn:hover,.run-list__sort-btn:focus-visible{color:var(--color-text);text-decoration:underline;outline:none}.run-list__table tr{cursor:pointer}.run-list__table tr:hover{background:var(--color-bg-hover)}.run-list__table tr.run-list__row--expanded{background:var(--color-badge-bg)}.run-list__table tr:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}.run-list__expand-col{width:1.25rem}.run-list__expand-cell{width:1.25rem;text-align:center;padding:.5rem .25rem;color:var(--color-text-muted)}.run-list__chevron{display:inline-block;font-size:.8rem;line-height:1;-webkit-user-select:none;user-select:none}.run-list__actions-col{width:1px}.run-list__actions-cell{text-align:right;white-space:nowrap;padding:.5rem}.run-list__details-row,.run-list__details-row:hover{background:var(--color-bg-muted);cursor:default}.run-list__details-row>td{padding:1rem}.run-list__load-more{display:block;margin:.75rem auto 0;padding:.4rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer}.run-list__load-more:disabled{cursor:not-allowed;opacity:.5}.run-row-details{display:flex;flex-direction:column;gap:1rem;background:var(--color-bg-card);border-radius:var(--radius-sm);padding:1rem;border:1px solid var(--color-border-light)}.run-row-details__meta{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.run-row-details__phase{font-size:.85rem;color:var(--color-text-muted)}.run-row-details__progress{flex:1 1 120px;min-width:120px;max-width:240px;height:8px;background:var(--color-border-light);border-radius:4px;overflow:hidden}.run-row-details__progress-fill{height:100%;background:var(--color-primary);transition:width .3s ease}.run-row-details__abort{padding:.35rem .75rem;border:1px solid var(--color-error);border-radius:var(--radius-sm);background:var(--color-error);color:#fff;cursor:pointer;font-weight:600;font-size:.8rem;margin-left:auto}.run-row-details__abort:hover{background:var(--color-error-hover);border-color:var(--color-error-hover)}.run-row-details__finish{padding:.35rem .75rem;border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:transparent;color:var(--color-primary);cursor:pointer;font-weight:600;font-size:.8rem}.run-row-details__finish:hover:not(:disabled){background:var(--color-primary);color:#fff}.run-row-details__finish:disabled{opacity:.5;cursor:not-allowed}.run-row-details__monitor{margin:.75rem 0;padding:.6rem .75rem;border:1px solid var(--color-border-light);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-bg-muted)}.run-row-details__monitor h4{margin:0 0 .4rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted)}.run-row-details__monitor-note{margin:.4rem 0 0;font-size:.78rem;color:var(--color-text-muted)}.run-row-details__abort:disabled{opacity:.5;cursor:not-allowed}.run-row-details__retry{padding:.35rem .75rem;border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:transparent;color:var(--color-primary);cursor:pointer;font-weight:600;font-size:.8rem}.run-row-details__retry:hover{background:var(--color-primary);color:#fff}.run-row-details__retry:disabled{opacity:.5;cursor:not-allowed}.run-row-details__submit-runlog{padding:.35rem .75rem;border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:transparent;color:var(--color-primary);cursor:pointer;font-weight:600;font-size:.8rem;text-decoration:none;display:inline-flex;align-items:center}.run-row-details__submit-runlog:hover{background:var(--color-primary);color:#fff}.run-row-details__columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:1rem}.run-row-details__section{display:flex;flex-direction:column;gap:.75rem;background:var(--color-bg-muted);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.75rem}.run-row-details__section-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.run-row-details__section-header h4,.run-row-details__section-header h5{margin:0;font-size:.85rem;font-weight:600;color:var(--color-text)}.run-row-details__empty{margin:0;font-size:.8rem;color:var(--color-text-muted);font-style:italic}.run-row-details__status-message{margin:0;font-size:.85rem;color:var(--color-text)}.run-row-details__kv{display:grid;grid-template-columns:minmax(140px,auto) 1fr;column-gap:.75rem;row-gap:.25rem;margin:0;font-size:.8rem}.run-row-details__kv dt{font-weight:600;color:var(--color-text-muted)}.run-row-details__kv dd{margin:0;display:flex;align-items:center;gap:.4rem;word-break:break-all}.run-row-details__kv dd code{font-family:var(--font-mono);font-size:.78rem;background:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.1rem .35rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.run-row-details__json-block{display:flex;flex-direction:column;gap:.35rem}.run-row-details__json-block-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.78rem;font-weight:600;color:var(--color-text-muted)}.run-row-details__json-block-actions{display:flex;gap:.35rem}.run-row-details__json-block pre{margin:0;background:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.6rem .75rem;font-family:var(--font-mono);font-size:.75rem;white-space:pre-wrap;word-break:break-all;overflow:auto;max-height:280px}.run-row-details__output-table{display:flex;flex-direction:column;gap:.35rem}.run-row-details__output-table h5{margin:0;font-size:.8rem;font-weight:600;color:var(--color-text-muted)}.run-row-details__output-table table{width:100%;border-collapse:collapse;font-size:.78rem;background:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--radius-sm)}.run-row-details__output-table th,.run-row-details__output-table td{padding:.35rem .5rem;border-bottom:1px solid var(--color-border-light);text-align:left}.run-row-details__output-table th{color:var(--color-text-muted);font-weight:600}.run-row-details__output-table tr:last-child td{border-bottom:none}.run-row-details__output-table code{font-family:var(--font-mono);word-break:break-all}.run-row-details__step-history{display:flex;flex-direction:column;gap:.5rem}.run-row-details__step-history table{width:100%;border-collapse:collapse;font-size:.78rem}.run-row-details__step-history th,.run-row-details__step-history td{padding:.35rem .5rem;border-bottom:1px solid var(--color-border-light);text-align:left}.run-row-details__step-history th{color:var(--color-text-muted);font-weight:600}.copy-button{padding:.25rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);cursor:pointer;font-size:.75rem;font-weight:600;line-height:1;white-space:nowrap;flex-shrink:0;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.copy-button:hover{background:var(--color-bg-hover);border-color:var(--color-primary)}.copy-button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px}.copy-button--sm{padding:.15rem .45rem;font-size:.7rem}.copy-button--inline{margin-left:.25rem}.copy-button[data-copied=true]{background:var(--color-bg-success);border-color:var(--color-text-success);color:var(--color-text-success)}.start-run-form{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.start-run-form h2{font-size:1rem;margin-bottom:.75rem}.start-run-form__field{margin-bottom:.75rem}.start-run-form__field label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem}.start-run-form__field input[type=text],.start-run-form__field input[type=number],.start-run-form__field textarea{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem}.start-run-form__monitor{border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:.75rem;margin-bottom:.75rem}.start-run-form__monitor legend{font-size:.85rem;font-weight:600;color:var(--color-text-muted);padding:0 .25rem}.start-run-form__field textarea{font-family:var(--font-mono);min-height:60px;resize:vertical}.start-run-form__error{color:var(--color-error);font-size:.8rem;margin-top:.25rem}.start-run-form__actions{display:flex;gap:.5rem}.start-run-form__actions button[type=submit]{padding:.5rem 1.25rem;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600}.start-run-form__actions button[type=submit]:disabled{background:var(--color-primary-light);cursor:not-allowed}.start-run-form__actions button[type=button]{padding:.5rem 1.25rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);cursor:pointer}.run-row-details__method-io-toggle{margin:1rem 0 .5rem}.run-row-details__method-io-toggle-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);font-size:.85rem;font-weight:600;cursor:pointer}.run-row-details__method-io-toggle-btn:hover,.run-row-details__method-io-toggle-btn:focus-visible{background:var(--color-bg-hover);outline:none}.run-row-details__messages{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border-light)}.run-row-details__messages-controls{display:inline-flex;align-items:center;gap:.75rem;margin-left:1rem}.run-row-details__messages-controls select{padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8rem;background:var(--color-bg-card)}.run-row-details__messages-loading{color:var(--color-text-muted);font-size:.8rem}.run-row-details__messages-hint{margin:.5rem 0;color:var(--color-text-muted);font-size:.8rem}.run-row-details__messages-table{width:100%;border-collapse:collapse;font-size:.8rem}.run-row-details__messages-table th,.run-row-details__messages-table td{text-align:left;padding:.35rem .5rem;border-bottom:1px solid var(--color-border-light);vertical-align:top}.run-row-details__messages-expand-col{width:1.5rem}.run-row-details__messages-expand-btn{padding:0;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;font-size:.85rem}.run-row-details__messages-row--expanded{background:var(--color-bg-muted)}.run-row-details__messages-preview{max-width:28rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-row-details__messages-body-row{background:var(--color-bg-subtle, var(--color-bg-muted))}.run-row-details__direction{display:inline-block;padding:.1rem .4rem;border-radius:var(--radius-sm);font-weight:600;font-size:.75rem}.run-row-details__direction--outbound{background:var(--color-badge-bg);color:var(--color-primary)}.run-row-details__direction--inbound{background:var(--color-badge-bg-success, var(--color-badge-bg));color:var(--color-success, var(--color-text))}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:root{--color-state-idle: #e6f4ea;--color-state-idle-border: #a8d8b9;--color-state-idle-text: #166534;--color-state-active: #c6e9d2;--color-state-active-border: #6ec38c;--color-state-active-text: #14532d;--color-state-offline: #f1f3f5;--color-state-offline-border: #d1d5db;--color-state-offline-text: #4b5563}.dashboard-page{margin-top:0;min-height:50vh}.dashboard-placeholder{color:var(--color-text-dim);font-size:1rem;text-align:center;margin-top:2rem}.dashboard-error{padding:.75rem 1rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);margin-bottom:1rem}.dashboard-refresh-warning{padding:.375rem .75rem;background:var(--color-bg-warning);border:1px solid var(--color-border-warning);border-radius:var(--radius-sm);color:var(--color-text-warning);font-size:.8rem;margin-bottom:.75rem}.dashboard-toolbar{display:flex;gap:1rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.dashboard-toolbar-field{display:flex;gap:.4rem;align-items:center;font-size:.8rem;color:var(--color-text-muted)}.dashboard-toolbar-field select{padding:.4rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.8rem}.dashboard-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.device-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;flex-direction:column;gap:.5rem;padding:1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-card);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease;min-height:160px}.device-card:hover{box-shadow:var(--shadow-card)}.device-card:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.device-card-offline{background:var(--color-state-offline);border-color:var(--color-state-offline-border);color:var(--color-state-offline-text);opacity:.85}.device-card-idle{background:var(--color-state-idle);border-color:var(--color-state-idle-border);color:var(--color-state-idle-text)}.device-card-active{background:var(--color-state-active);border-color:var(--color-state-active-border);color:var(--color-state-active-text)}.device-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.device-card-icon{flex-shrink:0}.device-card-status{display:inline-block;padding:.15rem .6rem;border-radius:var(--radius-pill);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:#ffffffa6;color:inherit;border:1px solid currentColor}.device-card-identity{display:flex;flex-direction:column;gap:.15rem;min-width:0}.device-card-barcode{font-family:var(--font-mono);font-size:1.1rem;font-weight:600;overflow-wrap:anywhere}.device-card-label{font-size:.8rem;opacity:.85;overflow-wrap:anywhere}.device-card-driver{color:var(--color-text-muted);font-size:.85rem}.device-card-offline .device-card-driver{color:var(--color-state-offline-text)}.device-card-idle .device-card-driver{color:var(--color-state-idle-text)}.device-card-active .device-card-driver{color:var(--color-state-active-text)}.device-card-last-seen{font-style:italic;color:var(--color-state-offline-text);font-size:.8rem}.device-card-run{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem;min-width:0}.device-card-run-method{font-weight:600;font-size:.9rem;overflow-wrap:anywhere}.device-card-run-status{font-size:.8rem;color:var(--color-state-active-text);opacity:.85}.device-card-run-temperature{font-size:.8rem;color:var(--color-state-active-text);opacity:.85;font-variant-numeric:tabular-nums}.device-card-run-hint{font-size:.8rem;font-style:italic;color:var(--color-state-active-text);opacity:.85}.device-card-progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border:none;border-radius:var(--radius-pill);overflow:hidden;background:#fff9}.device-card-progress::-webkit-progress-bar{background:#fff9;border-radius:var(--radius-pill)}.device-card-progress::-webkit-progress-value{background:var(--color-state-active-text);border-radius:var(--radius-pill)}.device-card-progress::-moz-progress-bar{background:var(--color-state-active-text);border-radius:var(--radius-pill)}.confirm-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-dialog{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1.25rem 1.5rem;min-width:20rem;max-width:32rem;width:100%}.confirm-dialog-title{font-size:1rem;font-weight:700;color:var(--color-text);margin-bottom:.5rem}.confirm-dialog-message{color:var(--color-text-muted);font-size:.9rem;margin-bottom:1rem}.confirm-dialog-field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}.confirm-dialog-field label{font-size:.8rem;font-weight:600;color:var(--color-text)}.confirm-dialog-field input{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);font-size:.85rem}.confirm-dialog-field input:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px}.confirm-dialog-actions{display:flex;gap:.5rem;justify-content:flex-end}.confirm-dialog-btn{padding:.4rem .9rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);cursor:pointer;font-size:.85rem;font-weight:600}.confirm-dialog-btn-cancel:hover{background:var(--color-bg-hover)}.confirm-dialog-btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.confirm-dialog-btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.confirm-dialog-btn-danger{background:var(--color-error);color:#fff;border-color:var(--color-error)}.confirm-dialog-btn-danger:hover{filter:brightness(.95)}.confirm-dialog-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.openapi-page{display:flex;flex-direction:column;gap:1rem;flex:1;min-height:0}.openapi-downloads{display:flex;flex-wrap:wrap;gap:.5rem .75rem;align-items:baseline;padding:.75rem 1rem;border:1px solid var(--color-border-light);border-radius:var(--radius-sm)}.openapi-downloads-label{color:var(--color-text-muted);font-weight:600;font-size:.85rem}.openapi-downloads-list{display:flex;flex-wrap:wrap;gap:.35rem .75rem;margin:0;padding:0;list-style:none}.openapi-download-link{color:var(--color-primary);font-size:.85rem}.openapi-viewer{flex:1;min-height:0;border:1px solid var(--color-border-light);border-radius:var(--radius-sm)}.openapi-viewer-loading{margin:0;padding:1rem;color:var(--color-text-muted);font-size:.9rem}.camera-feed{background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.camera-feed h3{font-size:1rem;margin-bottom:.75rem;color:var(--color-text)}.camera-feed-loading{color:var(--color-text-dim);font-size:.85rem;font-style:italic}.camera-feed-controls{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.camera-feed-label{display:flex;flex-direction:column;font-size:.8rem;font-weight:600;color:var(--color-text-muted);gap:.25rem}.camera-feed-select{padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.85rem;background:var(--color-bg-card)}.camera-feed-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.camera-feed-select:disabled{opacity:.6;cursor:not-allowed}.camera-feed-btn{padding:.5rem 1.25rem;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:600;font-size:.85rem;color:#fff}.camera-feed-btn:disabled{opacity:.5;cursor:not-allowed}.camera-feed-btn-start{background:var(--color-success)}.camera-feed-btn-start:hover:not(:disabled){background:#16a34a}.camera-feed-btn-stop{background:var(--color-error)}.camera-feed-btn-stop:hover:not(:disabled){background:#dc2626}.camera-feed-error{padding:.5rem .75rem;background:var(--color-bg-error);border:1px solid var(--color-border-error);border-radius:var(--radius-sm);color:var(--color-text-error);font-size:.85rem;margin-bottom:.75rem}.camera-feed-image-container{position:relative;aspect-ratio:16 / 9;background:#111;border-radius:var(--radius-sm);overflow:hidden;margin-bottom:.5rem;display:flex;align-items:center;justify-content:center}.camera-feed-image{width:100%;height:100%;object-fit:contain}.camera-feed-placeholder{color:#888;font-size:.9rem;text-align:center;padding:1rem}.camera-feed-status{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--color-text-muted)}.camera-feed-status-sep{color:var(--color-border)}.result-files-panel{display:flex;flex-direction:column;gap:1rem;background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1rem;margin-bottom:1rem}.result-files-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.result-files-header code{font-size:.875rem;opacity:.85}.result-files-refresh-btn{padding:.4rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);font-size:.85rem;font-weight:600;cursor:pointer}.result-files-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.result-files-error{padding:.5rem .75rem;border-radius:var(--radius-sm);background:var(--color-bg-error);border:1px solid var(--color-border-error);color:var(--color-text-error);font-size:.85rem}.result-files-table{width:100%;border-collapse:collapse;font-size:.875rem}.result-files-table th,.result-files-table td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--color-border)}.result-files-table th{font-weight:600;background:#80808014;color:var(--color-text)}.result-files-table tbody tr:nth-child(2n){background:#8080800a}.result-files-empty{color:var(--color-text-dim);font-style:italic}.result-files-action-btn{padding:.3rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-card);color:var(--color-text);font-size:.8rem;cursor:pointer}.result-files-action-btn+.result-files-action-btn{margin-left:.5rem}.result-files-action-btn:disabled{opacity:.5;cursor:not-allowed}.result-files-action-btn-delete{color:var(--color-text-error);border-color:var(--color-border-error)}
