:root{--bg:#0f1114;--panel:#171a1f;--panel-2:#1d2128;--line:#2a2f37;--line-2:#363c46;--text:#e6e8eb;--muted:#8b939e;--accent:#f59e0b;--accent-ink:#1a1204;--ok:#34d399;--bad:#f87171;--warn:#fbbf24;--radius:8px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg)}button,input,select{font:inherit;color:inherit}h2,h3{margin:0;font-weight:600}h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:12px}h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px}.app{flex-direction:column;height:100%;min-height:0;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;display:flex}.brand{align-items:center;gap:8px;display:flex}.brand strong{letter-spacing:.01em;font-size:15px}.tag{color:var(--muted);border:1px solid var(--line-2);border-radius:99px;padding:1px 8px;font-size:11px}.modes{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;gap:2px;max-width:100%;padding:2px;display:flex}.modes button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:6px;padding:5px 10px}.modes button.on{background:var(--panel-2);color:var(--text)}.modes button:disabled{cursor:not-allowed;opacity:.55}.modes small{color:var(--muted);margin-left:6px;font-size:10px}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto;display:flex}.toolbar-sep{background:var(--line-2);width:1px;height:22px;margin:0 4px}.btn{border:1px solid var(--line-2);background:var(--panel-2);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:7px 12px}.btn:hover:not(:disabled){background:#232831;border-color:#4b5361}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn-primary:hover:not(:disabled){background:#fbb13c;border-color:#fbb13c}.btn-danger{border-color:var(--bad);color:#fecaca}.btn-ghost{background:0 0}.btn-sm{padding:3px 8px;font-size:12px}.pulse{box-shadow:0 0 0 2px #f59e0b59}.banner-error{color:#fecaca;background:#3b1219;border-bottom:1px solid #7f1d1d;padding:8px 16px}.grid{flex:1;grid-template-columns:320px minmax(0,1fr) minmax(0,1fr);min-height:0;display:grid}.col{border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.col:last-child{border-right:0}.col-settings{background:var(--panel);overflow-y:auto}.col-head{border-bottom:1px solid var(--line);padding:10px 14px}.col-2d,.col-3d{overflow:hidden}@media (width<=1100px){.app{height:auto}.grid{grid-template-columns:1fr}.col{border-right:0;border-bottom:1px solid var(--line)}.col-settings{overflow:visible}.topbar{padding:10px 12px}.toolbar{margin-left:0}.modes small{display:none}}.settings{padding:4px 0 24px}.section{border-bottom:1px solid var(--line);flex-direction:column;gap:10px;padding:12px 14px;display:flex}.section-head{justify-content:space-between;align-items:center;min-height:22px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:#c3c8cf;align-items:center;gap:6px;display:flex}.hint{border:1px solid var(--line-2);width:14px;height:14px;color:var(--muted);cursor:help;border-radius:50%;justify-content:center;align-items:center;font-size:10px;display:inline-flex}.field-row{align-items:center;gap:8px;display:flex}.field-row input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.num{align-items:center;gap:4px;display:flex}.num input{background:var(--bg);border:1px solid var(--line-2);text-align:right;font-variant-numeric:tabular-nums;border-radius:6px;width:62px;padding:3px 6px}.num em{color:var(--muted);width:24px;font-size:11px;font-style:normal}select{background:var(--bg);border:1px solid var(--line-2);border-radius:6px;padding:6px 8px}.toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.toggle input{opacity:0;pointer-events:none;position:absolute}.toggle-track{background:var(--line-2);border-radius:99px;flex:none;width:30px;height:17px;position:relative}.toggle-track:after{content:"";background:#c9ced6;border-radius:50%;width:13px;height:13px;transition:left .12s;position:absolute;top:2px;left:2px}.toggle input:checked+.toggle-track{background:var(--accent)}.toggle input:checked+.toggle-track:after{background:#fff;left:15px}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--accent);outline-offset:2px}.thumbs{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:10px;padding:10px 14px;display:grid}.thumbs figure{flex-direction:column;gap:4px;min-width:0;margin:0;display:flex}.thumb{border:1px solid var(--line);background:#fff;border-radius:6px;justify-content:center;align-items:center;height:110px;display:flex;overflow:hidden}.thumb img,.thumb canvas{object-fit:contain;image-rendering:auto;max-width:100%;max-height:100%}.checker{background:repeating-conic-gradient(#e5e7eb 0 25%, #fff 0 50%) 50% / 16px 16px}figcaption{color:var(--muted);font-size:11px}.viewport{flex:1;min-height:260px;position:relative}.viewport-canvas{cursor:grab;touch-action:none;position:absolute;inset:0}.viewport-canvas:active{cursor:grabbing}.viewport-canvas canvas{display:block}.viewport-overlay{pointer-events:none;flex-wrap:wrap;align-items:center;gap:8px;display:flex;position:absolute;top:10px;left:10px;right:10px}.viewport-overlay>*{pointer-events:auto}.viewport-empty{color:var(--muted);pointer-events:none;text-align:center;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.chip{border:1px solid var(--line-2);font-variant-numeric:tabular-nums;background:#171a1fe6;border-radius:99px;padding:3px 10px;font-size:12px}.chip-warn{color:var(--warn);border-color:#92400e}.chip-busy{border-color:var(--accent);color:var(--accent)}.seg{border:1px solid var(--line-2);background:#171a1fe6;border-radius:6px;padding:2px;display:flex}.seg button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:4px;padding:3px 9px;font-size:12px}.seg button.on{background:var(--line-2);color:var(--text)}.legend{border:1px solid var(--line);color:#c3c8cf;pointer-events:none;background:#171a1fe6;border-radius:6px;flex-wrap:wrap;gap:4px 12px;padding:6px 10px;font-size:11px;display:flex;position:absolute;bottom:10px;left:10px}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:5px;display:inline-block}.validation{border-top:1px solid var(--line);background:var(--panel);max-height:45%;padding:12px 14px;overflow-y:auto}.validation ul{flex-direction:column;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.validation li{grid-template-columns:10px 1fr auto;align-items:center;gap:8px;display:grid}.validation .dot{background:var(--line-2);border-radius:50%;width:8px;height:8px}.validation li.ok .dot{background:var(--ok)}.validation li.bad .dot{background:var(--bad)}.validation li.bad .v{color:#fecaca}.validation .k{color:#c3c8cf}.validation .v{font-variant-numeric:tabular-nums;text-align:right}.msgs{border-radius:6px;margin-top:10px;padding:6px 10px}.msgs p{margin:3px 0}.msgs.err{color:#fecaca;background:#3b1219}.msgs.warn{color:#fde68a;background:#33270b}.timing{color:var(--muted);margin:10px 0 0;font-size:11px}.dropzone{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;z-index:10;background:#0f1114d9;border-radius:14px;justify-content:center;align-items:center;font-size:18px;display:flex;position:fixed;inset:12px}.samples{pointer-events:auto;color:var(--muted)}.link{color:var(--accent);cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.viewport-canvas.editing{cursor:crosshair}.edit-hint{text-align:center;color:#c3c8cf;pointer-events:none;font-size:11px;position:absolute;bottom:44px;left:10px;right:10px}@media (width<=1100px){.viewport{min-height:min(70vh,560px)}}.note{color:var(--muted);margin:0;font-size:11px;line-height:1.4}
