/**
 * Dashboard Municipal GIS — Layout Grid
 *
 * Mobile-first:
 *   <768px:  sidebar colapsa, cards 1 por fila
 *   768-1199: 2 KPIs por fila, mapa full-width
 *   ≥1200:   layout completo 12 cols + sidebar fijo
 *
 * Referencia: spec §7.4.
 */
.fd-dashboard {
    display: grid;
    grid-template-columns: 240px 1fr;
    min-height: 100vh;
    background: var(--fd-bg);
    color: var(--fd-ink);
    font-family: var(--fd-font-sans);
}

.fd-sidebar {
    background: var(--fd-sidebar);
    color: var(--fd-sidebar-ink);
    padding: var(--wp--preset--spacing--60);
}

.fd-main {
    padding: var(--wp--preset--spacing--60);
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    column-gap: var(--wp--preset--spacing--50);
    row-gap: var(--wp--preset--spacing--70);
}

/* Slots del grid — las cards reales los asignarán por clase en Sprints 12-14 */
.fd-kpi       { grid-column: span 3; }
.fd-mapa      { grid-column: span 8; }
.fd-leyenda   { grid-column: span 4; }
.fd-filtros   { grid-column: span 4; }
.fd-ficha     { grid-column: span 12; }
.fd-detalle   { grid-column: span 4; }
.fd-traz      { grid-column: span 12; }

@media (max-width: 1199px) {
    .fd-kpi       { grid-column: span 6; }
    .fd-mapa      { grid-column: span 12; }
    .fd-leyenda   { grid-column: span 6; }
    .fd-filtros   { grid-column: span 6; }
    .fd-detalle   { grid-column: span 6; }
    .fd-traz      { grid-column: span 12; }
}

@media (max-width: 767px) {
    .fd-dashboard {
        grid-template-columns: 1fr;
    }
    .fd-sidebar {
        position: sticky;
        top: 0;
        z-index: 20;
        padding: var(--wp--preset--spacing--40);
    }
    .fd-main > * {
        grid-column: span 12;
    }
}
