:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}.app{color:#eee;flex-direction:column;width:100vw;height:100vh;font-family:system-ui,sans-serif;display:flex}.toolbar{background:#111;border-bottom:1px solid #333;flex-wrap:wrap;align-items:center;gap:1.25rem;padding:.5rem 1rem;display:flex}.toolbar h1{white-space:nowrap;margin:0;font-size:1rem;font-weight:600}.tools{flex-wrap:wrap;gap:.4rem;display:flex}.tools button{color:#eee;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:4px;padding:.4rem .9rem;font-size:.82rem}.tools button:hover:not(:disabled){background:#333}.tools button:disabled{opacity:.4;cursor:default}.tools button.active{background:#2d5a8f;border-color:#3d7ab8}.stats{color:#999;font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:.8rem}.body{flex:1;min-height:0;display:flex}.sidebar{background:#161616;border-right:1px solid #333;flex-direction:column;flex-shrink:0;gap:.75rem;width:300px;padding:.75rem;display:flex;overflow-y:auto}.panel{background:#1e1e1e;border:1px solid #333;border-radius:6px;flex-direction:column;gap:.5rem;padding:.65rem .75rem;display:flex}.panel h2{text-transform:uppercase;letter-spacing:.05em;color:#999;justify-content:space-between;align-items:center;margin:0 0 .15rem;font-size:.8rem;display:flex}button{color:#eee;cursor:pointer;text-align:left;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:4px;padding:.4rem .6rem;font-family:inherit;font-size:.8rem}button:hover:not(:disabled){background:#333}button:disabled{opacity:.4;cursor:default}button.active{background:#3a5a3a;border-color:#5a8a5a}button.primary{text-align:center;background:#2d5a8f;border-color:#3d7ab8;font-weight:600}button.primary:hover:not(:disabled){background:#3568a3}button.small{text-align:center;padding:.15rem .4rem;font-size:.7rem}.button-row{gap:.4rem;display:flex}.button-row button{text-align:center;flex:1}.row{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.vec3{flex-direction:column;gap:.2rem;display:flex}.vec3-label{color:#999;font-size:.75rem}.slider-number{color:#bbb;grid-template-columns:1rem 1fr 3.6rem;align-items:center;gap:.4rem;font-size:.75rem;display:grid}.slider-number-label{text-transform:none}.slider-number-input{color:#eee;font-variant-numeric:tabular-nums;background:#262626;border:1px solid #3a3a3a;border-radius:4px;width:3.6rem;padding:.15rem .3rem;font-size:.75rem}.timeline ol{flex-direction:column;gap:.35rem;margin:0;padding-left:0;list-style:none;display:flex;overflow-y:auto}.timeline li{word-break:break-word;font-size:.72rem}.timeline li.empty{color:#777;font-style:italic}.op-id{color:#7ec9ff}.op-error-text{color:#ff8080;font-size:.68rem}.viewport{flex:1;min-width:0;min-height:0;position:relative}.status,.error{z-index:1;margin:0;font-size:.9rem;position:absolute;top:1rem;left:1rem}.error{color:#ff6b6b}.popup-backdrop{z-index:1000;pointer-events:none;justify-content:flex-end;align-items:flex-start;padding:1rem;display:flex;position:absolute;inset:0}.popup{pointer-events:auto;box-sizing:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1e1e1eee;border:1px solid #3a3a3a;border-radius:8px;flex-direction:column;gap:.55rem;width:280px;max-height:100%;padding:.85rem;display:flex;overflow-y:auto;box-shadow:0 8px 24px #00000080}.popup h2{margin:0 0 .15rem;font-size:.9rem}.popup .hint{color:#999;margin:0;font-size:.72rem}.popup .pick-hint-inline{color:#ffe066}.preview-row{border-top:1px solid #333;padding-top:.15rem}.preview-row input[type=checkbox]{width:1rem;height:1rem}.bug-report-text{box-sizing:border-box;color:#eee;resize:vertical;background:#262626;border:1px solid #3a3a3a;border-radius:4px;width:100%;padding:.5rem;font-family:inherit;font-size:.8rem}.sketch-editor{position:absolute;inset:0}.sketch-canvas{position:absolute;inset:0;overflow:hidden}.sketch-canvas svg{touch-action:none;cursor:crosshair;display:block}.sketch-bg{fill:#10101059}.grid-minor{stroke:#ffffff0d;stroke-width:1px}.grid-major{stroke:#ffffff1c;stroke-width:1px}.axis-x{stroke:#7a3a3a;stroke-width:1.5px}.axis-y{stroke:#3a7a4a;stroke-width:1.5px}.sketch-region{fill:#ffa04021;stroke:none}.spline-hull{fill:none;stroke:#4a4a4a;stroke-width:1px;stroke-dasharray:3 3}.glyph text{fill:#eee;pointer-events:none;font-family:system-ui,sans-serif;font-size:11px}.glyph-bg{fill:#2a2a2a;stroke:#444}.glyph-bg.selected{fill:#6a5a20;stroke:#ffd84a}.glyph-bg.failed{fill:#5a2020;stroke:#ff5d5d}.sketch-coords,.sketch-hint{color:#aaa;pointer-events:none;background:#141414cc;border-radius:4px;padding:.2rem .5rem;font-size:.75rem;position:absolute;bottom:.5rem}.sketch-coords{font-variant-numeric:tabular-nums;top:.5rem;bottom:auto;left:.5rem}.sketch-hint{left:.5rem}.sketch-panel{box-sizing:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#161616ee;border:1px solid #3a3a3a;border-radius:8px;flex-direction:column;gap:.75rem;width:300px;max-height:calc(100% - 4.25rem);padding:.75rem;display:flex;position:absolute;top:.75rem;right:.75rem;overflow-y:auto;box-shadow:0 8px 24px #00000080}.button-grid{flex-wrap:wrap;gap:.3rem;display:flex}.button-grid button{text-align:center;flex:1 0 auto}.sketch-panel .hint{color:#999;margin:0;font-size:.75rem}.status-ok{color:#7ad17a;margin:0;font-size:.8rem}.status-bad{color:#ff8c8c;margin:0;font-size:.8rem}.constraint-list ol{flex-direction:column;gap:.2rem;max-height:16rem;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.constraint-list li{cursor:pointer;background:#1e1e1e;border-radius:3px;justify-content:space-between;align-items:center;gap:.4rem;padding:.2rem .35rem;font-size:.75rem;display:flex}.constraint-list li.selected{outline:1px solid #ffd84a}.constraint-list li.failed{color:#ff8c8c;background:#3a1e1e}.constraint-list .constraint-name{flex:1}.constraint-list .constraint-remove{color:#888;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:.75rem}.constraint-list .constraint-remove:hover{color:#ff8080}.constraint-list input{color:#eee;background:#111;border:1px solid #3a3a3a;border-radius:3px;width:5.5rem;padding:.1rem .25rem;font-size:.75rem}.mode-badge{color:#ffa040;border:1px solid #ffa040;border-radius:4px;padding:.15rem .5rem;font-size:.78rem}button.inline{margin-left:.4rem;padding:.1rem .4rem;font-size:.7rem}.file-button{color:#eee;cursor:pointer;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:4px;padding:.4rem .9rem;font-size:.82rem;display:inline-block}.file-button:hover{background:#333}.file-button.disabled{opacity:.4;cursor:default}.file-button input{display:none}.menu{display:inline-block;position:relative}.menu-items{z-index:20;background:#1e1e1e;border:1px solid #3a3a3a;border-radius:4px;flex-direction:column;gap:.15rem;min-width:100%;padding:.2rem;display:flex;position:absolute;top:calc(100% + .25rem);left:0;box-shadow:0 6px 16px #00000080}.menu-items button{white-space:nowrap}.timeline ol.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.timeline li.step-box{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#242424;border:1px solid #3a3a3a;border-radius:5px;justify-content:space-between;align-items:center;gap:6px;padding:5px 4px 5px 10px;display:flex}.timeline li.step-box:hover:not(.disabled){background:#2b2b2b;border-color:#666}.timeline li.step-box.disabled{cursor:default}.timeline li.step-box .step-name{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,monospace;overflow:hidden}.timeline li.step-box.op-error{color:#ff8080;border-color:#a04040}.timeline li.step-box.step-editing{color:#ffa040;border-color:#ffa040}.timeline li.step-box.step-dim{opacity:.4}.timeline li.step-box.dragging{opacity:.35}.timeline .step-remove{color:#888;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 6px;font-size:.8rem;line-height:1.4}.timeline .step-remove:hover:not(:disabled){color:#ff8080}.timeline li.drop-indicator{pointer-events:none;background:#7ec9ff;border-radius:1px;height:2px;margin:calc(-.175rem - 1px) 0}.timeline li.seeker{cursor:ns-resize;touch-action:none;--seeker:#777;align-items:center;height:12px;display:flex}.timeline li.seeker.rolled-back,.timeline li.seeker.dragging,.timeline li.seeker:hover{--seeker:#ffa040}.timeline .seeker-head{border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:9px solid var(--seeker);width:0;height:0}.timeline .seeker-line{background:var(--seeker);flex:1;height:2px}.popup .field{flex-direction:column;gap:2px;display:flex}.popup .field .hint{margin:0 0 4px;font-size:.8em}.selection{flex-direction:column;gap:.3rem;display:flex}.selection-list{flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none;display:flex}.selection-list li{background:#262626;border:1px solid #333;border-radius:4px;grid-template-columns:1fr auto auto;align-items:center;gap:.4rem;padding:.15rem .2rem .15rem .4rem;font-size:.72rem;display:grid}.selection-list li.hint{background:0 0;border:none;padding:0;display:block}.selection-name{text-overflow:ellipsis;white-space:nowrap;color:#ffc94a;overflow:hidden}.selection-roles{color:#888;font-size:.65rem}.selection-remove{color:#999;background:0 0;border:none;padding:0 .3rem;font-size:.65rem}.selection-remove:hover:not(:disabled){color:#ff8080;background:0 0}.constructions{flex-direction:column;gap:.35rem;display:flex}.constructions fieldset{border:1px solid #333;border-radius:4px;grid-template-columns:1fr 1fr;gap:.1rem .4rem;margin:0;padding:.2rem .4rem .35rem;display:grid}.constructions legend{color:#999;padding:0 .25rem;font-size:.68rem}.construction{cursor:pointer;align-items:center;gap:.25rem;font-size:.7rem;line-height:1.2;display:flex}.construction input{flex:none;margin:0}.construction.disabled{color:#555;cursor:default}.construction.checked{color:#7ec9ff}.construction-params{flex-direction:column;gap:.3rem;display:flex}.projection-toggle{z-index:2;background:#1e1e1eee;border:1px solid #3a3a3a;padding:.3rem .7rem;font-size:.75rem;position:absolute;bottom:.75rem;right:.75rem}.mobile-bottom{display:none}@media (width<=860px){.desktop-only{display:none}.body{flex:50%;min-height:0}.mobile-bottom{background:#161616;border-top:1px solid #333;flex-direction:column;flex:50%;min-height:0;display:flex}}.mobile-tabbar{border-bottom:1px solid #333;flex-shrink:0;display:flex}.mobile-tabbar button{text-align:center;background:#161616;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:.6rem .5rem;font-size:.8rem}.mobile-tabbar button.active{color:#fff;background:#1e1e1e;border-bottom-color:#3d7ab8}.mobile-tab-content{flex:1;min-height:0;padding:.75rem;position:relative;overflow-y:auto}.mobile-tab-content .popup-backdrop{padding:0;display:block;position:static;inset:auto}.mobile-tab-content .popup{width:100%;max-height:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:#1e1e1e}.sketch-panel-host{height:100%}.mobile-tab-content .sketch-panel{-webkit-backdrop-filter:none;backdrop-filter:none;width:100%;max-height:none;box-shadow:none;background:0 0;border:none;padding:0;position:static}
