:root{--sl-ink: #1c1b17;--sl-paper: #f6f2e9;--sl-forest: #274233;--sl-forest-2: #35573f;--sl-gold: #a4823f;--sl-muted: #6f6a5d;--sl-line: #d9d1bf;--sl-display: "Fraunces", Georgia, "Times New Roman", serif;--sl-body: "Spectral", Georgia, serif;--sl-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--sl-radius: 4px;--sl-shadow: 0 1px 2px rgba(28, 27, 23, .05), 0 18px 40px -24px rgba(28, 27, 23, .35);--sl-ring: 0 0 0 3px rgba(39, 66, 51, .16);--sl-bg: #ece4d3;--sl-surface: var(--sl-paper);--sl-surface-2: #fffdf8;--sl-field: #fffdf8;--sl-field-disabled: #efeadd;--sl-text: var(--sl-ink);--sl-text-muted: var(--sl-muted);--sl-border: var(--sl-line);--sl-accent: var(--sl-forest);--sl-accent-strong: var(--sl-forest-2);--sl-accent-2: var(--sl-gold);--sl-danger: #8a2f23;--sl-danger-bg: #f1e2da}:root{color-scheme:light;--bg: var(--sl-bg);--panel: var(--sl-surface);--panel-2: var(--sl-surface-2);--border: var(--sl-border);--text: var(--sl-text);--text-dim: var(--sl-text-muted);--accent: var(--sl-accent);--error: var(--sl-danger)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:13px/1.4 system-ui,sans-serif}.sdf-editor{display:flex;height:100%}.left-pane{flex:1;min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border)}.tab-bar{display:flex;align-items:center;gap:4px;padding:6px 8px;background:var(--panel);border-bottom:1px solid var(--border)}.doc-select,.doc-actions{max-width:170px;background:var(--sl-field);border:1px solid var(--border);border-radius:var(--sl-radius);color:var(--text);font:inherit;font-size:12px;padding:3px 5px;margin-right:6px}.doc-actions{max-width:2.4em}.doc-name{font-size:12px;font-weight:600;color:var(--text);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px}.busy-status{color:var(--text-dim);font-size:12px;margin-right:8px}.auth-status{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:12px;margin-right:8px}.tab{background:none;border:1px solid transparent;border-radius:var(--sl-radius);color:var(--text-dim);padding:4px 12px;cursor:pointer;font:inherit}.tab.active{background:var(--panel-2);border-color:var(--border);color:var(--text)}.tab-spacer,.row-spacer{flex:1}.save-error{color:var(--error);font-weight:600;font-size:12px;margin-right:8px}.ghost-toggle{display:flex;align-items:center;gap:5px;color:var(--text-dim);cursor:pointer}.tree-panel{flex:1;overflow:auto;padding:6px 0;background:var(--panel)}.tree-node>.tree-node:last-child{margin-bottom:6px}.tree-row{display:flex;align-items:center;gap:6px;padding:5px 8px;border-left:2px solid transparent;cursor:grab;-webkit-user-select:none;user-select:none}.tree-row:hover{background:var(--panel-2)}.tree-row.drop-before{box-shadow:inset 0 2px 0 var(--accent)}.tree-row.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}.tree-row.drop-into{background:color-mix(in srgb,var(--accent) 18%,transparent)}.tree-row.is-muted{opacity:.45}.tree-row.is-selected{background:color-mix(in srgb,var(--accent) 14%,transparent);border-left-color:var(--accent)}.panel-holder{background:color-mix(in srgb,var(--accent) 14%,transparent);border-left:2px solid var(--accent);padding:2px 8px 6px}.property-panel{overflow:hidden;margin:0;padding:8px 10px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--sl-radius);display:flex;flex-direction:column;gap:5px;animation:slide-open .15s ease-out}@keyframes slide-open{0%{max-height:0;opacity:0}to{max-height:320px;opacity:1}}.prop-row{display:flex;align-items:center;gap:5px}.prop-label{flex:none;width:84px;color:var(--text-dim);font-size:11px}.prop-input{width:64px;background:var(--sl-field);border:1px solid var(--border);border-radius:var(--sl-radius);color:var(--text);font:inherit;font-size:12px;padding:2px 5px}.prop-input:focus{outline:none;border-color:var(--accent)}.prop-input-wide{width:160px}.nudge-btn{flex:none;width:20px;height:20px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--sl-radius);color:var(--text-dim);cursor:pointer;font-size:12px;line-height:1}.nudge-btn:hover{color:var(--text);border-color:var(--accent)}.nudge-btn.is-active{background:var(--sl-accent);border-color:var(--sl-accent);color:#fff}.prop-note{color:var(--text-dim);font-size:11px}.prop-actions{gap:10px;padding-top:2px}.red-dot{color:var(--error);font-size:8px;margin-left:3px;vertical-align:middle}.display-checkbox{flex:none;margin:0;accent-color:var(--accent)}.only-link{flex:none;background:none;border:none;padding:0;color:var(--text-dim);font:inherit;font-size:11px;cursor:pointer}.only-link:hover{color:var(--accent);text-decoration:underline}.tree-toolbar{display:flex;align-items:center;gap:10px;padding:4px 10px 6px;border-bottom:1px solid var(--border);margin-bottom:4px}.add-link:disabled{opacity:.4;cursor:default;text-decoration:none}.add-link,.delete-link{flex:none;background:none;border:none;padding:0;color:var(--text-dim);font:inherit;font-size:11px;cursor:pointer}.add-link:hover{color:var(--accent);text-decoration:underline}.delete-link:hover{color:var(--error);text-decoration:underline}.node-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op-badge{flex:none;font-size:11px;padding:1px 6px;border-radius:8px;background:var(--panel-2);border:1px solid var(--border);color:var(--text-dim)}.op-badge.op-subtract,.op-badge.op-smoothSubtract{color:var(--sl-danger);border-color:color-mix(in srgb,var(--sl-danger) 40%,transparent)}.op-badge.op-mirror{color:var(--sl-accent-strong);border-color:color-mix(in srgb,var(--sl-accent-strong) 40%,transparent)}.op-badge.op-ref{color:var(--sl-gold);border-color:color-mix(in srgb,var(--sl-gold) 45%,transparent)}.op-badge.op-revolve,.op-badge.op-extrude{color:var(--sl-accent);border-color:color-mix(in srgb,var(--sl-accent) 45%,transparent)}.op-badge.op-transform{color:var(--sl-text-muted);border-color:color-mix(in srgb,var(--sl-text-muted) 50%,transparent)}.node-id{font-weight:700;white-space:nowrap}.disclosure{flex:none;width:22px;height:18px;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:var(--text-dim);cursor:pointer}.disclosure svg{width:16px;height:16px;fill:currentColor;transition:transform .1s ease-out}.disclosure.open svg{transform:rotate(90deg)}button.disclosure:hover{color:var(--text)}.smoothness{width:80px;accent-color:var(--accent)}.mini-btn{flex:none;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--sl-radius);color:var(--text-dim);font-size:11px;padding:1px 7px;cursor:pointer}.mini-btn:hover:not(:disabled){color:var(--text);border-color:var(--text-dim)}.mini-btn:disabled{opacity:.4;cursor:default}.bone-panel{flex:none;max-height:180px;overflow-y:auto;border-top:1px solid var(--border);background:var(--panel);padding:4px 0 6px}.bone-panel-header{display:flex;align-items:center;gap:6px;padding:2px 10px 4px}.bone-row{display:flex;align-items:center;gap:5px;padding:3px 10px;cursor:pointer;-webkit-user-select:none;user-select:none}.bone-row:hover{background:var(--panel-2)}.bone-row.is-selected{background:color-mix(in srgb,var(--accent) 14%,transparent)}.bone-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bone-length{width:52px}.bone-role{width:108px;font-size:11px}.skeleton-mode-select{background:var(--sl-field);border:1px solid var(--border);border-radius:var(--sl-radius);color:var(--text);font:inherit;font-size:12px;padding:2px 5px}.bone-panel.is-biped .bone-name{color:var(--text-dim)}.bone-row.drop-into,.bone-panel-header.drop-into{background:color-mix(in srgb,var(--accent) 22%,transparent)}.only-link.on{color:var(--accent);font-weight:700}.focus-label{color:var(--accent);font-weight:600}.bone-empty-note{padding:2px 10px}.inline-rename{background:var(--sl-field);border:1px solid var(--accent);border-radius:var(--sl-radius);color:var(--text);font:inherit;padding:0 3px;margin:-1px 0}.json-panel{flex:1;display:flex;flex-direction:column;min-height:0}.json-panel textarea{flex:1;resize:none;background:var(--sl-field);color:var(--text);border:none;outline:none;padding:10px;font:12px/1.5 var(--sl-mono)}.json-status{padding:5px 10px;border-top:1px solid var(--border);color:var(--text-dim);font-size:12px;background:var(--panel)}.json-status.error{color:var(--error);background:var(--sl-danger-bg)}.workspace{flex:1;display:flex;min-height:0}.workspace-tree{flex:1;min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border)}.sketch-panel{flex:0 0 500px;min-width:0;display:flex;flex-direction:column;min-height:0}.sketch-toolbar{flex:none;display:flex;align-items:center;gap:4px;padding:6px 10px;background:var(--panel-2);border-bottom:1px solid var(--border)}.sketch-canvas-wrap{flex:1;min-height:0;position:relative}.sketch-canvas-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;cursor:crosshair;background:repeating-conic-gradient(#e2d9c5,#e2d9c5 25%,#d8cfba 0%,#d8cfba 50%) 0 0 / 16px 16px}.preview-column{flex:none;width:620px;overflow-y:auto;background:var(--panel)}.preview-toolbars{position:sticky;top:0;z-index:1}.preview-toolbar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel-2);border-bottom:1px solid var(--border)}.preview-toolbar input[type=range]{flex:1;accent-color:var(--accent)}.elevation-value{min-width:28px;text-align:right}.preview-pane{border-bottom:1px solid var(--border)}.preview-header{display:flex;align-items:center;gap:4px;padding:4px 8px}.preview-label{color:var(--text-dim);font-size:12px}.preview-pane canvas{display:block;margin:0 8px 8px;border-radius:var(--sl-radius);cursor:grab;touch-action:none;background:repeating-conic-gradient(#e2d9c5,#e2d9c5 25%,#d8cfba 0%,#d8cfba 50%) 0 0 / 16px 16px}.preview-pane canvas:active{cursor:grabbing}
