/* ==========================================================================
   templates.css — o documento do currículo e os 31 modelos
   Uma única estrutura HTML (render.js) + áreas de grid head/main/aside.
   Medidas em mm/pt para o que se vê na tela ser o que sai no papel.
   ========================================================================== */

.cv-doc {
  width: 100%;
}

/* ---------------------------------------------------------------- base */

.cv {
  display: grid;
  grid-template-areas: "head" "main" "aside";
  grid-template-columns: 1fr;
  align-content: start;
  box-sizing: border-box;
  width: 100%;
  min-height: 297mm;
  padding: 15mm 16mm;
  background: #fff;
  color: #1f2430;
  font-family: "Inter", Arial, Helvetica, sans-serif;
  font-size: 10.4pt;
  line-height: 1.46;
  --acc: #0b2545;
  --acc-2: #475569;
}

.cv-head {
  grid-area: head;
  margin-bottom: 7mm;
}

/* min-width:0 impede que texto longo estique a coluna e vaze do modelo */
.cv-main {
  grid-area: main;
  min-width: 0;
}

.cv-aside {
  grid-area: aside;
  min-width: 0;
}

/* nos modelos de coluna única o aside vem logo abaixo do main, e a última
   seção do main zera a margem: sem isto, "Habilidades" cola no texto acima */
.cv-aside:not(:empty) {
  margin-top: 6mm;
}

/* ---------- foto (opcional) ---------- */

.cv-head.tem-foto {
  display: flex;
  align-items: center;
  gap: 6mm;
}

.cv-head-texto {
  flex: 1 1 auto;
  min-width: 0;
}

.cv-foto {
  display: block;
  flex: 0 0 auto;
  width: 26mm;
  height: 26mm;
  border-radius: 50%;
  object-fit: cover;
  background: #e8edf5;
}

.cv-nome {
  font-size: 22pt;
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1.1;
  color: var(--acc);
  margin: 0 0 1.5mm;
}

.cv-cargo {
  font-size: 11.5pt;
  font-weight: 600;
  color: var(--acc-2);
  margin: 0 0 3mm;
}

.cv-contato {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 1mm 4mm;
  font-size: 9.4pt;
  color: #434b5c;
}

.cv-contato-item {
  position: relative;
  max-width: 100%;
  overflow-wrap: anywhere;
}

/* nome e cargo longos também quebram, em vez de empurrar a coluna */
.cv-nome,
.cv-cargo {
  overflow-wrap: anywhere;
}

.cv-contato-item+.cv-contato-item::before {
  content: "•";
  position: absolute;
  left: -2.5mm;
  color: #a7b0c0;
}

/* seções */

.cv-sec {
  margin-bottom: 6mm;
  break-inside: avoid;
}

.cv-sec:last-child {
  margin-bottom: 0;
}

.cv-sec-titulo {
  font-size: 9.6pt;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--acc);
  margin: 0 0 2.5mm;
  padding-bottom: 1mm;
  border-bottom: .4mm solid var(--acc);
}

/* itens (experiência, formação) */

.cv-item {
  margin-bottom: 4mm;
  break-inside: avoid;
}

.cv-item:last-child {
  margin-bottom: 0;
}

.cv-item-topo {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 4mm;
}

.cv-item-titulo {
  font-size: 11pt;
  font-weight: 700;
  color: #16203a;
  margin: 0;
}

.cv-periodo {
  font-size: 8.8pt;
  font-weight: 600;
  color: #6b7488;
  white-space: nowrap;
  flex: 0 0 auto;
}

.cv-item-org {
  font-size: 9.6pt;
  color: var(--acc-2);
  margin: .3mm 0 1.2mm;
}

.cv-bullets {
  list-style: none;
  margin: 0;
  padding: 0;
}

.cv-bullets li {
  position: relative;
  padding-left: 4mm;
  margin-bottom: .8mm;
  font-size: 9.8pt;
}

.cv-bullets li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1.7mm;
  width: 1.4mm;
  height: 1.4mm;
  border-radius: 50%;
  background: var(--acc);
}

/* cursos */

.cv-cursos {
  list-style: none;
  margin: 0;
  padding: 0;
}

.cv-cursos li {
  display: flex;
  flex-wrap: wrap;
  gap: 0 2mm;
  align-items: baseline;
  margin-bottom: 1.2mm;
  font-size: 9.8pt;
}

.cv-curso-extra {
  font-size: 8.8pt;
  color: #6b7488;
}

/* habilidades */

.cv-tags {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 1.6mm;
}

.cv-tags li {
  font-size: 9.2pt;
  padding: .7mm 2.4mm;
  border: .25mm solid #c9d2e0;
  border-radius: 1mm;
  background: #f6f8fc;
  color: #2b3447;
  max-width: 100%;
  overflow-wrap: anywhere;
}

/* idiomas */

.cv-idiomas {
  list-style: none;
  margin: 0;
  padding: 0;
}

.cv-idiomas li {
  display: flex;
  justify-content: space-between;
  gap: 3mm;
  font-size: 9.8pt;
  padding: .5mm 0;
  border-bottom: .2mm dotted #d6dde8;
}

.cv-idiomas li:last-child {
  border-bottom: 0;
}

.cv-idioma-nivel {
  color: #6b7488;
  font-size: 9pt;
}

/* esqueleto de prévia vazia */

.cv-placeholder {
  padding: 15mm 16mm;
  display: flex;
  flex-direction: column;
  gap: 4mm;
  min-height: 297mm;
}

.cv-ph-linha {
  display: block;
  height: 3mm;
  border-radius: 1mm;
  background: #e8edf5;
  animation: phPulsa 1.6s ease-in-out infinite;
}

.cv-ph-g {
  height: 8mm;
  width: 60%;
  background: #dde4ef;
}

.cv-ph-m {
  width: 42%;
}

.cv-ph-texto {
  margin-top: 6mm;
  font-size: 11pt;
  color: #9aa5b6;
  font-family: "Inter", sans-serif;
}

@keyframes phPulsa {

  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: .55;
  }
}

/* ==========================================================================
   1. CLÁSSICO
   ========================================================================== */

.tpl-classico {
  --acc: #0b2545;
  --acc-2: #475569;
}

/* ==========================================================================
   2. MODERNO — faixa colorida no topo
   ========================================================================== */

.tpl-moderno {
  --acc: #1d4ed8;
  --acc-2: #475569;
  padding: 0 0 15mm;
}

.tpl-moderno .cv-head {
  background: #1d4ed8;
  color: #fff;
  padding: 13mm 16mm 10mm;
  margin-bottom: 8mm;
}

.tpl-moderno .cv-nome {
  color: #fff;
}

.tpl-moderno .cv-cargo {
  color: rgba(255, 255, 255, .88);
}

.tpl-moderno .cv-contato {
  color: rgba(255, 255, 255, .9);
}

.tpl-moderno .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .55);
}

.tpl-moderno .cv-main,
.tpl-moderno .cv-aside {
  padding: 0 16mm;
}

.tpl-moderno .cv-sec-titulo {
  border-bottom: 0;
  padding-left: 3.5mm;
  position: relative;
}

.tpl-moderno .cv-sec-titulo::before {
  content: "";
  position: absolute;
  left: 0;
  top: .3mm;
  width: 1.6mm;
  height: 3.6mm;
  border-radius: .5mm;
  background: #1d4ed8;
}

.tpl-moderno .cv-foto {
  border: .8mm solid rgba(255, 255, 255, .55);
}

/* ==========================================================================
   3. MINIMALISTA
   ========================================================================== */

.tpl-minimalista {
  --acc: #111827;
  --acc-2: #6b7280;
  padding: 18mm 18mm;
  font-size: 10.2pt;
}

.tpl-minimalista .cv-nome {
  font-weight: 600;
  font-size: 20pt;
  letter-spacing: .01em;
}

.tpl-minimalista .cv-sec-titulo {
  border-bottom: 0;
  color: #9ca3af;
  font-size: 8.6pt;
  letter-spacing: .18em;
  margin-bottom: 2mm;
}

.tpl-minimalista .cv-bullets li::before {
  background: #d1d5db;
}

.tpl-minimalista .cv-tags li {
  border: 0;
  background: transparent;
  padding: 0;
  font-size: 9.6pt;
}

.tpl-minimalista .cv-tags li:not(:last-child)::after {
  content: " ·";
  color: #d1d5db;
}

.tpl-minimalista .cv-sec {
  margin-bottom: 7mm;
}

.tpl-minimalista .cv-foto {
  border-radius: 1.5mm;
  width: 24mm;
  height: 24mm;
}

/* ==========================================================================
   4. ELEGANTE — serifada, centralizada
   ========================================================================== */

.tpl-elegante {
  --acc: #2f3a4a;
  --acc-2: #6b7280;
  font-family: "Lora", Georgia, serif;
  padding: 16mm 18mm;
}

.tpl-elegante .cv-head {
  text-align: center;
  border-bottom: .3mm solid #cbd2dc;
  padding-bottom: 5mm;
}

.tpl-elegante .cv-nome {
  font-weight: 600;
  font-size: 23pt;
  letter-spacing: .02em;
}

.tpl-elegante .cv-cargo {
  font-style: italic;
  font-size: 12pt;
}

.tpl-elegante .cv-contato {
  justify-content: center;
}

.tpl-elegante .cv-sec-titulo {
  text-align: center;
  border-bottom: 0;
  font-family: "Inter", sans-serif;
  letter-spacing: .16em;
  color: #8a94a3;
}

.tpl-elegante .cv-item-org {
  font-style: italic;
}

.tpl-elegante .cv-tags li {
  border-radius: 0;
  background: #f4f1ec;
  border-color: #e0d9cd;
}

.tpl-elegante .cv-head.tem-foto {
  flex-direction: column;
  gap: 4mm;
}

.tpl-elegante .cv-foto {
  border: .4mm solid #cbd2dc;
}

/* ==========================================================================
   5. COMPACTO
   ========================================================================== */

.tpl-compacto {
  --acc: #0f766e;
  --acc-2: #475569;
  padding: 12mm 13mm;
  font-size: 9.6pt;
  line-height: 1.38;
}

.tpl-compacto .cv-head {
  margin-bottom: 4.5mm;
}

.tpl-compacto .cv-nome {
  font-size: 19pt;
}

.tpl-compacto .cv-cargo {
  font-size: 10.5pt;
  margin-bottom: 2mm;
}

.tpl-compacto .cv-sec {
  margin-bottom: 4mm;
}

.tpl-compacto .cv-sec-titulo {
  font-size: 9pt;
  margin-bottom: 1.8mm;
  padding-bottom: .6mm;
  border-bottom-width: .25mm;
}

.tpl-compacto .cv-item {
  margin-bottom: 2.6mm;
}

.tpl-compacto .cv-bullets li {
  font-size: 9.2pt;
  margin-bottom: .4mm;
}

.tpl-compacto .cv-cursos {
  columns: 2;
  column-gap: 6mm;
}

/* ==========================================================================
   6. LINHA
   ========================================================================== */

.tpl-linha {
  --acc: #b45309;
  --acc-2: #57534e;
}

.tpl-linha .cv-head {
  border-bottom: .8mm solid #b45309;
  padding-bottom: 4mm;
}

.tpl-linha .cv-sec-titulo {
  border-bottom: 0;
  display: flex;
  align-items: center;
  gap: 3mm;
  color: #b45309;
}

.tpl-linha .cv-sec-titulo::after {
  content: "";
  flex: 1 1 auto;
  height: .2mm;
  background: #e7d6c2;
}

.tpl-linha .cv-tags li {
  border-color: #e7d6c2;
  background: #fdf8f2;
}

/* ==========================================================================
   7. BLOCOS
   ========================================================================== */

.tpl-blocos {
  --acc: #334155;
  --acc-2: #64748b;
  background: #fff;
}

.tpl-blocos .cv-head {
  background: #f1f5f9;
  padding: 10mm 12mm;
  border-radius: 2mm;
  margin-bottom: 5mm;
}

.tpl-blocos .cv-sec {
  background: #f8fafc;
  border: .2mm solid #e2e8f0;
  border-radius: 2mm;
  padding: 5mm 6mm;
  margin-bottom: 4mm;
}

.tpl-blocos .cv-sec-titulo {
  border-bottom: 0;
  margin-bottom: 2mm;
}

.tpl-blocos .cv-foto {
  border-radius: 2mm;
}

/* ==========================================================================
   8. NATURAL (verde)
   ========================================================================== */

.tpl-verde {
  --acc: #15803d;
  --acc-2: #4b5563;
}

.tpl-verde .cv-nome {
  display: inline-block;
  padding-bottom: 1.5mm;
  border-bottom: 1.2mm solid #bbf7d0;
}

.tpl-verde .cv-sec-titulo {
  border-bottom-color: #bbf7d0;
  border-bottom-width: .6mm;
}

.tpl-verde .cv-tags li {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #14532d;
}

/* ==========================================================================
   9. LATERAL (premium) — barra esquerda escura
   ========================================================================== */

.tpl-lateral {
  --acc: #0b2545;
  /* escuro: --acc-2 também pinta .cv-item-org na coluna branca da direita.
     O claro da barra lateral é aplicado em regras próprias abaixo. */
  --acc-2: #475569;
  grid-template-areas: "head main" "aside main";
  grid-template-columns: 64mm minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  padding: 0;
  background: linear-gradient(to right, #0b2545 0, #0b2545 64mm, #fff 64mm, #fff 100%);
}

.tpl-lateral .cv-head {
  padding: 14mm 9mm 8mm;
  margin-bottom: 0;
  color: #fff;
}

.tpl-lateral .cv-nome {
  color: #fff;
  font-size: 18pt;
  line-height: 1.15;
}

.tpl-lateral .cv-cargo {
  color: #9dc4ff;
  font-size: 10.5pt;
}

.tpl-lateral .cv-contato {
  flex-direction: column;
  gap: 1.6mm;
  color: #cbd5e1;
  font-size: 8.8pt;
}

.tpl-lateral .cv-contato-item+.cv-contato-item::before {
  display: none;
}

.tpl-lateral .cv-head.tem-foto {
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4mm;
}

.tpl-lateral .cv-head.tem-foto .cv-contato {
  align-items: center;
}

.tpl-lateral .cv-foto {
  width: 32mm;
  height: 32mm;
  border: .8mm solid rgba(255, 255, 255, .25);
}

.tpl-lateral .cv-aside {
  padding: 0 9mm 12mm;
  margin-top: 0;
}

.tpl-lateral .cv-aside .cv-sec-titulo {
  color: #fff;
  border-bottom-color: rgba(255, 255, 255, .28);
}

.tpl-lateral .cv-aside .cv-tags li {
  background: rgba(255, 255, 255, .1);
  border-color: rgba(255, 255, 255, .2);
  color: #e8eefa;
}

.tpl-lateral .cv-aside .cv-idiomas li {
  color: #e8eefa;
  border-bottom-color: rgba(255, 255, 255, .18);
}

.tpl-lateral .cv-aside .cv-idioma-nivel {
  color: #9dc4ff;
}

.tpl-lateral .cv-main {
  padding: 14mm 14mm 14mm 12mm;
}

.tpl-lateral .cv-main .cv-sec-titulo {
  color: #0b2545;
  border-bottom-color: #d6dde8;
}

/* ==========================================================================
   10. EXECUTIVO (premium)
   ========================================================================== */

.tpl-executivo {
  --acc: #1e293b;
  --acc-2: #64748b;
  padding: 0 0 14mm;
}

.tpl-executivo .cv-head {
  background: #1e293b;
  color: #fff;
  padding: 14mm 16mm 11mm;
  margin-bottom: 8mm;
  text-align: center;
}

.tpl-executivo .cv-nome {
  color: #fff;
  font-size: 21pt;
  text-transform: uppercase;
  letter-spacing: .14em;
  font-weight: 700;
}

.tpl-executivo .cv-cargo {
  color: #cbd5e1;
  text-transform: uppercase;
  letter-spacing: .2em;
  font-size: 9.6pt;
  margin-top: 2mm;
}

.tpl-executivo .cv-contato {
  justify-content: center;
  color: rgba(255, 255, 255, .82);
  margin-top: 3mm;
}

.tpl-executivo .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .45);
}

.tpl-executivo .cv-main,
.tpl-executivo .cv-aside {
  padding: 0 16mm;
}

.tpl-executivo .cv-sec-titulo {
  text-align: center;
  border-bottom: 0;
  border-top: .4mm solid #1e293b;
  padding: 1.6mm 0 0;
  letter-spacing: .18em;
}

.tpl-executivo .cv-head.tem-foto {
  flex-direction: column;
  gap: 4mm;
}

.tpl-executivo .cv-foto {
  border: .8mm solid rgba(255, 255, 255, .3);
}

/* ==========================================================================
   11. CRIATIVO (premium)
   ========================================================================== */

.tpl-criativo {
  --acc: #7c3aed;
  --acc-2: #5b6b82;
  padding: 0 0 14mm;
}

.tpl-criativo .cv-head {
  padding: 13mm 16mm 9mm;
  margin-bottom: 7mm;
  background: linear-gradient(130deg, #7c3aed 0%, #2f80ed 100%);
  color: #fff;
  border-bottom-right-radius: 14mm;
}

.tpl-criativo .cv-nome {
  color: #fff;
  font-size: 23pt;
  font-weight: 900;
}

.tpl-criativo .cv-cargo {
  color: rgba(255, 255, 255, .9);
  font-weight: 700;
}

.tpl-criativo .cv-contato {
  color: rgba(255, 255, 255, .92);
}

.tpl-criativo .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .6);
}

.tpl-criativo .cv-main,
.tpl-criativo .cv-aside {
  padding: 0 16mm;
}

.tpl-criativo .cv-sec-titulo {
  border-bottom: 0;
  color: #7c3aed;
  display: inline-block;
  background: #f3ebff;
  padding: 1.2mm 3mm;
  border-radius: 1mm;
}

.tpl-criativo .cv-bullets li::before {
  background: #7c3aed;
}

.tpl-criativo .cv-tags li {
  background: #f3ebff;
  border-color: #ddc9ff;
  color: #5b21b6;
  border-radius: 999px;
  padding: .8mm 3mm;
}

.tpl-criativo .cv-foto {
  border: 1mm solid rgba(255, 255, 255, .65);
}

/* ==========================================================================
   12. LINHA DO TEMPO (premium)
   ========================================================================== */

.tpl-linhadotempo {
  --acc: #be123c;
  --acc-2: #57534e;
}

.tpl-linhadotempo .cv-head {
  border-left: 1.4mm solid #be123c;
  padding-left: 5mm;
}

.tpl-linhadotempo .cv-sec-titulo {
  border-bottom: 0;
  color: #be123c;
  letter-spacing: .14em;
}

.tpl-linhadotempo .cv-sec .cv-sec-corpo {
  position: relative;
}

.tpl-linhadotempo .cv-item {
  position: relative;
  padding-left: 6mm;
  padding-bottom: 1mm;
}

.tpl-linhadotempo .cv-item::before {
  content: "";
  position: absolute;
  left: 1.3mm;
  top: 2mm;
  bottom: -3mm;
  width: .3mm;
  background: #f1d4da;
}

.tpl-linhadotempo .cv-item:last-child::before {
  display: none;
}

.tpl-linhadotempo .cv-item::after {
  content: "";
  position: absolute;
  left: 0;
  top: 1.6mm;
  width: 2.8mm;
  height: 2.8mm;
  border-radius: 50%;
  background: #fff;
  border: .6mm solid #be123c;
}

.tpl-linhadotempo .cv-tags li {
  border-color: #f1d4da;
  background: #fff5f6;
  color: #881337;
}

/* ==========================================================================
   13. RETRATO (premium) — foto grande centralizada
   ========================================================================== */

.tpl-retrato {
  --acc: #0f766e;
  --acc-2: #475569;
  padding: 0 0 14mm;
}

.tpl-retrato .cv-head {
  background: #f1f7f6;
  padding: 12mm 16mm 9mm;
  margin-bottom: 7mm;
  text-align: center;
  border-bottom: .8mm solid #0f766e;
}

.tpl-retrato .cv-head.tem-foto {
  flex-direction: column;
  gap: 4mm;
}

.tpl-retrato .cv-foto {
  width: 38mm;
  height: 38mm;
  border: 1.2mm solid #fff;
  box-shadow: 0 0 0 .4mm #cfe3e0;
}

.tpl-retrato .cv-nome {
  font-size: 21pt;
}

.tpl-retrato .cv-contato {
  justify-content: center;
}

.tpl-retrato .cv-main,
.tpl-retrato .cv-aside {
  padding: 0 16mm;
}

.tpl-retrato .cv-sec-titulo {
  border-bottom-width: .25mm;
  border-bottom-color: #cfe3e0;
}

.tpl-retrato .cv-tags li {
  background: #f1f7f6;
  border-color: #cfe3e0;
  color: #115e56;
}

/* ==========================================================================
   14. CARTÃO (premium) — cabeçalho em cartão, foto quadrada ao lado
   ========================================================================== */

.tpl-cartao {
  --acc: #1e40af;
  --acc-2: #475569;
  background: #f5f7fc;
  padding: 10mm;
}

.tpl-cartao .cv-head {
  background: #fff;
  border-radius: 3mm;
  padding: 8mm;
  margin-bottom: 6mm;
  border-left: 2mm solid #1e40af;
  box-shadow: 0 .6mm 2mm rgba(15, 27, 45, .08);
}

.tpl-cartao .cv-foto {
  width: 28mm;
  height: 28mm;
  border-radius: 2mm;
}

.tpl-cartao .cv-main,
.tpl-cartao .cv-aside {
  background: #fff;
  border-radius: 3mm;
  padding: 7mm 8mm;
  box-shadow: 0 .6mm 2mm rgba(15, 27, 45, .08);
}

.tpl-cartao .cv-aside:not(:empty) {
  margin-top: 6mm;
}

.tpl-cartao .cv-sec-titulo {
  border-bottom: 0;
  color: #1e40af;
}

.tpl-cartao .cv-tags li {
  background: #eef2fe;
  border-color: #c9d6fb;
  color: #1e3a8a;
}

/* ==========================================================================
   15. LATERAL CLARA (premium) — barra esquerda em verde-água suave
   ========================================================================== */

.tpl-lateralclara {
  --acc: #0f766e;
  --acc-2: #475569;
  grid-template-areas: "head main" "aside main";
  grid-template-columns: 64mm minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  padding: 0;
  background: linear-gradient(to right, #eef4f3 0, #eef4f3 64mm, #fff 64mm, #fff 100%);
}

.tpl-lateralclara .cv-head {
  padding: 14mm 9mm 6mm;
  margin-bottom: 0;
}

.tpl-lateralclara .cv-nome {
  font-size: 18pt;
  line-height: 1.15;
}

.tpl-lateralclara .cv-contato {
  flex-direction: column;
  gap: 1.6mm;
  font-size: 8.8pt;
}

.tpl-lateralclara .cv-contato-item+.cv-contato-item::before {
  display: none;
}

.tpl-lateralclara .cv-head.tem-foto {
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4mm;
}

.tpl-lateralclara .cv-head.tem-foto .cv-contato {
  align-items: center;
}

.tpl-lateralclara .cv-foto {
  width: 32mm;
  height: 32mm;
  border: 1mm solid #fff;
  box-shadow: 0 0 0 .3mm #b9d3cf;
}

.tpl-lateralclara .cv-aside {
  padding: 0 9mm 12mm;
  margin-top: 0;
}

.tpl-lateralclara .cv-aside .cv-tags li {
  background: #fff;
  border-color: #c5dcd8;
}

.tpl-lateralclara .cv-main {
  padding: 14mm 14mm 14mm 12mm;
}

/* ==========================================================================
   16. LATERAL DIREITA (premium) — barra terrosa à direita
   ========================================================================== */

.tpl-lateraldireita {
  --acc: #9a3412;
  --acc-2: #57534e;
  grid-template-areas: "head aside" "main aside";
  grid-template-columns: minmax(0, 1fr) 62mm;
  grid-template-rows: auto 1fr;
  padding: 0;
  background: linear-gradient(to left, #9a3412 0, #9a3412 62mm, #fff 62mm, #fff 100%);
}

.tpl-lateraldireita .cv-head {
  padding: 14mm 10mm 2mm 14mm;
  margin-bottom: 4mm;
}

.tpl-lateraldireita .cv-main {
  padding: 0 10mm 14mm 14mm;
}

.tpl-lateraldireita .cv-aside {
  margin-top: 0;
  padding: 14mm 8mm 12mm;
}

.tpl-lateraldireita .cv-aside .cv-sec-titulo {
  color: #fff;
  border-bottom-color: rgba(255, 255, 255, .35);
}

.tpl-lateraldireita .cv-aside .cv-tags li {
  background: rgba(255, 255, 255, .12);
  border-color: rgba(255, 255, 255, .25);
  color: #fff4ec;
}

.tpl-lateraldireita .cv-aside .cv-idiomas li {
  color: #fff4ec;
  border-bottom-color: rgba(255, 255, 255, .25);
}

.tpl-lateraldireita .cv-aside .cv-idioma-nivel {
  color: #fdba74;
}

/* ==========================================================================
   17. DUAS COLUNAS (premium)
   ========================================================================== */

.tpl-duascolunas {
  --acc: #2563eb;
  --acc-2: #475569;
  grid-template-areas: "head head" "main aside";
  grid-template-columns: minmax(0, 1fr) 58mm;
  grid-template-rows: auto 1fr;
  column-gap: 8mm;
}

.tpl-duascolunas .cv-head {
  border-bottom: .8mm solid #2563eb;
  padding-bottom: 4mm;
}

.tpl-duascolunas .cv-aside {
  margin-top: 0;
  padding-left: 6mm;
  border-left: .25mm solid #dbe3f0;
}

.tpl-duascolunas .cv-tags li {
  background: #eff4ff;
  border-color: #cddbfb;
  color: #1e3a8a;
}

/* ==========================================================================
   18. NOITE (premium) — fundo escuro
   ========================================================================== */

.tpl-noite {
  --acc: #38bdf8;
  --acc-2: #94a3b8;
  background: #0f172a;
  color: #e2e8f0;
}

.tpl-noite .cv-nome {
  color: #fff;
}

.tpl-noite .cv-contato {
  color: #cbd5e1;
}

.tpl-noite .cv-contato-item+.cv-contato-item::before {
  color: #475569;
}

.tpl-noite .cv-item-titulo {
  color: #f1f5f9;
}

.tpl-noite .cv-periodo,
.tpl-noite .cv-idioma-nivel,
.tpl-noite .cv-curso-extra {
  color: #94a3b8;
}

.tpl-noite .cv-sec-titulo {
  border-bottom-color: #334155;
}

.tpl-noite .cv-tags li {
  background: #1e293b;
  border-color: #334155;
  color: #e2e8f0;
}

.tpl-noite .cv-idiomas li {
  border-bottom-color: #334155;
}

.tpl-noite .cv-foto {
  background: #1e293b;
  border: .6mm solid #38bdf8;
}

/* ==========================================================================
   19. CORAL (premium)
   ========================================================================== */

.tpl-coral {
  --acc: #e11d48;
  --acc-2: #64748b;
  padding: 0 0 14mm;
}

.tpl-coral .cv-head {
  background: linear-gradient(135deg, #ff7a59, #f43f5e);
  color: #fff;
  padding: 13mm 16mm 13mm;
  margin-bottom: 8mm;
  border-bottom-left-radius: 50% 8mm;
  border-bottom-right-radius: 50% 8mm;
}

.tpl-coral .cv-nome,
.tpl-coral .cv-cargo,
.tpl-coral .cv-contato {
  color: #fff;
}

.tpl-coral .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .6);
}

.tpl-coral .cv-main,
.tpl-coral .cv-aside {
  padding: 0 16mm;
}

.tpl-coral .cv-sec-titulo {
  display: inline-block;
  border-bottom: 0;
  background: #e11d48;
  color: #fff;
  padding: 1mm 3.5mm;
  border-radius: 999px;
}

.tpl-coral .cv-tags li {
  background: #fff1f2;
  border-color: #fecdd3;
  color: #9f1239;
  border-radius: 999px;
  padding: .8mm 3mm;
}

.tpl-coral .cv-foto {
  border: 1mm solid rgba(255, 255, 255, .7);
}

/* ==========================================================================
   20. PASTEL (premium)
   ========================================================================== */

.tpl-pastel {
  --acc: #6d5bd0;
  --acc-2: #6b7280;
  background: #fffaf5;
  padding: 10mm;
}

.tpl-pastel .cv-head {
  background: linear-gradient(135deg, #ffe4ec, #e5e0ff 60%, #d9f2ff);
  border-radius: 4mm;
  padding: 9mm 10mm;
  margin-bottom: 6mm;
}

.tpl-pastel .cv-nome {
  color: #3b2f7a;
}

.tpl-pastel .cv-main,
.tpl-pastel .cv-aside {
  padding: 0 4mm;
}

.tpl-pastel .cv-sec-titulo {
  border-bottom: 0;
  color: #3b2f7a;
}

.tpl-pastel .cv-sec-titulo::before {
  content: "";
  display: inline-block;
  width: 2.4mm;
  height: 2.4mm;
  margin-right: 2mm;
  border-radius: 50%;
  background: linear-gradient(135deg, #f472b6, #818cf8);
}

.tpl-pastel .cv-bullets li::before {
  background: #a5b4fc;
}

.tpl-pastel .cv-tags li {
  background: #f1eeff;
  border-color: #ddd6fe;
  color: #4c3fa8;
  border-radius: 999px;
  padding: .8mm 3mm;
}

.tpl-pastel .cv-foto {
  border: 1mm solid #fff;
}

/* ==========================================================================
   21. JORNAL (premium)
   ========================================================================== */

.tpl-jornal {
  --acc: #111111;
  --acc-2: #555555;
  font-family: Georgia, "Times New Roman", serif;
  background: #fdfcf8;
  padding: 14mm 16mm;
}

.tpl-jornal .cv-head {
  text-align: center;
  border-top: 1.2mm double #111;
  border-bottom: 1.2mm double #111;
  padding: 5mm 0 4mm;
}

.tpl-jornal .cv-nome {
  font-size: 27pt;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
}

.tpl-jornal .cv-cargo {
  font-style: italic;
  font-weight: 400;
}

.tpl-jornal .cv-contato {
  justify-content: center;
}

.tpl-jornal .cv-head.tem-foto {
  flex-direction: column;
  gap: 3mm;
}

.tpl-jornal .cv-foto {
  border-radius: 0;
  filter: grayscale(1);
  border: .3mm solid #111;
}

.tpl-jornal .cv-sec-titulo {
  text-align: center;
  font-family: "Inter", sans-serif;
  letter-spacing: .22em;
  border-top: .25mm solid #111;
  border-bottom: .25mm solid #111;
  padding: 1mm 0;
}

.tpl-jornal .cv-item-org {
  font-style: italic;
}

.tpl-jornal .cv-bullets li::before {
  border-radius: 0;
}

.tpl-jornal .cv-tags li {
  background: transparent;
  border-color: #111;
  border-radius: 0;
}

/* ==========================================================================
   22. TECH (premium)
   ========================================================================== */

.tpl-tech {
  --acc: #16a34a;
  --acc-2: #475569;
  font-family: "JetBrains Mono", "Fira Code", Consolas, "Courier New", monospace;
  font-size: 9.4pt;
  padding: 0 0 14mm;
}

.tpl-tech .cv-head {
  background: #0d1117;
  color: #e6edf3;
  padding: 12mm 16mm 9mm;
  margin-bottom: 8mm;
  border-bottom: 1mm solid #22c55e;
}

.tpl-tech .cv-nome {
  color: #4ade80;
  font-size: 19pt;
  letter-spacing: 0;
}

.tpl-tech .cv-nome::before {
  content: "> ";
  color: #e6edf3;
}

.tpl-tech .cv-cargo {
  color: #9ca3af;
  font-size: 10pt;
}

.tpl-tech .cv-contato {
  color: #c9d1d9;
  font-size: 8.8pt;
}

.tpl-tech .cv-contato-item+.cv-contato-item::before {
  color: #4b5563;
}

.tpl-tech .cv-main,
.tpl-tech .cv-aside {
  padding: 0 16mm;
}

.tpl-tech .cv-sec-titulo {
  border-bottom: 0;
  text-transform: none;
  letter-spacing: 0;
  font-size: 10.5pt;
  color: #15803d;
}

.tpl-tech .cv-sec-titulo::before {
  content: "// ";
  color: #9ca3af;
}

.tpl-tech .cv-bullets li,
.tpl-tech .cv-cursos li,
.tpl-tech .cv-idiomas li {
  font-size: 9pt;
}

.tpl-tech .cv-tags li {
  background: #0d1117;
  border-color: #0d1117;
  color: #4ade80;
  border-radius: 1mm;
  font-size: 8.6pt;
}

.tpl-tech .cv-foto {
  border-radius: 1mm;
  border: .6mm solid #22c55e;
}

/* ==========================================================================
   23. FAIXA (premium) — faixa vertical à esquerda
   ========================================================================== */

.tpl-faixa {
  --acc: #0e7490;
  --acc-2: #475569;
  padding: 15mm 16mm 15mm 26mm;
  background: linear-gradient(to right, #0e7490 0, #0e7490 10mm, #67e8f9 10mm, #67e8f9 12mm, #fff 12mm);
}

.tpl-faixa .cv-nome {
  font-size: 24pt;
}

.tpl-faixa .cv-tags li {
  background: #ecfeff;
  border-color: #a5f3fc;
  color: #155e75;
}

/* ==========================================================================
   24. OURO (premium)
   ========================================================================== */

.tpl-ouro {
  --acc: #a16207;
  --acc-2: #57534e;
  font-family: "Lora", Georgia, serif;
  padding: 0 0 14mm;
}

.tpl-ouro .cv-head {
  background: #111;
  color: #f5e6c4;
  padding: 14mm 16mm 10mm;
  margin-bottom: 8mm;
  border-bottom: 1.2mm solid #c9a24b;
}

.tpl-ouro .cv-nome {
  color: #e7c873;
  font-weight: 600;
  font-size: 23pt;
  letter-spacing: .06em;
}

.tpl-ouro .cv-cargo {
  color: #d6c9a8;
  font-style: italic;
}

.tpl-ouro .cv-contato {
  color: #e8dcc0;
}

.tpl-ouro .cv-contato-item+.cv-contato-item::before {
  color: #a8905a;
}

.tpl-ouro .cv-main,
.tpl-ouro .cv-aside {
  padding: 0 16mm;
}

.tpl-ouro .cv-sec-titulo {
  font-family: "Inter", sans-serif;
  border-bottom-color: #c9a24b;
  border-bottom-width: .3mm;
}

.tpl-ouro .cv-bullets li::before {
  background: #c9a24b;
}

.tpl-ouro .cv-tags li {
  background: #fbf6e8;
  border-color: #e8d9a8;
  color: #6b4e0b;
  border-radius: 0;
}

.tpl-ouro .cv-foto {
  border: .8mm solid #c9a24b;
}

/* ==========================================================================
   25. OCEANO (premium) — degradê com recorte inclinado
   ========================================================================== */

.tpl-oceano {
  --acc: #0369a1;
  --acc-2: #475569;
  padding: 0 0 14mm;
}

.tpl-oceano .cv-head {
  background: linear-gradient(120deg, #0ea5e9, #0d9488);
  color: #fff;
  padding: 13mm 16mm 18mm;
  margin-bottom: 2mm;
  clip-path: polygon(0 0, 100% 0, 100% 82%, 0 100%);
}

.tpl-oceano .cv-nome,
.tpl-oceano .cv-cargo,
.tpl-oceano .cv-contato {
  color: #fff;
}

.tpl-oceano .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .6);
}

.tpl-oceano .cv-main,
.tpl-oceano .cv-aside {
  padding: 0 16mm;
}

.tpl-oceano .cv-sec-titulo {
  border-bottom: 0;
  border-left: 1.2mm solid #0ea5e9;
  padding: 0 0 0 2.5mm;
}

.tpl-oceano .cv-tags li {
  background: #e0f2fe;
  border-color: #bae6fd;
  color: #075985;
  border-radius: 999px;
  padding: .8mm 3mm;
}

.tpl-oceano .cv-foto {
  border: 1mm solid rgba(255, 255, 255, .7);
}

/* ==========================================================================
   26. ROSA (premium) — centralizado e delicado
   ========================================================================== */

.tpl-rosa {
  --acc: #be185d;
  --acc-2: #6b7280;
}

.tpl-rosa .cv-head {
  text-align: center;
  border-bottom: .3mm solid #f9a8d4;
  padding-bottom: 5mm;
}

.tpl-rosa .cv-nome {
  font-size: 24pt;
  font-weight: 700;
}

.tpl-rosa .cv-cargo {
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: 9.6pt;
}

.tpl-rosa .cv-contato {
  justify-content: center;
}

.tpl-rosa .cv-head.tem-foto {
  flex-direction: column;
  gap: 3mm;
}

.tpl-rosa .cv-foto {
  width: 30mm;
  height: 30mm;
  border: 1mm solid #fbcfe8;
}

.tpl-rosa .cv-sec-titulo {
  display: flex;
  align-items: center;
  gap: 3mm;
  border-bottom: 0;
}

.tpl-rosa .cv-sec-titulo::before,
.tpl-rosa .cv-sec-titulo::after {
  content: "";
  flex: 1 1 auto;
  height: .25mm;
  background: #f9a8d4;
}

.tpl-rosa .cv-tags li {
  background: #fdf2f8;
  border-color: #fbcfe8;
  color: #9d174d;
  border-radius: 999px;
  padding: .8mm 3mm;
}

/* ==========================================================================
   27. NUMERADO (premium) — 01, 02, 03...
   ========================================================================== */

.tpl-numerado {
  --acc: #111827;
  --acc-2: #6b7280;
  counter-reset: secao;
}

.tpl-numerado .cv-head {
  border-bottom: .5mm solid #111827;
  padding-bottom: 5mm;
}

.tpl-numerado .cv-nome {
  font-size: 26pt;
  font-weight: 900;
}

.tpl-numerado .cv-sec-titulo {
  counter-increment: secao;
  display: flex;
  align-items: baseline;
  gap: 3mm;
  border-bottom: 0;
}

.tpl-numerado .cv-sec-titulo::before {
  content: counter(secao, decimal-leading-zero);
  font-size: 15pt;
  font-weight: 300;
  letter-spacing: 0;
  color: #f97316;
}

.tpl-numerado .cv-bullets li::before {
  background: #f97316;
}

.tpl-numerado .cv-tags li {
  background: #fff7ed;
  border-color: #fed7aa;
  color: #9a3412;
}

.tpl-numerado .cv-foto {
  border-radius: 1.5mm;
}

/* ==========================================================================
   28. GEOMÉTRICO (premium) — faixas diagonais no cabeçalho
   ========================================================================== */

.tpl-geometrico {
  --acc: #1d4ed8;
  --acc-2: #475569;
  padding: 0 0 14mm;
}

.tpl-geometrico .cv-head {
  background: linear-gradient(100deg, #1e3a8a 0, #1e3a8a 72%, #2563eb 72%, #2563eb 83%, #fbbf24 83%, #fbbf24 88%, #f43f5e 88%, #f43f5e 100%);
  color: #fff;
  padding: 13mm 66mm 10mm 16mm;
  margin-bottom: 8mm;
}

.tpl-geometrico .cv-nome,
.tpl-geometrico .cv-cargo,
.tpl-geometrico .cv-contato {
  color: #fff;
}

.tpl-geometrico .cv-nome {
  font-weight: 900;
}

.tpl-geometrico .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .55);
}

.tpl-geometrico .cv-main,
.tpl-geometrico .cv-aside {
  padding: 0 16mm;
}

.tpl-geometrico .cv-sec-titulo {
  border-bottom: 0;
  border-left: 1.6mm solid #fbbf24;
  padding-left: 2.5mm;
}

.tpl-geometrico .cv-tags li {
  background: #eff4ff;
  border-color: #cddbfb;
  color: #1e3a8a;
  border-radius: 0;
}

.tpl-geometrico .cv-foto {
  border-radius: 1.5mm;
  border: .8mm solid #fbbf24;
}

/* ==========================================================================
   29. ACADÊMICO (premium)
   ========================================================================== */

.tpl-academico {
  --acc: #1f2937;
  --acc-2: #4b5563;
  font-family: Georgia, "Times New Roman", serif;
  padding: 16mm 20mm;
}

.tpl-academico .cv-head {
  border-bottom: .3mm solid #1f2937;
  padding-bottom: 4mm;
}

.tpl-academico .cv-nome {
  font-size: 20pt;
  font-weight: 700;
  letter-spacing: 0;
}

.tpl-academico .cv-sec-titulo {
  font-variant: small-caps;
  text-transform: none;
  letter-spacing: .06em;
  font-size: 11.5pt;
  border-bottom: .2mm solid #9ca3af;
}

.tpl-academico .cv-item-org {
  font-style: italic;
}

.tpl-academico .cv-bullets li::before {
  width: 1.1mm;
  height: 1.1mm;
  top: 2mm;
  border-radius: 0;
}

.tpl-academico .cv-tags li {
  border: 0;
  background: transparent;
  padding: 0;
}

.tpl-academico .cv-tags li:not(:last-child)::after {
  content: ",";
}

.tpl-academico .cv-foto {
  border-radius: 0;
  border: .3mm solid #9ca3af;
}

/* ==========================================================================
   30. MOLDURA (premium) — filete duplo em volta da página
   ========================================================================== */

.tpl-moldura {
  --acc: #7c2d12;
  --acc-2: #57534e;
  padding: 19mm 22mm;
  box-shadow:
    inset 0 0 0 7mm #fff,
    inset 0 0 0 7.5mm #7c2d12,
    inset 0 0 0 8.7mm #fff,
    inset 0 0 0 9mm #7c2d12;
}

.tpl-moldura .cv-head {
  text-align: center;
}

.tpl-moldura .cv-nome {
  font-family: "Lora", Georgia, serif;
  font-weight: 600;
  font-size: 23pt;
}

.tpl-moldura .cv-contato {
  justify-content: center;
}

.tpl-moldura .cv-head.tem-foto {
  flex-direction: column;
  gap: 3mm;
}

.tpl-moldura .cv-foto {
  border: .5mm solid #7c2d12;
  padding: .6mm;
  background: #fff;
}

.tpl-moldura .cv-sec-titulo {
  text-align: center;
  border-bottom: 0;
  letter-spacing: .18em;
}

.tpl-moldura .cv-tags li {
  background: #fdf6f0;
  border-color: #ecd5c4;
  color: #7c2d12;
}

/* ==========================================================================
   31. PÔR DO SOL (premium) — degradê quente e coluna creme
   ========================================================================== */

.tpl-sunset {
  --acc: #ea580c;
  --acc-2: #57534e;
  grid-template-areas: "head head" "main aside";
  grid-template-columns: minmax(0, 1fr) 56mm;
  grid-template-rows: auto 1fr;
  padding: 0;
  background: linear-gradient(to left, #fff5ea 0, #fff5ea 56mm, #fff 56mm, #fff 100%);
}

.tpl-sunset .cv-head {
  background: linear-gradient(110deg, #f59e0b, #f43f5e 60%, #a21caf);
  color: #fff;
  padding: 13mm 16mm 10mm;
  margin-bottom: 8mm;
}

.tpl-sunset .cv-nome,
.tpl-sunset .cv-cargo,
.tpl-sunset .cv-contato {
  color: #fff;
}

.tpl-sunset .cv-nome {
  font-weight: 900;
  font-size: 24pt;
}

.tpl-sunset .cv-contato-item+.cv-contato-item::before {
  color: rgba(255, 255, 255, .6);
}

.tpl-sunset .cv-main {
  padding: 0 8mm 14mm 16mm;
}

.tpl-sunset .cv-aside {
  margin-top: 0;
  padding: 0 8mm 14mm;
}

.tpl-sunset .cv-sec-titulo {
  border-bottom-color: #fed7aa;
}

.tpl-sunset .cv-aside .cv-tags li {
  background: #fff;
  border-color: #fed7aa;
  color: #9a3412;
}

.tpl-sunset .cv-foto {
  border: 1mm solid rgba(255, 255, 255, .7);
}
