:root{--bg: #121316;--surface: #1c1e22;--surface-2: #25282d;--border: #33373e;--text: #e7e9ec;--muted: #9aa0a8;--accent: #e08a6f;--accent-text: #1a0f0b;--warn-bg: #3a2f16;--warn-text: #f3d48b;--error-bg: #4a1f1f;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);display:flex;flex-direction:column;overflow:hidden}button{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:6px 12px;cursor:pointer}button:hover{border-color:var(--muted)}button.primary{background:var(--accent);color:var(--accent-text);border-color:transparent;font-weight:600}button.primary:hover{filter:brightness(1.08)}button.link{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.brand{font-weight:600}.layout{flex:1;display:flex;min-height:0}.stage{position:relative;flex:1;min-width:0}.canvas-host,.canvas-host canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.canvas-host canvas{touch-action:none}.empty{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;padding:16px}.empty-card{pointer-events:auto;text-align:center;max-width:420px;padding:32px 28px;border:2px dashed var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface) 85%,transparent);color:var(--muted)}.empty-card h1{font-size:18px;color:var(--text);margin:12px 0 6px}.empty-card p{margin:6px 0}.muted{color:var(--muted);font-size:12px}.drop{position:absolute;inset:8px;display:grid;place-items:center;border:3px dashed var(--accent);border-radius:14px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:20px;font-weight:600;pointer-events:none}.progress{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(320px,calc(100% - 32px));padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.progress-label{margin-bottom:10px}.progress-track{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.progress-bar{height:100%;width:0;background:var(--accent);transition:width .1s linear}.progress-bar.indeterminate{width:35%;animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.viewbar{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;gap:4px;padding:4px;background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid var(--border);border-radius:8px}.viewbar button{padding:5px 10px;background:transparent;border-color:transparent}.viewbar button:hover{background:var(--surface-2)}.panel{width:300px;flex-shrink:0;overflow-y:auto;border-left:1px solid var(--border);background:var(--surface);padding:4px 16px 16px}.panel h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 10px}.panel h3{font-size:13px;margin:16px 0 8px}.panel section+section{border-top:1px solid var(--border);margin-top:14px}.row{display:grid;grid-template-columns:auto 1fr 36px;align-items:center;gap:8px;margin-bottom:10px}.row output{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.row input{width:100%;accent-color:var(--accent)}.check{display:flex;align-items:center;gap:8px;margin:6px 0;cursor:pointer}.check input{accent-color:var(--accent)}.stats{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 12px;margin:0}.stats dt{color:var(--muted)}.stats dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.stats .wide{grid-column:1 / -1}.stats dd.wide{text-align:left;margin-top:-4px;overflow-wrap:anywhere}.stats dd.small{font-size:12px;color:var(--muted)}.materials{list-style:none;margin:0;padding:0;display:grid;gap:8px}.materials li{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;padding:8px;background:var(--surface-2);border-radius:8px}.swatch{width:28px;height:28px;border-radius:6px;border:1px solid var(--border)}.mat-name{font-weight:600;overflow-wrap:anywhere}.mat-props{color:var(--muted);font-size:12px;margin-top:2px}.warning{background:var(--warn-bg);color:var(--warn-text);border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:13px}.warning button{margin-top:8px;display:block}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);max-width:calc(100% - 32px);background:var(--error-bg);border:1px solid #7a3434;padding:10px 14px;border-radius:8px;z-index:10}@media(max-width:760px){.layout{flex-direction:column}.stage{flex:1 1 60%;min-height:280px}.panel{width:auto;flex:0 1 40%;border-left:none;border-top:1px solid var(--border)}}
