:root {
  --fp-teal: #79cdc6;
  --fp-teal-escuro: #4a9e97;
  --fp-teal-texto: #3d8c86;
  --fp-fundo: #f1f4f7;
  --fp-texto: #2b2f33;
  --fp-borda: #dde3e8;
  --fp-despesa: #b5123b;
  --fp-texto-suave: #5f6b75;
  --bs-body-bg: var(--fp-fundo);
  --bs-body-color: var(--fp-texto);
  --bs-link-color: var(--fp-teal-texto);
  --bs-link-hover-color: var(--fp-teal-escuro);
  --bs-border-color: var(--fp-borda);
}

.form-control, .form-select, .form-check-input:not(:checked) { background-color: #fff; }

a { color: var(--fp-teal-texto); }
a:hover { color: var(--fp-teal-escuro); }

body { font-family: "Segoe UI", system-ui, -apple-system, Roboto, sans-serif; }

.btn-primary {
  --bs-btn-bg: var(--fp-teal);
  --bs-btn-border-color: var(--fp-teal);
  --bs-btn-hover-bg: var(--fp-teal-escuro);
  --bs-btn-hover-border-color: var(--fp-teal-escuro);
  --bs-btn-active-bg: var(--fp-teal-escuro);
  --bs-btn-active-border-color: var(--fp-teal-escuro);
  --bs-btn-disabled-bg: var(--fp-teal);
  --bs-btn-disabled-border-color: var(--fp-teal);
  font-weight: 600;
}
.btn-outline-primary {
  --bs-btn-color: var(--fp-teal-texto);
  --bs-btn-border-color: var(--fp-teal);
  --bs-btn-hover-bg: var(--fp-teal);
  --bs-btn-hover-border-color: var(--fp-teal);
  --bs-btn-active-bg: var(--fp-teal-escuro);
  font-weight: 600;
}
.form-check-input:checked { background-color: var(--fp-teal); border-color: var(--fp-teal); }
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: var(--fp-teal);
  box-shadow: 0 0 0 .2rem rgba(121, 205, 198, .35);
}

/* Menu superior */
.fp-navbar { background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .08); }
.fp-navbar .navbar-brand { color: var(--fp-teal-texto); font-weight: 700; font-size: 1rem; }
.fp-navbar .navbar-brand img { width: 28px; height: 28px; object-fit: contain; }
.fp-navbar .nav-link { color: var(--fp-texto); border-bottom: 2px solid transparent; }
.fp-navbar .nav-link.active, .fp-navbar .nav-link:hover { color: var(--fp-teal-texto); }
.fp-navbar .nav-link.active { border-bottom-color: var(--fp-teal); }
.fp-navbar .dropdown-item.disabled { color: #9aa3ab; }
.fp-avatar {
  width: 28px; height: 28px; border-radius: 50%; background: #d9dee3; color: #fff;
  display: inline-flex; align-items: center; justify-content: center; font-size: .8rem;
}

/* Conteúdo */
.fp-titulo { font-size: 2rem; font-weight: 600; margin: 0; }
.fp-cartao { background: #fff; border: 1px solid var(--fp-borda); border-radius: 4px; padding: 1.25rem 1.5rem; }

/* Login */
.fp-login-fundo { background: var(--fp-teal); min-height: 100vh; }
.fp-login-cartao { background: #fff; border-radius: 4px; box-shadow: 0 4px 16px rgba(0, 0, 0, .12); max-width: 440px; width: 100%; }
.fp-login-cartao img { width: 72px; height: 72px; object-fit: contain; }
.fp-login-cartao h1 { font-size: 1.35rem; color: #4b5560; font-weight: 600; }

/* Listas */
.fp-busca { width: 260px; max-width: 100%; }
.fp-tabela thead th { font-weight: 600; font-size: .85rem; padding: .8rem .75rem; vertical-align: bottom; }
.fp-tabela td { padding: .65rem .75rem; font-size: .88rem; }
.fp-tabela a, .fp-ordenar { text-decoration: none; }
.fp-tabela tfoot td { color: var(--fp-teal-texto); font-weight: 700; border-bottom: 0; }
.fp-ordenar { color: inherit; text-decoration: none; }
.fp-ordenar i { font-size: .7rem; color: #6c757d; }
.fp-negativo { color: var(--fp-despesa); }
.page-link { color: var(--fp-teal-texto); }
.active > .page-link, .page-link.active { background: #fff; border-color: var(--fp-teal); color: var(--fp-teal-texto); }

/* Formulários */
.fp-formulario { max-width: 640px; }
.is-invalid { border-color: #dc3545; }
.fp-etiqueta {
  display: inline-block; padding: .3rem .8rem; border-radius: 1rem; font-size: .8rem; font-weight: 600;
  color: #fff; background: var(--fp-teal);
}
.fp-etiqueta-receita { background: #3d8c86; }
.fp-etiqueta-despesa { background: var(--fp-teal); }
.fp-etiqueta-transferencia { background: #6c8fb3; }
.fp-tabela td.fp-diferenca { color: #b26a00; font-weight: 600; }
.fp-ignorada td { color: #9aa3ab; text-decoration: line-through; }
.fp-ignorada td:last-child { text-decoration: none; }
.fp-bloco { border: 1px solid var(--fp-teal); border-radius: 4px; padding: 1rem; }

/* Formulário de transferência: colunas de origem (verde) e destino (azul) */
.fp-lado { background: #fff; border: 1px solid var(--fp-lado-cor); border-radius: 4px; height: 100%; }
.fp-lado-titulo { background: var(--fp-lado-cor); color: #fff; font-size: 1.5rem; font-weight: 700; margin: 0; padding: .4rem .75rem; }
.fp-lado-origem { --fp-lado-cor: #0b8f1f; }
.fp-lado-destino { --fp-lado-cor: #0b4a92; }
.fp-seta { color: var(--fp-teal); }

/* Home */
.fp-subtitulo { font-size: 1.35rem; font-weight: 600; margin: 0; }
.fp-indicador { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.fp-indicador-valor { font-size: clamp(1.35rem, 2vw, 1.75rem); font-weight: 600; line-height: 1.2; white-space: nowrap; }
.fp-indicador-rotulo { font-size: .9rem; }
.fp-indicador-icone { font-size: 2.25rem; }
.fp-icone-receita { color: var(--fp-teal-escuro); }
.fp-grafico { position: relative; }
.fp-grafico-barras { height: 300px; }
.fp-grafico-rosca { height: 260px; }
.fp-legenda li { display: flex; align-items: center; gap: .5rem; padding: .2rem 0; font-size: .9rem; }
.fp-legenda-cor { width: .75rem; height: .75rem; border-radius: 50%; flex: none; }
[x-cloak] { display: none !important; }
.fp-grafico-anual { height: 320px; }
.fp-legenda-colunas { columns: 2 18rem; column-gap: 2rem; }
.fp-legenda-colunas li { break-inside: avoid; }

/* Configuração do aplicativo */
.fp-logo-previa { width: 96px; height: 96px; object-fit: contain; border: 1px solid var(--fp-borda); border-radius: 20px; background: #fff; padding: 8px; }

/* Edição rápida na lista de transações */
.fp-linha-rapida td { padding-top: .35rem; padding-bottom: .35rem; }
.fp-linha-rapida input[name="titulo"] { min-width: 14rem; }
.fp-linha-rapida select { min-width: 11rem; }
.fp-linha-rapida.htmx-request { opacity: .6; }
.fp-salvo { color: var(--fp-teal-escuro); animation: fp-sumir 2s forwards; }
@keyframes fp-sumir { 70% { opacity: 1; } 100% { opacity: 0; } }

/* Aviso de processamento (static/js/processando.js) */
.fp-processando {
  position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); z-index: 1080;
  display: flex; align-items: center; gap: .6rem; max-width: calc(100% - 2rem);
  background: var(--fp-texto); color: #fff; border-radius: 6px; padding: .75rem 1.1rem;
  box-shadow: 0 4px 16px rgba(0, 0, 0, .2); font-size: .95rem;
}
a.disabled { pointer-events: none; opacity: .6; }
