/* ═══════════════════════════════════════════════════════════════
   boleto-flexi-js.css
   TODOS os estilos são escopados dentro de .bfjs-view-host
   para evitar qualquer vazamento para a página host.

   Dois usos:
     – iframe  → <body class="bfjs-view-host"> (standalone, fundo cinza)
     – inline  → <boleto-flex> div.bfjs-view-host (embutido na app Angular)
   ═══════════════════════════════════════════════════════════════ */


/* ─── RESET ESCOPADO ────────────────────────────────────────── */
.bfjs-view-host *,
.bfjs-view-host *::before,
.bfjs-view-host *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* Previne zoom automático no iOS Safari */
.bfjs-view-host {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* Esconde seções só-impressão enquanto estiver em tela */
@media screen {
  .bfjs-view-host .only-print { display: none !important; }
}


/* ─── VARIÁVEIS CSS (herdadas pela subárvore .bfjs-view-host) ── */
.bfjs-view-host {
  --vermelho:    #c0392b;
  --cinza-escuro: #1a1a1a;
  --cinza-medio: #555;
  --cinza-borda: #bbb;
  --cinza-fundo: #f7f7f5;
  --fonte-inst:  'Inter', sans-serif;
  --fonte-ban:   Arial, Helvetica, sans-serif;
}


/* ─── CORPO (apenas no iframe: <body class="bfjs-view-host">) ── */
body.bfjs-view-host {
  background: #e8e5e0;
  font-family: var(--fonte-inst);
  color: var(--cinza-escuro);
  padding-top: 24px;
  padding-bottom: 48px;
}


/* ─── WRAPPER A4 ────────────────────────────────────────────── */
/* A4 = 210mm × 297mm → em tela: 794px × 1123px (96dpi) */
.bfjs-view-host .a4 {
  width: 794px;
  margin: 0 auto;
  background: #fff;
  box-shadow: 0 4px 32px rgba(0,0,0,.18);
  position: relative;
  font-family: var(--fonte-inst);
  color: var(--cinza-escuro);
}


/* ─── BARRA DE AÇÕES (some no print/PDF) ───────────────────── */
.bfjs-view-host .acoes {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 20px;
  background: var(--cinza-escuro);
  border-radius: 0;
}
.bfjs-view-host .acoes .btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 18px;
  border: none; border-radius: 3px;
  font-family: var(--fonte-inst); font-size: 12px; font-weight: 600;
  letter-spacing: .04em; cursor: pointer; transition: opacity .15s;
}
.bfjs-view-host .acoes .btn:hover { opacity: .85; }
.bfjs-view-host .btn-pdf   { background: var(--vermelho); color: #fff; }
.bfjs-view-host .btn-print { background: #2b6cc0; color: #fff; }
.bfjs-view-host .btn-copy  { background: #fff; color: var(--cinza-escuro); }
.bfjs-view-host .btn-copy.copied { background: #27ae60; color: #fff; }
.bfjs-view-host .acoes .linha-dig-info {
  margin: auto;
  font-size: 12px;
  color: #aaa;
  font-family: system-ui;
  letter-spacing: .04em;
  white-space: nowrap; overflow: hidden;
}


/* ─── CONTEÚDO DO BOLETO ────────────────────────────────────── */
.bfjs-view-host .boleto { padding: 20px 24px 24px; }


/* ─── SEÇÃO 1: CABEÇALHO INSTITUCIONAL ─────────────────────── */
.bfjs-view-host .cabecalho {
  display: grid;
  grid-template-columns: 80px 1fr 170px;
  gap: 0;
  border: 1px solid var(--cinza-borda);
  margin-bottom: 0;
}
.bfjs-view-host .cab-logo {
  display: flex; align-items: center; justify-content: center;
  padding: 10px;
  border-right: 1px solid var(--cinza-borda);
}
.bfjs-view-host .cab-logo img { width: 64px; height: auto; }
.bfjs-view-host .cab-info {
  padding: 8px 12px;
  text-align: center;
  border-right: 1px solid var(--cinza-borda);
}
.bfjs-view-host .cab-info .nome-instituicao {
  font-size: 11px; font-weight: 700; color: var(--cinza-escuro);
}
.bfjs-view-host .cab-info .detalhe {
  font-size: 9px; color: var(--cinza-medio); line-height: 1.5; margin-top: 2px;
}
.bfjs-view-host .cab-info .portaria {
  font-size: 8.5px; color: var(--cinza-medio); margin-top: 4px; line-height: 1.4;
}
.bfjs-view-host .cab-titulo {
  padding: 10px 12px;
  display: flex; flex-direction: column; justify-content: center;
  text-align: center;
}
.bfjs-view-host .cab-titulo .titulo-label {
  font-size: 10px; font-weight: 700; color: var(--cinza-escuro);
  border-bottom: 1px solid var(--cinza-borda); padding-bottom: 6px; margin-bottom: 6px;
}
.bfjs-view-host .cab-titulo .titulo-num { font-size: 11px; font-weight: 700; }
.bfjs-view-host .cab-titulo .titulo-parcela { font-size: 10px; font-weight: 600; color: var(--cinza-medio); }


/* Linha: Responsável | Aluno | Matrícula */
.bfjs-view-host .linha-dados-pagador { height: 16mm; }
.bfjs-view-host .linha-dados {
  display: grid;
  border: 1px solid var(--cinza-borda);
  border-top: none;
}
.bfjs-view-host .linha-dados.cols-3 { grid-template-columns: 1fr 1fr 120px; }
.bfjs-view-host .linha-dados.cols-4 { grid-template-columns: 100px 1fr 120px 1fr; }

.bfjs-view-host .campo-inst {
  padding: 3px 8px 5px;
  border-right: 1px solid var(--cinza-borda);
}
.bfjs-view-host .campo-inst:last-child { border-right: none; }
.bfjs-view-host .campo-inst .ci-label {
  font-size: 8px; color: var(--cinza-medio); display: block; margin-bottom: 1px;
}
.bfjs-view-host .campo-inst .ci-valor {
  font-size: 9.5px; font-weight: 700; display: block; line-height: 1.3;
}


/* Notícias + Detalhamento */
.bfjs-view-host .linha-noticias {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 0;
  border: 1px solid var(--cinza-borda);
  border-top: none;
  height: 22mm;
}
.bfjs-view-host .noticias-box {
  padding: 6px 8px;
  border-right: 1px solid var(--cinza-borda);
  display: flex;
  align-items: center;
}
.bfjs-view-host .noticias-box .ni-label {
  font-size: 8px; color: var(--cinza-medio); margin-bottom: 4px; display: block;
}
.bfjs-view-host .noticias-box .ni-texto {
  font-size: 13px; color: #c0392b; font-weight: 600; line-height: 1.5;
  text-align: center;
}
.bfjs-view-host .noticias-box .ni-icon { font-size: 16px; margin-bottom: 4px; display: block; }

.bfjs-view-host .detalhamento-box { padding: 6px 8px; }
.bfjs-view-host .detalhamento-box .ni-label {
  font-size: 8px; color: var(--cinza-medio); margin-bottom: 4px; display: block;
}
.bfjs-view-host .det-table { width: 100%; border-collapse: collapse; font-size: 8.5px; }
.bfjs-view-host .det-table th {
  text-align: left; color: var(--cinza-medio);
  border-bottom: 1px solid var(--cinza-borda); padding: 2px 4px;
  font-weight: 600; font-size: 8px;
}
.bfjs-view-host .det-table th:last-child,
.bfjs-view-host .det-table td:last-child { text-align: right; }
.bfjs-view-host .det-table td { padding: 3px 4px; font-weight: 700; font-size: 9px; }


/* Instruções de pagamento */
.bfjs-view-host .linha-instrucoes {
  border: 1px solid var(--cinza-borda);
  border-top: none;
  padding: 4px 8px 5px;
  min-height: 20mm;
}
.bfjs-view-host .li-label { font-size: 8px; color: var(--cinza-medio); margin-bottom: 2px; display: block; }
.bfjs-view-host .li-texto { font-size: 10px; display: inline-block; line-height: 1.5; }


/* Rodapé do cabeçalho */
.bfjs-view-host .linha-rodape-cab {
  display: grid;
  grid-template-columns: 1fr;  /* em tela: coluna única (sem auth mecânica) */
  border: 1px solid var(--cinza-borda);
  border-top: none;
  height: 12mm;
}
.bfjs-view-host .rodape-cel {
  padding: 4px 8px;
  border-right: 1px solid var(--cinza-borda);
  font-size: 8px; color: var(--cinza-medio);
}
.bfjs-view-host .rodape-cel:last-child { border-right: none; }
.bfjs-view-host .rodape-cel .rc-right { text-align: right; }
.bfjs-view-host .rodape-cel.sistema-container {
  align-items: center;
  justify-content: center;
  display: flex;
}
.bfjs-view-host .rodape-cel.sistema-container > div {
  margin: auto;
  text-align: center;
}


/* ─── LINHA DE CORTE ────────────────────────────────────────── */
.bfjs-view-host .corte {
  display: flex; align-items: center; gap: 8px;
  margin: 10px 0;
  color: #999; font-size: 8.5px; font-family: var(--fonte-ban);
}
.bfjs-view-host .corte::before,
.bfjs-view-host .corte::after {
  content: '';
  flex: 1;
  border-top: 1px dashed #bbb;
  align-self: center;
}


/* ─── SEÇÃO 2/3: FICHA BANCÁRIA ─────────────────────────────── */
.bfjs-view-host .banco-header {
  display: grid;
  grid-template-columns: 180px 80px 1fr;
  border: 1px solid var(--cinza-borda);
  margin-bottom: 0;
}
.bfjs-view-host .bh-nome {
  padding: 5px 8px;
  border-right: 1px solid var(--cinza-borda);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--fonte-ban); font-size: 13px; font-weight: 700;
}
.bfjs-view-host .bh-nome img {
  max-width: 100%; max-height: 32px;
  width: auto; height: auto;
  display: block;
  object-fit: contain;
}
.bfjs-view-host .bh-codigo {
  line-height: 1;
  padding: 5px 8px;
  border-right: 1px solid var(--cinza-borda);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--fonte-ban); font-size: 20px; font-weight: 700;
}
.bfjs-view-host .bh-linha {
  padding: 5px 8px;
  display: flex; align-items: center; justify-content: flex-end;
  font-family: 'Courier New', monospace; font-size: 11px; font-weight: 700;
  letter-spacing: .04em;
}

.bfjs-view-host .ficha-row {
  display: grid;
  border: 1px solid var(--cinza-borda);
  border-top: none;
}
.bfjs-view-host .ficha-campo {
  padding: 2px 6px 4px;
  border-right: 1px solid var(--cinza-borda);
}
.bfjs-view-host .ficha-campo:last-child { border-right: none; }
.bfjs-view-host .fc-label {
  font-family: var(--fonte-ban); font-size: 7px; color: var(--cinza-medio);
  display: block; margin-bottom: 1px;
  text-align: left;
}
.bfjs-view-host .fc-valor {
  font-family: var(--fonte-ban); font-size: 9px; font-weight: 700;
  display: block; line-height: 1.3;
}
.bfjs-view-host .fc-valor.grande { font-size: 11px; }
.bfjs-view-host .fc-valor.mono {
  font-family: 'Courier New', monospace; font-size: 8.5px;
}


/* Área do código de barras */
.bfjs-view-host .barcode-area {
  border: 1px solid var(--cinza-borda);
  border-top: none;
  padding: 8px 8px 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
}
.bfjs-view-host #barcode-svg-preview {
  width: 190mm;
  max-width: 100%;
  height: auto;
}
.bfjs-view-host .barcode-numero {
  font-family: 'Courier New', monospace;
  font-size: 8px; color: #777;
  letter-spacing: .06em;
  margin-bottom: 5px;
  user-select: none;
  -webkit-user-select: none;
}
@media screen {
  .bfjs-view-host .barcode-area { text-align: center; }
}


/* Linha digitável destacada */
.bfjs-view-host .linha-dig-destaque {
  background: var(--cinza-fundo);
  border: 1px solid var(--cinza-borda);
  border-top: none;
  padding: 6px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
/* Logo do banco à esquerda */
.bfjs-view-host .ldd-banco-logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
.bfjs-view-host .ldd-banco-logo img {
  max-height: 28px;
  max-width: 135px;
  width: auto;
  height: auto;
  display: block;
  object-fit: contain;
}
.bfjs-view-host .ldd-banco-logo:empty {
  display: none; /* esconde se não houver logo */
}
/* Texto da linha digitável à direita */
.bfjs-view-host .ldd-linha-texto {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
  flex: 1;
}
.bfjs-view-host .ldd-label {
  font-size: 10px; color: var(--cinza-medio); margin-bottom: 2px;
  display: block;
}
.bfjs-view-host .ldd-valor {
  font-family: 'Courier New', monospace;
  font-size: 16px; font-weight: 700; letter-spacing: .06em;
}


/* ─── OVERLAY DE CARREGAMENTO / ERRO ────────────────────────── */
/* Este fica fora do escopo .bfjs-view-host pois é position:fixed */
#bfjs-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(26,26,26,0.92);
  z-index: 9999;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 16px;
  font-family: 'Inter', sans-serif;
  color: #fff;
}
#bfjs-overlay.visible { display: flex; }
#bfjs-overlay .bfjs-icon  { font-size: 48px; }
#bfjs-overlay .bfjs-title { font-size: 18px; font-weight: 700; }
#bfjs-overlay .bfjs-msg   { font-size: 13px; color: #ccc; max-width: 420px; text-align: center; line-height: 1.6; }


/* ─── PRINT: MODO IFRAME (body.bfjs-view-host) ──────────────── */
@media print {
  @page { size: A4; margin: 0cm; }

  body.bfjs-view-host {
    margin: 5mm;
    background: #fff !important;
    padding: 0;
  }
  body.bfjs-view-host .a4 {
    box-shadow: none;
    width: 100%;
  }
  body.bfjs-view-host .acoes       { display: none !important; }
  body.bfjs-view-host .no-print    { display: none !important; }
  body.bfjs-view-host .only-print  { display: block !important; }
  body.bfjs-view-host .boleto      { padding: 10px 14px 14px; }
  body.bfjs-view-host .barcode-area {
    align-items: start;
    display: grid;
    grid-template-columns: 1fr 250px;
  }
  body.bfjs-view-host .barcode-numero { margin-left: 110px; }
  body.bfjs-view-host .ldd-label { font-size: 8px; }
  body.bfjs-view-host .ldd-valor  { font-size: 11px; }
  body.bfjs-view-host .linha-rodape-cab {
    grid-template-columns: 1fr 300px;
  }
}

/* ─── PRINT: MODO INLINE (body.bfjs-printing) ───────────────── */
/* Ativa quando o Angular adiciona body.bfjs-printing + .bfjs-print-target  */
/* Usa visibility (não display): filhos aninhados podem sobrescrever o pai  */
@media print {
  /* Invisibiliza TUDO — sem display:none para que filhos possam sobrescrever */
  body.bfjs-printing * {
    visibility: hidden !important;
  }

  /* O container do boleto e todo seu conteúdo ficam visíveis */
  body.bfjs-printing .bfjs-print-target,
  body.bfjs-printing .bfjs-print-target * {
    visibility: visible !important;
  }

  /* Fixa o boleto no topo da página impressa */
  body.bfjs-printing .bfjs-print-target {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    z-index: 9999;
  }

  /* Ajustes de layout iguais ao modo iframe */
  body.bfjs-printing .bfjs-print-target .acoes      { display: none !important; }
  body.bfjs-printing .bfjs-print-target .no-print   { display: none !important; }
  body.bfjs-printing .bfjs-print-target .only-print { display: block !important; }
  body.bfjs-printing .bfjs-print-target .a4 {
    box-shadow: none;
    width: 100%;
  }
  body.bfjs-printing .bfjs-print-target .boleto { padding: 10px 14px 14px; }
  body.bfjs-printing .bfjs-print-target .barcode-area {
    align-items: start;
    display: grid;
    grid-template-columns: 1fr 250px;
  }
  body.bfjs-printing .bfjs-print-target .barcode-numero { margin-left: 110px; }
  body.bfjs-printing .bfjs-print-target .ldd-label { font-size: 8px; }
  body.bfjs-printing .bfjs-print-target .ldd-valor  { font-size: 11px; }
  body.bfjs-printing .bfjs-print-target .linha-rodape-cab {
    grid-template-columns: 1fr 300px;
  }
}
