/* =========================================================================
   EVOLUTION INDIVIDUAL: CSS próprio da landing /plataforma/planos/individual/

   Complementa /style.css (tokens, cabeçalho, rodapé, botões, container) e
   /plataforma/planos/assets/planos.css (seções, hero, painéis, gráficos).
   NÃO redefine token de marca: só acrescenta o que é desta página.

   Tudo escopado em `.ind`, a classe do <body>. Sem isso, um nome parecido com o de
   outra página derrubaria o layout dela em silêncio, defeito que já aconteceu aqui.

   TODA GRADE NASCE COM `minmax(0, ...)`. Trilha com `1fr` puro tem mínimo `auto`, e item
   de grade nasce com `min-width: auto`: juntos, recusam encolher abaixo do conteúdo e
   estouram a página. Foi assim que estas páginas ficaram 399px numa tela de 390px, até a
   correção do `.pl-split` na 2.271.0.

   O TOM É O DA FAMÍLIA, com um acento a mais. O ciano já existe no produto (é a cor do
   corpo digital do Mapa do Ser) e aqui ele aparece SÓ nas conexões e no núcleo, nunca em
   texto corrido: o Individual é mais introspectivo que Empresas e Mentores, e não uma
   quinta paleta.
   ========================================================================= */

.ind {
    --ind-borda: rgba(255, 255, 255, 0.10);
    --ind-borda-ouro: rgba(var(--primary-gold-rgb), 0.32);
    --ind-fundo: #101010;
    --ind-fundo-2: #151515;
    --ind-raio: 14px;
    --ind-raio-g: 22px;
    --ind-ease: cubic-bezier(0.16, 1, 0.3, 1);
    --ind-ciano: #10d8ff;
    --ind-ok: #65c995;
    --ind-critico: #df7777;
}

/* ------------------------------------------------------- pular para o conteúdo --- */
/* `fixed` e não `absolute`: no fluxo ele empurrava o hero ao receber foco. */
.ind-pular {
    position: fixed;
    left: 1rem; top: -4rem;
    z-index: 2000;
    background: var(--primary-gold);
    color: #000;
    padding: 0.7rem 1.1rem;
    border-radius: 0 0 10px 10px;
    font-weight: 600;
    transition: top 0.15s ease;
}
.ind-pular:focus { top: 0; }

/* ------------------------------------------- a linha de CTA dentro da gaveta ------ */
/* MEDIDO: `.nav-cta` desta página pedia 379px, contra 272 no Empresas e 316 na NR-1. Os
   dois botões ficam lado a lado sem `flex-wrap`, e "Começar minha jornada" não quebra, então
   a linha não encolhe abaixo disso dentro de uma gaveta de 320px. Deixá-la quebrar é certo
   por si só, e é o que estas duas regras fazem.

   ── CORREÇÃO DE ROTA, REGISTRADA NO LUGAR ONDE O ERRO FOI COMETIDO ──────────────────────
   A primeira versão deste comentário dizia que ESTE era o motivo de o documento medir 330px
   numa tela de 320. Era falso, e a medição desmentiu: removendo a linha de CTA inteira, e
   depois a gaveta inteira, o cabeçalho continuava em 330. A causa real estava longe daqui,
   no `::before` de `.ind-linha-item`, e está documentada lá.

   Fica o registro em vez do apagamento, porque o modo de errar se repete: eu vi um número
   grande (379), ele era verdadeiro, e concluí que era A causa sem testar se removê-lo
   mudava o sintoma. Número verdadeiro não é diagnóstico.

   Escopado em `.ind` porque o piso das irmãs é mais baixo e elas não sofrem: mexer no
   componente que quatro páginas usam sem problema alargaria o risco à toa. E encurtar o
   rótulo resolveria pelo lado errado, já que aquele texto é o CTA primário do contrato. */
.ind .nav-cta { flex-wrap: wrap; }
.ind .nav-cta .btn { min-width: 0; }

/* ------------------------------------------------------------------- cabeçalhos --- */

.ind-cabeca { margin-bottom: 2.2rem; max-width: 62ch; }
.ind-cabeca .pl-lead { margin-bottom: 0; }
.ind-cabeca--centro { margin-left: auto; margin-right: auto; text-align: center; }

.ind-mini-titulo {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
    margin: 0 0 0.6rem;
}

/* Ressalva. É o que carrega os limites do instrumento, e por isso tem marca visual
   própria: some no meio do texto seria esconder justamente o que precisa ser lido. */
.ind-nota {
    font-size: 0.85rem;
    color: var(--text-muted);
    line-height: 1.65;
    border-left: 2px solid var(--ind-borda-ouro);
    padding-left: 0.9rem;
    margin: 1.1rem 0 0;
}

.ind-texto { font-size: 0.93rem; color: var(--text-main); line-height: 1.7; margin: 0; }
.ind-micro { font-size: 0.88rem; color: var(--text-muted); margin: 1rem 0 0; line-height: 1.65; }
.ind-micro a { color: var(--primary-gold); text-decoration: underline; text-underline-offset: 2px; }

/* ------------------------------------------------------------------------ hero --- */

.ind-hero-texto { min-width: 0; }

.ind-h1 {
    font-size: clamp(2rem, 5.2vw, 2.9rem);
    line-height: 1.16;
    margin: 0 0 1rem;
    max-width: 19ch;
}
/* A frase inteira existe uma vez para o leitor de tela; o trecho que alterna é visual e
   fica `aria-hidden`, para não ser reanunciado a cada troca. */
.ind-sr {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.ind-rot-rotulo { display: block; color: var(--text-muted); font-size: 0.95rem; margin-top: 0.9rem; }

/* As frases ficam EMPILHADAS na mesma célula: a altura é a da maior, e a troca não
   empurra nada. Reservar altura é o que evita o salto de layout. */
.ind-rot { display: grid; font-family: 'Outfit', sans-serif; font-size: clamp(1.05rem, 2.6vw, 1.3rem); }
.ind-rot-item {
    grid-area: 1 / 1;
    color: var(--primary-gold);
    opacity: 0;
    transition: opacity 0.42s var(--ind-ease);
}
.ind-rot-item.is-ativo { opacity: 1; }
html:not(.ind-js) .ind-rot-item:first-child { opacity: 1; }

.ind-provas {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.2rem;
    list-style: none;
    padding: 0;
    margin: 1.4rem 0 0;
    font-size: 0.86rem;
    color: var(--text-muted);
}
.ind-provas li { display: inline-flex; align-items: center; gap: 0.45rem; }
.ind-provas i { color: var(--primary-gold); }

/* ------------------------------------------------------------ faixa de confiança --- */

.ind-faixa {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
    gap: 0.9rem;
    list-style: none;
    padding: 0;
    margin: 0;
}
.ind-faixa li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.6rem;
    align-items: start;
    font-size: 0.88rem;
    color: var(--text-muted);
    line-height: 1.55;
    min-width: 0;
}
.ind-faixa i { color: var(--primary-gold); margin-top: 0.2rem; }

/* ----------------------------------------------------------------- contraste --- */

.ind-contraste {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
    gap: 1rem;
    align-items: start;
}
.ind-contraste-col {
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio-g);
    padding: 1.3rem 1.2rem;
    background: var(--ind-fundo);
    min-width: 0;
}
.ind-contraste-col--depois { border-color: var(--ind-borda-ouro); background: var(--ind-fundo-2); }
.ind-contraste-col h3 {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
    margin: 0 0 0.9rem;
}
.ind-contraste-col--depois h3 { color: var(--primary-gold); }
.ind-contraste-col ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.6rem; }
.ind-contraste-col li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.55rem;
    align-items: start;
    font-size: 0.92rem;
    line-height: 1.55;
    color: var(--text-muted);
}
.ind-contraste-col--depois li { color: var(--text-main); }
.ind-contraste-col i { margin-top: 0.22rem; font-size: 0.85rem; }
.ind-contraste-col--antes i { color: var(--text-muted); }
.ind-contraste-col--depois i { color: var(--ind-ok); }

/* -------------------------------------------------------------------- etapas --- */

.ind-etapas {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: 1rem;
    list-style: none;
    padding: 0;
    margin: 0;
    counter-reset: etapa;
}
.ind-etapa {
    counter-increment: etapa;
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio-g);
    padding: 1.3rem 1.2rem 1.2rem;
    background: var(--ind-fundo);
    min-width: 0;
}
.ind-etapa::before {
    content: counter(etapa);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px; height: 30px;
    border-radius: 50%;
    border: 1px solid var(--ind-borda-ouro);
    color: var(--primary-gold);
    font-family: 'Outfit', sans-serif;
    font-size: 0.9rem;
    margin-bottom: 0.8rem;
}
.ind-etapa h3 { font-size: 1.02rem; margin: 0 0 0.4rem; color: var(--text-main); }
.ind-etapa p { margin: 0; font-size: 0.9rem; color: var(--text-muted); line-height: 1.6; }

/* ----------------------------------------------------------------------- abas --- */

.ind-tablist { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 1.2rem; }
.ind-tab {
    appearance: none;
    border: 1px solid var(--ind-borda);
    background: rgba(0, 0, 0, 0.25);
    color: var(--text-muted);
    border-radius: 999px;
    padding: 0.55rem 1.1rem;
    font: 500 0.88rem 'Inter', sans-serif;
    cursor: pointer;
    min-height: 44px;
    transition: border-color 0.18s ease, color 0.18s ease;
}
.ind-tab:hover { border-color: var(--primary-gold); color: var(--text-main); }
.ind-tab:focus-visible { outline: 2px solid var(--primary-gold); outline-offset: 2px; }
/* Cor E peso: só a cor deixaria de fora quem não as separa bem (WCAG 1.4.1). */
.ind-tab[aria-selected="true"] {
    background: rgba(var(--primary-gold-rgb), 0.16);
    border-color: var(--primary-gold);
    color: var(--primary-gold);
    font-weight: 700;
}

.ind-painel { min-width: 0; }
.ind-painel[hidden] { display: none; }
.ind-painel-cabeca {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.6rem;
    margin-bottom: 1rem;
}
.ind-painel-cabeca h3 { font-size: 1.05rem; margin: 0; color: var(--text-main); }
.ind-painel-grade {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: 1.4rem;
    align-items: start;
}

/* --------------------------------------------------------- painel ilustrativo --- */

.ind-quadro {
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio-g);
    background: var(--ind-fundo-2);
    overflow: hidden;
    min-width: 0;
}
.ind-quadro-topo {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--ind-borda);
    background: rgba(0, 0, 0, 0.25);
}
.ind-quadro-titulo { font-family: 'Outfit', sans-serif; font-size: 0.95rem; color: var(--text-main); }
.ind-quadro-corpo { padding: 1.1rem; display: grid; gap: 0.9rem; }

.ind-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.74rem;
    padding: 0.25rem 0.6rem;
    border: 1px solid var(--ind-borda-ouro);
    border-radius: 999px;
    color: var(--primary-gold);
    background: rgba(var(--primary-gold-rgb), 0.07);
}
.ind-chip--neutro { border-color: var(--ind-borda); color: var(--text-muted); background: rgba(255, 255, 255, 0.03); }

/* --------------------------------------------------------------- linha da jornada --- */

.ind-linha { list-style: none; padding: 0; margin: 0; display: grid; gap: 0; }
/* ── A TRILHA `auto` COM PSEUDO-ELEMENTO ESTICAVA O DOCUMENTO ───────────────────────────
   Medido por remoção, depois de três hipóteses erradas: com `grid-template-columns:
   auto minmax(0, 1fr)`, desligar o `::before` desta linha derrubava o `scrollWidth` de 330
   para 320 numa tela de 320. Desligar o `::after` não mudava nada, e reduzir a grade a uma
   coluna também resolvia: o excesso vinha da trilha `auto`, não de conteúdo largo.

   Por que ninguém via: varredura por `getBoundingClientRect` não enxerga pseudo-elemento, e
   nenhum ELEMENTO desta página passava de 320. O sintoma aparecia no `header`, que é
   `position: fixed` com `width: 100%` e portanto se dimensiona pelo documento já esticado.
   O cabeçalho era espelho, e eu o acusei duas vezes antes de medir direito.

   A trilha passa a ser declarada, e o pseudo-elemento ganha `border-box`: sem isso a borda
   de 2px soma por fora dos 11px e a trilha `auto` cresce com ela. */
.ind-linha-item {
    display: grid;
    grid-template-columns: 11px minmax(0, 1fr);
    gap: 0.9rem;
    padding-bottom: 1.1rem;
    position: relative;
    min-width: 0;
}
.ind-linha-item::before {
    content: "";
    box-sizing: border-box;
    grid-column: 1;
    width: 11px; height: 11px;
    border-radius: 50%;
    background: var(--ind-fundo-2);
    border: 2px solid var(--ind-borda-ouro);
    margin-top: 0.3rem;
}
.ind-linha-item.is-feito::before { background: var(--primary-gold); border-color: var(--primary-gold); }
/* A linha que liga os pontos não desce do último: apontaria para o nada. */
.ind-linha-item:not(:last-child)::after {
    content: "";
    position: absolute;
    left: 5px; top: 1.15rem; bottom: 0;
    width: 1px;
    background: var(--ind-borda);
}
/* ── OS DOIS FILHOS FICAM NA COLUNA 2, E ISSO É O CONSERTO DA CAUSA ─────────────────────
   A grade tem duas colunas: o marcador na 1, o conteúdo na 2. Sem declarar a coluna, o
   `<b>` ocupava a 2 e o `<span>` TRANSBORDAVA para uma linha nova, caindo na coluna 1, que
   tem 11px. Medido: `b` com 531px de largura na coluna 2, `span` com 11px na coluna 1, e o
   status "depende dos seus dados de nascimento" quebrando uma palavra por linha, com 125px
   de altura contra 21px dos outros.

   E é a mesma causa do estouro horizontal de 320px: enquanto a coluna 1 era `auto`, ela
   crescia até caber o texto do status e empurrava a página. Eu fixei a coluna em 11px, o
   estouro sumiu e o texto ficou espremido: tratei o sintoma e deixei a causa de pé. */
.ind-linha-item b { grid-column: 2; display: block; font-size: 0.93rem; color: var(--text-main); font-weight: 600; }
.ind-linha-item span { grid-column: 2; display: block; font-size: 0.84rem; color: var(--text-muted); line-height: 1.55; }

/* ------------------------------------------------------------------- barras --- */

.ind-barra-linha {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.7rem;
    font-size: 0.85rem;
    color: var(--text-muted);
    margin-top: 0.9rem;
}
.ind-barra {
    display: block;
    height: 8px;
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.07);
    overflow: hidden;
}
.ind-barra i {
    display: block;
    height: 100%;
    border-radius: 4px;
    background: var(--primary-gold);
    width: 0;
    transition: width 0.7s var(--ind-ease);
}
.is-desenhado .ind-barra i { width: var(--preenche, 0%); }
html:not(.ind-js) .ind-barra i { width: var(--preenche, 0%); transition: none; }

/* ------------------------------------------------------- alternativa do Mapa --- */
/* O §11 exige alternativa linear ao desenho do Mapa do Ser. Ela NÃO é `display:none`
   no desktop: é uma lista de verdade, visível, ao lado do gráfico, porque quem lê por
   leitor de tela e quem imprime precisam do mesmo conteúdo que o gráfico mostra. */

.ind-fontes {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
    gap: 0.5rem;
}
.ind-fonte {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.5rem;
    align-items: baseline;
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio);
    padding: 0.6rem 0.75rem;
    background: rgba(255, 255, 255, 0.02);
    font-size: 0.86rem;
    min-width: 0;
}
.ind-fonte b { color: var(--text-main); font-weight: 600; }
.ind-fonte span { display: block; font-size: 0.76rem; color: var(--text-muted); }
.ind-ponto {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--ind-borda);
    align-self: center;
}
.ind-fonte--respondido .ind-ponto { background: var(--primary-gold); }
.ind-fonte--modulo .ind-ponto { background: var(--ind-ciano); }

/* ------------------------------------------------------- grupos de avaliações --- */

.ind-grupos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
    gap: 1rem;
}
.ind-grupo {
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio-g);
    padding: 1.3rem 1.2rem;
    background: var(--ind-fundo);
    min-width: 0;
}
.ind-grupo h3 {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--primary-gold);
    margin: 0 0 0.8rem;
}
.ind-grupo ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.ind-grupo li {
    font-size: 0.9rem;
    color: var(--text-muted);
    line-height: 1.55;
    padding-left: 1.1rem;
    position: relative;
}
.ind-grupo li::before {
    content: "";
    position: absolute;
    left: 0; top: 0.55rem;
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--ind-borda-ouro);
}

/* ------------------------------------------------------------- inclui / não --- */

.ind-duas {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
    gap: 1rem;
    align-items: start;
}
.ind-lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.55rem; }
.ind-lista li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.55rem;
    align-items: start;
    font-size: 0.9rem;
    line-height: 1.55;
    color: var(--text-muted);
    min-width: 0;
}
.ind-lista li b { color: var(--text-main); font-weight: 600; }
.ind-lista li small { display: block; font-size: 0.8rem; color: var(--text-muted); }
.ind-lista--sim i { color: var(--ind-ok); margin-top: 0.22rem; }
.ind-lista--nao i { color: var(--text-muted); margin-top: 0.22rem; }

/* ------------------------------------------------------------------- oferta --- */

.ind-oferta {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 0.9fr);
    gap: 1.4rem;
    align-items: start;
}
.ind-preco-card {
    border: 1px solid var(--ind-borda-ouro);
    border-radius: 20px;
    background:
        radial-gradient(120% 90% at 50% 0%, rgba(var(--primary-gold-rgb), 0.09), transparent 60%),
        var(--ind-fundo-2);
    padding: 1.7rem;
    min-width: 0;
}
.ind-preco-pre { display: block; font-size: 0.85rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.07em; }
.ind-preco {
    font-family: 'Outfit', sans-serif;
    font-weight: 800;
    font-size: clamp(2.3rem, 5vw, 3rem);
    color: #fff;
    line-height: 1.05;
    margin: 0.25rem 0 0.2rem;
    font-variant-numeric: tabular-nums;
}
.ind-preco-nota { margin: 0; font-size: 0.93rem; color: var(--text-muted); }
.ind-preco-card .btn { display: flex; justify-content: center; align-items: center; width: 100%; min-height: 50px; margin-top: 1.3rem; text-align: center; }
.ind-entregas { list-style: none; margin: 1.1rem 0 0; padding: 0; display: grid; gap: 0.45rem; }
.ind-entregas li { position: relative; padding-left: 1.1rem; font-size: 0.9rem; color: var(--text-muted); line-height: 1.55; }
.ind-entregas li::before { content: "\2713"; position: absolute; left: 0; top: 0.05rem; font-size: 0.75rem; color: var(--primary-gold); }
.ind-seguro { margin: 0.9rem 0 0; font-size: 0.85rem; color: var(--text-muted); line-height: 1.6; }
.ind-seguro a { color: var(--primary-gold); text-decoration: underline; text-underline-offset: 2px; }

.ind-lado { display: grid; gap: 1rem; min-width: 0; }
.ind-card {
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio-g);
    padding: 1.2rem;
    background: var(--ind-fundo);
    min-width: 0;
}
.ind-card h3 { font-size: 1rem; margin: 0 0 0.5rem; color: var(--text-main); }
.ind-card p { margin: 0; font-size: 0.9rem; color: var(--text-muted); line-height: 1.65; }
.ind-card p + p { margin-top: 0.6rem; }
.ind-card a { color: var(--primary-gold); text-decoration: underline; text-underline-offset: 2px; }

/* --------------------------------------------------------------- para quem é --- */

.ind-casos { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.6rem; }
.ind-casos li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.6rem;
    align-items: start;
    font-size: 0.92rem;
    color: var(--text-muted);
    line-height: 1.6;
    min-width: 0;
}
.ind-casos i { color: var(--primary-gold); margin-top: 0.25rem; font-size: 0.8rem; }
.ind-outro { display: grid; gap: 0.5rem; margin: 0; padding: 0; list-style: none; }
.ind-outro a {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.8rem;
    align-items: center;
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio);
    padding: 0.85rem 1rem;
    color: var(--text-muted);
    font-size: 0.9rem;
    min-height: 44px;
    transition: border-color 0.18s ease, color 0.18s ease;
}
.ind-outro a:hover { border-color: var(--primary-gold); color: var(--text-main); }
.ind-outro a:focus-visible { outline: 2px solid var(--primary-gold); outline-offset: 2px; }
.ind-outro b { color: var(--text-main); font-weight: 600; }

/* ------------------------------------------------------------------------ FAQ --- */
/* Classe própria, e não `.pl-faq`: assim o planos.js não mede a mesma abertura de novo,
   já que este arquivo mede. */
.ind-faq { display: grid; gap: 0.6rem; max-width: 60rem; }
.ind-faq details {
    border: 1px solid var(--ind-borda);
    border-radius: var(--ind-raio);
    background: var(--ind-fundo);
    overflow: hidden;
}
.ind-faq summary {
    cursor: pointer;
    padding: 1rem 1.2rem;
    font-size: 0.97rem;
    color: var(--text-main);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 52px;
    list-style: none;
}
.ind-faq summary::-webkit-details-marker { display: none; }
.ind-faq summary::after { content: "+"; color: var(--primary-gold); font-size: 1.3rem; line-height: 1; flex: none; }
.ind-faq details[open] summary::after { content: "\2212"; }
.ind-faq summary:focus-visible { outline: 2px solid var(--primary-gold); outline-offset: -2px; }
.ind-faq-corpo { padding: 0 1.2rem 1.1rem; color: var(--text-muted); line-height: 1.7; font-size: 0.93rem; }
.ind-faq-corpo p { margin: 0 0 0.7rem; }
.ind-faq-corpo p:last-child { margin-bottom: 0; }
.ind-faq-corpo a { color: var(--primary-gold); text-decoration: underline; text-underline-offset: 2px; }

/* -------------------------------------------------------------- CTA fixo móvel --- */

.ind-fixo {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 900;
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.7rem 1rem calc(0.7rem + env(safe-area-inset-bottom, 0px));
    background: rgba(10, 10, 10, 0.96);
    border-top: 1px solid var(--ind-borda-ouro);
    backdrop-filter: blur(8px);
}
.ind-fixo[hidden] { display: none; }
.ind-fixo-texto { flex: 1 1 auto; min-width: 0; font-size: 0.82rem; color: var(--text-muted); line-height: 1.35; }
.ind-fixo-texto b { display: block; color: var(--text-main); font-size: 0.9rem; }
.ind-fixo .btn { flex: none; min-height: 44px; display: inline-flex; align-items: center; }
/* A barra cobriria o fim da página: o corpo ganha folga equivalente enquanto ela existe. */
body.ind-fixo-on { padding-bottom: 4.6rem; }

/* ------------------------------------------------------------------- revelação --- */

.ind-revelar {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 0.55s var(--ind-ease), transform 0.55s var(--ind-ease);
}
.ind-revelar.is-visivel { opacity: 1; transform: none; }
/* Sem JavaScript o IntersectionObserver nunca roda: o conteúdo precisa nascer visível,
   senão a página fica em branco para quem tem script bloqueado. */
html:not(.ind-js) .ind-revelar { opacity: 1; transform: none; }

/* ----------------------------------------------------------------- responsivo --- */

@media (max-width: 1024px) {
    .ind-h1 { max-width: 22ch; }
    .ind-cabeca { margin-bottom: 1.8rem; }
    .ind-oferta { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 600px) {
    .ind-h1 { font-size: clamp(1.75rem, 7.4vw, 2.1rem); }
    .ind-quadro-corpo { padding: 0.9rem; }
    .ind-preco-card { padding: 1.3rem; }
}

/* Alvos de toque (WCAG 2.2, 2.5.8). A regra é por TIPO DE PONTEIRO: no mouse a diferença
   não aparece, e forçar 44px no desktop engorda a interface à toa. */
@media (pointer: coarse) {
    .ind-tab { min-height: 44px; }
    .ind-faq summary { min-height: 52px; }
    .ind-provas li { min-height: 32px; }
    .ind-outro a { min-height: 48px; }
}

@media (prefers-reduced-motion: reduce) {
    .ind-rot-item,
    .ind-revelar,
    .ind-barra i,
    .ind-tab,
    .ind-outro a { transition: none; }
    .ind-revelar { opacity: 1; transform: none; }
    .ind-barra i { width: var(--preenche, 0%); }
}

/* A página impressa é branca: barra fixa, abas e decoração não fazem sentido nela. */
@media print {
    .ind-pular, .ind-fixo, .ind-tablist { display: none !important; }
    .ind-painel[hidden] { display: block !important; }
    .ind-revelar { opacity: 1 !important; transform: none !important; }
}
