:root,[data-theme=dark]{--color-primary: #c44536;--color-primary-light: #d45d4e;--color-primary-dark: #a82e20;--color-bg-primary: #1a1110;--color-bg-secondary: #251817;--color-bg-tertiary: #2d1f1e;--color-bg-light: #3e2a28;--color-bg-overlay: rgba(26, 17, 16, .95);--color-text-primary: #f5e6e3;--color-text-secondary: #d4b8b4;--color-text-tertiary: #a38885;--color-text-disabled: #66514e;--icon-filter: brightness(0) invert(1);--icon-filter-hover: brightness(0) invert(1) drop-shadow(0 0 2px var(--color-primary-light));--color-border: #553a36;--color-border-light: #77524d;--color-border-dark: #3e2a28;--color-accent: #b03a2e;--color-error: #e74c3c;--color-success: #58d68d;--color-warning: #f39c12;--color-info: #5dade2;--hover-bg: rgba(255, 255, 255, .1);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-inner: inset 0 2px 4px rgba(0, 0, 0, .2);--scrollbar-track: #1a1110;--scrollbar-thumb: #553a36;--scrollbar-thumb-hover: #77524d}[data-theme=light]{--color-primary: #7a5a45;--color-primary-light: #8f6f5b;--color-primary-dark: #5d4433;--color-bg-primary: #c5bfb3;--color-bg-secondary: #b5afa3;--color-bg-tertiary: #a5a099;--color-bg-light: #d2ccc0;--color-bg-overlay: rgba(216, 210, 200, .95);--color-text-primary: #0f0c08;--color-text-secondary: #3d3128;--color-text-tertiary: #5a4d42;--color-text-disabled: #8a7f73;--icon-filter: brightness(0) invert(.15);--icon-filter-hover: brightness(0) invert(.05) drop-shadow(0 0 2px var(--color-primary));--color-border: #a39a8e;--color-border-light: #bfb8ad;--color-border-dark: #8a8176;--color-accent: #9f6b4d;--color-error: #c85a54;--color-success: #6b9b6e;--color-warning: #d89b4a;--color-info: #5b95bc;--hover-bg: rgba(0, 0, 0, .08);--shadow-sm: 0 2px 8px rgba(90, 77, 66, .12);--shadow-md: 0 4px 16px rgba(90, 77, 66, .16);--shadow-lg: 0 8px 32px rgba(90, 77, 66, .2);--shadow-inner: inset 0 2px 4px rgba(90, 77, 66, .08);--scrollbar-track: #c9c3b8;--scrollbar-thumb: #a39a8e;--scrollbar-thumb-hover: #8a8176}:root{--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-xxl: 2rem;--spacing-xxxl: 3rem;--font-family-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji";--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1.2rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-xxl: 1.5rem;--font-weight-light: 300;--font-weight-normal: 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.75;--border-radius-xs: .125rem;--border-radius-sm: .25rem;--border-radius-md: .5rem;--border-radius-lg: .75rem;--border-radius-xl: 1rem;--border-radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--transition-bounce: .4s cubic-bezier(.34, 1.56, .64, 1);--panel-width: 300px;--button-height: 2.75rem;--header-height: 4rem;--mobile-panel-width: 100%;--mobile-button-height: 3rem;--mobile-header-height: 3.75rem;--z-auto: auto;--z-dropdown: 1000;--z-sticky: 1100;--z-fixed: 1200;--z-modal: 1300;--z-popover: 1400;--z-tooltip: 1500;--z-toast: 1600;--z-overlay: 1700}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:var(--font-size-base);font-family:var(--font-family-system);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);overflow:hidden;width:100%;height:100vh;line-height:var(--line-height-normal);transition:background-color var(--transition-normal),color var(--transition-normal);overscroll-behavior:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-primary);margin-bottom:var(--spacing-md)}h1{font-size:var(--font-size-xxl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}h4{font-size:var(--font-size-base)}h5{font-size:var(--font-size-sm)}h6{font-size:var(--font-size-xs)}p{line-height:var(--line-height-normal);color:var(--color-text-secondary);margin-bottom:var(--spacing-md)}.lead{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.text-sm{font-size:var(--font-size-sm)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-muted{color:var(--color-text-tertiary)}.text-disabled{color:var(--color-text-disabled)}input,select,textarea,button{font-family:inherit;font-size:inherit;color:var(--color-text-primary);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-md);transition:all var(--transition-fast);padding:var(--spacing-sm) var(--spacing-md)}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary);background-color:var(--color-bg-primary);box-shadow:var(--shadow-sm)}button{cursor:pointer;font-weight:var(--font-weight-medium);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);min-height:var(--button-height);padding:var(--spacing-sm) var(--spacing-lg)}button:disabled{opacity:.6;cursor:not-allowed}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:var(--border-radius-sm)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--border-radius-sm);border:2px solid var(--scrollbar-track);transition:background-color var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}::-webkit-scrollbar-corner{background:var(--scrollbar-track)}*{scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);scrollbar-width:thin}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.sr-only{@extend .visually-hidden;}.no-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.pointer-events-none{pointer-events:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideOut{0%{transform:translate(0)}to{transform:translate(-100%)}}.fade-in{animation:fadeIn var(--transition-normal) forwards}.fade-out{animation:fadeOut var(--transition-normal) forwards}.slide-in{animation:slideIn var(--transition-normal) forwards}.slide-out{animation:slideOut var(--transition-normal) forwards}.hover-lift{transition:transform var(--transition-normal)}.hover-lift:hover{transform:translateY(-2px)}.theme-transition *{transition:background-color var(--transition-slow),color var(--transition-slow),border-color var(--transition-slow),box-shadow var(--transition-slow)!important}@media (max-width: 768px){:root{--font-size-base: 15px;--font-size-sm: 13px;--font-size-lg: 17px;--spacing-md: 1rem;--spacing-lg: 1.25rem;--panel-width: var(--mobile-panel-width);--button-height: var(--mobile-button-height)}body{overflow-y:auto;overflow-x:hidden;padding:0}button,a,[role=button]{min-height:44px;min-width:44px;touch-action:manipulation}::-webkit-scrollbar{width:6px;height:6px}.mobile-hidden{display:none!important}.mobile-full-width{width:100%!important;max-width:100%!important}.mobile-text-center{text-align:center!important}}@media (max-width: 480px){:root{--font-size-base: 14px;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.25rem}h1{font-size:var(--font-size-xl)}h2{font-size:var(--font-size-lg)}}@media (max-width: 768px) and (orientation: landscape){:root{--mobile-header-height: 3rem;--spacing-md: .5rem;--spacing-lg: .75rem}body{overflow-y:auto;padding-bottom:env(safe-area-inset-bottom)}}@media (min-width: 769px) and (max-width: 1024px){:root{--panel-width: 280px;--button-height: 2.5rem}}@media (hover: none) and (pointer: coarse){.hover-lift:hover{transform:none}a:hover{color:inherit}button:active,a:active{opacity:.7;transform:scale(.98)}}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (prefers-contrast: high){:root{--color-border: currentColor;--shadow-sm: 0 0 0 1px currentColor;--shadow-md: 0 0 0 1px currentColor;--shadow-lg: 0 0 0 1px currentColor}}@supports (padding: max(0px)){body{padding-left:max(var(--spacing-md),env(safe-area-inset-left));padding-right:max(var(--spacing-md),env(safe-area-inset-right));padding-top:max(var(--spacing-md),env(safe-area-inset-top));padding-bottom:max(var(--spacing-md),env(safe-area-inset-bottom))}}@media (prefers-color-scheme: light){:root:not([data-theme]){--color-primary: #8b4513;--color-primary-light: #a0522d;--color-primary-dark: #654321;--color-bg-primary: #fdf6e3;--color-bg-secondary: #f5ebd8;--color-bg-tertiary: #ede4d3;--color-bg-light: #fffbf0;--color-bg-overlay: rgba(253, 246, 227, .95);--color-text-primary: #2c1810;--color-text-secondary: #5d4037;--color-text-tertiary: #795548;--color-text-disabled: #a1887f;--color-border: #d7ccc8;--color-border-light: #efebe9;--color-border-dark: #bcaaa4;--color-accent: #d2691e;--color-error: #e57373;--color-success: #81c784;--color-warning: #ffb74d;--color-info: #64b5f6;--shadow-sm: 0 2px 8px rgba(139, 69, 19, .08);--shadow-md: 0 4px 16px rgba(139, 69, 19, .12);--shadow-lg: 0 8px 32px rgba(139, 69, 19, .16);--scrollbar-track: #f5ebd8;--scrollbar-thumb: #d7ccc8;--scrollbar-thumb-hover: #bcaaa4}}main{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1}#canvas{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:0;display:block;outline:none}aside{position:fixed;height:100%;width:var(--panel-width);background:var(--color-bg-overlay);color:var(--color-text-primary);overflow-y:auto;overflow-x:hidden;z-index:2;transition:transform var(--transition-normal);box-shadow:var(--shadow-lg);will-change:transform}#panel-left{left:0;border-right:1px solid var(--color-border);transform:translate(0)}#panel-left.hidden{transform:translate(-100%)}#panel-right{right:0;border-left:1px solid var(--color-border);transform:translate(0)}#panel-right.hidden{transform:translate(100%)}aside ul{list-style:none}aside li{border-bottom:1px solid var(--color-border);padding:var(--spacing-xl);transition:background-color var(--transition-fast)}aside li:last-child{border-bottom:none}aside li:hover{background-color:var(--hover-bg)}input[type=radio]{margin-right:var(--spacing-md);accent-color:var(--color-primary);cursor:pointer;width:18px;height:18px;transition:transform var(--transition-fast)}input[type=radio]:hover{transform:scale(1.1)}input[type=radio]:checked{accent-color:var(--color-primary-light)}.voronoi-pills{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem;margin-top:.5rem;margin-bottom:.5rem}.pill-item{padding:.4rem .2rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center}.pill-item:hover{background:var(--hover-bg);border-color:var(--color-accent)}.pill-item.active{background:var(--color-accent);color:var(--color-bg-primary);border-color:var(--color-accent)}.voronoi-pill:nth-child(3){margin-right:.5rem}.fragment-pills{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;margin-top:.5rem;margin-bottom:.5rem}.explosion-method-pills,.explosion-shape-pills{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem;margin-top:.5rem;margin-bottom:.5rem}.action-button{width:100%;padding:var(--spacing-md) var(--spacing-lg);margin-top:var(--spacing-sm);margin-bottom:var(--spacing-xs);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-text-primary);border-radius:var(--border-radius-md);transition:all var(--transition-normal)}.action-button:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.action-button:active{transform:translateY(0)}.reset-button{width:100%;padding:var(--spacing-sm) var(--spacing-md);margin-top:var(--spacing-xs);background:var(--color-bg-secondary);border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-sm);border-radius:var(--border-radius-sm)}.reset-button:hover{background:var(--color-bg-tertiary);border-color:var(--color-text-secondary)}@media (max-width: 768px){.explosion-method-pills,.explosion-shape-pills{gap:.3rem}.explosion-pill{padding:.5rem .3rem;font-size:.7rem}.action-button{padding:var(--spacing-sm) var(--spacing-md);font-size:.8rem}}.sliders{display:none;padding-left:var(--spacing-lg);padding-top:var(--spacing-md);accent-color:var(--color-primary);animation:slideDown var(--transition-normal)}.sliders.show{display:block}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.sliders label{display:flex;flex-direction:column;margin-bottom:var(--spacing-lg);font-size:var(--font-size-sm);cursor:pointer}.sliders label:first-child{margin-top:var(--spacing-md)}.param-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm);font-weight:var(--font-weight-semibold)}.param-name{color:var(--color-text-primary)}.param-value{color:var(--color-primary-light);min-width:45px;text-align:right;font-feature-settings:"tnum"}.slider-container{position:relative;width:100%;margin-top:var(--spacing-sm);height:20px;display:flex;align-items:center}.slider-track{position:absolute;top:50%;left:0;right:0;height:6px;background:var(--color-border);border-radius:var(--border-radius-sm);transform:translateY(-50%);overflow:hidden;z-index:1}.slider-fill{position:absolute;top:0;left:0;height:100%;background:var(--color-primary);border-radius:var(--border-radius-sm) 0 0 var(--border-radius-sm);transition:width var(--transition-fast);z-index:2}.sliders input[type=range]{position:relative;width:100%;height:20px;margin:0;cursor:pointer;appearance:none;-webkit-appearance:none;background:transparent!important;border:none!important;outline:none;z-index:3}.sliders input[type=range]::-webkit-slider-track{background:transparent!important;border:none!important;height:20px;-webkit-appearance:none}.sliders input[type=range]::-webkit-slider-runnable-track{background:transparent!important;border:none!important;height:20px;-webkit-appearance:none}.sliders input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;box-shadow:var(--shadow-md),0 0 0 2px var(--color-bg-primary);border:2px solid var(--color-bg-primary);transition:background var(--transition-fast),box-shadow var(--transition-fast);position:relative;z-index:4}.sliders input[type=range]::-webkit-slider-thumb:hover{background:var(--color-primary-light);box-shadow:var(--shadow-lg),0 0 0 2px var(--color-bg-primary)}.sliders input[type=range]::-webkit-slider-thumb:active{box-shadow:0 0 0 3px var(--color-primary-light),0 0 0 2px var(--color-bg-primary)}.sliders input[type=range]::-moz-range-track{background:transparent!important;border:none!important;height:6px}.sliders input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:2px solid var(--color-bg-primary);box-shadow:var(--shadow-md);transition:background var(--transition-fast)}.sliders input[type=range]::-moz-range-thumb:hover{background:var(--color-primary-light)}.sliders input[type=range]::-moz-range-progress{background:transparent!important}.slider-value-marker{position:absolute;top:-25px;transform:translate(-50%);background:var(--color-primary);color:var(--color-bg-primary);padding:2px 6px;border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);white-space:nowrap;opacity:0;transition:opacity var(--transition-fast);pointer-events:none;z-index:5}.slider-container:hover .slider-value-marker{opacity:1}.sliders input[type=range]:disabled{cursor:not-allowed}.sliders input[type=range]:disabled~.slider-track{opacity:.6}.sliders input[type=range]:disabled~.slider-track .slider-fill{background:var(--color-text-disabled)}.sliders input[type=range]:disabled::-webkit-slider-thumb{background:var(--color-text-disabled);cursor:not-allowed}.sliders input[type=range]:disabled::-moz-range-thumb{background:var(--color-text-disabled);cursor:not-allowed}.slider-intensity .slider-fill{background:var(--color-primary)}.slider-speed .slider-fill{background:var(--color-info)}.slider-size .slider-fill{background:var(--color-success)}@media (max-width: 768px){.slider-container{height:24px}.slider-track,.slider-fill{height:8px}.sliders input[type=range]{height:24px}.sliders input[type=range]::-webkit-slider-thumb{width:20px;height:20px}.sliders input[type=range]::-moz-range-thumb{width:20px;height:20px}.slider-value-marker{top:-28px;font-size:10px}}.buttons_top,.buttons_bottom{position:fixed;height:var(--button-height);z-index:1000;pointer-events:none}.buttons_top{top:var(--spacing-lg);left:0;right:0;display:flex;justify-content:center;align-items:center;gap:var(--spacing-md);padding:0 var(--spacing-lg);width:100%}.buttons_bottom{bottom:var(--spacing-lg);left:calc(var(--spacing-lg) + var(--panel-width));display:flex;gap:var(--spacing-md);transition:left var(--transition-normal)}button{background:var(--color-bg-overlay);border:1px solid var(--color-border);border-radius:var(--border-radius-md);cursor:pointer;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-normal);pointer-events:auto;display:flex;align-items:center;justify-content:center;will-change:transform}button:hover{background:var(--color-bg-tertiary);border-color:var(--color-primary);box-shadow:var(--shadow-md)}button:active{box-shadow:var(--shadow-sm)}button img{width:36px;height:36px;display:block;filter:var(--icon-filter, brightness(.9));transition:filter var(--transition-fast)}button:hover img{filter:var(--icon-filter-hover, brightness(1.2));transform:scale(1.1)}.btn-toggle-effects{position:fixed;left:calc(var(--spacing-lg) + var(--panel-width));top:var(--spacing-lg);transition:left var(--transition-normal)}body:has(#panel-left.hidden) .btn-toggle-effects{left:var(--spacing-lg)}.btn-toggle-env{position:fixed;right:calc(var(--spacing-lg) + var(--panel-width));top:var(--spacing-lg);transition:right var(--transition-normal)}body:has(#panel-right.hidden) .btn-toggle-env{right:var(--spacing-lg)}body:has(#panel-left.hidden) .buttons_bottom{left:var(--spacing-lg)}@media (max-width: 1024px){:root{--panel-width: 250px}aside{width:var(--panel-width)}aside li{padding:var(--spacing-xl)}}@media (max-width: 768px){:root{--panel-width: 100%;--button-height: 45px}aside{position:fixed;width:100%;height:auto;max-height:200px;inset:auto 0 0;border-top:1px solid var(--color-border);border-left:none;border-right:none;overflow-x:auto;overflow-y:hidden}#panel-left.hidden,#panel-right.hidden{transform:translateY(100%)}aside ul{display:flex;flex-direction:row}aside li{padding:var(--spacing-md);border-bottom:none;border-right:1px solid var(--color-border);white-space:nowrap;flex-shrink:0}aside li:last-child{border-right:none}.sliders{position:fixed;bottom:200px;left:0;right:0;background:var(--color-bg-overlay);padding:var(--spacing-lg);max-width:100%;border-top:1px solid var(--color-border);border-radius:0;overflow-y:auto;max-height:300px}.buttons_top{left:var(--spacing-sm);right:var(--spacing-sm);top:var(--spacing-sm);flex-wrap:wrap;gap:var(--spacing-sm);justify-content:space-between}.btn-toggle-effects,.btn-theme-toggle,.btn-toggle-env{position:static!important;transform:none!important}.btn-theme-toggle{width:var(--mobile-button-height);height:var(--mobile-button-height)}.theme-icon{width:18px;height:18px;filter:var(--icon-filter)}.buttons_bottom{bottom:220px;left:var(--spacing-sm);transform:none!important;flex-wrap:wrap}button img{width:32px;height:32px}}@media (max-width: 480px){.buttons_top{flex-wrap:wrap;gap:var(--spacing-sm)}.buttons_bottom{flex-direction:column;gap:var(--spacing-sm)}aside li{padding:var(--spacing-md) var(--spacing-sm);font-size:var(--font-size-sm)}}.btn-theme-toggle{position:fixed;left:50%;top:var(--spacing-lg);transform:translate(-50%);width:var(--button-height);height:var(--button-height);background-color:var(--color-bg-secondary);border:2px solid var(--color-border);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-normal);z-index:1000}.btn-theme-toggle:hover{background-color:var(--color-bg-tertiary);border-color:var(--color-primary);transform:translate(-50%) translateY(-2px);box-shadow:var(--shadow-md)}.btn-theme-toggle:active{transform:translate(-50%) translateY(0)}.theme-icon{position:absolute;width:20px;height:20px;color:var(--color-text-primary);transition:opacity var(--transition-normal),transform var(--transition-normal)}[data-theme=dark] .theme-icon-sun{opacity:1;transform:rotate(0) scale(1)}[data-theme=dark] .theme-icon-moon{opacity:0;transform:rotate(180deg) scale(0)}[data-theme=light] .theme-icon-sun{opacity:0;transform:rotate(-180deg) scale(0)}[data-theme=light] .theme-icon-moon{opacity:1;transform:rotate(0) scale(1)}.theme-transition *{transition:background-color .3s ease,color .3s ease,border-color .3s ease,fill .3s ease,stroke .3s ease}.theme-transition canvas{transition:none!important}.tooltip{position:fixed;z-index:10000;background:#000000eb;color:#fff;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;line-height:1.4;max-width:250px;word-wrap:break-word;white-space:normal;pointer-events:none;box-shadow:0 4px 12px #0000004d;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:0;transform:translateY(-5px) translateZ(0);transition:opacity .2s ease,transform .2s ease}.tooltip-visible{opacity:1;animation:tooltipFadeIn .15s ease-out forwards}@keyframes tooltipFadeIn{0%{opacity:0;transform:translateY(-5px) translateZ(0)}to{opacity:1;transform:translateY(0) translateZ(0)}}.tooltip:not(.tooltip-visible){animation:tooltipFadeOut .15s ease-in forwards}@keyframes tooltipFadeOut{0%{opacity:1;transform:translateY(0) translateZ(0)}to{opacity:0;transform:translateY(-5px) translateZ(0)}}.tooltip[data-placement=top]{transform:translateY(5px) translateZ(0)}.tooltip[data-placement=top].tooltip-visible{transform:translateY(0) translateZ(0)}.tooltip[data-placement=bottom]{transform:translateY(-5px) translateZ(0)}.tooltip[data-placement=bottom].tooltip-visible{transform:translateY(0) translateZ(0)}.tooltip[data-placement=left]{transform:translate(5px) translateZ(0)}.tooltip[data-placement=left].tooltip-visible{transform:translate(0) translateZ(0)}.tooltip[data-placement=right]{transform:translate(-5px) translateZ(0)}.tooltip[data-placement=right].tooltip-visible{transform:translate(0) translateZ(0)}[data-theme=light] .tooltip{background:var(--color-primary);color:var(--color-bg-light);box-shadow:0 4px 12px #5a4d4233}@media (max-width: 768px){.tooltip{display:none!important}}.drag-over{position:relative;opacity:.8!important;border:3px dashed #007acc!important;transition:all .3s ease;box-shadow:0 0 30px #007acc66,inset 0 0 30px #007acc1a!important}.drag-over:after{content:"DROP HERE";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#007acc;font-size:2.5rem;font-weight:700;text-transform:uppercase;letter-spacing:2px;background:#fffffff2;padding:20px 40px;border-radius:12px;border:3px solid #007acc;box-shadow:0 10px 40px #007acc66,0 0 0 15px #fffc;animation:pulse-glow 2s infinite,float 3s ease-in-out infinite;z-index:1000;pointer-events:none}.drag-over:before{content:"⬇️";position:absolute;top:35%;left:50%;transform:translate(-50%,-50%);font-size:4rem;z-index:1001;animation:bounce 2s infinite;pointer-events:none}@keyframes pulse-glow{0%,to{box-shadow:0 10px 40px #007acc66,0 0 0 15px #fffc}50%{box-shadow:0 15px 60px #007acc99,0 0 0 15px #ffffffe6}}@keyframes float{0%,to{transform:translate(-50%,-50%) translateY(0)}50%{transform:translate(-50%,-50%) translateY(-10px)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translate(-50%,-50%) translateY(0)}40%{transform:translate(-50%,-50%) translateY(-20px)}60%{transform:translate(-50%,-50%) translateY(-10px)}}@keyframes vibrate{0%{transform:translate(0)}20%{transform:translate(-2px,2px)}40%{transform:translate(-2px,-2px)}60%{transform:translate(2px,2px)}80%{transform:translate(2px,-2px)}to{transform:translate(0)}}.drag-over{animation:vibrate .3s ease-in-out}.drag-over{background:linear-gradient(45deg,#007acc0d,#007acc1a,#007acc0d,#007acc1a,#007acc0d);background-size:400% 400%;animation:gradient-shift 3s ease infinite}@keyframes gradient-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.drag-indicator{position:fixed;top:0;left:0;width:100%;height:100%;background:#007acc1a;backdrop-filter:blur(5px);display:none;justify-content:center;align-items:center;z-index:999;pointer-events:none}.drag-indicator.visible{display:flex;animation:fadeIn .3s ease}.drag-indicator-content{background:#fffffff2;padding:30px 50px;border-radius:15px;border:3px solid #007acc;text-align:center;box-shadow:0 20px 60px #0000004d}.drag-indicator-icon{font-size:4rem;margin-bottom:15px;animation:bounce 2s infinite}.drag-indicator-text{font-size:1.5rem;font-weight:700;color:#007acc;text-transform:uppercase;letter-spacing:3px}@keyframes success-drop{0%{background:#4caf501a;border-color:#4caf50}to{background:transparent;border-color:transparent}}.drop-success{animation:success-drop 1s ease}@media (max-width: 768px){.drag-over:after{font-size:1.5rem;padding:15px 25px}.drag-over:before{font-size:2.5rem;top:30%}.drag-indicator-content{padding:20px 30px}.drag-indicator-icon{font-size:3rem}.drag-indicator-text{font-size:1.2rem}}[data-theme=dark] .drag-over:after{background:#000000e6;color:#007acc;box-shadow:0 10px 40px #007acc99,0 0 0 15px #000c}[data-theme=dark] .drag-indicator-content{background:#000000e6;color:#007acc}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.primitive-selector{position:fixed;bottom:80px;left:calc(var(--spacing-lg) + var(--panel-width));z-index:1000;opacity:0;visibility:hidden;transform:translateY(20px);transition:all .3s cubic-bezier(.4,0,.2,1)}body:has(#panel-left.hidden) .primitive-selector{left:var(--spacing-lg)}.primitive-selector.active{opacity:1;visibility:visible;transform:translateY(0)}.primitive-menu{background:var(--color-bg-overlay);border:1px solid var(--color-border);border-radius:12px;padding:8px;min-width:200px;box-shadow:var(--shadow-lg)}.primitive-menu-title{padding:12px 16px 8px;font-size:.85rem;font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--color-border);margin-bottom:8px}.primitive-list{list-style:none;padding:0;margin:0;max-height:400px;overflow-y:auto}.primitive-section-header{padding:8px 16px 4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);opacity:.5;cursor:default;user-select:none;margin-top:4px}.primitive-section-header:hover{background:transparent;transform:none}.primitive-item{padding:10px 16px;margin:2px 0;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:12px;transition:all .2s ease;color:var(--color-text-secondary);font-size:.9rem}.primitive-item:hover{background:var(--color-accent);color:var(--color-bg-primary);transform:translate(4px)}.primitive-item:active{transform:translate(4px) scale(.98)}.primitive-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;opacity:.8}.primitive-name{flex:1;font-weight:500}.primitive-separator{height:1px;background:var(--color-border);margin:8px 0}.primitive-item.import-option{color:var(--color-accent);font-weight:600}.primitive-item.import-option:hover{background:var(--color-accent);color:var(--color-bg-primary)}.primitive-item.import-option .primitive-icon{opacity:1}.primitive-list::-webkit-scrollbar{width:6px}.primitive-list::-webkit-scrollbar-track{background:transparent}.primitive-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.primitive-list::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.primitive-item{animation:fadeInUp .3s ease backwards}.primitive-item:nth-child(1){animation-delay:.05s}.primitive-item:nth-child(2){animation-delay:.08s}.primitive-item:nth-child(3){animation-delay:.11s}.primitive-item:nth-child(4){animation-delay:.14s}.primitive-item:nth-child(5){animation-delay:.17s}.primitive-item:nth-child(6){animation-delay:.2s}.primitive-item:nth-child(7){animation-delay:.23s}.primitive-item:nth-child(8){animation-delay:.26s}.primitive-item:nth-child(9){animation-delay:.29s}.primitive-item:nth-child(10){animation-delay:.32s}.primitive-item:nth-child(11){animation-delay:.35s}.primitive-item:nth-child(12){animation-delay:.38s}.primitive-item:nth-child(13){animation-delay:.41s}.primitive-item:nth-child(14){animation-delay:.44s}.primitive-item:nth-child(15){animation-delay:.47s}.primitive-item:nth-child(16){animation-delay:.5s}.primitive-item:nth-child(17){animation-delay:.53s}.primitive-item:nth-child(18){animation-delay:.56s}.primitive-item:nth-child(19){animation-delay:.59s}.primitive-item:nth-child(20){animation-delay:.62s}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.primitive-selector-overlay{position:fixed;inset:0;background:transparent;z-index:999;display:none}.primitive-selector-overlay.active{display:block}.creation-feedback{position:fixed;top:20px;right:30%;background:var(--color-success);color:#fff;padding:12px 20px;border-radius:8px;box-shadow:var(--shadow-md);transform:translate(100%);opacity:0;transition:all .3s ease;z-index:10000}.creation-feedback.show{transform:translate(0);opacity:1}@media (max-width: 768px){.primitive-selector{left:50%;transform:translate(-50%) translateY(20px);bottom:70px}.primitive-selector.active{transform:translate(-50%) translateY(0)}.primitive-menu{min-width:90vw;max-width:300px}}
