/* ==========================================================================
   EMPTY STATE COMPONENT
   ========================================================================== */

.empty-state-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px;
    text-align: center;
    border: 1px solid #BFDBFE;
    border-radius: 12px;
    min-height: 280px;
    max-height: 320px;
    width: 100%;
    background: #FFFFFF;
    gap: 1rem;
}

.empty-state-illustration {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 8px;
    height: 60px;
    width: 100px;
    margin-bottom: 0.5rem;
}

.empty-state-bar {
    width: 16px;
    background: #D1D5DB;
    border-radius: 2px 2px 0 0;
}

.empty-state-bar.short {
    height: 24px;
}

.empty-state-bar.medium {
    height: 40px;
}

.empty-state-bar.tall {
    height: 56px;
}

.empty-state-title {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #111827;
    margin: 0;
}

.empty-state-description {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #6B7280;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.empty-state-description i {
    font-size: 14px;
    color: #9CA3AF;
}

/* --- No-data figure (rendered inside the graph) polish ---
   The no-data state is a Plotly figure (not an HTML div) so the dcc.Graph id
   stays mounted. These rules give it a seamless, card-like frame inside the
   chart card, matching the 24px card radius. */
.chart-card .js-plotly-plot,
.chart-card .plot-container {
    border-radius: 14px;
    overflow: hidden;
}

.chart-card .js-plotly-plot .main-svg {
    background: transparent;
}

/* Tall charts keep their height in the empty state (no layout jump). */
.chart-card .js-plotly-plot .plot-container {
    height: 100%;
}
