.react-flow{direction:ltr;--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: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--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: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--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: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--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 rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--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: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--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: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--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 rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;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%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;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))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}:root{--bg: #f1efec;--panel: #ffffff;--panel-2: #f7f7f8;--panel-3: #efedea;--border: #ececef;--border-2: #dcdfe4;--text: #1f2430;--muted: #6b7280;--faint: #a3a8b0;--hover: #f0eeeb;--hover-line: #dcdfe4;--accent: #e9730f;--accent-2: #cf6310;--accent-ink: #c2410c;--accent-soft: #fff3e6;--accent-line: #f6d8b6;--data: #0e9aa4;--data-ink: #0b7d84;--data-soft: #d8f3f4;--good: #16a34a;--bad: #dc2626;--warn: #b45309;--warn-soft: #fff4e0;--shadow-sm: 0 1px 2px rgba(24, 28, 45, .04), 0 1px 3px rgba(24, 28, 45, .05);--shadow: 0 2px 6px rgba(24, 28, 45, .05), 0 10px 28px rgba(24, 28, 45, .06);--shadow-lg: 0 4px 12px rgba(24, 28, 45, .07), 0 18px 44px rgba(24, 28, 45, .1);--shadow-pop: 0 18px 50px rgba(24, 28, 45, .18);--c-page: #fbfbfc;--c-shell: #f1efec;--c-surface: #ffffff;--c-surface-2: #f7f7f8;--c-border: #ececef;--c-border-strong: #dcdfe4;--c-text: #1f2430;--c-text-muted: #6b7280;--c-text-dim: #a3a8b0;--c-overlay: rgba(17, 24, 39, .035);--c-trigger-bg: #fef3c7;--c-trigger-fg: #92400e;--c-action-bg: #dbeafe;--c-action-fg: #1e40af;--c-output-bg: #d1fae5;--c-output-fg: #065f46;--c-info-bg: #ede9fe;--c-info-fg: #5b21b6;--c-rose-bg: #ffe4e6;--c-rose-fg: #9f1239;--c-success: #16a34a;--c-success-bg: #f0fdf4;--c-warn: #b45309;--c-warn-bg: #fffbeb;--c-error: #b91c1c;--c-error-bg: #fef2f2;--c-primary: #e9730f;--c-primary-hover: #cf6310;--c-primary-tint: #fff3e6;--c-ring: rgba(233, 115, 15, .22);--c-accent: #c2410c;--c-accent-2: #9a3412;--ring: var(--c-ring);--app-crimson-bg: #FADFE0;--app-crimson: #C0394A;--app-rose-bg: #FBE2E7;--app-rose: #CB4668;--app-pink-bg: #FBE3EF;--app-pink: #C84C86;--app-blush-bg: #FCE6EC;--app-blush: #D2698D;--app-magenta-bg: #F8E0F0;--app-magenta: #BC3F94;--app-fuchsia-bg: #F7E2F5;--app-fuchsia: #B642AC;--app-orchid-bg: #F2E4F7;--app-orchid: #9D4DBB;--app-purple-bg: #EEE6FA;--app-purple: #8A4FCE;--app-violet-bg: #EAE6FB;--app-violet: #7350D6;--app-lavender-bg: #EBEAFC;--app-lavender: #6257D4;--app-periwinkle-bg: #E6E9FC;--app-periwinkle: #5566D6;--app-indigo-bg: #E2E8FB;--app-indigo: #3F5BCC;--app-blue-bg: #E0EBFD;--app-blue: #3370D4;--app-azure-bg: #DEEDFC;--app-azure: #2484CC;--app-sky-bg: #DBF0FB;--app-sky: #1B91C2;--app-cyan-bg: #D8F3F4;--app-cyan: #0E9AA4;--app-teal-bg: #D7F2EC;--app-teal: #10917F;--app-mint-bg: #DDF5EB;--app-mint: #1FA06E;--app-spruce-bg: #DBF1E6;--app-spruce: #1C8F66;--app-emerald-bg: #DCF4E4;--app-emerald: #1E9C58;--app-green-bg: #E0F4DC;--app-green: #3D9A37;--app-fern-bg: #E5F3D6;--app-fern: #57962A;--app-sage-bg: #E9F0DE;--app-sage: #6E8A4E;--app-lime-bg: #EDF5CE;--app-lime: #7C9011;--app-olive-bg: #F0EFD2;--app-olive: #8C8520;--app-citron-bg: #F6F2C9;--app-citron: #9A8C0E;--app-gold-bg: #FBF1CC;--app-gold: #B8930C;--app-yellow-bg: #FBEFCB;--app-yellow: #C28E0A;--app-amber-bg: #FBE9C9;--app-amber: #C57F0C;--app-honey-bg: #FCEAC9;--app-honey: #CC8A22;--app-tangerine-bg: #FDE7C9;--app-tangerine: #CE7A12;--app-orange-bg: #FCE3D0;--app-orange: #D26B26;--app-peach-bg: #FCE6D8;--app-peach: #D27C40;--app-coral-bg: #FCE3DD;--app-coral: #D45441;--app-clay-bg: #F4E4DA;--app-clay: #A86A48;--app-brown-bg: #F0E7DE;--app-brown: #8E6648;--app-sand-bg: #F3EEE1;--app-sand: #897A3D;--app-slate-bg: #E7ECF1;--app-slate: #566377;--app-stone-bg: #EEEBE6;--app-stone: #786F63;--app-graphite-bg: #EAEAEC;--app-graphite: #5C5C63;--radius: 14px;--zoo-round-scale: 1.7;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Fira Code", monospace;--sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif}:root{color-scheme:light}:root[data-theme=dark]{--bg: #0f1014;--panel: #181a20;--panel-2: #1d1f26;--panel-3: #23262e;--border: #262931;--border-2: #353a45;--text: #e7e9ef;--muted: #9aa1b1;--faint: #6a7080;--hover: #2a2e38;--hover-line: #3b414e;--accent: #f3902f;--accent-2: #e9730f;--accent-ink: #ffb670;--accent-soft: #3a2a17;--accent-line: #5a3f1f;--c-primary: #f3902f;--c-primary-hover: #e9730f;--c-primary-tint: #3a2a17;--c-ring: rgba(243, 144, 47, .28);--data: #2bb6d1;--data-ink: #84d8e8;--data-soft: #12313a;--good: #3ecf9a;--bad: #f5736f;--warn: #f0a93a;--warn-soft: #382c16;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow: 0 2px 6px rgba(0, 0, 0, .45), 0 10px 28px rgba(0, 0, 0, .55);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .5), 0 18px 44px rgba(0, 0, 0, .62);--shadow-pop: 0 18px 50px rgba(0, 0, 0, .7);color-scheme:dark}:root[data-theme=dark] .zoo-port-row:hover{background:#ffffff0d}:root[data-theme=dark] .zoo-node--data{border-color:#1f4651}:root[data-theme=dark] .zoo-stage,:root[data-theme=dark] .zoo-thumb-box{background-color:#1a1c22;background-image:linear-gradient(45deg,#24272f 25%,transparent 25%),linear-gradient(-45deg,#24272f 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#24272f 75%),linear-gradient(-45deg,transparent 75%,#24272f 75%)}:root[data-theme=dark] .zoo-thumb-ph{background-color:#1a1c22;color:var(--faint)}:root[data-theme=dark] .zoo-stage-pane{background-color:#131419;background-image:radial-gradient(circle,#2a2e38 1.1px,transparent 1.1px)}:root[data-theme=dark] .zoo-pane-tag{background:#12141af0}:root[data-theme=dark] .zoo-data-error,:root[data-theme=dark] .zoo-render-error{background:#f5736f1a;border-color:#f5736f47;color:#f5a3a0}:where([class^=zoo-],[class*=" zoo-"]){--corner-shape: squircle}::selection{background:var(--accent-soft);color:var(--accent-ink)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}button{font-family:inherit;cursor:pointer}.zoo-app{display:flex;flex-direction:column;height:100vh;user-select:none;-webkit-user-select:none}.zoo-app input,.zoo-app textarea,.zoo-app select,.zoo-app [contenteditable=true],.zoo-doc-notes,.zoo-doc-notes-edit{user-select:text;-webkit-user-select:text}.zoo-main{flex:1;display:flex;min-height:0}.zoo-canvas{flex:1;position:relative;min-width:0;background:radial-gradient(1100px 560px at 72% -12%,var(--panel) 0%,var(--bg) 58%)}.zoo-canvas .react-flow{background:transparent}.zoo-toolbar{flex:0 0 auto;height:52px;display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-2);z-index:5}.zoo-brand{display:flex;align-items:center;gap:10px;font-size:14px}.zoo-brand b{font-weight:800;letter-spacing:-.2px}.zoo-logo{display:inline-flex;align-items:center;justify-content:center;color:#fff}.zoo-wordmark{display:inline-flex;align-items:baseline;font-size:16px;margin-left:-2px;gap:8px}.zoo-brand-sub{color:var(--muted);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.6px}.zoo-brand-divider{width:1px;height:20px;background:var(--border-2)}.zoo-project{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid transparent;background:transparent;color:var(--text);font-size:13px;font-weight:600;font-family:var(--sans)}.zoo-project:hover{background:var(--panel-3);border-color:var(--border-2)}.zoo-toolbar-center{flex:1;display:flex;align-items:center;justify-content:center;gap:10px}.zoo-page-name{background:var(--panel-3);border:1px solid var(--border);color:var(--text);font-size:14px;font-weight:600;padding:7px 12px;border-radius:calc(9px * var(--zoo-round-scale, 1));text-align:center;min-width:200px;outline:none}.zoo-page-name:focus{border-color:var(--accent)}.zoo-page-kind{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:999px;--corner-shape: round}.zoo-page-kind--single{background:var(--accent);color:#fff}.zoo-page-kind--collage{background:var(--data-soft);color:var(--data-ink)}.zoo-toolbar-actions{display:flex;align-items:center;gap:8px}.zoo-toolbar-sep{width:1px;height:20px;background:var(--border-2);margin:0 2px}.zoo-toolsmenu{position:relative;display:inline-flex}.zoo-toolsmenu-pop{position:absolute;top:calc(100% + 7px);right:0;z-index:60;min-width:184px;display:flex;flex-direction:column;gap:1px;padding:6px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(13px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-lg)}.zoo-toolsmenu-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:1px solid transparent;color:var(--text);padding:8px 10px;border-radius:calc(8px * var(--zoo-round-scale, 1));font-size:13px;font-weight:600}.zoo-toolsmenu-item:hover{background:var(--hover)}.zoo-toolsmenu-item.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-toolsmenu-check{margin-left:auto;color:var(--accent-ink);font-weight:800}.zoo-btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel-3);border:1px solid var(--border-2);color:var(--text);font-size:13px;font-weight:600;padding:7px 13px;border-radius:calc(9px * var(--zoo-round-scale, 1));transition:transform .12s ease}.zoo-btn:hover{background:var(--hover);border-color:var(--hover-line)}.zoo-btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-btn--icon{padding:7px;justify-content:center}.zoo-btn .zoo-spin{border-color:var(--accent-line);border-top-color:var(--accent)}.zoo-btn--ghost{background:transparent;color:var(--muted)}.zoo-sidebar{width:250px;flex:0 0 auto;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:6px}.zoo-panel{padding:12px 10px;border-bottom:1px solid var(--border)}.zoo-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.zoo-panel-head h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700}.zoo-count{font-size:11px;color:var(--faint);background:var(--panel-3);padding:1px 7px;border-radius:999px;--corner-shape: round}.zoo-head-actions{display:flex;gap:4px}.zoo-head-actions button{width:24px;height:24px;border-radius:calc(7px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel-3);color:var(--muted);font-size:13px;line-height:1}.zoo-head-actions button:hover{color:var(--text);border-color:var(--accent)}.zoo-pages{display:flex;flex-direction:column;gap:3px}.zoo-page-item{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:calc(8px * var(--zoo-round-scale, 1));cursor:pointer;color:var(--muted);font-size:13px;border:1px solid transparent}.zoo-page-item:hover{background:var(--panel-2);color:var(--text)}.zoo-page-item.is-active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.zoo-page-icon{font-size:12px;opacity:.8}.zoo-page-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-page-act{opacity:0;background:transparent;border:none;color:var(--faint);font-size:13px;padding:0 2px}.zoo-page-item:hover .zoo-page-act{opacity:1}.zoo-page-act:hover{color:var(--text)}.zoo-reset{margin-top:10px;width:100%;background:transparent;border:1px dashed var(--border-2);color:var(--faint);font-size:12px;padding:6px;border-radius:calc(8px * var(--zoo-round-scale, 1))}.zoo-reset:hover{color:var(--muted);border-color:var(--muted)}.zoo-palette{display:grid;grid-template-columns:1fr 1fr;gap:6px}.zoo-palette-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 10px;border-radius:calc(9px * var(--zoo-round-scale, 1));border:1px solid var(--border);background:linear-gradient(180deg,var(--panel-2),var(--panel));color:var(--text);text-align:left;transition:transform .12s ease}.zoo-palette-item:hover{border-color:var(--accent-line);background:var(--accent-soft);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.zoo-palette-name{font-size:13px;font-weight:600}.zoo-palette-meta{font-size:10px;color:var(--faint)}.zoo-folder-group{margin-bottom:1px}.zoo-folder{display:flex;align-items:center;gap:6px;width:100%;padding:5px 6px;margin:2px 0;background:transparent;border:none;color:var(--muted);font-size:12px;font-weight:600;text-align:left;border-radius:calc(6px * var(--zoo-round-scale, 1))}.zoo-folder:hover{background:var(--panel-2);color:var(--text)}.zoo-folder-chevron{width:10px;font-size:9px;color:var(--faint);flex:0 0 auto}.zoo-folder-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono)}.zoo-folder-count{flex:0 0 auto;font-size:10px;color:var(--faint);background:var(--panel-3);padding:0 6px;border-radius:999px;--corner-shape: round}.zoo-data-adders{display:flex;flex-wrap:wrap;gap:6px}.zoo-add-data{flex:1 1 84px;min-width:0;padding:8px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel-3);color:var(--data-ink);font-size:12px;font-weight:600}.zoo-add-data:hover{border-color:var(--data);background:var(--data-soft)}.zoo-hint{font-size:11.5px;color:var(--faint);line-height:1.5;margin:8px 2px 0}.zoo-hint code{font-family:var(--mono);background:var(--panel-3);padding:1px 4px;border-radius:calc(4px * var(--zoo-round-scale, 1));font-size:11px}.react-flow__node.zoo-remote-moving{transition:transform .09s linear}.zoo-stage-item.zoo-remote-moving{transition:left .09s linear,top .09s linear}.zoo-preview-wrap.zoo-remote-resizing{transition:width .09s linear,height .09s linear}.zoo-node{background:var(--panel);border:1px solid var(--border-2);border-radius:calc(14px * var(--zoo-round-scale, 1));box-shadow:var(--shadow);min-width:220px;font-size:13px;color:var(--text)}.zoo-node.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 10px 30px #e9730f33}.zoo-node--data{border-color:color-mix(in srgb,var(--app-cyan) 28%,var(--panel))}.zoo-node--data.is-selected{border-color:var(--data);box-shadow:0 0 0 1px var(--data),0 10px 30px #0e9aa433}.zoo-node-head{display:flex;align-items:center;gap:8px;padding:9px 11px;background:var(--panel-2);border-bottom:1px solid var(--border);border-radius:calc(14px * var(--zoo-round-scale, 1)) calc(14px * var(--zoo-round-scale, 1)) 0 0}.zoo-node-dot{width:9px;height:9px;border-radius:calc(3px * var(--zoo-round-scale, 1));background:var(--accent);box-shadow:0 0 0 3px #e9730f24}.zoo-node-dot--data{background:var(--data);box-shadow:0 0 0 3px #0e9aa424}.zoo-node-title{font-weight:700;font-size:13.5px}.zoo-node-kindtag{font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;margin-left:auto}.zoo-node-x{background:transparent;border:none;color:var(--faint);font-size:17px;line-height:1;padding:0 2px;margin-left:6px}.zoo-node-x:hover{color:var(--bad)}.zoo-node-body{display:flex;gap:0}.zoo-node--component .zoo-node-body{flex-direction:column}.zoo-ports{display:flex;flex-direction:column;padding:8px 6px;gap:2px}.zoo-node--component .zoo-ports{border-bottom:1px solid var(--border)}.zoo-ports--out{border-left:1px solid var(--border);min-width:130px}.zoo-port-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:calc(7px * var(--zoo-round-scale, 1));--corner-shape: round}.zoo-port-row:hover{background:#1c1e320a}.zoo-port-row--out{flex-direction:row;justify-content:flex-end;text-align:right}.zoo-port-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.zoo-port-head{display:flex;align-items:center;gap:6px}.zoo-port-row--out .zoo-port-head{justify-content:flex-end}.zoo-port-row--out .zoo-port-body{align-items:flex-end}.zoo-port-row--out .zoo-port-preview{text-align:left}.zoo-port-name{font-size:12.5px;font-weight:600;white-space:nowrap}.zoo-req{color:var(--bad);font-style:normal;margin-left:1px}.zoo-port-type{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;opacity:.85}.zoo-port-type--chip{flex:0 0 auto;padding:1px 6px;border-radius:999px;--corner-shape: round;opacity:1}.zoo-port-conn{font-size:11px;font-weight:600}.zoo-port-hint{font-size:10.5px;color:var(--faint)}.zoo-port-preview{font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.zoo-handle.react-flow__handle{position:relative!important;transform:none!important;inset:auto!important;width:12px;height:12px;border-radius:50%;--corner-shape: round;border:2px solid;flex:0 0 auto}.zoo-node--component .zoo-handle.react-flow__handle{margin-left:-13px}.zoo-port-row--out .zoo-handle.react-flow__handle{margin-right:-13px}.react-flow__handle.connectionindicator:hover{box-shadow:0 0 0 4px #1c1e321a}.zoo-control{background:var(--panel-3);border:1px solid var(--border);color:var(--text);font-size:12px;padding:4px 7px;border-radius:calc(6px * var(--zoo-round-scale, 1));width:100%;outline:none;font-family:inherit}.zoo-control:focus{border-color:var(--accent)}select.zoo-control{cursor:pointer}.zoo-toggle{display:inline-flex;align-items:center}.zoo-toggle input{display:none}.zoo-toggle-track{width:32px;height:18px;border-radius:999px;--corner-shape: round;background:var(--panel-3);border:1px solid var(--border-2);position:relative;transition:transform .15s ease}.zoo-toggle-track:after{content:"";position:absolute;top:1px;left:1px;width:14px;height:14px;border-radius:999px;--corner-shape: round;background:var(--muted);transition:transform .15s ease}.zoo-toggle input:checked+.zoo-toggle-track{background:var(--accent);border-color:var(--accent)}.zoo-toggle input:checked+.zoo-toggle-track:after{left:15px;background:#fff}.zoo-stage{background:#f4f5f8;background-image:linear-gradient(45deg,#eaecf2 25%,transparent 25%),linear-gradient(-45deg,#eaecf2 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eaecf2 75%),linear-gradient(-45deg,transparent 75%,#eaecf2 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;padding:22px;display:flex;align-items:center;justify-content:center;min-height:60px;cursor:default}.zoo-stage-loading{color:#94a3b8;font-size:12px;font-family:var(--mono)}.zoo-preview-wrap{position:relative;display:inline-block}.zoo-frozen{display:inline-block;pointer-events:none;-webkit-user-select:none;user-select:none}.zoo-frozen-cover.is-overlay{position:absolute;top:0;left:0;z-index:1;pointer-events:none}.zoo-stage-skeleton{border-radius:calc(6px * var(--zoo-round-scale, 1));background:linear-gradient(100deg,var(--surface-2, #eceef1) 30%,var(--surface-1, #f6f7f9) 50%,var(--surface-2, #eceef1) 70%);background-size:200% 100%;animation:zoo-skeleton-shimmer 1.2s ease-in-out infinite;pointer-events:none}@keyframes zoo-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.zoo-preview-frame{border:none;display:block;width:100%;height:100%;background:transparent;overflow:hidden;color-scheme:light}.zoo-resize-handle{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;z-index:4;background:linear-gradient(135deg,transparent 46%,var(--accent) 46%,var(--accent) 60%,transparent 60%,transparent 72%,var(--accent) 72%,var(--accent) 86%,transparent 86%);opacity:0;transition:opacity .12s ease;touch-action:none}.zoo-stage-item:hover .zoo-resize-handle,.zoo-stage-item.is-selected .zoo-resize-handle,.zoo-preview-wrap:hover .zoo-resize-handle{opacity:.7}.zoo-doc-frame .zoo-preview-wrap{outline:1px dashed var(--border-2);outline-offset:2px}.zoo-doc-frame .zoo-resize-handle{opacity:.85}.zoo-resize-handle:hover{opacity:1!important}.zoo-peer-cluster{display:flex;align-items:center;gap:5px;margin-bottom:3px;white-space:nowrap}.zoo-peer-avatars{display:inline-flex}.zoo-peer-avatars>.zoo-peer-avatar:not(:first-child){margin-left:-7px}.zoo-peer-avatar{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;--corner-shape: round;border:1.5px solid var(--panel, #fff);font-size:9.5px;font-weight:700;line-height:1;box-shadow:0 1px 3px #0003}.zoo-peer-avatar--animal,.zoo-peer-avatar--img{background:#fff;border-width:2px;overflow:hidden}.zoo-peer-avatar--animal img{width:100%;height:100%;object-fit:contain;display:block;padding:1px;box-sizing:border-box}.zoo-peer-avatar--img img{width:100%;height:100%;object-fit:cover;display:block}.zoo-peer-more{background:var(--panel-3, #e6e8ef);color:var(--text, #2c2e36);font-size:9.5px}.zoo-peer-label{font-size:10.5px;font-weight:700;line-height:1;padding:3px 6px;border-radius:calc(5px * var(--zoo-round-scale, 1));box-shadow:0 1px 4px #0000002e}.zoo-peer-cluster .zoo-peer-label:not([style]){background:var(--panel, #fff);color:var(--text, #2c2e36);border:1px solid var(--border-2, #d7dae3)}.zoo-peer-pop{display:flex;flex-direction:column;gap:4px;min-width:130px;padding:7px;background:var(--panel, #fff);border:1px solid var(--border-2, #d7dae3);border-radius:calc(9px * var(--zoo-round-scale, 1));box-shadow:0 8px 24px #0000002e}.zoo-peer-pop-row{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:500;color:var(--text, #2c2e36)}.zoo-render-error{display:flex;flex-direction:column;gap:4px;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:calc(8px * var(--zoo-round-scale, 1));padding:10px 12px;font-size:12px;font-family:var(--mono);max-width:280px}.zoo-crash-btn{padding:7px 16px;border-radius:calc(9px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel);color:var(--text);font-size:13px;font-weight:600;cursor:pointer}.zoo-crash-btn:hover{border-color:var(--accent)}.zoo-crash-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-crash-btn--primary:hover{background:var(--accent-2);border-color:var(--accent-2)}.zoo-modalcrash-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;background:#181c2d52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.zoo-modalcrash-card{display:flex;flex-direction:column;gap:10px;align-items:flex-start;max-width:380px;padding:20px 22px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(14px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-pop);color:var(--text);font-size:14px}.zoo-modalcrash-msg{color:var(--muted);font-size:12.5px;font-family:var(--mono);word-break:break-word}.zoo-node-body--data{flex-direction:row}.zoo-data-label{background:transparent;border:1px solid transparent;color:var(--text);font-weight:700;font-size:13px;padding:2px 4px;border-radius:calc(6px * var(--zoo-round-scale, 1));width:90px;outline:none}.zoo-data-label:hover,.zoo-data-label:focus{border-color:var(--border-2);background:var(--panel-3)}.zoo-data-format{margin-left:auto;background:var(--panel-3);border:1px solid var(--border-2);color:var(--data);font-size:10px;font-weight:700;border-radius:calc(6px * var(--zoo-round-scale, 1));padding:2px 4px;outline:none}.zoo-data-editor{width:220px;min-height:120px;resize:vertical;background:var(--panel-2);border:none;border-right:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:12px;line-height:1.5;padding:10px 12px;outline:none}.zoo-data-editor:focus{background:var(--panel)}.zoo-data-error{padding:7px 11px;background:#fef3f2;color:#b42318;font-family:var(--mono);font-size:11px;border-top:1px solid #fbd5d2}.zoo-inspector{width:304px;flex:0 0 auto;background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.zoo-insp-scroll{flex:1;overflow-y:auto;padding:14px}.zoo-insp-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700}.zoo-insp-fmt{margin-left:auto;font-size:10px;font-weight:700;color:var(--data-ink);background:var(--data-soft);padding:2px 7px;border-radius:999px;--corner-shape: round}.zoo-insp-desc{color:var(--muted);font-size:12.5px;line-height:1.5;margin:8px 0 6px}.zoo-insp-file{font-family:var(--mono);font-size:11px;color:var(--faint)}.zoo-insp-h{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:18px 0 8px;font-weight:700}.zoo-insp-ports{display:flex;flex-direction:column;gap:5px}.zoo-insp-port{display:flex;align-items:center;gap:8px;font-size:12.5px}.zoo-dot{width:9px;height:9px;border-radius:50%;--corner-shape: round;flex:0 0 auto}.zoo-insp-pname{font-weight:600}.zoo-insp-ptype{font-size:10px;font-weight:700;text-transform:uppercase}.zoo-insp-conn{margin-left:auto;font-size:10px;color:var(--good);font-weight:700;text-transform:uppercase}.zoo-insp-unconn{margin-left:auto;font-size:10px;color:var(--faint);text-transform:uppercase}.zoo-insp-ok{color:var(--good);font-size:12px;margin:8px 0 0}.zoo-insp-err{color:var(--bad);font-size:12px;font-family:var(--mono);margin:8px 0 0}.zoo-json{background:var(--panel-2);border:1px solid var(--border);border-radius:calc(9px * var(--zoo-round-scale, 1));padding:11px;font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--text);overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:240px}.zoo-actionlog{display:flex;flex-direction:column;gap:4px}.zoo-action{font-family:var(--mono);font-size:12px;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:calc(7px * var(--zoo-round-scale, 1));padding:6px 9px}.zoo-action b{color:var(--accent-ink)}.zoo-action span{color:var(--text)}.zoo-legend{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:9px;padding:11px 14px;border-top:1px solid var(--border);background:var(--panel-2)}.zoo-legend-item{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.react-flow__controls.zoo-controls{box-shadow:var(--shadow);border-radius:10px}.react-flow__controls.zoo-controls button{background:var(--panel-2);border-bottom:1px solid var(--border);color:var(--text);width:28px;height:28px}.react-flow__controls.zoo-controls button:first-of-type{--corner-shape: squircle;border-radius:10px 10px 0 0}.react-flow__controls.zoo-controls button:last-of-type{--corner-shape: squircle;border-bottom:none;border-radius:0 0 10px 10px}.react-flow__controls.zoo-controls button:hover{background:var(--panel-3)}.react-flow__controls.zoo-controls button svg{fill:var(--muted)}.zoo-minimap{border-radius:calc(10px * var(--zoo-round-scale, 1));overflow:hidden;border:1px solid var(--border);background:var(--panel)!important}.react-flow__edge-path{stroke-linecap:round}.react-flow__handle{cursor:crosshair}.react-flow__attribution{display:none}.zoo-center{flex:1;min-width:0;display:flex;flex-direction:column}.zoo-stage-host{position:relative;flex:0 0 auto;overflow:hidden}.zoo-wiring-host{position:relative;flex:1;min-height:0}.zoo-wiring-host .zoo-canvas{position:absolute;top:0;right:0;bottom:0;left:0;flex:none}.zoo-divider{flex:0 0 auto;height:9px;background:var(--panel);border-top:1px solid var(--border);border-bottom:1px solid var(--border);cursor:ns-resize;display:flex;align-items:center;justify-content:center;z-index:4}.zoo-divider:hover{background:var(--panel-2)}.zoo-divider-grip{width:46px;height:3px;border-radius:calc(3px * var(--zoo-round-scale, 1));background:var(--border-2)}.zoo-divider:hover .zoo-divider-grip{background:var(--accent)}.zoo-stage-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background-color:#f5f6f9;background-image:radial-gradient(circle,#d6d9e2 1.1px,transparent 1.1px);background-size:22px 22px;cursor:grab;touch-action:none}.zoo-stage-pane:active{cursor:grabbing}.zoo-stage-world{position:absolute;top:0;left:0;transition:transform .36s cubic-bezier(.22,1,.36,1)}.zoo-stage-world.is-interacting{will-change:transform;transition:none}@media(prefers-reduced-motion:reduce){.zoo-stage-world{transition:none}}.zoo-stage-item{position:absolute;width:max-content;touch-action:none}.zoo-stage-item.is-selected{outline:2px solid var(--accent);outline-offset:5px;border-radius:calc(3px * var(--zoo-round-scale, 1))}.zoo-stage-bar{position:absolute;top:-24px;left:-2px;height:21px;display:flex;align-items:center;gap:5px;padding:0 9px;font-size:11px;font-weight:600;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:calc(6px * var(--zoo-round-scale, 1));white-space:nowrap;cursor:grab;opacity:0;transition:opacity .12s ease}.zoo-stage-item:hover .zoo-stage-bar,.zoo-stage-item.is-selected .zoo-stage-bar{opacity:1}.zoo-stage-bar:active{cursor:grabbing}.zoo-stage-grip{color:var(--faint);letter-spacing:-2px}.zoo-stage-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:13px;pointer-events:none;padding:0 40px;text-align:center}.zoo-pane-tag{position:absolute;left:12px;bottom:11px;font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);background:#fffffff0;border:1px solid var(--border);padding:3px 9px;border-radius:999px;--corner-shape: round;pointer-events:none;z-index:4}.zoo-pane-tag--wiring{left:50%;transform:translate(-50%)}.zoo-stage-reset{position:absolute;right:12px;bottom:11px;width:30px;height:30px;border-radius:calc(8px * var(--zoo-round-scale, 1));background:var(--panel-2);border:1px solid var(--border);color:var(--muted);font-size:15px;z-index:4}.zoo-stage-reset:hover{color:var(--text);border-color:var(--accent)}.zoo-stage-zoom{position:absolute;right:12px;bottom:11px;display:flex;align-items:center;background:var(--panel-2);border:1px solid var(--border);border-radius:calc(8px * var(--zoo-round-scale, 1));overflow:hidden;z-index:4}.zoo-stage-zoom button{background:transparent;border:none;color:var(--muted);width:28px;height:28px;font-size:15px;font-weight:700;line-height:1}.zoo-stage-zoom button:hover{background:var(--panel-3);color:var(--text)}.zoo-stage-zoom-label{width:auto!important;min-width:46px;font-size:11px!important;font-weight:600!important;font-variant-numeric:tabular-nums;border-left:1px solid var(--border)!important;border-right:1px solid var(--border)!important}.zoo-collapse{background:transparent;border:none;color:var(--muted);font-size:11px;line-height:1;padding:2px 3px;margin:0 -2px 0 -4px;border-radius:calc(4px * var(--zoo-round-scale, 1))}.zoo-collapse:hover{color:var(--text);background:var(--panel-3)}.zoo-node--transform{border-color:color-mix(in srgb,var(--app-amber) 32%,var(--panel));min-width:0}.zoo-node--transform.is-selected{border-color:var(--app-amber);box-shadow:0 0 0 1px var(--app-amber),0 10px 30px #c57f0c2e}.zoo-node-dot--xf{background:var(--app-amber);box-shadow:0 0 0 3px #c57f0c29}.zoo-node-body--xf{display:flex;align-items:stretch}.zoo-node-body--xf .zoo-ports{border-bottom:none;justify-content:center}.zoo-xf-mid{flex:1;min-width:120px;max-width:200px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;justify-content:center;border-left:1px solid var(--border);border-right:1px solid var(--border)}.zoo-xf-desc{font-size:11px;color:var(--muted);line-height:1.4}.zoo-node-body--xf .zoo-ports--out{border-left:none}.zoo-xf-group{margin-bottom:6px}.zoo-xf-group-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);margin:4px 2px 5px}.zoo-xf-chips{display:flex;flex-wrap:wrap;gap:5px}.zoo-xf-chip{padding:5px 9px;border-radius:calc(7px * var(--zoo-round-scale, 1));border:1px solid var(--app-amber-bg);background:var(--app-amber-bg);color:var(--app-amber);font-size:11.5px;font-weight:600}.zoo-xf-chip:hover{border-color:var(--app-amber);background:var(--app-amber-bg)}.zoo-genpop-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.zoo-genpop{position:fixed;width:320px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(12px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-pop),0 0 0 1px #e9730f14;padding:12px;display:flex;flex-direction:column;gap:9px;font-family:var(--sans);color:var(--text)}.zoo-genpop-head{display:flex;align-items:center;gap:7px}.zoo-genpop-spark{font-size:13px}.zoo-genpop-title{font-size:13px;font-weight:700}.zoo-genpop-x{margin-left:auto;background:transparent;border:none;color:var(--faint);font-size:17px;line-height:1;cursor:pointer}.zoo-genpop-x:hover{color:var(--bad)}.zoo-genpop-prop{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:6px 8px;background:var(--panel-3);border:1px solid var(--border);border-radius:calc(7px * var(--zoo-round-scale, 1))}.zoo-genpop-name{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--text)}.zoo-genpop-ts{font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;flex:1 1 100%}.zoo-genpop-input{background:var(--panel-3);border:1px solid var(--border);color:var(--text);font-family:inherit;font-size:12px;border-radius:calc(7px * var(--zoo-round-scale, 1));padding:7px 8px;resize:vertical;min-height:52px;outline:none}.zoo-genpop-input:focus{border-color:var(--accent)}.zoo-genpop-count{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--muted)}.zoo-genpop-count .zoo-control{width:70px}.zoo-genpop-error{font-size:11.5px;color:var(--bad);background:#f8717114;border:1px solid rgba(248,113,113,.3);border-radius:calc(7px * var(--zoo-round-scale, 1));padding:6px 8px;max-height:120px;overflow:auto;word-break:break-word}.zoo-genpop-actions{display:flex;align-items:center;gap:8px}.zoo-genpop-model{background:transparent;border:1px solid var(--border);color:var(--muted);font-size:11px;border-radius:calc(7px * var(--zoo-round-scale, 1));padding:5px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.zoo-genpop-model:hover{border-color:var(--border-2);color:var(--text)}.zoo-genpop-gear{opacity:.8}.zoo-genpop-go{margin-left:auto;display:inline-flex;align-items:center;gap:6px;background:var(--accent);border:1px solid var(--accent);color:#fff;font-size:12px;font-weight:600;border-radius:calc(7px * var(--zoo-round-scale, 1));padding:6px 12px;cursor:pointer}.zoo-genpop-go:hover{background:var(--accent-2);border-color:var(--accent-2)}.zoo-genpop-go:disabled{opacity:.7;cursor:default}.zoo-typepop{width:300px}.zoo-typepop-reqtag{margin-left:auto;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--faint)}.zoo-typepop-ts{margin:0;background:var(--panel-2);border:1px solid var(--border);border-radius:calc(8px * var(--zoo-round-scale, 1));padding:9px 11px;font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto}.zoo-typepop-row{display:flex;gap:8px;font-size:11.5px}.zoo-typepop-label{flex:0 0 auto;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.zoo-typepop-val{min-width:0;color:var(--text);font-family:var(--mono);word-break:break-word}.zoo-typepop-desc{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}.zoo-frozen-chip{display:inline-flex;align-items:center;margin-left:6px;padding:4px 11px;border-radius:999px;--corner-shape: round;border:1px solid var(--warn-soft);background:var(--warn-soft);color:var(--warn);font-size:11.5px;font-weight:700;letter-spacing:.2px;text-transform:uppercase}.zoo-frozen-chip.zoo-collab-chip{border-color:var(--accent);background:var(--accent);color:#fff}.zoo-daemon-chip{display:inline-flex;align-items:center;gap:6px;margin-left:6px;padding:4px 11px;border-radius:999px;--corner-shape: round;font-size:11.5px;font-weight:700;letter-spacing:.2px;white-space:nowrap}.zoo-daemon-chip .zoo-daemon-dot{width:7px;height:7px;border-radius:50%;--corner-shape: round;flex:none;background:currentColor}.zoo-daemon-chip--offline{border:1px solid var(--warn-soft);background:var(--warn-soft);color:var(--warn)}.zoo-daemon-chip--live{border:1px solid transparent;background:transparent;color:var(--good);text-transform:uppercase;padding-left:4px;padding-right:4px}.zoo-btn--offline{color:var(--warn);border-color:var(--warn-soft);background:var(--warn-soft);cursor:not-allowed}.zoo-btn--offline:hover{background:var(--warn-soft);border-color:var(--warn-soft)}.zoo-spin{width:12px;height:12px;border-radius:50%;--corner-shape: round;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:zoo-spin .7s linear infinite}@keyframes zoo-spin{to{transform:rotate(360deg)}}.zoo-compwin{position:fixed;width:324px;height:470px;min-width:240px;min-height:240px;max-height:86vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(12px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-lg);z-index:50}.zoo-compwin-bar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border-bottom:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:calc(12px * var(--zoo-round-scale, 1)) calc(12px * var(--zoo-round-scale, 1)) 0 0}.zoo-compwin-bar:active{cursor:grabbing}.zoo-compwin-grip{color:var(--faint);flex:0 0 auto}.zoo-compwin-title{font-size:13px;font-weight:700;flex:1}.zoo-compwin-close{background:transparent;border:none;color:var(--faint);display:inline-flex;padding:3px;border-radius:calc(6px * var(--zoo-round-scale, 1))}.zoo-compwin-close:hover{color:var(--text);background:var(--panel-3)}.zoo-compwin-search{display:flex;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid var(--border)}.zoo-compwin-search-ico{color:var(--faint);flex:0 0 auto}.zoo-compwin-search input{flex:1;background:var(--panel-3);border:1px solid var(--border);color:var(--text);font-size:12px;padding:5px 8px;border-radius:calc(7px * var(--zoo-round-scale, 1));outline:none}.zoo-compwin-search input:focus{border-color:var(--accent)}.zoo-compwin-body{flex:1;overflow-y:auto;padding:8px}.zoo-thumb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-bottom:6px}.zoo-thumb{display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--border);border-radius:calc(9px * var(--zoo-round-scale, 1));background:var(--panel-2);text-align:left}.zoo-thumb:hover{border-color:var(--accent)}.zoo-thumb-box{position:relative;height:94px;border-radius:calc(6px * var(--zoo-round-scale, 1));overflow:hidden;background-color:#f4f5f8;background-image:linear-gradient(45deg,#eaecf2 25%,transparent 25%),linear-gradient(-45deg,#eaecf2 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eaecf2 75%),linear-gradient(-45deg,transparent 75%,#eaecf2 75%);background-size:14px 14px;background-position:0 0,0 7px,7px -7px,-7px 0}.zoo-thumb-frame{position:absolute;top:0;left:0;border:none;background:transparent;transform-origin:top left;pointer-events:none}.zoo-thumb-ph{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#b9c0cc;background-color:#f4f5f8}.zoo-thumb-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-thumb-meta{font-size:10px;color:var(--faint)}.zoo-panel-head h3{display:inline-flex;align-items:center;gap:6px}.zoo-h3-ico{color:var(--faint)}.zoo-folder-ico{display:inline-flex;color:var(--faint);flex:0 0 auto}.zoo-page-icon{display:inline-flex;align-items:center;opacity:.85}.zoo-folder-chevron{display:inline-flex;align-items:center;justify-content:center}.zoo-folder:hover .zoo-page-act{opacity:1}.zoo-pages--nested{padding-left:14px}.zoo-pages.is-drop,.zoo-folder.is-drop{outline:1px dashed var(--accent);outline-offset:-2px;border-radius:calc(8px * var(--zoo-round-scale, 1));background:var(--accent-soft)}.zoo-drop-hint{font-size:10.5px;color:var(--faint);padding:6px 8px;font-style:italic}.zoo-page-act{display:inline-flex;align-items:center}.zoo-add-data{display:inline-flex;align-items:center;justify-content:center;gap:5px}.zoo-reset{display:inline-flex;align-items:center;justify-content:center;gap:6px}.zoo-btn{display:inline-flex;align-items:center;gap:6px}.zoo-logo,.zoo-project-gear,.zoo-xf-chip{display:inline-flex;align-items:center}.zoo-node--html{border-color:var(--border-2)}.zoo-node--html.is-selected{border-color:#94a3b8;box-shadow:0 0 0 1px #94a3b8,var(--shadow-pop, 0 16px 40px rgba(0, 0, 0, .2))}.zoo-node-dot--html{background:#94a3b8;box-shadow:0 0 8px #94a3b8}.zoo-html-modes{display:inline-flex;gap:2px;margin-left:auto;background:var(--panel-3);border:1px solid var(--border);border-radius:calc(7px * var(--zoo-round-scale, 1));padding:2px}.zoo-html-mode{border:none;background:transparent;color:var(--muted);font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:calc(5px * var(--zoo-round-scale, 1));letter-spacing:.3px}.zoo-html-mode:hover{color:var(--text)}.zoo-html-mode.is-active{background:var(--accent);color:#fff}.zoo-self-out{border-left:none!important;min-width:0!important}.zoo-node--data.is-collapsed .zoo-ports--out,.zoo-node--html.is-collapsed .zoo-ports--out{border-left:none;flex:1;min-width:0}.zoo-node--control.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow-pop, 0 16px 40px rgba(0, 0, 0, .2))}.zoo-node-dot--control{background:var(--accent);box-shadow:0 0 8px var(--accent)}.zoo-node-body--control{flex-direction:row}.zoo-ctrl-add{background:var(--panel-3);border:1px solid var(--border-2);color:var(--accent-ink, var(--accent));border-radius:calc(6px * var(--zoo-round-scale, 1));padding:2px 4px;display:inline-flex;align-items:center}.zoo-ctrl-add:hover{border-color:var(--accent)}.zoo-ctrl-opt{gap:7px}.zoo-ctrl-opt.is-active{background:var(--accent-soft, rgba(233, 115, 15, .08));border-radius:calc(7px * var(--zoo-round-scale, 1))}.zoo-ctrl-radio{flex:0 0 auto;width:13px;height:13px;border-radius:50%;--corner-shape: round;border:2px solid var(--border-2);background:transparent;padding:0}.zoo-ctrl-radio:hover{border-color:var(--accent)}.zoo-ctrl-radio.is-active{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 2px var(--panel)}.zoo-ctrl-opt-label{flex:1;min-width:0;background:transparent;border:1px solid transparent;color:var(--text);font-size:12.5px;font-weight:600;padding:2px 5px;border-radius:calc(6px * var(--zoo-round-scale, 1));outline:none}.zoo-ctrl-opt-label:hover,.zoo-ctrl-opt-label:focus{border-color:var(--border-2);background:var(--panel-3)}.zoo-ctrl-opt-x{flex:0 0 auto;background:transparent;border:none;color:var(--faint);display:inline-flex;padding:2px}.zoo-ctrl-opt-x:hover{color:var(--bad)}.zoo-doc{height:100%;display:flex;min-height:0;background:var(--panel-2)}.zoo-doc--empty{align-items:center;justify-content:center}.zoo-doc-empty{max-width:360px;text-align:center;color:var(--muted);font-size:13px}.zoo-doc-empty b{display:block;color:var(--text);font-size:15px;margin-bottom:6px}.zoo-doc-empty p{margin:0;line-height:1.5}.zoo-doc-stage{flex:1;min-width:0;position:relative;display:grid;place-items:center;overflow:auto;background:radial-gradient(900px 460px at 50% 0%,var(--panel),var(--panel-2))}.zoo-doc-canvas{display:grid;place-items:center;padding:28px}.zoo-doc-frame{transform-origin:center center}.zoo-doc-zoombar{position:absolute;top:12px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:2px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(9px * var(--zoo-round-scale, 1));padding:3px;box-shadow:var(--shadow-sm)}.zoo-doc-zoombar button{background:transparent;border:none;color:var(--muted);font-size:12px;font-weight:600;padding:4px 6px;border-radius:calc(6px * var(--zoo-round-scale, 1));display:inline-flex;align-items:center}.zoo-doc-zoombar button:hover{background:var(--panel-3);color:var(--text)}.zoo-doc-zoomval{min-width:42px;justify-content:center}.zoo-doc-side{flex:0 0 312px;border-left:1px solid var(--border);background:var(--panel);overflow-y:auto;padding:14px 14px 28px}.zoo-doc-sec{margin-bottom:18px}.zoo-doc-sec h4{margin:0 0 9px;font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700}.zoo-doc-sec-head{display:flex;align-items:center;justify-content:space-between}.zoo-doc-edit{background:var(--panel-3);border:1px solid var(--border-2);color:var(--muted);font-size:11px;font-weight:600;padding:3px 10px;border-radius:calc(7px * var(--zoo-round-scale, 1));margin-bottom:9px}.zoo-doc-edit:hover{color:var(--text);border-color:var(--accent)}.zoo-doc-desc{margin:0 0 12px;font-size:12.5px;line-height:1.55;color:var(--text)}.zoo-tray-ctrl{margin-bottom:10px}.zoo-tray-label{font-size:11.5px;font-weight:600;color:var(--muted);margin-bottom:5px}.zoo-tray-opts{display:flex;flex-wrap:wrap;gap:6px}.zoo-tray-opt{padding:6px 12px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel-2);color:var(--text);font-size:12.5px;font-weight:600}.zoo-tray-opt:hover{border-color:var(--accent)}.zoo-tray-opt.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-doc-props{width:100%;border-collapse:collapse;font-size:12px}.zoo-doc-props th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);font-weight:700;padding:4px 6px;border-bottom:1px solid var(--border)}.zoo-doc-props td{padding:5px 6px;border-bottom:1px solid var(--border);vertical-align:top}.zoo-doc-props code{font-family:var(--mono);font-size:11.5px;color:var(--accent-ink, var(--accent))}.zoo-doc-type{font-family:var(--mono);font-size:11px;color:var(--muted);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoo-doc-def{font-family:var(--mono);font-size:11px;color:var(--faint)}.zoo-doc-notes-edit{width:100%;min-height:150px;resize:vertical;background:var(--panel-3);border:1px solid var(--border);border-radius:calc(8px * var(--zoo-round-scale, 1));color:var(--text);font-family:var(--mono);font-size:12px;line-height:1.5;padding:9px 10px;outline:none}.zoo-doc-notes-edit:focus{border-color:var(--accent)}.zoo-doc-empty-note{margin:0;font-size:12px;color:var(--faint)}.zoo-doc-notes{font-size:13px;line-height:1.6;color:var(--text);word-break:break-word}.zoo-doc-notes h1,.zoo-doc-notes h2,.zoo-doc-notes h3,.zoo-doc-notes h4{margin:14px 0 6px;line-height:1.3}.zoo-doc-notes h1{font-size:17px}.zoo-doc-notes h2{font-size:15px}.zoo-doc-notes h3{font-size:13.5px}.zoo-doc-notes p{margin:0 0 8px}.zoo-doc-notes ul{margin:0 0 8px;padding-left:20px}.zoo-doc-notes code{font-family:var(--mono);font-size:12px;background:var(--panel-3);padding:1px 5px;border-radius:calc(5px * var(--zoo-round-scale, 1))}.zoo-doc-notes a{color:var(--accent-ink, var(--accent))}.zoo-md-pre{background:var(--panel-3);border:1px solid var(--border);border-radius:calc(8px * var(--zoo-round-scale, 1));padding:9px 11px;overflow-x:auto;font-size:11.5px;line-height:1.5}.zoo-md-pre code{background:none;padding:0}.zoo-side{flex:0 0 auto;height:100%;min-height:0;overflow:hidden}.zoo-side>.zoo-sidebar,.zoo-side>.zoo-inspector{width:100%;height:100%}.zoo-resizer{flex:0 0 auto;width:6px;align-self:stretch;position:relative;cursor:col-resize;touch-action:none;background:transparent}.zoo-resizer:after{content:"";position:absolute;top:0;bottom:0;left:2px;width:2px;background:var(--border);transition:background .12s ease}.zoo-resizer:hover:after,.zoo-resizer:active:after{background:var(--accent)}.zoo-edge-tab{flex:0 0 auto;width:14px;align-self:stretch;background:var(--panel);border:none;color:var(--muted);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;transition:background .12s ease,color .12s ease}.zoo-edge-tab--left{border-right:1px solid var(--border)}.zoo-edge-tab--right{border-left:1px solid var(--border)}.zoo-edge-tab:hover{background:var(--accent-soft);color:var(--accent-ink)}.zoo-modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1300;display:flex;align-items:center;justify-content:center;padding:24px;background:#14162661;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.zoo-modal-card{width:360px;max-width:100%;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(12px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-pop, 0 18px 50px rgba(0, 0, 0, .2));padding:18px;display:flex;flex-direction:column;gap:12px}.zoo-modal-title{margin:0;font-size:15px;font-weight:700;color:var(--text)}.zoo-modal-label{font-size:12px;color:var(--muted);margin-bottom:-6px}.zoo-modal-input{font-size:13px;padding:8px 10px}.zoo-modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.zoo-modal-btn{font-size:13px;font-weight:600;padding:8px 16px;border-radius:calc(9px * var(--zoo-round-scale, 1));border:1px solid var(--border-2)}.zoo-modal-btn--ghost{background:transparent;color:var(--muted)}.zoo-modal-btn--ghost:hover{color:var(--text);background:var(--panel-3)}.zoo-modal-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-modal-btn--primary:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}.zoo-modal-btn--primary:disabled{opacity:.5;cursor:not-allowed}.zoo-newpage-card{width:600px;max-width:100%;max-height:calc(100vh - 48px)}.zoo-newpage-listhead{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:-4px}.zoo-newpage-clear{background:transparent;border:0;padding:2px 4px;font:inherit;text-transform:none;letter-spacing:0;color:var(--accent-ink, var(--accent));font-weight:700;cursor:pointer}.zoo-newpage-clear:hover{text-decoration:underline}.zoo-newpage-grid{max-height:256px;height:100%;overflow-y:auto;display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid var(--border);border-radius:calc(10px * var(--zoo-round-scale, 1));background:var(--panel-2)}.zoo-newpage-tile{position:relative;display:flex;flex-direction:row;align-items:flex-start;gap:7px;padding:12px 12px 10px;border-radius:calc(10px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel);text-align:left;min-width:0;cursor:pointer;transition:background .12s ease,box-shadow .12s ease}.zoo-newpage-tile:hover{border-color:var(--hover-line, var(--border-2));background:var(--panel-3)}.zoo-newpage-tile.is-sel{border-color:var(--accent-line, var(--accent));background:var(--accent-soft, var(--panel-3));box-shadow:0 0 0 1px var(--accent-line, var(--accent)) inset}.zoo-newpage-tile-icon{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border-radius:calc(8px * var(--zoo-round-scale, 1));background:var(--panel-3);border:1px solid var(--border-2);font-size:11.5px;font-weight:800;letter-spacing:.5px;color:var(--muted)}.zoo-newpage-tile.is-sel .zoo-newpage-tile-icon{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-newpage-tile-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;color:var(--text)}.zoo-newpage-tile-meta{font-size:11px;color:var(--faint)}.zoo-newpage-tile-check{position:absolute;top:7px;right:7px;width:16px;height:16px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:9px;font-weight:900}.zoo-newpage-empty{grid-column:1 / -1;margin:0;padding:22px 12px;text-align:center;font-size:12.5px;color:var(--faint)}.zoo-data-head{margin-top:14px}.zoo-data-list{display:flex;flex-direction:column;gap:2px}.zoo-data-item{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:calc(8px * var(--zoo-round-scale, 1));cursor:grab;color:var(--muted);font-size:12.5px;border:1px solid transparent}.zoo-data-item:hover{background:var(--panel-2);color:var(--text)}.zoo-data-item:active{cursor:grabbing}.zoo-data-item-ico{color:var(--data-ink, var(--data));display:inline-flex;flex:0 0 auto}.zoo-data-item-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-data-item-fmt{font-size:9.5px;font-weight:700;color:var(--faint);letter-spacing:.4px}.zoo-data-item .zoo-page-act{opacity:0}.zoo-data-item:hover .zoo-page-act{opacity:1}.zoo-data-linked{font-size:9.5px;font-weight:700;letter-spacing:.3px;color:#fff;background:var(--accent);padding:1px 6px;border-radius:999px;--corner-shape: round;white-space:nowrap}.zoo-ctxmenu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1390}.zoo-ctxmenu{position:fixed;z-index:1391;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(9px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-pop, 0 18px 50px rgba(0, 0, 0, .2));padding:4px;min-width:184px}.zoo-ctxmenu button{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;color:var(--text);font-size:12.5px;font-weight:600;padding:8px 9px;border-radius:calc(6px * var(--zoo-round-scale, 1));text-align:left}.zoo-ctxmenu button:hover{background:var(--accent-soft);color:var(--accent-ink)}.zoo-ctxmenu-sep{height:1px;margin:4px 6px;background:var(--border-2)}.zoo-autodoc-card{width:420px;gap:14px}.zoo-autodoc-sub{margin:0;font-size:12.5px;color:var(--muted);line-height:1.5}.zoo-autodoc-list{display:flex;flex-wrap:wrap;gap:5px;max-height:110px;overflow-y:auto}.zoo-autodoc-chip{font-size:11px;padding:3px 8px;border-radius:999px;--corner-shape: round;background:var(--panel-3);border:1px solid var(--border);color:var(--muted)}.zoo-autodoc-modes{display:flex;flex-direction:column;gap:7px}.zoo-autodoc-modes label{display:grid;grid-template-columns:auto 1fr;gap:1px 9px;align-items:center;padding:9px 11px;border:1px solid var(--border-2);border-radius:calc(9px * var(--zoo-round-scale, 1));cursor:pointer}.zoo-autodoc-modes label.is-active{border-color:var(--accent);background:var(--accent-soft)}.zoo-autodoc-modes input{grid-row:span 2}.zoo-autodoc-modes b{font-size:12.5px}.zoo-autodoc-modes span{font-size:11px;color:var(--muted)}.zoo-autodoc-progress{font-size:12px;font-weight:600;color:var(--accent-ink, var(--accent))}.zoo-autodoc-error{font-size:12px;color:var(--bad);background:#ef444414;border:1px solid rgba(239,68,68,.3);border-radius:calc(8px * var(--zoo-round-scale, 1));padding:6px 9px}.zoo-share-wrap{position:relative;display:inline-flex}.zoo-share-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:320px;display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(12px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-pop);font-family:var(--sans)}.zoo-share-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--text)}.zoo-share-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:999px;--corner-shape: round;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-ink);font-size:10.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.zoo-share-badge svg{color:#16a34a}.zoo-share-sub{font-size:12px;line-height:1.5;color:var(--muted)}.zoo-share-warn{display:block;margin-top:6px;padding:6px 8px;border-radius:calc(6px * var(--zoo-round-scale, 1));background:color-mix(in srgb,#b91c1c 10%,transparent);color:#b91c1c;font-size:11.5px;line-height:1.45}.zoo-share-state{font-size:12.5px;color:var(--faint);font-family:var(--mono)}.zoo-share-error{padding:8px 10px;background:#fef3f2;border:1px solid #fbd5d2;border-radius:calc(8px * var(--zoo-round-scale, 1));color:#b42318;font-size:12px}.zoo-share-urlrow{display:flex;gap:6px}.zoo-share-url{flex:1;min-width:0;background:var(--panel-3);border:1px solid var(--border-2);color:var(--text);font-family:var(--mono);font-size:12px;padding:7px 9px;border-radius:calc(8px * var(--zoo-round-scale, 1));outline:none}.zoo-share-url:focus{border-color:var(--accent)}.zoo-share-copy{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-ink);font-size:12.5px;font-weight:700;padding:7px 11px;border-radius:calc(8px * var(--zoo-round-scale, 1));transition:transform .12s ease}.zoo-share-copy:hover{border-color:var(--accent);background:#e3e6fd}.zoo-share-recapture{margin-top:8px;display:inline-flex;align-items:center;gap:5px;background:var(--panel-3);border:1px solid var(--border-2);color:var(--muted);font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:calc(7px * var(--zoo-round-scale, 1))}.zoo-share-recapture:hover:not(:disabled){color:var(--text);border-color:var(--hover-line);background:var(--hover)}.zoo-share-recapture:disabled{opacity:.55;cursor:default}.zoo-share-modes{display:flex;gap:4px;padding:3px;background:var(--panel-3);border:1px solid var(--border-2);border-radius:calc(9px * var(--zoo-round-scale, 1))}.zoo-share-mode{flex:1;padding:6px 8px;border:1px solid transparent;border-radius:calc(7px * var(--zoo-round-scale, 1));background:transparent;color:var(--muted);font-family:var(--sans);font-size:12px;font-weight:700;cursor:pointer;transition:transform .12s ease}.zoo-share-mode:hover:not(:disabled){color:var(--text)}.zoo-share-mode.is-active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}.zoo-share-mode:disabled{cursor:default;opacity:.6}.zoo-share-opt{display:flex;align-items:center;gap:8px;margin:10px 0 2px;font-size:12.5px;color:var(--text, #2c2e36);cursor:pointer}.zoo-share-opt input{accent-color:var(--accent, #e9730f)}.zoo-zmenu{position:relative;display:inline-flex}.zoo-zmenu-trigger{cursor:pointer}.zoo-zmenu-trigger.is-open{background:var(--panel-3);border-color:var(--border-2)}.zoo-zmenu-trigger>svg:first-child{color:var(--muted)}.zoo-zmenu-name{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoo-zmenu-caret{color:var(--faint);margin-left:1px;transition:transform .12s ease}.zoo-zmenu-trigger.is-open .zoo-zmenu-caret{transform:rotate(180deg)}.zoo-project--static{cursor:default;opacity:.85}.zoo-project--static:hover{border-color:var(--border-2)}.zoo-zmenu-pop{position:absolute;top:calc(100% + 7px);left:0;z-index:60;min-width:248px;max-width:330px;display:flex;flex-direction:column;gap:1px;padding:6px;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(13px * var(--zoo-round-scale, 1));box-shadow:var(--shadow-lg);animation:zoo-zmenu-in .12s ease}@keyframes zoo-zmenu-in{0%{opacity:0;transform:translateY(-4px)}}.zoo-zmenu-head{padding:6px 9px 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--faint)}.zoo-zmenu-sep{height:1px;margin:5px 4px;background:var(--border)}.zoo-zmenu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:1px solid transparent;color:var(--text);padding:8px 10px;border-radius:calc(9px * var(--zoo-round-scale, 1));font-size:13px;font-weight:500;cursor:pointer}.zoo-zmenu-item svg{color:var(--muted);flex:0 0 auto}.zoo-zmenu-item:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-line)}.zoo-zmenu-item:hover:not(:disabled) svg{color:var(--accent-ink)}.zoo-zmenu-item:disabled{opacity:.45;cursor:not-allowed}.zoo-zmenu-proj{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:1px solid transparent;color:var(--text);padding:8px 10px;border-radius:calc(9px * var(--zoo-round-scale, 1));font-size:13px;cursor:pointer}.zoo-zmenu-proj:hover{background:var(--accent-soft);border-color:var(--accent-line)}.zoo-zmenu-proj.is-current{background:var(--panel-2)}.zoo-zmenu-dot{flex:0 0 auto;width:8px;height:8px;border-radius:999px;--corner-shape: round;background:var(--faint)}.zoo-zmenu-dot.is-online{background:var(--good)}.zoo-zmenu-projname{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-zmenu-tag{flex:0 0 auto;font-size:10.5px;font-family:var(--mono);color:var(--accent-ink);background:var(--accent-soft);padding:1px 7px;border-radius:calc(6px * var(--zoo-round-scale, 1))}.zoo-zmenu-tag--muted{color:var(--faint);background:transparent}.zoo-auth-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1100px 560px at 72% -12%,#ffffff 0%,var(--bg) 58%)}.zoo-auth-card{width:380px;max-width:100%;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(var(--radius) * var(--zoo-round-scale, 1));box-shadow:var(--shadow-lg);color:var(--text);font-family:var(--sans)}.zoo-auth-brand{display:flex;align-items:center;gap:12px;padding:20px 22px 16px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border-bottom:1px solid var(--border);border-radius:calc(var(--radius) * var(--zoo-round-scale, 1)) calc(var(--radius) * var(--zoo-round-scale, 1)) 0 0}.zoo-auth-logo{display:inline-flex;padding:7px;border-radius:calc(12px * var(--zoo-round-scale, 1));background:#000;color:#fff}.zoo-auth-title{font-size:16px;font-weight:800;letter-spacing:.2px}.zoo-auth-sub{margin-top:2px;font-size:12.5px;color:var(--muted)}.zoo-auth-body{display:flex;flex-direction:column;gap:10px;padding:18px 22px 22px}.zoo-auth-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--faint)}.zoo-auth-input{background:var(--panel-3);border:1px solid var(--border-2);color:var(--text);font-size:14px;padding:9px 12px;border-radius:calc(9px * var(--zoo-round-scale, 1));outline:none;font-family:var(--sans)}.zoo-auth-input:focus{border-color:var(--accent)}.zoo-auth-hint{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}.zoo-auth-hint code,.zoo-auth-empty code{font-family:var(--mono);font-size:11.5px;color:var(--accent-ink);background:var(--accent-soft);padding:1px 6px;border-radius:calc(6px * var(--zoo-round-scale, 1));word-break:break-all}.zoo-auth-primary{margin-top:4px;background:var(--accent);border:1px solid var(--accent);color:#fff;font-size:14px;font-weight:700;padding:10px 14px;border-radius:calc(10px * var(--zoo-round-scale, 1));transition:transform .12s ease}.zoo-auth-primary:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.zoo-auth-primary:disabled{opacity:.5;cursor:not-allowed}.zoo-auth-ghost{align-self:flex-start;background:transparent;border:1px solid var(--border-2);color:var(--muted);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:calc(8px * var(--zoo-round-scale, 1))}.zoo-auth-ghost:hover{border-color:var(--accent);color:var(--text)}.zoo-auth-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-2)}.zoo-auth-who{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoo-auth-signout{flex:none;background:transparent;border:1px solid var(--border-2);color:var(--muted);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:calc(8px * var(--zoo-round-scale, 1))}.zoo-auth-signout:hover:not(:disabled){border-color:#d92d20;color:#d92d20}.zoo-auth-signout:disabled{opacity:.5;cursor:not-allowed}.zoo-auth-error{padding:9px 12px;background:#fef3f2;border:1px solid #fbd5d2;border-radius:calc(9px * var(--zoo-round-scale, 1));color:#b42318;font-size:12.5px}.zoo-auth-state{font-size:12.5px;color:var(--faint);font-family:var(--mono);padding:6px 0}.zoo-auth-empty{font-size:12.5px;line-height:1.6;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:calc(9px * var(--zoo-round-scale, 1));padding:12px 14px}.zoo-auth-daemon{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--panel-2);border:1px solid var(--border-2);color:var(--text);padding:10px 12px;border-radius:calc(10px * var(--zoo-round-scale, 1));font-size:13px;transition:transform .12s ease}.zoo-auth-daemon:hover{border-color:var(--accent);background:var(--accent-soft)}.zoo-auth-daemon-dot{flex:0 0 auto;width:8px;height:8px;border-radius:999px;--corner-shape: round;background:var(--faint)}.zoo-auth-daemon-dot.is-online{background:var(--good)}.zoo-auth-daemon-name{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-auth-daemon-state{font-size:11px;color:var(--faint);font-family:var(--mono)}.zoo-auth-success{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text);padding:4px 0}.zoo-auth-success-dot{flex:0 0 auto;width:10px;height:10px;border-radius:999px;--corner-shape: round;background:var(--good)}.zoo-wiz-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#14162661;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow:auto}.zoo-wiz-card{width:640px;max-width:100%;max-height:80vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border-2);border-radius:calc(var(--radius) * var(--zoo-round-scale, 1));box-shadow:var(--shadow-lg);color:var(--text);font-family:var(--sans)}.zoo-wiz-head{flex:0 0 auto;display:flex;align-items:flex-start;gap:12px;padding:18px 20px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border-bottom:1px solid var(--border);border-radius:calc(var(--radius) * var(--zoo-round-scale, 1)) calc(var(--radius) * var(--zoo-round-scale, 1)) 0 0}.zoo-wiz-head-text{flex:1;min-width:0}.zoo-wiz-title{margin:0;font-size:17px;font-weight:800;letter-spacing:.2px}.zoo-wiz-intro{margin:6px 0 0;font-size:12.5px;line-height:1.5;color:var(--muted)}.zoo-wiz-close{flex:0 0 auto;width:28px;height:28px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid transparent;background:transparent;color:var(--faint);font-size:20px;line-height:1}.zoo-wiz-close:hover{color:var(--text);border-color:var(--border-2);background:var(--panel-3)}.zoo-wiz-pathbar{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--panel-2)}.zoo-wiz-navbtn{flex:0 0 auto;background:var(--panel-3);border:1px solid var(--border-2);color:var(--text);font-size:12.5px;font-weight:600;padding:6px 11px;border-radius:calc(8px * var(--zoo-round-scale, 1));transition:transform .12s ease}.zoo-wiz-navbtn:hover:not(:disabled){background:var(--hover);border-color:var(--hover-line)}.zoo-wiz-navbtn:disabled{opacity:.4;cursor:not-allowed}.zoo-wiz-path{flex:1;min-width:0;font-family:var(--mono);font-size:12px;color:var(--muted);background:var(--panel);border:1px solid var(--border);border-radius:calc(8px * var(--zoo-round-scale, 1));padding:6px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left}.zoo-wiz-add-current{flex:0 0 auto;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-ink);font-size:12.5px;font-weight:700;padding:6px 12px;border-radius:calc(8px * var(--zoo-round-scale, 1));transition:transform .12s ease}.zoo-wiz-add-current:hover:not(:disabled){border-color:var(--accent);background:#e3e6fd}.zoo-wiz-add-current:disabled{background:var(--panel-3);border-color:var(--border);color:var(--good, #34d399);cursor:default}.zoo-wiz-list{flex:1;min-height:120px;overflow-y:auto;padding:8px}.zoo-wiz-state{padding:28px 12px;text-align:center;font-size:13px;color:var(--faint);font-family:var(--mono)}.zoo-wiz-error{display:flex;flex-direction:column;gap:4px;margin:8px;padding:12px 14px;background:#fef3f2;border:1px solid #fbd5d2;border-radius:calc(9px * var(--zoo-round-scale, 1));color:#b42318;font-size:12.5px}.zoo-wiz-error b{color:#912018}.zoo-wiz-error span{font-family:var(--mono);font-size:11.5px;word-break:break-word}.zoo-wiz-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid transparent;font-size:13px}.zoo-wiz-row--dir{cursor:pointer;color:var(--text)}.zoo-wiz-row--dir:hover{background:var(--panel-2);border-color:var(--border)}.zoo-wiz-row--file{color:var(--faint);cursor:default}.zoo-wiz-icon{flex:0 0 auto;font-size:14px;opacity:.9;line-height:1}.zoo-wiz-row--file .zoo-wiz-icon{opacity:.5}.zoo-wiz-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-wiz-row-add{flex:0 0 auto;opacity:0;background:var(--panel-3);border:1px solid var(--border-2);color:var(--accent-ink);font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:calc(7px * var(--zoo-round-scale, 1));transition:opacity .12s ease}.zoo-wiz-row--dir:hover .zoo-wiz-row-add{opacity:1}.zoo-wiz-row-add:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.zoo-wiz-row-add:disabled{opacity:1;color:var(--good, #34d399);border-color:var(--border);background:transparent;cursor:default}.zoo-wiz-roots{flex:0 0 auto;max-height:168px;overflow-y:auto;padding:12px 20px;border-top:1px solid var(--border);background:var(--panel-2)}.zoo-wiz-roots-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}.zoo-wiz-roots-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}.zoo-wiz-roots-count{font-size:11px;color:var(--faint);background:var(--panel-3);padding:1px 7px;border-radius:999px;--corner-shape: round}.zoo-wiz-roots-empty{margin:0;font-size:12px;color:var(--faint)}.zoo-wiz-chips{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.zoo-wiz-chip{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 10px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid var(--border);background:var(--panel-3)}.zoo-wiz-chip-path{flex:1;min-width:0;font-family:var(--mono);font-size:11.5px;color:var(--data-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left}.zoo-wiz-chip-x{flex:0 0 auto;width:22px;height:22px;border-radius:calc(6px * var(--zoo-round-scale, 1));border:1px solid transparent;background:transparent;color:var(--faint);font-size:16px;line-height:1}.zoo-wiz-chip-x:hover{color:var(--bad, #f87171);border-color:var(--border-2);background:var(--panel-2)}.zoo-wiz-foot{flex:0 0 auto;display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border);background:linear-gradient(0deg,var(--panel-2),var(--panel));border-radius:0 0 calc(var(--radius) * var(--zoo-round-scale, 1)) calc(var(--radius) * var(--zoo-round-scale, 1))}.zoo-wiz-btn{font-size:13px;font-weight:700;padding:9px 18px;border-radius:calc(9px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);transition:transform .12s ease}.zoo-wiz-btn--ghost{background:transparent;color:var(--muted)}.zoo-wiz-btn--ghost:hover{color:var(--text);background:var(--panel-3);border-color:var(--border-2)}.zoo-wiz-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.zoo-wiz-btn--primary:hover:not(:disabled){background:#5457e5;border-color:#5457e5}.zoo-wiz-btn--primary:disabled{opacity:.45;cursor:not-allowed}.zoo-ais-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px;background:#14162661;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow:auto}.zoo-ais-card{width:520px}.zoo-ais-body{flex:1;min-height:0;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:14px}.zoo-ais-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.zoo-ais-mode{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border-radius:calc(9px * var(--zoo-round-scale, 1));border:1px solid var(--border-2);background:var(--panel-3);color:var(--muted);text-align:left}.zoo-ais-mode:hover{color:var(--text)}.zoo-ais-mode.is-active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}.zoo-ais-mode-label{font-size:12.5px;font-weight:700}.zoo-ais-mode-hint{font-size:10.5px;font-weight:500;color:var(--faint)}.zoo-ais-mode.is-active .zoo-ais-mode-hint{color:var(--accent-ink);opacity:.75}.zoo-ais-note{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}.zoo-ais-field{display:flex;flex-direction:column;gap:7px}.zoo-ais-label-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.zoo-ais-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.zoo-ais-hint{text-transform:none;letter-spacing:0;font-weight:500;color:var(--faint);margin-left:7px}.zoo-ais-presets{display:flex;flex-wrap:wrap;gap:6px}.zoo-ais-preset{padding:6px 12px;border-radius:999px;--corner-shape: round;border:1px solid var(--border-2);background:var(--panel-3);color:var(--muted);font-size:12px;font-weight:600}.zoo-ais-preset:hover{color:var(--text);border-color:var(--border-2)}.zoo-ais-preset.is-active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}.zoo-ais-row{display:flex;gap:8px}.zoo-ais-row .zoo-control{flex:1}.zoo-ais-reload{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;background:var(--panel-3);border:1px solid var(--border-2);color:var(--text);font-size:12.5px;font-weight:600;padding:0 13px;border-radius:calc(8px * var(--zoo-round-scale, 1))}.zoo-ais-reload:hover:not(:disabled){background:var(--hover);border-color:var(--hover-line)}.zoo-ais-reload:disabled{opacity:.6;cursor:default}.zoo-ais-reload .zoo-spin{border-color:#e9730f40;border-top-color:var(--accent)}.zoo-ais-status{font-size:12px;font-weight:600;padding:7px 11px;border-radius:calc(8px * var(--zoo-round-scale, 1));border:1px solid var(--border);background:var(--panel-2);color:var(--muted);word-break:break-word}.zoo-ais-status.is-ok{color:var(--good);border-color:#34d3994d;background:#34d39914}.zoo-ais-status.is-error{color:var(--bad);border-color:#f871714d;background:#f8717114}.zoo-ais-search{width:160px;background:var(--panel-3);border:1px solid var(--border);color:var(--text);font-size:11.5px;padding:4px 9px;border-radius:calc(6px * var(--zoo-round-scale, 1));outline:none;font-family:inherit}.zoo-ais-search:focus{border-color:var(--accent)}.zoo-ais-models{display:flex;flex-direction:column;gap:3px;max-height:220px;overflow-y:auto;padding:5px;border:1px solid var(--border);border-radius:calc(9px * var(--zoo-round-scale, 1));background:var(--panel-2)}.zoo-ais-model{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:calc(7px * var(--zoo-round-scale, 1));border:1px solid transparent;background:transparent;color:var(--text);text-align:left}.zoo-ais-model:hover{background:var(--panel-3)}.zoo-ais-model.is-active{background:var(--accent-soft);border-color:var(--accent-line)}.zoo-ais-model-id{flex:1;min-width:0;font-family:var(--mono);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zoo-ais-model.is-active .zoo-ais-model-id{color:var(--accent-ink);font-weight:600}.zoo-ais-model-check{flex:0 0 auto;color:var(--accent-ink);font-weight:800}.zoo-ais-models-empty{padding:18px 12px;text-align:center;font-size:12px;color:var(--faint)}.zoo-ais-manual{margin-top:7px}.zoo-ais-saved{margin-right:auto;align-self:center;font-size:12.5px;font-weight:700;color:var(--good)}.zoo-set-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px;background:#14162661;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow:auto}.zoo-set-card{width:480px}.zoo-set-tabs{flex:0 0 auto;display:flex;gap:2px;padding:8px 14px 0;border-bottom:1px solid var(--border);background:var(--panel-2)}.zoo-set-tab{position:relative;display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border:none;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;border-radius:calc(8px * var(--zoo-round-scale, 1)) calc(8px * var(--zoo-round-scale, 1)) 0 0;transition:color .15s ease,background .15s ease}.zoo-set-tab:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform .22s cubic-bezier(.22,1,.36,1)}.zoo-set-tab:hover{color:var(--text)}.zoo-set-tab.is-active{color:var(--accent-ink)}.zoo-set-tab.is-active:after{transform:scaleX(1)}.zoo-set-body{flex:1;min-height:0;overflow-y:auto;padding:16px 20px}.zoo-set-panel{min-height:168px;display:flex;flex-direction:column;gap:18px;animation:zoo-set-panel-in .24s cubic-bezier(.22,1,.36,1) both}@keyframes zoo-set-panel-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.zoo-set-panel{animation:none}.zoo-set-tab:after{transition:none}}.zoo-set-switch{flex:0 0 auto;width:42px;height:24px;padding:0;border-radius:999px;--corner-shape: round;border:1px solid var(--border-2);background:var(--panel-3);cursor:pointer;transition:background .18s ease,border-color .18s ease}.zoo-set-switch-knob{display:block;width:18px;height:18px;margin:2px;border-radius:999px;--corner-shape: round;background:var(--panel);box-shadow:var(--shadow-sm);transition:transform .18s cubic-bezier(.22,1,.36,1)}.zoo-set-switch.is-on{background:var(--accent);border-color:var(--accent)}.zoo-set-switch.is-on .zoo-set-switch-knob{transform:translate(18px);background:#fff}@media(prefers-reduced-motion:reduce){.zoo-set-switch,.zoo-set-switch-knob{transition:none}}.zoo-set-empty{font-size:12.5px;line-height:1.55;color:var(--muted);padding:14px;border:1px dashed var(--border-2);border-radius:calc(10px * var(--zoo-round-scale, 1));background:var(--panel-2)}.zoo-set-empty code{font-family:var(--mono);font-size:11.5px;background:var(--panel-3);padding:1px 5px;border-radius:calc(4px * var(--zoo-round-scale, 1))}.zoo-set-section{display:flex;flex-direction:column;gap:10px}.zoo-set-section-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.zoo-set-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.zoo-set-row-text{min-width:0}.zoo-set-row-title{font-size:13.5px;font-weight:600;color:var(--text)}.zoo-set-row-sub{margin-top:2px;font-size:12px;color:var(--muted)}.zoo-set-seg{flex:0 0 auto;display:flex;gap:3px;padding:3px;background:var(--panel-3);border:1px solid var(--border-2);border-radius:calc(9px * var(--zoo-round-scale, 1))}.zoo-set-seg-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid transparent;border-radius:calc(7px * var(--zoo-round-scale, 1));background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;transition:transform .12s ease}.zoo-set-seg-btn:hover{color:var(--text)}.zoo-set-seg-btn.is-active{background:var(--panel);border-color:var(--border-2);color:var(--text);box-shadow:var(--shadow-sm)}.zoo-preset-badge{flex:0 0 auto;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 8px;border-radius:999px;--corner-shape: round;background:var(--panel-3);color:var(--muted);border:1px solid var(--border-2)}.zoo-preset-badge.is-default{margin-left:7px;background:var(--accent-soft);color:var(--accent-ink);border-color:transparent}.zoo-preset-files{display:flex;flex-direction:column;gap:3px}.zoo-preset-files code{font-family:var(--mono);font-size:11px;background:var(--panel-3);padding:1px 5px;border-radius:calc(4px * var(--zoo-round-scale, 1))}.zoo-preset-files code.is-ok{color:var(--app-emerald)}.zoo-preset-files code.is-missing{color:var(--bad);background:var(--error-bg, #fef2f2)}.zoo-preset-none{color:var(--faint);font-style:italic}
