:root{--bg-color: #0d1117;--panel-bg: rgba(22, 27, 34, .65);--panel-border: rgba(255, 255, 255, .1);--text-main: #f0f6fc;--text-muted: #8b949e;--accent-color: #58a6ff;--accent-hover: #3182ce;--input-bg: rgba(13, 17, 23, .8);--input-border: rgba(255, 255, 255, .15);--input-focus: #58a6ff;--danger: #f85149;--success: #2ea043}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;background-color:var(--bg-color);color:var(--text-main);min-height:100vh;display:flex;justify-content:center;align-items:center;overflow-x:hidden;position:relative;padding:2rem}.blob-bg{position:absolute;width:600px;height:600px;background:radial-gradient(circle,#58a6ff26,#0000 70%);border-radius:50%;top:-100px;left:-100px;z-index:-1;filter:blur(60px);animation:drift 20s infinite alternate ease-in-out}.blob-bg.blob-2{background:radial-gradient(circle,#a371f726,#0000 70%);inset:auto -100px -150px auto;animation:drift-reverse 25s infinite alternate ease-in-out}@keyframes drift{0%{transform:translate(0) scale(1)}to{transform:translate(100px,100px) scale(1.1)}}@keyframes drift-reverse{0%{transform:translate(0) scale(1.1)}to{transform:translate(-150px,-50px) scale(1)}}details.help-box summary{list-style:none}details.help-box summary::-webkit-details-marker{display:none}.help-chevron{transition:transform .2s ease}details.help-box[open]>summary .help-chevron{transform:rotate(180deg)}.glass-panel{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:24px;padding:3rem;width:100%;max-width:1400px;box-shadow:0 25px 50px -12px #00000080;transform:none!important;perspective:none!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.main-layout{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:start}.preview-column{display:flex;flex-direction:column;min-height:500px;height:720px}#3d-preview-container{flex-grow:1;background:#0000004d;border:1px solid var(--panel-border);border-radius:16px;position:relative;overflow:hidden;transition:all .3s cubic-bezier(.16,1,.3,1)}.fullscreen-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:999998;display:none;align-items:center;justify-content:center}#3d-preview-container.fullscreen-modal{position:relative!important;width:96vw!important;height:96vh!important;max-width:none!important;max-height:none!important;z-index:999999!important;box-shadow:0 25px 50px -12px #000c!important;border:1px solid rgba(88,166,255,.3)!important;border-radius:16px!important;background:#0d1117fa!important;margin:0!important;transform:none!important;transition:all .35s cubic-bezier(.16,1,.3,1)!important}#preview-loading{color:var(--text-muted);font-weight:500;font-size:1.1rem;position:absolute;z-index:5;transition:none!important}#3d-preview-container canvas{position:absolute;top:0;left:0;width:100%;height:100%;cursor:grab;z-index:10}#3d-preview-container canvas:active{cursor:grabbing}header{text-align:center;margin-bottom:2.5rem}h1{font-size:2.5rem;font-weight:700;margin-bottom:.5rem;background:linear-gradient(135deg,#58a6ff,#a371f7);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}header p{color:var(--text-muted);font-size:1.1rem}.location-hint{background:#58a6ff1a;border:1px solid rgba(88,166,255,.2);border-radius:12px;padding:1rem 1.25rem;margin-bottom:2rem;display:flex;gap:1rem;align-items:flex-start;font-size:.9rem;color:var(--text-main);line-height:1.5}.location-hint svg{color:var(--accent-color);flex-shrink:0;margin-top:2px}.location-hint code{background:#0000004d;padding:.2rem .4rem;border-radius:4px;font-family:monospace;color:#a371f7;word-break:break-all;font-size:.85rem}.tooltip-icon{position:relative;display:inline-flex;align-items:center;vertical-align:middle;margin-left:4px;color:#f59e0b;cursor:help;outline:none}.tooltip-icon svg{color:#f59e0b;flex-shrink:0;transition:color .2s ease}.tooltip-icon:hover svg,.tooltip-icon:focus svg{color:#fbbf24}.tooltip-text{visibility:hidden;opacity:0;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#0d1117f2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(245,158,11,.3);color:#fde68a;padding:.6rem .8rem;border-radius:8px;font-size:.78rem;line-height:1.45;width:260px;text-align:left;font-weight:400;box-shadow:0 8px 24px #0006;transition:opacity .2s ease,visibility .2s ease;z-index:100;pointer-events:none}.tooltip-text:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#f59e0b4d}.tooltip-icon:hover .tooltip-text,.tooltip-icon:focus .tooltip-text{visibility:visible;opacity:1}.file-drop-area{border:2px dashed var(--input-border);border-radius:12px;padding:1.5rem;text-align:center;transition:all .3s ease;background:#0003;margin-bottom:1.25rem;position:relative}.file-drop-area.dragover{border-color:var(--accent-color);background:#58a6ff0d}.file-drop-area.has-file{border-style:solid;border-color:var(--success);background:#2ea0430d}.upload-icon{color:var(--text-muted);margin-bottom:1rem;transition:color .3s ease}.file-drop-area.dragover .upload-icon,.file-drop-area.has-file .upload-icon{color:var(--accent-color)}.file-drop-area.has-file .upload-icon{color:var(--success)}.drop-text{font-weight:500;margin-bottom:.5rem}.or-text{font-size:.9rem;color:var(--text-muted);margin-bottom:1rem}.file-name-display{margin-top:1rem;font-weight:600;color:var(--success);word-break:break-all}.btn-primary,.btn-accent{display:inline-block;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s ease;border:none;font-family:inherit}.btn-primary{background-color:var(--input-bg);color:var(--text-main);border:1px solid var(--panel-border)}.btn-primary:hover{background-color:#ffffff1a;border-color:#fff3}.btn-accent{width:100%;background:linear-gradient(135deg,#58a6ff,#3182ce);color:#fff;padding:1rem;font-size:1.1rem;margin-top:1rem;box-shadow:0 4px 14px #58a6ff63}.btn-accent:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #58a6ff3b;background:linear-gradient(135deg,#69b4ff,#4293df)}.btn-accent:disabled{background:#30363d;color:var(--text-muted);cursor:not-allowed;box-shadow:none}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1rem}.form-group{display:flex;flex-direction:column}.form-group label{font-size:.8rem;font-weight:500;color:var(--text-muted);margin-bottom:.3rem}input[type=number],input[type=text],select{background-color:var(--input-bg);border:1px solid var(--input-border);color:var(--text-main);padding:.5rem .75rem;border-radius:6px;font-size:.9rem;font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease}input[type=number]:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #58a6ff4d}.checkbox-group{margin-bottom:1rem}.custom-checkbox{display:flex;align-items:center;cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none}.custom-checkbox input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{height:24px;width:24px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;margin-right:12px;position:relative;transition:all .2s ease}.custom-checkbox:hover input~.checkmark{border-color:var(--accent-color)}.custom-checkbox input:checked~.checkmark{background-color:var(--accent-color);border-color:var(--accent-color)}.checkmark:after{content:"";position:absolute;display:none;left:8px;top:4px;width:6px;height:12px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.custom-checkbox input:checked~.checkmark:after{display:block}.status-message{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);padding:.85rem 1.5rem;border-radius:12px;text-align:center;font-weight:500;font-size:.95rem;z-index:1000;pointer-events:none;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 8px 32px #0006;animation:toastIn .4s cubic-bezier(.16,1,.3,1);transition:opacity .4s ease,transform .4s ease;white-space:nowrap}.status-message.hidden{display:none}.status-message.toast-out{opacity:0;transform:translate(-50%) translateY(10px)}.status-message.error{background:#f8514926;color:#ff7b72;border:1px solid rgba(248,81,73,.35)}.status-message.success{background:#2ea04326;color:#56d364;border:1px solid rgba(46,160,67,.35)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media(max-width:900px){.main-layout{grid-template-columns:1fr}.preview-column{height:400px;min-height:400px}}@media(max-width:600px){.config-grid{grid-template-columns:1fr;gap:1rem}.glass-panel{padding:2rem 1.5rem}}.bone-tree-container{background:var(--input-bg);border:1px solid var(--input-border);border-radius:8px;max-height:180px;overflow-y:scroll;padding:.5rem;margin-bottom:1rem}.bone-tree-container::-webkit-scrollbar{width:6px}.bone-tree-container::-webkit-scrollbar-track{background:#0003;border-radius:4px}.bone-tree-container::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.bone-tree-container::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.bone-tree-empty{padding:1rem;text-align:center;color:var(--text-muted);font-size:.9rem;font-style:italic}.bone-group details summary{cursor:pointer;font-weight:500;color:var(--text-main);list-style:none;display:flex;align-items:center;padding:.4rem .5rem;border-radius:4px;transition:background .2s}.bone-group details summary:hover{background:#ffffff0d}.bone-group details summary::-webkit-details-marker{display:none}.bone-group details summary:before{content:"▶";font-size:.7em;color:var(--accent-color);margin-right:8px;transition:transform .2s}.bone-group details[open] summary:before{transform:rotate(90deg)}.tree-cb{margin-right:8px;accent-color:var(--accent-color);cursor:pointer;width:16px;height:16px;vertical-align:middle}.cb-label{cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.tree-children{padding-left:2rem;padding-bottom:.5rem;display:grid;grid-template-columns:1fr 1fr;gap:4px}.bone-item{font-size:.85rem;color:var(--text-muted);display:flex;align-items:center;padding:2px 0}.bone-item:hover{color:var(--text-main)}.bone-selection-overlay{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#0d1117d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(88,166,255,.3);border-radius:10px;padding:8px 14px;display:flex;align-items:center;gap:10px;z-index:30;font-size:.85rem;font-weight:600;color:#58a6ff;pointer-events:auto;box-shadow:0 4px 16px #0006;animation:overlayFadeIn .2s ease}.gizmo-mode-controls{position:absolute;top:16px;right:16px;background:#0d1117b3;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(88,166,255,.25);border-radius:12px;display:flex;flex-direction:column;padding:6px;gap:6px;z-index:30;box-shadow:0 8px 32px #00000080}.gizmo-mode-controls:hover .shortcuts-tooltip{opacity:1}.gizmo-mode-btn{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:10px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.16,1,.3,1);border-radius:8px}.gizmo-mode-btn:hover{background:#58a6ff26;color:var(--text-main)}.gizmo-mode-btn.active{background:var(--accent-color);color:#fff;box-shadow:0 0 12px #58a6ff66}@keyframes overlayFadeIn{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.bone-overlay-btn{background:#ffffff14;border:1px solid rgba(255,255,255,.12);color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.bone-overlay-btn:hover{background:#58a6ff26;border-color:#58a6ff4d;color:#58a6ff}.reset-pose-btn{position:absolute;bottom:16px;right:16px;background:#f8514926;border:1px solid rgba(248,81,73,.4);border-radius:10px;color:#ff7b72;cursor:pointer;padding:10px 16px;display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600;z-index:30;box-shadow:0 4px 16px #0006;transition:all .2s cubic-bezier(.16,1,.3,1)}.reset-pose-btn:hover{background:#f8514940;border-color:#f8514999;transform:translateY(-2px);box-shadow:0 6px 20px #f851494d}.reset-pose-btn:active{transform:translateY(0)}
