*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d1117;--surface:#161b22;--border:#30363d;--accent:#58a6ff;--accent-hover:#79b8ff;--text:#c9d1d9;--muted:#8b949e;--danger:#f85149;--success:#3fb950}body,html{height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:13px;line-height:1.5}.app{display:flex;height:100vh}.sidebar{width:272px;min-width:272px;background:var(--surface);border-right:1px solid var(--border);padding:16px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}.sidebar>*{flex-shrink:0}.viewport{flex:1 1;position:relative;overflow:hidden}.logo{font-size:18px;font-weight:700;color:var(--accent);letter-spacing:-.4px}.logo,.uploader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.uploader{border:2px dashed var(--border);border-radius:8px;padding:18px 12px;text-align:center;cursor:pointer;color:var(--muted);transition:border-color .15s,color .15s}.uploader:hover{border-color:var(--accent);color:var(--text)}.uploader p{line-height:1.7}.uploader small,.uploader-label{font-size:11px;color:var(--muted)}.uploader-label{font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:0 0 4px}.back-face-toggle{margin:6px 0}.texture-mode-toggle{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-bottom:6px}.texture-mode-toggle button{flex:1 1;padding:5px 0;background:transparent;border:none;color:var(--muted);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.texture-mode-toggle button+button{border-left:1px solid var(--border)}.texture-mode-toggle button.active{background:var(--accent);color:#000}.texture-mode-toggle button:not(.active):hover{background:hsla(0,0%,100%,.06);color:var(--text)}.face-mode-select{display:flex;flex-direction:column;gap:3px;font-size:.72rem;font-weight:600;letter-spacing:.04em;color:#aaa;margin-bottom:6px}.face-mode-select select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:5px 8px;font-size:12px;cursor:pointer}.face-mode-select select:focus{outline:1px solid var(--accent)}.settings-panel h3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin-bottom:10px}.settings-panel label{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;color:var(--text);font-size:12px}.settings-panel .val{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.settings-panel select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);padding:5px 8px;font-size:12px;cursor:pointer}.settings-panel select:focus{outline:1px solid var(--accent)}.settings-panel input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.settings-panel input[type=color]{width:100%;height:30px;padding:2px 4px;background:var(--bg);border:1px solid var(--border);border-radius:5px;cursor:pointer}.settings-divider{border:none;border-top:1px solid var(--border);margin:4px 0}.slider-field{display:flex;flex-direction:column;gap:2px}.slider-header{display:flex;justify-content:space-between;align-items:center;gap:6px}.slider-label,.val-input{font-size:12px;color:var(--text)}.val-input{width:58px;padding:2px 4px;text-align:right;background:var(--bg);border:1px solid var(--border);border-radius:4px;-moz-appearance:textfield}.val-input::-webkit-inner-spin-button,.val-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.val-input:focus{outline:none;border-color:#6c4fc0}.slider-minmax{display:flex;justify-content:space-between;font-size:.68rem;color:#666;padding:0 2px}.settings-section{border:1px solid var(--border);border-radius:6px;margin-bottom:6px;overflow:hidden}.settings-section-title{display:flex;align-items:center;gap:6px;padding:6px 8px;font-size:.75rem;font-weight:700;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:hsla(0,0%,100%,.04);list-style:none}.settings-section-title::-webkit-details-marker{display:none}.settings-section-title:before{content:"▶";font-size:.6rem;opacity:.6;transition:transform .15s}details[open]>.settings-section-title:before{transform:rotate(90deg)}.settings-section-title:hover{background:hsla(0,0%,100%,.08)}.settings-section-body{display:flex;flex-direction:column;gap:6px;padding:8px 8px 10px;border-top:1px solid var(--border)}.label-row{flex-direction:row!important;align-items:center;gap:8px!important;font-weight:600}.label-row input[type=checkbox]{width:auto;accent-color:var(--accent);cursor:pointer}.status{font-size:11px;color:var(--muted);padding:8px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);min-height:36px;word-break:break-word;display:flex;align-items:center;gap:8px}.status.error{color:var(--danger)}.status.ok{color:var(--success)}.spinner{flex-shrink:0;width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.export-buttons{display:flex;gap:8px;margin-top:auto;padding-top:4px}.export-col{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:3px}.export-col button{width:100%}.export-size{font-size:10px;color:var(--muted)}.export-hint-link{font-size:10px;color:var(--accent);text-decoration:none;opacity:.8}.export-hint-link:hover{opacity:1;text-decoration:underline}.export-buttons button{padding:8px 10px;background:var(--accent);color:#0d1117;border:none;border-radius:6px;font-weight:700;font-size:12px;cursor:pointer;transition:background .15s}.export-buttons button:disabled{background:var(--border);color:var(--muted);cursor:not-allowed}.export-buttons button:not(:disabled):hover{background:var(--accent-hover)}.stats-panel{border:1px solid var(--border);border-radius:7px;padding:10px 12px;display:flex;flex-direction:column;gap:10px}.stats-panel h3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}.stats-grid{display:grid;grid-template-columns:1fr auto;grid-gap:3px 12px;gap:3px 12px;font-size:12px}.stat-label{color:var(--muted)}.stat-value{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.poly-presets{display:flex;flex-direction:column;gap:6px}.preset-label{font-size:11px;color:var(--muted)}.preset-active-hint{color:var(--accent);font-style:italic}.preset-buttons{display:flex;gap:5px}.preset-btn{flex:1 1;padding:5px 4px;font-size:11px;font-weight:600;background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:5px;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.preset-btn:hover:not(:disabled){color:var(--text);border-color:var(--muted)}.preset-btn.active{background:var(--accent);color:#0d1117;border-color:var(--accent)}.preset-btn:disabled{opacity:.4;cursor:not-allowed}.debug-toggle{background:none;border:1px solid var(--border);border-radius:5px;color:var(--muted);font-size:11px;padding:5px 8px;cursor:pointer;text-align:left;transition:color .15s,border-color .15s}.debug-toggle:hover{color:var(--text);border-color:var(--muted)}.contour-debug{position:absolute;top:12px;left:12px;max-width:40%;max-height:40%;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--surface);box-shadow:0 4px 16px rgba(0,0,0,.5)}.contour-debug canvas{display:block;width:100%;height:auto}.contour-debug-label{display:block;font-size:10px;color:var(--muted);padding:3px 6px;text-align:right}.viewport-hint{position:absolute;bottom:12px;right:14px;font-size:10px;color:var(--muted);pointer-events:none;opacity:.6}.viewport-controls{position:absolute;top:10px;right:12px;z-index:10;display:flex;gap:6px;align-items:center}.reset-camera-btn{padding:.3rem .7rem;background:rgba(20,20,40,.85);color:#aab;border:1px solid #3a3a5a;border-radius:5px;font-size:.72rem;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.reset-camera-btn:hover{background:rgba(40,40,80,.95);color:#dde}.walk-btn{padding:.3rem .8rem;background:rgba(20,40,20,.85);color:#8d8;border:1px solid #3a5a3a;border-radius:5px;font-size:.72rem;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.walk-btn:hover{background:rgba(30,60,30,.95);color:#aea}.walk-btn.active{background:rgba(20,80,20,.92);color:#4f4;border-color:#4a8a4a}.rigger-open-btn{width:100%;padding:.45rem;background:#1e1e3a;color:#c0b0ff;border:1px solid #4a3a8a;border-radius:5px;font-size:.8rem;font-weight:600;cursor:pointer;text-align:center}.rigger-open-btn:hover:not(:disabled){background:#2a2a55}.rigger-open-btn:disabled{opacity:.4;cursor:default}.readjust-btn{padding:.35rem .6rem;background:#1a1a3a;color:#99c;border:1px solid #3a3a6a;border-radius:4px;font-size:.75rem;cursor:pointer;text-align:left}.readjust-btn:hover{background:#252550;color:#bbf}.section-hint{font-size:10px;font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0}.map-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 0;border-bottom:1px solid var(--border)}.map-row:last-child{border-bottom:none}.map-row-info{display:flex;flex-direction:column;gap:1px;min-width:0}.map-row-label{font-size:11px;font-weight:600;color:var(--text)}.map-row-file{font-size:10px;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.map-row-hint{font-size:10px;color:var(--muted)}.map-row-actions{display:flex;gap:4px;flex-shrink:0}.map-btn{width:24px;height:24px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:border-color .15s}.map-btn:hover:not(:disabled){border-color:var(--accent)}.map-btn:disabled{opacity:.4;cursor:not-allowed}.map-btn-clear{color:var(--danger);border-color:var(--danger);opacity:.7}.map-btn-clear:hover:not(:disabled){opacity:1}.rig-button{width:100%;margin-top:.5rem;padding:.5rem;background:#3d2b6e;color:#fff;border:1px solid #6c4fc0;border-radius:4px;cursor:pointer;font-size:.85rem}.rig-button:hover:not(:disabled){background:#5a3fa8}.rig-button:disabled{opacity:.4;cursor:not-allowed}.atlas-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:200}.atlas-modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:min(860px,96vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}.atlas-header{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.atlas-header h3{flex:1 1;margin:0;font-size:1rem;font-weight:600}.atlas-grid-controls{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--text-muted,#aaa)}.atlas-grid-input-group{display:flex;align-items:center;gap:4px;background:var(--bg,#1a1a1a);border:1px solid var(--border);border-radius:6px;padding:2px 8px}.atlas-grid-input{width:36px;background:transparent;border:none;color:var(--text);font-size:.85rem;text-align:center;outline:none;padding:2px 0;-moz-appearance:textfield}.atlas-grid-input::-webkit-inner-spin-button,.atlas-grid-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.atlas-grid-input:focus{color:var(--accent)}.atlas-grid-sep{color:var(--text-muted,#888);font-size:.9rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.atlas-grid-count{font-size:.75rem;color:var(--text-muted,#888);white-space:nowrap}.atlas-close-btn{background:transparent;border:none;color:var(--text);font-size:1rem;cursor:pointer;opacity:.5;padding:4px 8px;border-radius:4px}.atlas-close-btn:hover{opacity:1;background:hsla(0,0%,100%,.08)}.atlas-body{display:flex;flex:1 1;overflow:hidden;gap:0}.atlas-tiles-panel{flex:1 1;display:flex;flex-direction:column;padding:14px;gap:10px;border-right:1px solid var(--border);overflow-y:auto}.atlas-hint{font-size:.78rem;color:var(--text-muted,#aaa);margin:0}.atlas-tiles{display:flex;gap:8px;flex-wrap:wrap}.atlas-tiles.atlas-tiles-h{flex-direction:row}.atlas-tiles.atlas-tiles-v{flex-direction:column;align-items:flex-start}.atlas-tiles-grid{display:grid;grid-gap:6px;gap:6px;width:100%}.atlas-tile{position:relative;cursor:-webkit-grab;cursor:grab;border:2px solid var(--border);border-radius:6px;overflow:hidden;transition:border-color .15s,transform .1s;flex-shrink:0}.atlas-tile:hover{border-color:var(--accent)}.atlas-tile[data-active=true]{border-color:var(--accent);opacity:.6;transform:scale(.97)}.atlas-tile img{display:block;width:100%;aspect-ratio:auto;max-height:140px;object-fit:contain}.atlas-tile-idx{position:absolute;top:4px;left:6px;background:rgba(0,0,0,.55);color:#fff;font-size:.7rem;padding:1px 5px;border-radius:3px;pointer-events:none}.atlas-auto-btn{align-self:flex-start;background:transparent;border:1px solid var(--border);color:var(--text);border-radius:5px;padding:5px 10px;font-size:.78rem;cursor:pointer;transition:background .15s}.atlas-auto-btn:hover{background:hsla(0,0%,100%,.07)}.atlas-faces-panel{width:200px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding:14px;overflow-y:auto}.atlas-face-slot{border:2px dashed var(--border);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:4px;min-height:72px;transition:border-color .15s,background .15s}.atlas-face-slot:hover{border-color:var(--accent)}.atlas-face-slot.assigned{border-style:solid;border-color:var(--accent)}.atlas-face-label{font-size:.78rem;font-weight:600}.atlas-face-preview{position:relative;flex:1 1;display:flex;align-items:center;justify-content:center}.atlas-face-preview img{max-width:100%;max-height:56px;border-radius:4px;object-fit:contain}.atlas-face-clear{position:absolute;top:-2px;right:-2px;background:#e55;color:#fff;border:none;border-radius:50%;width:18px;height:18px;font-size:.75rem;line-height:18px;text-align:center;cursor:pointer;padding:0}.atlas-drop-zone{flex:1 1;display:flex;align-items:center;justify-content:center;font-size:.72rem;color:var(--text-muted,#888)}.atlas-footer{display:flex;gap:10px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--border);flex-shrink:0}.atlas-cancel-btn{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:6px;padding:7px 18px;cursor:pointer;font-size:.85rem}.atlas-cancel-btn:hover{background:hsla(0,0%,100%,.06)}.atlas-confirm-btn{background:var(--accent);border:none;color:#fff;border-radius:6px;padding:7px 20px;cursor:pointer;font-size:.85rem;font-weight:600;transition:opacity .15s}.atlas-confirm-btn:disabled{opacity:.4;cursor:not-allowed}.atlas-confirm-btn:not(:disabled):hover{opacity:.85}.rigger-overlay{position:fixed;inset:0;background:rgba(0,0,0,.78);z-index:1000;display:flex;align-items:center;justify-content:center}.rigger-modal{background:#1a1a2c;border:1px solid #3d3d5c;border-radius:10px;width:980px;max-width:97vw;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.rigger-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1.1rem;border-bottom:1px solid #3d3d5c;font-weight:700;letter-spacing:.12em;font-size:.82rem;color:#ccc;background:#161625}.rigger-close{background:none;border:none;color:#888;font-size:1.1rem;cursor:pointer;line-height:1;padding:2px 6px}.rigger-close:hover{color:#fff}.rigger-body{display:flex;flex:1 1;overflow:hidden;min-height:0}.rigger-guide{width:180px;flex-shrink:0;background:#111120;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem}.rigger-guide-caption{font-size:.62rem;font-weight:700;letter-spacing:.14em;color:#666}.rigger-silhouette-svg{width:100%;height:100%;max-height:60vh}.rigger-divider-v{width:1px;background:#3a3a5a;flex-shrink:0}.rigger-canvas-wrap{flex:1 1;display:flex;align-items:center;justify-content:center;background:#0d0d1e;padding:1rem;min-width:0}.rigger-sprite-container{position:relative;display:inline-block;max-width:100%;max-height:100%}.rigger-sprite-container img{display:block;max-width:100%;max-height:58vh;image-rendering:pixelated}.rigger-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;touch-action:none}.rigger-sidebar{width:210px;flex-shrink:0;background:#20203a;border-left:1px solid #3d3d5c;display:flex;flex-direction:column;padding:1rem;gap:.5rem;overflow-y:auto}.rigger-sidebar h4{margin:0 0 .25rem;font-size:.88rem;font-weight:700;color:#ddd}.rigger-hint{margin:0;font-size:.72rem;color:#888;line-height:1.45}.rigger-joint-list{gap:.5rem}.joint-entry,.rigger-joint-list{display:flex;flex-direction:column}.joint-entry{gap:.15rem}.joint-row{display:flex;align-items:center;justify-content:space-between;font-size:.68rem;font-weight:700;letter-spacing:.07em;color:#aaa}.joint-hint{margin:0;font-size:.64rem;font-weight:400;color:#777;line-height:1.4}.joint-label{flex:1 1}.joint-circles{display:flex;gap:5px;align-items:center}.joint-circle{width:16px;height:16px}.joint-circle,.joint-dot{border-radius:50%;border:2px solid}.joint-dot{width:12px;height:12px;flex-shrink:0}.rigger-divider{height:1px;background:#3d3d5c;margin:.3rem 0}.rigger-symmetry{display:flex;align-items:center;gap:.4rem;font-size:.78rem;cursor:pointer;color:#ccc}.rigger-symmetry input{accent-color:#e05a00}.rigger-actions{margin-top:auto;display:flex;flex-direction:column;gap:.5rem;padding-top:1rem}.rigger-build-btn{padding:.65rem;background:#e05a00;color:#fff;border:none;border-radius:5px;font-weight:700;cursor:pointer;font-size:.85rem;letter-spacing:.03em}.rigger-build-btn:hover{background:#ff6a10}.rigger-reset-btn{padding:.4rem;background:transparent;color:#888;border:1px solid #3d3d5c;border-radius:4px;cursor:pointer;font-size:.8rem}.face-editor-panel{width:220px;min-width:220px;background:#1a1a2e;border-left:1px solid #2a2a4a;display:flex;flex-direction:column;overflow-y:auto;padding:.75rem;gap:.5rem}.fe-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem}.fe-header h3{font-size:.85rem;font-weight:700;color:#c0b0ff;margin:0}.fe-reset-all-btn{font-size:.7rem;padding:.2rem .5rem;background:#3a1a1a;color:#ff8080;border:1px solid #6a2a2a;border-radius:4px;cursor:pointer}.fe-reset-all-btn:hover{background:#5a2a2a}.fe-hint{font-size:.68rem;color:#666;line-height:1.4;margin:0 0 .25rem}.fe-cards{gap:.5rem}.fe-card,.fe-cards{display:flex;flex-direction:column}.fe-card{background:#12122a;border:1px solid #2a2a4a;border-radius:6px;padding:.5rem;gap:.4rem}.fe-card.fe-card-active{border-color:#6060c0}.fe-card-header{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;font-weight:600;color:#ccc}.fe-reset-btn{font-size:.8rem;background:none;border:none;color:#888;cursor:pointer;padding:0 2px;line-height:1}.fe-reset-btn:hover{color:#f88}.fe-thumb{width:100%;height:60px;object-fit:contain;background:#0a0a1a;border-radius:3px}.fe-controls{display:flex;gap:.4rem;align-items:flex-start}.fe-pad{position:relative;background:#0d0d22;border:1px solid #3a3a5a;border-radius:4px;cursor:crosshair;flex-shrink:0;touch-action:none}.fe-pad-h,.fe-pad-v{position:absolute;background:#335;pointer-events:none}.fe-pad-h{left:0;right:0;top:50%;height:1px;transform:translateY(-50%)}.fe-pad-v{top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%)}.fe-pad-dot{width:12px;height:12px;border-radius:50%;background:#8080ff;border:2px solid #fff;box-shadow:0 0 4px rgba(128,128,255,.8)}.fe-pad-dot,.fe-pad-label{position:absolute;pointer-events:none}.fe-pad-label{font-size:.55rem;color:#556;font-weight:700}.fe-pad-right{right:3px;top:50%;transform:translateY(-50%)}.fe-pad-top{top:2px;left:50%;transform:translateX(-50%)}.fe-depth{flex:1 1;display:flex;flex-direction:column;gap:2px}.fe-depth-label{font-size:.6rem;color:#667;white-space:nowrap}.fe-depth input[type=range]{width:100%;accent-color:#8080ff;height:14px}.fe-depth-val{font-size:.65rem;color:#99a;font-family:monospace}.fe-weld-toggle{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#c0b0ff;cursor:pointer;padding:.3rem .4rem;background:#1e1e3a;border:1px solid #3a3a6a;border-radius:5px}.fe-weld-toggle input[type=checkbox]{accent-color:#8080ff;width:14px;height:14px;flex-shrink:0}.fe-num-row{display:flex;flex-direction:column;gap:3px}.fe-axis-row{display:flex;align-items:center;gap:.3rem}.fe-axis-label{font-size:.62rem;color:#778;width:52px;flex-shrink:0;white-space:nowrap}.fe-axis-input{flex:1 1;background:#0d0d22;border:1px solid #3a3a5a;border-radius:3px;color:#ccd;font-size:.68rem;font-family:monospace;padding:2px 4px;min-width:0;text-align:right}.fe-axis-input:focus{outline:none;border-color:#6060c0}.fe-axis-input:disabled{opacity:.4}.rigger-reset-btn:hover{color:#fff;border-color:#666}.slicer-open-btn{width:100%;margin-top:.5rem;padding:.45rem;background:#1a2a1a;color:#8ecb8e;border:1px solid #3a6a3a;border-radius:5px;font-size:.8rem;font-weight:600;cursor:pointer;text-align:center}.slicer-open-btn:hover{background:#232}.slicer-modal{background:#13131f;border:1px solid #3d3d5c;border-radius:12px;width:920px;max-width:97vw;height:88vh;max-height:88vh;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.6)}.slicer-body,.slicer-modal{display:flex;flex-direction:column}.slicer-body{padding:1rem 1.1rem 1.1rem;gap:.75rem;overflow-y:auto}.slicer-preview{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default;border:1px solid #2e2e4a;border-radius:8px;overflow:hidden;background:repeating-conic-gradient(#191926 0 25%,#111119 25% 50%) 0 0 /20px 20px;flex-shrink:0}.slicer-canvas{display:block;width:100%;height:auto;max-height:420px;object-fit:contain}.slicer-row{position:absolute;left:0;right:0;display:flex;align-items:stretch;z-index:2;cursor:pointer;box-sizing:border-box}.slicer-row-sel{outline:2px solid rgba(100,140,255,.6);outline-offset:-2px;z-index:3}.slicer-zone{flex:none;height:100%;display:flex;align-items:center;justify-content:center;border:1px solid;box-sizing:border-box;transition:background .12s;position:relative}.slicer-zone-label{font-size:.65rem;font-weight:700;letter-spacing:.05em;text-shadow:0 1px 4px rgba(0,0,0,.95);background:rgba(0,0,0,.4);padding:1px 6px;border-radius:3px;pointer-events:none}.slicer-hline{position:absolute;left:0;right:0;height:8px;margin-top:-4px;cursor:ns-resize;z-index:10;display:flex;align-items:center;justify-content:center;border-top:2px solid rgba(255,255,220,.75);background:rgba(255,255,200,.06)}.slicer-hline:hover{background:rgba(255,255,200,.14)}.slicer-hpill{gap:4px;background:rgba(10,10,26,.88);border:1px solid rgba(255,255,200,.3);border-radius:20px;padding:2px 6px 2px 9px;font-size:.6rem;font-weight:700;color:#ffe;letter-spacing:.04em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.slicer-hpill,.slicer-vline{display:flex;align-items:center}.slicer-vline{position:absolute;top:0;bottom:0;width:8px;margin-left:-4px;cursor:ew-resize;z-index:8;justify-content:center;border-left:2px solid rgba(180,220,255,.75);background:rgba(180,220,255,.06)}.slicer-vline:hover{background:rgba(180,220,255,.14)}.slicer-vline-sym{border-left-color:rgba(120,200,255,.9)}.slicer-vline-sym:hover{background:rgba(120,200,255,.14)}.slicer-vpill{display:flex;align-items:center;gap:3px;background:rgba(10,10,26,.88);border:1px solid rgba(180,220,255,.3);border-radius:20px;padding:3px 5px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.slicer-vpill-sym{font-size:.6rem;color:rgba(120,200,255,.85);line-height:1}.slicer-line-x{background:none;border:none;color:hsla(0,100%,74%,.8);cursor:pointer;font-size:.8rem;line-height:1;padding:0 2px;border-radius:3px;pointer-events:auto}.slicer-line-x:hover{color:#f66;background:rgba(255,80,80,.15)}.slicer-row-addv{position:absolute;top:50%;right:6px;transform:translateY(-50%);font-size:.62rem;font-weight:700;padding:3px 9px;background:rgba(20,20,60,.9);border:1px solid rgba(100,140,255,.55);border-radius:12px;color:#aac8ff;cursor:pointer;z-index:12;pointer-events:auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap}.slicer-row-addv:hover:not(:disabled){background:rgba(40,40,100,.95);border-color:#6090ff}.slicer-row-addv:disabled{opacity:.35;cursor:default}.slicer-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.slicer-add-btns{display:flex;gap:.4rem}.slicer-add-btn{font-size:.76rem;padding:5px 14px;background:#1e1e38;border:1px solid #4a4a7a;border-radius:6px;color:#aac;cursor:pointer;transition:background .12s}.slicer-add-btn:hover:not(:disabled){background:#28285a;color:#cce}.slicer-add-btn:disabled{opacity:.35;cursor:default}.slicer-sym-label{display:flex;align-items:center;gap:5px;font-size:.74rem;color:#9ac;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:4px 8px;border-radius:6px;border:1px solid transparent;transition:border-color .12s}.slicer-sym-label:hover{border-color:#4a4a7a;background:#1a1a35}.slicer-sym-label input{accent-color:#6090ff;cursor:pointer}.slicer-actions{display:flex;gap:.5rem;align-items:center}.slicer-cancel-btn{font-size:.78rem;padding:6px 14px;background:transparent;border:1px solid #3d3d5c;border-radius:6px;color:#888;cursor:pointer}.slicer-cancel-btn:hover{background:#1e1e38;color:#aac}.slicer-apply-btn{font-size:.82rem;font-weight:700;padding:7px 20px;background:#1a3a1a;border:1px solid #4a8a4a;border-radius:6px;color:#8ecb8e;cursor:pointer;transition:background .12s}.slicer-apply-btn:hover{background:#244a24}.slicer-back-btn{font-size:.73rem;padding:3px 10px;background:transparent;border:1px solid #4a4a6a;border-radius:5px;color:#9ac;cursor:pointer}.slicer-back-btn:hover{background:#1e1e3a}.slicer-config-body{display:flex;flex:1 1;min-height:0;overflow:hidden}.slicer-config-preview{width:300px;min-width:300px;padding:1rem;border-right:1px solid #2a2a44;overflow-y:auto;display:flex;align-items:flex-start;justify-content:center;background:#0f0f1c}.slicer-config-img-wrap{position:relative;width:100%}.slicer-config-canvas{display:block;width:100%;height:auto;border-radius:6px;background:repeating-conic-gradient(#191926 0 25%,#111119 25% 50%) 0 0 /14px 14px}.slicer-config-right{flex:1 1;display:flex;min-height:0;overflow:hidden}.slicer-piece-list{flex:1 1;overflow-y:auto;padding:.8rem 1rem;display:flex;flex-direction:column;gap:.75rem;border-right:1px solid #2a2a44}.slicer-piece-row-group{display:flex;flex-direction:column;gap:.4rem}.slicer-piece-row-header{font-size:.63rem;font-weight:800;letter-spacing:.12em;padding:3px 8px;border-left:3px solid;background:hsla(0,0%,100%,.03);border-radius:0 4px 4px 0;text-transform:uppercase}.slicer-piece-item{display:flex;align-items:center;gap:.5rem;padding:2px 4px;border-radius:5px}.slicer-piece-item:hover{background:hsla(0,0%,100%,.03)}.slicer-piece-prefix{font-size:.72rem;color:#68b;font-weight:700;min-width:20px;text-align:center;flex-shrink:0}.slicer-piece-input{flex:1 1;background:#0e0e1c;border:1px solid #35355a;border-radius:5px;color:#ccd;font-size:.78rem;padding:5px 9px;outline:none;min-width:0;transition:border-color .12s}.slicer-piece-input:focus{border-color:#5070cc;background:#14142a}.slicer-piece-parent{background:#0e0e1c;border:1px solid #35355a;border-radius:5px;color:#78a;font-size:.72rem;padding:5px 7px;cursor:pointer;flex-shrink:0;width:130px}.slicer-piece-parent:focus{outline:none;border-color:#5070cc}.slicer-hierarchy{width:200px;min-width:200px;overflow-y:auto;padding:.8rem .75rem;background:#0f0f1c}.slicer-hierarchy-title{font-size:.6rem;font-weight:800;letter-spacing:.12em;color:#445;margin-bottom:.5rem;text-transform:uppercase}.slicer-tree{display:flex;flex-direction:column;gap:2px}.slicer-tree-node{display:flex;align-items:center;gap:5px;padding:2px 4px;border-radius:4px}.slicer-tree-node:hover{background:hsla(0,0%,100%,.04)}.slicer-tree-icon{font-size:.58rem;color:#445;min-width:10px;flex-shrink:0}.slicer-tree-name{font-size:.72rem;color:#89b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slicer-tree-name-root{color:#aabbd4;font-weight:600}.slicer-config-footer{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.8rem 1.1rem;border-top:1px solid #2a2a44;background:#0f0f1c}.slicer-config-footer-info{font-size:.72rem;color:#556}.toast-notification{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:rgba(15,15,30,.95);color:#ccd;padding:8px 20px;border-radius:8px;border:1px solid #4a4a7a;font-size:.84rem;z-index:9999;pointer-events:none;white-space:nowrap;animation:toast-in .18s ease}@keyframes toast-in{0%{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.workflow-guide{margin-bottom:8px;border:1px solid var(--border);border-radius:6px;overflow:hidden;font-size:.76rem}.workflow-guide summary{padding:6px 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:hsla(0,0%,100%,.03);color:var(--muted);list-style:none;display:flex;align-items:center;gap:6px}.workflow-guide summary::-webkit-details-marker{display:none}.workflow-guide summary:hover{color:var(--text);background:hsla(0,0%,100%,.06)}.workflow-steps{padding:8px 14px 10px 26px;color:var(--text);line-height:1.7;border-top:1px solid var(--border);margin:0}.workflow-steps li{margin-bottom:2px}.infotip-btn,.workflow-steps strong{color:var(--accent)}.infotip-btn{background:rgba(88,166,255,.08);border:1px solid rgba(88,166,255,.25);border-radius:50%;cursor:pointer;font-size:11px!important;font-style:italic;font-weight:700;font-family:Georgia,serif;line-height:1;width:16px;height:16px;min-width:16px;min-height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0;opacity:.7;transition:opacity .12s,background .12s,border-color .12s;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0}.infotip-btn-open,.infotip-btn:hover{opacity:1;background:rgba(88,166,255,.18);border-color:rgba(88,166,255,.6)}.infotip-pop{background:#1c2128;border:1px solid rgba(88,166,255,.3);border-radius:7px;color:var(--text);font-size:13px;line-height:1.55;padding:9px 13px;box-shadow:0 6px 24px rgba(0,0,0,.65);white-space:normal;pointer-events:none}.painter-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;z-index:1000}.painter-modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;width:960px;max-width:98vw;height:90vh;overflow:hidden;box-shadow:0 8px 40px rgba(0,0,0,.6)}.painter-header{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.painter-title{font-weight:700;font-size:.95rem;color:var(--text)}.painter-header-controls{display:flex;align-items:center;gap:14px;flex:1 1}.painter-check{display:flex;align-items:center;gap:5px;font-size:.82rem;cursor:pointer;color:var(--muted)}.painter-hint{font-size:.75rem;color:var(--muted);margin-left:auto}.painter-body{display:flex;flex:1 1;overflow:hidden}.painter-canvas-wrap{flex:1 1;position:relative;background:#0a0a0a;background-image:linear-gradient(45deg,#161616 25%,transparent 0),linear-gradient(-45deg,#161616 25%,transparent 0),linear-gradient(45deg,transparent 75%,#161616 0),linear-gradient(-45deg,transparent 75%,#161616 0);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;overflow:auto;display:flex;align-items:center;justify-content:center;padding:20px}.painter-canvas-inner{position:relative;flex-shrink:0;box-shadow:0 0 0 1px hsla(0,0%,100%,.08),0 4px 20px rgba(0,0,0,.6)}.painter-canvas-base,.painter-canvas-overlay{position:absolute;top:0;left:0;width:100%;height:100%;image-rendering:pixelated;display:block}.painter-canvas-overlay{touch-action:none}.painter-zoom-bar{position:absolute;bottom:10px;left:12px;display:flex;align-items:center;gap:2px;background:rgba(0,0,0,.7);border:1px solid var(--border);border-radius:6px;padding:3px 4px;pointer-events:all}.painter-zoom-btn{background:none;border:none;color:var(--text);cursor:pointer;font-size:1rem;font-weight:700;width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1}.painter-zoom-btn:hover{background:hsla(0,0%,100%,.1)}.painter-zoom-pct{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.74rem;min-width:36px;text-align:center;padding:0 3px}.painter-zoom-pct:hover{color:var(--text)}.painter-canvas-hint{position:absolute;bottom:10px;right:12px;display:flex;align-items:center;gap:8px;font-size:.78rem;background:rgba(0,0,0,.7);border:1px solid var(--border);padding:3px 10px;border-radius:6px;pointer-events:none;white-space:nowrap}.painter-tool-badge{font-size:.68rem;font-weight:700;border-radius:3px;padding:1px 5px;text-transform:uppercase;letter-spacing:.04em}.painter-tool-badge.eraser{background:#f8514933;color:#f85149}.painter-tool-badge.fill{background:#3fb95033;color:#3fb950}.painter-tool-badge.pick{background:#e3b34133;color:#e3b341}.painter-tool-badge.bg{background:#58a6ff22;color:#58a6ff}.painter-sidebar{width:270px;flex-shrink:0;border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;padding:10px;gap:8px}.painter-tools{display:grid;grid-template-columns:1fr 1fr;grid-gap:5px;gap:5px}.painter-tool-btn{flex:1 1;padding:5px 4px;background:#0d1117;border:1px solid var(--border);border-radius:5px;color:var(--muted);cursor:pointer;font-size:.78rem;text-align:center;transition:background .12s,color .12s}.painter-tool-btn:hover{background:#1c2128;color:var(--text)}.painter-tool-btn.active{background:#1f3a5f;border-color:var(--accent);color:var(--accent)}.painter-slider-label{font-size:.78rem;color:var(--muted);display:flex;flex-direction:column;gap:3px}.painter-slider{width:100%;accent-color:var(--accent)}.painter-parts-header{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600;color:var(--text);padding:2px 0}.painter-add-btn{background:none;border:1px solid var(--border);border-radius:4px;color:var(--accent);cursor:pointer;font-size:1rem;line-height:1;padding:1px 6px}.painter-add-btn:hover{background:#1c2128}.painter-parts-list{flex:1 1;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.painter-part-row{display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:5px;cursor:pointer;border:1px solid transparent;transition:background .1s}.painter-part-row:hover{background:#1c2128}.painter-part-row.active{background:#1f3a5f;border-color:var(--accent)}.painter-part-row.flash{animation:painter-flash .7s ease}@keyframes painter-flash{0%{background:#4a3a10;border-color:#e3b341}40%{background:#3a2e0a;border-color:#e3b341}to{background:transparent;border-color:transparent}}.painter-part-swatch{width:12px;height:12px;border-radius:50%;flex-shrink:0}.painter-part-name{flex:1 1;min-width:0;background:transparent;border:none;border-bottom:1px solid transparent;color:var(--text);font-size:.78rem;padding:0 2px}.painter-part-name:focus{outline:none;border-bottom-color:var(--accent)}.painter-part-mirror,.painter-part-parent{background:#0d1117;border:1px solid var(--border);border-radius:3px;color:var(--muted);font-size:.68rem;padding:1px 2px;max-width:58px}.painter-part-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.7rem;padding:0 2px;flex-shrink:0}.painter-part-del:hover{color:var(--danger)}.painter-footer{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--border);flex-shrink:0}.painter-undo-btn{background:#0d1117;border:1px solid var(--border);border-radius:5px;color:var(--muted);cursor:pointer;font-size:.8rem;padding:5px 10px}.painter-undo-btn:hover{color:var(--text);background:#1c2128}.assembler-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;z-index:1000}.assembler-box{background:#0d1117;border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;width:860px;max-width:98vw;height:660px;max-height:96vh;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.6)}.assembler-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.assembler-title{font-size:1rem;font-weight:600;color:var(--text)}.assembler-subtitle{font-size:.75rem;color:var(--muted);margin-left:4px}.assembler-close{margin-left:auto;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:2px 6px}.assembler-close:hover{color:var(--text)}.assembler-body{display:flex;flex-direction:row;flex:1 1;overflow:hidden}.assembler-slots{width:150px;min-width:130px;border-right:1px solid var(--border);overflow-y:auto;flex-shrink:0;padding:8px 0}.assembler-slots-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 12px 8px}.assembler-slot-row{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:.78rem;color:var(--muted);border-left:2px solid transparent;transition:background .12s}.assembler-slot-row:hover{background:#161b22}.assembler-slot-row.active{background:#1c2128;border-left-color:#58a6ff;color:var(--text)}.assembler-slot-row.filled{color:var(--text)}.assembler-slot-dot{width:7px;height:7px;border-radius:50%;background:#30363d;flex-shrink:0}.assembler-slot-dot.filled{background:#3fb950}.assembler-slot-label{flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.assembler-face-badges{display:flex;gap:3px;flex-shrink:0}.assembler-face-badge{border:1px solid #30363d;border-radius:4px;color:#484f58;font-size:.58rem;font-weight:800;line-height:1;padding:2px 3px}.assembler-face-badge.filled{background:rgba(63,185,80,.14);border-color:rgba(63,185,80,.45);color:#7ee787}.assembler-slot-clear{background:none;border:none;color:#484f58;cursor:pointer;font-size:.7rem;padding:0 2px;line-height:1}.assembler-slot-clear:hover{color:var(--danger)}.assembler-canvas-area{flex:1 1;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:12px;gap:8px;background:#090c10}.assembler-canvas-inner{position:relative;flex-shrink:0}.assembler-canvas{display:block;width:100%;height:100%;image-rendering:pixelated;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.assembler-zoom-bar{display:flex;align-items:center;gap:6px}.assembler-zoom-btn{background:#1c2128;border:1px solid var(--border);color:var(--text);width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center}.assembler-zoom-btn:hover{background:#2d333b}.assembler-zoom-pct{font-size:.75rem;color:var(--muted);min-width:40px;text-align:center}.assembler-canvas-hint{font-size:.7rem;color:#484f58;text-align:center}.assembler-editor{width:200px;min-width:180px;border-left:1px solid var(--border);overflow-y:auto;padding:12px;flex-shrink:0;display:flex;flex-direction:column;gap:8px}.assembler-editor-title{font-size:.85rem;font-weight:600;color:var(--text);padding-bottom:6px;border-bottom:1px solid var(--border)}.assembler-editor-empty{font-size:.78rem;color:#484f58;text-align:center;padding-top:24px}.assembler-img-preview{display:flex;justify-content:center}.assembler-thumb{width:80px;height:80px;border:1px solid var(--border);border-radius:4px;background:repeating-conic-gradient(#1a1a2e 0 25%,#16213e 0 50%) 0 0 /10px 10px}.assembler-thumb-empty{display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--muted)}.assembler-upload-src-btn{background:rgba(88,166,255,.08);border:2px dashed rgba(88,166,255,.3);border-radius:10px;color:#58a6ff;font-size:.95rem;padding:28px 40px;cursor:pointer;margin:auto}.assembler-upload-src-btn:hover{background:rgba(88,166,255,.15);border-color:rgba(88,166,255,.6)}.assembler-upload-replace{background:none;border:1px solid var(--border);border-radius:4px;color:var(--muted);font-size:.72rem;padding:2px 6px;cursor:pointer;margin-left:4px}.assembler-upload-replace:hover{color:var(--text);background:#1c2128}.assembler-crop-info{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;color:#3fb950;background:rgba(63,185,80,.08);border:1px solid rgba(63,185,80,.25);border-radius:4px;padding:4px 8px}.assembler-crop-hint{font-size:.72rem;color:#484f58;font-style:italic}.assembler-anchor-panel{display:flex;flex-direction:column;gap:6px;background:rgba(88,166,255,.06);border:1px solid rgba(88,166,255,.2);border-radius:6px;padding:8px}.assembler-anchor-head{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;font-weight:600;color:#9ecbff}.assembler-global-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-bottom:6px}.assembler-global-divider{border:none;border-top:1px solid var(--border);margin:10px 0}.assembler-parent-info{font-size:.7rem;color:var(--muted);padding-top:4px;border-top:1px solid var(--border);margin-top:4px}.assembler-upload-btn{background:#1c2128;border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:.78rem;padding:6px 10px;cursor:pointer;width:100%;text-align:center}.assembler-upload-btn:hover{background:#2d333b}.assembler-field-label{font-size:.72rem;color:var(--muted);display:flex;justify-content:space-between}.assembler-field-val{color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.assembler-text-input{background:#0d1117;border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.78rem;padding:4px 7px;width:100%;box-sizing:border-box;outline:none}.assembler-text-input:focus{border-color:#58a6ff}.assembler-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:#30363d;outline:none;cursor:pointer}.assembler-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#58a6ff;cursor:pointer}.assembler-mode-btns{display:flex;gap:4px}.assembler-mode-btn{flex:1 1;background:#1c2128;border:1px solid var(--border);border-radius:4px;color:var(--muted);font-size:.72rem;padding:4px 0;cursor:pointer}.assembler-mode-btn:hover:not(.active){color:var(--text);background:#21262d}.assembler-mode-btn.active{background:#1f4b7a;border-color:#58a6ff;color:#e6f0ff;font-weight:600}.assembler-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border);gap:8px;flex-shrink:0}.assembler-footer-btn{background:#1c2128;border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:.8rem;padding:6px 12px;cursor:pointer}.assembler-footer-btn:hover:not(:disabled){background:#2d333b}.assembler-footer-btn:disabled{opacity:.45;cursor:default}.assembler-zoom-fit{font-size:.8rem}.assembler-bg-sep{width:1px;height:16px;background:var(--border);margin:0 4px}.assembler-bg-label{font-size:.7rem;color:var(--muted)}.assembler-bg-select{background:#1c2128;border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.72rem;padding:2px 4px;cursor:pointer;outline:none}.assembler-bg-select:focus{border-color:#58a6ff}.assembler-build-btn{background:rgba(63,185,80,.12);border-color:#3fb950;color:#3fb950;font-weight:600}.assembler-build-btn:hover:not(:disabled){background:rgba(63,185,80,.22)}.assembler-error{font-size:.75rem;color:var(--danger);flex:1 1;text-align:center}.offset-modal{background:#0d1117;border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;width:920px;max-width:98vw;height:650px;max-height:96vh;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.6)}.offset-body{display:grid;grid-template-columns:170px minmax(360px,1fr) 220px;flex:1 1;min-height:0}.offset-list{border-right:1px solid var(--border);overflow-y:auto;padding:8px 0}.offset-piece-row{display:block;width:100%;background:transparent;border:0;border-left:2px solid transparent;color:var(--muted);cursor:pointer;font-size:.78rem;padding:7px 12px;text-align:left}.offset-piece-row:hover{background:#161b22;color:var(--text)}.offset-piece-row.active{background:#1c2128;border-left-color:#58a6ff;color:var(--text)}.offset-preview{min-width:0;min-height:0;background:#090c10}.offset-preview canvas{display:block;width:100%;height:100%}.offset-controls{border-left:1px solid var(--border);display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding:12px}.offset-selected-name{border-bottom:1px solid var(--border);color:var(--text);font-size:.88rem;font-weight:600;padding-bottom:8px}.offset-symmetry{align-items:center;background:rgba(88,166,255,.06);border:1px solid rgba(88,166,255,.18);border-radius:6px;color:#c9d1d9;display:flex;font-size:.78rem;gap:8px;padding:7px 8px}.offset-symmetry input{accent-color:#58a6ff}.offset-symmetry.disabled{opacity:.48}.offset-section-title{color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.08em;margin-top:2px;text-transform:uppercase}.offset-axis{display:flex;flex-direction:column;gap:6px}.offset-axis-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.offset-number-wrap{align-items:center;display:flex;gap:5px}.offset-number-input{background:#0d1117;border:1px solid #30363d;border-radius:6px;color:var(--text);font-size:.76rem;font-weight:600;max-width:76px;padding:5px 7px;text-align:right}.offset-number-input:focus{border-color:#58a6ff;box-shadow:0 0 0 2px rgba(88,166,255,.18);outline:none}.offset-number-unit{color:var(--muted);font-size:.68rem;font-weight:700;text-transform:uppercase}.offset-actions{display:flex;gap:8px;margin-top:4px}.offset-actions .assembler-footer-btn{flex:1 1;padding-left:6px;padding-right:6px}@media (max-width:820px){.offset-body{grid-template-columns:120px minmax(220px,1fr)}.offset-controls{grid-column:1/-1;border-left:0;border-top:1px solid var(--border);max-height:210px}}