/* ============================================================
   DASHBOARD MASTER — Tema DARK profissional
   Tokens isolados via [data-dash-theme] no <body>.
   Aplicado em: dashboard_master, rankings, relatorio_mensal
   ============================================================ */

[data-dash-theme]{
    /* Fundos 5 niveis */
    --d-bg:#0a0f1c;
    --d-surface:#111827;
    --d-card:#1a2332;
    --d-card-hover:#232f42;
    --d-overlay:#2a3850;
    /* Texto 3 niveis */
    --d-text:#f1f5f9;
    --d-text-sec:#cbd5e1;
    --d-text-muted:#94a3b8;
    /* Borders 4 niveis */
    --d-border:#334155;
    --d-border-soft:#1f2937;
    --d-border-hard:#475569;
    --d-border-focus:#60a5fa;
    /* Semanticas (WCAG AA em fundo dark) */
    --d-primary:#3b82f6;
    --d-primary-bg:rgba(59,130,246,.12);
    /* Fundo CHEIO com texto branco: #3b82f6 da 3,68:1 com branco (reprova AA
       em texto de 12-13px); #2563eb da 5,17:1. O --d-primary segue para
       borda/texto sobre fundo escuro, onde passa. */
    --d-primary-strong:#2563eb;
    --d-primary-hover:#1d4ed8;
    --d-on-primary:#ffffff;
    --d-success:#22c55e;
    --d-success-bg:rgba(34,197,94,.12);
    --d-danger:#f87171;
    --d-danger-bg:rgba(248,113,113,.12);
    --d-warning:#fbbf24;
    --d-warning-bg:rgba(251,191,36,.12);
    --d-info:#38bdf8;
    --d-info-bg:rgba(56,189,248,.12);
    --d-purple:#a78bfa;
    --d-purple-bg:rgba(167,139,250,.12);
    --d-orange:#fb923c;
    --d-orange-bg:rgba(251,146,60,.12);
    /* Sombras (rgba opacas pq dark precisa) */
    --d-shadow-sm:0 1px 2px rgba(0,0,0,.4);
    --d-shadow-md:0 4px 12px rgba(0,0,0,.5);
    --d-shadow-lg:0 12px 32px rgba(0,0,0,.6);
    --d-shadow-glow:0 0 0 4px rgba(59,130,246,.15);
    /* Radii */
    --d-r-sm:6px;
    --d-r-md:10px;
    --d-r-lg:14px;
    --d-r-xl:20px;
}

/* ----------------------------------------------------------------
   BODY override quando data-dash-theme esta presente
   ---------------------------------------------------------------- */
body[data-dash-theme]{
    background:var(--d-bg) !important;
    color:var(--d-text) !important;
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    font-size:14px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    text-rendering:optimizeLegibility;
    font-feature-settings:'cv01','cv02','tnum';
    min-height:100vh;
    min-height:100dvh;
}

/* ⚠️ E2 (24/09) — TODO `:hover` desta folha mora num `@media (hover:hover) and
   (pointer:fine)` marcado `E2-HOVER`, e NO LUGAR em que a regra ja estava (mover para
   o fim trocaria a cascata: `.dash-btn-group .dash-btn:hover` passaria a vencer o
   `.is-active` de mesma especificidade). No toque o `:hover` GRUDA: o cartao tocado
   "subia e ficava", e o tooltip do termometro abria no toque e ficava depois de
   fechar o modal. O retorno do toque e o `:active` (o `touchstart` passivo do
   dashboard_comum.js o liga no iOS). A cerca `[P21]` reprova `:hover` fora de um
   `@media` com `hover:hover`; o matador do hover solto (tools/qa_dashboard_front.py) desembrulha. */

/* ----------------------------------------------------------------
   SHELL — container principal
   ---------------------------------------------------------------- */
.dash-shell{
    max-width:1400px;
    margin:0 auto;
    padding:24px 28px;
}

/* ----------------------------------------------------------------
   HEADER
   ---------------------------------------------------------------- */
.dash-header{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
    flex-wrap:wrap;
    margin-bottom:24px;
}
.dash-header__title{
    display:flex;
    flex-direction:column;
    gap:4px;
    min-width:0;
}
.dash-header__title h1{
    font-size:24px;
    font-weight:700;
    color:var(--d-text);
    line-height:1.15;
    letter-spacing:-0.02em;
    margin:0;
}
.dash-header__subtitle{
    font-size:13px;
    font-weight:500;
    color:var(--d-text-muted);
}
.dash-actions{
    display:flex;
    gap:8px;
    align-items:center;
    flex-wrap:wrap;
}

/* ----------------------------------------------------------------
   BOTOES
   ---------------------------------------------------------------- */
.dash-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    padding:8px 14px;
    border-radius:var(--d-r-md);
    border:1px solid var(--d-border);
    background:transparent;
    color:var(--d-text-sec);
    font-family:inherit;
    font-size:13px;
    font-weight:600;
    line-height:1;
    cursor:pointer;
    text-decoration:none;
    white-space:nowrap;
    transition:background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn:hover{
    border-color:var(--d-border-hard);
    background:var(--d-card);
    color:var(--d-text);
}
}
.dash-btn:focus-visible{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-btn:disabled{opacity:.5;cursor:not-allowed}
.dash-btn--sm{padding:6px 11px;font-size:12px}
.dash-btn--lg{padding:11px 18px;font-size:14px}

.dash-btn--primary{
    background:var(--d-primary-strong);
    border-color:var(--d-primary-strong);
    color:var(--d-on-primary);
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--primary:hover{
    background:var(--d-primary-hover);
    border-color:var(--d-primary-hover);
    color:var(--d-on-primary);
}
}

.dash-btn--outline{
    background:transparent;
    border-color:var(--d-border);
    color:var(--d-text-sec);
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--outline:hover{
    background:var(--d-card);
    border-color:var(--d-border-hard);
    color:var(--d-text);
}
}

.dash-btn--danger{
    background:transparent;
    border-color:rgba(248,113,113,.4);
    color:var(--d-danger);
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--danger:hover{
    background:var(--d-danger-bg);
    border-color:var(--d-danger);
    color:var(--d-danger);
}
}

.dash-btn--ghost{
    border-color:transparent;
    background:transparent;
    color:var(--d-text-muted);
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--ghost:hover{
    color:var(--d-text);
    background:var(--d-card);
}
}
/* Estados que faltavam (padrao .act-btn): PRESSIONADO, e TRAVADO que nao
   "acende" no hover — o "Desativar loja" travado nao pode parecer clicavel. */
.dash-btn:active:not(:disabled){transform:translateY(.5px)}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--primary:disabled:hover{background:var(--d-primary-strong);border-color:var(--d-primary-strong)}
.dash-btn--outline:disabled:hover{background:transparent;border-color:var(--d-border);color:var(--d-text-sec)}
.dash-btn--danger:disabled:hover{background:transparent;border-color:rgba(248,113,113,.4)}
}

/* Segmented button group */
.dash-btn-group{
    display:inline-flex;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
    padding:3px;
    gap:0;
    flex-wrap:wrap;
}
.dash-btn-group .dash-btn{
    border:1px solid transparent;
    background:transparent;
    border-radius:calc(var(--d-r-md) - 3px);
    padding:7px 14px;
    font-size:12.5px;
    color:var(--d-text-muted);
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn-group .dash-btn:hover{
    background:var(--d-card-hover);
    color:var(--d-text);
}
}
.dash-btn-group .dash-btn.is-active{
    background:var(--d-primary-strong);
    color:var(--d-on-primary);
    border-color:var(--d-primary-strong);
    box-shadow:var(--d-shadow-sm);
}

/* ----------------------------------------------------------------
   FILTRO PERIODO
   ---------------------------------------------------------------- */
.dash-filter{
    display:flex;
    flex-direction:column;
    gap:10px;
    margin-bottom:18px;
}
.dash-filter-row{
    display:flex;
    gap:12px;
    align-items:center;
    flex-wrap:wrap;
}
.dash-filter-label{
    font-size:11px;
    font-weight:600;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.08em;
    white-space:nowrap;
}
.dash-period-bar{
    display:none;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    padding:12px 14px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
}
.dash-period-bar.is-open{display:flex}
/* `width:auto`: o `style.css` do ERP poe `width:100%` em todo input, e dentro da linha flex
   das datas cada campo ocupava a linha INTEIRA — as 2 datas e o "Aplicar" saiam um embaixo
   do outro no computador (medido a 1366: 385 px cada, em 3 linhas). No celular (<= 600 px)
   a grade `.dash-period-datas` volta a 100% — a regra de la vem DEPOIS, com a mesma
   especificidade, e vence. Vale para a tela inicial e para a lista de clientes. */
.dash-period-bar input[type=date]{
    width:auto;
    padding:7px 10px;
    background:var(--d-bg);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-sm);
    color:var(--d-text);
    font-size:13px;
    font-family:inherit;
    color-scheme:dark;
}
.dash-period-bar input[type=date]:focus{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-period-bar .dash-period-sep{
    font-size:12px;
    color:var(--d-text-muted);
}
/* Datas + "Aplicar" (confirma) separados dos atalhos (aplicam na hora). */
.dash-period-datas,
.dash-period-atalhos{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
}
.dash-period-atalhos{margin-left:auto}

/* ----------------------------------------------------------------
   TABS
   ---------------------------------------------------------------- */
.dash-tabs{
    display:flex;
    gap:0;
    margin-bottom:24px;
    border-bottom:1px solid var(--d-border);
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
}
.dash-tab{
    padding:11px 18px;
    border:none;
    background:transparent;
    color:var(--d-text-muted);
    font-family:inherit;
    font-size:13px;
    font-weight:600;
    cursor:pointer;
    white-space:nowrap;
    border-bottom:2px solid transparent;
    margin-bottom:-1px;
    transition:color .15s ease, border-color .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-tab:hover{color:var(--d-text)}
}
.dash-tab.is-active{
    color:var(--d-text);
    border-bottom-color:var(--d-primary);
}
.dash-tab--total.is-active{
    color:var(--d-success);
    border-bottom-color:var(--d-success);
}

.dash-tab-content{display:none}
.dash-tab-content.is-active{display:block;animation:dashFade .25s ease}
@keyframes dashFade{
    from{opacity:0;transform:translateY(6px)}
    to{opacity:1;transform:none}
}

/* Variante "pillbox" para rankings (tabs em card) */
.dash-tabs--pills{
    border-bottom:none;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
    padding:4px;
    gap:0;
    margin-bottom:20px;
}
.dash-tabs--pills .dash-tab{
    border-bottom:none;
    border-radius:var(--d-r-sm);
    margin-bottom:0;
    padding:9px 16px;
}
.dash-tabs--pills .dash-tab.is-active{
    background:var(--d-primary-strong);
    color:var(--d-on-primary);
}

/* ----------------------------------------------------------------
   SECTION TITLE
   ---------------------------------------------------------------- */
.dash-section-title{
    display:flex;
    align-items:center;
    gap:12px;
    margin:24px 0 14px;
    font-size:11px;
    font-weight:700;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.15em;
}
.dash-section-title::after{
    content:"";
    flex:1;
    height:1px;
    background:var(--d-border);
}

/* ----------------------------------------------------------------
   CARD BASE
   ---------------------------------------------------------------- */
.dash-card{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    padding:18px 20px;
    transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.dash-card--clickable{cursor:pointer}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-card--clickable:hover{
    border-color:var(--d-border-hard);
    transform:translateY(-1px);
    box-shadow:var(--d-shadow-md);
}
}

/* ----------------------------------------------------------------
   STAT CARD (KPI compacto)
   ---------------------------------------------------------------- */
.dash-stat-card{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    padding:18px 20px;
    border-left:3px solid var(--d-border-hard);
    transition:border-color .15s ease, transform .15s ease;
}
.dash-stat-card .label{
    font-size:11px;
    font-weight:600;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.08em;
    margin-bottom:8px;
}
.dash-stat-card .value{
    font-size:28px;
    font-weight:800;
    color:var(--d-text);
    line-height:1.15;
    letter-spacing:-0.02em;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;          /* 6.11: UM valor; o do servidor tem espaco comum apos "R$" */
}
.dash-stat-card .delta,
.dash-stat-card .sub{
    font-size:12px;
    font-weight:500;
    color:var(--d-text-muted);
    margin-top:6px;
}

.dash-stat-card--accent{border-left-color:var(--d-primary)}
.dash-stat-card--accent .value{color:var(--d-primary)}

.dash-stat-card--success{border-left-color:var(--d-success)}
.dash-stat-card--success .value{color:var(--d-success)}

.dash-stat-card--danger{border-left-color:var(--d-danger)}
.dash-stat-card--danger .value{color:var(--d-danger)}

.dash-stat-card--warning{border-left-color:var(--d-warning)}
.dash-stat-card--warning .value{color:var(--d-warning)}

.dash-stat-card--info{border-left-color:var(--d-info)}
.dash-stat-card--info .value{color:var(--d-info)}

/* Variante MES (KPI menor, mais discreto) */
.dash-stat-card--sm .value{font-size:22px}
.dash-stat-card--sm{padding:14px 16px}

/* Custo perdido (informativo, abaixo dos KPIs do dia) */
.dash-custo-perdido{margin-bottom:24px}

/* ----------------------------------------------------------------
   HERO CARD (Lucro Real do dia)
   ---------------------------------------------------------------- */
.dash-hero-card{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-left:6px solid var(--d-success);
    border-radius:var(--d-r-lg);
    padding:28px 24px;
    text-align:center;
    margin-bottom:24px;
}
.dash-hero-card .label{
    font-size:11px;
    font-weight:600;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.15em;
    margin-bottom:10px;
}
.dash-hero-card .value{
    font-size:48px;
    font-weight:900;
    color:var(--d-success);
    line-height:1.05;
    letter-spacing:-0.03em;
    font-variant-numeric:tabular-nums;
}
.dash-hero-card .sub{
    font-size:12px;
    font-weight:500;
    color:var(--d-text-muted);
    margin-top:8px;
}
.dash-hero-card.is-negative{border-left-color:var(--d-danger)}
.dash-hero-card.is-negative .value{color:var(--d-danger)}

/* ----------------------------------------------------------------
   GRIDS
   ---------------------------------------------------------------- */
.dash-grid-3{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:14px;
    margin-bottom:20px;
}
.dash-grid-4{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:14px;
    margin-bottom:20px;
}
.dash-grid-auto{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:14px;
    margin-bottom:20px;
}
.dash-grid-pag{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
    gap:12px;
    margin-bottom:20px;
}

/* ----------------------------------------------------------------
   PAGAMENTO CARD (clicavel)
   ---------------------------------------------------------------- */
/* ⚠️ A cor da forma e DADO (cadastro do lojista): texto nessa cor nunca tem
   contraste garantido (PIX #7c3aed dava 2,53:1). Ela fica so na borda e no
   ponto, via --forma-cor; o texto e sempre token. E um <button>: filtra a
   tabela de transacoes. */
.dash-card--pagamento{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:6px;
    width:100%;
    min-height:44px;
    cursor:pointer;
    font:inherit;
    text-align:left;
    color:var(--d-text);
    border-left:4px solid var(--forma-cor, var(--d-text-muted));
    padding:14px 16px;
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    .dash-card--pagamento:hover{
        transform:translateY(-1px);
        box-shadow:var(--d-shadow-md);
        background:var(--d-card-hover);
    }
}
.dash-card--pagamento:active{transform:translateY(.5px)}
.dash-card--pagamento:focus-visible{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-card--pagamento.is-active,
.dash-card--pagamento[aria-pressed="true"]{
    background:var(--d-card-hover);
    box-shadow:0 0 0 2px var(--d-primary) inset;
}
.dash-card--pagamento .pag-tipo{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-size:12px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.04em;
    color:var(--d-text);
}
.dash-card--pagamento .pag-valor{
    font-size:20px;
    font-weight:800;
    color:var(--d-text);
    line-height:1.15;
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
}

/* ----------------------------------------------------------------
   TABELA
   ---------------------------------------------------------------- */
.dash-table-card{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    overflow:hidden;
    margin-bottom:24px;
}
.dash-table-toolbar{
    display:flex;
    gap:10px;
    align-items:center;
    flex-wrap:wrap;
    padding:14px 16px;
    border-bottom:1px solid var(--d-border);
    background:var(--d-surface);
}
.dash-table-toolbar input[type=text],
.dash-table-toolbar select{
    flex:0 1 auto;
    padding:8px 12px;
    background:var(--d-bg);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-sm);
    color:var(--d-text);
    font-family:inherit;
    font-size:13px;
    transition:border-color .15s ease, box-shadow .15s ease;
}
.dash-table-toolbar input[type=text]{flex:1;min-width:180px;max-width:360px}
.dash-table-toolbar select{min-width:140px;max-width:200px;color-scheme:dark}
.dash-table-toolbar input:focus,
.dash-table-toolbar select:focus{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-table-toolbar .count{
    font-size:12px;
    font-weight:500;
    color:var(--d-text-muted);
    margin-left:auto;
    white-space:nowrap;
}
.dash-table-scroll{
    max-height:480px;
    overflow:auto;
    -webkit-overflow-scrolling:touch;
}
.dash-table{
    width:100%;
    border-collapse:collapse;
    font-size:13.5px;
}
.dash-table thead th{
    position:sticky;
    top:0;
    z-index:1;
    padding:11px 14px;
    text-align:left;
    background:var(--d-surface);
    color:var(--d-text-muted);
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.08em;
    border-bottom:1px solid var(--d-border);
    white-space:nowrap;
}
.dash-table tbody td{
    padding:12px 14px;
    border-top:1px solid var(--d-border-soft);
    color:var(--d-text-sec);
    vertical-align:middle;
}
.dash-table tbody tr{transition:background .1s ease}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-table tbody tr:hover td{background:var(--d-card-hover)}
}
.dash-table td.num,
.dash-table th.num{
    text-align:right;
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
}
.dash-table td.bold{font-weight:700;color:var(--d-text)}
.dash-table .empty{
    text-align:center;
    padding:42px 20px;
    color:var(--d-text-muted);
    font-size:13.5px;
}
.dash-table .text-success{color:var(--d-success)}
.dash-table .text-muted{color:var(--d-text-muted)}

/* ----------------------------------------------------------------
   BADGES
   ---------------------------------------------------------------- */
.dash-badge{
    display:inline-block;
    padding:3px 10px;
    border-radius:999px;
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.04em;
    line-height:1.4;
    white-space:nowrap;
    background:var(--d-overlay);
    color:var(--d-text-sec);
    border:1px solid transparent;
}
.dash-badge--success{
    background:var(--d-success-bg);
    color:var(--d-success);
}
.dash-badge--danger{
    background:var(--d-danger-bg);
    color:var(--d-danger);
}
.dash-badge--warning{
    background:var(--d-warning-bg);
    color:var(--d-warning);
}
.dash-badge--info{
    background:var(--d-info-bg);
    color:var(--d-info);
}
.dash-badge--neutral{
    background:var(--d-overlay);
    color:var(--d-text-muted);
}
.dash-badge--soft{
    background:var(--d-primary-bg);
    color:var(--d-primary);
}
.dash-badge--purple{
    background:var(--d-purple-bg);
    color:var(--d-purple);
}

/* ----------------------------------------------------------------
   DISTRIBUIDORAS LISTA
   ---------------------------------------------------------------- */
.dash-dist-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
    margin-bottom:24px;
}
.dash-dist-card{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    padding:14px 18px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    transition:border-color .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-dist-card:hover{border-color:var(--d-border-hard)}
}
.dash-dist-card .dist-info{flex:1;min-width:0}
.dash-dist-card .dist-name{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    font-size:15px;
    font-weight:700;
    color:var(--d-text);
    margin-bottom:5px;
}
.dash-dist-card .dist-meta{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    font-size:11px;
    color:var(--d-text-muted);
}
.dash-dist-card.is-inactive{opacity:.6}

/* ----------------------------------------------------------------
   EMPTY / LOADING
   ---------------------------------------------------------------- */
.dash-empty{
    text-align:center;
    padding:60px 20px;
    color:var(--d-text-muted);
    font-size:13.5px;
}
.dash-loading{
    text-align:center;
    padding:40px;
    display:none;
}
.dash-loading.is-active{display:block}
.dash-loading__spin{
    display:inline-block;
    width:32px;
    height:32px;
    border:3px solid var(--d-border);
    border-top-color:var(--d-primary);
    border-radius:50%;
    animation:dashSpin .6s linear infinite;
}
.dash-loading__msg{
    margin-top:12px;
    color:var(--d-text-muted);
    font-size:13px;
}
@keyframes dashSpin{to{transform:rotate(360deg)}}

/* ----------------------------------------------------------------
   RANKINGS — tabela rank com posicao + barra
   ---------------------------------------------------------------- */
.dash-rank-pos{
    width:36px;
    text-align:center;
    font-weight:900;
    font-size:16px;
    color:var(--d-text-muted);
    font-variant-numeric:tabular-nums;
}
.dash-rank-pos.top1{color:#fbbf24}
.dash-rank-pos.top2{color:#cbd5e1}
.dash-rank-pos.top3{color:#c2884e}
.dash-rank-bar{
    height:5px;
    border-radius:3px;
    background:var(--d-border);
    overflow:hidden;
    margin-top:5px;
    max-width:220px;
}
.dash-rank-bar__fill{
    height:100%;
    border-radius:3px;
    background:var(--d-danger);
    transition:width .3s ease;
}
.dash-rank-codigo{
    font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
    font-weight:600;
    font-size:12px;
    color:var(--d-text-sec);
}
.dash-rank-loja{
    display:inline-block;
    padding:2px 8px;
    border-radius:10px;
    font-size:11px;
    font-weight:600;
    background:var(--d-primary-bg);
    color:var(--d-text-sec);
    margin:1px 2px;
}
.dash-rank-cat{
    display:inline-block;
    padding:2px 8px;
    border-radius:10px;
    font-size:10px;
    font-weight:600;
    background:var(--d-purple-bg);
    color:var(--d-purple);
    margin:1px 2px;
}
.dash-rank-table tr{cursor:pointer}
.dash-rank-table th.col-pos{width:36px}
.dash-rank-table td.rk-qtd{font-size:16px}

/* ----------------------------------------------------------------
   TERMOMETRO
   ---------------------------------------------------------------- */
@property --gauge{ syntax:'<number>'; inherits:false; initial-value:0; }

.dash-termo-card{
    position:relative;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-left:3px solid var(--nivel-color,var(--d-border-hard));
    border-radius:var(--d-r-lg);
    padding:16px;
    margin-bottom:10px;
    display:flex;
    align-items:center;
    gap:16px;
    cursor:pointer;
    transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.dash-termo-card.bom{ --nivel-color:var(--d-success); }
.dash-termo-card.atencao{ --nivel-color:var(--d-warning); }
.dash-termo-card.preocupante{ --nivel-color:var(--d-orange); }
.dash-termo-card.critico{ --nivel-color:var(--d-danger); }
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-termo-card:hover{
    border-color:var(--d-border-hard);
    border-left-color:var(--nivel-color,var(--d-border-hard));
    transform:translateY(-1px);
    box-shadow:var(--d-shadow-md);
}
}
/* retorno do TOQUE (o hover nao existe no toque): pressionado, sem subir */
.dash-termo-card:active{background:var(--d-card-hover)}
.dash-termo-card:focus-visible{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-termo-pos{
    font-size:14px;
    font-weight:900;
    color:var(--d-text-muted);
    min-width:28px;
    text-align:center;
    font-variant-numeric:tabular-nums;
}
.dash-termo-gauge{
    --gauge:0;
    position:relative;
    width:60px;
    height:60px;
    border-radius:50%;
    border:none;
    background:conic-gradient(var(--nivel-color,var(--d-border-hard)) calc(var(--gauge)*1%), var(--d-border) calc(var(--gauge)*1%));
    display:grid;
    place-items:center;
    flex-shrink:0;
    transition:--gauge .7s cubic-bezier(.4,0,.2,1);
}
.dash-termo-card.critico .dash-termo-gauge{ box-shadow:0 0 0 4px var(--d-danger-bg); }
.dash-termo-gauge::after{
    content:"";
    position:absolute;
    inset:5px;
    border-radius:50%;
    background:var(--d-card);
}
.dash-termo-gauge-inner{
    position:relative;
    z-index:1;
    font-size:13px;
    font-weight:900;
    line-height:1;
    color:var(--nivel-color,var(--d-text));
    font-variant-numeric:tabular-nums;
}

.dash-tip{
    position:absolute;
    bottom:calc(100% + 10px);
    left:50%;
    width:230px;
    transform:translateX(-50%) translateY(4px);
    opacity:0;
    pointer-events:none;
    background:var(--d-overlay);
    border:1px solid var(--d-border-hard);
    border-radius:var(--d-r-md);
    padding:11px 13px;
    box-shadow:var(--d-shadow-lg);
    z-index:6;
    text-align:left;
    transition:opacity .15s ease, transform .15s ease;
}
.dash-tip::after{
    content:"";
    position:absolute;
    top:100%;
    left:50%;
    transform:translateX(-50%);
    border:6px solid transparent;
    border-top-color:var(--d-border-hard);
}
/* O tooltip abre no HOVER do mouse ou no foco de TECLADO do cartao — nunca no
   toque: o `:focus-within` abria ao tocar e ficava aberto depois de fechar o modal.
   O que so ele tinha (garantia x devolucao direta, ramo do lote) sai como TEXTO no
   proprio cartao no celular (`.dash-termo-card__detalhe`). */
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-termo-gauge:hover .dash-tip{
    opacity:1;
    transform:translateX(-50%) translateY(0);
}
}
.dash-termo-card:focus-visible .dash-tip{
    opacity:1;
    transform:translateX(-50%) translateY(0);
}
.dash-tip__title{ font-size:12px; font-weight:800; color:var(--d-text); margin-bottom:6px; }
.dash-tip__row{ display:flex; justify-content:space-between; gap:12px; font-size:11.5px; color:var(--d-text-muted); margin-top:3px; }
.dash-tip__row strong{ color:var(--d-text-sec); font-variant-numeric:tabular-nums; }
.dash-tip__faixa{ margin-top:8px; padding-top:7px; border-top:1px solid var(--d-border); font-size:11px; font-weight:700; color:var(--nivel-color,var(--d-text)); }

.dash-termo-info{flex:1;min-width:0}
.dash-termo-nome{
    font-weight:700;
    font-size:14px;
    color:var(--d-text);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.dash-termo-codigo{
    font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
    font-size:11px;
    color:var(--d-text-muted);
}
.dash-termo-stats{
    display:flex;
    gap:14px;
    margin-top:4px;
    flex-wrap:wrap;
    font-variant-numeric:tabular-nums;
}
.dash-termo-stat{font-size:12px;color:var(--d-text-muted)}
.dash-termo-stat strong{color:var(--d-text);font-weight:700}
.dash-termo-stat strong.is-danger{color:var(--d-danger)}
.dash-termo-bar{
    width:100%;
    height:6px;
    background:var(--d-border);
    border-radius:3px;
    margin-top:6px;
    overflow:hidden;
}
.dash-termo-bar__fill{
    height:100%;
    border-radius:3px;
    transition:width .3s ease;
    background:linear-gradient(90deg, color-mix(in srgb, var(--nivel-color,var(--d-border-hard)) 45%, transparent), var(--nivel-color,var(--d-border-hard)));
}

.dash-termo-nivel{
    font-size:11px;
    font-weight:700;
    padding:3px 12px;
    border-radius:999px;
    white-space:nowrap;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.dash-termo-nivel.bom{background:var(--d-success-bg);color:var(--d-success)}
.dash-termo-nivel.atencao{background:var(--d-warning-bg);color:var(--d-warning)}
.dash-termo-nivel.preocupante{background:var(--d-orange-bg);color:var(--d-orange)}
.dash-termo-nivel.critico{background:var(--d-danger-bg);color:var(--d-danger)}

.dash-termo-lote{
    display:inline-flex;
    align-items:center;
    gap:6px;
    background:var(--d-purple-bg);
    color:var(--d-purple);
    border:1px solid rgba(167,139,250,.3);
    border-radius:var(--d-r-sm);
    padding:5px 11px;
    font-size:11px;
    font-weight:700;
    cursor:pointer;
    white-space:nowrap;
    flex-shrink:0;
    transition:background .15s ease, border-color .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-termo-lote:hover{
    background:rgba(167,139,250,.2);
    border-color:var(--d-purple);
}
}
.dash-termo-lote-info{
    font-size:10px;
    color:var(--d-purple);
    font-weight:600;
    margin-top:2px;
}
/* O detalhe do tooltip (garantia do cliente x devolucao direta) como TEXTO: so no
   celular (<= 900), onde nao ha hover — no computador ele mora no tooltip. */
.dash-termo-card__detalhe{
    display:none;
    margin-top:4px;
    font-size:12px;
    line-height:1.45;
    color:var(--d-text-sec);
}
.dash-termo-card__detalhe strong{color:var(--d-text);font-weight:700;font-variant-numeric:tabular-nums}

.dash-termo-actions{
    display:flex;
    flex-direction:column;
    gap:6px;
    align-items:flex-end;
    flex-shrink:0;
}

.dash-legenda{
    display:flex;
    gap:12px;
    flex-wrap:wrap;
    margin-bottom:16px;
    padding:12px 16px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
}
.dash-legenda__item{
    display:flex;
    align-items:center;
    gap:6px;
    font-size:12px;
    color:var(--d-text-muted);
}
.dash-legenda__dot{
    width:12px;
    height:12px;
    border-radius:50%;
    flex-shrink:0;
}
.dash-legenda__dot--bom{background:var(--d-success)}
.dash-legenda__dot--atencao{background:var(--d-warning)}
.dash-legenda__dot--preocupante{background:var(--d-orange)}
.dash-legenda__dot--critico{background:var(--d-danger)}

/* ----------------------------------------------------------------
   MODAL (rankings, relatorio)
   ---------------------------------------------------------------- */
.dash-modal-overlay{
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.7);
    z-index:1000;
    display:none;
    align-items:center;
    justify-content:center;
    padding:20px;
    backdrop-filter:blur(4px);
    -webkit-backdrop-filter:blur(4px);
}
.dash-modal-overlay.is-open{display:flex}
.dash-modal{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-xl);
    width:100%;
    max-width:720px;
    max-height:85vh;
    max-height:85dvh;            /* a barra do navegador do celular nao come o rodape */
    overflow:hidden;
    box-shadow:var(--d-shadow-lg);
    animation:dashModalIn .2s ease;
}
@keyframes dashModalIn{
    from{opacity:0;transform:scale(.96)}
    to{opacity:1;transform:none}
}
.dash-modal__head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:18px 22px;
    border-bottom:1px solid var(--d-border);
}
.dash-modal__head h2{
    font-size:16px;
    font-weight:800;
    color:var(--d-text);
    margin:0;
}
.dash-modal__close{
    flex-shrink:0;
    width:32px;
    height:32px;
    border-radius:var(--d-r-sm);
    border:1px solid var(--d-border);
    background:transparent;
    color:var(--d-text-muted);
    font-size:18px;
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
    transition:background .15s ease, color .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-modal__close:hover{background:var(--d-card-hover);color:var(--d-text)}
}
.dash-modal__body{
    padding:20px 22px;
    overflow-y:auto;
    max-height:calc(85vh - 70px);
    max-height:calc(85dvh - 70px);
}

.dash-modal-summary{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    margin-bottom:16px;
}
.dash-modal-stat{
    background:var(--d-surface);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
    padding:14px;
    text-align:center;
}
.dash-modal-stat .ms-label{
    font-size:10px;
    color:var(--d-text-muted);
    text-transform:uppercase;
    font-weight:700;
    margin-bottom:4px;
    letter-spacing:.08em;
}
.dash-modal-stat .ms-value{
    font-size:20px;
    font-weight:900;
    color:var(--d-text);
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
}
.dash-modal-stat--danger .ms-value{color:var(--d-danger)}
.dash-modal-stat--success .ms-value{color:var(--d-success)}
/* "Desde o lote de 26/04/2026 às 10:12" (detalhe aberto pelo cartao COM lote) */
.dash-modal-periodo{
    margin:0 0 12px;
    font-size:13px;
    color:var(--d-text-sec);
}
.dash-modal-periodo strong{color:var(--d-text);font-weight:700}

/* Tabela de devolucoes dos 2 modais (detalhe da peca e passo 1 do lote). No
   computador, tabela; no celular (<= 600, abaixo) cada linha vira um CARTAO. */
.dash-dev-wrap{
    overflow-x:auto;
    border-radius:var(--d-r-md);
    border:1px solid var(--d-border);
}
.dash-table--dev td.dev-data,
.dash-table--dev td.dev-valor{white-space:nowrap}
.dash-table--dev .dev-cli-cod{font-size:10px;color:var(--d-text-muted)}

/* Modal form fields */
.dash-modal-field{margin-bottom:14px}
.dash-modal-field label{
    display:block;
    font-size:11px;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.08em;
    font-weight:600;
    margin-bottom:6px;
}
.dash-modal-field input,
.dash-modal-field select,
.dash-modal-field textarea{
    width:100%;
    padding:10px 14px;
    border:1px solid var(--d-border);
    border-radius:var(--d-r-md);
    background:var(--d-bg);
    color:var(--d-text);
    font-size:14px;
    font-family:inherit;
    color-scheme:dark;
}
.dash-modal-field input:focus,
.dash-modal-field select:focus,
.dash-modal-field textarea:focus{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-modal-field textarea{resize:vertical;min-height:62px}
/* Campo TRAVADO (a loja de uma recuperacao existente nao muda): tem de PARECER
   travado — sem o fundo "de digitar", borda tracejada, cursor de proibido. */
.dash-modal-field input:disabled,
.dash-modal-field select:disabled,
.dash-modal-field textarea:disabled{
    background:transparent;
    border-style:dashed;
    color:var(--d-text-sec);
    cursor:not-allowed;
    opacity:1;
}
/* ...e o <select> travado perde a seta: seta = "clique para trocar". */
.dash-modal-field select:disabled{-webkit-appearance:none;appearance:none}
.dash-modal-actions{
    display:flex;
    gap:8px;
    justify-content:flex-end;
    margin-top:18px;
}

/* ----------------------------------------------------------------
   ESTOQUE COMPARATIVO (relatorio mensal)
   ---------------------------------------------------------------- */
.dash-estoque-box{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    padding:26px;
    margin-bottom:22px;
}
.dash-estoque-grid{
    display:grid;
    grid-template-columns:1fr auto 1fr;
    gap:20px;
    align-items:center;
    text-align:center;
}
.dash-estoque-col .e-label{
    font-size:11px;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.08em;
    font-weight:600;
    margin-bottom:6px;
}
.dash-estoque-col .e-value{
    font-size:26px;
    font-weight:900;
    color:var(--d-text);
    font-variant-numeric:tabular-nums;
    letter-spacing:-0.02em;
}
/* S-3 (E2): a seta (▲/▼) e o sinal do % dizem a DIRECAO; a cor saiu do estoque —
   verde/vermelho so no lucro. */
.dash-estoque-arrow{
    font-size:28px;
    color:var(--d-text-muted);
}
.dash-estoque-diff{
    text-align:center;
    margin-top:18px;
    padding-top:18px;
    border-top:1px solid var(--d-border);
}
.dash-estoque-diff .diff-value{
    font-size:22px;
    font-weight:800;
    color:var(--d-text);
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
}
.dash-estoque-diff .diff-pct{
    font-size:14px;
    font-weight:700;
    margin-left:8px;
    color:var(--d-text-sec);
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
}
.dash-estoque-primeiro{
    text-align:center;
    padding:20px;
    color:var(--d-text-muted);
    font-size:13px;
}
/* Comparativo nas MESMAS lojas (P7): quando alguma loja nao tinha estoque no mes
   anterior, ele e o numero PRINCIPAL (E2, item 4) — o do grupo mistura o estoque de
   abertura da loja nova e vira a linha "Com todas as lojas". */
.dash-estoque-mesmas__titulo{
    font-size:11px;
    color:var(--d-text-muted);
    text-transform:uppercase;
    letter-spacing:.08em;
    font-weight:600;
    margin-bottom:8px;
    text-align:center;
}
.dash-estoque-todas{
    margin:14px 0 0;
    padding-top:14px;
    border-top:1px solid var(--d-border);
    font-size:13px;
    font-weight:600;
    line-height:1.6;
    color:var(--d-text-sec);
    text-align:center;
    font-variant-numeric:tabular-nums;
}
.dash-estoque-fora{
    margin:10px 0 0;
    font-size:12px;
    color:var(--d-text-sec);
    text-align:center;
    overflow-wrap:anywhere;
}
/* P4: recuperacao de loja DESATIVADA — historico sem Editar/Remover */
.ri-inativa{
    font-size:12px;
    color:var(--d-text-sec);
    white-space:nowrap;
}
/* P6: nota sob "Prejuizo Real" quando a regra por loja difere da conta do grupo */
.dash-defeitos-nota{
    /* colada nos cartoes que ela explica (a margem de 20px do grid colapsa com a
       negativa: sobram 12px) e separada da lista de recuperados */
    margin:-8px 2px 16px;
    font-size:13px;
    line-height:1.45;
    color:var(--d-text-sec);
}

/* ----------------------------------------------------------------
   RECUPERACOES (relatorio mensal)
   ---------------------------------------------------------------- */
.dash-rec-list{
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    overflow:hidden;
    margin-bottom:22px;
}
.dash-rec-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:14px 18px;
    border-bottom:1px solid var(--d-border);
    background:var(--d-surface);
}
.dash-rec-header h3{
    font-size:14px;
    font-weight:700;
    color:var(--d-text);
    margin:0;
}
.dash-rec-item{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    padding:12px 18px;
    border-bottom:1px solid var(--d-border-soft);
}
.dash-rec-item:last-child{border-bottom:none}
.dash-rec-item .ri-info{flex:1;min-width:0}
.dash-rec-item .ri-forn{
    font-weight:700;
    font-size:13px;
    color:var(--d-text);
    overflow-wrap:anywhere;   /* texto digitado: palavra longa nao pode invadir a data */
}
.dash-rec-item .ri-desc{
    font-size:11px;
    color:var(--d-text-muted);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.dash-rec-item .ri-data{
    font-size:11px;
    color:var(--d-text-muted);
    white-space:nowrap;
}
.dash-rec-item .ri-valor{
    font-weight:800;
    font-size:15px;
    color:var(--d-success);
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
}
.dash-rec-item .ri-actions{
    display:flex;
    gap:6px;
}
.dash-rec-item .ri-actions button{
    padding:5px 9px;
    border-radius:var(--d-r-sm);
    border:1px solid var(--d-border);
    background:var(--d-surface);
    color:var(--d-text-muted);
    font-size:11px;
    cursor:pointer;
    transition:color .15s ease, border-color .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-rec-item .ri-actions button:hover{
    color:var(--d-text);
    border-color:var(--d-border-hard);
}
.dash-rec-item .ri-actions button.del:hover{
    color:var(--d-danger);
    border-color:var(--d-danger);
}
}
.dash-rec-total{
    padding:14px 18px;
    background:var(--d-surface);
    display:flex;
    justify-content:space-between;
    align-items:center;
    font-weight:700;
    font-size:14px;
    color:var(--d-text);
    border-top:1px solid var(--d-border);
}
.dash-rec-total .rt-valor{
    color:var(--d-success);
    font-size:18px;
    font-weight:900;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
}
.dash-rec-empty{
    padding:24px;
    text-align:center;
    color:var(--d-text-muted);
    font-size:13px;
}

/* ----------------------------------------------------------------
   ALERT (aviso em andamento)
   ---------------------------------------------------------------- */
.dash-alert{
    background:var(--d-warning-bg);
    border:1px solid rgba(251,191,36,.3);
    border-radius:var(--d-r-md);
    padding:12px 18px;
    margin-bottom:22px;
    display:flex;
    align-items:center;
    gap:10px;
    font-size:13px;
    color:var(--d-warning);
}

/* ----------------------------------------------------------------
   LOTE HISTORICO — timeline (modal detalhe rankings)
   ---------------------------------------------------------------- */
.dash-lote-timeline{ position:relative; margin:8px 0 0; padding-left:26px; }
.dash-lote-timeline::before{ content:""; position:absolute; left:8px; top:6px; bottom:6px; width:2px; background:var(--d-border); }
.dash-lote-tl-item{ position:relative; margin-bottom:10px; }
.dash-lote-tl-item::before{ content:""; position:absolute; left:-22px; top:16px; width:10px; height:10px; border-radius:50%; background:var(--d-border-hard); border:2px solid var(--d-card); }
.dash-lote-tl-item.is-active::before{ background:var(--d-purple); box-shadow:0 0 0 3px var(--d-purple-bg); }
.dash-lote-tl-card{ background:var(--d-surface); border:1px solid var(--d-border); border-radius:var(--d-r-md); padding:12px 14px; }
.dash-lote-tl-item.is-active .dash-lote-tl-card{ border-color:var(--d-purple); background:var(--d-purple-bg); }
/* O selo "Ativo em <loja>" carrega o NOME da loja: sem poder quebrar, a 375 ele
   empurrava a taxa para fora do cartao ("25,(" cortado). O selo quebra; a taxa nao. */
.dash-lote-tl-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:5px; }
.dash-lote-tl-head .dash-badge{ min-width:0; white-space:normal; overflow-wrap:anywhere; line-height:1.35; }
.dash-lote-tl-pct{ font-size:17px; font-weight:900; font-variant-numeric:tabular-nums; flex:0 0 auto; white-space:nowrap; }
.dash-lote-tl-pct.bom{ color:var(--d-success); }
.dash-lote-tl-pct.atencao{ color:var(--d-warning); }
.dash-lote-tl-pct.preocupante{ color:var(--d-orange); }
.dash-lote-tl-pct.critico{ color:var(--d-danger); }
.dash-lote-tl-nota{ font-size:11px; color:var(--d-text-sec); margin:-2px 0 6px; }
.dash-lote-hist{ margin-top:20px; border-top:1px solid var(--d-border); padding-top:16px; }
.dash-lote-hist__titulo{ font-size:14px; font-weight:800; margin-bottom:12px; color:var(--d-text); }
.dash-lote-hist__acao{ margin-top:14px; text-align:right; }
.dash-lote-tl-periodo{ font-size:11px; color:var(--d-text-muted); margin-bottom:6px; }
.dash-lote-tl-stats{ display:flex; gap:14px; font-size:12px; color:var(--d-text-muted); flex-wrap:wrap; font-variant-numeric:tabular-nums; }
.dash-lote-tl-stats strong{ color:var(--d-text); }
.dash-lote-tl-stats strong.is-danger{ color:var(--d-danger); }
.dash-lote-tl-delta{ font-size:11px; font-weight:700; font-variant-numeric:tabular-nums; margin-top:6px; }
.dash-lote-tl-delta.is-melhor{ color:var(--d-success); }
.dash-lote-tl-delta.is-pior{ color:var(--d-danger); }

/* ----------------------------------------------------------------
   TIPO BADGES (modal detalhe rankings)
   ---------------------------------------------------------------- */
.dash-tipo-badge{
    display:inline-block;
    padding:3px 9px;
    border-radius:10px;
    font-size:10px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.dash-tipo-badge--fornecedor{background:var(--d-danger-bg);color:var(--d-danger)}
.dash-tipo-badge--garantia{background:var(--d-warning-bg);color:var(--d-warning)}
.dash-tipo-badge--gar-enviada{background:var(--d-purple-bg);color:var(--d-purple)}
.dash-tipo-badge--direta{background:var(--d-info-bg);color:var(--d-info)}

/* ----------------------------------------------------------------
   NOVO LOTE — modal 2 tempos (Bloco 4)
   ---------------------------------------------------------------- */
.dash-modal-overlay--lote{ z-index:1100; }
.dash-modal--lote{ max-width:820px; display:flex; flex-direction:column; }
.dash-modal--lote .dash-modal__head,.dash-modal--lote .dash-stepper,.dash-modal--lote .dash-modal-actions{ flex:0 0 auto; }
.dash-modal--lote .dash-modal__body{ flex:1 1 auto; max-height:none; }
/* O rodape do lote e uma FAIXA propria (como o cabecalho e o stepper): sem padding o
   "Avancar para confirmacao" encostava na borda direita e no fundo do modal. */
.dash-modal--lote .dash-modal-actions{ margin-top:0; padding:14px 22px; border-top:1px solid var(--d-border); flex-wrap:wrap; }
.dash-modal__head .lote-eyebrow{ font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--d-purple); margin-bottom:3px; }

.dash-stepper{ display:flex; align-items:center; gap:8px; padding:12px 22px; background:var(--d-surface); border-bottom:1px solid var(--d-border); }
.dash-stepper__step{ display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; color:var(--d-text-muted); }
.dash-stepper__num{ width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:11px; font-weight:800; background:var(--d-overlay); color:var(--d-text-muted); border:1px solid var(--d-border); }
.dash-stepper__step.is-active{ color:var(--d-text); }
.dash-stepper__step.is-active .dash-stepper__num{ background:var(--d-purple); color:#fff; border-color:var(--d-purple); }
.dash-stepper__step.is-done .dash-stepper__num{ background:var(--d-success-bg); color:var(--d-success); border-color:var(--d-success); }
.dash-stepper__bar{ flex:1; height:2px; background:var(--d-border); border-radius:2px; }

.dash-lote-banner{ display:flex; gap:12px; align-items:flex-start; background:var(--d-purple-bg); border:1px solid rgba(167,139,250,.3); border-radius:var(--d-r-md); padding:12px 14px; margin-bottom:16px; }
.dash-lote-banner__mark{ width:24px; height:24px; border-radius:50%; flex-shrink:0; display:grid; place-items:center; background:var(--d-purple); color:#fff; font-weight:900; font-size:13px; }
.dash-lote-banner__txt{ font-size:12.5px; line-height:1.5; color:var(--d-text-sec); }
.dash-lote-banner__txt b{ color:var(--d-text); font-weight:700; }

.dash-lote-resumo{ background:var(--d-surface); border:1px solid var(--d-border); border-radius:var(--d-r-md); padding:14px 16px; margin-bottom:16px; }
.dash-lote-resumo__head{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.dash-lote-resumo__periodo{ font-size:12px; color:var(--d-text-muted); }
.dash-lote-resumo__periodo strong{ color:var(--d-text-sec); font-weight:700; }
.dash-lote-tiles{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.dash-lote-tile{ text-align:center; padding:10px 8px; background:var(--d-card); border:1px solid var(--d-border); border-radius:var(--d-r-sm); }
.dash-lote-tile .lt-label{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--d-text-muted); margin-bottom:5px; }
.dash-lote-tile .lt-value{ font-size:22px; font-weight:900; color:var(--d-text); font-variant-numeric:tabular-nums; line-height:1; white-space:nowrap; }
.dash-lote-tile--taxa.bom .lt-value{color:var(--d-success)}
.dash-lote-tile--taxa.atencao .lt-value{color:var(--d-warning)}
.dash-lote-tile--taxa.preocupante .lt-value{color:var(--d-orange)}
.dash-lote-tile--taxa.critico .lt-value{color:var(--d-danger)}

.dash-lote-breakdown{ display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
.dash-lote-chip{ display:inline-flex; align-items:center; gap:7px; padding:6px 12px; border-radius:999px; font-size:12px; font-weight:600; background:var(--d-card); border:1px solid var(--d-border); color:var(--d-text-sec); }
.dash-lote-chip b{ color:var(--d-text); font-weight:800; font-variant-numeric:tabular-nums; }
.dash-lote-chip .lc-dot{ width:8px; height:8px; border-radius:50%; }
.dash-lote-chip .lc-dot--gar{ background:var(--d-warning); }
.dash-lote-chip .lc-dot--forn{ background:var(--d-danger); }

.dash-lote-compara{ display:flex; align-items:center; gap:10px; margin-top:12px; padding-top:12px; border-top:1px solid var(--d-border); font-size:12px; color:var(--d-text-muted); }
.dash-lote-delta{ font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; }
.dash-lote-delta.is-melhor{ color:var(--d-success); }
.dash-lote-delta.is-pior{ color:var(--d-danger); }
.dash-lote-lista-title{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.1em; color:var(--d-text-muted); margin:0 0 8px; }
.dash-lote-lista-title--rente{ margin:0; }
.dash-lote-compara strong{ color:var(--d-text-sec); }

.dash-lote-conseq{ list-style:none; margin:0 0 18px; padding:0; }
.dash-lote-conseq li{ display:flex; gap:11px; align-items:flex-start; padding:11px 0; border-bottom:1px solid var(--d-border-soft); }
.dash-lote-conseq li:last-child{ border-bottom:none; }
.dash-lote-conseq .cq-mark{ width:20px; height:20px; border-radius:50%; flex-shrink:0; display:grid; place-items:center; font-size:11px; font-weight:900; background:var(--d-success-bg); color:var(--d-success); margin-top:1px; }
.dash-lote-conseq .cq-mark--info{ background:var(--d-info-bg); color:var(--d-info); }
.dash-lote-conseq .cq-txt{ font-size:13px; line-height:1.5; color:var(--d-text-sec); }
.dash-lote-conseq .cq-txt b{ color:var(--d-text); font-weight:700; }

.dash-lote-recap{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; background:var(--d-surface); border:1px solid var(--d-border); border-radius:var(--d-r-md); padding:12px 14px; margin-bottom:16px; }
.dash-lote-recap__cod{ font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--d-text-sec); }
.dash-lote-recap__meta{ font-size:12px; color:var(--d-text-muted); }
.dash-lote-recap__meta strong{ font-variant-numeric:tabular-nums; }
.dash-lote-recap__meta strong.is-danger{ color:var(--d-danger); }

.dash-pick{ display:flex; align-items:center; gap:12px; padding:12px 14px; border:1.5px solid var(--d-border); border-radius:var(--d-r-md); background:var(--d-surface); cursor:pointer; transition:border-color .15s, background .15s; margin-bottom:4px; }
.dash-pick.is-on{ border-color:var(--d-success); background:var(--d-success-bg); }
.dash-pick__box{ width:20px; height:20px; border-radius:6px; border:2px solid var(--d-border-hard); flex-shrink:0; display:grid; place-items:center; color:transparent; font-weight:900; font-size:12px; }
.dash-pick.is-on .dash-pick__box{ background:var(--d-success); border-color:var(--d-success); color:#fff; }
.dash-pick__txt{ font-size:13px; font-weight:600; color:var(--d-text-sec); }
.dash-pick.is-on .dash-pick__txt{ color:var(--d-text); }

.dash-lote-erro{ background:var(--d-danger-bg); border:1px solid var(--d-danger); border-radius:var(--d-r-md); padding:11px 14px; margin-bottom:16px; font-size:13px; color:var(--d-danger); font-weight:600; }

/* Texto ESCURO no roxo claro: branco sobre #a78bfa media 2,72:1 (reprova AA); o
   fundo da dashboard mede 7,03:1 (4,7:1 no hover). Mesmo motivo no "registrado" verde. */
.dash-btn--lote-confirm{ background:var(--d-purple); border-color:var(--d-purple); color:var(--d-bg); min-width:230px; }
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-btn--lote-confirm:hover:not(:disabled){ background:#8b6ff0; border-color:#8b6ff0; }
}
.dash-btn:disabled{ opacity:.5; cursor:not-allowed; }
.dash-btn.is-loading{ pointer-events:none; }
.dash-btn.is-loading .btn-label{ opacity:.6; }
.dash-btn.is-success{ background:var(--d-success); border-color:var(--d-success); color:var(--d-bg); }
.dash-btn__spin{ width:14px; height:14px; border:2px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; display:inline-block; animation:dashSpin .6s linear infinite; margin-right:6px; vertical-align:-2px; }

/* ----------------------------------------------------------------
   EFEITOS DESKTOP (Bloco 4 — foco visivel + hover)
   ---------------------------------------------------------------- */
.dash-rank-table tr:focus-visible{ outline:none; box-shadow:inset 0 0 0 2px var(--d-border-focus); }
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-stat-card:hover{ transform:translateY(-1px); border-color:var(--d-border-hard); }
}
/* linha clicavel do ranking: retorno do TOQUE */
.dash-rank-table tbody tr[data-codigo]:active td{background:var(--d-card-hover)}

/* ----------------------------------------------------------------
   RELATORIO MENSAL - selector mes
   ---------------------------------------------------------------- */
.dash-month-bar{
    display:flex;
    gap:6px;
    flex-wrap:wrap;
    margin-bottom:20px;
    align-items:center;
}
.dash-month-btn{
    padding:8px 16px;
    border-radius:var(--d-r-md);
    border:1px solid var(--d-border);
    background:var(--d-card);
    color:var(--d-text-muted);
    font-family:inherit;
    font-weight:600;
    font-size:13px;
    cursor:pointer;
    transition:border-color .15s ease, color .15s ease, background .15s ease;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-month-btn:hover{
    border-color:var(--d-border-hard);
    color:var(--d-text);
}
}
.dash-month-btn.is-active{
    background:var(--d-primary-strong);
    color:var(--d-on-primary);
    border-color:var(--d-primary-strong);
}
.dash-month-btn.is-em-andamento{
    border-color:var(--d-warning);
    color:var(--d-warning);
}
.dash-month-btn.is-em-andamento.is-active{
    background:var(--d-warning);
    color:#000;
    border-color:var(--d-warning);
}
.dash-month-select{
    display:none;
    width:100%;
    padding:10px 14px;
    border-radius:var(--d-r-md);
    border:1px solid var(--d-border);
    background:var(--d-card);
    color:var(--d-text);
    font-family:inherit;
    font-size:14px;
    font-weight:600;
    margin-bottom:20px;
    color-scheme:dark;
}

/* ----------------------------------------------------------------
   FILTERS BAR (rankings)
   ---------------------------------------------------------------- */
.dash-filters-bar{
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    align-items:center;
    margin-bottom:20px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    padding:14px 18px;
}
.dash-filter-group{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
}
.dash-filter-select{
    padding:7px 12px;
    border-radius:var(--d-r-sm);
    border:1px solid var(--d-border);
    background:var(--d-bg);
    color:var(--d-text);
    font-family:inherit;
    font-size:13px;
    font-weight:600;
    cursor:pointer;
    min-width:130px;
    color-scheme:dark;
}
.dash-filter-select:focus{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-custom-range{
    display:none;
    align-items:center;
    gap:6px;
}
.dash-custom-range.is-open{display:flex}
.dash-custom-range input{
    width:80px;
    padding:6px 10px;
    border:1px solid var(--d-border);
    border-radius:var(--d-r-sm);
    background:var(--d-bg);
    color:var(--d-text);
    font-family:inherit;
    font-size:13px;
    color-scheme:dark;
}

/* ----------------------------------------------------------------
   TYPOGRAPHY UTILITIES
   ---------------------------------------------------------------- */
.dash-text-muted{color:var(--d-text-muted)}
.dash-text-success{color:var(--d-success)}
.dash-text-danger{color:var(--d-danger)}
.dash-text-warning{color:var(--d-warning)}
.dash-text-info{color:var(--d-info)}
.dash-mono{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace}

/* ----------------------------------------------------------------
   MOBILE
   ---------------------------------------------------------------- */
@media(max-width:900px){
    .dash-shell{padding:16px}
    .dash-header h1{font-size:20px}
    .dash-grid-3,.dash-grid-4{grid-template-columns:1fr 1fr}
    .dash-dist-grid{grid-template-columns:1fr}
    .dash-stat-card .value{font-size:24px}
}
@media(max-width:768px){
    .dash-hero-card{padding:22px 18px}
    .dash-hero-card .value{font-size:36px}
    .dash-stat-card .value{font-size:22px}
    .dash-grid-3{grid-template-columns:1fr}
    .dash-estoque-grid{grid-template-columns:1fr;gap:12px}
    .dash-estoque-arrow{transform:rotate(90deg)}
    .dash-month-bar{display:none}
    .dash-month-select{display:block}
    .dash-rec-item{flex-wrap:wrap;gap:8px}
    .dash-rec-item .ri-actions{width:100%;justify-content:flex-end}
}
@media(max-width:600px){
    .dash-shell{padding:12px}
    .dash-grid-pag{grid-template-columns:1fr 1fr}
    .dash-card--pagamento .pag-valor{font-size:18px}
    .dash-hero-card .value{font-size:32px}
    .dash-table-toolbar{padding:10px 12px}
    .dash-table thead th,.dash-table tbody td{padding:10px 8px}
    .dash-rank-pos{font-size:14px;min-width:28px}
    .dash-termo-card{flex-direction:column;text-align:center;padding:16px;gap:8px;position:relative}
    .dash-termo-pos{position:absolute;top:10px;left:14px;font-size:13px}
    .dash-termo-gauge{width:64px;height:64px;margin:0 auto}
    .dash-termo-gauge-inner{font-size:14px}
    .dash-termo-info{width:100%}
    .dash-termo-nome{font-size:16px;white-space:normal}
    .dash-termo-stats{justify-content:center;gap:12px}
    .dash-termo-actions{width:100%;flex-direction:row;justify-content:center;align-items:center}
    .dash-filters-bar{flex-direction:column;align-items:stretch}
    .dash-modal{max-width:100%;border-radius:var(--d-r-lg)}
    .dash-modal__head,.dash-modal__body{padding:16px}
    .dash-modal-summary{grid-template-columns:1fr}
    .dash-estoque-col .e-value{font-size:20px}
    .dash-lote-tiles{gap:8px}
    .dash-lote-tile .lt-value{font-size:19px}
    .dash-lote-tile .lt-label{font-size:9px}
}

/* ================================================================
   SUBIDA 1 (23/09/2026) — celular primeiro, estados explicitos, AA.
   A dashboard e 96% celular (190/197 req em 10 dias): a regra
   "ERP = desktop-only" NAO vale aqui.
   ================================================================ */

/* ⚠️ `[hidden]` perde para `display` de autor (bug-class paga 7x no repo:
   `.dash-alert`, `.dash-rec-total`, `.dash-termo-card` sao flex). Guarda
   GERAL da tela, nao por classe: guarda por classe so protege o que alguem
   lembrou de listar. */
body[data-dash-theme] [hidden]{display:none !important}

.dash-sr-only{
    position:absolute;
    width:1px;
    height:1px;
    margin:-1px;
    padding:0;
    overflow:hidden;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
    white-space:nowrap;
    border:0;
}

/* Status do bloco do dia ("Atualizado as 11:25"). Altura FIXA de uma linha:
   trocar o texto no refresh nao pode empurrar nada. */
.dash-status{
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
    min-height:20px;
    margin:0 0 10px;
    font-size:12px;
    font-weight:500;
    color:var(--d-text-muted);
}
.dash-status.is-erro{color:var(--d-warning)}
.dash-status:empty{margin-bottom:10px}
/* "Tentar de novo" da linha de status (refresh que falhou): texto sublinhado, SEM
   caixa. Com o botao de 26 px (44 px no celular) a linha crescia e EMPURRAVA o bloco
   do dia no meio da leitura (QA C-4: +51 px a 375, +5 px a 1366). O alvo de toque
   continua >= 44 px pelo padding, que a margem NEGATIVA devolve: a altura da linha
   (20 px) nao muda. */
.dash-status .dash-status__retry{
    padding:4px 6px;
    margin:-4px -6px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:inherit;
    font:inherit;
    font-weight:700;
    text-decoration:underline;
    text-underline-offset:2px;
    cursor:pointer;
}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-status .dash-status__retry:hover{color:var(--d-text)}
}
.dash-status .dash-status__retry:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:0}

/* Faixa "sessao terminou" (DashComum.avisoSessao). Opaca: e sticky e o
   conteudo passa por baixo. */
.dash-aviso-sessao{
    position:sticky;
    top:0;
    z-index:900;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    flex-wrap:wrap;
    padding:12px 16px;
    padding-top:calc(12px + env(safe-area-inset-top, 0px));
    background:color-mix(in srgb, var(--d-warning) 16%, var(--d-surface));
    border-bottom:1px solid var(--d-warning);
    color:var(--d-text);
    font-size:14px;
    font-weight:600;
}

/* Erro/sessao DENTRO do bloco (1a carga, aba sem numeros) */
.dash-erro-bloco{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
    padding:20px;
    margin-bottom:24px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-left:4px solid var(--d-warning);
    border-radius:var(--d-r-lg);
    color:var(--d-text);
    font-size:14px;
}
.dash-erro-bloco p{margin:0}
.dash-erro-bloco--sessao{border-left-color:var(--d-primary)}

/* Troca manual em andamento: o conteudo atual FICA, esmaecido. */
.dash-dia.is-carregando,
#conteudo.is-carregando,
.dash-rank-area.is-carregando{
    opacity:.55;
    transition:opacity .15s ease;
}

.dash-nota{
    margin:-6px 0 12px;
    font-size:12px;
    line-height:1.45;
    color:var(--d-text-muted);
}
.dash-nota--resumo{margin-top:-8px}

/* ---------- esqueleto do bloco do dia ---------- */
.dash-skel__hero,
.dash-skel__kpis > div,
.dash-skel__titulo,
.dash-skel__formas > div,
.dash-skel__toolbar,
.dash-skel__linha{
    background:linear-gradient(90deg, var(--d-card) 0%, var(--d-card-hover) 50%, var(--d-card) 100%);
    background-size:200% 100%;
    animation:dashSkel 1.4s ease-in-out infinite;
}
@keyframes dashSkel{from{background-position:100% 0}to{background-position:-100% 0}}
.dash-skel__hero{height:172px;border-radius:var(--d-r-lg);margin-bottom:24px}
.dash-skel__kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}
.dash-skel__kpis > div{height:112px;border-radius:var(--d-r-lg)}
.dash-skel__titulo{height:14px;width:38%;margin:24px 0 14px;border-radius:4px}
.dash-skel__formas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:34px 0 20px}
.dash-skel__formas > div{height:84px;border-radius:var(--d-r-lg)}
.dash-skel__tx{border:1px solid var(--d-border);border-radius:var(--d-r-lg);overflow:hidden;margin-bottom:24px}
.dash-skel__toolbar{height:63px;border-radius:0}
.dash-skel__linhas{height:480px;overflow:hidden}
.dash-skel__linha{height:46px;border-top:1px solid var(--d-border-soft);border-radius:0}

/* ---------- KPIs do dia e resumo do mes ---------- */
.dash-kpis-dia,
.dash-kpis-mes--3{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:14px;
    margin-bottom:20px;
}
.dash-kpis-mes{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:14px;
    margin-bottom:20px;
}

/* ---------- formas de pagamento ---------- */
.dash-dot{
    display:inline-block;
    width:9px;
    height:9px;
    border-radius:50%;
    flex-shrink:0;
    background:var(--forma-cor, var(--d-text-muted));
}
.dash-tag-nao-dinheiro{
    display:inline-block;
    padding:2px 8px;
    border-radius:999px;
    font-size:11px;
    font-weight:600;
    line-height:1.4;
    color:var(--d-text-sec);
    background:var(--d-overlay);
}
.dash-badge--forma{
    display:inline-flex;
    align-items:center;
    gap:6px;
    background:var(--d-overlay);
    color:var(--d-text-sec);
}

/* ---------- transacoes ---------- */
.dash-tx-aviso{
    margin:-6px 0 12px;
    padding:9px 12px;
    font-size:12.5px;
    line-height:1.45;
    color:var(--d-text-sec);
    background:var(--d-info-bg);
    border:1px solid color-mix(in srgb, var(--d-info) 35%, transparent);
    border-radius:var(--d-r-md);
}
.dash-table--tx tr.is-filtrada{display:none}
.dash-table--tx td.tx-hora{white-space:nowrap}
.dash-tx-ver-todas{display:none}

/* ---------- relatorio mensal ---------- */
.dash-formula{
    margin:14px auto 0;
    max-width:440px;
    display:grid;
    gap:4px;
    text-align:left;
}
.dash-formula__linha{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:12px;
    font-size:13px;
    color:var(--d-text-sec);
}
.dash-formula__linha dt{font-weight:500}
.dash-formula__linha dd{
    margin:0;
    font-weight:700;
    color:var(--d-text);
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
}
.dash-empty__titulo{
    font-size:16px;
    font-weight:700;
    margin-bottom:8px;
    color:var(--d-text);
}
.dash-fechamento__box{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    flex-wrap:wrap;
    padding:16px 18px;
    margin-bottom:24px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
}
.dash-fechamento__txt{margin:0;font-size:13px;color:var(--d-text-sec)}
.dash-status--mes,.dash-status--rank{margin-bottom:14px}
.dash-status--mes:empty,.dash-status--rank:empty{display:none}

/* ---------- modais ---------- */
.dash-modal--confirma,.dash-modal--rec{max-width:460px}
.dash-confirma__txt{
    margin:0 0 16px;
    font-size:14px;
    line-height:1.55;
    color:var(--d-text-sec);
}
.dash-confirma__txt strong{color:var(--d-text);font-weight:700}
.dash-modal-erro{
    margin:0 0 4px;
    padding:10px 12px;
    font-size:13px;
    font-weight:600;
    color:var(--d-danger);
    background:var(--d-danger-bg);
    border:1px solid var(--d-danger);
    border-radius:var(--d-r-md);
}

/* ---------- defeituosas ---------- */
.dash-ver-mais-wrap{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:8px;
    margin:8px 0 24px;
}
.dash-ver-mais-wrap .dash-nota{margin:0}
.dash-ver-mais{min-width:200px}
/* A nota/"Ver mais" colados na tabela que eles explicam */
.dash-table-card + .dash-ver-mais-wrap{margin-top:-14px}
.dash-filter-group--periodo{flex:1;min-width:200px}
.dash-empty__sub{margin-top:6px;font-size:12px;font-weight:400;color:var(--d-text-muted)}
.dash-nowrap{white-space:nowrap}

/* ---------- "Gerenciar lojas" (6.9): gestao RECOLHIDA, fora do fluxo de leitura ---------- */
.dash-gerenciar{margin:24px 0}
.dash-gerenciar__resumo{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:4px 8px;
    min-height:44px;
    padding:10px 16px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
    font-size:13px;
    font-weight:700;
    color:var(--d-text-sec);
    cursor:pointer;
    list-style:none;
}
.dash-gerenciar__resumo::-webkit-details-marker{display:none}
.dash-gerenciar__resumo::after{
    content:"";
    margin-left:auto;
    width:8px;
    height:8px;
    border-right:2px solid var(--d-text-muted);
    border-bottom:2px solid var(--d-text-muted);
    transform:translateY(-2px) rotate(45deg);
    transition:transform .15s ease;
}
.dash-gerenciar[open] > .dash-gerenciar__resumo::after{transform:translateY(2px) rotate(-135deg)}
.dash-gerenciar__resumo:focus-visible{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-gerenciar__resumo:active{background:var(--d-card-hover)}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-gerenciar__resumo:hover{border-color:var(--d-border-hard);color:var(--d-text)}
}
.dash-gerenciar__conta{font-weight:500;color:var(--d-text-muted)}
.dash-gerenciar__corpo{padding-top:14px}
.dash-gerenciar__nota{margin:0 0 12px}

/* ---------- login da dashboard (6.8): a cara da dashboard, nao a do ERP ---------- */
.dash-login{
    box-sizing:border-box;
    min-height:100vh;
    min-height:100dvh;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px 16px;
}
.dash-login__card{
    box-sizing:border-box;
    width:100%;
    max-width:400px;
    padding:36px 32px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-xl);
    box-shadow:var(--d-shadow-lg);
}
.dash-login__marca{text-align:center;margin-bottom:28px}
.dash-login__marca h1{
    margin:0;
    font-size:24px;
    font-weight:800;
    letter-spacing:-0.02em;
    color:var(--d-text);
}
.dash-login__marca p{margin:6px 0 0;font-size:13px;color:var(--d-text-muted)}
.dash-login__erro{
    margin:0 0 16px;
    padding:10px 12px;
    font-size:13px;
    font-weight:600;
    color:var(--d-danger);
    background:var(--d-danger-bg);
    border:1px solid var(--d-danger);
    border-radius:var(--d-r-md);
}
.dash-login__campo{margin-bottom:20px}
.dash-login__campo label{
    display:block;
    margin-bottom:6px;
    font-size:13px;
    font-weight:700;
    color:var(--d-text-sec);
}
/* ⚠️ `color-scheme: dark`: o autofill do Chrome pinta o campo por `light-dark()` —
   sem isto a senha salva abria um campo CLARO no cartao escuro. A borda em
   `--d-text-muted` e a fronteira do campo (WCAG 1.4.11 pede 3:1 contra o cartao). */
.dash-login__campo input{
    box-sizing:border-box;
    width:100%;
    min-height:44px;
    padding:10px 14px;
    font:inherit;
    font-size:16px;
    color:var(--d-text);
    background:var(--d-bg);
    border:1px solid var(--d-text-muted);
    border-radius:var(--d-r-md);
    color-scheme:dark;
}
.dash-login__campo input:focus{
    outline:none;
    border-color:var(--d-border-focus);
    box-shadow:var(--d-shadow-glow);
}
.dash-login__ajuda{margin:8px 0 0;font-size:12px;line-height:1.45;color:var(--d-text-muted)}
.dash-login__entrar{width:100%;min-height:44px}

/* ---------- abas de loja: indicio de que ha mais para o lado ---------- */
.dash-tabs.has-more-right{
    -webkit-mask-image:linear-gradient(to right, black calc(100% - 48px), transparent);
    mask-image:linear-gradient(to right, black calc(100% - 48px), transparent);
}
.dash-tabs.has-more-left{
    -webkit-mask-image:linear-gradient(to left, black calc(100% - 48px), transparent);
    mask-image:linear-gradient(to left, black calc(100% - 48px), transparent);
}
.dash-tabs.has-more-left.has-more-right{
    -webkit-mask-image:linear-gradient(to right, transparent, black 48px, black calc(100% - 48px), transparent);
    mask-image:linear-gradient(to right, transparent, black 48px, black calc(100% - 48px), transparent);
}

/* ---------- celular / tablet: alvos de toque e campos ---------- */
@media (max-width:900px){
    .dash-kpis-mes{grid-template-columns:1fr 1fr}
    .dash-actions{width:100%}
    .dash-actions__sair{margin-left:auto}
    .dash-btn{min-height:44px}
    .dash-btn-group{display:flex;width:100%}
    .dash-btn-group .dash-btn{flex:1 1 0;min-height:44px;padding-left:6px;padding-right:6px}
    .dash-tab{min-height:44px}
    .dash-month-btn{min-height:44px}
    .dash-termo-lote{min-height:44px;padding:0 14px}
    .dash-modal__close{width:44px;height:44px}
    .dash-rec-item .ri-actions button{min-height:44px;min-width:44px;padding:0 14px}
    /* 18 px de linha + 2 x 13 = 44 px de alvo; a margem negativa devolve os 26 px */
    .dash-status .dash-status__retry{padding:13px 8px;margin:-13px -8px}
    .dash-period-bar input[type=date],
    .dash-table-toolbar input[type=text],
    .dash-table-toolbar select,
    .dash-filter-select,
    .dash-custom-range input,
    .dash-month-select,
    .dash-modal-field input,
    .dash-modal-field select,
    .dash-modal-field textarea{min-height:44px}
    /* iOS da zoom em campo < 16px. O seletor precisa vencer
       `.dash-table-toolbar input[type=text]` (0,2,1). */
    body[data-dash-theme] input:not([type=hidden]):not([type=checkbox]):not([type=radio]),
    body[data-dash-theme] select,
    body[data-dash-theme] textarea{font-size:16px}
    /* Defeituosas (6.5): sem rolagem DENTRO da pagina — a lista cresce e o "Ver mais"
       (20 por vez) segura o tamanho. So a altura sai: a rolagem HORIZONTAL fica para o
       tablet (601-900), onde as colunas nao se escondem. */
    .dash-rank-area .dash-table-scroll{max-height:none}
    .dash-termo-card__detalhe{display:block}
}

@media (max-width:600px){
    /* KPIs do dia (e o resumo do mes): UM cartao, uma linha por numero
       (rotulo ... valor). Em 2 colunas o "R$" quebrava longe do numero. */
    .dash-kpis-dia,
    .dash-kpis-mes,
    .dash-kpis-mes--3{
        display:block;
        padding:2px 16px;
        background:var(--d-card);
        border:1px solid var(--d-border);
        border-radius:var(--d-r-lg);
    }
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card{
        display:grid;
        grid-template-columns:minmax(0,1fr) auto;
        grid-template-areas:"label value" "delta value";
        align-items:center;
        column-gap:12px;
        padding:12px 0;
        background:transparent;
        border:0;
        border-radius:0;
    }
    /* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card:hover{transform:none}
    }
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card + .dash-stat-card{border-top:1px solid var(--d-border-soft)}
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card .label{grid-area:label;margin:0}
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card .value{grid-area:value;font-size:20px;white-space:nowrap;text-align:right}
    :is(.dash-kpis-dia,.dash-kpis-mes,.dash-kpis-mes--3) .dash-stat-card :is(.delta,.sub){grid-area:delta;margin:2px 0 0}
    .dash-kpis-mes .dash-stat-card .value,
    .dash-kpis-mes--3 .dash-stat-card .value{font-size:18px}

    .dash-table-toolbar input[type=text],
    .dash-table-toolbar select{flex:1 1 100%;max-width:none;min-width:0}

    .dash-skel__hero{height:150px}
    .dash-skel__kpis{
        display:block;
        height:190px;
        border-radius:var(--d-r-lg);
        margin-bottom:20px;
        background:linear-gradient(90deg, var(--d-card) 0%, var(--d-card-hover) 50%, var(--d-card) 100%);
        background-size:200% 100%;
        animation:dashSkel 1.4s ease-in-out infinite;
    }
    .dash-skel__kpis > div{display:none}
    .dash-skel__formas{grid-template-columns:1fr 1fr;margin-top:52px}
    .dash-skel__formas > div{height:106px}
    .dash-skel__toolbar{height:124px}
    .dash-skel__linhas{height:auto;padding-bottom:68px}
    .dash-skel__linha{height:95px}

    /* Transacoes em linha-cartao: MESMA <table>, so CSS. `role` explicito no
       markup porque `display` em tr/td apaga a semantica de tabela no Safari. */
    .dash-table-scroll--tx{max-height:none;overflow:visible}
    .dash-table--tx,
    .dash-table--tx tbody,
    .dash-table--tx tbody tr{display:block}
    .dash-table--tx thead{
        position:absolute;
        width:1px;
        height:1px;
        overflow:hidden;
        clip:rect(0 0 0 0);
        clip-path:inset(50%);
        white-space:nowrap;
    }
    .dash-table--tx tbody tr.tx-row{
        display:grid;
        grid-template-columns:auto auto minmax(0,1fr) auto;
        grid-template-areas:"cli cli cli val" "hora venda . tipo" "loja loja loja loja";
        align-items:center;
        column-gap:8px;
        row-gap:4px;
        padding:12px 14px;
        border-top:1px solid var(--d-border-soft);
    }
    .dash-table--tx tbody tr.tx-row.is-filtrada{display:none}
    /* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    .dash-table--tx tbody tr.tx-row:hover td{background:transparent}
    }
    .dash-table--tx tbody td{display:block;padding:0;border:0}
    .dash-table--tx td.tx-cliente{
        grid-area:cli;
        min-width:0;
        overflow:hidden;
        text-overflow:ellipsis;
        white-space:nowrap;
        font-weight:600;
        color:var(--d-text);
    }
    .dash-table--tx td.tx-valor{grid-area:val;text-align:right}
    .dash-table--tx td.tx-hora{grid-area:hora;font-size:12px;color:var(--d-text-muted)}
    .dash-table--tx td.tx-venda{grid-area:venda;font-size:12px;white-space:nowrap}
    .dash-table--tx td.tx-venda::before{content:"·";margin-right:8px;color:var(--d-text-muted);font-weight:400}
    .dash-table--tx td.tx-tipo{grid-area:tipo;justify-self:end}
    .dash-table--tx td.tx-loja{grid-area:loja;font-size:12px}
    .dash-table--tx.is-recolhida:not(.is-filtrando) tbody tr.tx-row:nth-child(n+11){display:none}
    .dash-tx-ver-todas{display:flex;width:calc(100% - 28px);margin:10px 14px 14px}

    /* Defeituosas: os ganchos ja estavam no markup — so faltava o CSS */
    .dash-rank-table .col-codigo,
    .dash-rank-table .col-ocorr,
    .dash-rank-table .col-lojas{display:none}

    /* Devolucoes dos modais (6.4) em linha-CARTAO — a 375 a tabela de 6 colunas
       cortava o Valor ("R$ 56,0"). MESMA <table>, so CSS (molde `.dash-table--tx`);
       `role` explicito no markup (Safari apaga a semantica com `display`). */
    .dash-dev-wrap{overflow:visible}
    .dash-table--dev,
    .dash-table--dev tbody,
    .dash-table--dev tbody tr{display:block}
    .dash-table--dev thead{
        position:absolute;
        width:1px;
        height:1px;
        overflow:hidden;
        clip:rect(0 0 0 0);
        clip-path:inset(50%);
        white-space:nowrap;
    }
    /* `fit-content(55%)` e nao `auto`: a coluna da direita tem o Valor E a pilula da
       loja, e com `auto` um nome de loja LONGO a esticava ate o max-content dele — o
       nome do cliente ficava com 0 px (uma letra por linha) e a pilula cobria o tipo. */
    .dash-table--dev tbody tr.dev-linha{
        display:grid;
        grid-template-columns:minmax(0,1fr) fit-content(55%);
        grid-template-areas:"cli val" "data qtd" "tipo loja";
        align-items:center;
        column-gap:10px;
        row-gap:4px;
        padding:12px 14px;
        border-top:1px solid var(--d-border-soft);
    }
    .dash-table--dev tbody tr.dev-linha:first-child{border-top:0}
    .dash-table--dev-def tbody tr.dev-linha{grid-template-areas:"cli val" "data qtd" "tipo loja" "def def"}
    .dash-table--dev tbody td{display:block;padding:0;border:0}
    .dash-table--dev td.dev-cli{grid-area:cli;min-width:0;overflow-wrap:anywhere;font-weight:600;color:var(--d-text)}
    .dash-table--dev td.dev-valor{grid-area:val;text-align:right}
    .dash-table--dev td.dev-data{grid-area:data;font-size:12px}
    .dash-table--dev td.dev-qtd{grid-area:qtd;text-align:right;font-size:12px}
    .dash-table--dev td.dev-qtd::before{content:"Qtd ";font-weight:500;color:var(--d-text-muted)}
    .dash-table--dev td.dev-tipo{grid-area:tipo}
    .dash-table--dev td.dev-loja{grid-area:loja;justify-self:end;min-width:0;max-width:100%;text-align:right}
    .dash-table--dev td.dev-loja .dash-rank-loja{white-space:normal;overflow-wrap:anywhere;max-width:100%;box-sizing:border-box}
    .dash-table--dev td.dev-defeito{grid-area:def;font-size:12px}
    /* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    .dash-table--dev tbody tr.dev-linha:hover td{background:transparent}
    }

    .dash-login__card{padding:28px 20px}

    /* Lote a 375: a comparacao vira FRASE (em flex, "Lote anterior fechou / em" e
       "5,0 pp / pior" quebravam em 4 pedacos) e o rodape EMPILHA com o primario em cima
       — lado a lado os 2 botoes nao cabem (320 px de 303). */
    .dash-lote-compara{display:block;line-height:1.6}
    .dash-modal--lote .dash-modal-actions{flex-direction:column-reverse;align-items:stretch;padding:12px 16px}
    .dash-modal--lote .dash-modal-actions .dash-btn{width:100%;min-width:0;justify-content:center}

    /* Pilulas das abas (Defeituosas): as 3 sempre visiveis e em UMA linha — com a
       base 0 as 3 tinham a mesma largura e "Pecas Defeituosas" quebrava em 2 linhas
       (QA C-3). Base = o proprio texto; a sobra e dividida igual. */
    .dash-tabs--pills .dash-tab{flex:1 1 auto;white-space:nowrap;line-height:1.2;padding:8px 6px;text-align:center}

    .dash-fechamento__box{flex-direction:column;align-items:stretch}

    .dash-period-bar.is-open{flex-direction:column;align-items:stretch;gap:10px}
    .dash-period-datas{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px}
    .dash-period-datas input[type=date]{width:100%;min-width:0}
    .dash-period-aplicar{grid-column:1 / -1}
    .dash-period-atalhos{margin-left:0;flex-wrap:nowrap}
    .dash-period-atalhos .dash-btn{flex:1 1 0;padding-left:6px;padding-right:6px;white-space:normal;line-height:1.2}
}

/* ================================================================
   LUCRO POR CLIENTE (Fase 2, 24/09/2026) — clientes.html (lista) e
   cliente_panorama.html (panorama). Design UX §12 (nomes `.dash-cli-*`,
   `.dash-passo`); a dashboard e a EXCECAO ao "ERP desktop-only": 375 E 1366.
   ⚠️ NAO usar `.dash-stepper` (ja e o do modal do lote).
   ================================================================ */

/* Cabecalho no celular: 2 px a menos ENTRE os botoes e 1 px a menos de cada lado dos
   botoes que nao sao o "Sair" — a tela nova (Dashboard/Defeituosas/Rel. Mensal/Sair) cabe
   em 1 linha a 360 px. MEDIDO (24/09, Inter): so o `gap:6px` do UX faltava 1 px (319 +
   3x6 = 337 > 336); com o padding de 10 px sobram 5 e o "Sair" fica a ~10 px do vizinho.
   So o `column-gap`: o `row-gap` fica 8 — quando o "Sair" desce para a 2a linha (320 px)
   ele continua a >= 8 px do vizinho, a regra de a11y do `[FE8-sair]`, que VENCE a linha
   unica. O "Sair" mantem o padding (46 px de largura: alvo >= 44). */
@media (max-width:600px){
    .dash-actions{column-gap:6px}
    .dash-actions .dash-btn--sm:not(.dash-actions__sair){padding-left:10px;padding-right:10px}
}

/* Atalho da tela inicial: "Ver por cliente ->" no fim da nota do Resumo do mes. */
.dash-nota__link{
    color:var(--d-text-sec);
    font-weight:600;
    text-decoration:underline;
    text-underline-offset:2px;
    white-space:nowrap;
    border-radius:3px;
}
.dash-nota__link:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:2px}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-nota__link:hover{color:var(--d-text)}
}

/* ---------- filtros ---------- */
.dash-cli-filtros{gap:12px 18px}
.dash-cli-filtros .dash-filter-label{margin:0}
.dash-cli-f-periodo,
.dash-cli-f-loja{flex-wrap:nowrap}
/* o <select> cresce ate a MAIOR opcao: nome de loja comprido nao pode empurrar a faixa */
.dash-cli-f-loja .dash-filter-select{max-width:260px}
.dash-passo{display:flex;align-items:center;gap:6px}
.dash-passo__btn{min-width:36px;padding:6px 10px;font-size:16px;line-height:1;font-weight:700}
.dash-passo__rotulo{
    min-width:220px;
    min-height:20px;
    text-align:center;
    font-size:14px;
    font-weight:700;
    color:var(--d-text);
    white-space:nowrap;
}
.dash-passo__rotulo small{font-size:12px;font-weight:500;color:var(--d-text-muted)}
/* rotulo ainda sem resposta: um traco de esqueleto no lugar do texto */
.dash-passo__rotulo:empty{
    border-radius:4px;
    background:linear-gradient(90deg, var(--d-card-hover) 0%, var(--d-overlay) 50%, var(--d-card-hover) 100%);
    background-size:200% 100%;
    animation:dashSkel 1.4s ease-in-out infinite;
}
.dash-cli-f-busca{margin-left:auto}
.dash-cli-f-busca input{
    width:260px;
    padding:8px 12px;
    background:var(--d-bg);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-sm);
    color:var(--d-text);
    font-family:inherit;
    font-size:13px;
    color-scheme:dark;
}
.dash-cli-f-busca input::placeholder{color:var(--d-text-muted)}
.dash-cli-f-busca input:focus{outline:none;border-color:var(--d-border-focus);box-shadow:var(--d-shadow-glow)}
/* "Ordenar por" e so do celular (no computador o controle e o cabecalho da tabela) */
.dash-cli-ordem{display:none}
.dash-cli-duo{display:contents}
/* O "Periodo" (datas) mora DENTRO da faixa de filtros: linha propria, sem 2o cartao. */
.dash-cli-filtros .dash-period-bar{flex-basis:100%;padding:0;background:transparent;border:0;border-radius:0}
.dash-cli-intervalo__erro{flex-basis:100%;margin:0;font-size:13px;font-weight:600;color:var(--d-warning)}

/* ---------- resumo ---------- */
.dash-status--cli{margin-bottom:8px}
.dash-status--cli:empty{display:none}
.dash-cli-resumo{
    display:flex;
    align-items:baseline;
    flex-wrap:wrap;
    gap:4px 14px;
    margin:2px 0 10px;
}
.dash-cli-resumo__rotulo{
    font-size:11px;
    font-weight:700;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--d-text-muted);
}
.dash-cli-resumo__total{
    font-size:24px;
    font-weight:800;
    letter-spacing:-.02em;
    color:var(--d-success);
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
}
.dash-cli-resumo__total.is-neg{color:var(--d-danger)}
.dash-cli-resumo__meta{font-size:13px;color:var(--d-text-sec)}
.dash-cli-resumo__hora{margin-left:auto;font-size:12px;color:var(--d-text-muted);white-space:nowrap}
.dash-cli-resumo__extra{flex-basis:100%;font-size:12.5px;line-height:1.45;color:var(--d-text-muted)}
.dash-cli-so-cel{display:none}
/* Acao em TEXTO ("5 com lucro negativo"): parece link, e botao (e uma acao na tela). */
.dash-cli-acao-texto{
    padding:0;
    border:0;
    background:transparent;
    color:var(--d-text-sec);
    font:inherit;
    text-decoration:underline;
    text-underline-offset:2px;
    cursor:pointer;
}
.dash-cli-acao-texto:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:2px;border-radius:3px}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-cli-acao-texto:hover{color:var(--d-text)}
}
.dash-cli-ajuda{
    display:flex;
    flex-wrap:wrap;
    align-items:baseline;
    gap:4px 16px;
    margin:0 0 12px;
    font-size:12px;
    color:var(--d-text-muted);
}
.dash-cli-como summary{
    cursor:pointer;
    color:var(--d-text-sec);
    text-decoration:underline;
    text-underline-offset:2px;
}
.dash-cli-como summary:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:2px;border-radius:3px}
.dash-cli-como[open]{flex-basis:100%}
.dash-cli-como ul{margin:8px 0 0 18px;padding:0;line-height:1.55;color:var(--d-text-sec)}
.dash-cli-como strong{color:var(--d-text);font-weight:700}
.dash-cli-contagem{margin:-4px 0 10px;font-size:12.5px;font-weight:600;color:var(--d-text-sec)}
.dash-erro-bloco--neutro{border-left-color:var(--d-border-hard)}
.dash-cli-vazio__sub{display:block;margin-top:4px;font-size:13px;font-weight:400;color:var(--d-text-muted)}
.dash-cli-acoes{display:flex;flex-wrap:wrap;gap:10px}
.dash-cli-area.is-carregando,
.dash-cli-pan-grid.is-carregando{opacity:.55;transition:opacity .15s ease}

/* ---------- tabela (computador) ---------- */
/* `overflow:clip` e nao `hidden`: `hidden` prende o cabecalho fixo DENTRO do cartao
   (o sticky para de acompanhar a pagina); `clip` recorta os cantos e nao cria caixa de
   rolagem. Nunca `visible` (o fundo do cabecalho vazaria dos cantos arredondados). */
.dash-table-card.dash-cli-card{overflow:clip}
.dash-cli-tabela thead th{top:0}
.dash-cli-tabela th.col-pos{width:48px}
.dash-cli-tabela thead th.num{text-align:right}
.dash-cli-sort{
    display:inline-flex;
    align-items:center;
    gap:2px;
    padding:0;
    border:0;
    background:transparent;
    color:inherit;
    font:inherit;
    letter-spacing:inherit;
    text-transform:inherit;
    cursor:pointer;
}
.dash-cli-sort:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:3px;border-radius:3px}
.dash-cli-tabela thead th[aria-sort] .dash-cli-sort{color:var(--d-text)}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-cli-sort:hover{color:var(--d-text)}
}
/* <th> do nome: o `.dash-table tbody td` (0,1,2) nao pega <th> — padding e filete aqui. */
/* Padding vertical CURTO: quem da a altura da linha sao as celulas de numero (12 px); o
   nome + a linha fina (codigo · loja) cabem nela — ~52 px por cliente, 10-11 na 1a tela
   a 1366x900 (UX §5.1). Com 12 px aqui a linha ia a 68 px e cabiam 8. */
.dash-cli-tabela tbody th.cli-nome{
    padding:5px 14px;
    border-top:1px solid var(--d-border-soft);
    vertical-align:middle;
    text-align:left;
    font-size:14px;
    font-weight:600;
    color:var(--d-text);
    overflow-wrap:anywhere;
}
.dash-cli-tabela .cli-nome a{color:inherit;text-decoration:none}
.dash-cli-tabela .cli-nome a:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:2px;border-radius:3px}
.dash-cli-tabela .cli-sem-link{color:var(--d-text-sec);font-style:italic;font-weight:500}
.dash-cli-tabela .cli-meta{margin-top:2px;font-size:12px;font-weight:500;color:var(--d-text-muted)}
.dash-cli-tabela .cli-meta .dash-rank-loja{margin:0;padding:1px 8px}
/* Lucro: o UNICO numero colorido da linha. Seletor proprio: `.dash-table tbody td`
   (0,1,2) venceria uma classe simples de cor. */
.dash-cli-tabela td.cli-lucro{font-size:15px;font-weight:800;color:var(--d-success)}
.dash-cli-tabela td.cli-lucro.is-neg{color:var(--d-danger)}
.dash-cli-tabela td.cli-lucro.is-zero{color:var(--d-text-muted)}
.dash-cli-tabela td.cli-vazio{color:var(--d-text-muted)}
.dash-cli-tabela td.cli-meta-m{display:none}
.dash-cli-tabela tbody tr.tem-link{cursor:pointer}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-cli-tabela tbody tr.tem-link:hover th{background:var(--d-card-hover)}
.dash-cli-tabela .cli-nome a:hover{text-decoration:underline;text-underline-offset:2px}
}
.dash-cli-selo{
    display:inline-block;
    margin-left:6px;
    padding:1px 7px;
    border-radius:9px;
    font-size:10.5px;
    font-weight:700;
    line-height:1.5;
    background:var(--d-overlay);
    color:var(--d-text-sec);
    vertical-align:1px;
    white-space:nowrap;
}
.dash-cli-card + .dash-ver-mais-wrap{margin-top:-14px}

/* ---------- esqueleto (1a carga) ---------- */
.dash-cli-skel__resumo,
.dash-cli-skel__ajuda,
.dash-cli-skel__cabeca,
.dash-cli-skel__linha,
.dash-cli-skel__nome,
.dash-cli-pan-skel__serie{
    background:linear-gradient(90deg, var(--d-card) 0%, var(--d-card-hover) 50%, var(--d-card) 100%);
    background-size:200% 100%;
    animation:dashSkel 1.4s ease-in-out infinite;
}
.dash-cli-skel__resumo{height:58px;border-radius:var(--d-r-md);margin:2px 0 10px}
.dash-cli-skel__ajuda{height:14px;width:46%;border-radius:4px;margin:0 0 16px}
.dash-cli-skel__tabela{border:1px solid var(--d-border);border-radius:var(--d-r-lg);overflow:hidden;margin-bottom:24px}
.dash-cli-skel__cabeca{height:38px;border-radius:0}
.dash-cli-skel__linha{height:62px;border-top:1px solid var(--d-border-soft);border-radius:0}
.dash-cli-skel__nome{display:inline-block;width:260px;max-width:70vw;height:.9em;border-radius:6px;vertical-align:middle}

/* ---------- panorama ---------- */
.dash-cli-voltar{
    display:inline-flex;
    align-items:center;
    gap:6px;
    align-self:flex-start;
    margin-bottom:6px;
    font-size:13px;
    font-weight:600;
    color:var(--d-text-sec);
    text-decoration:none;
    border-radius:4px;
}
.dash-cli-voltar:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:2px}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-cli-voltar:hover{color:var(--d-text);text-decoration:underline;text-underline-offset:2px}
}
.dash-cli-pan-titulo{flex:1 1 360px}
.dash-cli-pan-titulo h1{overflow-wrap:anywhere}
/* O foco vai ao <h1> ao abrir (o leitor de tela anuncia o cliente) — heading nao e
   controle: sem anel (so o gerenciamento de foco, nada a operar). */
.dash-cli-pan-titulo h1:focus,
.dash-cli-pan-titulo h1:focus-visible{outline:none}
/* Linha de dados do cliente (codigo · loja · ultima compra · perfil · tambem compra em).
   O "·" so aparece ENTRE dois itens da mesma linha: cada item leva o seu "·" no vao a
   ESQUERDA; o item que ABRE uma linha tem esse vao fora da caixa (a margem negativa do
   miolo) e o `overflow:hidden` o recorta — quebrando a linha, nao sobra "·" nem no fim de
   cima nem no comeco de baixo (medido a 320/375 com o nome longo). */
.dash-cli-pan-meta{overflow:hidden;font-size:13px;color:var(--d-text-muted)}
.dash-cli-pan-meta__in{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    row-gap:4px;
    margin-left:-16px;
}
.dash-cli-pan-meta__in > *{margin-left:16px}
.dash-cli-pan-meta .dash-rank-loja{margin:0}
.dash-cli-meta-item{position:relative}
.dash-cli-meta-item::before{
    content:"·";
    content:"·" / "";
    position:absolute;
    left:-10px;
    color:var(--d-border-hard);
}
.dash-cli-perfil{color:var(--d-text-sec);font-weight:600}
.dash-cli-pan-direita{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.dash-cli-pan-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px}
.dash-cli-pan-nav__pos{font-size:12px;color:var(--d-text-muted);white-space:nowrap}
/* Ponta da lista: TRAVADO, sem sumir (o layout nao pula). */
.dash-cli-pan-nav a[aria-disabled="true"],
.dash-cli-proximo a[aria-disabled="true"]{opacity:.45;pointer-events:none;cursor:default}
.dash-cli-proximo{display:none}

/* Grade: 2 colunas no computador. A 4a linha (`1fr`) absorve a serie quando ela e
   mais alta que heroi + numeros + devolucoes — sem ela o excesso seria repartido
   entre as linhas e abriria buracos entre os cartoes da esquerda. */
.dash-cli-pan-grid{
    display:grid;
    grid-template-columns:minmax(0,1fr) 400px;
    grid-template-rows:auto auto auto 1fr;
    grid-template-areas:"hero serie" "kpis serie" "dev serie" "ped serie";
    column-gap:20px;
    align-items:start;
}
.dash-cli-pan-grid > .a-hero{grid-area:hero;min-width:0}
.dash-cli-pan-grid > .a-kpis{grid-area:kpis;min-width:0}
.dash-cli-pan-grid > .a-serie{grid-area:serie;min-width:0}
.dash-cli-pan-grid > .a-dev{grid-area:dev;min-width:0}
.dash-cli-pan-grid > .a-ped{grid-area:ped;min-width:0}
.dash-cli-pan-grid .dash-hero-card{margin-bottom:16px}
.dash-cli-pan-grid .a-hero .value{font-size:44px}
.dash-cli-pan-grid .dash-section-title{margin-top:8px}
.dash-cli-pan-grid .dash-table-card{margin-bottom:6px}
.dash-hero-card.is-zero{border-left-color:var(--d-border-hard)}
.dash-hero-card.is-zero .value{color:var(--d-text-muted)}
/* "Margem devolvida R$ 0,00": NEUTRA, nunca vermelha (decisao do Gerente, 24/09) — o
   vermelho fica para quando o cliente devolveu. Na lista a margem ja e neutra ("—" cinza
   quando zerada; o valor negativo no tom neutro das celulas). */
.dash-cli-pan-grid .dash-stat-card--danger.is-zero{border-left-color:var(--d-border-hard)}
.dash-cli-pan-grid .dash-stat-card--danger.is-zero .value{color:var(--d-text-muted)}
.dash-cli-anterior{
    margin:12px auto 0;
    padding-top:10px;
    max-width:520px;
    border-top:1px solid var(--d-border-soft);
    font-size:12.5px;
    font-weight:500;
    color:var(--d-text-sec);
}
.dash-cli-nota-lista{margin:4px 0 16px}
.dash-cli-pan-skel{
    display:grid;
    grid-template-columns:minmax(0,1fr) 400px;
    column-gap:20px;
    align-items:start;
}
.dash-cli-pan-skel__serie{height:360px;border-radius:var(--d-r-lg)}

/* ---------- serie mes a mes / semana a semana ---------- */
.dash-cli-serie{
    margin-bottom:16px;
    padding:14px 16px 12px;
    background:var(--d-card);
    border:1px solid var(--d-border);
    border-radius:var(--d-r-lg);
}
.dash-cli-serie__topo{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.dash-cli-serie__titulo{
    margin:0;
    font-size:11px;
    font-weight:700;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--d-text-muted);
}
.dash-cli-serie .dash-btn-group .dash-btn{padding:5px 10px;font-size:12px}
.dash-cli-serie__lista{list-style:none;margin:0;padding:0}
.dash-cli-serie__linha{
    display:grid;
    grid-template-columns:118px minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
    width:100%;
    padding:9px 8px;
    border:0;
    border-radius:var(--d-r-sm);
    background:transparent;
    color:var(--d-text-sec);
    font:inherit;
    font-size:13px;
    text-align:left;
    cursor:pointer;
}
.dash-cli-serie__linha:disabled{cursor:progress}
.dash-cli-serie__linha:focus-visible{outline:2px solid var(--d-border-focus);outline-offset:-2px}
.dash-cli-serie__linha:active:not(:disabled){background:var(--d-card-hover)}
/* E2-HOVER */ @media (hover:hover) and (pointer:fine){
.dash-cli-serie__linha:hover:not(:disabled){background:var(--d-card-hover)}
}
.dash-cli-serie__linha .lbl{white-space:nowrap;min-width:0}
.dash-cli-serie__linha .lbl small{font-size:11px;color:var(--d-text-muted)}
.dash-cli-serie__linha .val{
    min-width:96px;
    text-align:right;
    font-weight:700;
    color:var(--d-text);
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
}
.dash-cli-serie__linha .val.is-neg{color:var(--d-danger)}
.dash-cli-serie__linha .val.is-zero{color:var(--d-text-muted);font-weight:500}
.dash-cli-serie__linha .dash-rank-bar{margin:0;max-width:none}
.dash-cli-serie__linha .dash-rank-bar__fill{display:block;background:var(--d-success);transition:none}
.dash-cli-serie__linha .dash-rank-bar__fill.is-neg{background:var(--d-danger)}
.dash-cli-serie__linha[aria-current="true"]{background:var(--d-primary-bg);box-shadow:inset 3px 0 0 var(--d-primary)}
.dash-cli-serie__linha[aria-current="true"] .lbl{color:var(--d-text);font-weight:700}
.dash-cli-serie__vazio{margin:6px 0;font-size:13px;color:var(--d-text-muted)}
.dash-cli-serie__media{
    margin:8px 0 0;
    padding-top:10px;
    border-top:1px solid var(--d-border-soft);
    font-size:13px;
    color:var(--d-text-sec);
}
.dash-cli-serie__media strong{color:var(--d-text);font-weight:800;font-variant-numeric:tabular-nums}

/* ---------- devolucoes e vendas do panorama ---------- */
.dash-cli-dev td.dev-data,
.dash-cli-dev td.dev-tipo{white-space:nowrap}
.dash-cli-dev td.dev-cli{min-width:0}
.dash-cli-dev td.dev-tipo .dash-cli-selo{margin-left:6px}
.dash-cli-ped td.ped-num{font-weight:700;color:var(--d-text)}
.dash-cli-ped td.ped-lucro{font-weight:700;color:var(--d-success)}
.dash-cli-ped td.ped-lucro.is-neg{color:var(--d-danger)}

/* ---------- celular / tablet ---------- */
@media (max-width:900px){
    .dash-cli-f-busca{margin-left:0;flex:1 1 100%}
    .dash-cli-f-busca input{width:100%;min-height:44px}
    .dash-passo__btn{min-width:44px;min-height:44px}
    /* Alvos de toque >= 44 px SEM mudar a altura da linha: o padding cresce, a margem
       NEGATIVA devolve (molde `.dash-status__retry`). */
    .dash-cli-acao-texto{padding:13px 4px;margin:-13px -4px}
    .dash-cli-voltar{padding:13px 8px;margin:-13px -8px -7px}
    .dash-cli-como summary{padding:13px 0;margin:-13px 0}
    .dash-cli-sort{padding:14px 0;margin:-14px 0}
    .dash-nota__link{display:inline-block;padding:14px 4px;margin:-14px -4px}
    /* Tablet (601-900): tabela com cabecalho; faltou largura, rola DENTRO do cartao. */
    .dash-cli-tabela-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
    /* Link "esticado": a LINHA inteira e o alvo de toque, UM so ponto de foco (o nome). */
    .dash-cli-tabela tbody tr.cli-linha{position:relative}
    .dash-cli-tabela .cli-nome a::after{content:"";position:absolute;inset:0}
    .dash-cli-tabela tbody tr.tem-link:active th,
    .dash-cli-tabela tbody tr.tem-link:active td{background:var(--d-card-hover)}
    .dash-cli-pan-direita{width:100%;align-items:stretch}
    .dash-cli-pan-nav{justify-content:space-between}
    .dash-cli-pan-grid,
    .dash-cli-pan-skel{grid-template-columns:minmax(0,1fr);grid-template-rows:none}
    .dash-cli-pan-grid{grid-template-areas:"hero" "kpis" "serie" "dev" "ped"}
    .dash-cli-pan-skel__serie{height:300px;margin-bottom:16px}
    .dash-cli-serie__linha{min-height:44px}
}
@media (max-width:600px){
    .dash-cli-filtros{padding:12px;gap:10px}
    .dash-cli-filtros .dash-filter-group{width:100%}
    .dash-cli-f-periodo > .dash-filter-label{display:none}
    .dash-passo{width:100%;justify-content:space-between}
    .dash-passo__rotulo{min-width:0;flex:1 1 auto;white-space:normal;line-height:1.3}
    .dash-cli-duo{display:flex;gap:10px;width:100%}
    .dash-cli-duo .dash-filter-group{flex:1 1 0;flex-direction:column;align-items:stretch;gap:4px;min-width:0;width:auto}
    .dash-cli-duo .dash-filter-select{width:100%;min-width:0}
    .dash-cli-ordem{display:flex}

    .dash-cli-so-desk{display:none}
    .dash-cli-so-cel{display:inline}
    .dash-cli-dica{display:none}
    .dash-cli-resumo{
        display:grid;
        grid-template-columns:minmax(0,1fr) auto;
        grid-template-areas:"rot tot" "meta meta";
        align-items:baseline;
        column-gap:10px;
        row-gap:2px;
        padding:12px 14px;
        margin:0 0 10px;
        background:var(--d-card);
        border:1px solid var(--d-border);
        border-radius:var(--d-r-lg);
    }
    .dash-cli-resumo__rotulo{grid-area:rot}
    .dash-cli-resumo__total{grid-area:tot;text-align:right;font-size:22px}
    .dash-cli-resumo__meta{grid-area:meta;font-size:12px}
    .dash-cli-resumo__extra{grid-column:1 / -1;margin-top:4px}
    .dash-cli-skel__resumo{height:84px}
    .dash-cli-skel__ajuda{width:62%}
    .dash-cli-skel__cabeca{display:none}
    .dash-cli-skel__linha{height:104px}
    .dash-cli-skel__linha:nth-child(n+6){display:none}

    /* Cartoes: a MESMA <table>, so CSS (molde `.dash-table--tx`). `role` explicito no
       markup porque `display` em tr/td apaga a semantica de tabela no Safari. O
       cabecalho SAI (a ordem e o <select>; os rotulos vao em cada cartao) — invisivel
       e focavel seria pior. */
    .dash-cli-tabela thead{display:none}
    .dash-cli-tabela,
    .dash-cli-tabela tbody{display:block}
    .dash-cli-tabela tbody tr.cli-linha{
        display:grid;
        grid-template-columns:30px minmax(0,1fr) auto;
        grid-template-areas:"pos nome lucro" ". meta meta" ". fat mk" ". dev dev";
        align-items:baseline;
        column-gap:8px;
        row-gap:3px;
        padding:12px 14px;
        border-top:1px solid var(--d-border-soft);
    }
    .dash-cli-tabela tbody tr.cli-linha:first-child{border-top:0}
    .dash-cli-tabela tbody td,
    .dash-cli-tabela tbody th.cli-nome{display:block;padding:0;border:0}
    .dash-cli-tabela td.dash-rank-pos{grid-area:pos;width:auto;min-width:0;font-size:14px;text-align:left}
    .dash-cli-tabela tbody th.cli-nome{
        grid-area:nome;
        min-width:0;
        font-size:15px;
        line-height:1.3;
        display:-webkit-box;
        -webkit-line-clamp:2;
        -webkit-box-orient:vertical;
        overflow:hidden;
    }
    .dash-cli-tabela .cli-nome .cli-meta,
    .dash-cli-tabela .cli-nome .dash-cli-selo{display:none}
    .dash-cli-tabela td.cli-meta-m{grid-area:meta;display:block;font-size:12px;color:var(--d-text-muted);overflow-wrap:anywhere}
    .dash-cli-tabela td.cli-meta-m:empty{display:none}
    .dash-cli-tabela td.cli-lucro{grid-area:lucro;font-size:17px;text-align:right}
    .dash-cli-tabela td.cli-lucro::before{content:"Lucro ";position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
    .dash-cli-tabela td.cli-fat{grid-area:fat;text-align:left;font-size:13px}
    .dash-cli-tabela td.cli-fat::before{content:"Faturamento ";font-weight:500;color:var(--d-text-muted)}
    .dash-cli-tabela td.cli-mk{grid-area:mk;text-align:right;font-size:13px}
    .dash-cli-tabela td.cli-mk::before{content:"Markup ";font-weight:500;color:var(--d-text-muted)}
    .dash-cli-tabela td.cli-dev{grid-area:dev;text-align:left;font-size:13px}
    .dash-cli-tabela td.cli-dev::before{content:"Margem devolvida ";font-weight:500;color:var(--d-text-muted)}
    .dash-cli-tabela td.cli-dev.cli-vazio,
    .dash-cli-tabela td.cli-mk.cli-vazio{display:none}
    /* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    .dash-cli-tabela tbody tr.tem-link:hover th{background:transparent}
    }

    .dash-cli-pan-topo .dash-cli-pan-nav{display:none}
    .dash-cli-proximo{display:flex;gap:10px;margin:18px 0 8px}
    .dash-cli-proximo .dash-btn{flex:1 1 0;min-width:0;overflow:hidden}
    .dash-cli-proximo .dash-btn:last-child{flex:2 1 0}
    .dash-cli-proximo__txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .dash-cli-pan-grid .a-hero .value{font-size:34px}
    .dash-cli-anterior{max-width:none}
    .dash-cli-serie__topo{flex-direction:column;align-items:stretch}
    .dash-cli-serie__topo .dash-btn-group{width:100%}
    .dash-cli-serie__linha{grid-template-columns:96px minmax(0,1fr) auto}
    .dash-cli-serie__linha .lbl{white-space:normal;line-height:1.2}
    .dash-cli-serie__linha .lbl small{display:block}
    .dash-cli-pan-skel .dash-skel__kpis{display:block}

    /* Pecas devolvidas: o cartao do `.dash-table--dev` (peca + margem / data + qtd /
       "Comprada em"). */
    .dash-cli-dev td.dev-tipo{font-size:12px;color:var(--d-text-muted);white-space:normal}
    .dash-cli-dev td.dev-tipo::before{content:"Comprada em ";color:var(--d-text-muted)}
    .dash-cli-dev td.dev-data{color:var(--d-text-muted)}
    /* Vendas do periodo em cartao */
    .dash-cli-ped,
    .dash-cli-ped tbody,
    .dash-cli-ped tbody tr{display:block}
    .dash-cli-ped thead{
        position:absolute;
        width:1px;
        height:1px;
        overflow:hidden;
        clip:rect(0 0 0 0);
        clip-path:inset(50%);
        white-space:nowrap;
    }
    .dash-cli-ped tbody tr.ped-linha{
        display:grid;
        grid-template-columns:minmax(0,1fr) auto;
        grid-template-areas:"num lucro" "data fat";
        column-gap:10px;
        row-gap:3px;
        padding:11px 14px;
        border-top:1px solid var(--d-border-soft);
    }
    .dash-cli-ped tbody tr.ped-linha:first-child{border-top:0}
    .dash-cli-ped tbody td{display:block;padding:0;border:0}
    .dash-cli-ped td.ped-num{grid-area:num}
    .dash-cli-ped td.ped-lucro{grid-area:lucro;text-align:right}
    .dash-cli-ped td.ped-lucro::before{content:"Lucro ";font-weight:500;color:var(--d-text-muted)}
    .dash-cli-ped td.ped-data{grid-area:data;font-size:12px;color:var(--d-text-muted)}
    .dash-cli-ped td.ped-fat{grid-area:fat;text-align:right;font-size:12px}
    .dash-cli-ped td.ped-fat::before{content:"Valor ";color:var(--d-text-muted)}
    /* E2-HOVER */ @media (hover:hover) and (pointer:fine){
    .dash-cli-ped tbody tr.ped-linha:hover td{background:transparent}
    }
}

/* ----------------------------------------------------------------
   REDUCED MOTION
   ---------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
    .dash-card,.dash-card--clickable,.dash-card--pagamento,
    .dash-stat-card,.dash-tab,.dash-btn,.dash-btn-group .dash-btn,
    .dash-termo-card,.dash-termo-gauge,.dash-rank-bar__fill,.dash-termo-bar__fill,
    .dash-btn__spin,.dash-tip,.dash-pick,
    .dash-modal,.dash-loading__spin,.dash-tab-content.is-active,
    .dash-skel__hero,.dash-skel__kpis > div,.dash-skel__titulo,.dash-skel__formas > div,
    .dash-skel__toolbar,.dash-skel__linha,.dash-skel__kpis,
    .dash-dia.is-carregando,#conteudo.is-carregando,.dash-rank-area.is-carregando,
    .dash-cli-area.is-carregando,.dash-cli-pan-grid.is-carregando,.dash-passo__rotulo:empty,
    .dash-cli-skel__resumo,.dash-cli-skel__ajuda,.dash-cli-skel__cabeca,.dash-cli-skel__linha,
    .dash-cli-skel__nome,.dash-cli-pan-skel__serie,.dash-cli-serie__linha{
        animation:none !important;
        transition:none !important;
    }
}
