/* =========================================================================
   Habitat — camada de marca
   Aplicada sobre o template Histudy. Herdou a estrutura da camada montada
   para o Colégio Ranieri; as cores foram remapeadas para a marca Habitat.

   Cores da marca: #013161 (azul) e #9BC131 (verde).

   Tipografia: Roboto + Montserrat (herdada; NÃO confirmada para o Habitat —
   se a marca tiver fontes próprias, trocar em ranieri-fonts.css).

   Carregado DEPOIS de styles.css. Não editar styles.css (arquivo do template).
   ========================================================================= */

:root {
  /* ---- Cores da marca ------------------------------------------------- */
  --habitat-azul: #013161;        /* institucional */
  --habitat-verde: #9BC131;       /* institucional — acento */

  /* Tons de apoio, derivados do azul. Não são cores de marca: existem porque
     uma paleta de duas cores não cobre hover, gradiente e dark mode. */
  --habitat-azul-claro: #2F8FEE;  /* gradientes + texto azul no modo escuro */
  --habitat-azul-escuro: #011E3D; /* hover / estado pressionado */
  --habitat-azul-medio: #1E5389;  /* terceira cor de gráfico e ícone; ocupa o
                                     lugar do vermelho da paleta anterior */

  --habitat-cinza-80: #333333;    /* 80% black */
  --habitat-cinza-60: #666666;    /* 60% black */
  --habitat-cinza-40: #999999;    /* 40% black */
  /* Vermelho de ERRO — deliberadamente fora da paleta da marca. Enquanto ele
     e a cor institucional foram o mesmo hex, vermelho neste site significava
     "campo inválido", e qualquer uso de marca herdava essa leitura. Não usar
     fora de validação de formulário. */
  --habitat-erro: #8C1D18;

  /* ---- Mapeamento sobre os tokens do template ------------------------- */
  --color-primary: var(--habitat-azul);
  --color-secondary: var(--habitat-azul-medio);
  --color-primary-100: var(--habitat-azul-escuro);
  --color-coral: var(--habitat-verde);
  --color-violet: var(--habitat-azul-escuro);
  --color-pink: var(--habitat-azul-medio);

  --color-heading: var(--habitat-cinza-80);
  --color-body: var(--habitat-cinza-60);
  --color-gray: var(--habitat-cinza-40);

  --primary-opacity: #01316121;
  --secondary-opacity: #1E538921;
  --coral-opacity: #9BC13129;
  --violet-opacity: #011E3D21;
  --pink-opacity: #1E538921;
  --heading-opacity: #33333350;

  --color-primary-light: #F2F7FB;
  --color-primary-lighter: #E6F0F7;
  --color-primary-alt: #D6E4F3;
  --color-secondary-alt: #EEF3F9;

  /* cards da grade curricular — pastéis derivados das 3 cores institucionais */
  --color-card-1: #F0F7DE;  /* amarelo */
  --color-card-2: #E7F1F8;  /* azul */
  --color-card-3: #EBF2F9;  /* vermelho */
  --color-card-4: #EEF3F6;  /* cinza-azulado */
  --color-card-5: var(--habitat-azul-escuro);

  --color-badge-1: var(--habitat-azul-escuro);
  --color-badge-2: var(--habitat-verde);

  --color-border: #DCE6ED;
  --color-border-2: #DCE6ED4f;
  --color-extra: #F7FAFC;
  --color-extra2: #F7FAFC;

  /* ---- Gradientes: monocromáticos em azul (o roxo do template sai) ----- */
  --gradient-dark: linear-gradient(90deg, #013161BF 0%, #2F8FEEAB 100%);
  --gradient-dark-2: linear-gradient(90deg, #0131617D 0%, #2F8FEE52 100%);
  --gradient-1: linear-gradient(#ffffff 0%, #EEF4F9 100%);
  --gradient-2: linear-gradient(0deg, #ffffff 0%, #EDF3F8 100%);
  --gradient-3: linear-gradient(90deg, #2F8FEE 0%, #013161 100%);
  --gradient-4: linear-gradient(180deg, #EEF4F9 0%, #FFFFFF 100%);
  --gradient-5: linear-gradient(#EEF4F9 0%, #EEF4F9 100%);
  --gradient-6: linear-gradient(to right, rgba(255,255,255,.15), rgba(155,193,49,.15), rgba(1,49,97,.15));
  --gradient-7: linear-gradient(218.15deg, #2F8FEE 0%, #013161 100%);
  --gradient-8: linear-gradient(270deg, #2F8FEE 0%, #013161 100%);
  --gradient-9: linear-gradient(180deg, #013161 0%, #E3F0FF 100%);
  --dark-shadow-5: 0px 4px 27.9px rgba(1, 49, 97, 0.15);

  /* ---- Alfabeto Padrão (item 4) --------------------------------------- */
  --font-primary: "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-secondary: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-alt: "Montserrat", system-ui, sans-serif;
}

/* Títulos e elementos de destaque em Montserrat; corpo em Roboto. */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.title, .rbt-title-style-2, .section-title .title,
.rbt-btn, .btn, button, input[type="submit"],
.mainmenu li a, .rbt-badge, .rbt-badge-2, .rbt-badge-5,
.subtitle, .rbt-section-title {
  font-family: var(--font-secondary);
}

body, p, li, td, th, input, textarea, select, label, .description {
  font-family: var(--font-primary);
}

/* Roboto é mais estreita que Euclid: compensa o peso ótico dos títulos. */
h1, .h1, h2, .h2, h3, .h3 { letter-spacing: -0.015em; }

/* =========================================================================
   Marca (itens 1, 2, 3 e 6)
   ========================================================================= */

/* O lockup oficial é vertical (símbolo sobre o logotipo): precisa de altura
   suficiente para a palavra "Colégio" permanecer legível. */
.rbt-header .logo img,
.header-left .logo img,
.popup-mobile-menu .logo img {
  height: 74px;
  width: auto;
  max-width: none;
}

.rbt-footer .logo img,
.footer-widget .logo img {
  height: 96px;
  width: auto;
  max-width: none;
}

/* Espaço de respiro em volta da marca (item 3). */
.rbt-header .logo,
.footer-widget .logo { display: inline-block; padding: 4px 0; }

@media (max-width: 767px) {
  .rbt-header .logo img,
  .header-left .logo img,
  .popup-mobile-menu .logo img { height: 58px; }
  .rbt-footer .logo img,
  .footer-widget .logo img { height: 78px; }
}

/* Fundos escuros / dark mode usam a versão negativa da marca (item 6). */
.active-dark-mode .logo-dark { display: none !important; }

/* =========================================================================
   Fotografia institucional (banco de imagens -> fotos reais dos ambientes)
   ========================================================================= */

/* Banner: sala de leitura da Educação Infantil — ambiente claro, organizado e
   acolhedor. Foco à direita para o texto cair sobre a parede clara. */
.bg_image--13 {
  /* --hero-img é definida no <head> pelo sorteio em PHP; o url() abaixo é o
     fallback caso a variável não exista (o navegador só baixa a vencedora). */
  background-image: var(--hero-img, url(../images/ranieri/hero/leitura.webp));
  background-position: center 45%;
}

@media (max-width: 767px) {
  .bg_image--13 {
    background-image: var(--hero-img-sm, url(../images/ranieri/hero/leitura-sm.webp));
  }
}

/* Véu claro à esquerda: garante contraste do texto do banner sobre a foto. */
body:not(.active-dark-mode) .rbt-banner-4.bg_image--13 { position: relative; }
body:not(.active-dark-mode) .rbt-banner-4.bg_image--13::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
      rgba(255, 255, 255, .97) 0%,
      rgba(255, 255, 255, .94) 36%,
      rgba(255, 255, 255, .58) 62%,
      rgba(255, 255, 255, .06) 88%);
  pointer-events: none;
}
.rbt-banner-4.bg_image--13 .wrapper { position: relative; z-index: 1; }

@media (max-width: 767px) {
  /* No celular o texto ocupa a largura toda, então o véu é vertical: forte em
     cima (onde está o título) e mais leve embaixo, para a foto aparecer. */
  body:not(.active-dark-mode) .rbt-banner-4.bg_image--13::before {
    background: linear-gradient(180deg,
        rgba(255, 255, 255, .96) 0%,
        rgba(255, 255, 255, .94) 52%,
        rgba(255, 255, 255, .70) 78%,
        rgba(255, 255, 255, .38) 100%);
  }
}

/* =========================================================================
   Componentes com cor cravada no template
   ========================================================================= */

.rbt-sec-cir-shadow-1 .gradient-shape-top,
.rbt-sec-cir-shadow-1 .gradient-shape-bottom,
.category-section-02 .gradient-shape {
  background: linear-gradient(180deg, rgba(155, 193, 49, .45) 0%, rgba(1, 49, 97, .28) 100%) !important;
}

.active-dark-mode .rbt-counterup .top-circle-shape {
  background: linear-gradient(90deg, var(--habitat-azul) 0%, var(--habitat-azul-claro) 100%) !important;
}

/* Gradientes de texto/botão do template: azul monocromático no lugar do
   azul→roxo original (azul→vermelho institucional não passa em contraste). */
.theme-gradient {
  background: linear-gradient(90deg, var(--habitat-azul), var(--habitat-azul-claro));
  -webkit-background-clip: text;
  background-clip: text;
}

.rbt-btn.btn-gradient {
  background-image: linear-gradient(to right,
      var(--habitat-azul), var(--habitat-azul-claro),
      var(--habitat-azul-claro), var(--habitat-azul));
}

/* Borda em degradê: azul → amarelo, as duas cores dominantes do símbolo. */
.rbt-btn.btn-border-gradient {
  background: linear-gradient(90deg, var(--habitat-azul), var(--habitat-verde));
}

/* Os contadores agora exibem anos e quantidades exatas — sem o "+" do template. */
.rbt-counterup .inner .content .counter::after { content: none; }

/* Títulos de card não devem capitalizar cada palavra ("Ballet E Jazz"). */
.rbt-card-title, .rbt-card .rbt-card-title,
.rbt-card-title a, .pricing-header .title { text-transform: none; }

/* Amarelo institucional como acento de destaque (números, marcadores). */
.rbt-counterup .odometer,
.counter-style-1 .count-number { color: var(--habitat-azul); }

.rbt-badge-2 { background: var(--color-primary-lighter); color: var(--habitat-azul); }
.rbt-badge-5 { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* =========================================================================
   Acessibilidade (contraste ≥ 4.5:1, foco visível, movimento reduzido)
   ========================================================================= */

a:focus-visible,
button:focus-visible,
.rbt-btn:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid var(--habitat-verde);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Texto em cinza 40% só é legível em corpo maior — não usar em texto pequeno. */
small, .small-text, .rbt-meta li { color: var(--habitat-cinza-60); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* Ícones ilustrados do template (roxos, de plataforma EAD) não integram a
   identidade — os contadores ficam apenas com número e legenda. */
.rbt-counterup .inner .icon { display: none; }
.rbt-counterup .inner .content { padding-top: 10px; }

/* Botão "Eu sou Ranieri" à direita da barra superior (mesma chamada do site
   oficial), em amarelo institucional. Dimensionado para caber na altura
   original da barra (60px) e alinhado à direita com o "Agendar Visita" do
   menu — a barra branca do menu recua 18px em relação ao container. */
.rbt-header-top .rbt-header-right .rbt-information-list {
  margin: 0;
  padding-right: 18px;
}
/* Classe autônoma: o mesmo botão é usado na barra superior (desktop) e dentro
   do cabeçalho (celular), então o estilo não pode depender da lista. */
a.rbt-topbar-btn,
.rbt-information-list li a.rbt-topbar-btn {
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  padding: 0 18px;
  height: 34px;
  line-height: 34px;
  border-radius: 500px;
  font-weight: 600;
  font-size: 14px;
  transition: background .25s ease, color .25s ease;
}
a.rbt-topbar-btn:hover,
.rbt-information-list li a.rbt-topbar-btn:hover {
  background: #90B32D;               /* amarelo institucional escurecido */
  color: var(--habitat-cinza-80);
}
a.rbt-topbar-btn i,
.rbt-information-list li a.rbt-topbar-btn i { color: var(--habitat-cinza-80); }

@media (max-width: 1199px) {
  .rbt-header-top .rbt-header-right .rbt-information-list { padding-right: 0; }
}

/* Em telas pequenas a barra some (d-none d-lg-block), então o botão fica no
   menu mobile — nada a compensar aqui. */

/* Ícones dos Serviços Adicionais (mesma linguagem circular do site oficial). */
.rbt-servico-icon {
  width: 92px; height: 92px; margin: 10px auto 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--color-primary-lighter);
}
.rbt-servico-icon i { font-size: 34px; color: var(--habitat-azul); }

/* Parceiros educacionais: logos em escala de cinza que ganham cor no hover. */
.rbt-parceiro-logo {
  display: flex; align-items: center; justify-content: center;
  min-height: 120px; padding: 10px;
}
.rbt-parceiro-logo img {
  max-height: 92px; width: auto; max-width: 100%;
  filter: grayscale(1); opacity: .65; transition: filter .3s ease, opacity .3s ease;
}
.rbt-parceiro-logo img:hover { filter: none; opacity: 1; }

/* Endereços das unidades no rodapé: linhas mais compactas. */
.rbt-unidades li { line-height: 1.5; margin-bottom: 10px; }
.rbt-unidades li span { display: block; font-weight: 600; color: var(--color-heading); }

/* Cards de curso, espaço e serviço: mesma altura dentro da linha. */
.rbt-card.height-auto { height: 100%; display: flex; flex-direction: column; }
.rbt-card.height-auto .rbt-card-body { flex: 1 1 auto; display: flex; flex-direction: column; }
.rbt-card.height-auto .rbt-card-bottom { margin-top: auto; }

/* Botões "marquee" (ex.: Fale com Especialista, no banner): o template roda a
   rolagem do texto em loop infinito enquanto o mouse está sobre o botão, o que
   fica poluído. Aqui a rolagem acontece UMA vez e para — a cópia do texto
   (span::after) fecha exatamente na posição original. */
.rbt-btn:hover.rbt-marquee-btn span,
.rbt-btn:hover.rbt-marquee-btn.marquee-text-y span,
.rbt-btn.rbt-marquee-btn.marquee-auto span {
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
}

/* =========================================================================
   Ajustes de telas pequenas
   ========================================================================= */

/* A barra superior só existe no desktop (a coluna da esquerda já é d-none
   d-lg-block). O botão "Eu sou Ranieri" acompanha — no celular ele está no
   menu, e aqui só vazava para fora da tela. */
@media (max-width: 1199px) {
  /* A barra superior inteira sai: seu conteúdo (e-mail, telefone, CTA) já é
     d-none d-lg-block, e o que sobrava era o botão "+" do template, que ficava
     solto no canto sem nada para expandir. */
  /* o template usa .rbt-header-top.rbt-header-top-1{display:flex} — é preciso
     a mesma especificidade (duas classes) para sobrescrever */
  .rbt-header-top,
  .rbt-header-top.rbt-header-top-1 { display: none; }
}

/* O CTA reaparece dentro do cabeçalho, ao lado do menu sanduíche. */
.rbt-topbar-btn--mobile {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-right: 10px;
}
.rbt-topbar-btn--mobile i { font-size: 15px; }

@media (max-width: 575px) {
  .rbt-topbar-btn--mobile { height: 32px; line-height: 32px; padding: 0 13px; font-size: 13px; }
}
@media (max-width: 420px) {
  .rbt-topbar-btn--mobile { padding: 0 10px; font-size: 12px; margin-right: 6px; }
  .rbt-topbar-btn--mobile i { display: none; }
}

/* Roboto/Montserrat são mais largas que a fonte original do template: no
   celular o título do banner estourava a lateral. As quebras fixas (<br>) do
   HTML também atrapalham quando a linha já é estreita. */
@media (max-width: 767px) {
  .rbt-banner-4 .content .title { font-size: 32px; line-height: 1.18; }
  .rbt-banner-4 .content .title br,
  .rbt-banner-4 .content .description br { display: none; }
  /* Sobre foto, o cinza 60% não alcança 4.5:1 em todas as imagens do rodízio;
     no celular a linha de apoio usa o cinza 80% (a hierarquia continua vindo
     do tamanho e do peso). */
  .rbt-banner-4 .content .description { font-size: 16px; color: var(--habitat-cinza-80); }
}

@media (max-width: 479px) {
  .rbt-banner-4 .content .title { font-size: 27px; }
}

/* =========================================================================
   Barra superior: cada informação em uma pílula
   A barra fica sobre a foto do banner, então o fundo claro também resolve a
   legibilidade — o texto deixa de disputar com a imagem.
   ========================================================================= */

.rbt-header-top .header-info .rbt-information-list { gap: 8px; margin: 0; }

.rbt-header-top .header-info .rbt-information-list li { margin: 0; }

.rbt-header-top .header-info .rbt-information-list li > a:not(.rbt-topbar-btn) {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 32px;
  padding: 0 14px;
  border-radius: 500px;
  background: rgba(255, 255, 255, .82);
  border: 1px solid var(--color-border);
  color: var(--habitat-cinza-80);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1;
  backdrop-filter: blur(3px);
  transition: background .25s ease, border-color .25s ease, color .25s ease;
}

.rbt-header-top .header-info .rbt-information-list li > a:not(.rbt-topbar-btn) i {
  margin: 0;
  font-size: 14px;
  color: var(--habitat-azul);
  transition: color .25s ease;
}

.rbt-header-top .header-info .rbt-information-list li > a:not(.rbt-topbar-btn):hover {
  background: #fff;
  border-color: var(--habitat-azul);
  color: var(--habitat-azul);
}
.rbt-header-top .header-info .rbt-information-list li > a:not(.rbt-topbar-btn):hover i { color: var(--habitat-azul); }

.active-dark-mode .rbt-header-top .header-info .rbt-information-list li > a:not(.rbt-topbar-btn) {
  background: rgba(24, 33, 42, .78);
  border-color: var(--dark-color-border-2);
  color: var(--color-white-dark);
}

/* =========================================================================
   Seções "Nossos Cursos" e "Conheça nossos espaços": card com borda
   contínua, alturas iguais e rodapé alinhado
   O texto de cada curso tem um comprimento diferente; sem isto, o "Saiba Mais"
   flutua na altura em que o parágrafo termina e a linha de cards fica torta.
   ========================================================================= */

/* As colunas viram flex para o card poder ocupar a altura toda da linha. */
/* Só as colunas de card viram flex. Aplicar em todas as colunas da seção
   quebrava o alinhamento central do título, do selo e do botão. */
.service-wrapper .rbt-card-col,
.rbt-espacos-area .rbt-card-col { display: flex; }

.service-wrapper .rbt-card ,
.rbt-espacos-area .rbt-card {
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(16, 38, 56, .04), 0 10px 24px rgba(16, 38, 56, .05);
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}

.service-wrapper .rbt-card:hover ,
.rbt-espacos-area .rbt-card:hover {
  transform: translateY(-4px);
  border-color: rgba(1, 49, 97, .35);
  box-shadow: 0 6px 14px rgba(16, 38, 56, .07), 0 18px 40px rgba(16, 38, 56, .10);
}

/* A imagem vai de borda a borda: quem arredonda os cantos é o próprio card
   (com overflow: hidden), para não haver dois raios concorrentes. */
.service-wrapper .rbt-card ,
.rbt-espacos-area .rbt-card { overflow: hidden; }
.service-wrapper .rbt-card .rbt-card-img img ,
.rbt-espacos-area .rbt-card .rbt-card-img img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 0;
  display: block;
  /* Com `srcset`+`sizes`, a largura intrínseca da imagem passa a ser a do
     `sizes` — sem isto o card ficaria com uma faixa vazia à direita. */
  width: 100%;
}

.service-wrapper .rbt-card .rbt-card-body ,
.rbt-espacos-area .rbt-card .rbt-card-body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}

/* Reserva a altura de dois títulos, que é o maior caso ("Ensino Fundamental –
   Anos Iniciais"), para o parágrafo não começar em alturas diferentes. */
.service-wrapper .rbt-card .rbt-card-title { min-height: 2.7em; margin-bottom: 10px; }
/* Os títulos dos espaços quase sempre cabem em uma linha; reservar duas
   deixaria um vão grande. */
.rbt-espacos-area .rbt-card .rbt-card-title { min-height: 1.5em; margin-bottom: 10px; }

/* O parágrafo cresce e empurra o rodapé para baixo: o "Saiba Mais" de todos
   os cards fica na mesma linha, encostado na base. */
.service-wrapper .rbt-card .rbt-card-text ,
.rbt-espacos-area .rbt-card .rbt-card-text { flex: 1 1 auto; margin-bottom: 0; }
.service-wrapper .rbt-card .rbt-card-bottom ,
.rbt-espacos-area .rbt-card .rbt-card-bottom { margin-top: auto; padding-top: 18px; }

.active-dark-mode .service-wrapper .rbt-card,
.active-dark-mode .rbt-espacos-area .rbt-card { border-color: var(--dark-color-border-2); }

@media (max-width: 767px) {
  .service-wrapper .rbt-card .rbt-card-title ,
.rbt-espacos-area .rbt-card .rbt-card-title { min-height: 0; }
}

/* =========================================================================
   Proposta Pedagógica
   Único bloco escuro da página: interrompe a sequência de seções claras e dá
   peso ao argumento pedagógico. Azul institucional de fundo, cartões brancos
   à frente e os marcos em amarelo.
   ========================================================================= */

.rbt-proposta-area {
  position: relative;
  overflow: hidden;
  padding: 110px 0 100px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}

/* Arcos concêntricos: o gesto do símbolo da marca, em escala grande. Em branco
   translúcido — amarelo e vermelho sobre o azul viravam manchas esverdeadas. */
.rbt-proposta-fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}

/* Fio amarelo cruzando o topo: o único traço de cor de apoio. */
.rbt-proposta-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  /* faixas sólidas: o degradê entre amarelo e vermelho virava laranja */
  background: linear-gradient(90deg,
      var(--habitat-verde) 0 62%,
      var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}

.rbt-proposta-conteudo { position: relative; z-index: 1; }

.rbt-proposta-selo {
  display: inline-block;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 7px 18px;
  border-radius: 500px;
  margin-bottom: 22px;
}

.rbt-proposta-titulo {
  color: #fff;
  font-size: clamp(28px, 3.4vw, 46px);
  line-height: 1.18;
  letter-spacing: -.015em;
  margin-bottom: 20px;
  text-wrap: balance;
}

.rbt-proposta-texto {
  color: rgba(255, 255, 255, .88);
  font-size: 17px;
  line-height: 1.7;
  margin-bottom: 0;
}

/* ---- Pilares: cartões brancos sobre o azul --------------------------- */

.rbt-pilares { margin-top: 54px; }

.rbt-pilar {
  height: 100%;
  background: #fff;
  border-radius: 16px;
  padding: 34px 30px 30px;
  box-shadow: 0 18px 40px rgba(2, 30, 54, .18);
  transition: transform .35s ease, box-shadow .35s ease;
}
.rbt-pilar:hover {
  transform: translateY(-6px);
  box-shadow: 0 26px 56px rgba(2, 30, 54, .26);
}

.rbt-pilar__icone {
  width: 62px;
  height: 62px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
  margin-bottom: 20px;
}
.rbt-pilar__icone i { font-size: 26px; color: var(--habitat-cinza-80); }
/* Uma cor institucional por pilar — o único trio da home, e onde a paleta
   completa se explica sozinha. Medido: branco sobre azul 6,17:1, cinza-80
   sobre amarelo 8,13:1, branco sobre vermelho 7,40:1 (os três passam em AA).
   O bloco atrás é azul, mas o círculo vermelho nunca o toca: quem separa é o
   cartão branco do pilar — é ele que contorna o 1,20:1 de vermelho x azul. */
.rbt-pilar__icone--azul { background: var(--habitat-azul); }
.rbt-pilar__icone--azul i { color: #fff; }
.rbt-pilar__icone--amarelo { background: var(--habitat-verde); }
.rbt-pilar__icone--vermelho { background: var(--habitat-azul-medio); }
.rbt-pilar__icone--vermelho i { color: #fff; }
/* Achado ao conferir o modo escuro: `styles.css` pinta TODO h3 de branco no
   escuro (0-1-1) e o cartão do pilar é branco nos dois modos — os três
   títulos ficavam invisíveis. Duas classes (0-2-0) resolvem sem !important. */
.active-dark-mode .rbt-pilar__titulo { color: var(--habitat-cinza-80); }

.rbt-pilar__titulo {
  font-size: 19px;
  line-height: 1.35;
  color: var(--habitat-cinza-80);
  margin-bottom: 12px;
  min-height: 2.7em;
}
.rbt-pilar__texto {
  font-size: 15px;
  line-height: 1.72;
  color: var(--habitat-cinza-60);
  margin-bottom: 0;
}

/* ---- Marcos numéricos ------------------------------------------------ */

.rbt-marcos {
  margin-top: 62px;
  padding-top: 46px;
  border-top: 1px solid rgba(255, 255, 255, .22);
}

.rbt-marco { text-align: center; }

.rbt-marco__numero {
  display: block;
  font-family: var(--font-secondary);
  font-size: clamp(40px, 4.4vw, 58px);
  font-weight: 700;
  line-height: 1;
  color: var(--habitat-verde);
  font-variant-numeric: tabular-nums;
}
.rbt-marco__rotulo {
  display: block;
  margin-top: 10px;
  color: #fff;
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
}
.rbt-marco__sub {
  display: block;
  margin-top: 3px;
  color: rgba(255, 255, 255, .72);
  font-size: 13px;
}

/* ---- CTA ------------------------------------------------------------- */

.rbt-btn.rbt-proposta-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  height: 58px;
  line-height: 58px;
  padding: 0 34px;
  border-radius: 500px;
  font-weight: 600;
  box-shadow: 0 12px 30px rgba(2, 30, 54, .22);
  transition: background .3s ease, transform .3s ease, box-shadow .3s ease;
}
.rbt-btn.rbt-proposta-cta:hover {
  background: #B6D65C;
  color: var(--habitat-cinza-80);
  transform: translateY(-3px);
  box-shadow: 0 18px 40px rgba(2, 30, 54, .3);
}
.rbt-btn.rbt-proposta-cta i { font-size: 17px; transition: transform .3s ease; }
.rbt-btn.rbt-proposta-cta:hover i { transform: translateX(4px); }

@media (max-width: 991px) {
  .rbt-proposta-area { padding: 78px 0 70px; }
  .rbt-pilar__titulo { min-height: 0; }
}

@media (max-width: 575px) {
  .rbt-proposta-area { padding: 62px 0 58px; }
  .rbt-marcos { margin-top: 44px; padding-top: 34px; }
  .rbt-pilar { padding: 28px 24px 26px; }
}

/* Entrada dos cartões e dos marcos conforme entram na tela.
   Feita com scroll-driven animation nativa e protegida por @supports: onde o
   recurso não existe, o conteúdo simplesmente aparece — nunca fica invisível
   esperando JavaScript, como aconteceria com uma biblioteca de scroll. */
@keyframes rbtEntra {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-pilar,
    .rbt-marco {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 26%;
    }
  }
}

/* =========================================================================
   Convites: canal (à distância) e visita (presencial)
   Um díptico deliberadamente desigual — a foto ocupa o lado maior e convida a
   olhar; o amarelo sólido ocupa o menor e convida a agir. Os dois flutuam
   sobre a seção seguinte, como no template.
   ========================================================================= */

.rbt-convites-area { position: relative; z-index: 2; }

.rbt-convite {
  position: relative;
  display: block;
  height: 100%;
  min-height: 340px;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 8px 20px rgba(16, 38, 56, .07), 0 24px 56px rgba(16, 38, 56, .12);
}

/* ---- Canal: foto + camada escura ------------------------------------- */

.rbt-convite--canal { display: flex; align-items: flex-end; text-decoration: none; }

.rbt-convite__foto {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1.1s cubic-bezier(.2, .8, .2, 1);
}
.rbt-convite--canal:hover .rbt-convite__foto { transform: scale(1.06); }

.rbt-convite--canal::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(2, 28, 55, .93) 0%, rgba(2, 28, 55, .72) 38%, rgba(2, 28, 55, .28) 72%, rgba(2, 28, 55, .18) 100%);
}

.rbt-convite--canal .rbt-convite__conteudo {
  position: relative;
  z-index: 2;
  padding: 38px 40px 36px;
  max-width: 560px;
}

.rbt-convite__play {
  position: absolute;
  z-index: 2;
  top: 34%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 84px;
  height: 84px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
  box-shadow: 0 0 0 0 rgba(155, 193, 49, .55);
  transition: transform .3s ease, box-shadow .3s ease;
}
.rbt-convite__play i { font-size: 30px; color: var(--habitat-cinza-80); margin-left: 4px; }
.rbt-convite--canal:hover .rbt-convite__play {
  transform: translate(-50%, -50%) scale(1.08);
  box-shadow: 0 0 0 16px rgba(155, 193, 49, .18);
}

@media (prefers-reduced-motion: no-preference) {
  .rbt-convite__play { animation: rbtPulsa 2.6s ease-out infinite; }
  @keyframes rbtPulsa {
    0%   { box-shadow: 0 0 0 0 rgba(155, 193, 49, .45); }
    70%  { box-shadow: 0 0 0 20px rgba(155, 193, 49, 0); }
    100% { box-shadow: 0 0 0 0 rgba(155, 193, 49, 0); }
  }
}

/* ---- Visita: amarelo institucional ----------------------------------- */

.rbt-convite--visita {
  background: var(--habitat-verde);
  padding: 40px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.rbt-convite--visita::before {
  content: "";
  position: absolute;
  right: -70px;
  bottom: -90px;
  width: 260px;
  height: 260px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .28);
}

/* ---- Tipografia compartilhada ---------------------------------------- */

.rbt-convite__selo {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 6px 14px;
  border-radius: 500px;
  margin-bottom: 16px;
  background: rgba(2, 28, 55, .58);
  color: #fff;
  backdrop-filter: blur(4px);
}
.rbt-convite__selo--escuro { background: var(--habitat-cinza-80); color: var(--habitat-verde); }

.rbt-convite__titulo {
  font-size: clamp(22px, 2.1vw, 28px);
  line-height: 1.25;
  margin-bottom: 12px;
  color: #fff;
  text-wrap: balance;
}
.rbt-convite--visita .rbt-convite__titulo { color: var(--habitat-cinza-80); }

.rbt-convite__texto {
  font-size: 15.5px;
  line-height: 1.65;
  margin-bottom: 18px;
  color: rgba(255, 255, 255, .88);
}
.rbt-convite--visita .rbt-convite__texto { color: #2F3B0F; }

.rbt-convite__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-secondary);
  font-weight: 600;
  font-size: 15px;
  color: var(--habitat-verde);
}
.rbt-convite__link i { transition: transform .3s ease; }
.rbt-convite--canal:hover .rbt-convite__link i { transform: translate(3px, -3px); }

.rbt-convite__dados {
  list-style: none;
  padding: 0;
  margin: 0 0 26px;
  position: relative;
  z-index: 1;
}
.rbt-convite__dados li {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 14.5px;
  color: #2F3B0F;
  margin-bottom: 7px;
}
.rbt-convite__dados i { font-size: 15px; color: var(--habitat-cinza-80); }
.rbt-convite__dados a { color: #2F3B0F; text-decoration: underline; text-underline-offset: 3px; }
.rbt-convite__dados a:hover { color: var(--habitat-azul); }

.rbt-convite__cta {
  position: relative;
  z-index: 1;
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 54px;
  padding: 0 30px;
  border-radius: 500px;
  background: var(--habitat-azul);
  color: #fff;
  font-family: var(--font-secondary);
  font-weight: 600;
  transition: background .3s ease, transform .3s ease, box-shadow .3s ease;
}
.rbt-convite__cta:hover {
  background: var(--habitat-azul-escuro);
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(1, 30, 61, .35);
}
.rbt-convite__cta i { transition: transform .3s ease; }
.rbt-convite__cta:hover i { transform: translateX(4px); }

/* Frase de abertura da Proposta Pedagógica (texto oficial da home). */
.rbt-proposta-destaque {
  color: #fff;
  font-family: var(--font-secondary);
  font-size: clamp(17px, 1.5vw, 20px);
  font-weight: 500;
  line-height: 1.6;
  max-width: 60ch;
  margin: 0 auto 18px;
}

@media (max-width: 991px) {
  .rbt-convite { min-height: 300px; }
  .rbt-convite--canal .rbt-convite__conteudo { padding: 30px 28px 28px; }
  .rbt-convite--visita { padding: 32px 28px; }
  .rbt-convite__play { width: 68px; height: 68px; top: 30%; }
  .rbt-convite__play i { font-size: 24px; }
}

/* No celular os dois convites ficam empilhados e a altura dobra: mantido o
   recuo negativo do desktop, o cartão amarelo cobria o título da seção
   seguinte. Abaixo de 992px eles entram no fluxo normal. */
@media (max-width: 991px) {
  .rbt-convites-area.mt_dec--half { margin-bottom: 0; padding-bottom: 0; }
  .rbt-course-area.default-callto-action-overlap { padding-top: 64px; }
}

/* =========================================================================
   Serviços Adicionais
   A seção é sobre o tempo que a criança passa na escola — por isso a peça
   central é a grade de horários, com os três turnos reais desenhados em
   escala. Layout assimétrico (argumento à esquerda, opções à direita) para
   não repetir o grid centralizado das outras seções.
   ========================================================================= */

.rbt-servicos-area {
  /* espaço extra no topo: os cartões de convite avançam 156px sobre esta seção */
  padding: 266px 0 100px;
  background: linear-gradient(180deg, #FFFFFF 0%, #F2F7FB 100%);
}

.rbt-servicos-intro { position: sticky; top: 110px; }

.rbt-servicos-selo {
  display: inline-block;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 7px 16px;
  border-radius: 500px;
  margin-bottom: 20px;
}

.rbt-servicos-titulo {
  font-size: clamp(28px, 2.9vw, 40px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: var(--habitat-cinza-80);
  margin-bottom: 18px;
  text-wrap: balance;
}

.rbt-servicos-texto {
  font-size: 16px;
  line-height: 1.75;
  color: var(--habitat-cinza-60);
  margin-bottom: 26px;
}

.rbt-servicos-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 54px;
  padding: 0 30px;
  border-radius: 500px;
  background: var(--habitat-azul);
  color: #fff;
  font-family: var(--font-secondary);
  font-weight: 600;
  transition: background .3s ease, transform .3s ease, box-shadow .3s ease;
}
.rbt-servicos-cta:hover {
  background: var(--habitat-azul-escuro);
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(1, 30, 61, .28);
}
.rbt-servicos-cta i { transition: transform .3s ease; }
.rbt-servicos-cta:hover i { transform: translateX(4px); }

/* ---- Cada serviço ---------------------------------------------------- */

.rbt-servicos-lista { display: flex; flex-direction: column; gap: 18px; }

.rbt-servico {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 28px 30px;
  box-shadow: 0 1px 2px rgba(16, 38, 56, .03), 0 10px 26px rgba(16, 38, 56, .05);
  transition: border-color .3s ease, box-shadow .3s ease, transform .3s ease;
}
.rbt-servico:hover {
  border-color: rgba(1, 49, 97, .35);
  box-shadow: 0 8px 18px rgba(16, 38, 56, .07), 0 20px 44px rgba(16, 38, 56, .10);
  transform: translateY(-3px);
}

.rbt-servico__cab { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }

.rbt-servico__icone {
  flex: 0 0 auto;
  width: 50px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
}
.rbt-servico__icone i { font-size: 22px; color: var(--habitat-cinza-80); }

.rbt-servico__titulo { font-size: 20px; line-height: 1.3; margin: 0; color: var(--habitat-cinza-80); }

.rbt-servico__chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0 0 14px; }
.rbt-servico__chips li {
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--habitat-azul);
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
  border-radius: 500px;
  padding: 4px 12px;
}

.rbt-servico__texto { font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-60); margin-bottom: 16px; }

.rbt-servico__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-secondary);
  font-weight: 600;
  font-size: 14.5px;
  color: var(--habitat-azul);
}
.rbt-servico__link i { transition: transform .3s ease; }
.rbt-servico__link:hover i { transform: translateX(4px); }

/* ---- Grade de horários ----------------------------------------------
   Três turnos reais em escala 7h–19h. A identidade de cada faixa vem do
   rótulo à esquerda, nunca da cor: a rampa azul só indica duração.
   -------------------------------------------------------------------- */

.rbt-horarios {
  margin: 4px 0 0;
  padding: 20px 20px 16px;
  background: var(--color-primary-light);
  border-radius: 12px;
  --barra-1: #2D639A;
  --barra-2: #073A6D;
  --barra-3: #011E3D;
}

.rbt-horarios__titulo {
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-cinza-60);
  margin-bottom: 14px;
}

.rbt-horarios__grade {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px 14px;
}

.rbt-horarios__rotulo {
  font-family: var(--font-secondary);
  font-size: 13px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.rbt-horarios__trilho {
  position: relative;
  display: block;
  height: 12px;
  border-radius: 500px;
  background: rgba(1, 49, 97, .10);
}

.rbt-horarios__barra {
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--ini);
  width: var(--dur);
  border-radius: 500px;
  background: var(--barra-1);
}
.rbt-horarios__barra--2 { background: var(--barra-2); }
.rbt-horarios__barra--3 { background: var(--barra-3); }

/* O eixo ocupa a mesma coluna das barras, então as marcas de hora caem
   exatamente sobre a escala — não em um padding estimado. */
.rbt-horarios__eixo {
  display: flex;
  justify-content: space-between;
  margin-top: 2px;
  font-size: 11.5px;
  color: var(--habitat-cinza-60);
  font-variant-numeric: tabular-nums;
}

.active-dark-mode .rbt-servicos-area { background: linear-gradient(180deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-servico { background: var(--color-bodyest); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-servicos-titulo,
.active-dark-mode .rbt-servico__titulo,
.active-dark-mode .rbt-horarios__rotulo { color: var(--color-white-dark); }
/* na superfície escura os passos claros da rampa é que mantêm contraste */
.active-dark-mode .rbt-horarios { background: rgba(255, 255, 255, .05); --barra-1: #4C8ECF; --barra-2: #2D639A; --barra-3: #073A6D; }

@media (max-width: 991px) {
  .rbt-servicos-area { padding: 76px 0 70px; }   /* no celular os convites não avançam */
  .rbt-servicos-intro { position: static; }
}

@media (max-width: 575px) {
  .rbt-servico { padding: 24px 22px; }
  .rbt-horarios__grade { grid-template-columns: 1fr; gap: 4px; }
  .rbt-horarios__rotulo { margin-top: 8px; }
  .rbt-horarios__eixo { padding-left: 0; }
}

/* =========================================================================
   Rani Compartilha
   Tratamento editorial: uma leitura em destaque com foto grande e, ao lado,
   a pilha de leituras recentes — hierarquia de revista, não grade de cards.
   ========================================================================= */

.rbt-rani-area { padding: 100px 0 96px; background: #fff; }

.rbt-rani-selo {
  display: inline-block;
  background: var(--color-secondary-alt);
  color: var(--habitat-azul-medio);
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 7px 16px;
  border-radius: 500px;
  margin-bottom: 18px;
}

.rbt-rani-titulo {
  font-size: clamp(28px, 2.9vw, 40px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: var(--habitat-cinza-80);
  margin-bottom: 14px;
  text-wrap: balance;
}

.rbt-rani-texto { font-size: 16px; line-height: 1.72; color: var(--habitat-cinza-60); max-width: 62ch; margin: 0; }

.rbt-rani-todos {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-weight: 600;
  color: var(--habitat-azul);
  border-bottom: 2px solid transparent;
  padding-bottom: 2px;
}
.rbt-rani-todos:hover { color: var(--habitat-azul-escuro); border-bottom-color: var(--habitat-verde); }
.rbt-rani-todos i { transition: transform .3s ease; }
.rbt-rani-todos:hover i { transform: translateX(4px); }

/* ---- Leitura em destaque --------------------------------------------- */

.rbt-destaque {
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid var(--color-border);
  border-radius: 18px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 2px rgba(16, 38, 56, .03), 0 12px 30px rgba(16, 38, 56, .06);
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.rbt-destaque:hover {
  transform: translateY(-4px);
  border-color: rgba(1, 49, 97, .35);
  box-shadow: 0 10px 22px rgba(16, 38, 56, .09), 0 26px 54px rgba(16, 38, 56, .12);
}

.rbt-destaque__foto { position: relative; display: block; overflow: hidden; }
.rbt-destaque__foto img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 1s cubic-bezier(.2, .8, .2, 1);
}
.rbt-destaque:hover .rbt-destaque__foto img { transform: scale(1.05); }

.rbt-destaque__tag {
  position: absolute;
  left: 18px;
  top: 18px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 6px 14px;
  border-radius: 500px;
}

.rbt-destaque__corpo { display: flex; flex-direction: column; padding: 28px 30px 30px; flex: 1 1 auto; }

.rbt-destaque__titulo {
  font-family: var(--font-secondary);
  font-size: clamp(20px, 1.9vw, 25px);
  font-weight: 600;
  line-height: 1.3;
  color: var(--habitat-cinza-80);
  margin-bottom: 12px;
  text-wrap: balance;
}
.rbt-destaque__lide { font-size: 15.5px; line-height: 1.7; color: var(--habitat-cinza-60); margin-bottom: 20px; }
.rbt-destaque__link {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-secondary);
  font-weight: 600;
  color: var(--habitat-azul);
}
.rbt-destaque__link i { transition: transform .3s ease; }
.rbt-destaque:hover .rbt-destaque__link i { transform: translateX(4px); }

/* ---- Pilha de leituras ----------------------------------------------- */

.rbt-leituras { display: flex; flex-direction: column; gap: 14px; height: 100%; }

.rbt-leitura {
  display: grid;
  grid-template-columns: 84px 1fr auto;
  align-items: center;
  gap: 16px;
  padding: 14px;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  background: #fff;
  transition: border-color .3s ease, background .3s ease, transform .3s ease;
}
.rbt-leitura:hover { border-color: rgba(1, 49, 97, .35); background: var(--color-primary-light); transform: translateX(3px); }

.rbt-leitura__thumb { width: 84px; height: 84px; object-fit: cover; border-radius: 10px; }
.rbt-leitura__texto { display: block; min-width: 0; }
.rbt-leitura__titulo {
  display: block;
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--habitat-cinza-80);
  margin-bottom: 4px;
}
.rbt-leitura__lide { display: block; font-size: 13.5px; line-height: 1.55; color: var(--habitat-cinza-60); }
.rbt-leitura__seta { color: var(--habitat-azul); font-size: 17px; transition: transform .3s ease; }
.rbt-leitura:hover .rbt-leitura__seta { transform: translateX(3px); }

/* ---- Colunistas + Ranicast ------------------------------------------- */

.rbt-rani-colunistas {
  margin-top: auto;
  padding: 20px 20px 18px;
  border-radius: 14px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
}
.rbt-rani-colunistas__titulo {
  display: block;
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-cinza-60);
  margin-bottom: 12px;
}
.rbt-rani-colunistas__lista { display: flex; flex-wrap: wrap; gap: 7px; list-style: none; padding: 0; margin: 0 0 16px; }
.rbt-rani-colunistas__lista li {
  font-size: 12.5px;
  font-weight: 500;
  color: var(--habitat-azul);
  background: #fff;
  border: 1px solid var(--color-primary-alt);
  border-radius: 500px;
  padding: 4px 11px;
}

.rbt-rani-podcast {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--habitat-cinza-80);
  color: #fff;
  font-size: 14px;
  transition: background .3s ease;
}
.rbt-rani-podcast span { flex: 1 1 auto; }
.rbt-rani-podcast strong { color: var(--habitat-verde); }
.rbt-rani-podcast:hover { background: #1F1F1F; color: #fff; }
.rbt-rani-podcast i:last-child { transition: transform .3s ease; }
.rbt-rani-podcast:hover i:last-child { transform: translateX(4px); }

.active-dark-mode .rbt-rani-area { background: var(--color-darkest); }
.active-dark-mode .rbt-destaque,
.active-dark-mode .rbt-leitura { background: var(--color-bodyest); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-rani-titulo,
.active-dark-mode .rbt-destaque__titulo,
.active-dark-mode .rbt-leitura__titulo { color: var(--color-white-dark); }

@media (max-width: 991px) {
  .rbt-rani-area { padding: 74px 0 70px; }
  .rbt-rani-todos { margin-top: 18px; }
  .rbt-rani-colunistas { margin-top: 4px; }
}

@media (max-width: 575px) {
  .rbt-leitura { grid-template-columns: 64px 1fr; }
  .rbt-leitura__thumb { width: 64px; height: 64px; }
  .rbt-leitura__seta { display: none; }
  .rbt-destaque__corpo { padding: 22px 20px 24px; }
}

/* =========================================================================
   Parceiros Educacionais
   Seção de apoio: sóbria de propósito, para não competir com as anteriores.
   Só recebe legenda o parceiro cujo papel o site oficial descreve.
   ========================================================================= */

.rbt-parceiros-area { padding: 84px 0 80px; background: var(--color-primary-light); }

.rbt-parceiros-selo {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  margin-bottom: 12px;
}

.rbt-parceiros-titulo {
  font-size: clamp(22px, 2.1vw, 28px);
  line-height: 1.28;
  color: var(--habitat-cinza-80);
  margin: 0;
  text-wrap: balance;
}

.rbt-parceiro {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 4px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  padding: 26px 18px 22px;
  text-align: center;
  transition: border-color .3s ease, box-shadow .3s ease, transform .3s ease;
}
.rbt-parceiro:hover {
  border-color: rgba(1, 49, 97, .3);
  box-shadow: 0 10px 26px rgba(16, 38, 56, .08);
  transform: translateY(-3px);
}

.rbt-parceiro__marca { display: flex; align-items: center; justify-content: center; height: 74px; margin-bottom: 10px; }
.rbt-parceiro__marca img { max-height: 58px; max-width: 100%; width: auto; filter: grayscale(1); opacity: .72; transition: filter .3s ease, opacity .3s ease; }
/* o selo do JEPP é quadrado: com a mesma altura dos logos horizontais ele
   pareceria menor do que é */
.rbt-parceiro__marca img[src*="jepp"] { max-height: 76px; }
.rbt-parceiro:hover .rbt-parceiro__marca img { filter: none; opacity: 1; }

.rbt-parceiro__nome { font-family: var(--font-secondary); font-weight: 600; font-size: 15px; color: var(--habitat-cinza-80); }
.rbt-parceiro__legenda { font-size: 12.5px; color: var(--habitat-cinza-60); line-height: 1.45; }

/* =========================================================================
   Nossa Rotina
   A rotina é feita de muitos momentos de tamanhos diferentes — daí o mosaico
   irregular, em vez da faixa de miniaturas iguais que havia aqui.
   ========================================================================= */

.rbt-rotina-area { padding: 96px 0 100px; background: #fff; }

.rbt-rotina-selo {
  display: inline-block;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-family: var(--font-secondary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 7px 16px;
  border-radius: 500px;
  margin-bottom: 18px;
}

.rbt-rotina-titulo {
  font-size: clamp(28px, 2.9vw, 40px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: var(--habitat-cinza-80);
  margin-bottom: 12px;
}

.rbt-rotina-texto { font-size: 16px; line-height: 1.72; color: var(--habitat-cinza-60); max-width: 60ch; margin: 0; }

.rbt-rotina-insta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 12px 20px 12px 16px;
  border-radius: 500px;
  background: var(--habitat-cinza-80);
  color: #fff;
  transition: background .3s ease, transform .3s ease;
}
.rbt-rotina-insta:hover { background: var(--habitat-azul); color: #fff; transform: translateY(-2px); }
.rbt-rotina-insta > i:first-child { font-size: 20px; color: var(--habitat-verde); }
.rbt-rotina-insta__txt { display: flex; flex-direction: column; line-height: 1.25; text-align: left; }
.rbt-rotina-insta__txt strong { font-family: var(--font-secondary); font-size: 15px; }
.rbt-rotina-insta__txt small { font-size: 12px; color: rgba(255, 255, 255, .75); }
.rbt-rotina-insta > i:last-child { font-size: 15px; transition: transform .3s ease; }
.rbt-rotina-insta:hover > i:last-child { transform: translate(3px, -3px); }

/* ---- Mosaico --------------------------------------------------------- */

.rbt-mosaico {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 168px;
  gap: 14px;
}

.rbt-mosaico__item {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: 14px;
  background: var(--color-primary-light);
}
.rbt-mosaico__item--grande { grid-column: span 2; grid-row: span 2; }

.rbt-mosaico__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .9s cubic-bezier(.2, .8, .2, 1);
}
.rbt-mosaico__item::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(2, 28, 55, .35) 0%, rgba(2, 28, 55, 0) 55%);
  opacity: 0;
  transition: opacity .3s ease;
}
.rbt-mosaico__item:hover img { transform: scale(1.07); }
.rbt-mosaico__item:hover::after { opacity: 1; }

.active-dark-mode .rbt-rotina-area { background: var(--color-darkest); }
.active-dark-mode .rbt-parceiros-area { background: var(--color-darker); }
.active-dark-mode .rbt-parceiro { background: var(--color-bodyest); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-parceiro__marca img { filter: grayscale(1) brightness(1.9); }
.active-dark-mode .rbt-rotina-titulo,
.active-dark-mode .rbt-parceiros-titulo,
.active-dark-mode .rbt-parceiro__nome { color: var(--color-white-dark); }

@media (max-width: 991px) {
  .rbt-rotina-area { padding: 72px 0 76px; }
  .rbt-rotina-insta { margin-top: 20px; }
  .rbt-mosaico { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 150px; }
}

@media (max-width: 575px) {
  .rbt-parceiros-area { padding: 62px 0 58px; }
  .rbt-mosaico { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 132px; gap: 10px; }
}

/* =========================================================================
   Rodapé
   O ativo mais concreto da escola são os quatro endereços no mesmo bairro —
   por isso eles abrem o rodapé como cartões clicáveis para o mapa, e não
   espremidos numa lista de contato.
   ========================================================================= */

/* Rodapé claro (pedido do colégio, 28/07) — inclui a faixa dos quatro
   endereços. Duas consequências que orientam todo o bloco abaixo:
   1. O amarelo institucional dá ~1,7:1 sobre branco, então ele deixa de ser
      cor de TEXTO aqui (títulos de coluna, link do mapa) e sobrevive só onde
      é PREENCHIMENTO — o botão do WhatsApp e os hovers.
   2. A borda superior substitui o contraste que o fundo escuro dava: sem ela
      o rodapé encosta sem costura em qualquer seção clara acima.
   No modo escuro ele volta a ser escuro, no fim do arquivo. */
.rbt-rodape { background: #fff; color: var(--habitat-cinza-80); border-top: 1px solid var(--color-primary-alt); }

/* ---- Faixa de unidades ----------------------------------------------- */

.rbt-rodape__unidades { background: var(--color-primary-light); padding: 54px 0 46px; }

.rbt-rodape__titulo-unidades {
  font-size: clamp(20px, 2vw, 26px);
  color: var(--habitat-azul-escuro);
  margin-bottom: 22px;
}

.rbt-unidade {
  display: flex;
  flex-direction: column;
  height: 100%;
  gap: 4px;
  padding: 20px 20px 18px;
  border: 1px solid var(--color-primary-alt);
  border-radius: 14px;
  background: #fff;
  transition: box-shadow .3s ease, border-color .3s ease, transform .3s ease;
}
.rbt-unidade:hover {
  border-color: var(--habitat-azul);
  box-shadow: 0 12px 26px rgba(1, 23, 46, .12);
  transform: translateY(-3px);
}

.rbt-unidade__nome {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-secondary);
  font-weight: 600;
  font-size: 15px;
  color: var(--habitat-azul-escuro);
  margin-bottom: 6px;
}
/* Pin vermelho: ver a nota "Vermelho institucional" no fim deste arquivo. */
.rbt-unidade__nome i { color: var(--habitat-azul-medio); font-size: 16px; }
.rbt-unidade__rua { font-size: 14px; color: var(--habitat-cinza-80); line-height: 1.5; }
.rbt-unidade__cep { font-size: 13px; color: var(--habitat-cinza-60); line-height: 1.5; }
.rbt-unidade__mapa {
  margin-top: auto;
  padding-top: 12px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-secondary);
  font-size: 13px;
  font-weight: 600;
  color: var(--habitat-azul);
}
.rbt-unidade__mapa i { transition: transform .3s ease; }
.rbt-unidade:hover .rbt-unidade__mapa i { transform: translate(3px, -3px); }

/* ---- Corpo ------------------------------------------------------------ */

.rbt-rodape__corpo { padding: 66px 0 58px; }

.rbt-rodape__marca img { height: 104px; width: auto; margin-bottom: 20px; }
.rbt-rodape__marca p { font-size: 15px; line-height: 1.7; max-width: 42ch; margin-bottom: 20px; }

.rbt-rodape__redes { display: flex; gap: 10px; list-style: none; padding: 0; margin: 0; }
.rbt-rodape__redes a {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--color-primary-alt);
  color: var(--habitat-azul);
  transition: background .3s ease, border-color .3s ease, color .3s ease;
}
.rbt-rodape__redes a:hover { background: var(--habitat-verde); border-color: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-rodape__coluna h3 {
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  margin-bottom: 16px;
}
.rbt-rodape__coluna ul { list-style: none; padding: 0; margin: 0; }
.rbt-rodape__coluna li { margin-bottom: 9px; }
.rbt-rodape__coluna a {
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--habitat-cinza-80);
  transition: color .25s ease, padding-left .25s ease;
}
.rbt-rodape__coluna a:hover { color: var(--habitat-azul); padding-left: 4px; }

.rbt-rodape__contato { display: flex; flex-direction: column; align-items: flex-start; }
.rbt-rodape__tel {
  font-family: var(--font-secondary);
  font-size: 19px;
  font-weight: 600;
  color: var(--habitat-azul-escuro);
  margin-bottom: 8px;
}
.rbt-rodape__tel:hover { color: var(--habitat-azul); }
.rbt-rodape__mail { font-size: 14.5px; color: var(--habitat-cinza-80); word-break: break-word; margin-bottom: 18px; }
.rbt-rodape__mail:hover { color: var(--habitat-azul); }
/* `.rbt-rodape__coluna a` (0-1-1) vencia `.rbt-rodape__wpp` (0-1-0) e pintava o
   texto de branco; só o ícone, com regra própria, ficava azul. */
.rbt-rodape__contato a.rbt-rodape__wpp,
.rbt-rodape__wpp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 46px;
  padding: 0 22px;
  white-space: nowrap;
  border-radius: 500px;
  background: var(--habitat-verde);
  /* Azul escuro em vez do azul institucional: o rótulo tem 14,5px, não conta
     como texto grande, e sobre o amarelo o azul dava 3,97:1 (abaixo de 4,5).
     Com o escuro sobe para 7,28:1. Já era assim antes do rodapé claro — o
     fundo mudou, o problema de contraste não vinha dele. */
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 700;
  font-size: 14.5px;
  transition: background .3s ease, transform .3s ease;
}
.rbt-rodape__contato a.rbt-rodape__wpp:hover,
.rbt-rodape__wpp:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-2px); }
.rbt-rodape__wpp i { color: var(--habitat-azul-escuro); }

/* ---- Base ------------------------------------------------------------- */

.rbt-rodape__base { border-top: 1px solid var(--color-primary-alt); padding: 22px 0; }
.rbt-rodape__base-linha {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.rbt-rodape__base p { margin: 0; font-size: 13.5px; color: var(--habitat-cinza-60); }
.rbt-rodape__base ul { display: flex; flex-wrap: wrap; gap: 22px; list-style: none; padding: 0; margin: 0; }
.rbt-rodape__base a { font-size: 13.5px; color: var(--habitat-cinza-60); }
.rbt-rodape__base a:hover { color: var(--habitat-azul); }

@media (max-width: 991px) {
  .rbt-rodape__unidades { padding: 44px 0 38px; }
  .rbt-rodape__corpo { padding: 48px 0 42px; }
  .rbt-rodape__marca img { height: 86px; }
}

@media (max-width: 575px) {
  .rbt-rodape__base-linha { flex-direction: column; align-items: flex-start; }
  .rbt-rodape__base ul { gap: 16px; }
}

/* ---- Rodapé no modo escuro -------------------------------------------
   O rodapé claro é a versão de dia. No escuro ele volta ao azul de antes:
   uma faixa branca fechando uma página escura queima a vista e inverte a
   hierarquia da leitura. Cores explícitas (e não tokens) porque
   --habitat-cinza-80/60 são remapeados por container, não globalmente. */
.active-dark-mode .rbt-rodape { background: #01172E; color: rgba(255, 255, 255, .82); border-top-color: transparent; }
.active-dark-mode .rbt-rodape__unidades { background: #001020; }
.active-dark-mode .rbt-rodape__titulo-unidades { color: #fff; }
.active-dark-mode .rbt-unidade { background: rgba(255, 255, 255, .04); border-color: rgba(255, 255, 255, .16); }
.active-dark-mode .rbt-unidade:hover { background: rgba(255, 255, 255, .09); border-color: var(--habitat-verde); box-shadow: none; }
.active-dark-mode .rbt-unidade__nome { color: #fff; }
.active-dark-mode .rbt-unidade__nome i { color: var(--habitat-verde); }
.active-dark-mode .rbt-unidade__rua { color: rgba(255, 255, 255, .88); }
.active-dark-mode .rbt-unidade__cep { color: rgba(255, 255, 255, .62); }
.active-dark-mode .rbt-unidade__mapa { color: var(--habitat-verde); }
.active-dark-mode .rbt-rodape__redes a { border-color: rgba(255, 255, 255, .22); color: #fff; }
.active-dark-mode .rbt-rodape__coluna h3 { color: var(--habitat-verde); }
.active-dark-mode .rbt-rodape__coluna a { color: rgba(255, 255, 255, .82); }
.active-dark-mode .rbt-rodape__coluna a:hover { color: #fff; }
.active-dark-mode .rbt-rodape__tel { color: #fff; }
.active-dark-mode .rbt-rodape__tel:hover { color: var(--habitat-verde); }
.active-dark-mode .rbt-rodape__mail { color: rgba(255, 255, 255, .82); }
.active-dark-mode .rbt-rodape__mail:hover { color: #fff; }
.active-dark-mode .rbt-rodape__base { border-top-color: rgba(255, 255, 255, .14); }
.active-dark-mode .rbt-rodape__base p,
.active-dark-mode .rbt-rodape__base a { color: rgba(255, 255, 255, .7); }
.active-dark-mode .rbt-rodape__base a:hover { color: var(--habitat-verde); }

/* =========================================================================
   Hero
   Duas colunas: o argumento à esquerda, a escola à direita. A foto sorteada
   deixa de ser papel de parede atrás do texto e passa a ser a imagem que se
   olha — sem véu por cima, portanto sem perder contraste nem detalhe.
   ========================================================================= */

.rbt-hero {
  position: relative;
  padding: 148px 0 0;
  overflow: hidden;
  background: linear-gradient(168deg, #F4F9FC 0%, #EAF3F9 46%, #FFFFFF 100%);
}

.rbt-hero__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 88% 6%, rgba(155, 193, 49, .16) 0 26%, transparent 26.4%),
    radial-gradient(circle at 2% 74%, rgba(1, 49, 97, .07) 0 30%, transparent 30.4%);
}

.rbt-hero .container { position: relative; z-index: 1; }

/* ---- Coluna do texto -------------------------------------------------- */

.rbt-hero__selo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 500px;
  padding: 8px 20px 8px 10px;
  margin-bottom: 26px;
  box-shadow: 0 6px 18px rgba(16, 38, 56, .06);
  transition: border-color .3s ease, transform .3s ease;
}
.rbt-hero__selo:hover { border-color: var(--habitat-verde); transform: translateY(-2px); }
.rbt-hero__selo-num {
  width: 46px;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-family: var(--font-secondary);
  font-weight: 700;
  font-size: 19px;
}
.rbt-hero__selo > span:last-child {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
  font-family: var(--font-secondary);
  font-weight: 600;
  font-size: 15px;
  color: var(--habitat-cinza-80);
}
.rbt-hero__selo small { font-family: var(--font-primary); font-weight: 400; font-size: 12.5px; color: var(--habitat-cinza-60); }

.rbt-hero__titulo {
  font-size: clamp(32px, 4vw, 56px);
  line-height: 1.1;
  letter-spacing: -.022em;
  color: var(--habitat-cinza-80);
  margin-bottom: 20px;
  text-wrap: balance;
}
.rbt-hero__titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  /* grifo amarelo sob a palavra-chave; clone faz cada linha receber o traço */
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.rbt-hero__lide {
  font-size: 17px;
  line-height: 1.7;
  color: var(--habitat-cinza-60);
  max-width: 52ch;
  margin-bottom: 30px;
}

.rbt-hero__acoes { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 28px; }

.rbt-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 58px;
  padding: 0 32px;
  border-radius: 500px;
  background: var(--habitat-azul);
  color: #fff;
  font-family: var(--font-secondary);
  font-weight: 600;
  font-size: 15.5px;
  transition: background .3s ease, transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.rbt-hero__cta:hover {
  background: var(--habitat-azul-escuro);
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(1, 30, 61, .28);
}
.rbt-hero__cta i { transition: transform .3s ease; }
.rbt-hero__cta:hover i { transform: translateX(4px); }

.rbt-hero__cta--vazado {
  background: transparent;
  color: var(--habitat-azul);
  border: 2px solid var(--color-primary-alt);
}
.rbt-hero__cta--vazado:hover { background: #fff; color: var(--habitat-azul); border-color: var(--habitat-azul); box-shadow: 0 12px 26px rgba(16, 38, 56, .08); }

.rbt-hero__etapas { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; }
.rbt-hero__etapas a {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 13px;
  font-weight: 600;
  color: var(--habitat-azul);
  background: rgba(255, 255, 255, .8);
  border: 1px solid var(--color-primary-alt);
  border-radius: 500px;
  padding: 6px 14px;
  transition: background .25s ease, border-color .25s ease;
}
.rbt-hero__etapas a:hover { background: #fff; border-color: var(--habitat-azul); }

/* ---- Coluna da imagem ------------------------------------------------- */

.rbt-hero__figura {
  position: relative;
  margin: 0;
  border-radius: 26px 26px 26px 90px;
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(16, 38, 56, .12), 0 40px 80px rgba(16, 38, 56, .10);
}
.rbt-hero__figura img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 11; object-fit: cover; }

.rbt-hero__legenda {
  position: absolute;
  right: 18px;
  bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: rgba(2, 28, 55, .72);
  color: #fff;
  font-size: 12.5px;
  padding: 7px 14px;
  border-radius: 500px;
  backdrop-filter: blur(4px);
}
.rbt-hero__legenda i { color: var(--habitat-verde); font-size: 14px; }

/* ---- Faixa de credenciais -------------------------------------------- */

.rbt-hero__faixa { margin-top: 64px; border-top: 1px solid var(--color-border); background: rgba(255, 255, 255, .7); }
.rbt-hero__faixa ul {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px 26px;
  list-style: none;
  padding: 22px 0;
  margin: 0;
}
.rbt-hero__faixa li { display: flex; align-items: center; gap: 12px; }
.rbt-hero__faixa i { font-size: 20px; color: var(--habitat-azul); flex: 0 0 auto; }
.rbt-hero__faixa span { display: flex; flex-direction: column; line-height: 1.3; font-size: 13px; color: var(--habitat-cinza-60); }
.rbt-hero__faixa strong { font-family: var(--font-secondary); font-size: 14.5px; color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-hero { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-hero__titulo,
.active-dark-mode .rbt-hero__faixa strong { color: var(--color-white-dark); }
/* O grifo translúcido só funciona sobre fundo claro: no escuro a faixa vira
   um bloco esverdeado e a palavra, escrita no azul da marca (escuro por
   natureza), some dentro dele — media 1,12:1. No escuro o destaque é a
   palavra em verde sólido, sem faixa (7,4:1). Mesma solução já adotada nas
   aberturas das páginas internas. */
.active-dark-mode .rbt-hero__titulo em { color: var(--habitat-verde); background: none; }
.active-dark-mode .rbt-hero__selo,
.active-dark-mode .rbt-hero__faixa { background: rgba(255, 255, 255, .05); border-color: var(--dark-color-border-2); }

@media (max-width: 991px) {
  .rbt-hero { padding-top: 118px; }
  .rbt-hero__figura { border-radius: 20px 20px 20px 64px; }
  .rbt-hero__faixa ul { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 575px) {
  .rbt-hero { padding-top: 104px; }
  .rbt-hero__acoes { gap: 10px; }
  .rbt-hero__cta { height: 52px; padding: 0 24px; font-size: 14.5px; }
  .rbt-hero__faixa ul { grid-template-columns: 1fr; padding: 18px 0; }
}

/* =========================================================================
   Divisor de seção
   Quando duas seções vizinhas têm o MESMO fundo (branco sobre branco), a
   mudança de assunto passa batida: o olho não tem onde apoiar. O divisor é
   um fio de 1px na largura do conteúdo que nasce e morre em transparência —
   demarca a emenda sem virar mais um elemento na página.
   Regra de uso: só entre seções de fundo idêntico. Onde o fundo já muda
   (branco -> #F5F7FA, branco -> azul escuro), a própria troca é o divisor.
   ========================================================================= */

.rbt-divisor { margin-top: 64px; }
.rbt-divisor > .container { display: flex; }
.rbt-divisor span {
  flex: 1 1 auto;
  height: 1px;
  background: linear-gradient(90deg,
      rgba(1, 49, 97, 0) 0%,
      rgba(1, 49, 97, .16) 18%,
      rgba(1, 49, 97, .16) 82%,
      rgba(1, 49, 97, 0) 100%);
}

/* No escuro o azul desaparece: o fio passa a ser luz, não tinta. */
.active-dark-mode .rbt-divisor span {
  background: linear-gradient(90deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(255, 255, 255, .13) 18%,
      rgba(255, 255, 255, .13) 82%,
      rgba(255, 255, 255, 0) 100%);
}

@media (max-width: 767px) {
  /* Tela estreita: menos ar acima e o fio começa a aparecer mais cedo,
     senão em ~360px de largura só sobra o miolo visível. */
  .rbt-divisor { margin-top: 44px; }
  .rbt-divisor span {
    background: linear-gradient(90deg,
        rgba(1, 49, 97, 0) 0%,
        rgba(1, 49, 97, .16) 10%,
        rgba(1, 49, 97, .16) 90%,
        rgba(1, 49, 97, 0) 100%);
  }
  .active-dark-mode .rbt-divisor span {
    background: linear-gradient(90deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, .13) 10%,
        rgba(255, 255, 255, .13) 90%,
        rgba(255, 255, 255, 0) 100%);
  }
}

/* =========================================================================
   Ícone do WhatsApp (SVG embutido — ver comentário no topo do index.php)
   O tamanho é em `em` para acompanhar o texto de cada contexto: pílula da
   barra superior (13.5px), número do rodapé (19px), botão amarelo (14.5px).
   ========================================================================= */

.rbt-icone-wpp {
  width: 1.05em;
  height: 1.05em;
  flex: 0 0 auto;
  fill: currentColor;
  vertical-align: -.15em;   /* o <a> do menu mobile não é flex */
}

/* Nas listas de informação o ícone de fonte tem margem própria (10px). */
.rbt-information-list li a .rbt-icone-wpp { margin-right: 10px; }

/* Menos nas pílulas da barra superior, que já separam por gap — e onde o
   ícone é azul, como os demais. */
.rbt-header-top .header-info .rbt-information-list li > a .rbt-icone-wpp {
  margin-right: 0;
  color: var(--habitat-azul);
}

/* O número do rodapé passa a ser um contato de WhatsApp: ícone + número na
   mesma linha, e o fio do hover (amarelo) leva o ícone junto. */
.rbt-rodape__tel { display: inline-flex; align-items: center; gap: 9px; }

/* =========================================================================
   Páginas internas — faixa de título (breadcrumb)
   A home tem hero próprio; as demais páginas abrem com esta faixa. O template
   usava `bg-gradient-1`, um lilás claro (#EFF1FF) que não é da marca.
   ========================================================================= */

.rbt-breadcrumb-default.bg-gradient-1 {
  background: linear-gradient(180deg, #FFFFFF 0%, var(--color-primary-lighter) 100%);
  border-bottom: 1px solid var(--color-primary-alt);
}
.rbt-breadcrumb-default .breadcrumb-inner .title { color: var(--habitat-azul-escuro); }
.rbt-breadcrumb-linha {
  max-width: 620px;
  margin: 14px auto 0;
  color: var(--habitat-cinza-80);
  font-size: 16px;
}
.rbt-breadcrumb-default .page-list { margin-top: 18px; }
.rbt-breadcrumb-default .page-list li a { color: var(--habitat-azul); }
.rbt-breadcrumb-default .page-list li.active { color: var(--habitat-cinza-60); }

/* A linha de apoio da faixa de título usa o cinza 80% do manual, que sobre o
   fundo escuro do tema fica ilegível — vale para todas as páginas internas. */
.active-dark-mode .rbt-breadcrumb-linha { color: rgba(255, 255, 255, .75); }

/* Mesmo problema no próprio título: o azul-escuro da marca sobre o fundo
   escuro fica em ~2,4:1, abaixo do mínimo até para texto grande. Vale para
   todas as páginas internas, que compartilham esta faixa. */
.active-dark-mode .rbt-breadcrumb-default .breadcrumb-inner .title { color: var(--color-white-dark); }
.active-dark-mode .rbt-breadcrumb-default .page-list li a { color: var(--habitat-azul-claro); }

.active-dark-mode .rbt-breadcrumb-default.bg-gradient-1 {
  background: linear-gradient(180deg, var(--color-darkest) 0%, var(--color-darker) 100%);
  border-bottom-color: var(--dark-color-border-2);
}

/* =========================================================================
   Chamada final em cartão amarelo
   Fecha as cinco páginas de etapa, cursos, proposta, história e serviços
   adicionais — o único bloco ainda compartilhado entre páginas internas.
   ========================================================================= */

/* ---- Chamada final ----------------------------------------------------- */

.rbt-curso__cta { padding: 0 0 100px; background: #fff; }
.rbt-curso__cta-caixa {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 28px;
  padding: 44px 48px;
  border-radius: 26px;
  background: var(--habitat-verde);
}
.rbt-curso__cta-caixa h2 { margin: 0; color: var(--habitat-azul-escuro); font-size: clamp(22px, 2.6vw, 30px); }
.rbt-curso__cta-caixa p { margin: 12px 0 0; max-width: 560px; color: #3A4812; }
.rbt-curso__cta-acoes { display: flex; flex-wrap: wrap; gap: 12px; }
.rbt-curso__cta-wpp {
  display: inline-flex; align-items: center; gap: 9px;
  height: 58px; padding: 0 26px;
  border-radius: 500px;
  border: 2px solid var(--habitat-azul-escuro);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary); font-weight: 700;
  transition: background .3s ease, color .3s ease;
}
.rbt-curso__cta-wpp:hover { background: var(--habitat-azul-escuro); color: var(--habitat-verde); }

.active-dark-mode .rbt-curso__cta { background: var(--color-darkest); }

@media (max-width: 991px) {
  .rbt-curso__cta-caixa { padding: 34px 28px; }
}

@media (max-width: 575px) {
  .rbt-curso__cta-acoes > a { width: 100%; justify-content: center; }
}


/* =========================================================================
   Link "seta à direita" das listagens
   Nasceu no índice das etapas (cursos.php, hoje redesenhado como
   `rbt-trilha-*`), mas quatro outras páginas o usam — por isso ele fica, e
   sozinho, fora do desenho de qualquer página.
   ========================================================================= */

.rbt-etapa__link {
  display: inline-flex; align-items: center; gap: 9px;
  margin-top: 24px;
  font-family: var(--font-secondary); font-weight: 700; font-size: 15px;
  color: var(--habitat-azul);
}
.rbt-etapa__link i { transition: transform .3s ease; }
.rbt-etapa__link:hover i { transform: translateX(5px); }

/* O cabeçalho é transparente e fica POR CIMA do conteúdo (é o que faz a home
   começar na foto). Nas páginas internas a faixa de título é o primeiro bloco,
   então ela precisa reservar a altura do cabeçalho — senão o <h1> nasce
   embaixo do menu. A home resolve isso com o padding-top do próprio hero. */
.rbt-breadcrumb-default.ptb--100 { padding: 176px 0 78px !important; }

@media (max-width: 991px) {
  .rbt-breadcrumb-default.ptb--100 { padding: 142px 0 56px !important; }
}
@media (max-width: 575px) {
  .rbt-breadcrumb-default.ptb--100 { padding: 126px 0 46px !important; }
}




/* =========================================================================
   Nossa História
   O assunto da página é tempo, então o tempo é o eixo visual: a régua mostra
   os 31 anos em escala e o trilho central desce ano a ano. Missão e visão
   ficam no único bloco escuro da página — o mesmo gesto da Proposta
   Pedagógica na home, para quem navega reconhecer a mudança de assunto.

   Todas as classes daqui usam o prefixo `rbt-hist-`: `.rbt-marco`,
   `.rbt-pilar` e `.rbt-servico` já pertencem a componentes da home e do
   rodapé, e como este arquivo é anexado no fim, repetir um nome quebraria o
   componente antigo no site inteiro.
   ========================================================================= */

/* ---- Peças comuns: selo e cabeçalho de seção -------------------------- */

.rbt-hist-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-hist-selo i { font-size: 14px; }
.rbt-hist-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-hist-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-hist-cab { max-width: 760px; margin: 0 auto 58px; text-align: center; }
.rbt-hist-cab h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.16;
  letter-spacing: -.018em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
/* Grifo amarelo sob a palavra-chave — o mesmo recurso do título do hero. */
.rbt-hist-cab h2 em,
.rbt-hist-abertura__titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-hist-cab > p { margin: 16px auto 0; max-width: 620px; color: var(--habitat-cinza-60); font-size: 16.5px; }

/* =========================================================================
   Abertura
   ========================================================================= */

.rbt-hist-abertura {
  position: relative;
  overflow: hidden;
  padding: 84px 0 88px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 55%, #FFFFFF 100%);
}
.rbt-hist-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 94% 4%, rgba(155, 193, 49, .14) 0 22%, transparent 22.4%),
    radial-gradient(circle at 0% 88%, rgba(1, 49, 97, .07) 0 26%, transparent 26.4%);
}
.rbt-hist-abertura .container { position: relative; z-index: 1; }

.rbt-hist-abertura__grade {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: 56px;
  align-items: center;
}

.rbt-hist-abertura__titulo {
  margin: 0 0 20px;
  font-size: clamp(29px, 3.8vw, 48px);
  line-height: 1.12;
  letter-spacing: -.022em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-hist-abertura__lide {
  margin: 0 0 30px;
  font-size: 17px;
  line-height: 1.72;
  color: var(--habitat-cinza-80);
  max-width: 54ch;
}
.rbt-hist-abertura__acoes { display: flex; flex-wrap: wrap; gap: 12px; }

/* A moldura repete o recorte do hero (canto inferior esquerdo arredondado):
   é o que faz a página parecer do mesmo site sem copiar a seção. */
.rbt-hist-abertura__foto {
  position: relative;
  margin: 0;
  border-radius: 26px 26px 26px 90px;
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(16, 38, 56, .12), 0 40px 80px rgba(16, 38, 56, .10);
}
.rbt-hist-abertura__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 11;
  object-fit: cover;
}
.rbt-hist-abertura__legenda {
  position: absolute;
  right: 18px;
  bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: rgba(2, 28, 55, .72);
  color: #fff;
  font-size: 12.5px;
  padding: 7px 14px;
  border-radius: 500px;
  backdrop-filter: blur(4px);
}
.rbt-hist-abertura__legenda i { color: var(--habitat-verde); font-size: 14px; }

/* Medalha dos 30 anos: fica dentro da foto porque a moldura tem overflow
   escondido — sair da caixa cortaria o círculo. Vai no canto direito: à
   esquerda ela cobriria a marca pintada na fachada. */
.rbt-hist-abertura__medalha {
  position: absolute;
  right: 22px;
  top: 22px;
  width: 104px;
  height: 104px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  line-height: 1;
  box-shadow: 0 12px 26px rgba(2, 30, 54, .28);
}
.rbt-hist-abertura__medalha strong { font-size: 40px; font-weight: 800; }
.rbt-hist-abertura__medalha small { margin-top: 4px; font-size: 13px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

/* ---- Números da abertura ---------------------------------------------- */

.rbt-hist-numeros {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
  list-style: none;
  padding: 38px 0 0;
  margin: 58px 0 0;
  border-top: 1px solid var(--color-border);
}
.rbt-hist-numeros li {
  display: grid;
  grid-template-columns: 46px auto 1fr;
  align-items: center;
  gap: 16px;
  padding-left: 30px;
  border-left: 1px solid var(--color-border);
}
.rbt-hist-numeros li:first-child { padding-left: 0; border-left: 0; }
.rbt-hist-numeros i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 20px;
}
.rbt-hist-numeros strong {
  font-family: var(--font-secondary);
  font-size: clamp(34px, 3.4vw, 44px);
  font-weight: 800;
  line-height: 1;
  color: var(--habitat-azul);
  font-variant-numeric: tabular-nums;
}
.rbt-hist-numeros span {
  display: flex;
  flex-direction: column;
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  line-height: 1.3;
}
.rbt-hist-numeros small { font-family: var(--font-primary); font-weight: 400; font-size: 12.5px; color: var(--habitat-cinza-60); margin-top: 3px; }

/* =========================================================================
   Trajetória: régua + trilho
   ========================================================================= */

.rbt-hist-tempo { padding: 90px 0 100px; background: #fff; }

/* ---- Régua ------------------------------------------------------------ */

.rbt-hist-regua { margin: 0 0 84px; padding: 0 72px; }

.rbt-hist-regua__trilho {
  position: relative;
  height: 6px;
  border-radius: 500px;
  background: var(--color-primary-lighter);
  margin: 56px 0 0;
}
.rbt-hist-regua__preenchimento {
  position: absolute;
  inset: 0;
  border-radius: 500px;
  background: linear-gradient(90deg, var(--habitat-azul) 0%, var(--habitat-azul-claro) 58%, var(--habitat-verde) 100%);
  transform-origin: left center;
}

.rbt-hist-regua__ponto {
  position: absolute;
  top: 50%;
  width: 20px;
  height: 20px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: #fff;
  border: 4px solid var(--habitat-azul);
  transition: transform .25s ease, box-shadow .25s ease;
}
a.rbt-hist-regua__ponto:hover { transform: translate(-50%, -50%) scale(1.25); box-shadow: 0 0 0 6px rgba(1, 49, 97, .14); }
.rbt-hist-regua__ponto--hoje { border-color: var(--habitat-verde); background: var(--habitat-verde); }

.rbt-hist-regua__ano,
.rbt-hist-regua__rotulo {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
}
.rbt-hist-regua__ano {
  bottom: 26px;
  font-family: var(--font-secondary);
  font-size: 17px;
  font-weight: 800;
  color: var(--habitat-azul-escuro);
}
.rbt-hist-regua__rotulo {
  top: 26px;
  font-size: 13px;
  color: var(--habitat-cinza-60);
}
/* 1998 fica a três anos de 1995: em escala real os dois rótulos se tocam, por
   isso o segundo desce um degrau. */
.rbt-hist-regua__ponto:nth-of-type(2) .rbt-hist-regua__rotulo { top: 48px; }
.rbt-hist-regua__ponto:nth-of-type(2)::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 22px;
  width: 1px;
  height: 22px;
  background: var(--color-primary-alt);
}
/* Nas pontas o rótulo centralizado sairia da régua: ele encosta na borda. */
.rbt-hist-regua__ponto:first-of-type .rbt-hist-regua__ano,
.rbt-hist-regua__ponto:first-of-type .rbt-hist-regua__rotulo { left: -2px; transform: none; }
.rbt-hist-regua__ponto--hoje .rbt-hist-regua__ano,
.rbt-hist-regua__ponto--hoje .rbt-hist-regua__rotulo { left: auto; right: -2px; transform: none; }
.rbt-hist-regua__ponto--hoje .rbt-hist-regua__ano { color: var(--habitat-azul); }

/* O eixo das décadas fica ABAIXO dos rótulos dos marcos (que descem até 48px,
   por causa do degrau do 1998): sem essa folga os dois textos se encavalam. */
.rbt-hist-regua__eixo { position: relative; height: 30px; margin-top: 76px; border-top: 1px dashed var(--color-border); }
.rbt-hist-regua__eixo span {
  position: absolute;
  top: 8px;
  transform: translateX(-50%);
  font-size: 12px;
  color: var(--habitat-cinza-40);
  font-variant-numeric: tabular-nums;
}
.rbt-hist-regua__eixo span:first-child { transform: none; }
.rbt-hist-regua__eixo span:last-child { transform: translateX(-100%); }

/* ---- Trilho ----------------------------------------------------------- */

/* O padding de baixo é o pedaço de trilho que sobra depois do último cartão e
   encontra o nó do "hoje", que vem logo abaixo da lista. Ele também impede que
   a margem do último item colapse para fora do <ol> e encurte o fio. */
.rbt-hist-trilho { position: relative; list-style: none; padding: 0 0 44px; margin: 0; }
.rbt-hist-trilho::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 8px;
  bottom: 0;
  width: 2px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, var(--color-primary-alt) 0%, var(--habitat-azul-claro) 55%, var(--habitat-verde) 100%);
}
.rbt-hist-trilho > li:last-child { margin-bottom: 0; }

.rbt-hist-marco {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 110px 1fr;
  align-items: center;
  margin-bottom: 54px;
}
/* `grid-row: 1` nos dois: sem isso o cartão da esquerda, declarado DEPOIS do nó
   (que ocupa a coluna do meio), não caberia mais na primeira linha e o
   posicionamento automático o jogaria para uma segunda linha. */
.rbt-hist-marco__cartao { grid-row: 1; }
.rbt-hist-marco--esq .rbt-hist-marco__cartao { grid-column: 1; }
.rbt-hist-marco--dir .rbt-hist-marco__cartao { grid-column: 3; }

.rbt-hist-marco__no {
  position: relative;
  grid-column: 2;
  grid-row: 1;
  justify-self: center;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--color-primary-alt);
  color: var(--habitat-azul);
  font-size: 22px;
  box-shadow: 0 10px 24px rgba(16, 38, 56, .10);
}
/* Fio curto ligando o nó ao cartão: sem ele o cartão parece solto ao lado do
   trilho, e não pendurado nele. */
.rbt-hist-marco__no::before {
  content: "";
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 2px;
  /* cor sólida: o fio troca de lado conforme o marco (e no celular vai sempre
     para a direita), então um degradê direcional ficaria invertido metade das
     vezes */
  background: rgba(1, 49, 97, .32);
}
.rbt-hist-marco--esq .rbt-hist-marco__no::before { right: 100%; }
.rbt-hist-marco--dir .rbt-hist-marco__no::before { left: 100%; }

.rbt-hist-marco__cartao {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 22px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(16, 38, 56, .08);
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.rbt-hist-marco__cartao:hover {
  transform: translateY(-6px);
  border-color: var(--color-primary-alt);
  box-shadow: 0 26px 56px rgba(16, 38, 56, .14);
}

.rbt-hist-marco__foto { position: relative; margin: 0; }
.rbt-hist-marco__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.rbt-hist-marco__ano {
  position: absolute;
  left: 22px;
  bottom: -16px;
  display: inline-flex;
  align-items: center;
  height: 42px;
  padding: 0 20px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-size: 20px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  box-shadow: 0 8px 20px rgba(2, 30, 54, .18);
}

.rbt-hist-marco__corpo { padding: 34px 32px 32px; }
.rbt-hist-marco__corpo h3 {
  margin: 0 0 12px;
  font-size: clamp(20px, 2.3vw, 25px);
  color: var(--habitat-azul-escuro);
}
.rbt-hist-marco__corpo p { margin: 0; font-size: 15.5px; line-height: 1.75; color: var(--habitat-cinza-80); }

/* ---- Aparte (o contexto pedagógico, que não é uma data) ---------------- */

.rbt-hist-aparte { position: relative; margin-bottom: 54px; }
.rbt-hist-aparte__caixa {
  position: relative;
  max-width: 780px;
  margin: 0 auto;
  padding: 38px 40px 36px;
  border-radius: 22px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
}
.rbt-hist-aparte__caixa::before {
  content: "\201C";
  position: absolute;
  left: 26px;
  top: 4px;
  font-family: var(--font-secondary);
  font-size: 86px;
  line-height: 1;
  color: rgba(155, 193, 49, .55);
}
.rbt-hist-aparte__rotulo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  margin-bottom: 14px;
}
.rbt-hist-aparte__caixa p { margin: 0; font-size: 16px; line-height: 1.78; color: var(--habitat-cinza-80); }

/* ---- Fim do trilho ----------------------------------------------------- */

.rbt-hist-hoje { display: flex; flex-direction: column; align-items: center; text-align: center; }
.rbt-hist-marco__no--hoje { background: var(--habitat-verde); border-color: var(--habitat-verde); color: var(--habitat-azul-escuro); }
.rbt-hist-marco__no--hoje::before { display: none; }
.rbt-hist-hoje__caixa { max-width: 560px; margin-top: 22px; }
.rbt-hist-hoje__caixa strong {
  display: block;
  font-family: var(--font-secondary);
  font-size: 24px;
  color: var(--habitat-azul-escuro);
}
.rbt-hist-hoje__caixa p { margin: 10px 0 0; color: var(--habitat-cinza-80); font-size: 16px; }
.rbt-hist-hoje__link {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 18px;
  font-family: var(--font-secondary);
  font-weight: 700;
  font-size: 15px;
  color: var(--habitat-azul);
}
.rbt-hist-hoje__link i { transition: transform .3s ease; }
.rbt-hist-hoje__link:hover i { transform: translateX(5px); }

/* =========================================================================
   Missão e visão — o bloco escuro da página
   ========================================================================= */

.rbt-hist-mv {
  position: relative;
  overflow: hidden;
  padding: 104px 0 108px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-hist-mv::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-hist-mv__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-hist-mv__conteudo { position: relative; z-index: 1; }

.rbt-hist-mv__grade { display: grid; grid-template-columns: 5fr 7fr; gap: 56px; align-items: start; }

.rbt-hist-mv__intro { padding-top: 6px; }
.rbt-hist-mv__intro h2 {
  margin: 0;
  font-size: clamp(28px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.018em;
  color: #fff;
  text-wrap: balance;
}
/* Sobre o azul o grifo translúcido esverdeia: o destaque é o amarelo sólido. */
.rbt-hist-mv__intro h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-hist-mv__intro p { margin: 20px 0 0; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .8); }

.rbt-hist-mv__cartoes { display: grid; gap: 20px; }
.rbt-hist-mv__cartao {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 24px;
  align-items: start;
  padding: 34px 34px 36px;
  border-radius: 22px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  transition: transform .35s ease, background .35s ease, border-color .35s ease;
}
.rbt-hist-mv__cartao:hover { transform: translateY(-5px); background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .4); }
.rbt-hist-mv__icone {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 26px;
}
.rbt-hist-mv__cartao h3 { margin: 4px 0 12px; font-size: clamp(21px, 2.4vw, 26px); color: #fff; }
.rbt-hist-mv__cartao p { margin: 0; font-size: 16.5px; line-height: 1.75; color: rgba(255, 255, 255, .88); }

/* =========================================================================
   Valores
   Cinco cartões em bento: três em cima, dois mais largos embaixo — cinco
   colunas iguais deixariam o texto espremido, e um grid de 3+2 iguais
   deixaria um buraco na segunda linha.
   ========================================================================= */

.rbt-hist-valores-area { padding: 90px 0 100px; background: linear-gradient(180deg, #FFFFFF 0%, var(--color-primary-light) 100%); }

.rbt-hist-valores { display: grid; grid-template-columns: repeat(6, 1fr); gap: 20px; }
.rbt-hist-valor {
  position: relative;
  grid-column: span 2;
  overflow: hidden;
  padding: 34px 30px 32px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
/* Os dois últimos mantêm a largura dos de cima e ficam centralizados: em
   `span 3` eles ficavam largos demais para um texto de duas linhas. */
.rbt-hist-valor:nth-child(4) { grid-column: 2 / span 2; }
.rbt-hist-valor:nth-child(5) { grid-column: 4 / span 2; }
.rbt-hist-valor::before {
  content: "";
  position: absolute;
  left: 0; top: 0; right: 0;
  height: 3px;
  background: var(--habitat-verde);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s ease;
}
.rbt-hist-valor:hover { transform: translateY(-4px); border-color: var(--color-primary-alt); box-shadow: 0 18px 36px rgba(16, 38, 56, .10); }
.rbt-hist-valor:hover::before { transform: scaleX(1); }

.rbt-hist-valor__num {
  position: absolute;
  right: 22px;
  top: 16px;
  font-family: var(--font-secondary);
  font-size: 54px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
}
.rbt-hist-valor__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 22px;
}
.rbt-hist-valor h3 { margin: 20px 0 10px; font-size: 20px; color: var(--habitat-azul-escuro); }
.rbt-hist-valor p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-hist-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-hist-tempo { background: var(--color-darkest); }
.active-dark-mode .rbt-hist-valores-area { background: linear-gradient(180deg, var(--color-darkest) 0%, var(--color-darker) 100%); }

.active-dark-mode .rbt-hist-abertura__titulo,
.active-dark-mode .rbt-hist-cab h2,
.active-dark-mode .rbt-hist-marco__corpo h3,
.active-dark-mode .rbt-hist-hoje__caixa strong,
.active-dark-mode .rbt-hist-valor h3,
.active-dark-mode .rbt-hist-regua__ano { color: var(--color-white-dark); }

.active-dark-mode .rbt-hist-selo--claro,
.active-dark-mode .rbt-hist-numeros i,
.active-dark-mode .rbt-hist-valor__icone { background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); color: var(--habitat-verde); }
.active-dark-mode .rbt-hist-selo { color: var(--habitat-verde); }
.active-dark-mode .rbt-hist-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-hist-marco__cartao,
.active-dark-mode .rbt-hist-valor,
.active-dark-mode .rbt-hist-aparte__caixa,
.active-dark-mode .rbt-hist-marco__no { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-hist-numeros,
.active-dark-mode .rbt-hist-numeros li { border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-hist-marco__no { color: var(--habitat-verde); }
.active-dark-mode .rbt-hist-marco__no--hoje { background: var(--habitat-verde); color: var(--habitat-azul-escuro); border-color: var(--habitat-verde); }
.active-dark-mode .rbt-hist-valor__num { color: rgba(255, 255, 255, .10); }
.active-dark-mode .rbt-hist-regua__trilho { background: rgba(255, 255, 255, .1); }
.active-dark-mode .rbt-hist-regua__ponto { background: var(--color-darkest); }

/* O grifo translúcido só funciona sobre fundo claro: no escuro ele vira uma
   faixa oliva e ainda joga texto azul sobre amarelo. Aqui o destaque é a
   própria palavra em amarelo. */
.active-dark-mode .rbt-hist-cab h2 em,
.active-dark-mode .rbt-hist-abertura__titulo em { color: var(--habitat-verde); background: none; }

/* O halo amarelo do fundo da abertura suja o cinza-azulado do tema escuro. */
.active-dark-mode .rbt-hist-abertura__fundo {
  background:
    radial-gradient(circle at 94% 4%, rgba(155, 193, 49, .06) 0 22%, transparent 22.4%),
    radial-gradient(circle at 0% 88%, rgba(34, 115, 195, .12) 0 26%, transparent 26.4%);
}

/* O corpo de texto usa os cinzas do manual, que somem sobre fundo escuro:
   como são custom properties, remapear no container basta (mesma solução das
   demais páginas internas). */
.active-dark-mode .rbt-hist-abertura,
.active-dark-mode .rbt-hist-tempo,
.active-dark-mode .rbt-hist-valores-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .45);
}

/* =========================================================================
   Movimento
   Entrada por scroll nativo, protegida por @supports: onde o recurso não
   existe o conteúdo simplesmente aparece — nunca fica invisível esperando
   JavaScript. `rbtEntra` está definido na seção da Proposta Pedagógica.
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    /* A régua se preenche conforme entra na tela — com duração fixa no load
       ela terminaria antes de o leitor chegar até aqui. */
    .rbt-hist-regua__preenchimento {
      animation: rbtHistRegua linear both;
      animation-timeline: view();
      animation-range: entry 30% cover 42%;
    }

    .rbt-hist-marco__cartao,
    .rbt-hist-aparte__caixa,
    .rbt-hist-valor,
    .rbt-hist-mv__cartao,
    .rbt-hist-numeros li {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 24%;
    }
  }
}

@keyframes rbtHistRegua {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* =========================================================================
   Telas menores
   ========================================================================= */

@media (max-width: 1199px) {
  .rbt-hist-regua { padding: 0 40px; }
  .rbt-hist-marco { grid-template-columns: 1fr 90px 1fr; }
}

@media (max-width: 991px) {
  .rbt-hist-abertura { padding: 60px 0 68px; }
  .rbt-hist-abertura__grade { grid-template-columns: 1fr; gap: 34px; }
  .rbt-hist-abertura__foto { border-radius: 20px 20px 20px 64px; }
  .rbt-hist-abertura__medalha { width: 84px; height: 84px; left: 16px; top: 16px; }
  .rbt-hist-abertura__medalha strong { font-size: 32px; }
  .rbt-hist-numeros { grid-template-columns: 1fr; gap: 18px; margin-top: 40px; padding-top: 30px; }
  .rbt-hist-numeros li { padding-left: 0; border-left: 0; }

  .rbt-hist-tempo { padding: 62px 0 72px; }
  .rbt-hist-cab { margin-bottom: 40px; }
  /* Entre 768 e 991px a régua ainda aparece, mas os três primeiros anos se
     aproximam: o texto encolhe para os rótulos não se tocarem. */
  .rbt-hist-regua { margin-bottom: 60px; }
  .rbt-hist-regua__ano { font-size: 15px; }
  .rbt-hist-regua__rotulo { font-size: 12px; }

  /* O trilho sai do centro e vai para a margem: em tela estreita o
     zigue-zague deixaria os cartões com metade da largura útil. */
  .rbt-hist-trilho::before { left: 29px; }
  .rbt-hist-marco,
  .rbt-hist-marco--esq,
  .rbt-hist-marco--dir { grid-template-columns: 58px 1fr; gap: 20px; align-items: start; margin-bottom: 34px; }
  .rbt-hist-marco__no { grid-column: 1; }
  .rbt-hist-marco--esq .rbt-hist-marco__cartao,
  .rbt-hist-marco--dir .rbt-hist-marco__cartao { grid-column: 2; }
  .rbt-hist-marco__no::before,
  .rbt-hist-marco--esq .rbt-hist-marco__no::before,
  .rbt-hist-marco--dir .rbt-hist-marco__no::before { left: 100%; right: auto; width: 20px; }
  .rbt-hist-aparte { padding-left: 78px; }
  .rbt-hist-aparte__caixa { max-width: none; }
  .rbt-hist-hoje { align-items: flex-start; text-align: left; }
  .rbt-hist-hoje .rbt-hist-marco__no--hoje { margin-left: 0; }

  .rbt-hist-mv { padding: 66px 0 72px; }
  .rbt-hist-mv__grade { grid-template-columns: 1fr; gap: 34px; }
  .rbt-hist-mv__intro { position: static; }
  .rbt-hist-valores-area { padding: 62px 0 72px; }
  .rbt-hist-valores { grid-template-columns: repeat(2, 1fr); }
  .rbt-hist-valor,
  .rbt-hist-valor:nth-child(4),
  .rbt-hist-valor:nth-child(5) { grid-column: span 1; }
}

@media (max-width: 767px) {
  /* A régua depende de largura para ser lida em escala; no celular a própria
     lista de marcos já é a linha do tempo. */
  .rbt-hist-regua { display: none; }
}

@media (max-width: 575px) {
  .rbt-hist-abertura__acoes .rbt-hero__cta { width: 100%; justify-content: center; }
  .rbt-hist-marco__corpo { padding: 30px 22px 26px; }
  /* O recuo do aparte acompanha o dos cartões (nó + gap): sem ele a caixa
     passaria por cima do trilho e a linha do tempo ficaria interrompida. */
  .rbt-hist-aparte__caixa { padding: 30px 20px 26px; }
  .rbt-hist-aparte__caixa::before { font-size: 64px; left: 18px; }
  .rbt-hist-mv__cartao { padding: 32px 26px 34px; }
  .rbt-hist-valores { grid-template-columns: 1fr; }
  .rbt-hist-valor { padding: 30px 24px 28px; }
}

/* =========================================================================
   Proposta Pedagógica (página)
   O assunto é método — como se aprende aqui —, então a página é montada como
   um método: o princípio, as quatro bases, o que elas produzem no estudante e
   onde isso acontece. A bússola dos pilares cumpre o mesmo papel da régua do
   tempo na Nossa História: um resumo navegável antes do detalhe.

   Todas as classes usam o prefixo `rbt-prop-`. `.rbt-pilar`, `.rbt-pilares`,
   `.rbt-marco` e `.rbt-proposta-*` já pertencem à seção Proposta Pedagógica da
   HOME; como este arquivo é anexado no fim, repetir um nome quebraria aquele
   componente no site inteiro.
   ========================================================================= */

/* ---- Peças comuns: selo e cabeçalho de seção -------------------------- */

.rbt-prop-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-prop-selo i { font-size: 14px; }
.rbt-prop-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-prop-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-prop-cab { max-width: 760px; margin: 0 auto 54px; text-align: center; }
.rbt-prop-cab h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.16;
  letter-spacing: -.018em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
/* Grifo amarelo sob a palavra-chave — o mesmo recurso do hero e da história. */
.rbt-prop-cab h2 em,
.rbt-prop-abertura__titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-prop-cab > p { margin: 16px auto 0; max-width: 620px; color: var(--habitat-cinza-60); font-size: 16.5px; }

/* =========================================================================
   Abertura
   ========================================================================= */

.rbt-prop-abertura {
  position: relative;
  overflow: hidden;
  padding: 84px 0 88px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 55%, #FFFFFF 100%);
}
.rbt-prop-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 6% 6%, rgba(155, 193, 49, .13) 0 20%, transparent 20.4%),
    radial-gradient(circle at 96% 84%, rgba(1, 49, 97, .07) 0 26%, transparent 26.4%);
}
.rbt-prop-abertura .container { position: relative; z-index: 1; }

.rbt-prop-abertura__grade {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: 56px;
  align-items: center;
}

.rbt-prop-abertura__titulo {
  margin: 0 0 20px;
  font-size: clamp(29px, 3.8vw, 48px);
  line-height: 1.12;
  letter-spacing: -.022em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-prop-abertura__lide {
  margin: 0 0 16px;
  font-size: 17px;
  line-height: 1.72;
  color: var(--habitat-cinza-80);
  max-width: 56ch;
}
.rbt-prop-abertura__texto {
  margin: 0 0 30px;
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--habitat-cinza-60);
  max-width: 56ch;
}
.rbt-prop-abertura__acoes { display: flex; flex-wrap: wrap; gap: 12px; }

/* A moldura repete o recorte do hero, espelhado: mesma família, outra página. */
.rbt-prop-abertura__foto {
  position: relative;
  margin: 0;
  border-radius: 26px 26px 90px 26px;
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(16, 38, 56, .12), 0 40px 80px rgba(16, 38, 56, .10);
}
.rbt-prop-abertura__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 11;
  object-fit: cover;
}
.rbt-prop-abertura__legenda {
  position: absolute;
  left: 18px;
  bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: rgba(2, 28, 55, .72);
  color: #fff;
  font-size: 12.5px;
  padding: 7px 14px;
  border-radius: 500px;
  backdrop-filter: blur(4px);
}
.rbt-prop-abertura__legenda i { color: var(--habitat-verde); font-size: 14px; }

/* ---- Contagem do que vem a seguir ------------------------------------- */

.rbt-prop-numeros {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
  list-style: none;
  padding: 38px 0 0;
  margin: 58px 0 0;
  border-top: 1px solid var(--color-border);
}
.rbt-prop-numeros li {
  display: grid;
  grid-template-columns: 46px auto 1fr;
  align-items: center;
  gap: 16px;
  padding-left: 30px;
  border-left: 1px solid var(--color-border);
}
.rbt-prop-numeros li:first-child { padding-left: 0; border-left: 0; }
.rbt-prop-numeros i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 20px;
}
.rbt-prop-numeros strong {
  font-family: var(--font-secondary);
  font-size: clamp(34px, 3.4vw, 44px);
  font-weight: 800;
  line-height: 1;
  color: var(--habitat-azul);
  font-variant-numeric: tabular-nums;
}
.rbt-prop-numeros span {
  display: flex;
  flex-direction: column;
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  line-height: 1.3;
}
.rbt-prop-numeros small { font-family: var(--font-primary); font-weight: 400; font-size: 12.5px; color: var(--habitat-cinza-60); margin-top: 3px; }

/* =========================================================================
   Pilares: bússola + zigue-zague
   ========================================================================= */

/* `scroll-margin` porque o cabeçalho é fixo e transparente: sem isso a âncora
   joga o título do pilar para trás do menu. */
.rbt-prop-pilares-area { padding: 90px 0 100px; background: #fff; scroll-margin-top: 100px; }

/* ---- Bússola ---------------------------------------------------------- */

.rbt-prop-bussola {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  margin-bottom: 86px;
}
.rbt-prop-bussola__item {
  position: relative;
  overflow: hidden;
  display: block;
  padding: 26px 24px 26px;
  border-radius: 20px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-prop-bussola__item::before {
  content: "";
  position: absolute;
  left: 0; top: 0; right: 0;
  height: 3px;
  background: var(--habitat-verde);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s ease;
}
.rbt-prop-bussola__item:hover,
.rbt-prop-bussola__item:focus-visible {
  transform: translateY(-4px);
  border-color: var(--color-primary-alt);
  box-shadow: 0 18px 36px rgba(16, 38, 56, .10);
}
.rbt-prop-bussola__item:hover::before,
.rbt-prop-bussola__item:focus-visible::before { transform: scaleX(1); }

.rbt-prop-bussola__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 22px;
  transition: background .3s ease, color .3s ease;
}
.rbt-prop-bussola__item:hover .rbt-prop-bussola__icone { background: var(--habitat-verde); color: var(--habitat-cinza-80); }
.rbt-prop-bussola__num {
  position: absolute;
  right: 20px;
  top: 14px;
  font-family: var(--font-secondary);
  font-size: 46px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
}
.rbt-prop-bussola__item strong {
  display: block;
  margin-top: 18px;
  font-family: var(--font-secondary);
  font-size: 17px;
  line-height: 1.3;
  color: var(--habitat-azul-escuro);
}
.rbt-prop-bussola__item small {
  display: block;
  margin-top: 7px;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--habitat-cinza-60);
}

/* ---- Cada pilar ------------------------------------------------------- */

.rbt-prop-pilares { display: grid; gap: 90px; }

.rbt-prop-pilar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
  scroll-margin-top: 120px;
}
.rbt-prop-pilar--inv .rbt-prop-pilar__foto { order: 2; }

/* A figura NÃO esconde o transbordo: a marca circular do pilar sai da foto e
   cobre a quina, que é o que costura a imagem ao texto. Quem arredonda é a
   própria imagem. */
.rbt-prop-pilar__foto { position: relative; margin: 0; }
.rbt-prop-pilar__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 26px 26px 90px 26px;
  box-shadow: 0 18px 38px rgba(16, 38, 56, .12);
}
.rbt-prop-pilar--inv .rbt-prop-pilar__foto img { border-radius: 26px 26px 26px 90px; }
.rbt-prop-pilar__marca {
  position: absolute;
  right: -22px;
  top: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 74px;
  height: 74px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 30px;
  box-shadow: 0 12px 26px rgba(2, 30, 54, .22);
}
.rbt-prop-pilar--inv .rbt-prop-pilar__marca { right: auto; left: -22px; }

.rbt-prop-pilar__corpo { position: relative; }
/* Tudo que é texto sobe uma camada: o número é marca d'água, não conteúdo. */
.rbt-prop-pilar__corpo > *:not(.rbt-prop-pilar__num) { position: relative; z-index: 1; }
.rbt-prop-pilar__num {
  position: absolute;
  right: 0;
  top: -34px;
  z-index: 0;
  font-family: var(--font-secondary);
  font-size: clamp(76px, 8vw, 118px);
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
  pointer-events: none;
}
.rbt-prop-pilar__rotulo {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--habitat-azul);
}
.rbt-prop-pilar__corpo h3 {
  margin: 12px 0 18px;
  font-size: clamp(24px, 2.8vw, 33px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: var(--habitat-azul-escuro);
}
/* A frase-chave é editorial: resume o pilar antes do texto oficial, e o fio
   amarelo marca que ela não é parte do parágrafo. */
.rbt-prop-pilar__chave {
  margin: 0 0 22px;
  padding-left: 18px;
  border-left: 3px solid var(--habitat-verde);
  font-family: var(--font-secondary);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.45;
  color: var(--habitat-azul);
}
.rbt-prop-pilar__corpo p { font-size: 16px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-prop-pilar__corpo p:last-child { margin-bottom: 0; }

/* =========================================================================
   Competências
   ========================================================================= */

.rbt-prop-comp-area { padding: 90px 0 100px; background: linear-gradient(180deg, #FFFFFF 0%, var(--color-primary-light) 100%); }

.rbt-prop-comps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }

.rbt-prop-comp {
  display: flex;
  flex-direction: column;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-prop-comp:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .12); }

.rbt-prop-comp__foto {
  position: relative;
  margin: 0;
  border-radius: 21px 21px 0 0;
  overflow: hidden;
}
/* `width: 100%` é obrigatório: com srcset + sizes a largura intrínseca da
   imagem passa a ser a do `sizes` e o card ficaria com faixa vazia. */
.rbt-prop-comp__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  transition: transform .5s ease;
}
.rbt-prop-comp:hover .rbt-prop-comp__foto img { transform: scale(1.04); }

/* O ícone é ancorado no CORPO e sobe metade da altura: dentro da figura, que
   precisa de `overflow: hidden` por causa do zoom, ele saía cortado ao meio.
   O anel branco separa o amarelo da foto — a primeira delas tem parede
   amarela e o ícone sumia nela. */
.rbt-prop-comp__icone {
  position: absolute;
  left: 22px;
  top: -26px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 16px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 22px;
  border: 4px solid #fff;
  box-shadow: 0 10px 22px rgba(2, 30, 54, .18);
}

.rbt-prop-comp__corpo { position: relative; padding: 44px 26px 28px; }
.rbt-prop-comp__num {
  position: absolute;
  right: 22px;
  top: 18px;
  font-family: var(--font-secondary);
  font-size: 34px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
}
.rbt-prop-comp__corpo h3 { margin: 0 0 10px; font-size: 20px; line-height: 1.3; color: var(--habitat-azul-escuro); }
.rbt-prop-comp__corpo p { margin: 0; font-size: 15px; line-height: 1.72; color: var(--habitat-cinza-80); }

/* =========================================================================
   Etapas — o bloco escuro da página
   Mesmo gesto da Proposta Pedagógica na home (azul + arcos concêntricos + fio
   amarelo/vermelho): quem navega reconhece a mudança de assunto.
   ========================================================================= */

.rbt-prop-etapas-area {
  position: relative;
  overflow: hidden;
  padding: 100px 0 104px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-prop-etapas-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-prop-etapas__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-prop-etapas__conteudo { position: relative; z-index: 1; }

.rbt-prop-etapas__intro { max-width: 720px; margin: 0 auto 54px; text-align: center; }
.rbt-prop-etapas__intro h2 {
  margin: 0;
  font-size: clamp(28px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.018em;
  color: #fff;
  text-wrap: balance;
}
/* Sobre o azul o grifo translúcido esverdeia: o destaque é o amarelo sólido. */
.rbt-prop-etapas__intro h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-prop-etapas__intro p { margin: 16px auto 0; max-width: 600px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .8); }

.rbt-prop-etapas { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; }

.rbt-prop-etapa {
  display: flex;
  flex-direction: column;
  border-radius: 20px;
  overflow: hidden;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  transition: transform .35s ease, background .35s ease, border-color .35s ease;
}
.rbt-prop-etapa:hover,
.rbt-prop-etapa:focus-visible { transform: translateY(-6px); background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .45); }

.rbt-prop-etapa__foto { position: relative; display: block; }
.rbt-prop-etapa__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.rbt-prop-etapa__ordem {
  position: absolute;
  left: 12px;
  top: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 800;
}

.rbt-prop-etapa__corpo { display: flex; flex-direction: column; gap: 4px; padding: 18px 20px 20px; }
.rbt-prop-etapa__corpo strong { font-family: var(--font-secondary); font-size: 17px; line-height: 1.25; color: #fff; }
/* .92 e não .72 (o valor de apoio usado no resto do site): medido sobre o
   cartão translúcido, .72 dá 3,7:1 e este texto tem 13px — abaixo do mínimo. */
.rbt-prop-etapa__corpo small { font-size: 13px; color: rgba(255, 255, 255, .92); }
/* O texto do link é branco, não amarelo: amarelo institucional sobre o azul
   fica em ~3:1, abaixo do mínimo para texto pequeno. O acento amarelo fica na
   seta, que é decorativa. */
.rbt-prop-etapa__link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 12px;
  font-family: var(--font-secondary);
  font-size: 13.5px;
  font-weight: 600;
  color: #fff;
}
.rbt-prop-etapa__link i { color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-prop-etapa:hover .rbt-prop-etapa__link i { transform: translateX(4px); }

/* O CTA final não tem padding no topo (nas páginas de curso quem dá o respiro
   é a seção anterior). Depois do bloco azul, o cartão amarelo encostava no
   azul sem folga nenhuma. */
.rbt-prop-etapas-area + .rbt-curso__cta { padding-top: 76px; }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-prop-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-prop-pilares-area { background: var(--color-darkest); }
.active-dark-mode .rbt-prop-comp-area { background: linear-gradient(180deg, var(--color-darkest) 0%, var(--color-darker) 100%); }

.active-dark-mode .rbt-prop-abertura__titulo,
.active-dark-mode .rbt-prop-cab h2,
.active-dark-mode .rbt-prop-bussola__item strong,
.active-dark-mode .rbt-prop-pilar__corpo h3,
.active-dark-mode .rbt-prop-comp__corpo h3 { color: var(--color-white-dark); }

.active-dark-mode .rbt-prop-selo { color: var(--habitat-verde); }
.active-dark-mode .rbt-prop-selo--claro,
.active-dark-mode .rbt-prop-numeros i,
.active-dark-mode .rbt-prop-bussola__icone { background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); color: var(--habitat-verde); }
.active-dark-mode .rbt-prop-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-prop-bussola__item,
.active-dark-mode .rbt-prop-comp { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }

/* Números grandes: o azul institucional fica em 2,5:1 sobre o fundo escuro —
   abaixo do mínimo até para texto grande. O azul-claro de apoio passa (3,7:1)
   e mantém a cor da marca. Vale para a Nossa História pelo mesmo motivo. */
.active-dark-mode .rbt-prop-numeros strong,
.active-dark-mode .rbt-hist-numeros strong { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-prop-numeros,
.active-dark-mode .rbt-prop-numeros li { border-color: var(--dark-color-border-2); }

/* Os números-marca-d'água usam o azul mais claro do tema, que no escuro vira
   um bloco sólido por cima do fundo: aqui eles voltam a ser marca d'água. */
.active-dark-mode .rbt-prop-bussola__num,
.active-dark-mode .rbt-prop-pilar__num,
.active-dark-mode .rbt-prop-comp__num { color: rgba(255, 255, 255, .10); }

/* O azul institucional sobre o fundo escuro fica em ~2,4:1. O kicker vai para
   o amarelo e a frase-chave para o branco do tema — o fio amarelo à esquerda
   continua marcando que ela não é o parágrafo. */
.active-dark-mode .rbt-prop-pilar__rotulo { color: var(--habitat-verde); }
.active-dark-mode .rbt-prop-pilar__chave { color: var(--color-white-dark); }
/* O anel do ícone imita o fundo do card: branco, no escuro, viraria um aro. */
.active-dark-mode .rbt-prop-comp__icone { border-color: var(--color-darker); }

/* O grifo translúcido só funciona sobre fundo claro: no escuro ele vira uma
   faixa oliva e ainda joga texto azul sobre amarelo. */
.active-dark-mode .rbt-prop-cab h2 em,
.active-dark-mode .rbt-prop-abertura__titulo em { color: var(--habitat-verde); background: none; }

/* O halo amarelo do fundo da abertura suja o cinza-azulado do tema escuro. */
.active-dark-mode .rbt-prop-abertura__fundo {
  background:
    radial-gradient(circle at 6% 6%, rgba(155, 193, 49, .06) 0 20%, transparent 20.4%),
    radial-gradient(circle at 96% 84%, rgba(34, 115, 195, .12) 0 26%, transparent 26.4%);
}

/* Os cinzas do manual somem sobre fundo escuro; como são custom properties,
   remapear no container de cada bloco basta (mesma solução das demais páginas
   internas). O bloco azul das etapas não entra: lá a cor já é branca. */
.active-dark-mode .rbt-prop-abertura,
.active-dark-mode .rbt-prop-pilares-area,
.active-dark-mode .rbt-prop-comp-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .45);
}

/* =========================================================================
   Movimento
   Entrada por scroll nativo, protegida por @supports: onde o recurso não
   existe o conteúdo simplesmente aparece — nunca fica invisível esperando
   JavaScript. `rbtEntra` está definido na seção da Proposta Pedagógica (home).
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-prop-numeros li,
    .rbt-prop-bussola__item,
    .rbt-prop-pilar__foto,
    .rbt-prop-pilar__corpo,
    .rbt-prop-comp,
    .rbt-prop-etapa {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 24%;
    }
  }
}

/* =========================================================================
   Telas menores
   ========================================================================= */

@media (max-width: 1199px) {
  .rbt-prop-bussola { grid-template-columns: repeat(2, 1fr); }
  .rbt-prop-pilar { gap: 40px; }
  .rbt-prop-etapas { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 991px) {
  .rbt-prop-abertura { padding: 60px 0 68px; }
  .rbt-prop-abertura__grade { grid-template-columns: 1fr; gap: 34px; }
  .rbt-prop-abertura__foto { border-radius: 20px 20px 64px 20px; }
  .rbt-prop-numeros { grid-template-columns: 1fr; gap: 18px; margin-top: 40px; padding-top: 30px; }
  .rbt-prop-numeros li { padding-left: 0; border-left: 0; }

  .rbt-prop-pilares-area { padding: 62px 0 72px; }
  .rbt-prop-cab { margin-bottom: 40px; }
  .rbt-prop-bussola { margin-bottom: 56px; }
  .rbt-prop-pilares { gap: 62px; }

  /* Em coluna única a foto vem sempre primeiro: o zigue-zague só existe
     enquanto há duas colunas para alternar. */
  .rbt-prop-pilar,
  .rbt-prop-pilar--inv { grid-template-columns: 1fr; gap: 26px; }
  .rbt-prop-pilar--inv .rbt-prop-pilar__foto { order: 0; }
  .rbt-prop-pilar__foto img,
  .rbt-prop-pilar--inv .rbt-prop-pilar__foto img { border-radius: 20px 20px 64px 20px; }
  .rbt-prop-pilar__marca,
  .rbt-prop-pilar--inv .rbt-prop-pilar__marca { right: 16px; left: auto; top: auto; bottom: -26px; width: 62px; height: 62px; font-size: 25px; }
  .rbt-prop-pilar__num { top: -26px; }

  .rbt-prop-comp-area { padding: 62px 0 72px; }
  .rbt-prop-comps { grid-template-columns: repeat(2, 1fr); }

  .rbt-prop-etapas-area { padding: 66px 0 72px; }
}

@media (max-width: 767px) {
  .rbt-prop-etapas { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 575px) {
  .rbt-prop-abertura__acoes .rbt-hero__cta { width: 100%; justify-content: center; }
  .rbt-prop-bussola { grid-template-columns: 1fr; }
  .rbt-prop-comps { grid-template-columns: 1fr; }
  .rbt-prop-etapas { grid-template-columns: 1fr; }
  /* Em uma coluna o cartão da etapa vira linha: foto pequena à esquerda, texto
     à direita — cinco fotos 4/3 empilhadas viravam uma rolagem só de imagem. */
  .rbt-prop-etapa { flex-direction: row; align-items: stretch; }
  .rbt-prop-etapa__foto { flex: 0 0 118px; }
  .rbt-prop-etapa__foto img { height: 100%; aspect-ratio: auto; }
  .rbt-prop-etapa__corpo { justify-content: center; padding: 16px 18px; }
  /* O número da marca d'água encosta no título quando a coluna estreita. */
  .rbt-prop-pilar__num { font-size: 64px; top: -20px; opacity: .8; }
}

/* =========================================================================
   Cursos — a trajetória das cinco etapas
   O assunto é uma sequência de 18 anos na mesma escola, então a página abre
   pela régua: as cinco etapas desenhadas na escala real de idade, cada faixa
   com a largura dos anos que dura. Depois as etapas na ordem em que são
   percorridas, ligadas por um conector — aqui não há zigue-zague, porque a
   leitura é uma linha só. O bloco escuro guarda o que NÃO muda entre elas.

   Prefixo `rbt-trilha-`: `.rbt-etapa*` era o desenho antigo desta página e
   `.rbt-curso__*` pertence às cinco páginas de etapa.
   ========================================================================= */

/* ---- Peças comuns ----------------------------------------------------- */

.rbt-trilha-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-trilha-selo i { font-size: 14px; }
.rbt-trilha-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-trilha-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* =========================================================================
   Abertura + régua das etapas
   ========================================================================= */

.rbt-trilha-abertura {
  position: relative;
  overflow: hidden;
  padding: 80px 0 92px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-trilha-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 82% 0%, rgba(1, 49, 97, .10), transparent 46%),
    radial-gradient(circle at 10% 96%, rgba(155, 193, 49, .16), transparent 42%);
}
.rbt-trilha-abertura .container { position: relative; z-index: 1; }

/* Centralizada de propósito: as outras páginas internas abrem em díptico, e
   aqui o elemento gráfico é a régua, que ocupa a largura inteira. */
.rbt-trilha-abertura__texto { max-width: 720px; margin: 0 auto 54px; text-align: center; }
.rbt-trilha-abertura__titulo {
  margin: 0 0 18px;
  font-size: clamp(28px, 3.7vw, 46px);
  line-height: 1.13;
  letter-spacing: -.022em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-trilha-abertura__titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-trilha-abertura__lide { margin: 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

/* ---- Régua ------------------------------------------------------------ */

/* A régua respira um pouco menos que o container: encostada nas bordas ela
   parecia uma barra de progresso da página, não das etapas. */
.rbt-trilha-regua { padding: 0 8px; }

/* As colunas vêm do PHP (`3fr 3fr 5fr 4fr 3fr`): a largura de cada faixa é o
   número de anos que a etapa dura. Se fossem iguais, a régua mentiria. */
.rbt-trilha-regua__barra { display: grid; gap: 10px; }

.rbt-trilha-regua__faixa {
  position: relative;
  display: block;
  padding: 16px 14px 18px;
  border-radius: 16px;
  border: 1px solid transparent;
  transition: background .3s ease, border-color .3s ease, transform .3s ease;
}
.rbt-trilha-regua__faixa:hover,
.rbt-trilha-regua__faixa:focus-visible {
  background: #fff;
  border-color: var(--color-primary-alt);
  transform: translateY(-4px);
}

/* O traço é a etapa desenhada na escala: escurece do berçário ao ensino médio,
   o que dá a leitura de progressão sem precisar de legenda. */
.rbt-trilha-regua__traco {
  display: block;
  height: 12px;
  border-radius: 500px;
  margin-bottom: 16px;
  transition: height .3s ease;
}
.rbt-trilha-regua__faixa:hover .rbt-trilha-regua__traco { height: 18px; }
.rbt-trilha-regua__faixa--1 .rbt-trilha-regua__traco { background: #4996E3; }
.rbt-trilha-regua__faixa--2 .rbt-trilha-regua__traco { background: #216BB5; }
.rbt-trilha-regua__faixa--3 .rbt-trilha-regua__traco { background: var(--habitat-azul-claro); }
.rbt-trilha-regua__faixa--4 .rbt-trilha-regua__traco { background: var(--habitat-azul); }
.rbt-trilha-regua__faixa--5 .rbt-trilha-regua__traco { background: var(--habitat-azul-escuro); }

.rbt-trilha-regua__ordem {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-size: 13px;
  font-weight: 800;
  margin-bottom: 10px;
}
.rbt-trilha-regua__faixa strong {
  display: block;
  font-family: var(--font-secondary);
  font-size: 16px;
  line-height: 1.25;
  color: var(--habitat-azul-escuro);
}
.rbt-trilha-regua__faixa small { display: block; margin-top: 5px; font-size: 13px; color: var(--habitat-cinza-60); }

.rbt-trilha-regua__eixo {
  position: relative;
  height: 30px;
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
}
.rbt-trilha-regua__eixo span {
  position: absolute;
  top: 12px;
  transform: translateX(-50%);
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--habitat-cinza-60);
  font-variant-numeric: tabular-nums;
}
/* A primeira e a última marca encostariam na borda do container. */
.rbt-trilha-regua__eixo span:first-of-type { transform: none; }
.rbt-trilha-regua__eixo span:nth-last-of-type(1) { transform: translateX(-100%); }
.rbt-trilha-regua__eixo em {
  position: absolute;
  right: 0;
  top: -22px;
  font-style: normal;
  font-size: 12px;
  color: var(--habitat-cinza-40);
}

/* =========================================================================
   As cinco etapas
   ========================================================================= */

.rbt-trilha-etapas { padding: 86px 0 96px; background: #fff; }

.rbt-trilha-etapa {
  position: relative;
  display: grid;
  grid-template-columns: 420px 1fr;
  gap: 40px;
  align-items: center;
  margin-bottom: 78px;
  scroll-margin-top: 120px;
}
.rbt-trilha-etapa:last-child { margin-bottom: 0; }

/* Conector: a linha que sai da foto e desce até a etapa seguinte — é o que
   diz que as cinco são uma trajetória, e não cinco produtos de catálogo. */
.rbt-trilha-etapa:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 210px;
  top: 100%;
  width: 2px;
  height: 78px;
  background: linear-gradient(180deg, var(--color-primary-alt) 0 60%, transparent 60%);
  background-size: 2px 12px;
  background-repeat: repeat-y;
}

.rbt-trilha-etapa__foto {
  position: relative;
  display: block;
  border-radius: 24px 24px 24px 70px;
  overflow: hidden;
  box-shadow: 0 16px 34px rgba(16, 38, 56, .12);
}
.rbt-trilha-etapa__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform .5s ease;
}
.rbt-trilha-etapa__foto:hover img { transform: scale(1.04); }
.rbt-trilha-etapa__ordem {
  position: absolute;
  left: 18px;
  top: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 800;
  font-size: 18px;
  box-shadow: 0 8px 18px rgba(2, 30, 54, .22);
}

.rbt-trilha-etapa__faixa {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 6px 14px;
}
.rbt-trilha-etapa__corpo h2 { margin: 16px 0 0; font-size: clamp(24px, 3vw, 33px); line-height: 1.18; letter-spacing: -.015em; }
.rbt-trilha-etapa__corpo h2 a { color: var(--habitat-azul-escuro); transition: color .25s ease; }
.rbt-trilha-etapa__corpo h2 a:hover { color: var(--habitat-azul); }
.rbt-trilha-etapa__corpo > p { margin-top: 12px; margin-bottom: 0; max-width: 620px; font-size: 16.5px; line-height: 1.72; color: var(--habitat-cinza-80); }

.rbt-trilha-etapa__temas { list-style: none; padding: 0; margin: 20px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rbt-trilha-etapa__temas li {
  font-size: 13px;
  color: var(--habitat-cinza-60);
  border: 1px solid var(--color-border);
  border-radius: 500px;
  padding: 6px 13px;
}

/* =========================================================================
   Serviços adicionais
   ========================================================================= */

.rbt-trilha-servicos-area { padding: 0 0 96px; background: #fff; }

.rbt-trilha-servicos {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  gap: 44px;
  align-items: center;
  padding: 44px 48px;
  border-radius: 26px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
}
.rbt-trilha-servicos__texto h2 { margin: 0; font-size: clamp(22px, 2.4vw, 28px); line-height: 1.25; color: var(--habitat-azul-escuro); }
.rbt-trilha-servicos__texto p { margin: 12px 0 0; font-size: 15.5px; line-height: 1.7; color: var(--habitat-cinza-80); }

.rbt-trilha-servicos__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
/* O <a> tem TRÊS filhos (ícone, nome, legenda) numa grade de duas colunas: sem
   posicionar, a legenda caía na coluna do ícone e quebrava palavra por palavra. */
.rbt-trilha-servicos__lista a {
  display: grid;
  grid-template-columns: 46px 1fr;
  grid-template-rows: auto auto;
  align-items: center;
  column-gap: 16px;
  padding: 16px 20px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid transparent;
  transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.rbt-trilha-servicos__lista a:hover { border-color: var(--habitat-azul); transform: translateX(4px); box-shadow: 0 12px 26px rgba(16, 38, 56, .08); }
.rbt-trilha-servicos__lista i {
  grid-row: 1 / span 2;
  align-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 20px;
}
.rbt-trilha-servicos__lista strong { grid-column: 2; align-self: end; font-family: var(--font-secondary); font-size: 16px; color: var(--habitat-azul-escuro); }
.rbt-trilha-servicos__lista small { grid-column: 2; align-self: start; display: block; margin-top: 3px; font-size: 13px; color: var(--habitat-cinza-60); }

/* =========================================================================
   O que não muda — o bloco escuro da página
   ========================================================================= */

.rbt-trilha-comum-area {
  position: relative;
  overflow: hidden;
  padding: 96px 0 100px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-trilha-comum-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-trilha-comum__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-trilha-comum__conteudo { position: relative; z-index: 1; }

.rbt-trilha-comum__intro { max-width: 700px; margin: 0 auto 52px; text-align: center; }
.rbt-trilha-comum__intro h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.018em;
  color: #fff;
  text-wrap: balance;
}
/* Sobre o azul o grifo translúcido esverdeia: o destaque é o amarelo sólido. */
.rbt-trilha-comum__intro h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-trilha-comum__intro p { margin: 16px auto 0; max-width: 580px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .84); }

.rbt-trilha-comum { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }

.rbt-trilha-const {
  display: flex;
  flex-direction: column;
  padding: 30px 26px 28px;
  border-radius: 22px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  transition: transform .35s ease, background .35s ease, border-color .35s ease;
}
.rbt-trilha-const:hover { transform: translateY(-5px); background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .42); }
.rbt-trilha-const__icone {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 16px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 23px;
  margin-bottom: 20px;
}
.rbt-trilha-const h3 { margin: 0 0 10px; font-size: 19px; line-height: 1.3; color: #fff; }
/* Branco a 92%: medido sobre o cartão translúcido, os 72% de apoio usados no
   resto do site ficam em 3,7:1 — abaixo do mínimo para texto de 15px. */
.rbt-trilha-const p { margin: 0; font-size: 15px; line-height: 1.72; color: rgba(255, 255, 255, .92); }
.rbt-trilha-const__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  padding-top: 18px;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 600;
  color: #fff;
}
/* O amarelo institucional sobre o azul fica em ~3:1: ele é o acento da seta,
   não a cor do texto. */
.rbt-trilha-const__link i { color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-trilha-const__link:hover { color: #fff; }
.rbt-trilha-const__link:hover i { transform: translateX(4px); }

/* O CTA final não tem padding no topo (nas páginas de curso quem dá o respiro
   é a seção anterior); depois do bloco azul ele encostaria. */
.rbt-trilha-comum-area + .rbt-curso__cta { padding-top: 76px; }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-trilha-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-trilha-etapas,
.active-dark-mode .rbt-trilha-servicos-area { background: var(--color-darkest); }

.active-dark-mode .rbt-trilha-abertura__titulo,
.active-dark-mode .rbt-trilha-regua__faixa strong,
.active-dark-mode .rbt-trilha-etapa__corpo h2 a,
.active-dark-mode .rbt-trilha-servicos__texto h2,
.active-dark-mode .rbt-trilha-servicos__lista strong { color: var(--color-white-dark); }

.active-dark-mode .rbt-trilha-selo { color: var(--habitat-verde); }
.active-dark-mode .rbt-trilha-selo--claro,
.active-dark-mode .rbt-trilha-servicos__lista i { background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); color: var(--habitat-verde); }
.active-dark-mode .rbt-trilha-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* No tema escuro a escala se inverte: começar claro e terminar em #011E3D
   faria a última etapa sumir no fundo. A progressão passa a ser de brilho. */
.active-dark-mode .rbt-trilha-regua__faixa--1 .rbt-trilha-regua__traco { background: rgba(255, 255, 255, .16); }
.active-dark-mode .rbt-trilha-regua__faixa--2 .rbt-trilha-regua__traco { background: #0B2F53; }
.active-dark-mode .rbt-trilha-regua__faixa--3 .rbt-trilha-regua__traco { background: var(--habitat-azul-claro); }
.active-dark-mode .rbt-trilha-regua__faixa--4 .rbt-trilha-regua__traco { background: #1A71C7; }
.active-dark-mode .rbt-trilha-regua__faixa--5 .rbt-trilha-regua__traco { background: #52A1EF; }

.active-dark-mode .rbt-trilha-regua__faixa:hover,
.active-dark-mode .rbt-trilha-servicos__lista a { background: rgba(255, 255, 255, .05); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-trilha-regua__eixo,
.active-dark-mode .rbt-trilha-etapa__temas li { border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-trilha-etapa:not(:last-child)::after { background: linear-gradient(180deg, rgba(255, 255, 255, .22) 0 60%, transparent 60%); background-size: 2px 12px; background-repeat: repeat-y; }

/* A faixa etária é azul sobre azul-claríssimo; no escuro os dois somem. */
.active-dark-mode .rbt-trilha-etapa__faixa { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }

.active-dark-mode .rbt-trilha-servicos {
  background: linear-gradient(150deg, rgba(255, 255, 255, .05) 0%, rgba(255, 255, 255, .03) 100%);
  border-color: var(--dark-color-border-2);
}

.active-dark-mode .rbt-trilha-abertura__titulo em { color: var(--habitat-verde); background: none; }

.active-dark-mode .rbt-trilha-abertura__fundo {
  background:
    radial-gradient(circle at 82% 0%, rgba(34, 115, 195, .16), transparent 46%),
    radial-gradient(circle at 10% 96%, rgba(155, 193, 49, .07), transparent 42%);
}

/* Os cinzas do manual somem sobre fundo escuro; como são custom properties,
   remapear no container de cada bloco basta. O bloco azul não entra: lá o
   texto já é branco. */
.active-dark-mode .rbt-trilha-abertura,
.active-dark-mode .rbt-trilha-etapas,
.active-dark-mode .rbt-trilha-servicos-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .45);
}

/* =========================================================================
   Movimento
   `rbtEntra` está definido na seção da Proposta Pedagógica (home).
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-trilha-regua__faixa,
    .rbt-trilha-etapa__foto,
    .rbt-trilha-etapa__corpo,
    .rbt-trilha-servicos,
    .rbt-trilha-const {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 24%;
    }
  }
}

/* =========================================================================
   Telas menores
   ========================================================================= */

@media (max-width: 1199px) {
  .rbt-trilha-etapa { grid-template-columns: 340px 1fr; gap: 32px; }
  .rbt-trilha-etapa:not(:last-child)::after { left: 170px; }
  .rbt-trilha-comum { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 991px) {
  .rbt-trilha-abertura { padding: 58px 0 66px; }
  .rbt-trilha-abertura__texto { margin-bottom: 40px; }

  /* Em tela estreita a escala deixaria o berçário com 150px e o texto ilegível:
     a régua vira lista, e o traço passa a ser a marca de cor de cada etapa. */
  .rbt-trilha-regua__barra { grid-template-columns: 1fr !important; gap: 12px; }
  .rbt-trilha-regua__faixa {
    display: grid;
    grid-template-columns: 26px 1fr auto;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    background: #fff;
    border-color: var(--color-border);
  }
  .rbt-trilha-regua__traco { grid-column: 1 / -1; height: 8px; margin-bottom: 4px; }
  .rbt-trilha-regua__ordem { margin-bottom: 0; }
  .rbt-trilha-regua__faixa small { margin-top: 0; text-align: right; }
  .rbt-trilha-regua__eixo { display: none; }

  .rbt-trilha-etapas { padding: 58px 0 68px; }
  .rbt-trilha-etapa,
  .rbt-trilha-etapa:not(:last-child) { grid-template-columns: 1fr; gap: 24px; margin-bottom: 56px; }
  .rbt-trilha-etapa:not(:last-child)::after { left: 50%; height: 56px; }
  .rbt-trilha-etapa__foto { border-radius: 20px 20px 20px 56px; }

  .rbt-trilha-servicos-area { padding-bottom: 68px; }
  .rbt-trilha-servicos { grid-template-columns: 1fr; gap: 28px; padding: 32px 26px; }

  .rbt-trilha-comum-area { padding: 66px 0 72px; }
}

@media (max-width: 575px) {
  .rbt-trilha-comum { grid-template-columns: 1fr; }
  .rbt-trilha-const { padding: 26px 22px 24px; }
  /* Nome e faixa etária empilham: lado a lado, "Maternal ao Jardim II" quebrava
     em três linhas ao lado do nome da etapa. */
  .rbt-trilha-regua__faixa { grid-template-columns: 26px 1fr; }
  .rbt-trilha-regua__faixa small { grid-column: 2; text-align: left; margin-top: 3px; }
}

/* =========================================================================
   Páginas de etapa (as cinco: berçário → ensino médio)
   Uma etapa é uma decisão de família e a página é longa — até nove seções.
   Por isso ela abre situando (a trajetória inteira, com a atual acesa),
   depois entrega o objetivo (faixa, unidade, horário, as duas ações), depois
   diz o que tem na página (índice por âncora) e só então desenrola o texto,
   numerado. Fecha no azul, mostrando a etapa vizinha.

   Prefixo `rbt-etp-`. O que sobrou em `rbt-curso__*` é compartilhado com
   contato, serviços, política, raniconexão e ranicast.
   ========================================================================= */

/* ---- Peças comuns ----------------------------------------------------- */

.rbt-etp-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
}
.rbt-etp-selo i { font-size: 14px; }
.rbt-etp-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); margin-bottom: 20px; }

/* =========================================================================
   Abertura
   ========================================================================= */

.rbt-etp-abertura {
  position: relative;
  overflow: hidden;
  padding: 46px 0 80px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-etp-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 92% 6%, rgba(155, 193, 49, .14), transparent 42%),
    radial-gradient(circle at 4% 92%, rgba(1, 49, 97, .09), transparent 46%);
}
.rbt-etp-abertura .container { position: relative; z-index: 1; }

/* ---- Trajetória: as cinco etapas, com a atual acesa -------------------- */

.rbt-etp-trilha {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 44px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--color-border);
}
.rbt-etp-trilha__item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 9px 16px 9px 10px;
  border-radius: 500px;
  border: 1px solid var(--color-border);
  background: #fff;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  transition: border-color .25s ease, transform .25s ease, color .25s ease;
}
.rbt-etp-trilha__item b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 12.5px;
  font-weight: 800;
}
a.rbt-etp-trilha__item:hover { border-color: var(--habitat-azul); color: var(--habitat-azul); transform: translateY(-2px); }
/* A etapa atual não é link: é o "você está aqui". */
.rbt-etp-trilha__item--atual {
  background: var(--habitat-azul);
  border-color: var(--habitat-azul);
  color: #fff;
}
.rbt-etp-trilha__item--atual b { background: var(--habitat-verde); color: var(--habitat-azul-escuro); }

/* ---- Ficha da etapa ---------------------------------------------------- */

.rbt-etp-abertura__grade {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 52px;
  align-items: center;
}

.rbt-etp-capa {
  position: relative;
  margin: 0;
  border-radius: 26px 26px 26px 90px;
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(16, 38, 56, .12), 0 40px 80px rgba(16, 38, 56, .08);
}
.rbt-etp-capa img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
/* A posição na trajetória, repetida sobre a foto: quem chega por busca cai
   direto aqui, sem passar pela página de Cursos. */
.rbt-etp-capa__ordem {
  position: absolute;
  right: 20px;
  top: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-size: 30px;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 12px 26px rgba(2, 30, 54, .26);
}
.rbt-etp-capa__ordem small { margin-top: 3px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }

/* Em grid, uma coluna com texto longo não encolhe abaixo do conteúdo sem isto
   — a foto ao lado é que acabava espremida. */
.rbt-etp-resumo { min-width: 0; }

.rbt-etp-lide {
  margin: 20px 0 0;
  font-size: clamp(18px, 2.1vw, 22px);
  line-height: 1.55;
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 500;
}

.rbt-etp-ficha { list-style: none; padding: 26px 0 0; margin: 26px 0 0; display: grid; gap: 16px; border-top: 1px solid var(--color-border); }
.rbt-etp-ficha li { display: flex; align-items: center; gap: 14px; }
.rbt-etp-ficha i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 13px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 19px;
}
/* Só o pin fica vermelho; relógio e camadas seguem azuis. A regra é o que o
   ícone APONTA (um endereço), não onde ele está. */
.rbt-etp-ficha .feather-map-pin { color: var(--habitat-azul-medio); }
.rbt-etp-ficha span { display: flex; flex-direction: column; line-height: 1.35; font-size: 14px; color: var(--habitat-cinza-60); }
.rbt-etp-ficha strong { font-family: var(--font-secondary); font-size: 14.5px; color: var(--habitat-cinza-80); }

.rbt-etp-acoes { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }

/* =========================================================================
   Conteúdo
   ========================================================================= */

.rbt-etp-conteudo { padding: 84px 0 96px; background: #fff; }

/* ---- Índice das seções ------------------------------------------------- */

.rbt-etp-indice {
  display: grid;
  grid-template-columns: 190px 1fr;
  gap: 26px;
  align-items: start;
  margin-bottom: 76px;
  padding: 26px 30px;
  border-radius: 22px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
}
.rbt-etp-indice__rotulo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
}
.rbt-etp-indice ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rbt-etp-indice a {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 8px 16px 8px 10px;
  border-radius: 500px;
  background: #fff;
  border: 1px solid var(--color-primary-alt);
  font-size: 14px;
  color: var(--habitat-cinza-80);
  transition: border-color .25s ease, transform .25s ease, color .25s ease;
}
.rbt-etp-indice a:hover { border-color: var(--habitat-azul); color: var(--habitat-azul); transform: translateY(-2px); }
.rbt-etp-indice a b {
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 800;
  color: var(--habitat-azul);
  font-variant-numeric: tabular-nums;
}

/* ---- Cada seção -------------------------------------------------------- */

/* `scroll-margin` porque o cabeçalho é fixo e transparente: sem isso a âncora
   do índice joga o título para trás do menu. */
.rbt-etp-secao { margin-bottom: 84px; scroll-margin-top: 110px; }
.rbt-etp-secao:last-child { margin-bottom: 0; }

.rbt-etp-secao__cab { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 18px; margin-bottom: 26px; }
.rbt-etp-secao__num {
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 800;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 7px 14px;
  font-variant-numeric: tabular-nums;
}
.rbt-etp-secao__cab h2 {
  position: relative;
  margin: 0;
  padding-bottom: 16px;
  font-size: clamp(24px, 3vw, 33px);
  line-height: 1.2;
  letter-spacing: -.015em;
  color: var(--habitat-azul-escuro);
}
/* O fio amarelo acompanha o título, não a coluna: em títulos de duas linhas
   ele precisa nascer embaixo do texto. */
.rbt-etp-secao__cab h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 54px;
  height: 3px;
  border-radius: 3px;
  background: var(--habitat-verde);
}

/* Coluna de leitura: texto corrido não passa de ~75 caracteres por linha. */
.rbt-etp-texto { max-width: 820px; }
.rbt-etp-texto p { font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-etp-texto p:last-child { margin-bottom: 0; }

.rbt-etp-textofoto { display: grid; grid-template-columns: 1.05fr .95fr; gap: 44px; align-items: center; }
.rbt-etp-textofoto__texto p { font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-etp-textofoto__texto p:last-child { margin-bottom: 0; }
.rbt-etp-textofoto__foto { margin: 0; }
.rbt-etp-textofoto__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 22px 22px 70px 22px;
  box-shadow: 0 16px 34px rgba(16, 38, 56, .12);
}

/* ---- Tour virtual ------------------------------------------------------ */

.rbt-etp-tour {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  margin-bottom: 84px;
  padding: 44px 48px;
  border-radius: 26px;
  background: linear-gradient(135deg, var(--habitat-azul-escuro) 0%, var(--habitat-azul) 100%);
  color: #fff;
  isolation: isolate;
}
/* Os arcos do símbolo, em pequena escala: o mesmo gesto dos blocos azuis. */
.rbt-etp-tour__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 96% 12%, rgba(255, 255, 255, .10) 0 22%, transparent 22.3%),
    radial-gradient(circle at 96% 12%, rgba(255, 255, 255, .06) 0 33%, transparent 33.3%);
}
.rbt-etp-tour__texto { max-width: 620px; }
.rbt-etp-tour h2 { margin: 0; font-size: clamp(22px, 2.6vw, 30px); line-height: 1.2; color: #fff; }
.rbt-etp-tour p { margin: 14px 0 0; font-size: 16px; line-height: 1.7; color: rgba(255, 255, 255, .9); }
.rbt-etp-tour p:last-child { margin-bottom: 0; }

.rbt-etp-tour__btn {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  flex: 0 0 auto;
  height: 62px;
  padding: 0 30px 0 12px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 700;
  box-shadow: 0 12px 28px rgba(2, 30, 54, .26);
  transition: background .3s ease, transform .3s ease;
}
.rbt-etp-tour__btn:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-3px); }
.rbt-etp-tour__play {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--habitat-azul-escuro);
  color: var(--habitat-verde);
}

/* Tour com vídeo próprio (hoje só o Berçário). A fachada ocupa a largura
   inteira do bloco azul — `flex: 0 0 100%` em vez de :has(), para o layout
   não depender de suporte a seletor. O iframe só nasce no clique. */
.rbt-etp-tour__player {
  position: relative;
  flex: 0 0 100%;
  margin-top: 4px;
  border-radius: 18px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: var(--habitat-azul-escuro);
  cursor: pointer;
}
.rbt-etp-tour__player img,
.rbt-etp-tour__player iframe { display: block; width: 100%; height: 100%; border: 0; object-fit: cover; }
/* Véu: o botão precisa de contraste sobre qualquer frame do vídeo. */
.rbt-etp-tour__player::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(2, 30, 54, .12) 0%, rgba(2, 30, 54, .46) 100%);
}
.rbt-etp-tour__player .rbt-etp-tour__btn {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border: 0;
  font-size: 16px;
  cursor: pointer;
}
.rbt-etp-tour__player .rbt-etp-tour__btn:hover { transform: translate(-50%, -50%) scale(1.04); }
.rbt-etp-tour__player--ativo { cursor: default; }
.rbt-etp-tour__player--ativo::after { content: none; }
/* `p.` para vencer o `.rbt-etp-tour p` acima sem recorrer a !important. */
.rbt-etp-tour p.rbt-etp-tour__aviso {
  flex: 0 0 100%;
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 12px 0 0;
  font-size: 13px;
  color: rgba(255, 255, 255, .74);
}

/* ---- Componentes curriculares ------------------------------------------ */

.rbt-etp-grupos { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 22px; margin-top: 28px; }
.rbt-etp-grupo {
  padding: 28px 30px;
  border-radius: 20px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
}
.rbt-etp-grupo h3 { margin: 0 0 16px; font-size: 16px; color: var(--habitat-azul); }
.rbt-etp-grupo ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rbt-etp-grupo li {
  font-family: var(--font-secondary);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  background: #fff;
  border: 1px solid var(--color-primary-alt);
  border-radius: 500px;
  padding: 7px 14px;
}

/* ---- Cards (ambientes, projetos, frentes do Educação 5.0) -------------- */

.rbt-etp-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 24px; margin-top: 30px; }
.rbt-etp-card {
  display: flex;
  flex-direction: column;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: border-color .3s ease, transform .3s ease, box-shadow .3s ease;
}
.rbt-etp-card:hover { border-color: var(--color-primary-alt); transform: translateY(-5px); box-shadow: 0 20px 40px rgba(16, 38, 56, .11); }
.rbt-etp-card__foto { margin: 0; border-radius: 21px 21px 0 0; overflow: hidden; }
/* `width: 100%` é obrigatório: com srcset + sizes a largura intrínseca passa a
   ser a do `sizes` e o card ficaria com faixa vazia ao lado da foto. */
.rbt-etp-card__foto img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; transition: transform .5s ease; }
.rbt-etp-card:hover .rbt-etp-card__foto img { transform: scale(1.04); }
.rbt-etp-card__corpo { position: relative; padding: 26px 26px 28px; }
.rbt-etp-card__num {
  position: absolute;
  right: 22px;
  top: 20px;
  font-family: var(--font-secondary);
  font-size: 30px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
}
.rbt-etp-card h3 { margin: 0 0 10px; padding-right: 46px; font-size: 19px; line-height: 1.3; color: var(--habitat-azul-escuro); }
.rbt-etp-card p { font-size: 15px; line-height: 1.72; color: var(--habitat-cinza-80); }
.rbt-etp-card p:last-child { margin-bottom: 0; }
/* Sem foto o card fica leve demais ao lado dos outros: ganha fundo próprio. */
.rbt-etp-card--sem-foto { background: var(--color-primary-light); border-color: var(--color-primary-alt); }

/* Link para o vídeo do projeto no Instagram. Fica no fim do card, depois do
   último parágrafo — por isso a margem própria. */
.rbt-etp-card__insta {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 4px;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 700;
  color: var(--habitat-azul);
  transition: color .25s ease, gap .25s ease;
}
.rbt-etp-card__insta i { font-size: 17px; }
.rbt-etp-card__insta:hover { color: var(--habitat-azul-escuro); gap: 13px; }

/* ---- Grade de fotos ---------------------------------------------------- */

.rbt-etp-galeria { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; margin-top: 30px; }
.rbt-etp-galeria figure { margin: 0; border-radius: 16px; overflow: hidden; }
.rbt-etp-galeria img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .5s ease; }
.rbt-etp-galeria figure:hover img { transform: scale(1.04); }

/* =========================================================================
   A trajetória continua — o bloco escuro da página
   ========================================================================= */

.rbt-etp-proxima-area {
  position: relative;
  overflow: hidden;
  padding: 92px 0 96px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-etp-proxima-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-etp-proxima__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-etp-proxima__conteudo { position: relative; z-index: 1; text-align: center; }

.rbt-etp-proxima__intro { max-width: 680px; margin: 0 auto 46px; }
.rbt-etp-proxima__intro h2 {
  margin: 0;
  font-size: clamp(26px, 3.2vw, 40px);
  line-height: 1.16;
  letter-spacing: -.018em;
  color: #fff;
  text-wrap: balance;
}
/* Sobre o azul o grifo translúcido esverdeia: o destaque é o amarelo sólido. */
.rbt-etp-proxima__intro h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-etp-proxima__intro p { margin: 16px auto 0; max-width: 560px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }

.rbt-etp-vizinhas { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 420px)); gap: 20px; justify-content: center; }
.rbt-etp-vizinha {
  display: grid;
  grid-template-columns: 108px 1fr auto;
  align-items: center;
  gap: 18px;
  padding: 14px 22px 14px 14px;
  border-radius: 22px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  text-align: left;
  transition: transform .35s ease, background .35s ease, border-color .35s ease;
}
.rbt-etp-vizinha:hover { transform: translateY(-5px); background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .42); }
.rbt-etp-vizinha__foto { display: block; border-radius: 16px; overflow: hidden; }
.rbt-etp-vizinha__foto img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.rbt-etp-vizinha__corpo { display: flex; flex-direction: column; gap: 3px; }
.rbt-etp-vizinha__corpo small { font-family: var(--font-secondary); font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--habitat-verde); }
.rbt-etp-vizinha__corpo strong { font-family: var(--font-secondary); font-size: 17px; line-height: 1.25; color: #fff; }
/* Branco a 92%: medido sobre o cartão translúcido, os 72% de apoio usados no
   resto do site ficam em 3,7:1 — abaixo do mínimo para texto pequeno. */
.rbt-etp-vizinha__faixa { font-size: 13px; color: rgba(255, 255, 255, .92); }
.rbt-etp-vizinha > i { color: var(--habitat-verde); font-size: 18px; transition: transform .3s ease; }
.rbt-etp-vizinha--proxima:hover > i { transform: translateX(4px); }
.rbt-etp-vizinha--anterior:hover > i { transform: translateX(-4px); }

.rbt-etp-proxima__todas {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 34px;
  padding-bottom: 3px;
  border-bottom: 2px solid rgba(255, 255, 255, .4);
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  transition: border-color .25s ease;
}
.rbt-etp-proxima__todas:hover { color: #fff; border-color: var(--habitat-verde); }
.rbt-etp-proxima__todas i { color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-etp-proxima__todas:hover i { transform: translateX(4px); }

/* O CTA final não tem padding no topo (quem dá o respiro é a seção anterior);
   depois do bloco azul, o cartão amarelo encostaria. */
.rbt-etp-proxima-area + .rbt-curso__cta { padding-top: 76px; }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-etp-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-etp-conteudo { background: var(--color-darkest); }

.active-dark-mode .rbt-etp-lide,
.active-dark-mode .rbt-etp-secao__cab h2,
.active-dark-mode .rbt-etp-card h3 { color: var(--color-white-dark); }

.active-dark-mode .rbt-etp-selo { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); }
.active-dark-mode .rbt-etp-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-etp-trilha,
.active-dark-mode .rbt-etp-ficha { border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-etp-trilha__item,
.active-dark-mode .rbt-etp-indice,
.active-dark-mode .rbt-etp-indice a,
.active-dark-mode .rbt-etp-grupo,
.active-dark-mode .rbt-etp-grupo li,
.active-dark-mode .rbt-etp-card { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-etp-card--sem-foto { background: rgba(255, 255, 255, .07); }
.active-dark-mode .rbt-etp-trilha__item--atual { background: var(--habitat-azul); border-color: var(--habitat-azul-claro); color: #fff; }

.active-dark-mode .rbt-etp-ficha i,
.active-dark-mode .rbt-etp-trilha__item b,
.active-dark-mode .rbt-etp-secao__num { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-etp-trilha__item--atual b { background: var(--habitat-verde); color: var(--habitat-azul-escuro); }
.active-dark-mode .rbt-etp-indice__rotulo,
.active-dark-mode .rbt-etp-indice a b,
.active-dark-mode .rbt-etp-grupo h3 { color: var(--habitat-verde); }
.active-dark-mode .rbt-etp-card__num { color: rgba(255, 255, 255, .10); }
/* No escuro o azul institucional em texto fica ~2,4:1 — vai para o azul claro. */
.active-dark-mode .rbt-etp-card__insta { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-etp-card__insta:hover { color: #fff; }

.active-dark-mode .rbt-etp-abertura__fundo {
  background:
    radial-gradient(circle at 92% 6%, rgba(155, 193, 49, .07), transparent 42%),
    radial-gradient(circle at 4% 92%, rgba(34, 115, 195, .16), transparent 46%);
}

/* Os cinzas do manual somem sobre fundo escuro; como são custom properties,
   remapear no container de cada bloco basta. */
.active-dark-mode .rbt-etp-abertura,
.active-dark-mode .rbt-etp-conteudo {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .45);
}

/* =========================================================================
   Movimento
   `rbtEntra` está definido na seção da Proposta Pedagógica (home).
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-etp-secao__cab,
    .rbt-etp-texto,
    .rbt-etp-textofoto,
    .rbt-etp-grupo,
    .rbt-etp-card,
    .rbt-etp-galeria figure,
    .rbt-etp-tour,
    .rbt-etp-vizinha {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

/* =========================================================================
   Telas menores
   ========================================================================= */

@media (max-width: 1199px) {
  .rbt-etp-abertura__grade { gap: 36px; }
  .rbt-etp-indice { grid-template-columns: 1fr; gap: 16px; }
}

@media (max-width: 991px) {
  .rbt-etp-abertura { padding: 34px 0 58px; }
  .rbt-etp-trilha { margin-bottom: 32px; padding-bottom: 20px; }
  /* Cinco pílulas em duas linhas empurram a foto para baixo da dobra: no
     celular a trajetória rola na horizontal, como uma fita. */
  .rbt-etp-trilha { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .rbt-etp-trilha::-webkit-scrollbar { display: none; }
  .rbt-etp-trilha__item { flex: 0 0 auto; }

  .rbt-etp-abertura__grade { grid-template-columns: 1fr; gap: 30px; }
  .rbt-etp-capa { border-radius: 20px 20px 20px 64px; }
  .rbt-etp-capa__ordem { width: 64px; height: 64px; font-size: 25px; }

  .rbt-etp-conteudo { padding: 58px 0 70px; }
  .rbt-etp-indice { margin-bottom: 52px; padding: 22px 22px; }
  .rbt-etp-secao { margin-bottom: 58px; }
  .rbt-etp-textofoto { grid-template-columns: 1fr; gap: 26px; }
  .rbt-etp-textofoto__foto img { border-radius: 20px 20px 56px 20px; }
  .rbt-etp-tour { margin-bottom: 58px; padding: 32px 28px; }

  .rbt-etp-proxima-area { padding: 62px 0 68px; }
  .rbt-etp-vizinhas { grid-template-columns: 1fr; }
}

@media (max-width: 575px) {
  .rbt-etp-secao__cab { grid-template-columns: 1fr; gap: 12px; }
  .rbt-etp-secao__num { justify-self: start; }
  .rbt-etp-acoes .rbt-hero__cta { width: 100%; justify-content: center; }
  .rbt-etp-galeria { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .rbt-etp-tour__btn { width: 100%; justify-content: center; }
  .rbt-etp-vizinha { grid-template-columns: 84px 1fr auto; padding: 12px 16px 12px 12px; }
}

/* =========================================================================
   Serviços Adicionais
   Os três serviços respondem à mesma pergunta prática — quanto tempo a
   criança fica na escola e o que acontece nesse tempo. A página abre com os
   três lado a lado, detalha um a um e fecha no azul dizendo quem pode
   contratar cada um. Prefixo `rbt-svc-`.
   ========================================================================= */

.rbt-svc-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-svc-selo i { font-size: 14px; }
.rbt-svc-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* ---- Abertura ---------------------------------------------------------- */

.rbt-svc-abertura {
  position: relative;
  overflow: hidden;
  padding: 76px 0 84px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-svc-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 88% 4%, rgba(155, 193, 49, .15), transparent 42%),
    radial-gradient(circle at 6% 94%, rgba(1, 49, 97, .09), transparent 46%);
}
.rbt-svc-abertura .container { position: relative; z-index: 1; }

.rbt-svc-abertura__texto { max-width: 720px; margin: 0 auto 48px; text-align: center; }
.rbt-svc-abertura__titulo {
  margin: 0 0 18px;
  font-size: clamp(28px, 3.6vw, 44px);
  line-height: 1.14;
  letter-spacing: -.022em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-svc-abertura__titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-svc-abertura__lide { margin: 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

/* ---- Índice: os três serviços ------------------------------------------ */

.rbt-svc-indice { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.rbt-svc-indice a {
  position: relative;
  overflow: hidden;
  display: block;
  height: 100%;
  padding: 28px 28px 30px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-svc-indice a::before {
  content: "";
  position: absolute;
  left: 0; top: 0; right: 0;
  height: 3px;
  background: var(--habitat-verde);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s ease;
}
.rbt-svc-indice a:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .1); }
.rbt-svc-indice a:hover::before { transform: scaleX(1); }

.rbt-svc-indice__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 22px;
  transition: background .3s ease, color .3s ease;
}
.rbt-svc-indice a:hover .rbt-svc-indice__icone { background: var(--habitat-verde); color: var(--habitat-cinza-80); }
.rbt-svc-indice__num {
  position: absolute;
  right: 22px;
  top: 16px;
  font-family: var(--font-secondary);
  font-size: 46px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  font-variant-numeric: tabular-nums;
}
.rbt-svc-indice strong { display: block; margin-top: 18px; font-family: var(--font-secondary); font-size: 19px; color: var(--habitat-azul-escuro); }
.rbt-svc-indice__quem {
  display: inline-block;
  margin-top: 8px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 5px 12px;
}
.rbt-svc-indice small { display: block; margin-top: 12px; font-size: 14px; line-height: 1.6; color: var(--habitat-cinza-60); }

/* =========================================================================
   Os três blocos
   ========================================================================= */

.rbt-svc-conteudo { padding: 88px 0 96px; background: #fff; }

.rbt-svc-bloco { margin-bottom: 96px; scroll-margin-top: 110px; }
.rbt-svc-bloco--ultimo,
.rbt-svc-bloco:last-child { margin-bottom: 0; }

.rbt-svc-cab { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 20px; margin-bottom: 30px; }
.rbt-svc-cab__num {
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 800;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 15px;
  font-variant-numeric: tabular-nums;
}
.rbt-svc-cab h2 {
  position: relative;
  margin: 0;
  padding-bottom: 16px;
  font-size: clamp(25px, 3vw, 34px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: var(--habitat-azul-escuro);
}
.rbt-svc-cab h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 54px;
  height: 3px;
  border-radius: 3px;
  background: var(--habitat-verde);
}
.rbt-svc-cab__quem { display: flex; align-items: center; gap: 9px; margin: 14px 0 0; font-family: var(--font-secondary); font-size: 14.5px; font-weight: 600; color: var(--habitat-cinza-60); }
.rbt-svc-cab__quem i { color: var(--habitat-azul); font-size: 17px; }

.rbt-svc-texto { max-width: 820px; font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-svc-sub { margin: 48px 0 14px; font-size: 21px; color: var(--habitat-azul-escuro); }

.rbt-svc-textofoto { display: grid; grid-template-columns: 1.05fr .95fr; gap: 44px; align-items: center; }
.rbt-svc-textofoto__texto p { font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-svc-textofoto__texto p:last-child { margin-bottom: 0; }
.rbt-svc-textofoto__foto { margin: 0; }
.rbt-svc-textofoto__foto img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 22px 22px 70px 22px;
  box-shadow: 0 16px 34px rgba(16, 38, 56, .12);
}

/* ---- Cartão do sistema AMCO -------------------------------------------- */

.rbt-svc-amco {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 34px;
  align-items: center;
  margin-top: 44px;
  padding: 32px 36px;
  border-radius: 24px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
}
.rbt-svc-amco__marca { background: #fff; border-radius: 18px; padding: 20px; text-align: center; }
.rbt-svc-amco__marca img { max-width: 100%; height: auto; }
.rbt-svc-amco__corpo h3 { margin: 0 0 12px; font-size: 21px; color: var(--habitat-azul-escuro); }
.rbt-svc-amco__corpo p { font-size: 15.5px; line-height: 1.72; color: var(--habitat-cinza-80); }
.rbt-svc-amco__corpo p:last-child { margin-bottom: 0; }

/* ---- Escada de Cambridge ----------------------------------------------- */

/* As quatro provas na ordem em que o estudante as encontra: a barra cresce a
   cada degrau, então a progressão se lê antes do texto. */
.rbt-svc-provas {
  list-style: none;
  padding: 0;
  margin: 28px 0 30px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  align-items: end;
}
.rbt-svc-prova {
  padding: 22px 22px 24px;
  border-radius: 20px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: border-color .3s ease, transform .3s ease;
}
.rbt-svc-prova:hover { border-color: var(--color-primary-alt); transform: translateY(-4px); }
.rbt-svc-prova__barra {
  display: block;
  height: calc(6px + var(--degrau) * 7px);
  border-radius: 500px;
  margin-bottom: 16px;
  background: var(--habitat-azul);
  opacity: calc(.4 + var(--degrau) * .15);
}
.rbt-svc-prova__sigla { display: block; font-family: var(--font-secondary); font-size: 24px; font-weight: 800; color: var(--habitat-azul); }
.rbt-svc-prova strong { display: block; margin-top: 4px; font-family: var(--font-secondary); font-size: 15.5px; color: var(--habitat-azul-escuro); }
.rbt-svc-prova small { display: block; margin-top: 4px; font-size: 13px; color: var(--habitat-cinza-60); }
.rbt-svc-prova__nivel {
  display: inline-block;
  margin-top: 12px;
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  color: var(--habitat-cinza-80);
  background: var(--habitat-verde);
  border-radius: 500px;
  padding: 4px 11px;
}

/* ---- Atividades do contraturno ----------------------------------------- */

.rbt-svc-atividades {
  list-style: none;
  padding: 0;
  margin: 26px 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 10px;
}
.rbt-svc-atividades li {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 13px 18px;
  border-radius: 14px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
  font-family: var(--font-secondary);
  font-size: 14.5px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
}
.rbt-svc-atividades i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-size: 13px;
}

/* ---- Mais Tempo: o dia inteiro ----------------------------------------- */

.rbt-svc-maistempo {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 44px;
  align-items: center;
  padding: 36px 40px;
  border-radius: 24px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
}
.rbt-svc-maistempo p { margin: 0; font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-svc-maistempo__relogio { display: flex; align-items: center; gap: 10px; }
.rbt-svc-maistempo__relogio > span:not(.rbt-svc-maistempo__fio) {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  flex: 0 0 auto;
  padding: 14px 16px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid var(--color-primary-alt);
}
.rbt-svc-maistempo__relogio b { font-family: var(--font-secondary); font-size: 19px; color: var(--habitat-azul); font-variant-numeric: tabular-nums; }
.rbt-svc-maistempo__relogio small { font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--habitat-cinza-60); }
.rbt-svc-maistempo__fio { flex: 1 1 auto; height: 2px; background: var(--color-primary-alt); }

/* =========================================================================
   Quem pode contratar — o bloco escuro da página
   ========================================================================= */

.rbt-svc-quem-area {
  position: relative;
  overflow: hidden;
  padding: 92px 0 96px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-svc-quem-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-svc-quem__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-svc-quem__conteudo { position: relative; z-index: 1; text-align: center; }

.rbt-svc-quem__intro { max-width: 660px; margin: 0 auto 46px; }
.rbt-svc-quem__intro h2 {
  margin: 0;
  font-size: clamp(26px, 3.2vw, 40px);
  line-height: 1.16;
  letter-spacing: -.018em;
  color: #fff;
  text-wrap: balance;
}
.rbt-svc-quem__intro h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-svc-quem__intro p { margin: 16px auto 0; max-width: 540px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }

.rbt-svc-quem { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; text-align: left; }
.rbt-svc-quem__cartao {
  display: flex;
  flex-direction: column;
  padding: 28px 26px 26px;
  border-radius: 22px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  transition: transform .35s ease, background .35s ease, border-color .35s ease;
}
.rbt-svc-quem__cartao:hover { transform: translateY(-5px); background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .42); }
.rbt-svc-quem__icone {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 22px;
  margin-bottom: 18px;
}
.rbt-svc-quem__cartao strong { font-family: var(--font-secondary); font-size: 19px; color: #fff; }
.rbt-svc-quem__faixa {
  display: inline-block;
  align-self: flex-start;
  margin-top: 10px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  color: var(--habitat-azul-escuro);
  background: var(--habitat-verde);
  border-radius: 500px;
  padding: 5px 12px;
}
/* Branco a 92%: sobre o cartão translúcido, os 72% de apoio do resto do site
   ficam em 3,7:1 — abaixo do mínimo para texto pequeno. */
.rbt-svc-quem__cartao small { margin-top: 12px; font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, .92); }
.rbt-svc-quem__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  padding-top: 18px;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 600;
  color: #fff;
}
/* O amarelo institucional sobre o azul fica em ~3:1: fica só na seta. */
.rbt-svc-quem__link i { color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-svc-quem__cartao:hover .rbt-svc-quem__link i { transform: translateY(3px); }

.rbt-svc-quem__todas {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 36px;
  padding-bottom: 3px;
  border-bottom: 2px solid rgba(255, 255, 255, .4);
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  transition: border-color .25s ease;
}
.rbt-svc-quem__todas:hover { color: #fff; border-color: var(--habitat-verde); }
.rbt-svc-quem__todas i { color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-svc-quem__todas:hover i { transform: translateX(4px); }

.rbt-svc-quem-area + .rbt-curso__cta { padding-top: 76px; }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-svc-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-svc-conteudo { background: var(--color-darkest); }

.active-dark-mode .rbt-svc-abertura__titulo,
.active-dark-mode .rbt-svc-indice strong,
.active-dark-mode .rbt-svc-cab h2,
.active-dark-mode .rbt-svc-sub,
.active-dark-mode .rbt-svc-amco__corpo h3,
.active-dark-mode .rbt-svc-prova strong { color: var(--color-white-dark); }
.active-dark-mode .rbt-svc-abertura__titulo em { color: var(--habitat-verde); background: none; }

.active-dark-mode .rbt-svc-selo { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); }
.active-dark-mode .rbt-svc-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-svc-indice a,
.active-dark-mode .rbt-svc-prova,
.active-dark-mode .rbt-svc-atividades li,
.active-dark-mode .rbt-svc-amco,
.active-dark-mode .rbt-svc-maistempo { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-svc-maistempo__relogio > span:not(.rbt-svc-maistempo__fio) { background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-svc-maistempo__fio { background: var(--dark-color-border-2); }
.active-dark-mode .rbt-svc-amco__marca { background: #fff; }

.active-dark-mode .rbt-svc-indice__icone,
.active-dark-mode .rbt-svc-cab__num,
.active-dark-mode .rbt-svc-indice__quem { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-svc-indice__num { color: rgba(255, 255, 255, .10); }
.active-dark-mode .rbt-svc-cab__quem i,
.active-dark-mode .rbt-svc-prova__sigla,
.active-dark-mode .rbt-svc-maistempo__relogio b { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-svc-prova__barra { background: var(--habitat-azul-claro); }

.active-dark-mode .rbt-svc-abertura__fundo {
  background:
    radial-gradient(circle at 88% 4%, rgba(155, 193, 49, .07), transparent 42%),
    radial-gradient(circle at 6% 94%, rgba(34, 115, 195, .16), transparent 46%);
}

.active-dark-mode .rbt-svc-abertura,
.active-dark-mode .rbt-svc-conteudo {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .45);
}

/* =========================================================================
   Movimento e telas menores
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-svc-indice li,
    .rbt-svc-cab,
    .rbt-svc-textofoto,
    .rbt-svc-amco,
    .rbt-svc-prova,
    .rbt-svc-maistempo,
    .rbt-svc-quem__cartao {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 1199px) {
  .rbt-svc-provas { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 991px) {
  .rbt-svc-abertura { padding: 56px 0 62px; }
  .rbt-svc-indice { grid-template-columns: 1fr; }
  .rbt-svc-indice__num { font-size: 38px; }

  .rbt-svc-conteudo { padding: 60px 0 70px; }
  .rbt-svc-bloco { margin-bottom: 68px; }
  .rbt-svc-textofoto { grid-template-columns: 1fr; gap: 26px; }
  .rbt-svc-textofoto__foto img { border-radius: 20px 20px 56px 20px; }
  .rbt-svc-amco { grid-template-columns: 1fr; gap: 24px; padding: 28px 24px; }
  .rbt-svc-amco__marca { max-width: 220px; }
  .rbt-svc-maistempo { grid-template-columns: 1fr; gap: 26px; padding: 28px 24px; }

  .rbt-svc-quem-area { padding: 62px 0 68px; }
  .rbt-svc-quem { grid-template-columns: 1fr; }
}

@media (max-width: 575px) {
  .rbt-svc-cab { grid-template-columns: 1fr; gap: 12px; }
  .rbt-svc-cab__num { justify-self: start; }
  .rbt-svc-provas { grid-template-columns: 1fr; }
  /* Em uma coluna a escada não se lê como escada: a barra vira uma marca de
     nível à esquerda do cartão. */
  .rbt-svc-prova__barra { height: 6px; width: calc(30% + var(--degrau) * 14%); }
  .rbt-svc-maistempo__relogio { flex-wrap: wrap; justify-content: center; }
  .rbt-svc-maistempo__fio { display: none; }
}

/* =========================================================================
   Eu sou Ranieri — a área das famílias
   É a única página que não vende nada: quem chega já é da casa e quer
   resolver algo em um clique. Os quatro sistemas vêm primeiro, grandes; o
   resto é apoio. Prefixo `rbt-sou-`.
   ========================================================================= */

.rbt-sou-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-sou-selo i { font-size: 14px; }
.rbt-sou-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-sou-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* ---- Abertura ---------------------------------------------------------- */

.rbt-sou-abertura {
  position: relative;
  overflow: hidden;
  padding: 76px 0 88px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-sou-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 10% 4%, rgba(1, 49, 97, .09), transparent 44%),
    radial-gradient(circle at 92% 92%, rgba(155, 193, 49, .15), transparent 42%);
}
.rbt-sou-abertura .container { position: relative; z-index: 1; }

.rbt-sou-abertura__texto { max-width: 700px; margin: 0 auto 46px; text-align: center; }
.rbt-sou-abertura__titulo,
.rbt-sou-cab h2,
.rbt-sou-fala__texto h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-sou-abertura__titulo em,
.rbt-sou-cab h2 em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-sou-abertura__lide { margin: 18px 0 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

/* ---- Os quatro sistemas ------------------------------------------------ */

.rbt-sou-atalhos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.rbt-sou-atalho {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 20px;
  padding: 28px 28px 26px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-sou-atalho::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--habitat-verde);
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform .35s ease;
}
.rbt-sou-atalho:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .1); }
.rbt-sou-atalho:hover::before { transform: scaleY(1); }

.rbt-sou-atalho__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border-radius: 18px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 25px;
  transition: background .3s ease, color .3s ease;
}
.rbt-sou-atalho:hover .rbt-sou-atalho__icone { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-sou-atalho__corpo { display: flex; flex-direction: column; }
.rbt-sou-atalho__marca {
  font-family: var(--font-secondary);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-cinza-60);
}
.rbt-sou-atalho__corpo strong { margin-top: 4px; font-family: var(--font-secondary); font-size: 20px; color: var(--habitat-azul-escuro); }
.rbt-sou-atalho__texto { margin-top: 8px; font-size: 14.5px; line-height: 1.65; color: var(--habitat-cinza-80); }
.rbt-sou-atalho__abrir {
  grid-column: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 700;
  color: var(--habitat-azul);
}
.rbt-sou-atalho__abrir i { transition: transform .3s ease; }
.rbt-sou-atalho:hover .rbt-sou-atalho__abrir i { transform: translate(3px, -3px); }

/* ---- Apoio ------------------------------------------------------------- */

.rbt-sou-extras-area { padding: 86px 0 96px; background: #fff; }
.rbt-sou-cab { max-width: 640px; margin: 0 auto 44px; text-align: center; }

.rbt-sou-extras { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.rbt-sou-extra {
  display: flex;
  flex-direction: column;
  padding: 30px 28px 28px;
  border-radius: 22px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
  transition: transform .3s ease, box-shadow .3s ease;
}
.rbt-sou-extra:hover { transform: translateY(-4px); box-shadow: 0 18px 36px rgba(16, 38, 56, .09); }
.rbt-sou-extra__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 16px;
  background: #fff;
  color: var(--habitat-azul);
  font-size: 22px;
  margin-bottom: 18px;
}
.rbt-sou-extra h3 { margin: 0 0 10px; font-size: 19px; color: var(--habitat-azul-escuro); }
.rbt-sou-extra p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }
.rbt-sou-extra .rbt-etapa__link { margin-top: auto; padding-top: 18px; }

/* =========================================================================
   Falar com a escola — o bloco escuro da página
   ========================================================================= */

.rbt-sou-fala-area {
  position: relative;
  overflow: hidden;
  padding: 88px 0 92px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-sou-fala-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-sou-fala__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-sou-fala__conteudo { position: relative; z-index: 1; }

.rbt-sou-fala { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
.rbt-sou-fala__texto h2 { color: #fff; }
.rbt-sou-fala__texto h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-sou-fala__texto p { margin: 18px 0 0; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }

.rbt-sou-fala__acoes { display: grid; gap: 12px; }
.rbt-sou-fala__wpp,
.rbt-sou-fala__email,
.rbt-sou-fala__mapa {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 17px 24px;
  border-radius: 500px;
  font-family: var(--font-secondary);
  font-size: 16px;
  font-weight: 700;
  transition: transform .3s ease, background .3s ease, border-color .3s ease;
}
.rbt-sou-fala__wpp { background: var(--habitat-verde); color: var(--habitat-azul-escuro); }
.rbt-sou-fala__wpp:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-3px); }
.rbt-sou-fala__email,
.rbt-sou-fala__mapa {
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .3);
  color: #fff;
  font-size: 15px;
}
.rbt-sou-fala__email:hover,
.rbt-sou-fala__mapa:hover { background: rgba(255, 255, 255, .18); border-color: rgba(255, 255, 255, .5); color: #fff; transform: translateY(-3px); }
.rbt-sou-fala__email i { color: var(--habitat-verde); font-size: 18px; }
.rbt-sou-fala__mapa i { margin-left: auto; color: var(--habitat-verde); transition: transform .3s ease; }
.rbt-sou-fala__mapa:hover i { transform: translateX(4px); }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-sou-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-sou-extras-area { background: var(--color-darkest); }

.active-dark-mode .rbt-sou-abertura__titulo,
.active-dark-mode .rbt-sou-cab h2,
.active-dark-mode .rbt-sou-atalho__corpo strong,
.active-dark-mode .rbt-sou-extra h3 { color: var(--color-white-dark); }
.active-dark-mode .rbt-sou-abertura__titulo em,
.active-dark-mode .rbt-sou-cab h2 em { color: var(--habitat-verde); background: none; }

.active-dark-mode .rbt-sou-selo,
.active-dark-mode .rbt-sou-selo--claro { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-sou-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-sou-atalho,
.active-dark-mode .rbt-sou-extra { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-sou-atalho__icone,
.active-dark-mode .rbt-sou-extra__icone { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-sou-atalho__abrir { color: var(--habitat-azul-claro); }

.active-dark-mode .rbt-sou-abertura__fundo {
  background:
    radial-gradient(circle at 10% 4%, rgba(34, 115, 195, .16), transparent 44%),
    radial-gradient(circle at 92% 92%, rgba(155, 193, 49, .07), transparent 42%);
}

.active-dark-mode .rbt-sou-abertura,
.active-dark-mode .rbt-sou-extras-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
}

/* =========================================================================
   Movimento e telas menores
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-sou-atalho,
    .rbt-sou-extra,
    .rbt-sou-fala__texto,
    .rbt-sou-fala__acoes {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 991px) {
  .rbt-sou-abertura { padding: 56px 0 66px; }
  .rbt-sou-atalhos { grid-template-columns: 1fr; }
  .rbt-sou-extras-area { padding: 60px 0 70px; }
  .rbt-sou-extras { grid-template-columns: 1fr; }
  .rbt-sou-fala-area { padding: 62px 0 68px; }
  .rbt-sou-fala { grid-template-columns: 1fr; gap: 30px; }
}

@media (max-width: 575px) {
  .rbt-sou-atalho { grid-template-columns: 52px 1fr; gap: 16px; padding: 24px 22px; }
  .rbt-sou-atalho__icone { width: 52px; height: 52px; font-size: 22px; }
  /* Em coluna estreita o e-mail estoura a pílula. */
  .rbt-sou-fala__email { font-size: 13.5px; word-break: break-all; }
}

/* =========================================================================
   Contato
   Quem abre "Contato" quer falar agora ou quer chegar. Os três canais vêm
   primeiro, com o WhatsApp em destaque; depois os quatro endereços,
   agrupados pela rua em que ficam — é assim que se anda de um para o outro.
   Prefixo `rbt-cont-`.
   ========================================================================= */

.rbt-cont-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-cont-selo i { font-size: 14px; }
.rbt-cont-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-cont-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* ---- Abertura + canais ------------------------------------------------- */

.rbt-cont-abertura {
  position: relative;
  overflow: hidden;
  padding: 76px 0 88px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-cont-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 88% 6%, rgba(1, 49, 97, .10), transparent 44%),
    radial-gradient(circle at 6% 96%, rgba(155, 193, 49, .15), transparent 42%);
}
.rbt-cont-abertura .container { position: relative; z-index: 1; }

.rbt-cont-abertura__texto { max-width: 700px; margin: 0 auto 46px; text-align: center; }
.rbt-cont-abertura__titulo,
.rbt-cont-cab h2,
.rbt-cont-casa__texto h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-cont-abertura__titulo em,
.rbt-cont-cab h2 em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-cont-abertura__lide { margin: 18px 0 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

.rbt-cont-canais { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: stretch; }
.rbt-cont-canal {
  display: flex;
  flex-direction: column;
  padding: 30px 28px 28px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-cont-canal:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .1); }
/* O WhatsApp é o canal que a escola de fato usa: ganha o fundo amarelo. */
.rbt-cont-canal--destaque { background: var(--habitat-verde); border-color: var(--habitat-verde); }

.rbt-cont-canal__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 23px;
}
.rbt-cont-canal--destaque .rbt-cont-canal__icone { background: var(--habitat-azul-escuro); color: var(--habitat-verde); }
.rbt-cont-canal--destaque .rbt-icone-wpp { width: 1.15em; height: 1.15em; }

.rbt-cont-canal__rotulo {
  margin-top: 18px;
  font-family: var(--font-secondary);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-cinza-60);
}
.rbt-cont-canal strong { margin-top: 4px; font-family: var(--font-secondary); font-size: 21px; color: var(--habitat-azul-escuro); }
.rbt-cont-canal__dado { margin-top: 6px; font-family: var(--font-secondary); font-size: 16px; color: var(--habitat-azul); }
.rbt-cont-canal small { margin-top: 10px; font-size: 14px; line-height: 1.6; color: var(--habitat-cinza-60); }
.rbt-cont-canal__acao {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  padding-top: 20px;
  font-family: var(--font-secondary);
  font-size: 14px;
  font-weight: 700;
  color: var(--habitat-azul);
}
.rbt-cont-canal__acao i { transition: transform .3s ease; }
.rbt-cont-canal:hover .rbt-cont-canal__acao i { transform: translateX(4px); }
/* No cartão amarelo o azul institucional é o que tem contraste. */
.rbt-cont-canal--destaque .rbt-cont-canal__rotulo,
.rbt-cont-canal--destaque small { color: #3A4812; }
.rbt-cont-canal--destaque .rbt-cont-canal__dado,
.rbt-cont-canal--destaque .rbt-cont-canal__acao { color: var(--habitat-azul-escuro); }

/* ---- Endereços por rua -------------------------------------------------- */

.rbt-cont-mapa-area { padding: 86px 0 96px; background: #fff; }
.rbt-cont-cab { max-width: 700px; margin: 0 auto 48px; text-align: center; }
.rbt-cont-cab > p { margin: 16px auto 0; max-width: 620px; font-size: 16.5px; color: var(--habitat-cinza-60); }

.rbt-cont-ruas { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.rbt-cont-rua {
  padding: 30px 30px 32px;
  border-radius: 24px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
}
.rbt-cont-rua__nome {
  display: flex;
  align-items: center;
  gap: 11px;
  margin: 0 0 22px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-primary-alt);
  font-size: 17px;
  color: var(--habitat-azul-escuro);
}
.rbt-cont-rua__nome i { color: var(--habitat-azul-medio); font-size: 19px; }

.rbt-cont-rua__unidades { display: grid; gap: 16px; }
.rbt-cont-unidade {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 16px;
  padding: 22px 22px 24px;
  border-radius: 18px;
  background: #fff;
  border: 1px solid transparent;
  transition: border-color .25s ease, transform .25s ease;
}
.rbt-cont-unidade:hover { border-color: var(--habitat-azul); transform: translateX(4px); }
.rbt-cont-unidade__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 20px;
}
.rbt-cont-unidade h4 { margin: 0 0 6px; font-family: var(--font-secondary); font-size: 18px; color: var(--habitat-azul-escuro); }
.rbt-cont-unidade p { margin: 0 0 12px; font-size: 14px; color: var(--habitat-cinza-60); }
.rbt-cont-unidade address { font-style: normal; font-size: 15px; line-height: 1.6; color: var(--habitat-cinza-80); }
.rbt-cont-unidade .rbt-etapa__link { margin-top: 14px; font-size: 14px; }

/* =========================================================================
   Quem já é da casa — o bloco escuro da página
   ========================================================================= */

.rbt-cont-casa-area {
  position: relative;
  overflow: hidden;
  padding: 88px 0 92px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-cont-casa-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-cont-casa__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-cont-casa__conteudo { position: relative; z-index: 1; }

.rbt-cont-casa { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
.rbt-cont-casa__texto h2 { color: #fff; }
.rbt-cont-casa__texto h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-cont-casa__texto p { margin: 18px 0 26px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }
.rbt-cont-casa__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 56px;
  padding: 0 28px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 700;
  transition: background .3s ease, transform .3s ease;
}
.rbt-cont-casa__cta:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-3px); }
.rbt-cont-casa__cta i { transition: transform .3s ease; }
.rbt-cont-casa__cta:hover i { transform: translateX(4px); }

.rbt-cont-casa__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.rbt-cont-casa__lista li {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
  border-radius: 16px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 600;
  color: #fff;
}
.rbt-cont-casa__lista i { color: var(--habitat-verde); font-size: 19px; }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-cont-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-cont-mapa-area { background: var(--color-darkest); }

.active-dark-mode .rbt-cont-abertura__titulo,
.active-dark-mode .rbt-cont-cab h2,
.active-dark-mode .rbt-cont-canal strong,
.active-dark-mode .rbt-cont-rua__nome,
.active-dark-mode .rbt-cont-unidade h4 { color: var(--color-white-dark); }
.active-dark-mode .rbt-cont-abertura__titulo em,
.active-dark-mode .rbt-cont-cab h2 em { color: var(--habitat-verde); background: none; }
/* O cartão amarelo do WhatsApp sobrevive ao tema escuro: cor própria. */
.active-dark-mode .rbt-cont-canal--destaque strong { color: var(--habitat-azul-escuro); }

.active-dark-mode .rbt-cont-selo,
.active-dark-mode .rbt-cont-selo--claro { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-cont-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-cont-canal,
.active-dark-mode .rbt-cont-rua,
.active-dark-mode .rbt-cont-unidade { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-cont-canal--destaque { background: var(--habitat-verde); border-color: var(--habitat-verde); }
.active-dark-mode .rbt-cont-canal__icone,
.active-dark-mode .rbt-cont-unidade__icone { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-cont-canal--destaque .rbt-cont-canal__icone { background: var(--habitat-azul-escuro); color: var(--habitat-verde); }
.active-dark-mode .rbt-cont-canal__dado,
.active-dark-mode .rbt-cont-canal__acao,
.active-dark-mode .rbt-cont-rua__nome i { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-cont-canal--destaque .rbt-cont-canal__dado,
.active-dark-mode .rbt-cont-canal--destaque .rbt-cont-canal__acao { color: var(--habitat-azul-escuro); }
.active-dark-mode .rbt-cont-rua__nome { border-color: var(--dark-color-border-2); }

.active-dark-mode .rbt-cont-abertura__fundo {
  background:
    radial-gradient(circle at 88% 6%, rgba(34, 115, 195, .16), transparent 44%),
    radial-gradient(circle at 6% 96%, rgba(155, 193, 49, .07), transparent 42%);
}

.active-dark-mode .rbt-cont-abertura,
.active-dark-mode .rbt-cont-mapa-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
}
/* …menos dentro do cartão amarelo, que continua claro no tema escuro. */
.active-dark-mode .rbt-cont-canal--destaque {
  --habitat-cinza-80: #3A4812;
  --habitat-cinza-60: #3A4812;
}

/* =========================================================================
   Movimento e telas menores
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-cont-canal,
    .rbt-cont-rua,
    .rbt-cont-casa__texto,
    .rbt-cont-casa__lista li {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 991px) {
  .rbt-cont-abertura { padding: 56px 0 66px; }
  .rbt-cont-canais { grid-template-columns: 1fr; }
  .rbt-cont-mapa-area { padding: 60px 0 70px; }
  .rbt-cont-ruas { grid-template-columns: 1fr; }
  .rbt-cont-casa-area { padding: 62px 0 68px; }
  .rbt-cont-casa { grid-template-columns: 1fr; gap: 30px; }
}

@media (max-width: 575px) {
  .rbt-cont-rua { padding: 24px 20px 26px; }
  .rbt-cont-unidade { grid-template-columns: 42px 1fr; gap: 14px; padding: 20px 18px; }
  .rbt-cont-unidade__icone { width: 42px; height: 42px; font-size: 18px; }
  /* O e-mail estoura a caixa em telas estreitas. */
  .rbt-cont-canal__dado { word-break: break-word; }
}

/* =========================================================================
   Ranicast — listagem e episódio
   Na listagem, o episódio mais recente é o que a pessoa veio ver: capa grande
   e resumo. No episódio, a fachada do vídeo domina a tela e o texto vem numa
   coluna de leitura. Prefixo `rbt-pod-`.
   ========================================================================= */

.rbt-pod-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 20px;
}
.rbt-pod-selo i { font-size: 14px; }
.rbt-pod-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-pod-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

/* ---- Abertura da listagem ---------------------------------------------- */

.rbt-pod-abertura,
.rbt-pod-ep {
  position: relative;
  overflow: hidden;
  padding: 72px 0 84px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-pod-abertura__fundo,
.rbt-pod-ep__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 90% 4%, rgba(155, 193, 49, .14), transparent 42%),
    radial-gradient(circle at 4% 94%, rgba(1, 49, 97, .09), transparent 46%);
}
.rbt-pod-abertura .container,
.rbt-pod-ep .container { position: relative; z-index: 1; }

.rbt-pod-abertura__texto { max-width: 720px; margin: 0 auto 48px; text-align: center; }
.rbt-pod-abertura__titulo,
.rbt-pod-cab h2,
.rbt-pod-conexao__texto h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-pod-abertura__titulo em,
.rbt-pod-cab h2 em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.rbt-pod-abertura__lide { margin: 18px 0 26px; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }
.rbt-pod-abertura__acoes { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* ---- Episódio em destaque ---------------------------------------------- */

.rbt-pod-destaque {
  display: grid;
  grid-template-columns: 520px 1fr;
  gap: 40px;
  align-items: center;
  padding: 24px;
  border-radius: 28px;
  background: #fff;
  border: 1px solid var(--color-border);
  box-shadow: 0 20px 40px rgba(16, 38, 56, .08);
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.rbt-pod-destaque:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 28px 56px rgba(16, 38, 56, .13); }

.rbt-pod-destaque__capa { position: relative; display: block; border-radius: 20px; overflow: hidden; }
.rbt-pod-destaque__capa img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; transition: transform .5s ease; }
.rbt-pod-destaque:hover .rbt-pod-destaque__capa img { transform: scale(1.03); }
.rbt-pod-destaque__play,
.rbt-pod-card__play,
.rbt-pod-player__play {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  box-shadow: 0 12px 28px rgba(2, 30, 54, .3);
}
.rbt-pod-destaque__play {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 76px;
  height: 76px;
  font-size: 26px;
  transition: transform .35s ease;
}
.rbt-pod-destaque:hover .rbt-pod-destaque__play { transform: translate(-50%, -50%) scale(1.08); }

.rbt-pod-destaque__corpo { display: flex; flex-direction: column; padding-right: 16px; }
.rbt-pod-destaque__rotulo {
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
}
.rbt-pod-destaque__corpo strong {
  margin-top: 12px;
  font-family: var(--font-secondary);
  font-size: clamp(21px, 2.4vw, 28px);
  line-height: 1.25;
  color: var(--habitat-azul-escuro);
}
.rbt-pod-destaque__resumo { margin-top: 14px; font-size: 15.5px; line-height: 1.7; color: var(--habitat-cinza-80); }
.rbt-pod-destaque__link {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 22px;
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 700;
  color: var(--habitat-azul);
}
.rbt-pod-destaque__link i { transition: transform .3s ease; }
.rbt-pod-destaque:hover .rbt-pod-destaque__link i { transform: translateX(4px); }

/* ---- Grade de episódios ------------------------------------------------- */

.rbt-pod-outros-area { padding: 86px 0 96px; background: #fff; }
.rbt-pod-cab { max-width: 640px; margin: 0 auto 44px; text-align: center; }

.rbt-pod-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.rbt-pod-card {
  display: flex;
  flex-direction: column;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  overflow: hidden;
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-pod-card:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .11); }
.rbt-pod-card__capa { position: relative; display: block; }
/* `width: 100%` é obrigatório: com srcset + sizes a largura intrínseca vira a
   do `sizes` e o card fica com faixa vazia. */
.rbt-pod-card__capa img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; transition: transform .5s ease; }
.rbt-pod-card:hover .rbt-pod-card__capa img { transform: scale(1.04); }
.rbt-pod-card__play {
  position: absolute;
  right: 16px;
  bottom: 16px;
  width: 46px;
  height: 46px;
  font-size: 17px;
  transition: transform .3s ease;
}
.rbt-pod-card:hover .rbt-pod-card__play { transform: scale(1.1); }

.rbt-pod-card__corpo { padding: 22px 24px 26px; }
.rbt-pod-card__num {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 5px 12px;
}
.rbt-pod-card h3 { margin: 12px 0 0; font-size: 18px; line-height: 1.35; }
.rbt-pod-card h3 a { color: var(--habitat-azul-escuro); transition: color .25s ease; }
.rbt-pod-card h3 a:hover { color: var(--habitat-azul); }
.rbt-pod-card p { margin: 10px 0 0; font-size: 14.5px; line-height: 1.65; color: var(--habitat-cinza-60); }

.rbt-pod-nota { margin: 40px 0 0; text-align: center; font-size: 15px; color: var(--habitat-cinza-60); }
.rbt-pod-nota a { color: var(--habitat-azul); border-bottom: 1px solid var(--color-primary-alt); }

/* =========================================================================
   A página de um episódio
   ========================================================================= */

.rbt-pod-ep__corpo { max-width: 900px; margin: 0 auto; }
.rbt-pod-ep__cab { text-align: center; margin-bottom: 34px; }
.rbt-pod-ep__cab h1 {
  margin: 0;
  font-size: clamp(26px, 3.4vw, 40px);
  line-height: 1.18;
  letter-spacing: -.02em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}

.rbt-pod-player {
  position: relative;
  border-radius: 24px;
  overflow: hidden;
  background: var(--habitat-azul-escuro);
  box-shadow: 0 24px 50px rgba(16, 38, 56, .18);
  /* A capa é 4:3; quando o player entra, a caixa vira 16:9. */
  aspect-ratio: 4 / 3;
}
.rbt-pod-player--ativo { aspect-ratio: 16 / 9; }
.rbt-pod-player img { display: block; width: 100%; height: 100%; object-fit: cover; }
.rbt-pod-player iframe { display: block; width: 100%; height: 100%; border: 0; }
.rbt-pod-player__botao {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  border: 0;
  background: rgba(2, 28, 55, .32);
  cursor: pointer;
  transition: background .3s ease;
}
.rbt-pod-player__botao:hover { background: rgba(2, 28, 55, .46); }
.rbt-pod-player__play { width: 86px; height: 86px; font-size: 30px; transition: transform .3s ease; }
.rbt-pod-player__botao:hover .rbt-pod-player__play { transform: scale(1.08); }
.rbt-pod-player__texto {
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 2px 10px rgba(2, 30, 54, .5);
}

.rbt-pod-ep__aviso {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 16px 0 0;
  font-size: 13px;
  color: var(--habitat-cinza-60);
}
.rbt-pod-ep__aviso i { color: var(--habitat-azul); font-size: 15px; }

.rbt-pod-ep__texto { max-width: 760px; margin: 40px auto 0; }
.rbt-pod-ep__texto p { font-size: 17px; line-height: 1.8; color: var(--habitat-cinza-80); }
.rbt-pod-ep__texto p:last-child { margin-bottom: 0; }
.rbt-pod-ep__ouvir { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 36px; }

/* =========================================================================
   Rani Conexão — o bloco escuro das duas telas
   ========================================================================= */

.rbt-pod-conexao-area {
  position: relative;
  overflow: hidden;
  padding: 84px 0 88px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-pod-conexao-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-pod-conexao__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-pod-conexao__conteudo { position: relative; z-index: 1; }

.rbt-pod-conexao { display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: center; }
.rbt-pod-conexao__texto h2 { color: #fff; }
.rbt-pod-conexao__texto h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-pod-conexao__texto p { margin: 18px 0 0; max-width: 620px; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }
.rbt-pod-conexao__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
  height: 58px;
  padding: 0 30px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 700;
  transition: background .3s ease, transform .3s ease;
}
.rbt-pod-conexao__cta:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-3px); }
.rbt-pod-conexao__cta i { transition: transform .3s ease; }
.rbt-pod-conexao__cta:hover i { transform: translateX(4px); }

/* =========================================================================
   Modo escuro
   ========================================================================= */

.active-dark-mode .rbt-pod-abertura,
.active-dark-mode .rbt-pod-ep { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-pod-outros-area { background: var(--color-darkest); }

.active-dark-mode .rbt-pod-abertura__titulo,
.active-dark-mode .rbt-pod-cab h2,
.active-dark-mode .rbt-pod-ep__cab h1,
.active-dark-mode .rbt-pod-destaque__corpo strong,
.active-dark-mode .rbt-pod-card h3 a { color: var(--color-white-dark); }
.active-dark-mode .rbt-pod-abertura__titulo em,
.active-dark-mode .rbt-pod-cab h2 em { color: var(--habitat-verde); background: none; }

.active-dark-mode .rbt-pod-selo,
.active-dark-mode .rbt-pod-selo--claro,
.active-dark-mode .rbt-pod-card__num { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-pod-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-pod-destaque,
.active-dark-mode .rbt-pod-card { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-pod-destaque__rotulo,
.active-dark-mode .rbt-pod-destaque__link,
.active-dark-mode .rbt-pod-ep__aviso i,
.active-dark-mode .rbt-pod-nota a { color: var(--habitat-azul-claro); }

.active-dark-mode .rbt-pod-abertura__fundo,
.active-dark-mode .rbt-pod-ep__fundo {
  background:
    radial-gradient(circle at 90% 4%, rgba(155, 193, 49, .07), transparent 42%),
    radial-gradient(circle at 4% 94%, rgba(34, 115, 195, .16), transparent 46%);
}

.active-dark-mode .rbt-pod-abertura,
.active-dark-mode .rbt-pod-ep,
.active-dark-mode .rbt-pod-outros-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
}

/* =========================================================================
   Movimento e telas menores
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-pod-destaque,
    .rbt-pod-card,
    .rbt-pod-ep__texto,
    .rbt-pod-conexao__texto {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 1199px) {
  .rbt-pod-destaque { grid-template-columns: 420px 1fr; gap: 30px; }
}

@media (max-width: 991px) {
  .rbt-pod-abertura, .rbt-pod-ep { padding: 54px 0 64px; }
  .rbt-pod-destaque { grid-template-columns: 1fr; padding: 18px; }
  .rbt-pod-destaque__corpo { padding: 0 8px 10px; }
  .rbt-pod-destaque__play { width: 62px; height: 62px; font-size: 22px; }
  .rbt-pod-outros-area { padding: 58px 0 70px; }
  .rbt-pod-conexao-area { padding: 60px 0 66px; }
  .rbt-pod-conexao { grid-template-columns: 1fr; gap: 26px; }
  .rbt-pod-player__play { width: 68px; height: 68px; font-size: 24px; }
}

@media (max-width: 575px) {
  .rbt-pod-abertura__acoes .rbt-hero__cta,
  .rbt-pod-ep__ouvir .rbt-hero__cta { width: 100%; justify-content: center; }
  .rbt-pod-conexao__cta { width: 100%; justify-content: center; }
}

/* =========================================================================
   Peças comuns das quatro últimas páginas
   Rani Conexão, materiais, política e 404 compartilham selo e cabeçalho —
   o desenho de cada uma vem depois, com o prefixo próprio.
   ========================================================================= */

.rbt-conex-selo, .rbt-mat-selo, .rbt-priv-selo, .rbt-e404-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 22px;
}
.rbt-conex-selo i, .rbt-mat-selo i, .rbt-priv-selo i, .rbt-e404-selo i { font-size: 14px; }
.rbt-conex-selo--claro, .rbt-mat-selo--claro, .rbt-priv-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-conex-selo--amarelo, .rbt-mat-selo--amarelo, .rbt-priv-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-conex-abertura__titulo, .rbt-mat-abertura__titulo, .rbt-priv-abertura__titulo,
.rbt-conex-cab h2, .rbt-priv-cab h2, .rbt-e404-titulo,
.rbt-conex-agenda__texto h2, .rbt-mat-visita__texto h2, .rbt-priv-dados__texto h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 42px);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
.rbt-conex-abertura__titulo em, .rbt-mat-abertura__titulo em, .rbt-priv-abertura__titulo em,
.rbt-priv-cab h2 em, .rbt-e404-titulo em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* Fundo claro com halos — o mesmo gesto de abertura das outras internas. */
.rbt-conex-abertura, .rbt-mat-abertura, .rbt-priv-abertura, .rbt-e404-area {
  position: relative;
  overflow: hidden;
  padding: 76px 0 88px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 58%, #FFFFFF 100%);
}
.rbt-conex-abertura__fundo, .rbt-mat-abertura__fundo, .rbt-priv-abertura__fundo, .rbt-e404-fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 88% 6%, rgba(155, 193, 49, .14), transparent 42%),
    radial-gradient(circle at 6% 94%, rgba(1, 49, 97, .09), transparent 46%);
}
.rbt-conex-abertura .container, .rbt-mat-abertura .container,
.rbt-priv-abertura .container, .rbt-e404-area .container { position: relative; z-index: 1; }

/* Bloco escuro — mesma assinatura azul das demais páginas. */
.rbt-conex-agenda-area, .rbt-mat-visita-area, .rbt-priv-dados-area {
  position: relative;
  overflow: hidden;
  padding: 86px 0 90px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
}
.rbt-conex-agenda-area::before, .rbt-mat-visita-area::before, .rbt-priv-dados-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-conex-agenda__fundo, .rbt-mat-visita__fundo, .rbt-priv-dados__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 8%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%),
    radial-gradient(circle at 4% 96%, rgba(255, 255, 255, .04) 0 24%, transparent 24.3%);
}
.rbt-conex-agenda__conteudo, .rbt-mat-visita__conteudo, .rbt-priv-dados__conteudo { position: relative; z-index: 1; }
.rbt-conex-agenda, .rbt-mat-visita, .rbt-priv-dados { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
.rbt-conex-agenda__texto h2, .rbt-mat-visita__texto h2, .rbt-priv-dados__texto h2 { color: #fff; }
.rbt-conex-agenda__texto h2 em, .rbt-mat-visita__texto h2 em, .rbt-priv-dados__texto h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-conex-agenda__texto p, .rbt-mat-visita__texto p, .rbt-priv-dados__texto p { margin: 18px 0 0; font-size: 16px; line-height: 1.75; color: rgba(255, 255, 255, .86); }

/* Botão amarelo dos blocos escuros. */
.rbt-conex-agenda__wpp, .rbt-mat-visita__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  height: 58px;
  padding: 0 28px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-family: var(--font-secondary);
  font-weight: 700;
  transition: background .3s ease, transform .3s ease;
}
.rbt-conex-agenda__wpp:hover, .rbt-mat-visita__cta:hover { background: #B6D65C; color: var(--habitat-azul-escuro); transform: translateY(-3px); }
/* Botão vazado dos blocos escuros. */
.rbt-conex-agenda__pod, .rbt-mat-visita__wpp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  height: 58px;
  padding: 0 26px;
  border-radius: 500px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .3);
  color: #fff;
  font-family: var(--font-secondary);
  font-weight: 700;
  transition: background .3s ease, border-color .3s ease, transform .3s ease;
}
.rbt-conex-agenda__pod:hover, .rbt-mat-visita__wpp:hover { background: rgba(255, 255, 255, .18); border-color: rgba(255, 255, 255, .5); color: #fff; transform: translateY(-3px); }
.rbt-conex-agenda__acoes, .rbt-mat-visita__acoes { display: grid; gap: 12px; }

/* =========================================================================
   Rani Conexão
   ========================================================================= */

.rbt-conex-abertura__texto { max-width: 760px; margin: 0 auto 46px; text-align: center; }
.rbt-conex-abertura__lide { margin: 18px 0 14px; font-size: 17.5px; line-height: 1.7; color: var(--habitat-azul-escuro); font-family: var(--font-secondary); font-weight: 500; }
.rbt-conex-abertura__texto p:last-child { margin: 0; font-size: 16px; line-height: 1.75; color: var(--habitat-cinza-80); }

/* O formato em números: quatro dados, o último sem número (é um extra). */
.rbt-conex-formato { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.rbt-conex-formato li {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 26px 24px 24px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-conex-formato li:hover { transform: translateY(-4px); border-color: var(--color-primary-alt); box-shadow: 0 18px 36px rgba(16, 38, 56, .09); }
.rbt-conex-formato__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 20px;
  margin-bottom: 16px;
}
.rbt-conex-formato strong {
  font-family: var(--font-secondary);
  font-size: clamp(30px, 3.2vw, 40px);
  font-weight: 800;
  line-height: 1;
  color: var(--habitat-azul);
  font-variant-numeric: tabular-nums;
}
.rbt-conex-formato li > span:last-child { margin-top: 10px; font-size: 14.5px; line-height: 1.6; color: var(--habitat-cinza-80); }
/* O extra não tem número: ganha o amarelo para não parecer um dado faltando. */
.rbt-conex-formato__extra { background: var(--color-primary-light); border-color: var(--color-primary-alt); }
.rbt-conex-formato__extra .rbt-conex-formato__icone { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-conex-conteudo { padding: 88px 0 96px; background: #fff; }
.rbt-conex-bloco { margin-bottom: 84px; }
.rbt-conex-bloco--ultimo { margin-bottom: 0; }
.rbt-conex-cab { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 18px; margin-bottom: 28px; }
.rbt-conex-cab__num {
  font-family: var(--font-secondary);
  font-size: 15px;
  font-weight: 800;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 15px;
  font-variant-numeric: tabular-nums;
}
.rbt-conex-cab h2 { position: relative; padding-bottom: 16px; font-size: clamp(24px, 2.9vw, 32px); }
.rbt-conex-cab h2::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 54px; height: 3px;
  border-radius: 3px;
  background: var(--habitat-verde);
}
.rbt-conex-texto { max-width: 820px; }
.rbt-conex-texto p { font-size: 16.5px; line-height: 1.78; color: var(--habitat-cinza-80); }
.rbt-conex-texto p:last-child { margin-bottom: 0; }

.rbt-conex-publico { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.rbt-conex-publico li {
  display: grid;
  grid-template-columns: 30px 1fr;
  gap: 14px;
  align-items: start;
  padding: 22px 24px;
  border-radius: 18px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-primary-alt);
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--habitat-cinza-80);
}
.rbt-conex-publico i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-azul-escuro);
  font-size: 15px;
}

.rbt-conex-mudancas { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.rbt-conex-mudanca {
  position: relative;
  overflow: hidden;
  padding: 30px 28px 28px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-conex-mudanca:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .1); }
.rbt-conex-mudanca__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 22px;
}
.rbt-conex-mudanca__num {
  position: absolute;
  right: 22px;
  top: 18px;
  font-family: var(--font-secondary);
  font-size: 42px;
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
}
.rbt-conex-mudanca h3 { margin: 18px 0 10px; font-size: 19px; color: var(--habitat-azul-escuro); }
.rbt-conex-mudanca p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }

.rbt-conex-quem__cartao {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 28px;
  align-items: start;
  padding: 34px 36px;
  border-radius: 24px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
}
/* Não há foto publicada da diretora: as iniciais fazem as vezes do retrato. */
.rbt-conex-quem__inicial {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  border-radius: 50%;
  background: var(--habitat-azul);
  color: #fff;
  font-family: var(--font-secondary);
  font-size: 30px;
  font-weight: 800;
  letter-spacing: .02em;
}
.rbt-conex-quem__cartao h3 { margin: 0; font-size: 22px; color: var(--habitat-azul-escuro); }
.rbt-conex-quem__papel {
  display: inline-block;
  margin: 8px 0 16px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--habitat-azul);
}
.rbt-conex-quem__cartao p { font-size: 15.5px; line-height: 1.75; color: var(--habitat-cinza-80); }
.rbt-conex-quem__cartao p:last-child { margin-bottom: 0; }
.rbt-conex-quem__nota {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 18px 0 0;
  padding: 18px 22px;
  border-radius: 16px;
  border: 1px dashed var(--color-primary-alt);
  font-size: 15px;
  color: var(--habitat-cinza-80);
}
.rbt-conex-quem__nota i { color: var(--habitat-azul); font-size: 19px; }

/* =========================================================================
   Materiais gratuitos
   ========================================================================= */

.rbt-mat-abertura__texto { max-width: 700px; margin: 0 auto 46px; text-align: center; }
.rbt-mat-abertura__lide { margin: 18px 0 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

.rbt-mat-lista { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.rbt-mat-item {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 28px;
  padding: 30px 30px 32px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-mat-item:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 22px 44px rgba(16, 38, 56, .11); }

/* A "capa" é desenhada: um retângulo com lombada, o ícone do assunto e o
   número do material. Não existe arte de capa publicada pela escola. */
.rbt-mat-item__capa {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  aspect-ratio: 3 / 4;
  border-radius: 6px 16px 16px 6px;
  background: linear-gradient(150deg, var(--habitat-azul-claro) 0%, var(--habitat-azul) 55%, var(--habitat-azul-escuro) 100%);
  color: #fff;
  box-shadow: 0 16px 32px rgba(2, 30, 54, .22);
}
.rbt-mat-item__capa::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 12px;
  border-radius: 6px 0 0 6px;
  background: rgba(0, 0, 0, .18);
}
.rbt-mat-item__capa i { font-size: 34px; color: var(--habitat-verde); }
.rbt-mat-item__capa b { font-family: var(--font-secondary); font-size: 11.5px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.rbt-mat-item__capa em {
  position: absolute;
  right: 12px;
  bottom: 10px;
  font-style: normal;
  font-family: var(--font-secondary);
  font-size: 13px;
  font-weight: 800;
  color: rgba(255, 255, 255, .5);
}

.rbt-mat-item__corpo { display: flex; flex-direction: column; }
.rbt-mat-item__etiqueta {
  align-self: flex-start;
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 6px 13px;
}
.rbt-mat-item h3 { margin: 14px 0 10px; font-size: 21px; line-height: 1.3; color: var(--habitat-azul-escuro); }
.rbt-mat-item__chamada { margin: 0 0 10px; font-family: var(--font-secondary); font-size: 16px; line-height: 1.55; color: var(--habitat-azul); }
.rbt-mat-item p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }
.rbt-mat-item__para { display: flex; align-items: center; gap: 9px; margin: 16px 0 20px; font-size: 13.5px; color: var(--habitat-cinza-60); }
.rbt-mat-item__para i { color: var(--habitat-azul); font-size: 16px; }
.rbt-mat-item .rbt-hero__cta { align-self: flex-start; margin-top: auto; }

.rbt-mat-nota {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 34px 0 0;
  font-size: 14.5px;
  color: var(--habitat-cinza-60);
}
.rbt-mat-nota i { color: var(--habitat-azul); font-size: 17px; }

/* =========================================================================
   Política de privacidade
   ========================================================================= */

.rbt-priv-abertura__grade { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: center; }
.rbt-priv-abertura__lide { margin: 18px 0 0; font-size: 17px; line-height: 1.72; color: var(--habitat-cinza-80); }

.rbt-priv-doc {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 22px;
  align-items: center;
  padding: 30px 32px;
  border-radius: 24px;
  background: linear-gradient(150deg, var(--color-primary-light) 0%, #EAF4FB 100%);
  border: 1px solid var(--color-primary-alt);
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.rbt-priv-doc:hover { transform: translateY(-4px); border-color: var(--habitat-azul); box-shadow: 0 20px 40px rgba(16, 38, 56, .1); }
.rbt-priv-doc__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border-radius: 20px;
  background: #fff;
  color: var(--habitat-azul);
  font-size: 30px;
}
.rbt-priv-doc__corpo { display: flex; flex-direction: column; gap: 6px; }
.rbt-priv-doc__corpo small { font-family: var(--font-secondary); font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--habitat-cinza-60); }
.rbt-priv-doc__corpo strong { font-family: var(--font-secondary); font-size: 19px; line-height: 1.3; color: var(--habitat-azul-escuro); }
.rbt-priv-doc__link { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-family: var(--font-secondary); font-size: 14px; font-weight: 700; color: var(--habitat-azul); }

.rbt-priv-coleta-area { padding: 86px 0 96px; background: #fff; }
.rbt-priv-cab { max-width: 640px; margin: 0 auto 44px; text-align: center; }

.rbt-priv-coleta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; }
.rbt-priv-item {
  position: relative;
  padding: 30px 30px 28px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-priv-item:hover { transform: translateY(-4px); border-color: var(--color-primary-alt); box-shadow: 0 18px 36px rgba(16, 38, 56, .09); }
.rbt-priv-item__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 21px;
}
/* A resposta vem antes da leitura: é o que a pessoa procura na página. */
.rbt-priv-item__resposta {
  position: absolute;
  right: 24px;
  top: 26px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-radius: 500px;
  padding: 6px 14px;
}
.rbt-priv-item__resposta--nao { background: #E6F4EA; color: #1E6B3A; }
.rbt-priv-item__resposta--sim { background: var(--color-primary-lighter); color: var(--habitat-azul); }
.rbt-priv-item__resposta--talvez { background: var(--habitat-verde); color: var(--habitat-cinza-80); }
.rbt-priv-item h3 { margin: 18px 0 10px; font-size: 19px; color: var(--habitat-azul-escuro); }
.rbt-priv-item p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }

.rbt-priv-relatorio {
  display: grid;
  grid-template-columns: 54px 1fr auto;
  gap: 20px;
  align-items: center;
  margin-top: 24px;
  padding: 24px 28px;
  border-radius: 20px;
  border: 1px dashed var(--color-primary-alt);
  transition: border-color .25s ease, transform .25s ease;
}
.rbt-priv-relatorio:hover { border-color: var(--habitat-azul); transform: translateX(4px); }
.rbt-priv-relatorio__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 16px;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 22px;
}
.rbt-priv-relatorio strong { display: block; font-family: var(--font-secondary); font-size: 17px; color: var(--habitat-azul-escuro); }
.rbt-priv-relatorio small { display: block; margin-top: 4px; font-size: 14px; line-height: 1.6; color: var(--habitat-cinza-60); }
.rbt-priv-relatorio > i { color: var(--habitat-azul); font-size: 18px; }

.rbt-priv-dados__canais { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.rbt-priv-dados__canais li {
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 16px;
  align-items: center;
  padding: 18px 22px;
  border-radius: 16px;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .26);
}
.rbt-priv-dados__canais i,
.rbt-priv-dados__canais .rbt-icone-wpp { color: var(--habitat-verde); fill: var(--habitat-verde); font-size: 20px; }
.rbt-priv-dados__canais span { display: flex; flex-direction: column; gap: 2px; }
/* Branco a 92% sobre o cartão translúcido: os 72% do resto do site ficam em
   3,7:1, abaixo do mínimo para texto pequeno. */
.rbt-priv-dados__canais small { font-family: var(--font-secondary); font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: rgba(255, 255, 255, .92); }
.rbt-priv-dados__canais a { font-family: var(--font-secondary); font-size: 15.5px; color: #fff; word-break: break-word; }
.rbt-priv-dados__canais a:hover { color: var(--habitat-verde); }

/* =========================================================================
   Página 404
   ========================================================================= */

/* Esta página não tem faixa de breadcrumb, e o cabeçalho é transparente e
   fica POR CIMA do conteúdo: o padding do topo é que reserva a altura dele. */
.rbt-e404-area { padding: 200px 0 100px; text-align: center; }
.rbt-e404-caixa { position: relative; max-width: 660px; margin: 0 auto; }
/* O 404 é marca d'água atrás do texto: quem cai aqui errou o caminho e não
   precisa de um número gigante gritando isso. */
.rbt-e404-numero {
  position: absolute;
  left: 50%;
  top: -56px;
  transform: translateX(-50%);
  z-index: -1;
  font-family: var(--font-secondary);
  font-size: clamp(150px, 22vw, 260px);
  font-weight: 800;
  line-height: 1;
  color: var(--color-primary-lighter);
  pointer-events: none;
  user-select: none;
}
.rbt-e404-titulo { margin: 0; }
.rbt-e404-texto { margin: 18px auto 30px; max-width: 520px; font-size: 16.5px; line-height: 1.72; color: var(--habitat-cinza-80); }
.rbt-e404-acoes { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

.rbt-e404-atalhos { margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--color-border); }
.rbt-e404-atalhos__rotulo {
  display: block;
  margin-bottom: 20px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-cinza-60);
}
.rbt-e404-atalhos ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.rbt-e404-atalhos a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  border-radius: 500px;
  background: #fff;
  border: 1px solid var(--color-border);
  font-family: var(--font-secondary);
  font-size: 14.5px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
  transition: border-color .25s ease, color .25s ease, transform .25s ease;
}
.rbt-e404-atalhos a:hover { border-color: var(--habitat-azul); color: var(--habitat-azul); transform: translateY(-3px); }
.rbt-e404-atalhos i { color: var(--habitat-azul); font-size: 16px; }

/* =========================================================================
   Modo escuro das quatro
   ========================================================================= */

.active-dark-mode .rbt-conex-abertura,
.active-dark-mode .rbt-mat-abertura,
.active-dark-mode .rbt-priv-abertura,
.active-dark-mode .rbt-e404-area { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-conex-conteudo,
.active-dark-mode .rbt-priv-coleta-area { background: var(--color-darkest); }

.active-dark-mode .rbt-conex-abertura__titulo,
.active-dark-mode .rbt-mat-abertura__titulo,
.active-dark-mode .rbt-priv-abertura__titulo,
.active-dark-mode .rbt-conex-cab h2,
.active-dark-mode .rbt-priv-cab h2,
.active-dark-mode .rbt-e404-titulo,
.active-dark-mode .rbt-conex-abertura__lide,
.active-dark-mode .rbt-conex-mudanca h3,
.active-dark-mode .rbt-conex-quem__cartao h3,
.active-dark-mode .rbt-mat-item h3,
.active-dark-mode .rbt-priv-item h3,
.active-dark-mode .rbt-priv-doc__corpo strong,
.active-dark-mode .rbt-priv-relatorio strong { color: var(--color-white-dark); }
.active-dark-mode .rbt-conex-abertura__titulo em,
.active-dark-mode .rbt-mat-abertura__titulo em,
.active-dark-mode .rbt-priv-abertura__titulo em,
.active-dark-mode .rbt-priv-cab h2 em,
.active-dark-mode .rbt-e404-titulo em { color: var(--habitat-verde); background: none; }

.active-dark-mode .rbt-conex-selo,
.active-dark-mode .rbt-mat-selo,
.active-dark-mode .rbt-priv-selo,
.active-dark-mode .rbt-e404-selo,
.active-dark-mode .rbt-conex-selo--claro,
.active-dark-mode .rbt-priv-selo--claro { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-conex-selo--amarelo,
.active-dark-mode .rbt-mat-selo--amarelo,
.active-dark-mode .rbt-priv-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-conex-formato li,
.active-dark-mode .rbt-conex-publico li,
.active-dark-mode .rbt-conex-mudanca,
.active-dark-mode .rbt-conex-quem__cartao,
.active-dark-mode .rbt-mat-item,
.active-dark-mode .rbt-priv-doc,
.active-dark-mode .rbt-priv-item,
.active-dark-mode .rbt-e404-atalhos a { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-conex-formato__icone,
.active-dark-mode .rbt-conex-cab__num,
.active-dark-mode .rbt-conex-mudanca__icone,
.active-dark-mode .rbt-mat-item__etiqueta,
.active-dark-mode .rbt-priv-doc__icone,
.active-dark-mode .rbt-priv-item__icone,
.active-dark-mode .rbt-priv-relatorio__icone { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-conex-formato strong,
.active-dark-mode .rbt-mat-item__chamada,
.active-dark-mode .rbt-conex-quem__papel,
.active-dark-mode .rbt-priv-doc__link { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-conex-mudanca__num,
.active-dark-mode .rbt-e404-numero { color: rgba(255, 255, 255, .07); }
.active-dark-mode .rbt-priv-item__resposta--sim { background: rgba(255, 255, 255, .1); color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-priv-item__resposta--nao { background: rgba(60, 160, 100, .22); color: #8FE0AE; }
.active-dark-mode .rbt-e404-atalhos,
.active-dark-mode .rbt-priv-relatorio,
.active-dark-mode .rbt-conex-quem__nota { border-color: var(--dark-color-border-2); }

.active-dark-mode .rbt-conex-abertura__fundo,
.active-dark-mode .rbt-mat-abertura__fundo,
.active-dark-mode .rbt-priv-abertura__fundo,
.active-dark-mode .rbt-e404-fundo {
  background:
    radial-gradient(circle at 88% 6%, rgba(155, 193, 49, .07), transparent 42%),
    radial-gradient(circle at 6% 94%, rgba(34, 115, 195, .16), transparent 46%);
}

.active-dark-mode .rbt-conex-abertura,
.active-dark-mode .rbt-conex-conteudo,
.active-dark-mode .rbt-mat-abertura,
.active-dark-mode .rbt-priv-abertura,
.active-dark-mode .rbt-priv-coleta-area,
.active-dark-mode .rbt-e404-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
}

/* =========================================================================
   Movimento e telas menores
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-conex-formato li,
    .rbt-conex-publico li,
    .rbt-conex-mudanca,
    .rbt-conex-quem__cartao,
    .rbt-mat-item,
    .rbt-priv-doc,
    .rbt-priv-item,
    .rbt-priv-relatorio {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 1199px) {
  .rbt-conex-formato { grid-template-columns: repeat(2, 1fr); }
  .rbt-mat-lista { grid-template-columns: 1fr; }
}

@media (max-width: 991px) {
  .rbt-conex-abertura, .rbt-mat-abertura, .rbt-priv-abertura { padding: 56px 0 66px; }
  .rbt-conex-conteudo, .rbt-priv-coleta-area { padding: 60px 0 70px; }
  .rbt-conex-bloco { margin-bottom: 62px; }
  .rbt-conex-publico { grid-template-columns: 1fr; }
  .rbt-conex-mudancas { grid-template-columns: 1fr; }
  .rbt-conex-quem__cartao { grid-template-columns: 1fr; gap: 20px; padding: 28px 24px; }
  .rbt-priv-abertura__grade { grid-template-columns: 1fr; gap: 30px; }
  .rbt-priv-coleta { grid-template-columns: 1fr; }
  .rbt-conex-agenda-area, .rbt-mat-visita-area, .rbt-priv-dados-area { padding: 62px 0 68px; }
  .rbt-conex-agenda, .rbt-mat-visita, .rbt-priv-dados { grid-template-columns: 1fr; gap: 30px; }
  .rbt-e404-area { padding: 160px 0 76px; }
}

@media (max-width: 575px) {
  .rbt-conex-formato { grid-template-columns: 1fr; }
  .rbt-conex-cab { grid-template-columns: 1fr; gap: 12px; }
  .rbt-conex-cab__num { justify-self: start; }
  .rbt-mat-item { grid-template-columns: 1fr; gap: 22px; }
  .rbt-mat-item__capa { max-width: 130px; }
  .rbt-priv-item__resposta { position: static; display: inline-block; margin-top: 14px; }
  .rbt-priv-relatorio { grid-template-columns: 46px 1fr; }
  .rbt-priv-relatorio > i { display: none; }
  .rbt-e404-acoes .rbt-hero__cta { width: 100%; justify-content: center; }
}

/* Wrappers de coluna: sem `min-width: 0` uma coluna de grid não encolhe
   abaixo do conteúdo e a vizinha (foto, cartão) fica espremida. */
.rbt-hist-abertura__texto,
.rbt-priv-abertura__texto,
.rbt-conex-quem { min-width: 0; }

/* =========================================================================
   Páginas de e-book (as duas iscas: escola ideal e marcos do bebê)
   Um só desenho para as duas — o template é partials/pagina-ebook.php.
   Prefixo `rbt-ebk-`. Reaproveitam de propósito: .rbt-hero__cta,
   .rbt-etapa__link e o cartão amarelo .rbt-curso__cta*.
   ========================================================================= */

/* ---- Abertura: capa + promessa ----------------------------------------- */

.rbt-ebk-abertura {
  position: relative;
  overflow: hidden;
  padding: 78px 0 84px;
  background: linear-gradient(168deg, #FFFFFF 0%, #F4F9FC 56%, #FFFFFF 100%);
}
.rbt-ebk-abertura__fundo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 8% 8%, rgba(155, 193, 49, .13), transparent 42%),
    radial-gradient(circle at 94% 88%, rgba(1, 49, 97, .08), transparent 46%);
}
.rbt-ebk-abertura .container { position: relative; z-index: 1; }

.rbt-ebk-abertura__grade { display: grid; gap: 54px; align-items: center; }
/* A capa em pé é estreita; a deitada (16:9) precisa de mais largura. */
.rbt-ebk-abertura__grade--vertical   { grid-template-columns: 400px 1fr; }
.rbt-ebk-abertura__grade--horizontal { grid-template-columns: 1fr 1.05fr; }

/* A moldura repete o recorte do hero — mesma família das outras internas. */
.rbt-ebk-capa {
  position: relative;
  margin: 0;
  border-radius: 22px 22px 76px 22px;
  overflow: hidden;
  box-shadow: 0 22px 44px rgba(16, 38, 56, .16), 0 44px 84px rgba(16, 38, 56, .10);
}
.rbt-ebk-capa img { display: block; width: 100%; height: auto; }
.rbt-ebk-capa__selo {
  position: absolute;
  left: 16px;
  bottom: 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 15px;
  border-radius: 500px;
  background: rgba(2, 28, 55, .74);
  color: #fff;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 600;
  backdrop-filter: blur(4px);
}
.rbt-ebk-capa__selo i { color: var(--habitat-verde); font-size: 14px; }

.rbt-ebk-promessa { min-width: 0; }

.rbt-ebk-selo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--font-secondary);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 8px 18px;
  margin-bottom: 20px;
}
.rbt-ebk-selo i { font-size: 14px; }
.rbt-ebk-selo--claro { background: #fff; border: 1px solid var(--color-primary-alt); }
.rbt-ebk-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.rbt-ebk-titulo,
.rbt-ebk-cab h2,
.rbt-ebk-amostra__texto h2,
.rbt-ebk-outro__corpo h2 {
  margin: 0;
  font-size: clamp(28px, 3.6vw, 44px);
  line-height: 1.13;
  letter-spacing: -.022em;
  color: var(--habitat-azul-escuro);
  text-wrap: balance;
}
/* O grifo amarelo só funciona em fundo claro — ver o modo escuro no fim. */
.rbt-ebk-titulo em,
.rbt-ebk-cab h2 em {
  font-style: normal;
  color: var(--habitat-azul);
  background: linear-gradient(180deg, transparent 64%, rgba(155, 193, 49, .5) 64%, rgba(155, 193, 49, .5) 94%, transparent 94%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.rbt-ebk-lide {
  margin: 20px 0 14px;
  font-family: var(--font-secondary);
  font-size: 17.5px;
  font-weight: 500;
  line-height: 1.6;
  color: var(--habitat-azul);
  max-width: 54ch;
}
.rbt-ebk-texto { margin: 0 0 26px; font-size: 15.5px; line-height: 1.75; color: var(--habitat-cinza-80); max-width: 58ch; }

/* Ficha: os três números que dizem o tamanho do material. */
.rbt-ebk-ficha {
  list-style: none;
  padding: 0;
  margin: 0 0 30px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.rbt-ebk-ficha li {
  padding: 16px 18px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid var(--color-border);
}
.rbt-ebk-ficha strong {
  display: block;
  font-family: var(--font-secondary);
  font-size: 26px;
  line-height: 1;
  color: var(--habitat-azul);
}
.rbt-ebk-ficha span { display: block; margin-top: 7px; font-size: 13px; line-height: 1.4; color: var(--habitat-cinza-60); }

.rbt-ebk-abertura__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; }
.rbt-ebk-para { display: inline-flex; align-items: center; gap: 9px; font-size: 13.5px; color: var(--habitat-cinza-60); }
.rbt-ebk-para i { color: var(--habitat-azul); font-size: 16px; }

/* ---- O que tem dentro --------------------------------------------------- */

.rbt-ebk-partes-area { padding: 76px 0 10px; background: #fff; }
.rbt-ebk-cab { max-width: 640px; margin: 0 0 40px; }

.rbt-ebk-partes { list-style: none; padding: 0; margin: 0; display: grid; gap: 18px; }
.rbt-ebk-parte {
  display: grid;
  grid-template-columns: 78px 1fr;
  gap: 24px;
  align-items: start;
  padding: 26px 28px;
  border-radius: 20px;
  background: var(--color-primary-light);
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-ebk-parte:hover { transform: translateY(-4px); border-color: var(--color-primary-alt); box-shadow: 0 20px 40px rgba(16, 38, 56, .10); }
.rbt-ebk-parte__num {
  font-family: var(--font-secondary);
  font-size: 34px;
  font-weight: 800;
  line-height: 1;
  color: var(--habitat-azul);
  opacity: .32;
}
.rbt-ebk-parte__corpo { min-width: 0; }
.rbt-ebk-parte h3 { margin: 0 0 8px; font-size: 20px; line-height: 1.3; color: var(--habitat-azul-escuro); }
.rbt-ebk-parte__linha { margin: 0 0 10px; font-family: var(--font-secondary); font-size: 15px; color: var(--habitat-azul); }
.rbt-ebk-parte p { margin: 0; font-size: 15px; line-height: 1.72; color: var(--habitat-cinza-80); }

/* ---- Amostra: uma página do próprio arquivo ----------------------------- */

.rbt-ebk-amostra-area { padding: 66px 0 78px; background: #fff; }
.rbt-ebk-amostra { display: grid; gap: 48px; align-items: center; }
.rbt-ebk-amostra--vertical   { grid-template-columns: 440px 1fr; }
.rbt-ebk-amostra--horizontal { grid-template-columns: 1.1fr 1fr; }

.rbt-ebk-amostra__figura {
  margin: 0;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  box-shadow: 0 20px 44px rgba(16, 38, 56, .13);
}
.rbt-ebk-amostra__figura img { display: block; width: 100%; height: auto; }
.rbt-ebk-amostra__texto { min-width: 0; }
.rbt-ebk-amostra__texto p { margin: 18px 0 0; font-size: 15.5px; line-height: 1.75; color: var(--habitat-cinza-80); }
.rbt-ebk-amostra__itens { list-style: none; padding: 0; margin: 22px 0 0; display: grid; gap: 13px; }
.rbt-ebk-amostra__itens li { display: grid; grid-template-columns: 26px 1fr; gap: 12px; align-items: start; font-size: 15px; line-height: 1.65; color: var(--habitat-cinza-80); }
.rbt-ebk-amostra__itens i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--color-primary-lighter);
  color: var(--habitat-azul);
  font-size: 13px;
}

/* ---- Formulário: o bloco escuro da página ------------------------------- */

.rbt-ebk-form-area {
  position: relative;
  overflow: hidden;
  padding: 86px 0 92px;
  background: linear-gradient(160deg, #2F8FEE 0%, var(--habitat-azul) 42%, #011E3D 100%);
  isolation: isolate;
  scroll-margin-top: 100px;
}
.rbt-ebk-form-area::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--habitat-verde) 0 62%, var(--habitat-azul-medio) 62% 100%);
  z-index: 2;
}
.rbt-ebk-form__fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 92% 10%, rgba(255, 255, 255, .10) 0 17%, transparent 17.3%),
    radial-gradient(circle at 92% 10%, rgba(255, 255, 255, .06) 0 26%, transparent 26.3%),
    radial-gradient(circle at 5% 94%, rgba(255, 255, 255, .07) 0 16%, transparent 16.3%);
}
.rbt-ebk-form__conteudo { position: relative; z-index: 1; }
.rbt-ebk-form__grade { display: grid; grid-template-columns: 1fr 1fr; gap: 52px; align-items: center; }

.rbt-ebk-form__texto { min-width: 0; }
.rbt-ebk-form__texto h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 40px);
  line-height: 1.15;
  letter-spacing: -.02em;
  color: #fff;
  text-wrap: balance;
}
.rbt-ebk-form__texto h2 em { font-style: normal; color: var(--habitat-verde); }
.rbt-ebk-form__texto > p { margin: 16px 0 0; font-size: 16px; line-height: 1.72; color: rgba(255, 255, 255, .86); }
.rbt-ebk-form__promessas { list-style: none; padding: 0; margin: 24px 0 0; display: grid; gap: 12px; }
.rbt-ebk-form__promessas li {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 12px;
  align-items: start;
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, .92);
}
.rbt-ebk-form__promessas i { color: var(--habitat-verde); font-size: 17px; }

/* O cartão branco tem dois estados: formulário e entrega. */
.rbt-ebk-cartao {
  background: #fff;
  border-radius: 24px;
  padding: 32px 32px 28px;
  box-shadow: 0 26px 54px rgba(2, 30, 54, .26);
}

.rbt-ebk-campo { margin-bottom: 16px; }
.rbt-ebk-campo label,
.rbt-ebk-escolha legend {
  display: block;
  margin-bottom: 8px;
  font-family: var(--font-secondary);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--habitat-cinza-80);
}
/* Asterisco de campo obrigatório e erros usam `--habitat-erro`, NÃO o vermelho
   institucional — ver a nota "Vermelho institucional" no fim do arquivo. */
.rbt-ebk-campo label span,
.rbt-ebk-escolha legend span { color: var(--habitat-erro); }
.rbt-ebk-campo input {
  width: 100%;
  height: 52px;
  padding: 0 16px;
  border-radius: 12px;
  border: 1px solid var(--color-border);
  background: var(--color-primary-light);
  font-size: 15px;
  color: var(--habitat-cinza-80);
  transition: border-color .25s ease, background .25s ease, box-shadow .25s ease;
}
.rbt-ebk-campo input::placeholder { color: var(--habitat-cinza-60); opacity: 1; }
.rbt-ebk-campo input:focus {
  outline: none;
  background: #fff;
  border-color: var(--habitat-azul);
  box-shadow: 0 0 0 3px rgba(1, 49, 97, .16);
}
.rbt-ebk-campo input[aria-invalid="true"] { border-color: var(--habitat-erro); background: #F1F5FA; }
.rbt-ebk-erro { display: block; margin-top: 7px; font-size: 13px; font-weight: 600; color: var(--habitat-erro); }

.rbt-ebk-escolha { border: 0; padding: 0; margin: 4px 0 20px; min-width: 0; }
.rbt-ebk-opcoes { display: flex; flex-wrap: wrap; gap: 9px; }
/* A opção inteira é clicável: o quadrado sozinho é alvo pequeno demais. */
.rbt-ebk-opcao {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 9px 15px;
  border-radius: 500px;
  border: 1px solid var(--color-border);
  background: var(--color-primary-light);
  font-size: 14px;
  color: var(--habitat-cinza-80);
  cursor: pointer;
  transition: border-color .25s ease, background .25s ease, color .25s ease;
}
/* O template esconde a caixa nativa (`input[type=checkbox] {opacity:0;
   position:absolute}`) e desenha o quadrado num `~ label` irmão. Aqui o input
   está DENTRO do label, então aquele desenho nunca apareceria: a caixa é
   redesenhada, e o `position/opacity` precisa ser desfeito na mão. */
.rbt-ebk-opcao input {
  appearance: none;
  -webkit-appearance: none;
  position: static;
  opacity: 1;
  flex: 0 0 auto;
  display: inline-grid;
  place-content: center;
  width: 18px;
  height: 18px;
  margin: 0;
  border: 1.5px solid var(--habitat-cinza-40);
  border-radius: 5px;
  background: #fff;
  cursor: pointer;
  transition: background .2s ease, border-color .2s ease;
}
.rbt-ebk-opcao input[type="radio"] { border-radius: 50%; }
.rbt-ebk-opcao input::before {
  content: "";
  width: 10px;
  height: 10px;
  background: #fff;
  transform: scale(0);
  transition: transform .15s ease;
  clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}
.rbt-ebk-opcao input[type="radio"]::before { width: 8px; height: 8px; border-radius: 50%; clip-path: none; }
.rbt-ebk-opcao input:checked { background: var(--habitat-azul); border-color: var(--habitat-azul); }
.rbt-ebk-opcao input:checked::before { transform: scale(1); }
.rbt-ebk-opcao:hover { border-color: var(--color-primary-alt); background: var(--color-primary-lighter); }
.rbt-ebk-opcao:has(input:checked) { border-color: var(--habitat-azul); background: var(--color-primary-lighter); color: var(--habitat-azul); }
.rbt-ebk-opcao:has(input:focus-visible) { outline: 2px solid var(--habitat-azul); outline-offset: 2px; }

.rbt-ebk-enviar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  width: 100%;
  height: 58px;
  border: 0;
  border-radius: 500px;
  background: var(--habitat-azul);
  color: #fff;
  font-family: var(--font-secondary);
  font-size: 15.5px;
  font-weight: 700;
  cursor: pointer;
  transition: background .3s ease, transform .3s ease, box-shadow .3s ease;
}
.rbt-ebk-enviar:hover { background: var(--habitat-azul-escuro); transform: translateY(-3px); box-shadow: 0 14px 30px rgba(1, 30, 61, .3); }
.rbt-ebk-enviar i { transition: transform .3s ease; }
.rbt-ebk-enviar:hover i { transform: translateX(4px); }

.rbt-ebk-form__nota { margin: 16px 0 0; font-size: 12.5px; line-height: 1.6; color: var(--habitat-cinza-60); text-align: center; }
.rbt-ebk-form__nota a { color: var(--habitat-azul); text-decoration: underline; }

/* Estado 2: a entrega (o que no site oficial é a página de "obrigado"). */
.rbt-ebk-entrega { text-align: center; padding: 8px 0 6px; }
.rbt-ebk-entrega:focus { outline: none; }
.rbt-ebk-entrega__icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 62px;
  height: 62px;
  margin-bottom: 18px;
  border-radius: 50%;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-size: 28px;
}
.rbt-ebk-entrega h3 { margin: 0 0 10px; font-size: 23px; line-height: 1.25; color: var(--habitat-azul-escuro); }
.rbt-ebk-entrega p { margin: 0 0 24px; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }
.rbt-ebk-baixar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  width: 100%;
  height: 58px;
  border-radius: 500px;
  background: var(--habitat-verde);
  color: var(--habitat-cinza-80);
  font-family: var(--font-secondary);
  font-size: 15.5px;
  font-weight: 700;
  transition: background .3s ease, transform .3s ease;
}
.rbt-ebk-baixar:hover { background: #B6D65C; color: var(--habitat-cinza-80); transform: translateY(-3px); }
.rbt-ebk-entrega__wpp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  margin-top: 16px;
  font-size: 13.5px;
  color: var(--habitat-azul);
}
.rbt-ebk-entrega__wpp:hover { color: var(--habitat-azul-escuro); }

/* ---- O outro material --------------------------------------------------- */

.rbt-ebk-outro-area { padding: 74px 0 78px; background: var(--color-primary-light); }
.rbt-ebk-outro {
  display: grid;
  grid-template-columns: 190px 1fr;
  gap: 34px;
  align-items: center;
  padding: 28px 32px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid var(--color-border);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.rbt-ebk-outro:hover { transform: translateY(-5px); border-color: var(--color-primary-alt); box-shadow: 0 22px 44px rgba(16, 38, 56, .12); }
.rbt-ebk-outro__capa { margin: 0; border-radius: 10px; overflow: hidden; box-shadow: 0 14px 28px rgba(16, 38, 56, .18); }
.rbt-ebk-outro__capa img { display: block; width: 100%; height: auto; }
.rbt-ebk-outro__corpo { min-width: 0; }
.rbt-ebk-outro__corpo h2 { font-size: clamp(22px, 2.4vw, 28px); margin: 12px 0 10px; }
.rbt-ebk-outro__corpo p { margin: 0 0 16px; font-size: 15px; line-height: 1.7; color: var(--habitat-cinza-80); }
.rbt-ebk-outro__etiqueta {
  display: inline-block;
  font-family: var(--font-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--habitat-azul);
  background: var(--color-primary-lighter);
  border-radius: 500px;
  padding: 6px 13px;
}

/* O cartão amarelo não tem padding-top próprio — quem dá o respiro é a seção
   anterior. Depois de um bloco de fundo colorido ele encostaria no texto. */
.rbt-ebk-outro-area + .rbt-curso__cta { padding-top: 78px; }

/* ---- Modo escuro -------------------------------------------------------- */

.active-dark-mode .rbt-ebk-abertura { background: linear-gradient(168deg, var(--color-darkest) 0%, var(--color-darker) 100%); }
.active-dark-mode .rbt-ebk-partes-area,
.active-dark-mode .rbt-ebk-amostra-area { background: var(--color-darkest); }
.active-dark-mode .rbt-ebk-outro-area { background: var(--color-darker); }
.active-dark-mode .rbt-ebk-abertura__fundo {
  background:
    radial-gradient(circle at 8% 8%, rgba(155, 193, 49, .07), transparent 42%),
    radial-gradient(circle at 94% 88%, rgba(34, 115, 195, .16), transparent 46%);
}

.active-dark-mode .rbt-ebk-titulo,
.active-dark-mode .rbt-ebk-cab h2,
.active-dark-mode .rbt-ebk-amostra__texto h2,
.active-dark-mode .rbt-ebk-outro__corpo h2,
.active-dark-mode .rbt-ebk-parte h3 { color: var(--color-white-dark); }
/* Sobre fundo escuro o grifo vira faixa oliva: o destaque passa a ser a cor. */
.active-dark-mode .rbt-ebk-titulo em,
.active-dark-mode .rbt-ebk-cab h2 em { color: var(--habitat-verde); background: none; }
.active-dark-mode .rbt-ebk-lide,
.active-dark-mode .rbt-ebk-parte__linha { color: var(--habitat-azul-claro); }

.active-dark-mode .rbt-ebk-selo,
.active-dark-mode .rbt-ebk-selo--claro { color: var(--habitat-verde); background: rgba(255, 255, 255, .06); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-ebk-selo--amarelo { background: var(--habitat-verde); color: var(--habitat-cinza-80); }

.active-dark-mode .rbt-ebk-ficha li,
.active-dark-mode .rbt-ebk-parte,
.active-dark-mode .rbt-ebk-outro { background: rgba(255, 255, 255, .04); border-color: var(--dark-color-border-2); }
.active-dark-mode .rbt-ebk-ficha strong,
.active-dark-mode .rbt-ebk-parte__num { color: var(--habitat-azul-claro); }
.active-dark-mode .rbt-ebk-outro__etiqueta,
.active-dark-mode .rbt-ebk-amostra__itens i { background: rgba(255, 255, 255, .07); color: var(--habitat-verde); }
.active-dark-mode .rbt-ebk-amostra__figura { border-color: var(--dark-color-border-2); }

/* O cartão do formulário continua branco no modo escuro — é o ponto de luz do
   bloco azul. Só que o template pinta de claro o texto e o placeholder de todo
   input quando `.active-dark-mode` está ligado, e sobre branco isso some. */
.active-dark-mode .rbt-ebk-cartao input:not([type="checkbox"]):not([type="radio"]) {
  color: var(--habitat-cinza-80);
  background: var(--color-primary-light);
  border-color: var(--color-border);
}
.active-dark-mode .rbt-ebk-cartao input::placeholder { color: var(--habitat-cinza-60); opacity: 1; }
.active-dark-mode .rbt-ebk-cartao input:not([type="checkbox"]):not([type="radio"]):focus { background: #fff; border-color: var(--habitat-azul); }
.active-dark-mode .rbt-ebk-opcao { color: var(--habitat-cinza-80); background: var(--color-primary-light); border-color: var(--color-border); }
.active-dark-mode .rbt-ebk-opcao input { background: #fff; border-color: var(--habitat-cinza-40); }
.active-dark-mode .rbt-ebk-opcao input:checked { background: var(--habitat-azul); border-color: var(--habitat-azul); }
.active-dark-mode .rbt-ebk-opcao:has(input:checked) { color: var(--habitat-azul); background: var(--color-primary-lighter); border-color: var(--habitat-azul); }

/* Os cinzas do MIV somem sobre fundo escuro: o token é remapeado por seção
   (custom property herda), em vez de uma regra de cor por bloco. O cartão do
   formulário continua branco de propósito e tem cor própria. */
.active-dark-mode .rbt-ebk-abertura,
.active-dark-mode .rbt-ebk-partes-area,
.active-dark-mode .rbt-ebk-amostra-area,
.active-dark-mode .rbt-ebk-outro-area {
  --habitat-cinza-80: rgba(255, 255, 255, .82);
  --habitat-cinza-60: rgba(255, 255, 255, .60);
  --habitat-cinza-40: rgba(255, 255, 255, .42);
}

/* ---- Movimento e telas menores ------------------------------------------ */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rbt-ebk-parte,
    .rbt-ebk-ficha li,
    .rbt-ebk-amostra__itens li,
    .rbt-ebk-outro {
      animation: rbtEntra linear both;
      animation-timeline: view();
      animation-range: entry 4% cover 22%;
    }
  }
}

@media (max-width: 1199px) {
  .rbt-ebk-abertura__grade--vertical { grid-template-columns: 330px 1fr; gap: 40px; }
  .rbt-ebk-amostra--vertical { grid-template-columns: 360px 1fr; gap: 36px; }
  .rbt-ebk-form__grade { gap: 38px; }
}

@media (max-width: 991px) {
  .rbt-ebk-abertura { padding: 56px 0 64px; }
  .rbt-ebk-abertura__grade,
  .rbt-ebk-abertura__grade--vertical,
  .rbt-ebk-abertura__grade--horizontal { grid-template-columns: 1fr; gap: 32px; }
  /* Em pé, a capa ocuparia a tela inteira antes do texto começar. */
  .rbt-ebk-capa--vertical { max-width: 300px; }
  .rbt-ebk-partes-area { padding: 58px 0 6px; }
  .rbt-ebk-amostra-area { padding: 52px 0 62px; }
  .rbt-ebk-amostra,
  .rbt-ebk-amostra--vertical,
  .rbt-ebk-amostra--horizontal { grid-template-columns: 1fr; gap: 30px; }
  .rbt-ebk-amostra--vertical .rbt-ebk-amostra__figura { max-width: 420px; }
  .rbt-ebk-form-area { padding: 62px 0 70px; }
  .rbt-ebk-form__grade { grid-template-columns: 1fr; gap: 32px; }
  .rbt-ebk-outro-area { padding: 56px 0 60px; }
  .rbt-ebk-outro-area + .rbt-curso__cta { padding-top: 58px; }
}

@media (max-width: 575px) {
  /* Empilhados, os três cartões da ficha comiam meia tela antes do botão:
     no celular cada um vira uma linha (número + rótulo lado a lado). */
  .rbt-ebk-ficha { grid-template-columns: 1fr; gap: 10px; }
  .rbt-ebk-ficha li { display: flex; align-items: baseline; gap: 12px; padding: 12px 16px; }
  .rbt-ebk-ficha strong { font-size: 22px; }
  .rbt-ebk-ficha span { margin-top: 0; }
  .rbt-ebk-parte { grid-template-columns: 1fr; gap: 10px; padding: 24px 22px; }
  .rbt-ebk-cartao { padding: 26px 22px 24px; }
  .rbt-ebk-abertura__acoes .rbt-hero__cta { width: 100%; justify-content: center; }
  .rbt-ebk-outro { grid-template-columns: 1fr; gap: 22px; padding: 24px 22px; }
  .rbt-ebk-outro__capa { max-width: 170px; }
}

/* Aviso do <noscript> no cartão do formulário: precisa saltar mais que a nota
   normal, porque é a única saída de quem está sem JavaScript. */
.rbt-ebk-form__nota--noscript {
  margin: 0 0 16px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--color-secondary-alt);
  color: var(--habitat-cinza-80);
  font-size: 13.5px;
  text-align: left;
}

/* =========================================================================
   Vermelho institucional — onde pode e onde não pode
   =========================================================================
   O manual (item 5) declara #1E5389 como uma das três cores institucionais,
   mas NÃO exige as três em toda peça: item 9 "Usos indevidos" não fala de
   paleta, e no próprio símbolo a divisão medida é 81,6% azul / 11,8% amarelo
   / 6,7% vermelho. O vermelho é acento da marca, não co-protagonista.

   Restrição que decide tudo: vermelho x azul institucional dá 1,20:1 e
   vermelho sobre o azul-escuro do bloco de clímax dá 1,18:1. Os dois não
   podem se tocar. Vermelho só vive em superfície clara — 7,40:1 no branco,
   6,86:1 no #F2F7FB, 4,76:1 sobre o amarelo.

   Usos aprovados (2026-07-29):
   1. Trio de pilares da home — uma cor institucional por pilar
      (.rbt-pilar__icone--azul / --amarelo / --vermelho).
   2. Pin de endereço — e SÓ o pin, onde ele aponta para um logradouro real:
      as quatro unidades do rodapé, a ficha das páginas de etapa e as ruas da
      página de Contato. Pin vermelho é convenção de mapa, não de alerta.

   Não usar: preenchimento de área grande, botão, borda de campo, qualquer
   coisa dentro do bloco azul, e degradê amarelo→vermelho (vira laranja).

   No modo escuro o vermelho some (1,18:1): cada um dos usos acima já tem
   regra .active-dark-mode devolvendo amarelo ou azul-claro.

   Erro de formulário usa --habitat-erro (#8C1D18), separado de propósito.
   ========================================================================= */
