*{box-sizing:border-box;margin:0;padding:0}:root{--neutral-0:#fff;--neutral-50:#fafafa;--neutral-100:#f4f4f5;--neutral-200:#e4e4e7;--neutral-300:#d4d4d8;--neutral-400:#a1a1aa;--neutral-500:#71717a;--neutral-600:#52525b;--neutral-700:#3f3f46;--neutral-800:#27272a;--neutral-900:#18181b;--neutral-950:#09090b;--brand-300:#a5b4fc;--brand-400:#818cf8;--brand-500:#6366f1;--brand-600:#4f46e5;--brand-700:#4338ca;--violet-400:#a78bfa;--violet-500:#8b5cf6;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--teal-400:#2dd4bf;--teal-500:#14b8a6;--green-400:#4ade80;--green-500:#22c55e;--amber-400:#fbbf24;--amber-500:#f59e0b;--red-400:#f87171;--red-500:#ef4444;--pink-400:#f472b6;--pink-500:#ec4899;--color-bg-app:var(--neutral-950);--color-bg-surface:#18181bc7;--color-bg-elevated:#27272aeb;--color-bg-overlay:#09090bf0;--color-bg-subtle:#ffffff08;--color-bg-muted:#ffffff0d;--color-bg-hover:#ffffff14;--color-bg-pressed:#ffffff0a;--color-bg-input:#ffffff0f;--color-bg-input-hover:#ffffff17;--color-border-subtle:#ffffff0f;--color-border-default:#ffffff1a;--color-border-strong:#ffffff29;--color-border-focus:var(--brand-500);--color-text-primary:var(--neutral-100);--color-text-secondary:var(--neutral-400);--color-text-tertiary:var(--neutral-500);--color-text-disabled:var(--neutral-600);--color-text-inverse:var(--neutral-950);--color-text-link:var(--brand-400);--color-accent:var(--brand-500);--color-accent-hover:var(--brand-400);--color-accent-pressed:var(--brand-600);--color-accent-soft:#6366f126;--color-accent-softer:#6366f114;--color-success:var(--green-500);--color-success-hover:var(--green-400);--color-success-soft:#22c55e24;--color-warning:var(--amber-500);--color-warning-hover:var(--amber-400);--color-warning-soft:#f59e0b24;--color-danger:var(--red-500);--color-danger-hover:var(--red-400);--color-danger-soft:#ef444424;--color-info:var(--cyan-500);--color-info-soft:#06b6d424;--gradient-brand:linear-gradient(135deg, var(--brand-500) 0%, var(--violet-500) 100%);--gradient-accent:linear-gradient(90deg, var(--brand-500), var(--violet-500));--gradient-surface:linear-gradient(180deg, #ffffff0a 0%, #fff0 100%);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "SF Mono", Consolas, monospace;--font-size-xs:11px;--font-size-sm:12px;--font-size-md:13px;--font-size-base:14px;--font-size-lg:16px;--font-size-xl:18px;--font-size-2xl:20px;--font-size-3xl:24px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.625;--letter-spacing-tight:-.025em;--letter-spacing-normal:0;--letter-spacing-wide:.025em;--letter-spacing-wider:.05em;--space-0:0;--space-0-5:2px;--space-1:4px;--space-1-5:6px;--space-2:8px;--space-2-5:10px;--space-3:12px;--space-3-5:14px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-none:0;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:20px;--radius-full:9999px;--shadow-xs:0 1px 2px #0000004d;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 16px #00000059;--shadow-lg:0 8px 32px #0006;--shadow-xl:0 16px 48px #00000080;--shadow-inner:inset 0 1px 2px #0000004d;--shadow-glow:0 0 24px #6366f140;--shadow-glow-sm:0 0 12px #6366f133;--shadow-focus-ring:0 0 0 3px var(--color-accent-softer);--ease-standard:cubic-bezier(.4, 0, .2, 1);--ease-emphasized:cubic-bezier(.2, 0, 0, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.1s;--duration-normal:.15s;--duration-slow:.25s;--duration-slower:.4s;--transition-fast:var(--duration-fast) var(--ease-standard);--transition-normal:var(--duration-normal) var(--ease-standard);--transition-slow:var(--duration-slow) var(--ease-standard);--transition-spring:var(--duration-slow) var(--ease-spring);--panel-width:300px;--panel-padding:var(--space-3);--panel-radius:var(--radius-xl);--panel-bg:var(--color-bg-surface);--panel-border:var(--color-border-subtle);--panel-blur:blur(20px);--panel-shadow:var(--shadow-xl);--tab-height:44px;--tab-padding-x:var(--space-4);--tab-font-size:var(--font-size-sm);--tab-font-weight:var(--font-weight-semibold);--tab-color:var(--color-text-tertiary);--tab-color-hover:var(--color-text-secondary);--tab-color-active:var(--color-text-primary);--tab-indicator-color:var(--color-accent);--tab-indicator-height:2px;--card-bg:var(--color-bg-subtle);--card-border:var(--color-border-subtle);--card-radius:var(--radius-lg);--card-padding:var(--space-4);--card-gap:var(--space-3);--btn-height-sm:30px;--btn-height-md:36px;--btn-height-lg:44px;--btn-radius:var(--radius-md);--btn-font-size:var(--font-size-sm);--btn-font-weight:var(--font-weight-medium);--btn-padding-x-sm:var(--space-3);--btn-padding-x-md:var(--space-4);--btn-padding-x-lg:var(--space-6);--btn-gap:var(--space-2);--input-height:38px;--input-height-sm:32px;--input-height-lg:44px;--input-radius:var(--radius-md);--input-padding-x:var(--space-3);--input-bg:var(--color-bg-input);--input-bg-hover:var(--color-bg-input-hover);--input-bg-focus:var(--color-accent-softer);--input-border:var(--color-border-default);--input-border-hover:var(--color-border-strong);--input-border-focus:var(--color-border-focus);--input-color:var(--color-text-primary);--input-placeholder:var(--color-text-disabled);--input-font-size:var(--font-size-sm);--select-bg:var(--input-bg);--select-bg-hover:var(--input-bg-hover);--select-border:var(--input-border);--select-border-hover:var(--input-border-hover);--select-radius:var(--input-radius);--select-height:var(--input-height);--select-icon-color:var(--color-text-tertiary);--select-icon-size:16px;--checkbox-size:16px;--checkbox-border-radius:var(--radius-xs);--checkbox-bg:var(--color-bg-input);--checkbox-bg-checked:var(--color-accent);--color-input-swatch-size:32px;--color-input-height:32px;--color-input-radius:var(--radius-sm);--color-input-text-size:var(--font-size-xs);--slider-height:6px;--slider-thumb-size:16px;--slider-track-bg:var(--color-bg-muted);--slider-track-fill:var(--color-accent);--slider-thumb-bg:#fff;--slider-thumb-shadow:var(--shadow-sm);--badge-padding:var(--space-1) var(--space-2);--badge-font-size:10px;--badge-font-weight:var(--font-weight-medium);--badge-radius:var(--radius-full);--badge-height:18px;--toolbar-btn-size:40px;--toolbar-btn-size-mobile:34px;--toolbar-radius:var(--radius-xl);--toolbar-gap:var(--space-1);--toolbar-padding:var(--space-2);--info-bar-height:36px;--info-bar-height-mobile:30px;--info-bar-padding-x:var(--space-4);--dialog-min-width:340px;--dialog-padding:var(--space-6);--dialog-radius:var(--radius-xl);--dialog-shadow:var(--shadow-xl);--dialog-overlay-bg:#0009;--dialog-overlay-blur:blur(8px);--toast-radius:var(--radius-md);--toast-shadow:var(--shadow-lg);--z-base:1;--z-elevated:10;--z-dropdown:100;--z-sticky:500;--z-modal:1000;--z-popover:1500;--z-toast:2000;--z-tooltip:3000}body{background:var(--color-bg-app);font-family:var(--font-sans);font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;overflow:hidden}#canvas-container{z-index:var(--z-base);position:fixed;inset:0}#canvas-container canvas{width:100%;height:100%;display:block}#drop-overlay{z-index:var(--z-modal);background:var(--color-bg-overlay);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);justify-content:center;align-items:center;display:none;position:fixed;inset:0}#drop-overlay.active{display:flex}.drop-message{text-align:center;color:var(--color-accent);animation:2s ease-in-out infinite pulse}.drop-message p{font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);margin-top:var(--space-4)}.drop-message span{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-top:var(--space-2);display:block}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}}#loading-screen{z-index:calc(var(--z-modal) - 1);background:var(--color-bg-overlay);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);justify-content:center;align-items:center;display:none;position:fixed;inset:0}#loading-screen.active{display:flex}.loading-content{text-align:center}.spinner{border:3px solid var(--color-border-subtle);border-top-color:var(--color-accent);width:40px;height:40px;margin:0 auto var(--space-4);border-radius:50%;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#loading-text{font-size:var(--font-size-base);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);margin-bottom:var(--space-4)}.progress-bar-container{background:var(--color-bg-muted);border-radius:var(--radius-full);width:200px;height:3px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--brand-500), var(--violet-500));border-radius:var(--radius-full);width:0%;height:100%;transition:width var(--transition-normal)}#toolbar{left:var(--space-4);z-index:var(--z-dropdown);gap:var(--space-1);padding:var(--space-2);background:var(--panel-bg);-webkit-backdrop-filter:var(--panel-blur);backdrop-filter:var(--panel-blur);border:1px solid var(--panel-border);border-radius:var(--toolbar-radius);box-shadow:var(--panel-shadow);flex-direction:column;display:flex;position:fixed;top:50%;transform:translateY(-50%)}#toolbar button{width:var(--toolbar-btn-size);height:var(--toolbar-btn-size);border-radius:var(--radius-lg);color:var(--color-text-tertiary);cursor:pointer;transition:var(--transition-normal);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}#toolbar button:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}#toolbar button.active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent-hover)}.toolbar-divider{background:var(--color-border-subtle);height:1px;margin:var(--space-1) 0}#control-panel{right:var(--space-4);bottom:60px;top:var(--space-4);width:var(--panel-width);z-index:var(--z-dropdown);background:var(--panel-bg);-webkit-backdrop-filter:var(--panel-blur);backdrop-filter:var(--panel-blur);border:1px solid var(--panel-border);border-radius:var(--panel-radius);transition:top var(--transition-slow);box-shadow:var(--panel-shadow);flex-direction:column;display:flex;position:fixed;overflow:hidden}#control-panel.collapsed{top:calc(100% - 60px - var(--tab-height))}.panel-tabs{border-bottom:1px solid var(--color-border-subtle);background:var(--color-bg-subtle);flex-shrink:0;display:flex}#control-panel.collapsed .panel-tabs{display:none}.panel-tab{height:var(--tab-height);font-size:var(--tab-font-size);font-weight:var(--tab-font-weight);color:var(--tab-color);border:none;border-bottom:var(--tab-indicator-height) solid transparent;cursor:pointer;transition:var(--transition-normal);white-space:nowrap;background:0 0;flex:1;justify-content:center;align-items:center;display:flex}.panel-tab:hover{color:var(--tab-color-hover);background:var(--color-bg-subtle)}.panel-tab.active{color:var(--tab-color-active);border-bottom-color:var(--tab-indicator-color)}.panel-content{padding:var(--panel-padding);scrollbar-width:thin;scrollbar-color:var(--color-border-default) transparent;flex:1;display:none;overflow-y:auto}.panel-content.active{display:block}#control-panel.collapsed .panel-content{display:none}.panel-content::-webkit-scrollbar{width:5px}.panel-content::-webkit-scrollbar-track{background:0 0}.panel-content::-webkit-scrollbar-thumb{background:var(--color-border-default);border-radius:var(--radius-full)}.panel-content::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}#btn-panel-toggle{justify-content:center;align-items:center;gap:var(--space-1);width:100%;height:var(--tab-height);background:var(--color-bg-subtle);border:none;border-top:1px solid var(--color-border-subtle);color:var(--color-text-tertiary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-normal);flex-shrink:0;display:flex}#btn-panel-toggle:hover{color:var(--color-text-secondary);background:var(--color-bg-muted)}#btn-panel-toggle svg{transition:transform var(--transition-slow)}#control-panel.collapsed #btn-panel-toggle svg{transform:rotate(180deg)}#control-panel.collapsed .toggle-label{display:none}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding)}.card+.card{margin-top:var(--card-gap)}.card-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:var(--letter-spacing-wider);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.param-row{align-items:center;gap:var(--space-3);min-height:var(--btn-height-md);display:flex}.param-row label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);flex-shrink:0;min-width:40px}.param-row input[type=range]{flex:1;min-width:0}.param-row span{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-accent);text-align:right;min-width:36px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:var(--btn-height-md);padding:var(--btn-padding-x-md);font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);font-family:var(--font-sans);border-radius:var(--btn-radius);cursor:pointer;transition:var(--transition-normal);white-space:nowrap;border:1px solid #0000;line-height:1;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:0 1px 2px #0003,inset 0 1px #ffffff1a}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);transform:translateY(-1px);box-shadow:0 2px 8px #6366f166,inset 0 1px #ffffff1a}.btn-primary:active:not(:disabled){background:var(--color-accent-pressed);transform:translateY(0);box-shadow:inset 0 1px 2px #0003}.btn-secondary{background:var(--color-bg-muted);color:var(--color-text-secondary);border-color:var(--color-border-default)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-text-primary);border-color:var(--color-border-strong)}.btn-secondary:active:not(:disabled){background:var(--color-accent-soft)}.btn-ghost{color:var(--color-text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-text-primary)}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 1px 2px #0003,inset 0 1px #ffffff1a}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);transform:translateY(-1px);box-shadow:0 2px 8px #f43f5e66,inset 0 1px #ffffff1a}.btn-sm{height:var(--btn-height-sm);padding:var(--btn-padding-x-sm);font-size:var(--font-size-xs);border-radius:var(--radius-sm)}.btn-lg{height:var(--btn-height-lg);padding:var(--btn-padding-x-lg);font-size:var(--font-size-base)}.btn-block{width:100%}.btn-icon{width:var(--btn-height-md);padding:0}.btn-icon.btn-sm{width:var(--btn-height-sm)}.badge{padding:var(--badge-padding);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);background:var(--color-bg-muted);border-radius:var(--badge-radius);color:var(--color-text-secondary);align-items:center;line-height:1;display:inline-flex}.badge-primary{background:var(--color-accent-soft);color:var(--color-accent-hover)}.badge-success{background:var(--color-success-soft);color:var(--green-400)}.badge-warning{background:var(--color-warning-soft);color:var(--amber-400)}.badge-danger{background:var(--color-danger-soft);color:var(--red-400)}.checkbox-row{align-items:center;gap:var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.checkbox-row span{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.info-line{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-primary);font-variant-numeric:tabular-nums;font-family:var(--font-mono);letter-spacing:var(--letter-spacing-tight)}.info-row{margin-top:var(--space-1);justify-content:space-between;align-items:center;display:flex}.info-row span{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-accent);font-variant-numeric:tabular-nums;font-family:var(--font-mono)}#bone-groups{gap:var(--space-3);flex-direction:column;display:flex}.bone-group{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding)}.group-header{margin-bottom:0}.group-toggle{align-items:center;gap:var(--space-3);cursor:pointer;width:100%;min-height:var(--btn-height-md);display:flex}.group-toggle input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer;flex-shrink:0;width:16px;height:16px}.group-name{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.bone-count{font-size:10px;font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);background:var(--color-bg-muted);padding:var(--space-0-5) var(--space-2);border-radius:var(--badge-radius);font-variant-numeric:tabular-nums}.group-params{margin-top:var(--space-3);gap:var(--space-1);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);flex-direction:column;display:flex}.view-controls{gap:var(--space-3);flex-direction:column;display:flex}.view-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding)}.view-section-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:var(--letter-spacing-wider);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.view-info-box{gap:var(--space-2);flex-direction:column;display:flex}.view-presets{gap:var(--space-2);display:flex}.view-preset-btn{height:var(--btn-height-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);background:var(--color-bg-muted);border:1px solid var(--color-border-default);border-radius:var(--btn-radius);color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-normal);flex:1;justify-content:center;align-items:center;display:flex}.view-preset-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary);border-color:var(--color-accent);box-shadow:var(--shadow-glow-sm)}.view-actions,#saved-models{gap:var(--space-2);flex-direction:column;display:flex}.model-search{width:100%;height:32px;padding:0 var(--space-3);background:var(--color-bg-input);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-sans);transition:var(--transition-normal);margin-bottom:var(--space-2);outline:none}.model-search:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus-ring)}.model-search::placeholder{color:var(--color-text-disabled)}.saved-item{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--card-radius);transition:var(--transition-normal);overflow:hidden}.saved-item:hover{border-color:var(--color-border-default)}.saved-header{align-items:center;gap:var(--space-2);padding:var(--space-2-5) var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-fast);display:flex}.saved-header:hover{background:var(--color-bg-subtle)}.saved-expand-icon{width:14px;height:14px;color:var(--color-text-tertiary);transition:transform var(--transition-normal);flex-shrink:0}.saved-item.expanded .saved-expand-icon{transform:rotate(90deg)}.saved-header-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.saved-alias{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.saved-time{font-size:10px;font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);font-family:var(--font-mono)}.saved-detail{padding:0 var(--space-3) var(--space-3);display:none}.saved-item.expanded .saved-detail{display:block}.saved-meta{font-size:10px;font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);margin-bottom:var(--space-1);text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);overflow:hidden}.saved-actions{gap:var(--space-1-5);margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border-subtle);display:flex}.saved-actions button{height:var(--btn-height-sm);font-size:10px;font-weight:var(--font-weight-medium);font-family:var(--font-sans);background:var(--color-bg-muted);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--color-text-tertiary);cursor:pointer;transition:var(--transition-normal);flex:1;justify-content:center;align-items:center;display:flex}.saved-actions button:hover{background:var(--color-bg-hover);color:var(--color-text-secondary);border-color:var(--color-border-default)}input[type=range]{appearance:none;height:var(--slider-height);background:var(--slider-track-bg);border-radius:var(--radius-full);cursor:pointer;outline:none;position:relative}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:var(--slider-thumb-size);height:var(--slider-thumb-size);background:var(--slider-thumb-bg);cursor:pointer;box-shadow:var(--slider-thumb-shadow);transition:transform var(--transition-fast), box-shadow var(--transition-fast);border:none;border-radius:50%}input[type=range]::-webkit-slider-thumb:hover{box-shadow:var(--shadow-md), var(--shadow-glow-sm);transform:scale(1.15)}input[type=range]::-webkit-slider-thumb:active{transform:scale(1.05)}input[type=range]::-moz-range-thumb{width:var(--slider-thumb-size);height:var(--slider-thumb-size);background:var(--slider-thumb-bg);cursor:pointer;box-shadow:var(--slider-thumb-shadow);border:none;border-radius:50%}select{width:100%;height:var(--select-height);padding:var(--input-padding-x);background:var(--select-bg);border:1px solid var(--select-border);border-radius:var(--select-radius);color:var(--input-color);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-sans);cursor:pointer;transition:var(--transition-normal);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;outline:none;padding-right:36px}select:hover{background-color:var(--select-bg-hover);border-color:var(--select-border-hover)}select:focus{border-color:var(--input-border-focus);box-shadow:0 0 0 3px var(--color-accent-softer);background-color:var(--input-bg-focus)}select option{background:var(--neutral-800);color:var(--color-text-primary);padding:var(--space-2)}input[type=checkbox]{appearance:none;background:var(--color-bg-input);border:1.5px solid var(--color-border-default);border-radius:var(--radius-xs);cursor:pointer;width:16px;height:16px;transition:var(--transition-normal);flex-shrink:0;position:relative}input[type=checkbox]:hover{border-color:var(--color-accent);background:var(--color-accent-softer)}input[type=checkbox]:checked{background:var(--color-accent);border-color:var(--color-accent)}input[type=checkbox]:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:1.5px;left:4.5px;transform:rotate(45deg)}input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px var(--color-accent-softer)}input[type=color]{background:var(--color-bg-input);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);cursor:pointer;width:36px;height:28px;transition:var(--transition-normal);padding:3px}input[type=color]:hover{border-color:var(--color-border-strong)}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}.color-input-group{align-items:center;gap:var(--space-2);flex:1;min-width:0;display:flex}.color-picker{background:var(--color-bg-input);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);cursor:pointer;width:32px;height:28px;transition:var(--transition-normal);flex-shrink:0;padding:2px}.color-picker:hover{border-color:var(--color-border-strong)}.color-picker::-webkit-color-swatch-wrapper{padding:0}.color-picker::-webkit-color-swatch{border:none;border-radius:2px}.color-text-input{min-width:0;height:28px;padding:0 var(--space-2);background:var(--color-bg-input);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);font-family:var(--font-mono);transition:var(--transition-normal);text-transform:lowercase;outline:none;flex:1}.color-text-input:hover{border-color:var(--color-border-strong);background:var(--color-bg-input-hover)}.color-text-input:focus{border-color:var(--color-accent);background:var(--color-accent-softer);box-shadow:0 0 0 2px var(--color-accent-softer)}.color-text-input::placeholder{color:var(--color-text-disabled);text-transform:none;font-size:10px}#info-bar{z-index:var(--z-dropdown);height:var(--info-bar-height);padding:0 var(--space-4);background:var(--panel-bg);-webkit-backdrop-filter:var(--panel-blur);backdrop-filter:var(--panel-blur);border-top:1px solid var(--panel-border);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);justify-content:space-between;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}#fps-counter{font-variant-numeric:tabular-nums;font-family:var(--font-mono);color:var(--color-accent)}#model-info{font-family:var(--font-mono);font-size:10px}.input-dialog-overlay{z-index:var(--z-toast);background:var(--dialog-overlay-bg);-webkit-backdrop-filter:var(--dialog-overlay-blur);backdrop-filter:var(--dialog-overlay-blur);animation:fadeIn var(--transition-normal);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.input-dialog{background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--dialog-radius);padding:var(--dialog-padding);min-width:var(--dialog-min-width);max-width:90vw;box-shadow:var(--dialog-shadow);animation:slideUp var(--transition-slow) var(--ease-spring)}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.input-dialog-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-5)}.input-dialog-field{width:100%;height:var(--input-height-lg);padding:var(--input-padding-x);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);color:var(--input-color);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);font-family:var(--font-sans);transition:var(--transition-normal);outline:none}.input-dialog-field:hover{background:var(--input-bg-hover);border-color:var(--input-border-hover)}.input-dialog-field:focus{background:var(--input-bg-focus);border-color:var(--input-border-focus);box-shadow:0 0 0 3px var(--color-accent-softer)}.input-dialog-buttons{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);display:flex}.input-dialog-btn{height:var(--btn-height-md);padding:0 var(--space-5);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);font-family:var(--font-sans);border-radius:var(--btn-radius);cursor:pointer;transition:var(--transition-normal);border:1px solid #0000}.input-dialog-btn.cancel{background:var(--color-bg-muted);color:var(--color-text-secondary);border-color:var(--color-border-default)}.input-dialog-btn.cancel:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.input-dialog-btn.confirm{background:var(--color-accent);color:#fff;box-shadow:0 1px 2px #0003}.input-dialog-btn.confirm:hover{background:var(--color-accent-hover);transform:translateY(-1px);box-shadow:0 2px 8px #6366f166}.input-dialog-btn.danger{background:var(--color-danger);color:#fff;box-shadow:0 1px 2px #0003}.input-dialog-btn.danger:hover{background:var(--color-danger-hover);transform:translateY(-1px);box-shadow:0 2px 8px #f43f5e66}@media (width<=768px){:root{--toolbar-btn-size:var(--toolbar-btn-size-mobile);--info-bar-height:var(--info-bar-height-mobile)}#toolbar{left:var(--space-2);padding:var(--space-1-5)}#control-panel{right:var(--space-2);left:var(--space-2);width:auto;max-height:50vh;top:auto;bottom:38px}#control-panel.collapsed{left:auto;right:var(--space-2);width:auto;min-width:160px;max-height:none;top:auto;bottom:38px}#btn-panel-toggle{height:48px;font-size:var(--font-size-sm)}.panel-tab{font-size:var(--font-size-xs);padding:var(--space-2) 0}.panel-content{padding:var(--space-2-5)}.param-row{min-height:var(--btn-height-sm)}.param-row label{min-width:32px;font-size:var(--font-size-xs)}#info-bar{padding:0 var(--space-2)}}@media (width<=480px){.panel-tabs{scrollbar-width:none;overflow-x:auto}.panel-tabs::-webkit-scrollbar{display:none}.panel-tab{padding:var(--space-2) var(--space-3);flex:none}}
