:root{--bg-0:#08070f;--bg-1:#0d0b1a;--bg-2:#141028;--panel:#16122ab8;--panel-solid:#16122a;--border:#ffffff14;--border-strong:#ffffff24;--text:#f4f1ff;--text-dim:#a89fc9;--text-faint:#5f5880;--accent-pink:#ff7ac6;--accent-violet:#a78bfa;--accent-cyan:#7dd3fc;--accent-coral:#ff9472;--accent-lime:#b7f97c;--glow-pink:0 0 40px #ff7ac666;--glow-violet:0 0 40px #a78bfa80;--radius:14px;--radius-sm:10px;--radius-xs:6px}body.theme-light{--bg-0:#f0ecf7;--bg-1:#faf8ff;--bg-2:#fff;--panel:#ffffffc7;--panel-solid:#fff;--border:#14102814;--border-strong:#14102829;--text:#1a1530;--text-dim:#5f5880;--text-faint:#a89fc9}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg-0);color:var(--text);font-feature-settings:"cv02","cv03","cv04","ss01";-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,sans-serif;overflow:hidden}button{color:inherit;cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea{color:inherit;font-family:inherit}.app{background:radial-gradient(ellipse 80% 60% at 20% 0%, #a78bfa2e, transparent 60%), radial-gradient(ellipse 70% 50% at 100% 100%, #ff7ac624, transparent 60%), radial-gradient(ellipse 60% 40% at 50% 50%, #7dd3fc14, transparent 60%), var(--bg-0);grid-template-rows:52px 1fr;width:100vw;height:100vh;display:grid;position:relative;overflow:hidden}body.theme-light .app{background:radial-gradient(ellipse 80% 60% at 20% 0%, #a78bfa33, transparent 60%), radial-gradient(ellipse 70% 50% at 100% 100%, #ff7ac62e, transparent 60%), var(--bg-0)}.app:after{content:"";pointer-events:none;mix-blend-mode:overlay;opacity:.5;z-index:1;background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.topbar{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(20px);z-index:10;background:linear-gradient(#0d0b1acc,#0d0b1a80);grid-template-columns:auto 1fr auto;align-items:center;padding:0 14px;display:grid;position:relative}body.theme-light .topbar{background:linear-gradient(#ffffffd9,#fff9)}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-size:15px;font-weight:700;display:flex}.brand-mark{background:conic-gradient(from 180deg,#ff7ac6 0%,#a78bfa 25%,#7dd3fc 50%,#b7f97c 75%,#ff7ac6 100%);border-radius:8px;width:28px;height:28px;animation:12s linear infinite spin;position:relative;box-shadow:0 4px 20px #a78bfa66,inset 0 0 0 1px #fff3}.brand-mark:after{content:"";background:var(--bg-0);border-radius:5px;position:absolute;inset:5px}.brand-mark:before{content:"";z-index:1;background:conic-gradient(#fff,#a78bfa,#ff7ac6,#fff);border-radius:3px;animation:6s linear infinite reverse spin;position:absolute;inset:9px}.brand-name{color:var(--text)}.brand-name .dot{color:var(--accent-pink)}.doc-title{color:var(--text-dim);white-space:nowrap;justify-content:center;align-items:center;gap:10px;min-width:0;font-size:13px;display:flex;overflow:hidden}.doc-title strong{color:var(--text);font-weight:600}.doc-title .crumb{opacity:.5}.doc-title .sync-dot{background:var(--accent-lime);width:6px;height:6px;box-shadow:0 0 8px var(--accent-lime);border-radius:50%;animation:2s ease-in-out infinite pulse}.top-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.avatars{margin-right:6px;display:flex}.avatar{border:2px solid var(--bg-1);color:#fff;background-size:cover;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;margin-left:-8px;font-size:10px;font-weight:700;display:flex}.avatar:first-child{background:linear-gradient(135deg,#ff7ac6,#a78bfa)}.avatar:nth-child(2){background:linear-gradient(135deg,#7dd3fc,#a78bfa)}.avatar:nth-child(3){background:linear-gradient(135deg,#ff9472,#ff7ac6)}.btn{border-radius:var(--radius-sm);white-space:nowrap;align-items:center;gap:6px;padding:7px 12px;font-size:12.5px;font-weight:500;transition:all .15s;display:inline-flex}.btn-ghost{color:var(--text-dim)}.btn-ghost:hover{color:var(--text);background:#ffffff0d}.btn-ghost.active{color:var(--accent-violet)}.btn-primary{color:#fff;background:linear-gradient(135deg,#ff7ac6 0%,#a78bfa 60%,#7dd3fc 100%);padding:7px 14px;font-weight:600;position:relative;overflow:hidden;box-shadow:0 4px 20px #a78bfa66,inset 0 1px #fff3}.btn-primary:before{content:"";background:linear-gradient(135deg,#0000 40%,#ffffff4d 50%,#0000 60%);transition:transform .6s;position:absolute;inset:0;transform:translate(-100%)}.btn-primary:hover:before{transform:translate(100%)}.btn-icon{width:30px;height:30px;color:var(--text-dim);border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.btn-icon:hover{color:var(--text);background:#ffffff0f}.btn-icon.active{color:var(--text);background:#a78bfa2e;box-shadow:inset 0 0 0 1px #a78bfa66}.workspace{z-index:2;grid-template-columns:260px 1fr 300px;height:100%;min-height:0;display:grid;position:relative}.panel{background:var(--panel);-webkit-backdrop-filter:blur(24px);border-right:1px solid var(--border);z-index:5;flex-direction:column;min-height:0;display:flex;position:relative}.panel.right{border-right:none;border-left:1px solid var(--border)}.panel-tabs{border-bottom:1px solid var(--border);gap:2px;padding:8px 8px 0;display:flex}.panel-tab{color:var(--text-faint);letter-spacing:.02em;text-transform:uppercase;border-radius:8px 8px 0 0;padding:8px 10px;font-size:11.5px;font-weight:500;position:relative}.panel-tab.active{color:var(--text);background:#ffffff0a}.panel-tab.active:after{content:"";background:linear-gradient(90deg, var(--accent-pink), var(--accent-violet));border-radius:2px;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.panel-body{flex-direction:column;flex:1;min-height:0;padding:14px;display:flex;overflow-y:auto}.panel-body::-webkit-scrollbar{width:8px}.panel-body::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:4px}.section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);justify-content:space-between;align-items:center;margin:14px 4px 8px;font-size:10.5px;font-weight:600;display:flex}.section-label:first-child{margin-top:2px}.section-label .count{color:var(--text-faint);letter-spacing:0;background:#ffffff0d;border-radius:4px;padding:2px 6px;font-weight:500}.tree-item{cursor:pointer;color:var(--text-dim);border-radius:7px;align-items:center;gap:8px;padding:6px 8px;font-size:12.5px;transition:background .12s;display:flex;position:relative}.tree-item:hover{color:var(--text);background:#ffffff0a}.tree-item.selected{color:var(--text);background:linear-gradient(90deg,#a78bfa2e,#ff7ac61a);box-shadow:inset 0 0 0 1px #a78bfa4d}.tree-item .chevron{width:10px;color:var(--text-faint);transition:transform .15s}.tree-item.open .chevron{transform:rotate(90deg)}.tree-item .dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.tree-item .label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tree-item .vis{color:var(--text-faint);opacity:0;transition:opacity .15s}.tree-item:hover .vis{opacity:1}.tree-chev{cursor:pointer;border-radius:4px;flex-shrink:0;align-items:center;padding:2px;display:inline-flex}.tree-chev:hover{background:#ffffff14}.comment-layer{pointer-events:none;z-index:20;position:absolute;inset:0}.comment-bubble{pointer-events:auto;cursor:grab;z-index:20;position:absolute}.comment-bubble:active{cursor:grabbing}.comment-pin{z-index:2;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border-radius:50% 50% 50% 0;width:24px;height:24px;position:relative;transform:rotate(-45deg);box-shadow:0 2px 8px #ff7ac680}.comment-pin-3d{z-index:1;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border-radius:50%;width:8px;height:8px;position:absolute;top:0;left:0;box-shadow:0 0 8px #ff7ac699}.comment-resolved .comment-pin{background:linear-gradient(135deg,#5f5880,#3a3565);box-shadow:0 2px 6px #0000004d}.comment-selected .comment-pin{box-shadow:0 0 0 2px #fff,0 2px 12px #ff7ac699}.comment-badge{background:var(--panel-solid);border:1px solid var(--border-strong);white-space:nowrap;border-radius:10px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;display:flex;position:absolute;top:0;left:28px;box-shadow:0 4px 12px #0000004d}.comment-badge.comment-minimized{opacity:.85;border-radius:50%;padding:2px 4px;transition:opacity .15s,transform .15s;top:-4px;left:20px}.comment-badge.comment-minimized:hover{opacity:1;transform:scale(1.15)}.comment-author-dot{color:#fff;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:flex}.comment-count{color:var(--text-dim);font-size:10px;font-weight:600}.comment-expanded{background:var(--panel-solid);border:1px solid var(--border-strong);border-radius:12px;width:260px;position:absolute;top:30px;left:-8px;overflow:hidden;box-shadow:0 8px 30px #00000080}.comment-tail{display:none}.comment-selected .comment-tail{border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:8px solid var(--panel-solid);z-index:3;width:0;height:0;display:block;position:absolute;top:24px;left:4px}.comment-header{align-items:center;gap:6px;padding:8px 10px 4px;font-size:11px;display:flex}.comment-author{color:var(--text);font-weight:600}.comment-time{color:var(--text-faint);font-size:10px}.comment-action{cursor:pointer;color:var(--text-faint);background:0 0;border:none;border-radius:4px;padding:2px}.comment-action:hover{color:var(--text);background:#ffffff14}.comment-text{color:var(--text);padding:2px 10px 8px;font-size:12px;line-height:1.5}.comment-input{width:100%;color:var(--text);background:0 0;border:none;outline:none;padding:4px 10px 8px;font-family:inherit;font-size:12px}.comment-input::placeholder{color:var(--text-faint)}.comment-reply{border-top:1px solid var(--border)}.comment-reply-area{border-top:1px solid var(--border);padding:4px 0}.cam-btn{width:26px;height:26px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:10px;font-weight:700;transition:all .12s;display:inline-flex}.cam-btn:hover{color:var(--text);background:#ffffff14}.tree-item[draggable]{cursor:grab}.tree-item[draggable]:active{cursor:grabbing;opacity:.6}.tree-item.tree-drop-above{box-shadow:0 -2px #ff7ac6}.tree-item.tree-drop-below{box-shadow:0 2px #ff7ac6}.tree-item.tree-drop-inside{background:#ff7ac626;box-shadow:inset 0 0 0 1px #ff7ac666}.tree-children{border-left:1px dashed var(--border);margin-left:14px;padding-left:6px}.sample-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sample-card{aspect-ratio:1;background:var(--bg-2);border:1px solid var(--border);cursor:pointer;border-radius:10px;transition:transform .2s,box-shadow .2s,border-color .2s;position:relative;overflow:hidden}.sample-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 8px 24px #0000004d,0 0 0 1px #a78bfa4d}.sample-card.active{border-color:#a78bfa99;box-shadow:0 0 0 1px #a78bfa80,0 8px 30px #a78bfa59}.sample-card .sample-thumb{justify-content:center;align-items:center;width:100%;height:65%;display:flex;position:relative;overflow:hidden}.sample-card .sample-meta{color:var(--text);flex-direction:column;gap:2px;padding:8px 8px 10px;font-size:10.5px;font-weight:600;display:flex}.sample-card .sample-meta .type{color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:500}.sample-card .sample-meta .title-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.canvas-wrap{background:radial-gradient(ellipse 60% 40% at 50% 40%, color-mix(in srgb, var(--hdri-color,#a78bfa) 18%, transparent), transparent 70%), radial-gradient(ellipse 50% 50% at 80% 70%, color-mix(in srgb, var(--hdri-color,#a78bfa) 8%, transparent), transparent 60%), linear-gradient(180deg, transparent, #0000004d);min-height:0;position:relative;overflow:hidden}.canvas-wrap.bg-nebula{background:radial-gradient(50% 50% at 30% 30%,#ff7ac62e,#0000 60%),radial-gradient(50% 50% at 70% 70%,#7dd3fc24,#0000 60%),linear-gradient(#0000,#0000004d)}.canvas-wrap.bg-minimal{background:var(--bg-1)}.canvas-wrap.bg-dark{background:#050409}.canvas-grid{background-image:linear-gradient(90deg,#ffffff06 1px,#0000 1px),linear-gradient(#ffffff06 1px,#0000 1px);background-size:var(--grid-size,32px) var(--grid-size,32px);opacity:var(--grid-opacity,1);pointer-events:none;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 70%,#000 40%,#0000 100%);mask-image:radial-gradient(70% 70%,#000 40%,#0000 100%)}body.theme-light .canvas-grid{background-image:linear-gradient(90deg,#1410280f 1px,#0000 1px),linear-gradient(#1410280f 1px,#0000 1px)}.canvas-toolbar{background:var(--panel);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-strong);z-index:20;border-radius:12px;gap:2px;padding:5px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #0006}.tool-btn{width:34px;height:34px;color:var(--text-dim);border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex;position:relative}.tool-btn:hover{color:var(--text);background:#ffffff0f}.tool-btn.active{color:var(--text);background:linear-gradient(135deg,#ff7ac640,#a78bfa40);box-shadow:inset 0 0 0 1px #a78bfa66}.tool-btn .tip{background:var(--bg-2);border:1px solid var(--border);color:var(--text);white-space:nowrap;opacity:0;pointer-events:none;z-index:100;border-radius:6px;padding:4px 8px;font-size:11px;transition:opacity .15s;position:absolute;top:110%;left:50%;transform:translate(-50%)}.tool-btn:hover .tip{opacity:1}.tool-divider{background:var(--border);width:1px;margin:4px}.canvas-hud{z-index:15;color:var(--text-dim);pointer-events:none;align-items:center;gap:6px;font-size:11.5px;display:flex;position:absolute}.canvas-hud.top-left{top:14px;left:14px}.canvas-hud.top-right{top:14px;right:14px}.canvas-hud.bottom-left{bottom:14px;left:14px}.canvas-hud.bottom-right{bottom:14px;right:14px}.hud-chip{background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);pointer-events:auto;font-variant-numeric:tabular-nums;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.hud-chip.glow{border-color:#a78bfa4d;box-shadow:0 0 30px #a78bfa4d}.dim-toggle{background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-strong);pointer-events:auto;border-radius:10px;gap:0;padding:3px;display:flex;position:relative}.dim-toggle button{letter-spacing:.05em;color:var(--text-dim);z-index:2;border-radius:7px;padding:6px 14px;font-size:11.5px;font-weight:600;transition:color .25s;position:relative}.dim-toggle button.active{color:#fff}.dim-toggle .thumb{z-index:1;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border-radius:7px;width:calc(50% - 3px);transition:transform .3s cubic-bezier(.6,.2,.2,1);position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 4px 14px #a78bfa80}.dim-toggle.dim-3d .thumb{transform:translate(100%)}.orbit-handle{z-index:18;cursor:grab;pointer-events:auto;width:78px;height:78px;position:absolute;bottom:18px;right:18px}.orbit-handle:active{cursor:grabbing}.orbit-handle .ring{border:1px solid var(--border-strong);background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:50%;position:absolute;inset:0}.orbit-handle .ring:before{content:"";border:1px dashed #a78bfa40;border-radius:50%;position:absolute;inset:8px}.orbit-handle .axis{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.orbit-lines{pointer-events:none;position:absolute;inset:0}.orbit-handle .axis.x{background:#ff7ac6;box-shadow:0 2px 8px #ff7ac699}.orbit-handle .axis.y{color:#0a0a0a;background:#b7f97c;box-shadow:0 2px 8px #b7f97c99}.orbit-handle .axis.z{color:#0a0a0a;background:#7dd3fc;box-shadow:0 2px 8px #7dd3fc99}.stage{perspective:1600px;perspective-origin:50%;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.scene{transform-style:preserve-3d;width:100%;height:100%;position:relative}.node{transform-style:preserve-3d;-webkit-user-select:none;user-select:none;transition:box-shadow .2s;position:absolute}.node-inner{border-radius:var(--radius);color:#fff;transform-style:preserve-3d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:14px 16px;font-size:13px;font-weight:500;position:relative;box-shadow:0 12px 32px #0006,0 2px 8px #0000004d,inset 0 1px #ffffff38,inset 0 -1px #0003}.m-pink{background:linear-gradient(135deg,#ff7ac6 0%,#e85db8 50%,#b94c99 100%)}.m-violet{background:linear-gradient(135deg,#c4b5fd 0%,#a78bfa 45%,#7c5cd8 100%)}.m-cyan{background:linear-gradient(135deg,#bae6fd 0%,#7dd3fc 45%,#3894c9 100%)}.m-coral{background:linear-gradient(135deg,#ffb89a 0%,#ff9472 45%,#d66a4a 100%)}.m-lime{color:#1a2010;background:linear-gradient(135deg,#d9ff9e 0%,#b7f97c 45%,#7bc947 100%)}.m-ink{background:linear-gradient(135deg,#3a3565 0%,#26214a 45%,#16122a 100%)}.m-custom{background:var(--custom-color,#a78bfa)}.m-iri{background:linear-gradient(110deg,#ff7ac6,#a78bfa,#7dd3fc,#b7f97c,#ff9472);animation:5s linear infinite iri}.node.sel .node-inner{box-shadow:0 0 0 2px #ff7ac6,0 0 24px #ff7ac699,0 12px 32px #0006,inset 0 1px #ffffff38}.node.text-node{box-shadow:none!important;background:0 0!important;border:none!important}.node.text-node.sel{outline-offset:4px;border-radius:4px;outline:1px dashed #ff7ac699}.node .lift{transition:transform .25s;transform:translateZ(12px)}.node:hover .lift{transform:translateZ(24px)}.node-extrude{border-radius:var(--radius);position:absolute;inset:0;transform:translateZ(-6px);box-shadow:inset 0 0 0 1px #0003}.node-extrude:after{content:"";border-radius:inherit;background:#0006;position:absolute;inset:0}.node-extrude.l2{transform:translateZ(-12px)}.node-extrude.l2:after{background:#0009}.node-extrude.l3{transform:translateZ(-18px)}.node-extrude.l3:after{background:#000000bf}.node-extrude.m-iri{animation:none}.node-resize{cursor:nwse-resize;z-index:10;background:#ff7ac6;border:2px solid #0000004d;border-radius:2px;width:12px;height:12px;position:absolute;bottom:-4px;right:-4px;box-shadow:0 1px 4px #0000004d}.node-icon{opacity:.85;margin-bottom:4px}.node-icon img{object-fit:contain;max-width:28px;max-height:28px}.node-title{letter-spacing:-.01em;font-size:13.5px;font-weight:600;line-height:1.2}.node-sub{opacity:.75;margin-top:3px;font-size:11px;font-weight:400}.node-kind{letter-spacing:.12em;text-transform:uppercase;opacity:.6;margin-bottom:4px;font-size:9.5px;font-weight:700}.shader-iridescent .node-inner:after{content:"";border-radius:inherit;mix-blend-mode:color-dodge;pointer-events:none;background:linear-gradient(110deg,#ff7ac64d,#a78bfa4d,#7dd3fc4d,#b7f97c4d,#ff94724d);animation:4s linear infinite iri;position:absolute;inset:0}.shader-glass .node-inner{-webkit-backdrop-filter:blur(18px);border:1px solid #ffffff38;background:#ffffff14!important;animation:none!important;box-shadow:inset 0 1px #ffffff59,inset 0 -1px #ffffff14,0 20px 40px #0000004d!important}.shader-glass .node-extrude{opacity:.3}.shader-toon .node-inner,.shader-toon .node-extrude{border-radius:6px}.shader-toon .node-inner{-webkit-backdrop-filter:none;backdrop-filter:none;border:2.5px solid #00000080;animation:none!important;box-shadow:6px 6px #00000059!important}.shader-wireframe .node-inner{-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--text);border:2px dashed #ffffff80;box-shadow:none!important;background:#08070fd9!important;animation:none!important}body.theme-light .shader-wireframe .node-inner{background:#f0ecf7e6!important}.shader-wireframe .node-kind,.shader-wireframe .node-sub{opacity:.6}.scene .node-inner{box-shadow:0 12px 32px #0006, 0 2px 8px #0000004d, inset 0 1px 0 rgba(255,255,255, calc(.12 + var(--metalness,.6) * .2)), inset 0 -1px 0 #0003, 0 0 calc(var(--emission,.22) * 60px) rgba(167,139,250, calc(var(--emission,.22) * .8))}.scene .node.sel .node-inner{box-shadow:0 0 0 2px #ff7ac6, 0 0 24px #ff7ac699, 0 12px 32px #0006, inset 0 1px 0 #ffffff38, 0 0 calc(var(--emission,.22) * 60px) rgba(167,139,250, calc(var(--emission,.22) * .8))}.canvas-wrap:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(ellipse 70% 60% at 30% 20%, var(--light-color,#ff9472), transparent 70%);opacity:calc(var(--light-intensity,.7) * .3);mix-blend-mode:screen;position:absolute;inset:0}.node-inner:before{content:"";border-radius:var(--radius);background:radial-gradient(ellipse at 30% 20%, rgba(255,255,255, calc(var(--metalness,.6) * .3)), transparent 70%);pointer-events:none;z-index:1;height:45%;opacity:calc(1 - var(--roughness,.35));position:absolute;top:0;left:0;right:40%}.scene.flat .node-inner{border:1px solid #ffffff26;box-shadow:0 1px #00000014,0 2px 6px #0000001f}.scene.flat .node{z-index:2}.scene.flat .node-extrude{display:none}.scene.flat .lift{transform:none!important}.edges-svg{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.scene .node{z-index:1}.edge-path{fill:none;stroke:url(#edge-gradient);stroke-width:2px;stroke-linecap:round}.edge-path.dashed{stroke-dasharray:6 6;animation:25s linear infinite dash}.edge-pulse{fill:#fff;r:3.5;filter:url(#glow)}.inspector-header{border-bottom:1px solid var(--border);padding:14px 14px 10px}.inspector-header .title{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.inspector-header .type-badge{letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-top:4px;font-size:9.5px;font-weight:600}.prop-row{grid-template-columns:74px 1fr;align-items:center;gap:8px;padding:5px 0;display:grid}.prop-row .prop-label{color:var(--text-faint);font-size:11.5px;font-weight:500}.prop-row .prop-value{color:var(--text);align-items:center;gap:4px;font-size:12px;display:flex}.input{background:var(--bg-2);border:1px solid var(--border);width:100%;color:var(--text);font-variant-numeric:tabular-nums;border-radius:6px;outline:none;padding:6px 8px;font-size:12px}.input:focus{border-color:#a78bfa80;box-shadow:0 0 0 3px #a78bfa26}.xy-input{grid-template-columns:1fr 1fr;gap:4px;width:100%;display:grid}.xyz-input{grid-template-columns:1fr 1fr 1fr;gap:4px;width:100%;display:grid}.swatches{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.swatch{aspect-ratio:1;cursor:pointer;border-radius:6px;transition:transform .12s;position:relative;box-shadow:inset 0 1px #fff3,0 2px 6px #0003}.swatch:hover{transform:scale(1.08)}.swatch.active:after{content:"";border:2px solid #fff;border-radius:8px;position:absolute;inset:-3px}.swatch.pink{background:linear-gradient(135deg,#ff7ac6,#b94c99)}.swatch.violet{background:linear-gradient(135deg,#c4b5fd,#7c5cd8)}.swatch.cyan{background:linear-gradient(135deg,#bae6fd,#3894c9)}.swatch.coral{background:linear-gradient(135deg,#ffb89a,#d66a4a)}.swatch.lime{background:linear-gradient(135deg,#d9ff9e,#7bc947)}.swatch.ink{background:linear-gradient(135deg,#3a3565,#16122a)}.swatch.iri{background:linear-gradient(110deg,#ff7ac6,#a78bfa,#7dd3fc,#b7f97c,#ff9472);animation:3s linear infinite iri}.slider-row{align-items:center;gap:8px;display:flex}.slider{appearance:none;background:var(--border);border-radius:2px;outline:none;flex:1;height:3px}.slider::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border:2px solid #fff;border-radius:50%;width:14px;height:14px;box-shadow:0 2px 8px #a78bfa80}.slider-val{color:var(--text-dim);font-variant-numeric:tabular-nums;text-align:right;min-width:30px;font-size:11px}.mat-preview{aspect-ratio:2.2;border:1px solid var(--border);background:radial-gradient(at 30% 20%,#ffffff26,#0000 50%),linear-gradient(#1a1430 0%,#0b0a14 100%);border-radius:10px;justify-content:center;align-items:center;width:100%;margin-bottom:10px;display:flex;position:relative;overflow:hidden}.mat-sphere{aspect-ratio:1;border-radius:50%;width:66%;position:relative;box-shadow:inset -8px -12px 20px #0006,inset 6px 8px 12px #ffffff26,0 8px 24px #00000080}.mat-sphere:after{content:"";filter:blur(3px);background:radial-gradient(#fffc,#0000 70%);border-radius:50%;width:28%;height:22%;position:absolute;top:12%;left:18%}.code-panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-strong);z-index:8;background:#0a0814e0;border-radius:12px;flex-direction:column;width:380px;height:340px;display:flex;position:absolute;bottom:60px;left:18px;overflow:hidden;box-shadow:0 16px 40px #00000080}.code-head{border-bottom:1px solid var(--border);letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;font-size:11px;font-weight:600;display:flex}.code-head .lang{color:var(--accent-violet);letter-spacing:.08em;background:#a78bfa33;border-radius:4px;padding:2px 7px;font-size:10px;font-weight:700}.code-head .spacer{flex:1;min-width:8px}.code-head button{color:var(--text-dim);letter-spacing:.05em;border-radius:5px;padding:4px 8px;font-size:10.5px;font-weight:600}.code-head button:hover{color:var(--text);background:#ffffff0f}.code-head button.active{color:#fff;background:linear-gradient(135deg,#ff7ac6,#a78bfa)}.code-body{color:#e4dfff;white-space:pre;tab-size:2;flex:1;padding:12px 14px;font-family:JetBrains Mono,monospace;font-size:11.5px;line-height:1.6;overflow:auto}.code-body::-webkit-scrollbar{width:6px;height:6px}.code-body::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.cc-kw{color:#ff7ac6;font-weight:600}.cc-str{color:#b7f97c}.cc-cmt{color:#5f5880;font-style:italic}.cc-op{color:#7dd3fc}.cc-id{color:#e4dfff}.cc-num{color:#ffd447}.stat-ring{position:relative}.stat-ring-num{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;inset:0}.tweaks{background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-strong);z-index:30;border-radius:12px;width:260px;padding:14px;font-size:12px;position:absolute;bottom:14px;right:316px;box-shadow:0 16px 40px #00000080}.tweaks-title{letter-spacing:.12em;text-transform:uppercase;color:var(--text);align-items:center;gap:6px;margin-bottom:10px;font-size:10.5px;font-weight:700;display:flex}.tweaks-title:before{content:"";background:#ff7ac6;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #ff7ac6}.tweaks-row{margin-bottom:10px}.tweaks-label{color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px;font-size:10.5px;font-weight:600}.tweak-chips{flex-wrap:wrap;gap:4px;display:flex}.tweak-chip{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:#ffffff0d;border-radius:7px;padding:5px 9px;font-size:11px;font-weight:500;transition:all .15s}.tweak-chip:hover{color:var(--text)}.tweak-chip.active{color:var(--text);background:linear-gradient(135deg,#ff7ac640,#a78bfa40);border-color:#a78bfa80}@keyframes spin{to{transform:rotate(360deg)}}@keyframes iri{0%{filter:hue-rotate()}to{filter:hue-rotate(360deg)}}@keyframes dash{to{stroke-dashoffset:-200px}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}@keyframes float{0%,to{transform:translateZ(var(--z,0)) translateY(0)}50%{transform:translateZ(var(--z,0)) translateY(calc(-1 * var(--float-amp,6px)))}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes glow-pulse{0%,to{filter:drop-shadow(0 0 4px #ff7ac680)}50%{filter:drop-shadow(0 0 16px #ff7ac6)}}@keyframes orbit-travel{0%{offset-distance:0%}to{offset-distance:100%}}.float{animation:float var(--anim-speed,4s) ease-in-out infinite}.float.d1{animation-delay:-.8s}.float.d2{animation-delay:-1.6s}.float.d3{animation-delay:-2.4s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff2e}.toast{background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-strong);color:var(--text);z-index:9999;pointer-events:none;border-radius:10px;padding:10px 20px;font-size:13px;font-weight:500;animation:.3s toast-in;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #00000080}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.app.presenting{grid-template-rows:1fr}.workspace.presenting{grid-template-columns:1fr}.exit-present{z-index:20;background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-strong);color:var(--text-dim);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:600;transition:all .15s;display:flex;position:absolute;top:14px;right:14px}.exit-present:hover{color:var(--text);background:#ffffff14}.hdri-dropdown{background:var(--panel-solid);border:1px solid var(--border-strong);z-index:30;border-radius:8px;min-width:160px;margin-top:4px;padding:4px;position:absolute;top:100%;right:0;box-shadow:0 8px 24px #0006}.hdri-dropdown button{text-align:left;width:100%;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:11.5px;transition:all .12s;display:block}.hdri-dropdown button:hover{color:var(--text);background:#ffffff0f}.hdri-dropdown button.active{color:var(--text);background:#a78bfa33}.code-editor-wrap{flex:1;min-height:0;position:relative;overflow:auto}.code-editor-wrap::-webkit-scrollbar{width:6px;height:6px}.code-editor-wrap::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.code-highlight,.code-textarea{white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;tab-size:2;border:none;margin:0;padding:12px 14px;font-family:JetBrains Mono,monospace;font-size:11.5px;line-height:1.6}.code-highlight{color:#e4dfff;pointer-events:none}.code-textarea{color:#0000;caret-color:#ff7ac6;resize:none;box-sizing:border-box;background:0 0;outline:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.code-textarea::selection{background:#a78bfa4d}mark.code-search-match{color:inherit;background:#ff7ac659;border-radius:2px;outline:1px solid #ff7ac680;padding:1px 0}body.theme-light .code-panel{background:#ffffffeb;border-color:#1410281f}body.theme-light .code-head{color:var(--text-dim);border-bottom-color:#14102814}body.theme-light .code-highlight{color:#1a1530}body.theme-light .code-textarea{caret-color:#c026d3}body.theme-light .code-textarea::selection{background:#a78bfa33}body.theme-light .cc-kw{color:#c026d3}body.theme-light .cc-str{color:#16a34a}body.theme-light .cc-cmt{color:#9ca3af}body.theme-light .cc-op{color:#2563eb}body.theme-light .cc-num{color:#d97706}.code-panel.code-embedded{width:100%;height:auto;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:none;border-radius:0;flex:1;position:static}.vis-btn{color:var(--text-faint);opacity:0;cursor:pointer;background:0 0;border:none;align-items:center;padding:2px;transition:opacity .15s;display:flex}.tree-item:hover .vis-btn{opacity:1}.icon-picker{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.icon-pick-btn{aspect-ratio:1;border:1px solid var(--border);width:100%;color:var(--text-dim);cursor:pointer;background:#ffffff0a;border-radius:6px;justify-content:center;align-items:center;transition:all .12s;display:flex}.icon-pick-btn:hover{color:#ff7ac6;background:#ff7ac61f;border-color:#ff7ac64d}.ai-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ai-dialog{background:var(--panel-solid);border:1px solid var(--border-strong);border-radius:16px;flex-direction:column;width:560px;max-width:90vw;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 24px 80px #0009,0 0 60px #a78bfa26}.ai-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:16px 20px;font-size:15px;font-weight:600;display:flex}.ai-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;margin-left:auto;padding:4px}.ai-close:hover{color:var(--text);background:#ffffff0f}.ai-body{flex:1;padding:20px;overflow-y:auto}.ai-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-bottom:8px;font-size:11px;font-weight:600;display:block}.ai-input{background:var(--bg-2);border:1px solid var(--border-strong);width:100%;color:var(--text);resize:none;border-radius:10px;outline:none;padding:12px 14px;font-family:inherit;font-size:13px;line-height:1.5}.ai-input:focus{border-color:#a78bfa80;box-shadow:0 0 0 3px #a78bfa26}.ai-suggestions{margin-top:16px}.ai-chips{flex-wrap:wrap;gap:6px;display:flex}.ai-chip{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;text-align:left;background:#ffffff0a;border-radius:8px;padding:6px 12px;font-size:11.5px;transition:all .15s}.ai-chip:hover{color:var(--text);background:#a78bfa1a;border-color:#a78bfa66}.ai-error{color:#ff8080;background:#ff50501a;border:1px solid #ff50504d;border-radius:8px;margin-top:12px;padding:10px 14px;font-size:12px}.ai-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.ai-hint{color:var(--text-faint);font-size:11px}.ai-generate{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border:none;border-radius:10px;align-items:center;gap:8px;padding:10px 20px;font-size:13px;font-weight:600;transition:opacity .15s;display:inline-flex;box-shadow:0 4px 20px #a78bfa66}.ai-generate:disabled{opacity:.5;cursor:not-allowed}.ai-generate:hover:not(:disabled){box-shadow:0 6px 28px #a78bfa80}.ai-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin}.copilot{background:var(--panel-solid);border:1px solid var(--border-strong);z-index:25;border-radius:14px;flex-direction:column;width:360px;height:440px;display:flex;position:absolute;bottom:60px;right:14px;overflow:hidden;box-shadow:0 16px 50px #00000080,0 0 40px #ff7ac61a}.copilot-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 16px;font-size:13px;font-weight:600;display:flex}.copilot-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px}.copilot-close:hover{color:var(--text)}.copilot-messages{flex-direction:column;flex:1;gap:10px;padding:12px;display:flex;overflow-y:auto}.copilot-msg{align-items:flex-start;gap:8px;display:flex}.copilot-msg.user{justify-content:flex-end}.copilot-avatar{color:#fff;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.copilot-bubble{white-space:pre-wrap;word-break:break-word;border-radius:12px;max-width:85%;padding:10px 14px;font-size:12.5px;line-height:1.5}.copilot-msg.assistant .copilot-bubble{color:var(--text);background:#ffffff0f;border-bottom-left-radius:4px}.copilot-msg.user .copilot-bubble{color:var(--text);background:linear-gradient(135deg,#ff7ac633,#a78bfa33);border-bottom-right-radius:4px}.copilot-bubble.error{color:#ff8080;background:#ff50501a}.copilot-bubble.action{border:1px solid #a78bfa4d}.copilot-action-badge{letter-spacing:.1em;text-transform:uppercase;color:#b7f97c;background:#b7f97c26;border-radius:4px;margin-bottom:4px;padding:2px 6px;font-size:9px;font-weight:700;display:inline-block}.copilot-typing{gap:4px;padding:4px 0;display:flex}.copilot-typing span{background:var(--text-faint);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite copilot-dot}.copilot-typing span:nth-child(2){animation-delay:.2s}.copilot-typing span:nth-child(3){animation-delay:.4s}@keyframes copilot-dot{0%,60%,to{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}.copilot-input-area{border-top:1px solid var(--border);gap:8px;padding:12px;display:flex}.copilot-input{background:var(--bg-2);border:1px solid var(--border);color:var(--text);border-radius:10px;outline:none;flex:1;padding:10px 14px;font-family:inherit;font-size:12.5px}.copilot-input:focus{border-color:#a78bfa80}.copilot-send{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff7ac6,#a78bfa);border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.copilot-send:disabled{opacity:.4;cursor:not-allowed}.copilot-embedded{flex-direction:column;height:100%;min-height:0;display:flex}.copilot-embedded .copilot-messages{padding:14px}.copilot-embedded .copilot-input-area{padding:10px 14px}.tree-item .vis-btn:hover{color:var(--text)}@keyframes float-subtle{0%,to{transform:translateZ(var(--z,0)) translateY(0)}50%{transform:translateZ(var(--z,0)) translateY(-3px)}}.float-subtle{animation:6s ease-in-out infinite float-subtle}.entry-fade{animation:.5s both entry-fade;animation-delay:var(--entry-delay,0s)}.entry-lift{animation:.5s both entry-lift;animation-delay:var(--entry-delay,0s)}.entry-spring{animation:.6s cubic-bezier(.34,1.56,.64,1) both entry-spring;animation-delay:var(--entry-delay,0s)}.entry-stagger{animation:.4s both entry-lift;animation-delay:var(--entry-delay,0s)}@keyframes entry-fade{0%{opacity:0}to{opacity:1}}@keyframes entry-lift{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes entry-spring{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.canvas-wrap.tool-hand{cursor:grab}.canvas-wrap.tool-hand:active{cursor:grabbing}.canvas-wrap.tool-node,.canvas-wrap.tool-group,.canvas-wrap.tool-text,.canvas-wrap.tool-comment,.canvas-wrap.tool-line,.canvas-wrap.tool-connect{cursor:crosshair}.canvas-wrap.tool-hand .node,.canvas-wrap.tool-select .node{cursor:grab}.canvas-wrap.tool-connect .node{cursor:cell}.context-menu{z-index:9999;background:var(--panel-solid);border:1px solid var(--border-strong);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:10px;min-width:180px;padding:4px;animation:.12s ease-out ctx-in;position:fixed;box-shadow:0 12px 40px #00000080,0 0 0 1px #ffffff0d}@keyframes ctx-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.context-item{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:7px 12px;font-size:12px;display:flex}.context-item:hover{background:#ffffff0f}.context-item:disabled{opacity:.35;cursor:default}.context-item:disabled:hover{background:0 0}.context-icon{opacity:.7;justify-content:center;align-items:center;width:16px;display:flex}.context-label{flex:1}.context-shortcut{color:var(--text-faint);font-family:JetBrains Mono,monospace;font-size:10px}.context-divider{background:var(--border);height:1px;margin:4px 8px}
