:root{--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--ease-spring-soft:cubic-bezier(0.25,0.46,0.45,0.94);--ease-bounce:cubic-bezier(0.68,-0.55,0.265,1.55);--ease-out-expo:cubic-bezier(0.19,1,0.22,1)}@keyframes chartFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes chartSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes chartExpandWidth{0%{transform:scaleX(.9);opacity:0}to{transform:scaleX(1);opacity:1}}@keyframes panelPulse{0%{box-shadow:0 0 0 0 var(--primary-alpha-40)}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}.chart-panel-enter{animation:chartFadeIn .4s var(--ease-out-expo) forwards}.chart-panel-enter-stagger-1{animation:chartFadeIn .4s var(--ease-out-expo) .05s both}.chart-panel-enter-stagger-2{animation:chartFadeIn .4s var(--ease-out-expo) .1s both}.chart-panel-enter-stagger-3{animation:chartFadeIn .4s var(--ease-out-expo) .15s both}.layout-button{position:relative;transition:all .2s var(--ease-spring-soft)}.layout-button:hover{transform:translateY(-1px)}.layout-button:active{transform:scale(.95)}.layout-button.active{animation:panelPulse .6s ease-out}.layout-button.active:after{content:"";position:absolute;inset:-2px;border-radius:inherit;background:linear-gradient(135deg,var(--primary),transparent);opacity:.2;z-index:-1}.panel-slide{transition:flex-basis .35s var(--ease-out-expo),opacity .25s ease-out;will-change:flex-basis,opacity}.panel-content-fade{transition:opacity .2s ease-out}.panel-collapsed .panel-content-fade{opacity:0;pointer-events:none}.tool-button{position:relative;transition:transform .15s var(--ease-spring),background-color .2s ease,box-shadow .2s ease}.tool-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.tool-button:active{transform:translateY(0) scale(.97)}.tool-button.active{transform:scale(1.05)}.tool-button.active:before{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--primary);opacity:.15;animation:panelPulse .5s ease-out}@keyframes tradeSuccess{0%{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}to{transform:scale(1);opacity:1}}@keyframes tradeSuccessGlow{0%,to{box-shadow:0 0 0 0 var(--success-alpha-40)}50%{box-shadow:0 0 20px 8px var(--success-alpha-20)}}.trade-success{animation:tradeSuccess .5s var(--ease-spring),tradeSuccessGlow .8s ease-out}@keyframes tradeError{0%,to{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}.trade-error{animation:tradeError .4s ease-out}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-shimmer{background:linear-gradient(90deg,var(--surface) 0,var(--surface-elevated) 50%,var(--surface) 100%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}@keyframes symbolFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.98)}}@keyframes symbolFadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.symbol-change-exit{animation:symbolFadeOut .2s ease-out forwards}.symbol-change-enter{animation:symbolFadeIn .3s ease-out .15s both}.hover-glow{position:relative;transition:box-shadow .3s ease}.hover-glow:before{content:"";position:absolute;inset:-2px;border-radius:inherit;padding:2px;background:linear-gradient(135deg,var(--primary),var(--primary-light));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s ease}.hover-glow:hover:before{opacity:.6}@keyframes notificationSlideIn{0%{transform:translateX(100%) translateY(-50%);opacity:0}to{transform:translateX(0) translateY(-50%);opacity:1}}@keyframes notificationSlideOut{0%{transform:translateX(0) translateY(-50%);opacity:1}to{transform:translateX(100%) translateY(-50%);opacity:0}}.notification-enter{animation:notificationSlideIn .4s var(--ease-out-expo) forwards}.notification-exit{animation:notificationSlideOut .3s ease-in forwards}.tab-panel-enter{animation:chartSlideIn .3s var(--ease-out-expo)}.button-press{transition:transform .1s var(--ease-spring)}.button-press:active{transform:scale(.92)}.resize-handle{position:relative;transition:opacity .2s ease}.resize-handle:after{content:"";position:absolute;inset:0;background:var(--primary);opacity:0;transition:opacity .2s ease}.resize-handle:hover:after{opacity:.3}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.spinner{animation:spin .8s linear infinite}@keyframes progressGrow{0%{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}.progress-bar{animation:progressGrow .6s var(--ease-out-expo) forwards}.fade-in{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-out{animation:fadeOut .2s ease-out forwards}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleBounce{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.scale-bounce{animation:scaleBounce .4s var(--ease-bounce)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.animate-slideDown{animation:slideDown .2s var(--ease-out-expo)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.pulse{animation:pulse 2s ease-in-out infinite}@keyframes glowPulse{0%,to{box-shadow:0 0 5px var(--success-alpha-30)}50%{box-shadow:0 0 15px var(--success-alpha-60)}}.glow-pulse{animation:glowPulse 2s ease-in-out infinite}