:root{--font-sans: "Schibsted Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--color-bg: #f6f5f1;--color-surface: #ffffff;--color-border: #bab8ad;--color-border-hairline: #dfddd3;--color-divider: #e8e6dd;--color-field: #f4f3ed;--color-text: #1d1b16;--color-text-dim: #7a7466;--color-text-faint: #a6a296;--color-text-body: #55503f;--color-accent: #1d1b16;--color-accent-text: #f6f5f1;--color-danger: #a9532f;--color-warning-bg: #f3e7ce;--color-warning-border: #c08a2d;--color-sage: #6f7d5c;--color-sage-tint: #e7ecde;--color-sage-text: #4c5b3a;--color-amber: #c08a2d;--color-amber-tint: #f3e7ce;--color-amber-text: #7a5a14;--color-rust: #a9532f;--color-rust-tint: #f0dfd7;--color-rust-text: #7e3a1e;--radius: 0;--radius-sm: 0;--radius-panel: 0;--shadow: none;--panel-shadow: none;--focus-ring: 0 0 0 2px var(--color-text);--overlay-dim: rgba(29, 27, 22, .4);--overlay-dim-light: rgba(29, 27, 22, .18);--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--canvas-bg: #f1f0eb;--canvas-dot: #d9d7ce;--glass-bg: var(--color-surface);--glass-border: var(--color-border);--glass-highlight: none;--glass-blur: none;--cat-prompt: #6f7d5c;--cat-image: #c08a2d;--cat-video: #a9532f;--cat-audio: #5c7d78;--cat-llm: #8a5d7c;--cat-io: #67707a;--cat-utility: #8c8455;--cat-remoteAPI: #5f7a86;--port-text: #6f7d5c;--port-image: #c08a2d;--port-video: #a9532f;--port-audio: #5c7d78;--port-model: #8a5d7c;--port-number: #8c8455;--port-any: #67707a}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}button{font:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring)}input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:none}.glass-panel{background:var(--glass-bg);border:1px solid var(--glass-border)}.dialog-overlay{position:fixed;inset:0;z-index:60;background:var(--overlay-dim);animation:overlay-in .15s ease}@keyframes overlay-in{0%{opacity:0}}.dialog{position:fixed;z-index:61;top:50%;left:50%;transform:translate(-50%,-50%);width:360px;max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-text);animation:dialog-in .15s ease}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.96)}}.dialog-title{margin:0 0 var(--space-1);font-size:15px;font-weight:600}.dialog-description{margin:0;font-size:13px;color:var(--color-text-dim)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4)}.dialog-actions .btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-accent-text)}.dialog-actions .btn-danger:hover{background:var(--color-rust-text);border-color:var(--color-rust-text)}.billing-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid #d3d1c6;background:var(--color-surface);color:var(--color-text);padding:3px 4px 3px 10px;font-family:var(--font-mono);font-size:10px;cursor:pointer}.billing-chip:hover{border-color:var(--color-text)}.billing-chip-total{font-family:var(--font-mono);font-size:10px;font-weight:600;font-variant-numeric:tabular-nums}.billing-chip-unit{font-family:var(--font-mono);font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint)}.billing-plan-badge{font-family:var(--font-mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:2px 8px;border:1px solid #d3d1c6;background:transparent;color:var(--color-text-dim)}.billing-plan-pro{background:var(--color-amber-tint);border-color:transparent;color:var(--color-amber-text)}.billing-plan-max{background:var(--color-accent);border-color:transparent;color:var(--color-accent-text)}.billing-menu{z-index:60;width:280px;min-width:280px;padding:0;font-size:13px;transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:panel-in .12s ease}.billing-menu-title{font-family:var(--font-mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim);padding:12px 16px 10px;border-bottom:1px solid var(--color-divider)}.billing-breakdown{margin:0;padding:12px 16px 0;display:flex;flex-direction:column;gap:6px}.billing-breakdown-row{display:flex;justify-content:space-between;align-items:baseline}.billing-breakdown-row dt{margin:0;font-size:12px;color:var(--color-text-dim)}.billing-breakdown-row dd{margin:0;font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}.billing-breakdown-total{margin-top:2px;padding-top:6px;border-top:1px solid var(--color-divider);font-weight:600}.billing-breakdown-total dd{font-weight:600}.billing-menu-note,.billing-menu-renews{padding:0 16px;font-family:var(--font-mono);font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint)}.billing-menu-note{margin:8px 0 0}.billing-menu-renews{margin:4px 0 0}.billing-menu-actions{display:flex;gap:var(--space-2);margin-top:0;padding:12px 16px 14px}.billing-menu .field-error{padding:8px 16px 0;margin:0}.billing-menu-item{flex:1;justify-content:center;cursor:pointer}.billing-menu-item[data-disabled]{opacity:.5;pointer-events:none}.upgrade-modal{position:fixed;z-index:61;top:50%;left:50%;transform:translate(-50%,-50%);width:640px;max-width:calc(100vw - 2 * var(--space-3));max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-text);animation:dialog-in .15s ease}.upgrade-modal .dialog-title{font-size:18px}.upgrade-modal .dialog-description{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim)}.upgrade-close{position:absolute;top:var(--space-3);right:var(--space-3);width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-dim);font-size:16px;line-height:1;cursor:pointer}.upgrade-close:hover{background:var(--color-field);color:var(--color-text)}.upgrade-context{margin-top:var(--space-3);padding:10px 14px;font-size:13px;background:var(--color-warning-bg);border:1px solid var(--color-warning-border);color:var(--color-amber-text)}.upgrade-tiers{display:flex;gap:0;margin-top:var(--space-4);border:1px solid var(--color-border);background:var(--color-surface)}.upgrade-topups{display:flex;gap:12px;margin-top:var(--space-3)}.upgrade-card{flex:1;display:flex;flex-direction:column;gap:6px;padding:18px;border:none;border-right:1px solid var(--color-border-hairline);background:var(--color-surface)}.upgrade-tiers .upgrade-card:last-child{border-right:none}.upgrade-card--current{position:relative;background:#fbfaf6}.upgrade-card--current:before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;height:3px;background:var(--color-amber)}.upgrade-card--topup{border:1px solid var(--color-border-hairline);padding:12px 14px;background:transparent}.upgrade-card-name{font-family:var(--font-mono);font-size:9px;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-dim)}.upgrade-card-price{font-size:24px;font-weight:500}.upgrade-card-period{margin-left:2px;font-family:var(--font-mono);font-size:9px;font-weight:400;color:var(--color-text-faint)}.upgrade-card-tokens{font-family:var(--font-mono);font-size:9px;color:var(--color-text-body)}.upgrade-card-buy{width:100%;margin-top:auto;justify-content:center}.upgrade-card-buy:disabled{opacity:.5;cursor:default}.upgrade-loading,.upgrade-unconfigured{margin:var(--space-3) 0 0;font-size:13px;color:var(--color-text-dim)}.upgrade-legal{margin:var(--space-3) 0 0;font-size:12px;line-height:1.5;color:var(--color-text-faint)}.upgrade-legal a{color:var(--color-text-dim);text-decoration:underline}.upgrade-activating{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-4) 0;text-align:center}.upgrade-spinner{width:28px;height:28px;border:3px solid var(--color-border-hairline);border-top-color:var(--color-text);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:560px){.upgrade-tiers,.upgrade-topups{flex-direction:column}}.tooltip{z-index:50;max-width:280px;font-family:var(--font-mono);font-size:10px;line-height:1.4;padding:4px 9px;background:var(--color-text);border:none;color:var(--color-accent-text);transform-origin:var(--radix-tooltip-content-transform-origin);animation:panel-in .12s ease}.banner-offline{display:flex;align-items:center;gap:var(--space-3);background:var(--color-warning-bg);border-bottom:1px solid var(--color-warning-border);padding:var(--space-2) var(--space-3);font-size:14px}.banner-retry{padding:3px 10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d3d1c6;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;padding:8px 16px;cursor:pointer}.btn:hover{border-color:var(--color-text)}.btn-icon{width:11px;height:11px;flex:none}.btn-primary{border-color:transparent;background:var(--color-accent);color:var(--color-accent-text)}.btn-primary:hover{background:#3a362c;border-color:transparent}.btn-danger{color:var(--color-danger)}.field-error{color:var(--color-danger);font-family:var(--font-mono);font-size:11px;margin-top:var(--space-1)}.toast,.chat-error{font-size:13px;padding:var(--space-2) var(--space-3);color:var(--color-rust-text);background:var(--color-rust-tint);border:1px solid var(--color-rust)}.toast-stack{position:fixed;bottom:var(--space-4);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);z-index:40;pointer-events:none}.toast{display:flex;gap:var(--space-2);align-items:center;max-width:480px;pointer-events:auto}.toast .btn{padding:3px 10px}.auth-splash{display:flex;align-items:center;justify-content:center;height:100vh;font-weight:700;font-size:22px;color:var(--color-text)}.login{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-4);background-color:var(--color-bg);background-image:radial-gradient(#dddbd2 1px,transparent 1px);background-size:26px 26px}.login-card{display:flex;flex-direction:column;gap:var(--space-2);width:380px;max-width:100%;padding:32px;background:var(--color-surface);border:1px solid var(--color-border)}.login-card h1{font-size:22px;font-weight:700;margin:0}.login-subtitle{margin:6px 0 0;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-sage)}.login-eyebrow{margin:0;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--color-sage)}.login-divider{height:1px;background:var(--color-divider);margin:12px 0 4px}.login-lede{margin:0;font-size:15px;font-weight:600}.login-hint{margin:0 0 var(--space-1);font-size:13px;color:var(--color-text-dim);line-height:1.55}.login-hint strong{font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--color-text)}.login-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim)}.login-email{font:inherit;font-size:13px;padding:9px 10px;border:1px solid var(--color-border-hairline);background:var(--color-field);color:var(--color-text);outline:none}.login-email::placeholder{color:var(--color-text-faint)}.login-email:focus{background:var(--color-surface);border-color:var(--color-text)}.login-submit{width:100%;padding:11px 16px}.login-alt{align-self:flex-start;padding:6px 14px}.login-note{margin:var(--space-1) 0 0;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-faint)}.login-legal{margin:var(--space-2) 0 0;font-size:12px;line-height:1.5;color:var(--color-text-faint)}.login-legal a{color:var(--color-text-dim);text-decoration:underline}.auth-verifying{display:flex;align-items:center;gap:14px;margin-top:var(--space-2)}.auth-spinner{flex:none;width:16px;height:16px;border:2px solid var(--color-border-hairline);border-top-color:var(--color-text);border-radius:50%;animation:spin .8s linear infinite}.login-subnote{margin:4px 0 0;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-faint)}.session-chip{display:flex;align-items:center;gap:var(--space-2);min-width:0}.session-email{font-family:var(--font-mono);font-size:10px;color:var(--color-text-dim);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-logout{padding:3px 10px}.library{max-width:1080px;margin:0 auto;padding:36px 32px}.library-header{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:20px;margin-bottom:28px;border-bottom:1px solid var(--color-text)}.library-title-group{display:flex;align-items:baseline;gap:var(--space-3)}.library-header h1{font-size:20px;font-weight:700;margin:0}.library-subtitle{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim)}.library-header-actions{display:flex;align-items:center;gap:var(--space-3)}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3)}.workflow-tile{background:var(--color-surface);border:1px solid var(--color-border);padding:18px 18px 16px;min-height:150px;display:flex;flex-direction:column;gap:6px;cursor:pointer;text-align:left}.workflow-tile:hover{border-color:var(--color-text)}.workflow-tile-title{font-weight:600;font-size:16px;overflow-wrap:anywhere}.workflow-tile-meta{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-faint)}.workflow-tile-actions{display:flex;gap:4px;margin-top:auto;padding-top:14px}.workflow-tile-actions .btn{padding:4px 10px;font-size:9px;letter-spacing:.08em;border-color:var(--color-border-hairline);color:var(--color-text-dim)}.workflow-tile-actions .btn:hover{border-color:var(--color-text);color:var(--color-text)}.workflow-tile-actions .btn-danger,.workflow-tile-actions .btn-danger:hover{color:var(--color-danger)}.workflow-tile input{font:inherit;font-weight:600;font-size:16px;width:100%;padding:2px 4px;border:1px solid var(--color-text);background:var(--color-surface);color:var(--color-text)}.library-empty{border:1px dashed var(--color-border);padding:72px 48px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;color:var(--color-text-dim)}.library-empty-glyph{font-family:var(--font-mono);font-size:20px;color:var(--color-border)}.library-empty-title{font-size:16px;font-weight:600;color:var(--color-text)}.library-empty p{margin:0;max-width:340px;font-size:13px;line-height:1.55;color:var(--color-text-dim)}.library-empty .btn{margin-top:14px}.library-status{color:var(--color-text-dim);padding:var(--space-4) 0}.editor{display:flex;flex-direction:column;height:100vh}.editor-toolbar{display:flex;align-items:center;gap:20px;padding:10px 20px;background:var(--color-bg);border-bottom:1px solid #d3d1c6}.editor-toolbar a{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text);text-decoration:none}.editor-title{font:inherit;font-weight:600;font-size:15px;border:1px solid transparent;padding:4px 6px;background:transparent;color:var(--color-text);min-width:200px}.editor-title:hover,.editor-title:focus{border-color:var(--color-border-hairline);background:var(--color-field);outline:none}.editor-save-state{color:var(--color-text-dim);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-left:auto}.editor-save-state[data-state]:before{content:"● "}.editor-save-state[data-state=saved]{color:var(--color-sage)}.editor-save-state[data-state=pending],.editor-save-state[data-state=saving]{color:var(--color-amber)}.editor-save-state[data-state=error]{color:var(--color-rust)}.editor-status{padding:var(--space-4);color:var(--color-text-dim)}.editor-main{display:flex;flex:1;min-height:0}.btn-toggled{border-color:var(--color-text);background:var(--color-surface);color:var(--color-text)}.canvas{position:relative;flex:1;overflow:hidden;background:var(--canvas-bg);outline:none;touch-action:none;overscroll-behavior:none}.canvas--pan{cursor:grab}.canvas-grid{position:absolute;inset:0}.canvas-world{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0}.canvas-marquee{position:absolute;border:1px dashed var(--color-text);background:#6f7d5c12;pointer-events:none}.canvas-empty-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-dim);font-size:13px;line-height:1.6;text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none}.canvas-empty-title{font-size:16px;font-weight:600;color:var(--color-text)}.port-text{--port-color: var(--port-text)}.port-image{--port-color: var(--port-image)}.port-video{--port-color: var(--port-video)}.port-audio{--port-color: var(--port-audio)}.port-model{--port-color: var(--port-model)}.port-number{--port-color: var(--port-number)}.port-any{--port-color: var(--port-any)}.cat-prompt{--cat-color: var(--cat-prompt)}.cat-image{--cat-color: var(--cat-image)}.cat-video{--cat-color: var(--cat-video)}.cat-audio{--cat-color: var(--cat-audio)}.cat-llm{--cat-color: var(--cat-llm)}.cat-io{--cat-color: var(--cat-io)}.cat-utility{--cat-color: var(--cat-utility)}.cat-remoteAPI{--cat-color: var(--cat-remoteAPI)}.canvas-wires{pointer-events:none;overflow:visible}.wire{fill:none;stroke:var(--port-color, var(--port-any));stroke-width:1.8;stroke-linecap:round;opacity:1}.wire--selected{stroke:var(--color-text);stroke-width:2.5;opacity:1}.wire-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}.wire-drag{fill:none;stroke:var(--port-color, var(--port-any));stroke-width:2;stroke-dasharray:6 4;stroke-linecap:round;opacity:1}.node-card{position:absolute;background:var(--color-surface);border:1px solid var(--color-border);-webkit-user-select:none;user-select:none;cursor:default}.node-card[data-selected]{border-color:var(--color-text);box-shadow:0 0 0 1px var(--color-text)}.node-card--dimmed{opacity:.45}.node-card[data-category=prompt]{--cat-color: var(--cat-prompt)}.node-card[data-category=image]{--cat-color: var(--cat-image)}.node-card[data-category=video]{--cat-color: var(--cat-video)}.node-card[data-category=audio]{--cat-color: var(--cat-audio)}.node-card[data-category=llm]{--cat-color: var(--cat-llm)}.node-card[data-category=io]{--cat-color: var(--cat-io)}.node-card[data-category=utility]{--cat-color: var(--cat-utility)}.node-card[data-category=remoteAPI]{--cat-color: var(--cat-remoteAPI)}.node-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 14px;background:transparent;border-bottom:1px solid var(--color-divider)}.node-title{flex:1 1 auto;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-card:has(>.node-badge) .node-category-tag{visibility:hidden}.node-category-tag{flex:none;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--cat-color, var(--color-text-dim));white-space:nowrap}.node-body{padding-left:0;padding-right:0}.port-row{display:flex;align-items:center;justify-content:space-between;padding:0 14px}.port-row+.port-row{border-top:1px solid var(--color-divider)}.port-label{font-family:var(--font-mono);font-size:10px;color:var(--color-text-dim)}.port-label--compatible{color:var(--color-sage-text);font-weight:600}.port-dot{position:absolute;width:24px;height:24px;display:flex;align-items:center;justify-content:center;touch-action:none}.port-dot--grabbable{cursor:crosshair}.port-dot-fill{width:9px;height:9px;background:var(--port-color, var(--port-any));border:1.5px solid var(--color-surface);box-shadow:0 0 0 1px var(--port-color, var(--port-any));transition:transform .12s ease,opacity .12s ease}.port-dot--incompatible .port-dot-fill{opacity:.25}.port-dot--compatible .port-dot-fill,.port-dot--hovered .port-dot-fill{transform:scale(1.67);box-shadow:0 0 0 4px #6f7d5c73}.port-dot--source .port-dot-fill{transform:scale(1.44);box-shadow:0 0 0 3px color-mix(in srgb,var(--port-color, var(--port-any)) 35%,transparent)}.node-properties{border-top:1px solid var(--color-divider);padding-top:4px}.prop{display:flex;flex-direction:column;padding:0 14px;margin-bottom:8px}.prop-label{display:flex;align-items:center;font-family:var(--font-mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim)}.prop-input{font:inherit;font-size:12px;color:var(--color-text);background:var(--color-field);border:1px solid var(--color-border-hairline);padding:0 8px;width:100%;outline:none}.prop-input:focus{background:var(--color-surface);border-color:var(--color-text)}.prop-textarea{resize:none;overflow-y:auto;padding:6px 8px;display:block}.prop-select{display:flex;align-items:center;justify-content:space-between;gap:4px;font:inherit;font-size:12px;color:var(--color-text);background:var(--color-field);border:1px solid var(--color-border-hairline);padding:0 8px;width:100%;outline:none;cursor:pointer}.prop-select:focus-visible{background:var(--color-surface);border-color:var(--color-text)}.prop-select-icon{font-size:10px;line-height:1;color:var(--color-text-dim)}.select-menu{z-index:30;min-width:var(--radix-select-trigger-width);max-height:min(300px,var(--radix-select-content-available-height));transform-origin:var(--radix-select-content-transform-origin);animation:panel-in .12s ease}.select-viewport{padding:4px}.select-item{position:relative;display:flex;align-items:center;font-size:12px;color:var(--color-text);padding:5px 10px 5px 22px;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;white-space:nowrap}.select-item[data-highlighted]{background:var(--color-field)}.select-item-check{position:absolute;left:7px;font-size:10px;color:var(--color-text-dim)}.prop-segmented{display:flex;width:100%;border:1px solid var(--color-border-hairline);overflow:hidden;background:var(--color-field)}.prop-segment{flex:1;font-family:var(--font-mono);font-size:10px;border:none;background:transparent;color:var(--color-text-dim);cursor:pointer;padding:0 2px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-segment+.prop-segment{border-left:1px solid var(--color-border-hairline)}.prop-segment--on{background:var(--color-accent);color:var(--color-accent-text);font-weight:600}.prop-slider{display:flex;align-items:center;gap:8px}.prop-slider input[type=range]{flex:1;min-width:0;margin:0;accent-color:var(--color-accent)}.prop-value{font-family:var(--font-mono);font-size:11px;color:var(--color-text);min-width:40px;text-align:right;white-space:nowrap}.prop-value--lead{flex:1;text-align:left}.prop-stepper{display:flex;align-items:center;gap:6px}.prop-step-btn{width:24px;height:22px;border:1px solid #d3d1c6;background:var(--color-surface);color:var(--color-text);font-family:var(--font-mono);font-size:13px;line-height:1;cursor:pointer}.prop-step-btn:disabled{opacity:.4;cursor:default}.prop-toggle{display:inline-flex;align-items:center;cursor:pointer}.prop-toggle input{position:absolute;opacity:0;pointer-events:none}.prop-toggle-track{width:34px;height:18px;background:#d3d1c6;display:inline-flex;align-items:center;padding:2px;transition:background .15s ease}.prop-toggle input:checked+.prop-toggle-track{background:var(--color-sage)}.prop-toggle input:focus-visible+.prop-toggle-track{outline:2px solid var(--color-text);outline-offset:1px}.prop-toggle-knob{width:14px;height:14px;background:var(--color-surface);transition:transform .15s ease}.prop-toggle input:checked+.prop-toggle-track .prop-toggle-knob{transform:translate(16px)}.node-badge{position:absolute;top:6px;right:6px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;pointer-events:auto}.node-badge--running{width:12px;height:12px;border:1.5px solid var(--color-border);border-top-color:var(--color-text);border-radius:50%;animation:badge-spin .8s linear infinite}@keyframes badge-spin{to{transform:rotate(360deg)}}.node-badge--failed{background:var(--color-danger);color:var(--color-accent-text);font-weight:700}.node-badge--cached{background:var(--color-amber-tint);color:var(--color-amber-text)}.node-body-section{border-top:1px solid var(--color-divider)}.node-inline-body{padding:8px 14px 0}.preview-surface{background:var(--color-field);border:1px solid var(--color-border-hairline);overflow:hidden;display:flex;align-items:center;justify-content:center}.preview-surface--text{display:block;overflow-y:auto;padding:8px}.preview-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;height:100%;color:var(--color-text-faint);font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em}.preview-surface--text .preview-placeholder{min-height:100px}.preview-placeholder-icon{font-size:20px}.preview-media{max-width:100%;max-height:100%;object-fit:contain;display:block}.audio-player{width:100%;height:100%;display:flex;align-items:center;gap:8px;padding:8px}.audio-play{flex:none;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--color-border-hairline);color:var(--color-text);font-family:var(--font-mono);font-size:10px;cursor:pointer}.audio-play:hover{border-color:var(--color-text)}.audio-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.audio-waveform{height:24px;display:flex;align-items:center;gap:1px;cursor:pointer}.audio-bar{flex:1;min-height:2px;background:var(--color-border-hairline)}.audio-bar--played{background:var(--color-text)}.audio-times{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:9px;color:var(--color-text-dim)}.preview-spinner{width:18px;height:18px;border:2px solid var(--color-border);border-top-color:var(--color-text);border-radius:50%;animation:badge-spin .8s linear infinite}.preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%;height:100%;overflow-y:auto;padding:6px}.preview-grid-cell{aspect-ratio:1;background:var(--color-field);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-grid-cell .preview-media{width:100%;height:100%;object-fit:cover}.preview-text{margin:0;font-family:var(--font-sans);font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:var(--color-text);-webkit-user-select:text;user-select:text;cursor:text}.preview-list{margin:0;padding-left:22px;font-size:11px;color:var(--color-text);display:flex;flex-direction:column;gap:6px}.preview-list li::marker{font-family:var(--font-mono);font-size:10px;color:var(--color-text-dim)}.preview-expand{margin-top:4px;border:none;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:10px;padding:0;cursor:pointer}.preview-footer{display:flex;justify-content:flex-end;align-items:center;height:30px;padding-top:4px}.btn-run-node{font-size:9px;padding:5px 12px}.btn:disabled,.btn-primary:disabled{opacity:.5;cursor:default}.run-controls{display:flex;gap:var(--space-2)}.run-controls .btn{padding:7px 16px}.context-menu{z-index:30;min-width:180px;padding:4px 0;display:flex;flex-direction:column;transform-origin:var(--radix-context-menu-content-transform-origin);animation:panel-in .12s ease}@keyframes panel-in{0%{opacity:0;transform:scale(.96)}}.context-menu-item{display:flex;align-items:center;justify-content:space-between;gap:24px;color:var(--color-text);font-size:12px;padding:7px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.context-menu-item[data-highlighted]{background:var(--color-field)}.context-menu-item[data-disabled]{color:var(--color-text-dim);cursor:default}.context-menu-item--danger{color:var(--color-danger);border-top:1px solid var(--color-divider)}.context-menu-shortcut{font-family:var(--font-mono);font-size:9px;color:var(--color-text-faint)}.palette{position:absolute;display:flex;flex-direction:column;overflow:hidden;border-color:var(--color-text);z-index:20}.palette-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);border-bottom:1px solid var(--color-divider)}.palette-input{flex:1;font:inherit;font-size:13px;border:none;outline:none;background:transparent;color:var(--color-text)}.palette-filter{font-family:var(--font-mono);font-size:8px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:2px 8px;color:var(--color-sage-text);background:var(--color-sage-tint);white-space:nowrap}.palette-list{overflow-y:auto;padding:4px}.palette-empty{padding:var(--space-3);font-size:12px;color:var(--color-text-dim);text-align:center}.palette-match{background:var(--color-amber-tint);color:inherit}.palette-footer{display:flex;gap:14px;padding:8px 12px;border-top:1px solid var(--color-divider);font-family:var(--font-mono);font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-faint)}.palette-row{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border:none;background:transparent;color:var(--color-text);text-align:left;cursor:pointer}.palette-row--focused{background:var(--color-field);box-shadow:inset 2px 0 0 var(--color-text)}.palette-row-icon{display:flex;align-items:center;justify-content:center;width:26px;height:26px;font-size:12px;flex:none;color:var(--cat-color, var(--color-text));background:color-mix(in srgb,var(--cat-color, var(--color-border)) 18%,transparent)}.palette-row-text{display:flex;flex-direction:column;min-width:0;flex:1}.palette-row-title{font-size:12px;font-weight:500}.palette-row-subtitle{font-family:var(--font-mono);font-size:10px;color:var(--color-text-dim)}.palette-row-dots{display:flex;gap:3px}.palette-port-dot{width:6px;height:6px;background:var(--port-color, var(--port-any))}.canvas-toolbar{position:absolute;left:50%;bottom:0;transform:translate(-50%);z-index:10}.canvas-toolbar-bar{display:flex;align-items:center;gap:2px;padding:4px 4px 6px;border-bottom:none}.toolbar-category{display:flex;flex-direction:column;align-items:center;gap:3px;width:62px;padding:7px 0;border:none;background:transparent;color:var(--color-text);cursor:pointer}.toolbar-category:hover{background:var(--color-field)}.toolbar-category--open{background:var(--color-divider)}.toolbar-category-glyph{font-size:13px;color:var(--cat-color, var(--color-text))}.toolbar-category-label{font-family:var(--font-mono);font-size:8px;text-transform:uppercase;letter-spacing:.1em}.toolbar-zoom{align-self:stretch;display:flex;align-items:center;justify-content:center;margin-left:4px;padding:0 12px;border:none;border-left:1px solid var(--color-border-hairline);background:transparent;color:var(--color-text-dim);font-family:var(--font-mono);font-size:10px;cursor:pointer}.toolbar-zoom:hover{color:var(--color-text);background:var(--color-field)}.toolbar-popover{width:250px;max-height:min(300px,var(--radix-dropdown-menu-content-available-height));overflow-y:auto;padding:6px;transform-origin:var(--radix-dropdown-menu-content-transform-origin);animation:panel-in .12s ease}.toolbar-popover-title{font-family:var(--font-mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-dim);padding:4px 8px 6px}.toolbar-type-row{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.toolbar-type-row[data-highlighted]{background:var(--color-field)}.chat-panel{position:relative;flex:0 0 340px;width:340px;min-height:0;display:flex;flex-direction:column;background:var(--color-surface);border-left:1px solid var(--color-border)}.chat-resize{position:absolute;left:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:5;touch-action:none}.chat-resize:hover,.chat-resize:active{background:color-mix(in srgb,var(--color-text) 18%,transparent)}.chat-header{display:flex;align-items:center;gap:var(--space-2);padding:12px 16px;border-bottom:1px solid var(--color-divider)}.chat-title{flex:1;font-family:var(--font-mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.1em}.chat-title:before{content:"✦ "}.chat-icon-btn{border:none;background:transparent;color:var(--color-text-dim);font-size:12px;padding:3px 8px;cursor:pointer}.chat-icon-btn:not(:last-child){font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-faint)}.chat-icon-btn:hover:not(:disabled){background:var(--color-field);color:var(--color-text)}.chat-icon-btn:disabled{opacity:.4;cursor:default}.chat-transcript{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.chat-empty{color:var(--color-text-dim);font-size:13px}.chat-empty p{margin:0}.chat-empty p:nth-child(1){color:var(--color-text);line-height:1.55}.chat-empty p:nth-child(2){margin-top:10px;font-family:var(--font-mono);font-size:10px;line-height:1.6;color:var(--color-text-dim)}.chat-empty p:nth-child(3){margin-top:10px;font-size:12px;line-height:1.55;color:var(--color-text-faint)}.chat-bubble{max-width:85%;padding:8px 12px;font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.chat-bubble--user{align-self:flex-end;background:var(--color-accent);color:var(--color-accent-text)}.chat-bubble--assistant{align-self:flex-start;background:var(--color-field);border:1px solid var(--color-divider)}.chat-edit{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;padding:4px 10px;color:var(--color-sage-text);background:var(--color-sage-tint);border:none}.chat-edit--failed{background:var(--color-warning-bg);color:var(--color-amber-text)}.chat-edit-glyph{font-size:10px;color:var(--color-sage-text)}.chat-edit--failed .chat-edit-glyph{color:inherit}.chat-error{align-self:stretch}.chat-status{display:flex;align-items:center;gap:8px;font-size:12px;font-style:italic;color:var(--color-text-dim)}.chat-status-spinner{flex:none;width:12px;height:12px;border:2px solid var(--color-border);border-top-color:var(--color-text);border-radius:50%;animation:badge-spin .8s linear infinite}.chat-composer{display:flex;align-items:flex-end;gap:var(--space-2);padding:12px 16px 16px;border-top:1px solid var(--color-divider)}.chat-composer textarea::placeholder{color:var(--color-text-faint)}.chat-composer textarea{flex:1;resize:none;font:inherit;font-size:13px;min-height:38px;max-height:120px;padding:7px 9px;border:1px solid var(--color-border-hairline);background:var(--color-field);color:var(--color-text);outline:none}.chat-composer textarea:focus{background:var(--color-surface);border-color:var(--color-text)}.chat-composer textarea:disabled{opacity:.6}
