/*
 * Painel Executivo — grid customizado que substitui o grid padrão de
 * Widgets do Filament nesta página. Reaproveita os tokens de cor do
 * tema atual (fi-color-*) para não destoar do resto do painel.
 *
 * Filament alterna claro/escuro adicionando a classe "dark" na <html>
 * (Tailwind darkMode:'class'), não por media query — por isso as cores
 * daqui são custom properties escopadas em .executive-dashboard, com um
 * conjunto de valores padrão (claro) e outro sob ".dark" (escuro).
 */

.executive-dashboard {
    --dash-text-primary: #111827;
    --dash-text-secondary: #4b5563;
    --dash-text-muted: #6b7280;
    --dash-text-faint: #9ca3af;
    --dash-card-bg: #f9fafb;
    --dash-card-border: rgba(245, 158, 11, 0.4);
    --dash-card-bg-hover: #f3f4f6;
    --dash-card-border-hover: rgba(245, 158, 11, 0.65);
    --dash-divider: rgba(0, 0, 0, 0.08);
    --dash-periodo-bg: rgba(0, 0, 0, 0.035);
    --dash-periodo-border: rgba(245, 158, 11, 0.4);
    --dash-secondary-btn-bg: rgba(0, 0, 0, 0.035);
    --dash-secondary-btn-border: rgba(245, 158, 11, 0.4);

    --dash-pill-success-bg: rgba(34, 197, 94, 0.12);
    --dash-pill-success-text: #15803d;
    --dash-pill-warning-bg: rgba(245, 158, 11, 0.14);
    --dash-pill-warning-text: #b45309;
    --dash-pill-danger-bg: rgba(239, 68, 68, 0.12);
    --dash-pill-danger-text: #b91c1c;
    --dash-pill-info-bg: rgba(59, 130, 246, 0.12);
    --dash-pill-info-text: #1d4ed8;
    --dash-pill-gray-bg: rgba(113, 113, 122, 0.12);
    --dash-pill-gray-text: #52525b;

    --dash-icon-success: #16a34a;
    --dash-icon-info: #2563eb;
    --dash-icon-warning: #d97706;
    --dash-icon-danger: #dc2626;
    --dash-icon-gray: #52525b;

    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.dark .executive-dashboard {
    --dash-text-primary: rgb(249 250 251);
    --dash-text-secondary: rgb(156 163 175);
    --dash-text-muted: rgb(107 114 128);
    --dash-text-faint: rgb(82 82 91);
    --dash-card-bg: rgba(255, 255, 255, 0.025);
    --dash-card-border: rgba(255, 255, 255, 0.07);
    --dash-card-bg-hover: rgba(255, 255, 255, 0.05);
    --dash-card-border-hover: rgba(255, 255, 255, 0.12);
    --dash-divider: rgba(255, 255, 255, 0.07);
    --dash-periodo-bg: rgba(255, 255, 255, 0.04);
    --dash-periodo-border: rgba(255, 255, 255, 0.08);
    --dash-secondary-btn-bg: rgba(255, 255, 255, 0.05);
    --dash-secondary-btn-border: rgba(255, 255, 255, 0.08);

    --dash-pill-success-bg: rgba(34, 197, 94, 0.16);
    --dash-pill-success-text: #4ade80;
    --dash-pill-warning-bg: rgba(245, 158, 11, 0.16);
    --dash-pill-warning-text: #fbbf24;
    --dash-pill-danger-bg: rgba(239, 68, 68, 0.16);
    --dash-pill-danger-text: #f87171;
    --dash-pill-info-bg: rgba(59, 130, 246, 0.16);
    --dash-pill-info-text: #60a5fa;
    --dash-pill-gray-bg: rgba(161, 161, 170, 0.16);
    --dash-pill-gray-text: #d4d4d8;

    --dash-icon-success: #4ade80;
    --dash-icon-info: #60a5fa;
    --dash-icon-warning: #fbbf24;
    --dash-icon-danger: #f87171;
    --dash-icon-gray: #d4d4d8;
}

/* ---------------------------------------------------------------- Header */

.executive-header {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.executive-header__periodo {
    padding: 0.5rem 0.875rem;
    border-radius: 0.5rem;
    background-color: var(--dash-periodo-bg);
    border: 1px solid var(--dash-periodo-border);
    font-size: 0.8125rem;
    color: var(--dash-text-secondary);
    white-space: nowrap;
}

/* ------------------------------------------------------------------ KPIs */

.executive-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

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

@media (max-width: 479px) {
    .executive-kpis {
        grid-template-columns: minmax(0, 1fr);
    }
}

.executive-kpi {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    padding: 1.25rem;
    border-radius: 0.75rem;
    background-color: var(--dash-card-bg);
    border: 1px solid var(--dash-card-border);
    text-decoration: none;
    transition: border-color 120ms ease, background-color 120ms ease;
}

a.executive-kpi--linked:hover {
    background-color: var(--dash-card-bg-hover);
    border-color: var(--dash-card-border-hover);
}

.executive-kpi__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.executive-kpi__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 1.75rem;
    height: 1.75rem;
}

.executive-kpi__icon-svg {
    width: 1.75rem;
    height: 1.75rem;
}

.executive-kpi__text {
    display: flex;
    flex: 1 1 0%;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.25rem;
    min-width: 0;
    text-align: right;
}

.executive-kpi__label {
    font-size: 0.8125rem;
    color: var(--dash-text-secondary);
    line-height: 1.25;
    white-space: normal;
    word-break: break-word;
}

.executive-kpi__valor {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--dash-text-primary);
    line-height: 1.15;
}

.executive-kpi__divider {
    height: 1px;
    background-color: var(--dash-divider);
}

.executive-kpi__footer {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.executive-kpi__footer-icon {
    width: 0.875rem;
    height: 0.875rem;
    flex-shrink: 0;
    color: var(--dash-text-muted);
}

.executive-kpi__descricao {
    font-size: 0.75rem;
    color: var(--dash-text-muted);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.executive-kpi--success .executive-kpi__icon-svg { color: var(--dash-icon-success); }
.executive-kpi--info .executive-kpi__icon-svg { color: var(--dash-icon-info); }
.executive-kpi--warning .executive-kpi__icon-svg { color: var(--dash-icon-warning); }
.executive-kpi--danger .executive-kpi__icon-svg { color: var(--dash-icon-danger); }
.executive-kpi--primary .executive-kpi__icon-svg { color: var(--dash-icon-warning); }
.executive-kpi--gray .executive-kpi__icon-svg { color: var(--dash-icon-gray); }

/* -------------------------------------------------------------- Grids */

.executive-main-grid {
    display: grid;
    grid-template-columns: 1.5fr 1.5fr 1fr;
    gap: 1.25rem;
    align-items: stretch;
}

.executive-bottom-grid {
    display: grid;
    grid-template-columns: 1.5fr 1.5fr 1fr;
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 1279px) {
    .executive-main-grid,
    .executive-bottom-grid {
        grid-template-columns: 1fr;
    }
}

.executive-side-stack {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* -------------------------------------------------- Calendário + agenda */

.executive-agenda-grid {
    display: grid;
    grid-template-columns: 2.2fr 1fr;
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 1279px) {
    .executive-agenda-grid {
        grid-template-columns: 1fr;
    }
}

.executive-agenda-grid .agenda-comercial__calendario {
    border: none;
    padding: 0;
    background: none;
}

/* "Próximos eventos" e "Eventos concluídos" empilhados na mesma coluna
   (coluna da direita do grid) — "Calendário comercial" fica sozinho na
   coluna da esquerda. margin-top redundante ao gap (cinturão e
   suspensórios): garante o espaçamento entre os dois cards mesmo se
   algum reset do painel zerar gap em flex. */
.executive-agenda-grid__coluna-lateral {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    min-width: 0;
}

.executive-agenda-grid__coluna-lateral .dashboard-card + .dashboard-card {
    margin-top: 1.25rem;
}

.executive-proximos-eventos {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.executive-proximo-evento {
    display: flex;
    gap: 0.75rem;
    align-items: center;
}

/* background-color/color vêm inline no blade (corHexDoTipo()/
   precisaTextoClaro() — mesma cor do tipo em qualquer lugar do módulo,
   nunca uma paleta paralela); var(--dash-card-border) só sobra como
   fallback caso o inline falhe por algum motivo. __dia/__mes de
   propósito sem color própria: herdam do pai, senão a regra explícita
   deles venceria a herança e o inline do pai nunca apareceria no texto. */
.executive-proximo-evento__data {
    flex-shrink: 0;
    width: 3rem;
    text-align: center;
    border-radius: 0.5rem;
    background-color: var(--dash-card-border);
    padding: 0.375rem 0;
}

.executive-proximo-evento__dia {
    display: block;
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.1;
}

.executive-proximo-evento__mes {
    display: block;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    opacity: 0.85;
}

.executive-proximo-evento__info {
    min-width: 0;
}

.executive-proximo-evento__titulo {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--dash-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.executive-proximo-evento__meta {
    font-size: 0.75rem;
    color: var(--dash-text-secondary);
}

.executive-actions--agenda {
    margin-top: 0.75rem;
}

/* Distingue visualmente um evento já finalizado do resto de
   "executive-proximo-evento" (mesmo racional de .agenda-evento--finalizado
   no calendário: marcar como concluído precisa mudar alguma coisa na
   aparência, não só o status por trás). A cor de fundo/texto da bolinha
   de data vem inline por tipo (corHexDoTipo()/precisaTextoClaro() no
   blade — mesma cor do tipo em qualquer lugar do módulo), só o título
   riscado fica aqui. */
.executive-proximo-evento--concluido .executive-proximo-evento__titulo {
    text-decoration: line-through;
    color: var(--dash-text-secondary);
}

/* ------------------------------------------------------------------ Card */

.dashboard-card {
    display: flex;
    flex-direction: column;
    border-radius: 0.875rem;
    background-color: var(--dash-card-bg);
    border: 1px solid var(--dash-card-border);
    padding: 1.25rem;
    min-width: 0;
}

.dashboard-card__header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.dashboard-card__title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--dash-text-primary);
}

.dashboard-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: rgb(251 191 36);
    text-decoration: none;
    white-space: nowrap;
}

.dashboard-card__link:hover {
    text-decoration: underline;
}

.dashboard-card__link-icon {
    width: 0.75rem;
    height: 0.75rem;
}

.dashboard-card__hint {
    font-size: 0.75rem;
    color: var(--dash-text-muted);
    margin-bottom: 0.5rem;
}

.dashboard-card__empty {
    font-size: 0.8125rem;
    color: var(--dash-text-muted);
    padding: 1rem 0;
    text-align: center;
}

.dashboard-card__body {
    flex: 1;
    min-width: 0;
}

.executive-card--donut .dashboard-card__body {
    display: flex;
    align-items: center;
}

.executive-card--resumo .dashboard-card__body {
    display: flex;
    align-items: center;
}

.executive-card--resumo .executive-resumo {
    width: 100%;
}

/* ---------------------------------------------------------------- Chart */

.executive-chart-frame {
    height: 260px;
}

.executive-chart-canvas {
    width: 100%;
    height: 100%;
    position: relative;
}

/* ---------------------------------------------------------------- Donut */

.executive-donut-layout {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    width: 100%;
}

.executive-donut-frame {
    position: relative;
    width: 190px;
    height: 190px;
    flex-shrink: 0;
}

.executive-donut-canvas {
    width: 100%;
    height: 100%;
}

.executive-donut-center {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.executive-donut-center__total {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--dash-text-primary);
    line-height: 1.1;
}

.executive-donut-center__label {
    font-size: 0.6875rem;
    color: var(--dash-text-muted);
}

.executive-donut-legend {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 120px;
    flex: 1 1 120px;
}

.executive-donut-legend__item {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.75rem;
}

.executive-donut-legend__dot {
    width: 0.5rem;
    height: 0.5rem;
    margin-top: 0.375rem;
    border-radius: 9999px;
    flex-shrink: 0;
}

.executive-donut-legend__label {
    color: var(--dash-text-secondary);
    flex: 1;
    min-width: 0;
    white-space: normal;
    overflow-wrap: break-word;
    line-height: 1.25;
}

.executive-donut-legend__valor {
    font-weight: 600;
    color: var(--dash-text-primary);
    white-space: nowrap;
}

.executive-donut-legend__percentual {
    font-weight: 400;
    color: var(--dash-text-muted);
    font-size: 0.75rem;
}

/* --------------------------------------------------------------- Resumo */

.executive-resumo {
    display: flex;
    flex-direction: column;
}

.executive-resumo__item {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 1.125rem 0;
    border-top: 1px solid var(--dash-divider);
}

.executive-resumo__item:first-child {
    padding-top: 0;
    border-top: none;
}

.executive-resumo__label {
    font-size: 0.8125rem;
    color: var(--dash-text-secondary);
    flex: 1;
    min-width: 0;
}

.executive-resumo__valor {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--dash-text-primary);
    white-space: nowrap;
}

/* ----------------------------------------------------------------- Table */

.dashboard-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.dashboard-table th {
    text-align: left;
    font-weight: 500;
    color: var(--dash-text-muted);
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 0 0.75rem 0.625rem 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dashboard-status-pill {
    display: inline-flex;
    align-items: center;
    padding: 0.1875rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: normal;
}

.dashboard-status-pill--success { background-color: var(--dash-pill-success-bg); color: var(--dash-pill-success-text); }
.dashboard-status-pill--warning { background-color: var(--dash-pill-warning-bg); color: var(--dash-pill-warning-text); }
.dashboard-status-pill--danger { background-color: var(--dash-pill-danger-bg); color: var(--dash-pill-danger-text); }
.dashboard-status-pill--info { background-color: var(--dash-pill-info-bg); color: var(--dash-pill-info-text); }
.dashboard-status-pill--gray { background-color: var(--dash-pill-gray-bg); color: var(--dash-pill-gray-text); }

.dashboard-table td {
    padding: 0.75rem 0.75rem 0.75rem 0;
    border-top: 1px solid var(--dash-divider);
    color: var(--dash-text-primary);
    vertical-align: middle;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dashboard-table td.dashboard-table__cliente {
    white-space: normal;
    word-break: break-word;
}

.dashboard-table td:last-child,
.dashboard-table th:last-child {
    padding-right: 0;
}

.dashboard-table .fi-badge {
    max-width: 100%;
    white-space: normal !important;
    text-align: left;
}

.dashboard-table .fi-badge .fi-badge-label {
    white-space: normal !important;
    text-overflow: clip !important;
    overflow: visible !important;
}

.dashboard-table--vendas th:nth-child(1),
.dashboard-table--vendas td:nth-child(1) { width: 18%; }
.dashboard-table--vendas th:nth-child(2),
.dashboard-table--vendas td:nth-child(2) { width: 32%; }
.dashboard-table--vendas th:nth-child(3),
.dashboard-table--vendas td:nth-child(3) { width: 28%; }
.dashboard-table--vendas th:nth-child(4),
.dashboard-table--vendas td:nth-child(4) { width: 22%; }

.dashboard-table--containers th:nth-child(1),
.dashboard-table--containers td:nth-child(1) { width: 16%; }
.dashboard-table--containers th:nth-child(2),
.dashboard-table--containers td:nth-child(2) { width: 24%; }
.dashboard-table--containers th:nth-child(3),
.dashboard-table--containers td:nth-child(3) { width: 32%; }
.dashboard-table--containers th:nth-child(4),
.dashboard-table--containers td:nth-child(4) {
    width: 28%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dashboard-table__link {
    color: rgb(251 191 36);
    text-decoration: none;
    font-weight: 500;
}

.dashboard-table__link:hover {
    text-decoration: underline;
}

/* --------------------------------------------------------------- Actions */

.executive-actions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.executive-actions__button {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    font-size: 0.8125rem;
    font-weight: 600;
    text-decoration: none;
    transition: opacity 120ms ease;
}

.executive-actions__button:hover {
    opacity: 0.88;
}

.executive-actions__icon {
    width: 1rem;
    height: 1rem;
}

.executive-actions__button--primary {
    background-color: rgb(245 158 11);
    color: #1c1917;
}

.executive-actions__button--secondary {
    background-color: var(--dash-secondary-btn-bg);
    border: 1px solid var(--dash-secondary-btn-border);
    color: var(--dash-text-primary);
}

/* ------------------------------------------------------------- Activity */

.executive-activity {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.executive-activity__item {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
}

.executive-activity__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 9999px;
    flex-shrink: 0;
}

.executive-activity__icon-svg {
    width: 0.875rem;
    height: 0.875rem;
}

.executive-activity__icon--success { background-color: var(--dash-pill-success-bg); color: var(--dash-pill-success-text); }
.executive-activity__icon--info { background-color: var(--dash-pill-info-bg); color: var(--dash-pill-info-text); }
.executive-activity__icon--warning { background-color: var(--dash-pill-warning-bg); color: var(--dash-pill-warning-text); }
.executive-activity__icon--danger { background-color: var(--dash-pill-danger-bg); color: var(--dash-pill-danger-text); }
.executive-activity__icon--primary { background-color: var(--dash-pill-warning-bg); color: var(--dash-pill-warning-text); }
.executive-activity__icon--gray { background-color: var(--dash-pill-gray-bg); color: var(--dash-pill-gray-text); }

.executive-activity__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.executive-activity__titulo {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--dash-text-primary);
}

.executive-activity__descricao {
    font-size: 0.75rem;
    color: var(--dash-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.executive-activity__data {
    font-size: 0.6875rem;
    color: var(--dash-text-faint);
    margin-top: 0.125rem;
}

.executive-dashboard {
    color-scheme: light;
    --dash-text-primary: #080e3d;
    --dash-text-secondary: #304f8c;
    --dash-text-muted: #6484b7;
    --dash-text-faint: #6f8db9;
    --dash-card-bg: #ffffff;
    --dash-card-border: #d7eaff;
    --dash-card-bg-hover: #f0f8ff;
    --dash-card-border-hover: #8cc4ff;
    --dash-divider: #e0edfc;
    --dash-periodo-bg: #ffffff;
    --dash-periodo-border: #d7eaff;
    --dash-secondary-btn-bg: #f2f8ff;
    --dash-secondary-btn-border: #d3e7ff;
    --dash-icon-success: #00bd91;
    --dash-icon-info: #0075ff;
    --dash-icon-warning: #ffb500;
    --dash-today-bg: #d9ebff;
    gap: .875rem;
}
.dark .executive-dashboard { --dash-today-bg: #ffc40026; }
/* Visual aprovado: superfícies azul-marinho e acentos amarelos.
   Escopo da página mantém os demais módulos e os modais no tema do painel. */
body:has(.executive-dashboard-page) .fi-main { max-width: 1600px; }
.executive-dashboard-page .fi-header-heading { color: var(--dash-heading); }
.dark .executive-dashboard {
    color-scheme: dark;
    --dash-text-primary: #f1f5ff;
    --dash-text-secondary: var(--dash-shell-text);
    --dash-text-muted: #9bb8d8;
    --dash-text-faint: #7f9abb;
    --dash-card-bg: #091623;
    --dash-card-border: #173d60;
    --dash-card-bg-hover: #102338;
    --dash-card-border-hover: #2672ab;
    --dash-divider: #1a2e42;
    --dash-periodo-bg: #0c1b2c;
    --dash-periodo-border: #234866;
    --dash-secondary-btn-bg: #102033;
    --dash-secondary-btn-border: #263e58;
    --dash-icon-success: #00ddb0;
    --dash-icon-info: #139fff;
    --dash-icon-warning: var(--dash-accent);
    --dash-pill-success-text: #00e5b0;
    --dash-pill-warning-text: #ffd02b;
    --dash-pill-danger-text: #ff8585;
    --dash-pill-info-text: #8fc8ff;
    --dash-pill-gray-text: #c3d5ec;
    gap: .875rem;
}
.executive-header { gap: .4rem; margin-top: -.75rem; }
.executive-header__subtitle { width: 100%; color: var(--dash-text-secondary); font-size: .875rem; }
.executive-header__periodo { display: inline-flex; align-items: center; gap: .5rem; padding: .375rem .625rem; }
.executive-kpis { gap: .75rem; }
.executive-kpi, .dashboard-card {
    background: var(--dash-surface);
    border-radius: .625rem;
    box-shadow: var(--dash-surface-shadow);
    padding: .875rem;
}
.executive-kpi { gap: .25rem; position: relative; }
.executive-kpi__top { align-items: center; gap: 1rem; }
.executive-kpi__icon { width: 3.25rem; height: 3.25rem; border-radius: .625rem; background: var(--dash-icon-bg); }
.executive-kpi--success .executive-kpi__icon { background: var(--dash-success-bg); }
.executive-kpi--warning .executive-kpi__icon, .executive-kpi--primary .executive-kpi__icon { background: var(--dash-warning-bg); }
.executive-kpi--info .executive-kpi__icon { background: var(--dash-info-bg); }
.executive-kpi__text { align-items: flex-start; text-align: left; }
.executive-kpi__valor { font-size: 1.375rem; }
.executive-kpi__divider { display: none; }
.executive-kpi__footer { margin-left: 4.25rem; }
.executive-kpi__descricao { white-space: normal; font-size: .6875rem; }
.executive-main-grid, .executive-bottom-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.executive-agenda-grid { grid-template-columns: minmax(0, 2.1fr) minmax(0, 1fr); gap: 1rem; }
.executive-side-stack, .executive-agenda-grid__coluna-lateral { gap: .75rem; }
.executive-agenda-grid__coluna-lateral .dashboard-card + .dashboard-card { margin-top: 0; }
.dashboard-card__title { display: flex; align-items: center; gap: .625rem; font-size: .875rem; }
.dashboard-card__title-icon { width: 1.25rem; height: 1.25rem; flex-shrink: 0; color: var(--dash-accent); }
.dashboard-card__link, .dashboard-table__link { color: var(--dash-accent); }
.executive-chart-frame { height: 155px; }
.executive-donut-frame { width: 125px; height: 125px; }
.executive-donut-layout { gap: .875rem; flex-wrap: wrap; }
.executive-donut-legend { gap: .625rem; }
.executive-resumo__item { padding: .375rem .5rem; background: var(--dash-subtle-bg); }
.executive-resumo__item:first-child { padding-top: .375rem; }
.executive-resumo__label, .executive-resumo__valor { font-size: .75rem; }
.dashboard-table { font-size: .6875rem; }
.dashboard-table th { background: var(--dash-subtle-bg); padding: .375rem .25rem; font-size: .5625rem; }
.dashboard-table td { padding: .625rem .25rem; }
.dashboard-status-pill { border-radius: .375rem; font-size: .625rem; }
.executive-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .375rem; }
.executive-actions--agenda { grid-template-columns: 1fr; }
.executive-actions__button { padding: .375rem .625rem; font-size: .6875rem; }
.executive-actions__button--primary { color: var(--dash-button-text); background: var(--dash-button-bg); border: 1px solid var(--dash-button-border); box-shadow: var(--dash-active-shadow); }
.executive-actions--agenda .executive-actions__button { justify-content: center; }
.executive-proximos-eventos { gap: .5rem; }
.executive-proximo-evento__data { width: 2.125rem; }
.executive-proximo-evento__dia { font-size: .875rem; }
.executive-proximo-evento__titulo { font-size: .75rem; }
.executive-activity { gap: .5rem; }
.executive-activity__titulo, .executive-activity__descricao { font-size: .6875rem; }
.executive-dashboard .agenda-comercial__legenda { color: var(--dash-shell-text); flex-basis: 100%; font-size: .625rem; margin: .5rem 0 0; }
.executive-dashboard .agenda-comercial__calendario--compacto { padding: 0; background: transparent; }
.executive-dashboard .fc {
    --fc-border-color: var(--dash-divider);
    --fc-page-bg-color: var(--dash-card-bg);
    --fc-neutral-bg-color: var(--dash-subtle-bg);
    --fc-today-bg-color: var(--dash-today-bg);
    --fc-list-event-hover-bg-color: var(--dash-card-bg-hover);
    color: var(--dash-text-primary);
    font-size: .75rem;
}
.executive-dashboard .fc .fc-toolbar-title { font-size: 1rem; }
.executive-dashboard .fc .fc-button { background: var(--dash-subtle-bg); border-color: var(--dash-card-border); color: var(--dash-text-primary); box-shadow: none; }
.executive-dashboard .fc .fc-button-primary:not(:disabled).fc-button-active { background: var(--dash-calendar-active); border-color: var(--dash-accent); color: #fff; box-shadow: var(--dash-active-shadow); }
.executive-dashboard .fi-wi-chart-grid-color { color: var(--dash-grid); }
.executive-dashboard .fi-wi-chart-text-color { color: var(--dash-chart-text); }
.executive-dashboard :is(a, button):focus-visible { outline: 2px solid var(--dash-accent); outline-offset: 3px; }
@media (max-width: 1100px) {
    .executive-main-grid, .executive-bottom-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .executive-agenda-grid { grid-template-columns: 1fr; }
    .executive-agenda-grid__coluna-lateral { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .executive-main-grid, .executive-bottom-grid, .executive-agenda-grid__coluna-lateral { grid-template-columns: 1fr; }
    .executive-kpis { grid-template-columns: 1fr; }
    .executive-dashboard .fc .fc-toolbar { flex-wrap: wrap; gap: .5rem; }
    .executive-chart-frame { height: 190px; }
}

.executive-dashboard [data-chart-type="line"] .fi-wi-chart-border-color { color: var(--dash-accent); }
.executive-dashboard [data-chart-type="line"] .fi-wi-chart-bg-color { color: var(--dash-chart-fill); }

/* ------------------------------------- Clientes com processo em aberto na esteira */
/* Miniesteira reaproveita .venda-mini-esteira (venda-esteira.css); aqui só o card/tabela. */

.executive-card--esteira .dashboard-card__title-icon { color: rgb(251 191 36); }
.executive-card--esteira .dashboard-card__header { margin-bottom: 0.25rem; }

.dashboard-esteira__rolagem { overflow-x: auto; min-width: 0; }

.dashboard-table--esteira { min-width: 56rem; }
.dashboard-table--esteira th:nth-child(1), .dashboard-table--esteira td:nth-child(1) { width: 20%; }
.dashboard-table--esteira th:nth-child(2), .dashboard-table--esteira td:nth-child(2) { width: 12%; }
.dashboard-table--esteira th:nth-child(3), .dashboard-table--esteira td:nth-child(3) { width: 30%; }
.dashboard-table--esteira th:nth-child(4), .dashboard-table--esteira td:nth-child(4) { width: 15%; }
.dashboard-table--esteira th:nth-child(5), .dashboard-table--esteira td:nth-child(5) { width: 14%; }
.dashboard-table--esteira th:nth-child(6), .dashboard-table--esteira td:nth-child(6) { width: 9%; text-align: right; }
.dashboard-table--esteira td { font-variant-numeric: tabular-nums; }

.venda-mini-esteira--resumo { grid-template-columns: repeat(var(--ve-pontos, 5), 3.2rem); }

.dashboard-esteira__sem-status { color: var(--dash-text-muted); }

.dashboard-esteira__ver {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.375rem 0.75rem;
    border: 1px solid var(--dash-card-border);
    border-radius: 0.5rem;
    color: var(--dash-text-primary);
    font-size: 0.75rem;
    font-weight: 500;
    text-decoration: none;
}
.dashboard-esteira__ver:hover { border-color: rgb(251 191 36); color: rgb(251 191 36); }
.dashboard-esteira__ver-icone { width: 1rem; height: 1rem; }

.dashboard-esteira__vazio { padding: 1.5rem 0 0.5rem; text-align: center; }

/* Mobile: cada venda vira um bloco empilhado, sem rolagem lateral. */
@media (max-width: 640px) {
    .dashboard-table--esteira { min-width: 0; table-layout: auto; }
    .dashboard-table--esteira thead { display: none; }
    .dashboard-table--esteira, .dashboard-table--esteira tbody, .dashboard-table--esteira tr, .dashboard-table--esteira td { display: block; width: 100% !important; }
    .dashboard-table--esteira tr { padding: 0.75rem 0; border-top: 1px solid var(--dash-divider); }
    .dashboard-table--esteira td { border-top: 0; padding: 0.25rem 0; white-space: normal; text-align: left !important; }
    .dashboard-table--esteira td::before { content: attr(data-label); display: block; font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.03em; color: var(--dash-text-muted); }
}

/* ------------------------------------- Topo: blocos Estoque de Containers e Vendas / Comercial */

.executive-dashboard { --dash-icon-purple: #7c3aed; --dash-purple-bg: #ede9fe; }
.dark .executive-dashboard { --dash-icon-purple: #a78bfa; --dash-purple-bg: #a78bfa26; }

.executive-kpi--purple .executive-kpi__icon-svg { color: var(--dash-icon-purple); }
.executive-kpi--purple .executive-kpi__icon { background: var(--dash-purple-bg); }

.executive-grupo {
    display: grid;
    gap: .75rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--dash-card-border);
    border-radius: .875rem;
    background: color-mix(in srgb, var(--dash-surface) 55%, transparent);
}
.executive-grupo--estoque { border-color: color-mix(in srgb, var(--dash-accent) 70%, transparent); }

.executive-grupo__header { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.executive-grupo__icone { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; color: var(--dash-accent); }
.executive-grupo--comercial .executive-grupo__icone { color: var(--dash-icon-info); }
.executive-grupo__icone .fi-icon { width: 2rem; height: 2rem; }
.executive-grupo__titulos { flex: 1 1 16rem; min-width: 0; }
.executive-grupo__titulo { font-size: .9375rem; font-weight: 600; color: var(--dash-text-primary); }
.executive-grupo__descricao { font-size: .75rem; color: var(--dash-text-secondary); }
.executive-grupo__header .dashboard-card__link { margin-left: auto; }

.executive-kpis--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.executive-kpis--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.executive-kpi--capital .executive-kpi__valor { font-size: 1.25rem; white-space: nowrap; }

@media (max-width: 1279px) {
    .executive-kpis--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1023px) {
    .executive-kpis--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 639px) {
    .executive-kpis--4, .executive-kpis--3 { grid-template-columns: minmax(0, 1fr); }
    .executive-grupo { padding: .75rem; }
    .executive-kpi--capital .executive-kpi__valor { white-space: normal; }
}

/* Aviso de containers sem venda vinculada (ver Dashboard::containersARegularizar) */
.dashboard-aviso-regularizar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    border: 1px solid rgba(239, 68, 68, 0.45);
    border-radius: 0.75rem;
    background: rgba(239, 68, 68, 0.1);
    color: var(--dash-text-primary);
    font-size: 0.875rem;
}
.dashboard-aviso-regularizar:hover { background: rgba(239, 68, 68, 0.16); }
.dashboard-aviso-regularizar__icone { width: 1.125rem; height: 1.125rem; color: rgb(239 68 68); flex-shrink: 0; }
.dashboard-aviso-regularizar__acao { margin-left: auto; display: inline-flex; align-items: center; gap: 0.25rem; font-weight: 600; }

/* ----------------------------------------- Clientes aptos aguardando venda */
/* Faixa abaixo dos KPIs comerciais — mesma fonte da aba Vendas → Aptos para Venda. */

.executive-aptos {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 1rem;
    margin-top: 1rem;
    padding: 1rem 1.25rem;
    border-radius: .625rem;
    background: var(--dash-surface);
    box-shadow: var(--dash-surface-shadow);
}
.executive-aptos__icone { display: flex; align-items: center; justify-content: center; width: 3.25rem; height: 3.25rem; border-radius: .625rem; background: var(--dash-success-bg); color: var(--dash-icon-success); }
.executive-aptos__icone .fi-icon { width: 1.6rem; height: 1.6rem; }
.executive-aptos__titulo { margin: 0; font-size: .9rem; font-weight: 600; color: var(--dash-text-primary); }
.executive-aptos__descricao { margin: .15rem 0 0; font-size: .75rem; color: var(--dash-text-muted); }
.executive-aptos__numeros { display: grid; grid-template-columns: auto auto; align-items: baseline; column-gap: .35rem; text-align: right; }
.executive-aptos__valor { font-size: 1.5rem; font-weight: 700; color: var(--dash-text-primary); font-variant-numeric: tabular-nums; }
.executive-aptos__rotulo { font-size: .8rem; color: var(--dash-text-secondary); }
.executive-aptos__autorizacoes { grid-column: 1 / -1; font-size: .7rem; color: var(--dash-text-muted); }
.executive-aptos__acao { display: inline-flex; align-items: center; gap: .35rem; padding: .5rem .85rem; border-radius: .5rem; background: var(--dash-success-bg); color: var(--dash-icon-success); font-size: .8rem; font-weight: 600; white-space: nowrap; }
.executive-aptos__acao:hover { filter: brightness(1.08); }
.executive-aptos__acao-icone { width: 1rem; height: 1rem; }

@media (max-width: 720px) {
    .executive-aptos { grid-template-columns: auto minmax(0, 1fr); }
    .executive-aptos__numeros { text-align: left; grid-column: 2; }
    .executive-aptos__acao { grid-column: 1 / -1; justify-content: center; }
}

/* Card de KPI com "detalhes" (ex.: Containers por tipo): barra proporcional + legenda. */
.executive-kpi__detalhes { display: flex; flex-direction: column; gap: .625rem; }
.executive-kpi__barra { display: flex; height: .375rem; overflow: hidden; border-radius: 9999px; background-color: var(--dash-divider); }
.executive-kpi__barra-parte { height: 100%; }
.executive-kpi__barra-parte--warning { background-color: var(--dash-icon-warning); }
.executive-kpi__barra-parte--success { background-color: var(--dash-icon-success); }
.executive-kpi__barra-parte--info { background-color: var(--dash-icon-info); }
.executive-kpi__legenda { display: flex; flex-wrap: wrap; gap: .375rem 1rem; margin: 0; padding: 0; list-style: none; }
.executive-kpi__legenda-item { display: inline-flex; align-items: center; gap: .375rem; font-size: .75rem; color: var(--dash-text-secondary); }
.executive-kpi__legenda-ponto { width: .5rem; height: .5rem; border-radius: 9999px; flex-shrink: 0; }
.executive-kpi__legenda-valor { font-weight: 700; color: var(--dash-text-primary); font-variant-numeric: tabular-nums; }
