:root{--panel-bg: rgba(20, 22, 28, .85);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .6);--panel-text: var(--text-primary);--panel-text-secondary: var(--text-secondary);--panel-border: rgba(255, 255, 255, .1);--accent: #4fc3f7;--accent-hover: #81d4fa;--accent-10: color-mix(in srgb, var(--accent) 10%, transparent);--accent-15: color-mix(in srgb, var(--accent) 15%, transparent);--accent-20: color-mix(in srgb, var(--accent) 20%, transparent);--accent-25: color-mix(in srgb, var(--accent) 25%, transparent);--accent-30: color-mix(in srgb, var(--accent) 30%, transparent);--accent-50: color-mix(in srgb, var(--accent) 50%, transparent);--panel-hover: rgba(255, 255, 255, .08);--panel-selected: var(--accent-20);--panel-shadow: 0 4px 20px rgba(0, 0, 0, .4);--panel-radius: 8px;--panel-spacing: 12px;--panel-header-height: 36px;--menubar-height: 28px;--outliner-row-height: 28px;--outliner-type-row-height: 30px;--transition-fast: .15s ease;--transition-normal: .2s ease;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono: "SF Mono", "Fira Code", Consolas, "Liberation Mono", monospace}.stats-panel,.outliner-panel{position:absolute;z-index:100;min-width:160px;max-width:280px;font-family:var(--font-family);font-size:13px;color:var(--panel-text);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%)}.stats-panel{top:var(--panel-spacing);left:var(--panel-spacing)}.stats-panel[data-collapsed=true],.outliner-panel[data-collapsed=true]{max-height:var(--panel-header-height)}.stats-panel__header,.outliner-panel__header{display:flex;align-items:center;justify-content:space-between;height:var(--panel-header-height);padding:0 var(--panel-spacing);background:#ffffff08;border-bottom:1px solid var(--panel-border);cursor:pointer;transition:background-color var(--transition-fast)}.stats-panel__header:hover,.outliner-panel__header:hover{background:var(--panel-hover)}.stats-panel__title,.outliner-panel__title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--panel-text)}.stats-panel__toggle,.outliner-panel__toggle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:14px;font-weight:500;color:var(--panel-text-secondary);transition:color var(--transition-fast),transform var(--transition-fast)}.stats-panel__header:hover .stats-panel__toggle,.outliner-panel__header:hover .outliner-panel__toggle{color:var(--accent)}.stats-panel__content,.outliner-panel__content{padding:var(--panel-spacing);animation:panelSlideDown var(--transition-normal) ease-out}@keyframes panelSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.stats-panel{min-width:140px}.stats-panel__row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.stats-panel__row:not(:last-child){border-bottom:1px solid var(--panel-border)}.stats-panel__label{color:var(--panel-text-secondary);font-size:12px}.stats-panel__value{font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent)}.outliner-panel{min-width:200px;max-width:280px}.outliner-panel__section{margin-bottom:8px}.outliner-panel__section:last-of-type{margin-bottom:0}.outliner-panel__section-header{display:flex;align-items:center;gap:6px;padding:6px 8px;margin:0 -4px;border-radius:4px;cursor:pointer;transition:background-color var(--transition-fast)}.outliner-panel__section-header:hover{background:var(--panel-hover)}.outliner-panel__section-chevron{display:flex;align-items:center;justify-content:center;width:12px;height:12px;font-size:10px;font-weight:600;color:var(--panel-text-secondary);transition:color var(--transition-fast)}.outliner-panel__section-header:hover .outliner-panel__section-chevron{color:var(--accent)}.outliner-panel__section-title{flex:1;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--panel-text-secondary)}.outliner-panel__section-count{flex-shrink:0;min-width:20px;padding:2px 6px;font-size:10px;font-weight:500;font-variant-numeric:tabular-nums;text-align:center;color:var(--panel-text-secondary);background:#ffffff0d;border-radius:8px}.outliner-panel__section-content{padding-top:4px;padding-left:18px}.outliner-panel__type-list{max-height:150px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.outliner-panel__type-list::-webkit-scrollbar{width:6px}.outliner-panel__type-list::-webkit-scrollbar-track{background:transparent}.outliner-panel__type-list::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.outliner-panel__type-list::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.outliner-panel__type-list-spacer{position:relative;width:100%}.outliner-panel__type-item{position:absolute;left:0;right:0;box-sizing:border-box;height:calc(var(--outliner-type-row-height) - 4px);display:flex;align-items:center;gap:8px;padding:4px 6px;margin:2px -6px;border-radius:4px;transition:background-color var(--transition-fast)}.outliner-panel__type-item:hover{background:var(--panel-hover)}.outliner-panel__type-swatch{flex-shrink:0;box-shadow:0 0 0 1px #fff3,inset 0 1px 2px #0003}.outliner-panel__type-swatch--node{width:12px;height:12px;border-radius:50%}.outliner-panel__type-swatch--edge{width:16px;height:4px;border-radius:2px}.outliner-panel__type-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--panel-text)}.outliner-panel__type-count{flex-shrink:0;min-width:24px;padding:2px 6px;font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;text-align:center;color:var(--panel-text-secondary);background:#ffffff0d;border-radius:10px}.outliner-panel__search{display:block;width:100%;padding:8px 10px;margin-bottom:8px;font-size:12px;color:var(--panel-text);background:#0000004d;border:1px solid var(--panel-border);border-radius:6px;outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.outliner-panel__search::placeholder{color:var(--panel-text-secondary)}.outliner-panel__search:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-20)}.outliner-panel__list{max-height:200px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.outliner-panel__list::-webkit-scrollbar{width:6px}.outliner-panel__list::-webkit-scrollbar-track{background:transparent}.outliner-panel__list::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.outliner-panel__list::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.outliner-panel__list-spacer{position:relative;width:100%}.outliner-panel__item{position:absolute;left:0;right:0;box-sizing:border-box;height:calc(var(--outliner-row-height) - 2px);display:flex;align-items:center;gap:8px;padding:6px 8px;margin:1px -4px;border-radius:4px;cursor:pointer;transition:background-color var(--transition-fast)}.outliner-panel__item:hover{background:var(--panel-hover)}.outliner-panel__item[data-selected=true]{background:var(--panel-selected)}.outliner-panel__item[data-selected=true] .outliner-panel__name{color:var(--accent);font-weight:500}.outliner-panel__color{flex-shrink:0;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px #fff3}.outliner-panel__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--panel-text)}.outliner-panel__empty{padding:16px 8px;text-align:center;font-size:12px;color:var(--panel-text-secondary);font-style:italic}.graph3d{position:relative;width:100%;height:100%;overflow:hidden;background:#0a0a0f}.graph3d__error{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background-color:#000000d9;color:#f44;padding:20px;text-align:center;z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.graph3d__error-title{font-size:24px;font-weight:600;margin-bottom:12px;color:#f66}.graph3d__error-message{font-size:14px;opacity:.8;max-width:400px;line-height:1.5}.graph3d__loading{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background-color:#00000080;color:#fff;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.graph3d__loading-text{font-size:14px;animation:loadingPulse 1.5s ease-in-out infinite}@keyframes loadingPulse{0%,to{opacity:.6}50%{opacity:1}}.palette-swatch{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;padding:0;background:none;outline:none;cursor:pointer}.palette-swatch::-webkit-color-swatch-wrapper{padding:0}.palette-swatch::-webkit-color-swatch{border:none;border-radius:4px}.palette-swatch::-moz-color-swatch{border:none;border-radius:4px}@media(max-width:640px){.stats-panel,.outliner-panel{font-size:12px;min-width:140px;max-width:200px}.stats-panel__header,.outliner-panel__header{height:32px;padding:0 10px}.stats-panel__content,.outliner-panel__content{padding:10px}.outliner-panel__list{max-height:200px!important}}@media(prefers-contrast:high){.stats-panel,.outliner-panel{border-width:2px;border-color:currentColor}.outliner-panel__item[data-selected=true]{outline:2px solid var(--accent);outline-offset:-2px}}@media(prefers-reduced-motion:reduce){.stats-panel__content,.outliner-panel__content{animation:none}.stats-panel,.outliner-panel,.stats-panel__header,.outliner-panel__header,.stats-panel__toggle,.outliner-panel__toggle,.outliner-panel__search,.outliner-panel__item,.outliner-panel__type-item{transition:none}.graph3d__loading-text{animation:none;opacity:1}}.control-panel{position:absolute;top:12px;right:260px;z-index:100;width:280px;max-height:calc(100vh - 24px);overflow-y:auto;overflow-x:hidden;font-family:var(--font-family);font-size:13px;color:var(--panel-text);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.control-panel::-webkit-scrollbar{width:6px}.control-panel::-webkit-scrollbar-track{background:transparent}.control-panel::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.control-panel::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.panel-header{display:flex;align-items:center;justify-content:center;padding:12px 16px;background:#ffffff08;border-bottom:1px solid var(--panel-border)}.panel-header strong{font-size:14px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--panel-text)}.panel-sections{padding:8px;display:flex;flex-direction:column;gap:4px}@media(max-width:1200px){.control-panel{right:12px;top:auto;bottom:12px;max-height:50vh}}@media(max-width:768px){.control-panel{width:240px;font-size:12px}.panel-header{padding:10px 12px}.panel-header strong{font-size:13px}}@media(max-width:480px){.control-panel{width:calc(100% - 24px);left:12px;right:12px;bottom:12px;max-height:40vh}}.navigation-panel{width:220px}.tools-panel{width:260px}.display-panel{width:280px}.display-panel__button{display:block;width:100%;padding:8px 12px;margin-top:8px;font-size:12px;font-weight:500;color:var(--panel-text);background:linear-gradient(135deg,var(--accent-15) 0%,color-mix(in srgb,var(--accent) 5%,transparent) 100%);border:1px solid var(--accent-30);border-radius:6px;cursor:pointer;transition:all var(--transition-fast)}.display-panel__button:hover{background:linear-gradient(135deg,var(--accent-25) 0%,var(--accent-10) 100%);border-color:var(--accent-50);color:var(--accent)}.display-panel__button:active{transform:scale(.98)}.audio-panel{width:200px}.panel-button{display:block;width:100%;padding:8px 12px;margin-top:8px;font-family:var(--font-family);font-size:12px;font-weight:500;color:var(--panel-text);background:linear-gradient(135deg,var(--accent-15) 0%,color-mix(in srgb,var(--accent) 5%,transparent) 100%);border:1px solid var(--accent-30);border-radius:6px;cursor:pointer;transition:all var(--transition-fast)}.panel-button:hover{background:linear-gradient(135deg,var(--accent-25) 0%,var(--accent-10) 100%);border-color:var(--accent-50);color:var(--accent)}.panel-button:active{transform:scale(.98)}.panel-button:disabled{opacity:.5;cursor:not-allowed}.panel-button:disabled:hover{background:linear-gradient(135deg,var(--accent-15) 0%,color-mix(in srgb,var(--accent) 5%,transparent) 100%);border-color:var(--accent-30);color:var(--panel-text);transform:none}.control-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}.control-label{font-size:12px;color:var(--panel-text-secondary);white-space:nowrap}.control-input{width:80px;padding:6px 8px;font-size:12px;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--panel-text);background:#0000004d;border:1px solid var(--panel-border);border-radius:4px;outline:none;text-align:right;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);color-scheme:dark}.control-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-20)}.control-input::-webkit-inner-spin-button,.control-input::-webkit-outer-spin-button{opacity:1}.control-group{position:relative;margin-bottom:12px}.control-group:last-child{margin-bottom:0}.control-group label{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:4px}.control-group small{display:block;font-size:10px;color:var(--text-tertiary);margin-top:4px}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:var(--panel-border);border-radius:2px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:pointer;transition:transform var(--transition-fast)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}input[type=range]::-moz-range-thumb{width:14px;height:14px;background:var(--accent);border:none;border-radius:50%;cursor:pointer}input[type=range]::-moz-range-track{background:var(--panel-border);border-radius:2px;height:4px}input[type=range]:disabled{opacity:.5;cursor:not-allowed}input[type=range]:disabled::-webkit-slider-thumb{cursor:not-allowed}input[type=range]:disabled::-moz-range-thumb{cursor:not-allowed}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;min-width:16px;min-height:16px;background:#0000004d;border:1px solid var(--panel-border);border-radius:3px;cursor:pointer;position:relative;transition:all var(--transition-fast)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:hover{border-color:var(--accent)}input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}input[type=checkbox]:disabled:hover{border-color:var(--panel-border)}input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;min-width:16px;min-height:16px;background:#0000004d;border:1px solid var(--panel-border);border-radius:50%;cursor:pointer;position:relative;transition:all var(--transition-fast)}input[type=radio]:checked{background:#0000004d;border-color:var(--accent)}input[type=radio]:checked:after{content:"";position:absolute;top:50%;left:50%;width:8px;height:8px;background:var(--accent);border-radius:50%;transform:translate(-50%,-50%)}input[type=radio]:hover{border-color:var(--accent)}input[type=radio]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-20)}input[type=radio]:disabled{opacity:.5;cursor:not-allowed}input[type=radio]:disabled:hover{border-color:var(--panel-border)}.radio-group{display:flex;flex-direction:column;gap:6px;margin-top:4px}.radio-group label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--panel-text);cursor:pointer}.radio-group input[type=radio]+label{margin-bottom:0}.select-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 10px;font-size:12px;font-family:var(--font-family);color:var(--panel-text);background:#0000004d;border:1px solid var(--panel-border);border-radius:4px;outline:none;cursor:pointer;text-align:left;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.select-trigger:hover{border-color:#fff3}.select-trigger:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-20)}.select-trigger:disabled{opacity:.5;cursor:not-allowed}.select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-arrow{display:flex;align-items:center;justify-content:center;margin-left:8px;color:var(--text-tertiary);transition:transform var(--transition-fast)}.select-trigger[aria-expanded=true] .select-arrow{transform:rotate(180deg)}.select-dropdown{z-index:10000;margin:0;padding:4px 0;list-style:none;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:4px;box-shadow:0 4px 12px #0006;max-height:200px;overflow-y:auto;font-family:var(--font-family);color:var(--panel-text);-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.select-dropdown::-webkit-scrollbar{width:6px}.select-dropdown::-webkit-scrollbar-track{background:transparent}.select-dropdown::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.select-dropdown::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.select-option{padding:8px 12px;font-size:12px;color:var(--panel-text);cursor:pointer;transition:background-color var(--transition-fast)}.select-option:hover,.select-option--focused{background:#ffffff1a}.select-option--selected{color:var(--accent);background:var(--accent-10)}.select-option--selected.select-option--focused,.select-option--selected:hover{background:var(--accent-20)}.select-option--disabled{color:var(--text-tertiary);font-style:italic;cursor:not-allowed}.select-option--disabled:hover,.select-option--disabled.select-option--focused{background:transparent}@media print{.control-panel,.stats-panel,.outliner-panel,.draggable-panel,.graph-menubar{display:none!important}}.draggable-panel{position:absolute;z-index:100;min-width:160px;max-width:320px;font-family:var(--font-family);font-size:13px;color:var(--panel-text);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%)}.draggable-panel[data-dragging=true]{box-shadow:0 8px 32px #00000080;opacity:.95}.draggable-panel[data-collapsed=true]{max-height:var(--panel-header-height)}.draggable-panel__header{display:flex;align-items:center;justify-content:space-between;height:var(--panel-header-height);padding:0 8px 0 var(--panel-spacing);background:#ffffff08;border-bottom:1px solid var(--panel-border);cursor:grab;transition:background-color var(--transition-fast)}.draggable-panel__header:active{cursor:grabbing}.draggable-panel__header:hover{background:var(--panel-hover)}.draggable-panel__title-area{display:flex;align-items:center;gap:8px;flex:1;min-width:0;cursor:pointer}.draggable-panel__title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--panel-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.draggable-panel__toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:500;color:var(--panel-text-secondary);transition:color var(--transition-fast)}.draggable-panel__title-area:hover .draggable-panel__toggle{color:var(--accent)}.draggable-panel__close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:4px;padding:0;background:transparent;border:none;border-radius:4px;color:var(--panel-text-secondary);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.draggable-panel__close:hover{background:#ffffff1a;color:var(--panel-text)}.draggable-panel__close:active{background:#ffffff26}.draggable-panel__content{padding:var(--panel-spacing);animation:panelSlideDown var(--transition-normal) ease-out;contain:layout paint}.draggable-panel__resize-edge{position:absolute;top:var(--panel-header-height);right:0;bottom:0;width:6px;cursor:ew-resize;z-index:10;transition:background-color var(--transition-fast)}.draggable-panel__resize-edge:hover{background:var(--accent-20)}.draggable-panel[data-resizing=true] .draggable-panel__resize-edge{background:var(--accent-30)}.draggable-panel__resize-handle{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:se-resize;z-index:11;transition:opacity var(--transition-fast)}.draggable-panel__resize-handle:before{content:"";position:absolute;right:3px;bottom:3px;width:8px;height:8px;border-right:2px solid var(--panel-text-secondary);border-bottom:2px solid var(--panel-text-secondary);opacity:.5;transition:opacity var(--transition-fast),border-color var(--transition-fast)}.draggable-panel__resize-handle:hover:before{opacity:1;border-color:var(--accent)}.draggable-panel[data-resizing=true] .draggable-panel__resize-handle:before{opacity:1;border-color:var(--accent)}.draggable-panel[data-collapsed=true] .draggable-panel__resize-edge,.draggable-panel[data-collapsed=true] .draggable-panel__resize-handle{display:none}.draggable-panel[data-resizing=true]{-webkit-user-select:none;user-select:none}.graph-menubar{position:absolute;top:0;left:0;right:0;height:var(--menubar-height);z-index:200;display:flex;align-items:center;padding:0 4px;background:var(--panel-bg);border-bottom:1px solid var(--panel-border);font-family:var(--font-family);font-size:13px;color:var(--panel-text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.menu{position:relative}.menu__trigger{display:flex;align-items:center;height:24px;padding:0 10px;margin:2px;background:transparent;border:none;border-radius:4px;color:var(--panel-text);font-family:inherit;font-size:13px;cursor:pointer;transition:background-color var(--transition-fast)}.menu__trigger:hover,.menu[data-open=true] .menu__trigger{background:#ffffff1a}.menu__trigger:disabled{opacity:.5;cursor:default}.menu__dropdown{min-width:180px;padding:4px 0;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:0 8px 24px #0006;z-index:9999;font-family:var(--font-family);color:var(--panel-text);-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%);animation:menuFadeIn .15s ease-out}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.menu-item{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 8px;margin:0 4px;border-radius:4px;cursor:pointer;transition:background-color var(--transition-fast)}.menu-item:hover{background:var(--panel-hover)}.menu-item[data-disabled=true]{opacity:.5;cursor:default}.menu-item[data-disabled=true]:hover{background:transparent}.menu-item__check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--accent)}.menu-item__icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--panel-text-secondary)}.menu-item__label{flex:1;min-width:0;font-size:13px;color:var(--panel-text)}.menu-item__shortcut{flex-shrink:0;font-size:11px;color:var(--panel-text-secondary);margin-left:16px}.menu-separator{height:1px;margin:4px 8px;background:var(--panel-border)}@media(max-width:640px){:root{--menubar-height: 32px}.graph-menubar{font-size:12px}.menu__trigger{padding:0 8px;font-size:12px}.menu__dropdown{min-width:160px}.menu-item{padding:8px 10px 8px 6px;font-size:12px}.menu-item__shortcut{font-size:10px}}@media(prefers-reduced-motion:reduce){.menu__dropdown,.draggable-panel__content{animation:none}.menu__trigger,.menu-item,.draggable-panel__header,.draggable-panel__close,.draggable-panel__toggle{transition:none}}.modal-backdrop{display:flex;position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;z-index:10000;align-items:center;justify-content:center;animation:modalFadeIn .15s ease-out}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);padding:1.5rem;min-width:350px;max-width:450px;animation:modalSlideIn .15s ease-out;-webkit-backdrop-filter:blur(12px) saturate(180%);backdrop-filter:blur(12px) saturate(180%);font-family:var(--font-family)}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.modal-title{margin:0 0 1.5rem;color:var(--panel-text);font-size:1.2em;font-weight:500}.modal-field{margin-bottom:1rem}.modal-row{display:flex;gap:1rem;margin-bottom:1rem}.modal-label{display:block;margin-bottom:.5rem;color:var(--panel-text-secondary);font-size:.9em}.modal-input{width:100%;padding:.5rem;background:#0000004d;border:1px solid var(--panel-border);border-radius:4px;color:var(--panel-text);font-size:.95em;transition:border-color .15s ease;box-sizing:border-box}.modal-input:focus{outline:none;border-color:var(--accent-color, #4fc3f7)}.modal-input::placeholder{color:var(--panel-text-secondary);opacity:.6}.modal-select{cursor:pointer}.modal-select option{background:var(--panel-bg);color:var(--panel-text)}.modal-status{padding:.75rem;margin-bottom:1rem;border-radius:4px;font-size:.9em}.modal-status--info{background:var(--accent-15);border:1px solid var(--accent-30);color:var(--accent)}.modal-status--warning{background:#ffcc0026;border:1px solid rgba(255,204,0,.3);color:#fc0}.modal-status--error{background:#ff525226;border:1px solid rgba(255,82,82,.3);color:#ff5252}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.modal-button{padding:.5rem 1rem;border-radius:4px;font-size:.9em;font-weight:500;cursor:pointer;transition:background .15s ease,border-color .15s ease;border:1px solid transparent}.modal-button--primary{background:var(--accent-color, #4fc3f7);color:#000;border-color:var(--accent-color, #4fc3f7)}.modal-button--primary:hover{background:color-mix(in srgb,var(--accent-color, #4fc3f7) 80%,white)}.modal-button--secondary{background:var(--panel-hover);color:var(--panel-text);border-color:var(--panel-border)}.modal-button--secondary:hover{background:var(--panel-border)}@media(prefers-reduced-motion:reduce){.modal-backdrop,.modal-content{animation:none}}.theme-panel{width:280px}.theme-panel__button{display:block;width:100%;padding:8px 12px;margin-top:8px;font-size:12px;font-weight:500;color:var(--panel-text);background:linear-gradient(135deg,var(--accent-15) 0%,color-mix(in srgb,var(--accent) 5%,transparent) 100%);border:1px solid var(--accent-30);border-radius:6px;cursor:pointer;transition:all var(--transition-fast)}.theme-panel__button:hover{background:linear-gradient(135deg,var(--accent-25) 0%,var(--accent-10) 100%);border-color:var(--accent-50);color:var(--accent)}.theme-panel__button:active{transform:scale(.98)}.theme-panel__color-section{margin-bottom:12px}.theme-panel__color-section:last-child{margin-bottom:0}.theme-panel__color-label{font-size:11px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.theme-panel__color-grid{display:grid;gap:6px;grid-template-columns:repeat(auto-fit,minmax(28px,1fr))}.theme-panel__color-grid--8{grid-template-columns:repeat(auto-fit,minmax(24px,1fr))}.theme-panel__color-grid--3{grid-template-columns:repeat(auto-fit,minmax(48px,1fr))}.theme-panel__bg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.theme-panel__swatch-container{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.theme-panel__bg-swatch{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.theme-panel__swatch{width:100%;aspect-ratio:1;min-width:24px;min-height:24px;padding:0;border:1px solid rgba(255,255,255,.15);border-radius:4px;cursor:pointer;transition:all var(--transition-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}.theme-panel__swatch::-webkit-color-swatch-wrapper{padding:0}.theme-panel__swatch::-webkit-color-swatch{border:none;border-radius:3px}.theme-panel__swatch::-moz-color-swatch{border:none;border-radius:3px}.theme-panel__swatch:hover{border-color:var(--accent);transform:scale(1.1);z-index:1}.theme-panel__swatch:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-30)}.theme-panel__swatch--wide{width:100%;height:32px;aspect-ratio:auto}.theme-panel__swatch-label{font-size:9px;color:var(--text-tertiary);text-align:center;line-height:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tooltip-trigger{display:inline-flex;align-items:center;max-width:100%}.tooltip-trigger--block{display:flex;width:100%}.tooltip{position:fixed;top:0;left:0;z-index:10001;font-family:var(--font-family);font-size:12px;color:var(--panel-text);background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:tooltipFadeIn .15s ease-out}.tooltip[data-placed=false]{visibility:hidden}@keyframes tooltipFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.tooltip__content{padding:8px 12px;line-height:1.4}.tooltip strong{color:var(--panel-text);font-weight:600}.tooltip__keys{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0}.tooltip__keys dt{font-family:var(--font-family-mono);font-size:11px;color:var(--accent);white-space:nowrap}.tooltip__keys dd{margin:0;color:var(--panel-text-secondary)}.tooltip__arrow{position:absolute;width:8px;height:8px;background:var(--panel-bg);border:1px solid var(--panel-border);transform:rotate(45deg);pointer-events:none}.tooltip--top .tooltip__arrow{bottom:-5px;left:calc(var(--tooltip-arrow-x, 50%) - 4px);border-top:none;border-left:none}.tooltip--bottom .tooltip__arrow{top:-5px;left:calc(var(--tooltip-arrow-x, 50%) - 4px);border-bottom:none;border-right:none}.tooltip--left .tooltip__arrow{right:-5px;top:calc(var(--tooltip-arrow-y, 50%) - 4px);border-bottom:none;border-left:none}.tooltip--right .tooltip__arrow{left:-5px;top:calc(var(--tooltip-arrow-y, 50%) - 4px);border-top:none;border-right:none}.tooltip:not(.tooltip--has-arrow) .tooltip__arrow{display:none}.tooltip--hoverable{pointer-events:auto}@media(prefers-reduced-motion:reduce){.tooltip{animation:none}}.help-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;padding:0;font-family:inherit;font-size:11px;font-weight:600;line-height:1;color:var(--panel-text-secondary);background:#ffffff0d;border:1px solid var(--panel-border);border-radius:50%;cursor:help;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:all var(--transition-fast)}.help-icon:hover,.help-icon:focus-visible{color:var(--accent);border-color:var(--accent);background:var(--accent-10)}.help-icon:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-30)}.control-group__label-row{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}.control-group__label-row label{margin-bottom:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.control-group__value{font-size:11px;color:var(--panel-text-secondary);font-variant-numeric:tabular-nums}.control-help-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.help-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-family:inherit;font-size:11px;line-height:1.4;color:var(--panel-text-secondary);background:#ffffff0a;border:1px solid var(--panel-border);border-radius:999px;cursor:help;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:all var(--transition-fast)}.help-chip:hover,.help-chip:focus-visible{color:var(--accent);border-color:var(--accent-50);background:var(--accent-10)}.help-chip:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-30)}.help-chip__icon{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;font-weight:600;border:1px solid currentColor;border-radius:50%;opacity:.7}.subsection-collapsible{margin-bottom:8px;border:1px solid var(--panel-border);border-radius:6px;overflow:hidden}.subsection-collapsible:last-child{margin-bottom:0}.subsection-title-collapsible{display:flex;align-items:center;padding:8px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--panel-text-secondary);background:#ffffff05;cursor:pointer;transition:all var(--transition-fast);list-style:none}.subsection-title-collapsible::-webkit-details-marker{display:none}.subsection-title-collapsible:before{content:"";display:inline-block;width:0;height:0;margin-right:8px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid var(--panel-text-secondary);transition:transform var(--transition-fast)}.subsection-collapsible[open] .subsection-title-collapsible:before{transform:rotate(90deg)}.subsection-title-collapsible:hover{color:var(--panel-text);background:var(--panel-hover)}.subsection-title-collapsible:hover:before{border-left-color:var(--accent)}.subsection-content{padding:10px;border-top:1px solid var(--panel-border)}.help-text{display:flex;flex-direction:column;gap:2px;margin-top:8px;padding:8px;font-size:11px;color:var(--panel-text-secondary);background:#0003;border-radius:4px;line-height:1.4}.help-text span{display:block}.help-text strong{color:var(--panel-text)}.dock-zone{position:absolute;top:var(--menubar-height);bottom:0;z-index:50;pointer-events:none}.dock-zone--left{left:0}.dock-zone--right{right:0}.dock-zone__stack{pointer-events:auto;display:flex;flex-direction:column;gap:1px;max-height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.dock-zone__stack:empty{display:none}.dock-zone__stack::-webkit-scrollbar{width:6px}.dock-zone__stack::-webkit-scrollbar-track{background:transparent}.dock-zone__stack::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.dock-zone__stack::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.dock-zone__splitter{position:absolute;top:0;bottom:0;width:6px;pointer-events:auto;cursor:ew-resize;z-index:10}.dock-zone__splitter--left{right:-3px}.dock-zone__splitter--right{left:-3px}.dock-zone__splitter:hover{background:var(--accent-20)}.dock-zone__highlight{position:absolute;top:0;right:0;bottom:0;left:0;z-index:400;pointer-events:none;background:var(--accent-10);border:1px solid var(--accent-50)}.dock-zone__insert-line{position:absolute;left:0;right:0;height:2px;background:var(--accent);pointer-events:none}.dock-drag-ghost{position:absolute;height:36px;z-index:450;pointer-events:none;border:1px dashed var(--accent);border-radius:var(--panel-radius, 6px);background:var(--accent-10)}.dock-zone .draggable-panel{position:static;width:100%;max-width:none;min-width:0;border-radius:0;box-shadow:none;border-left:none;border-right:none;flex:0 0 auto}.graph-menubar__extra{margin-left:auto;display:flex;align-items:center;gap:6px;height:100%;padding-right:4px}.data-source-controls{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-bottom:1px solid var(--panel-border, rgba(255, 255, 255, .08))}.data-source-controls .panel-button{width:100%}.graph3d__data-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:#080c1473;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);-webkit-user-select:none;user-select:none}.graph3d__data-loading-spinner{width:34px;height:34px;border:3px solid rgba(120,180,255,.25);border-top-color:#78b4fff2;border-radius:50%;animation:graph3d-data-loading-spin .9s linear infinite}.graph3d__data-loading-message{color:#dbe7ff;font-size:.9rem;font-family:inherit;text-shadow:0 1px 4px rgba(0,0,0,.6)}@keyframes graph3d-data-loading-spin{to{transform:rotate(360deg)}}
