koppler 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.built +1 -1
- package/dist/core/stack.js +16 -2
- package/dist/core/stack.js.map +1 -1
- package/dist/core/terraform.js +78 -7
- package/dist/core/terraform.js.map +1 -1
- package/dist/engine/deployed.js +71 -8
- package/dist/engine/deployed.js.map +1 -1
- package/dist/page/assets/{index-Cuslf4bV.js → index-cGqfl7Ue.js} +25 -25
- package/dist/page/assets/index-e6-Jk1nK.css +1 -0
- package/dist/page/index.html +2 -2
- package/package.json +1 -1
- package/skills/koppler-run/VERSION +1 -1
- package/skills/koppler-run/references/research.md +13 -0
- package/skills/koppler-run/references/stack.md +4 -3
- package/dist/page/assets/index-CDWcSvXP.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.svelte-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}.svelte-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}.svelte-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.svelte-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.svelte-flow__pane{z-index:1;touch-action:none}.svelte-flow__pane.draggable{cursor:grab}.svelte-flow__pane.dragging{cursor:grabbing}.svelte-flow__pane.selection{cursor:pointer}.svelte-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.svelte-flow__renderer{z-index:4}.svelte-flow__selection{z-index:6}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible{outline:none}.svelte-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}.svelte-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}.svelte-flow .svelte-flow__edges{position:absolute}.svelte-flow .svelte-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.svelte-flow__edge{pointer-events:visibleStroke}.svelte-flow__edge.selectable{cursor:pointer}.svelte-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.svelte-flow__edge.animated path.svelte-flow__edge-interaction{stroke-dasharray:none;animation:none}.svelte-flow__edge.inactive{pointer-events:none}.svelte-flow__edge.selected,.svelte-flow__edge:focus,.svelte-flow__edge:focus-visible{outline:none}.svelte-flow__edge.selected .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus-visible .svelte-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.svelte-flow__edge-textwrapper{pointer-events:all}.svelte-flow__edge .svelte-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.svelte-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.svelte-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.svelte-flow__connection{pointer-events:none}.svelte-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.svelte-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.svelte-flow__nodes{pointer-events:none;transform-origin:0 0}.svelte-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.svelte-flow__node.selectable{cursor:pointer}.svelte-flow__node.draggable{cursor:grab;pointer-events:all}.svelte-flow__node.draggable.dragging{cursor:grabbing}.svelte-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.svelte-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.svelte-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}.svelte-flow__handle.connectingfrom{pointer-events:all}.svelte-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.svelte-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.svelte-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.svelte-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.svelte-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.svelte-flow__edgeupdater{cursor:move;pointer-events:all}.svelte-flow__pane.selection .svelte-flow__panel{pointer-events:none}.svelte-flow__panel{z-index:5;margin:15px;position:absolute}.svelte-flow__panel.top{top:0}.svelte-flow__panel.bottom{bottom:0}.svelte-flow__panel.top.center,.svelte-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.svelte-flow__panel.left{left:0}.svelte-flow__panel.right{right:0}.svelte-flow__panel.left.center,.svelte-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.svelte-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.svelte-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.svelte-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.svelte-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.svelte-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.svelte-flow__minimap-svg{display:block}.svelte-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)))}.svelte-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)))}.svelte-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.svelte-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.svelte-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.svelte-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.svelte-flow__controls.horizontal{flex-direction:row}.svelte-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}.svelte-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.svelte-flow__edge.updating .svelte-flow__edge-path{stroke:#777}.svelte-flow__edge-text{font-size:10px}.svelte-flow__node.selectable:focus,.svelte-flow__node.selectable:focus-visible{outline:none}.svelte-flow__node-input,.svelte-flow__node-default,.svelte-flow__node-output,.svelte-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}.svelte-flow__node-input.selectable:hover,.svelte-flow__node-default.selectable:hover,.svelte-flow__node-output.selectable:hover,.svelte-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.svelte-flow__node-input.selectable.selected,.svelte-flow__node-input.selectable:focus,.svelte-flow__node-input.selectable:focus-visible,.svelte-flow__node-default.selectable.selected,.svelte-flow__node-default.selectable:focus,.svelte-flow__node-default.selectable:focus-visible,.svelte-flow__node-output.selectable.selected,.svelte-flow__node-output.selectable:focus,.svelte-flow__node-output.selectable:focus-visible,.svelte-flow__node-group.selectable.selected,.svelte-flow__node-group.selectable:focus,.svelte-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.svelte-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.svelte-flow__nodesselection-rect,.svelte-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible,.svelte-flow__selection:focus,.svelte-flow__selection:focus-visible{outline:none}.svelte-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)))}.svelte-flow__controls-button:disabled{pointer-events:none}.svelte-flow__controls-button:disabled svg{fill-opacity:.4}.svelte-flow__controls-button:last-child{border-bottom:none}.svelte-flow__controls.horizontal .svelte-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)))}.svelte-flow__controls.horizontal .svelte-flow__controls-button:last-child{border-right:none}.svelte-flow__resize-control{position:absolute}.svelte-flow__resize-control.left,.svelte-flow__resize-control.right{cursor:ew-resize}.svelte-flow__resize-control.top,.svelte-flow__resize-control.bottom{cursor:ns-resize}.svelte-flow__resize-control.top.left,.svelte-flow__resize-control.bottom.right{cursor:nwse-resize}.svelte-flow__resize-control.bottom.left,.svelte-flow__resize-control.top.right{cursor:nesw-resize}.svelte-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%}.svelte-flow__resize-control.handle.left{top:50%;left:0}.svelte-flow__resize-control.handle.right{top:50%;left:100%}.svelte-flow__resize-control.handle.top{top:0;left:50%}.svelte-flow__resize-control.handle.bottom{top:100%;left:50%}.svelte-flow__resize-control.handle.top.left,.svelte-flow__resize-control.handle.bottom.left{left:0}.svelte-flow__resize-control.handle.top.right,.svelte-flow__resize-control.handle.bottom.right{left:100%}.svelte-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.svelte-flow__resize-control.line.left,.svelte-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.svelte-flow__resize-control.line.left{border-left-width:1px;left:0}.svelte-flow__resize-control.line.right{border-right-width:1px;left:100%}.svelte-flow__resize-control.line.top,.svelte-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.svelte-flow__resize-control.line.top{border-top-width:1px;top:0}.svelte-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.svelte-flow__edge-label{text-align:center;color:var(--xy-edge-label-color,var(--xy-edge-label-color-default));background:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default));padding:2px;font-size:10px;position:absolute}.svelte-flow__container{-webkit-user-select:none;user-select:none}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAAaAABIAAAAADMwAAAYdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVIEgJx4AdC9MEQgKhGSEAAsgADCDOgE2AiQDOgQgBYdGB4EUGw8LIxEmZHIexT8PYyJTH6s540K0vrtCWaIRpUzRCqKVgSh/33L3iSgiBkN7EeGRTTw85UW9X5WkwZF7tJBx0g3Cac+S8lfO/UPNN4h5WrZiW1TT4nbixDB3vt1UJciEG0hoUc5XuE5OKAqYvtaSRANO3rv/tVb/oBJpOuAlQEikTDqxv3uuFVOLvC6aVeM2NBS8cplGyFpZ1RkosWs55KTlc8eza3siAl1ACKUQAiHQNt10sd4GuaWgrYCaBYG2BSwg+XhrehjdJgND8D69SDvFvJJ0SaoENkV7xx5CYy2QaJlypoYnsMkAPC/FV/nf/18l/xv+I3HLBzdAWiC9jZFSCE0J41WYJ514oKBNBfgC5g2oGAkHKYX4m64rCymGIJCRooirSE8jQTTyiPQ9eWRhKi992skqVhXL+JV4UY6QEupjD/kvCxDK5z0YGrfsUuYfjQABEjLGywLjFfYCxhrKkp6RtW15IVJxX/GqZtFR9xYv+VOTr9mDrLim6l1byfqVJkoNXD8wlMSObPvNzPMA8Z3LC1Fgye9EyU1t3ajeKV/0ouFvFf28Uc0aAFTMxI2vwyuYB/LI0nGFPCarIoFtH26NnJutwaDVGtvSGVcYdspesU+v3O/QbmfPzu7tHdrb7drZ4XZNXOZIT22Xzs43p62V1+jtlPa+RKF29nemThriq+VTHyptQ6/tohdnqz1JbrycqAhyXp5FwA7W7VX2SKwGSG1E8pK76a3obHdqBHfonTUF3dXlucvtvs1Ut/Riq65Z+8UuZplnbnU/fatmyRfuLTahevtXfMialNlPz9X/YX3InZN1V/ntv2xl9fH+Gb86qqYJLNra50g5J2upIRzN0xyo0D3qQtfKj1t9XaT8rESJ6ybu9LkNJawTt6qkiGNea49QPzW14hy0e31NVBe27G5oFYUxg8LWJGts5vWrF0paN+m3r3OTKE3cKtUl/f/Q7mGP2k5J586AC0sfsZ/fJqmhuexCb91FDp6iZVMw9iWPzIoCKsOr9vYZLLghRbwLVBcQqPRmiqA+W6WAF7VYHpYhLZAfRTC38fLpba1zkz3/fkJgOQOwAphoujlWtLr9iCy7Y75/D3hxLRCa5o4YDnxx12XKnZdW8xwffa+T/9X0zlV0njyBweD9owcOHTh2n2FAHud8JQFzrt7/+PFb/z9+gWrZar9mPtORGfJlWLMw08XUJbNw2BcFN+w8BazvOcvp4+Mp5iNjx1grXfjjDbHQaFsg8w865aWZ4azb//nbiNW3z4b6lWXDvMxevjRbMMxufnvrnJ7/1lsG0vtsanX9+SbPe/OT9sQyyFJH9kETE422CTL/oF3y9OVK9Wbrjx9/R6z//fyuo5Ut5m+n812WtPPX1f3j+dVpxvMf596UQ+OTJw8cE9QsU6n8/++JyywnhmlHJyTGRcv8uMT4qDEJzQr540cu0xiSTHmWWpVIKad0lsb3l+Z/vrOp/vwBvcnwHyCQVlAf85sVNRjFf9NWy18C3rm8vQl45/bFz16aW+emiPwoKgkEn2Z12skn6P/wOYSJ9u20WvUMBf5uUN0zHgEAfC7Aq05gYJ5slpyeTTp6nK8bR9HC08mZwDA9FZj043fMVosnsbBYXIGlqXEcVhaJTRL7VojxmYJuNLHQj9+x1PUvVpp+xYaxPsaO5dyLXcs4DXuWsAX2rWQiDnS1/+ZQG9sgpGgyWdrQJIS4smFtkrWgCcm0ykPIEFb5AOvr0ua5EZIREk3sruRYNoeLhRBqJ+XBNpRfUAk5TouzilHr9FBRXohPoA3witRyrWIt+TU8FlcLIbk2rQIdS0gi0JFa8AXZUrrcE7Z9rvxyWEuqjyJknC1jCctY2tKFyllm49ySS1ct2WTYJedoTXV87+YpCLluLW8kODW7FLCMbEcD7sTpLVtpQfkiGDeJbW3tb20lWvzntJB3tx1I6Gdpx+lWty9CKmivAQbdPJ+PZMptjYUi3PMA87wcyWqRo4gyqmjI0YxWtKNTrb1PC+7AWu1HCIOXWzsNhawfzSf908vHlAfuLZXShddLrR2c1t3GkN63vQ3/MIvgz1kYfbtt2aVWaAAAAAA=)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(./JetBrainsMono-cyrillic-D2jMJ_bk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(./JetBrainsMono-greek-D2nYnAec.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(./JetBrainsMono-vietnamese-CNlsqbWb.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(./JetBrainsMono-latin-ext-Bnd2h4Br.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(./JetBrainsMono-latin-Db4Uuiha.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(./SchibstedGrotesk-latin-ext-CnpJE18X.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(./SchibstedGrotesk-latin-DxefFeRw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--desk:#dce2e8;--paper:#e9edf1;--panel:#f7f9fb;--surface:#fff;--ink:#18222d;--muted:#5b6875;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 16 16' fill='none' stroke='%235b6875' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");--line:#c5cdd6;--dot:#c9d0d8;--cable:#2b59c3;--cable-ink:#1b3a86;--prod:#c8372d;--prod-ink:#8e2119;--ok:#2f855a;--bad:#c8372d;--warn:#a36400;--on-accent:#fff;--socket:#1a222b;--socket-rim:#8a97a5;--dotnet:#5737c2;--flutter:#086a7e;--node:#2d6e30;--web:#8f4b06;--lambda:#a8326f;--other:#5b6673;--msg:#0f7b6c;--lift:0 1px 2px #0000001f, 0 4px 8px -2px #0003;--lift-high:0 2px 4px #00000029, 0 8px 8px -4px #0000004d;--sans:"Schibsted Grotesk", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--desk:#10151b;--paper:#161c23;--panel:#1c232b;--surface:#222a33;--ink:#e6ebf0;--muted:#93a0ad;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 16 16' fill='none' stroke='%2393a0ad' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");--line:#34404c;--dot:#2a333d;--cable:#6e93f0;--cable-ink:#3f63c2;--prod:#ff6b5e;--prod-ink:#b83a2f;--ok:#5bc48c;--bad:#ff6b5e;--warn:#f0b429;--on-accent:#0f1722;--socket:#0b0f14;--socket-rim:#4a5664;--dotnet:#a28bff;--flutter:#3cc3db;--node:#71c774;--web:#f2a04a;--lambda:#f07ab8;--other:#9aa7b5;--msg:#3cc9b4;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--desk:#10151b;--paper:#161c23;--panel:#1c232b;--surface:#222a33;--ink:#e6ebf0;--muted:#93a0ad;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 16 16' fill='none' stroke='%2393a0ad' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");--line:#34404c;--dot:#2a333d;--cable:#6e93f0;--cable-ink:#3f63c2;--prod:#ff6b5e;--prod-ink:#b83a2f;--ok:#5bc48c;--bad:#ff6b5e;--warn:#f0b429;--on-accent:#0f1722;--socket:#0b0f14;--socket-rim:#4a5664;--dotnet:#a28bff;--flutter:#3cc3db;--node:#71c774;--web:#f2a04a;--lambda:#f07ab8;--other:#9aa7b5;--msg:#3cc9b4;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;margin:0}#app{flex-direction:column;display:flex}body{background:var(--paper);font-family:var(--sans)}.kind-dotnet{--kind:var(--dotnet)}.kind-flutter{--kind:var(--flutter)}.kind-node{--kind:var(--node)}.kind-web{--kind:var(--web)}.kind-lambda,.kind-sam{--kind:var(--lambda)}.kind-other{--kind:var(--other)}svg.lucide{flex:none;display:block}summary{list-style:none}summary::-webkit-details-marker{display:none}summary:not(:has(.chev)):before{content:"";background:var(--chevron) center / 10px no-repeat;flex:none;align-self:center;width:10px;height:10px;margin-right:6px;transition:rotate .12s;display:inline-block;rotate:-90deg}details[open]>summary:not(:has(.chev)):before{rotate:0deg}.seg{border:1px solid var(--line);background:color-mix(in oklab, var(--ink) 5%, transparent);border-radius:8px;gap:2px;padding:2px;display:flex}.seg label{color:var(--muted);cursor:pointer;border-radius:6px;font-weight:600;position:relative}.seg input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.seg label:has(input:checked){background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line), 0 1px 2px #0000001f}.seg label:has(input:focus-visible){outline:2px solid var(--cable);outline-offset:-2px}.seg label[aria-disabled=true],.seg label[aria-disabled=true] input{opacity:.45;cursor:not-allowed}.toggle{cursor:pointer;align-items:center;gap:8px;font-weight:600;display:flex;position:relative}.toggle input{z-index:1;opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.toggle input:disabled{cursor:not-allowed}.track{background:color-mix(in oklab, var(--ink) 22%, transparent);border-radius:999px;flex:none;width:28px;height:16px;transition:background .15s;position:relative}.track:after{content:"";background:var(--surface);border-radius:50%;width:12px;height:12px;transition:translate .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.toggle input:checked+.track{background:var(--cable)}.toggle input:checked+.track:after{translate:12px}.toggle input:focus-visible+.track{outline:2px solid var(--cable);outline-offset:2px}@media (prefers-reduced-motion:reduce){.track,.track:after{transition:none}}.dimmed{opacity:.28;transition:opacity .15s}@media (prefers-reduced-motion:reduce){.dimmed{transition:none}}dialog.svelte-gr1w3a{border:1px solid var(--line);background:var(--surface);width:min(420px,100vw - 32px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);border-radius:14px;padding:20px}dialog.svelte-gr1w3a::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}h2.svelte-gr1w3a{margin:0 28px 10px 0;font-size:17px}.ask.svelte-gr1w3a{margin:0 0 12px}.x.svelte-gr1w3a{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;position:absolute;top:12px;right:12px}form.svelte-gr1w3a{gap:12px;display:grid}label.svelte-gr1w3a{gap:4px;font-weight:600;display:grid}.opt.svelte-gr1w3a{color:var(--muted);font-weight:400}input.svelte-gr1w3a,select.svelte-gr1w3a{border:1px solid var(--line);background:var(--paper);height:32px;color:var(--ink);font:13px var(--sans);border-radius:6px;padding:0 8px}.error.svelte-gr1w3a{min-height:1.45em;color:var(--bad);margin:0}.error.svelte-gr1w3a:empty{display:none}.acts.svelte-gr1w3a{justify-content:flex-end;gap:8px;display:flex}.acts.svelte-gr1w3a button:where(.svelte-gr1w3a){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}.acts.svelte-gr1w3a .go:where(.svelte-gr1w3a){background:var(--cable);color:var(--on-accent);border-color:#0000}.acts.svelte-gr1w3a .go.danger:where(.svelte-gr1w3a){background:var(--bad)}.acts.svelte-gr1w3a button:where(.svelte-gr1w3a):disabled{opacity:.5;cursor:not-allowed}.cmd.svelte-1mrkr86{align-items:start;gap:8px;min-width:0;display:flex}code.svelte-1mrkr86{border:1px solid var(--line);background:var(--paper);min-width:0;max-height:132px;color:var(--ink);font:12px var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;border-radius:6px;flex:1;padding:5px 8px;overflow-y:auto}button.svelte-1mrkr86{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:4px 10px}button.svelte-1mrkr86:hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.transparent.svelte-1wg91mu{background:0 0}.a11y-hidden.svelte-13pq11u{display:none}.a11y-live-msg.svelte-13pq11u{clip:rect(0px, 0px, 0px, 0px);clip-path:inset(100%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.svelte-flow__selection.svelte-1vr3gfi{position:absolute;top:0;left:0}.svelte-flow__selection-wrapper.svelte-sf2y5e{z-index:2000;pointer-events:all;position:absolute;top:0;left:0}.svelte-flow__selection-wrapper.svelte-sf2y5e:focus,.svelte-flow__selection-wrapper.svelte-sf2y5e:focus-visible{outline:none}.svelte-flow.svelte-mkap6j{z-index:0;width:100%;height:100%;position:relative;overflow:hidden}.words.svelte-ssy1qy{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.agent.svelte-ssy1qy{height:32px;color:var(--muted);cursor:pointer;font:500 12.5px var(--sans);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:0 10px;display:inline-flex}.agent.svelte-ssy1qy:hover,.agent[aria-expanded=true].svelte-ssy1qy{border-color:var(--line);color:var(--ink)}.agent[data-state=question].svelte-ssy1qy{border-color:color-mix(in oklab, var(--warn) 55%, transparent);background:color-mix(in oklab, var(--warn) 12%, transparent);color:var(--ink);font-weight:600}.agent[data-state=quiet].svelte-ssy1qy{color:var(--warn)}[data-state=quiet].svelte-ssy1qy .dot:where(.svelte-ssy1qy),[data-state=question].svelte-ssy1qy .dot:where(.svelte-ssy1qy){background:var(--warn)}.dot.svelte-ssy1qy{background:var(--muted);border-radius:50%;width:8px;height:8px}[data-state=listening].svelte-ssy1qy .dot:where(.svelte-ssy1qy){background:var(--ok)}[data-state=busy].svelte-ssy1qy .dot:where(.svelte-ssy1qy){background:var(--cable);animation:1.4s ease-in-out infinite svelte-ssy1qy-working}[data-state=none].svelte-ssy1qy .dot:where(.svelte-ssy1qy){background:var(--warn)}@keyframes svelte-ssy1qy-working{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){[data-state=busy].svelte-ssy1qy .dot:where(.svelte-ssy1qy){animation:none}}.how.svelte-ssy1qy{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;margin-left:-8px;padding:0;display:grid}.how.svelte-ssy1qy:hover,.how[aria-expanded=true].svelte-ssy1qy{border-color:var(--line);color:var(--ink)}.connect.svelte-ssy1qy{border:1px solid var(--line);background:var(--surface);width:min(360px,100vw - 24px);color:var(--ink);box-shadow:var(--lift);font:13px/1.45 var(--sans);border-radius:12px;margin:0;padding:14px 16px;position:fixed;inset:auto}h2.svelte-ssy1qy{margin:0 0 6px;font-size:14px}p.svelte-ssy1qy{color:var(--muted);margin:0 0 10px}ol.svelte-ssy1qy{gap:10px;margin:0;padding-left:20px;font-weight:600;display:grid}li.svelte-ssy1qy small:where(.svelte-ssy1qy){color:var(--muted);font-size:12px;font-weight:400;display:block}li.svelte-ssy1qy .cmd{margin-top:6px;font-weight:400}input.svelte-1ypd2at{border:1px solid var(--line);background:var(--paper);width:100%;height:30px;color:var(--ink);font:12px var(--mono);text-overflow:ellipsis;border-radius:6px;padding:0 8px}input.svelte-1ypd2at::placeholder{color:var(--muted)}ul.svelte-1ypd2at{background:var(--surface);border:1px solid var(--line);width:max-content;max-height:280px;box-shadow:var(--lift);border-radius:8px;margin:0;padding:4px;list-style:none;position:fixed;inset:auto;overflow-y:auto}li.svelte-1ypd2at{font:12px/1.35 var(--mono);color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:5px;align-items:center;gap:12px;padding:6px 8px;display:flex}.name.svelte-1ypd2at{text-overflow:ellipsis;min-width:0;overflow:hidden}li[aria-selected=true].svelte-1ypd2at{background:color-mix(in oklab, var(--cable) 18%, transparent)}.tag.svelte-1ypd2at{font:600 10.5px var(--sans);color:var(--muted);flex:none;margin-left:auto}.note.svelte-1ypd2at{font-family:var(--sans);color:var(--muted);cursor:default}.body.svelte-1kkgx5y{cursor:default;gap:8px;padding:10px 14px 14px 16px;display:grid}.row.svelte-1kkgx5y{grid-template-columns:1fr 1fr;gap:8px;display:grid}.field.svelte-1kkgx5y{color:var(--muted);gap:3px;font-size:12px;display:grid}.combo.svelte-1kkgx5y{display:block;position:relative}.combo.svelte-1kkgx5y:after{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);pointer-events:none;width:6px;height:6px;position:absolute;top:50%;right:11px;transform:translateY(-70%)rotate(45deg)}select.svelte-1kkgx5y{border:1px solid var(--line);background:var(--paper);width:100%;height:30px;color:var(--ink);font:13px var(--sans);appearance:none;cursor:pointer;text-overflow:ellipsis;border-radius:6px;padding:0 26px 0 8px}select.mono.svelte-1kkgx5y{font:12px var(--mono)}.seg.svelte-1kkgx5y{height:30px}.seg.svelte-1kkgx5y label:where(.svelte-1kkgx5y){flex:1;place-items:center;padding:0 10px;font-size:12.5px;display:grid}.toggle.svelte-1kkgx5y{width:fit-content;min-height:30px;color:var(--ink);font-size:13px}.link.svelte-1kkgx5y{color:var(--cable);font:500 12px var(--sans);cursor:pointer;background:0 0;border:0;justify-self:start;padding:0}.link.svelte-1kkgx5y:hover{text-decoration:underline}.note-toggle.svelte-1kkgx5y{min-height:24px;color:var(--muted);font:500 12.5px var(--sans);cursor:pointer;background:0 0;border:0;justify-self:start;align-items:center;gap:5px;padding:2px 0;display:inline-flex}.note-toggle.svelte-1kkgx5y:before{content:"+";font-size:16px;line-height:1}.note-toggle.svelte-1kkgx5y:hover{color:var(--cable)}textarea.svelte-1kkgx5y{resize:none;border:1px solid var(--line);background:var(--paper);width:100%;min-height:52px;color:var(--ink);font:13px/1.4 var(--sans);border-radius:6px;padding:6px 8px;overflow:hidden}textarea.svelte-1kkgx5y::placeholder{color:var(--muted)}.svelte-1kkgx5y:is(select:where(.svelte-1kkgx5y),textarea:where(.svelte-1kkgx5y),.note-toggle:where(.svelte-1kkgx5y)):focus-visible{outline:2px solid var(--cable);outline-offset:1px}.card.svelte-byllhq{background:var(--surface);border:1px solid var(--line);width:max-content;min-width:260px;max-width:380px;color:var(--ink);font:14px/1.4 var(--sans);-webkit-user-select:none;user-select:none;border-radius:10px;position:relative}.card.selected.svelte-byllhq,.svelte-flow__node:focus-visible .card.svelte-byllhq{outline:2px solid var(--cable);outline-offset:-1px}.card.drop-ok.svelte-byllhq{box-shadow:0 0 0 3px var(--ok)}.card.drop-bad.svelte-byllhq{box-shadow:0 0 0 3px var(--bad)}.body.svelte-byllhq,.glance.svelte-byllhq{contain:inline-size}header.svelte-byllhq{border-bottom:1px solid var(--line);cursor:grab;align-items:center;gap:8px;min-height:44px;padding:6px 8px 6px 16px;display:flex}.short.svelte-byllhq header:where(.svelte-byllhq){border-bottom:0}.grip.svelte-byllhq{fill:var(--muted);opacity:.6;margin-left:-6px;display:grid}.kind.svelte-byllhq{font:600 12px/1.5 var(--sans);white-space:nowrap;color:var(--kind);background:color-mix(in oklab, var(--kind) 14%, transparent);border-radius:999px;flex:none;margin-left:10px;padding:1px 7px}.name.svelte-byllhq{text-wrap:balance;overflow-wrap:break-word;flex:1;min-width:0;font-size:15px;font-weight:700;line-height:1.2}.short.svelte-byllhq header:where(.svelte-byllhq){flex-wrap:wrap}.short.svelte-byllhq .name:where(.svelte-byllhq){min-width:min-content;font-size:22px}.tools.svelte-byllhq{border:1px solid var(--line);background:var(--panel);box-shadow:var(--lift);border-radius:9px;gap:1px;padding:3px;display:flex}.tools.reading.svelte-byllhq .remove:where(.svelte-byllhq){display:none}.tools.svelte-byllhq :is(button:where(.svelte-byllhq),.tool:where(.svelte-byllhq)){width:26px;height:26px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.tools.svelte-byllhq :where(.svelte-byllhq):is(button:where(.svelte-byllhq),.tool:where(.svelte-byllhq)):hover,.tools.svelte-byllhq :where(.svelte-byllhq):is(button:where(.svelte-byllhq),.tool:where(.svelte-byllhq)):focus-visible{background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--ink)}.tools.svelte-byllhq button[aria-pressed=true]:where(.svelte-byllhq){background:color-mix(in oklab, var(--cable) 14%, transparent);color:var(--cable)}.tools.svelte-byllhq :where(.svelte-byllhq):is(.remove:where(.svelte-byllhq),.stop:where(.svelte-byllhq)):hover{color:var(--bad)}.tools.svelte-byllhq .fill:where(.svelte-byllhq){fill:currentColor;stroke:none}.watch.svelte-byllhq{color:var(--muted);flex:none;display:inline-grid}.live.svelte-byllhq{background:var(--bad);border-radius:50%;flex:none;width:9px;height:9px}.live[data-on=true].svelte-byllhq,.live[data-state=running].svelte-byllhq{background:var(--ok)}.live.svelte-byllhq:is([data-state=waiting]:where(.svelte-byllhq),[data-state=building]:where(.svelte-byllhq)){background:var(--warn)}.live.svelte-byllhq:is([data-state=unhealthy]:where(.svelte-byllhq),[data-state=exited]:where(.svelte-byllhq),[data-state=failed-to-start]:where(.svelte-byllhq),[data-state=secret-missing]:where(.svelte-byllhq)){background:var(--bad)}.where.svelte-byllhq{contain:inline-size;color:var(--muted);-webkit-user-select:text;user-select:text;cursor:auto;margin:0;padding:0 14px 10px 16px;font-size:12px}.where[data-on=true].svelte-byllhq{color:var(--ok)}.where.svelte-byllhq:is([data-state=unhealthy]:where(.svelte-byllhq),[data-state=exited]:where(.svelte-byllhq),[data-state=failed-to-start]:where(.svelte-byllhq),[data-state=secret-missing]:where(.svelte-byllhq)){color:var(--bad)}.progress.svelte-byllhq{contain:inline-size;border:0;border-top:1px solid var(--line);width:100%;color:var(--ink);font:600 12.5px var(--sans);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:8px;padding:9px 14px 9px 16px;display:flex}.progress.svelte-byllhq:hover{background:color-mix(in oklab, var(--ink) 5%, transparent)}.marks.svelte-byllhq{gap:4px;display:flex}.marks.svelte-byllhq i:where(.svelte-byllhq){background:var(--line);border-radius:50%;width:9px;height:9px}.marks.svelte-byllhq i[data-state=done]:where(.svelte-byllhq){background:var(--ok)}.marks.svelte-byllhq i[data-state=user]:where(.svelte-byllhq){background:var(--warn)}.marks.svelte-byllhq i[data-state=failed]:where(.svelte-byllhq){background:var(--bad)}.text.svelte-byllhq{flex:1;min-width:0}.progress[data-tone=user].svelte-byllhq .text:where(.svelte-byllhq){color:var(--warn)}.progress[data-tone=failed].svelte-byllhq .text:where(.svelte-byllhq){color:var(--bad)}.chev.svelte-byllhq{color:var(--muted);font-size:12px;font-weight:500}.why.svelte-byllhq{contain:inline-size;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:-4px 0 0;padding:0 14px 10px 16px;font-size:12.5px;line-height:1.4;display:-webkit-box;overflow:hidden}.steps.svelte-byllhq{contain:inline-size;-webkit-user-select:text;user-select:text;cursor:auto;gap:7px;margin:0;padding:4px 14px 12px 16px;list-style:none;display:grid}.step.svelte-byllhq{grid-template-columns:18px 1fr;column-gap:8px;font-size:12.5px;line-height:1.3;display:grid}.mark.svelte-byllhq{background:var(--line);width:18px;height:18px;color:var(--on-accent);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.step[data-state=done].svelte-byllhq .mark:where(.svelte-byllhq){background:var(--ok)}.step[data-state=user].svelte-byllhq .mark:where(.svelte-byllhq){background:var(--warn)}.step[data-state=failed].svelte-byllhq .mark:where(.svelte-byllhq){background:var(--bad)}.step[data-state=todo].svelte-byllhq .mark:where(.svelte-byllhq){border:2px solid var(--line);background:0 0}.what.svelte-byllhq{font-weight:600}.step[data-state=user].svelte-byllhq .what:where(.svelte-byllhq):after{content:" (you)";color:var(--warn);font-weight:500}.detail.svelte-byllhq{color:var(--muted);grid-column:2}.step.svelte-byllhq .cmd{grid-column:2;margin-top:4px}.acts.svelte-byllhq{contain:inline-size;cursor:default;flex-wrap:wrap;gap:8px;padding:0 14px 12px 16px;display:flex}.act.svelte-byllhq{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:5px;padding:2px 8px}.act.svelte-byllhq:hover{background:color-mix(in oklab, var(--ink) 8%, transparent)}.act.fix.svelte-byllhq{border-color:color-mix(in oklab, var(--bad) 45%, var(--line));background:color-mix(in oklab, var(--bad) 10%, transparent)}.act.svelte-byllhq:disabled{opacity:.6;cursor:default}.short.svelte-byllhq .act:where(.svelte-byllhq){font-size:16px}.calls.svelte-byllhq{contain:inline-size;border-top:1px dashed var(--line);cursor:default;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px 10px 16px;display:flex}.reading.far.svelte-byllhq .calls:where(.svelte-byllhq){display:none}.calls-label.svelte-byllhq{color:var(--muted);margin-right:2px;font-size:12px}.chip.svelte-byllhq{border:1px dashed color-mix(in oklab, var(--muted) 70%, transparent);max-width:180px;min-height:24px;color:var(--ink);font:500 12px var(--sans);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border-radius:999px;padding:3px 8px;overflow:hidden}.chip.svelte-byllhq:hover:not(:disabled){border-style:solid;border-color:var(--cable);color:var(--cable)}.chip.svelte-byllhq:disabled{color:var(--muted);cursor:default}.short.svelte-byllhq{min-width:260px;max-width:380px;padding-bottom:4px}.short.svelte-byllhq header:where(.svelte-byllhq){min-height:60px}.short.svelte-byllhq .port:where(.svelte-byllhq){display:none}.short.svelte-byllhq .progress:where(.svelte-byllhq){padding:12px 16px;font-size:21px}.short.svelte-byllhq .marks:where(.svelte-byllhq) i:where(.svelte-byllhq){transform:scale(1.4)}.short.svelte-byllhq .chev:where(.svelte-byllhq){display:none}.short.svelte-byllhq .text:where(.svelte-byllhq){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.short.svelte-byllhq .where:where(.svelte-byllhq),.short.svelte-byllhq .why:where(.svelte-byllhq){font-size:16px}.short.svelte-byllhq :is(.calls-label:where(.svelte-byllhq),.chip:where(.svelte-byllhq)){font-size:15px}.reading.far.svelte-byllhq .progress:where(.svelte-byllhq){font-size:24px}.reading.far.svelte-byllhq :is(.glance:where(.svelte-byllhq),.where:where(.svelte-byllhq)){display:none}.glance.svelte-byllhq .off:where(.svelte-byllhq){background:color-mix(in oklab, var(--warn) 14%, transparent);color:var(--warn);font:600 15px var(--sans)}.remove.svelte-byllhq:focus-visible{outline:2px solid var(--cable);outline-offset:1px}.glance.svelte-byllhq{flex-wrap:wrap;gap:6px;margin:0;padding:0 16px 10px;display:flex}.glance.svelte-byllhq span:where(.svelte-byllhq){background:color-mix(in oklab, var(--ink) 7%, transparent);font:15px var(--mono);color:var(--muted);border-radius:6px;padding:2px 8px}.port.svelte-byllhq{border:2px solid var(--ink);background:var(--surface);opacity:0;cursor:crosshair;border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;padding:0;transition:opacity .1s;position:absolute}.card.svelte-byllhq:hover .port:where(.svelte-byllhq),.card.wiring.svelte-byllhq .port:where(.svelte-byllhq),.port.on.svelte-byllhq{opacity:1}.port.svelte-byllhq:hover{border-color:var(--cable)}.port.top.svelte-byllhq{top:-1px;left:50%}.port.right.svelte-byllhq{top:50%;left:calc(100% + 1px)}.port.bottom.svelte-byllhq{top:calc(100% + 1px);left:50%}.port.left.svelte-byllhq{top:50%;left:-1px}.card.svelte-byllhq .anchor{visibility:hidden}@media (prefers-reduced-motion:reduce){.port.svelte-byllhq{transition:none}}path.svelte-1f6oz0q{fill:none;stroke-linecap:round;stroke-linejoin:round}.svelte-flow__edge{cursor:pointer}.cut.svelte-1f6oz0q{visibility:hidden}.cut.svelte-1f6oz0q circle:where(.svelte-1f6oz0q){fill:var(--surface);stroke:var(--bad);stroke-width:1.5px}.cut.svelte-1f6oz0q path:where(.svelte-1f6oz0q){stroke:var(--bad);stroke-width:1.8px}.svelte-flow__edge:hover .cut.svelte-1f6oz0q,.svelte-flow__edge.selected .cut.svelte-1f6oz0q{visibility:visible;cursor:pointer}.cut.svelte-1f6oz0q:hover circle:where(.svelte-1f6oz0q){fill:var(--bad)}.cut.svelte-1f6oz0q:hover path:where(.svelte-1f6oz0q){stroke:var(--surface)}.idle.svelte-1f6oz0q :is(.wire:where(.svelte-1f6oz0q),.head:where(.svelte-1f6oz0q)){stroke:color-mix(in oklab, var(--cable) 38%, var(--line))}.idle.svelte-1f6oz0q .head:where(.svelte-1f6oz0q){fill:color-mix(in oklab, var(--cable) 38%, var(--line))}.idle.svelte-1f6oz0q .wire:where(.svelte-1f6oz0q){stroke-dasharray:6 6;stroke-linecap:butt}.hit.svelte-1f6oz0q{stroke:#0000;stroke-width:16px}.under.svelte-1f6oz0q{stroke:var(--desk);stroke-width:8px;opacity:.75}.wire.svelte-1f6oz0q{stroke:var(--cable);stroke-width:2.5px}.head.svelte-1f6oz0q{fill:var(--cable);stroke:var(--cable);stroke-width:1.5px}.svelte-flow__edge.selected .wire.svelte-1f6oz0q,.svelte-flow__edge:focus-visible .wire.svelte-1f6oz0q,.lit.svelte-1f6oz0q .wire:where(.svelte-1f6oz0q){stroke:var(--cable-ink);stroke-width:4px}.snapped.svelte-1f6oz0q .wire:where(.svelte-1f6oz0q){stroke:var(--cable-ink)}.snapped.svelte-1f6oz0q .head:where(.svelte-1f6oz0q){fill:var(--cable-ink);stroke:var(--cable-ink)}.svelte-flow__edge.selected .head.svelte-1f6oz0q,.svelte-flow__edge:focus-visible .head.svelte-1f6oz0q,.lit.svelte-1f6oz0q .head:where(.svelte-1f6oz0q){fill:var(--cable-ink);stroke:var(--cable-ink);stroke-width:3px}.infra.svelte-1dgo2s3{border:1px solid color-mix(in oklab, var(--muted) 45%, var(--line));background:var(--surface);width:max-content;min-width:200px;max-width:420px;color:var(--ink);font:12.5px/1.4 var(--sans);-webkit-user-select:none;user-select:none;cursor:grab;border-radius:10px;row-gap:6px;padding:9px 8px 11px 12px;display:grid}.infra.active.svelte-1dgo2s3{border-color:var(--msg);box-shadow:0 0 0 1px var(--msg)}.infra.selected.svelte-1dgo2s3,.svelte-flow__node:focus-visible .infra.svelte-1dgo2s3{outline:2px solid var(--cable);outline-offset:-1px}.head.svelte-1dgo2s3{align-items:center;gap:8px;min-height:24px;display:flex}.dot.svelte-1dgo2s3{background:var(--line);border-radius:50%;flex:none;width:8px;height:8px}.dot[data-on=true].svelte-1dgo2s3{background:var(--ok)}.dot[data-on=false].svelte-1dgo2s3{background:var(--bad)}.name.svelte-1dgo2s3{white-space:nowrap;font-weight:600}.detail.svelte-1dgo2s3{font:12px var(--mono);color:var(--muted);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.detail.warn.svelte-1dgo2s3{color:var(--warn)}.acts.svelte-1dgo2s3{gap:2px;margin-left:auto;padding-left:4px;display:flex}.acts.svelte-1dgo2s3 button:where(.svelte-1dgo2s3){width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;padding:0;display:grid}.acts.svelte-1dgo2s3 button:where(.svelte-1dgo2s3):hover{background:color-mix(in oklab, var(--ink) 9%, transparent);color:var(--ink)}.acts.svelte-1dgo2s3 button:where(.svelte-1dgo2s3):focus-visible{outline:2px solid var(--cable);outline-offset:1px}.body.svelte-1dgo2s3{min-width:0;font:12px var(--mono);color:var(--muted);overflow-wrap:anywhere}.body.under-dot.svelte-1dgo2s3{padding-left:16px}.stays.svelte-1jmpek8{color:var(--muted);font:500 12px var(--sans)}.seg.svelte-1jmpek8{font-family:var(--sans);display:inline-flex}.seg.svelte-1jmpek8 label:where(.svelte-1jmpek8){padding:2px 10px;font-size:12px}.seg.local.svelte-1jmpek8 label:where(.svelte-1jmpek8):has(input:where(.svelte-1jmpek8):checked){background:var(--msg);color:var(--on-accent)}.seg.svelte-1jmpek8 label[aria-disabled=true]:where(.svelte-1jmpek8) input:where(.svelte-1jmpek8){opacity:0}.seg.svelte-1jmpek8 label:where(.svelte-1jmpek8):has(input:where(.svelte-1jmpek8):focus-visible){outline:2px solid var(--cable);outline-offset:1px}.warn.svelte-1jmpek8{color:var(--warn);display:inline-grid}.host.svelte-s23l4l{max-width:34ch;display:block}.area.svelte-ibqofz{position:absolute;inset:0}.empty.svelte-ibqofz{color:var(--muted);font:15px/1.55 var(--sans);text-align:center;text-wrap:balance;pointer-events:none;place-content:center;margin:0;padding:0 24px;display:grid;position:absolute;inset:0}.empty.svelte-ibqofz p:where(.svelte-ibqofz){margin:0}.empty.svelte-ibqofz ul:where(.svelte-ibqofz){border:1px solid var(--line);background:var(--surface);text-align:left;pointer-events:auto;border-radius:10px;flex-direction:column;width:min(380px,100%);margin:18px auto 0;padding:0;list-style:none;display:flex;overflow:hidden}.empty.svelte-ibqofz ul:where(.svelte-ibqofz):before{content:"Or open a board";color:var(--muted);padding:10px 14px 6px;font-size:12.5px}.empty.svelte-ibqofz li:where(.svelte-ibqofz)+li:where(.svelte-ibqofz){border-top:1px solid var(--line)}.empty.svelte-ibqofz button:where(.svelte-ibqofz){width:100%;min-height:44px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:2px;padding:8px 14px;display:flex}.empty.svelte-ibqofz button:where(.svelte-ibqofz):hover,.empty.svelte-ibqofz button:where(.svelte-ibqofz):focus-visible{background:color-mix(in oklab, var(--ink) 6%, transparent);outline:none}.empty.svelte-ibqofz .name:where(.svelte-ibqofz){font-size:14px;font-weight:600}.empty.svelte-ibqofz .meta:where(.svelte-ibqofz){color:var(--muted);font-size:12px}.area.svelte-ibqofz .svelte-flow__minimap{border:1px solid var(--line);background:var(--panel);box-shadow:var(--lift);border-radius:10px;margin:0 15px 66px 0;overflow:hidden}.links.svelte-ibqofz{pointer-events:none;width:1px;height:1px;position:absolute;overflow:visible}.links.svelte-ibqofz path:where(.svelte-ibqofz){fill:none;stroke:var(--muted);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.link.idle.svelte-ibqofz{stroke-dasharray:5 5;stroke-linecap:butt}.flow.svelte-ibqofz .via:where(.svelte-ibqofz){fill:var(--muted);font:600 11px var(--mono);dominant-baseline:middle;paint-order:stroke;stroke:var(--paper);stroke-width:5px;stroke-linejoin:round}.flow.svelte-ibqofz .under:where(.svelte-ibqofz){stroke:var(--desk);stroke-width:7px;opacity:.75}.flow.svelte-ibqofz .wire:where(.svelte-ibqofz){stroke-width:2px}.flow.svelte-ibqofz .head:where(.svelte-ibqofz){stroke-width:1.5px}.flow.msg.svelte-ibqofz :is(.wire:where(.svelte-ibqofz),.head:where(.svelte-ibqofz)){stroke:var(--msg)}.flow.msg.svelte-ibqofz .head:where(.svelte-ibqofz){fill:var(--msg)}.flow.msg.svelte-ibqofz .wire:where(.svelte-ibqofz){stroke-dasharray:7 5;stroke-linecap:butt}.flow.msg.local.svelte-ibqofz .wire:where(.svelte-ibqofz){stroke-dasharray:none;stroke-linecap:round}.flow.msg.svelte-ibqofz .plug:where(.svelte-ibqofz){fill:var(--msg);stroke:var(--surface);stroke-width:2px}.flow.ext.svelte-ibqofz :is(.wire:where(.svelte-ibqofz),.head:where(.svelte-ibqofz)){stroke:var(--socket-rim);stroke-width:1.5px}.flow.ext.svelte-ibqofz .head:where(.svelte-ibqofz){fill:var(--socket-rim)}.flow.ext.svelte-ibqofz .wire:where(.svelte-ibqofz){stroke-dasharray:2 5}.flow.ext.svelte-ibqofz .plug:where(.svelte-ibqofz){display:none}.link.snapped.svelte-ibqofz,.flow.ext.snapped.svelte-ibqofz :is(.wire:where(.svelte-ibqofz),.head:where(.svelte-ibqofz)){stroke:var(--ink)}.flow.ext.snapped.svelte-ibqofz .head:where(.svelte-ibqofz){fill:var(--ink)}.flow.msg.snapped.svelte-ibqofz :is(.wire:where(.svelte-ibqofz),.head:where(.svelte-ibqofz)){stroke:color-mix(in oklab, var(--msg) 60%, var(--ink))}.flow.msg.snapped.svelte-ibqofz .head:where(.svelte-ibqofz){fill:color-mix(in oklab, var(--msg) 60%, var(--ink))}.link.lit.svelte-ibqofz,.flow.ext.lit.svelte-ibqofz :is(.wire:where(.svelte-ibqofz),.head:where(.svelte-ibqofz)){stroke:var(--ink);stroke-width:2.5px}.flow.ext.lit.svelte-ibqofz .head:where(.svelte-ibqofz){fill:var(--ink)}.flow.msg.lit.svelte-ibqofz .wire:where(.svelte-ibqofz){stroke-width:3.5px}.flow.msg.lit.svelte-ibqofz .head:where(.svelte-ibqofz){stroke-width:2.5px}.ends.svelte-ibqofz{pointer-events:none;width:1px;height:1px;position:absolute;overflow:visible}.plug.svelte-ibqofz,.socket.svelte-ibqofz{pointer-events:auto;cursor:grab}.reordering.svelte-ibqofz,.reordering.svelte-ibqofz :where(.svelte-ibqofz){cursor:grabbing}.plug.svelte-ibqofz{fill:var(--cable);stroke:var(--surface);stroke-width:2px}.plug.idle.svelte-ibqofz{fill:color-mix(in oklab, var(--cable) 38%, var(--line))}.plug.cut.svelte-ibqofz{fill:var(--bad)}.plug.grabbed.svelte-ibqofz{r:7.5px}.socket.svelte-ibqofz{fill:var(--socket);stroke:var(--socket-rim);stroke-width:2px}.socket.press.svelte-ibqofz{cursor:pointer}.socket.svelte-ibqofz:focus-visible{stroke:var(--cable);stroke-width:3px;outline:none}.socket.grabbed.svelte-ibqofz{r:10px}.light.svelte-ibqofz{fill:var(--socket-rim)}.light[data-state=ok].svelte-ibqofz{fill:var(--ok)}.light[data-state=warn].svelte-ibqofz{fill:var(--warn)}.light[data-state=bad].svelte-ibqofz{fill:var(--bad);stroke:color-mix(in oklab, var(--bad) 35%, transparent);stroke-width:5px;paint-order:stroke}.light[data-state=busy].svelte-ibqofz{fill:var(--warn);animation:.9s ease-in-out infinite alternate svelte-ibqofz-testing}@keyframes svelte-ibqofz-testing{to{opacity:.25}}@media (prefers-reduced-motion:reduce){.light[data-state=busy].svelte-ibqofz{animation:none}}.draft.svelte-ibqofz{fill:none;stroke:var(--cable);stroke-width:2.5px;stroke-linecap:round;stroke-dasharray:6 6}.views.svelte-ibqofz{border:1px solid var(--line);background:var(--panel);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.views.svelte-ibqofz label:where(.svelte-ibqofz){color:var(--muted);font:600 13px var(--sans);border-radius:6px;padding:3px 12px;position:relative}.views.svelte-ibqofz input:where(.svelte-ibqofz){opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.views.svelte-ibqofz label:where(.svelte-ibqofz):has(input:where(.svelte-ibqofz):checked){background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line), 0 1px 2px #0000001f}.views.svelte-ibqofz label:where(.svelte-ibqofz):has(input:where(.svelte-ibqofz):focus-visible){outline:2px solid var(--cable);outline-offset:-2px}.ends.still.svelte-ibqofz :is(.plug:where(.svelte-ibqofz),.socket:where(.svelte-ibqofz)){pointer-events:none}.ends.still.svelte-ibqofz .socket.tested:where(.svelte-ibqofz){pointer-events:auto;cursor:pointer}.area.svelte-ibqofz:has(.ends.still:where(.svelte-ibqofz)) .svelte-flow__edge{pointer-events:none}.tools.svelte-ibqofz{border:1px solid var(--line);background:var(--panel);border-radius:10px;align-items:center;gap:2px;padding:3px;display:flex}.zoom.svelte-ibqofz{gap:2px;display:flex}.tools.svelte-ibqofz .percent:where(.svelte-ibqofz){font-variant-numeric:tabular-nums;width:62px;padding-inline:0}.tools.svelte-ibqofz button:where(.svelte-ibqofz){color:var(--ink);font:600 13px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:6px 12px}.tools.svelte-ibqofz button:where(.svelte-ibqofz):hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.switch.svelte-ibqofz{gap:2px;display:flex}.tools.svelte-ibqofz .tool:where(.svelte-ibqofz){width:30px;height:28px;color:var(--muted);place-items:center;padding:0;display:grid}.tools.svelte-ibqofz .tool[aria-checked=true]:where(.svelte-ibqofz){background:color-mix(in oklab, var(--cable) 22%, transparent);color:var(--ink)}.tools.svelte-ibqofz .tool:where(.svelte-ibqofz):disabled{opacity:.35;cursor:default}.tools.svelte-ibqofz .clear:where(.svelte-ibqofz):hover{color:var(--bad)}.line.svelte-ibqofz path:where(.svelte-ibqofz){fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.select.svelte-ibqofz path:where(.svelte-ibqofz){fill:currentColor}.hand.svelte-ibqofz path:where(.svelte-ibqofz){fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round}.area.svelte-ibqofz .svelte-flow__selection-wrapper{display:none}.area.svelte-ibqofz .svelte-flow__selection{border:1px solid var(--cable);background:color-mix(in oklab, var(--cable) 12%, transparent);border-radius:3px}.sep.svelte-ibqofz{background:var(--line);width:1px;height:18px;margin:0 4px}.open.svelte-1ixstkt{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.open.svelte-1ixstkt:hover,.open[aria-expanded=true].svelte-1ixstkt{border-color:var(--line);color:var(--ink)}.open.missing.svelte-1ixstkt:after{content:"";background:var(--warn);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.pop.svelte-1ixstkt{border:1px solid var(--line);background:var(--surface);width:min(400px,100vw - 24px);max-height:min(620px,100vh - 100px);color:var(--ink);box-shadow:var(--lift);font:13px/1.45 var(--sans);border-radius:12px;margin:0;padding:14px 16px;position:fixed;inset:auto;overflow-y:auto}section.svelte-1ixstkt+section:where(.svelte-1ixstkt){border-top:1px solid var(--line);margin-top:14px;padding-top:12px}h3.svelte-1ixstkt{margin:0 0 8px;font-size:13px}.cred.svelte-1ixstkt{gap:6px;padding:8px 0;display:grid}.cred.svelte-1ixstkt+.cred:where(.svelte-1ixstkt){border-top:1px dashed var(--line)}.head.svelte-1ixstkt{align-items:center;gap:8px;display:flex}.head.svelte-1ixstkt code:where(.svelte-1ixstkt){min-width:0;font:12px var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.state.svelte-1ixstkt{flex:none;font-size:12px;font-weight:600}.state[data-state=missing].svelte-1ixstkt{color:var(--warn)}.state[data-state=stored].svelte-1ixstkt{color:var(--muted)}.state[data-state=ok].svelte-1ixstkt{color:var(--ok)}.state[data-state=failed].svelte-1ixstkt{color:var(--bad)}.i.svelte-1ixstkt{width:18px;height:18px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.result.svelte-1ixstkt,.nohow.svelte-1ixstkt,.cmd.svelte-1ixstkt p:where(.svelte-1ixstkt),.none.svelte-1ixstkt,.lock.svelte-1ixstkt{color:var(--muted);margin:0;font-size:12px}.result[data-ok=false].svelte-1ixstkt{color:var(--bad)}.acts.svelte-1ixstkt,form.svelte-1ixstkt{flex-wrap:wrap;gap:6px;display:flex}.acts.svelte-1ixstkt button:where(.svelte-1ixstkt),form.svelte-1ixstkt button:where(.svelte-1ixstkt){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px}form.svelte-1ixstkt .go:where(.svelte-1ixstkt){background:var(--cable);color:var(--on-accent);border-color:#0000}input.svelte-1ixstkt{border:1px solid var(--line);background:var(--paper);min-width:0;height:28px;color:var(--ink);font:13px var(--sans);border-radius:6px;flex:1;padding:0 8px}.cmd.svelte-1ixstkt{gap:6px;display:grid}dl.svelte-1ixstkt{grid-template-columns:auto minmax(0,1fr);gap:4px 10px;margin:0;font-size:12px;display:grid}dt.svelte-1ixstkt{color:var(--muted);font-weight:600}dd.svelte-1ixstkt{margin:0}ol.svelte-1ixstkt{margin:0;padding-left:18px}.lock.svelte-1ixstkt{border-top:1px solid var(--line);align-items:center;gap:6px;margin-top:12px;padding-top:10px;display:flex}dialog.svelte-14dfga3{border:1px solid var(--line);background:var(--surface);width:min(600px,100vw - 32px);max-height:min(760px,100vh - 48px);color:var(--ink);font:14px var(--sans);border-radius:14px;flex-direction:column;gap:10px;padding:20px;display:none}dialog[open].svelte-14dfga3{display:flex}dialog.svelte-14dfga3::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}h2.svelte-14dfga3{margin:0;font-size:17px}.sub.svelte-14dfga3{color:var(--muted);margin:0}ol.svelte-14dfga3{gap:12px;margin:4px 0;padding:0;list-style:none;display:grid;overflow-y:auto}li.svelte-14dfga3{grid-template-columns:22px minmax(0,1fr);gap:10px;display:grid}.mark.svelte-14dfga3{background:color-mix(in oklab, var(--ink) 8%, transparent);width:22px;height:22px;font:600 12px var(--sans);border-radius:50%;place-items:center;display:grid}.done.svelte-14dfga3 .mark:where(.svelte-14dfga3){background:color-mix(in oklab, var(--ok) 22%, transparent)}.done.svelte-14dfga3 .what:where(.svelte-14dfga3){color:var(--muted)}.gap.svelte-14dfga3 .mark:where(.svelte-14dfga3){background:color-mix(in oklab, var(--warn) 25%, transparent)}.what.svelte-14dfga3{font-weight:600}small.svelte-14dfga3{color:var(--muted);font-size:12.5px;font-weight:400;display:block}small.for.svelte-14dfga3{margin-left:4px;display:inline}li.svelte-14dfga3 .cmd{margin:4px 0}button.svelte-14dfga3{border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:5px 12px}button.svelte-14dfga3:disabled{opacity:.6;cursor:default}.ok.svelte-14dfga3{border-color:var(--cable);background:var(--cable);color:var(--on-accent);margin-right:auto}.actions.svelte-14dfga3{justify-content:flex-end;gap:8px;display:flex}dialog.svelte-cao9th{border:1px solid var(--line);background:var(--surface);width:min(640px,100vw - 32px);max-height:min(760px,100vh - 48px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);border-radius:14px;flex-direction:column;gap:10px;padding:20px;display:none}dialog[open].svelte-cao9th{display:flex}dialog.svelte-cao9th::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}h2.svelte-cao9th{margin:0;font-size:17px}.sub.svelte-cao9th,section.svelte-cao9th p:where(.svelte-cao9th){color:var(--muted);margin:0}.list.svelte-cao9th{gap:14px;display:grid;overflow-y:auto}section.svelte-cao9th{gap:6px;display:grid}h3.svelte-cao9th{margin:0;font-size:13px}h3.svelte-cao9th span:where(.svelte-cao9th){color:var(--muted);font-weight:400}section.svelte-cao9th p:where(.svelte-cao9th){font-size:12px}label.svelte-cao9th{cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;padding:4px 0;display:grid}label.svelte-cao9th small:where(.svelte-cao9th){color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}code.svelte-cao9th{font:12px var(--mono)}.acts.svelte-cao9th{justify-content:flex-end;gap:8px;display:flex}.acts.svelte-cao9th button:where(.svelte-cao9th){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}.acts.svelte-cao9th .go:where(.svelte-cao9th){background:var(--cable);color:var(--on-accent);border-color:#0000}.acts.svelte-cao9th button:where(.svelte-cao9th):disabled{opacity:.55;cursor:not-allowed}.chip.svelte-6gc4ih{height:32px;color:var(--muted);font:500 12.5px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:0 10px;display:inline-flex}.chip.svelte-6gc4ih:hover,.chip[aria-expanded=true].svelte-6gc4ih{border-color:var(--line);color:var(--ink)}.dot.svelte-6gc4ih{border:1.5px solid var(--muted);border-radius:50%;width:8px;height:8px}[data-state=ok].svelte-6gc4ih .dot:where(.svelte-6gc4ih){border-color:var(--ok);background:var(--ok)}[data-state=bad].svelte-6gc4ih .dot:where(.svelte-6gc4ih){border-color:var(--bad);background:var(--bad)}[data-state=warn].svelte-6gc4ih .dot:where(.svelte-6gc4ih){border-color:var(--warn);background:var(--warn)}[data-state=busy].svelte-6gc4ih .dot:where(.svelte-6gc4ih){border-color:var(--line);border-top-color:var(--cable);animation:.7s linear infinite svelte-6gc4ih-turning}.chip[data-state=bad].svelte-6gc4ih{color:var(--ink);font-weight:600}@keyframes svelte-6gc4ih-turning{to{rotate:360deg}}@media (prefers-reduced-motion:reduce){[data-state=busy].svelte-6gc4ih .dot:where(.svelte-6gc4ih){animation:none}}.sr.svelte-6gc4ih{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.pop.svelte-6gc4ih{border:1px solid var(--line);background:var(--surface);width:min(480px,100vw - 24px);max-height:min(620px,100vh - 100px);color:var(--ink);box-shadow:var(--lift);font:13px/1.45 var(--sans);border-radius:12px;margin:0;padding:12px;position:fixed;inset:auto;overflow-y:auto}header.svelte-6gc4ih{align-items:center;gap:8px;margin-bottom:8px;display:flex}.sum.svelte-6gc4ih{flex:1;margin:0;font-size:14px;font-weight:600}.idle.svelte-6gc4ih{color:var(--muted);margin:6px 0 0}header.svelte-6gc4ih button:where(.svelte-6gc4ih),.fix.svelte-6gc4ih button:where(.svelte-6gc4ih){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:5px 10px}button.svelte-6gc4ih:disabled{opacity:.55;cursor:default}progress.svelte-6gc4ih{width:100%;height:4px;accent-color:var(--cable);margin-bottom:8px;display:block}.fail.svelte-6gc4ih,.row.svelte-6gc4ih{width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;display:grid}.fail.svelte-6gc4ih{border:1px solid color-mix(in oklab, var(--bad) 45%, transparent);background:color-mix(in oklab, var(--bad) 8%, transparent);border-radius:8px;gap:2px;margin-bottom:8px;padding:8px 10px}.fail.svelte-6gc4ih .route:where(.svelte-6gc4ih){font-weight:600}.fail.svelte-6gc4ih .verdict:where(.svelte-6gc4ih){color:var(--bad);font-weight:600}.why.svelte-6gc4ih{color:var(--muted);font-size:12px}details.svelte-6gc4ih{border-top:1px solid var(--line)}summary.svelte-6gc4ih{cursor:pointer;gap:8px;padding:8px 2px;font-weight:600;display:flex}.tally.svelte-6gc4ih{color:var(--muted);margin-left:auto;font-size:12px;font-weight:400}.tally[data-level=bad].svelte-6gc4ih{color:var(--bad)}.tally[data-level=warn].svelte-6gc4ih{color:var(--warn)}.row.svelte-6gc4ih{border-radius:6px;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:5px 2px 5px 14px}.row.svelte-6gc4ih:hover{background:color-mix(in oklab, var(--ink) 6%, transparent)}.row.svelte-6gc4ih .verdict:where(.svelte-6gc4ih){color:var(--muted);font-size:12px}.row[data-level=warn].svelte-6gc4ih .verdict:where(.svelte-6gc4ih){color:var(--warn)}.fix.svelte-6gc4ih{border-top:1px solid var(--line);gap:8px;margin-top:8px;padding-top:10px;display:grid}.fix.svelte-6gc4ih p:where(.svelte-6gc4ih){color:var(--muted);margin:0;font-size:12px}.fix.svelte-6gc4ih .go:where(.svelte-6gc4ih){background:var(--cable);color:var(--on-accent);border-color:#0000;justify-self:start}.open.svelte-zovg1u{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid}.open.svelte-zovg1u:hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.sheet.svelte-zovg1u{border:1px solid var(--line);background:var(--surface);width:440px;max-width:calc(100vw - 24px);max-height:calc(100vh - 80px);color:var(--ink);box-shadow:var(--lift);font:12.5px/1.4 var(--sans);border-radius:10px;margin:0;padding:14px 16px 16px;inset:60px 16px auto auto;overflow-y:auto}h2.svelte-zovg1u{margin:4px 0 8px;font-size:13px;font-weight:700}dl.svelte-zovg1u{grid-template-columns:172px 1fr;gap:7px 14px;margin:0 0 14px;display:grid}dt.svelte-zovg1u{white-space:nowrap;align-items:center;gap:4px;display:flex}dd.svelte-zovg1u{color:var(--muted);margin:0}kbd.svelte-zovg1u{border:1px solid var(--line);background:var(--paper);font:12px var(--mono);border-bottom-width:2px;border-radius:4px;padding:0 5px}.cable.svelte-zovg1u{border-top:2.5px solid var(--cable);width:44px}.cable.queue.svelte-zovg1u{border-top:2px dashed var(--msg)}.card.svelte-zovg1u{border:1px dashed color-mix(in oklab, var(--muted) 55%, var(--line));background:var(--paper);border-radius:4px;width:44px;height:16px}.card.outside.svelte-zovg1u{background:0 0}.protected.svelte-zovg1u{border-top:3px solid var(--prod);color:var(--prod);padding:0 6px;font-weight:600}.calls.svelte-zovg1u{color:var(--muted)}form.svelte-146fxte button:where(.svelte-146fxte),.dismiss.svelte-146fxte{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px}article.svelte-146fxte{border:1px solid var(--line);background:var(--surface);border-radius:10px;gap:6px;padding:10px 12px;display:grid}article.waits.svelte-146fxte{border-color:color-mix(in oklab, var(--warn) 55%, transparent)}article.past.svelte-146fxte{opacity:.6}.meta.svelte-146fxte{color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.kind.svelte-146fxte{font-weight:600}[data-kind=failure].svelte-146fxte .kind:where(.svelte-146fxte){color:var(--bad)}[data-kind=result].svelte-146fxte .kind:where(.svelte-146fxte){color:var(--ok)}[data-kind=question].svelte-146fxte .kind:where(.svelte-146fxte){color:var(--warn)}h3.svelte-146fxte,h4.svelte-146fxte,p.svelte-146fxte,ul.svelte-146fxte{margin:0}h3.svelte-146fxte{font-size:14px}h4.svelte-146fxte{margin-top:4px;font-size:12.5px}ul.svelte-146fxte{padding-left:18px}.choices.svelte-146fxte{gap:6px;display:grid}.choice.svelte-146fxte{border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:8px;gap:2px;padding:8px 10px;display:grid}.choice.svelte-146fxte:hover,.choice.svelte-146fxte:focus-visible{border-color:var(--cable);outline:none}.choice.svelte-146fxte span:where(.svelte-146fxte){color:var(--muted);font-size:12px}form.svelte-146fxte{gap:6px;display:flex}textarea.svelte-146fxte{border:1px solid var(--line);background:var(--paper);min-width:0;color:var(--ink);font:13px var(--sans);field-sizing:content;resize:none;border-radius:6px;flex:1;padding:5px 8px}.dismiss.svelte-146fxte{color:var(--muted);border-color:#0000;justify-self:start}.answered.svelte-146fxte{color:var(--muted);font-size:12px}.panel.svelte-1ekufpr{border-left:1px solid var(--line);background:var(--panel);width:min(380px,100%);color:var(--ink);font:13px/1.45 var(--sans);flex-direction:column;flex-shrink:0;display:flex}header.svelte-1ekufpr{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:10px 12px;display:flex}h2.svelte-1ekufpr{margin:0;font-size:14px}.sub.svelte-1ekufpr{color:var(--warn);flex:1;font-size:12px;font-weight:600}header.svelte-1ekufpr button:where(.svelte-1ekufpr){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px}.list.svelte-1ekufpr{flex:1;align-content:start;gap:10px;padding:12px;display:grid;overflow-y:auto}.none.svelte-1ekufpr{color:var(--muted);margin:0}.waiting.svelte-1ekufpr{border:1px solid color-mix(in oklab, var(--warn) 45%, transparent);background:color-mix(in oklab, var(--warn) 8%, var(--surface));border-radius:10px;gap:6px;padding:10px 12px;display:grid}.waiting.svelte-1ekufpr h3:where(.svelte-1ekufpr),.waiting.svelte-1ekufpr p:where(.svelte-1ekufpr),.waiting.svelte-1ekufpr ul:where(.svelte-1ekufpr){margin:0}.waiting.svelte-1ekufpr h3:where(.svelte-1ekufpr){font-size:13px}.waiting.svelte-1ekufpr p:where(.svelte-1ekufpr){color:var(--muted);font-size:12px}.waiting.svelte-1ekufpr ul:where(.svelte-1ekufpr){gap:4px;padding:0;list-style:none;display:grid}.waiting.svelte-1ekufpr li:where(.svelte-1ekufpr){align-items:center;gap:8px;display:flex}.what.svelte-1ekufpr{flex:1;min-width:0;font-weight:600;display:grid}.what.svelte-1ekufpr small:where(.svelte-1ekufpr){color:var(--muted);font-size:12px;font-weight:400}.waiting.svelte-1ekufpr button:where(.svelte-1ekufpr){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:4px 10px}summary.svelte-1ekufpr{color:var(--muted);cursor:pointer;font-size:12.5px}details.svelte-1ekufpr{gap:10px;display:grid}details.svelte-1ekufpr>article{margin-top:10px}.run.svelte-i7whuv{border-top:1px solid var(--line)}.head.svelte-i7whuv{width:100%;color:var(--ink);font:600 13px var(--sans);text-align:left;background:0 0;border:0;border-radius:7px;align-items:baseline;gap:8px;padding:9px 10px;display:flex}button.head.svelte-i7whuv{cursor:pointer}button.head.svelte-i7whuv:hover{background:color-mix(in oklab, var(--ink) 6%, transparent)}.what.svelte-i7whuv{flex:1;min-width:0}.what.svelte-i7whuv small:where(.svelte-i7whuv){color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;display:block;overflow:hidden}.note.svelte-i7whuv .what:where(.svelte-i7whuv){color:var(--muted);font-weight:500}time.svelte-i7whuv,.changes.svelte-i7whuv{color:var(--muted);flex:none;font-size:12px;font-weight:400}.state.svelte-i7whuv{flex:none;font-size:12px;font-weight:600}.state[data-state=done].svelte-i7whuv{color:var(--ok)}.state[data-state=failed].svelte-i7whuv{color:var(--bad)}.state[data-state=waiting].svelte-i7whuv,.state[data-state=applying].svelte-i7whuv{color:var(--warn)}.state[data-state=replaced].svelte-i7whuv{color:var(--muted)}.reason.svelte-i7whuv{color:var(--bad);margin:0 10px 8px;font-size:12.5px}.plan.svelte-i7whuv{gap:6px;margin:0 10px 10px;padding:0;list-style:none;display:grid}.plan.svelte-i7whuv li:where(.svelte-i7whuv){grid-template-columns:120px minmax(0,1fr);gap:8px;display:grid}.verb.svelte-i7whuv{color:var(--muted);font-size:12px;font-weight:600}.apps.svelte-i7whuv{gap:4px;display:grid}.apps.svelte-i7whuv small:where(.svelte-i7whuv){color:var(--muted);font-size:12px;display:block}.diffs.svelte-i7whuv{margin:0 10px 10px}h3.svelte-i7whuv,h4.svelte-i7whuv{margin:8px 0 4px;font-size:12.5px}h4.svelte-i7whuv{color:var(--muted)}figure.svelte-i7whuv{border:1px solid var(--line);border-radius:7px;margin:0 0 8px;overflow:hidden}figcaption.svelte-i7whuv{background:var(--panel);gap:2px;padding:6px 8px;font-size:12px;display:grid}figcaption.svelte-i7whuv code:where(.svelte-i7whuv){font:12px var(--mono)}figcaption.svelte-i7whuv span:where(.svelte-i7whuv){color:var(--muted)}pre.svelte-i7whuv{font:12px/1.5 var(--mono);margin:0;padding:6px 8px;overflow-x:auto}pre.svelte-i7whuv span:where(.svelte-i7whuv){display:block}pre.svelte-i7whuv .del:where(.svelte-i7whuv){color:var(--bad)}pre.svelte-i7whuv .add:where(.svelte-i7whuv){color:var(--ok)}pre.svelte-i7whuv b:where(.svelte-i7whuv){width:1.2em;font-weight:400;display:inline-block}.sr.svelte-i7whuv{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.logs.svelte-i7whuv{flex-wrap:wrap;align-items:center;gap:6px;margin:0 10px 10px;display:flex}.logs.svelte-i7whuv h3:where(.svelte-i7whuv){flex-basis:100%}.logs.svelte-i7whuv button:where(.svelte-i7whuv){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:5px;padding:4px 9px;display:inline-flex}.logs.svelte-i7whuv button:where(.svelte-i7whuv):hover{background:color-mix(in oklab, var(--ink) 6%, transparent)}.logs.svelte-i7whuv .pin:where(.svelte-i7whuv){color:var(--muted);margin-left:auto}.logs.svelte-i7whuv .pin[aria-pressed=true]:where(.svelte-i7whuv){border-color:var(--cable);color:var(--cable)}.back.svelte-i7whuv{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;margin:0 10px 10px;padding:5px 10px}.open.svelte-16dstxb{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.open.svelte-16dstxb:hover,.open[aria-expanded=true].svelte-16dstxb{border-color:var(--line);color:var(--ink)}.open.waiting.svelte-16dstxb:after{content:"";background:var(--warn);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.pop.svelte-16dstxb{border:1px solid var(--line);background:var(--surface);width:min(420px,100vw - 24px);max-height:min(600px,100vh - 100px);color:var(--ink);box-shadow:var(--lift);font:13px/1.45 var(--sans);border-radius:12px;margin:0;padding:6px;position:fixed;inset:auto;overflow-y:auto}.none.svelte-16dstxb{color:var(--muted);margin:0;padding:12px}details.svelte-16dstxb{border-top:1px solid var(--line)}summary.svelte-16dstxb{color:var(--muted);cursor:pointer;padding:9px 10px;font-size:12.5px}.open.svelte-1la1tzd{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.open.svelte-1la1tzd:hover{border-color:var(--line);color:var(--ink)}.open[data-state=on].svelte-1la1tzd{color:var(--cable)}.open[data-state=starting].svelte-1la1tzd{cursor:progress}.open[data-state=on].svelte-1la1tzd:after{content:"";background:var(--ok);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.logs.svelte-1feoaw6{border-top:1px solid var(--line);background:var(--surface);height:38%;min-height:120px;max-height:calc(100% - 60px);color:var(--ink);flex-direction:column;flex:none;display:flex;position:relative}.grip.svelte-1feoaw6{z-index:2;cursor:ns-resize;height:8px;position:absolute;top:-4px;left:0;right:0}.grip.svelte-1feoaw6:after{background:var(--line);content:"";border-radius:2px;width:36px;height:4px;margin-left:-18px;position:absolute;top:2px;left:50%}.grip.svelte-1feoaw6:hover:after,.grip.svelte-1feoaw6:focus-visible:after,.dragging.svelte-1feoaw6 .grip:where(.svelte-1feoaw6):after{background:var(--cable)}.dragging.svelte-1feoaw6{cursor:ns-resize;-webkit-user-select:none;user-select:none}header.svelte-1feoaw6{border-bottom:1px solid var(--line);font:13px var(--sans);align-items:stretch;gap:10px;padding:0 12px 0 4px;display:flex}.tabs.svelte-1feoaw6{min-width:0;display:flex;overflow-x:auto}.tab.svelte-1feoaw6{border-right:1px solid var(--line);border-bottom:2px solid #0000;align-items:center;padding-right:8px;display:flex}.tab.on.svelte-1feoaw6{border-bottom-color:var(--cable);background:color-mix(in oklab, var(--ink) 4%, transparent)}.tab.svelte-1feoaw6 button[role=tab]:where(.svelte-1feoaw6){color:var(--muted);font:500 13px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:7px 4px 7px 12px;display:flex}.tab.on.svelte-1feoaw6 button[role=tab]:where(.svelte-1feoaw6){color:var(--ink);font-weight:600}.live.svelte-1feoaw6{background:var(--line);border-radius:50%;width:8px;height:8px}.live[data-on=true].svelte-1feoaw6{background:var(--ok)}.live[data-on=false].svelte-1feoaw6{background:var(--bad)}.x.svelte-1feoaw6{width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;font-size:14px;display:grid}.x.svelte-1feoaw6:hover{background:color-mix(in oklab, var(--ink) 10%, transparent);color:var(--ink)}.meta.svelte-1feoaw6{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;align-self:center;font-size:12px;overflow:hidden}header.svelte-1feoaw6>button:where(.svelte-1feoaw6){color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-self:center;padding:4px 10px}header.svelte-1feoaw6>button:where(.svelte-1feoaw6):hover,header.svelte-1feoaw6>button[aria-pressed=true]:where(.svelte-1feoaw6){background:color-mix(in oklab, var(--ink) 10%, transparent)}.body.svelte-1feoaw6{font:12px/1.55 var(--mono);-webkit-user-select:text;user-select:text;scrollbar-width:thin;flex:1;padding:6px 0 10px;overflow:auto}.body.raw.svelte-1feoaw6{white-space:pre-wrap;overflow-wrap:anywhere;padding:10px 14px;line-height:1.5}.empty.svelte-1feoaw6{max-width:72ch;color:var(--muted);font:13px var(--sans);margin:0;padding:14px 16px}.row.svelte-1feoaw6{grid-template-columns:64px 50px minmax(0,1fr);column-gap:10px;padding:2px 14px 2px 2px;display:grid}.row.svelte-1feoaw6+.row:where(.svelte-1feoaw6){border-top:1px solid color-mix(in oklab, var(--line) 45%, transparent)}.row.svelte-1feoaw6:hover{background:color-mix(in oklab, var(--ink) 4%, transparent)}.t.svelte-1feoaw6{color:var(--muted);font-variant-numeric:tabular-nums;opacity:.8;padding-left:12px}.l.svelte-1feoaw6{color:var(--muted);letter-spacing:.02em;font-size:12px;font-weight:700}.m.svelte-1feoaw6{white-space:pre-wrap;overflow-wrap:anywhere}.x.svelte-1feoaw6:not(button){background:color-mix(in oklab, var(--ink) 5%, transparent);max-height:220px;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;grid-column:3;margin:2px 0 4px;padding:6px 10px;font-size:12px;line-height:1.5;overflow:auto}details.svelte-1feoaw6 .x:where(.svelte-1feoaw6){margin-top:4px;display:block}summary.svelte-1feoaw6{color:var(--warn);cursor:pointer}.row[data-level=debug].svelte-1feoaw6 .m:where(.svelte-1feoaw6){color:var(--muted)}.row[data-level=warn].svelte-1feoaw6{background:color-mix(in oklab, var(--warn) 6%, transparent)}.row[data-level=warn].svelte-1feoaw6 .l:where(.svelte-1feoaw6){color:var(--warn)}.row[data-level=error].svelte-1feoaw6{background:color-mix(in oklab, var(--bad) 9%, transparent)}.row[data-level=error].svelte-1feoaw6 .l:where(.svelte-1feoaw6){color:var(--bad)}.row[data-level=koppler].svelte-1feoaw6 .m:where(.svelte-1feoaw6){color:var(--muted);font-style:italic}.row[data-level=start].svelte-1feoaw6{border-top:1px solid var(--line);margin-top:6px}.row[data-level=start].svelte-1feoaw6 .m:where(.svelte-1feoaw6){font-weight:600}.all.svelte-1feoaw6 .row:where(.svelte-1feoaw6){grid-template-columns:calc(12ch + 12px) 50px var(--name) minmax(0, 1fr)}.all.svelte-1feoaw6 .x:where(.svelte-1feoaw6):not(button){grid-column:4}.by-change.svelte-1feoaw6 .row:where(.svelte-1feoaw6){grid-template-columns:calc(12ch + 12px) 50px minmax(0,1fr)}.by-change.svelte-1feoaw6 .x:where(.svelte-1feoaw6):not(button){grid-column:3}.switch.svelte-1feoaw6{border-top:1px solid color-mix(in oklab, var(--kind,var(--ink)) 45%, transparent);background:color-mix(in oklab, var(--kind,var(--ink)) 10%, transparent);margin-top:6px;padding:3px 14px}.switch.svelte-1feoaw6:first-child{border-top:0;margin-top:0}.switch.svelte-1feoaw6 .n:where(.svelte-1feoaw6){color:var(--kind,var(--ink))}.switch.svelte-1feoaw6+.row:where(.svelte-1feoaw6){border-top:0}.t.approx.svelte-1feoaw6{opacity:.55;font-style:italic}.n.svelte-1feoaw6{color:var(--kind,var(--ink));font:600 12px/1.55 var(--mono);text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;align-self:start;padding:0;overflow:hidden}.n.svelte-1feoaw6:hover{text-decoration:line-through}.apps.svelte-1feoaw6{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:6px;padding:6px 14px;display:flex}.tag.svelte-1feoaw6{border:1px solid color-mix(in oklab, var(--kind,var(--ink)) 40%, transparent);background:color-mix(in oklab, var(--kind,var(--ink)) 12%, transparent);color:var(--kind,var(--ink));font:600 12px var(--mono);border-radius:999px;align-items:center;display:inline-flex}.tag.svelte-1feoaw6 button:where(.svelte-1feoaw6){color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:2px 4px 2px 10px}.tag.svelte-1feoaw6 .rename:where(.svelte-1feoaw6){opacity:.55;place-items:center;padding:2px 8px 2px 2px;display:grid}.tag.svelte-1feoaw6 .rename:where(.svelte-1feoaw6):hover,.tag.svelte-1feoaw6 .rename:where(.svelte-1feoaw6):focus-visible{opacity:1}.tag.off.svelte-1feoaw6{color:var(--muted);background:0 0;border-style:dashed}.tag.off.svelte-1feoaw6 button:where(.svelte-1feoaw6):first-child{text-decoration:line-through}.opts.svelte-1feoaw6{gap:8px;margin-left:auto;display:flex}.opt-label.svelte-1feoaw6{color:var(--muted);font:500 12px var(--sans);align-self:center;margin-left:6px}.opts.svelte-1feoaw6 .seg:where(.svelte-1feoaw6) label:where(.svelte-1feoaw6){font:600 12px var(--sans);padding:2px 10px}input.tag.svelte-1feoaw6{outline:2px solid var(--cable);padding:2px 10px}.no-time.svelte-1feoaw6 .row:where(.svelte-1feoaw6){grid-template-columns:0 58px minmax(0,1fr)}.no-time.svelte-1feoaw6 .t:where(.svelte-1feoaw6){padding:0}.no-time.svelte-1feoaw6 .l:where(.svelte-1feoaw6){padding-left:12px}.open.svelte-1skvv7i{height:32px;color:var(--muted);font:500 12.5px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:0 10px;display:inline-flex}.open.svelte-1skvv7i:hover,.open[aria-pressed=true].svelte-1skvv7i{border-color:var(--line);color:var(--ink)}.tip.svelte-1k9t7z2{border:1px solid var(--line);background:var(--surface);max-width:320px;box-shadow:0 4px 14px color-mix(in oklab, var(--ink) 18%, transparent);color:var(--ink);font:500 12px/1.4 var(--sans);white-space:pre-line;pointer-events:none;border-radius:6px;margin:0;padding:6px 9px;position:fixed;inset:auto}.more.svelte-1i03v8q{cursor:pointer;border:1px solid #0000;border-radius:0 8px 8px 0;place-items:center;width:28px;margin-left:-1px;padding:0;display:inline-grid}.more.stop.svelte-1i03v8q{border-color:color-mix(in oklab, var(--prod) 45%, transparent);color:var(--prod);background:0 0}.more.stop.svelte-1i03v8q:hover,.more.stop[aria-expanded=true].svelte-1i03v8q{background:color-mix(in oklab, var(--prod) 12%, transparent)}.more.run.svelte-1i03v8q{border-left-color:color-mix(in oklab, var(--on-accent) 35%, transparent);background:var(--cable);color:var(--on-accent)}.more.run.svelte-1i03v8q:hover,.more.run[aria-expanded=true].svelte-1i03v8q{background:color-mix(in oklab, var(--cable) 85%, var(--ink))}.protected .more.run.svelte-1i03v8q{background:var(--prod)}.menu.svelte-1i03v8q{border:1px solid var(--line);background:var(--surface);width:300px;box-shadow:var(--lift);border-radius:10px;margin:0;padding:4px;position:fixed;inset:auto}.menu.svelte-1i03v8q button:where(.svelte-1i03v8q){width:100%;color:var(--ink);font:600 13px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;gap:2px;padding:8px 10px;display:grid}.menu.svelte-1i03v8q button:where(.svelte-1i03v8q) span:where(.svelte-1i03v8q){color:var(--muted);font-size:12px;font-weight:400}.menu.svelte-1i03v8q button:where(.svelte-1i03v8q):hover:not(:disabled),.menu.svelte-1i03v8q button:where(.svelte-1i03v8q):focus-visible{background:color-mix(in oklab, var(--ink) 7%, transparent);outline:none}.menu.svelte-1i03v8q button:where(.svelte-1i03v8q):disabled{opacity:.5;cursor:not-allowed}.menu.svelte-1i03v8q button.danger:where(.svelte-1i03v8q){color:var(--bad)}.menu.svelte-1i03v8q button:where(.svelte-1i03v8q)+button.danger:where(.svelte-1i03v8q){border-top:1px solid var(--line);border-radius:0 0 7px 7px;margin-top:4px}.open.svelte-r1euo8{width:32px;height:32px;color:var(--muted);cursor:pointer;anchor-name:--settings;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid}.open.svelte-r1euo8:hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.pop.svelte-r1euo8{border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:var(--lift);font:13px var(--sans);border-radius:10px;margin:0;padding:10px 12px;inset:auto auto 56px 12px}.row.svelte-r1euo8{align-items:center;gap:4px;display:flex}.log.svelte-r1euo8{border-bottom:1px solid var(--line);margin-bottom:8px;padding-bottom:8px}.toggle.svelte-r1euo8{flex:1;min-height:28px;margin-right:8px}.row.svelte-r1euo8 button.text:where(.svelte-r1euo8){border-color:var(--line);width:auto;color:var(--ink);font:600 12px var(--sans);padding:0 10px}.row.svelte-r1euo8 span:where(.svelte-r1euo8){color:var(--muted);margin-right:8px}.row.svelte-r1euo8 button:where(.svelte-r1euo8){width:30px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;padding:0;display:grid}.row.svelte-r1euo8 button:where(.svelte-r1euo8):hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.row.svelte-r1euo8 button[aria-checked=true]:where(.svelte-r1euo8){border-color:var(--line);background:var(--paper);color:var(--ink)}.address.svelte-r1euo8 .warn:where(.svelte-r1euo8){max-width:200px;color:var(--muted);flex:1;font-size:12px}.address.svelte-r1euo8 .go:where(.svelte-r1euo8){color:var(--bad)}nav.svelte-1qvf60f{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;flex-shrink:0;align-items:center;gap:4px;width:52px;padding:10px 0 14px;display:flex}nav.svelte-1qvf60f>button:where(.svelte-1qvf60f){width:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-items:center;gap:2px;padding:7px 0 6px;display:grid}nav.svelte-1qvf60f>button:where(.svelte-1qvf60f):hover{background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--ink)}span.svelte-1qvf60f{color:var(--ink);font:600 12px/1 var(--sans)}.protected.svelte-1qvf60f .env:where(.svelte-1qvf60f){color:var(--prod)}.foot.svelte-1qvf60f{justify-items:center;gap:8px;margin-top:auto;display:grid}.needs.svelte-1qvf60f{background:var(--warn);width:24px;height:24px;color:var(--on-accent);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;display:grid}dialog.svelte-1vz4hzd{border:1px solid var(--line);background:var(--surface);width:min(480px,100vw - 32px);max-height:min(720px,100vh - 48px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);border-radius:14px;padding:20px}dialog.svelte-1vz4hzd::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}h2.svelte-1vz4hzd{margin:0 28px 4px 0;font-size:17px}.sub.svelte-1vz4hzd{color:var(--muted);margin:0 0 14px}.x.svelte-1vz4hzd{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;font-size:18px;position:absolute;top:12px;right:12px}form.svelte-1vz4hzd{gap:12px;display:grid}label.svelte-1vz4hzd{gap:4px;font-weight:600;display:grid}.opt.svelte-1vz4hzd{color:var(--muted);font-weight:400}input.svelte-1vz4hzd:not([type=checkbox]){border:1px solid var(--line);background:var(--paper);height:32px;color:var(--ink);font:13px var(--sans);border-radius:6px;padding:0 8px}fieldset.svelte-1vz4hzd{border:0;margin:0;padding:0}legend.svelte-1vz4hzd{margin-bottom:4px;padding:0;font-weight:600}.callers.svelte-1vz4hzd{border:1px solid var(--line);border-radius:10px;align-content:start;max-height:200px;padding:4px 0;display:grid;overflow-y:auto}.head.svelte-1vz4hzd,.row.svelte-1vz4hzd{grid-template-columns:minmax(0,1fr) 72px 104px;align-items:center;padding:5px 12px;display:grid}.head.svelte-1vz4hzd{color:var(--muted);font-size:12px}.head.svelte-1vz4hzd span:where(.svelte-1vz4hzd),.row.svelte-1vz4hzd input:where(.svelte-1vz4hzd){justify-self:center}.row.svelte-1vz4hzd:hover{background:color-mix(in oklab, var(--ink) 5%, transparent)}.who.svelte-1vz4hzd{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row.svelte-1vz4hzd input:where(.svelte-1vz4hzd){width:16px;height:16px;accent-color:var(--cable);cursor:pointer;margin:0}.error.svelte-1vz4hzd{min-height:1.45em;color:var(--bad);margin:0}.acts.svelte-1vz4hzd{justify-content:flex-end;gap:8px;display:flex}.acts.svelte-1vz4hzd button:where(.svelte-1vz4hzd){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}.acts.svelte-1vz4hzd .go:where(.svelte-1vz4hzd){background:var(--cable);color:var(--on-accent);border-color:#0000}.acts.svelte-1vz4hzd button:where(.svelte-1vz4hzd):disabled{opacity:.5;cursor:not-allowed}aside.svelte-c90ff7{scrollbar-width:thin;border-left:1px solid var(--line);background:var(--panel);flex-shrink:0;overflow:hidden auto}header.svelte-c90ff7{align-items:center;gap:8px;padding:12px 10px 4px 16px;display:flex}h2.svelte-c90ff7{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:15px;font-weight:700;overflow:hidden}.kind.svelte-c90ff7{font:600 12px/1.5 var(--sans);white-space:nowrap;color:var(--kind);background:color-mix(in oklab, var(--kind) 14%, transparent);border-radius:999px;flex:none;padding:1px 7px}.x.svelte-c90ff7{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;place-items:center;margin-left:auto;display:grid}.x.svelte-c90ff7:hover{background:color-mix(in oklab, var(--ink) 7%, transparent);color:var(--ink)}.x.svelte-c90ff7:focus-visible{outline:2px solid var(--cable);outline-offset:1px}.checks.svelte-s22te4{flex-wrap:wrap;gap:4px 14px;min-width:0;padding:4px 0;display:flex}label.svelte-s22te4{cursor:pointer;align-items:center;gap:6px;min-width:0;display:flex}span.svelte-s22te4{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}input.svelte-s22te4{width:15px;height:15px;accent-color:var(--cable);flex:none;margin:0}.none.svelte-s22te4{white-space:normal;color:var(--muted);padding:4px 0;overflow:visible}.chips.svelte-1iop5lw{flex-wrap:wrap;gap:4px;min-width:0;margin:0;padding:0;list-style:none;display:flex}li.svelte-1iop5lw{box-sizing:border-box;border:1px solid var(--line);background:var(--paper);border-radius:999px;align-items:center;gap:2px;min-width:0;height:26px;padding:0 3px 0 9px;display:flex}li.svelte-1iop5lw:has(>button:where(.svelte-1iop5lw):first-child){padding-left:3px}.word.svelte-1iop5lw{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.tag.svelte-1iop5lw{color:var(--muted);white-space:nowrap;margin-left:4px;font-size:11px}button.svelte-1iop5lw{width:18px;height:18px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0;display:grid}button.svelte-1iop5lw:hover{background:color-mix(in oklab, var(--ink) 10%, transparent);color:var(--ink)}.new.svelte-1iop5lw{background:0 0;border-style:dashed;padding:0}.new.svelte-1iop5lw input:where(.svelte-1iop5lw){min-width:64px;height:24px;color:var(--ink);font:13px var(--sans);background:0 0;border:0;border-radius:999px;padding:0 9px}.new.svelte-1iop5lw input:where(.svelte-1iop5lw)::placeholder{color:color-mix(in oklab, var(--muted) 80%, transparent)}svg.svelte-7vspaq{flex:none;display:block}.wordmark.svelte-7vspaq{translate:0 2px}.pick.svelte-npi4py{min-width:0;position:relative}.now.svelte-npi4py,[role=option].svelte-npi4py{box-sizing:border-box;width:100%;min-width:0;color:var(--ink);font:13px var(--sans);text-align:left;cursor:pointer;align-items:center;gap:8px;display:flex}.now.svelte-npi4py{border:1px solid var(--line);background:var(--paper);border-radius:6px;height:28px;padding:4px 8px}.now.svelte-npi4py:disabled{opacity:.7;cursor:not-allowed}.label.svelte-npi4py{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.unset.svelte-npi4py{color:var(--muted)}.chev.svelte-npi4py{color:var(--muted);flex:none;display:grid}.list.svelte-npi4py{z-index:5;box-sizing:border-box;border:1px solid var(--line);background:var(--surface);width:max(100%,300px);box-shadow:var(--lift-high);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;padding:4px;display:grid;position:absolute;top:calc(100% + 4px);left:0}[role=option].svelte-npi4py{background:0 0;border:0;border-radius:5px;padding:6px 8px}[role=option].svelte-npi4py:hover,[role=option].svelte-npi4py:focus-visible{background:color-mix(in oklab, var(--ink) 8%, transparent)}[role=option][aria-selected=true].svelte-npi4py{background:color-mix(in oklab, var(--cable) 16%, transparent);font-weight:600}input.svelte-1uxsjsg,select.svelte-1uxsjsg{box-sizing:border-box;border:1px solid var(--line);background:var(--paper);width:100%;min-width:0;height:28px;color:var(--ink);font:13px var(--sans);border-radius:6px;padding:4px 8px}select.svelte-1uxsjsg{appearance:none;background-image:var(--chevron);background-position:right 9px center;background-repeat:no-repeat;padding-right:26px}input.svelte-1uxsjsg::placeholder{color:color-mix(in oklab, var(--muted) 70%, transparent)}.svelte-1uxsjsg:disabled{opacity:.7;cursor:not-allowed}.top.svelte-gtai80,fieldset.svelte-gtai80{border:0;gap:6px;min-width:0;margin:0;padding:0;display:grid}.sr.svelte-gtai80{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.row.svelte-gtai80,summary.svelte-gtai80{align-items:center;gap:8px;min-height:26px;display:flex}.nest.svelte-gtai80{border:1px solid var(--line);border-radius:8px;min-width:0;padding:2px 10px}.nest[open].svelte-gtai80{padding-bottom:10px}.nest[open].svelte-gtai80>summary:where(.svelte-gtai80){margin-bottom:4px}summary.svelte-gtai80{cursor:pointer;list-style-position:outside}.chev.svelte-gtai80{color:var(--muted);flex:none;margin-left:-2px;transition:rotate .12s;display:grid}.nest[open].svelte-gtai80>summary:where(.svelte-gtai80) .chev:where(.svelte-gtai80){rotate:90deg}summary.svelte-gtai80::-webkit-details-marker{display:none}.unset.svelte-gtai80{color:var(--muted);font-size:12px}.name.svelte-gtai80{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}summary.svelte-gtai80 .name:where(.svelte-gtai80),.row.svelte-gtai80 .name:where(.svelte-gtai80){flex:1}.field.svelte-gtai80{grid-template-columns:132px minmax(0,1fr) auto;align-items:center;gap:2px 10px;min-width:0;display:grid}.field.svelte-gtai80 .name:where(.svelte-gtai80){font-weight:500}.about.svelte-gtai80{color:var(--muted);font-size:12px}.acts.svelte-gtai80{justify-content:flex-end;gap:2px;min-width:46px;display:flex}.icon.svelte-gtai80{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;padding:0;display:grid}.icon.svelte-gtai80:hover{background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--ink)}.words.svelte-gtai80{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px}.lock.on.svelte-gtai80{color:var(--warn)}input.svelte-gtai80:not([type=checkbox]),select.svelte-gtai80,textarea.svelte-gtai80{box-sizing:border-box;border:1px solid var(--line);background:var(--paper);width:100%;min-width:0;color:var(--ink);font:13px var(--sans);border-radius:6px;padding:4px 8px}input.svelte-gtai80:not([type=checkbox]),select.svelte-gtai80{height:28px}select.svelte-gtai80{appearance:none;background-image:var(--chevron);background-position:right 9px center;background-repeat:no-repeat;padding-right:26px}input.svelte-gtai80::placeholder,textarea.svelte-gtai80::placeholder{color:color-mix(in oklab, var(--muted) 70%, transparent)}textarea.svelte-gtai80{resize:vertical}.mono.svelte-gtai80{font:12px/1.45 var(--mono)}input[type=checkbox].svelte-gtai80{width:16px;height:16px;accent-color:var(--cable);justify-self:start;margin:0}.svelte-gtai80:disabled{cursor:not-allowed}.locked.svelte-gtai80 input:where(.svelte-gtai80),.locked.svelte-gtai80 textarea:where(.svelte-gtai80),.locked.svelte-gtai80 select:where(.svelte-gtai80){opacity:.7}.add.svelte-gtai80{gap:6px;margin-top:2px;display:flex}.add.svelte-gtai80 select:where(.svelte-gtai80),.add.svelte-gtai80 input:where(.svelte-gtai80){flex:1}.add.svelte-gtai80 button:where(.svelte-gtai80){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:3px 10px}.add.svelte-gtai80 .go:where(.svelte-gtai80){background:var(--cable);color:var(--on-accent);border-color:#0000}.draft.svelte-gtai80{gap:6px;display:grid}.error.svelte-gtai80{color:var(--bad);grid-column:2/-1;font-size:12px}.glyph.svelte-gtai80{color:var(--muted);flex:none;display:grid}summary.svelte-gtai80 .name:where(.svelte-gtai80){align-items:baseline;gap:8px;display:flex}.what.svelte-gtai80{flex:none;font-weight:600}.say.svelte-gtai80{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.acts.fresh.svelte-gtai80{display:none}.none.svelte-gtai80{color:var(--muted);padding:2px 0}.note.svelte-gtai80{color:var(--muted);grid-column:2/-1;font-size:12px}.note.warn.svelte-gtai80{color:var(--warn)}.bare.svelte-gtai80{flex:1;min-width:0;display:block}.line.svelte-gtai80{align-items:start}.line.svelte-gtai80>.name:where(.svelte-gtai80){line-height:28px}.line.wide.svelte-gtai80{grid-template-columns:minmax(0,1fr) auto}.line.wide.svelte-gtai80 .error:where(.svelte-gtai80){grid-column:1/-1}.parts.svelte-gtai80{flex-wrap:wrap;gap:6px 8px;display:flex}.part.svelte-gtai80{flex:150px;align-items:center;gap:8px;min-width:0;display:flex}.part[data-key=file].svelte-gtai80{flex-basis:100%}.part[data-key=status].svelte-gtai80,.part[data-key=timeout].svelte-gtai80{flex:0 132px}.word.svelte-gtai80{color:var(--muted);flex:none}.types.svelte-gtai80{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.types.svelte-gtai80>button:where(.svelte-gtai80){border:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px var(--sans);text-align:left;cursor:pointer;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:2px 8px;padding:8px 10px;display:grid}.types.svelte-gtai80>button:where(.svelte-gtai80):hover:not(:disabled){border-color:var(--cable)}.types.svelte-gtai80>button:where(.svelte-gtai80):disabled{opacity:.6}.types.svelte-gtai80 .about:where(.svelte-gtai80){grid-column:2}.types.svelte-gtai80 .add:where(.svelte-gtai80){grid-column:1/-1}.none.svelte-orrnu3{color:var(--muted);margin:0}.env.svelte-orrnu3{gap:6px;display:grid}.env.svelte-orrnu3+.env:where(.svelte-orrnu3){border-top:1px solid var(--line);margin-top:14px;padding-top:14px}h3.svelte-orrnu3{margin:0 0 2px;font-size:13px}.same.svelte-orrnu3{grid-template-columns:132px minmax(0,1fr) auto;align-items:center;column-gap:10px;min-height:28px;display:grid}.name.svelte-orrnu3{font-weight:500}.from.svelte-orrnu3{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.same.svelte-orrnu3 button:where(.svelte-orrnu3){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px}select.svelte-orrnu3{border:1px solid var(--line);background:var(--paper);height:28px;color:var(--ink);font:13px var(--sans);border-radius:6px;justify-self:start;padding:0 8px}dialog.svelte-6g11qq{border:0;border-left:1px solid var(--line);background:var(--surface);width:min(560px,100vw);max-width:none;height:100vh;max-height:none;color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);margin:0;padding:0;position:fixed;inset:0 0 0 auto}dialog[open].svelte-6g11qq{flex-direction:column;display:flex}dialog.svelte-6g11qq::backdrop{background:color-mix(in oklab, var(--desk) 40%, transparent)}header.svelte-6g11qq{align-items:center;gap:10px;padding:14px 14px 10px 20px;display:flex}h2.svelte-6g11qq{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:17px;overflow:hidden}.x.svelte-6g11qq{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;font-size:18px}.ask.svelte-6g11qq{background:var(--cable);color:var(--on-accent);font:600 12px var(--sans);white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:7px;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.ask.svelte-6g11qq:hover:not(:disabled){background:color-mix(in oklab, var(--cable) 85%, var(--ink))}.ask.svelte-6g11qq:focus-visible{outline:2px solid var(--cable);outline-offset:2px}.ask.svelte-6g11qq:disabled{border-color:var(--line);color:var(--muted);cursor:default;background:0 0}.head.svelte-6g11qq{gap:6px;padding:0 20px 12px;display:grid}.tabs.svelte-6g11qq{border-bottom:1px solid var(--line);gap:2px;padding:0 16px;display:flex;overflow-x:auto}[role=tab].svelte-6g11qq{color:var(--muted);font:600 13px var(--sans);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:8px 10px;display:inline-flex}[role=tab].svelte-6g11qq:hover{color:var(--ink)}[role=tab][aria-selected=true].svelte-6g11qq{border-bottom-color:var(--cable);color:var(--ink)}[role=tab].wrong.svelte-6g11qq{color:var(--bad)}.badge.svelte-6g11qq{background:var(--bad);min-width:16px;color:var(--on-accent);text-align:center;border-radius:999px;padding:0 5px;font-size:11px;line-height:16px}.body.svelte-6g11qq{flex:1;align-content:start;gap:6px;padding:14px 20px 20px;display:grid;overflow-y:auto}.others.svelte-6g11qq{color:var(--muted);gap:6px;margin-top:6px;display:grid}.others[open].svelte-6g11qq{color:var(--ink)}.others.svelte-6g11qq summary:where(.svelte-6g11qq){color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-weight:600;list-style:none;display:flex}.others.svelte-6g11qq summary:where(.svelte-6g11qq)::-webkit-details-marker{display:none}.chev.svelte-6g11qq{transition:rotate .12s;display:grid}.others[open].svelte-6g11qq .chev:where(.svelte-6g11qq){rotate:90deg}.apps.svelte-6g11qq{gap:2px;margin:0;padding:0;list-style:none;display:grid}.apps.svelte-6g11qq li:where(.svelte-6g11qq){grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:4px 0;display:grid}.apps.svelte-6g11qq .name:where(.svelte-6g11qq){text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.apps.svelte-6g11qq .kind:where(.svelte-6g11qq){color:var(--muted);font-size:12px}footer.svelte-6g11qq{border-top:1px solid var(--line);background:var(--surface);align-items:center;gap:8px;padding:12px 20px;display:flex}.say.svelte-6g11qq{min-width:0;color:var(--muted);flex:1}.dirty.svelte-6g11qq .say:where(.svelte-6g11qq){color:var(--ink);font-weight:600}footer.svelte-6g11qq button:where(.svelte-6g11qq),.apps.svelte-6g11qq button:where(.svelte-6g11qq){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 14px}.apps.svelte-6g11qq button:where(.svelte-6g11qq){padding:3px 10px;font-size:12px}footer.svelte-6g11qq .go:where(.svelte-6g11qq){background:var(--cable);color:var(--on-accent);border-color:#0000}footer.svelte-6g11qq .bad:where(.svelte-6g11qq){background:var(--bad);color:var(--on-accent);border-color:#0000}footer.svelte-6g11qq button:where(.svelte-6g11qq):disabled,.apps.svelte-6g11qq button:where(.svelte-6g11qq):disabled{opacity:.5;cursor:default}dialog.svelte-1psun92{border:1px solid var(--line);background:var(--surface);width:min(620px,100vw - 32px);max-height:min(720px,100vh - 48px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);border-radius:14px;flex-direction:column;gap:10px;padding:20px;display:none}dialog[open].svelte-1psun92{display:flex}dialog.svelte-1psun92::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}h2.svelte-1psun92{margin:0 28px 0 0;font-size:17px}.sub.svelte-1psun92{color:var(--muted);margin:0}.x.svelte-1psun92{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;font-size:18px;position:absolute;top:12px;right:12px}input[type=search].svelte-1psun92{border:1px solid var(--line);background:var(--paper);height:30px;color:var(--ink);font:13px var(--sans);border-radius:6px;padding:0 8px}.list.svelte-1psun92{border:1px solid var(--line);border-radius:10px;flex:1;min-height:120px;overflow-y:auto}details.svelte-1psun92+details:where(.svelte-1psun92){border-top:1px solid var(--line)}summary.svelte-1psun92{z-index:1;background:var(--panel);cursor:pointer;align-items:center;gap:8px;padding:8px 12px;display:flex;position:sticky;top:0}.folder.svelte-1psun92{font:600 12px var(--mono)}.n.svelte-1psun92{color:var(--muted);flex:1;font-size:12px}.link.svelte-1psun92{color:var(--cable-ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border:0;padding:0}.pick.svelte-1psun92{grid-template-columns:18px minmax(0,1fr) 96px;align-items:center;column-gap:10px;padding:5px 12px;display:grid}.pick.svelte-1psun92:hover{background:color-mix(in oklab, var(--ink) 5%, transparent)}.pick.on.svelte-1psun92{background:color-mix(in oklab, var(--cable) 8%, transparent)}.pick.svelte-1psun92 input[type=checkbox]:where(.svelte-1psun92){width:16px;height:16px;accent-color:var(--cable);margin:0}.who.svelte-1psun92{min-width:0;display:grid}.name.svelte-1psun92{width:100%;color:var(--muted);font:500 13.5px var(--sans);text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:5px;margin-left:-6px;padding:2px 6px}.pick.on.svelte-1psun92 .name:where(.svelte-1psun92){color:var(--ink)}.name.svelte-1psun92:hover,.name.svelte-1psun92:focus{border-color:var(--line);background:var(--paper);color:var(--ink);outline:0}.name.svelte-1psun92:focus{border-color:var(--cable)}.slug.svelte-1psun92{color:var(--muted);font:12px var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kind.svelte-1psun92{background:color-mix(in oklab, var(--kind) 14%, transparent);color:var(--kind);font:600 12px/1.5 var(--sans);white-space:nowrap;border-radius:999px;justify-self:start;padding:1px 7px}select.svelte-1psun92{border:1px solid var(--warn);background:var(--paper);width:100%;height:24px;color:var(--ink);font:12px var(--sans);border-radius:5px;padding:0 4px}.none.svelte-1psun92{color:var(--muted);margin:16px 12px}.error.svelte-1psun92{min-height:1.45em;color:var(--bad);margin:0}.acts.svelte-1psun92{align-items:center;gap:8px;display:flex}.count.svelte-1psun92{color:var(--muted);flex:1}.acts.svelte-1psun92 button:where(.svelte-1psun92){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}.acts.svelte-1psun92 .go:where(.svelte-1psun92){background:var(--cable);color:var(--on-accent);border-color:#0000}.acts.svelte-1psun92 button:where(.svelte-1psun92):disabled{opacity:.5;cursor:not-allowed}.alone.svelte-yroiop{border:1px solid color-mix(in oklab, var(--warn) 45%, transparent);background:color-mix(in oklab, var(--warn) 10%, transparent);color:var(--warn);font:600 12px/1.4 var(--sans);border-radius:8px;gap:8px;margin:6px 0 2px;padding:10px 12px;display:grid}.picks.svelte-yroiop{flex-wrap:wrap;gap:6px;display:flex}.picks.svelte-yroiop button:where(.svelte-yroiop){border:1px solid var(--line);background:var(--paper);color:var(--ink);font:600 12px var(--sans);cursor:pointer;border-radius:6px;padding:3px 10px}.picks.svelte-yroiop .cable:where(.svelte-yroiop){border-color:var(--cable);color:var(--cable)}.picks.svelte-yroiop button:where(.svelte-yroiop):hover{background:color-mix(in oklab, var(--ink) 7%, var(--paper))}.controls.svelte-yroiop{flex-wrap:wrap;gap:6px 14px;margin-top:4px;display:flex}label.svelte-yroiop{color:var(--muted);font:12px var(--sans);align-items:center;gap:6px;display:flex}.branch.svelte-yroiop{width:260px}select.svelte-yroiop{appearance:none;background-image:var(--chevron);border:1px solid var(--line);background-position:right 8px center;background-repeat:no-repeat;background-color:var(--paper);max-width:180px;color:var(--ink);font:12px var(--sans);border-radius:6px;padding:2px 24px 2px 8px}.check.svelte-yroiop input:where(.svelte-yroiop){accent-color:var(--cable);margin:0}dialog.svelte-pzq2er{border:1px solid var(--line);background:var(--surface);width:520px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.4 var(--sans);border-radius:12px;padding:20px}dialog[open].svelte-pzq2er{flex-direction:column;display:flex}dialog.svelte-pzq2er::backdrop{background:color-mix(in oklab, var(--desk) 70%, transparent)}h2.svelte-pzq2er{margin:0;font-size:17px;font-weight:700}.sub.svelte-pzq2er{color:var(--muted);margin:4px 0 10px}.body.svelte-pzq2er{flex:auto;min-height:0;margin:0 -20px;padding:0 20px;overflow-y:auto}.notice.svelte-pzq2er{background:color-mix(in oklab, var(--warn) 14%, transparent);border-radius:7px;margin:0 0 12px;padding:8px 10px;font-size:12.5px}.notice.prod.svelte-pzq2er{background:color-mix(in oklab, var(--prod) 16%, transparent)}.lines.svelte-pzq2er{gap:10px;margin:0 0 12px;padding:0;list-style:none;display:grid}.lines.svelte-pzq2er li:where(.svelte-pzq2er){grid-template-columns:124px minmax(0,1fr);column-gap:12px;display:grid}.verb.svelte-pzq2er{font-weight:600}.verb[data-verb=starts].svelte-pzq2er{color:var(--ok)}.verb[data-verb=restarts].svelte-pzq2er{color:var(--warn)}.verb[data-verb=stops].svelte-pzq2er{color:var(--bad)}.verb[data-verb=keeps].svelte-pzq2er,.verb[data-verb=calls].svelte-pzq2er{color:var(--muted)}.apps.svelte-pzq2er{grid-template-columns:minmax(0,1fr);gap:6px;display:grid}.mini.svelte-pzq2er{border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;margin-left:8px;padding:1px 8px}small.svelte-pzq2er{color:var(--muted);font-size:12px;display:block}small.svelte-pzq2er:not(.host):first-letter{text-transform:uppercase}small.host.svelte-pzq2er{font:12px var(--mono);overflow-wrap:anywhere}small.flag.svelte-pzq2er,.off.svelte-pzq2er,.off.svelte-pzq2er small:where(.svelte-pzq2er){color:var(--warn);font-weight:600}.actions.svelte-pzq2er{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.back.svelte-pzq2er{margin-right:auto}button.svelte-pzq2er{border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}button.svelte-pzq2er:hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.ok.svelte-pzq2er{border-color:var(--cable);background:var(--cable);color:var(--on-accent)}.ok.svelte-pzq2er:hover{background:color-mix(in oklab, var(--cable) 85%, var(--ink))}.ok.prod.svelte-pzq2er{border-color:var(--prod);background:var(--prod)}.ok.svelte-pzq2er:disabled{border-color:var(--line);background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--muted);cursor:not-allowed}.svelte-pzq2er:focus-visible{outline:2px solid var(--cable);outline-offset:2px}dialog.svelte-8d6d0q{border:1px solid var(--line);background:var(--surface);width:min(520px,100vw - 32px);color:var(--ink);box-shadow:var(--lift-high);font:13px/1.45 var(--sans);border-radius:14px;padding:22px}dialog.svelte-8d6d0q::backdrop{background:color-mix(in oklab, var(--desk) 70%, transparent)}h2.svelte-8d6d0q{margin:0 28px 6px 0;font-size:18px}.sub.svelte-8d6d0q{color:var(--muted);margin:0 0 14px}.x.svelte-8d6d0q{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;font-size:18px;position:absolute;top:12px;right:12px}.back.svelte-8d6d0q{color:var(--cable-ink);font:600 12.5px var(--sans);cursor:pointer;background:0 0;border:0;margin:0 0 8px -6px;padding:2px 6px}.concept.svelte-8d6d0q{grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px;padding:0;list-style:none;display:grid}.concept.svelte-8d6d0q li:where(.svelte-8d6d0q){border:1px solid var(--line);background:var(--panel);border-radius:10px;align-content:start;gap:2px;padding:10px 12px;display:grid}.concept.svelte-8d6d0q span:where(.svelte-8d6d0q),.choices.svelte-8d6d0q span:where(.svelte-8d6d0q),small.svelte-8d6d0q,.about.svelte-8d6d0q{color:var(--muted);font-size:12px}.choices.svelte-8d6d0q{gap:8px;display:grid}.choices.svelte-8d6d0q button:where(.svelte-8d6d0q){border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:10px;gap:2px;padding:12px 14px;display:grid}.choices.svelte-8d6d0q button:where(.svelte-8d6d0q):hover,.choices.svelte-8d6d0q button:where(.svelte-8d6d0q):focus-visible{border-color:var(--cable);outline:none}.choices.svelte-8d6d0q strong:where(.svelte-8d6d0q){font-size:14px}.stack.svelte-8d6d0q{border-top:1px solid var(--line);align-items:center;gap:10px;padding:10px 0;display:flex}.stack.svelte-8d6d0q>span:where(.svelte-8d6d0q){flex:1;gap:1px;min-width:0;display:grid}.stack.svelte-8d6d0q small:where(.svelte-8d6d0q){font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.stack.svelte-8d6d0q button:where(.svelte-8d6d0q),.go.svelte-8d6d0q{border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:6px 14px}.go.svelte-8d6d0q{background:var(--cable);color:var(--on-accent);border-color:#0000}button.svelte-8d6d0q:disabled{opacity:.55;cursor:not-allowed}.link.svelte-8d6d0q{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:flex}input.svelte-8d6d0q{border:1px solid var(--line);background:var(--paper);min-width:0;height:32px;color:var(--ink);font:13px var(--sans);border-radius:7px;flex:1;padding:0 10px}.new.svelte-8d6d0q{gap:14px;display:grid}.new.svelte-8d6d0q label:where(.svelte-8d6d0q){gap:4px;font-weight:600;display:grid}.new.svelte-8d6d0q small:where(.svelte-8d6d0q){font-weight:400}.new.svelte-8d6d0q .go:where(.svelte-8d6d0q){justify-self:end}.tags.svelte-8d6d0q{border:1px solid var(--line);background:var(--paper);border-radius:7px;flex-wrap:wrap;align-items:center;gap:6px;min-height:32px;padding:3px 6px;font-weight:400;display:flex}.tags.svelte-8d6d0q input:where(.svelte-8d6d0q){background:0 0;border:0;min-width:120px;height:24px;padding:0 4px}.tag.svelte-8d6d0q{background:color-mix(in oklab, var(--ink) 9%, transparent);font:600 12px/1.6 var(--mono);border-radius:999px;align-items:center;gap:5px;padding:1px 4px 1px 8px;display:inline-flex}.tag.svelte-8d6d0q small:where(.svelte-8d6d0q){font-family:var(--sans)}.tag.svelte-8d6d0q button:where(.svelte-8d6d0q){color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:14px;line-height:1}.error.svelte-8d6d0q{min-height:1.45em;color:var(--bad);margin:10px 0 0}.picker.svelte-ujai35{border:1px solid var(--line);background:var(--paper);width:100%;height:32px;color:var(--muted);font:600 13px var(--sans);text-align:left;cursor:pointer;border-radius:7px;align-items:center;padding:0 30px 0 10px;display:flex;position:relative}.picker.chosen.svelte-ujai35{color:var(--ink)}.picker.svelte-ujai35:after{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);width:6px;height:6px;position:absolute;top:50%;right:12px;transform:translateY(-70%)rotate(45deg)}.picker.svelte-ujai35:hover,.picker[aria-expanded=true].svelte-ujai35{border-color:color-mix(in oklab, var(--cable) 55%, var(--line))}.name.svelte-ujai35{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu.svelte-ujai35{border:1px solid var(--line);background:var(--surface);max-height:min(480px,100vh - 120px);box-shadow:var(--lift);border-radius:10px;margin:0;padding:4px;position:fixed;inset:auto;overflow-y:auto}.menu.svelte-ujai35 p:where(.svelte-ujai35){color:var(--muted);font:600 11px var(--sans);margin:0;padding:8px 10px 4px}.menu.svelte-ujai35 p.none:where(.svelte-ujai35){padding-bottom:8px;font-size:13px;font-weight:400}.menu.svelte-ujai35 button:where(.svelte-ujai35){width:100%;color:var(--ink);font:600 13px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;display:flex}.menu.svelte-ujai35 button:where(.svelte-ujai35):hover,.menu.svelte-ujai35 button:where(.svelte-ujai35):focus-visible{background:color-mix(in oklab, var(--ink) 7%, transparent);outline:none}.menu.svelte-ujai35 [aria-current=true]:where(.svelte-ujai35){background:color-mix(in oklab, var(--cable) 12%, transparent)}.menu.svelte-ujai35 .name:where(.svelte-ujai35){flex:1}.meta.svelte-ujai35{color:var(--muted);flex:none;font-size:12px;font-weight:400}.row.svelte-ujai35{align-items:center;gap:2px;display:flex}.menu.svelte-ujai35 .row:where(.svelte-ujai35)>button:where(.svelte-ujai35):first-child{flex:1;min-width:0}.menu.svelte-ujai35 .row:where(.svelte-ujai35) .act:where(.svelte-ujai35){width:auto;color:var(--muted);flex:none;padding:5px 8px;font-size:12px;font-weight:500}.menu.svelte-ujai35 .row:where(.svelte-ujai35) .act:where(.svelte-ujai35):hover{color:var(--ink)}.strip.svelte-ujai35{border-top:1px solid var(--line);gap:6px;margin-top:4px;padding:8px 6px 4px;display:grid}.acts.svelte-ujai35,.strip.svelte-ujai35 form:where(.svelte-ujai35){gap:6px;display:flex}.menu.svelte-ujai35 .strip:where(.svelte-ujai35) button:where(.svelte-ujai35){border:1px solid var(--line);border-radius:6px;flex:none;width:auto;height:28px;padding:0 10px;font-size:12px}.menu.svelte-ujai35 .strip:where(.svelte-ujai35) button:where(.svelte-ujai35):disabled{opacity:.5;cursor:not-allowed}.strip.svelte-ujai35 input[type=text]:where(.svelte-ujai35){border:1px solid var(--line);background:var(--paper);min-width:0;height:28px;color:var(--ink);font:13px var(--sans);border-radius:6px;flex:1;padding:0 8px}.menu.svelte-ujai35 p.hint:where(.svelte-ujai35){padding:0 2px;font-size:12px;font-weight:400}.menu.svelte-ujai35 p.hint.warn:where(.svelte-ujai35){color:var(--bad)}details.svelte-ujai35{border-top:1px solid var(--line);margin-top:4px;padding:4px 6px;font-size:12px}summary.svelte-ujai35{color:var(--muted);cursor:pointer;padding:4px}.gone.svelte-ujai35{padding:2px 4px;font-size:13px}.gone.svelte-ujai35 .name:where(.svelte-ujai35){flex:1}.open.svelte-3tqys6{border:1px solid color-mix(in oklab, var(--warn) 50%, transparent);background:color-mix(in oklab, var(--warn) 12%, transparent);width:100%;color:var(--ink);font:600 12.5px/1.4 var(--sans);text-align:left;cursor:pointer;border-radius:8px;padding:7px 10px}.pop.svelte-3tqys6{border:1px solid var(--line);background:var(--surface);width:min(420px,100vw - 24px);max-height:min(560px,100vh - 120px);color:var(--ink);box-shadow:var(--lift);font:13px/1.45 var(--sans);border-radius:12px;margin:0;padding:14px 16px;position:fixed;inset:auto;overflow-y:auto}h2.svelte-3tqys6{margin:0 0 10px;font-size:14px}h3.svelte-3tqys6{margin:0;font-size:13px}ul.svelte-3tqys6{gap:12px;margin:0;padding:0;list-style:none;display:grid}li.svelte-3tqys6,.gap.svelte-3tqys6{gap:4px;display:grid}.gaps.svelte-3tqys6{border-top:1px solid var(--line);gap:10px;padding-top:12px}small.svelte-3tqys6,p.svelte-3tqys6{color:var(--muted);margin:0;font-size:12px}.pop.svelte-3tqys6 button:where(.svelte-3tqys6){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;justify-self:start;padding:5px 10px}.pop.svelte-3tqys6 button.all:where(.svelte-3tqys6){background:var(--cable);color:var(--on-accent);border-color:#0000}.pop.svelte-3tqys6 button:where(.svelte-3tqys6):disabled{opacity:.6;cursor:default}.notes.svelte-159ihlv{gap:6px;margin-top:12px;display:grid}.note.svelte-159ihlv{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:12.5px/1.45 var(--sans);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 10px;padding:8px 8px 8px 10px;display:grid}.x.svelte-159ihlv{width:20px;height:20px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;grid-area:1/2;place-items:center;padding:0;font-size:15px;line-height:1;display:grid}.x.svelte-159ihlv:hover{background:color-mix(in oklab, var(--ink) 10%, transparent);color:var(--ink)}.do.svelte-159ihlv{background:var(--cable);color:var(--on-accent);font:600 12px var(--sans);cursor:pointer;border:0;border-radius:6px;grid-row:2;justify-self:start;padding:4px 10px}aside.svelte-1vh52u{scrollbar-width:thin;border-right:1px solid var(--line);background:var(--panel);width:324px;color:var(--ink);font:13px/1.4 var(--sans);flex-direction:column;flex-shrink:0;gap:18px;padding:0 12px 14px;display:flex;overflow:hidden auto}.head.svelte-1vh52u{z-index:2;border-bottom:1px solid var(--line);background:var(--panel);gap:8px;margin:0 -12px;padding:12px;display:grid;position:sticky;top:0}.seg.svelte-1vh52u label:where(.svelte-1vh52u){text-align:center;white-space:nowrap;flex:1;padding:3px 12px}h2.svelte-1vh52u{align-items:baseline;gap:6px;margin:0 0 6px;padding:0 8px;font-size:13px;font-weight:600;display:flex}.count.svelte-1vh52u{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:500}.sort.svelte-1vh52u{min-height:24px;color:var(--muted);font:500 12px var(--sans);cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:3px;margin-left:auto;padding:0 6px;display:inline-flex}.sort.svelte-1vh52u:hover{background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--ink)}.search.svelte-1vh52u{border:1px solid var(--line);background:var(--paper);width:100%;height:32px;color:var(--ink);font:13px var(--sans);border-radius:7px;margin:0 0 8px;padding:0 10px}.search.svelte-1vh52u::placeholder{color:var(--muted)}.apps.svelte-1vh52u{flex-direction:column;gap:1px;display:flex}.app.svelte-1vh52u{min-height:30px;color:var(--muted);border-radius:6px;align-items:center;gap:9px;padding:3px 8px;display:flex;position:relative}.app.svelte-1vh52u:hover{background:color-mix(in oklab, var(--ink) 6%, transparent)}.app.on.svelte-1vh52u{color:var(--ink)}.app.first-off.svelte-1vh52u{margin-top:7px}.app.first-off.svelte-1vh52u:before{content:"";border-top:1px solid var(--line);position:absolute;top:-4px;left:8px;right:8px}.main.svelte-1vh52u{min-width:0;min-height:24px;color:inherit;font:inherit;text-align:left;background:0 0;border:0;flex:1;align-content:center;padding:0}button.main.svelte-1vh52u{cursor:pointer}.on.svelte-1vh52u .main:where(.svelte-1vh52u){font-weight:600}.name.svelte-1vh52u{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.state.svelte-1vh52u{flex:none;font-size:12px}.act.svelte-1vh52u{width:24px;height:24px;color:var(--muted);opacity:0;cursor:pointer;background:0 0;border:0;border-radius:5px;flex:none;place-items:center;margin-right:-4px;padding:0;display:grid}.app.svelte-1vh52u:hover .act:where(.svelte-1vh52u),.act.svelte-1vh52u:focus-visible{opacity:1}.act.svelte-1vh52u:hover{background:color-mix(in oklab, var(--ink) 10%, transparent);color:var(--ink)}.act.remove.svelte-1vh52u:hover,.act.drop.svelte-1vh52u:hover{color:var(--bad)}.adds.svelte-1vh52u{flex-wrap:wrap;gap:0 12px;display:flex}.add-repos.svelte-1vh52u{color:var(--cable-ink);font:600 13px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;margin:4px 0 0 4px;padding:6px 4px}.add-repos.svelte-1vh52u:hover{text-decoration:underline}.act.add.svelte-1vh52u{color:var(--cable)}.live.svelte-1vh52u{border-radius:50%;flex:none;place-items:center;width:14px;height:14px;font-size:12px;font-weight:700;line-height:1;display:grid}.live[data-on=true].svelte-1vh52u:before{content:"";background:var(--ok);border-radius:50%;width:8px;height:8px}.live[data-on=false].svelte-1vh52u{background:var(--bad);color:var(--on-accent)}.empty.svelte-1vh52u,.note.svelte-1vh52u{color:var(--muted);margin:0;padding:0 8px}footer.svelte-1vh52u{grid-template-columns:minmax(0,1fr);gap:8px;margin-top:auto;padding:0 2px;display:grid}.protected.svelte-1vh52u .seg:where(.svelte-1vh52u) label:where(.svelte-1vh52u):has(input:where(.svelte-1vh52u):checked){background:var(--prod);color:var(--on-accent)}.unsaved.svelte-1vh52u{color:var(--warn);margin:0;padding:0 8px;font-weight:600}footer.svelte-1vh52u .warn:where(.svelte-1vh52u){color:var(--warn);margin:0;padding:0 8px;font-size:12.5px}footer.svelte-1vh52u .warn:where(.svelte-1vh52u) .cmd{margin-top:6px}.clone.svelte-1vh52u{border:1px solid color-mix(in oklab, var(--warn) 45%, transparent);background:color-mix(in oklab, var(--warn) 8%, var(--surface));min-width:0;font:12.5px/1.45 var(--sans);border-radius:8px;gap:8px;padding:8px 10px;display:grid}.clone.svelte-1vh52u p:where(.svelte-1vh52u){overflow-wrap:anywhere;margin:0}.clone.svelte-1vh52u .acts:where(.svelte-1vh52u){gap:6px;display:flex}.clone.svelte-1vh52u button:where(.svelte-1vh52u){border:1px solid var(--line);color:var(--ink);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px}.clone.svelte-1vh52u .do:where(.svelte-1vh52u){background:var(--cable);color:var(--on-accent);border-color:#0000}.clone.svelte-1vh52u button:where(.svelte-1vh52u):disabled{opacity:.6;cursor:default}.note.svelte-1vh52u:empty{display:none}.note.svelte-1vh52u{margin-top:8px}.svelte-1vh52u:focus-visible{outline:2px solid var(--cable);outline-offset:2px}.picker.svelte-njiuyh{max-width:220px;height:32px;color:var(--ink);font:600 14px var(--sans);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;margin-left:-8px;padding:0 26px 0 8px;display:flex;position:relative}.slash.svelte-njiuyh{color:var(--muted);font-size:14px}.picker.svelte-njiuyh:after{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);width:5px;height:5px;position:absolute;top:50%;right:10px;transform:translateY(-70%)rotate(45deg)}.picker.svelte-njiuyh:hover,.picker[aria-expanded=true].svelte-njiuyh{border-color:var(--line)}.name.svelte-njiuyh{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu.svelte-njiuyh{border:1px solid var(--line);background:var(--surface);width:max-content;min-width:280px;max-width:420px;box-shadow:var(--lift);border-radius:10px;margin:0;padding:4px;position:fixed;inset:auto}.menu.svelte-njiuyh button:where(.svelte-njiuyh){width:100%;color:var(--ink);font:600 13px var(--sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 10px;display:grid}.menu.svelte-njiuyh button:where(.svelte-njiuyh):hover:not(:disabled),.menu.svelte-njiuyh button:where(.svelte-njiuyh):focus-visible{background:color-mix(in oklab, var(--ink) 7%, transparent);outline:none}.menu.svelte-njiuyh button:where(.svelte-njiuyh):disabled{cursor:default}.check.svelte-njiuyh{width:9px;height:5px;margin-bottom:3px}[aria-checked=true].svelte-njiuyh .check:where(.svelte-njiuyh){border-bottom:2px solid var(--cable);border-left:2px solid var(--cable);transform:rotate(-45deg)}.meta.svelte-njiuyh{color:var(--muted);font-size:12px;font-weight:400}.more.svelte-njiuyh{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}.more.svelte-njiuyh button:where(.svelte-njiuyh){color:var(--cable-ink)}.ico.svelte-njiuyh{text-align:center}.toast.svelte-ieajqw{z-index:10;border:1px solid var(--line);background:var(--surface);max-width:min(460px,100% - 32px);color:var(--ink);box-shadow:var(--lift);font:500 13px/1.4 var(--sans);border-radius:9px;align-items:center;gap:10px;padding:9px 12px 9px 14px;display:flex;position:absolute;top:12px;left:50%;translate:-50%}.toast.warning.svelte-ieajqw{border-color:color-mix(in oklab, var(--bad) 60%, var(--line))}.text.svelte-ieajqw{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;flex:1;min-width:0}.warning.svelte-ieajqw .text:where(.svelte-ieajqw):before{content:"!";background:var(--bad);width:16px;height:16px;color:var(--on-accent);vertical-align:-2px;border-radius:50%;place-items:center;margin-right:8px;font-size:12px;font-weight:700;display:inline-grid}.action.svelte-ieajqw{border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:5px;flex:none;padding:2px 8px}.action.svelte-ieajqw:hover{border-color:var(--cable);color:var(--cable)}.close.svelte-ieajqw{width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;flex:none;margin:-2px -4px -2px 0;padding:0;font-size:16px;line-height:1}.close.svelte-ieajqw:hover{background:color-mix(in oklab, var(--ink) 10%, transparent);color:var(--ink)}header[hidden].svelte-1jciobo{display:none}header.svelte-1jciobo{border-bottom:1px solid var(--line);background:var(--panel);min-height:53px;color:var(--ink);align-items:center;gap:12px;padding:10px 16px;display:flex}header.svelte-1jciobo.compact{flex-wrap:wrap}header.svelte-1jciobo.compact .words{display:none}header.protected.svelte-1jciobo{border-bottom:3px solid var(--prod)}.spacer.svelte-1jciobo{flex:1}.banner.svelte-1jciobo{background:color-mix(in oklab, var(--prod) 14%, var(--panel));color:var(--prod);font:600 13px var(--sans);padding:6px 16px}.stop.svelte-1jciobo,.run.svelte-1jciobo{font:600 13px var(--sans);cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.split.svelte-1jciobo{align-items:stretch;display:inline-flex}.split.svelte-1jciobo>:where(.svelte-1jciobo):is(.stop:where(.svelte-1jciobo),.run:where(.svelte-1jciobo)):has(+.more){border-radius:8px 0 0 8px}.noting.svelte-1jciobo{border:1px solid var(--line);background:var(--surface);width:min(420px,100vw - 32px);color:var(--ink);box-shadow:var(--lift);border-radius:12px;padding:16px}.noting.svelte-1jciobo::backdrop{background:color-mix(in oklab, var(--desk) 60%, transparent)}.noting.svelte-1jciobo form:where(.svelte-1jciobo){gap:8px;display:grid}.noting.svelte-1jciobo label:where(.svelte-1jciobo){font:600 13px var(--sans)}.noting.svelte-1jciobo textarea:where(.svelte-1jciobo){border:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px var(--sans);resize:vertical;border-radius:6px;padding:8px}.noting-acts.svelte-1jciobo{justify-content:flex-end;gap:8px;display:flex}.noting-acts.svelte-1jciobo button:where(.svelte-1jciobo){border:1px solid var(--line);color:var(--ink);font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px}.noting-acts.svelte-1jciobo .go:where(.svelte-1jciobo){background:var(--cable);color:var(--on-accent);border-color:#0000}.stop.svelte-1jciobo{border-color:color-mix(in oklab, var(--prod) 45%, transparent);color:var(--prod);background:0 0}.stop.svelte-1jciobo:disabled{border-color:var(--line);color:var(--muted);cursor:not-allowed}.stop.svelte-1jciobo:disabled+.more.stop{border-color:var(--line);color:var(--muted)}.stop.svelte-1jciobo:not(:disabled):hover{background:color-mix(in oklab, var(--prod) 12%, transparent)}.run.svelte-1jciobo{background:var(--cable);color:var(--on-accent)}.run.svelte-1jciobo:hover{background:color-mix(in oklab, var(--cable) 85%, var(--ink))}.protected.svelte-1jciobo .run:where(.svelte-1jciobo){background:var(--prod)}.run.svelte-1jciobo:disabled{border-color:var(--line);background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--muted);cursor:not-allowed}.title.svelte-1jciobo{letter-spacing:-.01em;font-size:17px;font-weight:700}.env.svelte-1jciobo{background:color-mix(in oklab, var(--ink) 8%, transparent);color:var(--muted);font:600 12px/1.5 var(--sans);border-radius:999px;padding:1px 8px}.env.prod.svelte-1jciobo{background:color-mix(in oklab, var(--prod) 14%, transparent);color:var(--prod)}.side-toggle.svelte-1jciobo{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;margin-right:-4px;padding:0;display:grid}.side-toggle.svelte-1jciobo:hover{background:color-mix(in oklab, var(--ink) 7%, transparent)}.gear.svelte-1jciobo{margin:0 0 0 -8px}.dropping.svelte-1jciobo{z-index:60;border:2px dashed var(--cable);background:color-mix(in oklab, var(--cable) 10%, transparent);color:var(--cable-ink);font:600 16px var(--sans);pointer-events:none;border-radius:14px;place-items:center;display:grid;position:fixed;inset:12px}.work.svelte-1jciobo{flex:1;min-height:0;display:flex;position:relative}main.svelte-1jciobo{flex:1;min-width:0;min-height:0;display:flex}.loading.svelte-1jciobo{z-index:40;background:color-mix(in srgb, var(--desk) 70%, transparent);place-items:center;display:grid;position:absolute;inset:0}.loading.svelte-1jciobo p:where(.svelte-1jciobo){border:1px solid var(--line);background:var(--panel);max-width:min(420px,80%);color:var(--ink);font:600 13px var(--sans);border-radius:8px;align-items:center;gap:10px;margin:0;padding:10px 16px;display:flex}.loading.svelte-1jciobo .what:where(.svelte-1jciobo){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.loading.svelte-1jciobo .dot:where(.svelte-1jciobo){border:1.5px solid var(--line);border-top-color:var(--cable);border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite svelte-1jciobo-turning}@keyframes svelte-1jciobo-turning{to{rotate:360deg}}@media (prefers-reduced-motion:reduce){.loading.svelte-1jciobo .dot:where(.svelte-1jciobo){animation:none}}.stage.svelte-1jciobo{flex-direction:column;flex:1;min-width:0;display:flex}.work.svelte-1jciobo{flex:1;min-height:0;display:flex}.board.svelte-1jciobo{flex:1;min-width:0;position:relative}.empty.svelte-1jciobo{max-width:420px;color:var(--muted);gap:8px;padding:24px 16px;font-size:14px;display:grid}.empty.svelte-1jciobo p:where(.svelte-1jciobo){margin:0}
|
package/dist/page/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Koppler</title>
|
|
7
7
|
<script src="./theme.js"></script>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-cGqfl7Ue.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-e6-Jk1nK.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.8
|
|
@@ -38,3 +38,16 @@ Make them only after the user's yes, with `koppler stack set` (never by writing
|
|
|
38
38
|
A shared stack's change is for the user to commit (or `koppler link pr` for a linked one).
|
|
39
39
|
|
|
40
40
|
Queues, topics and event buses go under `queues`, with `publishes` / `reads` on each app (`references/stack.md`); confirm both ends from the repos and the Terraform, as for a call.
|
|
41
|
+
|
|
42
|
+
## Trace what feeds a queue
|
|
43
|
+
|
|
44
|
+
A queue an app reads is often the end of a chain: a Kafka topic piped onto an event bus, whose rule forwards to another account's bus, which a rule hands to a Lambda.
|
|
45
|
+
`koppler discover --deployed` drafts what it can read from the Terraform; trace the rest by hand, in every clone, and record each link with `koppler stack set queues.<id>.feeds.<other> '{"via":"pipe"}'`:
|
|
46
|
+
- **Kafka topics read:** `aws_pipes_pipe` and `awscc_pipes_pipe` with `self_managed_kafka_parameters` or `managed_streaming_kafka_parameters`; `topic_name`, often `each.key` over a list variable whose values are in the `.tfvars` (a commented-out item is not read). Also Lambda event source mappings on an MSK or Kafka source.
|
|
47
|
+
- **Kafka topics written:** app settings such as `KafkaSettings/Topic`, `Kafka__Topic` and `BootstrapServers` in the Terraform locals and `appsettings*.json`; the app `publishes` that topic.
|
|
48
|
+
- **Event buses:** `aws_cloudwatch_event_bus`; its rules (`aws_cloudwatch_event_rule` with `event_bus_name`) and their targets (`aws_cloudwatch_event_target`): a queue, a Lambda, an API destination, or another account's bus by its ARN (`event-bus/<name>`, often in a map per environment in the locals).
|
|
49
|
+
- **The other end of a bus forwarded by ARN:** search every clone for the bus name without its environment word (`customer_service_bus`); the repo that declares it holds the rules that read it.
|
|
50
|
+
- **SNS:** `aws_sns_topic_subscription` (`protocol` sqs, lambda or https, and its `endpoint`); an https subscription is a call to that app.
|
|
51
|
+
- **Pipes from SQS:** an `aws_pipes_pipe` whose `source` is a queue (often through `terraform_remote_state` outputs) and whose `target` is an API destination or a Lambda: that queue is read, with `via`.
|
|
52
|
+
- **Who reads at the end:** a Lambda in an app's repo targeted by a pipe or rule is that app reading the queue: `reads.<queue>.via` (`"rule to Lambda"`), not a card of its own.
|
|
53
|
+
Never read a secret on the way (Kafka credentials, connection strings): only names, addresses and topic names.
|
|
@@ -49,8 +49,8 @@ It holds facts about the apps, never secret values.
|
|
|
49
49
|
| `notes` | Stack-wide facts. |
|
|
50
50
|
| `checks` | The stack's own health checks, run when it loads (`koppler doctor`): `name`, `run` (a shell command), `ok` and `fix` texts, `kinds` to limit it to stacks with those app kinds. At most 50, each `run` up to 2000 characters. They are someone's commands, so they run only after the user approved them with `koppler doctor --approve`, and again after one changes. The same approval covers everything else the stack would run or write: an app's `start` (also per environment), a custom kind's `start` and `stop`, and `localChanges`. |
|
|
51
51
|
| `apps.<id>.outside` | The app does not run on this Mac, or has nothing to run (Salesforce, a SaaS package, a managed service, an S3 bucket, a library or config repo), with a short why. It is never planned, sent or started (`koppler up` refuses it by name), needs no `slug`, and its card shows the address its `deployedUrl` gives for the board's environment (the Salesforce sandbox on QA, production on PROD). `koppler discover --deployed` drafts known ones (Salesforce) from each app's addresses per environment, with the calls to them (`outsideSuggestions`). It stays in the stack so the flow is complete: it never runs or takes a cable, and shows as a dashed read-only card next to the board apps that call it (`consumes`) or share a queue with it. |
|
|
52
|
-
| `queues` | Top-level: `{ "<id>": { "name", "type", "queue"? } }`, the queues, topics and event buses between apps. `type` is `sqs`, `sns`, `eventbridge`, `kafka` or `other`; `queue` is its real name (default the id), per environment under `envs.<env>.queue
|
|
53
|
-
| `apps.<id>.publishes`, `apps.<id>.reads` | `koppler discover --deployed` drafts them, with `queues`, from the Terraform (who sends and reads, the settings carrying each address, what feeds a queue from outside); confirm before adding. The queues the app sends to or takes from: `{ "<queue>": { "env"?: [settings holding the queue's URL] } }`. On the canvas an app is off its queues until its card's Queues switch is on (`queues: true` in a preset); then they draw a queue card between its apps, with a Local switch. Switched on, `koppler up` runs it locally. SQS: one AWS emulator in Docker on port 4566 holds the queue, and every app on it starts with `AWS_ENDPOINT_URL_SQS` (which current AWS SDKs read) and its `env` settings pointed at the local queue. Kafka: one broker in Docker (`apache/kafka`) on `localhost:9092` gets the topic (`queue`), and every app on it starts with its `env` settings (its broker list, e.g. `Kafka__BootstrapServers`) set to `localhost:9092`; a broker setup that needs sign-in (SASL, MSK IAM) has to be turned off for the local run, e.g. by a remembered change. SNS and EventBridge stay deployed. Off, a local reader takes messages off the deployed queue, so the deployed reader misses those; the card says so. |
|
|
52
|
+
| `queues` | Top-level: `{ "<id>": { "name", "type", "queue"? } }`, the queues, topics and event buses between apps. `type` is `sqs`, `sns`, `eventbridge`, `kafka` or `other`; `queue` is its real name (default the id), per environment under `envs.<env>.queue`.; `feeds` names the queues, topics and buses it hands its messages to, and how: `{ "<queue>": { "via": "pipe" \| "rule" \| "subscription" } }` (a Kafka topic piped onto an event bus, a bus whose rule forwards to another bus, an SNS topic with an SQS subscription). |
|
|
53
|
+
| `apps.<id>.publishes`, `apps.<id>.reads` | `koppler discover --deployed` drafts them, with `queues`, from the Terraform (who sends and reads, the settings carrying each address, what feeds a queue from outside); confirm before adding. The queues the app sends to or takes from: `{ "<queue>": { "env"?: [settings holding the queue's URL] } }`. On the canvas an app is off its queues until its card's Queues switch is on (`queues: true` in a preset); then they draw a queue card between its apps, with a Local switch. Switched on, `koppler up` runs it locally. SQS: one AWS emulator in Docker on port 4566 holds the queue, and every app on it starts with `AWS_ENDPOINT_URL_SQS` (which current AWS SDKs read) and its `env` settings pointed at the local queue. Kafka: one broker in Docker (`apache/kafka`) on `localhost:9092` gets the topic (`queue`), and every app on it starts with its `env` settings (its broker list, e.g. `Kafka__BootstrapServers`) set to `localhost:9092`; a broker setup that needs sign-in (SASL, MSK IAM) has to be turned off for the local run, e.g. by a remembered change. SNS and EventBridge stay deployed. Off, a local reader takes messages off the deployed queue, so the deployed reader misses those; the card says so. A read entry can say how the app reads it when not by itself: `{ "via": "rule to Lambda" }` (a pipe or rule to a Lambda or an API destination); the canvas shows it on the link, and a local app read that way takes nothing off the deployed queue. |
|
|
54
54
|
| `install` | How to install a program the stack needs, by name: `{ "cloudflared": "brew install cloudflared" }`. Which programs are needed is worked out from the stack itself: each app kind's own, and the first word of every prerequisite's `cmd`. |
|
|
55
55
|
| `kind` | What the app is built with; decides how it is recognized, started and shown. See "Kinds" below. |
|
|
56
56
|
| `start` | The shell command that starts the app in its repo. Needed for `other`, optional for the recipe kinds, where it replaces the usual command. |
|
|
@@ -165,7 +165,8 @@ Tests, docs, lock files and migration tools are not searched.
|
|
|
165
165
|
- the app's deployed address (API Gateway domain, CDN alias or DNS record), marked `NEW`, `matches stack.json` or `OTHER than stack.json`;
|
|
166
166
|
- the names of its settings, and which of them hold or point to a secret;
|
|
167
167
|
- Secrets Manager secret names and Parameter Store paths;
|
|
168
|
-
- calls: a setting whose address belongs to another app
|
|
168
|
+
- calls: a setting whose address belongs to another app;
|
|
169
|
+
- queues, topics and event buses, and what feeds what (`queueSuggestions`): SQS queues and SNS topics, EventBridge buses (`aws_cloudwatch_event_bus`), Kafka topics a pipe reads (`topic_name` of an `aws_pipes_pipe` or `awscc_pipes_pipe`, one per topic of a list), pipes (source to target), rules with their targets (a bus to a queue, a Lambda, or another account's bus by its ARN), and SNS subscriptions (`aws_sns_topic_subscription`). A queue read through a pipe or rule to a Lambda or an API destination is drafted as `reads` with `via`, such as `"rule to Lambda"`. Feeds of queues the stack already has are under `queueSuggestions.feeds`.
|
|
169
170
|
|
|
170
171
|
It reads out names and plain addresses only (a host, or an http(s) URL with no credentials or query); every other value stays in the repo.
|
|
171
172
|
Environments come from variable files named after them (`deployment-dev.tfvars`) or, without those, from trying each stack environment and alias as the Terraform workspace.
|