:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.model3d-shared-canvas-wrap{position:relative;flex:1;min-width:0;height:100%}.model3d-shared-canvas{display:block;width:100%;height:100%;outline:none}.model3d-shared-error{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#f44;color:#fff;padding:.75rem 1rem;border-radius:4px;display:flex;align-items:center;gap:1rem;z-index:10;pointer-events:all}.model3d-shared-error button{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.model3d-shared-error button:hover{background:#fff3}.options-menu{width:280px;height:100%;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;box-shadow:2px 0 4px #0000001a}.options-menu-header{padding:1rem;border-bottom:1px solid #e0e0e0;background:#f8f9fa}.options-menu-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#333}.options-menu-content{flex:1;overflow-y:auto;padding:1rem}.option-section{margin-bottom:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e0e0e0}.option-header{margin-bottom:.75rem}.option-header h3{margin:0;font-size:1rem;font-weight:600;color:#333;text-transform:capitalize}.option-group-selector{margin-bottom:.75rem}.option-group-selector label{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#666}.option-group-selector select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.875rem;background:#fff;color:#333;cursor:pointer;transition:border-color .2s}.option-group-selector select:hover{border-color:#646cff}.option-group-selector select:focus{outline:none;border-color:#646cff;box-shadow:0 0 0 2px #646cff33}.option-color-picker{margin-bottom:.75rem}.option-color-picker label{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#666}.option-color-picker input[type=color]{width:100%;height:40px;border:1px solid #ccc;border-radius:4px;cursor:pointer;padding:0;background:none}.option-color-picker input[type=color]::-webkit-color-swatch-wrapper{padding:0}.option-color-picker input[type=color]::-webkit-color-swatch{border:none;border-radius:4px}.option-visibility-toggle{margin-bottom:.75rem}.option-visibility-toggle label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:#666;cursor:pointer}.option-visibility-toggle input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#646cff}.option-visibility-toggle span{-webkit-user-select:none;user-select:none}.fragments-section{margin-top:1rem;padding-top:.75rem;border-top:1px solid #e0e0e0}.fragments-section-header{margin-bottom:.5rem}.fragments-section-header h3{margin:0;font-size:1rem;font-weight:600;color:#333}.fragments-list{display:flex;flex-direction:column;gap:.5rem}.fragment-row{border:1px solid #e7e7e7;border-radius:6px;background:#fafafa;padding:.35rem .45rem}.fragment-row--disabled{opacity:.9}.fragment-item-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.fragment-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#666;cursor:pointer;flex:1;min-width:0}.fragment-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:#646cff}.fragment-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fragment-item__expand{width:1.55rem;height:1.55rem;border:1px solid #ccc;border-radius:4px;background:#fff;color:#444;cursor:pointer;line-height:1;font-size:.95rem;padding:0}.fragment-item__expand:hover:not(:disabled){background:#eef3ff;border-color:#7f95ff}.fragment-item__expand:disabled{opacity:.45;cursor:not-allowed}.fragment-item__editor{margin-top:.35rem;margin-left:.95rem;padding-left:.45rem;border-left:2px solid #e0e0e0}.options-menu-content::-webkit-scrollbar{width:8px}.options-menu-content::-webkit-scrollbar-track{background:#f1f1f1}.options-menu-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.options-menu-content::-webkit-scrollbar-thumb:hover{background:#aaa}.options-menu-hidden-meshes{margin-top:1rem;padding-top:1rem;border-top:1px solid #e0e0e0}.options-menu-hidden-meshes__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.options-menu-hidden-meshes__header h3{margin:0;font-size:1rem;font-weight:600;color:#333}.options-menu-hidden-meshes__add{padding:.25rem .5rem;font-size:.8rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer}.options-menu-hidden-meshes__add:hover{border-color:#646cff;background:#f5f6ff}.options-menu-hidden-meshes__hint{margin:0 0 .75rem;font-size:.75rem;color:#777;line-height:1.35}.option-section--hidden-mesh{background:#f4f6fa}.option-header--row{display:flex;align-items:center;gap:.5rem}.hidden-mesh-key-input{flex:1;min-width:0;padding:.4rem .5rem;font-size:.875rem;border:1px solid #ccc;border-radius:4px}.hidden-mesh-remove-group{flex-shrink:0;width:1.75rem;height:1.75rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:1.1rem;line-height:1}.hidden-mesh-names{margin-bottom:.5rem}.hidden-mesh-names__label{display:block;font-size:.8rem;font-weight:500;color:#666;margin-bottom:.25rem}.hidden-mesh-names__list{list-style:none;margin:0 0 .35rem;padding:0;display:flex;flex-direction:column;gap:.25rem}.hidden-mesh-names__item{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:.2rem .35rem;background:#fff;border:1px solid #e0e0e0;border-radius:4px;font-size:.8rem}.hidden-mesh-names__remove{border:none;background:transparent;cursor:pointer;color:#999;font-size:1rem;line-height:1;padding:0 .15rem}.hidden-mesh-names__remove:hover{color:#c00}.hidden-mesh-names__add select{width:100%;padding:.35rem .5rem;font-size:.8rem;border:1px solid #ccc;border-radius:4px;background:#fff}.model3d-preview-wrapper{display:flex;width:100%;height:100%;min-height:500px}.model3d-preview-container{position:relative;flex:1;height:100%;min-height:500px;background:#f5f5f5;border:2px dashed transparent;border-radius:8px;overflow:hidden;transition:border-color .2s}.model3d-preview-container.dragging{border-color:#646cff;background:#e8e8e8}.model3d-canvas{display:block;width:100%;height:100%;outline:none}.model3d-overlay{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center;background:#f5f5f5b3;transition:opacity .2s;z-index:1}.model3d-instructions{text-align:center;color:#333;pointer-events:all}.model3d-instructions p{margin:0 0 1rem;font-size:1.1rem;font-weight:500}.model3d-file-input-label{display:inline-block;padding:.5rem 1rem;background:#646cff;color:#fff;border-radius:4px;cursor:pointer;transition:background .2s}.model3d-file-input-label:hover{background:#535bf2}.model3d-toolbar{position:absolute;top:12px;right:12px;z-index:5;display:flex;flex-direction:column;gap:8px}.model3d-toolbar__btn{background:#646cff;color:#fff;border:none;border-radius:4px;padding:.5rem .9rem;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s;box-shadow:0 2px 6px #00000026}.model3d-toolbar__btn:hover{background:#535bf2}.model3d-toolbar__btn:disabled{opacity:.6;cursor:not-allowed}.model3d-error{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#f44;color:#fff;padding:.75rem 1rem;border-radius:4px;display:flex;align-items:center;gap:1rem;z-index:10;pointer-events:all}.model3d-error button{background:transparent;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.model3d-error button:hover{background:#fff3}.matching-editor{display:flex;flex-direction:column;gap:.5rem;padding:.5rem .75rem;background:#f5f5f5;border-top:1px solid #e0e0e0;flex-shrink:0}.matching-editor--disabled{opacity:.45;pointer-events:none}.matching-editor__header{font-size:.8rem;font-weight:600;color:#444;letter-spacing:.03em;text-transform:uppercase}.matching-editor__controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.matching-align{display:flex;flex-direction:column;gap:1px}.matching-align__label{font-size:.75rem;color:#666;margin-bottom:2px}.matching-align__grid{display:grid;grid-template-columns:repeat(3,1.65rem);grid-template-rows:repeat(2,1.65rem);gap:1px}.matching-align__btn{display:flex;align-items:center;justify-content:center;width:1.65rem;height:1.65rem;padding:0;border:1px solid #ccc;border-radius:3px;background:#fff;cursor:pointer;font-size:.75rem;line-height:1;color:#555;transition:background .12s,color .12s,border-color .12s}.matching-align__btn:hover:not(:disabled){background:#e8f0ff;color:#1a4a99;border-color:#47c}.matching-align__btn--active{background:#def;color:#1a4a99;border-color:#47c;font-weight:700}.matching-align__btn:disabled{opacity:.4;cursor:not-allowed}.matching-stepper-group{display:flex;flex-direction:column;gap:2px}.matching-stepper-group__label{font-size:.75rem;color:#666}.matching-stepper{display:flex;align-items:center;gap:2px}.matching-stepper__btn{padding:.15rem .45rem;font-size:.95rem;font-weight:700;line-height:1;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;color:#333}.matching-stepper__btn:hover:not(:disabled){background:#e8e8e8}.matching-stepper__btn:disabled{opacity:.4;cursor:not-allowed}.matching-stepper__input{width:4ch;padding:.15rem .2rem;font-size:.9rem;font-variant-numeric:tabular-nums;text-align:center;border:1px solid #ccc;border-radius:4px;background:#fff;color:#333;outline:none;-moz-appearance:textfield;appearance:textfield}.matching-stepper__input--wide{width:4.5ch}.matching-stepper__input::-webkit-outer-spin-button,.matching-stepper__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.matching-stepper__input:focus{border-color:#47c;background:#f0f6ff}.matching-stepper__suffix{font-size:.8rem;color:#666}.matching-editor__json-panel{display:flex;flex-direction:column;gap:.3rem}.matching-editor__json-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.matching-editor__json-label{font-size:.75rem;color:#666}.matching-editor__json-actions{display:flex;gap:.35rem}.matching-editor__json-btn{padding:.2rem .55rem;font-size:.8rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;color:#333}.matching-editor__json-btn:hover:not(:disabled){background:#e8e8e8}.matching-editor__json-btn:disabled{opacity:.4;cursor:not-allowed}.matching-editor__json-btn--apply{border-color:#47c;color:#1a4a99;background:#f0f6ff}.matching-editor__json-btn--apply:hover:not(:disabled){background:#def}.matching-editor__textarea{width:100%;min-height:5.5rem;padding:.35rem .5rem;font-size:.78rem;font-family:monospace;border:1px solid #ccc;border-radius:4px;background:#fff;color:#333;resize:vertical;box-sizing:border-box;outline:none}.matching-editor__textarea:focus{border-color:#47c}.matching-editor__textarea--dirty{border-color:#c84;background:#fffaf0}.islands-menu{width:320px;height:100%;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;box-shadow:2px 0 4px #0000001a}.islands-menu-header{padding:1rem;border-bottom:1px solid #e0e0e0;background:#f8f9fa}.islands-menu-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#333}.islands-menu-content{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.9rem}.islands-menu-warning{border:1px solid #f0b646;background:#fff7e8;color:#7b5f18;border-radius:6px;padding:.5rem .6rem;font-size:.8rem}.islands-section{border:1px solid #e4e4e4;border-radius:8px;background:#fafafa;padding:.6rem}.islands-section-header{margin-bottom:.55rem}.islands-section-header h3{margin:0;font-size:.95rem;font-weight:600}.islands-list{display:flex;flex-direction:column;gap:.35rem}.island-row{display:grid;grid-template-columns:auto auto minmax(3.5rem,auto) minmax(2.75rem,3.25rem) minmax(3.25rem,1fr);align-items:center;gap:.35rem;border:1px solid #d9d9d9;border-radius:6px;background:#fff;padding:.35rem;cursor:pointer}.island-row:hover{border-color:#b8c8ff}.island-row--selected{border-color:#7c95ff;box-shadow:inset 0 0 0 1px #7c95ff}.island-row--conflict{border-color:#f2a25f;background:#fff4ec}.island-row__icon{color:#666;font-size:.82rem}.island-row__title{font-size:.8rem;color:#444}.island-row__select{min-width:0;padding:.25rem .35rem;border:1px solid #cfcfcf;border-radius:4px;background:#fff;font-size:.8rem}.island-row__select--assignment{max-width:4.75rem;font-size:.75rem}.island-row__select--code{max-width:3.25rem}.island-row__select--rotation{width:3.25rem;min-width:3rem}.island-row__option-key{min-width:0;width:100%;max-width:7rem;padding:.22rem .35rem;border:1px solid #cfcfcf;border-radius:4px;background:#fff;font-size:.78rem;box-sizing:border-box}.islands-section--fragments{margin-top:.2rem}.fragments-list{display:flex;flex-direction:column;gap:.4rem}.fragment-row{border:1px solid #e2e2e2;border-radius:6px;background:#fff;padding:.35rem}.fragment-row--disabled{opacity:.75}.fragment-row__line{display:flex;align-items:center;gap:.35rem}.fragment-row__toggle input[type=checkbox]{width:14px;height:14px;accent-color:#646cff}.fragment-row__select{min-width:0;flex:1;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.fragment-row__arrow{font-size:.85rem;color:#555}.fragment-row__expand,.fragment-row__delete{width:1.45rem;height:1.45rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;padding:0;line-height:1}.fragment-row__expand:disabled{opacity:.45;cursor:not-allowed}.fragment-row__delete{color:#8f2a2a}.fragment-row__editor{margin-top:.4rem;border-left:2px solid #e4e4e4;padding-left:.45rem}.fragments-actions{margin-top:.55rem;display:flex;justify-content:flex-start}.fragments-actions__add{width:1.8rem;height:1.8rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-weight:700}.fragments-actions__add:disabled{opacity:.5;cursor:not-allowed}.islands-section--inside-areas{margin-top:.2rem}.inside-areas-list{display:flex;flex-direction:column;gap:.4rem}.inside-area-row{border:1px solid #e2e2e2;border-radius:6px;background:#fff;padding:.35rem;cursor:pointer}.inside-area-row:hover{border-color:#f5c27a}.inside-area-row--selected{border-color:#ff9d47;box-shadow:inset 0 0 0 1px #ff9d47}.inside-area-row__line{display:flex;align-items:center;gap:.35rem}.inside-area-row__select{min-width:0;flex:1;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.inside-area-row__arrow{font-size:.85rem;color:#555}.inside-area-row__expand,.inside-area-row__delete{width:1.45rem;height:1.45rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;padding:0;line-height:1}.inside-area-row__delete{color:#8f2a2a}.inside-area-row__editor{margin-top:.4rem;border-left:2px solid #e4e4e4;padding-left:.45rem}.inside-area-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.inside-area-grid label{display:flex;flex-direction:column;gap:.2rem;font-size:.74rem;color:#444}.inside-area-grid input{min-width:0;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.inside-area-align{margin-top:.45rem;display:flex;flex-direction:column;gap:.25rem}.inside-area-align--disabled{opacity:.55}.inside-area-align__label{font-size:.72rem;color:#444}.inside-area-align__grid{display:grid;grid-template-columns:repeat(3,1.35rem);grid-template-rows:repeat(3,1.35rem);gap:.2rem;justify-content:flex-start}.inside-area-align__btn{width:100%;height:100%;padding:0;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;line-height:1}.inside-area-align__btn:hover:not(:disabled){border-color:#f5a54a;background:#fff9f2}.inside-area-align__btn:disabled{cursor:not-allowed;opacity:.65}.inside-areas-actions{margin-top:.55rem;display:flex;justify-content:flex-start}.inside-areas-actions__add{width:1.8rem;height:1.8rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-weight:700}.inside-areas-actions__add:disabled{opacity:.5;cursor:not-allowed}.inside-area-php-match{margin-top:.5rem;display:flex;flex-direction:column;gap:.35rem}.inside-area-php-drop{border:1px dashed #bbb;border-radius:6px;padding:.45rem .5rem;font-size:.72rem;color:#555;background:#fafafa;cursor:pointer;text-align:center;line-height:1.35}.inside-area-php-drop:hover{border-color:#f5a54a;background:#fff9f2}.inside-area-php-drop--active{border-color:#ff9d47;background:#fff4e8}.inside-area-php-results{display:flex;flex-direction:column;gap:.25rem;font-size:.68rem;color:#333;line-height:1.35;word-break:break-word}.inside-area-php-results__line{padding-left:.15rem}.inside-area-php-size-label{display:flex;align-items:center;gap:.35rem;margin-top:.35rem;font-size:.72rem;color:#444}.inside-area-php-size-label__text{flex-shrink:0}.inside-area-php-size-select{flex:1;min-width:0;padding:.2rem .35rem;border:1px solid #ccc;border-radius:4px;font-size:.72rem;background:#fff}.inside-area-php-results--fixed-size{margin-top:.4rem;padding-top:.35rem;border-top:1px dashed #ddd}.islands-section--merging{margin-top:.2rem}.merging-list{display:flex;flex-direction:column;gap:.4rem}.merging-row{border:1px solid #d4e5f7;border-radius:6px;background:#fff;padding:.35rem}.merging-row__line{display:flex;align-items:center;gap:.35rem}.merging-row__select{min-width:0;flex:1;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.merging-row__arrow{font-size:.85rem;color:#555;flex-shrink:0}.merging-row__expand,.merging-row__delete{width:1.45rem;height:1.45rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;padding:0;line-height:1;flex-shrink:0}.merging-row__delete{color:#8f2a2a}.merging-row__editor{margin-top:.4rem;border-left:2px solid #d4e5f7;padding-left:.45rem;display:flex;flex-direction:column;gap:.45rem}.merging-row__preset{display:flex;flex-direction:column;gap:.2rem;font-size:.74rem;color:#444}.merging-row__preset select{padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.merging-row__offsets{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.merging-row__offsets label{display:flex;flex-direction:column;gap:.2rem;font-size:.74rem;color:#444}.merging-row__offsets input{min-width:0;padding:.2rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.78rem}.merging-row__hint{margin:0;font-size:.68rem;color:#666;line-height:1.35}.merging-actions{margin-top:.55rem;display:flex;justify-content:flex-start}.merging-actions__add{width:1.8rem;height:1.8rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-weight:700}.merging-actions__add:disabled{opacity:.5;cursor:not-allowed}.polygon-overlay{position:absolute;pointer-events:auto;z-index:3;touch-action:none}.polygon-overlay__bounds{fill:none;stroke:#6a6a6a;stroke-width:1;stroke-dasharray:4 2}.polygon-overlay__path{fill:#0099ff14;stroke:none}.polygon-overlay__edge{stroke:#09fc;stroke-width:1.5}.polygon-overlay__edge--hovered{stroke:#ff9b00;stroke-width:2}.polygon-overlay__vertex{fill:#0d6efd;stroke:#fff;stroke-width:1}.polygon-overlay__vertex--hovered{fill:#ff9b00}.polygon-overlay__vertex--active{fill:#ff5722}.preview-page{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.preview-toolbar{flex-shrink:0;display:flex;align-items:center;flex-wrap:nowrap;gap:.5rem;padding:.75rem 1rem;background:#f5f5f5;border-bottom:1px solid #e0e0e0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.toolbar-group{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.toolbar-group label{font-weight:600;font-size:.85rem}.toolbar-separator{width:1px;height:1.25rem;background:#ccc;margin:0 .25rem}.toolbar-label{font-size:.85rem;font-weight:500}.toolbar-label--interactive{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:3px;padding:1px 3px}.toolbar-label--interactive:hover{color:#1a4a99;background:#e8f0ff}.toolbar-label--interactive:focus-visible{outline:1.5px solid #4477cc;outline-offset:1px}.toolbar-label--active{color:#1a4a99;background:#def}.toolbar-label--disabled{opacity:.5;cursor:not-allowed}.preview-toolbar select{padding:.35rem .75rem;font-size:.9rem;border:1px solid #ccc;border-radius:4px;background:#fff}.preview-toolbar button{padding:.35rem .75rem;font-size:.9rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer}.preview-toolbar button:hover:not(:disabled){background:#e8e8e8}.preview-toolbar button:disabled{opacity:.5;cursor:not-allowed}.preview-toolbar input[type=color]{width:1.75rem;height:1.5rem;padding:2px;border:1px solid #ccc;border-radius:4px;cursor:pointer}.toolbar-stepper{gap:.25rem}.toolbar-stepper button{padding:.2rem .5rem;font-size:1rem;font-weight:600;line-height:1;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer}.toolbar-stepper button:hover:not(:disabled){background:#e8e8e8}.toolbar-stepper button:disabled{opacity:.5;cursor:not-allowed}.toolbar-stepper .toolbar-value{min-width:1.5rem;text-align:center;font-size:.9rem}.toolbar-stepper-input{width:3ch;padding:.2rem .25rem;font-size:.9rem;text-align:center;border:1px solid #ccc;border-radius:4px;-moz-appearance:textfield;appearance:textfield}.toolbar-stepper-input--zoom{width:4.5ch}.toolbar-stepper-input::-webkit-outer-spin-button,.toolbar-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.toolbar-checkbox{gap:.25rem}.toolbar-checkbox input[type=checkbox]{cursor:pointer}.toolbar-checkbox label{font-weight:400;cursor:pointer}.toolbar-preview-fill-select{min-width:7rem}.preview-panels{flex:1;display:flex;min-height:0}.preview-panel-3d{flex:1;position:relative;min-width:0;background:#f5f5f5;overflow:hidden}.preview-panel-3d-content{display:flex;width:100%;height:100%}.preview-panel-3d-canvas-wrap{flex:1;min-width:0;position:relative}.preview-panel-uv{flex:1;position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:1rem;background:#fff;border-left:1px solid #e0e0e0;outline:2px dashed transparent;outline-offset:-2px;transition:outline-color .2s,background .2s;touch-action:none;overflow:hidden}.preview-panel-uv.dragging-texture{outline-color:#646cff;background:#f4f6ff}.preview-canvas{display:block;width:100%;height:100%;outline:none}.preview-uv-canvas{max-width:100%;max-height:100%;object-fit:contain;image-rendering:pixelated;will-change:transform}.preview-uv-viewport{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}.preview-uv-transform-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;will-change:transform}.preview-panel-uv.panning,.preview-panel-uv.panning .preview-uv-canvas{cursor:grabbing}.preview-uv-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffbf;font-size:.95rem;font-weight:600;color:#333;pointer-events:none}.preview-error{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#f44;color:#fff;padding:.75rem 1rem;border-radius:4px;z-index:10}.bbox-dial{display:flex;align-items:center;gap:3px}.bbox-dial--disabled{opacity:.45;pointer-events:none}.bbox-dial__center-col{display:flex;flex-direction:column;align-items:center;gap:1px}.bbox-dial__center{display:flex;align-items:center;gap:2px}.preview-toolbar .bbox-dial__num{padding:0 3px;font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1;min-width:16px;text-align:center;background:none;border:none;color:#555;cursor:pointer;border-radius:2px;transition:color .1s,background .1s}.preview-toolbar .bbox-dial__num:hover:not(:disabled){color:#1a4a99;background:#e8f0ff}.preview-toolbar .bbox-dial__num:disabled{cursor:not-allowed}.preview-toolbar .bbox-dial__num--active{color:#1a4a99;background:#def;outline:1.5px solid #4477cc;outline-offset:1px}.preview-toolbar .bbox-dial__step{padding:.1rem .25rem;font-size:.9rem;font-weight:700;line-height:1;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;color:#333;vertical-align:top}.preview-toolbar .bbox-dial__step:hover:not(:disabled){background:#e8e8e8}.preview-toolbar .bbox-dial__step:disabled{opacity:.35;cursor:not-allowed}.preview-toolbar .bbox-dial__input{width:3.5ch;padding:.1rem .2rem;font-size:.75rem;font-variant-numeric:tabular-nums;text-align:center;border:1px solid #4477cc;border-radius:4px;background:#f0f6ff;color:#1a4a99;outline:none;-moz-appearance:textfield;appearance:textfield}.preview-toolbar .bbox-dial__input:disabled{border-color:#d0d0d0;background:#f5f5f5;color:#aaa}.preview-toolbar .bbox-dial__input--hidden{visibility:hidden}.preview-toolbar .bbox-dial__input::-webkit-outer-spin-button,.preview-toolbar .bbox-dial__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.app-container{width:100%;height:100vh;display:flex;flex-direction:column}.app-main{flex:1;padding:0;display:flex;min-height:0}
