:root{--bg: #16181d;--panel: #1d2026;--card: #23272f;--card-hover: #292e37;--border: #2f343e;--border-strong: #3c424e;--text: #e6e8ec;--muted: #959cab;--accent: #0a9fd8;--accent-strong: #0889bb;--accent-soft: rgb(0 198 255 / .14);--danger: #e2574c;--radius: 8px;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:13px}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}body{display:flex;flex-direction:column}svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}#topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:52px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;letter-spacing:.01em}.logo{width:24px;height:24px;display:block}.tabs{display:flex;gap:4px;padding:4px;background:var(--bg);border:1px solid var(--border);border-radius:10px}.tabs button{display:flex;align-items:center;gap:8px;padding:7px 16px;background:none;border:0;border-radius:7px;color:var(--muted);font:inherit;font-weight:500;cursor:pointer}.tabs button:hover{color:var(--text)}.tabs button.active{background:var(--card-hover);color:var(--text);box-shadow:0 1px 2px #0006}.step{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--border);font-size:11px;font-weight:600}.tabs button.active .step{background:var(--accent);color:#fff}.actions{display:flex;justify-content:flex-end;align-items:center;gap:6px}.btn,.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 10px;background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;font:inherit;cursor:pointer;transition:background .12s,border-color .12s}.btn:hover:not(:disabled),.icon-btn:hover:not(:disabled){background:var(--card-hover)}.btn:disabled,.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn{padding:7px;background:none;border-color:transparent}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}.btn-primary:hover:not(:disabled){background:var(--accent-strong)}.btn-ghost{background:none}.btn-danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.btn-small{padding:4px 10px;font-size:12px}.wide{width:100%}.file input{display:none}#panel select,#panel input[type=number]{padding:6px 8px;background:var(--bg);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;font:inherit}#panel select{min-width:120px;cursor:pointer}#panel input[type=number]{width:64px;text-align:right}#panel select:focus,#panel input[type=number]:focus{outline:none;border-color:var(--accent)}.unit-input{display:inline-flex;align-items:center;gap:6px}.unit-input em{min-width:20px;color:var(--muted);font-style:normal}#app{display:flex;flex:1;min-height:0}#panel{width:300px;flex-shrink:0;padding:12px;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto}.tab-panel{display:flex;flex-direction:column;gap:12px}.card{padding:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.card h2{margin:0 0 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.subhead{margin:14px 0 6px;font-size:12px;color:var(--muted)}.card>*+.btn.wide{margin-top:8px}.model-info{margin:0;line-height:1.5}.field{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}.row{display:flex;gap:6px;margin-top:8px}.row .btn{flex:1}.hint{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.segmented{display:flex;padding:3px;background:var(--bg);border:1px solid var(--border);border-radius:7px}.segmented button{flex:1;padding:6px 8px;background:none;border:0;border-radius:5px;color:var(--muted);font:inherit;font-weight:500;cursor:pointer}.segmented button:hover:not(:disabled){color:var(--text)}.segmented button.active{background:var(--accent);color:#fff}.segmented button:disabled{opacity:.4;cursor:default}.switch{display:flex;align-items:center;gap:10px;margin-top:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;pointer-events:none}.switch .track{position:relative;width:30px;height:17px;flex-shrink:0;background:var(--border-strong);border-radius:999px;transition:background .15s}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;background:#fff;border-radius:50%;transition:transform .15s}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(13px)}.switch input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}.notice{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding:8px 10px;background:#e2574c1f;border:1px solid rgb(226 87 76 / .35);border-radius:6px;color:#f0a29b;font-size:12px}.legend{margin:0;padding:0;list-style:none;font-size:12px;color:var(--muted)}.legend li{display:flex;align-items:center;gap:8px;margin-top:6px}.legend li:first-child{margin-top:0}.legend .swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.summary{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0 0 14px}.summary dt{color:var(--muted)}.summary dd{margin:0;text-align:right}.summary dd.warn{color:#f0a29b}.repair-state{display:flex;align-items:baseline;gap:8px;margin:0;line-height:1.45}.repair-state:before{content:"";width:8px;height:8px;flex-shrink:0;border-radius:50%;background:var(--border-strong)}.repair-state.ok:before{background:#5cc28a}.repair-state.bad:before{background:#e8a33c}.repair-state.busy:before{background:var(--accent);animation:pulse 1s ease-in-out infinite alternate}@keyframes pulse{to{opacity:.3}}.repair-summary{margin:10px 0 0;font-size:12px}#viewport{flex:1;position:relative;min-width:0}#viewport canvas{display:block}#viewport.tool-add canvas{cursor:crosshair}#viewport.dragging canvas{cursor:grabbing}#status{position:absolute;left:50%;bottom:18px;transform:translate(-50%);max-width:min(560px,calc(100% - 32px));padding:10px 14px;background:#16181deb;border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 6px 20px #00000059;line-height:1.45;opacity:0;transition:opacity .2s;pointer-events:none}#status.visible{opacity:1}@media(max-width:1000px){#topbar{grid-template-columns:auto 1fr auto;gap:10px}.tabs{justify-self:center}.tabs button{padding:7px 10px}#panel{width:260px}}@media(max-width:760px){.brand-name,.step,.file .label{display:none}#panel{width:220px}}body.dragging #viewport:after{content:"Drop STL to load";position:absolute;top:12px;right:12px;bottom:12px;left:12px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:10px;background:var(--accent-soft);font-size:18px;pointer-events:none}.modal-header{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;max-width:calc(100% - 32px);padding:7px 12px;background:#16181deb;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:12px;text-align:center;pointer-events:none}.modal-header strong{font-size:13px;font-variant-numeric:tabular-nums}.modal-header span{color:var(--muted)}.modal-guide{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:20}.modal-guide line{stroke:#fff;stroke-width:1;stroke-dasharray:4 4;opacity:.7}.layer-bar{position:absolute;top:16px;right:16px;bottom:16px;display:flex;flex-direction:column;align-items:center;gap:8px;width:64px;pointer-events:none}.layer-bar[hidden]{display:none}.layer-label,.layer-keys{padding:4px 6px;background:#16181dd9;border:1px solid var(--border-strong);border-radius:6px;font-size:11px;line-height:1.35;text-align:center;font-variant-numeric:tabular-nums;white-space:pre}.layer-keys{color:var(--muted);white-space:normal}.layer-bar input{flex:1;min-height:0;writing-mode:vertical-lr;direction:rtl;accent-color:var(--accent);pointer-events:auto;cursor:ns-resize}.sizes{margin-top:10px;padding:8px 10px 10px;border:1px solid var(--border);border-radius:8px}.sizes summary{cursor:pointer;font-size:12px;color:var(--muted);-webkit-user-select:none;user-select:none}.sizes[open] summary{margin-bottom:2px}.sizes .unit-input input{width:64px}.select-box{position:absolute;border:1px dashed #fff;background:#ffffff14;pointer-events:none}.select-box.remove{border-color:#ff8a80;background:#ff8a8014}#viewport.box-armed canvas{cursor:crosshair}.recover{position:absolute;top:16px;left:50%;transform:translate(-50%);z-index:5;width:min(440px,calc(100% - 32px));padding:12px 14px;background:#16181df5;border:1px solid var(--accent);border-radius:var(--radius);box-shadow:0 6px 20px #0006;line-height:1.45}.recover p{margin:0 0 10px}.about{width:min(440px,calc(100% - 32px));padding:18px 20px;background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 10px 40px #00000080;line-height:1.5}.about::backdrop{background:#00000080}.about h2{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:16px}.about h3{margin:14px 0 4px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.about p{margin:0 0 6px}.about a{color:var(--accent)}.about-version,.about-legal{color:var(--muted);font-size:12px;font-weight:400}.about form{margin-top:14px}.account-btn .label{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account .stacked{display:flex;flex-direction:column;gap:4px;margin-top:10px}.account .stacked input{padding:8px 10px;background:var(--bg);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;font:inherit}.account .stacked input:focus{outline:2px solid var(--accent);outline-offset:1px}.account #account-submit{margin-top:8px}.account-links{display:flex;justify-content:space-between;margin-top:8px}.link-btn{padding:0;background:none;border:none;color:var(--accent);font:inherit;font-size:12px;cursor:pointer}.link-btn:hover{text-decoration:underline}.discord-btn{margin-top:10px;background:#5865f2;border-color:#5865f2;color:#fff}.discord-btn:hover:not(:disabled){background:#4752c4;border-color:#4752c4}.account-or{display:flex;align-items:center;gap:8px;margin:12px 0 0;color:var(--muted);font-size:12px}.account-or:before,.account-or:after{content:"";flex:1;border-top:1px solid var(--border)}.account-pro{margin:10px 0;padding:10px 12px;border:1px solid var(--border-strong);border-radius:8px;line-height:1.45}.account-pro.is-pro{border-color:var(--accent);background:var(--accent-soft)}.account-pro strong{display:block;margin-bottom:2px}.promo{position:sticky;bottom:-12px;margin:12px -12px -12px;padding:12px 14px 14px;background:var(--card);border-top:1px solid var(--border-strong);box-shadow:0 -8px 16px #00000040;line-height:1.45}.promo strong{display:block;padding-right:20px}.promo p{margin:4px 0 10px;color:var(--muted);font-size:12px}.promo .btn{text-align:center;text-decoration:none}.promo-hide{position:absolute;top:6px;right:8px;padding:2px 6px;background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}.promo-hide:hover{color:var(--text)}.beta-badge{padding:1px 6px;border:1px solid var(--accent);border-radius:999px;color:var(--accent);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:help}.about-beta{padding:8px 10px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:4px}
