.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width,height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
.widget-header{padding:var(--space-3)var(--space-4);border-bottom:var(--border-width)solid var(--border-primary);background:var(--bg-widget);justify-content:space-between;align-items:center;min-height:48px;display:flex}.widget-header__left{align-items:center;gap:var(--space-4);flex:1;display:flex}.widget-header__title-group{align-items:center;gap:var(--space-2);display:flex}.widget-header__title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-primary);margin:0}.widget-header__subtitle{font-size:var(--text-sm);color:var(--text-secondary);font-weight:var(--font-normal)}.widget-header__symbol{align-items:center;display:flex}.widget-header__symbol-input{width:80px;padding:var(--space-1)var(--space-2);background:var(--bg-secondary);border:var(--border-width)solid var(--border-secondary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-medium);text-transform:uppercase;transition:all var(--transition-fast)}.widget-header__symbol-input:hover{border-color:var(--border-hover)}.widget-header__symbol-input:focus{border-color:var(--accent-primary);background:var(--bg-tertiary);outline:none}.widget-header__symbol-input::placeholder{color:var(--text-tertiary);text-transform:none}.widget-header__toggle-group{background:var(--bg-secondary);border:var(--border-width)solid var(--border-secondary);border-radius:var(--radius-sm);align-items:center;gap:0;padding:2px;display:flex}.widget-header__toggle{padding:var(--space-1)var(--space-3);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-medium);cursor:pointer;border-radius:calc(var(--radius-sm) - 2px);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;min-width:40px;display:flex}.widget-header__toggle:hover:not(.active){color:var(--text-primary);background:var(--bg-tertiary)}.widget-header__toggle.active{background:var(--bg-widget);color:var(--accent-primary);box-shadow:0 1px 2px #0003}.widget-header__actions{align-items:center;gap:var(--space-1);display:flex}.widget-header__action{padding:var(--space-2);color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.widget-header__action:hover:not(:disabled){color:var(--text-primary);background:var(--bg-secondary)}.widget-header__action:active:not(:disabled){background:var(--bg-tertiary)}.widget-header__action:disabled{opacity:.5;cursor:not-allowed}.widget-header__action .spinning{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width:768px){.widget-header,.widget-header__left{gap:var(--space-2);flex-wrap:wrap}.widget-header__symbol-input{width:60px}.widget-header__toggle{padding:var(--space-1)var(--space-2);min-width:32px}}
.skeleton{background:linear-gradient(90deg,var(--bg-secondary)0%,var(--bg-tertiary)50%,var(--bg-secondary)100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-text{width:100%;height:1em;margin-bottom:var(--space-2)}.skeleton-rect{width:100%;height:100px}.skeleton-circle{border-radius:var(--radius-full);width:40px;height:40px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-table{gap:var(--space-3);padding:var(--space-4);flex-direction:column;display:flex}.skeleton-table__header{gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:var(--border-width)solid var(--border-primary);grid-template-columns:repeat(auto-fit,minmax(100px,1fr));display:grid}.skeleton-table__row{gap:var(--space-3);padding:var(--space-2)0;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));display:grid}.skeleton-chart{padding:var(--space-4);justify-content:flex-end;gap:var(--space-3);flex-direction:column;height:300px;display:flex}.skeleton-chart__bars{justify-content:space-between;align-items:flex-end;gap:var(--space-2);height:100%;display:flex}.skeleton-chart__bar{background:linear-gradient(180deg,var(--bg-tertiary)0%,var(--bg-secondary)100%);border-radius:var(--radius-sm)var(--radius-sm)0 0;flex:1;animation:1.5s ease-in-out infinite pulse}.skeleton-chart__x-axis{padding-top:var(--space-2);justify-content:space-between;display:flex}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.skeleton-card{padding:var(--space-4);background:var(--bg-widget);border:var(--border-width)solid var(--border-primary);border-radius:var(--radius-md)}
.widget-error{padding:var(--space-8);text-align:center;background:var(--bg-widget);flex-direction:column;justify-content:center;align-items:center;min-height:200px;display:flex}.widget-error__icon{color:var(--error);margin-bottom:var(--space-4);opacity:.8}.widget-error__content{margin-bottom:var(--space-4)}.widget-error__title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin:0 0 var(--space-2)}.widget-error__message{font-size:var(--text-sm);color:var(--text-secondary);margin:0 0 var(--space-2)}.widget-error__detail{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono);background:var(--bg-secondary);padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);word-break:break-word;max-width:300px;margin:0}.widget-error__retry{align-items:center;gap:var(--space-2);padding:var(--space-2)var(--space-4);background:var(--bg-secondary);border:var(--border-width)solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast);display:inline-flex}.widget-error__retry:hover{background:var(--bg-tertiary);border-color:var(--border-hover)}.widget-error__retry:active{transform:scale(.98)}.widget-empty{padding:var(--space-8);text-align:center;background:var(--bg-widget);flex-direction:column;justify-content:center;align-items:center;min-height:200px;display:flex}.widget-empty__icon{color:var(--text-tertiary);margin-bottom:var(--space-4);opacity:.5}.widget-empty__title{font-size:var(--text-base);font-weight:var(--font-medium);color:var(--text-secondary);margin:0 0 var(--space-2)}.widget-empty__message{font-size:var(--text-sm);color:var(--text-tertiary);max-width:280px;margin:0}.widget-empty__hint{font-size:var(--text-xs);color:var(--text-tertiary);margin:var(--space-2)0 0;max-width:260px}.widget-empty__actions{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.widget-empty__action{padding:var(--space-2)var(--space-4);background:var(--accent-primary);border-radius:var(--radius-sm);color:#fff;font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast);border:none}.widget-empty__action:hover{background:var(--accent-hover)}.widget-empty__action--secondary{background:var(--bg-secondary);border:var(--border-width)solid var(--border-primary);color:var(--text-primary)}.widget-empty__action--secondary:hover{background:var(--bg-tertiary);border-color:var(--border-hover)}.widget-loading{padding:var(--space-8);background:var(--bg-widget);flex-direction:column;justify-content:center;align-items:center;min-height:200px;display:flex}.widget-loading__spinner{border:3px solid var(--border-primary);border-top-color:var(--accent-primary);border-radius:var(--radius-full);width:32px;height:32px;margin-bottom:var(--space-4);animation:.8s linear infinite spin}.widget-loading__message{font-size:var(--text-sm);color:var(--text-secondary);margin:0}.widget-loading__hint{font-size:var(--text-xs);color:var(--text-tertiary);margin:var(--space-2)0 0;text-align:center;max-width:240px}@keyframes spin{to{transform:rotate(360deg)}}
