.page {
    position: relative;
    z-index: 1;
    width: min(1320px, 95vw);
    margin: 22px auto 36px;
    display: grid;
    gap: 14px;
}

.page > * {
    min-width: 0;
}

.panel {
    min-width: 0;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 18px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 20px 42px rgba(4, 8, 18, 0.38);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.hero {
    padding: 20px 24px 18px;
    display: grid;
    gap: 14px;
}

.kpi-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
}

.band-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.charts-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.compare-panel {
    padding: 14px;
    display: grid;
    gap: 10px;
}

.compare-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 10px;
}

.chart-wrap.compare-chart {
    height: 300px;
}

.insight-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.insight-panel {
    padding: 14px;
}

.chart-panel {
    padding: 16px;
    min-height: 280px;
}

.chart-panel.span-2 {
    grid-column: 1 / -1;
}

.chart-wrap {
    position: relative;
    height: 260px;
}

.chart-wrap.tall {
    height: 360px;
}

.table-panel {
    padding: 14px;
}

.table-wrap {
    max-height: 540px;
    overflow: auto;
    border-radius: 12px;
    border: 1px solid var(--line-soft);
}

@media (max-width: 1280px) {
    .kpi-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .compare-kpi-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 920px) {
    .kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .compare-kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .band-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .charts-grid {
        grid-template-columns: 1fr;
    }

    .chart-panel.span-2 {
        grid-column: auto;
    }

    .insight-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .page {
        width: min(1320px, 97vw);
    }

    .hero,
    .chart-panel,
    .table-panel,
    .compare-panel,
    .error-panel,
    .insight-panel {
        padding: 12px;
    }

    .kpi-grid,
    .band-grid,
    .compare-kpi-grid {
        grid-template-columns: 1fr;
    }

    .chart-wrap,
    .chart-wrap.tall {
        height: 260px;
    }
}
