.viewport{width:100%;height:100%;position:relative;overflow:hidden}.viewport canvas{display:block}.viewport.mesh-thumbnail-grid-active canvas{cursor:grab}.polygon-count-overlay{position:absolute;top:12px;right:52px;z-index:2;padding:4px 8px;border:1px solid rgba(255,255,255,.16);border-radius:4px;background:#0c0c0cb8;color:#d7ffe9;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.2;pointer-events:none}.polygon-count-overlay.uv-visible{right:calc(50% + 12px)}.mesh-thumbnail-grid-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:grid;grid-auto-rows:1fr;pointer-events:none}.mesh-thumbnail-tile{position:relative;min-width:0;min-height:0;border-right:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,transparent 68%,rgba(0,0,0,.36) 100%)}.mesh-thumbnail-export-btn,.mesh-thumbnail-export-message{position:absolute;z-index:4;pointer-events:auto}.mesh-thumbnail-export-btn{top:10px;left:10px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(0,255,136,.55);border-radius:4px;background:#0c0c0cc7;color:#d7ffe9;cursor:pointer;padding:7px 10px;font-size:12px;font-weight:700}.mesh-thumbnail-export-btn:hover{border-color:#0f8;color:#0f8}.mesh-thumbnail-export-message{top:10px;left:152px;padding:7px 10px;border:1px solid rgba(255,255,255,.14);border-radius:4px;background:#0c0c0cbd;color:#d7ffe9;font-size:12px;font-weight:700}.mesh-thumbnail-label{position:absolute;left:8px;right:8px;bottom:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:hidden;padding:4px 6px;border:1px solid rgba(0,255,136,.22);border-radius:4px;background:#0c0c0cb3;color:#d7ffe9;cursor:pointer;pointer-events:auto;font-size:11px;font-weight:700;line-height:1.2;text-align:center;text-overflow:ellipsis;white-space:nowrap}.control-panel{padding:20px;display:flex;flex-direction:column;gap:20px}.control-panel h2{font-size:18px;margin-bottom:10px;color:#0f8;border-bottom:2px solid #00ff88;padding-bottom:10px}.language-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;border:1px solid #404040;border-radius:4px;background:#1d1d1d}.language-switch span{color:#aaa;font-size:12px;font-weight:700;text-transform:uppercase}.language-buttons{display:grid;grid-template-columns:1fr 1fr;min-width:142px;border:1px solid #00ff88;border-radius:4px;overflow:hidden}.language-btn{min-width:0;background:#181818;color:#0f8;border:none;padding:7px 8px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s ease}.language-btn+.language-btn{border-left:1px solid #00ff88}.language-btn:hover{background:#00ff881a}.language-btn.active{background:#0f8;color:#0a0a0a}.legal-link-btn{width:100%;background:#181818;color:#d7ffe9;border:1px solid #404040;border-radius:4px;padding:9px 10px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s ease}.legal-link-btn:hover{border-color:#0f8;color:#0f8}.control-group{display:flex;flex-direction:column;gap:8px}.control-group label{font-size:12px;text-transform:uppercase;color:#aaa;font-weight:600;letter-spacing:.5px;-webkit-user-select:none;user-select:none}.control-group input[type=range]{width:100%;height:18px;background:transparent;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.control-group input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:#404040}.mesh-type-select{width:100%;background:#181818;color:#e0e0e0;border:1px solid #404040;border-radius:4px;padding:9px 10px;font-size:13px;cursor:pointer}.mesh-type-select:focus{border-color:#0f8;outline:none}.mesh-grid-toggle-btn{width:100%;background:#181818;color:#e0e0e0;border:1px solid #404040;border-radius:4px;padding:9px 10px;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s ease}.mesh-grid-toggle-btn:hover,.mesh-grid-toggle-btn:focus{border-color:#0f8;outline:none}.mesh-grid-toggle-btn.active{background:#0f8;color:#0a0a0a;border-color:#0f8}.control-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;margin-top:-5px;border-radius:50%;background:#0f8;cursor:pointer;box-shadow:0 0 8px #0f89}.control-group input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:#404040}.control-group input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#0f8;cursor:pointer;border:none;box-shadow:0 0 8px #0f89}.control-group .value{font-size:14px;color:#0f8;font-weight:600;-webkit-user-select:none;user-select:none}body.range-input-dragging,body.range-input-dragging *{-webkit-user-select:none;user-select:none}.vector-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.vector-inputs label{display:flex;flex-direction:column;gap:4px;color:#aaa;font-size:11px}.vector-inputs input{width:100%;min-width:0;background:#181818;color:#e0e0e0;border:1px solid #404040;border-radius:4px;padding:8px 6px;font-size:13px}.vector-inputs input.draggable-number{cursor:ew-resize}.vector-inputs input:focus{border-color:#0f8;outline:none}.vector-inputs input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.vector-inputs input[type=number]::-webkit-outer-spin-button,.vector-inputs input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.control-group.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid #333;border-bottom:1px solid #333}.toggle-btn{background:#181818;color:#0f8;border:1px solid #00ff88;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s ease}.toggle-btn:hover{background:#00ff881a}.toggle-btn.active{background:#0f8;color:#0a0a0a;border-color:#0f8}.inline-actions{display:flex;gap:8px}.texture-control{padding:12px 0;border-top:1px solid #333;border-bottom:1px solid #333}.texture-file-input{display:none}.texture-display-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.texture-display-row span{color:#cfcfcf;font-size:12px;font-weight:600}.texture-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.texture-btn{background:#181818;color:#0f8;border:1px solid #00ff88;border-radius:4px;padding:9px 10px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s ease}.texture-btn:hover{background:#00ff881a}.texture-btn:disabled{opacity:.45;cursor:not-allowed}.texture-name{overflow:hidden;color:#cfcfcf;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.export-btn{background:linear-gradient(135deg,#0f8,#0c6);color:#000;border:none;padding:12px 16px;font-size:14px;font-weight:600;border-radius:4px;cursor:pointer;transition:all .3s ease;margin-top:10px;text-transform:uppercase;letter-spacing:.5px}.export-btn:hover{transform:translateY(-2px);box-shadow:0 8px 16px #00ff884d}.export-btn:active{transform:translateY(0)}.export-section{margin-top:20px;padding-top:20px;border-top:2px solid #404040}.export-section h3{font-size:14px;text-transform:uppercase;color:#0f8;margin-bottom:12px;letter-spacing:.5px}.export-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.export-btn{padding:10px 12px;font-size:12px;margin-top:0}.export-btn.fbx-btn{background:linear-gradient(135deg,#ff6b6b,#c92a2a)}.export-btn.glb-btn{background:linear-gradient(135deg,#339af0,#1971c2)}.export-btn.gltf-btn{background:linear-gradient(135deg,#ffa94d,#f76707)}.export-btn.fbx-btn,.export-btn.glb-btn,.export-btn.gltf-btn{display:none}.export-btn.obj-btn{background:linear-gradient(135deg,#b197fc,#7950f2)}.export-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.exporting-message{font-size:12px;color:#0f8;text-align:center;margin-top:8px;animation:pulse 1.5s infinite}.legal-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:#000000b8}.legal-modal{width:min(560px,100%);max-height:min(760px,calc(100vh - 48px));overflow:hidden;border:1px solid #404040;border-radius:6px;background:#202020;box-shadow:0 24px 60px #0000008c}.legal-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid #404040}.legal-modal-header h3{margin:0;color:#0f8;font-size:15px;letter-spacing:0;text-transform:none}.legal-close-btn{flex:0 0 auto;background:#181818;color:#0f8;border:1px solid #00ff88;border-radius:4px;padding:7px 10px;font-size:12px;font-weight:700;cursor:pointer}.legal-close-btn:hover{background:#00ff881a}.legal-modal-content{max-height:calc(100vh - 144px);overflow-y:auto;padding:16px 18px 18px}.legal-modal-content section+section{margin-top:16px;padding-top:16px;border-top:1px solid #333}.legal-modal-content h4{margin:0 0 6px;color:#d7ffe9;font-size:13px;letter-spacing:0}.legal-modal-content p{margin:0;color:#cfcfcf;font-size:13px;line-height:1.6}.legal-modal-content a{display:inline-block;margin-top:8px;color:#0f8;font-size:13px;font-weight:700;text-decoration:none}.legal-modal-content a:hover{text-decoration:underline}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.app-container{position:relative;display:flex;width:100%;height:100%;gap:0;overflow:hidden}.viewport-container{flex:1 1 auto;min-width:0;position:relative;background:linear-gradient(135deg,#1a1a1a,#2d2d2d)}.control-panel-container{flex:0 0 300px;width:300px;min-width:280px;background:#252525;border-left:1px solid #404040;overflow-y:auto;box-shadow:-2px 0 10px #00000080;transition:flex-basis .2s ease,width .2s ease,min-width .2s ease,border-color .2s ease,box-shadow .2s ease}.control-panel-toggle{position:absolute;top:14px;right:300px;z-index:10;width:28px;height:44px;border:1px solid #404040;border-right:none;border-radius:6px 0 0 6px;background:#252525;color:#0f8;font-size:22px;line-height:1;font-weight:700;cursor:pointer;box-shadow:-2px 0 10px #00000059;transition:right .2s ease,background .2s ease,border-color .2s ease}.control-panel-toggle:hover,.control-panel-toggle:focus-visible{background:#303030;border-color:#0f8;outline:none}.app-container.control-panel-collapsed .control-panel-container{flex-basis:0;width:0;min-width:0;border-color:transparent;box-shadow:none;overflow:hidden}.app-container.control-panel-collapsed .control-panel-toggle{right:0}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#1e1e1e;color:#e0e0e0}#root{width:100vw;height:100vh}
