.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.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__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray: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.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.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:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.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-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}:root{--bg:#f4f8fd;--bg-panel:#fff;--bg-elevated:#eaf4ff;--bg-input:#fff;--bg-canvas:#f7fbff;--border:#c9dcf0;--border-soft:#c9dcf0bf;--grid-dot:#d6e7f8;--grid-line:#d7e6f5;--text:#18314d;--text-dim:#5f7287;--accent:#1677c7;--accent-dim:#9cc8ed;--ok:#16925f;--warn:#b67a09;--error:#c73b45;--signal:#7b61c9;--port-in:#18a86b;--port-out:#1677c7;--port-energy:#d9961b;--port-signal:#7b61c9;--radius:6px;--radius-md:8px;--radius-lg:10px;--fs-badge:11px;--fs-caption:12px;--fs-body:13px;--fs-ui:14px;--fs-title:16px;--fs-h2:20px;--fs-h1:24px;--accent-rgb:22, 119, 199;--error-rgb:210, 66, 66;--veil-rgb:244, 248, 253;--panel-rgb:255, 255, 255;--font:"Inter", "Segoe UI", system-ui, sans-serif;--mono:"JetBrains Mono", "SF Mono", Consolas, monospace;--space-1:2px;--space-2:4px;--space-3:6px;--space-4:8px;--space-5:12px;--space-6:16px;--space-7:20px;--space-8:28px;--shadow-1:0 1px 2px #18314d0f, 0 1px 1px #18314d0a;--shadow-2:0 2px 6px #18314d14, 0 1px 2px #18314d0d;--shadow-3:0 8px 24px #18314d1f, 0 2px 6px #18314d12;--shadow-pop:0 16px 48px #18314d2e, 0 4px 12px #18314d1a;--shadow-accent:0 4px 14px rgba(var(--accent-rgb), .2);--dur-fast:.12s;--dur:.18s;--ease:cubic-bezier(.4, 0, .2, 1);--series-1:#2a78d6;--series-2:#1baf7a;--series-3:#eda100;--series-4:#008300;--series-5:#4a3aa7;--series-6:#e34948;--series-7:#e87ba4;--series-8:#eb6834}:root[data-theme=dark]{--bg:#0f1722;--bg-panel:#16202e;--bg-elevated:#1e2c3f;--bg-input:#111b28;--bg-canvas:#121c2a;--border:#2c405a;--border-soft:#2c405abf;--grid-dot:#223349;--grid-line:#223349;--text:#d8e4f2;--text-dim:#90a4bb;--accent:#3f98e0;--accent-dim:#2c608f;--ok:#2fb27d;--warn:#d29a2e;--error:#e0606a;--signal:#9d87e2;--port-in:#2fb27d;--port-out:#3f98e0;--port-energy:#d29a2e;--port-signal:#9d87e2;--accent-rgb:63, 152, 224;--error-rgb:224, 96, 106;--veil-rgb:15, 23, 34;--panel-rgb:22, 32, 46;--shadow-1:0 1px 2px #0006;--shadow-2:0 2px 8px #00000073, 0 1px 2px #00000059;--shadow-3:0 12px 32px #0000008c, 0 2px 8px #0006;--shadow-pop:0 20px 56px #0000009e, 0 6px 16px #00000073;--shadow-accent:0 4px 16px rgba(var(--accent-rgb), .32);--series-1:#3987e5;--series-2:#199e70;--series-3:#c98500;--series-4:#008300;--series-5:#9085e9;--series-6:#e66767;--series-7:#d55181;--series-8:#d95926}*{box-sizing:border-box}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);font-size:var(--fs-ui);margin:0}button{font:inherit;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);padding:6px 12px}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:var(--shadow-accent)}button.primary:hover{background:color-mix(in srgb, var(--accent) 88%, #000)}button.danger:hover{border-color:var(--error);color:var(--error)}button:disabled,button.primary:disabled{background:var(--bg-elevated);border-color:var(--border-soft);color:var(--text-dim);box-shadow:none;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px}input:focus,select:focus{border-color:var(--accent);outline:none}.app-header{background:linear-gradient(180deg, var(--bg-panel) 0%, var(--bg-elevated) 100%);border-bottom:1px solid var(--border);align-items:center;gap:16px;height:44px;padding:0 16px;display:flex}.app-header .brand{letter-spacing:.04em;color:var(--accent);font-weight:600;text-decoration:none}.app-header .crumb{color:var(--text-dim)}.header-nav{display:contents}.header-burger{background:0 0;border:none;margin-left:auto;padding:6px;display:none}.header-burger svg{width:20px;height:20px;stroke:var(--text);stroke-width:2px;stroke-linecap:round;fill:none;display:block}@media (width<=768px){.app-header{gap:10px;position:relative}.app-header .crumb{display:none}.header-burger{display:block}.header-nav{display:none}.app-header.nav-open .header-nav{z-index:60;background:var(--bg-panel);border-bottom:1px solid var(--border);box-shadow:var(--shadow-3);flex-direction:column;align-items:stretch;gap:10px;padding:12px 16px 14px;display:flex;position:absolute;top:100%;left:0;right:0}.app-header.nav-open .header-nav .header-link,.app-header.nav-open .header-nav .header-link-btn{text-align:left;margin-left:0}.app-header.nav-open .header-user-menu .dock-menu-list{box-shadow:none;border:none;padding:0 0 0 12px;position:static}}.header-link{color:var(--text-dim);font-size:var(--fs-caption);margin-left:auto;text-decoration:none}.header-link:hover{color:var(--accent)}.header-user{margin-right:-4px}.header-link-btn{cursor:pointer;color:var(--text-dim);font-size:var(--fs-caption);background:0 0;border:none;margin:0;padding:0;font-family:inherit}.header-link-btn:hover{color:var(--accent)}.units-toggle{font-size:var(--fs-caption);color:var(--text-dim);align-items:center;gap:6px;display:flex}.units-toggle select{background:var(--bg-input,var(--bg-panel));color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:2px 6px}.login-page{background:var(--bg);min-height:100%;position:relative;overflow:hidden}.login-panel{z-index:2;background:linear-gradient(90deg, rgba(var(--panel-rgb), .96) 0%, rgba(var(--panel-rgb), .88) 60%, rgba(var(--panel-rgb), 0) 100%), radial-gradient(circle at 24% 18%, rgba(var(--accent-rgb), .13), transparent 34%);flex-direction:column;justify-content:center;gap:28px;width:min(58vw,760px);min-height:100vh;padding:clamp(28px,6vw,76px);display:flex;position:relative}.login-brand-block{max-width:420px}.login-kicker{color:var(--accent);font-size:var(--fs-badge);letter-spacing:.1em;text-transform:uppercase;font-weight:700}.login-brand-block h1{color:var(--text);margin:8px 0 10px;font-size:clamp(38px,5.5vw,62px);line-height:.95}.login-brand-block p{color:var(--text-dim);font-size:var(--fs-ui);margin:0;line-height:1.55}.login-form{gap:14px;max-width:390px;display:grid}.login-form label{gap:7px;display:grid}.login-form label span{color:var(--text-dim);font-size:var(--fs-caption);font-weight:600}.login-form input{border-color:var(--accent-dim);width:100%;height:42px;box-shadow:0 8px 18px rgba(var(--accent-rgb), .06)}.login-submit{width:132px;height:42px}.login-visual{z-index:1;position:absolute;inset:0}.login-visual img{object-fit:cover;object-position:center right;width:100%;height:100%;min-height:100vh;display:block}.login-visual:before{content:"";background:linear-gradient(90deg, rgba(var(--veil-rgb), .28), rgba(var(--veil-rgb), 0) 42%), linear-gradient(180deg, rgba(var(--veil-rgb), .18), rgba(var(--veil-rgb), 0) 34%);pointer-events:none;position:absolute;inset:0}.fs-list{max-width:1100px;margin:0 auto;padding:24px}.fs-list .toolbar{gap:8px;margin-bottom:10px;display:flex}.fs-list .toolbar:last-of-type{margin-bottom:16px}.fs-list .toolbar input{flex:1;max-width:360px}.system-status{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 16px;display:grid}.system-status>div{border:1px solid var(--border);background:var(--bg-panel);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-1)}.system-status span{color:var(--text-dim);font-size:var(--fs-caption);display:block}.system-status strong{margin-top:3px;display:block}.demo-kicker{color:var(--accent);font-size:var(--fs-badge);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.home-head{margin:8px 0 16px}.home-head h1{font-size:var(--fs-h1);color:var(--text);margin:4px 0 8px;line-height:1.15}.home-head p{color:var(--text-dim);max-width:640px;margin:0;line-height:1.45}.home-tiles{gap:var(--space-5);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(196px,1fr));display:grid}.home-tile{align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-6);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-1);color:var(--text);text-align:left;cursor:pointer;transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);flex-direction:column;text-decoration:none;display:flex}.home-tile:hover{border-color:var(--accent);box-shadow:var(--shadow-3);transform:translateY(-2px)}.home-tile:active{box-shadow:var(--shadow-2);transform:translateY(0)}.home-tile.accent{background:linear-gradient(180deg, var(--bg-panel) 0%, var(--bg-elevated) 100%);border-color:var(--accent-dim);box-shadow:var(--shadow-2), inset 0 0 0 1px rgba(var(--accent-rgb), .08)}svg.ui-icon{stroke:currentColor;stroke-width:4.5px;fill:none;stroke-linecap:round;stroke-linejoin:round;width:33px;height:22px;color:var(--accent);flex:none}.home-tile-icon{padding:var(--space-3);margin-bottom:var(--space-1);border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 9%, var(--bg-panel));border:1px solid color-mix(in srgb, var(--accent) 16%, transparent);justify-content:center;align-items:center;line-height:1;display:inline-flex}.home-tile-icon svg.ui-icon{width:34px;height:22px}.home-tile strong{font-size:var(--fs-ui)}.home-tile>span:not(.home-tile-icon){color:var(--text-dim);font-size:var(--fs-caption);line-height:1.4}.home-tile b{color:var(--accent);font-size:var(--fs-caption);white-space:nowrap;margin-top:auto}.tutorial-docs{margin-top:18px}.tutorial-doc-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;display:grid}.tutorial-doc-card{gap:var(--space-5);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-1);transition:box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);grid-template-columns:minmax(0,1fr) auto;align-items:start;display:grid}.tutorial-doc-card:hover{border-color:var(--accent-dim);box-shadow:var(--shadow-2)}.tutorial-doc-card strong{font-size:var(--fs-body);line-height:1.25;display:block}.tutorial-doc-card span,.tutorial-doc-card em{color:var(--text-dim);font-size:var(--fs-caption);margin-top:3px;font-style:normal;display:block}.tutorial-doc-actions{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.tutorial-doc-actions a{color:var(--accent);font-size:var(--fs-caption);white-space:nowrap;text-decoration:none}.tutorial-doc-actions a:hover{text-decoration:underline}.library-head{justify-content:space-between;align-items:flex-start;gap:14px;margin:8px 0 16px;display:flex}.library-head h1{font-size:var(--fs-h1);margin:4px 0 6px}.library-head p{color:var(--text-dim);max-width:640px;margin:0;line-height:1.4}.fs-section{margin-top:var(--space-7)}.fs-list .fs-section>.empty{padding:var(--space-6);border:1px dashed var(--border);border-radius:var(--radius-md);background:color-mix(in srgb, var(--bg-elevated) 45%, transparent);line-height:1.45}.fs-section-title{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.fs-section-title h2{font-size:var(--fs-ui);margin:0}.fs-section-title span{color:var(--text-dim);font-size:var(--fs-caption)}.library-page{max-width:1240px}.library-layout{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:20px;display:grid}.library-nav{flex-direction:column;gap:14px;display:flex;position:sticky;top:56px}.library-search{width:100%}.library-nav-areas{flex-direction:column;gap:4px;display:flex}.library-nav-item{text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:8px;width:100%;padding:8px 10px;display:flex}.library-nav-item:hover{border-color:var(--accent-dim)}.library-nav-item.active{background:var(--bg-elevated);border-color:var(--accent)}.library-nav-item>span:not(.library-nav-icon){flex:1;min-width:0}.library-nav-icon{line-height:1;display:flex}.library-nav-icon svg.ui-icon{width:27px;height:18px}.library-nav-item b{border:1px solid var(--border);text-align:center;min-width:28px;font-size:var(--fs-caption);color:var(--accent);background:var(--bg-canvas);border-radius:999px;padding:1px 7px}.library-types{border-top:1px solid var(--border-soft);flex-direction:column;gap:4px;padding-top:12px;display:flex}.library-types-title{color:var(--text-dim);font-size:var(--fs-badge);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-weight:700}.library-type-chip{border:1px solid var(--border);color:var(--text-dim);font-size:var(--fs-body);background:0 0;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.library-type-chip.active{color:var(--text);background:var(--bg-elevated)}.library-type-chip b{font-size:var(--fs-caption);color:var(--accent)}.library-content{min-width:0}.library-content .fs-section:first-child{margin-top:0}.library-area .fs-section-title h2{align-items:center;gap:7px;display:flex}.library-area-icon{display:flex}.library-area-icon svg.ui-icon{width:30px;height:20px}.library-page .system-status{margin:22px 0 0}.fs-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(244px,1fr));display:grid}.fs-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-5);gap:var(--space-3);box-shadow:var(--shadow-1);transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);flex-direction:column;display:flex}.fs-card:hover{border-color:var(--accent-dim);box-shadow:var(--shadow-3);transform:translateY(-2px)}.fs-thumb{border-radius:var(--radius);background:var(--bg-canvas);border:1px solid var(--border-soft);height:84px;margin:-6px -6px 2px;display:block;overflow:hidden}.fs-thumb img{object-fit:contain;width:100%;height:100%;display:block}.fs-card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.fs-card .name{color:var(--text);font-weight:600;text-decoration:none}.fs-card .meta{color:var(--text-dim);font-size:var(--fs-caption)}.fs-card .actions{gap:6px;margin-top:6px;display:flex}.fs-badge{border:1px solid var(--accent-dim);color:var(--accent);background:var(--bg-canvas);font-size:var(--fs-badge);white-space:nowrap;border-radius:999px;padding:1px 7px;font-weight:600}.benchmark-note{color:var(--text-dim);font-size:var(--fs-caption);line-height:1.35}.toast-history{position:relative}.toast-history>summary{cursor:pointer;color:var(--text-dim);border-radius:8px;padding:4px 8px;list-style:none}.toast-history[open]>summary,.toast-history>summary:hover{background:var(--bg-elevated);color:var(--text)}.toast-history-panel{z-index:1100;border:1px solid var(--border);background:var(--bg-panel);width:340px;max-height:320px;box-shadow:var(--shadow-3);border-radius:10px;padding:10px 12px;position:absolute;top:calc(100% + 6px);right:0;overflow:auto}.toast-history-panel ul{font-size:var(--fs-caption);flex-direction:column;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.toast-history-panel li.error{color:var(--error)}.toast-history-panel time{color:var(--text-dim);font-variant-numeric:tabular-nums}.contract-indicator{color:var(--text-dim);cursor:default}.contract-banner{z-index:1300;border:1px solid var(--error);background:var(--bg-panel);max-width:720px;color:var(--text);box-shadow:var(--shadow-3);border-radius:10px;padding:10px 14px;position:fixed;top:52px;left:50%;transform:translate(-50%)}.connection-banner{font-size:var(--fs-caption);border-bottom:1px solid var(--border);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:8px 14px;display:flex}.connection-banner.offline{background:color-mix(in srgb, var(--error) 14%, transparent);color:var(--text)}.connection-banner.reconnecting{background:color-mix(in srgb, var(--warn) 14%, transparent)}.connection-banner.restored{background:color-mix(in srgb, var(--ok) 14%, transparent)}.connection-banner.unknown{background:color-mix(in srgb, var(--warn) 18%, transparent);border-bottom-color:var(--warn)}.connection-banner-actions{gap:8px;display:inline-flex}.workspace{--palette-w:240px;--inspector-w:280px;--workspace-sash-w:4px;grid-template-columns:var(--palette-w) var(--workspace-sash-w) 1fr var(--workspace-sash-w) var(--inspector-w);grid-template-rows:auto auto 1fr 240px;grid-template-areas:"dock dock dock dock dock""permission permission permission permission permission""palette palette-sash canvas inspector-sash inspector""palette palette-sash bottom inspector-sash inspector";height:calc(100% - 44px);display:grid}.workspace.dense{grid-template-rows:auto auto 1fr 190px}.workspace.palette-collapsed{--palette-w:36px}.workspace.inspector-collapsed{--inspector-w:36px}.palette{background:var(--bg-panel);border-right:1px solid var(--border);grid-area:palette;overflow-y:auto}.palette.collapsed,.inspector.collapsed{justify-content:center;align-items:flex-start;padding-top:8px;display:flex;overflow:hidden}.panel-rail-toggle{color:var(--text-dim);cursor:pointer;font-size:var(--fs-title);background:0 0;border:none;padding:4px}.panel-rail-toggle:hover{color:var(--accent)}.workspace-sash{width:var(--workspace-sash-w);min-width:var(--workspace-sash-w);cursor:col-resize;background:var(--border);z-index:1;transition:background-color .12s}.workspace-sash-left{grid-area:palette-sash}.workspace-sash-right{grid-area:inspector-sash}.workspace-sash:hover,.workspace-sash:active,.workspace-sash:focus-visible{background:var(--accent)}.canvas{background:var(--bg-canvas);grid-area:canvas;position:relative;overflow:hidden}.onboarding-checklist{z-index:5;width:268px;max-width:calc(50% - 28px);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-3);font-size:var(--fs-caption);position:absolute;top:14px;left:14px}.onboarding-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.onboarding-head button{font-size:var(--fs-ui);color:var(--text-dim);background:0 0;border:none;padding:0 4px;line-height:1}.onboarding-head button:hover{color:var(--text)}.onboarding-checklist ol{color:var(--text-dim);gap:6px;margin:0;padding-left:18px;line-height:1.35;display:grid}.onboarding-checklist li.done{color:color-mix(in srgb, var(--ok) 80%, var(--text-dim));opacity:.72}.onboarding-checklist li.done::marker{content:"✓ "}.inspector{background:var(--bg-panel);border-left:1px solid var(--border);grid-area:inspector;overflow-y:auto}.right-tabs{border-bottom:1px solid var(--border);background:var(--bg-panel);z-index:2;display:flex;position:sticky;top:0}.right-tabs button{padding:var(--space-3) var(--space-5);color:var(--text-dim);transition:color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease);background:0 0;border:none;border-radius:0;flex:1}.right-tabs button:hover{color:var(--text);background:var(--bg-elevated)}.right-tabs button.active{color:var(--text);border-bottom:2px solid var(--accent)}.inspector.assistant-active{flex-direction:column;display:flex;overflow:hidden}.inspector.assistant-active .right-tabs{flex:none;position:static}.assistant-dock{flex:1;min-height:0;padding:10px 12px;display:flex}.assistant-dock .assistant-panel{flex:1;min-width:0;height:auto}.bottom{background:var(--bg-panel);border-top:1px solid var(--border);flex-direction:column;grid-area:bottom;min-width:0;display:flex}.panel-title{padding:var(--space-3) var(--space-5);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);border-bottom:1px solid var(--border)}.palette-item{align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-5) var(--space-2) var(--space-6);cursor:grab;transition:background-color var(--dur-fast) var(--ease);border-bottom:1px solid #0000;display:flex}.palette-item:hover{background:var(--bg-elevated)}.palette-item .label{flex:1}.palette-item .type{color:var(--text-dim);font-family:var(--mono);font-size:var(--fs-badge)}.palette-icon{color:var(--accent);flex-shrink:0;display:inline-flex}.palette-icon svg{stroke:currentColor;stroke-width:5px;fill:none;stroke-linecap:round;stroke-linejoin:round;width:22px;height:15px}.palette-icon svg ellipse,.palette-icon svg circle,.palette-icon svg rect{fill:color-mix(in srgb, var(--accent) 12%, transparent)}.palette-fav{color:var(--text-dim);cursor:pointer;font-size:var(--fs-body);background:0 0;border:none;padding:0 2px;line-height:1}.palette-fav.active,.palette-fav:hover{color:var(--warn)}.palette-search{padding:8px 12px 0}.palette-search input{width:100%}.palette-filters{flex-wrap:wrap;gap:6px;padding:8px 12px;display:flex}.palette-filters button{font-size:var(--fs-badge);border-radius:999px;padding:3px 10px}.palette-filters button.active{background:var(--accent);border-color:var(--accent);color:#fff}.palette-pinned{border-bottom:1px solid var(--border-soft);padding:6px 12px}.palette-pinned-title{font-size:var(--fs-badge);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin-bottom:6px}.palette-chip-row{flex-wrap:wrap;gap:6px;display:flex}.palette-chip{background:var(--bg-elevated);border:1px solid var(--border);font:inherit;font-size:var(--fs-caption);cursor:grab;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.palette-chip:hover{border-color:var(--accent)}.palette-chip svg{stroke:currentColor;stroke-width:5px;fill:none;width:20px;height:13px;color:var(--accent);stroke-linecap:round;stroke-linejoin:round}.palette-chip svg ellipse,.palette-chip svg circle,.palette-chip svg rect{fill:color-mix(in srgb, var(--accent) 12%, transparent)}.palette-tree{padding:4px 0 8px}.palette-group{border-bottom:1px solid var(--border-soft)}.palette-group summary{padding:var(--space-3) var(--space-5);color:var(--text);cursor:pointer;font-size:var(--fs-caption);font-weight:600;list-style-position:inside}.palette-group summary:hover{background:var(--bg-elevated)}.palette-count{color:var(--text-dim);margin-left:6px;font-weight:400}.canvas-placeholder{height:100%;color:var(--text-dim);background-image:radial-gradient(circle, var(--grid-dot) 1px, transparent 1px);background-size:24px 24px;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.bottom-tabs{border-bottom:1px solid var(--border);display:flex}.bottom-tabs button{padding:var(--space-3) var(--space-6);color:var(--text-dim);transition:color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease);background:0 0;border:none;border-radius:0}.bottom-tabs button:hover{color:var(--text);background:var(--bg-elevated)}.bottom-tabs button.active{color:var(--text);border-bottom:2px solid var(--accent)}.bottom-body{min-width:0;padding:var(--space-4) var(--space-5);color:var(--text-dim);flex:1;overflow:auto}.display-controls{align-items:center;gap:6px;display:flex}.display-controls label{color:var(--text-dim);font-size:var(--fs-badge);align-items:center;gap:4px;display:inline-flex}.display-controls select{max-width:116px}.checkbox-row input{margin:0}.visual-legend{max-width:320px;color:var(--text-dim);font-size:var(--fs-badge);white-space:normal;align-items:center;gap:8px;display:inline-flex}.legend-dot{border-radius:50%;width:9px;height:9px;margin-right:3px;display:inline-block}.legend-dot.material{background:var(--port-out)}.legend-dot.energy{background:var(--port-energy)}.legend-dot.signal{background:var(--port-signal)}.workspace.lines-compact .react-flow__edge-path{stroke-width:1.2px}.workspace.lines-normal .react-flow__edge-path{stroke-width:2px}.workspace.lines-wide .react-flow__edge-path{stroke-width:3.2px}.advisor-box,.advisor-card{border:1px solid var(--border);border-left:4px solid var(--accent-dim);border-radius:var(--radius);background:var(--bg-panel);color:var(--text);padding:9px 10px}.advisor-box,.bip-editor{margin-top:10px}.bip-table{border-collapse:collapse;width:100%;font-size:var(--fs-caption);margin-top:6px}.bip-table th,.bip-table td{border:1px solid var(--border);text-align:left;padding:4px 8px}.bip-table th{color:var(--text-dim);font-weight:600}.bip-table input[type=number]{width:90px}.bip-table .warn{color:var(--warn);font-style:normal}.link-btn{color:var(--accent-dim);cursor:pointer;font-size:var(--fs-caption);background:0 0;border:none;padding:4px 0;text-decoration:underline}.advisor-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:7px;display:flex}.advisor-head.compact{align-items:flex-start}.advisor-head strong{color:var(--text);display:block}.advisor-head span{color:var(--text-dim);font-size:var(--fs-badge)}.advisor-box ul,.advisor-list{font-size:var(--fs-body);margin:0;padding-left:18px}.advisor-box li,.advisor-list li{margin:4px 0}.advisor-box li>strong,.advisor-box li>span,.advisor-box li>em,.advisor-list li>strong,.advisor-list li>span,.advisor-list li>em{display:block}.advisor-box li>span,.advisor-box li>em,.advisor-list li>span,.advisor-list li>em{margin-top:2px}.advisor-kpi{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:8px;display:grid}.advisor-kpi span{color:var(--text-dim);font-size:var(--fs-badge);display:block}.advisor-kpi strong{color:var(--text)}.advisor-ok{border-left-color:var(--ok)}.advisor-warn{border-left-color:var(--warn)}.advisor-error{border-left-color:var(--error)}.stream-table-wrap{min-width:720px;color:var(--text)}.stream-table-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.stream-table-head strong{color:var(--text);font-size:var(--fs-body)}.stream-table-head span{color:var(--text-dim);font-size:var(--fs-caption)}.stream-table{border-collapse:collapse;width:100%;font-size:var(--fs-body);background:var(--bg-panel)}.stream-table th,.stream-table td{border:1px solid var(--border);padding:var(--space-2) var(--space-4);text-align:left;vertical-align:top}.stream-table th{background:var(--bg-elevated);color:var(--text-dim);white-space:nowrap;font-weight:600}.stream-table th.num{text-align:right;white-space:nowrap}.stream-table td.num{text-align:right;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}.stream-table .stream-route{overflow-wrap:anywhere}.stream-table .link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.stream-table .link:hover{text-decoration:underline}.stream-ok td:last-child{color:var(--ok)}.stream-warn td:last-child{color:var(--warn)}.status-bar{font-size:var(--fs-caption);color:var(--text-dim);align-items:center;gap:12px;display:flex}.status-bar .ok{color:var(--ok)}.status-bar .warn{color:var(--warn)}.status-bar .err{color:var(--error)}.ok{color:var(--ok)}.warn{color:var(--warn)}.err{color:var(--error)}.workspace-dock{align-items:center;gap:var(--space-5);padding:var(--space-3) var(--space-5);background:linear-gradient(180deg, var(--bg-panel) 0%, var(--bg-elevated) 100%);border-bottom:1px solid var(--border);font-size:var(--fs-caption);flex-wrap:wrap;grid-area:dock;display:flex}.dock-group{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.dock-version{color:var(--text-dim)}.dock-toggle.active,.density-switch button.active{background:var(--accent);border-color:var(--accent);color:#fff}.density-switch{border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.density-switch button{border:none;border-radius:0;padding:5px 10px}.density-switch button+button{border-left:1px solid var(--border)}.dock-breadcrumb{min-width:0}.dock-back{color:var(--text-dim);white-space:nowrap;text-decoration:none}.dock-shared{align-items:center;gap:8px;display:inline-flex}.dock-shared-badge{border:1px solid var(--warn);color:var(--warn);font-size:var(--fs-badge);white-space:nowrap;border-radius:999px;padding:2px 9px;font-weight:600}.dock-shared-clone{font-size:var(--fs-caption);white-space:nowrap;padding:3px 10px}.dock-back:hover{color:var(--accent)}.dock-scheme-name{text-overflow:ellipsis;white-space:nowrap;background:0 0;border-color:#0000;max-width:260px;padding:5px 8px;font-weight:600;overflow:hidden}.dock-scheme-name:hover{border-color:var(--border);background:var(--bg-elevated)}.dock-scheme-name-input{width:240px;padding:4px 8px;font-weight:600}.run-anchor{position:relative}.coachmark{z-index:40;border:1px solid var(--accent);border-radius:var(--radius);background:var(--bg-panel);box-shadow:var(--shadow-3);font-size:var(--fs-caption);white-space:nowrap;align-items:center;gap:8px;padding:8px 10px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.coachmark:before{content:"";background:var(--bg-panel);border-left:1px solid var(--accent);border-top:1px solid var(--accent);width:8px;height:8px;position:absolute;top:-5px;right:26px;transform:rotate(45deg)}.coachmark button{font-size:var(--fs-ui);color:var(--text-dim);background:0 0;border:none;padding:0 2px;line-height:1}.coachmark button:hover{color:var(--text)}.node-context-menu{z-index:60;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);min-width:200px;box-shadow:var(--shadow-3);font-size:var(--fs-caption);flex-direction:column;gap:4px;padding:8px;display:flex;position:fixed}.node-context-menu>button{text-align:left}.node-context-title{border-bottom:1px solid var(--border);margin-bottom:2px;padding:2px 4px 6px;font-weight:600}.confirm-dialog{width:min(440px,100vw - 28px)}.confirm-text{color:var(--text-dim);margin:0;padding:14px;line-height:1.45}.dock-menu{position:relative}.dock-menu>button.active{border-color:var(--accent);background:var(--bg-elevated)}.header-user-menu .dock-menu>button{color:var(--text);background:0 0;border:none;padding:4px 6px;font-weight:600}.header-user-menu .dock-menu>button:hover,.header-user-menu .dock-menu>button.active{color:var(--accent);background:0 0}.header-user-menu .dock-menu-list{left:auto;right:0}.dock-menu-list{z-index:30;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);flex-direction:column;gap:4px;min-width:220px;padding:8px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.dock-menu-list>button{text-align:left;background:0 0;border-color:#0000}.dock-menu-list>button:hover{background:var(--bg-elevated);border-color:#0000}.dock-menu-section{color:var(--text-dim);font-size:var(--fs-badge);text-transform:uppercase;letter-spacing:.06em;margin:6px 2px 2px;font-weight:600}.dock-menu-section:first-child{margin-top:2px}.dock-menu-list .display-controls{flex-direction:column;align-items:stretch;gap:6px}.dock-menu-list .display-controls select{max-width:none}.dock-status{margin-left:auto}.capability-guard{gap:6px;display:grid}.connect-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.connect-form select{max-width:170px}.diagnostics-center{flex-direction:column;gap:8px;height:100%;display:flex}.diag-clean{color:var(--ok);padding:12px}.diag-summary{font-size:var(--fs-caption);flex-wrap:wrap;gap:12px;display:flex}.diag-chip.err{color:var(--error)}.diag-chip.warn{color:var(--warn)}.diag-chip.info{color:var(--text-dim)}.diag-filters{flex-wrap:wrap;gap:6px;display:flex}.diag-filters button{border:1px solid var(--border);background:0 0;border-radius:999px;padding:2px 10px}.diag-filters button.active{border-color:var(--accent);color:var(--accent)}.diag-body{flex:1;grid-template-columns:minmax(200px,300px) 1fr;gap:12px;min-height:0;display:grid}.diag-center-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.diag-center-list:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.diag-center-card{padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border-left-width:3px;flex-direction:column;gap:2px;display:flex}.diag-center-card:hover{background:var(--bg-elevated)}.diag-center-card.error{border-left-color:var(--error)}.diag-center-card.warning{border-left-color:var(--warn)}.diag-center-card.info{border-left-color:var(--text-dim)}.diag-center-card.selected{background:var(--bg-elevated);border-color:var(--accent)}.diag-center-card.root-cause{box-shadow:inset 3px 0 0 var(--error)}.diag-center-where{font-size:var(--fs-caption);color:var(--text-dim)}.diag-details{border:1px solid var(--border);border-radius:10px;padding:12px;overflow-y:auto}.diag-details h4{align-items:center;gap:8px;margin:0 0 4px;display:flex}.diag-root-badge{color:var(--error);font-size:var(--fs-caption)}.diag-category{color:var(--text-dim);font-size:var(--fs-caption);margin:0 0 8px}.diag-dl{gap:6px;margin:0 0 10px;display:grid}.diag-dl dt{color:var(--text-dim);font-size:var(--fs-caption)}.diag-dl dd{margin:0}.diag-action{border:1px solid var(--border);border-radius:8px;margin-top:8px;padding:8px 10px}.diag-action-label{font-size:var(--fs-caption);color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.diag-action-step{margin:4px 0 0}.permission-banner{background:color-mix(in srgb, var(--warn) 12%, transparent);border-bottom:1px solid var(--warn);font-size:var(--fs-caption);grid-area:permission;align-items:center;gap:10px;padding:8px 14px;display:flex}.permission-banner-text{flex:1}.unit-node{background:var(--bg-panel);border:1.5px solid var(--border);border-radius:var(--radius-md);width:136px;min-height:106px;box-shadow:var(--shadow-2);text-align:center;transition:width .18s ease, min-height .18s ease, box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);flex-direction:column;align-items:center;gap:5px;padding:8px 10px;display:flex;position:relative}.unit-node:hover{border-color:var(--accent-dim);box-shadow:var(--shadow-3)}.unit-node:has(.sensor-scope.expanded){align-items:stretch;width:330px;min-height:235px}.unit-node.selected{box-shadow:0 0 0 2px var(--accent), 0 10px 22px rgba(var(--accent-rgb), .16)}.unit-node.sev-warn{border-color:var(--warn)}.unit-node.sev-error{border-color:var(--error)}.unit-node.sev-ok{border-color:var(--ok)}.unit-node.diag-root-cause{border-color:var(--error);box-shadow:0 0 0 2px rgba(var(--error-rgb), .35), 0 0 22px rgba(var(--error-rgb), .35)}.unit-node.diag-error-secondary{border-color:var(--error);box-shadow:0 0 0 1px rgba(var(--error-rgb), .24)}.unit-node.diag-warning{border-color:var(--warn)}.unit-comment-dot{background:var(--warn);width:10px;height:10px;box-shadow:0 0 0 2px var(--bg-panel);border-radius:50%;position:absolute;top:6px;right:6px}.unit-illustration{width:82px;height:54px;color:var(--accent);place-items:center;display:grid}.unit-illustration svg{stroke:currentColor;stroke-width:4px;fill:none;stroke-linecap:round;stroke-linejoin:round;width:82px;height:54px}.unit-illustration ellipse,.unit-illustration circle,.unit-illustration rect{fill:color-mix(in srgb, var(--accent) 10%, transparent)}.unit-name{width:100%;font-weight:650;font-size:var(--fs-body);color:var(--text);-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;line-height:1.15}.sensor-scope{gap:var(--space-2);width:132px;color:var(--text);justify-items:stretch;display:grid}.sensor-scope.expanded{width:300px}.sensor-expand-button{border-radius:999px;justify-self:end;min-height:22px;padding:2px 9px;font-size:10px}.sensor-title{text-align:left;grid-template-columns:minmax(0,1fr);gap:1px;min-width:0;display:grid}.sensor-title strong{font-family:var(--mono);font-size:var(--fs-caption);overflow-wrap:anywhere}.sensor-title-unit{color:var(--text-dim);font-weight:400}.sensor-title span{color:var(--text-dim);overflow-wrap:anywhere;font-size:10px}.sensor-digital{min-height:50px;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-canvas);place-items:center;display:grid;box-shadow:inset 0 1px 3px #18314d0f}.sensor-value{align-items:baseline;gap:4px;min-width:0;max-width:100%;display:inline-flex}.sensor-readout{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text);overflow-wrap:anywhere;font-size:20px;font-weight:600;line-height:1.1}.sensor-unit{font-size:var(--fs-caption);color:var(--text-dim);flex:none}.sensor-screen{position:relative}.sensor-scope svg{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-canvas);width:100%;height:150px;display:block;box-shadow:inset 0 1px 4px #18314d14}.sensor-grid{fill:none;stroke:var(--grid-line);stroke-width:1px}.sensor-line{fill:none;stroke:var(--accent);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.sensor-cursor{fill:var(--accent);stroke:var(--bg-canvas);stroke-width:1.5px}.sensor-range{pointer-events:none;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-dim);flex-direction:column;justify-content:space-between;align-items:flex-end;font-size:9px;display:flex;position:absolute;top:4px;bottom:4px;right:6px}.sensor-latest{justify-self:end}.sensor-latest .sensor-readout{font-size:var(--fs-ui);color:var(--ok)}.sensor-empty{border:1px dashed var(--border);border-radius:var(--radius);min-height:50px;color:var(--text-dim);font-size:var(--fs-badge);place-items:center;padding:6px;display:grid}.sensor-unconfigured .sensor-empty{text-align:center;gap:3px;line-height:1.3}.sensor-unconfigured .sensor-empty b{color:var(--text);font-size:var(--fs-caption)}.unit-type{color:var(--text-dim);font-size:var(--fs-badge);align-items:center;gap:6px;display:flex}.react-flow__handle{border:2px solid var(--bg-panel);z-index:2;width:10px;height:10px}.react-flow__handle.port-material.port-in-handle{background:var(--port-in)}.react-flow__handle.port-material.port-out-handle{background:var(--port-out)}.react-flow__handle.port-energy{background:var(--port-energy)}.react-flow__handle.port-signal{background:var(--port-signal)}.react-flow__handle.port-disabled{pointer-events:none;opacity:.38;background:var(--text-dim);border-style:dashed}.port-marker{pointer-events:none;z-index:1;width:0;height:0;position:absolute;transform:translateY(-50%)}.port-marker.port-in{border-top:7px solid #0000;border-bottom:7px solid #0000;border-left:13px solid var(--port-in);left:-20px}.port-marker.port-out{border-top:7px solid #0000;border-bottom:7px solid #0000;border-left:13px solid var(--port-out);right:-20px}.port-marker.port-energy,.port-marker.port-energy.port-out{border-left-color:var(--port-energy)}.port-marker.port-signal,.port-marker.port-signal.port-out{border-left-color:var(--port-signal)}.port-marker.port-disabled{opacity:.3;border-left-color:var(--text-dim)}.react-flow__edge-path{stroke:var(--accent);stroke-width:1.8px}.react-flow__edge.selected .react-flow__edge-path{stroke:var(--accent)}.edge-energy .react-flow__edge-path{stroke:var(--warn)}.edge-signal .react-flow__edge-path{stroke:var(--signal);stroke-dasharray:5 3}.react-flow__minimap{background:var(--bg-panel);border:1px solid var(--border)}.react-flow__controls button{background:var(--bg-elevated);border-bottom:1px solid var(--border);fill:var(--text)}.canvas.has-highlight .unit-node:not(.hl-self):not(.hl-up):not(.hl-down){opacity:.35}.canvas.has-highlight .react-flow__edge:not(.edge-hl-up):not(.edge-hl-down) .react-flow__edge-path{opacity:.25}.unit-node.hl-up{border-color:var(--port-in)}.unit-node.hl-down{border-color:var(--port-out)}.unit-node.hl-self{box-shadow:0 0 0 2px var(--accent), 0 10px 22px rgba(var(--accent-rgb), .16)}.edge-hl-up .react-flow__edge-path{stroke:var(--port-in);stroke-width:2.4px}.edge-hl-down .react-flow__edge-path{stroke:var(--port-out);stroke-width:2.4px}.workspace.dense .unit-node{gap:3px;width:104px;min-height:82px;padding:5px 7px}.workspace.dense .unit-illustration,.workspace.dense .unit-illustration svg{width:62px;height:42px}.workspace.dense .unit-name{font-size:var(--fs-badge)}.workspace.dense .sensor-scope{width:110px}.workspace.dense .unit-node:has(.sensor-scope.expanded){width:300px}.workspace.dense .palette-item{padding:4px 10px 4px 16px}.workspace.dense .panel-title{padding:6px 12px}.inspector-body{padding:var(--space-4) var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field>span{font-size:var(--fs-caption);color:var(--text-dim)}.field-label,.modal-title{align-items:center;gap:6px;display:flex}.field-label{justify-content:flex-start}.modal-title{justify-content:space-between}.modal-title-actions{align-items:center;gap:8px;display:inline-flex}.action-error-dialog{width:min(460px,100vw - 32px)}.action-error-text{margin:0;line-height:1.5}.page-error{justify-content:center;align-items:center;min-height:calc(100vh - 44px);padding:24px;display:flex}.page-error-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-panel);max-width:440px;box-shadow:var(--shadow-3);padding:22px 24px}.page-error-card strong{font-size:var(--fs-title);margin-bottom:8px;display:block}.page-error-card p{color:var(--text-dim);margin:0 0 14px;line-height:1.5}.page-error-actions{align-items:center;gap:14px;display:flex}.dialog-close{font-size:var(--fs-title);color:var(--text-dim);background:0 0;border:none;padding:0 8px;line-height:1.2}.dialog-close:hover{color:var(--text);border:none}.demo-help-links{font-size:var(--fs-caption);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px 0;display:flex}.demo-help-links>span:first-child{color:var(--text-dim);font-weight:600}.demo-help-links a,.demo-help-links .missing-demo{border:1px solid var(--border);background:var(--bg-canvas);color:var(--accent);border-radius:999px;padding:2px 8px;text-decoration:none}.demo-help-links .missing-demo{color:var(--text-dim);background:var(--bg-elevated)}.field .req{color:var(--error);font-style:normal}.hint{color:var(--text-dim);font-size:var(--fs-caption)}.skip-links a{z-index:1200;background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;position:absolute;top:8px;left:-9999px}.skip-links a:focus{left:8px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.inspector-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.param-group{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;margin:0;padding:10px 12px 4px;display:flex}.param-group legend{font-size:var(--fs-badge);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);padding:0 6px;font-weight:700}.field.dirty>input,.field.dirty>select{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, var(--bg-input))}.field-reset{color:var(--accent);font-size:var(--fs-badge);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0;text-decoration:underline}.field-meta{color:var(--text-dim);font-size:var(--fs-badge)}.field-error{color:var(--error);font-size:var(--fs-badge)}.help-tip{border:1px solid var(--accent-dim);background:var(--bg-panel);width:17px;min-width:17px;height:17px;color:var(--accent);font-size:var(--fs-badge);border-radius:50%;justify-content:center;align-items:center;padding:0;font-weight:700;line-height:1;display:inline-flex;position:relative}.help-tip:hover,.help-tip:focus-visible{border-color:var(--accent);outline:none}.help-tip:after{content:attr(data-tip);visibility:hidden;opacity:0;z-index:80;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);width:max-content;max-width:280px;box-shadow:var(--shadow-3);color:var(--text);font-size:var(--fs-caption);text-transform:none;letter-spacing:0;pointer-events:none;padding:8px 10px;font-weight:400;transition:opacity .12s,transform .12s,visibility 0s linear .32s;display:block;position:absolute;top:calc(100% + 8px);left:0;transform:translateY(-2px)}.help-tip:hover:after{visibility:visible;opacity:1;transition-delay:.28s;transform:translateY(0)}.help-tip:focus-visible:after{visibility:visible;opacity:1;transition-delay:0s;transform:translateY(0)}.modal-title .help-tip:after{left:auto;right:0}.apparatus-help-preview{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-canvas);max-height:328px;padding:var(--space-5) var(--space-6);margin:var(--space-3) 0 0;overflow:auto;box-shadow:inset 0 1px 3px #18314d0d}.apparatus-help-svg{color:var(--text)}.apparatus-help-svg svg{width:100%;max-width:100%;height:auto;display:block}.dialog-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#18314d52;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:440px;max-height:80vh;box-shadow:var(--shadow-pop);overflow-y:auto}.dialog.unit-settings-dialog{width:min(760px,100vw - 32px)}.unit-settings-dialog .modal-title{z-index:4;background:var(--bg-panel);position:sticky;top:0}.apparatus-help-disclosure{margin:var(--space-4) var(--space-5) 0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-canvas)}.apparatus-help-disclosure>summary{cursor:pointer;color:var(--text-dim);font-size:var(--fs-caption);padding:9px 12px;font-weight:600}.apparatus-help-disclosure[open]>summary{color:var(--text);border-bottom:1px solid var(--border)}.apparatus-help-disclosure .apparatus-help-preview{border-radius:0 0 var(--radius-md) var(--radius-md);max-height:300px;box-shadow:none;border:none}.unit-settings-dialog .parameter-fields{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.unit-settings-dialog .inspector-actions{padding-top:var(--space-3);border-top:1px solid var(--border-soft)}.dialog-body{padding:var(--space-5);gap:var(--space-5);flex-direction:column;display:flex}.dialog-actions{justify-content:flex-end;gap:var(--space-4);padding:var(--space-5);border-top:1px solid var(--border);display:flex}@media (width<=640px){.dialog.unit-settings-dialog{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.unit-settings-dialog .parameter-fields{grid-template-columns:1fr}.unit-settings-dialog .modal-title{padding-left:12px;padding-right:8px}.apparatus-help-disclosure{margin-left:12px;margin-right:12px}.unit-settings-dialog .help-tip:after,.unit-settings-dialog .modal-title .help-tip:after{width:auto;max-width:none;max-height:32vh;position:fixed;inset:auto 12px 12px;overflow:auto}}.node-summary{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);grid-template-columns:auto 1fr;align-items:baseline;gap:6px 10px;padding:8px;display:grid}.node-summary .dim{color:var(--text-dim);font-size:var(--fs-caption)}.node-summary strong{color:var(--text);font-weight:500}.context-panel{gap:14px}.context-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.context-section{flex-direction:column;gap:7px;display:flex}.context-title{font-size:var(--fs-caption);color:var(--text);font-weight:700}.context-help{border:1px solid var(--border-soft);border-radius:var(--radius);padding:8px 10px}.context-help summary{cursor:pointer;font-size:var(--fs-caption);color:var(--accent);font-weight:600}.context-help[open] summary{margin-bottom:8px}.context-help .work-steps{margin-top:8px}.scheme-stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.scheme-stats>div{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:8px}.scheme-stats span{color:var(--text-dim);font-size:var(--fs-badge);display:block}.scheme-stats strong{color:var(--text);font-size:var(--fs-ui);margin-top:3px;display:block}.port-list,.connection-list,.result-list{flex-direction:column;gap:6px;display:flex}.port-row,.connection-row,.result-list>div,.legend-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);font-size:var(--fs-caption);grid-template-columns:auto 1fr auto auto;align-items:center;gap:7px;padding:6px 8px;display:grid}.connection-row{grid-template-columns:1fr auto 1fr}.result-list>div{grid-template-columns:1fr auto}.legend-row{grid-template-columns:auto 1fr}.port-row strong,.result-list strong{color:var(--text);font-weight:600}.port-row.unsupported{opacity:.62;background:var(--bg-elevated);border-style:dashed}.port-row.unsupported .port-dot{border:1px dashed var(--text-dim);background:0 0}.port-row.unsupported strong{color:var(--text-dim);font-weight:500}.port-dot{background:var(--port-in);border-radius:999px;width:10px;height:10px}.port-dot.output,.port-row.output .port-dot{background:var(--port-out)}.port-dot.input,.port-row.input .port-dot{background:var(--port-in)}.work-steps{color:var(--text-dim);font-size:var(--fs-caption);margin:0;padding-left:20px}.work-steps li+li{margin-top:6px}.mono{font-family:var(--mono)}.chip-list{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:var(--fs-caption);align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.chip-x{color:var(--text-dim);background:0 0;border:none;padding:0 2px}.chip-x:hover{color:var(--error)}.search-results{flex-direction:column;gap:4px;display:flex}.search-results button{text-align:left}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{border-radius:var(--radius);background:var(--bg-panel);border:1px solid var(--error);color:var(--text);max-width:360px;padding:10px 14px}.toast.info{border-color:var(--accent)}.issue-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.issue-list li{cursor:pointer}.issue-list li:hover{text-decoration:underline}.issue-list .err{color:var(--error)}.issue-list .warn{color:var(--warn)}.trends{flex-direction:column;gap:8px;height:100%;display:flex}.trends-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.run-progress{width:160px;accent-color:var(--accent)}.run-status{font-size:var(--fs-caption);border-radius:var(--radius-lg);border:1px solid var(--border);padding:2px 8px}.st-running,.st-starting,.st-connecting{color:var(--accent);border-color:var(--accent-dim)}.st-succeeded{color:var(--ok);border-color:var(--ok)}.st-failed,.st-unknown_outcome{color:var(--error);border-color:var(--error)}.st-cancelled,.st-queued,.st-expired{color:var(--text-dim)}.st-reconnecting,.st-reconciling{color:var(--warn);border-color:var(--warn)}.cancel-confirm{align-items:center;gap:6px;display:inline-flex}.run-terminal-summary{border:1px solid var(--warn);font-size:var(--fs-caption);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.run-terminal-summary.error-box{border-color:var(--error)}.strip-chart{flex:1;min-height:120px}.plotly-chart{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);width:100%;overflow:hidden}.chart-frame{width:100%;min-width:0;position:relative;overflow:hidden}.chart-frame>.strip-chart{flex:none;min-height:0;position:absolute;inset:0}.final-table{border-collapse:collapse;font-size:var(--fs-body);font-family:var(--mono)}.final-table th,.final-table td{border:1px solid var(--border);text-align:right;padding:4px 10px}.final-table th{color:var(--text-dim);font-weight:500}.run-quality{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);color:var(--text);margin:10px 0;padding:10px}.run-quality-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.run-quality-summary{color:var(--text-dim);font-size:var(--fs-caption);margin:-2px 0 8px}.run-quality-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.run-quality-grid>div{border:1px solid var(--border-soft);border-radius:var(--radius);min-width:0;padding:6px 8px}.run-quality-grid span{color:var(--text-dim);font-size:var(--fs-badge);display:block}.run-quality-grid strong{overflow-wrap:anywhere;margin-top:2px;display:block}.run-quality-issues{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.run-quality-issues li{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);border-left-width:4px;padding:7px 9px}.run-quality-issues li.err{border-left-color:var(--error)}.run-quality-issues li.warn{border-left-color:var(--warn)}.run-quality-issues strong,.run-quality-issues span,.run-quality-issues em,.run-quality-issues code{display:block}.run-quality-issues strong{color:var(--text);margin-bottom:2px}.run-quality-issues span{color:var(--text)}.run-quality-issues em{color:var(--text-dim);margin-top:3px;font-style:normal}.run-quality-issues code{color:var(--text-dim);font-size:var(--fs-badge);margin-top:3px}.benchmark-result{border:1px solid var(--border);border-radius:var(--radius);border-left-width:4px;margin-top:10px;padding:8px}.benchmark-pass{border-left-color:var(--ok)}.benchmark-fail{border-left-color:var(--error)}.benchmark-result-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.benchmark-result-head span{color:var(--text-dim)}.benchmark-result table{border-collapse:collapse;width:100%;font-size:var(--fs-caption);margin-top:8px}.benchmark-result th,.benchmark-result td{border:1px solid var(--border);padding:4px 8px}.benchmark-result th{color:var(--text-dim);background:var(--bg-elevated);font-weight:500}.run-details{border-top:1px solid var(--border-soft);margin-top:10px;padding-top:8px}.run-details summary{cursor:pointer;font-size:var(--fs-caption);color:var(--text-dim);font-weight:600}.run-details[open] summary{margin-bottom:8px}.run-snapshot{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.run-snapshot summary{cursor:pointer;color:var(--text);justify-content:space-between;gap:12px;font-weight:600;display:flex}.run-snapshot summary span:last-child{color:var(--text-dim);font-weight:400}.run-snapshot-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:8px;display:grid}.run-snapshot-grid>div{border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:6px 8px}.run-snapshot-grid span{color:var(--text-dim);font-size:var(--fs-badge);display:block}.run-snapshot-grid strong{overflow-wrap:anywhere;font-size:var(--fs-caption);margin-top:2px;display:block}.residual-timeline{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.residual-timeline .residual-chart{margin-top:6px}.solver-trace{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.solver-trace summary{cursor:pointer;color:var(--text);justify-content:space-between;gap:12px;font-weight:600;display:flex}.solver-trace summary span:last-child{color:var(--text-dim);font-weight:400}.solver-trace table{border-collapse:collapse;width:100%;font-size:var(--fs-caption);font-family:var(--mono);margin-top:8px}.solver-trace th,.solver-trace td{border:1px solid var(--border);text-align:right;padding:4px 8px}.solver-trace th{color:var(--text-dim);background:var(--bg-elevated);font-weight:500}.solver-last-good{color:var(--text-dim);font-size:var(--fs-caption);margin-top:6px}.solver-diag{margin-top:var(--space-4);border-top:1px solid var(--border);padding-top:var(--space-4)}.solver-diag>summary{justify-content:space-between;align-items:center;gap:var(--space-5);cursor:pointer;color:var(--text);font-weight:600;display:flex}.solver-diag>summary .badge{border-radius:var(--radius-lg);border:1px solid var(--border);font-size:var(--fs-caption);padding:1px 8px;font-weight:500}.solver-diag>summary .badge.ok{border-color:var(--ok);color:var(--ok)}.solver-diag>summary .badge.warn{border-color:var(--warn);color:var(--warn)}.solver-diag-body{gap:var(--space-5);margin-top:var(--space-4);flex-direction:column;display:flex}.solver-diag-section h5{margin:0 0 var(--space-2);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.solver-diag-grid{gap:var(--space-2) var(--space-5);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.solver-diag-grid>div{flex-direction:column;gap:1px;min-width:0;display:flex}.solver-diag-grid span{color:var(--text-dim);font-size:var(--fs-badge)}.solver-diag-grid strong{font-size:var(--fs-caption);overflow-wrap:anywhere}.solver-diag-grid strong.mono{font-family:var(--mono);font-size:var(--fs-badge)}.solver-diag-grid strong.ok{color:var(--ok)}.solver-diag-grid strong.warn{color:var(--warn)}.solver-diag-grid strong.err{color:var(--error)}.solver-diag-trace{border:1px solid var(--border-soft);border-radius:var(--radius);padding:var(--space-3) var(--space-4)}.solver-diag-trace>summary{justify-content:space-between;gap:var(--space-5);cursor:pointer;font-size:var(--fs-caption);font-weight:600;display:flex}.solver-diag-trace>summary span:last-child{color:var(--text-dim);font-weight:400}.solver-diag-trace-scroll{max-height:240px;margin-top:var(--space-3);overflow:auto}.solver-diag-trace table{border-collapse:collapse;width:100%;font-size:var(--fs-badge);font-family:var(--mono)}.solver-diag-trace th,.solver-diag-trace td{border:1px solid var(--border-soft);padding:2px var(--space-3);text-align:left;white-space:nowrap}.solver-diag-trace td.num{text-align:right;font-variant-numeric:tabular-nums}.solver-diag-trace th{color:var(--text-dim);background:var(--bg-elevated);font-weight:500;position:sticky;top:0}.solver-diag-trace tr.j-rebuilt td{background:color-mix(in srgb, var(--accent) 7%, transparent)}.field-row{gap:10px;display:flex}.field-row .field{flex:1}.run-frame{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text-dim);font-size:var(--fs-caption);justify-content:space-between;gap:12px;padding:8px 10px;display:flex}.watch-list{flex-direction:column;gap:4px;max-height:160px;display:flex;overflow-y:auto}.watch-item{font-size:var(--fs-caption);align-items:center;gap:6px;display:flex}.event-row{gap:6px;margin-bottom:6px;display:flex}.event-row .ev-at{width:64px}.event-row .ev-key{width:110px}.event-row .ev-val{width:90px}.event-row select{flex:1;min-width:0}.chart-load-error{min-height:80px;color:var(--text-dim);font-size:var(--fs-caption);justify-content:center;align-items:center;display:flex}.workbook{flex-direction:column;gap:14px;display:flex}.wb-table{border-collapse:collapse;font-size:var(--fs-caption);width:100%}.wb-table th,.wb-table td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:4px 8px}.wb-table th{color:var(--text-dim);background:var(--bg-elevated);font-weight:500}.wb-table .dim{color:var(--text-dim)}.wb-table .mono{font-family:var(--mono);font-size:var(--fs-badge)}.wb-params{flex-wrap:wrap;gap:6px;display:flex}.wb-param{align-items:center;gap:4px;display:inline-flex}.wb-param>span{color:var(--text-dim);font-family:var(--mono);font-size:var(--fs-badge)}.wb-input{width:72px;font-size:var(--fs-caption);font-family:var(--mono);padding:2px 6px}button.link{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}.diagnostics-panel{color:var(--text);flex-direction:column;gap:12px;display:flex}.diag-summary{grid-template-columns:repeat(6,minmax(100px,1fr));gap:8px;display:grid}.diag-summary>div{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);padding:8px 10px}.diag-summary span{color:var(--text-dim);font-size:var(--fs-badge);display:block}.diag-summary strong{font-size:var(--fs-ui);margin-top:2px;display:block}.diag-grid{grid-template-columns:minmax(220px,.9fr) minmax(260px,1.1fr);gap:12px;display:grid}.diag-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);min-width:0;padding:10px}.diag-card h3{font-size:var(--fs-body);color:var(--text);margin:0 0 8px;font-weight:700}.diag-wide{grid-column:1/-1}.diag-recommendations{color:var(--text);margin:0;padding-left:18px}.diag-recommendations li{margin:4px 0}.diag-node-list{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;max-height:170px;display:grid;overflow:auto}.diag-node{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);text-align:left;border-left-width:4px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:7px 8px;display:flex}.diag-node strong,.diag-node em{display:block}.diag-node em{color:var(--text-dim);font-style:normal;font-size:var(--fs-badge)}.diag-node.diag-ok{border-left-color:var(--ok)}.diag-node.diag-warn{border-left-color:var(--warn)}.diag-node.diag-error{border-left-color:var(--error)}.diag-table{border-collapse:collapse;width:100%;font-size:var(--fs-caption)}.diag-table th,.diag-table td{border:1px solid var(--border);text-align:left;padding:5px 8px}.diag-table th{background:var(--bg-elevated);color:var(--text-dim);font-weight:600}.diag-row-ok td:last-child{color:var(--ok)}.diag-row-warn td:last-child{color:var(--warn)}.diag-row-error td:last-child{color:var(--error)}.diag-issues{margin:0}.diag-issues li{cursor:pointer}.diag-issue-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);color:var(--text);border-left-width:4px;padding:8px 10px}.diag-issue-card.err{border-left-color:var(--error)}.diag-issue-card.warn{border-left-color:var(--warn)}.diag-issue-card:hover{border-color:var(--accent-dim);text-decoration:none}.diag-issue-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.diag-issue-head strong{font-size:var(--fs-body)}.diag-issue-head span{color:var(--text-dim);font-size:var(--fs-badge)}.diag-issue-body{font-size:var(--fs-caption);grid-template-columns:minmax(72px,auto) minmax(0,1fr);gap:4px 10px;margin:0;display:grid}.diag-issue-body div{display:contents}.diag-issue-body dt{color:var(--text-dim);font-weight:600}.diag-issue-body dd{overflow-wrap:anywhere;min-width:0;margin:0}.wizard-page{max-width:1100px;margin:0 auto;padding:20px 24px 32px}.wizard-head{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px;display:flex}.wizard-head h1{font-size:var(--fs-h1);margin:4px 0 0}.wizard-layout{grid-template-columns:minmax(220px,260px) minmax(0,1fr);align-items:start;gap:18px;display:grid}.wizard-steps{flex-direction:column;gap:6px;display:flex}.wizard-step{text-align:left;background:var(--bg-panel);align-items:center;gap:10px;padding:10px 12px;display:flex}.wizard-step b{border:1px solid var(--border);background:var(--bg-elevated);width:24px;height:24px;font-size:var(--fs-caption);border-radius:50%;flex:none;place-items:center;display:grid}.wizard-step strong{font-size:var(--fs-body);display:block}.wizard-step em{color:var(--text-dim);font-size:var(--fs-badge);font-style:normal;display:block}.wizard-step.visited b{border-color:var(--accent-dim);color:var(--accent)}.wizard-step.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--bg-panel))}.wizard-step.active b{background:var(--accent);border-color:var(--accent);color:#fff}.wizard-step:disabled{opacity:.55}.wizard-body{gap:var(--space-5);min-height:420px;padding:var(--space-6) var(--space-7);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-panel);box-shadow:var(--shadow-2);flex-direction:column;display:flex}.wizard-body h2{font-size:var(--fs-h2);margin:0}.wizard-body h3{font-size:var(--fs-ui);margin:0 0 8px}.wizard-note{color:var(--text-dim);font-size:var(--fs-caption);margin:0;line-height:1.45}.wizard-nav{justify-content:space-between;gap:10px;margin-top:auto;padding-top:14px;display:flex}.wizard-area-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;display:grid}.wizard-area-card{align-items:flex-start;gap:var(--space-3);min-height:120px;padding:var(--space-5);border-radius:var(--radius-md);text-align:left;background:var(--bg-panel);box-shadow:var(--shadow-1);transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);flex-direction:column;display:flex}.wizard-area-card:hover{border-color:var(--accent-dim);box-shadow:var(--shadow-3);transform:translateY(-2px)}.wizard-area-card span{color:var(--text-dim);font-size:var(--fs-caption);line-height:1.35}.wizard-area-card .wizard-area-icon{padding:var(--space-3);margin-bottom:var(--space-1);border-radius:var(--radius);color:var(--accent);background:color-mix(in srgb, var(--accent) 9%, var(--bg-panel));border:1px solid color-mix(in srgb, var(--accent) 16%, transparent);justify-content:center;align-items:center;display:inline-flex}.wizard-area-card .wizard-area-icon svg.ui-icon{width:34px;height:22px}.wizard-area-card.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--bg-panel));box-shadow:var(--shadow-2)}.wizard-area-card.active:hover{transform:none}.wizard-selected{flex-wrap:wrap;gap:6px;min-height:30px;display:flex}.wizard-chip{border:1px solid var(--accent-dim);background:color-mix(in srgb, var(--accent) 8%, var(--bg-panel));font-size:var(--fs-caption);border-radius:999px;align-items:center;gap:6px;padding:4px 6px 4px 10px;display:inline-flex}.wizard-chip em{color:var(--text-dim);font-style:normal;font-family:var(--mono);font-size:var(--fs-badge)}.wizard-chip button{font-size:var(--fs-ui);color:var(--text-dim);background:0 0;border:none;padding:0 6px;line-height:1}.wizard-chip button:hover{color:var(--error)}.wizard-search{width:100%}.wizard-component-list{flex-direction:column;gap:4px;max-height:320px;display:flex;overflow-y:auto}.wizard-component-row{text-align:left;background:var(--bg-panel);grid-template-columns:minmax(140px,1fr) 90px 110px auto auto;align-items:center;gap:10px;padding:7px 10px;display:grid}.wizard-component-row .mono{font-family:var(--mono);font-size:var(--fs-badge);color:var(--text-dim)}.wizard-component-row strong small{color:var(--text-dim);font-weight:400;font-size:var(--fs-badge);display:block}.wizard-component-row em{color:var(--accent);font-size:var(--fs-badge);justify-self:end;font-style:normal}.wizard-component-row:disabled{opacity:.6}.wizard-thermo-grid{grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);gap:18px;display:grid}.wizard-radio{border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:8px;padding:7px 8px;display:flex}.wizard-radio:hover{background:var(--bg-elevated)}.wizard-radio strong{font-size:var(--fs-body);font-weight:500;display:block}.wizard-radio em{color:var(--text-dim);font-size:var(--fs-badge);font-style:normal}.wizard-advice{border:1px solid var(--accent-dim);border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent) 6%, var(--bg-panel));font-size:var(--fs-caption);margin-top:12px;padding:12px}.wizard-advice-head{justify-content:space-between;gap:8px;margin-bottom:4px;display:flex}.wizard-advice p{margin:4px 0}.wizard-advice ul{color:var(--text-dim);margin:4px 0 8px;padding-left:18px}.advice-confidence.high{color:var(--ok)}.advice-confidence.medium{color:var(--warn)}.advice-confidence.low{color:var(--error)}.wizard-field{max-width:420px;color:var(--text-dim);font-size:var(--fs-caption);gap:4px;display:grid}.wizard-review-grid{grid-template-columns:minmax(220px,.9fr) minmax(0,1.1fr);gap:18px;display:grid}.wizard-summary{grid-template-columns:auto 1fr;align-content:start;gap:6px 14px;margin:0;display:grid}.wizard-summary dt{color:var(--text-dim);font-size:var(--fs-caption)}.wizard-summary dd{font-size:var(--fs-body);margin:0}.wizard-params label{color:var(--text-dim);font-size:var(--fs-caption);gap:4px;margin-bottom:8px;display:grid}.wizard-template-list{gap:8px;margin-top:10px;display:grid}.wizard-template-list button{text-align:left;border-radius:var(--radius-md);gap:4px;padding:10px;display:grid}.wizard-template-list button.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--bg-elevated))}.wizard-template-list span,.wizard-assumptions{color:var(--text-dim);font-size:var(--fs-caption);line-height:1.35}.wizard-scheme{width:min(460px,100%);height:auto;display:block}.wizard-scheme .ws-box rect{fill:var(--bg-canvas);stroke:var(--border);stroke-width:1.5px}.wizard-scheme .ws-unit rect{fill:var(--bg-elevated);stroke:var(--accent-dim)}.wizard-scheme text{fill:var(--text);font-size:12px;font-family:var(--font)}.wizard-scheme .ws-arrow line{stroke:var(--accent);stroke-width:2px}.wizard-scheme .ws-arrow polygon{fill:var(--accent)}.wizard-docs-link{font-size:var(--fs-caption);color:var(--accent);margin-top:10px;padding:8px 10px;text-decoration:none}.wizard-docs-link:hover{text-decoration:underline}.model-tree{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg-panel) 94%, var(--accent))}.model-tree-search{width:calc(100% - 24px);margin:8px 12px}.model-tree details{border-top:1px solid var(--border-soft)}.model-tree summary{cursor:pointer;font-size:var(--fs-caption);padding:8px 12px;font-weight:600}.model-tree summary b{color:var(--text-dim);font-weight:400}.tree-row{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-left:3px solid #0000;border-radius:0;gap:2px;padding:7px 12px;display:grid}.tree-row:hover,.tree-row.active{background:var(--bg-elevated)}.tree-row span{color:var(--text-dim);font-size:var(--fs-badge)}.tree-issue.error{border-left-color:var(--error)}.tree-issue.warning{border-left-color:var(--warn)}.tree-issue.root{background:rgba(var(--error-rgb), .08)}.diagnostic-dialog{width:min(640px,100vw - 28px)}.diagnostic-details{border-left:4px solid var(--border);padding:14px}.diagnostic-details.error{border-left-color:var(--error)}.diagnostic-details.warning{border-left-color:var(--warn)}.diagnostic-details h3{margin:0 0 12px}.diagnostic-details dl{grid-template-columns:120px 1fr;gap:8px 12px;display:grid}.diagnostic-details dt{color:var(--text-dim)}.diagnostic-details dd{margin:0}.annotation-dialog{width:min(760px,100vw - 28px)}.annotation-body{gap:12px;padding:14px;display:grid}.annotation-body label{color:var(--text-dim);font-size:var(--fs-caption);gap:5px;display:grid}.annotation-body textarea{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);resize:vertical;padding:8px 10px}.annotation-format-row,.annotation-text-head{color:var(--text-dim);font-size:var(--fs-caption);justify-content:space-between;align-items:center;gap:10px;display:flex}.segmented{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-input);align-items:center;gap:2px;padding:2px;display:inline-flex}.segmented button{border-radius:var(--radius);color:var(--text-dim);background:0 0;border:0;padding:5px 9px}.segmented button.active{background:var(--bg-elevated);color:var(--text);box-shadow:0 0 0 1px var(--border)}.typst-preview{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);min-height:150px;max-height:360px;padding:10px;overflow:auto}.typst-svg{min-width:0;display:block}.typst-svg svg{width:100%;max-width:100%;height:auto;display:block}.annotation-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.file-button input{display:none}.file-button span{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);cursor:pointer;padding:6px 12px;display:inline-block}.attachment-list{gap:8px;display:grid}.attachment-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);grid-template-columns:90px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:8px;display:grid}.attachment-card img{object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);width:90px;height:62px}.attachment-card a,.attachment-card span{overflow-wrap:anywhere;min-width:0;display:block}.attachment-file{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);width:90px;min-height:62px;font-size:var(--fs-badge);place-content:center;padding:6px;display:grid}.workbook-table-wrap{overflow-x:auto}.workbook-table,.workbook-kv{border-collapse:collapse;font-size:var(--fs-body);margin:6px 0}.workbook-table th,.workbook-table td,.workbook-kv th,.workbook-kv td{border:1px solid var(--border-soft);text-align:left;vertical-align:top;padding:4px 10px}.workbook-table th{background:var(--bg-elevated);font-weight:600}.workbook-kv th{background:var(--bg-elevated);white-space:nowrap;width:1%;font-weight:600}.workbook-inline-json{font-family:var(--mono);font-size:var(--fs-badge);color:var(--text-dim);overflow-wrap:anywhere}.workbook-list{margin:6px 0;padding-left:18px}.workbook-text{margin:6px 0;line-height:1.5}.workbook-tab,.workbook-report,.workbook-sections{gap:12px;display:grid}.workbook-report{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);padding:10px}.workbook-report-head{align-items:center;gap:8px;display:flex}.workbook-report-head>div{flex:1}.workbook-report-head span{color:var(--text-dim);font-size:var(--fs-caption);display:block}.workbook-sections details{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated)}.workbook-sections summary{cursor:pointer;justify-content:space-between;gap:10px;padding:8px 10px;display:flex}.workbook-sections pre{background:var(--bg-panel);border-top:1px solid var(--border);max-height:240px;font-size:var(--fs-badge);margin:0;padding:10px;overflow:auto}.assistant-panel{grid-template-rows:auto auto 1fr auto auto;gap:8px;height:100%;display:grid}.assistant-header{align-items:center;gap:10px;display:flex}.assistant-header:after{content:"превью изменений перед применением";color:var(--text-dim);font-size:var(--fs-badge)}.assistant-quick-commands{flex-wrap:wrap;gap:6px;display:flex}.assistant-quick-commands button{font-size:var(--fs-caption);padding:5px 10px}.assistant-log{flex-direction:column;gap:8px;min-height:0;display:flex;overflow:auto}.assistant-msg{border-left:2px solid var(--border);padding-left:8px}.assistant-proposal{border:1px solid var(--accent-dim);border-left:3px solid var(--accent);border-radius:var(--radius);flex-direction:column;gap:6px;padding:9px 10px;display:flex}.assistant-proposal-summary{color:var(--text);font-weight:600}.assistant-validation-delta{color:var(--ok);font-size:var(--fs-caption);font-family:var(--mono)}.assistant-diff-list{gap:6px;display:grid}.assistant-diff-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);grid-template-columns:minmax(120px,.8fr) minmax(100px,.7fr) minmax(160px,1.2fr);align-items:start;gap:8px;padding:7px;display:grid}.assistant-diff-row strong{min-width:0;color:var(--text);font-size:var(--fs-caption)}.assistant-diff-row span{min-width:0;color:var(--text-dim);overflow-wrap:anywhere;font-size:var(--fs-caption)}.assistant-diff-row code{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;font-size:var(--fs-badge)}.assistant-proposal-actions{gap:8px;display:flex}.assistant-raw summary{cursor:pointer;color:var(--text-dim);font-size:var(--fs-badge)}.assistant-raw pre{white-space:pre-wrap;font-family:var(--mono);font-size:var(--fs-badge);color:var(--text-dim);margin:6px 0 0}.assistant-dev summary{cursor:pointer;color:var(--text-dim);font-size:var(--fs-caption)}.assistant-dev .hint{margin-top:6px}.assistant-msg.user{border-color:var(--accent)}.assistant-msg.system{border-color:var(--warn)}.assistant-msg span{color:var(--text-dim);font-size:var(--fs-badge);text-transform:uppercase;margin-bottom:2px;display:block}.assistant-msg pre{white-space:pre-wrap;font-family:var(--mono);font-size:var(--fs-caption);color:var(--text);margin:0}.assistant-input{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;display:grid}.assistant-input textarea{resize:vertical;background:var(--bg-elevated);min-height:56px;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--mono);padding:8px}.unit-results{border-top:1px dashed var(--border);width:100%;font-family:var(--mono);color:var(--ok);margin-top:4px;padding-top:4px;font-size:10px}.empty,.loading{text-align:center;color:var(--text-dim);padding:28px}.error-box{border:1px solid var(--error);border-radius:var(--radius);color:var(--error);margin:16px;padding:12px}.error-box.compact{font-size:var(--fs-caption);margin:0;padding:9px 10px}.modal-backdrop{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0b1f3352;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.staff-user-dialog{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-panel);width:min(520px,100%);box-shadow:var(--shadow-pop);padding:18px}.staff-user-dialog-head,.staff-user-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.staff-user-dialog h2{color:var(--text);font-size:var(--fs-h2);margin:0}.staff-user-dialog p{color:var(--text-dim);font-size:var(--fs-body);margin:4px 0 0}.staff-user-close,.staff-user-copy{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text);padding:7px 10px}.staff-user-close{color:var(--text-dim);padding:6px 9px}.staff-user-form{gap:14px;margin-top:18px;display:grid}.staff-user-form label{gap:7px;display:grid}.staff-user-form label span{color:var(--text-dim);font-size:var(--fs-caption);font-weight:600}.staff-user-form input{width:100%;height:40px}.staff-user-result{border:1px solid var(--accent-dim);border-radius:var(--radius-lg);background:var(--bg-elevated);color:var(--text);font-size:var(--fs-body);gap:7px;padding:12px;display:grid}.staff-user-result span{color:var(--text-dim);overflow-wrap:anywhere}.staff-user-share-status{color:var(--text-dim);font-size:var(--fs-caption)}.staff-user-actions{justify-content:flex-end}.error-boundary{flex-direction:column;align-items:flex-start;gap:12px;max-width:560px;margin:15vh auto;padding:24px;display:flex}.error-boundary h1{font-size:var(--fs-h2);margin:0}.error-boundary p{color:var(--text-dim);margin:0;line-height:1.5}.error-boundary-actions{align-items:center;gap:14px;display:flex}.error-boundary-actions a{color:var(--accent);font-size:var(--fs-body)}.error-boundary details{width:100%}.error-boundary summary{cursor:pointer;color:var(--text-dim);font-size:var(--fs-caption)}.error-boundary pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--error);font-size:var(--fs-caption);white-space:pre-wrap;word-break:break-word;padding:8px 12px}.trust-badge{--trust-color:var(--text-dim);border:1px solid var(--trust-color);background:color-mix(in srgb, var(--trust-color) 14%, transparent);min-height:24px;color:var(--text);font-size:var(--fs-caption);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;line-height:1.4;display:inline-flex}.trust-badge.trust-success{--trust-color:var(--ok)}.trust-badge.trust-warning{--trust-color:var(--warn)}.trust-badge.trust-danger{--trust-color:var(--error)}.trust-badge.trust-info{--trust-color:var(--accent)}.trust-badge.trust-neutral{--trust-color:var(--text-dim)}.trust-badge.compact{font-size:calc(var(--fs-caption) - 1px);padding:0 6px}.trust-badge-icon{font-weight:700}button.trust-badge.interactive{cursor:pointer;min-height:44px;padding:4px 12px}button.trust-badge.interactive:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trust-banner{--trust-color:var(--text-dim);border:1px solid var(--trust-color);background:color-mix(in srgb, var(--trust-color) 10%, transparent);border-left-width:4px;border-radius:8px;padding:10px 12px}.trust-banner.trust-success{--trust-color:var(--ok)}.trust-banner.trust-warning{--trust-color:var(--warn)}.trust-banner.trust-danger{--trust-color:var(--error)}.trust-banner.trust-info{--trust-color:var(--accent)}.trust-banner-head{font-size:var(--fs-body);align-items:center;gap:8px;display:flex}.trust-banner-summary{color:var(--text-dim);font-size:var(--fs-caption);margin:6px 0 0}.trust-banner .capability-issue-list{margin:8px 0 0;padding-left:18px}.trust-banner .capability-confirm{align-items:flex-start;gap:8px;margin-top:8px;display:flex}.capability-supported{align-items:center;gap:8px;display:inline-flex}.capability-details-heading{font-size:var(--fs-caption);color:var(--text-dim);margin-top:8px;display:block}.capability-details-summary{font-size:var(--fs-caption);color:var(--text-dim);margin:4px 0 0}.capability-details ul{margin:4px 0 0;padding-left:18px}.evidence-link{color:var(--accent)}.palette-item .trust-badge+.palette-fav{margin-left:4px}@media (width<=640px){.login-page{background:var(--bg);min-height:100%;display:block;overflow:visible}.login-panel{border-right:none;border-bottom:1px solid var(--border);width:100%;min-height:58vh;box-shadow:var(--shadow-3);background:linear-gradient(180deg, rgba(var(--panel-rgb), .98) 0%, rgba(var(--panel-rgb), .94) 78%, rgba(var(--panel-rgb), .78) 100%), radial-gradient(circle at 22% 12%, rgba(var(--accent-rgb), .12), transparent 36%);padding:32px 22px 26px}.login-brand-block h1{font-size:42px}.login-submit{width:100%}.login-visual{height:42vh;position:relative}.login-visual img{object-position:72% center;min-height:0}.wizard-layout,.wizard-thermo-grid,.wizard-review-grid{grid-template-columns:1fr}.wizard-steps{flex-flow:wrap}.wizard-step em{display:none}.workspace,.workspace.palette-collapsed,.workspace.inspector-collapsed,.workspace.palette-collapsed.inspector-collapsed{grid-template:"dock""permission""canvas"1fr"bottom"45vh/1fr}.workspace .palette,.workspace .inspector,.workspace .workspace-sash{display:none}.workspace-dock{flex-wrap:nowrap;gap:6px;height:44px;padding:6px 8px;overflow-x:auto}.dock-group{flex-wrap:nowrap;flex-shrink:0;gap:4px}.workspace-dock .dock-breadcrumb{max-width:122px;overflow:hidden}.workspace-dock .dock-back,.workspace-dock .dock-shared{display:none}.workspace-dock .dock-scheme-name{max-width:112px}.workspace.mobile-panel-palette .palette{z-index:40;box-shadow:8px 0 24px rgba(var(--accent-rgb), .18);flex-direction:column;display:flex;position:fixed;inset:88px 12% 0 0}.workspace.mobile-panel-inspector .inspector{z-index:40;box-shadow:-8px 0 24px rgba(var(--accent-rgb), .18);flex-direction:column;display:flex;position:fixed;inset:88px 0 0 12%}.bottom-tabs{white-space:nowrap;flex-wrap:nowrap;overflow-x:auto}}.dialog.calibration-dialog{width:min(720px,100vw - 32px)}.calibration-rows{flex-direction:column;gap:4px;max-height:220px;display:flex;overflow-y:auto}.calibration-row{justify-content:space-between;align-items:center;gap:8px;padding:2px 0;display:flex}.calibration-row-name{align-items:center;gap:6px;min-width:0;display:flex}.calibration-row-name .hint{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.calibration-param{font-size:var(--fs-body);white-space:nowrap;font-weight:600}.calibration-bounds{flex:none;align-items:center;gap:4px;display:flex}.calibration-bounds input{width:110px}.calibration-bounds input.calibration-weight{width:56px}.calibration-iterations{max-height:260px;overflow:auto}.calibration-table{border-collapse:collapse;width:100%;font-size:var(--fs-caption)}.calibration-table th,.calibration-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:4px 8px}.calibration-table tr.calibration-rejected td{opacity:.45}.visual-by_stream_type .edge-material .react-flow__edge-path{stroke:var(--accent);stroke-width:2.4px}.visual-by_stream_type .edge-energy .react-flow__edge-path{stroke:var(--warn);stroke-width:2.4px}.visual-by_stream_type .edge-signal .react-flow__edge-path{stroke:var(--signal);stroke-width:2px;stroke-dasharray:6 4}.preset-demo .display-controls{opacity:.75}.bottom-tabs .tab-count{border-radius:var(--radius-md);min-width:16px;font-size:var(--fs-badge);text-align:center;color:#fff;margin-left:6px;padding:0 5px;line-height:16px;display:inline-block}.bottom-tabs .tab-count.err{background:var(--error)}.bottom-tabs .tab-count.warn{background:var(--warn)}.diag-issue-card.root-cause{border-left:3px solid var(--error);box-shadow:0 0 0 1px var(--error) inset}.quality-badges{flex-wrap:wrap;gap:6px;display:flex}.quality-badges .badge{border-radius:var(--radius-lg);font-size:var(--fs-caption);border:1px solid var(--border);padding:2px 8px}.quality-badges .badge.ok{border-color:var(--ok);color:var(--ok)}.quality-badges .badge.warn{border-color:var(--warn);color:var(--warn)}.quality-badges .badge.err{border-color:var(--error);color:var(--error)}.run-quality-issues li.clickable{cursor:pointer}.run-quality-issues li.clickable:hover{filter:brightness(.97)}.app-showcase{flex-direction:column;gap:10px;display:flex}.app-showcase-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.app-showcase-card{align-items:flex-start;gap:var(--space-2);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-1);color:var(--text);text-align:left;transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);flex-direction:column;text-decoration:none;display:flex}.app-showcase-card:hover{border-color:var(--accent);box-shadow:var(--shadow-3);transform:translateY(-2px)}.app-showcase-card strong{font-size:var(--fs-body)}.app-showcase-card span{font-size:var(--fs-caption);color:var(--text-dim)}.app-mode-page{flex-direction:column;gap:16px;max-width:760px;margin:0 auto;padding:20px 16px 40px;display:flex}.app-mode-back{font-size:var(--fs-body);color:var(--text-dim);text-decoration:none}.app-mode-back:hover{color:var(--accent)}.app-mode-head h1{font-size:var(--fs-h1);margin:6px 0 4px}.app-mode-head p{color:var(--text-dim);margin:0}.app-mode-form{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.app-mode-params{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.app-mode-actions{align-items:center;gap:14px;display:flex}.app-mode-assumptions{font-size:var(--fs-caption);color:var(--text-dim);margin:0;padding-left:18px}.app-run{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.app-run-status{font-size:var(--fs-body);gap:12px;display:flex}.app-run-status .dim{color:var(--text-dim)}.app-run-finals{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;display:grid}.app-final{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.app-final span{font-size:var(--fs-caption);color:var(--text-dim)}.app-final strong{font-size:var(--fs-title)}.dialog.versions-dialog{width:min(680px,100vw - 32px)}.versions-save-row{flex-wrap:wrap;gap:8px;display:flex}.versions-save-row input{flex:1;min-width:200px}.versions-list{flex-direction:column;gap:6px;display:flex}.version-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.version-row-info{flex-direction:column;gap:2px;min-width:0;display:flex}.version-row-info strong{align-items:center;gap:6px;display:flex}.version-row-info .dim{font-size:var(--fs-caption);color:var(--text-dim)}.version-row-actions{flex:none;gap:6px;display:flex}.version-diff{flex-direction:column;gap:6px;display:flex}.version-diff .assistant-diff-list{max-height:260px;overflow-y:auto}.hint.ok{color:var(--ok)}.versions-journal summary{cursor:pointer;color:var(--text-dim);font-size:var(--fs-caption)}.journal-list{flex-direction:column;gap:4px;max-height:200px;margin-top:6px;display:flex;overflow-y:auto}.journal-row{font-size:var(--fs-caption);border-bottom:1px dashed var(--border);align-items:baseline;gap:8px;padding:3px 0;display:flex}.journal-author{border-radius:var(--radius-md);border:1px solid var(--border);color:var(--text-dim);flex:none;padding:1px 6px}.journal-author.assistant{border-color:var(--accent);color:var(--accent)}.journal-summary{flex:1;min-width:0}.journal-summary em{color:var(--text-dim)}.journal-row .dim{color:var(--text-dim);flex:none}@media (width<=768px){.library-layout{grid-template-columns:1fr;gap:12px}.library-nav{gap:10px;min-width:0;position:static}.library-nav-areas{flex-direction:row;gap:6px;max-width:100%;padding-bottom:4px;overflow-x:auto}.library-nav-item{white-space:nowrap;flex:none;padding:6px 10px}.library-nav-item>span:not(.library-nav-icon){flex:none}.library-nav-icon svg.ui-icon{width:21px;height:14px}.library-types{border-top:none;flex-flow:wrap;padding-top:0}.library-types-title{width:100%;margin-bottom:0}.library-type-chip{flex:none}}.snapshot-page{max-width:900px;margin:0 auto;padding:24px 16px}.snapshot-page-head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.snapshot-back{border:1px solid var(--border);background:0 0;border-radius:8px;padding:4px 10px}.snapshot-panel{flex-direction:column;gap:16px;display:flex}.snapshot-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.snapshot-head h2{margin:0}.snapshot-section{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);background:var(--bg-panel);box-shadow:var(--shadow-1)}.snapshot-section h3{font-size:var(--fs-body);margin:0 0 8px}.snapshot-dl{grid-template-columns:minmax(160px,240px) 1fr;gap:4px 16px;margin:0;display:grid}.snapshot-row{display:contents}.snapshot-dl dt{color:var(--text-dim);font-size:var(--fs-caption)}.snapshot-dl dd{word-break:break-word;margin:0}.snapshot-hash{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.snapshot-hash code{word-break:break-all}.snapshot-open-link{color:var(--accent);margin-top:10px;display:inline-block}.snapshot-actions-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.snapshot-open-source{color:var(--accent)}.snapshot-compare-form{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:10px;display:flex}.snapshot-compare-form label{flex-direction:column;gap:4px;display:flex}.snapshot-compare-table{border-collapse:collapse;width:100%;font-size:var(--fs-caption)}.snapshot-compare-table th,.snapshot-compare-table td{text-align:left;border-bottom:1px solid var(--border-soft);padding:4px 8px}.snapshot-compare-table tr.diff-changed{background:color-mix(in srgb, var(--warn) 12%, transparent)}.snapshot-compare-table tr.diff-changed td:last-child{color:var(--warn);font-weight:600}.compare-identical{color:var(--ok)}.compare-different{color:var(--warn)}@media print{.trust-badge,.trust-banner{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}.trust-banner{border:1px solid #000;border-left-width:4px}.trust-badge{border:1px solid #000}.evidence-link:after{content:" (" attr(href) ")";color:#333;font-size:.85em}}
