:root{--chrome:#f3f3f2;--chrome-border:#d2d2cf;--text:#24262a;--text-muted:#6a6e75;--accent:#2f6fe4;--accent-soft:#dce7fb;--button-hover:#e4e5e7;--face-default:#f4f2ee;--danger:#b3261e;color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:13px}*{box-sizing:border-box}html,body{background:var(--chrome);height:100%;margin:0;overflow:hidden}.app{height:100vh;grid-template:"toolbar toolbar toolbar""palette viewport panel"1fr"status status status"/auto 1fr auto;height:100dvh;display:grid}.toolbar{border-bottom:1px solid var(--chrome-border);flex-wrap:wrap;grid-area:toolbar;align-items:center;gap:2px;min-width:0;padding:4px 8px;display:flex}.toolbar .brand{letter-spacing:.02em;margin-right:12px;font-weight:600}.toolbar .sep{background:var(--chrome-border);width:1px;height:24px;margin:0 6px}.palette{border-right:1px solid var(--chrome-border);grid-area:palette;grid-template-rows:20px;grid-template-columns:repeat(2,36px);grid-auto-rows:36px;align-content:start;gap:2px;padding:6px;display:grid}.palette:empty{display:none}.palette-toggle{height:20px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;grid-column:1/-1;justify-content:center;align-items:center;padding:0;display:flex}.palette-toggle:hover{background:var(--button-hover);color:var(--text)}.palette-toggle svg{width:16px;height:16px}.palette.collapsed{grid-template-rows:auto;grid-template-columns:18px;padding:6px 2px}.palette.collapsed>:not(.palette-toggle){display:none}.palette.collapsed .palette-toggle{height:64px}.icon-button{width:36px;height:36px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--button-hover)}.icon-button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.icon-button svg{width:24px;height:24px}.viewport{grid-area:viewport;min-width:0;min-height:0;position:relative;overflow:hidden}.viewport-canvas{cursor:var(--tool-cursor,default);touch-action:none;width:100%;height:100%;display:block}.viewport-canvas.is-orbiting{cursor:grabbing}.viewport-canvas.is-panning{cursor:move}.viewport-canvas.is-zooming{cursor:ns-resize}.statusbar{border-top:1px solid var(--chrome-border);grid-area:status;align-items:center;gap:16px;min-height:28px;padding:3px 10px;display:flex}.status-hint{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status-hover{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.measurements{border-left:1px solid var(--chrome-border);align-items:center;gap:8px;padding-left:12px;display:flex}.measurements input{border:1px solid var(--chrome-border);width:200px;height:22px;font:inherit;background:#fff;border-radius:3px;padding:0 6px}.measurements input:disabled{background:#f8f8f7}.search-box{border:1px solid var(--chrome-border);z-index:10;background:#fff;border-radius:8px;width:min(420px,100% - 32px);position:absolute;top:12px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 10px 30px #00000029}.search-box input{border:none;border-bottom:1px solid var(--chrome-border);width:100%;font:inherit;outline:none;padding:10px 12px;font-size:14px}.search-box ul{max-height:320px;margin:0;padding:4px;list-style:none;overflow-y:auto}.search-box li{cursor:pointer;border-radius:4px;justify-content:space-between;align-items:center;padding:6px 8px;display:flex}.search-box li[aria-selected=true]{background:var(--accent-soft)}.search-box li.empty{color:var(--text-muted);cursor:default}.search-box kbd{font:inherit;color:var(--text-muted);border:1px solid var(--chrome-border);border-radius:3px;padding:0 4px;font-size:11px}.status-hint.is-error{color:#b3261e}.viewport-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.selection-box{pointer-events:none;border:1px solid var(--accent);background:#2f6fe414;display:none;position:absolute}.selection-box.crossing{background:#2fa05a14;border-style:dashed}.snap{stroke:#1d1f23;stroke-width:1.2px}.snap-endpoint{fill:#2fb34a}.snap-midpoint{fill:#22b8cf}.snap-edge{fill:#e03b3b}.snap-face{fill:#3a5ee0}.snap-guide{fill:#fff}.snap-axis-0{fill:#d63a3a}.snap-axis-1{fill:#2e9b45}.snap-axis-2{fill:#3550d0}.snap-parallel{fill:#c026d3}.viewport-overlay .lasso{fill:#2f6fe414;stroke:var(--accent);stroke-width:1px}.viewport-overlay .lasso.crossing{fill:#2fa05a14;stroke-dasharray:4 3}.snap-label{fill:#1d1f23;paint-order:stroke;stroke:#fff;stroke-width:3px;font:12px Segoe UI,system-ui,sans-serif}.icon-button:disabled{opacity:.35;cursor:default}.icon-button:disabled:hover{background:0 0}.icon-button.with-text{width:auto;font:inherit;gap:4px;padding:0 8px 0 4px;font-size:12px;font-weight:600}.icon-button.with-text svg{width:20px;height:20px}.modal{border:1px solid var(--chrome-border);width:min(420px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:#fff;border-radius:8px;padding:0;overflow-y:auto;box-shadow:0 12px 40px #0000002e}.modal::backdrop{background:#1e202447}.modal form{flex-direction:column;gap:12px;padding:20px;display:flex}.modal h2{margin:0;font-size:16px;font-weight:600}.modal p{margin:0}.modal fieldset{border:1px solid var(--chrome-border);border-radius:6px;flex-direction:column;gap:6px;margin:0;padding:10px 12px;display:flex}.modal .row{align-items:center;gap:8px;display:flex}.modal input[type=number]{width:90px;font:inherit;padding:2px 6px}.modal .note{color:var(--text-muted);font-size:12px}.modal .check.ok{color:#1d7a3a}.modal .check.bad{color:#b3261e}.modal .buttons{justify-content:flex-end;gap:8px;display:flex}.modal button{font:inherit;border:1px solid var(--chrome-border);cursor:pointer;background:#fff;border-radius:4px;padding:6px 14px}.modal button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.modal button:disabled{opacity:.45;cursor:default}.label-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.model-label{white-space:pre;pointer-events:auto;cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffffeb;border:1px solid #b9bcc2;border-radius:3px;padding:2px 6px;font-size:12px;position:absolute;top:0;left:0}.model-label.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.viewport-overlay .leader{stroke:#3c4048;stroke-width:1px;fill:none}.viewport-overlay .leader-dot{fill:#3c4048}.side-panel{border-left:1px solid var(--chrome-border);grid-area:panel;width:272px;padding:8px 12px 16px;overflow-y:auto}.side-panel[hidden]{display:none}.side-panel h2{margin:0;font-size:14px;font-weight:600}.side-panel h3{color:var(--text-muted);margin:14px 0 6px;font-size:12px;font-weight:600}.panel-head{justify-content:space-between;align-items:center;display:flex}.panel-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:18px;line-height:1}.panel-close:hover{background:var(--button-hover)}.panel-current{align-items:center;gap:10px;margin:10px 0 8px;display:flex}.panel-note{color:var(--text-muted);margin:0;font-size:12px}.chip{border:1px solid #0000002e;border-radius:4px;width:36px;height:36px;display:block}.chip.big{width:48px;height:48px}.swatches{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.swatch{min-width:0;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;flex-direction:column;align-items:center;gap:2px;padding:3px 2px;display:flex}.swatch:hover{background:var(--button-hover)}.swatch[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.swatch-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;overflow:hidden}.panel-editor{border:1px solid var(--chrome-border);background:#fff;border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.panel-field{align-items:center;gap:6px;display:flex}.panel-field>span:first-child{width:54px;color:var(--text-muted);flex:none;font-size:12px}.panel-field input[type=text]{min-width:0;font:inherit;border:1px solid var(--chrome-border);border-radius:3px;flex:1;padding:2px 6px}.panel-field input.panel-size{flex:1;width:64px}.panel-field input[type=color]:disabled{opacity:.4}.panel-field input[type=range]{flex:1;min-width:0}.panel-field input[type=color]{border:1px solid var(--chrome-border);background:#fff;border-radius:3px;width:44px;height:24px;padding:0}.panel-value{text-align:right;width:36px;font-size:12px}.panel-row{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.panel-button{font:inherit;border:1px solid var(--chrome-border);cursor:pointer;background:#fff;border-radius:4px;padding:4px 10px;font-size:12px}.panel-button:hover{background:var(--button-hover)}.panel-button.danger{color:var(--danger)}.context-badge{z-index:3;border:1px solid var(--accent);background:var(--accent-soft);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:4px 12px;font-size:12px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.context-badge[hidden]{display:none}.context-badge:hover{background:var(--chrome)}.panel-button:disabled{opacity:.5;cursor:default}.scene-tabs{z-index:3;pointer-events:none;flex-wrap:wrap;gap:4px;display:flex;position:absolute;top:8px;left:8px;right:8px}.scene-tabs[hidden]{display:none}.scene-tab{pointer-events:auto;font:inherit;border:1px solid var(--chrome-border);background:var(--chrome);color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:180px;padding:3px 10px;font-size:12px;overflow:hidden}.scene-tab:hover{background:var(--button-hover)}.scene-tab[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.scene-list{flex-direction:column;gap:2px;margin:10px 0;padding:0;list-style:none;display:flex}.scene-row{align-items:center;gap:2px;display:flex}.scene-name,.scene-rename{min-width:0;font:inherit;text-align:left;color:var(--text);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;flex:1;padding:4px 8px;font-size:12px;overflow:hidden}.scene-name{cursor:pointer}.scene-name:hover{background:var(--button-hover)}.scene-name[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.scene-rename{border-color:var(--accent);background:#fff}.scene-icon{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;font-size:10px}.scene-icon:hover:not(:disabled){background:var(--button-hover);color:var(--text)}.scene-icon:disabled{opacity:.3;cursor:default}.panel-check{align-items:center;gap:6px;margin:2px 0;font-size:12px;display:flex}.panel-field.wide>span:first-child{width:104px}.panel-field.wide .panel-size{width:64px}.context-menu{z-index:50;border:1px solid var(--chrome-border);background:var(--chrome);min-width:210px;color:var(--text);-webkit-user-select:none;user-select:none;border-radius:6px;padding:4px 0;font-size:13px;position:fixed;box-shadow:0 6px 20px #0000002e}.context-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:16px;padding:5px 12px 5px 16px;display:flex}.context-item:hover:not(:disabled),.context-parent.open>.context-item{background:var(--accent-soft)}.context-item:disabled{color:var(--text-muted);opacity:.6;cursor:default}.context-label{flex:1}.context-shortcut{color:var(--text-muted);font-size:11px}.context-arrow{color:var(--text-muted)}.context-separator{background:var(--chrome-border);height:1px;margin:4px 0}.context-submenu{display:none}.context-parent.open>.context-submenu{display:block}.info-row{margin:4px 0}.info-value{font-size:12px}.modal p.pre{white-space:pre-line}.modal.settings{width:min(560px,100vw - 32px)}.modal.settings .row{flex-wrap:wrap}.modal.settings input[type=number]{width:64px}.modal .stack{flex-direction:column;align-items:stretch;gap:4px}.modal .folder{gap:6px;display:flex}.modal .folder input{min-width:0;font:inherit;flex:1;padding:2px 6px;font-size:12px}.modal .buttons .spacer{flex:1}.status-saved{color:var(--text-muted);white-space:nowrap;margin-left:auto;font-size:12px}.preview-bar{z-index:4;max-width:calc(100% - 32px);color:var(--text);background:#fdf3dc;border:1px solid #c58a1b;border-radius:6px;align-items:center;gap:10px;padding:6px 8px 6px 14px;font-size:13px;display:flex;position:absolute;top:44px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0000001f}.preview-bar[hidden]{display:none}.preview-bar button{font:inherit;border:1px solid var(--chrome-border);cursor:pointer;white-space:nowrap;background:#fff;border-radius:4px;padding:4px 10px;font-size:12px}.preview-bar button.primary,.panel-button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.panel-button.primary:disabled{color:var(--text-muted);border-color:var(--chrome-border);background:#fff}.history-list{flex-direction:column;gap:1px;margin-top:8px;display:flex}.history-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;align-items:baseline;gap:8px;padding:5px 8px;font-size:12px;display:flex}.history-item:hover{background:var(--button-hover)}.history-item[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.history-time{font-variant-numeric:tabular-nums;flex:none;width:44px}.history-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);flex:1;overflow:hidden}.history-kind{background:var(--chrome-border);border-radius:999px;flex:none;padding:1px 6px;font-size:10px}.modal.progress .progress-bar{background:var(--chrome-border);border-radius:2px;height:4px;position:relative;overflow:hidden}.modal.progress .progress-bar span{background:var(--accent);border-radius:2px;width:35%;animation:1.2s ease-in-out infinite progress-slide;position:absolute;inset:0 auto 0 0}@keyframes progress-slide{0%{left:-35%}to{left:100%}}.release-notes{border:1px solid var(--chrome-border);background:var(--chrome);border-radius:6px;max-height:340px;padding:8px 12px;font-size:13px;line-height:1.45;overflow-y:auto}.release-notes p,.release-notes h3{margin:0 0 6px}.release-notes h3{font-size:13px}.release-notes ul{margin:0 0 6px;padding-left:18px}.release-notes li{margin:2px 0}.release-notes code{font-size:12px}.modal.shortcuts{width:min(720px,100vw - 32px)}.shortcut-columns{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:4px 24px;display:grid}.shortcut-columns table{border-collapse:collapse;font-size:12px}.shortcut-columns td{vertical-align:top;padding:2px 6px 2px 0}.shortcut-columns td:first-child{white-space:nowrap;width:1%}kbd{border:1px solid var(--chrome-border);background:var(--chrome);font:inherit;border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:11px;display:inline-block}@media (max-width:900px){.side-panel{z-index:6;background:var(--chrome);grid-area:viewport;justify-self:end;width:min(272px,85vw);box-shadow:-6px 0 18px #00000026}.status-hover{display:none}.status-hint{text-overflow:ellipsis;min-width:0;overflow:hidden}.toolbar .brand{margin-right:4px}}@media (max-width:520px){.icon-button{width:32px;height:32px}.palette{grid-template-columns:repeat(2,32px);grid-auto-rows:32px;padding:4px}.toolbar .sep{margin:0 2px}.measurements input{width:90px}}
