:root{--bg: #14161c;--bg-panel: #1b1e27;--bg-stage: #0f1116;--line: #2a2e3a;--text: #e7ecf5;--text-dim: #8b93a7;--accent: #6ea8fe;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--bg-panel)}.topbar .brand{font-weight:600;letter-spacing:.02em;margin-right:2px}.topbar-sep{width:1px;align-self:stretch;margin:5px 2px;background:var(--line)}.topbar-spacer{flex:1}.topbar-btn,.topbar-icon{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer;font-size:13px}.topbar-icon{padding:0 7px;color:var(--text-dim)}.topbar-btn:hover,.topbar-icon:hover:not(:disabled){border-color:var(--accent)}.topbar-btn.active,.topbar-icon.active{color:var(--text);border-color:var(--accent);background:#6ea8fe1f}.topbar-icon:disabled{opacity:.4;cursor:default}.topbar .status-chip{margin-left:6px}.dropdown{position:relative}.dropdown-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:240px;max-height:70vh;overflow-y:auto;padding:12px 14px;background:var(--bg-panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 28px #00000073}.dropdown-panel .control{margin-bottom:0;padding-bottom:0;border-bottom:none}.token-group{display:flex;gap:8px}.token-field{display:flex;align-items:center;gap:4px}.token-field span{color:var(--text-dim);font-size:11px}.token-field input{width:46px;padding:5px 6px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text)}.contextbar{display:flex;align-items:center;gap:10px;height:42px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--bg);overflow-x:auto;overflow-y:hidden;white-space:nowrap}.ctx-empty{color:var(--text-dim);font-size:12px}.ctx-kind{font-weight:600;font-size:12px;color:var(--text);flex:none}.ctx-sep{width:1px;height:22px;background:var(--line);flex:none}.ctx-group{display:flex;align-items:center;gap:6px;flex:none}.ctx-label{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.ctx-field{display:flex;align-items:center;gap:4px}.ctx-field span{color:var(--text-dim);font-size:11px}.ctx-field input{width:52px;padding:5px 6px;background:var(--bg-panel);border:1px solid var(--line);border-radius:6px;color:var(--text)}.ctx-unit{color:var(--text-dim);font-size:10px}.ctx-toggle{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text);cursor:pointer}.ctx-slider{width:90px;accent-color:var(--accent)}.ctx-select{padding:4px 6px;background:var(--bg-panel);border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:12px}.ctx-color{display:flex;align-items:center;gap:4px}.ctx-color input[type=color]{width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--bg-panel)}.ctx-swatch-wrap{position:relative;display:flex}.color-swatch{width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:5px;cursor:pointer;color:var(--text-dim);font-size:11px;font-weight:600}.color-swatch:hover{border-color:var(--accent)}.color-swatch.currentcolor{background:linear-gradient(45deg,var(--line) 25%,transparent 25%,transparent 75%,var(--line) 75%) 0 0 / 8px 8px,var(--bg)}.color-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:60;display:flex;flex-direction:column;gap:8px;padding:10px;width:168px;background:var(--bg-panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 28px #00000073}.cc-chip{padding:5px 8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer;font-size:12px}.cc-chip.active{border-color:var(--accent);background:#6ea8fe24}.popover-custom{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-dim)}.popover-custom input[type=color]{width:28px;height:24px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--bg)}.popover-swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.mini-swatch{width:100%;aspect-ratio:1;padding:0;border:1px solid var(--line);border-radius:4px;cursor:pointer}.mini-swatch:hover{outline:1px solid var(--accent)}.swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(28px,1fr));gap:6px;margin-bottom:8px}.swatch{position:relative;aspect-ratio:1;padding:0;border:1px solid var(--line);border-radius:5px;cursor:pointer}.swatch:hover{outline:1px solid var(--accent)}.swatch-none{background:repeating-conic-gradient(#cfd4de 0% 25%,#fff 0% 50%) 0 0 / 9px 9px}.swatch-del{position:absolute;top:-6px;right:-6px;width:15px;height:15px;display:none;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-panel);border:1px solid var(--line);color:var(--text-dim);font-size:11px;line-height:1}.swatch:hover .swatch-del{display:flex}.swatch-del:hover{color:#f0a0a0;border-color:#f0a0a0}.swatch-add{aspect-ratio:1;background:var(--bg);border:1px dashed var(--line);border-radius:5px;color:var(--text-dim);font-size:16px;cursor:pointer}.swatch-add:hover{border-color:var(--accent);color:var(--text)}.ctx-btn{padding:5px 9px;background:var(--bg-panel);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer;font-size:12px}.ctx-btn:hover:not(:disabled){border-color:var(--accent)}.ctx-btn:disabled{opacity:.4;cursor:default}.ctx-btn.glyph{min-width:30px}.ctx-note{color:var(--text-dim);font-size:10px}.status-chip{margin-left:auto;padding:3px 10px;border-radius:999px;font-size:11px;letter-spacing:.02em;border:1px solid transparent;cursor:default}.status-chip.on-grid{color:#6ee7a8;border-color:#6ee7a866;background:#6ee7a814}.status-chip.off-grid{color:#f0b35e;border-color:#f0b35e73;background:#f0b35e1a}.layers{list-style:none;margin:0 0 10px;padding:0}.layer-row{display:flex;align-items:center;gap:4px;padding:3px 4px;margin-bottom:3px;border:1px solid var(--line);border-radius:6px;font-size:12px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none}.layer-row:hover{border-color:var(--accent)}.layer-row.selected{color:var(--text);border-color:var(--accent);background:#6ea8fe14}.layer-row.hidden{opacity:.5}.layer-row.drop-above{box-shadow:0 -2px 0 0 var(--accent)}.layer-row.drop-below{box-shadow:0 2px 0 0 var(--accent)}.layer-row.drop-inside{border-color:var(--accent);background:#6ea8fe2e}.layer-row.locked .layer-name{font-style:italic}.layer-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-name-edit{flex:1;min-width:0;padding:1px 4px;background:var(--bg);border:1px solid var(--accent);border-radius:4px;color:var(--text);font-size:12px}.layer-icon{flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center;padding:0;background:transparent;border:none;border-radius:4px;font-size:11px;cursor:pointer;opacity:.7}.layer-icon:hover{opacity:1;background:var(--bg)}.layer-icon.del:hover{color:#f0796b}.layer-caret,.layer-caret-spacer{flex:none;width:14px;height:18px;display:flex;align-items:center;justify-content:center;padding:0;background:transparent;border:none;color:var(--text-dim);font-size:9px;cursor:pointer}.layer-name.group{font-weight:600;color:var(--text)}.layer-actions{margin:0 0 8px;gap:6px}.layer-actions button{flex:1;padding:5px 8px;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer}.layer-actions button:hover:not(:disabled){border-color:var(--accent)}.layer-actions button:disabled{opacity:.4;cursor:default}.export-panel .row button{flex:1}.export-color{margin-top:8px}.export-color input[type=color]{width:38px;height:28px;padding:0;background:var(--bg);border:1px solid var(--line);border-radius:6px}.png-sizes{display:flex;gap:6px;margin-top:8px}.png-size{flex:1;padding:6px 0;font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer}.png-size:hover{border-color:var(--accent)}.boolean-row button{font-size:12px}.align-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}.align-grid button{font-size:14px;padding:6px 0}.hint.mini{margin-top:8px;padding-top:0;border-top:none;font-size:11px}.hint.mini.file-error{color:#f0a0a0}.preview-rail{display:flex;align-items:center;gap:18px;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg-panel)}.rail-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.swatch{display:flex;flex-direction:column;align-items:center;gap:6px}.swatch-frame{display:flex;align-items:center;justify-content:center;height:48px}.swatch-canvas{display:block;background:var(--bg-stage);outline:1px solid var(--line);border-radius:2px}.swatch-size{font-size:11px;color:var(--text-dim)}.artboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px;margin-bottom:8px}.artboard{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px;border:1px solid var(--line);border-radius:5px;cursor:pointer;background:var(--bg-stage)}.artboard:hover{border-color:var(--text-dim)}.artboard.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.artboard-canvas{width:48px;height:48px;background:var(--bg-stage);image-rendering:pixelated}.artboard-name,.artboard-name-edit{font-size:10px;color:var(--text-dim);max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.artboard-name-edit{width:52px;background:var(--bg-input, #1b1f27);color:var(--text);border:1px solid var(--accent);border-radius:3px}.artboard-actions button{font-size:12px}.workspace{flex:1;display:flex;min-height:0}.stage-column{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.stage{position:relative;flex:1;background:var(--bg-stage);min-width:0;min-height:0}.zoom-controls{position:absolute;left:12px;bottom:12px;display:flex;align-items:stretch;gap:1px;border-radius:6px;overflow:hidden;border:1px solid var(--line);background:var(--bg-panel);z-index:5}.zoom-controls button{border:none;background:var(--bg-panel);color:var(--text);font-size:14px;padding:5px 10px;cursor:pointer}.zoom-controls button:hover{background:var(--bg-stage)}.zoom-controls .zoom-pct{min-width:52px;font-size:12px;font-variant-numeric:tabular-nums}.canvas-surface,.interaction-layer,.selection-outline,.transform-box,.handle-overlay,.node-overlay,.shape-builder{position:absolute;inset:0;display:block;width:100%;height:100%}.selection-outline,.transform-box,.handle-overlay,.node-overlay{pointer-events:none}.shape-builder{pointer-events:none;z-index:4}.shape-builder.active{pointer-events:all;cursor:cell}.shape-builder-hud{position:absolute;left:50%;bottom:12px;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:6px 8px 6px 14px;border-radius:8px;border:1px solid var(--line);background:var(--bg-panel);font-size:12px;color:var(--text-dim);z-index:6}.sb-add{color:#6ea8fe;margin-right:4px}.sb-sub{color:#ff6060;margin-right:4px}.shape-builder-hud .sb-build{padding:5px 12px;background:var(--bg);border:1px solid var(--accent);border-radius:6px;color:var(--text);cursor:pointer}.shape-builder-hud .sb-build:disabled{opacity:.4;cursor:default;border-color:var(--line)}.sel-outline{fill:none;stroke:var(--accent);stroke-width:1;stroke-opacity:.9}.interaction-layer.tool-select{cursor:default}.tbox-rect{fill:none;stroke:#6ea8fe99;stroke-width:1;stroke-dasharray:2 2}.tbox-handle{fill:var(--bg-panel);stroke:var(--accent);stroke-width:1.5}.tbox-hit{fill:transparent;pointer-events:all}.tbox-stem{stroke:#6ea8fe99;stroke-width:1}.tbox-rotate{fill:var(--bg-panel);stroke:var(--accent);stroke-width:1.5}.tbox-rotate-hit{fill:transparent;pointer-events:all;cursor:grab}.interaction-layer{pointer-events:all}.interaction-layer.tool-create{cursor:crosshair}.interaction-layer.panning,.interaction-layer.panning.tool-select,.interaction-layer.panning.tool-create{cursor:grab}.interaction-layer .draft{fill:#6ea8fe1f;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3}.interaction-layer .marquee{fill:#6ea8fe14;stroke:var(--accent);stroke-width:1;stroke-dasharray:4 2}.interaction-layer .snap-guide,.transform-box .snap-guide,.node-overlay .snap-guide{stroke:#ff4db8;stroke-width:1;stroke-dasharray:3 2;pointer-events:none}.pen-path{fill:#6ea8fe1a;stroke:var(--accent);stroke-width:1.5}.pen-rubber{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3}.pen-stem{stroke:#6ea8fe80;stroke-width:1}.pen-ctrl{fill:var(--accent);stroke:var(--bg-panel);stroke-width:1}.pen-anchor{fill:var(--bg-panel);stroke:var(--accent);stroke-width:1.5}.pen-anchor.closable{fill:var(--accent)}.toolbar{display:flex;flex-direction:column;gap:6px;padding:10px 8px;border-right:1px solid var(--line);background:var(--bg-panel)}.toolbar-sep{height:1px;margin:4px 2px;background:var(--line)}.tool-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:16px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text-dim);cursor:pointer}.tool-btn:hover{border-color:var(--accent)}.tool-btn.active{color:var(--text);border-color:var(--accent);background:#6ea8fe1f}.node .ctrl-stem{stroke:#6ea8fe73;stroke-width:1}.node .anchor{fill:var(--bg-panel);stroke:var(--accent);stroke-width:1.5}.node .anchor.selected{fill:var(--accent)}.node-ops button{flex:1;font-size:12px}.node .ctrl{fill:var(--accent);stroke:var(--bg-panel);stroke-width:1}.node .radius-stem{stroke:#ffd16659;stroke-width:1;stroke-dasharray:2 2}.node .radius-widget{fill:var(--bg-panel);stroke:#ffd166;stroke-width:1.5}.node .radius-widget.active{fill:#ffd166}.node .hit{fill:transparent;pointer-events:all;cursor:grab}.node .hit:active{cursor:grabbing}.seg-hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:copy}.handle .stem{stroke:#6ea8fe80;stroke-width:1}.handle .vertex-dot{fill:#6ea8feb3}.handle .grip{fill:var(--bg-panel);stroke:var(--accent);stroke-width:1.5}.handle .hit{fill:transparent;pointer-events:all;cursor:grab}.handle.active .hit{cursor:grabbing}.handle.active .grip{fill:var(--accent)}.ghost .clamp-gap{stroke:var(--text-dim);stroke-width:1;stroke-dasharray:2 3}.ghost circle{fill:none;stroke:var(--text-dim);stroke-width:1;stroke-dasharray:2 3}.inspector{width:260px;flex-shrink:0;padding:16px;border-left:1px solid var(--line);background:var(--bg-panel);overflow-y:auto}.inspector h2{margin:0 0 16px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.field{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.field label{color:var(--text-dim)}.field input,.field select{width:120px;padding:6px 8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text)}.field input:focus,.field select:focus{outline:1px solid var(--accent);border-color:var(--accent)}.row{display:flex;gap:8px;margin:16px 0}.row button{flex:1;padding:7px 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer}.row button:hover:not(:disabled){border-color:var(--accent)}.row button:disabled{opacity:.4;cursor:default}.hint{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);color:var(--text-dim);font-size:12px;line-height:1.5}.control{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}.control h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.pair{display:flex;gap:8px}.field{display:flex;align-items:center;gap:6px;flex:1;margin:0}.field>span:first-child{width:14px;color:var(--text-dim)}.field input[type=number]{flex:1;width:100%;min-width:0;padding:6px 8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text)}.field .unit{color:var(--text-dim);font-size:11px;white-space:nowrap}input[type=range]{width:100%;accent-color:var(--accent)}.readout{display:flex;justify-content:space-between;gap:8px;margin-top:6px;color:var(--text-dim);font-size:11px}.readout b{color:var(--text);font-weight:600}.chip{margin-left:auto;padding:2px 7px;border:1px solid var(--line);border-radius:999px;font-size:10px;letter-spacing:.04em;color:var(--text-dim)}.chip-on{color:var(--accent);border-color:var(--accent)}.toggle{display:flex;align-items:center;gap:8px;cursor:pointer;text-transform:none;letter-spacing:0;font-size:12px;color:var(--text)}.toggle input{accent-color:var(--accent)}.color{display:flex;align-items:center;gap:8px;margin-top:8px}.color select{flex:1;padding:6px 8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text)}.color input[type=color]{width:38px;height:30px;padding:0;background:var(--bg);border:1px solid var(--line);border-radius:6px}
