/* ==========================================================================
   Bravonte Control - Fluxo de Caixa
   Desenho mobile-first. As regras base valem para celular;
   os blocos @media (min-width: 783px) ampliam para tablet e desktop.
   ========================================================================== */

.bfc-root,
.bfc-root *,
.bfc-modal-fundo * {
	box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   Tokens de cor.
   IMPORTANTE: precisam existir tambem em :root porque os modais e o toast sao
   inseridos em document.body, fora do container .bfc-root. Se ficarem so no
   .bfc-root, dentro do modal o var() fica indefinido, o fundo do botao vira
   transparente e sobra texto branco sobre fundo branco (botao invisivel).
   -------------------------------------------------------------------------- */

:root,
.bfc-root,
.bfc-modal-fundo,
.bfc-toast {
	--bfc-azul: #0d2a4a;
	--bfc-azul-claro: #1c4f85;
	--bfc-dourado: #c8a24a;
	--bfc-verde: #16794f;
	--bfc-verde-claro: #e6f4ee;
	--bfc-vermelho: #b3261e;
	--bfc-vermelho-claro: #fdeceb;
	--bfc-ambar: #b26a00;
	--bfc-ambar-claro: #fff4e0;
	--bfc-cinza: #5b6875;
	--bfc-borda: #dde3ea;
	/* Borda de controle: 3,35:1 sobre branco, atende o minimo de 3:1 da WCAG 1.4.11
	   para limites de componentes de interface. */
	--bfc-borda-forte: #7d8ea3;
	--bfc-superficie-2: #eaf0f6;
	--bfc-fundo: #f4f7fa;
	--bfc-branco: #fff;
	--bfc-raio: 12px;
	--bfc-toque: 44px;
	--bfc-nav-altura: 62px;
	--bfc-seguro-baixo: env(safe-area-inset-bottom, 0px);
	--bfc-seguro-cima: env(safe-area-inset-top, 0px);
}

.bfc-root {
	position: relative;
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: 0;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	font-size: 15px;
	line-height: 1.5;
	color: #1b2733;
	background: var(--bfc-fundo);
	-webkit-text-size-adjust: 100%;
	overflow-x: hidden;
}

/* No modo aplicativo o container ocupa a tela inteira. */
body.bfc-modo-app { margin: 0; padding: 0; background: var(--bfc-fundo, #f4f7fa); }
body.bfc-modo-app .bfc-root { min-height: 100vh; min-height: 100dvh; border-radius: 0; }

/* Quando embutido num tema, quebra o container estreito e ocupa a largura toda. */
.bfc-root:not(.bfc-embutido) { border-radius: 0; }

/* --------------------------------------------------------------- Carregando */

.bfc-carregando {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 60vh;
	padding: 40px 20px;
	text-align: center;
	color: var(--bfc-cinza);
}

.bfc-spinner {
	width: 36px;
	height: 36px;
	margin-bottom: 14px;
	border: 3px solid var(--bfc-borda);
	border-top-color: var(--bfc-azul);
	border-radius: 50%;
	animation: bfc-girar 0.8s linear infinite;
}

@keyframes bfc-girar { to { transform: rotate(360deg); } }

/* -------------------------------------------------------------------- Login */

.bfc-login {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	min-height: 100dvh;
	padding: calc(24px + var(--bfc-seguro-cima)) 16px calc(24px + var(--bfc-seguro-baixo));
	background: linear-gradient(160deg, var(--bfc-azul) 0%, #071a2f 100%);
}

.bfc-login-caixa {
	width: 100%;
	max-width: 400px;
	padding: 28px 22px calc(28px + var(--bfc-seguro-baixo));
	background: var(--bfc-branco);
	border-radius: 16px;
	box-shadow: 0 18px 40px rgba(0, 0, 0, 0.3);
}

.bfc-login-marca {
	display: block;
	width: 56px;
	height: 56px;
	margin: 0 auto 14px;
	border-radius: 14px;
	background: var(--bfc-azul);
	background-size: cover;
}

.bfc-login-caixa h2 {
	margin: 0 0 4px;
	font-size: 21px;
	text-align: center;
	color: var(--bfc-azul);
}

.bfc-login-caixa p.bfc-sub {
	margin: 0 0 22px;
	font-size: 13px;
	text-align: center;
	color: var(--bfc-cinza);
}

/* ------------------------------------------------------------------ Topo */

.bfc-topo {
	position: sticky;
	top: 0;
	z-index: 40;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: calc(10px + var(--bfc-seguro-cima)) 14px 10px;
	background: var(--bfc-azul);
	color: #fff;
}

.bfc-marca {
	display: flex;
	flex-direction: column;
	line-height: 1.15;
	margin-right: auto;
	min-width: 0;
}

.bfc-marca strong { font-size: 15px; letter-spacing: 0.2px; }

.bfc-marca span {
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 1.2px;
	color: var(--bfc-dourado);
}

.bfc-topo-acoes { display: flex; align-items: center; gap: 8px; }

.bfc-topo select {
	/* width auto e obrigatorio: a regra generica de formulario usa 100% e
	   esticaria o seletor de ano por toda a barra superior. */
	width: auto;
	min-width: 86px;
	min-height: 36px;
	padding: 4px 8px;
	font-size: 14px;
	color: #fff;
	background: rgba(255, 255, 255, 0.14);
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 8px;
}

.bfc-topo select option { color: #1b2733; }

/* Botao redondo de icone no topo (atualizar, menu). */
.bfc-icone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	font-size: 17px;
	color: #fff;
	background: rgba(255, 255, 255, 0.14);
	border: 0;
	border-radius: 10px;
	cursor: pointer;
}

.bfc-icone:active { background: rgba(255, 255, 255, 0.28); }
.bfc-icone.bfc-pulsando { animation: bfc-pulsar 1.4s ease-in-out infinite; }

@keyframes bfc-pulsar { 50% { opacity: 0.45; } }

.bfc-usuario { display: none; }

/* Abas horizontais: viram menu inferior no celular (ver .bfc-nav). */
.bfc-abas { display: none; }

/* ------------------------------------------------- Navegacao inferior (app) */

.bfc-nav {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 60;
	display: flex;
	align-items: stretch;
	height: calc(var(--bfc-nav-altura) + var(--bfc-seguro-baixo));
	padding-bottom: var(--bfc-seguro-baixo);
	background: var(--bfc-branco);
	border-top: 1px solid var(--bfc-borda);
	box-shadow: 0 -2px 14px rgba(13, 42, 74, 0.08);
}

.bfc-nav-item {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	min-width: 0;
	padding: 6px 2px;
	font-family: inherit;
	font-size: 10px;
	font-weight: 600;
	line-height: 1.15;
	text-align: center;
	color: var(--bfc-cinza);
	background: none;
	border: 0;
	cursor: pointer;
}

.bfc-nav-item svg { width: 22px; height: 22px; flex: none; }
.bfc-nav-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.bfc-nav-item.bfc-ativa { color: var(--bfc-azul-claro); }
.bfc-nav-item.bfc-ativa svg { stroke: var(--bfc-azul-claro); }

/* Painel "Mais" que sobe de baixo. */
.bfc-mais {
	position: fixed;
	inset: 0;
	z-index: 70;
	display: flex;
	align-items: flex-end;
	background: rgba(6, 20, 36, 0.5);
}

.bfc-mais-painel {
	width: 100%;
	max-height: 78vh;
	overflow-y: auto;
	padding: 8px 12px calc(18px + var(--bfc-nav-altura) + var(--bfc-seguro-baixo));
	background: var(--bfc-branco);
	border-radius: 18px 18px 0 0;
}

.bfc-mais-alca {
	width: 42px;
	height: 4px;
	margin: 8px auto 12px;
	background: var(--bfc-borda);
	border-radius: 4px;
}

.bfc-mais-item {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
	min-height: var(--bfc-toque);
	padding: 12px 10px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	text-align: left;
	color: #1b2733;
	background: none;
	border: 0;
	border-bottom: 1px solid var(--bfc-borda);
	cursor: pointer;
}

.bfc-mais-item:last-child { border-bottom: 0; }
.bfc-mais-item.bfc-ativa { color: var(--bfc-azul-claro); font-weight: 700; }
.bfc-mais-titulo { padding: 12px 10px 4px; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--bfc-cinza); }

/* ---------------------------------------------------------------- Conteudo */

.bfc-conteudo {
	padding: 12px 12px calc(18px + var(--bfc-nav-altura) + var(--bfc-seguro-baixo));
	min-height: 50vh;
}

/* Botao flutuante de novo lancamento. */
.bfc-fab {
	position: fixed;
	right: 16px;
	bottom: calc(var(--bfc-nav-altura) + var(--bfc-seguro-baixo) + 14px);
	z-index: 50;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	font-size: 28px;
	line-height: 1;
	color: #fff;
	background: var(--bfc-azul-claro);
	border: 0;
	border-radius: 50%;
	box-shadow: 0 6px 18px rgba(13, 42, 74, 0.35);
	cursor: pointer;
}

.bfc-fab:active { transform: scale(0.94); }

/* ------------------------------------------------------------------ Secoes */

.bfc-secao {
	margin-bottom: 14px;
	background: var(--bfc-branco);
	border: 1px solid var(--bfc-borda);
	border-radius: var(--bfc-raio);
	overflow: hidden;
}

.bfc-secao > header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding: 12px 14px;
	border-bottom: 1px solid var(--bfc-borda);
	background: #fbfcfe;
}

.bfc-secao > header h3 {
	flex: 1 1 100%;
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	color: var(--bfc-azul);
}

.bfc-secao > header .bfc-dica {
	flex: 1 1 100%;
	font-size: 12px;
	font-weight: 400;
	color: var(--bfc-cinza);
}

.bfc-secao-corpo { padding: 12px; }

.bfc-grid { display: grid; gap: 12px; grid-template-columns: 1fr; }

/* ------------------------------------------------------------- Indicadores */

.bfc-cards {
	display: grid;
	gap: 10px;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-bottom: 12px;
}

.bfc-card {
	padding: 12px;
	background: var(--bfc-branco);
	border: 1px solid var(--bfc-borda);
	border-left: 4px solid var(--bfc-azul-claro);
	border-radius: var(--bfc-raio);
	min-width: 0;
}

.bfc-card .bfc-rotulo {
	margin-bottom: 5px;
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.6px;
	color: var(--bfc-cinza);
	line-height: 1.25;
}

.bfc-card .bfc-valor {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--bfc-azul);
	overflow-wrap: anywhere;
}

.bfc-card .bfc-nota { margin-top: 4px; font-size: 11px; color: var(--bfc-cinza); }

.bfc-card.bfc-positivo { border-left-color: var(--bfc-verde); }
.bfc-card.bfc-positivo .bfc-valor { color: var(--bfc-verde); }
.bfc-card.bfc-negativo { border-left-color: var(--bfc-vermelho); }
.bfc-card.bfc-negativo .bfc-valor { color: var(--bfc-vermelho); }
.bfc-card.bfc-alerta { border-left-color: var(--bfc-ambar); }
.bfc-card.bfc-alerta .bfc-valor { color: var(--bfc-ambar); }

/* --------------------------------------------------------------- Formulario */

.bfc-campo { display: flex; flex-direction: column; gap: 5px; margin-bottom: 14px; }

.bfc-campo label { font-size: 13px; font-weight: 600; color: #33414f; }


.bfc-root input[type="text"],
.bfc-root input[type="password"],
.bfc-root input[type="number"],
.bfc-root input[type="date"],
.bfc-root input[type="email"],
.bfc-root input[type="search"],
.bfc-root select,
.bfc-root textarea,
/* Tipos listados um a um de proposito: um seletor generico "input" pegaria
   tambem as caixas de marcacao e as transformaria em quadrados brancos vazios. */
.bfc-modal-fundo input[type="text"],
.bfc-modal-fundo input[type="password"],
.bfc-modal-fundo input[type="number"],
.bfc-modal-fundo input[type="date"],
.bfc-modal-fundo input[type="email"],
.bfc-modal-fundo input[type="search"],
.bfc-modal-fundo select,
.bfc-modal-fundo textarea {
	width: 100%;
	min-height: var(--bfc-toque, 44px);
	padding: 10px 12px;
	/* 16px evita o zoom automatico do iOS ao focar o campo. */
	font-size: 16px;
	font-family: inherit;
	color: #1b2733;
	background-color: #fff;
	/* Borda de 3,35:1 sobre branco: o campo se distingue do fundo do modal. */
	border: 1px solid #7d8ea3;
	border-radius: 10px;
	outline: none;
	appearance: none;
	-webkit-appearance: none;
}

.bfc-modal-fundo label,
.bfc-modal-fundo .bfc-campo label { color: #33414f; }

/* Caixas de marcacao: maiores e com cor de marca, para ficarem obvias no toque. */
.bfc-root input[type="checkbox"],
.bfc-modal-fundo input[type="checkbox"] {
	width: 20px;
	height: 20px;
	min-height: 0;
	margin: 0 10px 0 0;
	padding: 0;
	vertical-align: -4px;
	accent-color: #1c4f85;
	border: 1px solid #7d8ea3;
	border-radius: 4px;
	appearance: auto;
	-webkit-appearance: checkbox;
	cursor: pointer;
	flex: none;
}

.bfc-campo label:has(input[type="checkbox"]) {
	display: flex;
	align-items: center;
	min-height: var(--bfc-toque, 44px);
	cursor: pointer;
}

.bfc-root select,
.bfc-modal-fundo select {
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%235b6875' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 11px;
	padding-right: 34px;
}

.bfc-topo select { background-image: none; padding-right: 8px; }

.bfc-root input:focus,
.bfc-root select:focus,
.bfc-root textarea:focus,
.bfc-modal-fundo input:focus,
.bfc-modal-fundo select:focus,
.bfc-modal-fundo textarea:focus {
	border-color: #1c4f85;
	border-color: var(--bfc-azul-claro, #1c4f85);
	box-shadow: 0 0 0 3px rgba(28, 79, 133, 0.22);
}

.bfc-linha-campos { display: grid; gap: 12px; grid-template-columns: 1fr; }

/* ------------------------------------------------------------------ Botoes */

/* Todas as cores dos botoes tem valor de reserva literal: mesmo que um tema
   sobrescreva ou zere as variaveis, o botao continua visivel. */

.bfc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: var(--bfc-toque, 44px);
	padding: 10px 16px;
	font-size: 15px;
	font-weight: 600;
	font-family: inherit;
	line-height: 1.2;
	text-decoration: none;
	color: #fff;
	background-color: #1c4f85;
	background-color: var(--bfc-azul-claro, #1c4f85);
	border: 1px solid #1c4f85;
	border-color: var(--bfc-azul-claro, #1c4f85);
	border-radius: 10px;
	box-shadow: 0 1px 2px rgba(13, 42, 74, 0.12);
	cursor: pointer;
	white-space: nowrap;
	-webkit-tap-highlight-color: transparent;
	-webkit-appearance: none;
	appearance: none;
}

.bfc-btn:hover { filter: brightness(1.06); }
.bfc-btn:active { filter: brightness(0.92); }
.bfc-btn:focus-visible { outline: 3px solid rgba(28, 79, 133, 0.45); outline-offset: 2px; }
.bfc-btn:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: none; }

/* Secundario: fundo acinzentado e borda de 3,35:1, para nao sumir sobre o
   branco do modal, dos cartoes e das linhas de tabela.
   Texto #0d2a4a sobre #eaf0f6 = 12,6:1. */
.bfc-btn-claro {
	color: #0d2a4a;
	color: var(--bfc-azul, #0d2a4a);
	background-color: #eaf0f6;
	background-color: var(--bfc-superficie-2, #eaf0f6);
	border-color: #7d8ea3;
	border-color: var(--bfc-borda-forte, #7d8ea3);
}

.bfc-btn-claro:hover { background-color: #dbe5ef; filter: none; }

.bfc-btn-dourado {
	color: #2b2000;
	background-color: #c8a24a;
	background-color: var(--bfc-dourado, #c8a24a);
	border-color: #8f7229;
}

.bfc-btn-perigo {
	color: #fff;
	background-color: #b3261e;
	background-color: var(--bfc-vermelho, #b3261e);
	border-color: #98201a;
}

.bfc-btn-sm { min-height: 38px; padding: 7px 12px; font-size: 13px; }
.bfc-btn-bloco { width: 100%; }

/* ----------------------------------------------------------------- Tabelas */

.bfc-tabela-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.bfc-root table.bfc-tabela {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
	background: #fff;
}

.bfc-root table.bfc-tabela th,
.bfc-root table.bfc-tabela td {
	padding: 9px 10px;
	border-bottom: 1px solid var(--bfc-borda);
	text-align: left;
	vertical-align: middle;
	white-space: nowrap;
}

.bfc-root table.bfc-tabela thead th {
	position: sticky;
	top: 0;
	z-index: 2;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	color: #46566a;
	background: #eef3f8;
	border-bottom: 2px solid var(--bfc-borda);
}

.bfc-num { text-align: right !important; font-variant-numeric: tabular-nums; }
.bfc-pos { color: var(--bfc-verde); }
.bfc-neg { color: var(--bfc-vermelho); }
.bfc-zero { color: #a6b0bb; }

tr.bfc-l-total td { font-weight: 700; color: var(--bfc-azul); background: #eaf0f7; }
tr.bfc-l-resultado td { font-weight: 700; color: #fff; background: var(--bfc-azul-claro); }
tr.bfc-l-resultado td.bfc-num { color: #fff; }
tr.bfc-l-grupo td { font-weight: 600; background: #f5f8fb; }

/* Coluna de descricao fixa nas matrizes largas. */
.bfc-tabela-fixa th:first-child,
.bfc-tabela-fixa td:first-child {
	position: sticky;
	left: 0;
	z-index: 1;
	background: inherit;
	min-width: 150px;
	white-space: normal;
}

.bfc-tabela-fixa thead th:first-child { z-index: 3; background: #eef3f8; }
.bfc-tabela-fixa tbody td:first-child { background: #fff; }
.bfc-tabela-fixa tbody tr.bfc-l-total td:first-child { background: #eaf0f7; }
.bfc-tabela-fixa tbody tr.bfc-l-resultado td:first-child { background: var(--bfc-azul-claro); }
.bfc-tabela-fixa tbody tr.bfc-l-grupo td:first-child { background: #f5f8fb; }

/* Celula de mes escondida pelo seletor de mes do celular. */
.bfc-mes-oculto { display: none !important; }

/* Colunas de analise vertical e horizontal. */
.bfc-root table.bfc-tabela th.bfc-sub {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0;
	padding: 4px 8px;
	background: #e3ebf3;
}

.bfc-pct { font-size: 12px; font-variant-numeric: tabular-nums; }
tr.bfc-l-resultado td.bfc-pct { color: #fff !important; }

/* No celular os atalhos do topo viram apenas o botao flutuante. */
.bfc-atalho { display: none; }

/* ---- Modo cartao: no celular cada linha da tabela vira um cartao ---------- */

@media (max-width: 782px) {
	table.bfc-cartoes,
	table.bfc-cartoes tbody,
	table.bfc-cartoes tr,
	table.bfc-cartoes td { display: block; width: 100%; }

	table.bfc-cartoes thead { display: none; }

	table.bfc-cartoes tr {
		margin-bottom: 10px;
		padding: 4px 0;
		background: #fff;
		border: 1px solid var(--bfc-borda);
		border-radius: var(--bfc-raio);
		overflow: hidden;
	}

	table.bfc-cartoes td {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 8px 12px;
		border: 0;
		border-bottom: 1px solid #f0f4f8;
		white-space: normal;
		text-align: right !important;
	}

	table.bfc-cartoes td:last-child { border-bottom: 0; }

	table.bfc-cartoes td::before {
		content: attr(data-rotulo);
		flex: 0 0 42%;
		font-size: 11px;
		font-weight: 600;
		text-transform: uppercase;
		letter-spacing: 0.4px;
		color: var(--bfc-cinza);
		text-align: left;
	}

	/* Celulas sem valor somem no modo cartao. */
	table.bfc-cartoes td.bfc-vazia { display: none; }

	/* Celula de acoes ocupa a linha inteira. */
	table.bfc-cartoes td.bfc-acoes {
		justify-content: flex-end;
		flex-wrap: wrap;
		gap: 8px;
		background: #fafcfe;
	}

	table.bfc-cartoes td.bfc-acoes::before { content: none; }
	table.bfc-cartoes td.bfc-acoes .bfc-btn { flex: 1 1 auto; }

	table.bfc-cartoes tr.bfc-l-total td,
	table.bfc-cartoes tr.bfc-l-resultado td,
	table.bfc-cartoes tr.bfc-l-grupo td { background: inherit; }

	table.bfc-cartoes tr.bfc-l-resultado { background: var(--bfc-azul-claro); color: #fff; }
	table.bfc-cartoes tr.bfc-l-resultado td::before { color: rgba(255, 255, 255, 0.75); }
	table.bfc-cartoes tr.bfc-l-total { background: #eaf0f7; }
}

/* -------------------------------------------------------------------- Tags */

.bfc-tag {
	display: inline-block;
	padding: 3px 9px;
	font-size: 11px;
	font-weight: 600;
	border-radius: 20px;
	white-space: nowrap;
}

.bfc-tag-pagar_hoje,
.bfc-tag-receber_hoje { background: var(--bfc-ambar-claro, #fff4e0); color: var(--bfc-ambar, #b26a00); }
.bfc-tag-pagamento_atrasado,
.bfc-tag-recebimento_atrasado { background: var(--bfc-vermelho-claro, #fdeceb); color: var(--bfc-vermelho, #b3261e); }
.bfc-tag-liquidado { background: var(--bfc-verde-claro, #e6f4ee); color: var(--bfc-verde, #16794f); }
.bfc-tag-a_pagar_futuro,
.bfc-tag-a_receber_futuro { background: #eaf0f7; color: var(--bfc-azul-claro, #1c4f85); }

/* ---------------------------------------------------------------- Graficos */

.bfc-gr { position: relative; height: 240px; }
.bfc-gr-alto { height: 280px; }
.bfc-gr-baixo { height: 190px; }

/* ------------------------------------------------------------------- Modal */

.bfc-modal-fundo {
	position: fixed;
	inset: 0;
	z-index: 99990;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	background: rgba(6, 20, 36, 0.55);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	font-size: 15px;
	color: #1b2733;
}

.bfc-modal {
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: 100%;
	max-height: 94vh;
	max-height: 94dvh;
	background: #fff;
	border-radius: 18px 18px 0 0;
	box-shadow: 0 -6px 30px rgba(0, 0, 0, 0.32);
	overflow: hidden;
	animation: bfc-subir 0.22s ease-out;
}

@keyframes bfc-subir { from { transform: translateY(24px); opacity: 0.6; } }

.bfc-modal header {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: none;
	padding: 14px 16px;
	background: var(--bfc-azul, #0d2a4a);
	color: #fff;
}

.bfc-modal header h3 { margin: 0; margin-right: auto; font-size: 16px; }

.bfc-modal-corpo { flex: 1 1 auto; overflow-y: auto; padding: 16px; -webkit-overflow-scrolling: touch; }

.bfc-modal-rodape {
	display: flex;
	flex: none;
	gap: 10px;
	padding: 12px 16px calc(12px + var(--bfc-seguro-baixo, 0px));
	border-top: 1px solid #dde3ea;
	background: #eef3f8;
}

.bfc-modal-rodape .bfc-btn { flex: 1 1 0; }

/* O botao principal do rodape sempre pesa mais que o secundario. */
.bfc-modal-rodape .bfc-btn:last-child { flex: 1.4 1 0; font-weight: 700; }

.bfc-fechar {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	background: rgba(255, 255, 255, 0.15);
	border: 0;
	border-radius: 10px;
	color: #fff;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
}

/* --------------------------------------------------------------- Mensagens */

.bfc-msg {
	padding: 11px 14px;
	margin-bottom: 12px;
	font-size: 13px;
	line-height: 1.45;
	border: 1px solid transparent;
	border-radius: 10px;
}

.bfc-msg-erro { background: var(--bfc-vermelho-claro, #fdeceb); border-color: #f2c3c0; color: #8a1c16; }
.bfc-msg-ok { background: var(--bfc-verde-claro, #e6f4ee); border-color: #bfe2d3; color: #0f5c3c; }
.bfc-msg-info { background: #eaf2fb; border-color: #c6dbf2; color: #14446f; }
.bfc-msg-aviso { background: var(--bfc-ambar-claro, #fff4e0); border-color: #f2ddb4; color: #7a4a00; }

.bfc-vazio { padding: 28px 14px; text-align: center; color: var(--bfc-cinza); font-size: 14px; }
.bfc-vazio .bfc-btn { margin-top: 12px; }

.bfc-toast {
	position: fixed;
	left: 12px;
	right: 12px;
	bottom: calc(var(--bfc-nav-altura, 62px) + env(safe-area-inset-bottom, 0px) + 12px);
	z-index: 99999;
	padding: 13px 16px;
	font-size: 14px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: #fff;
	background: #0d2a4a;
	border-radius: 12px;
	box-shadow: 0 10px 26px rgba(0, 0, 0, 0.3);
	animation: bfc-subir 0.2s ease-out;
}

.bfc-toast.bfc-t-erro { background: #b3261e; }
.bfc-toast.bfc-t-ok { background: #16794f; }

/* ------------------------------------------------------------- Relatorio IA */

.bfc-relatorio { padding: 4px; font-size: 15px; line-height: 1.65; }
.bfc-relatorio h1 { font-size: 19px; margin: 16px 0 8px; color: var(--bfc-azul, #0d2a4a); }
.bfc-relatorio h2 { font-size: 17px; margin: 16px 0 8px; color: var(--bfc-azul, #0d2a4a); }
.bfc-relatorio h3 { font-size: 15px; margin: 12px 0 6px; color: var(--bfc-azul-claro, #1c4f85); }
.bfc-relatorio ul, .bfc-relatorio ol { padding-left: 20px; margin: 8px 0; }
.bfc-relatorio li { margin-bottom: 5px; }
.bfc-relatorio p { margin: 8px 0; }
.bfc-relatorio table { display: block; overflow-x: auto; width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 13px; }
.bfc-relatorio th, .bfc-relatorio td { border: 1px solid var(--bfc-borda, #dde3ea); padding: 7px 9px; text-align: left; }
.bfc-relatorio th { background: #eef3f8; }
.bfc-relatorio code { background: #eef3f8; padding: 1px 5px; border-radius: 4px; font-size: 13px; }

/* ----------------------------------------------------------------- Filtros */

.bfc-filtros {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-bottom: 12px;
	padding: 12px;
	background: #fff;
	border: 1px solid var(--bfc-borda);
	border-radius: var(--bfc-raio);
}

.bfc-filtros .bfc-campo { margin-bottom: 0; }
.bfc-filtros .bfc-btn { width: 100%; }

/* Filtros secundarios recolhiveis no celular. */
.bfc-filtros-extra { display: none; flex-direction: column; gap: 10px; }
.bfc-filtros.bfc-aberto .bfc-filtros-extra { display: flex; }

.bfc-chips {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	padding-bottom: 2px;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}

.bfc-chips::-webkit-scrollbar { display: none; }

.bfc-chip {
	flex: 0 0 auto;
	min-height: 38px;
	padding: 8px 14px;
	font-family: inherit;
	font-size: 13px;
	font-weight: 600;
	color: var(--bfc-azul);
	background: #fff;
	border: 1px solid var(--bfc-borda);
	border-radius: 20px;
	cursor: pointer;
}

.bfc-chip.bfc-ativa { color: #fff; background: var(--bfc-azul-claro); border-color: var(--bfc-azul-claro); }

/* =========================================================================
   Tablet e desktop
   ========================================================================= */

@media (min-width: 783px) {
	.bfc-root { font-size: 14px; --bfc-nav-altura: 0px; }

	.bfc-topo { flex-wrap: wrap; padding: 14px 18px; }
	.bfc-marca strong { font-size: 17px; }
	.bfc-marca span { font-size: 11px; }
	.bfc-topo-acoes { gap: 10px; flex-wrap: wrap; }

	.bfc-usuario { display: block; font-size: 12px; color: #c9d6e4; text-align: right; }
	.bfc-usuario strong { display: block; color: #fff; font-size: 13px; }

	.bfc-nav, .bfc-fab, .bfc-mais { display: none !important; }
	.bfc-atalho { display: inline-flex; }

	.bfc-abas {
		position: sticky;
		top: 0;
		z-index: 39;
		display: flex;
		gap: 2px;
		padding: 0 10px;
		overflow-x: auto;
		background: #123a63;
	}

	.bfc-aba {
		flex: 0 0 auto;
		padding: 12px 14px;
		font-family: inherit;
		font-size: 13px;
		font-weight: 500;
		color: #b9cbdd;
		background: none;
		border: 0;
		border-bottom: 3px solid transparent;
		cursor: pointer;
		white-space: nowrap;
	}

	.bfc-aba:hover { color: #fff; }
	.bfc-aba.bfc-ativa { color: #fff; border-bottom-color: var(--bfc-dourado); }

	.bfc-conteudo { padding: 18px; }

	.bfc-grid { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
	.bfc-grid-2 { grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); }

	.bfc-cards { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; }
	.bfc-card { padding: 14px; }
	.bfc-card .bfc-valor { font-size: 20px; }

	.bfc-secao > header h3 { flex: 1 1 auto; }
	.bfc-secao > header .bfc-dica { flex: 0 1 auto; }
	.bfc-secao-corpo { padding: 16px; }

	.bfc-linha-campos { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }

	.bfc-root input[type="text"],
	.bfc-root input[type="password"],
	.bfc-root input[type="number"],
	.bfc-root input[type="date"],
	.bfc-root input[type="email"],
	.bfc-root input[type="search"],
	.bfc-root select,
	.bfc-root textarea,
	.bfc-modal-fundo input,
	.bfc-modal-fundo select,
	.bfc-modal-fundo textarea { min-height: 38px; padding: 8px 11px; font-size: 13px; }

	.bfc-btn { min-height: 38px; padding: 8px 15px; font-size: 13px; }
	.bfc-btn-sm { min-height: 30px; padding: 4px 10px; font-size: 12px; }
	.bfc-btn-bloco { width: auto; }

	.bfc-filtros { flex-direction: row; flex-wrap: wrap; align-items: flex-end; padding: 12px 14px; }
	.bfc-filtros .bfc-campo { min-width: 140px; }
	.bfc-filtros .bfc-btn { width: auto; }
	.bfc-filtros-extra { display: flex !important; flex-direction: row; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
	.bfc-alternar-filtros { display: none; }

	.bfc-seletor-mes { display: none !important; }

	.bfc-tabela-fixa th:first-child,
	.bfc-tabela-fixa td:first-child { min-width: 250px; }

	.bfc-gr { height: 260px; }
	.bfc-gr-alto { height: 320px; }

	.bfc-modal-fundo { align-items: flex-start; padding: 24px 14px; overflow-y: auto; }
	.bfc-modal { max-width: 720px; max-height: none; border-radius: 12px; }
	.bfc-modal-corpo { padding: 18px; }
	.bfc-modal-rodape { justify-content: flex-end; padding: 14px 18px; }
	.bfc-modal-rodape .bfc-btn { flex: 0 0 auto; }

	.bfc-toast { left: auto; right: 18px; bottom: 18px; max-width: 360px; }

	.bfc-relatorio { padding: 20px; background: #fff; border: 1px solid var(--bfc-borda, #dde3ea); border-radius: var(--bfc-raio, 12px); }
}

@media print {
	.bfc-topo, .bfc-abas, .bfc-nav, .bfc-fab, .bfc-filtros, .bfc-btn, .bfc-toast { display: none !important; }
	.bfc-root { background: #fff; }
	.bfc-conteudo { padding: 0; }
	.bfc-mes-oculto { display: table-cell !important; }
}
