.chrome{display:flex;flex-direction:column;background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0}.chrome-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:12px 14px;gap:12px 16px}@media(min-width:768px){.chrome-top{padding:12px 20px}}.chrome-brand{display:flex;align-items:center;gap:10px;color:var(--fg)}.chrome-brand:hover{color:var(--fg)}.chrome-logo{display:inline-flex;align-items:center;justify-content:center}.chrome-name{font-size:18px;font-weight:700;letter-spacing:-.01em}.chrome-version{font-size:11px;font-weight:500;color:var(--muted);align-self:flex-end;padding-bottom:2px}.chrome-actions{display:flex;align-items:center;gap:8px}.chrome-plus{font-size:18px;font-weight:500;line-height:1;margin-right:2px}.capture-view-top{display:flex;align-items:center;gap:10px;padding:12px 20px;background:var(--panel-alt);border-bottom:1px solid var(--border)}.capture-view-title{margin:0;font-size:18px;font-weight:700;color:var(--fg)}.capture-view-error{margin:16px 20px 0;padding:10px 14px;border-radius:6px;background:var(--err-soft);color:var(--err);font-size:13px}.capture-view-body{display:flex;flex-direction:column;gap:18px;max-width:520px;padding:24px 20px}.capture-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--fg)}.capture-field select,.capture-field input{padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--fg);font-size:14px}.capture-file-row{display:flex;gap:8px}.capture-file-row .capture-file-path{flex:1}.capture-actions{display:flex}.capture-status{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:var(--panel-alt)}.capture-status-row{display:flex;justify-content:space-between;gap:12px;font-size:13px}.capture-status-label{color:var(--muted)}.capture-status-path{overflow-wrap:anywhere;text-align:right}.comm-picker{display:grid;gap:14px}.comm-picker-strip{display:flex;flex-wrap:wrap;gap:6px;padding:6px;background:var(--panel-alt);border:1px solid var(--border);border-radius:8px}.comm-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--panel);border:1px solid var(--border);border-radius:6px;color:var(--fg-2);cursor:pointer;font:inherit;font-size:13px;font-weight:500;transition:border-color .08s,color .08s,background .08s}.comm-chip:hover:not(:disabled){border-color:var(--accent);color:var(--fg)}.comm-chip.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.comm-chip.locked{cursor:default;opacity:1}.comm-chip.locked.active{cursor:default}.comm-chip-name{font-family:SF Mono,Cascadia Code,Consolas,monospace}.comm-chip-server{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:9px;background:var(--accent);color:#fff}.comm-picker-form{display:grid;gap:12px;padding:14px;background:var(--panel);border:1px solid var(--border);border-radius:8px}.conn-form-hint{margin:0;font-size:12px}.generic-form-readout{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:12px;background:var(--panel-alt);border:1px solid var(--border);border-radius:6px;padding:10px;margin:0;max-height:200px;overflow:auto}.opcda-browse-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.opcda-browse{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:520px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000040}.opcda-browse-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.opcda-browse-header h3{margin:0;font-size:1rem}.opcda-browse-error{margin:12px 16px 0;padding:8px 12px;background:var(--err-soft);border:1px solid var(--err);border-radius:4px;font-size:.85rem;color:var(--err);white-space:pre-wrap}.opcda-browse-toolbar{display:flex;gap:8px;padding:12px 16px 6px}.opcda-browse-toolbar .field-input{flex:1}.opcda-browse-subhead{display:flex;align-items:center;justify-content:space-between;padding:2px 16px 8px;font-size:.8rem}.opcda-browse-list{flex:1;display:flex;flex-direction:column;gap:2px;margin:0 16px;min-height:120px;max-height:360px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:6px}.opcda-browse-empty{text-align:center;padding:24px 0}.opcda-browse-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:3px;cursor:pointer;font-size:.85rem}.opcda-browse-row:hover{background:var(--panel-alt)}.opcda-browse-row input[type=checkbox]{flex-shrink:0}.opcda-browse-row.is-added{opacity:.6;cursor:default}.opcda-browse-name{flex:1;font-family:var(--font-mono, monospace)}.opcda-browse-tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.opcda-browse-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.opcua-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:2px;flex:1;min-width:0;font-size:.85rem}.opcua-crumb{background:none;border:none;padding:2px 4px;cursor:pointer;color:var(--accent);border-radius:4px}.opcua-crumb:disabled{color:var(--muted);cursor:default}.opcua-crumb:not(:disabled):hover{background:#7f7f7f26}.opcua-crumb-sep{color:var(--muted)}.opcua-node-name{display:flex;align-items:center;gap:6px;flex:1;min-width:0;background:none;border:none;padding:2px 4px;cursor:pointer;color:inherit;text-align:left;border-radius:4px}.opcua-node-name:hover{background:#7f7f7f1f}.opcua-node-icon{color:var(--muted);width:1em;flex:none}.opcua-row-spacer{display:inline-block;width:13px;flex:none}.capture-settings .grabber-card{border:1px solid var(--border, #2a2a2a);border-radius:6px;padding:10px 12px;margin-bottom:10px;background:var(--surface-2, rgba(255, 255, 255, .02))}.capture-settings .grabber-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.capture-settings .grabber-card-head .select-wrap{flex:1}.capture-settings .grabber-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:8px}.capture-settings .grabber-selections{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.capture-settings .selection-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.capture-settings .field-inline{display:flex;align-items:center;gap:6px}.capture-settings .field-inline .field-label{margin:0;white-space:nowrap}.capture-settings .field-inline .field-input.num{width:64px}.capture-settings .mapping-table{width:100%;border-collapse:collapse;margin-bottom:8px}.capture-settings .mapping-table th{text-align:left;font-weight:600;padding:4px 6px;opacity:.7}.capture-settings .mapping-table td{padding:2px 6px}.capture-settings .mapping-table .field-input{width:100%}.settings-tab{max-width:720px;display:grid;gap:18px}.settings-section{display:grid;gap:10px}.settings-section-title{margin:0;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.settings-row{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:480px){.settings-row{grid-template-columns:1fr 1fr}}.settings-fields{display:grid;gap:12px}.check-row{display:flex;align-items:center;gap:8px;padding:6px 0;color:var(--fg-2);font-size:14px}.settings-actions{display:flex;justify-content:flex-end}.loader-wizard-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.loader-wizard{background:var(--panel);color:var(--fg);border:1px solid var(--border);border-radius:8px;width:480px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000040}.loader-wizard-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border)}.loader-wizard-header h2{margin:0;font-size:1rem;font-weight:600}.loader-wizard-error{margin:12px 20px 0;padding:8px 12px;background:var(--err-soft);border:1px solid var(--err);border-radius:4px;font-size:.85rem;color:var(--err)}.loader-wizard-busy{padding:32px;text-align:center}.loader-wizard-body{flex:1;overflow-y:auto;padding:16px 20px}.loader-wizard-body>p{margin:0 0 12px;font-size:.85rem}.loader-group{margin-bottom:12px}.loader-group-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.loader-list{display:flex;flex-direction:column;gap:2px}.loader-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 10px;text-align:left;border-radius:4px;gap:8px}.loader-item.active{background:var(--accent-soft)}.loader-item-name{font-size:.9rem}.loader-item-hint{font-size:.75rem}.loader-host-form{display:flex;flex-direction:column}.loader-host-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:4px;background:var(--panel-alt);color:var(--fg);font-size:.9rem}.loader-host-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.loader-points-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.loader-points-header p{margin:0;font-size:.85rem}.loader-points-list{display:flex;flex-direction:column;gap:2px;max-height:340px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:6px}.loader-point-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:3px;cursor:pointer;font-size:.85rem}.loader-point-row:hover{background:var(--panel-alt)}.loader-point-row input[type=checkbox]{flex-shrink:0}.loader-wizard-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.loader-wizard-embedded{display:flex;flex-direction:column}.loader-wizard-embedded .loader-wizard-body{padding:0;overflow:visible}.variables-tab{display:flex;gap:16px;height:100%;align-items:stretch}.variables-list-wrap{flex:1;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden;min-width:0}.variables-list-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.variables-list-title{display:flex;align-items:baseline;gap:8px}.variables-list-title h3{margin:0;font-size:16px;font-weight:700;color:var(--fg)}.variables-list-count{font-size:12px;color:var(--muted);font-weight:600}.variables-list-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.variables-list-add{font-weight:600}.variables-list-clear:not(:disabled):hover{background:var(--err-soft);color:var(--err)}.variables-paste-error{padding:6px 16px;background:var(--danger-bg, rgba(255, 80, 80, .12));color:var(--danger, #e05050);font-size:12px;cursor:pointer;border-bottom:1px solid var(--border)}.variables-list-search{position:relative;padding:10px 16px;background:var(--panel-alt);border-bottom:1px solid var(--border)}.variables-list-search .search-icon{position:absolute;left:26px;top:50%;transform:translateY(-50%);color:var(--muted-2);pointer-events:none}.variables-list-search .search-input{width:100%;padding:7px 12px 7px 32px;border:1px solid var(--border);border-radius:6px;background:var(--panel);font-size:13px;outline:none}.variables-list-search .search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.variables-list-table{flex:1;overflow:auto;min-height:0}.variables-list-table table{width:100%;border-collapse:collapse;table-layout:auto;min-width:640px}.variables-list-table thead th{position:sticky;top:0;background:var(--panel-alt);padding:8px 6px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:2px solid var(--border);white-space:nowrap}.variables-list-table tbody td{border-bottom:1px solid var(--border);padding:1px 2px;vertical-align:middle}.variables-list-table tbody tr{cursor:pointer}.variables-list-table tbody tr:hover{background:var(--panel-alt)}.variables-list-table tbody tr.selected{background:var(--accent-soft)}.variables-list-table tbody tr.selected td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.variables-list-table .col-num{text-align:center;font-size:11px;color:var(--muted-2);font-weight:500;padding:0 4px;width:32px}.variables-list-table .col-w{width:36px}.variables-list-table .center{text-align:center}.variables-list-table .empty td{padding:24px;text-align:center}.variables-mobile-list{display:none;list-style:none;margin:0;padding:0}.cell-input,.cell-select{width:100%;border:1px solid transparent;padding:6px 8px;font-size:13px;background:transparent;border-radius:4px;outline:none;color:var(--fg)}.cell-input:hover,.cell-select:hover{border-color:var(--border);background:var(--panel)}.cell-input:focus,.cell-select:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 2px var(--accent-ring)}.cell-key{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-weight:500}.cell-input.num{width:60px}.cell-select{appearance:none;padding-right:22px;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:12px}.cell-select:focus{appearance:auto;background-image:none;padding-right:8px}.cell-check{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}@media(pointer:coarse){.cell-check{width:20px;height:20px}}.variables-list-pager{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:6px 12px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.variables-pager-info{white-space:nowrap}.variables-pager-nav{display:flex;align-items:center;gap:2px;margin-left:auto}.variables-pager-page{min-width:56px;text-align:center;font-variant-numeric:tabular-nums;color:var(--fg)}.variables-pager-size{display:flex;align-items:center;gap:6px;white-space:nowrap}.variables-pager-size select{width:auto}.variables-list-footer{padding:10px 16px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.variables-panel{width:380px;flex-shrink:0;background:var(--panel);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;overflow:hidden}.variables-panel-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--border)}.variables-panel-title{margin:0;font-size:15px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,monospace;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.variables-panel-tabs{display:flex;border-bottom:2px solid var(--border);margin:0 16px}.ve-tab{flex:1;padding:9px 0;text-align:center;font-size:12px;font-weight:700;border:none;background:none;cursor:pointer;color:var(--muted-2);border-bottom:2px solid transparent;margin-bottom:-2px;text-transform:uppercase;letter-spacing:.05em;transition:color .08s,border-color .08s}.ve-tab:hover{color:var(--muted)}.ve-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.variables-panel-body{flex:1;overflow-y:auto;padding:16px}.variables-panel-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;font-size:13px}.variables-panel-foot{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:1px solid var(--border)}.variables-panel-nav{display:flex;gap:4px}.ve-form{display:flex;flex-direction:column;gap:14px}.ve-form-field{display:flex;flex-direction:column;gap:5px}.ve-form-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.ve-form-input,.ve-form-textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--panel-alt);outline:none;color:var(--fg)}.ve-form-input:focus,.ve-form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);background:var(--panel)}.ve-mono{font-family:SF Mono,Cascadia Code,Consolas,monospace}.ve-form-textarea{min-height:70px;resize:vertical;font-family:inherit}.ve-form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:12px;padding-right:30px}.ve-custom{display:flex;flex-direction:column;gap:8px}.ve-custom-empty{font-size:12px;color:var(--muted);margin:0 0 4px}.ve-custom-row{display:flex;gap:8px;align-items:center}.ve-custom-key,.ve-custom-val{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--panel-alt);outline:none;color:var(--fg)}.ve-custom-key:focus,.ve-custom-val:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);background:var(--panel)}.ve-custom-key{flex:0 0 38%;font-weight:600}.ve-custom-del{flex:0 0 auto}.ve-custom-add{align-self:flex-start;margin-top:4px;font-size:12px;font-weight:700}.ve-form-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ve-form-check-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700}.ve-form-check{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}@media(max-width:880px){.variables-tab{flex-direction:column}.variables-panel{width:100%;min-height:380px}}@media(max-width:640px){.variables-list-table{display:none}.variables-mobile-list{display:block;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.vm-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;user-select:none}.vm-item:active{background:var(--panel-alt)}.vm-item.selected{background:var(--accent-soft)}.vm-item-num{min-width:22px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted-2)}.vm-item-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.vm-item-key{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-weight:600;font-size:14px;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vm-item-sub{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.vm-badge{font-size:10px;font-weight:700;line-height:1;padding:2px 5px;border-radius:4px;background:var(--accent-soft);color:var(--accent)}.vm-item-chevron{flex-shrink:0;color:var(--muted-2)}.vm-empty{padding:32px 16px;text-align:center;font-size:13px}.variables-list-header{flex-direction:column;align-items:stretch}.variables-list-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.variables-list-actions .btn{min-height:40px;justify-content:center}.variables-list-import,.variables-list-add{grid-column:1/-1}.variables-panel{display:none}.variables-panel.open{display:flex;position:fixed;inset:0;z-index:60;width:auto;min-height:0;border:none;border-radius:0}.variables-panel-close,.variables-panel-nav .btn{width:40px;height:40px}.variables-panel-foot .btn-danger{min-height:40px}}.network-tab{max-width:720px;display:grid;gap:18px}.network-section{display:grid;gap:10px}.network-section-title{margin:0;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:10px}.network-section-hint{font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted-2);font-style:italic}.network-target{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;display:grid;gap:8px}.network-target-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.network-target-label{font-size:12px;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.network-target-value{font-size:14px;color:var(--fg);display:inline-flex;align-items:center;gap:8px}.network-target-commtype{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-weight:600}.network-interfaces{display:grid;gap:8px}.network-iface{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 16px;display:grid;gap:8px}.network-iface.is-down{opacity:.6}.network-iface-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.network-iface-name{font-size:14px;font-weight:600;color:var(--fg)}.network-iface-flags{display:inline-flex;gap:4px}.network-iface-entries{display:grid;gap:8px}.network-iface-entry{display:grid;gap:4px}.network-entry-cidr{font-size:13px;font-weight:600;color:var(--fg)}.network-entry-meta{display:flex;flex-wrap:wrap;gap:4px 16px}.network-entry-row{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--fg-2)}.network-entry-lbl{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.network-error{padding:10px 14px;border:1px solid #fecaca;border-radius:6px;background:var(--err-soft);color:var(--err);font-size:13px}.network-tab .conn-server{display:inline-flex;align-items:center;font-size:11px;font-style:italic;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:9px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}.tag{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;border:1px solid var(--border);background:var(--panel-alt);color:var(--muted)}.tag-loopback{color:var(--muted)}.tag-up{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}.tag-down{background:var(--err-soft);color:var(--err);border-color:var(--err)}.conn-detail{display:flex;flex-direction:column;flex:1;min-height:0}.conn-detail-error{margin:12px 20px 0;padding:10px 14px;border:1px solid #fecaca;border-radius:6px;background:var(--err-soft);color:var(--err);font-size:13px}.conn-detail-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:10px 14px;background:var(--panel-alt);border-bottom:1px solid var(--border)}@media(min-width:768px){.conn-detail-top{flex-wrap:nowrap;padding:12px 20px}}.conn-detail-name{margin:0;flex:1 1 120px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:700;color:var(--fg);cursor:text;padding:4px 8px;border-radius:6px;border:1px solid transparent;user-select:text}.conn-detail-name:hover{background:var(--panel);border-color:var(--border)}.conn-detail-name-input{flex:1 1 120px;min-width:0;font-size:18px;font-weight:700;color:var(--fg);padding:4px 8px;border:1px solid var(--accent);border-radius:6px;outline:none;background:var(--panel);box-shadow:0 0 0 3px var(--accent-ring)}@media(min-width:768px){.conn-detail-name-input{min-width:240px;flex:0 1 auto}}.conn-detail-io-badge{padding:4px 10px;background:var(--panel);border:1px solid var(--border);border-radius:12px;font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.04em}.conn-server{display:inline-flex;align-items:center;font-size:12px;font-style:italic;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:12px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}.conn-detail-address{padding:4px 10px;background:var(--panel);border:1px solid var(--border);border-radius:12px;font-size:12px;font-weight:600;color:var(--fg-2);font-family:SF Mono,Cascadia Code,Consolas,monospace}.conn-detail-saving{display:inline-flex;align-items:center;color:var(--muted);animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.conn-detail-overflow{position:relative}.conn-detail-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:200;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000002e;min-width:200px;padding:4px;display:flex;flex-direction:column;gap:1px}.conn-detail-menu-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:none;border:none;border-radius:6px;color:var(--fg-2);font-size:13px;cursor:pointer;text-align:left;width:100%}.conn-detail-menu-item:hover{background:var(--panel-alt);color:var(--fg)}.conn-detail-menu-item:disabled{opacity:.5;cursor:default}.conn-detail-menu-sep{height:1px;background:var(--border);margin:4px 0}.conn-detail-menu-danger{color:var(--err)}.conn-detail-menu-danger:hover{background:var(--err-soft);color:var(--err)}.conn-detail-connect{margin-left:auto}.conn-detail-tabs{display:flex;gap:4px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.conn-detail-tabs::-webkit-scrollbar{display:none}@media(min-width:768px){.conn-detail-tabs{padding:0 20px}}.conn-detail-tab{display:inline-flex;align-items:center;gap:6px;padding:12px 16px;white-space:nowrap;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--muted);cursor:pointer;font-weight:500;font-size:14px;transition:color .08s,border-color .08s}.conn-detail-tab:hover{color:var(--fg-2)}.conn-detail-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.conn-detail-count{font-size:11px;background:var(--panel-alt);color:var(--muted);padding:1px 7px;border-radius:9px;font-weight:500}.conn-detail-tab.active .conn-detail-count{background:var(--accent-soft);color:var(--accent)}.conn-detail-body{flex:1;overflow-y:auto;padding:14px}@media(min-width:768px){.conn-detail-body{padding:20px}}.vs{position:relative;min-width:0;display:flex;flex-direction:column;gap:3px}.vs-trigger{display:flex;align-items:center;gap:6px;width:100%;min-width:0;padding:4px 6px;font-size:12px;cursor:pointer;text-align:left;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a)}.vs-trigger:hover:not(:disabled){border-color:#0ea5e9}.vs-trigger:disabled{opacity:.55;cursor:default}.vs-trigger.missing{border-color:#dc2626;background:#fef2f2}.vs-trigger-name{flex:1 1 auto;min-width:0;display:flex;font-family:ui-monospace,Cascadia Code,Consolas,monospace}.vs-nm-head{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-nm-tail{flex:0 0 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vs-trigger-empty{flex:1 1 auto;color:var(--muted, #94a3b8)}.vs-caret{flex:0 0 auto;font-size:10px;color:var(--muted, #94a3b8)}.vs-rw{flex:0 0 auto;font-size:9px;font-weight:700;letter-spacing:.03em;padding:1px 4px;border-radius:3px;background:var(--panel-alt, #f1f5f9);color:var(--muted, #64748b)}.vs-rw.rw{background:#dbeafe;color:#1d4ed8}.vs-rw.st{background:#ede9fe;color:#6d28d9}.vs-rw.missing{background:#fee2e2;color:#b91c1c}.vs-warn{font-size:11px;line-height:1.4;padding:4px 6px;border-radius:4px;background:#fffbeb;border:1px solid #fde68a;color:#92400e}.vs-popup{position:fixed;z-index:60;display:flex;flex-direction:column;border:1px solid var(--border, #cbd5e1);border-radius:6px;background:var(--panel, #fff);box-shadow:0 8px 24px #0f172a2e;overflow:hidden}.vs-sources{display:flex;border-bottom:1px solid var(--border, #e2e8f0);background:var(--panel-alt, #f8fafc)}.vs-source{flex:1 1 0;padding:5px 8px;font-size:11px;font-weight:600;cursor:pointer;border:none;background:none;color:var(--muted, #64748b);border-bottom:2px solid transparent}.vs-source:hover{color:var(--fg, #0f172a)}.vs-source.active{color:var(--fg, #0f172a);border-bottom-color:#0ea5e9}.vs-grp{display:flex;flex-direction:column}.vs-search{padding:6px 8px;font-size:12px;border:none;border-bottom:1px solid var(--border, #e2e8f0);background:var(--panel, #fff);color:var(--fg, #0f172a)}.vs-search:focus{outline:none}.vs-list{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.vs-group{display:flex;padding:4px 8px 2px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #94a3b8);background:var(--panel-alt, #f8fafc)}.vs-opt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:5px 8px;text-align:left;cursor:pointer;border:none;background:none;color:var(--fg, #0f172a)}.vs-opt.active{background:var(--panel-alt, #f1f5f9)}.vs-opt.picked{background:#eff6ff}.vs-grp .vs-group+.vs-opt,.vs-grp .vs-opt{padding-left:8px}.vs-opt-name{display:flex;min-width:0;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}.vs-opt-meta{display:flex;align-items:center;gap:5px}.vs-opt-type{font-size:10px;color:var(--muted, #94a3b8)}.vs-opt-comment{grid-column:1/-1;font-size:11px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-none{padding:10px 8px;font-size:12px;color:var(--muted, #64748b)}.vs-foot{display:flex;align-items:center;gap:6px;padding:5px 8px;border-top:1px solid var(--border, #e2e8f0);background:var(--panel-alt, #f8fafc)}.vs-foot-note{flex:1 1 auto;font-size:11px;color:var(--muted, #64748b)}.vs-foot-btn{padding:2px 8px;font-size:11px;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-foot-btn:hover{background:var(--panel-alt, #f1f5f9)}.vs-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.vs-chip{display:inline-flex;align-items:center;gap:3px;min-width:0;padding:1px 3px 1px 6px;font-size:11px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;border-radius:10px;background:var(--panel-alt, #f1f5f9);border:1px solid var(--border, #e2e8f0);max-width:100%}.vs-chip.missing{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.vs-chip-x{border:none;background:none;cursor:pointer;padding:0 2px;color:var(--muted, #94a3b8);font-size:12px;line-height:1}.vs-chip-x:hover{color:var(--c-err, #dc2626)}.vs-chip-add{padding:2px 8px;font-size:11px;cursor:pointer;border:1px dashed var(--border, #cbd5e1);border-radius:10px;background:none;color:var(--muted, #64748b)}.vs-chip-add:hover:not(:disabled){color:var(--fg, #0f172a);border-color:var(--fg, #0f172a)}.vs-chip-add:disabled{opacity:.5;cursor:default}.mod-shell{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg, #f7f7f8)}@media(min-width:768px){.mod-shell{flex-direction:row}}.mod-muted{color:var(--muted, #94a3b8)}.mod-tree{width:100%;max-height:34vh;flex-shrink:0;border-bottom:1px solid var(--border, #e2e8f0);background:var(--panel, #fff);overflow-y:auto;display:flex;flex-direction:column}@media(min-width:768px){.mod-tree{width:240px;flex:0 0 240px;max-height:none;border-right:1px solid var(--border, #e2e8f0);border-bottom:none}}.mod-tree-hdr{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #64748b);border-bottom:1px solid var(--border, #e2e8f0)}.mod-tree-empty{padding:12px 10px;font-size:12px}.mod-tree-list{list-style:none;margin:0;padding:0}.mod-tree-row{display:flex;align-items:center;gap:4px;padding:3px 8px 3px 6px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--panel-alt, #f8fafc)}.mod-tree-row:hover{background:var(--panel-alt, #f8fafc)}.mod-tree-row.selected{background:#e0f2fe}.mod-tree-caret{border:none;background:none;cursor:pointer;padding:0;width:14px;color:var(--muted, #64748b);transition:transform .12s ease}.mod-tree-caret.open{transform:rotate(90deg)}.mod-tree-caret-spacer{width:14px;display:inline-block}.mod-tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-tree-edit{flex:1;font-size:13px;padding:1px 4px}.mod-tree-badge{font-size:10px;background:var(--border, #e2e8f0);color:var(--muted, #475569);border-radius:8px;padding:0 6px;line-height:16px}.mod-tree-actions{display:none;gap:1px}.mod-tree-row:hover .mod-tree-actions,.mod-tree-row.selected .mod-tree-actions{display:inline-flex}@media(pointer:coarse){.mod-tree-actions{display:inline-flex}}.mod-tree-hdr-actions{display:inline-flex;gap:1px;align-items:center}.mod-menu{position:relative;display:inline-flex}.mod-menu-pop{position:absolute;top:100%;right:0;z-index:20;margin-top:2px;min-width:200px;background:var(--panel, #fff);border:1px solid var(--border, #e2e8f0);border-radius:6px;box-shadow:0 6px 18px #0f172a24;padding:4px;display:flex;flex-direction:column}.mod-menu-item{text-align:left;border:none;background:none;cursor:pointer;padding:6px 10px;border-radius:4px;font-size:13px;color:var(--fg, #0f172a);text-transform:none;letter-spacing:0}.mod-menu-item:hover{background:var(--panel-alt, #f1f5f9)}.mod-menu-danger{color:var(--c-err, #dc2626)}.mod-menu-danger:hover{background:#fee2e2}.mod-canvas{flex:1;min-width:0;overflow-y:auto}.mod-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;padding:20px}.mod-group{padding:12px 14px}.mod-group-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;position:sticky;top:0;z-index:1}.mod-group-name{font-size:15px;font-weight:700;color:var(--fg, #0f172a)}.mod-group-cols{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted, #64748b);margin-left:auto}.mod-columns{display:grid;gap:12px}.mod-column{display:flex;flex-direction:column;gap:10px;min-width:0}@media(max-width:767px){.mod-columns{grid-template-columns:1fr!important}}.mod-card{background:var(--panel, #fff);border:1px solid var(--border, #e2e8f0);border-radius:8px;overflow:hidden}.mod-card.editing{border-color:#cbd5e1}.mod-card.active{border-color:#60a5fa;box-shadow:0 0 0 2px #60a5fa40}.mod-card.dragging{opacity:.4}.mod-card.drop-before{box-shadow:inset 0 3px 0 -1px #2563eb}.mod-card-unknown{padding:10px;color:var(--c-err, #dc2626);font-size:12px}.mod-card-bar{display:flex;align-items:center;gap:6px;padding:4px 6px;background:var(--panel-alt, #f8fafc);border-bottom:1px solid var(--border, #e2e8f0);cursor:grab;user-select:none}.mod-card-bar:active{cursor:grabbing}.mod-card-grip{color:var(--muted, #94a3b8);font-size:12px;line-height:1}.mod-card-kind{font-size:11px;font-weight:600;color:var(--muted, #64748b);flex:1}.mod-card-body{padding:10px}.mod-column.drop-active{background:#2563eb0a;border-radius:8px}.mod-drop-line{height:3px;border-radius:2px;background:#2563eb;margin:1px 0}.mod-icon-btn{border:none;background:none;cursor:pointer;font-size:12px;padding:2px 4px;border-radius:4px;color:var(--muted, #64748b);line-height:1}.mod-icon-btn:hover:not(:disabled){background:var(--border, #e2e8f0)}.mod-icon-btn:disabled{opacity:.3;cursor:default}.mod-icon-danger:hover:not(:disabled){background:#fee2e2;color:var(--c-err, #dc2626)}.mod-btn{border:1px solid var(--border, #e2e8f0);background:var(--panel, #fff);border-radius:6px;padding:5px 12px;font-size:13px;cursor:pointer}.mod-btn:hover{background:var(--panel-alt, #f8fafc)}.mod-btn.active{background:#e0f2fe;border-color:#93c5fd}.mod-btn-sm{padding:3px 10px;font-size:12px}.mod-input{border:1px solid var(--border, #e2e8f0);border-radius:5px;padding:3px 6px;font-size:13px;width:100%;box-sizing:border-box}.mod-input-sm{width:auto;padding:2px 4px}.mod-add-select{border:1px dashed var(--border, #cbd5e1);border-radius:6px;padding:4px 6px;font-size:12px;color:var(--muted, #64748b);background:transparent;cursor:pointer;width:100%}.mod-settings{display:flex;flex-direction:column;gap:8px}.mod-field{display:flex;flex-direction:column;gap:2px}.mod-field-inline{flex-direction:row;align-items:center;gap:6px}.mod-field-label{font-size:11px;color:var(--muted, #64748b)}.mod-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mod-multipick{max-height:180px;overflow-y:auto;border:1px solid var(--border, #e2e8f0);border-radius:6px;padding:4px}.mod-multipick-item{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 4px}.mod-header{font-weight:700;color:var(--fg, #0f172a)}.mod-header-1{font-size:18px}.mod-header-2{font-size:15px}.mod-header-3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted, #64748b)}.mod-err{color:var(--c-err, #dc2626)!important}.mod-valuebox{text-align:center}.mod-valuebox-label{font-size:12px;color:var(--muted, #64748b);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-valuebox-value{font-size:26px;font-weight:700;color:var(--fg, #0f172a);font-variant-numeric:tabular-nums}.mod-valuerow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0}.mod-valuerow-label{color:var(--muted, #475569);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-valuerow-value{font-weight:600;font-variant-numeric:tabular-nums}.mod-valuelist-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted, #64748b);margin-bottom:4px}.mod-lamps{display:flex;flex-direction:column;gap:4px}.mod-lamp{display:flex;align-items:center;gap:8px}.mod-lamp-rect{width:16px;height:16px;border-radius:3px;flex:0 0 16px}.mod-lamp-rect.on{background:var(--c-ok, #16a34a)}.mod-lamp-rect.off{background:var(--border, #cbd5e1)}.mod-lamp-text{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-button{width:100%;padding:8px 12px;font-size:14px;font-weight:600;border:none;border-radius:6px;background:#0ea5e9;color:#fff;cursor:pointer}.mod-button:hover:not(:disabled){background:#0284c7}.mod-button:disabled{opacity:.4;cursor:default}.mod-pie,.mod-gauge{display:flex;flex-direction:column;align-items:center;gap:2px}.mod-pie-label,.mod-gauge-label{font-size:12px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.mod-bars-plot{display:flex;align-items:flex-end;gap:8px;height:120px;padding-top:4px}.mod-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;height:100%}.mod-bar-track{position:relative;flex:1;width:70%;background:var(--panel-alt, #f1f5f9);border-radius:3px 3px 0 0;display:flex;align-items:flex-end}.mod-bar-fill{width:100%;background:#0ea5e9;border-radius:3px 3px 0 0;min-height:1px}.mod-bar-label{font-size:10px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.mod-led{display:flex;align-items:center;gap:8px}.mod-led-dot{width:18px;height:18px;border-radius:50%;flex:0 0 18px;box-shadow:inset 0 0 2px #0000004d}.mod-led-dot.on{background:var(--c-ok, #16a34a);box-shadow:0 0 6px var(--c-ok, #16a34a)}.mod-led-dot.off{background:var(--border, #cbd5e1)}.mod-led-dot.err{background:var(--c-err, #dc2626)}.mod-led-label{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-spark{display:flex;flex-direction:column;gap:2px}.mod-spark-head,.mod-slider-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.mod-spark-label,.mod-slider-label{font-size:12px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-spark-val,.mod-slider-val{font-weight:600;font-variant-numeric:tabular-nums}.mod-toggles{display:flex;flex-direction:column;gap:6px}.mod-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px}.mod-toggle-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-switch{position:relative;width:40px;height:22px;border-radius:11px;border:none;background:var(--border, #cbd5e1);cursor:pointer;flex:0 0 40px;transition:background .15s}.mod-switch.on{background:var(--c-ok, #16a34a)}.mod-switch:disabled{opacity:.4;cursor:default}.mod-switch-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s}.mod-switch.on .mod-switch-knob{transform:translate(18px)}.mod-slider{display:flex;flex-direction:column;gap:4px}.mod-range{width:100%}.mod-color-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.mod-swatch{width:20px;height:20px;border-radius:4px;cursor:pointer;padding:0;border:1px solid rgba(15,23,42,.35);box-shadow:inset 0 0 0 1px #ffffff59}.mod-swatch.active{outline:2px solid var(--fg, #0f172a);outline-offset:1px}.mod-color-input{width:32px;height:24px;padding:0;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:none}.mod-bar-mark{position:absolute;left:0;right:0;height:0;border-top:2px dashed currentColor;pointer-events:none}.mod-bar-mark.limit{color:#dc2626}.mod-bar-mark.setpoint{color:#0f172a;border-top-style:solid}.mod-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.mod-row .mod-input{min-width:0;flex:1}.mod-row-key{flex:0 0 40%;min-width:0;font-size:12px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-del{flex:0 0 auto;width:22px;height:22px;line-height:1;padding:0;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:none;color:var(--muted, #64748b)}.mod-del:hover{color:var(--c-err, #dc2626);border-color:var(--c-err, #dc2626)}.mod-add{align-self:flex-start;margin-top:2px;padding:3px 8px;font-size:12px;cursor:pointer;border:1px dashed var(--border, #cbd5e1);border-radius:4px;background:none;color:var(--muted, #64748b)}.mod-add:hover{color:var(--fg, #0f172a);border-color:var(--fg, #0f172a)}.mod-selector{display:flex;flex-direction:column;gap:6px}.mod-selector-label{font-size:12px;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-selector-positions{display:flex;gap:0;border:1px solid var(--border, #cbd5e1);border-radius:6px;overflow:hidden}.mod-selector-pos{flex:1 1 0;min-width:0;padding:6px 4px;font-size:12px;cursor:pointer;border:none;border-right:1px solid var(--border, #cbd5e1);background:var(--panel, #fff);color:var(--fg, #0f172a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-selector-pos:last-child{border-right:none}.mod-selector-pos:hover:not(:disabled){background:var(--panel-alt, #f1f5f9)}.mod-selector-pos.active{background:#0ea5e9;color:#fff;font-weight:600}.mod-selector-pos:disabled{opacity:.55;cursor:default}.mod-estop{display:flex;align-items:center;gap:10px}.mod-estop-btn{flex:0 0 auto;width:46px;height:46px;border-radius:50%;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;border:3px solid #b91c1c;background:#dc2626;box-shadow:0 2px 4px #0000004d}.mod-estop-btn:hover:not(:disabled){background:#ef4444}.mod-estop-btn.tripped{background:#7f1d1d;box-shadow:inset 0 2px 5px #0009;cursor:default}.mod-estop-btn:disabled{opacity:.5;cursor:default}.mod-estop-dot{width:18px;height:18px;border-radius:50%;background:#ffffff59}.mod-estop-side{display:flex;flex-direction:column;gap:4px;min-width:0}.mod-estop-label{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-estop-release{padding:3px 10px;font-size:12px;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a)}.mod-estop-release:hover:not(:disabled){background:var(--panel-alt, #f1f5f9)}.mod-estop-release:disabled{opacity:.45;cursor:default}.mod-setpoint{display:flex;flex-direction:column;gap:8px}.mod-setpoint-rows{display:flex;flex-direction:column;gap:4px}.mod-setpoint-row{display:grid;grid-template-columns:minmax(0,1fr) auto 90px;align-items:center;gap:8px}.mod-setpoint-key{font-size:12px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod-setpoint-now{font-size:12px;color:var(--muted, #64748b);font-variant-numeric:tabular-nums;text-align:right}.mod-setpoint-input{width:100%}.mod-setpoint-actions{display:flex;align-items:center;gap:6px}.mod-setpoint-actions .mod-button{width:auto;flex:0 0 auto}.mod-setpoint-head{font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted, #94a3b8);border-bottom:1px solid var(--border, #e2e8f0);padding-bottom:2px}.sp{display:flex;flex:1;min-width:0;min-height:0}@media(max-width:768px){.sp{flex-direction:column}}.sp-main{flex:1 1 0;min-width:0;min-height:0;display:flex}.sp-panel{position:relative;flex:none;width:var(--sp-size, 320px);display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid var(--sp-border, var(--border, #e3e3e6));background:var(--bg, #fff)}.sp--left>.sp-panel{border-left:none;border-right:1px solid var(--sp-border, var(--border, #e3e3e6))}@media(max-width:768px){.sp-panel{width:auto;height:var(--sp-narrow-size, 34vh);border-left:none;border-top:1px solid var(--sp-border, var(--border, #e3e3e6))}.sp--left>.sp-panel{border-right:none;border-bottom:1px solid var(--sp-border, var(--border, #e3e3e6));border-top:none}}.sp-handle{position:absolute;top:0;bottom:0;left:-3px;width:7px;cursor:col-resize;z-index:6;touch-action:none}.sp--left>.sp-panel>.sp-handle{left:auto;right:-3px}.sp-handle:after{content:"";position:absolute;left:3px;top:0;bottom:0;width:2px;background:transparent}.sp-handle:hover:after,.sp-handle:active:after,.sp-handle:focus-visible:after{background:var(--accent, #3c78dc)}.sp-handle:focus-visible{outline:none}@media(pointer:coarse){.sp-handle{left:-8px;width:18px}.sp--left>.sp-panel>.sp-handle{left:auto;right:-8px}.sp-handle:after{left:8px}}@media(max-width:768px){.sp-handle{display:none}}.mem-shell{display:flex;flex-direction:column;height:100%;min-height:0;font-size:12px;color:#1e293b}.mem-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.mem-seg{display:flex;align-items:center;gap:6px}.mem-seg-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.mem-seg-btns{display:flex}.mem-seg-btn{border:1px solid #cbd5e1;border-right-width:0;background:#fff;color:#334155;padding:3px 8px;font-size:11px;cursor:pointer}.mem-seg-btn:first-child{border-radius:5px 0 0 5px}.mem-seg-btn:last-child{border-radius:0 5px 5px 0;border-right-width:1px}.mem-seg-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.mem-btn{border:1px solid #cbd5e1;border-radius:5px;background:#fff;color:#334155;padding:4px 10px;font-size:11px;cursor:pointer}.mem-btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.mem-btn:disabled{opacity:.5;cursor:not-allowed}.mem-search{margin-left:auto}.mem-search input{border:1px solid #cbd5e1;border-radius:5px;padding:4px 8px;font-size:12px;min-width:160px}.mem-hits{display:flex;flex-wrap:wrap;gap:4px;padding:6px 12px;border-bottom:1px solid #e2e8f0;background:#fffbeb;max-height:90px;overflow:auto}.mem-hit{display:inline-flex;align-items:center;gap:6px;border:1px solid #fcd34d;background:#fff;border-radius:4px;padding:2px 6px;font-size:11px;cursor:pointer}.mem-hit-dec{color:#b45309;font-weight:600}.mem-hit-key{font-family:monospace;color:#64748b}.mem-hit-off{font-family:monospace}.mem-hit-more{align-self:center;color:#92400e;font-size:11px}.mem-main{flex:1;--sp-border: #e2e8f0}.mem-areas{overflow-y:auto;padding:6px}.mem-area{display:flex;align-items:center;justify-content:space-between;width:100%;border:none;background:none;padding:6px 8px;border-radius:5px;cursor:pointer;font-family:monospace;font-size:12px;color:#334155}.mem-area:hover{background:#f1f5f9}.mem-area.active{background:#e0edff;color:#1d4ed8;font-weight:600}.mem-area-key{overflow:hidden;text-overflow:ellipsis}.mem-dot{width:7px;height:7px;border-radius:50%;background:#cbd5e1;flex:none}.mem-dot.ok{background:#16a34a}.mem-dot.bad{background:#dc2626}.mem-grid-wrap{min-width:0;flex:1;min-height:0;overflow:hidden}.mem-grid-body{height:100%;overflow:auto;font-family:Consolas,SF Mono,monospace}.mem-row{display:flex;align-items:center;left:0;right:0;padding:0 8px}.mem-addr{color:#94a3b8;width:70px;flex:none}.mem-cells{display:flex;gap:2px}.mem-cell{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:1px 3px;border-radius:3px;cursor:pointer}.mem-cell.empty{visibility:hidden}.mem-cell.read{background:#eff6ff;color:#1e40af}.mem-cell.write{background:#fef2f2;color:#b91c1c}.mem-cell.selected{outline:2px solid #2563eb}.mem-cell.flash{animation:mem-flash .6s ease-out}.mem-cell:hover:not(.empty){background:#e2e8f0}.mem-edit{width:28px;font-family:monospace;font-size:12px;border:1px solid #2563eb;border-radius:3px;padding:0 2px}@keyframes mem-flash{0%{background:#fde047}}.mem-detail{padding:10px;overflow-y:auto}.mem-detail-hdr{font-family:monospace;font-weight:600;margin-bottom:8px}.mem-detail-sect{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:10px 0 4px}.mem-decodes{display:flex;flex-direction:column;gap:2px}.mem-decode{display:flex;justify-content:space-between;gap:8px;font-family:monospace}.mem-decode-name{color:#64748b}.mem-decode-val{font-weight:600}.mem-var{border-left:3px solid #93c5fd;padding:3px 6px;margin-bottom:4px}.mem-var.write{border-left-color:#fca5a5}.mem-var-name{display:block;font-weight:600}.mem-var-meta{font-size:11px;color:#64748b;display:block}.mem-var-live{display:flex;align-items:center;gap:4px;margin-top:3px}.mem-var-val{flex:1;font-family:monospace;font-weight:600}.mem-var-val--wait{color:#94a3b8}.mem-var-val--err{color:#dc2626}.mem-var-val--bool{font-size:11px;padding:1px 5px;border-radius:3px;font-weight:700;background:#f1f5f9}.mem-var-val--bool.on{background:#dcfce7;color:#15803d}.mem-var-val--bool.off{background:#fee2e2;color:#b91c1c}.mem-var-adj{border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:#334155;width:22px;height:20px;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.mem-var-adj:hover:not(:disabled){background:#f1f5f9}.mem-var-adj:disabled{opacity:.4;cursor:not-allowed}.mem-empty{padding:16px;text-align:center}.muted{color:#94a3b8}@media(pointer:coarse){.mem-var-adj{width:32px;height:32px}.mem-btn,.mem-seg-btn{min-height:34px}.mem-cell{min-height:26px}}.lt-shell{display:flex;flex-direction:column;height:100%;overflow:hidden;font-size:13px}.lt-toolbar{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:1px solid var(--border);background:var(--panel);flex-shrink:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.lt-toolbar-sep{flex:1}.lt-source-select,.lt-limit-select,.lt-type-select{padding:3px 6px;border:1px solid var(--border-strong);border-radius:4px;background:var(--panel);color:var(--fg);font-size:12px;cursor:pointer}.lt-source-select:focus,.lt-limit-select:focus,.lt-type-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.lt-search-wrap{position:relative;display:flex;align-items:center}.lt-search-icon{position:absolute;left:6px;color:var(--muted);pointer-events:none}.lt-search{padding:3px 8px 3px 24px;border:1px solid var(--border-strong);border-radius:4px;background:var(--panel);color:var(--fg);font-size:12px;width:160px}.lt-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);width:220px}.lt-check-label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--fg-2);cursor:pointer;user-select:none}.lt-check-label input{cursor:pointer;accent-color:var(--accent)}.lt-btn{padding:3px 8px;border:1px solid var(--border-strong);border-radius:4px;background:var(--panel);color:var(--fg-2);font-size:12px;cursor:pointer;display:flex;align-items:center;gap:4px;white-space:nowrap}.lt-btn:hover{background:var(--panel-alt)}.lt-btn--primary{background:var(--accent);border-color:var(--accent-2);color:#fff}.lt-btn--primary:hover{background:var(--accent-2)}.lt-btn--danger{color:var(--err)}.lt-btn--danger:hover{background:var(--err-soft)}.lt-btn--active{border-color:var(--accent);color:var(--accent);background:var(--accent-ring)}.lt-btn:disabled{opacity:.5;cursor:default}.lt-filters{position:relative;flex-shrink:0}.lt-filters-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:30;display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel);box-shadow:0 6px 16px #0000002e;white-space:nowrap}.lt-list-wrap{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--panel)}.lt-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:13px;padding:24px;text-align:center}.lt-row{display:flex;align-items:baseline;gap:6px;padding:2px 10px;border-bottom:1px solid var(--border);font-family:Consolas,Cascadia Mono,Courier New,monospace;font-size:12px;line-height:1.5;cursor:default;user-select:text}.lt-row:hover{background:var(--panel-alt)}.lt-row:hover .lt-row-actions{opacity:1}.lt-row--info{background:#eff6ff;border-left:3px solid #3b82f6}.lt-row--warning{background:var(--warn-soft);border-left:3px solid var(--warn)}.lt-row--error{background:var(--err-soft);border-left:3px solid var(--err)}.lt-row--ignored{opacity:.45;font-style:italic}.lt-ts{color:var(--muted);flex-shrink:0;font-size:11px}.lt-badge{flex-shrink:0;font-size:10px;font-weight:700;padding:1px 4px;border-radius:3px;letter-spacing:.03em;text-transform:uppercase}.lt-badge--read{background:#dcfce7;color:#15803d}.lt-badge--write{background:#fee2e2;color:#dc2626}.lt-badge--state{background:#e0f2fe;color:#0369a1}.lt-badge--sys,.lt-badge--event{background:var(--panel-alt);color:var(--muted)}.lt-var{color:var(--fg);font-weight:600;flex-shrink:0;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lt-change{color:var(--fg-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lt-change .lt-before{color:var(--muted)}.lt-change .lt-arrow{color:var(--muted-2);margin:0 3px}.lt-change .lt-after{color:var(--fg)}.lt-raw{color:var(--fg-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lt-row-actions{display:flex;align-items:center;gap:3px;flex-shrink:0;opacity:0;transition:opacity .1s}@media(pointer:coarse){.lt-row-actions{opacity:1}}@media(pointer:coarse){.lt-icon-btn{min-width:34px;min-height:34px;justify-content:center}}.lt-icon-btn{padding:2px 4px;border:none;background:none;cursor:pointer;color:var(--muted);border-radius:3px;font-size:11px;display:flex;align-items:center}.lt-icon-btn:hover{background:var(--border);color:var(--fg)}.lt-icon-btn--mark-info{color:#3b82f6}.lt-icon-btn--mark-warning{color:var(--warn)}.lt-icon-btn--mark-error{color:var(--err)}.lt-icon-btn--ignored{color:var(--muted-2)}.lt-vat-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-top:1px solid var(--border);background:var(--panel-alt);flex-shrink:0;font-size:12px;flex-wrap:wrap}.lt-vat-label{color:var(--muted);font-size:11px;white-space:nowrap}.lt-vat-input{padding:2px 6px;border:1px solid var(--border-strong);border-radius:4px;background:var(--panel);color:var(--fg);font-size:12px;font-family:Consolas,monospace}.lt-vat-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.lt-vat-result{font-family:Consolas,monospace;font-weight:600;color:var(--ok);padding:2px 6px;background:var(--ok-soft);border-radius:4px}.lt-vat-result--none{color:var(--muted);background:var(--panel)}.lt-footer{display:flex;align-items:center;gap:8px;padding:4px 10px;border-top:1px solid var(--border);background:var(--panel);flex-shrink:0;font-size:11px;color:var(--muted)}.lt-footer-sep{flex:1}.lt-shell--split{flex-direction:column;position:relative}@media(min-width:768px){.lt-shell--split{flex-direction:row}}.lt-shell--drag:after{content:"Drop log files or folders";position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;color:var(--accent);background:var(--accent-ring);border:2px dashed var(--accent);pointer-events:none}.lt-side{width:100%;max-height:34vh;flex-shrink:0;display:flex;flex-direction:column;border-bottom:1px solid var(--border);background:var(--panel);overflow:hidden}@media(min-width:768px){.lt-side{width:240px;min-width:160px;max-height:none;border-right:1px solid var(--border);border-bottom:none}}.lt-side-rail{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:6px;padding:3px 8px;border:none;border-bottom:1px solid var(--border);background:var(--panel);color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}.lt-side-rail:hover{background:var(--panel-alt);color:var(--fg-2)}@media(min-width:768px){.lt-side-rail{width:26px;border-bottom:none;border-right:1px solid var(--border)}}@media(min-width:768px){.lt-side-rail-label{writing-mode:vertical-rl;transform:rotate(180deg)}}.lt-side-toggle{border:none;background:none;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.lt-side-toggle:hover{color:var(--fg-2)}.lt-side-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 8px;border-bottom:1px solid var(--border);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);flex-shrink:0}.lt-side-hint{padding:6px 8px;border-top:1px solid var(--border);font-size:11px;color:var(--muted);text-align:center;flex-shrink:0}.lt-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.lt-tree{flex:1;overflow:auto;padding:2px 0}.lt-tree-row{display:flex;align-items:center;gap:3px;padding:2px 6px 2px 0;font-size:12px;color:var(--fg);cursor:pointer;white-space:nowrap;user-select:none}.lt-tree-row:hover{background:var(--panel-alt)}.lt-tree-row--selected{background:var(--accent-ring)}.lt-tree-caret{width:14px;flex-shrink:0;border:none;background:none;color:var(--muted);cursor:pointer;font-size:10px;padding:0}.lt-tree-caret--empty{cursor:default}.lt-tree-check{flex-shrink:0;accent-color:var(--accent);cursor:pointer}.lt-tree-icon{flex-shrink:0;font-size:12px}.lt-tree-name{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.lt-tree-remove{flex-shrink:0;border:none;background:none;color:var(--muted);cursor:pointer;opacity:0;font-size:11px}.lt-tree-row:hover .lt-tree-remove{opacity:1}.lt-tree-remove:hover{color:var(--err)}.lt-row--virt{height:100%;box-sizing:border-box;overflow:hidden}.lt-mark-menu{position:absolute;right:0;bottom:100%;z-index:50;background:var(--panel);border:1px solid var(--border-strong);border-radius:4px;box-shadow:0 2px 8px #0000001f;min-width:110px}.lt-mark-item{display:block;width:100%;padding:5px 10px;border:none;background:none;text-align:left;cursor:pointer;font-size:12px;color:var(--fg)}.lt-mark-item:hover{background:var(--panel-alt)}.lt-table{flex:1;display:flex;flex-direction:column;overflow-x:auto;overflow-y:hidden}.lt-table-head{display:grid;flex-shrink:0;border-bottom:2px solid var(--border-strong);background:var(--panel-alt)}.lt-table-th{padding:4px 8px;font-size:11px;font-weight:700;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border)}.lt-table-body{flex:1}.lt-table-row{display:grid;height:100%;box-sizing:border-box;border-bottom:1px solid var(--border);font-family:Consolas,Cascadia Mono,Courier New,monospace;font-size:12px;align-items:center}.lt-table-row:hover{background:var(--panel-alt)}.lt-table-td{padding:1px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border)}.lt-table-td--ts{color:var(--muted);font-size:11px}.sig{display:flex;flex-direction:column;height:100%;min-height:0;font-size:13px}.sig-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:7px 12px;border-bottom:1px solid var(--border, #e3e3e6);flex:none}.sig-tool-field{display:flex;align-items:center;gap:4px}.sig-tool-field label{font-size:11px;color:var(--c-muted, #8a8a90)}.sig-tool-field input{width:68px;font-size:12px}.sig-tool-field em{font-style:normal;font-size:11px;color:var(--c-muted, #8a8a90)}.sig-check{display:flex;align-items:center;gap:5px;font-size:12px;cursor:pointer}.sig-status{margin-left:auto;font-size:12px}.sig-live{color:var(--c-ok, #2e9c5a)}.sig-idle{color:var(--c-muted, #8a8a90)}.sig-body{flex:1}.sig-timeline{flex:1;min-width:0;overflow:auto;position:relative}.sig-blank{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:0 40px}.sig-blank p{max-width:56ch}.sig-canvas{width:100%;user-select:none;touch-action:none}.sig-canvas svg{display:block;cursor:grab}.sig-canvas.is-dragging svg{cursor:grabbing}.sig-canvas.is-move svg{cursor:ew-resize}.sig-canvas.is-resize-start svg,.sig-canvas.is-resize-end svg,.sig-canvas.is-period svg,.sig-canvas.is-duty svg,.sig-canvas.is-program-length svg,.sig-canvas.is-start-delay svg{cursor:col-resize}.sig-canvas.is-amplitude svg,.sig-canvas.is-threshold svg,.sig-canvas.is-offset svg{cursor:ns-resize}.sig-ruler-bg{fill:var(--bg-alt, #f6f6f8)}.sig-tick{stroke:var(--border, #d8d8dc);stroke-width:1}.sig-tick-label{fill:var(--c-muted, #8a8a90);font-size:10px}.sig-grid{stroke:var(--border-soft, #eeeef1);stroke-width:1}.sig-zero{stroke:var(--border, #d0d0d6);stroke-width:1;stroke-dasharray:3 3}.sig-lane-bg{fill:var(--bg, #fff);stroke:var(--border-soft, #ececed)}.sig-lane.is-off{opacity:.45}.sig-lane-name{font-size:12px;font-weight:600;fill:var(--fg, #1a1a1c)}.sig-lane-meta{font-size:10px;fill:var(--c-muted, #8a8a90)}.sig-lane-range{font-size:10px;fill:var(--c-muted, #a0a0a6);text-anchor:end}.sig-curve{fill:none;stroke:var(--accent, #3c78dc);stroke-width:1.6;stroke-linejoin:round;pointer-events:none}.sig-threshold{stroke:#b8860b;stroke-width:1;stroke-dasharray:5 3;pointer-events:none}.sig-delay{fill:url(#sig-hatch);pointer-events:none}.sig-hatch-line{stroke:#00000024;stroke-width:2}.sig-seg-covered{fill:url(#sig-hatch);opacity:.75;pointer-events:none}.sig-lane-head{fill:transparent;cursor:pointer}.sig-lane-head:hover{fill:#00000009}.sig-lane-head.is-selected{fill:#3c78dc1a}.sig-grip-h{fill:transparent;cursor:ns-resize}.sig-grip-h:hover{fill:#b8860b40}.sig-readout-badge{pointer-events:none}.sig-readout-badge rect{fill:#1a1a1ce6}.sig-readout-badge text{fill:#fff;font-size:11px;font-family:ui-monospace,Consolas,monospace}.sig-seg-body{fill:#3c78dc17;stroke:#3c78dc59;cursor:ew-resize}.sig-seg-body:hover{fill:#3c78dc29}.sig-seg.is-selected .sig-seg-body{fill:#3c78dc33;stroke:var(--accent, #3c78dc);stroke-width:1.5}.sig-seg-label{font-size:10px;fill:var(--c-muted, #7b7b82);pointer-events:none;text-transform:capitalize}.sig-grip-edge{fill:transparent;cursor:col-resize}.sig-grip-edge:hover{fill:#3c78dc40}.sig-handle{fill:#fff;stroke:var(--accent, #3c78dc);stroke-width:2}.sig-handle:hover{fill:var(--accent, #3c78dc)}.sig-handle--amp{cursor:ns-resize}.sig-handle--offset{cursor:ns-resize;stroke:#2e9c5a}.sig-handle--period{cursor:col-resize;stroke:#b8860b}.sig-handle--duty{cursor:col-resize;stroke:#a457c4}.sig-amp-line{stroke:var(--accent, #3c78dc);stroke-width:1;stroke-dasharray:2 2;pointer-events:none}.sig-offset-line{stroke:#2e9c5a;stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.sig-period-line{stroke:#b8860b;stroke-width:1;pointer-events:none}.sig-end-line{stroke:#a457c4;stroke-width:1.5;pointer-events:none}.sig-end-label{fill:#a457c4;font-size:10px;text-anchor:end}.sig-playhead{stroke:var(--c-err, #dc4c46);stroke-width:1.5;pointer-events:none}.sig-readout{position:sticky;bottom:0;display:flex;gap:14px;flex-wrap:wrap;padding:5px 12px;font-family:ui-monospace,Consolas,monospace;font-size:11px;background:var(--bg-alt, #f6f6f8);border-top:1px solid var(--border, #e3e3e6)}.sig-readout-ch b{font-weight:600}.sig-inspector{flex:1;min-height:0;overflow-y:auto;padding-bottom:24px}.sig-insp-group{padding:10px;border-bottom:1px solid var(--border-soft, #eee)}.sig-insp-title{display:flex;align-items:center;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--c-muted, #8a8a90);margin-bottom:8px}.sig-insp-actions{display:flex;gap:3px}.sig-field{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.sig-field>span:first-child{font-size:11px;color:var(--c-muted, #6f6f76)}.sig-field select{flex:1;min-width:0;font-size:12px}.sig-field input[type=number]{width:74px;font-size:12px;text-align:right}.sig-num{display:flex;align-items:center;gap:3px}.sig-num em{font-style:normal;font-size:10px;color:var(--c-muted, #8a8a90)}.sig-field-label{font-size:11px;color:var(--c-muted, #6f6f76);margin:8px 0 4px}.sig-danger{color:var(--c-err, #dc4c46)}.sig-empty{padding:12px 10px;font-size:12px;color:var(--c-muted, #8a8a90)}.sig-waves{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;margin-bottom:10px}.sig-wave{display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 2px 4px;border:1px solid var(--border, #e3e3e6);border-radius:5px;background:none;cursor:pointer;font-size:10px;color:var(--c-muted, #6f6f76)}.sig-wave:hover{border-color:var(--accent, #3c78dc)}.sig-wave.active{border-color:var(--accent, #3c78dc);background:#3c78dc1a;color:var(--fg, #1a1a1c)}.sig-wave-icon{width:40px;height:20px}.sig-wave-icon polyline{fill:none;stroke:currentColor;stroke-width:1.6}.sig-curve-editor{margin-top:6px}.sig-curve-svg{width:100%;height:90px;border:1px solid var(--border, #e3e3e6);border-radius:5px;background:var(--bg, #fff);touch-action:none}.sig-curve-axis{stroke:var(--border, #d8d8dc);stroke-dasharray:3 3}.sig-curve-line{fill:none;stroke:var(--accent, #3c78dc);stroke-width:1.6}.sig-curve-pt{fill:#fff;stroke:var(--accent, #3c78dc);stroke-width:2;cursor:grab}.sig-curve-pt:hover{fill:var(--accent, #3c78dc)}.sn-shell{display:flex;flex-direction:column;height:100%;overflow:hidden;font-size:13px}.sn-toolbar{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.sn-toolbar-sep{flex:1}.sn-btn{padding:4px 10px;border:1px solid var(--c-border, #e2e8f0);border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:var(--c-fg, #1e293b);white-space:nowrap}.sn-btn:hover{background:#f1f5f9}.sn-btn:disabled{opacity:.45;cursor:default}.sn-btn.primary{background:var(--c-accent, #2563eb);color:#fff;border-color:var(--c-accent, #2563eb)}.sn-btn.primary:hover{background:#1d4ed8}.sn-btn.danger{color:#dc2626}.sn-btn.danger:hover{background:#fef2f2}.sn-btn.active{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.sn-count{font-size:11px;color:var(--c-muted, #94a3b8);padding:0 4px}.sn-body{display:flex;flex-direction:column;flex:1;overflow:hidden}@media(min-width:768px){.sn-body{flex-direction:row}}.sn-list{width:100%;max-height:38vh;flex-shrink:0;border-bottom:1px solid var(--c-border, #e2e8f0);overflow-y:auto;overflow-x:hidden}@media(min-width:768px){.sn-list{width:220px;max-height:none;border-right:1px solid var(--c-border, #e2e8f0);border-bottom:none}}.sn-list-empty{padding:20px 12px;color:var(--c-muted, #94a3b8);font-size:12px;text-align:center}.sn-list-item{display:flex;flex-direction:column;padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--c-border, #e2e8f0);border-left:3px solid transparent;gap:2px}.sn-list-item:hover{background:#f8fafc}.sn-list-item.active{background:#eff6ff;border-left-color:var(--c-accent, #2563eb)}.sn-list-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sn-list-meta{font-size:11px;color:var(--c-muted, #94a3b8)}.sn-detail{flex:1;display:flex;flex-direction:column;overflow:hidden}.sn-detail-hdr{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.sn-detail-name{font-weight:600;font-size:13px;flex:1;min-width:0}.sn-detail-name-input{font-weight:600;font-size:13px;flex:1;min-width:120px;padding:2px 6px;border:1px solid var(--c-accent, #2563eb);border-radius:3px;outline:none}.sn-detail-meta{font-size:11px;color:var(--c-muted, #94a3b8);white-space:nowrap}.sn-detail-actions{display:flex;gap:5px;align-items:center;padding:6px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.sn-table-wrap{flex:1;overflow:auto}.sn-filter-bar{display:flex;align-items:center;gap:8px;padding:5px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0}.sn-filter-label{font-size:11px;color:var(--c-muted, #94a3b8);display:flex;align-items:center;gap:4px;cursor:pointer;user-select:none}.sn-table{width:100%;border-collapse:collapse;font-size:12px}.sn-table th{position:sticky;top:0;background:#f8fafc;padding:5px 8px;text-align:left;font-weight:600;font-size:11px;color:var(--c-muted, #64748b);border-bottom:1px solid var(--c-border, #e2e8f0);white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}.sn-table td{padding:4px 8px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.sn-table tr:last-child td{border-bottom:none}.sn-table tr.changed td{font-weight:500;background:#fefce8}.sn-val{font-family:monospace;font-size:12px}.sn-val--changed{color:#dc2626;font-weight:600}.sn-val--same{color:var(--c-muted, #94a3b8)}.sn-set-btn{padding:2px 7px;font-size:11px;border:1px solid var(--c-border, #e2e8f0);border-radius:3px;background:#fff;cursor:pointer}.sn-set-btn:hover{background:#f1f5f9}.sn-set-btn:disabled{opacity:.4;cursor:default}.sn-diff-pickers{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.sn-diff-label{font-size:11px;font-weight:600;color:var(--c-muted, #64748b);text-transform:uppercase;letter-spacing:.05em}.sn-select{font-size:12px;padding:3px 6px;border:1px solid var(--c-border, #e2e8f0);border-radius:3px;background:#fff;color:var(--c-fg, #1e293b);min-width:140px;max-width:200px}.sn-empty{padding:32px;text-align:center;color:var(--c-muted, #94a3b8);font-size:12px}.rp-shell{display:flex;flex-direction:column;height:100%;overflow:hidden;font-size:13px}.rp-toolbar{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.rp-toolbar-sep{flex:1}.rp-toolbar-gap{width:8px}.rp-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--c-border, #e2e8f0);border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:var(--c-fg, #1e293b);white-space:nowrap}.rp-btn:hover{background:#f1f5f9}.rp-btn:disabled{opacity:.45;cursor:default}.rp-btn.primary{background:var(--c-accent, #2563eb);color:#fff;border-color:var(--c-accent, #2563eb)}.rp-btn.primary:hover{background:#1d4ed8}.rp-btn.danger{color:#dc2626}.rp-btn.danger:hover{background:#fef2f2}.rp-btn.active{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.rp-rec-dot{width:9px;height:9px;border-radius:50%;background:#dc2626;animation:rp-pulse 1.1s ease-in-out infinite}.rp-rec-dot.idle{background:#cbd5e1;animation:none}@keyframes rp-pulse{0%,to{opacity:1}50%{opacity:.3}}.rp-field{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--c-muted, #64748b)}.rp-check{display:inline-flex;align-items:center;gap:4px;font-size:12px;cursor:pointer;user-select:none}.rp-loglog{display:inline-flex;align-items:center;gap:5px}.rp-select{font-size:12px;padding:3px 6px;border:1px solid var(--c-border, #e2e8f0);border-radius:3px;background:#fff;color:var(--c-fg, #1e293b);max-width:200px}.rp-status{display:flex;align-items:center;gap:10px;padding:5px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0}.rp-mode{font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 7px;border-radius:3px;background:#f1f5f9;color:#64748b}.rp-mode.rp-mode--recording{background:#fef2f2;color:#dc2626}.rp-mode.rp-mode--playing{background:#ecfdf5;color:#059669}.rp-mode.rp-mode--paused{background:#fffbeb;color:#d97706}.rp-status-meta{font-size:11px;color:var(--c-muted, #94a3b8)}.rp-body{display:flex;flex-direction:column;flex:1;overflow:hidden}@media(min-width:768px){.rp-body{flex-direction:row}}.rp-list{width:100%;max-height:38vh;flex-shrink:0;border-bottom:1px solid var(--c-border, #e2e8f0);overflow-y:auto;overflow-x:hidden}@media(min-width:768px){.rp-list{width:220px;max-height:none;border-right:1px solid var(--c-border, #e2e8f0);border-bottom:none}}.rp-list-empty{padding:20px 12px;color:var(--c-muted, #94a3b8);font-size:12px;text-align:center}.rp-list-item{display:flex;flex-direction:column;padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--c-border, #e2e8f0);border-left:3px solid transparent;gap:2px}.rp-list-item:hover{background:#f8fafc}.rp-list-item.active{background:#eff6ff;border-left-color:var(--c-accent, #2563eb)}.rp-list-item.playing{border-left-color:#059669}.rp-list-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-list-meta{font-size:11px;color:var(--c-muted, #94a3b8)}.rp-detail{flex:1;display:flex;flex-direction:column;overflow:hidden}.rp-detail-hdr{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.rp-detail-name{font-weight:600;font-size:13px;flex:1;min-width:0}.rp-name-input{font-weight:600;font-size:13px;flex:1;min-width:120px;padding:2px 6px;border:1px solid var(--c-accent, #2563eb);border-radius:3px;outline:none}.rp-detail-meta{font-size:11px;color:var(--c-muted, #94a3b8);white-space:nowrap}.rp-detail-actions{display:flex;gap:5px;align-items:center;padding:6px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0;flex-wrap:wrap}.rp-seek{display:flex;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid var(--c-border, #e2e8f0);flex-shrink:0}.rp-seek-range{flex:1;accent-color:var(--c-accent, #2563eb)}.rp-seek-range:disabled{opacity:.5}.rp-seek-label{font-size:11px;color:var(--c-muted, #64748b);min-width:70px;text-align:right}.rp-table-wrap{flex:1;overflow:auto}.rp-table{width:100%;border-collapse:collapse;font-size:12px}.rp-table th{position:sticky;top:0;background:#f8fafc;padding:5px 8px;text-align:left;font-weight:600;font-size:11px;color:var(--c-muted, #64748b);border-bottom:1px solid var(--c-border, #e2e8f0);white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}.rp-table td{padding:4px 8px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.rp-table tr:last-child td{border-bottom:none}.rp-table tr.current td{background:#ecfdf5;font-weight:500}.rp-col-idx{width:38px;color:var(--c-muted, #94a3b8);text-align:right}.rp-col-act{width:1%}.rp-time{font-family:monospace;color:var(--c-muted, #64748b);white-space:nowrap}.rp-val{font-family:monospace}.rp-row-acts{display:flex;gap:4px;white-space:nowrap}.rp-mini{padding:1px 6px;font-size:11px;border:1px solid var(--c-border, #e2e8f0);border-radius:3px;background:#fff;cursor:pointer}.rp-mini:hover{background:#f1f5f9}.rp-empty{padding:32px;text-align:center;color:var(--c-muted, #94a3b8);font-size:12px}.history-tab{display:flex;flex-direction:column;gap:.75rem;padding:1rem;max-width:720px}.history-tab .history-empty{padding:2rem 0;text-align:center}.history-tab .history-readout{display:flex;align-items:baseline;gap:.5rem}.history-tab .history-readout .history-readout-time{font-size:1.4rem;font-variant-numeric:tabular-nums;font-weight:600}.history-tab .history-seek{width:100%}.history-tab .history-bounds{display:flex;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:.8rem}.history-tab .history-controls{display:flex;gap:.4rem;flex-wrap:wrap}.history-tab .history-jump{display:flex;flex-direction:column;gap:.25rem;max-width:280px}.history-tab .history-hint{font-size:.85rem}.history-file-list{list-style:none;margin:0 0 .5rem;padding:0;display:flex;flex-direction:column;gap:.25rem}.history-file-list .history-file-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .5rem;border:1px solid var(--border, #ccc);border-radius:4px}.history-file-list .history-file-row .history-file-name{font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calc-tab{display:flex;flex-direction:column;height:100%;min-height:0}.calc-tab .calc-empty{padding:2rem 1rem;text-align:center}.calc-tab .calc-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.5rem .75rem;border-bottom:1px solid var(--border, #ccc)}.calc-tab .calc-toolbar .calc-search-wrap{flex:1 1 180px;min-width:140px}.calc-tab .calc-toolbar .calc-search-wrap .calc-search{width:100%}.calc-tab .calc-toolbar .calc-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.calc-tab .calc-toolbar .calc-tb-sep{width:1px;align-self:stretch;background:var(--border, #ccc);margin:0 .25rem}.calc-tab .calc-grid{flex:1 1 auto;min-height:0;overflow:auto;font-variant-numeric:tabular-nums}.calc-tab .calc-row{display:grid;grid-template-columns:minmax(160px,2fr) minmax(90px,1fr) minmax(90px,1fr) minmax(90px,1fr);border-bottom:1px solid var(--border, #e5e5e5)}.calc-tab .calc-cell{padding:.3rem .5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calc-tab .calc-key{font-family:ui-monospace,Cascadia Code,Consolas,monospace;border-right:1px solid var(--border, #e5e5e5);position:sticky;left:0;z-index:1;background:var(--panel, #fff)}.calc-tab .calc-head .calc-key{background:var(--panel-alt, #f5f5f5);z-index:2}.calc-tab .calc-changed .calc-key{background:#eaf3fb}.calc-tab .calc-val{text-align:right}.calc-tab .calc-head{position:sticky;top:0;z-index:1;background:var(--panel-alt, #f5f5f5);font-weight:600;border-bottom:2px solid var(--border, #ccc)}.calc-tab .calc-head .calc-col-head{display:flex;align-items:center;justify-content:space-between;gap:.25rem}.calc-tab .calc-head .calc-col-time{display:block;font-size:.7rem;font-weight:400}.calc-tab .calc-head .calc-copy{background:none;border:none;cursor:pointer;color:var(--muted, #888);padding:0 .15rem}.calc-tab .calc-head .calc-copy:hover:not(:disabled){color:var(--fg, #222)}.calc-tab .calc-head .calc-copy:disabled{opacity:.35;cursor:default}.calc-tab .calc-changed{background:#3891dc1a}.calc-tab .calc-diff{background:#0096dc47;font-weight:600}.varlist-tab{display:flex;flex-direction:column;height:100%;min-height:0}.varlist-tab .varlist-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.5rem .75rem;border-bottom:1px solid var(--border, #ccc)}.varlist-tab .varlist-title{display:flex;align-items:baseline;gap:.35rem}.varlist-tab .varlist-title h3{margin:0;font-size:.95rem}.varlist-tab .varlist-count{color:var(--muted, #888);font-size:.8rem}.varlist-tab .varlist-search-wrap{flex:1 1 180px;min-width:140px}.varlist-tab .varlist-search-wrap .varlist-search{width:100%}.varlist-tab .varlist-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.varlist-tab .varlist-flash{padding:.35rem .75rem;font-size:.8rem;background:#3891dc1f;border-bottom:1px solid var(--border, #e5e5e5)}.varlist-tab .varlist-note{margin:0;padding:.35rem .75rem;font-size:.75rem;border-bottom:1px solid var(--border, #e5e5e5)}.varlist-tab .varlist-scroll{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;overflow-x:auto}.varlist-tab .varlist-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.82rem;font-variant-numeric:tabular-nums}.varlist-tab .varlist-table th,.varlist-tab .varlist-table td{padding:.3rem .5rem;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px;border-bottom:1px solid var(--border, #e5e5e5)}.varlist-tab .varlist-table thead th{position:sticky;top:0;z-index:2;background:var(--panel-alt, #f5f5f5);font-weight:600;border-bottom:2px solid var(--border, #ccc)}.varlist-tab .varlist-table .varlist-col-key{position:sticky;left:3rem;z-index:1;background:var(--panel, #fff);font-family:ui-monospace,Cascadia Code,Consolas,monospace;border-right:1px solid var(--border, #e5e5e5)}.varlist-tab .varlist-table thead .varlist-col-key{background:var(--panel-alt, #f5f5f5);z-index:3}.varlist-tab .varlist-table .varlist-col-narrow{width:1%;text-align:right}.varlist-tab .varlist-table .varlist-col-num{position:sticky;left:0;z-index:1;width:3rem;min-width:3rem;max-width:3rem;text-align:right;color:var(--muted, #888);background:var(--panel, #fff);font-variant-numeric:tabular-nums}.varlist-tab .varlist-table thead .varlist-col-num{background:var(--panel-alt, #f5f5f5);z-index:3}.varlist-tab .varlist-table .varlist-col-group{border-left:1px solid var(--border, #e5e5e5)}.varlist-tab .varlist-table thead .varlist-col-custom{font-style:italic;font-weight:500;color:var(--muted, #666)}@media(max-width:600px){.varlist-tab .varlist-table th,.varlist-tab .varlist-table td{max-width:60vw}.varlist-tab .varlist-table .varlist-col-key{max-width:45vw}}.varlist-tab .varlist-empty{padding:2rem 1rem;text-align:center}.varlist-tab .varlist-pager{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border-top:1px solid var(--border, #ccc);font-size:.8rem}.mcp-tab{padding:16px 20px;max-width:640px;display:flex;flex-direction:column;gap:14px}.mcp-tab .mcp-title{margin:0;font-size:18px}.mcp-tab .mcp-intro{margin:0;line-height:1.4}.mcp-tab .mcp-error{color:var(--c-err, #d33);background:#dd33331a;border:1px solid rgba(221,51,51,.3);border-radius:4px;padding:6px 10px;font-size:13px}.mcp-tab .mcp-toggle,.mcp-tab .mcp-bindall{display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none}.mcp-tab .mcp-fields{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap}.mcp-tab .mcp-field{display:flex;flex-direction:column;gap:4px}.mcp-tab .mcp-field .field-input{width:120px}.mcp-tab .mcp-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mcp-tab .mcp-status .mcp-status-label{font-weight:600}.mcp-tab .mcp-status .mcp-status-val--ok{color:var(--c-ok, #2a2)}.mcp-tab .mcp-status .mcp-status-val--off{color:var(--c-muted, #888)}.mcp-tab .mcp-status .mcp-clients{font-size:12px}.mcp-tab .mcp-copy{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mcp-tab .mcp-url{background:var(--c-code-bg, rgba(127, 127, 127, .12));padding:2px 8px;border-radius:4px;font-size:13px}.mcp-tab .mcp-warn{margin:0;color:var(--c-warn, #b80);font-size:13px}.mcp-tab .mcp-varcount{margin:0;font-size:13px}.mcp-tab .mcp-tools{border-top:1px solid var(--c-border, rgba(127, 127, 127, .25));padding-top:12px;display:flex;flex-direction:column;gap:8px}.mcp-tab .mcp-tools .mcp-tools-hd{font-weight:600;font-size:13px}.mcp-tab .mcp-tools .mcp-tool{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.mcp-tab .mcp-tools .mcp-tool-name{background:var(--c-code-bg, rgba(127, 127, 127, .12));padding:1px 6px;border-radius:4px;font-size:12px}.mcp-tab .mcp-tools .mcp-tool-desc{font-size:12px}.share-tab{padding:16px 20px;max-width:640px;display:flex;flex-direction:column;gap:14px}.share-tab .share-title{margin:0;font-size:18px}.share-tab .share-intro{margin:0;line-height:1.4}.share-tab .share-error{color:var(--c-err, #d33);background:#dd33331a;border:1px solid rgba(221,51,51,.3);border-radius:4px;padding:6px 10px;font-size:13px}.share-tab .share-fields{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap}.share-tab .share-check{display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none}.share-tab .share-warn{margin:0;font-size:13px;line-height:1.4;color:var(--c-warn, #b8860b);background:#b8860b1a;border:1px solid rgba(184,134,11,.3);border-radius:4px;padding:6px 10px}.share-tab .share-invite{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}.share-tab .share-qr{width:224px;height:224px;background:#fff;border-radius:6px;padding:4px;box-sizing:border-box;flex:none}.share-tab .share-qr svg{display:block;width:100%;height:100%}.share-tab .share-invite-side{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:200px}.share-tab .share-code-label{font-size:12px;opacity:.7}.share-tab .share-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:30px;font-weight:700;letter-spacing:.18em;line-height:1.1}.share-tab .share-status-row{display:flex;align-items:center;gap:7px;font-size:13px}.share-tab .share-dot{width:8px;height:8px;border-radius:50%;flex:none;background:#888}.share-tab .share-dot--live{background:#2ea043}.share-tab .share-dot--connecting{background:#b8860b}.share-tab .share-dot--retrying{background:#d33}.share-tab .share-dot--closed{background:#888}.share-tab .share-viewers{display:flex;flex-direction:column;gap:6px}.share-tab .share-viewers-hd{font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.7}.share-tab .share-empty{margin:0;font-size:13px}.share-tab .share-viewer{display:flex;align-items:center;gap:10px;padding:5px 8px;border:1px solid var(--c-border, rgba(136, 136, 136, .2));border-radius:4px}.share-tab .share-viewer--kicked{opacity:.55}.share-tab .share-viewer-id{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;flex:1}.share-tab .share-viewer-role{font:inherit;font-size:12px}.share-tab .share-note{margin:0;font-size:12px;line-height:1.45}.share-tab .share-modes{display:flex;flex-direction:column;gap:10px}.share-tab .share-mode{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer}.share-tab .share-mode input[type=radio]{margin-top:2px;flex:none}.share-tab .share-mode--on{border-color:var(--accent);background:var(--accent-soft)}.share-tab .share-mode-body{display:flex;flex-direction:column;gap:6px;min-width:0}.share-tab .share-mode-title{font-weight:600}.share-tab .share-mode-why{font-size:12px;line-height:1.45}.share-tab .share-sub{margin-left:2px;padding-left:10px;border-left:2px solid var(--border);font-size:12px;align-items:flex-start}.share-tab .share-sub input[type=checkbox]{margin-top:2px;flex:none}.share-tab .share-sub span{line-height:1.45}.share-tab .share-port{width:100px}.share-tab .share-code--pin{font-size:22px}.share-tab .share-lobby{border:1px solid var(--accent);border-radius:6px;padding:10px 12px;background:var(--accent-soft)}.share-tab .share-lobby-hint{margin-top:4px}.share-tab .share-viewer--waiting{gap:8px}.share-tab .share-viewer-via{font-size:11px;text-transform:uppercase;letter-spacing:.05em}.share-tab .share-addresses{display:flex;flex-direction:column;gap:6px}.share-tab .share-code--addr{font-size:17px;letter-spacing:0;word-break:break-all}.share-tab .share-addr-list{margin:0;padding-left:18px;font-size:12px;line-height:1.6}.share-tab .share-addr-list code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;user-select:all}.share-tab .share-addr--extra{opacity:.65}.dev-panel{display:flex;flex-direction:column;gap:8px;padding:8px;overflow:auto;min-height:0}.dev-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.dev-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #64748b)}.dev-add-btn{padding:3px 8px;font-size:12px;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a)}.dev-add-btn:hover{background:var(--panel-alt, #f1f5f9)}.dev-picker{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--border, #cbd5e1);border-radius:6px}.dev-picker-group{display:flex;flex-direction:column;gap:4px}.dev-picker-head{display:flex;flex-direction:column;font-size:11px;font-weight:600;color:var(--fg, #0f172a)}.dev-picker-sub{font-size:10px;font-weight:400;color:var(--muted, #94a3b8)}.dev-picker-items{display:flex;flex-wrap:wrap;gap:4px}.dev-picker-item{padding:4px 8px;font-size:12px;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a)}.dev-picker-item:hover{background:var(--panel-alt, #f1f5f9)}.dev-empty{font-size:12px;line-height:1.5;margin:8px 0}.dev-card{border:1px solid var(--border, #e2e8f0);border-radius:6px;background:var(--panel, #fff)}.dev-card.editing{border-color:#0ea5e9}.dev-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 6px;border-bottom:1px solid var(--border, #e2e8f0)}.dev-card-kind{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted, #94a3b8)}.dev-card-bound{flex:1 1 auto;min-width:0;font-size:11px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dev-card-actions{display:flex;align-items:center;gap:2px;flex:0 0 auto}.dev-icon{width:20px;height:20px;padding:0;line-height:1;font-size:12px;cursor:pointer;border:none;border-radius:4px;background:none;color:var(--muted, #64748b)}.dev-icon:hover:not(:disabled){background:var(--panel-alt, #f1f5f9);color:var(--fg, #0f172a)}.dev-icon.active{background:#0ea5e9;color:#fff}.dev-icon:disabled{opacity:.3;cursor:default}.dev-widget{padding:8px}.dev-unknown{padding:8px;font-size:12px}.dev-edit{padding:8px;border-top:1px solid var(--border, #e2e8f0);display:flex;flex-direction:column;gap:8px}.dev-field{display:flex;flex-direction:column;gap:3px}.dev-field-label{font-size:11px;color:var(--muted, #64748b)}.dev-input{width:100%;padding:3px 6px;font-size:12px;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:var(--panel, #fff);color:var(--fg, #0f172a)}.dev-bindings{display:flex;flex-direction:column;gap:8px}.dev-bind-group{display:flex;flex-direction:column;gap:3px}.dev-bind-head{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.dev-bind-prop{font-size:11px;color:var(--muted, #64748b)}.dev-bind-opt{font-style:italic}.dev-bind-dir{font-size:10px;font-weight:600;padding:0 4px;border-radius:3px;background:var(--panel-alt, #f1f5f9);color:var(--muted, #64748b)}.dev-bind-dir.write{background:#dbeafe;color:#1d4ed8}.dev-bind-row{display:flex;align-items:flex-start;gap:4px}.dev-bind-pick{flex:1 1 auto;min-width:0}.dev-bind-inv{flex:0 0 auto;padding:2px 5px;font-size:10px;font-weight:600;cursor:pointer;border:1px solid var(--border, #cbd5e1);border-radius:4px;background:none;color:var(--muted, #64748b)}.dev-bind-inv.active{background:#fef3c7;border-color:#f59e0b;color:#92400e}.dev-bind-add{align-self:flex-start;padding:2px 6px;font-size:11px;cursor:pointer;border:1px dashed var(--border, #cbd5e1);border-radius:4px;background:none;color:var(--muted, #64748b)}.dev-bind-add:hover{color:var(--fg, #0f172a);border-color:var(--fg, #0f172a)}.dev-edit .mod-settings{display:flex;flex-direction:column;gap:8px;padding-top:8px;border-top:1px dashed var(--border, #e2e8f0)}.dev-nobind{display:block;width:100%;text-align:left;cursor:pointer;padding:4px 8px 6px;font-size:11px;line-height:1.4;border:none;border-top:1px dashed var(--border, #e2e8f0);background:none;color:var(--muted, #64748b)}.dev-nobind:hover{color:#0ea5e9}.lv-shell{position:fixed;inset:0;display:flex;flex-direction:column;font-family:-apple-system,system-ui,Segoe UI,sans-serif;font-size:13px;background:var(--bg, #F7F7F8);overflow:hidden}.lv-topbar{display:flex;align-items:center;gap:10px;height:44px;min-height:44px;padding:0 14px;background:#0f172a;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0;z-index:20}.lv-hamburger{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;cursor:pointer;color:#cbd5e1;border-radius:6px;flex-shrink:0}.lv-hamburger:hover{background:#1e293b}.lv-topbar-name{font-size:15px;font-weight:700;color:#fff;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-backdrop{position:fixed;inset:0;background:#00000073;z-index:39}.lv-sidebar{position:fixed;top:0;bottom:0;left:0;width:220px;background:#0f172a;display:flex;flex-direction:column;z-index:40;transform:translate(-100%);transition:transform .22s ease;overflow:hidden}.lv-sidebar.open{transform:translate(0)}.lv-sb-hdr{padding:16px 14px 12px;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.lv-sb-name{display:block;font-size:15px;font-weight:700;color:#fff;margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-sb-status{display:flex;align-items:center;gap:6px}.lv-sb-state{font-size:12px;color:#cbd5e1}.lv-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.lv-dot.lv-dot--connected{background:#34d399;box-shadow:0 0 5px #34d39980}.lv-dot.lv-dot--connecting{background:#fbbf24}.lv-dot.lv-dot--error{background:#f87171}.lv-dot.lv-dot--idle{background:#60a5fa}.lv-dot.lv-dot--disconnected,.lv-dot.lv-dot--undefined{background:#475569}.lv-cat-tabs{display:flex;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.lv-cat-tab{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px 8px;background:none;border:none;cursor:pointer;color:#94a3b8;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;transition:color .12s,background .12s}.lv-cat-tab svg{opacity:.65}.lv-cat-tab:hover{background:#1e293b;color:#cbd5e1}.lv-cat-tab.active{background:#1e293b;color:#5eead4}.lv-cat-tab.active svg{opacity:1;stroke:#5eead4}.lv-err-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--err);color:#fff;font-size:10px;font-weight:700;line-height:1}.lv-cat-tab .lv-err-badge{position:absolute;top:4px;right:calc(50% - 20px)}.lv-nav-item .lv-err-badge{margin-left:auto}.lv-nav{flex:1;overflow-y:auto;padding:6px 0}.lv-nav-item{width:100%;display:flex;align-items:center;gap:9px;padding:9px 14px;background:none;border:none;border-left:2px solid transparent;cursor:pointer;color:#cbd5e1;font-size:13px;text-align:left;transition:background .1s,color .1s}.lv-nav-item svg{opacity:.65;flex-shrink:0}.lv-nav-item:hover{background:#1e293b;color:#e2e8f0}.lv-nav-item.active{border-left-color:#14b8a6;background:#334155;color:#5eead4}.lv-nav-item.active svg{opacity:1;stroke:#5eead4}.lv-nav-label{flex:1}.lv-nav-disc{color:#f87171}.lv-nav-disc:hover{background:#f871711a!important}.lv-nav-conn{color:#34d399}.lv-sb-foot{flex-shrink:0;border-top:1px solid rgba(255,255,255,.06);padding:6px 0 8px}.lv-nav-back{width:100%;display:flex;align-items:center;gap:7px;padding:8px 14px;background:none;border:none;cursor:pointer;color:#94a3b8;font-size:12px}.lv-nav-back:hover{color:#cbd5e1}.lv-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--bg, #F7F7F8)}.lv-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--border, #e2e8f0);flex-shrink:0}.lv-search-wrap{position:relative;flex:1;min-width:120px;max-width:280px}.lv-search-icon{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--muted, #94a3b8);pointer-events:none}.lv-search{width:100%;box-sizing:border-box;padding:6px 10px 6px 28px;border:1px solid var(--border, #e2e8f0);border-radius:6px;font-size:13px;outline:none;background:var(--panel, #fff)}.lv-search:focus{border-color:#14b8a6;box-shadow:0 0 0 2px #14b8a624}.lv-pills{display:flex;gap:3px;flex-wrap:wrap}.lv-pill{padding:4px 9px;border:1px solid var(--border, #e2e8f0);border-radius:5px;background:none;font-size:12px;cursor:pointer;color:var(--muted, #64748b);transition:all .1s}.lv-pill:hover{border-color:#14b8a6;color:#14b8a6}.lv-pill.active{border-color:#14b8a6;background:#14b8a624;color:#14b8a6;font-weight:600}.lv-toolbar-sep{width:1px;height:20px;background:var(--border, #e2e8f0);margin:0 2px;flex-shrink:0}.lv-check-label{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted, #64748b);cursor:pointer;white-space:nowrap;user-select:none}.lv-check-label input[type=checkbox]{accent-color:#14B8A6;cursor:pointer}.lv-io-body{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.lv-col{display:flex;flex-direction:column;min-height:200px;border-bottom:1px solid var(--border, #e2e8f0)}.lv-col:last-child{border-bottom:none}.lv-col-hdr{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:6px 12px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #64748b);background:var(--panel-alt, #f8fafc);border-bottom:1px solid var(--border, #e2e8f0);flex-shrink:0}.lv-col-count{font-size:11px;font-weight:600;background:var(--border, #e2e8f0);border-radius:10px;padding:1px 7px}.lv-col-body{position:relative;background:#fff}.lv-col-empty{padding:20px 14px;font-size:12px;background:#fff}.lv-grp-hdr{width:100%;height:100%;display:flex;align-items:center;gap:6px;padding:0 12px;background:#f1f5f9;border:none;border-bottom:1px solid var(--border, #e2e8f0);cursor:pointer;font-size:11px;font-weight:700;color:var(--muted, #64748b);text-align:left}.lv-grp-hdr:hover{background:#e8eef5}.lv-grp-name{flex:1}.lv-chevron{flex-shrink:0;transition:transform .14s}.lv-chevron.closed{transform:rotate(-90deg)}.lv-row{display:flex;align-items:center;gap:5px;height:100%;padding:0 8px 0 12px;border-bottom:1px solid var(--border, #f1f5f9);background:#fff;transition:background .07s;box-sizing:border-box}.lv-row:hover{background:#fafafa}.lv-row.lv-row--err{background:#fff8f8}.lv-row--pinned{box-shadow:inset 2px 0 #f59e0b;background:#fffdf7}.lv-row--pinned:hover{background:#fff9ec}.lv-pin{flex-shrink:0;width:16px;height:16px;border:none;background:none;cursor:pointer;font-size:12px;color:#dde4ee;padding:0;line-height:1;transition:color .1s}.lv-pin:hover,.lv-pin.on{color:#f59e0b}.lv-row-name{flex:1;min-width:0;font-family:Cascadia Code,SF Mono,Consolas,monospace;font-size:12px;color:var(--fg, #0f172a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-row-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.lv-val{font-family:Cascadia Code,SF Mono,Consolas,monospace;font-size:11px;font-weight:700;border-radius:4px;padding:1px 5px;min-width:32px;text-align:right;white-space:nowrap}.lv-val--wait{color:var(--muted, #94a3b8)}.lv-val--err{color:#dc2626;background:#fee2e2}.lv-val--bool{text-align:center}.lv-val--bool.on{background:#dcfce7;color:#166534}.lv-val--bool.off{background:#fee2e2;color:#991b1b}.lv-val--num{color:#0f172a;cursor:default}.lv-val--num:hover{background:#f1f5f9;border-radius:3px}.lv-val--str{color:#0d9488;background:#f0fdfa}.lv-adj{width:20px;height:20px;padding:0;border:1px solid var(--border, #e2e8f0);border-radius:3px;background:#fff;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;color:#374151;transition:background .1s,border-color .1s;flex-shrink:0}.lv-adj:hover:not(:disabled){background:#f1f5f9;border-color:#14b8a6;color:#14b8a6}.lv-adj:active:not(:disabled){background:#14b8a624}.lv-adj:disabled{opacity:.35;cursor:default}.lv-edit{width:66px;padding:2px 5px;border:1px solid #14B8A6;border-radius:3px;background:#fff;font-family:Cascadia Code,SF Mono,Consolas,monospace;font-size:11px;font-weight:700;outline:none;box-shadow:0 0 0 2px #14b8a624}@keyframes lv-flash{0%{background-color:#14b8a638}to{background-color:#fff}}.lv-row.lv-flash{animation:lv-flash .6s ease-out}.lv-placeholder{flex:1;display:flex;align-items:center;justify-content:center;font-size:14px}.lv-info{flex:1;min-height:0;overflow-y:auto;padding:16px}.lv-info>*+*{margin-top:12px}.lv-info-hdr{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;padding-bottom:6px;border-bottom:1px solid var(--border, #e2e8f0)}.lv-info-rows{display:flex;flex-direction:column;gap:0;border:1px solid var(--border, #e2e8f0);border-radius:6px;overflow:hidden}.lv-info-row{display:flex;align-items:baseline;gap:8px;padding:6px 10px;font-size:12px;border-bottom:1px solid var(--border, #e2e8f0)}.lv-info-row:last-child{border-bottom:none}.lv-info-key{color:#94a3b8;min-width:110px;flex-shrink:0;font-size:11px}.lv-info-val{color:#1e293b;word-break:break-all}.lv-info-val--muted{color:#94a3b8;font-size:11px}.lv-info-empty{font-size:13px;padding:12px 0;color:#94a3b8}.lv-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.lv-kpi-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 8px 8px;border:1px solid var(--border, #e2e8f0);border-radius:6px;background:#f8fafc;gap:3px}.lv-kpi-item--err{background:#fef2f2;border-color:#fecaca}.lv-kpi-item--hi{background:#f0fdf4;border-color:#bbf7d0}.lv-kpi-val{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#0f172a}.lv-kpi-item--err .lv-kpi-val{color:#dc2626}.lv-kpi-item--hi .lv-kpi-val{color:#16a34a}.lv-kpi-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}.lv-net-list{display:flex;flex-direction:column;gap:8px}.lv-net-if{border:1px solid var(--border, #e2e8f0);border-radius:6px;padding:8px 10px;background:#f8fafc}.lv-net-if--down{opacity:.55}.lv-net-if-name{font-size:12px;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:6px;margin-bottom:4px}.lv-net-if-ips{display:flex;flex-wrap:wrap;gap:4px}.lv-net-ip{font-family:Cascadia Code,SF Mono,Consolas,monospace;font-size:11px;background:#e2e8f0;padding:1px 6px;border-radius:3px;color:#334155}.lv-badge{font-size:9px;font-weight:700;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:#e2e8f0;color:#94a3b8}.lv-badge--warn{background:#fef9c3;color:#a16207}.lv-info-sub{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:4px 0 2px;border-bottom:1px solid var(--border, #e2e8f0);margin-top:4px}.lv-info-btn{padding:3px 10px;font-size:11px;border:1px solid var(--border, #e2e8f0);border-radius:4px;background:#fff;cursor:pointer;color:#1e293b}.lv-info-btn:hover{background:#f1f5f9}.lv-info-btn:disabled{opacity:.4;cursor:default}.lv-info-export{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding-top:8px}.lv-info-download{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:12px}.lv-info-note{margin:0;max-width:60ch;font-size:11px;line-height:1.5;color:#94a3b8}.lv-info-note--warn{color:#b8860b}.lv-info-note--err{color:var(--c-err, #dc4c46)}.lv-srv-log-wrap{overflow:auto;max-height:400px;border:1px solid var(--border, #e2e8f0);border-radius:6px}.lv-srv-log{width:100%;border-collapse:collapse;font-size:11px}.lv-srv-log th{position:sticky;top:0;background:#f8fafc;padding:4px 8px;text-align:left;font-weight:600;font-size:10px;color:#94a3b8;border-bottom:1px solid var(--border, #e2e8f0);white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}.lv-srv-log td{padding:3px 8px;border-bottom:1px solid #f1f5f9;white-space:nowrap;font-family:Cascadia Code,SF Mono,Consolas,monospace}.lv-srv-log tr:last-child td{border-bottom:none}.lv-srv-log tr.lv-srv-row--err td{background:#fef2f2}.lv-srv-log tr.lv-srv-row--disabled td{background:#fefce8;opacity:.7}.lv-srv-ts{color:#94a3b8;font-size:10px}.lv-kpi-block{display:flex;flex-direction:column;gap:6px}.lv-kpi-block-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}.lv-kpi-grid--sm{grid-template-columns:repeat(6,1fr)}.lv-kpi-cols{display:grid;grid-template-columns:1fr;gap:10px}.lv-kpi-col{display:flex;flex-direction:column;gap:12px;min-width:0}.lv-info-hdr-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.lv-info-hdr-row .lv-info-hdr{flex:1;border-bottom:none;padding-bottom:0}.lv-info-hdr-row{padding-bottom:6px;border-bottom:1px solid var(--border, #e2e8f0)}@media(max-width:600px){.lv-kpi-grid{grid-template-columns:repeat(2,1fr)}.lv-kpi-grid--sm{grid-template-columns:repeat(3,1fr)}}@media(min-width:768px){.lv-shell{flex-direction:row}.lv-kpi-cols{grid-template-columns:1fr 1fr}.lv-topbar{display:none}.lv-sidebar{position:static;transform:none!important;width:190px;min-width:190px}.lv-io-body{flex-direction:row;align-items:flex-start}.lv-io-body .lv-col{flex:1;min-width:0;border-bottom:none;border-right:1px solid var(--border, #e2e8f0)}.lv-io-body .lv-col:last-child{border-right:none}}.lv-start-error{position:absolute;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;gap:12px;padding:8px 14px;background:#dc4c46;color:#fff;font-size:13px}.lv-start-error span{flex:1}.lv-start-error .lv-start-retry{flex:none;padding:3px 12px;font-size:12px;color:#fff;background:#ffffff2e;border:1px solid rgba(255,255,255,.5);border-radius:5px;cursor:pointer}.lv-start-error .lv-start-retry:hover{background:#ffffff4d}.join-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.join-dialog{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:480px;max-width:calc(100vw - 32px);padding:14px 16px;display:flex;flex-direction:column;gap:12px}.join-dialog .join-header{display:flex;align-items:center;justify-content:space-between}.join-dialog .join-header h3{margin:0;font-size:16px}.join-dialog .join-intro,.join-dialog .join-note{margin:0;font-size:12px;line-height:1.45}.join-dialog .join-error{color:var(--err);background:#dd33331a;border:1px solid rgba(221,51,51,.3);border-radius:4px;padding:6px 10px;font-size:12px;line-height:1.4}.join-dialog .join-input{width:100%;resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.join-dialog .join-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border)}.join-dialog .join-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:6px 10px;font:inherit;font-size:13px;color:var(--muted);cursor:pointer}.join-dialog .join-tab:hover{color:inherit}.join-dialog .join-tab--on{color:inherit;border-bottom-color:var(--accent)}.join-dialog .join-row{display:flex;flex-direction:column;gap:4px}.join-dialog .join-code,.join-dialog .join-pin{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.14em;text-transform:uppercase}.join-dialog .join-pin{text-transform:none}.join-dialog .join-paste{border-top:1px solid var(--border);padding-top:10px}.join-dialog .join-paste summary{cursor:pointer;font-size:12px}.join-dialog .join-paste .join-input{margin-top:8px}.join-dialog .join-actions{display:flex;justify-content:flex-end;gap:8px}.join-dialog .join-scan{display:flex;flex-direction:column;gap:8px}.join-dialog .join-video{width:100%;max-height:320px;border-radius:6px;background:#000;object-fit:cover}.sub-bar{display:flex;align-items:center;gap:10px;padding:12px 20px;background:linear-gradient(180deg,var(--accent-soft) 0%,#eff6ff 100%);border-bottom:1px solid var(--accent-soft)}.sub-bar .sub-bar-name{font-weight:600;color:var(--fg)}.sub-bar .sub-bar-addr{color:var(--muted);font-size:13px}.sub-bar .sub-bar-reconnect{margin-left:auto}.main-page{padding:20px;max-width:980px;margin:0 auto}.main-page-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px}.main-page-search{position:relative;flex:1 1 100%}@media(min-width:480px){.main-page-search{flex:1}}.main-page-search .search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted-2);pointer-events:none}.main-page-search .search-input{width:100%;padding:11px 14px 11px 40px;border:1px solid var(--border);border-radius:8px;background:var(--panel);font-size:14px;color:var(--fg);outline:none;transition:border-color .08s,box-shadow .08s}.main-page-search .search-input::placeholder{color:var(--muted-2)}.main-page-search .search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.main-page-error{padding:10px 14px;border:1px solid #fecaca;border-radius:6px;background:var(--err-soft);color:var(--err);font-size:13px;margin-bottom:16px}.main-page-loading{padding:24px;text-align:center}.empty-state{text-align:center;padding:60px 20px}.empty-state .empty-icon{color:var(--muted-2);margin-bottom:12px}.empty-state h2{margin:0 0 6px;font-size:18px;font-weight:600;color:var(--fg)}.empty-state p{margin:0 0 18px;font-size:14px}.empty-state .btn{display:inline-flex}.empty-actions{display:inline-flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:center}.group{margin-bottom:20px}.group-header{display:flex;align-items:center;gap:8px;padding:4px 4px 6px;background:transparent;border:none;cursor:pointer;width:100%;text-align:left;font:inherit;color:inherit}.group-header .caret{display:inline-block;width:14px;color:var(--muted);font-size:11px;transition:transform .1s}.group-header .caret.down{transform:rotate(-90deg)}.group-header .group-name{font-size:13px;font-weight:700;letter-spacing:.04em}.group-header .group-count{font-size:12px}.group-header:hover .caret,.group-header:hover .group-count{color:var(--fg-2)}.conn-rows{list-style:none;margin:0;padding:0;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}.conn-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;grid-template-areas:"name name go edit" "addr count go edit";gap:4px 12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}.conn-row:last-child{border-bottom:none}.conn-row:hover{background:var(--panel-alt)}.conn-row .conn-name{grid-area:name;font-size:14px;font-weight:500;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conn-row .conn-address{grid-area:addr;font-size:13px;font-family:SF Mono,Cascadia Code,Consolas,monospace;color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conn-row .conn-server{grid-area:addr;justify-self:start}.conn-row .conn-count{grid-area:count;justify-self:start;white-space:nowrap}.conn-row .btn-primary{grid-area:go}.conn-row .btn-ghost{grid-area:edit}@media(min-width:768px){.conn-row{grid-template-columns:minmax(0,1.2fr) minmax(0,1.4fr) minmax(0,1fr) auto auto;grid-template-areas:none;gap:12px;padding:10px 16px}.conn-row .conn-name,.conn-row .conn-address,.conn-row .conn-server,.conn-row .conn-count,.conn-row .btn-primary,.conn-row .btn-ghost{grid-area:auto}.conn-row .conn-count{justify-self:auto}}.conn-row .conn-server{display:inline-flex;align-items:center;font-size:12px;font-style:italic;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 10px;border-radius:10px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}.conn-row .conn-addr{font-size:13px;font-family:SF Mono,Cascadia Code,Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conn-row .conn-count{font-size:12px}.new-conn-overlay{position:fixed;inset:0;background:#0f172a66;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.new-conn-dialog{background:var(--panel);border-radius:12px;box-shadow:0 20px 50px #0f172a33;width:100%;max-width:540px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.new-conn-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px}.new-conn-header h2{margin:0;font-size:18px;font-weight:700;color:var(--fg)}.new-conn-body{padding:4px 24px 20px;overflow-y:auto;display:grid;gap:16px}.new-conn-error{padding:10px 14px;border:1px solid #fecaca;border-radius:6px;background:var(--err-soft);color:var(--err);font-size:13px}.field .req{color:var(--err);margin-left:2px}.new-conn-hint{margin:4px 0 0;font-size:12px;color:var(--muted);font-style:italic}.new-conn-hint.warn{color:var(--warn, #b8860b);font-style:normal}.select-wrap{position:relative}.select-wrap:after{content:"";position:absolute;right:14px;top:50%;transform:translateY(-50%);width:12px;height:12px;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat}.new-conn-divider{display:flex;align-items:center;gap:12px;margin:4px 0}.new-conn-divider .line{flex:1;height:1px;background:var(--border)}.new-conn-divider .label{font-size:12px;font-weight:500}.new-conn-import{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:420px){.new-conn-import{grid-template-columns:1fr 1fr}}.new-conn-import-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px 16px;background:transparent;border:1.5px dashed var(--border-strong);border-radius:10px;color:var(--muted);cursor:pointer;font-weight:500;font-size:13px;transition:border-color .08s,color .08s}.new-conn-import-btn:not(:disabled):hover{border-color:var(--accent);color:var(--accent)}.new-conn-import-btn:disabled{opacity:.5;cursor:default}.new-conn-modes{display:flex;flex-direction:column;gap:10px}.new-conn-mode{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;text-align:left;background:transparent;border:1px solid var(--border-strong);border-radius:10px;color:inherit;cursor:pointer;transition:border-color .08s,background .08s}.new-conn-mode:hover{border-color:var(--accent);background:var(--panel-alt)}.new-conn-mode:disabled{opacity:.5;cursor:default}.new-conn-mode-title{font-weight:600;font-size:14px}.new-conn-mode-sub{font-size:12px;line-height:1.4}.new-conn-open{display:flex;flex-direction:column;gap:14px}.new-conn-url{display:flex;gap:8px}.new-conn-url .field-input{flex:1;min-width:0}.new-conn-summary{margin:4px 0 0;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-alt);font-size:13px}.new-conn-summary-row{display:flex;gap:12px;padding:3px 0}.new-conn-summary-row dt{flex:0 0 92px;font-size:12px}.new-conn-summary-row dd{margin:0;min-width:0;word-break:break-word}.new-conn-footer{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:14px 24px 20px;border-top:1px solid var(--border);background:var(--panel-alt)}.new-conn-footer-spacer{flex:1}:root{--bg: #f7f7f8;--panel: #ffffff;--panel-alt: #f8fafc;--border: #e2e8f0;--border-strong: #cbd5e1;--fg: #0f172a;--fg-2: #334155;--muted: #64748b;--muted-2: #94a3b8;--accent: #2563eb;--accent-2: #1d4ed8;--accent-soft: #dbeafe;--accent-ring: rgba(37, 99, 235, .18);--ok: #10b981;--ok-soft: #d1fae5;--warn: #f59e0b;--warn-soft: #fef3c7;--err: #dc2626;--err-soft: #fee2e2;--tag-modbus: #ea580c;--tag-siemens: #0d9488;--tag-opcua: #7c3aed;--tag-virtual: #db2777;--tag-mqtt: #4f46e5;--tag-firmata: #00979d;--tag-ethercat: #0891b2;--tag-script: #475569;--tag-gpio: #16a34a;--tag-clx: #0284c7;--tag-ads: #b45309;--tag-serial: #64748b;--tag-qcx: #2563eb;--tag-remote: #475569;--tag-default: #475569}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--fg);font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;font-size:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:var(--fg)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-2)}.muted{color:var(--muted)}.muted-2{color:var(--muted-2)}code{font-family:SF Mono,Cascadia Code,Consolas,Liberation Mono,monospace;font-size:.9em;background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:0 4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--fg);cursor:pointer;font-weight:500;font-size:13px;line-height:1;white-space:nowrap;user-select:none;transition:background .08s,border-color .08s,color .08s}.btn:hover{border-color:var(--border-strong);background:var(--panel-alt)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--panel-alt);color:var(--fg)}.btn-danger{background:var(--err-soft);border-color:#fecaca;color:var(--err)}.btn-danger:hover{background:#fee2e2}.btn-icon{width:32px;height:32px;padding:0;border-radius:6px}.field{display:grid;gap:5px}.field-label{display:block;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.field-input,.field-select,.field-textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:6px;background:var(--panel-alt);color:var(--fg);font-size:14px;outline:none;transition:border-color .08s,box-shadow .08s}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);background:#fff}.field-input::placeholder,.field-select::placeholder,.field-textarea::placeholder{color:var(--muted-2)}.field-textarea{min-height:70px;resize:vertical;font-family:inherit}.field-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px;padding-right:30px}.field-check{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px}.card h2{margin:0 0 12px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.tag-modbus{color:var(--tag-modbus)}.tag-siemens{color:var(--tag-siemens)}.tag-opcua{color:var(--tag-opcua)}.tag-virtual{color:var(--tag-virtual)}.tag-mqtt{color:var(--tag-mqtt)}.tag-firmata{color:var(--tag-firmata)}.tag-ethercat{color:var(--tag-ethercat)}.tag-script{color:var(--tag-script)}.tag-gpio{color:var(--tag-gpio)}.tag-clx{color:var(--tag-clx)}.tag-ads{color:var(--tag-ads)}.tag-serial{color:var(--tag-serial)}.tag-qcx{color:var(--tag-qcx)}.tag-remote{color:var(--tag-remote)}.tag-default{color:var(--tag-default)}.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--muted-2);flex-shrink:0}.status-dot.connected{background:var(--ok)}.status-dot.connecting{background:var(--warn);animation:pulse 1s infinite}.status-dot.error{background:var(--err)}.status-dot.idle{background:var(--ok)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.app{display:flex;flex-direction:column;height:100%;min-height:100%;background:var(--bg)}.placeholder{max-width:540px;margin:80px auto;padding:40px;text-align:center;background:var(--panel);border:1px solid var(--border);border-radius:10px}.placeholder h2{margin:0 0 8px;font-size:20px;font-weight:700;color:var(--fg)}.placeholder p{margin:0 0 18px;font-size:14px}.placeholder .btn{display:inline-flex}@media(pointer:coarse){.btn{min-height:40px}.btn-icon{width:40px;height:40px}.field-check{width:20px;height:20px}}.safe-top{padding-top:max(0px,env(safe-area-inset-top))}.safe-bottom{padding-bottom:max(0px,env(safe-area-inset-bottom))}.sg-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--c-bg, #1e1e1e);z-index:40}.sg-card{max-width:380px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.sg-h{margin:0;font-size:19px;font-weight:600}.sg-p{margin:0;font-size:13px;line-height:1.45}.sg-spinner{width:26px;height:26px;border:3px solid var(--c-border, rgba(136, 136, 136, .2666666667));border-top-color:var(--c-accent, #2f6feb);border-radius:50%;animation:sg-spin .8s linear infinite}@keyframes sg-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.sg-spinner{animation:none}}.sg-shell{display:flex;flex-direction:column;height:100%;min-height:0}.sg-banner{display:flex;align-items:center;gap:9px;padding:5px 12px;font-size:12.5px;background:#2f6feb29;border-bottom:1px solid rgba(47,111,235,.35);flex:none}.sg-banner--retrying{background:#dd333324;border-bottom-color:#dd333359}.sg-follow{font-size:11px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;opacity:.75}.sg-banner-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sg-dot{width:7px;height:7px;border-radius:50%;background:#2ea043;flex:none}.sg-banner--retrying .sg-dot{background:#d33}.sg-banner--connecting .sg-dot{background:#b8860b}.sg-app{flex:1;min-height:0;display:flex;flex-direction:column}.sg-blocked{color:#ffd479}
