/* Cores da interface em tela. Nenhum filtro é aplicado sobre logos, mapas,
   diagramas, imagens ou canvas; os arquivos gerados mantêm sua apresentação. */
:root {
  --ui-bg:#f5f6fa;--ui-surface:#ffffff;--ui-soft:#eef0f8;
  --ui-text:#20263d;--ui-muted:#626d83;--ui-border:#dfe4ee;
  --ui-link:#2f3a7a;--ui-focus:#b95b19;--ui-action:#2f3a7a;
}
@media screen {
  :root[data-impulso-theme="dark"] {
    color-scheme:dark;
    --ui-bg:#131c2b;--ui-surface:#1d293d;--ui-soft:#27344b;
    --ui-text:#edf1f9;--ui-muted:#b5bfd2;--ui-border:#3b4961;
    --ui-link:#b9c7ff;--ui-focus:#f5ad73;
    --brand-primary-soft:#28334d;--brand-secondary-soft:#2b3650;
    --brand-accent-soft:#3d302a;--brand-highlight-soft:#393b22;
  }
  :root[data-impulso-theme] {
    --bg:var(--ui-bg);--card:var(--ui-surface);--ink:var(--ui-text);
    --muted:var(--ui-muted);--line:var(--ui-border);
    --crm-ink:var(--ui-text);--crm-muted:var(--ui-muted);
    --crm-line:var(--ui-border);--crm-soft:var(--ui-soft);
    --crm-orange-dark:var(--ui-link);
    --ex-bg:var(--ui-bg);--ex-card:var(--ui-surface);--ex-ink:var(--ui-text);
    --ex-muted:var(--ui-muted);--ex-muted-2:var(--ui-muted);
    --ex-line:var(--ui-border);--ex-line-2:var(--ui-border);
  }
  html[data-impulso-theme] body { background:var(--ui-bg);color:var(--ui-text); }
  html[data-impulso-theme] :is(.panel-area,.crm-panel,.tool-page,.files-page,.project-panel) { background:var(--ui-bg);color:var(--ui-text); }
  html[data-impulso-theme] :is(.topbar,.crm-surface,.surface,.card,.bloco,.crm-metrics article,.crm-admin-card,.crm-business-toolbar,.crm-view-sidebar,.crm-table-shell,.crm-detail-dialog,.crm-detail-sidebar,.crm-detail-main,.crm-detail-footer,.crm-dialog,.crm-dialog-head,.crm-dialog-body,.crm-dialog-footer,.crm-modal-content,.guest-dialog,.guest-dialog-head,.guest-dialog-body,.guest-dialog-footer,.guest-metrics article,.project-config,.project-workspace,.project-runtime,.generator-footer,.metric,.operation-card,.completion-card,.files-sidebar,.file-list,.upload-zone,.tool-dialog,.dialog-card,.calc-dialog,.calc-modal,.snapshot-dialog,.sz-dialog,.sz-kpis article,.telhado-topbar,.telhado-properties,.activity-drawer,.global-search-results,.route-loading-card) { background:var(--ui-surface);border-color:var(--ui-border);color:var(--ui-text); }
  html[data-impulso-theme] :is(.crm-page-head,.crm-surface,.crm-admin-card,.crm-dialog,.guest-dialog,.tool-head,.surface,.project-config,.activity-drawer) :is(h1,h2,h3,h4) { color:var(--ui-text); }
  html[data-impulso-theme] :is(.crm-surface>header,.crm-task-item,.crm-admin-row,.crm-import-row,.crm-document-row,.crm-detail-header,.crm-detail-footer,.tool-head,.files-toolbar,.file-row,.guest-section) { border-color:var(--ui-border); }
  html[data-impulso-theme] :is(.crm-btn.secondary,.crm-btn.ghost,.button.secondary,.secondary,.btn.sec,.crm-icon-btn,.crm-toolbar-btn,.tool-back,.tool-logout,.crm-view-button,.crm-view-item,.crm-add-view,.crm-search,.crm-search input,.crm-task-check) { background:var(--ui-surface);border-color:var(--ui-border);color:var(--ui-text); }
  html[data-impulso-theme] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea) { background-color:var(--ui-surface);border-color:var(--ui-border);color:var(--ui-text); }
  html[data-impulso-theme] :is(input,textarea)::placeholder { color:var(--ui-muted);opacity:.85; }
  html[data-impulso-theme] :is(.crm-table,.crm-deals-table,.crm-client-table,.guest-table,.files-table,.sz-table) { background:var(--ui-surface);color:var(--ui-text); }
  html[data-impulso-theme] :is(.crm-table,.crm-deals-table,.crm-client-table,.guest-table,.files-table,.sz-table) :is(th,td) { border-color:var(--ui-border); }
  html[data-impulso-theme] :is(.crm-table,.crm-deals-table,.crm-client-table,.guest-table,.files-table,.sz-table) th { background:var(--ui-soft);color:var(--ui-muted); }
  html[data-impulso-theme] :is(.crm-table,.crm-deals-table,.crm-client-table,.guest-table,.files-table,.sz-table) tbody tr { background:var(--ui-surface); }
  html[data-impulso-theme] :is(.crm-table,.crm-deals-table,.crm-client-table,.guest-table,.files-table,.sz-table) tbody tr:hover { background:var(--ui-soft); }
  html[data-impulso-theme] :is(.crm-table a,.crm-document-row a,.crm-admin-row button,.global-search-results a) { color:var(--ui-link); }
  html[data-impulso-theme] :is(.crm-stage-summary-row .track,.crm-chart-row .track,.crm-count-pill,.crm-task-item time,.crm-report-summary div,.spec,.crm-section-tabs,.crm-detail-tabs,.crm-funnel-column,.analytics-filter-panel,.sz-filter-panel,.sz-filter-chips) { background:var(--ui-soft);color:var(--ui-muted);border-color:var(--ui-border); }
  html[data-impulso-theme] :is(.crm-funnel-card,.crm-view-sidebar header,.crm-detail-tab,.calc-list-item,.calc-form-grid,.generation-month,.generation-kpis article,.offgrid-kpis article,.lookup-result,.analysis-table-toolbar,.guest-permission-card) { background-color:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-border); }
  html[data-impulso-theme] :is(.crm-funnel-card small,.crm-task-item small,.crm-admin-card p,.crm-page-head p,.crm-surface header p,.guest-dialog p,.tool-head p,.section-title p,.lbl,.hint,.mini) { color:var(--ui-muted); }

  /* Os módulos com paleta própria mantêm seus acentos e preferências locais.
     Apenas neutros mudam no tema escuro. */
  html[data-impulso-theme="dark"] :is(.dm-panel,.dm-dialog,.dm-page) {
    --dm-bg:var(--ui-bg);--dm-card:var(--ui-surface);--dm-soft:var(--ui-soft);
    --dm-line:var(--ui-border);--dm-text:var(--ui-text);--dm-muted:var(--ui-muted);
    --dm-blue:#a8c9ff;--dm-blue-soft:#253d5a;
  }
  html[data-impulso-theme] body[data-dashboard-layout="workbench"] {
    --aw-page:var(--ui-bg);--aw-surface:var(--ui-surface);--aw-line:var(--ui-border);
    --aw-text:var(--ui-text);--aw-muted:var(--ui-muted);
    --sz-line:var(--ui-border);--sz-soft:var(--ui-soft);--sz-muted:var(--ui-muted);
  }
  html[data-impulso-theme="dark"] body[data-dashboard-layout="workbench"].has-dashboard-wallpaper::after { background:rgba(19,28,43,.8); }
  html[data-impulso-theme="dark"] body { --navy:var(--ui-text);--sz-navy:var(--ui-text);--sz-line:var(--ui-border);--sz-muted:var(--ui-muted);--sz-soft:var(--ui-soft); }
  html[data-impulso-theme="dark"] :is(.ac-panel,.ac-dialog,.ac-page) {
    --ac-bg:var(--ui-bg);--ac-card:var(--ui-surface);--ac-soft:var(--ui-soft);
    --ac-line:var(--ui-border);--ac-text:var(--ui-text);--ac-muted:var(--ui-muted);
    --ac-accent-soft:#3d302a;--ac-ok:#83d4ad;--ac-ok-soft:#1f3c34;--ac-ok-line:#3b6555;
    --ac-warn:#f2d07c;--ac-warn-soft:#403721;--ac-warn-line:#6f5c32;
    --ac-bad:#ffaaa4;--ac-bad-soft:#442b32;--ac-bad-line:#74434c;
    --ac-funnel-a:#2d4580;--ac-funnel-b:#4460a6;
  }
  html[data-impulso-theme="dark"] :is(.dm-dialog,.ac-dialog) { background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.tool-page,.files-page,.crm-panel,.crm-dialog,.guest-dialog,.sz-dialog,.telhado-topbar,.activity-drawer) :is(label,legend) { color:var(--ui-muted); }
  html[data-impulso-theme="dark"] :is(.tool-page,.files-page,.crm-panel) :is(.status,.empty,.muted,.crm-empty,.crm-kicker,.files-eyebrow) { color:var(--ui-muted); }
  html[data-impulso-theme="dark"] :is(.surface,.crm-surface,.crm-dialog,.guest-dialog,.calc-dialog,.sz-dialog) :is(table,tbody,td) { background-color:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.surface,.crm-surface,.crm-dialog,.guest-dialog,.calc-dialog,.sz-dialog) th { background:var(--ui-soft);color:var(--ui-muted);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.crm-table tr.selected,.crm-table tr.is-selected,.crm-view-item.active,.crm-view-item:hover,.crm-filter-chip,.analysis-filter-chip,.sz-tabs button[aria-selected=true]) { background:#354467;color:#edf1f9; }
  html[data-impulso-theme="dark"] :is(.drop,.drop-zone,.upload-drop,.files-drop,.project-dropzone,.crm-document-compose,.crm-task-compose,.calc-preview,.calc-reference,.generation-table-wrap,.analysis-filter-panel) { background:var(--ui-soft);color:var(--ui-text);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.crm-btn.danger,.crm-task-item.late time,.crm-import-status.failed) { background:#442b32;color:#ffb0a9;border-color:#70434b; }
  html[data-impulso-theme="dark"] :is(.crm-import-status.completed,.generation-month.best) { background:#1f3c34;color:#99dfba;border-color:#3b6555; }
  html[data-impulso-theme="dark"] .generation-month.worst { background:#442b32;color:#ffb0a9;border-color:#70434b; }
  html[data-impulso-theme="dark"] :is(.tool-profile-link,.tool-back,.tool-logout,.tool-shell-actions button,.analysis-filter-toggle,.calc-mode,.calc-ref,.telhado-contrair) { color:var(--ui-text);background-color:var(--ui-surface);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.analysis-kpis article,.analytics-kpis article,.analytics-chart-card,.analytics-table-card,.sz-summary-card,.sz-status-card,.sz-overview-summary,.sz-system-card,.sz-kpi-alert,.sz-kpi-offline,.files-workspace,.files-panel,.operation-picker,.operation-workspace) { color:var(--ui-text);background-color:var(--ui-surface);border-color:var(--ui-border); }
  html[data-impulso-theme="dark"] :is(.analysis-kpis,.analytics-kpis,.sz-kpis,.files-page) :is(strong,h2,h3) { color:var(--ui-text); }
  html[data-impulso-theme="dark"] :is(.analysis-kpis,.analytics-kpis,.sz-kpis,.files-page) small { color:var(--ui-muted); }
  /* Gráficos e prévias técnicas conservam as cores que comunicam os dados.
     Uma superfície clara explícita evita tornar ilegíveis rótulos de canvas. */
  html[data-impulso-theme="dark"] :is(.chart-box,.chart-wrap,.analysis-chart,.solar-chart,.generation-chart,.offgrid-chart,.pdf-preview,.pro-preview,.diagram-preview) { background:#fff;color:#20263d;border-radius:8px; }
  html[data-impulso-theme="dark"] :is(.chart-box,.chart-wrap,.analysis-chart,.solar-chart,.generation-chart,.offgrid-chart,.pdf-preview,.pro-preview,.diagram-preview) :is(input,select,textarea) { background:#fff;color:#20263d;border-color:#dce2ec; }
  html[data-impulso-theme] [hidden] { display:none!important; }
}

/* Troca entre páginas: um esmaecimento curto e nativo do navegador (View
   Transitions), no lugar do corte seco com tela branca. A lateral é a mesma
   nas duas páginas, então fica parada durante a troca. Navegadores sem
   suporte apenas trocam de página como antes. */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
}
::view-transition-old(root),
::view-transition-new(root) { animation-duration: .18s; animation-timing-function: ease; }
@media screen {
  #sidebar.workspace-sidebar { view-transition-name: ui-lateral; }
}
::view-transition-group(ui-lateral) { animation-duration: 0s; }
::view-transition-old(ui-lateral) { display: none; }
::view-transition-new(ui-lateral) { animation: none; }

/* Enquanto appearance.js aplica o estado salvo da lateral, nada anima: a
   lateral já nasce recolhida em vez de encolher na frente do usuário. */
html.ui-preload *,
html.ui-preload *::before,
html.ui-preload *::after { transition: none !important; }
