:root{color:#1e293b;font-synthesis:none;text-rendering:optimizelegibility;--ink:#1e293b;--muted:#64748b;--subtle:#94a3b8;--line:#e2e8f0;--surface:#fff;--surface-soft:#f8fafc;--rail:#f1f5f9;--accent:#0ea5e9;--accent-dark:#0284c7;--accent-soft:#e0f2fe;--success:#0d9488;--danger:#e11d48;--shadow:0 8px 28px #0f172a14;--radius:12px;--rail-width:56px;--panel-width:320px;--transition:.16s ease;background:#eef2f6;font-family:Segoe UI,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:#eef2f6;min-width:320px;min-height:100%;margin:0}button,input,select,textarea{font:inherit}button,label{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,label:focus-within{outline-offset:2px;outline:2px solid #0ea5e959}button:disabled{cursor:not-allowed;opacity:.55}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{background:radial-gradient(circle at 92% 0,#0ea5e912,#0000 28%),#eef2f6;grid-template-rows:auto 1fr;min-height:100vh;display:grid}.topbar{z-index:30;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.brand{color:inherit;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{color:#fff;background:linear-gradient(145deg,#38bdf8,#0284c7);border-radius:10px;place-items:center;width:34px;height:34px;font-weight:700;display:grid;box-shadow:0 6px 16px #0ea5e947}.brand strong{letter-spacing:-.02em;font-size:.95rem;display:block}.brand small{color:var(--muted);font-size:.72rem}.topbar-status{color:var(--muted);align-items:center;gap:8px;font-size:.78rem;display:flex}.status-dot{background:var(--success);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #0d94881f}.workspace{grid-template-columns:var(--rail-width) var(--panel-width) 1fr;height:calc(100vh - 57px);min-height:0;display:grid}.icon-rail{border-right:1px solid var(--line);background:var(--rail);flex-direction:column;align-items:center;gap:6px;padding:10px 0;display:flex}.rail-btn{width:42px;height:42px;color:var(--muted);cursor:pointer;transition:background var(--transition), color var(--transition), transform var(--transition);background:0 0;border:0;border-radius:12px;place-items:center;display:grid}.rail-btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.rail-btn:hover{color:var(--ink);background:#fff}.rail-btn.is-active{background:var(--accent-soft);color:var(--accent-dark);box-shadow:inset 0 0 0 1px #0ea5e940}.rail-btn:active{transform:scale(.96)}.side-panel{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;min-width:0;display:flex;overflow:hidden}.panel-header{border-bottom:1px solid var(--line);padding:16px 16px 10px}.panel-header .eyebrow{color:var(--accent-dark);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:.68rem;font-weight:700;display:block}.panel-header h1{letter-spacing:-.02em;margin:0;font-size:1.05rem}.panel-header p{color:var(--muted);margin:6px 0 0;font-size:.8rem;line-height:1.4}.panel-body{flex:1;padding:14px 16px 20px;overflow:auto}.panel-section[hidden]{display:none!important}.dropzone{border-radius:var(--radius);background:var(--surface-soft);color:var(--muted);text-align:center;cursor:pointer;transition:border-color var(--transition), background var(--transition), transform var(--transition);border:1.5px dashed #cbd5e1;justify-items:center;gap:6px;padding:22px 14px;display:grid}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.dropzone.has-file{border-style:solid;border-color:#bae6fd}.dropzone strong{color:var(--ink);font-size:.9rem}.dropzone span{font-size:.78rem}.upload-icon svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:28px;height:28px}.text-button,.tool-button,.ghost-button{border:1px solid var(--line);color:var(--ink);cursor:pointer;transition:background var(--transition), border-color var(--transition), color var(--transition);background:#fff;border-radius:10px}.text-button{width:100%;margin-top:10px;padding:8px 10px;font-size:.82rem}.text-button:hover,.tool-button:hover,.ghost-button:hover{background:var(--accent-soft);border-color:#bae6fd}.field-stack{gap:12px;display:grid}.field{gap:5px;font-size:.82rem;display:grid}.field>span:first-child{color:var(--ink);font-weight:600}.field small,.hint{color:var(--muted);font-size:.72rem;line-height:1.35}.field em{color:var(--danger);font-style:normal;font-weight:500}.input-unit{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:stretch;display:flex;overflow:hidden}.input-unit input,.field select,.field textarea{background:0 0;border:0;width:100%;padding:9px 10px}.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:10px}.input-unit b{border-left:1px solid var(--line);background:var(--surface-soft);min-width:36px;color:var(--muted);place-items:center;font-size:.72rem;font-weight:600;display:grid}.xy-row{grid-template-columns:1fr auto 1fr;align-items:end;gap:8px;display:grid}.lock-button{border:1px solid var(--line);width:40px;height:40px;color:var(--muted);cursor:pointer;background:#fff;border-radius:10px;place-items:center;margin-bottom:1px;display:grid}.lock-button.is-locked{background:var(--accent-soft);color:var(--accent-dark);border-color:#bae6fd}.lock-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.part-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);gap:10px;padding:12px;display:grid}.part-card-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.part-card-header strong{font-size:.86rem}.part-card-header span{color:var(--subtle);font-size:.7rem}.toggle-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.toggle{flex:none;width:42px;height:24px;position:relative}.toggle input{opacity:0;cursor:pointer;position:absolute;inset:0}.toggle i{width:100%;height:100%;transition:background var(--transition);background:#cbd5e1;border-radius:999px;display:block}.toggle i:after{content:"";width:18px;height:18px;transition:transform var(--transition);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0f172a33}.toggle input:checked+i{background:var(--accent)}.toggle input:checked+i:after{transform:translate(18px)}.optional-fields[data-disabled=true]{opacity:.45;pointer-events:none}.action-stack{gap:8px;margin-top:16px;display:grid}.primary-button,.secondary-button{cursor:pointer;min-height:42px;transition:transform var(--transition), background var(--transition), box-shadow var(--transition);border:0;border-radius:11px;justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex}.primary-button{color:#fff;background:linear-gradient(#38bdf8,#0ea5e9);box-shadow:0 8px 18px #0ea5e947}.primary-button:hover:not(:disabled){background:linear-gradient(#0ea5e9,#0284c7)}.primary-button:active:not(:disabled){transform:translateY(1px)}.primary-button svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.secondary-button{border:1px solid var(--line);color:var(--ink);background:#fff}.layer-list{gap:8px;display:grid}.layer-item{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.layer-item strong{font-size:.82rem}.eye-button{width:34px;height:34px;color:var(--muted);cursor:pointer;background:#fff;border:0;border-radius:8px;place-items:center;display:grid}.eye-button.is-off{opacity:.45;text-decoration:line-through}.eye-button svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.layer-item input[type=color]{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;width:34px;height:28px;padding:0}.download-list{gap:8px;display:grid}.download-list button{border:1px solid var(--line);text-align:left;cursor:pointer;width:100%;transition:border-color var(--transition), background var(--transition);background:#fff;border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.download-list button:hover:not(:disabled){background:var(--accent-soft);border-color:#bae6fd}.file-type{background:var(--surface-soft);width:42px;height:42px;color:var(--accent-dark);border-radius:10px;place-items:center;font-size:.68rem;font-weight:800;display:grid}.download-list strong{font-size:.86rem;display:block}.download-list small{color:var(--muted);font-size:.72rem}.preview-column{background:linear-gradient(#f8fafc 0%,#eef2f6 100%);grid-template-rows:auto 1fr auto;min-width:0;min-height:0;display:grid}.viewport-toolbar{border-bottom:1px solid var(--line);background:#fffc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.toolbar-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.montagem-control{border:1px solid var(--line);background:#fff;border-radius:18px;grid-template-columns:auto auto minmax(72px,1fr) auto minmax(72px,1fr) auto minmax(72px,1fr);align-items:center;gap:8px;min-width:min(520px,100%);padding:6px 10px;display:grid}.montagem-control span,.montagem-control label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.72rem;font-weight:700}.montagem-control input[type=range]{width:100%;min-width:0;accent-color:var(--accent)}.segmented{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px;display:inline-flex}.segmented button{min-width:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 12px;font-size:.78rem;font-weight:600}.segmented button.active{background:var(--accent-soft);color:var(--accent-dark)}.ghost-button{align-items:center;gap:6px;min-height:34px;padding:0 12px;font-size:.78rem;font-weight:600;display:inline-flex}.ghost-button.is-active{background:var(--accent-soft);color:var(--accent-dark);border-color:#bae6fd}.preview-stage{min-height:0;position:relative;overflow:hidden}.preview-surface{width:100%;height:100%;position:absolute;inset:0}#preview-2d{background:#fff}#preview-2d path{fill:#0ea5e92e;stroke:#0284c7;stroke-width:.6px}#preview-3d canvas{width:100%;height:100%;display:block}.empty-state{color:var(--muted);text-align:center;place-content:center;justify-items:center;gap:8px;padding:24px;display:grid;position:absolute;inset:0}.empty-state strong{color:var(--ink);font-size:1rem}.empty-state p{max-width:280px;margin:0;font-size:.84rem;line-height:1.45}.empty-art svg{width:120px;height:90px}.empty-art .art-back{fill:#e2e8f0}.empty-art .art-front{fill:none;stroke:#94a3b8;stroke-width:2px}.empty-art .art-accent{fill:none;stroke:var(--accent);stroke-width:2.2px}.processing-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:5;background:#f8fafcd1;place-content:center;justify-items:center;gap:8px;display:grid;position:absolute;inset:0}.progress-orbit{border:3px solid #e2e8f0;border-top-color:var(--accent);border-radius:50%;width:42px;height:42px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.progress-track{background:#e2e8f0;border-radius:999px;width:min(220px,70vw);height:6px;overflow:hidden}.progress-track i{background:linear-gradient(90deg,#38bdf8,#0284c7);width:0;height:100%;transition:width .12s linear;display:block}.dims-footer{border-top:1px solid var(--line);background:#ffffffeb;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:8px 14px;font-size:.75rem;display:flex}.dims-list{color:var(--muted);flex-wrap:wrap;gap:10px 14px;display:flex}.dims-list strong{color:var(--ink);font-variant-numeric:tabular-nums}.messages-inline{color:var(--muted);align-items:center;gap:8px;display:flex}.message-count{background:var(--surface-soft);border-radius:999px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:.7rem;font-weight:700;display:inline-grid}.message-count.has-items{color:var(--danger);background:#ffe4e6}.messages-drawer{z-index:8;border:1px solid var(--line);width:min(340px,100% - 24px);max-height:40%;box-shadow:var(--shadow);background:#fff;border-radius:12px;padding:12px;position:absolute;bottom:48px;right:12px;overflow:auto}.message-list{gap:8px;display:grid}.message-item,.success-message,.no-messages{background:var(--surface-soft);border-radius:10px;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:10px;font-size:.8rem;display:grid}.message-item.error{background:#fff1f2}.message-item strong,.success-message strong{margin-bottom:2px;display:block}.message-item p,.success-message p,.no-messages{color:var(--muted);margin:0;line-height:1.35}.toast{z-index:50;color:#fff;box-shadow:var(--shadow);background:#0f172a;border-radius:999px;padding:10px 16px;font-size:.84rem;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.toast[data-tone=error]{background:#be123c}.coming-soon{border:1px dashed var(--line);background:var(--surface-soft);color:var(--muted);border-radius:10px;padding:12px;font-size:.8rem;line-height:1.4}.print-options{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;margin-bottom:12px;padding:8px 12px}.print-options summary{cursor:pointer;font-size:.82rem;font-weight:600}@media (max-width:960px){.workspace{grid-template-rows:auto auto 1fr;grid-template-columns:1fr;height:auto;min-height:calc(100vh - 57px)}.icon-rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;justify-content:center;padding:8px}.side-panel{border-right:0;border-bottom:1px solid var(--line);max-height:42vh}.preview-column{min-height:55vh}.preview-stage{min-height:360px}}@media (max-width:560px){.brand small,.topbar-status span:last-child{display:none}.xy-row{grid-template-columns:1fr}.lock-button,.montagem-control{width:100%}}
