: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:14px}*{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:16px;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:12px;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:13px}.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:320px;flex-shrink:0;padding:16px;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto}.tab-panel{display:flex;flex-direction:column;gap:16px}.card{padding:18px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.card h2{display:flex;align-items:center;gap:9px;margin:0 0 14px;font-size:15px;font-weight:600;color:var(--text)}.card h2:before{content:"";width:3px;height:15px;flex-shrink:0;background:var(--accent);border-radius:2px}.subhead{margin:18px 0 8px;font-size:13px;font-weight:500;color:#b8bfcc}.card>*+.btn.wide{margin-top:10px}.model-info{margin:0;line-height:1.5}.field{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px}.row{display:flex;gap:8px;margin-top:10px}.row .btn{flex:1}.hint{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.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{position:relative;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:13px}.legend{margin:0;padding:0;list-style:none;font-size:13px;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:13px}#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:13px;text-align:center;pointer-events:none}.modal-header strong{font-size:14px;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:12px;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:13px;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:13px;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:13px;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:13px;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:13px}.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:absolute;right:16px;bottom:16px;z-index:5;width:min(380px,calc(100% - 32px));box-sizing:border-box;padding:20px 22px 18px;background:linear-gradient(155deg,#123a52 0%,#1d2a38 45%,var(--card) 100%);border:2px solid var(--accent);border-radius:14px;box-shadow:0 0 0 4px var(--accent-soft),0 18px 44px #0000008c;line-height:1.45;animation:promo-in .45s cubic-bezier(.2,.9,.3,1.2),promo-pulse 6s ease-in-out 2s infinite}.promo[hidden]{display:none}@keyframes promo-in{0%{opacity:0;transform:translateY(24px) scale(.96)}}@keyframes promo-pulse{0%,80%,to{box-shadow:0 0 0 4px var(--accent-soft),0 18px 44px #0000008c}88%{box-shadow:0 0 0 10px #00c6ff38,0 18px 44px #0000008c}}@media(prefers-reduced-motion:reduce){.promo{animation:none}}#viewport:has(.layer-bar:not([hidden])) .promo{right:72px}.promo strong{display:block;padding-right:24px;font-size:18px;line-height:1.3}.promo p{margin:6px 0 10px;color:#c3cad6;font-size:14.5px}.promo-perks{margin:0 0 14px;padding:0;list-style:none;font-size:14.5px}.promo-perks li{display:flex;gap:8px;margin-top:4px}.promo-perks li:before{content:"✓";color:var(--accent);font-weight:700}.promo .btn{padding:11px 14px;font-size:15px;font-weight:600;text-align:center;text-decoration:none}.promo .promo-discord{margin:12px 0 0;color:var(--muted);font-size:13px}.promo-discord a{color:#8b95ff}.promo-hide{position:absolute;top:8px;right:10px;padding:2px 6px;background:none;border:none;color:var(--muted);font-size:18px;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:11px;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}#account-go-pro,.account-manage{margin-bottom:8px}.account-manage{display:block;box-sizing:border-box;text-align:center;text-decoration:none}.account-manage[hidden]{display:none}.about.cloud{width:min(720px,calc(100% - 32px))}.cloud-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.cloud-head h2{margin:0}.cloud-usage{display:flex;align-items:center;gap:10px;min-width:220px;color:var(--muted);font-size:13px}.cloud-usage[hidden],.cloud-browser[hidden],.cloud-empty[hidden]{display:none}.cloud-bar{flex:1;height:6px;background:var(--bg);border-radius:3px;overflow:hidden}.cloud-bar span{display:block;height:100%;background:var(--accent)}.cloud-browser{margin-top:12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg)}.cloud-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border)}.cloud-path{display:flex;flex:1;flex-wrap:wrap;align-items:center;gap:2px;min-width:0}.cloud-crumb{max-width:180px;padding:3px 6px;overflow:hidden;background:none;border:1px solid transparent;border-radius:6px;color:var(--accent);font:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.cloud-crumb:hover:not(:disabled){background:var(--card-hover)}.cloud-crumb:disabled{color:var(--text);font-weight:600;cursor:default}.cloud-sep{color:var(--muted)}.cloud-list{height:min(360px,50vh);margin:0;padding:4px;overflow-y:auto;list-style:none}.cloud-list li{display:flex;align-items:center;gap:6px;padding:2px 4px 2px 0;border:1px solid transparent;border-radius:6px}.cloud-list li:hover{background:var(--card)}.cloud-list li.dragging{opacity:.4}.cloud-list li.drop-target,.cloud-crumb.drop-target{border-color:var(--accent);background:var(--accent-soft)}.cloud-main{display:flex;flex:1;align-items:center;gap:10px;min-width:0;padding:6px 8px;background:none;border:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.cloud-main:disabled{cursor:default}.cloud-icon svg{display:block;width:20px;height:20px;fill:none;stroke:var(--muted);stroke-width:1.6;stroke-linejoin:round}.cloud-folder .cloud-icon svg{fill:var(--accent-soft);stroke:var(--accent)}.cloud-info{display:flex;flex-direction:column;min-width:0}.cloud-info strong{overflow:hidden;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.cloud-info small{color:var(--muted);font-size:12px}.cloud-current .cloud-info strong:after{content:" · open now";color:var(--accent);font-weight:400}.cloud-empty{margin:0;padding:0 14px 14px;color:var(--muted);font-size:13px;text-align:center}.cloud-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.cloud-actions .btn[hidden]{display:none}.cloud-move-list{max-height:50vh;margin:8px 0 0;padding:0;overflow-y:auto;list-style:none}.cloud-move-option{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background:none;border:none;border-radius:6px;color:var(--text);font:inherit;text-align:left;cursor:pointer}.cloud-move-option:hover:not(:disabled){background:var(--card-hover)}.cloud-move-option:disabled{color:var(--muted);cursor:default}.cloud-move-option svg{width:16px;height:16px;flex-shrink:0;fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.6}@media(max-width:600px){.cloud-list li{flex-wrap:wrap;padding-bottom:6px}.cloud-main{flex-basis:100%}}.cloud-name-input{width:100%;padding:3px 6px;background:var(--card);color:var(--text);border:1px solid var(--accent);border-radius:5px;font:inherit;font-weight:500}.cloud-name-input:focus{outline:none}.project-state{display:flex;align-items:baseline;gap:8px;min-width:0;margin-left:6px;padding-left:12px;border-left:1px solid var(--border-strong);font-size:14px;font-weight:400;letter-spacing:0}.project-state[hidden]{display:none}.project-name{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-saved{flex-shrink:0;color:var(--muted);font-size:13px}.project-state.unsaved .project-saved{color:#f0b54a}.project-state.unsaved .project-saved:before{content:"● "}.brand{min-width:0}@media(max-width:1000px){.project-saved{display:none}.project-name{max-width:120px}}.account-legal{margin-top:12px;font-size:12px}.account-legal a{color:var(--accent)}
