*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{height:100%;margin:0}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{--bg: #0f0f13;--surface: #1e1e30;--surface-hover: #22223a;--border: #2a2a3a;--text: #e0e0e8;--text-muted: #888899;--accent: #646cff;--accent-hover: #535bf2;--valve: #22c55e;--valve-bg: rgba(34, 197, 94, .12);--valve-state: #14b8a6;--valve-state-bg: rgba(20, 184, 166, .12);--pressure: #3b82f6;--pressure-bg: rgba(59, 130, 246, .12);--temperature: #f59e0b;--temperature-bg: rgba(245, 158, 11, .12);--neutral: #6b7280;--neutral-bg: rgba(107, 114, 128, .12)}.app{height:100%;display:flex;flex-direction:column;background:var(--bg);color:var(--text);overflow:hidden}.app-header{display:flex;align-items:center;gap:1rem;padding:.875rem 2rem;border-bottom:1px solid var(--border);background:var(--surface)}.app-brand{display:flex;align-items:center;min-width:0}.app-brand-logo{height:39px;width:auto;flex-shrink:0;display:block;filter:brightness(0) invert(1)}.app-header-banners{margin-left:auto;display:flex;align-items:center;gap:1rem;flex-shrink:0}.app-title{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;color:var(--text);white-space:nowrap}.privacy-badge{font-size:.75rem;color:var(--text-muted);background:var(--neutral-bg);border:1px solid var(--border);border-radius:99px;padding:.2rem .65rem;white-space:nowrap}.app-main{flex:1;min-height:0;padding:2rem;max-width:1100px;width:100%;margin:0 auto;box-sizing:border-box;overflow:auto}.drop-zone-wrapper{display:flex;flex-direction:column;align-items:center;gap:.75rem}.drop-zone{width:100%;min-height:140px;border:2px dashed var(--border);border-radius:12px;background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s;-webkit-user-select:none;user-select:none;box-sizing:border-box}.drop-zone:hover,.drop-zone:focus-visible{border-color:var(--accent);background:var(--surface-hover);outline:none}.drop-zone--dragging{border-color:var(--accent);background:var(--surface-hover)}.drop-zone--loaded{border-style:solid;border-color:var(--border);min-height:80px}.drop-zone-input{display:none}.drop-zone-empty,.drop-zone-loaded{display:flex;flex-direction:column;align-items:center;gap:.3rem;pointer-events:none}.drop-zone-icon{font-size:1.75rem;line-height:1;color:var(--text-muted)}.drop-zone--loaded .drop-zone-icon{color:var(--valve)}.drop-zone-label{font-size:.95rem;font-weight:500}.drop-zone-filename{font-size:.9rem;font-weight:600}.drop-zone-meta,.drop-zone-hint{font-size:.8rem;color:var(--text-muted)}.asset-picker{width:100%;display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.asset-picker-label{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.asset-picker-list{display:flex;flex-direction:column;gap:.25rem}.asset-picker-confirm-text{font-size:.8rem;color:#ef4444}.asset-picker-error{font-size:.78rem;color:#ef4444}.asset-picker-item{display:flex;align-items:center;padding:.5em .75em;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.875rem;font-family:inherit;cursor:pointer;transition:border-color .15s,background .15s;text-align:left}.asset-picker-item:hover{border-color:var(--accent);background:var(--surface-hover)}.asset-picker-item--selected{border-color:var(--accent);background:var(--surface-hover);font-weight:600}.asset-picker-actions{display:flex;gap:.4rem}.asset-picker-create{display:flex;gap:.4rem;align-items:center}.asset-picker-name-input{flex:1;padding:.45em .75em;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .15s}.asset-picker-name-input:focus{border-color:var(--accent)}.asset-picker-name-input::placeholder{color:var(--text-muted)}.btn{border-radius:8px;border:1px solid transparent;padding:.45em 1.1em;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--text-muted);border-color:var(--border)}.btn-secondary:hover{background:var(--surface-hover);color:var(--text);border-color:var(--accent)}.btn-ghost{background:transparent;color:var(--text-muted);border-color:transparent}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-danger{background:transparent;color:#ef4444;border-color:#ef4444}.btn-danger:hover{background:#ef4444;color:#fff}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.results-section{margin-top:2rem;display:flex;flex-direction:column;gap:1.25rem}.timestamp-picker{display:flex;align-items:center;gap:.75rem}.timestamp-picker-label{font-size:.875rem;color:var(--text-muted);white-space:nowrap}.timestamp-picker-select{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.35em .6em;font-size:.875rem;font-family:inherit;cursor:pointer}.timestamp-picker-select:focus{outline:2px solid var(--accent);outline-offset:1px}.tag-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:10px}.tag-table{width:100%;border-collapse:collapse;font-size:.875rem}.tag-table th{background:var(--surface);color:var(--text-muted);font-weight:500;text-align:left;padding:.65rem 1rem;border-bottom:1px solid var(--border);white-space:nowrap}.tag-table td{padding:.55rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle}.tag-table tbody tr:last-child td{border-bottom:none}.tag-table tbody tr:nth-child(2n) td{background:#ffffff05}.tag-table .col-name{font-weight:500;font-family:ui-monospace,Cascadia Code,monospace;font-size:.8rem}.tag-table .num{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-muted)}.badge{display:inline-block;padding:.2em .55em;border-radius:99px;font-size:.78rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge--valve{color:var(--valve);background:var(--valve-bg)}.badge--valve_state{color:var(--valve-state);background:var(--valve-state-bg)}.badge--pressure{color:var(--pressure);background:var(--pressure-bg)}.badge--temperature{color:var(--temperature);background:var(--temperature-bg)}.badge--timestamp,.badge--other{color:var(--neutral);background:var(--neutral-bg)}.rename-signals{display:flex;flex-direction:column;gap:1rem}.rename-signals-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.rename-search{flex:1;min-width:160px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.35em .65em;font-size:.875rem;font-family:inherit}.rename-search:focus{outline:2px solid var(--accent);outline-offset:1px}.rename-type-filter{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.35em .6em;font-size:.875rem;font-family:inherit;cursor:pointer;white-space:nowrap}.rename-type-filter:focus{outline:2px solid var(--accent);outline-offset:1px}.rename-unaliased-count{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.rename-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:10px}.rename-table{width:100%;border-collapse:collapse;font-size:.875rem}.rename-table th{background:var(--surface);color:var(--text-muted);font-weight:500;text-align:left;padding:.65rem 1rem;border-bottom:1px solid var(--border);white-space:nowrap}.rename-table td{padding:.5rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle}.rename-table tbody tr:last-child td{border-bottom:none}.rename-table tbody tr:nth-child(2n) td{background:#ffffff05}.col-original{font-family:ui-monospace,Cascadia Code,monospace;font-size:.8rem;color:var(--text-muted);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-alias{display:flex;align-items:center;gap:.5rem}.alias-input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.3em .6em;font-size:.875rem;font-family:inherit;width:200px;transition:border-color .15s}.alias-input:focus{outline:2px solid var(--accent);outline-offset:1px}.alias-input--duplicate{border-color:#ef4444}.alias-input--duplicate:focus{outline-color:#ef4444}.alias-duplicate-warning{font-size:.75rem;color:#ef4444;white-space:nowrap;flex-shrink:0}.rename-empty{padding:2rem;text-align:center;color:var(--text-muted);font-size:.875rem}.rename-actions{display:flex;justify-content:space-between;align-items:center;padding-top:.25rem}.app-main.app-main--full{padding:0;max-width:none;display:flex;flex-direction:column;overflow:hidden}.diagram-builder{position:relative;display:flex;flex:1;min-height:0;overflow:hidden}.diagram-sidebar{width:210px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow:hidden}.diagram-sidebar-header{padding:.65rem 1rem .4rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.diagram-search{margin:0 .75rem .5rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.3em .6em;font-size:.8rem;font-family:inherit}.diagram-search:focus{outline:2px solid var(--accent);outline-offset:1px}.diagram-sidebar-groups{flex:1;overflow-y:auto;padding-bottom:1rem}.diagram-signal-group{padding:0 .5rem .25rem}.diagram-signal-group-title{padding:.35rem .5rem .2rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.diagram-signal-item{padding:.35rem .6rem;border-radius:5px;font-size:.8rem;cursor:grab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);border-left:2px solid transparent;transition:background .12s,border-color .12s}.diagram-signal-item:hover{background:var(--surface-hover);border-left-color:var(--accent)}.diagram-signal-item:active{cursor:grabbing}.diagram-signal-item--used{opacity:.45;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.diagram-signal-item--used:active{cursor:pointer}.diagram-signal-check{font-size:.65rem;color:var(--accent);margin-left:.3em;flex-shrink:0}.diagram-sidebar-empty{padding:1rem;font-size:.8rem;color:var(--text-muted);text-align:center}.diagram-canvas-area{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.diagram-topbar{display:flex;align-items:center;gap:.85rem;padding:.45rem 1rem;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.diagram-topbar-spacer{flex:1}.diagram-asset-group{display:flex;align-items:center;gap:.25rem}.diagram-tab-sized{padding:.25em .75em;font-size:.78rem}.diagram-asset-name{font-size:.85rem;font-weight:600;color:var(--accent);padding:.2em .6em;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.diagram-tabs{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.diagram-tab{padding:.25em .75em;font-size:.78rem;font-weight:500;font-family:inherit;background:transparent;color:var(--text-muted);border:none;cursor:pointer;transition:background .12s,color .12s}.diagram-tab:not(:last-child){border-right:1px solid var(--border)}.diagram-tab:hover{background:var(--surface-hover);color:var(--text)}.diagram-tab--active{background:var(--accent);color:#fff}.diagram-tab--active:hover{background:var(--accent-hover)}.diagram-saved{font-size:.75rem;color:var(--valve)}.diagram-canvas-row{flex:1;display:flex;min-height:0}.reactflow-wrapper{flex:1;min-height:0;background:var(--bg);position:relative}.reactflow-wrapper:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:5;background:radial-gradient(ellipse at center,transparent 50%,rgba(15,15,19,.6) 100%)}.diagram-cavity-summary{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:500;color:var(--text-muted)}.diagram-cavity-summary--warn{color:#f59e0b}.diagram-progress-track{display:inline-block;width:48px;height:5px;background:var(--border);border-radius:3px;overflow:hidden;vertical-align:middle}.diagram-progress-fill{display:block;height:100%;background:var(--valve);border-radius:3px;transition:width .2s}.diagram-cavity-summary--warn .diagram-progress-fill{background:#f59e0b}.units-indicator{display:inline-flex;align-items:center;gap:.25rem;font-size:.78rem}.units-indicator-label{color:var(--text-muted);font-weight:500}.units-btn{padding:.15em .45em;font-size:.72rem;font-weight:600;font-family:inherit;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.units-btn:hover{background:var(--surface-hover);color:var(--text)}.units-btn--active{background:var(--accent);color:#fff;border-color:var(--accent)}.units-btn--active:hover{background:var(--accent-hover)}.units-indicator--unconfirmed{padding:.15em .45em;border:1px dashed #f59e0b;border-radius:6px}.units-indicator-hint{font-size:.68rem;color:#f59e0b;white-space:nowrap}.cavity-label{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;cursor:pointer}.cavity-label--selected{border-color:var(--accent);color:var(--text)}.cavity-label--missing{color:#f59e0b;border-color:#f59e0b66}.cavity-label--review{color:#ef4444;border-color:#ef444466}.diagram-right-panel{width:240px;flex-shrink:0;border-left:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow-y:auto}.cavity-inspector{padding:.75rem;display:flex;flex-direction:column;gap:.6rem}.cavity-inspector-header{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding-bottom:.25rem;border-bottom:1px solid var(--border)}.cavity-inspector-row{display:flex;align-items:baseline;gap:.5rem;font-size:.8rem}.cavity-inspector-label{font-size:.75rem;color:var(--text-muted);white-space:nowrap;min-width:48px}.cavity-inspector-value{font-size:.8rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cavity-inspector-field{display:flex;flex-direction:column;gap:.25rem}.cavity-inspector-input{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:.3em .5em;font-size:.8rem;font-family:inherit;width:100%;box-sizing:border-box}.cavity-inspector-input:focus{outline:2px solid var(--accent);outline-offset:1px}.cavity-inspector-vol-row{display:flex;gap:.35rem}.cavity-inspector-vol-input{flex:1;min-width:0}.cavity-inspector-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:.3em .4em;font-size:.8rem;font-family:inherit;cursor:pointer}.cavity-inspector-select:focus{outline:2px solid var(--accent);outline-offset:1px}.cavity-inspector-warning{font-size:.75rem;color:#ef4444;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:4px;padding:.35rem .5rem}.cavity-inspector-info{font-size:.75rem;color:var(--text-muted);font-style:italic}.missing-cavities{padding:.75rem;display:flex;flex-direction:column;gap:.3rem;border-top:1px solid var(--border)}.missing-cavities-header{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#f59e0b;padding-bottom:.2rem}.missing-cavities-item{display:block;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:4px;padding:.3rem .45rem;font-size:.75rem;font-family:inherit;color:var(--text-muted);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s,color .12s}.missing-cavities-item:hover{background:var(--surface-hover);color:var(--text);border-color:var(--border)}.pn-node{min-width:76px;padding:6px 10px 8px;border-radius:8px;background:var(--surface);border:1.5px solid var(--border);display:flex;flex-direction:column;align-items:center;gap:3px;cursor:default;-webkit-user-select:none;user-select:none;transition:border-color .12s,box-shadow .12s;box-shadow:0 3px 10px #0006}.pn-node--selected,.pn-node:hover{border-color:var(--accent);box-shadow:0 3px 14px #646cff40}.pn-node--missing{border-color:#ef4444;opacity:.7}.pn-glyph{width:28px;height:28px}.pn-label{font-size:.68rem;font-weight:500;text-align:center;max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.pn-node--valve .pn-glyph{color:var(--valve)}.pn-node--pressure .pn-glyph{color:var(--pressure)}.pn-node--temperature .pn-glyph{color:var(--temperature)}.pn-node--generic .pn-glyph{color:var(--neutral)}.gauge-bubble{position:relative;width:18px;height:18px;overflow:visible;filter:drop-shadow(0 1px 3px rgba(0,0,0,.3));cursor:default;-webkit-user-select:none;user-select:none}.gauge-circle{width:18px;height:18px;border-radius:50%;border:1.5px solid;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;line-height:1;transition:border-color .12s,box-shadow .12s}.gauge-bubble--selected .gauge-circle{box-shadow:0 0 6px #646cff80;border-color:var(--accent)!important;color:var(--accent)!important}.gauge-bubble--missing .gauge-circle{border-color:#ef4444!important;opacity:.7}.gauge-alias{position:absolute;left:22px;top:50%;transform:translateY(-50%);font-size:.58rem;font-weight:600;white-space:nowrap;color:var(--text-muted);pointer-events:none}.gauge-stem-svg{position:absolute;overflow:visible;pointer-events:none}.pn-junction{width:20px;height:20px;display:flex;align-items:center;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none}.pn-junction-dot{width:14px;height:14px;color:var(--text-muted);transition:color .12s}.pn-junction--selected .pn-junction-dot,.pn-junction:hover .pn-junction-dot{color:var(--accent)}.pn-junction .react-flow__handle{width:10px;height:10px;min-width:0;min-height:0;background:transparent;border:none;opacity:0;transition:opacity .15s}.pn-junction:hover .react-flow__handle{opacity:1;background:#646cff4d;border:1px solid var(--accent)}.pn-junction .react-flow__handle:hover{background:var(--accent)}.pn-boundary{width:32px;height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none}.pn-boundary-icon{width:18px;height:18px;color:var(--text-muted);transition:color .12s}.pn-boundary-label{font-size:.55rem;font-weight:600;color:var(--text-muted);letter-spacing:.02em;line-height:1.1;text-align:center}.pn-boundary--selected .pn-boundary-icon,.pn-boundary:hover .pn-boundary-icon,.pn-boundary--selected .pn-boundary-label,.pn-boundary:hover .pn-boundary-label{color:var(--accent)}.pn-boundary .react-flow__handle{width:10px;height:10px;min-width:0;min-height:0;background:transparent;border:none;opacity:0;transition:opacity .15s}.pn-boundary:hover .react-flow__handle{opacity:1;background:#646cff4d;border:1px solid var(--accent)}.pn-boundary .react-flow__handle:hover{background:var(--accent)}.pn-node--valve .react-flow__handle{width:10px;height:10px;min-width:0;min-height:0;background:var(--border);border:1px solid var(--text-muted);transition:width .15s,height .15s,background .15s,opacity .15s;opacity:0}.pn-node--valve:hover .react-flow__handle{opacity:1;background:#646cff4d;border-color:var(--accent)}.pn-node--valve .react-flow__handle:hover{background:var(--accent)}.react-flow__edge.edge-candidate .react-flow__edge-path{stroke:var(--accent);stroke-width:3;filter:drop-shadow(0 0 4px var(--accent))}.diagram-connecting .pn-node--valve .react-flow__handle,.diagram-connecting .pn-junction .react-flow__handle,.diagram-connecting .pn-boundary .react-flow__handle{opacity:1;width:14px;height:14px;background:#646cff59;border:2px solid var(--accent);border-radius:50%;transition:width .15s,height .15s,background .15s,box-shadow .15s,opacity .15s;z-index:10}.diagram-connecting .pn-node--valve .react-flow__handle:hover,.diagram-connecting .pn-junction .react-flow__handle:hover,.diagram-connecting .pn-boundary .react-flow__handle:hover{width:18px;height:18px;background:var(--accent);box-shadow:0 0 10px var(--accent),0 0 20px #646cff66}.react-flow__connection-path{stroke:var(--accent)!important;stroke-width:2.5!important}.react-flow__background{background:var(--bg)}.react-flow__controls{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000004d}.react-flow__controls-button{background:var(--surface);border-bottom-color:var(--border);color:var(--text-muted)}.react-flow__controls-button:hover{background:var(--surface-hover)}.react-flow__controls-button svg{fill:var(--text-muted)}.react-flow__minimap{background:var(--surface)!important;border:1px solid var(--border);border-radius:8px}.react-flow__attribution{display:none}.data-preview{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.data-preview-controls{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.data-preview-search{flex:1;min-width:120px;max-width:260px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.3em .6em;font-size:.8rem;font-family:inherit}.data-preview-search:focus{outline:2px solid var(--accent);outline-offset:1px}.data-preview-count{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.data-preview-empty{padding:3rem 2rem;text-align:center;color:var(--text-muted);font-size:.875rem}.data-preview-warning{padding:.4rem 1rem;font-size:.75rem;color:#f59e0b;background:#f59e0b14;border-bottom:1px solid var(--border);flex-shrink:0}.data-plot-wrapper{flex:1;display:flex;flex-direction:column;min-height:0}.data-lanes-scroll{flex:1;overflow-y:auto;min-height:0}.data-preview-lane{display:flex;align-items:stretch;border-bottom:1px solid var(--border)}.data-preview-lane-label{width:160px;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.5rem .75rem;border-right:1px solid var(--border)}.data-preview-lane-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.data-preview-lane-name{font-size:.75rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.data-preview-lane-chart{flex:1;min-width:0}.data-time-axis{display:flex;align-items:stretch;flex-shrink:0;border-top:1px solid var(--border);background:var(--surface)}.data-preview-axis-spacer{width:160px;flex-shrink:0;border-right:1px solid var(--border)}.data-preview-axis-chart{flex:1;min-width:0}.compile-toast{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.5rem 1rem;font-size:.8rem;white-space:nowrap;pointer-events:none;z-index:100;box-shadow:0 4px 12px #0006}.results-view{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.results-history-bar{display:flex;gap:.4rem;padding:.5rem .75rem;overflow-x:auto;border-bottom:1px solid var(--border);flex-shrink:0}.results-history-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.35em .65em;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.75rem;font-family:inherit;cursor:pointer;transition:border-color .15s,background .15s;white-space:nowrap;flex-shrink:0}.results-history-item:hover{border-color:var(--accent);background:var(--surface-hover)}.results-history-item--active{border-color:var(--accent);background:var(--surface-hover);font-weight:600}.results-history-date{font-size:.72rem;color:var(--text-muted)}.results-history-summary{font-size:.75rem}.results-controls{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.results-search{min-width:120px;max-width:200px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.3em .6em;font-size:.8rem;font-family:inherit}.results-search:focus{outline:2px solid var(--accent);outline-offset:1px}.results-toggle{display:inline-flex;align-items:center;gap:.3rem;font-size:.78rem;color:var(--text-muted);cursor:pointer;white-space:nowrap}.results-toggle input[type=checkbox]{accent-color:var(--accent)}.results-count{font-size:.75rem;color:var(--text-muted);white-space:nowrap;margin-left:auto}.results-layout{flex:1;display:flex;min-height:0;overflow:hidden}.results-table-area{flex:1;overflow:auto;min-width:0;min-height:0}.results-table-area::-webkit-scrollbar{width:6px}.results-table-area::-webkit-scrollbar-track{background:var(--surface);border-radius:3px}.results-table-area::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.results-table-area::-webkit-scrollbar-thumb:hover{background:#fff6}.results-chart-panel{flex-shrink:0;border-top:1px solid var(--border);background:var(--surface)}.results-chart-panel-header{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;font-size:.78rem;color:var(--text);border-bottom:1px solid var(--border)}.results-chart-panel-sep{color:var(--border)}.results-chart-panel-body{padding:.25rem .35rem 1rem;display:flex;gap:0;align-items:stretch}.results-pane-col{display:flex;flex-direction:column;min-width:0}.results-pane-col--cavity{flex-shrink:0;border-right:1px solid var(--border);position:relative}.results-pane-col--cavity:after{content:"";position:absolute;top:0;bottom:0;right:-12px;width:12px;background:linear-gradient(to right,rgba(0,0,0,.25),transparent);pointer-events:none;z-index:1}.results-pane-col--chart{flex:1;min-width:0;padding-left:2rem}.results-pane-heading{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:.25rem .5rem .3rem}.results-cavity-legend{display:flex;align-items:center;gap:.4rem;padding:.2rem .5rem;font-size:.68rem;color:var(--text-muted)}.cavity-mini{flex:1;width:560px;display:flex;align-items:center;justify-content:center;padding:.25rem}.cavity-mini-svg{width:100%;height:100%}.cavity-mini-edge{stroke:var(--text-muted);stroke-width:2;opacity:.5;fill:none}.cavity-mini-stem{stroke:var(--text-muted);stroke-width:1;opacity:.4;stroke-dasharray:3 2}.cavity-mini-vol-bg{fill:var(--surface);stroke:none}.cavity-mini-vol{fill:var(--text-muted);font-size:10px;font-family:ui-monospace,Cascadia Code,monospace}.cavity-mini-valve-tri{fill:var(--text-muted)}.cavity-mini-valve--tested .cavity-mini-valve-tri{fill:#3b82f6}.cavity-mini-valve--against .cavity-mini-valve-tri{fill:#f59e0b}.cavity-mini-label{fill:var(--text-muted);font-size:10px;text-anchor:middle;font-family:inherit}.cavity-mini-label--tested{fill:#3b82f6;font-weight:600}.cavity-mini-junction{fill:var(--text-muted)}.cavity-mini-boundary{fill:none;stroke:var(--text-muted);stroke-width:1.5;stroke-dasharray:3 2;opacity:.5}.cavity-mini-gauge{fill:none;stroke-width:1.5}.cavity-mini-gauge--pressure{stroke:var(--pressure)}.cavity-mini-gauge--temp{stroke:var(--temperature)}.cavity-mini-gauge-letter{text-anchor:middle;font-size:9px;font-weight:700;fill:var(--text)}.cavity-mini-gauge-label{text-anchor:middle;font-size:9px;fill:var(--text-muted);dominant-baseline:central}.results-chart-placeholder{flex-shrink:0;padding:1.25rem 1rem;text-align:center;font-size:.8rem;color:var(--text-muted);border-top:1px solid var(--border)}.results-table{width:100%;border-collapse:collapse;font-size:.8rem}.results-table th{background:var(--surface);color:var(--text-muted);font-weight:500;text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1}.results-table td{padding:.4rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}.results-table tbody tr{cursor:pointer;transition:background .1s}.results-table tbody tr:hover{background:var(--surface-hover)}.results-table tbody tr.results-row--selected{background:#646cff1f}.results-cell-time{font-family:ui-monospace,Cascadia Code,monospace;font-size:.75rem;color:var(--text-muted)}.results-cell-num{text-align:left;font-variant-numeric:tabular-nums}.results-badge{font-size:.85rem}.results-conf{font-size:.72rem;font-weight:600;padding:.15em .4em;border-radius:99px}.results-conf--high{color:var(--valve);background:var(--valve-bg)}.results-conf--medium{color:#f59e0b;background:#f59e0b1f}.results-conf--low{color:#ef4444;background:#ef44441f}.results-impact{font-size:.72rem;font-weight:600;padding:.15em .4em;border-radius:99px}.results-impact--merge{color:#22c55e;background:#22c55e1f}.results-impact--split{color:#f59e0b;background:#f59e0b1f}.results-impact--no-impact{color:var(--text-muted);background:#8080801a}.results-summary{display:flex;gap:1rem;align-items:center;font-size:.8rem;color:var(--text-muted);flex-wrap:wrap}.results-summary b{color:var(--text)}.results-filtered{font-size:.75rem;opacity:.65}.results-impact-merge b{color:#22c55e}.results-impact-split b{color:#f59e0b}.results-filter-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.25em .5em;font-size:.78rem;font-family:inherit;cursor:pointer;max-width:160px}.results-filter-select:focus{outline:2px solid var(--accent);outline-offset:1px}.results-cell-against{font-size:.75rem;color:var(--text-muted);max-width:180px;overflow:hidden;text-overflow:ellipsis}.results-threshold{display:flex;align-items:center;gap:.4rem;margin-left:auto;font-size:.78rem;color:var(--text-muted)}.results-threshold-label{white-space:nowrap}.results-threshold-input{width:56px;padding:2px 4px;font-size:.78rem;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;text-align:center;color-scheme:dark}.btn-sm{padding:2px 8px;font-size:.72rem}.results-cell-mono{font-family:monospace;font-size:.72rem}.results-cell-pressure{font-size:.75rem;color:var(--text-muted)}.results-pass{display:inline-block;font-size:.72rem;font-weight:700;padding:.15em .5em;border-radius:99px;color:var(--valve);background:var(--valve-bg);letter-spacing:.03em}.results-fail{display:inline-block;font-size:.72rem;font-weight:700;padding:.15em .5em;border-radius:99px;color:#ef4444;background:#ef44441f;letter-spacing:.03em}.results-detail{width:420px;flex-shrink:0;border-left:1px solid var(--border);background:var(--surface);overflow-y:auto;display:flex;flex-direction:column}.results-detail-header{padding:.6rem .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border)}.results-detail-meta{padding:.5rem .75rem;display:flex;flex-direction:column;gap:.2rem;border-bottom:1px solid var(--border)}.results-meta-row{font-size:.78rem;color:var(--text)}.results-meta-label{color:var(--text-muted);display:inline-block;min-width:60px;font-size:.72rem}.results-meta-notes{word-break:break-word;white-space:normal}.results-meta-warning{color:#f59e0b;font-style:italic}.results-rate-summary{display:flex;gap:1rem;padding:.6rem .75rem;border-bottom:1px solid var(--border)}.results-rate-item{display:flex;flex-direction:column;gap:.1rem}.results-rate-value{font-size:1.1rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.results-rate-unit{font-size:.68rem;color:var(--text-muted)}.results-chart-section{padding:.5rem .75rem}.results-chart-title{font-size:.72rem;font-weight:600;color:var(--text-muted);margin-bottom:.3rem}.results-empty{padding:3rem 2rem;text-align:center;color:var(--text-muted);font-size:.875rem}.results-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.875rem;padding:2rem}.results-calculating{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.875rem}.data-lane-tooltip{background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:.3rem .5rem;font-size:.75rem}.data-lane-tooltip-val{font-weight:600;color:var(--text)}.data-lane-tooltip-ts{color:var(--text-muted);font-size:.68rem}
