.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.duckviz-dashboard{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--app-text-default);height:100%}.duckviz-widget-card{background:var(--app-surface-default,#ffffff);border:1px solid var(--app-border-default,#e0e0e0);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;height:100%}.duckviz-widget-card__header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;gap:8px;border-bottom:1px solid var(--app-border-default,#e0e0e0);flex-shrink:0;min-height:36px}.duckviz-widget-card__drag-handle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;margin-right:2px;border-radius:4px;color:var(--app-text-subtle,#888);cursor:grab;opacity:.55;transition:opacity .12s ease,background-color .12s ease,color .12s ease;user-select:none;-webkit-user-select:none;touch-action:none}.duckviz-widget-card:hover .duckviz-widget-card__drag-handle{opacity:1}.duckviz-widget-card__drag-handle:hover{background:var(--app-surface-subtle,rgba(0,0,0,.05));color:var(--app-text-default,#1a1a1a)}.duckviz-widget-card__drag-handle:active,.react-grid-item.react-draggable-dragging .duckviz-widget-card__drag-handle{cursor:grabbing}.duckviz-widget-card__title{font-size:13px;font-weight:600;color:var(--app-text-default,#1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;margin:0}.duckviz-widget-card__actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.duckviz-widget-card__body{flex:1;min-height:0;position:relative;padding:8px;display:flex;align-items:stretch}.duckviz-widget-card__body>*{flex:1;min-width:0;min-height:0;display:flex}.duckviz-widget-card__footer{padding:6px 12px 8px;font-size:11px;color:var(--app-text-subtle,#888);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;border-top:1px solid var(--app-border-default,#e0e0e0)}.duckviz-widget-card__loader{color:var(--app-text-subtle,#888);font-size:13px}.duckviz-widget-card__error,.duckviz-widget-card__loader{display:flex;align-items:center;justify-content:center;flex:1}.duckviz-widget-card__error{color:#e53935;font-size:12px;padding:12px;text-align:center}.duckviz-dashboard__grid{width:100%;height:100%}.duckviz-dashboard__grid .react-grid-item.react-grid-placeholder{background:var(--app-primary-default,#c45a2c);opacity:.15;border-radius:8px}.duckviz-dashboard__grid .react-resizable-handle:after{border-color:var(--app-border-default,#e0e0e0)}.duckviz-widget-card[data-bp=md] .duckviz-widget-card__header,.duckviz-widget-card[data-bp=sm] .duckviz-widget-card__header{padding:6px 10px;min-height:32px}.duckviz-widget-card[data-bp=sm] .duckviz-widget-card__title{font-size:12px}.duckviz-widget-card[data-bp=sm] .duckviz-widget-card__drag-handle{display:none}.duckviz-widget-card[data-bp=sm] .duckviz-widget-card__body{padding:6px}