@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;600&family=Syne:wght@400;700;800&display=swap"layer(base);@layer base,layout,panels,editor;@layer base.base{*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;--bg: #0a0a0f;--surface: #111118;--surface2: #1a1a26;--border: #2a2a3e;--accent: #7c6aff;--accent2: #ff6a9b;--accent3: #6affcf;--text: #e8e8f0;--text-dim: #7070a0;--node-bg: #15151f;--node-border: #303050;--node-selected: #7c6aff;--conn: #7c6aff;--panel-bg: rgba(17, 17, 24, .96);--panel-bg-strong: rgba(17, 17, 24, .98);--panel-border-strong: rgba(52, 52, 76, 1);--button-bg: rgba(22, 22, 34, .96);--button-bg-hover: rgba(36, 36, 54, .98);--button-border: rgba(52, 52, 76, .95);--button-accent-bg-hover: rgba(42, 36, 64, .98);--button-accent-border-hover: rgba(124, 106, 255, .72);--button-accent-text-hover: #f0edff;--button-danger-bg-hover: rgba(54, 30, 38, .98);--button-danger-border-hover: #ff6a6a;--button-danger-text-hover: #ffd7d7;--item-bg: rgba(20, 20, 30, .96);--item-bg-hover: rgba(26, 26, 40, .98);--item-border-hover: rgba(92, 92, 128, .95);--field-bg: rgba(26, 26, 38, .96);--field-bg-hover: rgba(32, 32, 48, .98);--field-border: rgba(52, 52, 76, .95);--tag-bg: rgba(20, 20, 30, .72);--tag-border: rgba(52, 52, 76, .8);--tag-text: var(--text-dim);--panel-shadow: 0 18px 42px rgba(0, 0, 0, .42);--dock-shadow: 0 20px 48px rgba(0, 0, 0, .42);--floating-shadow: 0 10px 28px rgba(0, 0, 0, .42);--focus-ring: rgba(124, 106, 255, .35);--graph-glow: rgba(124, 106, 255, .03);--graph-grid: rgba(42, 42, 62, .4);--type-float: #7c6aff;--type-vec2: #6affcf;--type-vec3: #ffb432;--type-vec4: #ff6a9b;--type-bounds: #e8a034;--type-transform: #34c8e8;--edge-hint-bg: rgba(21, 21, 31, .88);--node-shadow: 0 4px 20px rgba(0, 0, 0, .4);--node-shadow-selected: 0 0 0 1px var(--node-selected), 0 4px 20px rgba(124, 106, 255, .2);--node-shadow-warning: 0 0 0 1px rgba(232, 160, 52, .35), 0 4px 20px rgba(0, 0, 0, .4);--node-shadow-error: 0 0 0 1px rgba(255, 106, 106, .45), 0 4px 20px rgba(255, 106, 106, .14);--cat-source-bg: rgba(106, 255, 207, .08);--cat-math-bg: rgba(124, 106, 255, .08);--cat-vector-bg: rgba(255, 106, 155, .08);--cat-bounds-bg: rgba(232, 160, 52, .08);--cat-sdf-bg: rgba(255, 180, 50, .08);--cat-output-bg: rgba(255, 255, 255, .05)}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light;--bg: #f3f3f8;--surface: #fbfbfe;--surface2: #eef0f7;--border: #cfd6e6;--accent: #5b49e6;--accent2: #d94378;--accent3: #0f9d84;--text: #171b27;--text-dim: #65708a;--node-bg: #ffffff;--node-border: #c4cce0;--node-selected: #5b49e6;--conn: #5b49e6;--panel-bg: rgba(255, 255, 255, .88);--panel-bg-strong: rgba(252, 253, 255, .96);--panel-border-strong: rgba(203, 212, 231, .95);--button-bg: rgba(248, 250, 255, .96);--button-bg-hover: rgba(237, 241, 251, .98);--button-border: rgba(203, 212, 231, .95);--button-accent-bg-hover: rgba(231, 234, 250, .98);--button-accent-border-hover: rgba(91, 73, 230, .68);--button-accent-text-hover: #3426a8;--button-danger-bg-hover: rgba(255, 226, 231, .98);--button-danger-border-hover: #d94378;--button-danger-text-hover: #7b203f;--item-bg: rgba(245, 247, 253, .98);--item-bg-hover: rgba(235, 240, 251, .98);--item-border-hover: rgba(167, 180, 214, .95);--field-bg: rgba(245, 247, 252, .98);--field-bg-hover: rgba(239, 243, 252, .98);--field-border: rgba(203, 212, 231, .95);--tag-bg: rgba(245, 247, 252, .96);--tag-border: rgba(203, 212, 231, .9);--tag-text: #56627d;--panel-shadow: 0 18px 42px rgba(109, 122, 156, .14);--dock-shadow: 0 20px 48px rgba(109, 122, 156, .16);--floating-shadow: 0 10px 28px rgba(109, 122, 156, .16);--focus-ring: rgba(91, 73, 230, .2);--graph-glow: rgba(91, 73, 230, .02);--graph-grid: rgba(168, 180, 208, .18);--type-float: #5b49e6;--type-vec2: #0a9a8a;--type-vec3: #cf7a12;--type-vec4: #c63f70;--type-bounds: #b56b12;--type-transform: #1a9ab5;--edge-hint-bg: rgba(252, 253, 255, .92);--node-shadow: 0 10px 26px rgba(61, 74, 112, .12);--node-shadow-selected: 0 0 0 1px var(--node-selected), 0 12px 28px rgba(91, 73, 230, .14);--node-shadow-warning: 0 0 0 1px rgba(232, 160, 52, .32), 0 10px 24px rgba(103, 86, 40, .12);--node-shadow-error: 0 0 0 1px rgba(217, 67, 120, .34), 0 10px 24px rgba(130, 44, 77, .12);--cat-source-bg: rgba(15, 157, 132, .09);--cat-math-bg: rgba(91, 73, 230, .09);--cat-vector-bg: rgba(217, 67, 120, .09);--cat-bounds-bg: rgba(224, 146, 31, .1);--cat-sdf-bg: rgba(226, 155, 24, .1);--cat-output-bg: rgba(23, 27, 39, .04)}@media(prefers-color-scheme:light){:root:not([data-theme]),:root[data-theme=system]{color-scheme:light;--bg: #f3f3f8;--surface: #fbfbfe;--surface2: #eef0f7;--border: #cfd6e6;--accent: #5b49e6;--accent2: #d94378;--accent3: #0f9d84;--text: #171b27;--text-dim: #65708a;--node-bg: #ffffff;--node-border: #c4cce0;--node-selected: #5b49e6;--conn: #5b49e6;--panel-bg: rgba(255, 255, 255, .88);--panel-bg-strong: rgba(252, 253, 255, .96);--panel-border-strong: rgba(203, 212, 231, .95);--button-bg: rgba(248, 250, 255, .96);--button-bg-hover: rgba(237, 241, 251, .98);--button-border: rgba(203, 212, 231, .95);--button-accent-bg-hover: rgba(231, 234, 250, .98);--button-accent-border-hover: rgba(91, 73, 230, .68);--button-accent-text-hover: #3426a8;--button-danger-bg-hover: rgba(255, 226, 231, .98);--button-danger-border-hover: #d94378;--button-danger-text-hover: #7b203f;--item-bg: rgba(245, 247, 253, .98);--item-bg-hover: rgba(235, 240, 251, .98);--item-border-hover: rgba(167, 180, 214, .95);--field-bg: rgba(245, 247, 252, .98);--field-bg-hover: rgba(239, 243, 252, .98);--field-border: rgba(203, 212, 231, .95);--tag-bg: rgba(245, 247, 252, .96);--tag-border: rgba(203, 212, 231, .9);--tag-text: #56627d;--panel-shadow: 0 18px 42px rgba(109, 122, 156, .14);--dock-shadow: 0 20px 48px rgba(109, 122, 156, .16);--floating-shadow: 0 10px 28px rgba(109, 122, 156, .16);--focus-ring: rgba(91, 73, 230, .2);--graph-glow: rgba(91, 73, 230, .02);--graph-grid: rgba(168, 180, 208, .18);--type-float: #5b49e6;--type-vec2: #0a9a8a;--type-vec3: #cf7a12;--type-vec4: #c63f70;--type-bounds: #b56b12;--type-transform: #1a9ab5;--edge-hint-bg: rgba(252, 253, 255, .92);--node-shadow: 0 10px 26px rgba(61, 74, 112, .12);--node-shadow-selected: 0 0 0 1px var(--node-selected), 0 12px 28px rgba(91, 73, 230, .14);--node-shadow-warning: 0 0 0 1px rgba(232, 160, 52, .32), 0 10px 24px rgba(103, 86, 40, .12);--node-shadow-error: 0 0 0 1px rgba(217, 67, 120, .34), 0 10px 24px rgba(130, 44, 77, .12);--cat-source-bg: rgba(15, 157, 132, .09);--cat-math-bg: rgba(91, 73, 230, .09);--cat-vector-bg: rgba(217, 67, 120, .09);--cat-bounds-bg: rgba(224, 146, 31, .1);--cat-sdf-bg: rgba(226, 155, 24, .1);--cat-output-bg: rgba(23, 27, 39, .04)}}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:JetBrains Mono,monospace;font-size:12px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}}@layer layout.layout{#app{display:grid;grid-template-columns:1fr auto;grid-template-rows:40px minmax(0,1fr) 0;width:100vw;height:100vh}#header{grid-column:1 / -1;display:flex;align-items:center;gap:10px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;position:relative;z-index:20}#header .sep{flex:1}#header :is(select,input[type=number]){background:var(--field-bg);border:1px solid var(--field-border);color:var(--text);font-family:inherit;font-size:11px;padding:4px 10px;border-radius:6px;cursor:pointer;outline:none;transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}#header :is(select,input[type=number]):hover{background:var(--field-bg-hover)}#header :is(select,input[type=number]):focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--focus-ring)}#header input[type=number]{width:46px;cursor:text;-moz-appearance:textfield}#header .header-drag-field{width:52px;cursor:ew-resize;font-size:11px;height:26px;min-height:26px;padding:0 10px;border-radius:6px;border:1px solid var(--field-border);background:var(--field-bg);display:inline-flex;align-items:center;justify-content:center;line-height:1}#header .header-drag-field:hover{background:var(--field-bg-hover);border-color:var(--text-dim)}#header input[type=number]::-webkit-outer-spin-button,#header input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}#header label{display:flex;align-items:center;gap:6px;cursor:pointer}#header .tag{font-size:10px;color:var(--tag-text);background:var(--tag-bg);border:1px solid var(--tag-border);padding:2px 6px;border-radius:999px}#header .header-title{flex:0 0 auto;font-family:Syne,sans-serif;font-size:.92rem;font-weight:800;color:color-mix(in srgb,var(--text) 94%,var(--accent) 6%);letter-spacing:.1em;text-transform:uppercase;line-height:1;padding:0;text-shadow:0 0 2px color-mix(in srgb,var(--accent) 22%,transparent);margin-right:6px;cursor:default}#editor-context-info{min-width:0;flex:2 1 420px;display:flex;flex-direction:column;justify-content:center;gap:1px;overflow:hidden}#graph-area{grid-column:1;grid-row:2;display:flex;flex-direction:row;overflow:hidden;min-height:0;-webkit-user-select:none;user-select:none}#graph-canvas-area{flex:1;position:relative;overflow:hidden;background:var(--bg);background-image:radial-gradient(circle at 50% 50%,var(--graph-glow) 0%,transparent 70%),linear-gradient(var(--graph-grid) 1px,transparent 1px),linear-gradient(90deg,var(--graph-grid) 1px,transparent 1px);background-size:100% 100%,24px 24px,24px 24px;cursor:grab}#graph-canvas-area.panning{cursor:grabbing}body.cutting-edges #graph-canvas-area{cursor:crosshair}#graph-canvas-wrapper{position:absolute;inset:0 auto auto 0;transform-origin:0 0;will-change:transform}#conn-svg{position:absolute;inset:0 auto auto 0;overflow:visible}#right-panel{grid-column:2;grid-row:2;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--surface);min-height:0;min-width:380px}#preview-toolbar{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}#preview-mode-info{min-width:0;flex:1 1 auto;color:var(--text-dim);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#preview-canvas-wrap{flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:var(--bg)}#preview-canvas{image-rendering:pixelated;border:1px solid var(--border);box-sizing:content-box;display:block}#preview-status{padding:6px 12px;font-size:10px;color:var(--text-dim);border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;justify-content:space-between}.preview-status-left{min-width:0;flex:1 1 auto;display:flex;align-items:center}#status-left{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#render-time{flex:0 0 auto;min-width:48px;text-align:center}#status-right{flex:0 0 auto;min-width:60px;text-align:right}.preview-toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;opacity:.9;transition:color .12s ease,opacity .12s ease}.preview-toggle span{flex:0 0 auto}.preview-toggle input{accent-color:var(--accent);cursor:pointer;margin:0}.preview-toggle:hover{color:var(--text);opacity:1}#controls{grid-column:1 / -1;grid-row:3;position:relative;height:0;min-height:0;overflow:visible;pointer-events:none}}@layer panels.panels{#menu-toggle span{display:block;width:14px;height:2px;border-radius:999px;background:var(--text)}#command-menu{position:fixed;top:48px;left:12px;width:336px;max-height:calc(100vh - 64px);overflow:auto;display:none;padding:14px;background:var(--panel-bg-strong);border:1px solid var(--panel-border-strong);border-radius:12px;box-shadow:var(--panel-shadow);z-index:120}#command-menu.open{display:block}.command-menu-section+.command-menu-section{margin-top:14px}.command-menu-title{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}.command-menu-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ui-btn,.history-item{border-radius:8px;border:1px solid var(--button-border);background:var(--button-bg)}.ui-btn{min-height:38px;padding:9px 11px;color:var(--text);font-family:inherit;font-size:11px;letter-spacing:.02em;text-align:left;cursor:pointer;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.ui-btn:hover{border-color:var(--accent);background:var(--button-bg-hover)}.ui-btn:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--focus-ring)}.ui-btn--accent:hover{border-color:var(--button-accent-border-hover);background:var(--button-accent-bg-hover);color:var(--button-accent-text-hover)}.ui-btn--danger:hover{border-color:var(--button-danger-border-hover);background:var(--button-danger-bg-hover);color:var(--button-danger-text-hover)}.ui-btn--icon{width:30px;min-width:30px;min-height:30px;height:30px;padding:0 7px;display:grid;place-items:center}#menu-toggle.ui-btn--icon{gap:4px;align-content:center}.ui-btn--tile{width:100%;justify-content:center;text-align:center}.ui-btn--compact{min-height:0;padding:4px 6px;font-size:10px}#menu-toggle.active{border-color:var(--accent);background:color-mix(in srgb,var(--button-bg-hover) 82%,var(--accent) 18%)}.history-item{display:grid;grid-template-columns:1fr auto;gap:10px;padding:8px 10px;font-size:11px;cursor:pointer}:is(.command-item,.history-item)+:is(.command-item,.history-item){margin-top:6px}.history-item.current{border-color:#7c6affd1;background:color-mix(in srgb,var(--button-bg) 84%,var(--accent) 16%)}.history-main{display:grid;gap:4px}.history-label{color:var(--text)}.history-time{color:var(--text-dim);text-align:right}.command-item{display:grid;grid-template-columns:1fr auto;gap:12px;padding:10px 12px;border:1px solid var(--button-border);border-radius:8px;background:var(--item-bg);font-size:11px}:is(.command-item,.history-item):hover{background:var(--item-bg-hover);border-color:var(--item-border-hover)}.command-keys{color:var(--accent3);text-align:right}.history-item.empty{color:var(--text-dim);grid-template-columns:1fr}.left-panel{display:flex;flex-shrink:0;align-self:stretch;pointer-events:none}.left-panel>*{pointer-events:auto}.left-panel-tabs{display:flex;flex-direction:column;width:36px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:4px 0;gap:2px;align-items:center}.left-panel-tab{width:30px;height:30px;border:none;background:transparent;color:var(--text-dim);font-size:14px;border-radius:6px;cursor:pointer;display:grid;place-items:center;transition:background .12s,color .12s;padding:0;font-family:inherit}.left-panel-tab:hover{background:var(--button-bg-hover);color:var(--text)}.left-panel-tab.active{background:color-mix(in srgb,var(--button-bg) 80%,var(--accent) 20%);color:var(--accent)}.left-panel-spacer{flex:1}.left-panel-body{width:304px;background:var(--panel-bg);border-right:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;flex-direction:column;overflow:hidden;transition:width .15s ease,opacity .12s ease}.left-panel.collapsed .left-panel-body{width:0;opacity:0;border-right:none;overflow:hidden}.left-panel.collapsed #left-panel-collapse{transform:rotate(180deg)}.left-panel-content{display:none;flex-direction:column;flex:1;overflow-y:auto;padding:12px;min-height:0}.left-panel-content.active{display:flex}.left-panel-title{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px;flex-shrink:0}.left-panel-empty{color:var(--text-dim);font-size:11px;opacity:.6}#left-panel-history,#left-panel-shortcuts,#left-panel-geometry,#left-panel-materials{overflow:auto;min-height:0;padding-right:4px}#left-panel-geometry,#left-panel-materials{display:grid;align-content:start;gap:4px}.library-panel-title{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;margin:6px 0 2px}.library-panel-item{margin-top:0}#error-panel{display:none;padding:10px 12px;border-top:1px solid rgba(255,106,106,.25);background:linear-gradient(180deg,#ff6a6a1f,#ff6a6a0d),var(--surface);color:#ffd7d7;font-size:11px;gap:6px}#error-panel.visible{display:grid}#error-title{font-family:Syne,sans-serif;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#ff8f8f}#error-message{color:#ffe9e9;word-break:break-word}#error-source{color:#ffb9b9;font-size:10px;word-break:break-all;opacity:.85}#error-details{margin:2px 0 0 16px;padding:0;color:#ffd7d7;font-size:10px}#error-details:empty{display:none}#error-details li{margin:2px 0}.context-menu{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px;box-shadow:var(--floating-shadow);z-index:1000;min-width:380px;max-width:460px;max-height:80vh;overflow-y:auto;-webkit-user-select:none;user-select:none}.context-menu-section{margin-bottom:8px}.context-menu-section:last-child{margin-bottom:0}.context-menu-title{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}.context-menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:4px}.context-menu-subgroup{margin-top:6px}.context-menu-subgroup:first-child{margin-top:0}.context-menu-subheader{font-family:Syne,sans-serif;font-size:9px;color:var(--text-dim);opacity:.7;margin-bottom:4px}.context-btn,.preset-btn{border:1px solid var(--button-border);background:var(--button-bg);color:var(--text);font-family:inherit;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.context-btn{min-height:32px;padding:7px 8px;border-radius:8px;cursor:pointer;text-align:left;font-size:10px}.context-btn:hover{border-color:var(--accent);background:var(--button-bg-hover)}#params-area{flex:1 1 auto;min-width:0;min-height:0;padding:10px 12px 12px;overflow-y:auto;border-top:1px solid var(--border);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 86%,transparent),var(--surface)),var(--surface)}#controls>#context-menu{pointer-events:auto}#params-list:empty:before{content:"No parameters in the current graph";display:block;color:var(--text-dim);font-size:11px;opacity:.7;padding:2px 0}#params-list:not(:empty){overflow-y:auto}#params-area h4{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}.param-row{display:flex;align-items:center;gap:10px;padding:2px 0;margin-bottom:8px}.param-name{min-width:48px;max-width:92px;flex:0 1 auto;color:var(--text-dim);font-size:10px;text-align:right}.param-val{min-width:50px;font-size:10px;color:var(--text-dim);text-align:right}.param-color-controls{flex:1;display:flex;align-items:center;justify-content:flex-start;gap:10px;min-width:0}.param-color-field{flex:1;min-width:0;min-height:20px;display:flex;align-items:center;gap:8px;padding:0 8px 0 6px;border:1px solid var(--field-border);border-radius:4px;background:var(--field-bg);color:var(--text);box-sizing:border-box;overflow:hidden}.param-color-field:hover{background:var(--field-bg-hover)}.param-color-field:focus-within{border-color:var(--accent)}.param-color-swatch-button{position:relative;width:16px;min-width:16px;height:16px;border-radius:4px;border:1px solid color-mix(in srgb,var(--field-border) 68%,transparent 32%);flex-shrink:0;overflow:hidden;cursor:pointer}.param-color-swatch{position:absolute;inset:0;border-radius:3px}.param-color-value{flex:1;min-width:0;font-size:10px;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:none;outline:none;background:transparent;padding:0}.param-color-input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:none;border-radius:4px;background:transparent;cursor:pointer;overflow:hidden;opacity:0}.param-color-input::-webkit-color-swatch-wrapper{padding:0}.param-color-input::-webkit-color-swatch{border:none;border-radius:5px}.param-inline-control{display:flex;align-items:center;gap:6px}.param-inline-control--leading{flex:1;min-width:0}.param-inline-control--trailing{flex:0 0 auto}.param-inline-label{font-size:10px;color:var(--text-dim);white-space:nowrap}#component-properties,#library-browser{width:100%;min-width:0;padding:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px}#component-properties+#library-browser{margin-top:14px;padding-top:14px;border-top:1px solid var(--separator)}.editor-sidebar-panel-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase}.editor-sidebar-panel-subtitle{font-family:inherit;font-size:9px;letter-spacing:.06em;opacity:.7}.editor-sidebar-card,.library-entry{border:1px solid var(--button-border);border-radius:10px;background:var(--button-bg)}.editor-sidebar-empty{color:var(--text-dim);font-size:11px;opacity:.7}.component-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px 0}.component-summary-name{font-size:12px;color:var(--text)}.component-slot-row{display:grid;gap:8px;padding:10px 12px 12px}.component-slot-row+.component-slot-row{border-top:1px solid var(--separator)}.component-slot-meta{display:grid;gap:4px}.component-slot-name{font-size:11px;color:var(--text)}.component-slot-detail-row{display:flex;align-items:center;gap:8px;min-width:0}.component-slot-badge{display:inline-flex;align-items:center;min-height:18px;padding:0 7px;border-radius:999px;border:1px solid var(--button-border);background:color-mix(in srgb,var(--button-bg-hover) 85%,var(--accent) 15%);color:var(--text);font-size:9px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.component-slot-detail{min-width:0;color:var(--text-dim);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.component-slot-select,.scene-prop-input{width:100%;background:var(--field-bg);border:1px solid var(--field-border);color:var(--text);font-family:inherit;font-size:11px;padding:6px 8px;border-radius:8px;outline:none}.component-slot-select:focus,.scene-prop-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--focus-ring)}.component-slot-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.library-browser-header{display:grid;gap:10px}.library-create-actions,.library-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.library-tab{min-height:34px;border:1px solid var(--button-border);border-radius:8px;background:var(--button-bg);color:var(--text-dim);font-family:inherit;font-size:11px;cursor:pointer;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.library-tab:hover{border-color:var(--accent);color:var(--text)}.library-tab.active{border-color:var(--accent);background:color-mix(in srgb,var(--button-bg-hover) 82%,var(--accent) 18%);color:var(--text)}.library-section{display:grid;gap:8px}.library-section-title{font-family:Syne,sans-serif;font-size:10px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase}.library-entry{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px}.library-entry-active{border-color:var(--accent);background:color-mix(in srgb,var(--button-bg) 82%,var(--accent) 18%)}.library-entry-linked{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 32%,transparent)}.library-entry-meta{min-width:0;display:grid;gap:3px}.library-entry-name{color:var(--text);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-entry-sub{color:var(--text-dim);font-size:10px}.library-entry-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}#editor-context-info{min-width:0}.editor-context-primary,.editor-context-secondary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-context-primary{color:var(--text);font-size:11px}.editor-context-secondary{color:var(--text-dim);font-size:10px}.scene-tree-item{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:11px;border-radius:6px;color:var(--text);-webkit-user-select:none;user-select:none}.scene-tree-item:hover{background:var(--button-bg-hover)}.scene-tree-item.scene-tree-active .scene-tree-icon{color:var(--accent)}.scene-tree-item.scene-tree-selected{background:color-mix(in srgb,var(--button-bg) 78%,var(--accent) 22%);border-left:2px solid var(--accent);padding-left:6px}.scene-tree-item.scene-tree-active.scene-tree-selected{background:color-mix(in srgb,var(--button-bg) 74%,var(--accent) 26%);border-left:2px solid var(--accent);padding-left:6px}.scene-tree-item.scene-tree-slot{gap:8px;color:var(--text-dim);font-size:10px;padding-top:3px;padding-bottom:3px}.scene-tree-item.scene-tree-slot:hover{background:color-mix(in srgb,var(--button-bg-hover) 82%,var(--surface) 18%)}.scene-tree-item.scene-tree-slot.scene-tree-slot-active{background:color-mix(in srgb,var(--button-bg) 78%,var(--accent) 22%);color:var(--text)}.scene-tree-slot-icon{width:14px;font-size:9px;color:var(--accent3)}.scene-tree-slot-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.scene-tree-slot-status{font-size:9px;color:var(--text-dim);opacity:.8;text-transform:uppercase;letter-spacing:.05em}.scene-tree-chip{border:1px solid var(--button-border);background:var(--button-bg);color:var(--text-dim);border-radius:999px;padding:1px 7px;font-size:9px;cursor:pointer;flex-shrink:0}.scene-tree-chip:hover{color:var(--text);border-color:var(--accent);background:var(--button-bg-hover)}.scene-tree-slot-picker-item{font-size:10px;color:var(--text);cursor:pointer}.scene-tree-slot-picker-item.subtle{color:var(--text-dim)}.scene-tree-icon{font-size:8px;color:var(--text-dim);width:10px;text-align:center;flex-shrink:0}.scene-tree-toggle{cursor:pointer;border-radius:3px}.scene-tree-toggle.scene-tree-parent-marker{position:relative;color:transparent;background:transparent}.scene-tree-toggle.scene-tree-parent-marker:before{content:"";position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%)}.scene-tree-toggle.scene-tree-parent-marker:hover{background:transparent}.scene-tree-toggle:hover{background:var(--button-bg-hover)}.scene-tree-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree-badge{font-size:9px;color:var(--accent3);opacity:.7}.scene-tree-graphname{font-size:9px;color:var(--text-dim);opacity:.7}.scene-tree-toolbar{display:flex;gap:4px;padding:4px 8px;border-bottom:1px solid var(--separator);margin-bottom:4px}.scene-tree-toolbar-meta{padding:0 8px 6px;font-size:10px;color:var(--text-dim)}.scene-tree-btn{font-size:10px;padding:2px 8px;border:1px solid var(--separator);border-radius:4px;background:var(--button-bg);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.scene-tree-btn:hover{background:var(--button-bg-hover)}.scene-tree-btn-danger{color:#f55;margin-left:auto}.scene-tree-btn-danger:hover{background:#ff505026}.scene-instance-picker{position:fixed;z-index:1000;max-height:min(360px,calc(100vh - 16px));overflow-y:auto;background:var(--bg);border:1px solid var(--separator);border-radius:6px;box-shadow:0 6px 20px #00000059;padding:6px 0}.scene-picker-item{display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:11px;color:var(--text);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.scene-picker-item:hover{background:var(--button-bg-hover)}.scene-picker-section-title{padding:6px 10px 4px;font-size:9px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim);opacity:.8}.scene-picker-list{display:grid;gap:1px;padding-bottom:4px}.scene-picker-icon{font-size:10px;color:var(--text-dim);width:12px;text-align:center;flex-shrink:0}.scene-picker-sep{height:1px;background:var(--separator);margin:3px 8px}.scene-props{border-top:1px solid var(--separator);margin-top:8px;padding-top:6px;accent-color:var(--accent)}.scene-props-header{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:600;color:var(--text);letter-spacing:.3px;padding:4px 8px;border-bottom:1px solid var(--separator);margin-bottom:4px}.scene-props-header-icon{font-size:8px;color:var(--accent);flex-shrink:0}.scene-props-header-kind{font-size:9px;color:var(--text-dim);font-weight:400;margin-left:auto;text-transform:uppercase;letter-spacing:.5px}.scene-props-section{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);padding:6px 4px 2px;margin-top:4px}.scene-prop-row{display:flex;align-items:center;gap:10px;padding:2px 4px;font-size:11px}.scene-prop-label{min-width:48px;max-width:92px;flex:0 1 auto;color:var(--text-dim);font-size:10px;text-align:right}.scene-prop-label-spacer{opacity:0;pointer-events:none}.scene-prop-input{flex:1;min-width:0;font-size:11px;padding:2px 4px;border:1px solid var(--field-border);border-radius:4px;background:var(--field-bg);color:var(--text);outline:none;transition:border-color .12s ease,background-color .12s ease}.scene-prop-input:hover{background:var(--field-bg-hover)}.scene-prop-input:focus{border-color:var(--accent)}.scene-prop-input--readonly{color:var(--text-dim);background:color-mix(in srgb,var(--field-bg) 88%,var(--panel-bg) 12%);border-color:color-mix(in srgb,var(--field-border) 48%,transparent 52%);cursor:text;text-align:center;font-variant-numeric:tabular-nums}.scene-prop-input--readonly:hover{background:color-mix(in srgb,var(--field-bg) 88%,var(--panel-bg) 12%)}.scene-prop-input--readonly:focus{border-color:color-mix(in srgb,var(--field-border) 48%,transparent 52%)}.scene-prop-checkbox{flex:1;min-width:0;min-height:24px;display:flex;align-items:center}.scene-prop-checkbox input[type=checkbox]{margin:0}.scene-prop-row-actions{align-items:flex-start;padding-top:4px}.scene-prop-action-group{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px}.scene-slot-prop-group{margin-bottom:6px}.scene-slot-prop-group:last-child{margin-bottom:0}.scene-prop-number{max-width:50px}.drag-field{--drag-progress: 0%;position:relative;border-radius:4px;cursor:ew-resize;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-size:11px;font-variant-numeric:tabular-nums;padding:0 4px;box-sizing:border-box;transition:border-color .12s ease,background-color .12s ease;overflow:hidden}.drag-field:before{content:"";position:absolute;inset:0;width:var(--drag-progress);background:color-mix(in srgb,var(--accent) 16%,transparent);pointer-events:none;opacity:0;transition:width .12s ease,opacity .12s ease}.drag-field--with-progress:before{opacity:1}.drag-field:hover{border-color:var(--text-dim)}.drag-field--dragging,.drag-field--dragging:hover{background:var(--field-bg-hover);border-color:var(--text-dim);transition:none}.drag-field-text{position:relative;z-index:1;pointer-events:none;color:inherit;line-height:1}.drag-field-edit{position:absolute;inset:0;width:100%;height:100%;box-sizing:border-box;font-size:11px;font-family:inherit;padding:0 4px;border:1px solid var(--accent);border-radius:3px;background:var(--bg);color:var(--text);outline:none;text-align:center}.drag-field--disabled{cursor:text;opacity:1;color:var(--text-dim);background:color-mix(in srgb,var(--field-bg) 88%,var(--panel-bg) 12%);border-color:color-mix(in srgb,var(--field-border) 48%,transparent 52%);box-shadow:none;-webkit-user-select:text;user-select:text}.drag-field--disabled:hover{background:color-mix(in srgb,var(--field-bg) 88%,var(--panel-bg) 12%);border-color:color-mix(in srgb,var(--field-border) 48%,transparent 52%);box-shadow:none}.drag-field--disabled .drag-field-text{pointer-events:auto;-webkit-user-select:text;user-select:text}.scene-prop-pad-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:3px;flex:1}.scene-prop-pad-grid input{width:100%;text-align:center}:root[data-theme=light] #menu-toggle span{width:15px;background:#2f3850}:root[data-theme=light] #command-menu{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}:root[data-theme=light] #error-panel{background:linear-gradient(180deg,#d943781a,#d943780a),var(--surface);color:#6d203d}:root[data-theme=light] #error-title{color:#b12d5e}:root[data-theme=light] :is(#error-message,#error-details){color:#6d203d}:root[data-theme=light] #error-source{color:#94405f}}@layer editor.editor{.edge-hit{pointer-events:stroke;cursor:pointer}.edge-glow,.edge-base,.edge-overlay{pointer-events:none;vector-effect:non-scaling-stroke}.edge-glow{stroke:var(--edge-color, #7c6aff);stroke-width:7;stroke-linecap:round;stroke-opacity:.18;filter:blur(3px)}.edge-base{stroke:var(--edge-color, #7c6aff);stroke-width:2.5;stroke-linecap:round;stroke-opacity:var(--edge-opacity, .92)}.edge-overlay{stroke:transparent;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0}.edge.is-dimmed .edge-glow{stroke-opacity:.1}.edge.is-dimmed .edge-base{stroke-opacity:.62}.edge[data-state=hover] .edge-glow{stroke-opacity:.3;filter:blur(4px)}.edge[data-state=hover] .edge-base{stroke-width:3.5;stroke-opacity:1}.edge[data-state=reconnect] .edge-glow,.edge[data-state=pending] .edge-glow{stroke-opacity:.34}.edge[data-state=reconnect] .edge-base,.edge[data-state=pending] .edge-base{stroke-width:3;stroke-opacity:1;stroke-dasharray:10 6}.edge[data-state=cut-preview] .edge-base{stroke-width:3.2;stroke-opacity:1}.edge[data-state=cut-preview] .edge-glow{stroke-opacity:.24}.edge[data-state=cut-preview] .edge-overlay{stroke:#ff6a6a;stroke-width:6;stroke-dasharray:12 8;stroke-opacity:.65;filter:drop-shadow(0 0 6px rgba(255,106,106,.34))}.edge[data-state=invalid] .edge-overlay{stroke:#ff6a6a;stroke-width:4;stroke-opacity:.4}.edge.pending-conn .edge-base,.edge.pending-conn .edge-overlay{stroke-dasharray:10 6}.edge-cut-line{stroke:#ff6a9b;stroke-width:3;stroke-linecap:round;stroke-dasharray:10 6;pointer-events:none;opacity:.95;filter:drop-shadow(0 0 8px rgba(255,106,155,.45))}#edge-hint{position:absolute;bottom:10px;left:50%;transform:translate(-50%);background:var(--edge-hint-bg);border:1px solid var(--border);color:var(--text-dim);font-size:10px;padding:4px 12px;border-radius:3px;pointer-events:none;opacity:0;transition:opacity .6s;white-space:nowrap;z-index:50}#edge-hint.visible{opacity:1}.node{position:absolute;z-index:1;background:var(--node-bg);border:1px solid var(--node-border);border-radius:6px;min-width:148px;box-shadow:var(--node-shadow);-webkit-user-select:none;user-select:none;transition:border-color .1s;overflow:visible}.node.selected{z-index:2;border-color:var(--node-selected);box-shadow:var(--node-shadow-selected)}.node.has-warning{border-color:#e8a034;box-shadow:var(--node-shadow-warning)}.node.has-error{border-color:#ff6a6a;box-shadow:var(--node-shadow-error)}.node-header{padding:6px 10px;line-height:20px;border-bottom:1px solid var(--node-border);border-radius:6px 6px 0 0;cursor:move;display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px}.node-header .cat{font-size:10px;opacity:.5}.node-ports{padding:6px 0;overflow:visible}.port-row{display:flex;align-items:center;padding:0;position:relative;min-height:24px}.port-label{padding:0 10px;font-size:12px;color:var(--text-dim);flex:1}.port-label.out{text-align:right}.port-dot{--socket-color: var(--text-dim);--socket-filled-bg: color-mix(in srgb, var(--socket-color) 75%, var(--node-bg));--socket-preview-bg: color-mix(in srgb, var(--socket-color) 38%, var(--node-bg));--socket-hover-scale: 1.18;width:12px;height:12px;border-radius:50%;border:2px solid var(--socket-color);background:var(--node-bg);color:var(--socket-color);cursor:crosshair;position:absolute;z-index:10;transform:scale(1);transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease,transform .12s ease}.port-dot:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%}body:not(.dragging-conn) :where(.port-dot:not(.connected):not(.pending-anchor):hover,.port-dot:not(.connected):not(.pending-anchor).hovered){border-color:var(--socket-color);background:var(--socket-preview-bg);transform:scale(var(--socket-hover-scale));box-shadow:0 0 0 3px color-mix(in srgb,var(--socket-color) 22%,transparent),0 0 0 7px color-mix(in srgb,var(--socket-color) 12%,transparent)}body:not(.dragging-conn) :where(.port-dot.connected:hover,.port-dot.connected.hovered,.port-dot.pending-anchor:hover,.port-dot.pending-anchor.hovered){border-color:var(--socket-color);transform:scale(var(--socket-hover-scale));box-shadow:0 0 0 3px color-mix(in srgb,var(--socket-color) 22%,transparent),0 0 0 7px color-mix(in srgb,var(--socket-color) 12%,transparent)}.port-dot.in{left:-6px;top:50%;margin-top:-6px}.port-dot.out{right:-6px;top:50%;margin-top:-6px}.port-dot.type-float{--socket-color: var(--type-float)}.port-dot.type-vec2{--socket-color: var(--type-vec2)}.port-dot.type-vec3{--socket-color: var(--type-vec3)}.port-dot.type-vec4{--socket-color: var(--type-vec4)}.port-dot.type-bounds{--socket-color: var(--type-bounds)}.port-dot.type-transform{--socket-color: var(--type-transform)}.port-dot.type-size{--socket-color: var(--type-vec2)}.port-dot.type-rects{--socket-color: var(--type-vec4)}.port-dot.connected,.port-dot.pending-anchor{background:var(--socket-filled-bg)}.port-dot.snap-target{background:var(--socket-preview-bg)!important;transform:scale(var(--socket-hover-scale))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--socket-color) 22%,transparent) ! important,0 0 0 7px color-mix(in srgb,#6affcf 20%,transparent)!important}.port-dot.detach-target{background:var(--socket-preview-bg)!important;transform:scale(var(--socket-hover-scale))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--socket-color) 22%,transparent) ! important,0 0 0 7px color-mix(in srgb,#ffb432 20%,transparent)!important}.drag-field,.node-value-input{background:var(--field-bg);border:1px solid var(--field-border);color:var(--text);min-height:20px}.drag-field:hover,.node-value-input:hover{background:var(--field-bg-hover)}.node-value-input{font-family:inherit;font-size:12px;width:60px;padding:0 8px;border-radius:8px;outline:none;margin-right:0;transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}.node-value-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--focus-ring)}.value-row{padding:0 8px 0 10px;gap:8px}.value-row+.value-row,.port-row+.value-row,.port-row+.port-row{margin-top:6px}.value-row--section{min-height:16px;margin-top:8px}.value-section-label{font-size:10px;line-height:1;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--text-dim) 82%,transparent)}.value-field-label{min-width:48px;flex:0 0 auto;padding:0;font-size:12px;color:var(--text-dim);text-align:right;white-space:nowrap}.value-range-label{display:flex;align-items:center;gap:6px;min-width:48px;max-width:92px;flex:0 1 auto;font-size:12px;color:var(--text-dim);justify-content:flex-end;-webkit-user-select:none;user-select:none}.value-range-label input{margin:0;accent-color:var(--accent);cursor:pointer}.value-range-text{display:inline-block;min-width:20px}.value-toggle{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:0;border:none;background:transparent;color:var(--text-dim);font-size:12px;cursor:pointer}.value-toggle:hover{color:var(--text)}.value-toggle input{margin:0;accent-color:var(--accent);cursor:pointer}.value-color-field{flex:1;min-width:0;min-height:20px;display:flex;align-items:center;gap:8px;padding:0 8px 0 6px;border-radius:8px;border:1px solid var(--field-border);background:var(--field-bg)}.value-color-field:hover{background:var(--field-bg-hover)}.value-color-swatch-button{position:relative;width:16px;min-width:16px;height:16px;border-radius:4px;border:1px solid var(--field-border);overflow:hidden;cursor:pointer}.value-color-swatch{display:block;width:100%;height:100%;border-radius:3px}.value-color-input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:none;opacity:0;cursor:pointer}.value-color-input::-webkit-color-swatch-wrapper{padding:0}.value-color-input::-webkit-color-swatch{border:none;border-radius:3px}.value-color-value{flex:1;min-width:0;padding:0;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}.value-color-value::selection{background:var(--focus-ring)}.value-color-value:focus{color:var(--text)}.value-inline-control{display:flex;align-items:center;gap:6px;margin-left:0}.value-inline-control--row{flex:1;min-width:0}.value-inline-control--leading{flex:1;min-width:0;gap:4px;margin-left:0}.value-inline-control--alpha{flex:0 0 auto;gap:4px;margin-left:auto}.value-inline-label{font-size:11px;color:var(--text-dim);white-space:nowrap}.value-channel-label{min-width:48px;max-width:92px;flex:0 1 auto;padding:0;font-size:12px;color:var(--text-dim);text-align:right;white-space:nowrap}.cat-source .node-header{background:var(--cat-source-bg)}.cat-math .node-header{background:var(--cat-math-bg)}.cat-vector .node-header{background:var(--cat-vector-bg)}.cat-bounds .node-header{background:var(--cat-bounds-bg)}.cat-sdf .node-header{background:var(--cat-sdf-bg)}.cat-output .node-header{background:var(--cat-output-bg)}.node-del{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px;line-height:1;z-index:20;padding:0 0 0 4px;margin-left:auto;display:flex;align-items:center;flex-shrink:0}.node-del:hover{color:var(--accent2)}.node-scale-toggle{display:flex;margin:3px 8px;border:1px solid var(--border);border-radius:5px;overflow:hidden}.node-scale-toggle button{flex:1;background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:10px;padding:4px 0;line-height:1.3;transition:background .1s,color .1s}.node-scale-toggle button+button{border-left:1px solid var(--border)}.node-scale-toggle button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--text)}.node-scale-toggle button.active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);font-weight:600}#tooltip{position:fixed;background:var(--surface2);border:1px solid var(--border);padding:4px 8px;font-size:10px;pointer-events:none;border-radius:3px;z-index:1000;display:none}}
