/* ============================================================
   NFS-e Freire — Tema Claro (Portal do Contribuinte)
   Escopo: [data-nfse-app="contrib"] — não afeta painel
   municipal nem superadmin (permanecem em dark mode).
   ============================================================ */

/* ── 1. Tokens de superfície ────────────────────────────────── */
[data-nfse-app="contrib"] {
  --surface-base:         #F1F5F9;           /* fundo da página */
  --surface-raised:       #FFFFFF;           /* painéis, inputs, dropdowns, JS inline */
  --surface-card:         #FFFFFF;           /* cards */
  --surface-card-hover:   #F8FAFC;           /* card hover */
  --surface-overlay:      #FFFFFF;           /* modais e dropdowns */
  --surface-subtle:       #F8FAFC;
  --surface-glass:        rgba(0, 0, 0, 0.025);
  --surface-glass-border: rgba(0, 0, 0, 0.08);

  /* Sombras mais suaves para fundo claro */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.05);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.10), 0 8px 10px -6px rgba(0, 0, 0, 0.06);
}

/* ── 1b. Sidebar em índigo profundo (harmoniza com o tema claro) ── */
[data-nfse-app="contrib"] .sidebar {
  background: #312E81;  /* --color-primary-900 */
  border-right-color: rgba(255, 255, 255, 0.08);
}

/* Linha decorativa da sidebar em índigo mais claro */
[data-nfse-app="contrib"] .sidebar::before {
  background: linear-gradient(180deg, rgba(165, 180, 252, 0.5) 0%, transparent 60%);
  opacity: 0.6;
}

/* Borda inferior do brand */
[data-nfse-app="contrib"] .sidebar-brand {
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* Grupos de nav: borda lateral índigo mais visível */
[data-nfse-app="contrib"] .nav-group-items {
  border-left-color: rgba(165, 180, 252, 0.25);
}

/* Footer da sidebar */
[data-nfse-app="contrib"] .sidebar-footer {
  border-top-color: rgba(255, 255, 255, 0.08);
}

/* ── 2. Body e texto base ────────────────────────────────────── */
[data-nfse-app="contrib"] body {
  background-color: var(--surface-base);
  color: var(--color-neutral-700);
}

[data-nfse-app="contrib"] ::-webkit-scrollbar-track {
  background: var(--color-neutral-100);
}
[data-nfse-app="contrib"] ::-webkit-scrollbar-thumb {
  background: var(--color-neutral-300);
}
[data-nfse-app="contrib"] ::-webkit-scrollbar-thumb:hover {
  background: var(--color-neutral-400);
}

[data-nfse-app="contrib"] a {
  color: var(--color-primary-600);
}
[data-nfse-app="contrib"] a:hover {
  color: var(--color-primary-700);
}

/* Âncoras estilizadas como botões devem manter a cor do próprio botão */
[data-nfse-app="contrib"] a.btn-primary,
[data-nfse-app="contrib"] a.btn-primary:hover,
[data-nfse-app="contrib"] a.btn-primary:visited {
  color: var(--color-neutral-0) !important;
}
[data-nfse-app="contrib"] a.btn-success,
[data-nfse-app="contrib"] a.btn-success:hover,
[data-nfse-app="contrib"] a.btn-success:visited {
  color: var(--color-neutral-0) !important;
}
[data-nfse-app="contrib"] a.btn-danger,
[data-nfse-app="contrib"] a.btn-danger:hover,
[data-nfse-app="contrib"] a.btn-danger:visited {
  color: var(--color-neutral-0) !important;
}

/* ── 3. Header ───────────────────────────────────────────────── */
[data-nfse-app="contrib"] .header {
  background: #FFFFFF;
  border-bottom: 1px solid var(--color-neutral-200);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

[data-nfse-app="contrib"] .header-breadcrumb {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .header-breadcrumb span {
  color: var(--color-neutral-600);
}

[data-nfse-app="contrib"] .header-toggle {
  color: var(--color-neutral-500);
}
[data-nfse-app="contrib"] .header-toggle:hover {
  background: var(--color-neutral-100);
  color: var(--color-neutral-700);
}

[data-nfse-app="contrib"] .header-notification .notif-dot {
  border-color: #FFFFFF;
}

[data-nfse-app="contrib"] .header-search input {
  background: var(--color-neutral-100);
  border-color: var(--color-neutral-200);
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .header-search input::placeholder {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .header-search input:focus {
  background: #FFFFFF;
  border-color: var(--color-primary-400);
  box-shadow: 0 0 0 3px var(--color-primary-100);
}

/* ── 4. Botões ghost e secondary adaptados ao fundo claro ─────── */
[data-nfse-app="contrib"] .btn-ghost {
  color: var(--color-neutral-500);
}
[data-nfse-app="contrib"] .btn-ghost:hover {
  background: var(--color-neutral-100);
  color: var(--color-neutral-700);
}

[data-nfse-app="contrib"] .btn-secondary {
  background: #FFFFFF;
  border-color: var(--color-neutral-300);
  color: var(--color-neutral-600);
}
[data-nfse-app="contrib"] .btn-secondary:hover {
  background: var(--color-neutral-50);
  border-color: var(--color-neutral-400);
  color: var(--color-neutral-700);
}
/* ── 5. Main content ─────────────────────────────────────────── */
[data-nfse-app="contrib"] .main-content {
  background: var(--surface-base);
  color: var(--color-neutral-700);
}

/* Remove o radial-gradient decorativo (invisível em fundo claro) */
[data-nfse-app="contrib"] .main-content::before {
  display: none;
}

/* ── 6. Page header e títulos ────────────────────────────────── */
[data-nfse-app="contrib"] .page-title {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .page-description {
  color: var(--color-neutral-500);
}
[data-nfse-app="contrib"] .text-muted {
  color: var(--color-neutral-400) !important;
}

/* ── 7. Cards ────────────────────────────────────────────────── */
[data-nfse-app="contrib"] .card {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.03);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
[data-nfse-app="contrib"] .card:hover {
  border-color: var(--color-neutral-300);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

[data-nfse-app="contrib"] .card-header {
  border-bottom-color: var(--color-neutral-100);
}
[data-nfse-app="contrib"] .card-title {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .card-body {
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .card-footer {
  border-top-color: var(--color-neutral-100);
}

/* ── 8. Stat cards (KPIs) ────────────────────────────────────── */
[data-nfse-app="contrib"] .stat-card {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
[data-nfse-app="contrib"] .stat-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
[data-nfse-app="contrib"] .stat-value {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .stat-label {
  color: var(--color-neutral-500);
}

/* ── 9. Formulários e inputs ──────────────────────────────────── */
[data-nfse-app="contrib"] .form-label {
  color: var(--color-neutral-600);
}

[data-nfse-app="contrib"] .form-input,
[data-nfse-app="contrib"] .form-select,
[data-nfse-app="contrib"] .form-textarea {
  background: #FFFFFF;
  border-color: var(--color-neutral-300);
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .form-input:hover,
[data-nfse-app="contrib"] .form-select:hover,
[data-nfse-app="contrib"] .form-textarea:hover {
  border-color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .form-input:focus,
[data-nfse-app="contrib"] .form-select:focus,
[data-nfse-app="contrib"] .form-textarea:focus {
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px var(--color-primary-100);
}
[data-nfse-app="contrib"] .form-input::placeholder,
[data-nfse-app="contrib"] .form-textarea::placeholder {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .form-help {
  color: var(--color-neutral-400);
}

/* Select: suprimir seta nativa (Chrome/Edge/IE) + seta SVG no tema claro */
[data-nfse-app="contrib"] .form-select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2364748B' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 6.646a.5.5 0 0 1 .708 0L8 9.293l2.646-2.647a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-3) center;
  padding-right: var(--space-10) !important;
}
[data-nfse-app="contrib"] .form-select::-ms-expand {
  display: none;
}

/* ── 10. Tabelas ──────────────────────────────────────────────── */
[data-nfse-app="contrib"] .table-container {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-xl);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

[data-nfse-app="contrib"] .data-table thead th {
  background: var(--color-neutral-50);
  color: var(--color-neutral-500);
  border-bottom: 1px solid var(--color-neutral-200);
}

[data-nfse-app="contrib"] .data-table tbody td {
  color: var(--color-neutral-700);
  border-bottom-color: var(--color-neutral-100);
}

[data-nfse-app="contrib"] .data-table tbody tr:hover td {
  background: var(--color-neutral-50);
}

[data-nfse-app="contrib"] .data-table .cell-mono {
  color: var(--color-primary-600);
}

/* ── 11. Tabs ────────────────────────────────────────────────── */
[data-nfse-app="contrib"] .tabs {
  border-bottom-color: var(--color-neutral-200);
}
[data-nfse-app="contrib"] .tab {
  color: var(--color-neutral-500);
}
[data-nfse-app="contrib"] .tab:hover {
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .tab.active {
  color: var(--color-primary-600);
  border-bottom-color: var(--color-primary-600);
}

/* ── 11b. Wizard stepper (emissão DPS) ─────────────────────────── */
[data-nfse-app="contrib"] .wizard-stepper {
  background: var(--color-neutral-0);
  border-color: var(--color-neutral-200);
}
[data-nfse-app="contrib"] .wizard-step__marker {
  background: var(--color-neutral-100);
  border-color: var(--color-neutral-200);
  color: var(--color-neutral-500);
}
[data-nfse-app="contrib"] .wizard-step--current .wizard-step__label {
  color: var(--color-primary-600);
}
[data-nfse-app="contrib"] .wizard-step--completed .wizard-step__label {
  color: var(--color-accent-600);
}
[data-nfse-app="contrib"] .wizard-nav {
  background: var(--color-neutral-0);
  border: var(--border-width) solid var(--color-neutral-200);
  border-radius: var(--radius-xl);
}

/* ── 11c. Assistente IA — chat legível no tema claro ─────────── */
[data-nfse-app="contrib"] .ast-chat-area {
  background: var(--color-neutral-0);
  border-color: var(--color-neutral-200);
}
[data-nfse-app="contrib"] .ast-msg-bot {
  background: var(--color-neutral-0);
  border-color: var(--color-neutral-200);
  color: var(--color-neutral-800);
  font-weight: 500;
  box-shadow: var(--shadow-sm);
}
[data-nfse-app="contrib"] .ast-msg-bot strong,
[data-nfse-app="contrib"] .ast-msg-bot h1,
[data-nfse-app="contrib"] .ast-msg-bot h2,
[data-nfse-app="contrib"] .ast-msg-bot h3,
[data-nfse-app="contrib"] .ast-msg-bot h4 {
  color: var(--color-neutral-950);
}
[data-nfse-app="contrib"] .ast-msg-user {
  background: var(--color-primary-50);
  border-color: var(--color-primary-200);
  color: var(--color-neutral-900);
}
[data-nfse-app="contrib"] .ast-thinking {
  color: var(--color-neutral-600);
  background: var(--color-neutral-50);
  border-color: var(--color-neutral-200);
}

/* ── 12. Section title ───────────────────────────────────────── */
[data-nfse-app="contrib"] .section-title {
  color: var(--color-neutral-700);
  border-bottom-color: var(--color-neutral-200);
}

/* ── 13. Modais ──────────────────────────────────────────────── */
[data-nfse-app="contrib"] .modal-overlay {
  background: rgba(15, 23, 42, 0.35);
}
[data-nfse-app="contrib"] .modal {
  background: #FFFFFF;
  border-color: var(--color-neutral-200);
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .modal-title {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .modal-header {
  border-bottom-color: var(--color-neutral-200);
}
[data-nfse-app="contrib"] .modal-footer {
  border-top-color: var(--color-neutral-200);
}
[data-nfse-app="contrib"] .modal-close {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .modal-close:hover {
  background: var(--color-neutral-100);
  color: var(--color-neutral-600);
}
[data-nfse-app="contrib"] .modal-body {
  color: var(--color-neutral-700);
}

/* ── 14. Busca global (dropdown do header) ───────────────────── */
[data-nfse-app="contrib"] .menu-search-dropdown {
  background: #FFFFFF;
  border-color: var(--color-neutral-200);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10);
}
[data-nfse-app="contrib"] .menu-search-item:hover,
[data-nfse-app="contrib"] .menu-search-item.active {
  background: var(--color-neutral-50);
}
[data-nfse-app="contrib"] .menu-search-title {
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .menu-search-title mark {
  background: var(--color-primary-100);
  color: var(--color-primary-700);
}
[data-nfse-app="contrib"] .menu-search-desc {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .menu-search-group {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .menu-search-empty {
  color: var(--color-neutral-400);
}

/* ── 15. Skeleton ────────────────────────────────────────────── */
[data-nfse-app="contrib"] .skeleton {
  background: linear-gradient(
    90deg,
    var(--color-neutral-200) 25%,
    var(--color-neutral-100) 50%,
    var(--color-neutral-200) 75%
  );
  background-size: 200% 100%;
}

/* ── 16. Empty state ─────────────────────────────────────────── */
[data-nfse-app="contrib"] .empty-state {
  color: var(--color-neutral-400);
}

/* ── 17. Telas de login / primeiro acesso ────────────────────── */
[data-nfse-app="contrib"] .main-content:has(.auth-shell) {
  padding: 0;
  overflow: auto;
  display: flex;
}

[data-nfse-app="contrib"] .auth-shell {
  flex: 1;
  display: flex;
  min-height: 100vh;
  width: 100%;
  background: #f4f6fb;
  align-items: center;
  justify-content: center;
  padding: 2rem 1rem;
  box-sizing: border-box;
}

/* Painel hero oculto em todos os tamanhos */
[data-nfse-app="contrib"] .auth-hero {
  display: none !important;
}

[data-nfse-app="contrib"] .auth-panel {
  width: 100%;
  max-width: 480px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0;
  background: transparent;
  border-left: none;
  box-shadow: none;
  min-height: unset;
}

[data-nfse-app="contrib"] .auth-login-outer,
[data-nfse-app="contrib"] .login-portal-outer {
  background-color: transparent;
  align-items: center;
  justify-content: center;
  padding: 0;
}

[data-nfse-app="contrib"] .auth-login-card,
[data-nfse-app="contrib"] .login-portal-card {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-2xl);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.07);
  padding: var(--space-8);
  max-width: 480px;
  width: 100%;
  margin: 0 auto;
}

[data-nfse-app="contrib"] .auth-login-brand {
  text-align: center;
  margin-bottom: 1.75rem;
}

[data-nfse-app="contrib"] .auth-logo-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--color-primary-600), #7c3aed);
  color: #fff;
  display: grid;
  place-items: center;
  font-weight: 700;
  font-size: 1rem;
  margin: 0 auto 1rem;
  box-shadow: 0 4px 16px rgba(99, 102, 241, 0.18);
  overflow: hidden;
}

[data-nfse-app="contrib"] .auth-login-brand h1 {
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--color-neutral-900);
  margin-bottom: 0.25rem;
  line-height: 1.2;
}

[data-nfse-app="contrib"] .auth-login-brand p {
  color: var(--color-neutral-500);
  font-size: 0.95rem;
}

[data-nfse-app="contrib"] .auth-tab-switcher {
  display: flex;
  gap: 0;
  background: var(--color-neutral-100);
  border-radius: var(--radius-full);
  padding: 4px;
  margin-bottom: var(--space-5);
}

[data-nfse-app="contrib"] .auth-tab-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 10px 12px;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-full);
  background: transparent;
  transition: background 0.2s, box-shadow 0.2s;
}

[data-nfse-app="contrib"] .auth-tab-btn-title {
  font-size: var(--text-md);
  font-weight: 800;
  letter-spacing: 0.05em;
  color: var(--color-neutral-400);
}

[data-nfse-app="contrib"] .auth-tab-btn-sub {
  font-size: 0.68rem;
  color: var(--color-neutral-500);
  font-weight: 400;
}

[data-nfse-app="contrib"] .auth-tab-btn.is-active {
  background: linear-gradient(135deg, var(--color-primary-600), var(--color-primary-500));
  box-shadow: var(--shadow-md);
}

[data-nfse-app="contrib"] .auth-tab-btn.is-active .auth-tab-btn-title {
  color: #fff;
}

[data-nfse-app="contrib"] .auth-tab-btn.is-active .auth-tab-btn-sub {
  color: rgba(255, 255, 255, 0.75);
}

[data-nfse-app="contrib"] .auth-login-field--full {
  grid-column: 1 / -1;
}

[data-nfse-app="contrib"] .auth-input-toggle-wrap {
  position: relative;
}

[data-nfse-app="contrib"] .auth-input-toggle-wrap .form-input {
  padding-right: 40px;
}

[data-nfse-app="contrib"] .auth-input-toggle {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--color-neutral-500);
  cursor: pointer;
  font-size: 16px;
  padding: 4px;
}

[data-nfse-app="contrib"] .auth-link {
  font-size: 0.8rem;
  color: var(--color-primary-600);
  text-decoration: none;
  font-weight: 500;
}

[data-nfse-app="contrib"] .auth-link:hover {
  text-decoration: underline;
}

[data-nfse-app="contrib"] .auth-divider {
  display: flex;
  align-items: center;
  gap: 1rem;
  color: var(--color-neutral-500);
  font-size: 0.75rem;
  margin: 0.75rem 0;
  text-transform: lowercase;
}

[data-nfse-app="contrib"] .auth-divider::before,
[data-nfse-app="contrib"] .auth-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--color-neutral-200);
}

[data-nfse-app="contrib"] .auth-govbr-box {
  background: rgba(0, 86, 180, 0.06);
  border: 1px solid rgba(0, 86, 180, 0.25);
  border-radius: var(--radius-md);
  padding: 10px;
  margin-bottom: 0.5rem;
}

[data-nfse-app="contrib"] .btn-govbr {
  background: linear-gradient(135deg, #0056b4, #004494) !important;
  font-weight: 600;
  padding: 10px 14px;
  font-size: 0.9rem;
  border: none;
  color: #fff;
}

[data-nfse-app="contrib"] .auth-govbr-hint {
  margin: 8px 0 0;
  font-size: 0.72rem;
  color: var(--color-neutral-500);
  line-height: 1.35;
  text-align: center;
}

[data-nfse-app="contrib"] .auth-govbr-hint code {
  font-size: 0.65rem;
}

[data-nfse-app="contrib"] .auth-btn-cert {
  font-weight: 600;
  margin-bottom: 8px;
  font-size: 0.85rem;
  padding: 10px 14px;
}

[data-nfse-app="contrib"] .auth-login-cert-panel {
  background: rgba(16, 185, 129, 0.06);
  border: 1px solid rgba(16, 185, 129, 0.2);
  margin-top: 0.5rem;
}

[data-nfse-app="contrib"] .auth-label-strong {
  font-weight: 600;
  color: var(--color-neutral-600);
}

[data-nfse-app="contrib"] .auth-help-text {
  font-size: 0.72rem;
  margin: 6px 0 0;
  color: var(--color-neutral-500);
  line-height: 1.35;
}

[data-nfse-app="contrib"] .auth-help-text code {
  font-size: 0.68rem;
}

[data-nfse-app="contrib"] .auth-file-input {
  padding: 6px 8px;
  font-size: 0.8rem;
  height: auto;
}

[data-nfse-app="contrib"] .auth-footer-link {
  text-align: center;
  margin-top: 1rem;
  margin-bottom: 0;
  font-size: 0.8rem;
}

[data-nfse-app="contrib"] .auth-footer-link a {
  color: var(--color-primary-600);
  text-decoration: none;
  font-weight: 500;
}

[data-nfse-app="contrib"] .auth-footer-link a:hover {
  text-decoration: underline;
}

[data-nfse-app="contrib"] .auth-loading {
  text-align: center;
  color: var(--color-neutral-500);
  font-size: 0.82rem;
  padding: var(--space-6) 0;
}

[data-nfse-app="contrib"] .auth-error-msg {
  text-align: center;
  color: var(--color-danger-600);
  font-size: 0.82rem;
  padding: var(--space-4) 0;
}

[data-nfse-app="contrib"] .auth-form-group {
  margin-bottom: 12px;
}

[data-nfse-app="contrib"] .auth-label-sm {
  font-size: 0.72rem;
}

[data-nfse-app="contrib"] .auth-required {
  color: var(--color-danger-500);
}

[data-nfse-app="contrib"] .auth-readonly-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: 4px;
}

[data-nfse-app="contrib"] .auth-input-readonly {
  background: var(--color-neutral-50) !important;
  cursor: not-allowed;
  opacity: 0.85;
  font-size: 0.85rem;
}

[data-nfse-app="contrib"] .auth-badge-nowrap {
  white-space: nowrap;
}

[data-nfse-app="contrib"] .auth-pa-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

[data-nfse-app="contrib"] .auth-pa-option {
  padding: 10px;
  text-align: left;
  display: flex;
  align-items: center;
  gap: 8px;
}

[data-nfse-app="contrib"] .auth-pa-option-icon {
  font-size: 1.1rem;
}

[data-nfse-app="contrib"] .auth-pa-option-title {
  display: block;
  font-size: 0.85rem;
}

[data-nfse-app="contrib"] .auth-pa-option-desc {
  display: block;
  font-size: 0.72rem;
  opacity: 0.85;
}

[data-nfse-app="contrib"] .auth-pa-option--externo {
  background: linear-gradient(135deg, var(--color-accent-600, #059669), var(--color-accent-500, #10B981));
  color: #fff;
  font-weight: 600;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
}

/* ── 18. Hint System (tooltips, popovers, banners, inline) ──── */
[data-nfse-app="contrib"] .hint-tooltip {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  color: var(--color-neutral-700);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.10);
}
[data-nfse-app="contrib"] .hint-tooltip::after {
  border-top-color: #FFFFFF;
}

[data-nfse-app="contrib"] .hint-popover {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  color: var(--color-neutral-700);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10);
}
[data-nfse-app="contrib"] .hint-popover.hint-critical {
  background: var(--color-warning-50);
  border-color: var(--color-warning-400);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-title {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-body {
  color: var(--color-neutral-600);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-example {
  background: var(--color-neutral-50);
  border: 1px solid var(--color-neutral-200);
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-close {
  color: var(--color-neutral-400);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-close:hover {
  background: var(--color-neutral-100);
  color: var(--color-neutral-600);
}
[data-nfse-app="contrib"] .hint-popover .hint-popover-link {
  color: var(--color-primary-600);
}

[data-nfse-app="contrib"] .hint-btn-tooltip {
  background: #FFFFFF;
  border: 1px solid var(--color-neutral-200);
  color: var(--color-neutral-700);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.10);
}
[data-nfse-app="contrib"] .hint-btn-tooltip::after {
  border-top-color: #FFFFFF;
}

[data-nfse-app="contrib"] .hint-inline code {
  background: var(--color-neutral-100);
  color: var(--color-neutral-700);
  border: 1px solid var(--color-neutral-200);
}

[data-nfse-app="contrib"] .hint-banner {
  background: var(--color-neutral-50);
  border: 1px solid var(--color-neutral-200);
  color: var(--color-neutral-700);
}
[data-nfse-app="contrib"] .hint-banner.hint-banner-warn {
  background: var(--color-warning-50);
  border-color: var(--color-warning-400);
}
[data-nfse-app="contrib"] .hint-banner.hint-banner-danger {
  background: var(--color-danger-50);
  border-color: var(--color-danger-400);
}
[data-nfse-app="contrib"] .hint-banner.hint-banner-success {
  background: var(--color-accent-50);
  border-color: var(--color-accent-500);
}
[data-nfse-app="contrib"] .hint-banner-collapse-btn:hover {
  color: var(--color-neutral-700);
}

/* ── 19. Elementos JS inline com surface-raised residual ─────── */

/* Dropdown "Trocar empresa" gerado em app.js */
[data-nfse-app="contrib"] #_dropdown_trocar_empresa {
  background: #FFFFFF !important;
  border: 1px solid var(--color-neutral-200) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10) !important;
  color: var(--color-neutral-700) !important;
}
[data-nfse-app="contrib"] #_dropdown_trocar_empresa [data-empresa-cnpj]:hover,
[data-nfse-app="contrib"] #_dropdown_trocar_empresa li:hover {
  background: var(--color-neutral-50) !important;
}

/* Tabelas de detalhe com fundo inline (guias, procurações, etc.) */
[data-nfse-app="contrib"] tr[style*="surface-raised"],
[data-nfse-app="contrib"] div[style*="surface-raised"],
[data-nfse-app="contrib"] section[style*="surface-raised"] {
  background: var(--color-neutral-50) !important;
}

/* Linhas zebradas / painéis inline que usam rgba(255,255,255,0.03) */
[data-nfse-app="contrib"] [style*="rgba(255, 255, 255, 0.03)"],
[data-nfse-app="contrib"] [style*="rgba(255,255,255,0.03)"],
[data-nfse-app="contrib"] [style*="rgba(255, 255, 255, 0.04)"],
[data-nfse-app="contrib"] [style*="rgba(255,255,255,0.04)"] {
  background: var(--color-neutral-50) !important;
}

/* ── Texto claro do dark-mode (neutral-100/200/300) invisível no fundo claro ─ */
/* Variáveis pensadas para tema escuro; no portal claro viram cinza legível. */
[data-nfse-app="contrib"] [style*="color-neutral-100"],
[data-nfse-app="contrib"] [style*="color-neutral-200"],
[data-nfse-app="contrib"] [style*="color-neutral-300"] {
  color: var(--color-neutral-700) !important;
}

/* Títulos/destaques com warning-400 (#FBBF24) sobre fundo claro */
[data-nfse-app="contrib"] [style*="color-warning-400"] {
  color: var(--color-warning-700) !important;
}

[data-nfse-app="contrib"] [style*="color-primary-400"]:not(.btn):not(.nav-item):not(.tab):not(.badge) {
  color: var(--color-primary-700) !important;
}

[data-nfse-app="contrib"] [style*="color-accent-400"]:not(.btn):not(.badge) {
  color: var(--color-accent-700) !important;
}

/* Badges com texto claro demais */
[data-nfse-app="contrib"] .badge-warning {
  color: var(--color-warning-800) !important;
  background: rgba(245, 158, 11, 0.14) !important;
  border-color: rgba(245, 158, 11, 0.28) !important;
}
[data-nfse-app="contrib"] .badge-primary {
  color: var(--color-primary-800) !important;
}
[data-nfse-app="contrib"] .badge-success {
  color: var(--color-accent-800) !important;
}

/* ── Dropdown do header — texto legível no fundo branco ─ */
[data-nfse-app="contrib"] .header-user-dropdown-item {
  color: var(--color-neutral-700) !important;
}
[data-nfse-app="contrib"] .header-user-dropdown-item--danger {
  color: var(--color-danger-600) !important;
}

/* ── Hint system — warning-400 (#FBBF24) invisível em fundo claro ─ */
[data-nfse-app="contrib"] .hint-char-count.near-limit {
  color: var(--color-warning-700) !important;
}
[data-nfse-app="contrib"] .hint-critical-badge {
  color: var(--color-warning-700) !important;
}

/* ── neutral-400 como texto — contraste ~2.9:1 falha WCAG AA ─ */
[data-nfse-app="contrib"] [style*="color-neutral-400"] {
  color: var(--color-neutral-600) !important;
}

/* Callouts — garantia no tema claro */
[data-nfse-app="contrib"] .callout,
[data-nfse-app="contrib"] .callout p {
  color: var(--color-neutral-800);
}
[data-nfse-app="contrib"] .callout-warn .callout-title,
[data-nfse-app="contrib"] .callout-warn > strong:first-child {
  color: var(--color-warning-800);
}
[data-nfse-app="contrib"] .callout a {
  color: var(--color-primary-700);
  text-decoration: underline;
}

/* Hints T5 / T3 / popover (cores herdadas do dark mode) */
[data-nfse-app="contrib"] .hint-banner,
[data-nfse-app="contrib"] .hint-banner .hint-banner-body,
[data-nfse-app="contrib"] .hint-inline,
[data-nfse-app="contrib"] .hint-popover,
[data-nfse-app="contrib"] .hint-tooltip {
  color: var(--color-neutral-700) !important;
}
[data-nfse-app="contrib"] .hint-banner .hint-banner-title {
  color: var(--color-neutral-900) !important;
}
[data-nfse-app="contrib"] .hint-banner-warn {
  background: rgba(245, 158, 11, 0.08) !important;
}
[data-nfse-app="contrib"] .hint-banner-warn .hint-banner-title {
  color: var(--color-warning-800) !important;
}
[data-nfse-app="contrib"] .hint-valid {
  color: var(--color-accent-800) !important;
}
[data-nfse-app="contrib"] .hint-error {
  color: var(--color-danger-700) !important;
}
[data-nfse-app="contrib"] .hint-warning {
  color: var(--color-warning-800) !important;
}
[data-nfse-app="contrib"] .hint-info {
  color: var(--color-primary-800) !important;
}

/* ── Toasts — tema claro ─────────────────────────────────────────────────── */
/* No dark mode os toasts usam backgrounds rgba de 15% (glass) com texto em
   tons claros (*-300). No tema claro ficam quase invisíveis — substituímos
   por backgrounds sólidos com texto escuro de alto contraste.              */

[data-nfse-app="contrib"] .toast {
  backdrop-filter: none;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
[data-nfse-app="contrib"] .toast-success {
  background: #dcfce7;
  border-color: #16a34a;
  color: #14532d;
}
[data-nfse-app="contrib"] .toast-error {
  background: #fee2e2;
  border-color: #dc2626;
  color: #7f1d1d;
}
[data-nfse-app="contrib"] .toast-warning {
  background: #fef9c3;
  border-color: #ca8a04;
  color: #713f12;
}
[data-nfse-app="contrib"] .toast-info {
  background: #ede9fe;
  border-color: #7c3aed;
  color: #3b0764;
}

/* ── Painéis informativos inline com rgba projetados para dark mode ──────── */
/* As cores rgba(147,197,253), rgba(252,165,165), rgba(50,188,173) e similares
   são quase invisíveis no tema claro — substituímos por variantes escuras. */

/* Painel azul / índigo (banco, instrução de pagamento, outorgante) */
[data-nfse-app="contrib"] #dam-banco-info,
[data-nfse-app="contrib"] #pix-banco-info,
[data-nfse-app="contrib"] #proc-banner-outorgante,
[data-nfse-app="contrib"] #prest-readonly-banner,
[data-nfse-app="contrib"] .panel-info-blue {
  color: #1e40af !important;
  background: rgba(99, 102, 241, 0.06) !important;
  border-color: rgba(99, 102, 241, 0.22) !important;
}

[data-nfse-app="contrib"] #proc-banner-outorgado {
  color: #5b21b6 !important;
  background: rgba(99, 102, 241, 0.06) !important;
  border-color: rgba(99, 102, 241, 0.22) !important;
}

/* Painel vermelho / encargos */
[data-nfse-app="contrib"] #dam-encargos-atraso {
  color: #b91c1c !important;
  background: rgba(239, 68, 68, 0.06) !important;
  border-color: rgba(239, 68, 68, 0.22) !important;
}

/* Painel teal / verde-água (PIX info, confirmações) */
[data-nfse-app="contrib"] .panel-info-teal {
  color: #0f766e !important;
  background: rgba(20, 184, 166, 0.06) !important;
  border-color: rgba(20, 184, 166, 0.22) !important;
}

/* Painel âmbar / aviso (PIX sem config, retenções, autos) */
[data-nfse-app="contrib"] #pix-sem-config,
[data-nfse-app="contrib"] .panel-info-amber {
  color: #92400e !important;
  background: rgba(245, 158, 11, 0.06) !important;
  border-color: rgba(245, 158, 11, 0.22) !important;
}

/* Banners de feedback (sync ADN, avisos dinâmicos) */
[data-nfse-app="contrib"] .status-banner-info {
  color: #1e40af !important;
  background: rgba(99, 102, 241, 0.06) !important;
  border-color: rgba(99, 102, 241, 0.22) !important;
}
[data-nfse-app="contrib"] .status-banner-success {
  color: #047857 !important;
  background: rgba(16, 185, 129, 0.06) !important;
  border-color: rgba(16, 185, 129, 0.22) !important;
}
[data-nfse-app="contrib"] .status-banner-error {
  color: #b91c1c !important;
  background: rgba(239, 68, 68, 0.06) !important;
  border-color: rgba(239, 68, 68, 0.22) !important;
}

[data-nfse-app="contrib"] #adn-api-tip,
[data-nfse-app="contrib"] #adn-page-hint {
  color: var(--color-neutral-700) !important;
  opacity: 1 !important;
}

/* Tokens claros do dark mode em style inline (primary-200, success-300, etc.) */
[data-nfse-app="contrib"] [style*="color-primary-200"],
[data-nfse-app="contrib"] [style*="color-success-300"],
[data-nfse-app="contrib"] [style*="color-danger-300"] {
  color: var(--color-neutral-800) !important;
}

/* Texto azul/roxo claro em fundos tintados (projetado para dark mode) */
[data-nfse-app="contrib"] [style*="rgba(147,197,253"],
[data-nfse-app="contrib"] [style*="rgba(147, 197, 253"] {
  color: #1e40af !important;
}
[data-nfse-app="contrib"] [style*="rgba(167,139,250"],
[data-nfse-app="contrib"] [style*="rgba(167, 139, 250"] {
  color: #5b21b6 !important;
}

/* Painéis índigo com neutral-300 no corpo (CNC sync status no contrib, se houver) */
[data-nfse-app="contrib"] #cnc-sync-status,
[data-nfse-app="contrib"] #cnc-rfb-lote-status {
  color: var(--color-neutral-700) !important;
  background: rgba(99, 102, 241, 0.06) !important;
  border-color: rgba(99, 102, 241, 0.18) !important;
}

/* Texto geral no conteúdo — garante que herança de color-neutral-200 (claro) não vaze */
[data-nfse-app="contrib"] .main-content p,
[data-nfse-app="contrib"] .main-content span:not(.badge):not(.status-dot),
[data-nfse-app="contrib"] .main-content li,
[data-nfse-app="contrib"] .main-content label,
[data-nfse-app="contrib"] .main-content td,
[data-nfse-app="contrib"] .main-content th,
[data-nfse-app="contrib"] .main-content h1,
[data-nfse-app="contrib"] .main-content h2,
[data-nfse-app="contrib"] .main-content h3,
[data-nfse-app="contrib"] .main-content h4 {
  color: inherit;
}

/* ── Mobile (portal contribuinte) ─────────────────────────────── */
@media (max-width: 768px) {
  [data-nfse-app="contrib"] .tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }

  [data-nfse-app="contrib"] .page-actions {
    flex-wrap: wrap;
  }

  [data-nfse-app="contrib"] .modal-footer {
    flex-direction: column-reverse;
    align-items: stretch;
  }

  [data-nfse-app="contrib"] .form-row > * {
    min-width: 0;
  }
}
