﻿/* ============================================================ */
/* PROGRAMA PRATICO DE FORMACAO LEAN (PPFL) — pagina completa   */
/* Origem: figma-to-bootstrap/outputs/ppfl-geral/merged/styles.css */
/*                                                              */
/* Adaptacoes para o LeanWeb:                                   */
/*  - `:root` e `body` do mockup foram escopados ao wrapper      */
/*    `.ppfl-page`, para nao vazarem nos tokens/fonte do         */
/*    header e do footer do layout global.                       */
/*  - paths de icones reapontados para                           */
/*    ~/img/academia/programa-formacao-lean/icons/.              */
/* A fonte da verdade continua sendo o merge do figma-to-bootstrap. */
/* ============================================================ */

/* ============================================================ */
/* PPFL GERAL — PÁGINA COMPLETA (LIB)                         */
/* Merge das 9 seções de sections/, nesta ordem:              */
/* hero · menu · formação · setorial · certificação ·         */
/* benefícios · depoimentos · detalhes · jornada              */
/*                                                            */
/* Gerado a partir de sections/*.css — a fonte da verdade     */
/* continua sendo cada seção; ao editá-las, refazer o merge.  */
/* Aqui os :root de todas as seções viram um só (sem conflito */
/* de valores) e o body{} repetido vira uma regra única.      */
/* ============================================================ */

.ppfl-page {
  /* --- HERO — sec-topo  (1-hero.css) --- */
  /* Cores */
  --color-navy-deep:      #29235c;
  --color-navy-mid:       #2a2566;
  --color-indigo:         #394195;
  --color-teal:           #169194;
  --color-accent:         #ff8000;
  --color-accent-dark:    #e67300;
  --color-amber:          #ffa626;
  --color-white:          #ffffff;

  /* Tipografia */
  --font-primary:          'Roboto', sans-serif;
  --font-weight-regular:   400;
  --font-weight-bold:      700;
  --font-weight-extrabold: 800;
  --font-weight-black:     900;

  /* Hero */
  --hero-ppfl-top-height:  536px;  /* bloco superior, antes da faixa de números */
  --hero-ppfl-stats-height: 115px; /* faixa de números */
  --hero-ppfl-panel-width: 749px;  /* largura do painel de metodologia */
  --hero-ppfl-intro-width: 531px;  /* largura do bloco de texto à esquerda */
  --hero-ppfl-columns-gap: 65px;

  /* Inclinação do ✓ dos cards: o Figma desenha a haste longa a 54,1° do
     horizontal; o fallback do macOS para U+2713 (Hiragino Sans) desenha a
     62,2°. Os 8° de rotação horária fecham essa diferença. */
  --hero-ppfl-check-tilt:  8deg;

  /* --- MENU DE ÂNCORAS  (2-menu.css) --- */
  /* Cores */
  --color-lilac-bg:       #f3f2ff;  /* fundo da faixa (Rectangle 1646) */
  --color-rule:           #b8b8b8;  /* traço Line 46 */

  /* Menu — medidas retiradas do frame do Figma
     texto: y 22 → 48 (line-height 25.79)
     traço cinza: y 59 (1px)
     indicador laranja: y 58 → 61 (3px) */
  --menu-ppfl-height:      84px;
  --menu-ppfl-text-top:    22px;
  --menu-ppfl-line-height: 25.79px;
  --menu-ppfl-rule-gap:    11px;    /* base do texto (48) → traço (59) */
  --menu-ppfl-bar-drop:    13px;    /* base do texto (48) → base da barra (61) */
  --menu-ppfl-sep-gap:     9px;     /* equivale aos 2 espaços de cada lado do "|" */

  /* --- FORMAÇÃO — sec-formacao  (4-formacao.css) --- */
  /* Cores */
  --color-violet:         #534ab7;
  --color-text-muted:     #5b5880;
  --color-border-soft:    #e3e5ee;
  --color-surface-light:  #f7f7f7;

  /* Stepper — medidas do Figma (coordenadas locais da etapa, a partir do
     topo do trilho: y 289 no frame)
       trilho ....... 0 → 64      (círculo fantasma 60.16, centro y 32)
       vão .......... 16
       cards ........ 80 → 330    (card aberto 250; fechado 80)
     São 240px entre os centros das colunas; 1200px no total. */
  --formacao-ppfl-col:         240px;
  --formacao-ppfl-rail:        64px;   /* célula do trilho = círculo aberto */
  --formacao-ppfl-dot-scale:   0.94;   /* 60.16 / 64 — círculo fechado */
  --formacao-ppfl-rail-gap:    16px;
  --formacao-ppfl-card:        200px;
  --formacao-ppfl-card-active: 212px;
  --formacao-ppfl-card-height: 250px;  /* altura reservada para a faixa de cards */
  --formacao-ppfl-step-height: 376px;  /* altura do layout original (com repouso no rodapé) — mantida */
  --formacao-ppfl-dim:         0.55;   /* opacidade das etapas fechadas */
  --formacao-ppfl-ease:        cubic-bezier(0.4, 0, 0.2, 1);

  /* --- ESCOLHA SETORIAL — sec-setorial  (7-setorial.css) --- */
  /* Cores */
  --color-navy-darker:    #1d1846;  /* hover do CTA indústria */
  --color-green:          #1d9e75;
  --color-green-dark:     #17805f;  /* hover do CTA serviços */
  --color-meta:           #666666;
  --color-card-warm:      #fff8f7;  /* fundo do card Indústria */
  --color-card-cool:      #f7f8ff;  /* fundo do card Serviços */

  /* Escolha setorial — medidas retiradas do frame do Figma
     seção: padding 90px, container 1100 (conteúdo 1036)
     cards: 504 x 563, gap 28
     capa: 200px de altura, faixa de setores 50px colada na base */
  --setorial-ppfl-container:    1100px;
  --setorial-ppfl-gutter:       32px;
  --setorial-ppfl-card-gap:     28px;
  --setorial-ppfl-media-height: 200px;
  --setorial-ppfl-strip-height: 50px;

  /* --- CERTIFICAÇÃO — sec-upsell (dupla cert.)  (9-upsell.css) --- */
  /* Cores */
  --color-blood:          #830305;  /* acento da aba Supply Chain */
  --color-surface-soft:   #f5f6fa;

  /* Upsell — medidas retiradas do frame do Figma
     seção: padding 90px, container 1100 (conteúdo 1036), gap 24
     card: 1036 x 567, raio 26, painel de imagem 439 fixo
     corpo do card: padding 51 / 44 / 52, gap 20 */
  --upsell-ppfl-container:    1100px;
  --upsell-ppfl-gutter:       32px;
  --upsell-ppfl-stack-gap:    24px;
  --upsell-ppfl-card-height:  567px;
  --upsell-ppfl-media-width:  439px;
  --upsell-ppfl-fade:         520ms;
  --upsell-ppfl-ease:         cubic-bezier(.4, 0, .2, 1);

  /* --- BENEFÍCIOS — sec-beneficios  (3-beneficios.css) --- */
  /* Cores */
  --color-magenta:        #cb6ce6;
  --color-divider:        #999999;
  --color-lilac:          #efeafb;  /* fim do gradiente de fundo */

  /* Benefícios — medidas retiradas do frame do Figma
     seção: padding 90px em cima, 72px embaixo
     conteúdo: 1148px = 2 colunas de 544 (34 + 20 + 490) + 60 de vão
     card: 490 de largura; trilho de selos 34px à esquerda */
  --beneficios-ppfl-container:  1212px;  /* 1148 de conteúdo + 2 x 32 de goteira */
  --beneficios-ppfl-gutter:     32px;
  --beneficios-ppfl-content:    1148px;
  --beneficios-ppfl-col-gap:    60px;
  --beneficios-ppfl-badge:      34px;
  --beneficios-ppfl-rail-gap:   20px;
  --beneficios-ppfl-card-gap:   7px;
  --beneficios-ppfl-pad-y:      18px;    /* padding vertical da linha do título */
  --beneficios-ppfl-pad-x:      20px;
  --beneficios-ppfl-slot:       18px;    /* altura do "+" (card fechado) */
  --beneficios-ppfl-slot-open:  34px;    /* altura do "x" (card aberto) */
  --beneficios-ppfl-indent:     68px;    /* recuo do texto da descrição */

  /* --- DEPOIMENTOS — variante em imagem  (8-depoimentos.css) --- */
  /* Cores da arte do depoimento (amostradas do export do Figma) */
  --dep-art-from:         #fbf7f2;
  --dep-art-to:           #d2d9e2;
  --dep-name:             #222221;
  --dep-role:             #9e9e9e;
  --dep-quote:            #4f7488;
  --dep-star:             #eac134;
  --dep-linkedin:         #0a66c2;
  --dep-phone-shell:      #231f20;
  --dep-phone-line:       #ececec;
  --dep-phone-name:       #303030;
  --dep-phone-role:       #919190;
  --dep-phone-quote:      #6f8895;
  --dep-phone-chrome:     #e8e8e8;
  --dep-phone-icon:       #7ea9cb;
  --dep-phone-badge:      #00acee;

  /* Palco do carrossel — a arte é desenhada em px no tamanho do
     Figma (666 x 533) e o conjunto inteiro é reduzido por
     `--dep-zoom`, então um único número controla o responsivo. */
  --dep-art-w:   666px;
  --dep-art-h:   533px;
  --dep-zoom:    1;

  /* Níveis do "coverflow" (escala/opacidade lidas do frame; o
     deslocamento é a média entre o vizinho da esquerda e o da
     direita, que no Figma estão ~62px fora de simetria) */
  --dep-x-1: 326px;   --dep-s-1: 0.733;  --dep-o-1: 0.91;
  --dep-x-2: 580px;   --dep-s-2: 0.682;  --dep-o-2: 0.31;
  --dep-x-3: 876px;   --dep-s-3: 0.573;  --dep-o-3: 0.20;

  /* --- DETALHES PARA ESPECIALISTAS  (6-detalhes.css) --- */
  /* Cores */
  --color-teal-dark:      #0f7376;  /* hover do CTA */
  --color-text-strong:    #1d1b33;

  /* --- DÚVIDAS — FAQ (oculta)  (10-faq.css) --- */
  /* FAQ */
  --faq-ppfl-container: 920px;
  --faq-ppfl-gutter:    32px;
  --faq-ppfl-gap:       12px;   /* vão entre as perguntas */
  --faq-ppfl-radius:    14px;
  --faq-ppfl-pad:       22px;
  --faq-ppfl-sinal:     18px;   /* lado do "+" / "×" */

  /* --- JORNADA — continue sua jornada  (5-jornada.css) --- */
  /* Jornada — medidas retiradas do frame do Figma
     seção: padding 88px no topo, 56px na base
     contêiner 1080 (conteúdo 1016), cards de 480px com raio 18
     larguras: 682 aberto / 314 fechado — usadas como razão de flex-grow */
  --jornada-ppfl-container:   1080px;
  --jornada-ppfl-gutter:      32px;
  --jornada-ppfl-card-gap:    8px;
  --jornada-ppfl-card-height: 480px;
  --jornada-ppfl-radius:      18px;
  --jornada-ppfl-pad:         34px;
  --jornada-ppfl-grow-open:   682;
  --jornada-ppfl-grow-closed: 314;

  /* Mesmo easing/duração do stepper da seção 4 */
  --jornada-ppfl-dur:  450ms;
  --jornada-ppfl-ease: cubic-bezier(.4, 0, .2, 1);
}


/* ============================================================ */
/* GLOBAL                                                     */
/* ============================================================ */
.ppfl-page {
  font-family: var(--font-primary);
  margin: 0;
  padding: 0;
}


/* ============================================================ */
/* 1/10 — HERO — sec-topo                                     */
/* origem: sections/1-hero.css                                */
/* ============================================================ */
.hero-ppfl {
  position: relative;
  overflow: hidden;
  background-color: var(--color-navy-deep);
}

/* --- Camadas de fundo ---
   `isolation: isolate` confina o mix-blend-mode da foto às camadas
   de fundo, sem afetar o conteúdo do hero. */
.hero-ppfl__bg {
  position: absolute;
  inset: 0;
  isolation: isolate;
  pointer-events: none;
  z-index: 0;
}

/* Gradiente base do Figma: 162.63deg sobre branco, com alfa 0.9 */
.hero-ppfl__bg-gradient {
  position: absolute;
  inset: 0;
  background-color: var(--color-white);
  background-image: linear-gradient(
    162.63deg,
    rgba(41, 35, 92, 0.9)   0%,
    rgba(42, 37, 102, 0.9)  55%,
    rgba(57, 65, 149, 0.9)  100%
  );
}

/* Foto do gemba em soft-light @ 64% (composição do Figma) */
.hero-ppfl__bg-photo {
  position: absolute;
  inset: 0;
  overflow: hidden;
  mix-blend-mode: soft-light;
  opacity: 0.64;
}

.hero-ppfl__bg-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* No Figma a foto tem 195.94% da altura da seção e é deslocada
     -31.58% no topo → o recorte visível fica centrado em 41.6% */
  object-position: 50% 41.6%;
}

/* Ultrawide: a foto para de crescer em 2560px e fica centrada — acima disso o
   `cover` só a esticava (o arquivo tem 2000px de largura, então já vinha sendo
   ampliado). As sobras laterais ficam com o gradiente e os brilhos do próprio
   hero, que são CSS e não perdem qualidade ao esticar; a máscara de 200px
   dissolve as duas emendas. A centragem usa `margin-inline` (e não transform)
   para não disputar com o parallax que roda na <img> de dentro. */
@media (min-width: 2560px) {
  .hero-ppfl__bg-photo {
    max-width: 2560px;
    margin-inline: auto;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 200px, #000 calc(100% - 200px), transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 200px, #000 calc(100% - 200px), transparent 100%);
  }
}

/* Dois brilhos radiais: violeta (topo-esquerda) e teal (base-direita) */
.hero-ppfl__bg-glow {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(66.09% 62.21% at 15% 20%,
      rgba(83, 74, 183, 0.35) 0%,
      rgba(83, 74, 183, 0)    100%),
    radial-gradient(63.64% 60.10% at 90% 85%,
      rgba(22, 145, 148, 0.25) 0%,
      rgba(22, 145, 148, 0)    100%);
}


/* ============================================================ */
/* HERO: BLOCO SUPERIOR (texto + painel)                       */
/* ============================================================ */
.hero-ppfl__container {
  position: relative;
  z-index: 2;
  max-width: 1410px;                     /* 1474px do Figma menos os paddings */
  margin: 0 auto;
  padding: 96px 32px 32px;
}

.hero-ppfl__grid {
  display: flex;
  align-items: flex-start;
  gap: var(--hero-ppfl-columns-gap);
}

.hero-ppfl__intro {
  flex: 0 1 var(--hero-ppfl-intro-width);
  max-width: var(--hero-ppfl-intro-width);
  min-height: 408px;
}


/* --- Título, subtítulo, régua e CTAs --- */
.hero-ppfl__title {
  max-width: 478px;
  margin: 22px 0 0;
  font-size: 3.3rem;                     /* 52.8px */
  font-weight: var(--font-weight-black);
  line-height: 59.14px;
  letter-spacing: -0.528px;
  color: var(--color-white);
}

.hero-ppfl__subtitle {
  max-width: 520px;
  margin: 13.72px 0 0;
  font-size: 1.25rem;                    /* 20px */
  font-weight: var(--font-weight-regular);
  line-height: 1.1913;
  color: var(--color-white);
}

.hero-ppfl__subtitle strong {
  font-weight: var(--font-weight-extrabold);
}

.hero-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 30.5px 0 0 2px;
  background-color: var(--color-accent);
}

.hero-ppfl__actions {
  margin-top: 32px;
  gap: 14px;
}

.btn-ppfl {
  display: inline-flex;
  align-items: center;
  padding: 15.5px 28px 16.31px;
  border-radius: 12px;
  font-size: 0.919rem;                   /* 14.7px */
  font-weight: var(--font-weight-bold);
  line-height: 22.82px;
  color: var(--color-white);
  text-decoration: none;
  transition: background-color 0.2s, border-color 0.2s;
}

.btn-ppfl--primary {
  background-color: var(--color-accent);
  box-shadow: 0 10px 26px -10px rgba(255, 128, 0, 0.55);
}

.btn-ppfl--primary:hover {
  background-color: var(--color-accent-dark);
  color: var(--color-white);
}

.btn-ppfl--outline {
  padding-left: 29px;
  padding-right: 29px;
  border: 1px solid rgba(255, 255, 255, 0.4);
}

.btn-ppfl--outline:hover {
  border-color: rgba(255, 255, 255, 0.75);
  color: var(--color-white);
}


/* ============================================================ */
/* HERO: PAINEL DE METODOLOGIA (glass)                         */
/* ============================================================ */
.hero-ppfl__panel {
  flex: 0 0 var(--hero-ppfl-panel-width);
  max-width: var(--hero-ppfl-panel-width);
  min-height: 348px;
  margin-top: 8px;
  padding: 33px 23px 30px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 22px;
  background-color: rgba(255, 255, 255, 0.07);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
}

.hero-ppfl__panel-title {
  margin: 0 24px 0 0;
  font-size: 1.15rem;                    /* 18.4px */
  font-weight: var(--font-weight-bold);
  line-height: 25.76px;
  color: var(--color-white);
}


/* --- Grade 2x2 de diferenciais --- */
.hero-ppfl__features {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 13.69px 14px;
  margin: 22px 0 0;
  padding: 0;
}

.hero-ppfl__feature {
  position: relative;
  min-height: 98.83px;
  padding: 14px 16px 16px;
  border: 1px solid var(--color-amber);
  border-top-width: 2px;
  border-radius: 4px;
  background-color: rgba(255, 255, 255, 0.05);
}

.hero-ppfl__feature-title {
  margin: 0 44px 0 0;                    /* espaço para o selo de check */
  font-size: 0.838rem;                   /* 13.4px */
  font-weight: var(--font-weight-bold);
  line-height: 20.83px;
  color: var(--color-white);
}

.hero-ppfl__feature-text {
  margin: 8px 0 0;
  font-size: 0.738rem;                   /* 11.8px */
  font-weight: var(--font-weight-regular);
  line-height: 18.35px;
  color: rgba(255, 255, 255, 0.55);
}

/* Selo de check: no Figma o glifo "✓" tem 20px numa caixa de 15 × 19 e
   transborda o disco teal de 18px — a ponta escapa pelo canto superior
   direito. Por isso o <span> é a CAIXA DO GLIFO e o disco vem no ::before,
   deslocado -5px / +4px e mandado para trás com z-index negativo (pinta
   acima do fundo do card, abaixo do texto do próprio span). */
.hero-ppfl__feature-check {
  position: absolute;
  top: 16px;
  right: 12px;
  z-index: 1;
  width: 15px;
  height: 19px;
  font-size: 20px;
  line-height: 19px;
  text-align: center;
  color: var(--color-white);
  /* Pivô no centro do disco: como ele é um círculo, girar em torno do
     próprio centro não o move — só o ✓ é inclinado. */
  transform: rotate(var(--hero-ppfl-check-tilt));
  transform-origin: 4px 13px;
}

.hero-ppfl__feature-check::before {
  content: "";
  position: absolute;
  top: 4px;
  left: -5px;
  z-index: -1;
  width: 18px;
  height: 18px;
  border-radius: 32px;
  background-color: var(--color-teal);
  box-shadow: 0 10px 24px -8px rgba(41, 35, 92, 0.5);
}


/* ============================================================ */
/* HERO: FAIXA DE NÚMEROS                                      */
/* ============================================================ */
.hero-ppfl__stats {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  min-height: var(--hero-ppfl-stats-height);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  background-color: rgba(41, 35, 92, 0.45);
}

.hero-ppfl__stats-inner {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 32px;
  gap: 16px 40px;
}

.hero-ppfl__stat {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  white-space: nowrap;
}

.hero-ppfl__stat-number {
  font-size: 2rem;                       /* 32px */
  font-weight: var(--font-weight-bold);
  line-height: 26px;
  color: var(--color-amber);
}

.hero-ppfl__stat-label {
  font-size: 1.25rem;                    /* 20px */
  font-weight: var(--font-weight-regular);
  line-height: 20.83px;
  color: rgba(255, 255, 255, 0.8);
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
@media (max-width: 1399.98px) {
  .ppfl-page {
    --hero-ppfl-columns-gap: 40px;
  }

  .hero-ppfl__panel {
    flex: 1 1 520px;
  }

  .hero-ppfl__intro {
    flex: 1 1 420px;
  }
}

@media (max-width: 991.98px) {
  .hero-ppfl__container {
    padding: 72px 24px 40px;
  }

  .hero-ppfl__grid {
    flex-direction: column;
    gap: 40px;
  }

  .hero-ppfl__intro,
  .hero-ppfl__panel {
    flex: 1 1 auto;
    width: 100%;
    max-width: 100%;
    min-height: 0;
  }

  .hero-ppfl__panel {
    margin-top: 0;
  }

  .hero-ppfl__title {
    margin-top: 0;
    font-size: 2.5rem;
    line-height: 1.12;
  }
}

@media (max-width: 767.98px) {
  .hero-ppfl__features {
    grid-template-columns: 1fr;
  }

  .hero-ppfl__title {
    font-size: 2rem;
  }

  .hero-ppfl__subtitle {
    font-size: 1.0625rem;
  }

  .hero-ppfl__actions .btn-ppfl {
    flex: 1 1 100%;
    justify-content: center;
  }

  .hero-ppfl__stats-inner {
    gap: 14px 24px;
  }

  .hero-ppfl__stat-number {
    font-size: 1.625rem;
  }

  .hero-ppfl__stat-label {
    font-size: 1rem;
  }
}


/* ============================================================ */
/* 2/10 — MENU DE ÂNCORAS                                     */
/* origem: sections/2-menu.css                                */
/* ============================================================ */
/* A faixa acompanha a página. O `z-index` fica acima de tudo que as
   seções usam internamente (o maior é 5, nos cards do carrossel de
   depoimentos): elas são `position: relative` sem z-index próprio, ou
   seja, não criam contexto de empilhamento e os filhos posicionados
   delas disputariam a pintura com a faixa em ordem de DOM. */
.menu-ppfl {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: var(--menu-ppfl-height);
  background-color: var(--color-lilac-bg);
  font-family: var(--font-primary);
}

/* Sombra só quando a faixa está de fato colada no topo, passando por
   cima do conteúdo — parada no lugar dela, o design não tem sombra. */
.menu-ppfl.is-stuck {
  box-shadow: 0 2px 10px rgba(41, 35, 92, 0.12);
}

/* O `inner` só centraliza e permite rolagem lateral; quem dita a largura
   (e portanto a extensão do traço cinza) é a própria lista — 657px no
   Figma. `safe center` mantém o início da lista alcançável quando ela
   não cabe: com `center` puro o overflow à esquerda fica inacessível. */
.menu-ppfl__inner {
  display: flex;
  justify-content: center;
  justify-content: safe center;
  padding: var(--menu-ppfl-text-top) 24px 24px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.menu-ppfl__inner::-webkit-scrollbar {
  display: none;
}

/* O traço cinza do Figma é o `border-bottom` desta lista */
.menu-ppfl__list {
  display: flex;
  align-items: flex-start;
  margin: 0;
  padding: 0 0 var(--menu-ppfl-rule-gap);
  border-bottom: 1px solid var(--color-rule);
  white-space: nowrap;
}

.menu-ppfl__item {
  display: flex;
  align-items: flex-start;
}

/* Separadores "|": conteúdo gerado, para que o texto do link continue
   sendo só o rótulo da seção */
.menu-ppfl__item:not(:last-child)::after {
  content: "|";
  padding: 0 var(--menu-ppfl-sep-gap);
  font-size: 1rem;
  font-weight: var(--font-weight-regular);
  line-height: var(--menu-ppfl-line-height);
  color: var(--color-navy-deep);
}

.menu-ppfl__link {
  position: relative;
  display: block;
  font-size: 1rem;                       /* 16px */
  font-weight: var(--font-weight-regular);
  line-height: var(--menu-ppfl-line-height);
  color: var(--color-navy-deep);
  text-decoration: none;
  transition: color 0.2s;
}

.menu-ppfl__link:hover,
.menu-ppfl__link:focus-visible {
  color: var(--color-accent);
}

.menu-ppfl__link.is-active {
  font-weight: var(--font-weight-bold);
  color: var(--color-accent);
}

/* Indicador do item ativo — 79 x 3 em x 628 no Figma, ou seja: começa
   4px antes do texto (632) e termina junto com ele. Sobrepõe o traço
   cinza, como no design. */
.menu-ppfl__link.is-active::after {
  content: "";
  position: absolute;
  left: -4px;
  right: 0;
  bottom: calc(var(--menu-ppfl-bar-drop) * -1);
  height: 3px;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* PÁGINA — o que a faixa fixa impõe ao resto do documento     */
/* ============================================================ */
/* Irmãs do menu = as seções da página. Sem isto, o clique numa âncora
   para com o topo da seção escondido atrás da faixa. */
.menu-ppfl ~ [id] {
  scroll-margin-top: var(--menu-ppfl-height);
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
/* A lista não quebra em várias linhas (sobraria um "|" solto no fim de
   cada linha e o indicador perderia a referência): abaixo do ponto em
   que ela deixa de caber, o menu rola lateralmente. */
@media (max-width: 767.98px) {
  .ppfl-page {
    --menu-ppfl-sep-gap: 7px;
  }

  .menu-ppfl__inner {
    padding-inline: 16px;
  }

  .menu-ppfl__link,
  .menu-ppfl__item:not(:last-child)::after {
    font-size: 0.9375rem;                /* 15px */
  }
}


/* ============================================================ */
/* 3/10 — FORMAÇÃO — sec-formacao                             */
/* origem: sections/4-formacao.css                            */
/* ============================================================ */
.formacao-ppfl {
  position: relative;
  overflow: hidden;
  padding: 44px 0;
  background-color: var(--color-surface-light);
  font-family: var(--font-primary);
}

.formacao-ppfl__sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

/* Arte de traços em onda. As quatro medidas são as do Figma
   (w 115.61% / h 207.85% / left -11.98% / top -32.03%) e, juntas, recortam
   sempre a MESMA janela da arte: x 10.4%→96.9%, y 15.4%→63.5%. É por isso
   que a altura é percentual e não `auto`: com `auto` a arte encolhe junto
   com a largura, a seção continua com ~709px e o recorte escorrega para a
   parte de baixo do desenho (as ondas ficam mais densas e mais inclinadas
   do que no design). O leve esticão vertical em telas mais estreitas é
   imperceptível numa textura de linhas. */
.formacao-ppfl__bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.formacao-ppfl__bg img {
  position: absolute;
  left: -11.98%;
  top: -32.03%;
  width: 115.61%;
  height: 207.85%;
  max-width: none;
}


/* ============================================================ */
/* CABEÇALHO                                                   */
/* ============================================================ */
.formacao-ppfl__header {
  position: relative;
  z-index: 1;
  max-width: 728px;                      /* 680px do Figma + respiros laterais */
  margin: 0 auto;
  padding: 0 24px;
  text-align: center;
}

.formacao-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

.formacao-ppfl__lead {
  margin: 15.39px 0 0;                   /* gap 13px + padding 2.39px do Figma */
  font-size: 1.0375rem;                  /* 16.6px */
  font-weight: var(--font-weight-regular);
  line-height: 25.79px;
  color: var(--color-text-muted);
}

.formacao-ppfl__lead strong {
  font-weight: var(--font-weight-bold);
}

.formacao-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 45px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* STEPPER                                                     */
/* ============================================================ */
.formacao-ppfl__steps {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  max-width: calc(var(--formacao-ppfl-col) * 5 + 48px);
  margin: 83px auto 0;
  padding: 0 24px;
}

.formacao-ppfl__step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: var(--formacao-ppfl-step-height);
  padding: 0 14px;
  --step-color: var(--color-navy-deep);
}

.formacao-ppfl__step--navy   { --step-color: var(--color-navy-deep); }
.formacao-ppfl__step--indigo { --step-color: var(--color-indigo); }
.formacao-ppfl__step--violet { --step-color: var(--color-violet); }
.formacao-ppfl__step--teal   { --step-color: var(--color-teal); }
.formacao-ppfl__step--accent { --step-color: var(--color-accent); }


/* --- Vaga do trilho (círculo fantasma) ---
   Marca, com o ícone esmaecido, o lugar que o círculo colorido ocupa
   quando o card abre. Também é quem reserva os 64px do trilho. */
.formacao-ppfl__slot {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: var(--formacao-ppfl-rail);
  height: var(--formacao-ppfl-rail);
  margin-bottom: var(--formacao-ppfl-rail-gap);
  border: 2px solid var(--color-border-soft);
  border-radius: 50%;
  background-color: var(--color-white);
  color: var(--color-text-muted);
  opacity: var(--formacao-ppfl-dim);
  transform: scale(var(--formacao-ppfl-dot-scale));
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.is-active .formacao-ppfl__slot {
  opacity: 0;
}


/* --- Círculo do ícone ---
   Vive sobreposto à vaga do trilho, invisível enquanto o card está
   fechado; quando ele abre, surge por cima do fantasma — o ícone
   esmaecido ganha a cor da etapa no lugar, sem viajar pela coluna. */
.formacao-ppfl__dot {
  position: absolute;
  top: 0;
  left: 50%;
  z-index: 2;
  display: grid;
  place-items: center;
  width: var(--formacao-ppfl-rail);
  height: var(--formacao-ppfl-rail);
  border: 2px solid var(--step-color);
  border-radius: 50%;
  background-color: var(--step-color);
  color: var(--color-white);
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 0) scale(var(--formacao-ppfl-dot-scale));
  transition: opacity 0.45s var(--formacao-ppfl-ease),
              transform 0.45s var(--formacao-ppfl-ease);
}

.is-active .formacao-ppfl__dot {
  opacity: 1;
  transform: translate(-50%, 0) scale(1);
}

/* 26px no círculo aberto → 24.44px no fechado (o `scale` do círculo leva
   o ícone junto), exatamente como no Figma. */
.formacao-ppfl__slot svg,
.formacao-ppfl__dot svg {
  display: block;
  width: 26px;
  height: 26px;
}


/* --- Card --- */
.formacao-ppfl__card {
  width: var(--formacao-ppfl-card);
  min-height: 80px;
  padding: 23px 19px 12px;
  border: 1px solid var(--color-border-soft);
  border-radius: 14px;
  background-color: var(--color-white);
  opacity: var(--formacao-ppfl-dim);
  transition: width 0.35s var(--formacao-ppfl-ease),
              min-height 0.35s var(--formacao-ppfl-ease),
              padding 0.35s var(--formacao-ppfl-ease),
              opacity 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

.is-active .formacao-ppfl__card {
  width: var(--formacao-ppfl-card-active);
  min-height: var(--formacao-ppfl-card-height);
  padding: 25.5px 21px 21px;
  border-color: var(--step-color);
  opacity: 1;
  box-shadow: 0 20px 40px -28px rgba(41, 35, 92, 0.3);
}

.formacao-ppfl__step:has(.formacao-ppfl__trigger:focus-visible) .formacao-ppfl__card {
  outline: 2px solid var(--step-color);
  outline-offset: 3px;
}

.formacao-ppfl__card-title {
  margin: 0;
  font-size: 0.894rem;                   /* 14.3px */
  font-weight: var(--font-weight-bold);
  line-height: 22.146px;
  color: var(--color-navy-deep);
}

.is-active .formacao-ppfl__card-title {
  font-size: 0.95rem;                    /* 15.2px */
  line-height: 23.56px;
}

/* O gatilho é o próprio título; o `::before` estende a área de clique a
   toda a etapa — inclusive ao círculo do trilho, lá em cima. */
.formacao-ppfl__trigger {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.formacao-ppfl__trigger:focus-visible {
  outline: none;
}

.formacao-ppfl__trigger::before {
  content: "";
  position: absolute;
  inset: 0;
}

.formacao-ppfl__body {
  position: relative;                    /* acima da área de clique */
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transition: max-height 0.3s ease, opacity 0.25s ease,
              visibility 0s linear 0.3s;
}

.is-active .formacao-ppfl__body {
  max-height: 220px;
  opacity: 1;
  visibility: visible;
  transition: max-height 0.35s ease, opacity 0.3s ease 0.05s,
              visibility 0s;
}

.formacao-ppfl__text {
  margin: 6.8px 0 0;
  font-size: 0.819rem;                   /* 13.1px */
  font-weight: var(--font-weight-regular);
  line-height: 20.34px;
  color: var(--color-text-muted);
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
/* Entre 992px e 1247px o stepper continua com 5 colunas, apenas mais
   estreito — os cards acompanham a coluna. */
@media (max-width: 1247.98px) {
  .formacao-ppfl__card,
  .is-active .formacao-ppfl__card {
    width: 100%;
  }

  .formacao-ppfl__step {
    padding: 0 8px;
  }
}

/* Abaixo de 992px não há viagem do ícone: a seção vira uma lista vertical
   com o círculo (já na sua cor) ao lado do card. */
@media (max-width: 991.98px) {
  /* Aqui a seção fica alta e estreita: manter o recorte do Figma esticaria
     demais o desenho. Passa a `cover`, mostrando a faixa central. */
  .formacao-ppfl__bg img {
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 40%;
  }

  .formacao-ppfl__steps {
    grid-template-columns: 1fr;
    gap: 16px;
    max-width: 620px;
    margin-top: 48px;
  }

  .formacao-ppfl__step {
    flex-direction: row;
    align-items: flex-start;
    gap: 16px;
    min-height: 0;
    padding: 0;
  }

  .formacao-ppfl__slot {
    display: none;
  }

  .formacao-ppfl__dot,
  .is-active .formacao-ppfl__dot {
    position: static;
    flex: 0 0 auto;
    width: 52px;
    height: 52px;
    opacity: 1;                          /* aqui o círculo colorido é fixo, sem fade */
    transform: none;
  }

  .formacao-ppfl__slot svg,
  .formacao-ppfl__dot svg {
    width: 21px;
    height: 21px;
  }

  .formacao-ppfl__card,
  .is-active .formacao-ppfl__card {
    flex: 1 1 auto;
    min-height: 0;
    padding: 14px 18px 16px;
    opacity: 1;
  }

  .formacao-ppfl__card-title,
  .is-active .formacao-ppfl__card-title {
    font-size: 1rem;
    line-height: 24px;
  }

  .formacao-ppfl__text {
    font-size: 0.875rem;
    line-height: 21px;
  }
}

@media (max-width: 767.98px) {
  .formacao-ppfl {
    padding: 40px 0;
  }

  .formacao-ppfl__title {
    font-size: 1.75rem;
    line-height: 1.2;
  }

  .formacao-ppfl__lead {
    font-size: 1rem;
    line-height: 1.55;
  }

  .formacao-ppfl__rule {
    margin-top: 28px;
  }

  .formacao-ppfl__steps {
    margin-top: 36px;
  }

  .formacao-ppfl__dot,
  .is-active .formacao-ppfl__dot {
    width: 46px;
    height: 46px;
  }

  .formacao-ppfl__slot svg,
  .formacao-ppfl__dot svg {
    width: 19px;
    height: 19px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .formacao-ppfl__slot,
  .formacao-ppfl__dot,
  .formacao-ppfl__card,
  .formacao-ppfl__body {
    transition: none;
  }
}


/* ============================================================ */
/* 4/10 — ESCOLHA SETORIAL — sec-setorial                     */
/* origem: sections/7-setorial.css                            */
/* ============================================================ */
.setorial-ppfl {
  padding: 90px 24px;
  background-color: var(--color-white);
  font-family: var(--font-primary);
}

.setorial-ppfl__container {
  box-sizing: border-box;
  max-width: var(--setorial-ppfl-container);
  margin: 0 auto;
  padding-inline: var(--setorial-ppfl-gutter);
}


/* --- Cabeçalho: título, texto de apoio e régua laranja --- */
.setorial-ppfl__header {
  text-align: center;
}

.setorial-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

/* 790px é a largura do bloco de texto no Figma — é ela que define
   a quebra em duas linhas do desktop */
.setorial-ppfl__lead {
  max-width: 790px;
  margin: 18px auto 0;
  font-size: 1.0375rem;                  /* 16.6px */
  font-weight: var(--font-weight-regular);
  line-height: 25.79px;
  color: var(--color-text-muted);
}

.setorial-ppfl__lead strong {
  font-weight: var(--font-weight-bold);
}

.setorial-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 47px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* CARDS                                                       */
/* ============================================================ */
.setorial-ppfl__cards {
  display: flex;
  gap: var(--setorial-ppfl-card-gap);
  margin: 46px 0 0;
  padding: 0;
}

/* Os dois cards têm a mesma altura (563px no Figma) e o CTA é
   empurrado para a base — por isso o corpo é um flex column com
   `margin-top: auto` no botão, em vez de alturas fixas. */
.setorial-ppfl__card {
  box-sizing: border-box;
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--color-border-soft);
  border-radius: 22px;
  background-color: var(--setorial-card-bg);
  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);
}


/* --- Capa: gradiente + foto + selo + faixa de setores ---
   `isolation: isolate` confina o mix-blend-mode da foto (card
   Serviços) à capa, sem afetar o resto do card. */
.setorial-ppfl__media {
  position: relative;
  height: var(--setorial-ppfl-media-height);
  overflow: hidden;
  isolation: isolate;
  background-image: var(--setorial-media-gradient);
}

/* O recorte vertical (`object-position`) reproduz o enquadramento do
   Figma: Indústria mostra a faixa 54%–80% da foto; Serviços, 16%–77%. */
.setorial-ppfl__photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--setorial-photo-position);
  opacity: var(--setorial-photo-opacity);
  mix-blend-mode: var(--setorial-photo-blend);
}

.setorial-ppfl__tag {
  position: absolute;
  top: 18px;
  left: 18px;
  display: inline-flex;
  padding: 7px 15px;
  border: 1px solid var(--setorial-tag-border);
  border-radius: 100px;
  background-color: var(--setorial-tag-bg);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  font-size: 0.681rem;                   /* 10.9px */
  font-weight: var(--font-weight-regular);
  line-height: 16.86px;
  letter-spacing: 0.87px;
  text-transform: uppercase;
  color: var(--color-white);
}

/* Faixa translúcida colada na base da capa. Altura mínima de 50px
   (Figma) com o texto centrado — cresce se a lista quebrar em mais
   linhas em telas estreitas. */
.setorial-ppfl__sectors {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--setorial-ppfl-strip-height);
  padding: 4px 12px;
  background-color: var(--setorial-strip-bg);
}

/* 411px é a largura do texto no Figma; é ela que produz as 3 linhas
   do card Indústria e as 2 do card Serviços. */
.setorial-ppfl__sectors-list {
  max-width: 411px;
  margin: 0;
  padding: 0;
  font-size: 0.75rem;                    /* 12px */
  font-weight: var(--font-weight-regular);
  line-height: 14px;
  text-align: center;
  color: var(--color-white);
}

/* Os itens fluem como texto corrido (e não como flex) para que a
   quebra de linha caia em qualquer ponto da enumeração, como no
   design; o "|" é conteúdo gerado, então cada setor continua sendo
   um item de lista limpo para leitores de tela. */
.setorial-ppfl__sectors-list li {
  display: inline;
}

.setorial-ppfl__sectors-list li:not(:last-child)::after {
  content: " |";
}


/* --- Corpo do card --- */
.setorial-ppfl__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 14px 30px 32px;
}

.setorial-ppfl__card-title {
  margin: 0;
  font-size: 1.25rem;                    /* 20px */
  font-weight: var(--font-weight-black);
  line-height: 31px;
  color: var(--color-navy-deep);
}

.setorial-ppfl__list {
  display: flex;
  flex-direction: column;
  gap: 11px;
  margin: 16px 0 0;
  padding: 0 0 8px;                      /* o `pb` da lista no Figma */
}

.setorial-ppfl__item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.9rem;                     /* 14.4px */
  font-weight: var(--font-weight-regular);
  line-height: 22.32px;
  color: var(--color-text-muted);
}

.setorial-ppfl__item em {
  font-style: italic;
}

.setorial-ppfl__item strong {
  font-weight: var(--font-weight-bold);
}

/* `margin-top` alinha o selo à primeira linha do item, inclusive nos
   itens de duas linhas do card Serviços */
.setorial-ppfl__check {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  border-radius: 9px;
  background-color: var(--setorial-check-bg);
  font-size: 0.75rem;
  line-height: 1;
  color: var(--color-white);
}

/* No Figma os três itens ficam em x 0 / 108 / 185 de um bloco de
   280px — o `gap` de 14px reproduz esse espaçamento e ainda permite
   que a linha quebre em telas estreitas. O `padding` vertical
   reproduz o bloco de 25px que envolve o texto de 19.2px. */
.setorial-ppfl__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 8px 0 16px;
  padding: 3px 0;
  font-size: 0.75rem;                    /* 12px */
  font-weight: var(--font-weight-extrabold);
  line-height: 19.2px;
  color: var(--color-meta);
}

.setorial-ppfl__meta li {
  display: flex;
  align-items: center;
  gap: 5px;
}

.setorial-ppfl__meta-icon {
  font-size: 0.8125rem;
  line-height: 1;
}

/* `margin-top: auto` cola o CTA na base do card; o `margin-bottom`
   da lista de metadados garante o respiro mínimo entre os dois. */
.setorial-ppfl__cta {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
  padding: 13px 24px;
  border-radius: 12px;
  background-color: var(--setorial-cta-bg);
  font-size: 0.881rem;                   /* 14.1px */
  font-weight: var(--font-weight-bold);
  line-height: 21.82px;
  color: var(--color-white);
  text-decoration: none;
  transition: background-color 0.2s;
}

.setorial-ppfl__cta:hover,
.setorial-ppfl__cta:focus-visible {
  background-color: var(--setorial-cta-bg-hover);
  color: var(--color-white);
}


/* ============================================================ */
/* VARIANTES DE CARD                                           */
/* ============================================================ */
.setorial-ppfl__card--industria {
  --setorial-card-bg:        var(--color-card-warm);
  --setorial-media-gradient:
    linear-gradient(90deg, rgba(255, 128, 0, 0.16) 0%, rgba(255, 128, 0, 0.16) 100%),
    linear-gradient(6.25deg,
      rgb(255, 128, 0)             11.64%,
      rgba(255, 147, 38, 0.72)     75.66%,
      rgba(255, 255, 255, 0.56)   105.67%);
  --setorial-photo-opacity:  0.18;
  --setorial-photo-blend:    normal;
  --setorial-photo-position: 50% 74%;
  --setorial-tag-bg:         rgba(123, 47, 48, 0.61);
  --setorial-tag-border:     rgba(255, 255, 255, 0.52);
  --setorial-strip-bg:       rgba(165, 82, 50, 0.77);
  --setorial-check-bg:       var(--color-navy-deep);
  --setorial-cta-bg:         var(--color-navy-deep);
  --setorial-cta-bg-hover:   var(--color-navy-darker);
}

/* No Figma a linha de metadados deste card fica 10px mais baixa que a
   do card Serviços (8px de vão contra 18px) — mantido para bater com
   o screenshot de referência. */
.setorial-ppfl__card--industria .setorial-ppfl__meta {
  margin-top: 18px;
}

.setorial-ppfl__card--servicos {
  --setorial-card-bg:        var(--color-card-cool);
  --setorial-media-gradient:
    linear-gradient(111.72deg, rgb(38, 33, 85) 0%, rgba(203, 108, 230, 0.9) 100%);
  --setorial-photo-opacity:  0.35;
  --setorial-photo-blend:    soft-light;
  --setorial-photo-position: 50% 40%;
  --setorial-tag-bg:         rgba(255, 255, 255, 0.16);
  --setorial-tag-border:     rgba(255, 255, 255, 0.3);
  --setorial-strip-bg:       rgba(203, 108, 230, 0.56);
  --setorial-check-bg:       var(--color-green);
  --setorial-cta-bg:         var(--color-green);
  --setorial-cta-bg-hover:   var(--color-green-dark);
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
@media (max-width: 1247.98px) {
  .setorial-ppfl {
    padding-block: 80px;
  }
}

@media (max-width: 991.98px) {
  .ppfl-page {
    --setorial-ppfl-gutter: 8px;
  }

  .setorial-ppfl {
    padding: 72px 24px;
  }

  /* Empilhado, o card não precisa mais ocupar a largura toda da
     coluna — 560px mantém a proporção da capa próxima do design. */
  .setorial-ppfl__cards {
    flex-direction: column;
    align-items: center;
  }

  /* O `flex: 1 1 0` do card divide o espaço entre as duas colunas
     enquanto a lista é uma linha. Empilhada, o eixo principal vira o
     vertical e esse mesmo `flex-basis: 0` zera a ALTURA dos cards (a
     lista não tem altura própria para distribuir), deixando só as duas
     bordas na tela. Empilhado, o card volta a medir pelo conteúdo. */
  .setorial-ppfl__card {
    flex: 0 0 auto;
    width: 100%;
    max-width: 560px;
  }
}

@media (max-width: 767.98px) {
  .setorial-ppfl {
    padding: 56px 16px;
  }

  .setorial-ppfl__title {
    font-size: 2rem;
    line-height: 1.2;
  }

  .setorial-ppfl__lead {
    margin-top: 14px;
    font-size: 1rem;
  }

  .setorial-ppfl__rule {
    margin-top: 32px;
  }

  .setorial-ppfl__cards {
    margin-top: 32px;
  }

  .setorial-ppfl__body {
    padding: 14px 20px 24px;
  }
}

@media (max-width: 575.98px) {
  .setorial-ppfl__title {
    font-size: 1.75rem;
  }

  .setorial-ppfl__sectors-list {
    font-size: 0.6875rem;                /* 11px */
    line-height: 13px;
  }

  .setorial-ppfl__cta {
    width: 100%;
    justify-content: center;
  }
}


/* ============================================================ */
/* 5/10 — CERTIFICAÇÃO — sec-upsell (dupla cert.)             */
/* origem: sections/9-upsell.css                              */
/* ============================================================ */
.upsell-ppfl {
  position: relative;
  overflow: hidden;
  padding: 90px 24px;
  font-family: var(--font-primary);
  background-color: var(--color-surface-soft);
}


/* --- Fundo: véus de cor que trocam + arte de linhas fixa --- */
.upsell-ppfl__bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.upsell-ppfl__tint {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity var(--upsell-ppfl-fade) ease;
}

.upsell-ppfl__tint--saude {
  background-image: linear-gradient(236.37deg, #f5f6fa 48.89%, #eafeff 74.51%);
}

.upsell-ppfl__tint--digital {
  background-image: linear-gradient(236.37deg, #ffffff 48.89%, #e0dcff 100%);
}

.upsell-ppfl__tint--supply {
  background-image: linear-gradient(236.37deg, #f5f6fa 48.89%, #ffe8e8 100%);
}

.upsell-ppfl[data-upsell-active='saude']   .upsell-ppfl__tint--saude,
.upsell-ppfl[data-upsell-active='digital'] .upsell-ppfl__tint--digital,
.upsell-ppfl[data-upsell-active='supply']  .upsell-ppfl__tint--supply {
  opacity: 1;
}

/* Mesma aplicação das outras duas ocorrências da arte na página
   (`.formacao-ppfl__bg img` e `.jornada-ppfl__bg img`): largura E altura em %
   da seção. O ponto não é preservar a proporção do arquivo — é justamente NÃO
   preservar. Como a altura da seção não cresce com a viewport, a altura da arte
   também não; em 5400px de largura o desenho estica 3.7x na horizontal mas só
   1.33x na vertical. A espessura do traço é uma dimensão vertical, então ela
   quase não amplia e a linha continua nítida — enquanto a curva, que é suave e
   de baixa frequência na horizontal, estica sem que se perceba.
   Foi por isso que `height: auto` borrou aqui: ampliava 3.7x nos DOIS eixos.

   Medições (Playwright, 1440→5400px): seção de certificações 1322px de altura
   constante, seção de formação 709px, arte da formação 1474px. Os 111.50%
   entregam os mesmos 1474px de arte aqui (1474/1322) — mesma espessura de
   traço e mesmo 1.33x de ampliação vertical das outras duas.

   Diferença desta seção: centrada na vertical. Sobram 11.50% de altura para
   repartir entre topo e base, daí o top de -5.75% — exato em qualquer altura
   de seção, já que a arte é medida em % dela. */
.upsell-ppfl__lines {
  position: absolute;
  top: -5.75%;
  left: -11.98%;
  width: 115.61%;
  height: 111.50%;
  max-width: none;
}


.upsell-ppfl__container {
  position: relative;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--upsell-ppfl-stack-gap);
  max-width: var(--upsell-ppfl-container);
  margin: 0 auto;
  padding-inline: var(--upsell-ppfl-gutter);
}


/* --- Cabeçalho: título, textos de apoio e régua laranja --- */
.upsell-ppfl__header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  width: 100%;
  max-width: 760px;
  text-align: center;
}

/* 520px é o que reproduz a quebra em duas linhas do Figma
   (a linha mais larga do título mede 492px) */
.upsell-ppfl__title {
  margin: 0;
  padding-top: 7px;
  max-width: 520px;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

.upsell-ppfl__lead {
  margin: 0;
  max-width: 750px;
  font-size: 1.019rem;                   /* 16.3px */
  font-weight: var(--font-weight-regular);
  line-height: 25.3px;
  color: #000;
}

.upsell-ppfl__lead:first-of-type {
  padding-top: 6px;
}

.upsell-ppfl__lead--narrow {
  max-width: 728px;
}

.upsell-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  background-color: var(--color-accent);
}


/* --- Abas: uma cor de acento por certificação --- */
.upsell-ppfl__tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding-top: 20px;
}

.upsell-ppfl__tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 12px 23px;
  border: 1px solid var(--upsell-ppfl-tab-accent);
  border-radius: 100px;
  background-color: var(--color-white);
  color: var(--color-text-muted);
  font-family: inherit;
  font-size: 0.8625rem;                  /* 13.8px */
  font-weight: var(--font-weight-bold);
  line-height: 1.15;
  cursor: pointer;
  transition:
    background-color var(--upsell-ppfl-fade) var(--upsell-ppfl-ease),
    color var(--upsell-ppfl-fade) var(--upsell-ppfl-ease),
    border-color var(--upsell-ppfl-fade) var(--upsell-ppfl-ease),
    box-shadow 250ms var(--upsell-ppfl-ease);
}

/* No Figma só a aba Saúde tem largura fixa (114px); as outras se ajustam
   ao texto. Mantido para preservar o equilíbrio das três pílulas. */
.upsell-ppfl__tab--saude {
  --upsell-ppfl-tab-accent: var(--color-teal);
  min-width: 114px;
}

.upsell-ppfl__tab--digital {
  --upsell-ppfl-tab-accent: var(--color-navy-deep);
}

.upsell-ppfl__tab--supply {
  --upsell-ppfl-tab-accent: var(--color-blood);
}

.upsell-ppfl__tab:hover {
  box-shadow: 0 6px 16px -10px var(--upsell-ppfl-tab-accent);
}

.upsell-ppfl__tab:focus-visible {
  outline: 2px solid var(--upsell-ppfl-tab-accent);
  outline-offset: 3px;
}

.upsell-ppfl__tab.is-active {
  background-color: var(--upsell-ppfl-tab-accent);
  color: var(--color-white);
}


/* --- Pilha de cards: os três ocupam a mesma célula do grid --- */
/* Assim a altura é sempre a do card mais alto e a troca de estado
   não desloca nada abaixo da seção. */
.upsell-ppfl__stack {
  display: grid;
  width: 100%;
}

.upsell-ppfl__card {
  grid-column: 1;
  grid-row: 1;
  display: flex;
  box-sizing: border-box;
  min-height: var(--upsell-ppfl-card-height);
  border: 1px solid var(--color-border-soft);
  border-radius: 26px;
  background-color: var(--color-white);
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--upsell-ppfl-fade) ease,
    visibility 0s linear var(--upsell-ppfl-fade);
}

.upsell-ppfl__card.is-active {
  opacity: 1;
  visibility: visible;
  z-index: 1;
  transition:
    opacity var(--upsell-ppfl-fade) ease,
    visibility 0s;
}

.upsell-ppfl__card:focus-visible {
  outline: 2px solid var(--color-navy-deep);
  outline-offset: 3px;
}


/* --- Painel de imagem: gradiente + foto em soft-light --- */
/* isolation confina o mix-blend-mode ao painel */
.upsell-ppfl__media {
  position: relative;
  flex: 0 0 var(--upsell-ppfl-media-width);
  isolation: isolate;
  overflow: hidden;
  background-color: var(--color-white);
}

.upsell-ppfl__photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  mix-blend-mode: soft-light;
}

/* object-position converte o enquadramento do Figma
   (largura/deslocamento da foto dentro do painel de 439 x 567) */
.upsell-ppfl__media--saude {
  background-image: linear-gradient(216.84deg, rgba(22, 145, 148, .86) 1.13%, rgba(41, 35, 92, .86) 96.37%);
}

.upsell-ppfl__media--saude .upsell-ppfl__photo {
  object-position: 65.6% 50%;
  opacity: .71;
}

.upsell-ppfl__media--digital {
  background-image: linear-gradient(180deg, rgba(41, 35, 92, .86) 0%, rgba(57, 65, 149, .86) 100%);
}

.upsell-ppfl__media--digital .upsell-ppfl__photo {
  object-position: 18.7% 50%;
}

.upsell-ppfl__media--supply {
  background-image: linear-gradient(216deg, rgba(255, 160, 160, 1) .3%, rgba(120, 0, 0, 1) 84.05%);
}

.upsell-ppfl__media--supply .upsell-ppfl__photo {
  object-position: 50% 85.8%;
  opacity: .71;
}

.upsell-ppfl__logo {
  position: absolute;
  top: 23px;
  left: 28px;
  z-index: 1;
  width: 52.4px;
  height: 38px;
}


/* --- Corpo do card --- */
.upsell-ppfl__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 20px;
  min-width: 0;
  padding: 51px 44px 52px;
}

.upsell-ppfl__card-title {
  margin: 0;
  font-size: 1.3rem;                     /* 20.8px */
  font-weight: var(--font-weight-black);
  line-height: 27px;
  color: var(--color-navy-deep);
}

.upsell-ppfl__list {
  display: flex;
  flex-direction: column;
  gap: 11px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.upsell-ppfl__item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.9rem;                     /* 14.4px */
  line-height: 22.32px;
  color: var(--color-text-muted);
}

.upsell-ppfl__check {
  display: inline-flex;
  flex: 0 0 17px;
  align-items: center;
  justify-content: center;
  width: 17px;
  height: 17px;
  margin-top: 1px;
  border-radius: 8.5px;
  background-color: var(--color-navy-deep);
  color: var(--color-white);
  font-size: 0.65rem;                    /* 10.4px */
  line-height: 16.12px;
}

.upsell-ppfl__note {
  margin: 0;
  padding: 15px 18px 16px 21px;
  border-left: 3px solid var(--color-accent);
  border-radius: 8px;
  background-color: var(--color-surface-soft);
  font-size: 0.85rem;                    /* 13.6px */
  line-height: 21px;
  color: var(--color-text-muted);
}

.upsell-ppfl__partner {
  display: flex;
  align-items: center;
  gap: 12px;
}

.upsell-ppfl__partner-logo {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 24px;
  object-fit: cover;
}

.upsell-ppfl__partner-text {
  margin: 0;
  font-size: 0.8rem;                     /* 12.8px */
  line-height: 19.84px;
  color: var(--color-text-muted);
}

.upsell-ppfl__partner-text strong {
  display: block;
  font-size: 0.8625rem;                  /* 13.8px */
  font-weight: var(--font-weight-bold);
  line-height: 21.33px;
  color: var(--color-navy-deep);
}

.upsell-ppfl__cta {
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  padding: 17px 26px 13px;
  border-radius: 12px;
  background-color: var(--color-navy-deep);
  color: var(--color-white);
  font-size: 0.881rem;                   /* 14.1px */
  font-weight: var(--font-weight-bold);
  line-height: 21.82px;
  text-decoration: none;
  transition:
    background-color 250ms var(--upsell-ppfl-ease),
    box-shadow 250ms var(--upsell-ppfl-ease);
}

.upsell-ppfl__cta:hover,
.upsell-ppfl__cta:focus-visible {
  background-color: var(--color-navy-darker);
  color: var(--color-white);
  box-shadow: 0 12px 24px -16px rgba(41, 35, 92, .9);
}

.upsell-ppfl__cta-arrow {
  margin-left: 6px;
  transition: transform 250ms var(--upsell-ppfl-ease);
}

.upsell-ppfl__cta:hover .upsell-ppfl__cta-arrow,
.upsell-ppfl__cta:focus-visible .upsell-ppfl__cta-arrow {
  transform: translateX(3px);
}


/* --- Fecho e observação --- */
.upsell-ppfl__closing {
  margin: 0;
  padding-top: 26.8px;
  max-width: 600px;
  font-size: 1rem;
  line-height: 24.8px;
  text-align: center;
  color: #000;
}

.upsell-ppfl__disclaimer {
  box-sizing: border-box;
  margin: 0;
  padding: 17px 23px;
  width: 100%;
  max-width: 820px;
  border: 1px solid var(--color-border-soft);
  border-radius: 12px;
  background-color: var(--color-white);
  font-size: 0.8rem;                     /* 12.8px */
  font-style: italic;
  line-height: 19.84px;
  text-align: center;
  color: #000;
}

/* 694px é a medida do bloco de texto no Figma — é ela que produz
   a quebra em duas linhas dentro da caixa de 820px */
.upsell-ppfl__disclaimer-text {
  display: block;
  max-width: 694px;
  margin-inline: auto;
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
@media (max-width: 1199.98px) {
  .upsell-ppfl__media {
    flex-basis: 38%;
  }

  .upsell-ppfl__body {
    padding: 44px 36px 46px;
  }
}

@media (max-width: 991.98px) {
  .upsell-ppfl {
    padding: 70px 20px;
  }

  .upsell-ppfl__card {
    flex-direction: column;
    min-height: 0;
  }

  .upsell-ppfl__media {
    flex: 0 0 260px;
  }

  /* o enquadramento vertical do Figma vale para o painel retrato;
     na faixa horizontal a foto volta ao centro */
  .upsell-ppfl__media .upsell-ppfl__photo {
    object-position: 50% 50%;
  }

  /* Mesmo tratamento da seção "A sua formação": aqui o card vira vertical e a
     seção fica alta e estreita, e a arte na proporção natural deixaria faixas
     vazias em cima e embaixo. Passa a `cover`, mostrando a faixa central. */
  .upsell-ppfl__lines {
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 40%;
  }

  .upsell-ppfl__body {
    padding: 32px 28px 36px;
  }
}

@media (max-width: 767.98px) {
  .upsell-ppfl__title {
    max-width: none;
    font-size: 1.9rem;
    line-height: 38px;
  }

  .upsell-ppfl__lead {
    font-size: 0.95rem;
    line-height: 23px;
  }

  .upsell-ppfl__tab {
    padding: 11px 18px;
    font-size: 0.8125rem;
  }

  .upsell-ppfl__tab--saude {
    min-width: 0;
  }

  .upsell-ppfl__card-title {
    font-size: 1.15rem;
    line-height: 24px;
  }

  .upsell-ppfl__media {
    flex-basis: 200px;
  }

  .upsell-ppfl__closing {
    padding-top: 12px;
    font-size: 0.95rem;
    line-height: 23px;
  }
}

@media (max-width: 575.98px) {
  .upsell-ppfl {
    padding: 56px 16px;
  }

  .upsell-ppfl__container {
    padding-inline: 0;
  }

  .upsell-ppfl__body {
    padding: 24px 20px 28px;
  }

  .upsell-ppfl__cta {
    align-self: stretch;
    justify-content: center;
  }

  .upsell-ppfl__disclaimer {
    padding: 15px 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .upsell-ppfl__tint,
  .upsell-ppfl__card,
  .upsell-ppfl__tab,
  .upsell-ppfl__cta,
  .upsell-ppfl__cta-arrow {
    transition-duration: 1ms;
  }
}


/* ============================================================ */
/* 6/10 — BENEFÍCIOS — sec-beneficios                         */
/* origem: sections/3-beneficios.css                          */
/* ============================================================ */
.beneficios-ppfl {
  padding: 90px 24px 72px;
  background-image: linear-gradient(180deg, var(--color-white) 0%, var(--color-lilac) 100%);
  font-family: var(--font-primary);
}

/* Sprite dos ícones: fora do fluxo, só serve de biblioteca para os <use> */
.beneficios-ppfl__sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.beneficios-ppfl__container {
  box-sizing: border-box;
  max-width: var(--beneficios-ppfl-container);
  margin: 0 auto;
  padding-inline: var(--beneficios-ppfl-gutter);
}


/* --- Cabeçalho: título, texto de apoio e régua laranja --- */
.beneficios-ppfl__header {
  text-align: center;
}

.beneficios-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

/* 680px é a largura do bloco de texto no Figma */
.beneficios-ppfl__lead {
  max-width: 680px;
  margin: 16px auto 0;
  font-size: 1.0375rem;                  /* 16.6px */
  font-weight: var(--font-weight-regular);
  line-height: 25.79px;
  color: var(--color-text-muted);
}

.beneficios-ppfl__lead strong {
  font-weight: var(--font-weight-bold);
}

.beneficios-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 52px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* AS DUAS COLUNAS                                             */
/* ============================================================ */
.beneficios-ppfl__cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--beneficios-ppfl-col-gap);
  max-width: var(--beneficios-ppfl-content);
  margin: 23px auto 0;
}

.beneficios-ppfl__col {
  min-width: 0;
}

/* O rótulo é centrado sobre o bloco de cards, não sobre a coluna inteira —
   por isso o recuo do trilho é repetido aqui */
.beneficios-ppfl__tab-row {
  display: flex;
  justify-content: center;
  padding-left: calc(var(--beneficios-ppfl-badge) + var(--beneficios-ppfl-rail-gap));
}

.beneficios-ppfl__tab {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 35px;
  margin: 0;
  padding: 0 20px;
  border: 1px solid currentColor;
  border-radius: 8px;
  font-size: 0.98125rem;                 /* 15.7px */
  font-weight: var(--font-weight-extrabold);
  line-height: 24.3px;
  white-space: nowrap;
}

.beneficios-ppfl__tab svg {
  flex: none;
  width: 18px;
  height: 18px;
}

.beneficios-ppfl__col--voce .beneficios-ppfl__tab {
  color: var(--color-navy-deep);
}

.beneficios-ppfl__col--empresa .beneficios-ppfl__tab {
  color: var(--color-teal);
}


/* ============================================================ */
/* ACORDEÃO: SELO NO TRILHO + CARD                             */
/* ============================================================ */
.beneficios-ppfl__list {
  display: flex;
  flex-direction: column;
  gap: var(--beneficios-ppfl-card-gap);
  margin: 21px 0 0;
  padding: 0;
  list-style: none;
}

.beneficios-ppfl__item {
  position: relative;
  padding-left: calc(var(--beneficios-ppfl-badge) + var(--beneficios-ppfl-rail-gap));
}

/* Trilho vertical: cada item desenha o trecho que vai do centro do seu selo
   até o centro do selo seguinte (as pontas ficam escondidas sob os selos, que
   são opacos). Assim a linha acompanha qualquer combinação de aberto/fechado. */
.beneficios-ppfl__item:not(:last-child)::after {
  content: '';
  position: absolute;
  left: calc((var(--beneficios-ppfl-badge) - 2px) / 2);
  top: calc(1px + var(--beneficios-ppfl-pad-y) + var(--beneficios-ppfl-slot) / 2);
  bottom: calc(
    -1 * (var(--beneficios-ppfl-card-gap) + 1px + var(--beneficios-ppfl-pad-y)
          + var(--beneficios-ppfl-slot) / 2)
  );
  z-index: 0;
  width: 2px;
  background-color: var(--color-divider);
  opacity: .5;
}

.beneficios-ppfl__item.is-open::after {
  top: calc(1px + var(--beneficios-ppfl-pad-y) + var(--beneficios-ppfl-slot-open) / 2);
}

/* --- Selo colorido, centrado na linha do título do card --- */
.beneficios-ppfl__badge {
  position: absolute;
  left: 0;
  top: calc(
    1px + var(--beneficios-ppfl-pad-y) + var(--beneficios-ppfl-slot) / 2
    - var(--beneficios-ppfl-badge) / 2
  );
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--beneficios-ppfl-badge);
  height: var(--beneficios-ppfl-badge);
  border-radius: 9px;
  background-color: var(--bp-color, var(--color-navy-deep));
  color: var(--color-white);
  transition: top .35s cubic-bezier(.4, 0, .2, 1);
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__badge {
  top: calc(
    1px + var(--beneficios-ppfl-pad-y) + var(--beneficios-ppfl-slot-open) / 2
    - var(--beneficios-ppfl-badge) / 2
  );
}

.beneficios-ppfl__badge svg {
  width: 18px;
  height: 18px;
}

/* Cores dos selos — uma por benefício, lidas do frame */
.beneficios-ppfl__item--navy    { --bp-color: var(--color-navy-deep); }
.beneficios-ppfl__item--indigo  { --bp-color: var(--color-indigo); }
.beneficios-ppfl__item--violet  { --bp-color: var(--color-violet); }
.beneficios-ppfl__item--magenta { --bp-color: var(--color-magenta); }
.beneficios-ppfl__item--teal    { --bp-color: var(--color-teal); }
.beneficios-ppfl__item--green   { --bp-color: var(--color-green); }
.beneficios-ppfl__item--orange  { --bp-color: var(--color-accent); }
.beneficios-ppfl__item--amber   { --bp-color: var(--color-amber); }


/* --- Card --- */
.beneficios-ppfl__card {
  position: relative;
  z-index: 1;
  overflow: hidden;
  border: 1px solid var(--color-border-soft);
  border-left-width: 4px;
  border-radius: 14px;
  background-color: var(--color-white);
  transition: border-color .35s ease, box-shadow .35s ease;
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__card {
  border-color: var(--color-accent);
  box-shadow: 0 16px 34px -28px rgba(41, 35, 92, .3);
}

.beneficios-ppfl__item-title {
  margin: 0;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}

/* O gatilho ocupa a linha inteira: o clique vale em qualquer ponto do título */
.beneficios-ppfl__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  padding: var(--beneficios-ppfl-pad-y) var(--beneficios-ppfl-pad-x);
  border: 0;
  background: none;
  font-family: inherit;
  font-size: 0.9375rem;                  /* 15px */
  font-weight: var(--font-weight-bold);
  line-height: 18px;
  color: var(--color-navy-deep);
  text-align: left;
  cursor: pointer;
}

.beneficios-ppfl__trigger:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -3px;
  border-radius: 11px;
}

/* O "+" vira "x" girando 45° — é o mesmo ícone, como no Figma.
   Aberto, o slot cresce de 18 para 34px: é o que dá à linha do título do card
   aberto os 70px do frame (contra 54px do fechado). */
.beneficios-ppfl__toggle {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: var(--beneficios-ppfl-slot);
  color: var(--color-text-muted);
  transition: height .35s cubic-bezier(.4, 0, .2, 1), color .35s ease;
}

.beneficios-ppfl__toggle svg {
  width: 18px;
  height: 18px;
  transition: transform .35s cubic-bezier(.4, 0, .2, 1);
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__toggle {
  height: var(--beneficios-ppfl-slot-open);
  color: var(--color-accent);
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__toggle svg {
  transform: rotate(45deg);
}


/* --- Descrição: abre e fecha por grid-template-rows (0fr → 1fr) --- */
.beneficios-ppfl__desc {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .35s cubic-bezier(.4, 0, .2, 1);
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__desc {
  grid-template-rows: 1fr;
}

.beneficios-ppfl__desc-inner {
  overflow: hidden;
  visibility: hidden;                    /* fora da árvore de acessibilidade */
  transition: visibility .35s;
}

.beneficios-ppfl__item.is-open .beneficios-ppfl__desc-inner {
  visibility: visible;
}

/* O recuo de 68px alinha o texto como no Figma; a largura resultante (393px)
   é a que produz as três linhas do desktop */
.beneficios-ppfl__desc p {
  margin: 0;
  padding: 10px 24px 10px var(--beneficios-ppfl-indent);
  font-size: 0.8625rem;                  /* 13.8px */
  font-weight: var(--font-weight-regular);
  line-height: 21.33px;
  color: var(--color-text-muted);
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */

/* Colunas empilhadas */
@media (max-width: 991.98px) {
  .beneficios-ppfl__cols {
    grid-template-columns: minmax(0, 544px);
    justify-content: center;
    gap: 44px;
  }
}

@media (max-width: 767.98px) {
  .beneficios-ppfl {
    padding: 64px 20px 56px;
    --beneficios-ppfl-gutter: 0px;
    --beneficios-ppfl-rail-gap: 14px;
    --beneficios-ppfl-pad-x: 16px;
    --beneficios-ppfl-indent: 20px;
  }

  .beneficios-ppfl__title {
    font-size: 1.75rem;                  /* 28px */
    line-height: 36px;
  }

  .beneficios-ppfl__lead {
    font-size: 1rem;
    line-height: 24px;
  }

  .beneficios-ppfl__rule {
    margin-top: 36px;
  }

  .beneficios-ppfl__trigger {
    font-size: 0.895rem;                 /* 14.3px */
  }
}

@media (max-width: 575.98px) {
  .beneficios-ppfl {
    --beneficios-ppfl-badge: 30px;
    --beneficios-ppfl-rail-gap: 10px;
    --beneficios-ppfl-pad-x: 14px;
  }

  .beneficios-ppfl__badge svg {
    width: 16px;
    height: 16px;
  }

  .beneficios-ppfl__tab {
    font-size: 0.9rem;
    padding: 0 14px;
  }
}

/* Sem animação para quem pediu menos movimento */
@media (prefers-reduced-motion: reduce) {
  .beneficios-ppfl__badge,
  .beneficios-ppfl__card,
  .beneficios-ppfl__toggle,
  .beneficios-ppfl__toggle svg,
  .beneficios-ppfl__desc,
  .beneficios-ppfl__desc-inner {
    transition: none;
  }
}


/* ============================================================ */
/* 7/10 — DEPOIMENTOS — variante em imagem                    */
/* origem: sections/8-depoimentos.css                         */
/* ============================================================ */
.depoimentos-ppfl {
  /* 48px até o título, 73px depois da paginação (frame 1920x962) */
  padding: 48px 0 73px;
  background-image: linear-gradient(180deg, var(--color-lilac) 0%, var(--color-white) 100%);
  font-family: var(--font-primary);
}

.depoimentos-ppfl__container {
  box-sizing: border-box;
  max-width: 1100px;
  margin: 0 auto;
  padding-inline: 32px;
}


/* --- Cabeçalho --- */
/* No Figma o bloco tem 640px com `white-space: nowrap`: o texto
   estoura a caixa e fica em uma linha só. Aqui a caixa é 880px —
   largura que mantém título e apoio em uma linha no desktop e
   deixa a quebra acontecer naturalmente em telas menores. */
.depoimentos-ppfl__header {
  max-width: 880px;
  margin: 0 auto;
  text-align: center;
}

.depoimentos-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

.depoimentos-ppfl__lead {
  margin: 15px 0 0;
  font-size: 1.0375rem;                  /* 16.6px */
  font-weight: var(--font-weight-regular);
  line-height: 25.79px;
  color: var(--color-text-muted);
}

.depoimentos-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 44px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* PALCO DO CARROSSEL                                          */
/* ============================================================ */
/* Full-bleed: os cards dos níveis 2 e 3 avançam até as bordas da
   tela e são cortados por `overflow: hidden`, como no frame. */
.depoimentos-ppfl__stage {
  position: relative;
  height: calc(var(--dep-art-h) * var(--dep-zoom));
  margin-top: 50px;                      /* 233 - 183 no frame */
  overflow: hidden;
}

.depoimentos-ppfl__track {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--dep-art-w);
  height: var(--dep-art-h);
  margin: 0;
  padding: 0;
  list-style: none;
  transform: translate(-50%, -50%) scale(var(--dep-zoom));
}

/* O card ativo fica no centro do palco; no Figma o conjunto está
   107px à esquerda do centro do frame — desalinhamento do arquivo,
   normalizado aqui (mesma decisão da seção 4). */
.depoimentos-ppfl__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translateX(0) scale(0.5);
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease;
  will-change: transform, opacity;
}

.depoimentos-ppfl__slide[data-pos]  { cursor: pointer; }
.depoimentos-ppfl__slide[data-pos="0"] { cursor: default; }

.depoimentos-ppfl__slide[data-pos="0"]  { opacity: 1;              transform: translateX(0) scale(1);                            z-index: 5; }
.depoimentos-ppfl__slide[data-pos="-1"] { opacity: var(--dep-o-1); transform: translateX(calc(-1 * var(--dep-x-1))) scale(var(--dep-s-1)); z-index: 4; }
.depoimentos-ppfl__slide[data-pos="1"]  { opacity: var(--dep-o-1); transform: translateX(var(--dep-x-1)) scale(var(--dep-s-1));   z-index: 4; }
.depoimentos-ppfl__slide[data-pos="-2"] { opacity: var(--dep-o-2); transform: translateX(calc(-1 * var(--dep-x-2))) scale(var(--dep-s-2)); z-index: 3; }
.depoimentos-ppfl__slide[data-pos="2"]  { opacity: var(--dep-o-2); transform: translateX(var(--dep-x-2)) scale(var(--dep-s-2));   z-index: 3; }
.depoimentos-ppfl__slide[data-pos="-3"] { opacity: var(--dep-o-3); transform: translateX(calc(-1 * var(--dep-x-3))) scale(var(--dep-s-3)); z-index: 2; }
.depoimentos-ppfl__slide[data-pos="3"]  { opacity: var(--dep-o-3); transform: translateX(var(--dep-x-3)) scale(var(--dep-s-3));   z-index: 2; }


/* ============================================================ */
/* ARTE DO DEPOIMENTO — 666 x 533, medidas do export do Figma  */
/* ============================================================ */
/* Tudo aqui é px cru de propósito: a arte é uma tela de tamanho
   fixo, redimensionada em bloco por `--dep-zoom`. Usar rem faria a
   composição escorregar se a raiz do documento mudar. */
.depoimentos-ppfl__art {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 15px;
  background-image: linear-gradient(90deg, var(--dep-art-from) 0%, var(--dep-art-to) 100%);
}

/* Variante "card inteiro em imagem" (8-depoimentos-imagem.html): a
   arte exportada do Figma entra no lugar do `<article>` remontado.
   O export é 626 × 501 — mesma proporção da tela de 666 × 533, então
   preenche sem distorcer. Todo o resto (coverflow, cabeçalho,
   paginação, responsivo) é compartilhado. */
.depoimentos-ppfl__art-img {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 15px;
  object-fit: cover;
}

.depoimentos-ppfl__logo {
  position: absolute;
  top: 31px;
  left: 39px;
  width: auto;
  height: 52px;
}


/* --- Cartão branco do depoimento --- */
.depoimentos-ppfl__card {
  position: absolute;
  top: 188px;
  left: 21px;
  box-sizing: border-box;
  width: 388px;
  min-height: 155px;
  padding: 15px 16px 16px 14px;
  border-radius: 9px;
  background-color: var(--color-white);
  box-shadow: 0 3px 14px rgba(41, 35, 92, 0.08);
}

/* Grade de 3 colunas: avatar | nome+cargo | selo do LinkedIn.
   O avatar e o selo ocupam as duas linhas do bloco de texto, então
   não é preciso nenhum wrapper extra em volta de nome e cargo. */
.depoimentos-ppfl__person {
  display: grid;
  grid-template-columns: auto 1fr auto;
  column-gap: 8px;
  align-items: center;
}

.depoimentos-ppfl__avatar {
  grid-row: 1 / span 2;
  width: 46px;
  height: 46px;
}

.depoimentos-ppfl__name {
  grid-column: 2;
  font-size: 19px;
  font-weight: var(--font-weight-regular);
  line-height: 23px;
  color: var(--dep-name);
}

.depoimentos-ppfl__role {
  grid-column: 2;
  font-size: 11px;
  font-weight: var(--font-weight-regular);
  line-height: 14px;
  letter-spacing: 0.2px;
  color: var(--dep-role);
}

.depoimentos-ppfl__linkedin {
  grid-row: 1;
  grid-column: 3;
  align-self: center;
  width: 15px;
  height: 15px;
}

.depoimentos-ppfl__quote {
  margin: 8px 0 0;
  padding: 0;
  border: 0;
}

.depoimentos-ppfl__quote p {
  margin: 0;
  font-size: 11.7px;
  font-weight: var(--font-weight-regular);
  line-height: 16px;
  color: var(--dep-quote);
}


/* --- Estrelas: ficam FORA do cartão, sobre o fundo da arte --- */
.depoimentos-ppfl__stars {
  position: absolute;
  top: 353px;
  left: 30px;
  margin: 0;
  font-size: 17px;
  line-height: 1;
  letter-spacing: 3px;
  color: var(--dep-star);
}


/* ============================================================ */
/* MOCKUP DE CELULAR (decorativo)                              */
/* ============================================================ */
/* Corpo único. A lateral direita do export do Figma (a faixa em
   perspectiva + o botão de energia branco ao lado dela) foi
   reproduzida como um brilho na própria borda da carcaça: em CSS,
   desenhada como peças soltas, ela lia como um aparelho rachado. */
.depoimentos-ppfl__phone {
  position: absolute;
  top: 63px;
  left: 410px;
  box-sizing: border-box;
  width: 199px;
  height: 416px;
  padding: 7px;
  border-radius: 30px;
  background-image: linear-gradient(100deg,
    #3d3839 0%,
    var(--dep-phone-shell) 14%,
    var(--dep-phone-shell) 84%,
    #565051 100%);
  box-shadow: 0 22px 38px -22px rgba(35, 30, 60, 0.5);
}

/* Botões de volume (esquerda) e de energia (direita): 2px para fora
   do corpo — o bastante para ler como botão, sem abrir vão. */
.depoimentos-ppfl__phone::before {
  content: "";
  position: absolute;
  top: 96px;
  left: -2px;
  width: 2px;
  height: 74px;
  border-radius: 2px 0 0 2px;
  background-color: #2c2829;
}

.depoimentos-ppfl__phone::after {
  content: "";
  position: absolute;
  top: 112px;
  right: -2px;
  width: 2px;
  height: 48px;
  border-radius: 0 2px 2px 0;
  background-color: #2c2829;
}

.depoimentos-ppfl__screen {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border-radius: 23px;
  background-color: var(--color-white);
}

/* Recorte do topo, com o alto-falante e a câmera que aparecem no
   export — é o que faz o bloco preto ler como notch e não como uma
   mancha solta sobre a tela. */
.depoimentos-ppfl__notch {
  position: absolute;
  top: 0;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  width: 88px;
  height: 15px;
  transform: translateX(-50%);
  border-radius: 0 0 11px 11px;
  background-color: var(--dep-phone-shell);
}

.depoimentos-ppfl__notch::before {
  content: "";
  width: 26px;
  height: 2.5px;
  border-radius: 2px;
  background-color: #dcdcdc;
}

.depoimentos-ppfl__notch::after {
  content: "";
  width: 3.5px;
  height: 3.5px;
  border-radius: 50%;
  background-color: #dcdcdc;
}

.depoimentos-ppfl__status {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-between;
  height: 22px;
  padding: 0 10px;
  font-size: 6.5px;
  letter-spacing: 0.4px;
  color: #d5d7da;
}

.depoimentos-ppfl__signal {
  display: flex;
  align-items: center;
  gap: 4px;
}

.depoimentos-ppfl__wifi {
  width: 8px;
  height: 8px;
  background-color: #3f4348;
  -webkit-mask: url("../img/academia/programa-formacao-lean/icons/bi-wifi.svg") center / contain no-repeat;
          mask: url("../img/academia/programa-formacao-lean/icons/bi-wifi.svg") center / contain no-repeat;
}

.depoimentos-ppfl__battery {
  width: 11px;
  height: 5px;
  border-radius: 1px;
  background-image: repeating-linear-gradient(90deg, #3f4348 0 2px, transparent 2px 3px);
}


/* --- Barra do app --- */
.depoimentos-ppfl__appbar {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-between;
  height: 30px;
  padding: 0 11px;
  border-bottom: 1px solid var(--dep-phone-line);
}

.depoimentos-ppfl__back {
  font-size: 15px;
  line-height: 1;
  color: #a8a8a8;
}

.depoimentos-ppfl__wordmark {
  display: inline-flex;
  align-items: center;
  gap: 1px;
  font-size: 15px;
  font-weight: var(--font-weight-bold);
  line-height: 1;
  letter-spacing: -0.4px;
  color: var(--dep-linkedin);
}

.depoimentos-ppfl__wordmark-in {
  width: 15px;
  height: 15px;
}


/* --- Post --- */
.depoimentos-ppfl__post {
  display: grid;
  flex: 0 0 auto;
  grid-template-columns: auto 1fr;
  column-gap: 8px;
  align-items: center;
  padding: 11px 11px 0;
}

.depoimentos-ppfl__post-avatar {
  grid-row: 1 / span 2;
  width: 30px;
  height: 30px;
}

.depoimentos-ppfl__post-name {
  grid-column: 2;
  font-size: 8.5px;
  line-height: 11px;
  color: var(--dep-phone-name);
}

.depoimentos-ppfl__post-role {
  grid-column: 2;
  font-size: 6px;
  line-height: 8px;
  color: var(--dep-phone-role);
}

.depoimentos-ppfl__post-text {
  flex: 1 1 auto;
  margin: 0;
  padding: 12px 11px 0;
  font-size: 8px;
  line-height: 14px;
  color: var(--dep-phone-quote);
}


/* --- Rodapé do app: caixa de resposta + abas --- */
.depoimentos-ppfl__composer {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-top: 1px solid var(--dep-phone-line);
}

.depoimentos-ppfl__composer-avatar {
  flex: 0 0 auto;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background-color: var(--dep-phone-chrome);
}

.depoimentos-ppfl__composer-field {
  flex: 1 1 auto;
  height: 11px;
  border-radius: 6px;
  background-color: var(--dep-phone-chrome);
}

.depoimentos-ppfl__tabbar {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-around;
  height: 34px;
  border-top: 1px solid var(--dep-phone-line);
}

/* Os ícones vêm de arquivos SVG (Bootstrap Icons) aplicados como
   máscara — assim a cor fica no CSS e não há SVG inline repetido
   seis vezes no fragmento. A máscara vai no `::before`, e não no
   elemento: no elemento ela recortaria também o selo de
   notificação, que é o `::after` do mesmo `<span>`. */
.depoimentos-ppfl__tab {
  position: relative;
  width: 15px;
  height: 15px;
}

.depoimentos-ppfl__tab::before {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--dep-phone-icon);
  -webkit-mask: var(--dep-tab-icon) center / contain no-repeat;
          mask: var(--dep-tab-icon) center / contain no-repeat;
}

.depoimentos-ppfl__tab--inicio     { --dep-tab-icon: url("../img/academia/programa-formacao-lean/icons/bi-house-door-fill.svg"); }
.depoimentos-ppfl__tab--descobrir  { --dep-tab-icon: url("../img/academia/programa-formacao-lean/icons/bi-compass.svg"); }
.depoimentos-ppfl__tab--alertas    { --dep-tab-icon: url("../img/academia/programa-formacao-lean/icons/bi-bell.svg"); }
.depoimentos-ppfl__tab--mensagens  { --dep-tab-icon: url("../img/academia/programa-formacao-lean/icons/bi-envelope.svg"); }

.depoimentos-ppfl__tab--alertas::after {
  content: "";
  position: absolute;
  top: -3px;
  right: -4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--dep-phone-badge);
}

.depoimentos-ppfl__home-bar {
  position: absolute;
  bottom: 3px;
  left: 50%;
  width: 62px;
  height: 3px;
  transform: translateX(-50%);
  border-radius: 2px;
  background-color: #d8d8d8;
}


/* ============================================================ */
/* PAGINAÇÃO                                                   */
/* ============================================================ */
.depoimentos-ppfl__nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  height: 44px;
  margin-top: 79px;                      /* 845 - 766 no frame */
}

.depoimentos-ppfl__arrow {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--color-border-soft);
  border-radius: 22px;
  background-color: var(--color-white);
  font-family: inherit;
  font-size: 0.831rem;                   /* 13.3px */
  line-height: 1;
  color: var(--color-navy-deep);
  cursor: pointer;
  transition: border-color 0.2s, background-color 0.2s;
}

.depoimentos-ppfl__arrow:hover,
.depoimentos-ppfl__arrow:focus-visible {
  border-color: var(--color-violet);
  background-color: #f7f6ff;
}

.depoimentos-ppfl__dots {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* O botão tem os 8px do design, mas a área de clique é estendida
   por um `::after` invisível — 24px de alvo, como pede o WCAG. */
.depoimentos-ppfl__dot {
  position: relative;
  width: 8px;
  height: 8px;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background-color: var(--color-border-soft);
  cursor: pointer;
  transition: width 0.3s ease, background-color 0.3s ease;
}

.depoimentos-ppfl__dot::after {
  content: "";
  position: absolute;
  inset: -8px;
}

.depoimentos-ppfl__dot.is-active {
  width: 22px;
  border-radius: 8px;
  background-color: var(--color-violet);
}

.depoimentos-ppfl__dot:focus-visible {
  outline: 2px solid var(--color-violet);
  outline-offset: 3px;
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
/* Enquanto o coverflow vale, uma única variável reduz o palco
   inteiro — cards, celular, tipografia da arte e deslocamentos.
   `--dep-zoom` precisa ser um NÚMERO: em `calc(533px * var(...))`,
   um valor em px (ex.: `calc(100vw / 666)`) daria px² e a
   declaração inteira seria descartada, zerando a altura do palco. */
@media (max-width: 1439.98px) {
  .ppfl-page { --dep-zoom: 0.90; }
}

@media (max-width: 1247.98px) {
  .ppfl-page { --dep-zoom: 0.80; }

  .depoimentos-ppfl__stage { margin-top: 42px; }
  .depoimentos-ppfl__nav   { margin-top: 60px; }
}

@media (max-width: 1091.98px) {
  .ppfl-page { --dep-zoom: 0.72; }
}

/* Abaixo de 992px o coverflow sai de cena. Não é só falta de
   largura: a arte é uma tela fixa, então reduzi-la encolhe também a
   tipografia — a citação, que já nasce com 11.7px, ficaria ilegível.
   Aqui a arte volta ao fluxo normal, com corpo de texto de verdade,
   e o celular (decorativo, repete a mesma citação) sai. */
@media (max-width: 991.98px) {
  .depoimentos-ppfl {
    padding-block: 40px 56px;
  }

  .depoimentos-ppfl__stage {
    height: auto;
    margin-top: 36px;
    overflow: visible;
  }

  .depoimentos-ppfl__track {
    position: relative;
    top: auto;
    left: auto;
    width: auto;
    max-width: 480px;
    height: auto;
    margin: 0 auto;
    transform: none;
  }

  /* Os cards fora de foco continuam no DOM (e no índice de busca):
     saem do fluxo e ficam invisíveis, sem `display: none`. */
  .depoimentos-ppfl__track .depoimentos-ppfl__slide {
    position: absolute;
    inset: 0 0 auto;
    opacity: 0;
    transform: none;
    pointer-events: none;
  }

  .depoimentos-ppfl__track .depoimentos-ppfl__slide[data-pos="0"] {
    position: relative;
    opacity: 1;
    pointer-events: auto;
  }

  .depoimentos-ppfl__art {
    height: auto;
    padding: 26px 20px 28px;
  }

  .depoimentos-ppfl__art-img {
    height: auto;
  }

  .depoimentos-ppfl__logo {
    position: static;
    height: 46px;
  }

  .depoimentos-ppfl__card {
    position: static;
    width: auto;
    min-height: 0;
    margin-top: 20px;
    padding: 16px 18px 18px;
  }

  .depoimentos-ppfl__person  { column-gap: 12px; }
  .depoimentos-ppfl__avatar  { width: 44px; height: 44px; }
  .depoimentos-ppfl__linkedin { width: 18px; height: 18px; }
  .depoimentos-ppfl__name    { font-size: 17px; line-height: 22px; }
  .depoimentos-ppfl__role    { font-size: 12px; line-height: 16px; }

  .depoimentos-ppfl__quote p {
    font-size: 14px;
    line-height: 21px;
  }

  .depoimentos-ppfl__stars {
    position: static;
    margin-top: 16px;
    font-size: 20px;
    letter-spacing: 4px;
  }

  .depoimentos-ppfl__phone { display: none; }

  .depoimentos-ppfl__nav { margin-top: 32px; }
}

@media (max-width: 767.98px) {
  .depoimentos-ppfl__title {
    font-size: 2rem;
    line-height: 1.2;
  }

  .depoimentos-ppfl__lead {
    font-size: 1rem;
    line-height: 1.55;
  }

  .depoimentos-ppfl__rule    { margin-top: 32px; }
  .depoimentos-ppfl__stage   { margin-top: 30px; }
  .depoimentos-ppfl__art     { padding: 22px 16px 24px; }
  .depoimentos-ppfl__quote p { font-size: 13.5px; line-height: 20px; }
}

@media (prefers-reduced-motion: reduce) {
  .depoimentos-ppfl__slide,
  .depoimentos-ppfl__dot {
    transition: none;
  }
}


/* ============================================================ */
/* 8/10 — DETALHES PARA ESPECIALISTAS                         */
/* origem: sections/6-detalhes.css                            */
/* ============================================================ */
/* Medidas do Figma: seção 920px de largura máxima com 32px de
   respiro interno → 856px de conteúdo, que é a largura exata do
   bloco de abas + painel.                                       */
.detalhes-ppfl {
  --det-container:   920px;
  --det-gutter:      32px;
  /* Medidas conferidas pixel a pixel nos dois screenshots de
     referência, relativas à borda esquerda do painel (856px):
       44  → sublinha "Conteúdo" começa      · 418 termina
       441 → traço vertical
       451 → faixas de resultado começam     · 842 terminam
       462 → sublinha "Resultados" começa    · 820 termina
     O respiro à direita é 14px porque as faixas avançam além dele. */
  --det-panel-pad:   44px;
  --det-col-gap:     32px;   /* vão entre conteúdo e resultados */
  --det-metrica-col: 392px;  /* largura das faixas de resultado */
  --det-metrica-pl:  12px;   /* recuo do texto dentro da faixa */
  --det-metrica-pr:  22px;   /* sobra à direita do anel */
  --det-gauge:       66px;   /* piso: o anel tem a altura da faixa */

  /* Troca de aba — um só compasso para altura, crossfade e cores */
  --det-swap:    480ms;
  --det-swap-bg: 560ms;
  --det-ease:    cubic-bezier(.4, 0, .2, 1);

  /* Tema — sobrescrito por [data-detalhes-theme] */
  --det-accent:        var(--color-indigo);
  --det-panel-bg:      #f5f3ff;
  --det-panel-border:  #f5f6ff;
  --det-title:         var(--color-navy-deep);

  position: relative;
  padding: 72px 24px 90px;
  font-family: var(--font-primary);
  background-color: var(--color-white);
}

.detalhes-ppfl[data-detalhes-theme='industria'] {
  --det-accent:       var(--color-accent);
  --det-panel-bg:     #fff8f8;
  --det-panel-border: var(--color-border-soft);
  --det-title:        var(--color-accent);
}

/* --- Fundo: duas camadas em crossfade ---
   Gradiente não é animável, então o tom da página troca por
   opacidade — cada aba tem a sua camada. */
.detalhes-ppfl__bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.detalhes-ppfl__bg-layer {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity var(--det-swap-bg) ease;
}

.detalhes-ppfl__bg-layer--servicos {
  background-image: linear-gradient(179.69deg, #ffffff 0.5%, #efeafb 99.59%);
}

.detalhes-ppfl__bg-layer--industria {
  background-image: linear-gradient(180deg, #ffffff 0%, #feead6 100%);
}

.detalhes-ppfl[data-detalhes-theme='servicos']  .detalhes-ppfl__bg-layer--servicos,
.detalhes-ppfl[data-detalhes-theme='industria'] .detalhes-ppfl__bg-layer--industria {
  opacity: 1;
}

.detalhes-ppfl__container {
  position: relative;
  box-sizing: border-box;
  max-width: var(--det-container);
  margin: 0 auto;
  padding-inline: var(--det-gutter);
}


/* --- Cabeçalho: título, texto de apoio e régua laranja --- */
.detalhes-ppfl__header {
  max-width: 680px;
  margin: 0 auto;
  text-align: center;
}

.detalhes-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 48px;
  color: var(--color-navy-deep);
}

.detalhes-ppfl__lead {
  margin: 16px 0 0;
  font-size: 1.019rem;                   /* 16.3px */
  font-weight: var(--font-weight-regular);
  line-height: 25.3px;
  color: var(--color-text-muted);
}

.detalhes-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 40px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* ABAS                                                        */
/* ============================================================ */
.detalhes-ppfl__tabs {
  margin-top: 40px;
}

/* As duas abas alinham pelo TOPO (é assim no Figma): o texto fica
   na mesma linha nas duas e a ativa cresce para baixo, passando
   por cima da borda do painel e apagando a emenda. Por isso a
   fileira tem altura fixa — a aba ativa transborda de propósito. */
.detalhes-ppfl__tablist {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  height: 50px;
  padding-left: 24px;
  position: relative;
  z-index: 2;
}

.detalhes-ppfl__tab {
  appearance: none;
  border: 0;
  margin: 0;
  box-sizing: border-box;
  height: 50px;
  padding: 13px 26px;
  border-radius: 10px 10px 0 0;
  font-family: inherit;
  font-size: 0.881rem;                   /* 14.1px */
  font-weight: var(--font-weight-bold);
  line-height: 21.82px;
  color: var(--color-white);
  white-space: nowrap;
  cursor: pointer;
  opacity: .5;
  transition: opacity var(--det-swap) ease, height var(--det-swap) var(--det-ease);
}

.detalhes-ppfl__tab--servicos  { background-color: var(--color-indigo); }
.detalhes-ppfl__tab--industria { background-color: var(--color-accent); }

.detalhes-ppfl__tab:hover:not(.is-active) { opacity: .72; }

.detalhes-ppfl__tab:focus-visible {
  outline: 2px solid var(--color-navy-deep);
  outline-offset: 2px;
}

.detalhes-ppfl__tab.is-active {
  opacity: 1;
  height: 59px;                          /* 9px entram por cima do painel */
}


/* ============================================================ */
/* PAINEL                                                      */
/* ============================================================ */
.detalhes-ppfl__panels {
  position: relative;
}

.detalhes-ppfl__panel {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  padding: 33px 0 44px;
  border: 1px solid var(--det-panel-border);
  border-radius: 16px;
  background-color: var(--det-panel-bg);
  box-shadow:
    6px 8px 5.2px rgba(0, 0, 0, .16),
    0 30px 60px -34px rgba(41, 35, 92, .32);
  transition:
    background-color var(--det-swap) ease,
    border-color var(--det-swap) ease;
}

/* Sem JS os painéis ficam em fluxo e o inativo some por [hidden];
   o modo empilhado abaixo é ligado pelo próprio script. */
.detalhes-ppfl__panel[hidden] { display: none; }

/* --- Troca suave: os dois painéis ocupam o mesmo lugar ---
   O contêiner tem a altura fixada em px pelo JS, então ela pode
   ser animada — é isso que faz o card "crescer" de um conteúdo
   para o outro em vez de saltar. */
.detalhes-ppfl__panels.is-animated {
  transition: height var(--det-swap) var(--det-ease);
}

.detalhes-ppfl__panels.is-animated .detalhes-ppfl__panel {
  position: absolute;
  inset: 0 0 auto;
  opacity: 0;
  /* visibility só cai no fim: tira o painel de saída da árvore de
     acessibilidade e da ordem de foco sem cortar a animação */
  visibility: hidden;
  transform: translateY(12px) scale(.995);
  transform-origin: 50% 0;
  pointer-events: none;
  transition:
    opacity 260ms ease,
    transform var(--det-swap) var(--det-ease),
    background-color var(--det-swap) ease,
    border-color var(--det-swap) ease,
    visibility 0s linear var(--det-swap);
}

.detalhes-ppfl__panels.is-animated .detalhes-ppfl__panel.is-active {
  z-index: 2;
  opacity: 1;
  visibility: visible;
  transform: none;
  pointer-events: auto;
  /* entra com 80ms de atraso, para não somar opacidade com o que sai */
  transition:
    opacity 320ms ease 80ms,
    transform var(--det-swap) var(--det-ease),
    background-color var(--det-swap) ease,
    border-color var(--det-swap) ease,
    visibility 0s;
}

.detalhes-ppfl__panel:focus-visible {
  outline: 2px solid var(--det-accent);
  outline-offset: 3px;
}

.detalhes-ppfl__panel-title {
  margin: 0;
  padding-inline: var(--det-panel-pad);
  font-size: 2.5rem;                     /* 40px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--det-title);
  transition: color var(--det-swap) ease;
}


/* --- Duas colunas: conteúdo | resultados ---
   As faixas de resultado avançam além do respiro interno da
   direita (é assim no Figma: 392px terminando a 14px da borda do
   painel), por isso o padding assimétrico.

   Os dois rótulos ocupam a MESMA linha do grid e são alinhados
   pela base (`align-self: end`) — é isso que põe as duas sublinhas
   exatamente na mesma altura, mesmo com "Resultados…" ocupando
   duas linhas e "Conteúdo" uma só. É assim nos dois frames. */
.detalhes-ppfl__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--det-metrica-col);
  grid-template-rows: auto 1fr;
  column-gap: var(--det-col-gap);
  margin-top: 28px;
  padding-left: var(--det-panel-pad);
  padding-right: 14px;
}

.detalhes-ppfl__label--conteudo   { grid-area: 1 / 1; align-self: end; }
.detalhes-ppfl__topicos           { grid-area: 2 / 1; }
.detalhes-ppfl__label--resultados { grid-area: 1 / 2; align-self: end; }
.detalhes-ppfl__metricas          { grid-area: 2 / 2; }

/* sem margem inferior: a linha 2 começa exatamente na sublinha,
   que é de onde o traço vertical tem de partir */
.detalhes-ppfl__label {
  margin: 0;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--color-border-soft);
  font-size: 0.681rem;                   /* 10.9px */
  font-weight: var(--font-weight-bold);
  line-height: 16.86px;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* a sublinha acompanha a faixa (462 → 820); o texto quebra em duas
   linhas aos 284px, como no Figma — daí o <span> interno */
.detalhes-ppfl__label--resultados {
  margin-left: var(--det-metrica-pl);
  margin-right: var(--det-metrica-pr);
}

.detalhes-ppfl__label--resultados span {
  display: block;
  max-width: 284px;
}


/* --- Coluna esquerda: lista de conteúdo ---
   O "□" do Figma vira um quadrado em CSS: renderiza igual em
   qualquer fonte e acompanha o tamanho do texto. */
.detalhes-ppfl__topicos {
  margin: 0;
  padding: 17px 0 0;
  list-style: none;
}

.detalhes-ppfl__topicos li {
  position: relative;
  padding-left: 20px;
  margin-top: 5px;
  font-size: 0.85rem;                    /* 13.6px */
  line-height: 21px;
  color: var(--color-text-strong);
}

.detalhes-ppfl__topicos li:first-child { margin-top: 0; }

.detalhes-ppfl__topicos li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  width: 9px;
  height: 9px;
  border: 1.2px solid var(--color-navy-deep);
  border-radius: 1px;
}


/* --- Coluna direita: faixas de resultado ---
   O traço vertical fica 10px à esquerda da faixa (441 contra 451) e
   vai da sublinha até o fim da coluna — como a linha 2 do grid
   começa na sublinha, basta `inset` completo. */
.detalhes-ppfl__metricas {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  padding: 10px 0 0;
  list-style: none;
}

.detalhes-ppfl__metricas::before {
  content: '';
  position: absolute;
  left: -9px;                                     /* 441 no frame */
  top: 0;
  bottom: 0;
  width: 1px;
  background-color: var(--color-border-soft);
}

/* Sem respiro vertical: o anel encosta no topo e na base da faixa
   — nos dois frames o círculo tem exatamente a altura dela. */
.detalhes-ppfl__metrica {
  display: flex;
  align-items: center;
  gap: 10px;
  box-sizing: border-box;
  min-height: var(--det-gauge);
  padding: 0 var(--det-metrica-pr) 0 var(--det-metrica-pl);
  border-radius: 6px 0 0 6px;
  background-image: linear-gradient(
    90deg,
    #e1dcf3 3.365%,
    #e1dcf3 60.577%,
    rgba(240, 240, 240, 0) 100%
  );
}

.detalhes-ppfl__metrica-texto {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  padding: 10px 0;
  font-size: 0.75rem;                    /* 12px */
  line-height: 15px;
  color: var(--color-text-muted);
}

.detalhes-ppfl__metrica-texto strong { font-weight: var(--font-weight-bold); }


/* ============================================================ */
/* ANEL DE PORCENTAGEM (gauge)                                 */
/* ============================================================ */
/* O anel tem exatamente a altura da faixa — é o que os dois frames
   mostram (66px de círculo numa faixa de 66, 74 numa de 74). Daí
   `align-self: stretch` + `aspect-ratio`, em vez de tamanho fixo:
   a faixa que cresce leva o círculo junto. */
.detalhes-ppfl__gauge {
  position: relative;
  flex: 0 0 auto;
  align-self: stretch;
  aspect-ratio: 1;
  min-height: var(--det-gauge);
  display: grid;
  place-items: center;
}

.detalhes-ppfl__gauge-ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  /* 12h como ponto de partida do arco */
  transform: rotate(-90deg);
}

.detalhes-ppfl__gauge-disc {
  fill: rgba(255, 255, 255, .72);
  stroke: none;
}

/* 8.5 de 66 = 12,9% do diâmetro — a espessura medida nos frames
   (8px num anel de 66, 10px num de 74) */
.detalhes-ppfl__gauge-track {
  fill: none;
  stroke: #dcd7f0;
  stroke-width: 8.5;
}

/* pathLength="100" faz 1 unidade do dasharray valer 1% do anel */
.detalhes-ppfl__gauge-arc {
  fill: none;
  stroke: var(--det-accent);
  stroke-width: 8.5;
  /* ponta reta: com `round` cada extremidade acrescenta meia
     espessura de arco (~2,4% do anel de cada lado), e o preenchido
     passaria a mostrar mais do que o número escrito no meio */
  stroke-linecap: butt;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;                /* repouso: arco vazio */
  transition:
    stroke-dashoffset 1100ms cubic-bezier(.22, 1, .36, 1),
    stroke 520ms ease;
}

.detalhes-ppfl__gauge.is-drawn .detalhes-ppfl__gauge-arc {
  stroke-dashoffset: calc(100 - var(--det-arc, 0));
}

.detalhes-ppfl__gauge-valor {
  position: relative;
  font-size: 0.813rem;                   /* 13px */
  line-height: 20.83px;
  color: var(--det-accent);
  white-space: nowrap;
  /* entra junto com o arco */
  opacity: 0;
  transform: scale(.86);
  transition: opacity 420ms ease, transform 520ms cubic-bezier(.22, 1, .36, 1),
              color 520ms ease;
}

.detalhes-ppfl__gauge.is-drawn .detalhes-ppfl__gauge-valor {
  opacity: 1;
  transform: scale(1);
}


/* ============================================================ */
/* INDICAÇÃO                                                   */
/* ============================================================ */
.detalhes-ppfl__indicacao {
  margin: 32px var(--det-panel-pad) 0;
  padding: 18px 22px;
  border-radius: 10px;
  background-color: var(--color-white);
  /* o Figma marca inset 0 4px 4px rgba(0,0,0,.25); no render do
     frame a sombra aparece bem mais leve — ver README */
  box-shadow: inset 0 4px 4px rgba(0, 0, 0, .12);
}

.detalhes-ppfl__indicacao-label {
  margin: 0;
  font-size: 0.7rem;                     /* 11.2px */
  font-weight: var(--font-weight-bold);
  line-height: 17.36px;
  text-transform: uppercase;
  color: var(--color-navy-deep);
}

.detalhes-ppfl__indicacao-texto {
  margin: 4.79px 0 0;
  font-size: 0.869rem;                   /* 13.9px */
  line-height: 21.58px;
  color: var(--color-text-muted);
}


/* ============================================================ */
/* RODAPÉ DO PAINEL                                            */
/* ============================================================ */
.detalhes-ppfl__rodape {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 32px var(--det-panel-pad) 0;
}

.detalhes-ppfl__rodape-texto {
  margin: 0;
  font-size: 1rem;                       /* 16px */
  font-weight: var(--font-weight-bold);
  line-height: 21.82px;
  color: var(--color-navy-deep);
}

.detalhes-ppfl__cta {
  display: inline-flex;
  align-items: center;
  padding: 12px 22px;
  border-radius: 8px;
  background-color: var(--color-teal);
  font-size: 0.838rem;                   /* 13.4px */
  font-weight: var(--font-weight-bold);
  line-height: 20.83px;
  color: var(--color-white);
  text-decoration: none;
  transition: background-color 200ms ease, transform 200ms ease;
}

.detalhes-ppfl__cta:hover,
.detalhes-ppfl__cta:focus-visible {
  background-color: var(--color-teal-dark);
  color: var(--color-white);
}

.detalhes-ppfl__cta-seta {
  margin-left: 6px;
  transition: transform 200ms ease;
}

.detalhes-ppfl__cta:hover .detalhes-ppfl__cta-seta { transform: translateX(3px); }


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
/* Abaixo de 920px o painel deixa de ter os 856px do Figma: as
   faixas de resultado voltam para dentro do respiro interno. */
@media (max-width: 991.98px) {
  .detalhes-ppfl__grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    padding-right: var(--det-panel-pad);
  }

  /* uma coluna só: os quatro blocos voltam a fluir na ordem do HTML */
  .detalhes-ppfl__label--conteudo,
  .detalhes-ppfl__topicos,
  .detalhes-ppfl__label--resultados,
  .detalhes-ppfl__metricas {
    grid-area: auto;
  }

  .detalhes-ppfl__label--resultados {
    margin: 28px 0 0;
  }

  .detalhes-ppfl__label--resultados span { max-width: none; }

  .detalhes-ppfl__metricas::before { display: none; }

  .detalhes-ppfl__metrica {
    border-radius: 6px;
    background-image: linear-gradient(90deg, #e1dcf3 0%, #e1dcf3 62%, rgba(240, 240, 240, 0) 100%);
  }
}

@media (max-width: 767.98px) {
  .detalhes-ppfl {
    --det-panel-pad: 24px;
    --det-gauge: 58px;
    padding: 56px 20px 70px;
  }

  .detalhes-ppfl__title  { font-size: 1.875rem; line-height: 38px; }
  .detalhes-ppfl__lead   { font-size: 0.95rem; line-height: 23px; }
  .detalhes-ppfl__rule   { margin-top: 28px; }
  .detalhes-ppfl__tabs   { margin-top: 28px; }

  .detalhes-ppfl__panel       { padding: 26px 0 32px; }
  .detalhes-ppfl__panel-title { font-size: 1.75rem; line-height: 34px; }

  .detalhes-ppfl__gauge-valor { font-size: 0.75rem; }
  .detalhes-ppfl__indicacao   { margin-top: 26px; padding: 16px 18px; }
  .detalhes-ppfl__rodape      { margin-top: 26px; }
}

@media (max-width: 575.98px) {
  .detalhes-ppfl__tablist { padding-left: 12px; gap: 4px; }
  .detalhes-ppfl__tab     { padding-inline: 16px; font-size: 0.813rem; }

  /* nunca respiro vertical aqui: o anel acompanha a altura da faixa */
  .detalhes-ppfl__metrica { padding: 0 14px; }

  /* No celular o texto quebra em 4–5 linhas: com stretch o anel crescia com a faixa e passava da
     borda do card. Aqui ele tem tamanho fixo e fica centralizado na altura. */
  .detalhes-ppfl__gauge {
    align-self: center;
    width: var(--det-gauge);
    height: var(--det-gauge);
  }

  .detalhes-ppfl__rodape      { flex-direction: column; align-items: stretch; }
  .detalhes-ppfl__rodape-texto { text-align: center; }
  .detalhes-ppfl__cta          { justify-content: center; }
}


/* ============================================================ */
/* MOVIMENTO REDUZIDO                                          */
/* ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .detalhes-ppfl {
    --det-swap:    1ms;
    --det-swap-bg: 1ms;
  }

  .detalhes-ppfl__bg-layer,
  .detalhes-ppfl__tab,
  .detalhes-ppfl__panels.is-animated,
  .detalhes-ppfl__panel,
  .detalhes-ppfl__panel-title,
  .detalhes-ppfl__gauge-arc,
  .detalhes-ppfl__gauge-valor,
  .detalhes-ppfl__cta,
  .detalhes-ppfl__cta-seta {
    transition-duration: 1ms !important;
  }

  .detalhes-ppfl__panels.is-animated .detalhes-ppfl__panel {
    transform: none;
  }
}


/* ============================================================ */
/* 9/10 — DÚVIDAS — FAQ (oculta)                              */
/* origem: sections/10-faq.css                                */
/* ============================================================ */
/* Enquanto a seção não for aprovada ela sai do fluxo pelo atributo
   `hidden` do HTML. A regra abaixo garante isso mesmo com o `display`
   que a própria seção define — `hidden` sozinho perde para qualquer
   `display` em CSS. */
.faq-ppfl[hidden] {
  display: none;
}

.faq-ppfl {
  padding: 72px 24px 90px;
  font-family: var(--font-primary);
  background-color: var(--color-white);
}

.faq-ppfl__container {
  box-sizing: border-box;
  max-width: var(--faq-ppfl-container);
  margin: 0 auto;
  padding-inline: var(--faq-ppfl-gutter);
}


/* --- Cabeçalho (mesmo compasso da seção 6) --- */
.faq-ppfl__header {
  text-align: center;
}

.faq-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 48px;
  color: var(--color-navy-deep);
}

.faq-ppfl__lead {
  max-width: 680px;
  margin: 14px auto 0;
  font-size: 1.019rem;                   /* 16.3px */
  line-height: 25.3px;
  color: var(--color-text-muted);
}

.faq-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 32px auto 0;
  background-color: var(--color-accent);
}


/* --- Lista de perguntas --- */
.faq-ppfl__list {
  display: flex;
  flex-direction: column;
  gap: var(--faq-ppfl-gap);
  margin: 40px 0 0;
  padding: 0;
}

.faq-ppfl__box {
  border: 1px solid var(--color-border-soft);
  border-radius: var(--faq-ppfl-radius);
  background-color: var(--color-surface-soft);
}

.faq-ppfl__box[open] {
  background-color: var(--color-white);
  box-shadow: 0 2px 12px rgba(41, 35, 92, 0.08);
}

.faq-ppfl__pergunta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: var(--faq-ppfl-pad);
  cursor: pointer;
  font-size: 1.0625rem;                  /* 17px */
  font-weight: var(--font-weight-bold);
  line-height: 24px;
  color: var(--color-navy-deep);
  list-style: none;                      /* tira o triângulo padrão */
}

.faq-ppfl__pergunta::-webkit-details-marker {
  display: none;
}

.faq-ppfl__pergunta:hover,
.faq-ppfl__box[open] .faq-ppfl__pergunta {
  color: var(--color-accent);
}

.faq-ppfl__pergunta:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* O "+" que vira "×": duas hastes, e a vertical some ao abrir */
.faq-ppfl__sinal {
  position: relative;
  flex: 0 0 auto;
  width: var(--faq-ppfl-sinal);
  height: var(--faq-ppfl-sinal);
}

.faq-ppfl__sinal::before,
.faq-ppfl__sinal::after {
  content: "";
  position: absolute;
  inset: 50% 0 auto;
  height: 2px;
  border-radius: 2px;
  background-color: currentColor;
  transform: translateY(-50%);
  transition: transform 0.2s ease, opacity 0.2s ease;
}

.faq-ppfl__sinal::after {
  transform: translateY(-50%) rotate(90deg);
}

.faq-ppfl__box[open] .faq-ppfl__sinal::after {
  transform: translateY(-50%) rotate(180deg);
  opacity: 0;
}

.faq-ppfl__resposta {
  padding: 0 var(--faq-ppfl-pad) var(--faq-ppfl-pad);
}

.faq-ppfl__resposta p {
  margin: 0;
  font-size: 1rem;
  font-weight: var(--font-weight-regular);
  line-height: 25px;
  color: var(--color-text-muted);
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */
@media (max-width: 767.98px) {
  .faq-ppfl {
    padding: 56px 16px 64px;
  }

  .faq-ppfl__container {
    padding-inline: 0;
  }

  .faq-ppfl__title {
    font-size: 1.75rem;                  /* 28px */
    line-height: 34px;
  }

  .faq-ppfl__list {
    margin-top: 32px;
  }

  .faq-ppfl__pergunta {
    padding: 18px;
    font-size: 1rem;
  }

  .faq-ppfl__resposta {
    padding: 0 18px 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq-ppfl__sinal::before,
  .faq-ppfl__sinal::after {
    transition-duration: 1ms;
  }
}


/* ============================================================ */
/* 10/10 — JORNADA — continue sua jornada                     */
/* origem: sections/5-jornada.css                             */
/* ============================================================ */
.jornada-ppfl {
  position: relative;
  padding: 88px 24px 56px;
  background-color: var(--color-white);
  font-family: var(--font-primary);
  overflow: hidden;                      /* confina a arte de ondas */
}

/* A arte é o mesmo arquivo da seção 4 — o export do node desta seção é
   byte-idêntico. Enquadramento em % para sobreviver a qualquer largura. */
.jornada-ppfl__bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.jornada-ppfl__bg img {
  position: absolute;
  top: -53.46%;
  left: -5.64%;
  width: 117.18%;
  height: 206.87%;
  max-width: none;
}

.jornada-ppfl__container {
  position: relative;                    /* acima da arte de fundo */
  box-sizing: border-box;
  max-width: var(--jornada-ppfl-container);
  margin: 0 auto;
  padding-inline: var(--jornada-ppfl-gutter);
}


/* --- Cabeçalho: título e régua laranja --- */
.jornada-ppfl__header {
  text-align: center;
}

.jornada-ppfl__title {
  margin: 0;
  font-size: 2.4rem;                     /* 38.4px */
  font-weight: var(--font-weight-black);
  line-height: 46px;
  color: var(--color-navy-deep);
}

.jornada-ppfl__rule {
  display: block;
  width: 96px;
  height: 4px;
  margin: 12px auto 0;
  background-color: var(--color-accent);
}


/* ============================================================ */
/* CARDS                                                       */
/* ============================================================ */
.jornada-ppfl__cards {
  display: flex;
  gap: var(--jornada-ppfl-card-gap);
  height: var(--jornada-ppfl-card-height);
  margin: 36px 0 0;
  padding: 0;
}

/* A expansão é só o flex-grow: base 0 + razão 682/314 do Figma.
   Não há troca de largura fixa, então o par sempre preenche os 1016px. */
.jornada-ppfl__card {
  position: relative;
  flex: var(--jornada-ppfl-grow-closed) 1 0;
  min-width: 0;
  min-height: 0;
  border-radius: var(--jornada-ppfl-radius);
  overflow: hidden;
  transition: flex-grow var(--jornada-ppfl-dur) var(--jornada-ppfl-ease);
}

.jornada-ppfl__card.is-open {
  flex-grow: var(--jornada-ppfl-grow-open);
}


/* --- Camadas de arte ---------------------------------------- */
/* isolation confina o mix-blend-mode da foto ao próprio card */
.jornada-ppfl__art {
  position: absolute;
  inset: 0;
  overflow: hidden;
  isolation: isolate;
  pointer-events: none;
}

.jornada-ppfl__art::before {
  content: '';
  position: absolute;
  inset: 0;
}

.jornada-ppfl__photo {
  position: absolute;
  max-width: none;
  object-fit: cover;
}

/* Card 1 — Agenda: navy → índigo, escurecedor de base e véu escuro,
   com a foto em soft-light por cima (ordem de camadas do Figma). */
.jornada-ppfl__card--agenda .jornada-ppfl__art::before {
  background-image:
    linear-gradient(237.12deg, rgba(103, 83, 96, .84) 3.93%, rgba(1, 0, 7, .84) 98.44%),
    linear-gradient(to top, rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, .1) 45%),
    linear-gradient(159.76deg, var(--color-navy-deep) 0%, var(--color-indigo) 100%);
}

/* height/top em % é o que faz a foto terminar a ~77% da altura do card
   (a faixa escura da base do frame) em qualquer largura. */
.jornada-ppfl__card--agenda .jornada-ppfl__photo {
  top: -26.67%;
  left: 0;
  width: 100%;
  height: 106.46%;
  opacity: .61;
  mix-blend-mode: soft-light;
}

/* Card 2 — LeanLearning: o degradê âmbar → preto é opaco; o fundo teal →
   violeta e o SVG decorativo que o Figma põe abaixo dele são camadas
   mortas (nunca aparecem no render) e não foram implementados. */
.jornada-ppfl__card--leanlearning .jornada-ppfl__art::before {
  background-image:
    linear-gradient(144.63deg, var(--color-amber) 1.85%, #000000 53.48%);
}

.jornada-ppfl__card--leanlearning .jornada-ppfl__photo {
  inset: 0;
  width: 100%;
  height: 100%;
  object-position: 66% center;           /* faixa de 44.6% a 88.2% do Figma */
  opacity: .27;
}


/* --- Logo: cada marca mantém a métrica do seu lockup --------- */
.jornada-ppfl__logo {
  position: absolute;
  display: block;
}

.jornada-ppfl__card--agenda .jornada-ppfl__logo {
  top: 34px;
  left: 34px;
  width: 52.46px;
  height: 39.16px;
}

.jornada-ppfl__card--leanlearning .jornada-ppfl__logo {
  top: 15px;
  left: 17px;
  width: 95px;
  height: 61px;
}


/* --- Corpo: ancorado na base, cresce para cima --------------- */
/* Por isso a altura de 480px não muda quando o card abre. */
.jornada-ppfl__body {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  box-sizing: border-box;
  padding: var(--jornada-ppfl-pad);
  gap: 8px;
  transition: gap var(--jornada-ppfl-dur) var(--jornada-ppfl-ease);
}

.jornada-ppfl__card.is-open .jornada-ppfl__body {
  gap: 24px;
}

.jornada-ppfl__card-title {
  margin: 0;
}

/* O título é o gatilho do disclosure; o ::before estende o clique ao card
   inteiro, inclusive à área da foto. */
.jornada-ppfl__trigger {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: var(--color-white);
  font-family: inherit;
  font-size: 1.5rem;                     /* 24px — fechado */
  font-weight: var(--font-weight-black);
  line-height: 26px;
  text-align: left;
  cursor: pointer;
  transition:
    font-size   var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    line-height var(--jornada-ppfl-dur) var(--jornada-ppfl-ease);
}

.jornada-ppfl__trigger::before {
  content: '';
  position: absolute;
  inset: 0;
}

.jornada-ppfl__card.is-open .jornada-ppfl__trigger {
  font-size: 2.25rem;                    /* 36px — aberto */
  line-height: 32.24px;
}

.jornada-ppfl__trigger:focus-visible {
  outline: 2px solid var(--color-amber);
  outline-offset: 4px;
}

.jornada-ppfl__desc {
  margin: 0;
  max-width: 226px;                      /* fechado */
  color: var(--color-white);
  font-size: .75rem;                     /* 12px */
  font-weight: var(--font-weight-regular);
  line-height: 14px;
  transition:
    font-size   var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    line-height var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    max-width   var(--jornada-ppfl-dur) var(--jornada-ppfl-ease);
}

.jornada-ppfl__card.is-open .jornada-ppfl__desc {
  max-width: 309px;
  font-size: 1rem;                       /* 16px */
  line-height: 21.82px;
}


/* --- Painel do CTA: sai do fluxo quando fechado -------------- */
/* height: 0 (e não só opacity) — senão o texto do card fechado ficaria
   45px acima da posição do Figma. visibility tira o link da árvore de
   acessibilidade enquanto o card está recolhido. */
.jornada-ppfl__panel {
  height: 0;
  margin-top: 0;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition:
    height     var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    margin-top var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    opacity    var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    transform  var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    visibility 0s linear var(--jornada-ppfl-dur);
}

.jornada-ppfl__card.is-open .jornada-ppfl__panel {
  height: 45px;                          /* 12 + 20.83 + 12 */
  margin-top: 12px;                      /* 24 do gap + 12 = 36 do Figma */
  opacity: 1;
  visibility: visible;
  transform: none;
  transition:
    height     var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    margin-top var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    opacity    var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    transform  var(--jornada-ppfl-dur) var(--jornada-ppfl-ease),
    visibility 0s;
}

/* z-index acima do ::before do gatilho, senão o link não recebe o clique */
.jornada-ppfl__cta {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-sizing: border-box;
  padding: 12px 22px;
  border-radius: 10px;
  background-color: var(--color-white);
  color: var(--color-navy-deep);
  font-size: .8375rem;                   /* 13.4px */
  font-weight: var(--font-weight-bold);
  line-height: 20.83px;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .2s ease;
}

.jornada-ppfl__cta:hover,
.jornada-ppfl__cta:focus-visible {
  background-color: #f2f1fa;
  color: var(--color-navy-deep);
}

.jornada-ppfl__cta:focus-visible {
  outline: 2px solid var(--color-amber);
  outline-offset: 3px;
}

.jornada-ppfl__cta-arrow {
  display: inline-block;
}


/* ============================================================ */
/* RESPONSIVO                                                  */
/* ============================================================ */

/* Empilha: os mesmos flex-grow passam a distribuir a altura
   (aberto ~380px, fechado ~172px). A sanfona continua valendo. */
@media (max-width: 991.98px) {
  .jornada-ppfl__cards {
    flex-direction: column;
    height: 560px;
  }

  .jornada-ppfl__desc,
  .jornada-ppfl__card.is-open .jornada-ppfl__desc {
    max-width: 46ch;
  }
}

@media (max-width: 767.98px) {
  .jornada-ppfl {
    padding: 56px 16px 40px;
  }

  .jornada-ppfl__container {
    padding-inline: 0;
  }

  .jornada-ppfl__title {
    font-size: 1.75rem;                  /* 28px */
    line-height: 34px;
  }

  .jornada-ppfl__cards {
    height: 520px;
    margin-top: 28px;
  }

  .jornada-ppfl__body {
    padding: 24px;
  }

  .jornada-ppfl__trigger {
    font-size: 1.25rem;                  /* 20px */
    line-height: 24px;
  }

  .jornada-ppfl__card.is-open .jornada-ppfl__trigger {
    font-size: 1.625rem;                 /* 26px */
    line-height: 30px;
  }

  .jornada-ppfl__card.is-open .jornada-ppfl__desc {
    font-size: .9375rem;                 /* 15px */
    line-height: 20px;
  }

  .jornada-ppfl__card--agenda .jornada-ppfl__logo {
    top: 24px;
    left: 24px;
  }

  .jornada-ppfl__card--leanlearning .jornada-ppfl__logo {
    top: 12px;
    left: 14px;
    width: 78px;
    height: 50px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .jornada-ppfl__card,
  .jornada-ppfl__body,
  .jornada-ppfl__trigger,
  .jornada-ppfl__desc,
  .jornada-ppfl__panel,
  .jornada-ppfl__cta {
    transition-duration: 1ms;
  }
}


/* ============================================================ */
/* FAQ — tema do modulo padrao do projeto (faq-module.css)      */
/* Contrato da skill: a pagina so sobrescreve os 4 tokens        */
/* --faq-* na propria section; o resto vem do modulo global.     */
/* ============================================================ */
.ppfl-faq {
  --faq-bg: var(--color-surface-light, #f4f5fa);
  --faq-title-color: var(--color-navy-deep, #29235c);
  --faq-text-color: var(--color-text-muted, #475569);
  --faq-accent: var(--color-accent, #ff8000);
}

/* A faixa de ancoras e sticky: o item da FAQ precisa da mesma
   folga de rolagem que as demais secoes da pagina. */
.ppfl-faq .faq-module__item {
  scroll-margin-top: calc(var(--menu-ppfl-height, 64px) + 24px);
}


/* ============================================================ */
/* MOTION — camada de entrada (skill leanweb-ui-standardizer)   */
/* O reveal em si vem de reveal-animations.css (global) e e     */
/* marcado por programaFormacaoLean.anim.js. Aqui ficam so o    */
/* preload da 1a dobra, o parallax do hero e o focus-visible.   */
/* ============================================================ */

/* --- Preload da 1a/2a dobra ---------------------------------
   Sem isto o hero aparece pintado por um frame antes de o modulo
   marcar .reveal (opacity:0) — o "flash" que a skill manda evitar.
   O anim.js remove a classe em requestAnimationFrame. */
.ppfl-page--preload .hero-ppfl__title,
.ppfl-page--preload .hero-ppfl__subtitle,
.ppfl-page--preload .hero-ppfl__rule,
.ppfl-page--preload .hero-ppfl__actions,
.ppfl-page--preload .hero-ppfl__panel,
.ppfl-page--preload .hero-ppfl__stat,
.ppfl-page--preload .formacao-ppfl__title,
.ppfl-page--preload .formacao-ppfl__lead,
.ppfl-page--preload .formacao-ppfl__rule {
  opacity: 0;
}

/* --- Parallax do fundo do hero ------------------------------
   Move a <img> dentro do .hero-ppfl__bg-photo (que ja tem
   overflow:hidden para recortar). O scale evita borda aparecendo
   nos extremos do movimento. */
@media (hover: hover) and (pointer: fine) {
  .hero-ppfl__bg-photo img {
    transform:
      translate3d(var(--hero-parallax-x, 0px), var(--hero-parallax-y, 0px), 0)
      scale(1.06);
    transition: transform 0.25s ease-out;
    will-change: transform;
  }
}

/* --- focus-visible dos CTAs (checklist de a11y da skill) ----
   O motion nao pode depender so de hover: quem navega por teclado
   precisa do mesmo destaque. */
.ppfl-page .btn-ppfl:focus-visible,
.ppfl-page .setorial-ppfl__cta:focus-visible,
.ppfl-page .upsell-ppfl__cta:focus-visible,
.ppfl-page .detalhes-ppfl__cta:focus-visible,
.ppfl-page .jornada-ppfl__cta:focus-visible,
.ppfl-page .menu-ppfl__link:focus-visible,
/* O "Ver mais perguntas" vem do faq-module.css, que e global e nao define
   focus-visible. Cobrimos escopado aqui em vez de mexer no arquivo
   compartilhado (o skill e pagina-a-pagina). */
.ppfl-faq .faq-module__more-btn:focus-visible {
  outline: 3px solid rgba(255, 128, 0, 0.6);
  outline-offset: 2px;
}

/* --- reduced-motion ----------------------------------------
   O contrato do .reveal ja se desliga sozinho; aqui cobrimos o que
   e exclusivo desta pagina (preload e parallax). */
@media (prefers-reduced-motion: reduce) {
  .ppfl-page--preload .hero-ppfl__title,
  .ppfl-page--preload .hero-ppfl__subtitle,
  .ppfl-page--preload .hero-ppfl__rule,
  .ppfl-page--preload .hero-ppfl__actions,
  .ppfl-page--preload .hero-ppfl__panel,
  .ppfl-page--preload .hero-ppfl__stat,
  .ppfl-page--preload .formacao-ppfl__title,
  .ppfl-page--preload .formacao-ppfl__lead,
  .ppfl-page--preload .formacao-ppfl__rule {
    opacity: 1;
  }

  .hero-ppfl__bg-photo img {
    transform: none;
    transition: none;
  }
}


/* ============================================================ */
/* SLIDE-UP (mg-btn) — contrato portado da AgendaTreinamento    */
/* O texto (e o icone) sobem no hover/focus revelando uma 2a    */
/* copia. O upgrade do markup e feito por initMgButtons.        */
/* Escopado a pagina para nao vazar (a Academia usa global).    */
/* ============================================================ */
.ppfl-page {
  --mg-btn-swap-duration: 0.7s;   /* mesma velocidade do Quem Somos */
}

/* Anti-FOUC: esconder conteudo cru enquanto JS nao upgrade o botao. */
.ppfl-page .mg-btn-auto:not(.mg-btn) { color: transparent !important; }
.ppfl-page .mg-btn-auto:not(.mg-btn) > svg,
.ppfl-page .mg-btn-auto:not(.mg-btn) > img,
.ppfl-page .mg-btn-auto:not(.mg-btn) > span:not(.mg-btn__inner):not(.mg-btn__swap):not(.mg-btn__swap-text):not(.mg-btn__icon-wrap):not(.mg-btn__icon) { opacity: 0 !important; visibility: hidden !important; }
.ppfl-page .mg-btn { position: relative; }
.ppfl-page .mg-btn__inner { display: inline-flex; align-items: center; gap: 10px; }
.ppfl-page .mg-btn__swap { position: relative; display: inline-grid; overflow: hidden; }
.ppfl-page .mg-btn__swap-text {
  grid-area: 1 / 1;
  transition: transform var(--mg-btn-swap-duration, .42s) cubic-bezier(.2, .7, .2, 1);
}
.ppfl-page .mg-btn__swap-text.is-absolute { position: absolute; inset: 0; transform: translate3d(0, 130%, 0); }
.ppfl-page .mg-btn:hover .mg-btn__swap-text.is-absolute,
.ppfl-page .mg-btn:focus-visible .mg-btn__swap-text.is-absolute { transform: translate3d(0, 0, 0); }
.ppfl-page .mg-btn:hover .mg-btn__swap-text.is-relative,
.ppfl-page .mg-btn:focus-visible .mg-btn__swap-text.is-relative { transform: translate3d(0, -130%, 0); }
.ppfl-page .mg-btn__icon { grid-area: 1 / 1; display: grid; place-items: center; transition: transform var(--mg-btn-swap-duration, .42s) cubic-bezier(.2, .7, .2, 1); }
.ppfl-page .mg-btn__icon.is-absolute { position: absolute; inset: 0; transform: translate3d(0, 130%, 0); }
.ppfl-page .mg-btn:hover .mg-btn__icon.is-absolute,
.ppfl-page .mg-btn:focus-visible .mg-btn__icon.is-absolute { transform: translate3d(0, 0, 0); }
.ppfl-page .mg-btn:hover .mg-btn__icon.is-relative,
.ppfl-page .mg-btn:focus-visible .mg-btn__icon.is-relative { transform: translate3d(0, -130%, 0); }
.ppfl-page .mg-btn__icon-wrap { width: var(--mg-icon-size, 16px); height: var(--mg-icon-size, 16px); }
.ppfl-page .mg-btn__icon svg { width: 100%; height: 100%; display: block; }

/* Sem animacao de swap em reduced-motion: trava no estado de repouso. */
@media (prefers-reduced-motion: reduce) {
  .ppfl-page .mg-btn__swap-text,
  .ppfl-page .mg-btn__icon { transition: none; }
  .ppfl-page .mg-btn:hover .mg-btn__swap-text.is-absolute,
  .ppfl-page .mg-btn:focus-visible .mg-btn__swap-text.is-absolute,
  .ppfl-page .mg-btn:hover .mg-btn__icon.is-absolute,
  .ppfl-page .mg-btn:focus-visible .mg-btn__icon.is-absolute { transform: translate3d(0, 130%, 0); }
  .ppfl-page .mg-btn:hover .mg-btn__swap-text.is-relative,
  .ppfl-page .mg-btn:focus-visible .mg-btn__swap-text.is-relative,
  .ppfl-page .mg-btn:hover .mg-btn__icon.is-relative,
  .ppfl-page .mg-btn:focus-visible .mg-btn__icon.is-relative { transform: translate3d(0, 0, 0); }
}


/* ============================================================ */
/* HOVER DE CARD — setorial / certificacao / depoimentos        */
/* Padrao da skill: lift + scale na imagem, transicao unica no  */
/* card (opacity/transform/box-shadow) p/ nao brigar com o      */
/* .reveal, e sempre com focus-within + reduced-motion.         */
/* O recorte do zoom fica no CONTEINER da imagem (que ja tem    */
/* overflow:hidden), nunca na propria <img>.                    */
/* ============================================================ */

/* --- Escolha setorial: lift do card + zoom da foto --- */
.ppfl-page .setorial-ppfl__card {
  transition:
    opacity 0.65s ease,
    transform 0.45s cubic-bezier(.2, .7, .2, 1),
    box-shadow 0.45s ease;
}

.ppfl-page .setorial-ppfl__photo {
  transition: transform 0.6s cubic-bezier(.2, .7, .2, 1);
}

/* --- Dupla certificacao: SO o zoom da foto ---
   O .upsell-ppfl__card usa `transition: opacity/visibility` para o
   crossfade das abas — sobrescrever isso quebraria a troca de painel.
   Por isso o hover aqui nao toca no card, so na midia. */
.ppfl-page .upsell-ppfl__photo {
  transition: transform 0.6s cubic-bezier(.2, .7, .2, 1);
}

@media (hover: hover) and (pointer: fine) {
  .ppfl-page .setorial-ppfl__card:hover,
  .ppfl-page .setorial-ppfl__card:focus-within {
    transform: translateY(-6px);
    box-shadow: 0 18px 40px rgba(41, 35, 92, 0.18);
  }

  .ppfl-page .setorial-ppfl__card:hover .setorial-ppfl__photo,
  .ppfl-page .setorial-ppfl__card:focus-within .setorial-ppfl__photo {
    transform: scale(1.06);
  }

  .ppfl-page .upsell-ppfl__card:hover .upsell-ppfl__photo,
  .ppfl-page .upsell-ppfl__card:focus-within .upsell-ppfl__photo {
    transform: scale(1.06);
  }

  /* --- Depoimentos: os slides laterais sao clicaveis (navegam o
     carrossel). O hover so acende a opacidade — NAO pode mexer em
     `transform`, que e como o carrossel posiciona cada slide. A
     transicao de opacity ja existe no proprio slide. --- */
  /* Ganho pequeno e PROPORCIONAL a cada posição. Um `opacity: 1` único
     levava os slides distantes de 0.31 e 0.20 direto ao opaco — um salto
     grande demais, que era o que pesava no efeito. */
  .ppfl-page .depoimentos-ppfl__slide[data-pos="-1"]:hover,
  .ppfl-page .depoimentos-ppfl__slide[data-pos="1"]:hover {
    opacity: calc(var(--dep-o-1) + 0.09);
  }

  .ppfl-page .depoimentos-ppfl__slide[data-pos="-2"]:hover,
  .ppfl-page .depoimentos-ppfl__slide[data-pos="2"]:hover {
    opacity: calc(var(--dep-o-2) + 0.10);
  }

  .ppfl-page .depoimentos-ppfl__slide[data-pos="-3"]:hover,
  .ppfl-page .depoimentos-ppfl__slide[data-pos="3"]:hover {
    opacity: calc(var(--dep-o-3) + 0.10);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ppfl-page .setorial-ppfl__card,
  .ppfl-page .setorial-ppfl__photo,
  .ppfl-page .upsell-ppfl__photo {
    transition: none;
  }

  .ppfl-page .setorial-ppfl__card:hover,
  .ppfl-page .setorial-ppfl__card:focus-within {
    transform: none;
  }

  .ppfl-page .setorial-ppfl__card:hover .setorial-ppfl__photo,
  .ppfl-page .setorial-ppfl__card:focus-within .setorial-ppfl__photo,
  .ppfl-page .upsell-ppfl__card:hover .upsell-ppfl__photo,
  .ppfl-page .upsell-ppfl__card:focus-within .upsell-ppfl__photo {
    transform: none;
  }
}


/* ============================================================ */
/* HOVER — cards do hero e depoimentos                          */
/* ============================================================ */

/* --- Cards do hero (painel de metodologia): hover decorativo ---
   O painel inteiro e o alvo do reveal, entao os cards internos estao
   livres para transformar sem disputa. */
.ppfl-page .hero-ppfl__feature {
  transition:
    transform 0.35s cubic-bezier(.2, .7, .2, 1),
    background-color 0.35s ease,
    border-color 0.35s ease,
    box-shadow 0.35s ease;
}

.ppfl-page .hero-ppfl__feature-check {
  transition: transform 0.35s cubic-bezier(.2, .7, .2, 1);
}

/* --- Depoimentos: o recorte do zoom vai para o SLIDE ---
   A arte tinha `border-radius` na propria <img>. Ao escalar, os cantos
   arredondados deslocam e desalinham do recorte, vazando uma faixa de
   foto crua. O raio + overflow tem de ficar no CONTEINER. */
.ppfl-page .depoimentos-ppfl__slide {
  border-radius: 15px;
  overflow: hidden;
}

.ppfl-page .depoimentos-ppfl__art-img {
  border-radius: 0;
  transition: transform 0.6s cubic-bezier(.2, .7, .2, 1);
}

@media (hover: hover) and (pointer: fine) {
  .ppfl-page .hero-ppfl__feature:hover,
  .ppfl-page .hero-ppfl__feature:focus-within {
    transform: translateY(-3px);
    background-color: rgba(255, 255, 255, 0.12);
    border-color: var(--color-accent);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
  }

  /* O `rotate` precisa ser repetido: `transform` é uma propriedade só, e
     escrever apenas o `scale` apagaria a inclinação do ✓ definida no
     estado de repouso (o ângulo vem do Figma). O transform-origin é o
     centro do disco, então o scale cresce a partir dele. */
  .ppfl-page .hero-ppfl__feature:hover .hero-ppfl__feature-check,
  .ppfl-page .hero-ppfl__feature:focus-within .hero-ppfl__feature-check {
    transform: rotate(var(--hero-ppfl-check-tilt)) scale(1.18);
  }

  /* O zoom vai na <img>, nunca no slide: o `transform` do slide e como o
     carrossel o posiciona (translateX + scale por data-pos). */
  .ppfl-page .depoimentos-ppfl__slide:hover .depoimentos-ppfl__art-img {
    transform: scale(1.02);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ppfl-page .hero-ppfl__feature,
  .ppfl-page .hero-ppfl__feature-check,
  .ppfl-page .depoimentos-ppfl__art-img {
    transition: none;
  }

  .ppfl-page .hero-ppfl__feature:hover,
  .ppfl-page .hero-ppfl__feature:focus-within {
    transform: none;
  }

  /* volta ao repouso — mantendo a inclinação de origem do ✓ */
  .ppfl-page .hero-ppfl__feature:hover .hero-ppfl__feature-check,
  .ppfl-page .hero-ppfl__feature:focus-within .hero-ppfl__feature-check {
    transform: rotate(var(--hero-ppfl-check-tilt));
  }

  .ppfl-page .depoimentos-ppfl__slide:hover .depoimentos-ppfl__art-img {
    transform: none;
  }
}
