:root{--gold:#c9a84c;--gold-light:#e8c97a;--gold-dim:#6a5520;--blueprint-blue:#4a9eff;--blueprint-blue-dim:#1e4a80;--ink:#080810;--ink-mid:#0f0f1a;--ink-panel:#0c0c18;--text:#ede8d8;--text-dim:#7a7468;--green:#4caf7a;--red:#f85149;--mono:"Fira Code", "SF Mono", "Cascadia Code", "Consolas", monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--syn-kw:#9b7fc7;--syn-fn:#5a8fb5;--syn-num:#d49a6a;--syn-str:#85b874;--syn-comment:#5a5a6a;--syn-op:#7a7468;--syn-prop:#5a9e8a;--sidebar-width:180px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--sans);color:var(--text);background:#000;justify-content:center;align-items:center;height:100vh;display:flex;overflow:hidden}.app-window{background:var(--ink);border:1px solid #1a1a2a;flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.app-titlebar{background:var(--ink-mid);-webkit-user-select:none;user-select:none;border-bottom:1px solid #1a1a2a;flex-shrink:0;align-items:center;height:38px;padding:0 14px;display:flex}.titlebar-left{align-items:center;gap:7px;display:flex}.traffic-light{border-radius:50%;width:12px;height:12px}.traffic-light.red{background:#ff5f57}.traffic-light.yellow{background:#febc2e}.traffic-light.green{background:#28c840}.titlebar-center{text-align:center;color:var(--text-dim);letter-spacing:.5px;flex:1;font-size:13px}.titlebar-right{gap:14px;display:flex}.menu-item{color:var(--text-dim);cursor:default;font-size:12px}.app-body{flex:1;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--ink-mid);border-right:1px solid #1a1a2a;flex-direction:column;flex-shrink:0;display:flex}.sidebar-header{border-bottom:1px solid #1a1a2a;flex-shrink:0;justify-content:space-between;align-items:center;height:34px;padding:0 12px;display:flex}.sidebar-title{letter-spacing:1.5px;color:var(--text-dim);font-size:11px;font-weight:600}.sidebar-new-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:16px;line-height:1;transition:color .15s,background .15s}.sidebar-new-btn:hover{color:var(--gold-light);background:#c9a84c1a}.file-list{flex:1;padding:4px 0;overflow-y:auto}.file-entry{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;padding:4px 12px;font-size:12px;transition:color .1s,background .1s;display:flex;overflow:hidden}.file-entry:hover{color:var(--text);background:#ffffff08}.file-entry.active{color:var(--gold-light);background:#c9a84c14}.file-entry .file-icon{opacity:.6;flex-shrink:0;font-size:13px}.file-entry .file-name{text-overflow:ellipsis;flex:1;overflow:hidden}.file-entry .file-dirty{background:var(--gold);border-radius:50%;flex-shrink:0;width:6px;height:6px}.file-entry .file-close{color:var(--text-dim);cursor:pointer;opacity:0;flex-shrink:0;font-size:13px;line-height:1;transition:opacity .1s,color .1s}.file-entry:hover .file-close{opacity:1}.file-entry .file-close:hover{color:var(--red)}.file-entry.nested{padding-left:28px}.folder-entry{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:4px 8px;font-size:12px;transition:color .1s,background .1s;display:flex}.folder-entry:hover{color:var(--text);background:#ffffff08}.folder-entry .chevron{text-align:center;flex-shrink:0;width:12px;font-size:8px;transition:transform .15s}.folder-entry .chevron.expanded{transform:rotate(90deg)}.folder-entry .folder-icon{flex-shrink:0;font-size:12px}.folder-entry .folder-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.file-rename-input{font-family:var(--mono);background:var(--ink);color:var(--gold-light);border:1px solid var(--gold-dim);border-radius:3px;outline:none;width:100%;padding:1px 4px;font-size:12px}.editor-pane{background:var(--ink);border-right:1px solid #1a1a2a;flex-direction:column;flex:1;min-width:250px;display:flex}.pane-header{background:var(--ink-mid);border-bottom:1px solid #1a1a2a;flex-shrink:0;align-items:center;height:34px;padding:0 12px;display:flex}.pane-tab{color:var(--text-dim);cursor:default;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;display:flex}.pane-tab.active{color:var(--gold-light);background:#c9a84c14}.editor-body{flex:1;display:flex;position:relative;overflow:hidden}.line-numbers{text-align:right;width:48px;font-family:var(--mono);color:var(--text-dim);background:var(--ink);-webkit-user-select:none;user-select:none;white-space:pre;border-right:1px solid #1a1a2a;flex-shrink:0;padding:12px 10px 12px 0;font-size:13px;line-height:1.65;overflow:hidden}.code-area{flex:1;position:relative;overflow:hidden}.highlight-layer{font-family:var(--mono);color:var(--text);white-space:pre-wrap;word-wrap:break-word;pointer-events:none;tab-size:4;margin:0;padding:12px;font-size:13px;line-height:1.65;position:absolute;inset:0;overflow-y:auto}#dsl-input{width:100%;height:100%;font-family:var(--mono);color:#0000;caret-color:var(--gold-light);resize:none;white-space:pre-wrap;word-wrap:break-word;tab-size:4;-webkit-text-fill-color:transparent;background:0 0;border:none;outline:none;margin:0;padding:12px;font-size:13px;line-height:1.65;position:absolute;top:0;left:0;overflow-y:auto}#dsl-input::selection{-webkit-text-fill-color:transparent;background:#c9a84c33}.error-display{color:var(--red);font-family:var(--mono);background:#f8514914;border-top:1px solid #f8514933;flex-shrink:0;max-height:80px;padding:8px 12px;font-size:12px;line-height:1.5;overflow-y:auto}.editor-statusbar{background:var(--gold-dim);height:28px;color:var(--gold-light);font-size:11px;font-family:var(--mono);letter-spacing:.3px;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 12px;display:flex}.status-left{align-items:center;gap:4px;display:flex}.render-pane{background:var(--ink-panel);flex-direction:column;flex:1;display:flex}.render-header{background:var(--ink-mid);border-bottom:1px solid #1a1a2a;flex-shrink:0;justify-content:space-between;align-items:center;height:34px;padding:0 12px;display:flex}.render-title{color:var(--text-dim);font-size:12px}.render-tools{gap:6px;display:flex}.toggle-btn{font-family:var(--mono);color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #2a2a3a;border-radius:4px;padding:3px 10px;font-size:11px;transition:all .15s}.toggle-btn:hover{border-color:var(--gold-dim);color:var(--text)}.toggle-btn.active{border-color:var(--gold);color:var(--gold-light);background:#c9a84c14}.blueprint-layer-btn{color:#64a0dc99;border-color:#2a3a4a}.blueprint-layer-btn:hover{color:#8cbefae6;border-color:#64a0dc80}.blueprint-layer-btn.active{color:#c8e0ff;background:#3c78c81a;border-color:#64a0dcb3}.render-tools-separator{background:var(--ink-border);align-self:stretch;width:1px;margin:0 2px}.render-canvas{flex:1;justify-content:center;align-items:center;padding:24px;display:flex;position:relative;overflow:auto}#svg-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.render-overlay{font-family:var(--mono);color:var(--text-dim);pointer-events:none;letter-spacing:.3px;background:#080810b3;border-radius:4px;padding:4px 10px;font-size:11px;position:absolute;bottom:12px;right:16px}.highlight-layer .kw{color:var(--syn-kw)}.highlight-layer .fn{color:var(--syn-fn)}.highlight-layer .num{color:var(--syn-num)}.highlight-layer .str{color:var(--syn-str)}.highlight-layer .comment{color:var(--syn-comment);font-style:italic}.highlight-layer .op{color:var(--syn-op)}.highlight-layer .prop{color:var(--syn-prop)}.inspect-bar{font-family:var(--mono);color:var(--gold-light);z-index:2;letter-spacing:.3px;background:#080810d9;align-items:center;gap:16px;padding:5px 12px;font-size:11px;display:flex;position:absolute;bottom:0;left:0;right:0}.inspect-bar[hidden]{display:none}.inspect-label{color:var(--text-dim)}.inspect-value{color:var(--gold-light)}.inspect-copy-btn{font-family:var(--mono);border:1px solid var(--gold-dim);color:var(--gold-light);cursor:pointer;background:#c9a84c14;border-radius:3px;margin-left:8px;padding:2px 8px;font-size:11px}.inspect-copy-btn:hover{border-color:var(--gold);background:#c9a84c26}.inspect-color-swatch{border:1px solid var(--text-dim);vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-left:4px;display:inline-block}#svg-container circle[data-circle-index],#svg-container line[data-line-index]{pointer-events:none}#svg-container.blueprint-active circle[data-circle-index],#svg-container.blueprint-active line[data-line-index]{pointer-events:stroke;cursor:crosshair}circle.circle-hovered{filter:brightness(1.4);stroke:var(--blueprint-blue)!important;stroke-width:2px!important}circle.circle-selected{animation:1.5s ease-in-out infinite blueprint-glow;stroke:var(--blueprint-blue)!important;stroke-width:2.5px!important}line.line-hovered{filter:brightness(1.4);stroke:var(--blueprint-blue)!important;stroke-width:2px!important}line.line-selected{animation:1.5s ease-in-out infinite blueprint-glow;stroke:var(--blueprint-blue)!important;stroke-width:2.5px!important}#svg-container path#blueprint-edge-highlight{stroke-dasharray:8 4;fill:none;pointer-events:none;animation:1.5s ease-in-out infinite blueprint-glow;stroke:var(--blueprint-blue)!important;stroke-width:3px!important}#svg-container path#blueprint-edge-hover{stroke-dasharray:6 3;fill:none;pointer-events:none;opacity:.6;stroke:var(--blueprint-blue)!important;stroke-width:2px!important}@keyframes blueprint-glow{0%,to{filter:brightness(1.1) drop-shadow(0 0 2px var(--blueprint-blue))}50%{filter:brightness(1.6) drop-shadow(0 0 6px var(--blueprint-blue))}}#svg-container path[data-edge-index]{pointer-events:stroke;cursor:crosshair}#svg-container path.segment-hovered{filter:brightness(1.4);stroke:var(--gold-light)!important;stroke-width:2.5px!important}#svg-container path.segment-selected{stroke-dasharray:6 3;animation:1.5s ease-in-out infinite face-glow;stroke:var(--gold-light)!important;stroke-width:3px!important}#svg-container path[data-face-index]{pointer-events:all;cursor:crosshair}#svg-container path.face-hovered{filter:brightness(1.4);cursor:crosshair;stroke:var(--gold-light)!important;stroke-width:1.5px!important}#svg-container #face-highlight{stroke:var(--gold-light);stroke-width:2px;stroke-dasharray:4 2;fill:none;pointer-events:none;animation:1.5s ease-in-out infinite face-glow}#svg-container #face-hover-highlight{stroke:var(--gold-light);stroke-width:1.5px;filter:brightness(1.4);fill:none;pointer-events:none}@keyframes face-glow{0%,to{filter:brightness(1.1)}50%{filter:brightness(1.5)}}#svg-container circle.point-marker{cursor:pointer;opacity:.85;pointer-events:all}#svg-container circle.point-marker:hover{opacity:1;filter:brightness(1.3)}#svg-container circle.point-selected{opacity:1;animation:1.2s ease-in-out infinite pulse-connect}#svg-container.connect-mode circle.point-marker{cursor:crosshair}@keyframes pulse-connect{0%,to{opacity:1}50%{opacity:.6}}.context-menu{z-index:10;border:1px solid var(--gold-dim);font-family:var(--mono);-webkit-backdrop-filter:blur(8px);background:#080810f2;border-radius:6px;flex-direction:column;min-width:180px;padding:4px 0;animation:.1s ease-out ctx-menu-in;display:flex;position:absolute;box-shadow:0 6px 24px #00000080,0 0 0 1px #0003}.context-menu[hidden]{display:none}.context-menu.above{animation:.1s ease-out ctx-menu-in-above}@keyframes ctx-menu-in{0%{opacity:0;transform:scale(.95)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes ctx-menu-in-above{0%{opacity:0;transform:scale(.95)translateY(4px)}to{opacity:1;transform:scale(1)translateY(0)}}.context-menu-pointer{border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:6px solid var(--gold-dim);width:0;height:0;position:absolute;top:-6px;left:24px;transform:translate(-50%)}.context-menu.above .context-menu-pointer{border-bottom:none;border-top:6px solid var(--gold-dim);top:auto;bottom:-6px}.context-menu-header{color:var(--gold-dim);white-space:nowrap;border-bottom:1px solid #6a552040;margin-bottom:2px;padding:2px 12px 4px;font-size:10px}.context-menu-section+.context-menu-section{border-top:1px solid #6a552040;margin-top:2px;padding-top:2px}.context-menu-section-label{letter-spacing:.5px;text-transform:uppercase;color:var(--gold-dim);opacity:.7;padding:3px 12px 2px;font-size:9px;font-weight:600}.context-menu-items{flex-direction:column;display:flex}.context-menu-item{font-family:var(--mono);color:var(--text-dim);cursor:pointer;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:5px 12px 5px 10px;font-size:11px;transition:color 80ms,background 80ms;display:flex}.context-menu-item:hover{color:#fff;background:#c9a84c26}.context-menu-item:active{background:#c9a84c40}.context-menu-item .item-icon{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.context-menu-item .item-icon svg{width:14px;height:14px}.context-menu-item .item-label{flex:1}.context-menu-item .item-shortcut{color:var(--gold-dim);opacity:.6;margin-left:12px;font-size:9px}.pick-menu{z-index:11;border:1px solid var(--gold-dim);font-family:var(--mono);-webkit-backdrop-filter:blur(8px);background:#080810f2;border-radius:6px;flex-direction:column;min-width:160px;padding:4px 0;animation:.1s ease-out ctx-menu-in;display:flex;position:absolute;box-shadow:0 6px 24px #00000080}.pick-menu[hidden]{display:none}.pick-menu.above{animation:.1s ease-out ctx-menu-in-above}.pick-menu-pointer{border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:6px solid var(--gold-dim);width:0;height:0;position:absolute;top:-6px;left:24px;transform:translate(-50%)}.pick-menu.above .pick-menu-pointer{border-bottom:none;border-top:6px solid var(--gold-dim);top:auto;bottom:-6px}.pick-menu-header{border-bottom:1px solid #ffffff0f;align-items:center;gap:6px;padding:4px 8px 4px 12px;display:flex}.pick-menu-title{color:var(--gold-dim);opacity:.5;letter-spacing:.06em;text-transform:uppercase;-webkit-user-select:none;user-select:none;flex:1;font-size:9px}.pick-menu-copy-btn{width:20px;height:20px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .1s,background .1s;display:flex}.pick-menu-copy-btn svg{width:12px;height:12px}.pick-menu-copy-btn:hover{color:var(--gold);background:#c9a84c1f}.pick-menu-copy-btn.copied{color:#7ecf7e}.pick-menu-item{font-family:var(--mono);color:var(--text-dim);cursor:pointer;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:5px 12px 5px 10px;font-size:11px;transition:color 80ms,background 80ms;display:flex}.pick-menu-item:hover{color:#fff;background:#c9a84c26}.pick-menu-item:active{background:#c9a84c40}.pick-menu-item .item-icon{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.pick-menu-item .item-icon svg{width:14px;height:14px}.pick-menu-item .item-label{flex:1}.pick-menu-item .item-shortcut{color:var(--gold-dim);opacity:.6;margin-left:12px;font-size:9px}.pick-menu-item .item-layer-tag{color:#78b4f0b3;letter-spacing:.03em;background:#64a0dc1f;border-radius:3px;margin-left:6px;padding:1px 4px;font-size:9px}.pick-menu-item[data-group=blueprint]{border-left:2px solid #64a0dc80}.pick-menu-item[data-group=blueprint] .item-icon{color:#78b4f0cc}.pick-menu-item[data-group=blueprint]:hover{color:#c8e0ff;background:#64a0dc1f}.pick-menu-item[data-group=pattern]{border-left:2px solid #c9a84c66}.pick-menu-divider{background:#ffffff14;height:1px;margin:3px 0}.pick-menu-section-label{font-family:var(--mono);color:var(--gold-dim);opacity:.5;letter-spacing:.06em;text-transform:uppercase;-webkit-user-select:none;user-select:none;padding:3px 12px 1px;font-size:9px}#menu-help{cursor:pointer;transition:color .15s}#menu-help:hover{color:var(--gold-light)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay[hidden]{display:none}.modal-content{background:var(--ink-mid);border:1px solid var(--gold-dim);border-radius:8px;flex-direction:column;width:640px;max-height:80vh;display:flex;overflow:hidden;box-shadow:0 16px 48px #00000080}.modal-header{border-bottom:1px solid #1a1a2a;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.modal-title{color:var(--gold-light);letter-spacing:.5px;font-size:14px;font-weight:600}.modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:20px;line-height:1;transition:color .15s}.modal-close:hover{color:var(--gold-light)}.modal-body{color:var(--text);flex:1;padding:16px 20px;font-size:13px;line-height:1.6;overflow-y:auto}.modal-body h2{color:var(--gold-light);letter-spacing:.5px;border-bottom:1px solid var(--gold-dim);margin:20px 0 8px;padding-bottom:4px;font-size:14px;font-weight:600}.modal-body h2:first-child{margin-top:0}.modal-body code{font-family:var(--mono);color:var(--gold-light);background:#c9a84c1a;border-radius:3px;padding:1px 5px;font-size:12px}.modal-body pre{font-family:var(--mono);background:var(--ink);color:var(--text);border:1px solid #1a1a2a;border-radius:4px;margin:8px 0;padding:10px 12px;font-size:12px;line-height:1.5;overflow-x:auto}.modal-body .note{border-left:3px solid var(--gold-dim);color:var(--text-dim);margin:10px 0;padding:6px 12px;font-style:italic}.modal-body dt{color:var(--gold-light);font-family:var(--mono);margin-top:8px;font-size:12px}.modal-body dd{color:var(--text-dim);margin-bottom:4px;margin-left:16px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#2a2a3a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3a3a4a}.point-alt-indicator{cursor:pointer;color:var(--gold-dim);background:#c9a84c1f;border-radius:3px;margin-left:4px;padding:0 4px;font-size:11px}.point-alt-indicator:hover{color:var(--gold-light);background:#c9a84c40}.point-alt-dropdown{z-index:20;border:1px solid var(--gold-dim);-webkit-backdrop-filter:blur(8px);background:#14141ef2;border-radius:6px;flex-direction:column;min-width:180px;max-height:200px;padding:4px 0;animation:.1s ease-out ctx-menu-in-above;display:flex;position:absolute;bottom:calc(100% + 4px);left:8px;overflow-y:auto}.point-alt-dropdown[hidden]{display:none}.point-alt-item{font:11px/1.4 var(--font-mono);color:var(--gold-light);cursor:pointer;align-items:center;gap:8px;padding:4px 12px;transition:color 80ms,background 80ms;display:flex}.point-alt-item:hover{color:#fff;background:#c9a84c26}.point-alt-item.active{color:#fff;background:#c9a84c33}.point-alt-item .alt-copy-btn{opacity:0;margin-left:auto;transition:opacity .1s}.point-alt-item:hover .alt-copy-btn{opacity:.6}.point-alt-item:hover .alt-copy-btn:hover{opacity:1}.point-alt-section-header{font:10px/1.4 var(--sans);color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;pointer-events:none;padding:6px 12px 2px}.point-alt-overflow{color:var(--text-dim);cursor:default;font-style:italic}.inspect-overflow{color:var(--gold-dim);margin-left:2px;font-size:10px}.point-copy-btn{width:18px;height:18px;color:var(--gold-dim);cursor:pointer;vertical-align:middle;background:#c9a84c1f;border:none;border-radius:3px;justify-content:center;align-items:center;margin-left:6px;padding:0;transition:background .1s,color .1s;display:inline-flex}.point-copy-btn:hover{color:var(--gold-light);background:#c9a84c40}.point-copy-btn.copied{color:#4caf50;background:#4caf504d}.point-copy-btn svg{width:12px;height:12px}
