:root{color-scheme:dark;--navy: #0c2433;--deep-navy: #071821;--blue: #176b87;--soft-blue: #dcecf1;--amber: #e4a62a;--soft-amber: #f7e9c5;--paper: #f5f7f8;--white: #ffffff;--charcoal: #172126;--slate: #60717b;--line: #cbd5da;--success: #397a52;--danger: #b84a4a;--bg-app: var(--deep-navy);--bg-panel: var(--navy);--bg-elevated: var(--charcoal);--bg-hover: #1f3038;--border: rgba(203, 213, 218, .18);--border-strong: rgba(203, 213, 218, .32);--text: var(--soft-blue);--text-muted: var(--slate);--accent: var(--blue);--accent-strong: #12586f;--ok: var(--success);--warn: var(--amber);--err: var(--danger);--dim: var(--amber);--radius: 8px;--radius-sm: 6px;--font: "Segoe UI", Inter, system-ui, -apple-system, sans-serif;--mono: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;--sidebar-width: 312px;--focus: 0 0 0 2px rgba(23, 107, 135, .55)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden;font-family:var(--font);background:var(--bg-app);color:var(--text);-webkit-font-smoothing:antialiased}button,input{font:inherit}button:focus-visible,input:focus-visible{outline:none;box-shadow:var(--focus)}*{scrollbar-width:thin;scrollbar-color:rgba(96,113,123,.7) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:#60717b8c;border-radius:8px}.app{display:flex;flex-direction:column;height:100%;background:radial-gradient(1100px 480px at 8% -12%,rgba(23,107,135,.18),transparent 55%),radial-gradient(900px 400px at 92% 0%,rgba(228,166,42,.06),transparent 50%),var(--bg-app)}.toolbar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:linear-gradient(180deg,#0f2a3a 0%,var(--deep-navy) 100%);border-bottom:1px solid var(--border);flex-wrap:wrap;min-height:64px;z-index:2;user-select:none}.brand{display:flex;align-items:center;gap:10px;margin-right:4px;padding-right:12px;border-right:1px solid var(--border);min-width:0}.brand-lockup{height:48px;width:auto;display:block;flex-shrink:0}.project-name{font-size:11px;color:var(--text-muted);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name.dirty:after{content:" •";color:var(--amber)}.toolbar-group{display:flex;align-items:center;gap:5px;padding:4px;border-radius:10px;background:#ffffff08;border:1px solid rgba(203,213,218,.08)}.toolbar-files{margin-left:auto}.tool{display:inline-flex;align-items:center;gap:6px;background:var(--charcoal);color:var(--soft-blue);border:1px solid var(--border);border-radius:7px;padding:6px 10px;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .08s ease,box-shadow .12s ease}.tool:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.tool:active:not(:disabled){transform:translateY(1px)}.tool.active{background:linear-gradient(180deg,#1a7a99,var(--blue));border-color:#12586f;color:var(--white);box-shadow:0 4px 14px #176b8766}.tool:disabled{opacity:.38;cursor:not-allowed}.tool kbd{font-family:var(--mono);font-size:10px;opacity:.75;border:1px solid rgba(203,213,218,.18);border-radius:4px;padding:0 4px;line-height:1.5;color:inherit}.tool.active kbd{border-color:#ffffff47;opacity:.95}.snap-step{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);font-size:12px;padding:0 4px}.snap-step input{width:58px;background:var(--deep-navy);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 6px}.hidden-file-input{display:none}.main{display:flex;flex:1;min-height:0}.viewport-container{flex:1;position:relative;min-width:0;background:var(--deep-navy);border-right:1px solid var(--border)}.viewport{width:100%;height:100%;outline:none;touch-action:none}.viewport-3d{cursor:grab}.viewport-3d:active{cursor:grabbing}.viewport-overlay{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:8px;pointer-events:none;z-index:1}.viewport-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:#071821d1;border:1px solid var(--border);backdrop-filter:blur(8px);color:var(--soft-blue);width:fit-content}.viewport-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 3px #176b8740}.viewport-badge.mode-3d .dot{background:var(--amber);box-shadow:0 0 0 3px #e4a62a38}.viewport-hint{max-width:280px;padding:10px 12px;border-radius:var(--radius);font-size:12px;line-height:1.45;color:var(--slate);background:#071821c7;border:1px solid var(--border);backdrop-filter:blur(8px)}.viewport-hint strong{color:var(--soft-blue);font-weight:600}.sidebar{width:var(--sidebar-width);background:var(--bg-panel);padding:12px 14px 20px;overflow:auto;display:flex;flex-direction:column;gap:14px}.panel-section{border:1px solid var(--border);border-radius:10px;background:#07182159;overflow:hidden;flex-shrink:0}.panel-section>summary,.panel-head{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;user-select:none;min-height:42px}.panel-section>summary::-webkit-details-marker{display:none}.panel-section>summary h3,.panel-head h3{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);font-weight:600}.panel-chevron{font-size:10px;color:var(--slate);transition:transform .15s ease}details.panel-section[open]>summary .panel-chevron{transform:rotate(90deg)}.panel-body{padding:12px 14px 16px;border-top:1px solid rgba(203,213,218,.1);display:flex;flex-direction:column;gap:10px}.panel-section h3{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);font-weight:600}.muted{margin:0;color:var(--text-muted);font-size:12px;line-height:1.45}.prop-card{display:flex;flex-direction:column;gap:8px;padding:11px;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border)}.prop-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px}.prop-row span{color:var(--text-muted)}.action-form{margin:0 0 8px}.action-field{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}.action-field span{color:var(--text-muted)}.precision-input{width:8.5rem;background:var(--charcoal);color:var(--soft-blue);border:1px solid var(--border);border-radius:6px;padding:2px 6px;font:inherit;font-variant-numeric:tabular-nums}.prop-row strong{font-weight:600;text-align:right;color:var(--soft-blue)}.type-badge{text-transform:capitalize;color:#8ec5d4!important}.mono-sm{font-family:var(--mono);font-size:11px;color:var(--text-muted)}.help ul{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--text-muted)}.help li{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.help kbd,.statusbar kbd,.viewport-hint kbd{font-family:var(--mono);font-size:10px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--soft-blue)}.statusbar{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--deep-navy);border-top:1px solid var(--border);font-size:11px;color:var(--text-muted);flex-wrap:wrap;min-height:32px}.pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:#172126a6;border:1px solid var(--border);color:var(--soft-blue);white-space:nowrap}.statusbar button.pill{font:inherit;cursor:pointer;background:#172126a6}.pill.ok{color:#8fbf9f;border-color:#397a5273;background:#397a521f}.pill.warn{color:var(--soft-amber);border-color:#e4a62a66;background:#e4a62a1a}.pill.err{color:#e0a0a0;border-color:#b84a4a73;background:#b84a4a1f}.pill.mode-3d{color:var(--soft-amber);border-color:#e4a62a66;background:#e4a62a1a}.coords{font-family:var(--mono);font-size:11px}.muted-pill{color:var(--text-muted)}.status-message{margin-left:auto;color:var(--text-muted);max-width:36%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .15s ease}.status-message.emphasis{color:var(--soft-blue)}.constraint-hint{margin:0 0 4px}.constraint-actions{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 4px}.constraint-btn{font-size:11px;padding:5px 8px}.constraint-status{margin:0}.solve-msg{margin:4px 0 0;font-size:11px}.solve-idle{color:var(--text-muted)!important}.solve-solved{color:#8fbf9f!important}.solve-partial{color:var(--soft-amber)!important}.solve-failed{color:#e0a0a0!important}.constraint-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.constraint-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);transition:border-color .12s ease,box-shadow .12s ease}.constraint-item:hover{border-color:var(--border-strong)}.constraint-remove{padding:2px 8px;min-width:28px;font-size:15px;line-height:1}.param-item{align-items:flex-start}.param-grid{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;flex:1}.param-kind{width:5.5rem}.param-formula{width:10rem}.param-bind{display:inline-flex;flex-direction:column;align-items:flex-end;gap:2px}.layer-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.layer-row{display:grid;grid-template-columns:14px 1fr auto auto auto auto auto;align-items:center;gap:4px;padding:6px 8px;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);transition:border-color .12s ease,box-shadow .12s ease}.layer-row.active{border-color:#176b87a6;box-shadow:inset 0 0 0 1px #176b8738}.layer-swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(203,213,218,.35);padding:0;cursor:pointer}.layer-name{background:transparent;border:none;color:var(--text);text-align:left;cursor:pointer;font-size:12px;padding:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-count{font-size:11px;font-family:var(--mono);color:var(--text-muted);min-width:1.2em;text-align:right}.layer-icon{padding:2px 6px;min-width:28px;font-size:10px;font-weight:600;letter-spacing:.02em}.layer-icon.off{opacity:.45}.layer-icon.on{border-color:#e4a62a8c;color:var(--soft-amber)}.dim-pick{background:transparent;border:none;color:inherit;text-align:left;cursor:pointer;padding:0;flex:1;min-width:0}.dim-actions{display:flex;align-items:center;gap:3px;flex-shrink:0}.dim-selected{border-color:#e4a62a8c!important;box-shadow:inset 0 0 0 1px #e4a62a2e}.empty-state{padding:12px;border-radius:var(--radius);border:1px dashed var(--border);background:#07182159;color:var(--text-muted);font-size:12px;line-height:1.45;text-align:center;margin-top:2px}.measure-hud{border-color:#e4a62a59;color:var(--soft-amber)}.measure-hud strong{color:var(--amber)}
