body {
  color: var(--cor-texto);
  background: var(--cor-fundo);
  font-family: var(--familia-fontes);
  font-size: var(--fonte-p);
}

.doc-fac {
  display: flex;
  flex-direction: column;
  width: 210mm;
  min-height: 297mm;
  margin: var(--espaco-8);
  padding: var(--espaco-10);
  color: var(--cor-texto);
  background: var(--cor-fundo-secundario);
  box-shadow: var(--sombra-g);
  border-radius: var(--raio-p);
}

.doc-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gap-g);
  padding-bottom: var(--espaco-5);
  border-bottom: 2px solid var(--cor-primaria);
}

.doc-marca {
  display: flex;
  align-items: center;
  gap: var(--gap-m);
}

.doc-marca .logo {
  width: 76px;
  height: auto;
  flex-shrink: 0;
}

.texto-marca-doc {
  display: flex;
  flex-direction: column;
  gap: var(--espaco-1);
}

.texto-marca-doc span {
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-m);
  font-weight: 700;
  line-height: 1.2;
}

.texto-marca-doc small {
  color: var(--cor-texto-secundaria);
  font-size: var(--fonte-pp);
  line-height: 1.35;
}

.identificacao-doc {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--espaco-1);
  text-align: right;
}

.tipo-doc {
  color: var(--cor-primaria);
  font-size: var(--fonte-g);
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.num-doc,
.data-doc {
  color: var(--cor-texto-secundaria);
  font-size: var(--fonte-pp);
}

.doc-content {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: var(--gap-gg);
  padding: var(--espaco-8) 0;
}

.secao-doc {
  display: flex;
  flex-direction: column;
  gap: var(--gap-m);
}

[hidden] {
  display: none;
}

.titulo-secao-doc {
  display: flex;
  align-items: center;
  gap: var(--gap-pp);
  padding-bottom: var(--espaco-2);
  border-bottom: 1px solid var(--cor-borda);
}

.titulo-secao-doc h2 {
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-m);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.cartao-doc {
  padding: var(--espaco-5);
  background: var(--cor-fundo-secundario);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-g);
  break-inside: avoid;
  page-break-inside: avoid;
}

.lista-cartoes {
  display: flex;
  flex-direction: column;
  gap: var(--gap-m);
}

@media screen {
  .cartao-doc {
    box-shadow: var(--sombra-p);
  }
}

@media print {
  .cartao-doc {
    box-shadow: none;
  }
}

.cartao-voo,
.cartao-hotel,
.cartao-experiencia {
  border-left: 4px solid var(--cor-primaria);
}

.rodape-doc {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap-m);
  padding-top: var(--espaco-4);
  color: var(--cor-texto-secundaria);
  border-top: 1px solid var(--cor-borda);
  font-size: var(--fonte-pp);
}

@page {
  size: A4;
  margin: 0;
}

@media print {
  html,
  body {
    width: 210mm;
    background: white;
  }

  .doc-fac {
    width: 210mm;
    min-height: 297mm;
    margin: 0;
    padding: var(--espaco-10);
    border-radius: 0;
    box-shadow: none;
  }

  .cartao-doc {
    box-shadow: none;
    break-inside: avoid;
    page-break-inside: avoid;
  }
}

.cartao-voo {
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-g);
  background: var(--cor-fundo-secundario);
  break-inside: avoid;
  page-break-inside: avoid;
}

.voo-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap-m);
  padding: var(--espaco-2) var(--espaco-5);
  background: var(--cor-primaria-suave);
  border-bottom: 1px solid var(--cor-borda);
}

.voo-localizadores {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;

  gap: var(--gap-m);

  padding: var(--espaco-4) var(--espaco-5);

  border-bottom: 1px solid var(--cor-borda);
}

.voo-localizador {
  display: flex;
  flex-direction: column;
  align-items: center;

  gap: var(--espaco-1);
}

.voo-localizador-companhia {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);
  font-weight: 700;

  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.voo-localizador-codigo {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: 140px;

  padding: var(--espaco-2) var(--espaco-5);

  color: var(--cor-primaria-escura);
  background: var(--cor-primaria-suave);

  border: 1px solid var(--cor-primaria);
  border-radius: 999px;

  font-size: var(--fonte-g);
  font-weight: 800;

  letter-spacing: 0.18rem;

  print-color-adjust: exact;
  -webkit-print-color-adjust: exact;
}

.voo-sentido {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.3rem 0.85rem;
  background: var(--cor-fundo-secundario);
  border: 1px solid var(--cor-primaria);
  border-radius: 999px;
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-pp);
  font-weight: 700;
  letter-spacing: 0.08rem;
  text-transform: uppercase;
  white-space: nowrap;
}

.voo-id {
  color: var(--cor-texto-secundaria);
  font-size: var(--fonte-p);
  font-weight: 700;
}

.voo-trajeto {
  display: flex;
  flex-direction: column;
  padding: 0;
}

.voo-ponto {
  display: flex;
  flex-direction: column;
  gap: var(--espaco-1);
}

.voo-destino {
  align-items: flex-end;
  text-align: right;
}

.voo-hora {
  color: var(--cor-texto);
  font-size: var(--fonte-g);
  font-weight: 700;
  line-height: 1;
}

.voo-codigo {
  color: var(--cor-primaria-escura);

  font-size: var(--fonte-gg);
  font-weight: 800;

  line-height: 1.1;
  letter-spacing: 0.03em;
}

.voo-cidade {
  color: var(--cor-texto);

  font-size: var(--fonte-p);
  font-weight: 600;
}

.voo-data {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);
}

.voo-conexao {
  position: relative;

  display: flex;
  align-items: center;
  justify-content: center;

  gap: var(--espaco-2);
  padding: var(--espaco-2) var(--espaco-5);
  color: var(--cor-texto-secundaria);
  background: var(--cor-fundo);
  border-top: 1px solid var(--cor-borda);
  border-bottom: 1px solid var(--cor-borda);
  font-size: var(--fonte-pp);
}

.voo-conexao-texto {
  font-weight: 500;
}

.voo-conexao-duracao {
  color: var(--cor-primaria-escura);
  font-weight: 700;
}

.voo-linha {
  width: 100%;
  height: 1px;

  background: var(--cor-borda);

  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.voo-seta {
  position: absolute;
  right: -2px;
  top: 50%;

  display: flex;
  align-items: center;
  justify-content: center;

  color: var(--cor-primaria);

  font-size: 26px;
  line-height: 1;

  transform: translateY(-55%);
}

.voo-duracao {
  position: absolute;
  top: calc(100% + var(--espaco-2));

  padding: var(--espaco-1) var(--espaco-2);

  color: var(--cor-texto-secundaria);
  background: var(--cor-fundo-secundario);

  font-size: var(--fonte-pp);
  white-space: nowrap;

  transform: translateY(-50%);
}

.voo-detalhes {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--gap-m);

  padding: var(--espaco-4) var(--espaco-5);

  background: var(--cor-fundo);

  border-top: 1px solid var(--cor-borda);
}

.voo-detalhe {
  display: flex;
  flex-direction: column;

  gap: var(--espaco-1);
}

.voo-detalhe-rotulo {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);

  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.voo-detalhe strong {
  color: var(--cor-texto);

  font-size: var(--fonte-p);
  font-weight: 600;
}

.voo-segmento {
  display: grid;
  grid-template-columns: minmax(110px, 1fr) minmax(140px, 2fr) minmax(
      110px,
      1fr
    );
  align-items: center;
  gap: var(--espaco-4);
  padding: var(--espaco-5);
}

.voo-segmento-identificacao {
  grid-column: 1 / -1;

  display: flex;
  align-items: center;
  justify-content: center;

  margin-top: var(--espaco-1);
  padding-top: var(--espaco-3);

  color: var(--cor-primaria-escura);

  border-top: 1px dashed var(--cor-borda);

  font-size: var(--fonte-p);
  font-weight: 700;

  letter-spacing: 0.03em;
  text-align: center;
}

@media screen {
  .cartao-voo {
    box-shadow: var(--sombra-p);
  }
}

@media screen and (max-width: 700px) {
  .voo-segmento {
    grid-template-columns:
      1fr
      70px
      1fr;

    gap: var(--gap-p);

    padding: var(--espaco-4);
  }

  .voo-codigo {
    font-size: var(--fonte-g);
  }

  .voo-detalhes {
    grid-template-columns: 1fr;
  }

  .voo-segmento-identificacao {
    font-size: var(--fonte-pp);
  }

  .voo-localizadores {
    flex-direction: column;
  }
}

@media print {
  .cartao-voo {
    box-shadow: none;
  }

  .voo-cabecalho,
  .voo-detalhes {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  .voo-segmento-identificacao {
    color: var(--cor-primaria-escura);
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
}

.cartao-hotel,
.cartao-experiencia,
.cartao-transfer {
  padding: 0;
  overflow: hidden;

  background: var(--cor-fundo-secundario);

  border: 1px solid var(--cor-borda);
  border-left: 4px solid var(--cor-primaria);
  border-radius: var(--raio-g);

  break-inside: avoid;
  page-break-inside: avoid;
}

.cartao-hotel-cabecalho,
.cartao-experiencia-cabecalho,
.cartao-transfer-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;

  gap: var(--gap-m);

  padding: var(--espaco-2) var(--espaco-5);

  background: var(--cor-primaria-suave);
  border-bottom: 1px solid var(--cor-borda);
}

.cartao-hotel-tipo,
.cartao-experiencia-tipo,
.cartao-transfer-tipo {
  color: var(--cor-primaria-escura);

  font-size: var(--fonte-pp);
  font-weight: 700;

  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.cartao-hotel-conteudo,
.cartao-experiencia-conteudo {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--espaco-4) var(--gap-g);

  padding: var(--espaco-5);
}

.cartao-experiencia-conteudo {
  row-gap: var(--espaco-5);
}

.campo-doc {
  display: flex;
  flex-direction: column;

  gap: var(--espaco-1);

  min-width: 0;
}

.campo-doc-largo {
  grid-column: 1 / -1;
}

.campo-doc-rotulo {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);

  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.campo-doc-valor {
  color: var(--cor-texto);

  font-size: var(--fonte-p);
  font-weight: 600;

  line-height: 1.45;

  overflow-wrap: anywhere;
}

.hotel-categoria {
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-p);
  font-weight: 700;
  white-space: nowrap;
}

.hotel-nome {
  grid-column: 1 / -1;
}

.hotel-nome .campo-doc-valor {
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-m);
  font-weight: 700;
}

.hotel-endereco {
  grid-column: 1 / -1;
}

.hotel-confirmacao {
  grid-column: 1 / -1;

  padding-top: var(--espaco-3);
  border-top: 1px solid var(--cor-borda);
}

.hotel-confirmacao .campo-doc-valor {
  color: var(--cor-primaria-escura);
  font-size: var(--fonte-m);
  font-weight: 800;
  letter-spacing: 0.08em;
}

.experiencia-titulo {
  grid-column: 1 / -1;
}

.experiencia-titulo .campo-doc-valor {
  color: var(--cor-primaria-escura);

  font-size: var(--fonte-g);
  font-weight: 700;
  line-height: 1.3;
}

.experiencia-descricao {
  grid-column: 1 / -1;
  margin-top: calc(var(--espaco-2) * -1);
}

.experiencia-descricao-texto {
  font-weight: 400;
  line-height: 1.7;
  margin: 0;
  color: var(--cor-texto);
  font-size: var(--fonte-p);
  white-space: pre-line;
}

.experiencia-contatos {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--gap-g);

  grid-column: 1/-1;

  padding-top: var(--espaco-4);

  border-top: 1px solid var(--cor-borda);
}

@media screen and (max-width: 700px) {
  .cartao-hotel-conteudo,
  .cartao-experiencia-conteudo {
    grid-template-columns: 1fr;

    gap: var(--espaco-4);

    padding: var(--espaco-4);
  }

  .hotel-nome,
  .hotel-endereco,
  .hotel-confirmacao,
  .experiencia-titulo,
  .experiencia-descricao {
    grid-column: auto;
  }

  .experiencia-contatos {
    grid-template-columns: 1fr;
    gap: var(--espaco-4);
  }
}

@media print {
  .cartao-hotel,
  .cartao-experiencia,
  .cartao-transfer {
    box-shadow: none;
  }

  .cartao-hotel-cabecalho,
  .cartao-experiencia-cabecalho,
  .cartao-transfer-cabecalho {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  .cartao-transfer,
  .transfer-bloco {
    break-inside: avoid;
    page-break-inside: avoid;
  }
}

.notas-container {
  display: flex;
  flex-direction: column;
  gap: var(--espaco-3);
}

.nota-item {
  display: flex;
  align-items: flex-start;
  gap: var(--espaco-3);
}

.nota-texto {
  margin: 0;

  color: var(--cor-texto);
  font-size: 0.95rem;
  line-height: 1.6;

  white-space: pre-line;
}

.cartao-notas {
  background: var(--cor-superficie-secundaria);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-md);
  padding: var(--espaco-5);
}

.notas-container {
  display: flex;
  flex-direction: column;
  gap: var(--espaco-3);
}

.nota-item {
  display: flex;
  align-items: flex-start;
  gap: var(--espaco-3);
}

.nota-icone {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 1.5rem;

  width: 1.5rem;
  height: 1.5rem;

  border-radius: 50%;

  background: var(--cor-primaria);
  color: #fff;

  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
}

.nota-texto {
  margin: 0;

  color: var(--cor-texto);
  font-size: 0.95rem;
  font-weight: 400;
  line-height: 1.6;

  white-space: pre-line;
}

.nota-informacao .nota-icone {
  background: var(--cor-primaria);
}

.nota-importante .nota-icone {
  background: var(--cor-destaque);
}

.nota-alerta .nota-icone {
  background: var(--cor-alerta);
}

.cartao-investimento {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  gap: var(--espaco-5);

  padding: var(--espaco-8) var(--espaco-6);

  background: var(--cor-fundo-secundario);

  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-g);

  text-align: center;

  box-shadow: var(--sombra-p);

  break-inside: avoid;
  page-break-inside: avoid;
}

.investimento-titulo {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);
  font-weight: 700;

  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.investimento-principal {
  display: flex;
  flex-direction: column;
  align-items: center;

  gap: var(--espaco-2);
}

.investimento-valor {
  display: flex;
  align-items: flex-end;
  justify-content: center;

  gap: var(--espaco-2);

  color: var(--cor-primaria-escura);

  line-height: 1;
}

.investimento-moeda {
  margin-bottom: 0.4rem;

  font-size: var(--fonte-g);
  font-weight: 700;
}

.investimento-total {
  color: var(--cor-primaria-escura);

  font-size: 3.8rem;
  font-weight: 800;

  line-height: 1;
  letter-spacing: -0.04em;
}

@media screen and (max-width: 700px) {
  .cartao-investimento {
    padding: var(--espaco-6) var(--espaco-4);
  }
}

.cartao-investimento {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  gap: var(--espaco-5);

  padding: var(--espaco-8) var(--espaco-6);

  background: var(--cor-fundo-secundario);

  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-g);

  text-align: center;

  box-shadow: var(--sombra-p);

  break-inside: avoid;
  page-break-inside: avoid;
}

.investimento-principal {
  display: flex;
  flex-direction: column;
  align-items: center;

  gap: var(--espaco-2);
}

.investimento-titulo {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);
  font-weight: 700;

  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.investimento-valor {
  display: flex;
  align-items: flex-end;
  justify-content: center;

  gap: var(--espaco-2);

  color: var(--cor-primaria-escura);

  line-height: 1;
}

.investimento-moeda {
  margin-bottom: 0.4rem;

  font-size: var(--fonte-g);
  font-weight: 700;
}

.investimento-total {
  color: var(--cor-primaria-escura);

  font-size: 3.8rem;
  font-weight: 800;

  line-height: 1;
  letter-spacing: -0.04em;
}

.investimento-parcelamento {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-wrap: wrap;

  gap: var(--espaco-2);

  color: var(--cor-primaria-escura);

  line-height: 1;
}

.investimento-quantidade {
  font-size: 3.2rem;
  font-weight: 800;

  letter-spacing: -0.04em;
}

.investimento-conector {
  margin-bottom: 0.35rem;

  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-p);
  font-weight: 500;
}

.investimento-parcela-moeda {
  margin-bottom: 0.35rem;

  font-size: var(--fonte-g);
  font-weight: 700;
}

.investimento-parcela-valor {
  font-size: 3.2rem;
  font-weight: 800;

  letter-spacing: -0.04em;
}

.investimento-resumo {
  display: flex;
  flex-direction: column;
  align-items: center;

  width: 100%;
  max-width: 420px;

  gap: var(--espaco-2);

  padding-top: var(--espaco-5);

  border-top: 1px solid var(--cor-borda);
}

.investimento-resumo-rotulo {
  color: var(--cor-texto-secundaria);

  font-size: var(--fonte-pp);
  font-weight: 700;

  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.investimento-resumo-valor {
  color: var(--cor-primaria-escura);

  font-size: var(--fonte-gg);
  font-weight: 800;

  line-height: 1.15;
}

@media screen and (max-width: 700px) {
  .cartao-investimento {
    padding: var(--espaco-6) var(--espaco-4);
  }

  .investimento-total {
    font-size: 2.8rem;
  }

  .investimento-quantidade,
  .investimento-parcela-valor {
    font-size: 2.5rem;
  }

  .investimento-moeda,
  .investimento-parcela-moeda {
    font-size: var(--fonte-m);
  }

  .investimento-resumo-valor {
    font-size: var(--fonte-g);
  }
}

@media print {
  .cartao-investimento {
    box-shadow: none;
  }
}

/* =========================================================
   TRANSFERS
========================================================= */

.cartao-transfer-conteudo {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--gap-g);

  padding: var(--espaco-5);
}

.transfer-bloco {
  min-width: 0;

  padding: var(--espaco-4);

  background: var(--cor-fundo);

  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-m);
}

.transfer-bloco-titulo {
  margin: 0 0 var(--espaco-4);

  color: var(--cor-primaria-escura);

  font-size: var(--fonte-m);
  font-weight: 700;

  line-height: 1.3;
}

.transfer-detalhes {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--gap-g);
}

.transfer-empresa {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--gap-g);

  grid-column: 1 / -1;

  padding-top: var(--espaco-4);

  border-top: 1px solid var(--cor-borda);
}

.transfer-empresa-nome .campo-doc-valor {
  color: var(--cor-primaria-escura);
  font-weight: 700;
}

.transfer-empresa-telefone .campo-doc-valor {
  white-space: nowrap;
}

/* =========================================================
   PASSAGEIROS
========================================================= */

.lista-passageiros {
  display: grid;

  grid-template-columns: repeat(2, minmax(0, 1fr));

  gap: var(--espaco-3) var(--gap-g);

  padding: var(--espaco-5);

  background: var(--cor-fundo-secundario);

  border: 1px solid var(--cor-borda);
  border-left: 4px solid var(--cor-primaria);
  border-radius: var(--raio-g);

  break-inside: avoid;
  page-break-inside: avoid;
}

.passageiro-item {
  display: flex;
  align-items: center;

  min-width: 0;

  gap: var(--espaco-3);

  padding: var(--espaco-2) 0;
}

.passageiro-icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  flex: 0 0 1.5rem;

  width: 1.5rem;
  height: 1.5rem;

  color: var(--cor-primaria-escura);
  background: var(--cor-primaria-suave);

  border: 1px solid var(--cor-primaria);
  border-radius: 50%;

  font-size: var(--fonte-pp);
  font-weight: 800;

  line-height: 1;

  print-color-adjust: exact;
  -webkit-print-color-adjust: exact;
}

.passageiro-nome {
  min-width: 0;

  color: var(--cor-texto);

  font-size: var(--fonte-p);
  font-weight: 600;

  line-height: 1.4;

  overflow-wrap: anywhere;
}

@media screen and (max-width: 700px) {
  .lista-passageiros {
    grid-template-columns: 1fr;
    padding: var(--espaco-4);
  }
}

@media print {
  .lista-passageiros {
    box-shadow: none;

    break-inside: avoid;
    page-break-inside: avoid;
  }
}
