/*
 * OWDEX Finance — identidade visual R1 (2026-08-27)
 * Camada deliberadamente pequena: preserva o layout atual e troca apenas
 * identidade, acentos e estados primários. Cores de erro/alerta/sucesso
 * continuam semânticas e independentes da marca.
 */
:root {
  --owdex-finance-green: #007a47;
  --owdex-finance-green-strong: #006b3f;
  --owdex-finance-green-mid: #008a50;
  --owdex-finance-lime: #6ee71f;
  --owdex-finance-lime-soft: rgba(110, 231, 31, .14);

  --nf-primary: var(--owdex-finance-green);
  --nf-primary-strong: var(--owdex-finance-green-strong);
  --nf-primary-soft: rgba(0, 122, 71, .11);
  --nf-accent: var(--owdex-finance-green);
  --nf-accent-soft: rgba(0, 122, 71, .12);

  --primary: var(--owdex-finance-green);
  --cyan: var(--owdex-finance-green-mid);
  --aqua: var(--owdex-finance-lime);
  --mint: #ebfbe8;
  --gradient: linear-gradient(135deg, #006b3f 0%, #007a47 58%, #008450 100%);
}

html[data-theme="dark"] {
  --nf-primary: #34d058;
  --nf-primary-strong: #6ee71f;
  --nf-primary-soft: rgba(52, 208, 88, .16);
  --nf-accent: #34d058;
  --nf-accent-soft: rgba(52, 208, 88, .15);

  --primary: #34d058;
  --cyan: #57d81c;
  --aqua: #79e91d;
  --mint: rgba(52, 208, 88, .12);
  /* Botões continuam com fundo escuro para preservar contraste com texto branco. */
  --gradient: linear-gradient(135deg, #006b3f 0%, #007a47 58%, #008450 100%);
}

/* Marca lateral: símbolo fornecido + somente "Finance". */
.sidebar-logo.ndui-brand {
  gap: 11px !important;
}
.sidebar-logo .ndui-brand-mark {
  background: transparent !important;
  box-shadow: 0 8px 22px rgba(0, 122, 71, .16) !important;
  border-radius: 13px !important;
}
.sidebar-logo .ndui-brand-mark img {
  width: 44px !important;
  height: 44px !important;
  object-fit: contain !important;
}
.sidebar-logo-text {
  color: var(--nf-text) !important;
  font-weight: 800 !important;
  letter-spacing: -.045em !important;
}
.sidebar-logo-text .owdex-finance-name {
  color: var(--nf-text) !important;
  font: inherit !important;
}
html[data-theme="dark"] .sidebar-logo-text .owdex-finance-name {
  color: #f8fafc !important;
}

/* Estados primários da navegação. */
.sidebar-nav a.is-active,
.ndui-official-r8 .sidebar-nav a.is-active {
  background: var(--nf-primary-soft) !important;
  color: var(--nf-primary) !important;
}
.sidebar-nav a:hover {
  border-color: color-mix(in srgb, var(--nf-primary) 20%, var(--nf-border));
}
.sidebar-toggle:hover,
.icon-btn:hover {
  color: var(--nf-primary);
  border-color: color-mix(in srgb, var(--nf-primary) 28%, var(--nf-border));
}

/* Ações primárias: branco sobre verde escuro com contraste preservado. */
.btn-primary,
button.btn-primary,
a.btn-primary,
.ndui-official-r8 .btn-primary {
  background: var(--gradient) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 12px 26px rgba(0, 107, 63, .18) !important;
}
.btn-primary:hover,
button.btn-primary:hover,
a.btn-primary:hover {
  box-shadow: 0 16px 30px rgba(0, 107, 63, .24) !important;
}

/* O verde vivo da logo fica restrito a detalhes não textuais. */
.progress span,
.mini-progress span,
.profile-completion-track i {
  background: linear-gradient(90deg, var(--owdex-finance-green), var(--owdex-finance-lime)) !important;
}
.dashboard-hero::after,
.module-hero::after {
  background: radial-gradient(circle, var(--owdex-finance-lime-soft), transparent 68%) !important;
}

/* Campos, links e indicadores de foco. */
a:not(.btn):focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline-color: var(--nf-primary) !important;
}
input:focus,
select:focus,
textarea:focus {
  border-color: var(--nf-primary) !important;
  box-shadow: 0 0 0 4px var(--nf-primary-soft) !important;
}
.page-kicker,
.eyebrow,
.section-kicker {
  color: var(--nf-primary) !important;
}

/* Login: mantém a composição atual, mas remove o azul da identidade principal. */
.auth-brand-panel-v17 {
  background:
    radial-gradient(circle at 78% 18%, rgba(110, 231, 31, .22), transparent 28%),
    linear-gradient(135deg, rgba(0, 57, 34, .98), rgba(0, 107, 63, .95) 56%, rgba(0, 138, 80, .90)),
    var(--login-promo-image, none) !important;
  background-size: cover !important;
  background-position: center !important;
}
.auth-brand-glow {
  background: rgba(110, 231, 31, .22) !important;
}
.nf-brand-composed .nf-inline-symbol {
  background: transparent !important;
  box-shadow: 0 14px 32px rgba(0, 57, 34, .22) !important;
}
.nf-brand-composed .nf-inline-symbol img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
}
.nf-brand-composed strong {
  color: #fff !important;
  font-weight: 800 !important;
  letter-spacing: -.045em !important;
}
.auth-card-brand-mobile .nf-brand-composed strong {
  color: var(--nf-text) !important;
}

/* Pílulas e áreas suaves relacionadas à marca. */
.premium-chip,
.hero-badge {
  border-color: color-mix(in srgb, var(--nf-primary) 22%, var(--nf-border));
}


/* v3.3.0 HML R3 — correções visuais e de empilhamento. */
.sidebar-nav a.is-active .nav-icon,
.ndui-official-r8 .sidebar-nav a.is-active .nav-icon,
.ndui-official-r9 .sidebar-nav a.is-active .nav-icon,
.nf-redesign .sidebar-nav a.is-active .nav-icon {
  color: var(--nav-icon-color, var(--nav-color, var(--nf-primary))) !important;
  background: color-mix(in srgb, var(--nav-icon-color, var(--nav-color, var(--nf-primary))) 12%, transparent) !important;
  box-shadow: none !important;
}
.dashboard-order-layout > [data-dashboard-group] { position: relative; z-index: 0; }
.quick-actions-strip { position: relative !important; overflow: visible !important; }
.quick-actions-strip.has-open-popover,
.quick-actions-strip:has(.dashboard-adjustments[open]) { z-index: 120 !important; }
.dashboard-adjustments[open] { position: relative; z-index: 121 !important; }
.dashboard-adjustments-menu { z-index: 122 !important; }
.card-limit-advisor { margin-top: 10px; padding: 10px 12px; border-radius: 9px; display: grid; gap: 3px; border: 1px solid var(--nf-border); background: var(--nf-surface-soft); }
.card-limit-advisor[hidden], .card-over-limit-confirm[hidden] { display: none !important; }
.card-limit-advisor strong { font-size: 12px; }
.card-limit-advisor span { font-size: 12px; line-height: 1.45; }
.card-limit-advisor.is-ok { border-color: color-mix(in srgb, var(--positive, #16844a) 28%, var(--nf-border)); }
.card-limit-advisor.is-over-limit { border-color: color-mix(in srgb, var(--negative, #dc2626) 45%, var(--nf-border)); background: color-mix(in srgb, var(--negative, #dc2626) 7%, var(--nf-surface)); color: var(--negative, #b91c1c); }
.card-over-limit-confirm { margin-top: 10px; padding: 11px 12px; border-radius: 9px; border: 1px solid color-mix(in srgb, var(--negative, #dc2626) 34%, var(--nf-border)); background: color-mix(in srgb, var(--negative, #dc2626) 5%, var(--nf-surface)); display: flex; align-items: flex-start; gap: 10px; }
.card-over-limit-confirm input { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 2px; accent-color: var(--negative, #dc2626); }
.card-over-limit-confirm span { display: grid; gap: 2px; }
.card-over-limit-confirm small { color: var(--nf-muted); font-weight: 500; }

.form-grid-2 > .form-field { display: grid; align-content: start; gap: 8px; min-width: 0; }
.form-grid-2 > .form-field > label:first-child { font-weight: 700; color: var(--nf-text); }


/* v3.3.0 FINAL R2 — auditoria visual de contraste/estado e semântica hidden. */
[hidden] { display: none !important; }

/* SVGs do sistema usam currentColor: o próprio botão/item decide a cor. Evita ícone
   branco sobre botão branco e ícone invisível em item selecionado no tema claro. */
.btn .nf-icon,
.btn > svg,
.icon-btn .nf-icon,
.icon-btn > svg,
.sidebar-nav .nav-icon .nf-icon,
.sidebar-nav .nav-icon > svg,
.settings-link-card .nf-icon,
.topbar .nf-icon,
.nf-mobile-bottom-nav .nf-icon {
  color: inherit !important;
  stroke: currentColor !important;
}
html[data-theme="light"] body.ndui-official-r15 :is([class$="-hero"],[class*="-hero "],.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light),
html[data-theme="light"] body.ndui-official-r15 :is([class$="-hero"],[class*="-hero "],.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) :is(.nf-icon,svg) {
  color: #0B1F46 !important;
}
html[data-theme="dark"] body.ndui-official-r15 :is([class$="-hero"],[class*="-hero "],.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light),
html[data-theme="dark"] body.ndui-official-r15 :is([class$="-hero"],[class*="-hero "],.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) :is(.nf-icon,svg) {
  color: #fff !important;
}

/* O consentimento de extrapolação só existe quando o JS detecta extrapolação real. */
.card-limit-advisor:not(.is-over-limit) { display: none !important; }
.card-limit-advisor.is-over-limit { display: grid !important; }
.card-over-limit-confirm[hidden] { display: none !important; }
.card-over-limit-confirm:not([hidden]) { display: flex !important; }

.invoice-consolidation-note {
  margin-top: 12px; padding: 10px 12px; border-radius: 12px;
  border: 1px solid color-mix(in srgb,var(--nf-primary) 18%,var(--nf-border));
  background: color-mix(in srgb,var(--nf-primary) 5%,var(--nf-surface));
  color: var(--nf-muted); font-size: 12px; line-height: 1.5;
}
.invoice-consolidation-note strong { color: var(--nf-text); }
.legacy-pwa-migration-notice {
  margin: 0 0 20px; padding: 16px 17px; border-radius: 16px;
  border: 1px solid color-mix(in srgb,var(--nf-primary) 22%,var(--nf-border));
  background: color-mix(in srgb,var(--nf-primary) 6%,var(--nf-surface));
  display: grid; gap: 8px;
}
.legacy-pwa-migration-notice strong { color: var(--nf-text); }
.legacy-pwa-migration-notice p { margin: 0; color: var(--nf-muted); line-height: 1.55; font-size: 12px; }
.legacy-pwa-migration-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 3px; }


/* v3.3.0 FINAL R2 — transição oficial de domínio e PWA. */
.legacy-pwa-migration-notice{display:grid;gap:13px;margin:0 0 22px;padding:17px;border:1px solid color-mix(in srgb,var(--owdex-finance-green,#08764a) 24%,var(--nf-border));border-radius:20px;background:linear-gradient(145deg,color-mix(in srgb,var(--owdex-finance-green,#08764a) 7%,var(--nf-surface)),var(--nf-surface));box-shadow:0 14px 34px rgba(15,23,42,.07)}
.legacy-pwa-migration-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center}.legacy-pwa-migration-icon{width:48px;height:48px;border-radius:14px;overflow:hidden;box-shadow:0 8px 22px rgba(8,118,74,.16)}.legacy-pwa-migration-icon img{width:100%;height:100%;display:block;object-fit:cover}.legacy-pwa-migration-head>div{display:grid;gap:3px}.legacy-pwa-migration-head strong{font-size:14px;line-height:1.35}.legacy-pwa-kicker{font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--owdex-finance-green,#08764a)}
.legacy-pwa-migration-notice p{margin:0;color:var(--nf-muted);font-size:12px;line-height:1.55}.legacy-pwa-migration-notice p b{color:var(--nf-text)}.legacy-pwa-route{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border-radius:13px;background:var(--nf-surface-soft);border:1px solid var(--nf-border);font-size:10px}.legacy-pwa-route span{color:var(--nf-muted);text-decoration:line-through}.legacy-pwa-route b{color:var(--nf-muted)}.legacy-pwa-route strong{color:var(--owdex-finance-green,#08764a);overflow-wrap:anywhere}.legacy-pwa-migration-note{font-weight:600}.legacy-pwa-migration-actions{display:flex;gap:8px;flex-wrap:wrap}.legacy-pwa-migration-actions .btn{min-height:40px}
.pwa-help-platforms{display:grid;gap:12px;margin:20px 0}.pwa-help-platforms section{padding:14px;border:1px solid var(--nf-border);border-radius:15px;background:var(--nf-surface-soft)}.pwa-help-platforms strong{color:var(--nf-text);font-size:13px}.pwa-help-platforms ol{margin:10px 0 0;padding-left:20px;display:grid;gap:7px;color:var(--nf-muted);font-size:12px;line-height:1.5}
@media(max-width:520px){.legacy-pwa-route{display:grid;grid-template-columns:1fr}.legacy-pwa-route b{transform:rotate(90deg);width:max-content}.legacy-pwa-migration-actions{display:grid;grid-template-columns:1fr}.legacy-pwa-migration-actions .btn{width:100%}}


/* v3.3.0 FINAL R2 R10 — hotfix desktop/suporte/contraste e cache coerente. */
html[data-theme="light"] body.nf-hotfix-r10 :is(.module-hero,.suite-hero,.dashboard-hero,.profile-hero,.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon,
html[data-theme="light"] body.nf-hotfix-r10 :is(.module-hero,.suite-hero,.dashboard-hero,.profile-hero,.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon * {
  color:#0B1F46 !important;
  stroke:#0B1F46 !important;
  opacity:1 !important;
}
html[data-theme="dark"] body.nf-hotfix-r10 :is(.module-hero,.suite-hero,.dashboard-hero,.profile-hero,.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon,
html[data-theme="dark"] body.nf-hotfix-r10 :is(.module-hero,.suite-hero,.dashboard-hero,.profile-hero,.hero-card,.nf-balance-card,.investment-balance-card) :is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon * {
  color:#fff !important;
  stroke:#fff !important;
  opacity:1 !important;
}
/* Ações rápidas do dashboard ficam fora do hero; não podem herdar o stroke branco do tema. */
html[data-theme="light"] body.nf-hotfix-r10 .quick-actions-strip .dashboard-action:is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon,
html[data-theme="light"] body.nf-hotfix-r10 .quick-actions-strip .dashboard-action:is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon * {
  color:#0B1F46 !important;
  stroke:#0B1F46 !important;
  opacity:1 !important;
  visibility:visible !important;
}
html[data-theme="dark"] body.nf-hotfix-r10 .quick-actions-strip .dashboard-action:is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon,
html[data-theme="dark"] body.nf-hotfix-r10 .quick-actions-strip .dashboard-action:is(.btn-outline,.btn-ghost,.btn-secondary,.btn-light) .nf-icon * {
  color:#fff !important;
  stroke:#fff !important;
  opacity:1 !important;
  visibility:visible !important;
}
body.nf-hotfix-r10 .quick-actions-strip .dashboard-action .nf-icon { display:block !important; flex:0 0 auto !important; }
body.nf-hotfix-r10 .sidebar-nav a.is-active .nav-icon {
  background:#fff !important;
  color:var(--nav-icon-color,var(--nf-primary)) !important;
  box-shadow:0 5px 14px rgba(15,23,42,.12) !important;
}
body.nf-hotfix-r10 .sidebar-nav a.is-active .nav-icon .nf-icon,
body.nf-hotfix-r10 .sidebar-nav a.is-active .nav-icon .nf-icon * {
  color:var(--nav-icon-color,var(--nf-primary)) !important;
  stroke:currentColor !important;
}
body.nf-hotfix-r10 .sidebar-nav a[href="/lancamentos"] .nav-icon { --nav-icon-color:#10a675; }
body.nf-hotfix-r10 .sidebar-nav a[href="/ajuda"] .nav-icon { --nav-icon-color:#ea580c; }
body.nf-hotfix-r10 .sidebar-nav .nf-nowchat-sidebar-link .nav-icon { --nav-icon-color:#0878d1; }
body.nf-hotfix-r10 .nf-support-section-label { margin-top:14px !important; }

.nf-nowchat-desktop-fallback {
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:1180;
  min-height:58px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px 14px 8px 9px;
  border:1px solid color-mix(in srgb,#1861f1 28%,var(--nf-border));
  border-radius:999px;
  background:color-mix(in srgb,var(--nf-surface) 96%,transparent);
  color:var(--nf-text);
  text-decoration:none;
  box-shadow:0 16px 42px rgba(15,23,42,.18);
  backdrop-filter:blur(16px);
}
.nf-nowchat-desktop-fallback[hidden],
html.nf-nowchat-widget-ready .nf-nowchat-desktop-fallback { display:none !important; }
.nf-nowchat-fallback-icon {
  width:40px;height:40px;border-radius:50%;display:grid;place-items:center;
  color:#fff;background:linear-gradient(135deg,#1861f1,#0ac0fe);
  box-shadow:0 8px 20px rgba(24,97,241,.24);
}
.nf-nowchat-fallback-icon .nf-icon { width:20px;height:20px; }
.nf-nowchat-fallback-copy { display:grid;line-height:1.15; }
.nf-nowchat-fallback-copy strong { color:var(--nf-text);font-size:12px; }
.nf-nowchat-fallback-copy small { margin-top:3px;color:var(--nf-muted)!important;font-size:10px; }
.nf-nowchat-desktop-fallback:hover { transform:translateY(-1px);border-color:#1861f1; }
.nf-nowchat-desktop-fallback:focus-visible { outline:3px solid color-mix(in srgb,#1861f1 35%,transparent);outline-offset:3px; }
@media (max-width:720px), (hover:none) and (pointer:coarse) {
  .nf-nowchat-desktop-fallback { display:none !important; }
}

/* R12 — hierarquia visual das faturas por ciclo */
.card-invoice-panel .invoice-period-badge{margin-left:8px;vertical-align:middle;font-size:.68rem;letter-spacing:.01em;text-transform:none}
.card-invoice-panel .invoice-period-badge.is-current{border-color:color-mix(in srgb,var(--nf-primary) 34%,var(--nf-border));background:color-mix(in srgb,var(--nf-primary) 10%,var(--nf-surface));color:var(--nf-primary)}
.card-invoice-panel .invoice-period-badge.is-upcoming{opacity:.9}
.card-invoice-panel .invoice-period-badge.is-history{opacity:.72}
@media(max-width:560px){.card-invoice-panel .invoice-period-badge{display:table;margin:6px 0 0}}
