/* =========================================================================
   COMPONENTES ALTITUDE — biblioteca de CSS para containers NATIVOS do
   Elementor (M5.2.1). Fronteira reafirmada (M5.2.0_PEAK_ALTITUDE.md §1):
   isto é CSS de COMPONENTE (header, footer, cards, etc.) — as variáveis
   de tema (--pht-*), a escala tipográfica (.type-* / .mono-*) e a escada
   de elevação (.elev-*) continuam vivendo SÓ no custom_css do Kit
   (aplicado via pht/kit-update). Este arquivo NUNCA redeclara nada
   disso — só CONSOME (var(--pht-*)) e REAPROVEITA (.type-h2 etc.).

   REGRAS DURAS (M5.2.1, aprendidas em validação live contra produção):
   1. Sempre px, nunca rem — o Astra reduz a raiz para 91,2% em ≤921px;
      rem encolheria tudo em 8,8%. Conversão: base 16px.
   2. line-height SEMPRE explícito — herdar o do site erra a altura
      (achado real: um chip saiu 32px em vez de 38px por falta disso).
   3. Todo seletor dentro de @media(max-width:1024px) e/ou prefixado
      .pht-m — nada pode vazar para o desktop.
   4. var(--pht-*) sempre, nunca cor literal.
   5. box-sizing: border-box explícito onde a borda entra na altura.
   6. (M5.2.1.1) TODO seletor de componente precisa de PELO MENOS 3
      classes (especificidade 0,3,0) — o Elementor estiliza `.e-con`
      (containers nativos) com `.elementor-element.e-con` (0,2,0); com
      só 2 classes nossas, empatamos em especificidade e perdemos o
      desempate por ordem no bundle do LiteSpeed (acha real, 22/07:
      header saiu 175px/relative/z-auto em vez de 123px/sticky/z-40
      dentro de um .e-con real). Estratégia: encadear pelo bloco pai
      (`.pht-m .pht-m-header .pht-m-header__bar`) ou, quando não há pai
      natural, duplicar a própria classe (`.pht-m-card-meta.pht-m-card-meta`).
      EXCEÇÃO deliberada: `.pht-m-chips`/`.pht-m-chip*` (trilho de
      categorias) — confirmados intactos nos dois cenários porque não
      vivem dentro de um `.e-con`; não tocados por precaução (não mexer
      no que já funciona).

   Medidas do header validadas ao vivo (PoC aprovada, 14/14 idênticas,
   fora de .e-con — ver M5.2.1.1 para o achado de especificidade DENTRO
   de .e-con): shell 123px total, barra 60px, trilho de chips 62px,
   chip 38px.
   ========================================================================= */

/* =========================================================================
   INTEGRAÇÃO DO HEADER NO MOBILE (M5.2.6 — Opção A)
   O header ALTITUDE é injetado por código (class-plugin::render_mobile_header)
   no topo do <body>, a partir do template salvo 1818, dentro de
   `.pht-m-header-mount`. FORA do @media (desktop): o mount some — o desktop
   usa o header #224 do Theme Builder, INTOCADO. DENTRO do @media (mobile,
   logo abaixo): o mount e os wrappers do Elementor viram `display:contents`
   para o `position:sticky` do `.pht-m-header` valer relativo ao <body> —
   senão o wrapper curto do widget confinaria o sticky e o header rolaria
   embora. E aí sim escondemos o #224 (e o header nativo do Astra) só no
   mobile: no mobile, o único header é o ALTITUDE.
   ========================================================================= */
.pht-m-header-mount { display: none; }

/* =========================================================================
   INTEGRAÇÃO DO FOOTER NO MOBILE (M5.4 — mesmo padrão do header, M5.2.6)
   O footer ALTITUDE é injetado por código (class-plugin::render_mobile_footer)
   no `wp_footer`, a partir do template salvo (ID configurado via filtro —
   ver docblock do método), dentro de `.pht-m-footer-mount`. FORA do @media
   (desktop): o mount some — o desktop usa o footer do Theme Builder (#261),
   INTOCADO. DENTRO do @media (mobile): achata os wrappers do Elementor
   (mesma cautela do header, mesmo sem exigência de sticky aqui) e esconde
   o footer do Theme Builder/Astra nativo só no mobile.

   Achado PENDENTE DE CONFIRMAÇÃO (ao contrário do header, ainda não
   validado ao vivo): `footer.site-footer` segue a MESMA convenção já
   confirmada para `header.site-header` (tema baseado no starter "_s"),
   mas não foi inspecionado no DOM real do site — se sobrar algum resquício
   do footer nativo/Theme Builder vazando no mobile, confira no inspector
   e me passe a classe real para eu completar esta regra. */
.pht-m-footer-mount { display: none; }

@media (max-width: 1024px) {

  /* Integração do header (M5.2.6) — achata mount + wrappers do Elementor
     para o sticky do `.pht-m-header` valer relativo ao <body>. */
  .pht-m-header-mount,
  .pht-m-header-mount .elementor,
  .pht-m-header-mount .elementor-element,
  .pht-m-header-mount .e-con-inner,
  .pht-m-header-mount .elementor-widget-container {
    display: contents;
  }

  /* No mobile só o ALTITUDE aparece: esconde o header #224 (Elementor,
     condição "todo o site") e o header nativo do Astra, se houver. O #224
     continua intocado e visível no desktop (esta regra está DENTRO do
     @media mobile). */
  .elementor-location-header,
  header.site-header,
  .ast-primary-header-bar,
  .ast-above-header-wrap,
  .ast-below-header-wrap {
    display: none !important;
  }

  /* Integração do footer (M5.4) — mesma cautela de achatar o mount e os
     wrappers do Elementor do header; sem exigência de position:sticky no
     footer, mas mantém o padrão para não depender de nenhum wrapper com
     altura curta. */
  .pht-m-footer-mount,
  .pht-m-footer-mount .elementor,
  .pht-m-footer-mount .elementor-element,
  .pht-m-footer-mount .e-con-inner,
  .pht-m-footer-mount .elementor-widget-container {
    display: contents;
  }

  /* No mobile só o ALTITUDE aparece: esconde o footer do Theme Builder
     (#261, condição include/general) e o footer nativo do Astra, se
     houver. O #261 continua intocado e visível no desktop. */
  .elementor-location-footer,
  footer.site-footer {
    display: none !important;
  }

  /* ===== HEADER ===== */

  .pht-m .pht-m-header.pht-m-header {
    position: sticky;
    top: 0;
    z-index: 40;
    border-bottom: 1px solid var(--pht-border);
    /* M5.9.5 — vidro-fosco SÓ ao rolar.
       No topo da página não há conteúdo passando por baixo, então a
       translucidez só deixava o header com aspecto acinzentado/lavado — mais
       visível ainda no tema escuro. Agora o estado de repouso é SÓLIDO e o
       vidro entra quando a página rola (classe `.is-scrolled`, a partir de
       20px, aplicada pelo mesmo listener do hide-on-scroll — sem listener
       novo). A transição de 300ms cobre cor e desfoque, então a troca é
       suave nos dois sentidos.
       O sólido continua sendo o fallback natural para navegador sem
       color-mix()/backdrop-filter — se o vidro degradar, fica opaco em vez
       de vazar o canvas (achado de 25/07). */
    background-color: var(--pht-header-solid, var(--pht-surface));
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transition: transform 300ms, background-color 300ms ease, backdrop-filter 300ms ease,
      -webkit-backdrop-filter 300ms ease;
    box-sizing: border-box;
  }
  .pht-m .pht-m-header.pht-m-header.is-scrolled {
    background-color: var(--pht-surface);
    background-color: color-mix(
      in srgb,
      var(--pht-surface) var(--pht-header-opacity, 85%),
      transparent
    );
    backdrop-filter: blur(var(--pht-header-blur, 12px));
    -webkit-backdrop-filter: blur(var(--pht-header-blur, 12px));
  }
  .pht-m .pht-m-header.pht-m-header.is-hidden {
    transform: translateY(-100%);
  }
  /* Quem pede menos animação recebe a troca instantânea, sem transição. */
  @media (prefers-reduced-motion: reduce) {
    .pht-m .pht-m-header.pht-m-header {
      transition: none;
    }
  }

  /* M5.2.4.3 — altura da barra e do logo por VARIÁVEL, não por valor fixo.
     Motivo técnico: os controles do Elementor geram `.elementor-element-XXX
     .alvo` (0,2,1), que PERDE para os nossos seletores de 3 classes (0,3,1)
     — um controle de altura comum simplesmente não teria efeito. Definindo
     a custom property no wrapper, o valor cascateia sem disputa de
     especificidade. Os padrões continuam sendo as medidas do V2 (60/32). */
  .pht-m .pht-m-header .pht-m-header__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: var(--pht-header-bar-h, 60px);
    padding: 0 20px;
    box-sizing: border-box;
  }

  .pht-m .pht-m-header .pht-m-header__logo img {
    height: var(--pht-header-logo-h, 32px);
    width: auto;
    display: block;
  }

  /* M5.2.3.2 — achado real (22/07): `.pht-m-header__menu-btn` não tinha
     regra própria, só a combinada com `.search-btn` (que faltava
     `margin-left`, único recuo do protótipo entre os dois). Medido:
     27,6px de largura em vez de 44px e o header saindo 125,1px em vez
     de 123px. Split em 2 regras — cada propriedade de layout continua
     explícita nas duas (regra geral desde a M5.2.1.2), só o recuo é
     exclusivo do menu-btn (primeiro item do bar, precisa alinhar com a
     borda visual do protótipo). */
  .pht-m .pht-m-header .pht-m-header__menu-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    width: 44px;
    border-radius: 9999px;
    margin-left: -8px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--pht-text);
    box-sizing: border-box;
  }
  .pht-m .pht-m-header .pht-m-header__search-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    width: 44px;
    border-radius: 9999px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--pht-text);
    box-sizing: border-box;
  }
  .pht-m .pht-m-header .pht-m-header__menu-btn:active,
  .pht-m .pht-m-header .pht-m-header__search-btn:active {
    background: var(--pht-surface-sunken);
  }

  /* M5.2.4 — ícones lucide inline (o widget Cabeçalho Mobile renderiza o
     próprio SVG, não um Icon widget que se auto-dimensiona): tamanhos
     exatos do protótipo — Menu 24px, Search 20px (traço 2.25 vem no
     markup do widget). */
  .pht-m .pht-m-header .pht-m-header__menu-btn svg {
    height: 24px;
    width: 24px;
    display: block;
  }
  .pht-m .pht-m-header .pht-m-header__search-btn svg {
    height: 20px;
    width: 20px;
    display: block;
  }

  /* Ações à direita (busca) — encosta na borda com o mesmo -8px do
     menu-btn (o `-mr-2` do protótipo), mantendo o logo centrado. */
  .pht-m .pht-m-header .pht-m-header__actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-right: -8px;
  }

  /* Logo com troca automática claro↔escuro (dark:hidden / dark:block do
     protótipo): duas <img> no markup, o data-theme decide qual aparece.
     A altura (32px) já vem de `.pht-m-header__logo img` acima. */
  /* M5.2.4.2 — blindagem de responsividade: em telas estreitas (320px) a
     barra é 44px + logo + 44px; sem teto de largura, um logo largo
     espremeria os botões de toque. `min-width:0` deixa o item flex
     encolher de verdade (o padrão `auto` impede) e `object-fit` mantém a
     proporção enquanto encolhe. */
  .pht-m .pht-m-header .pht-m-header__logo {
    display: flex;
    align-items: center;
    min-width: 0;
    flex-shrink: 1;
  }
  .pht-m .pht-m-header .pht-m-header__logo img {
    max-width: 100%;
    object-fit: contain;
  }
  /* M5.2.6.1 — troca de logo BLINDADA. Achado real (25/07): mesmo com o
     escopo `.pht-m` presente e a regra entregue, os DOIS <img> apareciam no
     modo claro no site ao vivo — o clássico empate de especificidade que o
     LiteSpeed desempata errado por ordem no bundle. Classe DUPLICADA (0,4,0)
     + `!important` garantem que a visibilidade por tema sempre vença. */
  .pht-m .pht-m-header .pht-m-header__logo-dark.pht-m-header__logo-dark {
    display: none !important;
  }
  html[data-theme='dark'] .pht-m .pht-m-header .pht-m-header__logo-light.pht-m-header__logo-light {
    display: none !important;
  }
  html[data-theme='dark'] .pht-m .pht-m-header .pht-m-header__logo-dark.pht-m-header__logo-dark {
    display: block !important;
  }

  /* ===== TRILHO DE CATEGORIAS (chips) =====
     M5.2.3 — achado real: a "exceção" que mantinha estes seletores com
     1-2 classes ERA o bug. `.pht-m-chip` é um <a> e `.pht-m-chip__dot`
     é um <span> — os estilos de link/span do Astra/Elementor têm
     especificidade igual ou maior e ganhavam por ordem no bundle
     (padding/font-weight do chip ativo ignorados, __dot saindo 0×0
     porque `display:inline-block` virava `inline`). Fix: encadear pela
     ESTRUTURA REAL do widget (`.pht-m-chips > .pht-m-chips__rail >
     a.pht-m-chip > span.pht-m-chip__dot`) — 3+ classes sempre, sem
     exceção nenhuma. Toda propriedade de layout permanece declarada
     explicitamente (regra geral desde a M5.2.1.2). */

  .pht-m .pht-m-chips.pht-m-chips {
    position: relative;
  }
  /* M5.2.1.2 — achado real: quando o trilho vive DENTRO do header (que É
     um .e-con), o padding do Elementor vaza para .pht-m-chips por falta
     de declaração explícita nossa. */
  .pht-m .pht-m-header .pht-m-chips {
    padding: 0;
  }

  .pht-m .pht-m-chips .pht-m-chips__rail {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 62px;
    padding: 12px 20px;
    overflow-x: auto;
    scrollbar-width: none;
    box-sizing: border-box;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
    cursor: grab;
  }
  .pht-m .pht-m-chips .pht-m-chips__rail::-webkit-scrollbar {
    display: none;
  }
  .pht-m .pht-m-chips .pht-m-chips__rail.is-dragging {
    cursor: grabbing;
  }

  .pht-m-chips .pht-m-chips__rail .pht-m-chip {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 38px;
    padding: 8px 16px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: transparent;
    color: var(--pht-text-2);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    white-space: nowrap;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m-chips .pht-m-chips__rail .pht-m-chip:hover {
    color: var(--pht-text);
  }
  /* Estado ativo: combinar com a elevação do Kit (elev-1) no markup do
     Elementor, ex.: class="pht-m-chip is-active elev-1" — nunca
     redeclarada aqui (M5.2.0 §1: nunca duplicar o que já vive no Kit). */
  .pht-m-chips .pht-m-chips__rail .pht-m-chip.is-active {
    display: flex;
    gap: 6px;
    padding: 8px 16px 8px 12px;
    font-weight: 600;
    background: var(--pht-chip-active-color, var(--pht-accent));
    border-color: transparent;
    color: #fff;
    box-sizing: border-box;
  }
  .pht-m-chips .pht-m-chips__rail .pht-m-chip.is-home.is-active {
    background: var(--pht-grad-sunset);
  }
  .pht-m-chips .pht-m-chips__rail .pht-m-chip .pht-m-chip__dot {
    display: block;
    height: 8px;
    width: 8px;
    border-radius: 9999px;
    flex-shrink: 0;
    box-sizing: border-box;
  }

  /* M5.2.4 — chip "Início" do trilho: selo PeakHome (18px) + peso
     semibold + recuo esquerdo p/ o ícone (pl-3 do protótipo), mesmo
     inativo. Ativo já herda o fundo sunset de `.is-home.is-active`. */
  .pht-m-chips .pht-m-chips__rail .pht-m-chip.is-home {
    padding: 8px 16px 8px 12px;
    font-weight: 600;
    color: var(--pht-text);
  }
  .pht-m-chips .pht-m-chips__rail .pht-m-chip .pht-m-chip__home {
    display: block;
    height: 18px;
    width: 18px;
    flex-shrink: 0;
  }

  /* ===== DRAWER (M5.2.4 — widget peak-altitude-mobile-header) =====
     Overlay `fixed` renderizado como IRMÃO do `.pht-m-header` (nunca
     dentro: o `backdrop-filter` do header viraria bloco de contenção do
     `fixed`). Fechado = invisível por `visibility` (transição atrasada
     p/ o painel terminar de sair antes de sumir); aberto por `.is-open`
     (animação 100% CSS). Medidas do protótipo (site-header.tsx, drawer):
     painel 82% / máx 320px, cabeçalho px-5 py-4, linhas px-5 py-3.5,
     rodapé p-5, backdrop #070d18/60, elevação via `.elev-3` do Kit. */

  .pht-m .pht-m-drawer.pht-m-drawer {
    position: fixed;
    inset: 0;
    z-index: 50;
    visibility: hidden;
    transition: visibility 0s linear 300ms;
  }
  .pht-m .pht-m-drawer.pht-m-drawer.is-open {
    visibility: visible;
    transition: visibility 0s;
  }

  .pht-m .pht-m-drawer .pht-m-drawer__backdrop {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgb(7 13 24 / 0.6);
    opacity: 0;
    transition: opacity 300ms;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
  }
  .pht-m .pht-m-drawer.is-open .pht-m-drawer__backdrop {
    opacity: 1;
  }

  .pht-m .pht-m-drawer .pht-m-drawer__panel {
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    flex-direction: column;
    height: 100%;
    height: 100dvh;
    width: 82%;
    max-width: 320px;
    background: var(--pht-surface);
    transform: translateX(-100%);
    transition: transform 300ms cubic-bezier(0.22, 1, 0.36, 1);
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer.is-open .pht-m-drawer__panel {
    transform: translateX(0);
  }

  .pht-m .pht-m-drawer .pht-m-drawer__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--pht-border);
    padding: 16px 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__logo {
    display: flex;
    align-items: center;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__logo img {
    height: 32px;
    width: auto;
    display: block;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__logo-dark.pht-m-drawer__logo-dark {
    display: none !important;
  }
  html[data-theme='dark'] .pht-m .pht-m-drawer .pht-m-drawer__logo-light.pht-m-drawer__logo-light {
    display: none !important;
  }
  html[data-theme='dark'] .pht-m .pht-m-drawer .pht-m-drawer__logo-dark.pht-m-drawer__logo-dark {
    display: block !important;
  }

  .pht-m .pht-m-drawer .pht-m-drawer__close {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    width: 40px;
    border-radius: 9999px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--pht-text);
    cursor: pointer;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__close:active {
    background: var(--pht-surface-sunken);
  }
  .pht-m .pht-m-drawer .pht-m-drawer__close svg {
    height: 20px;
    width: 20px;
    display: block;
  }

  .pht-m .pht-m-drawer .pht-m-drawer__theme {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--pht-border);
    padding: 14px 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__theme-label {
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    color: var(--pht-text-2);
  }

  .pht-m .pht-m-drawer .pht-m-drawer__list {
    flex: 1;
    overflow-y: auto;
    list-style: none;
    margin: 0;
    padding: 8px 0;
    box-sizing: border-box;
    /* Barra de rolagem discreta, na paleta do site (M5.2.4.2): trilho
       invisível, polegar no mesmo cinza-slate das bordas. Puramente
       cosmético e por token — troca sozinho no tema escuro, e onde o
       navegador ignorar (iOS/overlay) o scroll segue normal. */
    scrollbar-width: thin;
    scrollbar-color: var(--pht-border-strong) transparent;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__list::-webkit-scrollbar {
    width: 6px;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__list::-webkit-scrollbar-track {
    background: transparent;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__list::-webkit-scrollbar-thumb {
    background: var(--pht-border-strong);
    border-radius: 9999px;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__list::-webkit-scrollbar-thumb:hover {
    background: var(--pht-text-3);
  }
  .pht-m .pht-m-drawer .pht-m-drawer__link {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 20px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 16px;
    line-height: 24px;
    font-weight: 500;
    color: var(--pht-text);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__link.is-home {
    gap: 12px;
    font-weight: 600;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__link.is-active {
    color: var(--pht-accent);
  }
  .pht-m .pht-m-drawer .pht-m-drawer__link:active {
    background: var(--pht-surface-sunken);
  }
  .pht-m .pht-m-drawer .pht-m-drawer__home-icon {
    display: block;
    height: 20px;
    width: 20px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__dot {
    display: block;
    height: 10px;
    width: 10px;
    border-radius: 9999px;
    flex-shrink: 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__divider {
    list-style: none;
    height: 0;
    margin: 6px 20px;
    padding: 0;
    border-top: 1px solid var(--pht-border);
  }

  .pht-m .pht-m-drawer .pht-m-drawer__foot {
    border-top: 1px solid var(--pht-border);
    padding: 20px;
    box-sizing: border-box;
  }
  /* ===== CONTA / ENTRAR COM GOOGLE (M5.9.4) =====
     Fica acima do botão da newsletter, no rodapé do menu. Estilo NEUTRO de
     propósito (superfície + borda): o gradiente sunset é a chamada principal
     e não pode ter dois CTAs disputando atenção — Regra do Horizonte.
     O "G" mantém as cores oficiais do Google; o resto segue os tokens. */
  .pht-m .pht-m-drawer .pht-m-drawer__login {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    height: 48px;
    margin-bottom: 10px;
    border: 1px solid var(--pht-border-strong);
    border-radius: 9999px;
    background: var(--pht-surface);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__login:active {
    background: var(--pht-surface-sunken);
  }
  .pht-m .pht-m-drawer .pht-m-drawer__login-icon {
    display: block;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__account {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    width: 36px;
    flex-shrink: 0;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
    font-family: var(--font-display, 'Bricolage Grotesque', sans-serif);
    font-size: 13px;
    line-height: 1;
    font-weight: 700;
    color: #fff;
    box-sizing: border-box;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__account-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__account-name {
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 18px;
    font-weight: 700;
    color: var(--pht-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .pht-m .pht-m-drawer .pht-m-drawer__logout {
    margin-top: 2px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    letter-spacing: 0.96px;
    text-transform: uppercase;
    color: var(--pht-text-3);
    text-decoration: none;
  }

  .pht-m .pht-m-drawer .pht-m-drawer__newsletter {
    display: block;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
    padding: 14px 16px;
    text-align: center;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    box-sizing: border-box;
  }

  /* ===== BUSCA (M5.2.4.1 — overlay do widget peak-altitude-mobile-header) =====
     Tela cheia sobre o canvas, IRMÃO do `.pht-m-header` pelo mesmo motivo do
     drawer (o `backdrop-filter` do header capturaria um `fixed` filho).
     Medidas do protótipo (site-header.tsx, bloco searchOpen): container
     máx. 720px / px-5 pt-5, campo h-12 raio 12px, ícone 20px, cancelar
     14px semibold no accent, rótulos mono 12px, chips pill 14px,
     recentes 15px semibold com divisor. */

  /* M5.2.4.4 — vidro fosco: o overlay deixa a página entrever por trás, com
     desfoque, em vez do fundo sólido do V2. É um DESVIO deliberado do
     protótipo (lá o `bg-canvas` é opaco), pedido do autor — e combina com
     o próprio header, que já usa backdrop-filter. Opacidade e desfoque
     saem por variável para virarem controle no painel. */
  .pht-m .pht-m-search.pht-m-search {
    position: fixed;
    inset: 0;
    z-index: 50;
    background: var(--pht-search-bg, color-mix(in srgb, var(--pht-canvas) 82%, transparent));
    backdrop-filter: blur(var(--pht-search-blur, 20px));
    -webkit-backdrop-filter: blur(var(--pht-search-blur, 20px));
    overflow-y: auto;
    visibility: hidden;
    opacity: 0;
    transition: opacity 150ms, visibility 0s linear 150ms;
    box-sizing: border-box;
    scrollbar-width: thin;
    scrollbar-color: var(--pht-border-strong) transparent;
  }
  .pht-m .pht-m-search.pht-m-search::-webkit-scrollbar {
    width: 6px;
  }
  .pht-m .pht-m-search.pht-m-search::-webkit-scrollbar-track {
    background: transparent;
  }
  .pht-m .pht-m-search.pht-m-search::-webkit-scrollbar-thumb {
    background: var(--pht-border-strong);
    border-radius: 9999px;
  }
  .pht-m .pht-m-search.pht-m-search.is-open {
    visibility: visible;
    opacity: 1;
    transition: opacity 150ms, visibility 0s;
  }

  .pht-m .pht-m-search .pht-m-search__inner {
    margin: 0 auto;
    width: 100%;
    max-width: 720px;
    padding: 20px 20px 40px;
    box-sizing: border-box;
  }

  .pht-m .pht-m-search .pht-m-search__row {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0;
  }

  .pht-m .pht-m-search .pht-m-search__field {
    display: flex;
    flex: 1;
    align-items: center;
    gap: 12px;
    height: 48px;
    min-width: 0;
    border-radius: 12px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 0 16px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__icon {
    display: block;
    height: 20px;
    width: 20px;
    flex-shrink: 0;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-search .pht-m-search__input {
    height: 100%;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
    outline: none;
    background: transparent;
    box-shadow: none;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 16px;
    line-height: 24px;
    color: var(--pht-text);
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__input::placeholder {
    color: var(--pht-text-3);
    opacity: 1;
  }
  .pht-m .pht-m-search .pht-m-search__input::-webkit-search-cancel-button {
    -webkit-appearance: none;
    appearance: none;
  }

  .pht-m .pht-m-search .pht-m-search__cancel {
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    color: var(--pht-accent);
    white-space: nowrap;
    cursor: pointer;
  }

  .pht-m .pht-m-search .pht-m-search__label {
    margin: 32px 0 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px; /* 0.08em sobre 12px */
    color: var(--pht-text-3);
  }

  .pht-m .pht-m-search .pht-m-search__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
  }
  .pht-m .pht-m-search .pht-m-search__chip {
    display: inline-flex;
    align-items: center;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 8px 16px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    color: var(--pht-text-2);
    text-decoration: none;
    white-space: nowrap;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__chip:hover {
    border-color: var(--pht-border-strong);
  }

  .pht-m .pht-m-search .pht-m-search__list {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__list li {
    border-bottom: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-search .pht-m-search__list li:last-child {
    border-bottom: 0;
  }
  .pht-m .pht-m-search .pht-m-search__item {
    display: block;
    padding: 14px 0;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 15px;
    line-height: 20.625px; /* leading-snug (1.375) sobre 15px */
    font-weight: 600;
    color: var(--pht-text);
    text-decoration: none;
  }

  /* ---- Resultados ao vivo (M5.2.4.5) ----
     Mesma anatomia do card "trilha" (miniatura + corpo), em escala menor
     para caber vários na tela sem rolar: 56px em vez de 96px. Título com
     recorte em 2 linhas para nenhum resultado empurrar os outros. */

  .pht-m .pht-m-search .pht-m-search__results {
    margin-top: 24px;
  }
  .pht-m .pht-m-search .pht-m-search__hits {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__hits li {
    border-bottom: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-search .pht-m-search__hits li:last-child {
    border-bottom: 0;
  }
  .pht-m .pht-m-search .pht-m-search__hit {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 0;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__hit:active {
    opacity: 0.7;
  }
  .pht-m .pht-m-search .pht-m-search__hit-thumb {
    display: block;
    position: relative;
    height: 56px;
    width: 56px;
    flex-shrink: 0;
    border-radius: 12px;
    overflow: hidden;
    background: var(--pht-surface-sunken);
    box-sizing: border-box;
  }
  .pht-m .pht-m-search .pht-m-search__hit-thumb img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
  }
  .pht-m .pht-m-search .pht-m-search__hit-body {
    display: block;
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-search .pht-m-search__hit-cat {
    display: block;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 11px;
    line-height: 13.2px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.88px; /* 0.08em sobre 11px */
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-search .pht-m-search__hit-title {
    display: -webkit-box;
    margin-top: 3px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 15px;
    line-height: 20.625px;
    font-weight: 600;
    color: var(--pht-text);
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .pht-m .pht-m-search .pht-m-search__all {
    display: block;
    margin-top: 16px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    padding: 12px 16px;
    text-align: center;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    color: var(--pht-accent);
    text-decoration: none;
    box-sizing: border-box;
  }

  .pht-m .pht-m-search .pht-m-search__empty {
    margin: 32px 0 0;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 15px;
    line-height: 22px;
    color: var(--pht-text-2);
    text-align: center;
  }

  /* ===== FOOTER ===== */

  .pht-m .pht-m-footer.pht-m-footer {
    background: var(--pht-footer);
    color: #fff;
    box-sizing: border-box;
  }

  .pht-m .pht-m-footer .pht-m-footer__inner {
    display: block;
    padding: 40px 20px 32px;
    box-sizing: border-box;
  }

  .pht-m .pht-m-footer .pht-m-footer__brand-logo {
    height: 36px;
    width: auto;
    display: block;
  }

  .pht-m .pht-m-footer .pht-m-footer__brand-text {
    margin-top: 16px;
    max-width: 320px;
    font-size: 14px;
    line-height: 22.75px; /* leading-relaxed (1.625) sobre 14px */
    color: rgb(255 255 255 / 0.6);
  }

  .pht-m .pht-m-footer .pht-m-footer__social-link {
    display: flex;
    align-items: center;
    gap: 12px;
    border-radius: 12px;
    background: rgb(255 255 255 / 0.1);
    padding: 12px 16px;
    text-decoration: none;
    color: #fff;
    box-sizing: border-box;
  }
  .pht-m .pht-m-footer .pht-m-footer__social-link:active {
    background: rgb(255 255 255 / 0.2);
  }

  .pht-m .pht-m-footer .pht-m-footer__nav-title {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px; /* 0.08em sobre 12px */
    color: var(--pht-sunset-orange, #ff7a3c);
    margin-bottom: 16px;
  }

  .pht-m .pht-m-footer .pht-m-footer__nav-link {
    display: block;
    font-size: 14px;
    line-height: 20px;
    color: rgb(255 255 255 / 0.75);
    text-decoration: none;
  }
  .pht-m .pht-m-footer .pht-m-footer__nav-link:hover {
    color: #fff;
  }

  .pht-m .pht-m-footer .pht-m-footer__legal {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 40px;
    padding-top: 20px;
    border-top: 1px solid rgb(255 255 255 / 0.1);
  }
  .pht-m .pht-m-footer .pht-m-footer__legal-text {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 16.8px; /* leading-normal aprox. */
    color: rgb(255 255 255 / 0.45);
  }

  /* Wrapper externo (fora do fundo escuro): só o espaçamento antes do
     horizonte — o próprio `.pht-m-ridge` (M5.2.2) já resolve a cor para
     var(--pht-footer) por padrão, então o "vale" (canvas) aparece atrás
     da silhueta e o escuro só começa dentro de `.pht-m-footer`. */
  /* M5.9 — o "vale" antes da cordilheira agora é PINTADO pelo próprio
     wrapper, com `padding-top` em vez de `margin-top`.
     Achado real (31/07, print em aparelho): no protótipo o vale funciona
     porque a página inteira tem o canvas atrás; no WordPress o footer é
     injetado no `wp_footer`, FORA do `#page`, então o que aparecia atrás da
     margem era o fundo do `body` — branco. Resultado: faixa branca gritante
     acima da cordilheira em TODAS as páginas no tema escuro.
     `margin-top` nunca poderia resolver: área de margem fica FORA do fundo
     do elemento. Com `padding-top` + `background`, o vale é sempre o canvas,
     nos dois temas, independente do que o tema/plugins façam com o body.
     Altura ajustável pelo controle do widget (`--pht-footer-gap`). */
  .pht-m .pht-m-footer__root.pht-m-footer__root {
    display: block;
    margin-top: 0;
    padding-top: var(--pht-footer-gap, 64px);
    background: var(--pht-canvas);
  }

  .pht-m .pht-m-footer .pht-m-footer__socials {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 24px;
  }

  .pht-m .pht-m-footer .pht-m-footer__social-icon {
    display: block;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
  }

  .pht-m .pht-m-footer .pht-m-footer__social-text {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
  }

  .pht-m .pht-m-footer .pht-m-footer__social-name {
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 17.5px;
    font-weight: 700;
  }

  .pht-m .pht-m-footer .pht-m-footer__social-handle {
    display: block;
    margin-top: 2px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    color: rgb(255 255 255 / 0.6);
  }

  .pht-m .pht-m-footer .pht-m-footer__social-arrow {
    display: block;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-left: auto;
    color: rgb(255 255 255 / 0.6);
  }

  /* Espaçamento entre seções empilhadas (categorias / institucional+legal /
     em alta agora) — sempre 40px no mobile (o v2 zera isso só no desktop
     via grid, que não existe aqui). */
  .pht-m .pht-m-footer .pht-m-footer__nav {
    display: block;
    margin-top: 40px;
  }

  .pht-m .pht-m-footer .pht-m-footer__inst-legal {
    display: flex;
    flex-direction: column;
    gap: 32px;
  }

  .pht-m .pht-m-footer .pht-m-footer__nav-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .pht-m .pht-m-footer .pht-m-footer__cat-link {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    color: rgb(255 255 255 / 0.75);
    text-decoration: none;
  }
  .pht-m .pht-m-footer .pht-m-footer__cat-link:hover {
    color: #fff;
  }

  .pht-m .pht-m-footer .pht-m-footer__cat-dot {
    display: block;
    width: 6px;
    height: 6px;
    flex-shrink: 0;
    border-radius: 9999px;
  }

  .pht-m .pht-m-footer .pht-m-footer__trending-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .pht-m .pht-m-footer .pht-m-footer__trending-link {
    display: block;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 19.25px;
    font-weight: 600;
    color: rgb(255 255 255 / 0.85);
    text-decoration: none;
  }
  .pht-m .pht-m-footer .pht-m-footer__trending-link:hover {
    color: #fff;
  }

  .pht-m .pht-m-footer .pht-m-footer__contact {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 28px;
    border: 1px solid rgb(255 255 255 / 0.1);
    border-radius: 12px;
    background: rgb(255 255 255 / 0.05);
    padding: 12px 16px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    color: rgb(255 255 255 / 0.9);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-footer .pht-m-footer__contact:hover {
    background: rgb(255 255 255 / 0.1);
  }

  .pht-m .pht-m-footer .pht-m-footer__contact-icon {
    display: block;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: var(--pht-sunset-orange, #ff7a3c);
  }

  .pht-m .pht-m-footer .pht-m-footer__legal-mark {
    display: block;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    opacity: 0.6;
  }

  /* ===== CARDS ===== */

  .pht-m .pht-m-card-trilha.pht-m-card-trilha {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 20px 0;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__body {
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__title {
    margin-top: 6px;
    font-size: 16px;
    line-height: 22px; /* leading-snug (1.375) sobre 16px */
    font-weight: 700;
    color: var(--pht-text);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__thumb {
    position: relative;
    flex-shrink: 0;
    height: 96px;
    width: 96px;
    border-radius: 12px; /* rounded-xl do V2 — medido; não é --radius-card (16px) */
    overflow: hidden;
    box-sizing: border-box;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__thumb img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
  }

  /* M5.2.6.2 — "Continue a trilha" com identidade ALTITUDE: categoria na cor
     da família com marcador de PICO (a assinatura das montanhas), revelação
     ao rolar (levantada) e micro-interação no hover (zoom da miniatura +
     título vai pro acento). Estilo COMPACTO/limpo (lista dividida), como o V2
     e o print pedido. */
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__body {
    display: flex;
    flex-direction: column;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__cat {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.2;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__cat::before {
    content: '';
    width: 10px;
    height: 8px;
    flex-shrink: 0;
    background-color: currentColor;
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__meta {
    margin-top: 8px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.2;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__title {
    transition: color 180ms ease;
  }
  .pht-m .pht-m-card-trilha .pht-m-card-trilha__thumb img {
    transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  @media (hover: hover) {
    .pht-m .pht-m-card-trilha.pht-m-card-trilha:hover .pht-m-card-trilha__thumb img {
      transform: scale(1.05);
    }
    .pht-m .pht-m-card-trilha.pht-m-card-trilha:hover .pht-m-card-trilha__title {
      color: var(--pht-accent);
    }
  }

  /* ===== CARD CUME (M5.2.6.1) — cards de DESTAQUE dos relacionados
     ("Continue a trilha"). Imagem no topo (16:9), elevação Mirante,
     micro-interação no hover (sobe + zoom sutil na imagem) e revelação ao
     entrar na viewport. Identidade ALTITUDE: cor de família na categoria,
     tipografia display no título, escada .elev-*. ==================== */
  .pht-m .pht-m-card-cume.pht-m-card-cume {
    display: block;
    overflow: hidden;
    border-radius: var(--radius-card, 16px);
    background: var(--pht-surface);
    box-shadow: 0 4px 16px rgb(2 8 23 / 0.08);
    text-decoration: none;
    transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 220ms ease;
    box-sizing: border-box;
  }
  html[data-theme='dark'] .pht-m .pht-m-card-cume.pht-m-card-cume {
    background: var(--pht-surface-raised);
    box-shadow: 0 0 0 1px var(--pht-border);
  }
  .pht-m .pht-m-card-cume.pht-m-card-cume:active {
    transform: scale(0.99);
  }
  @media (hover: hover) {
    .pht-m .pht-m-card-cume.pht-m-card-cume:hover {
      transform: translateY(-4px);
      box-shadow: 0 16px 40px rgb(2 8 23 / 0.16);
    }
    html[data-theme='dark'] .pht-m .pht-m-card-cume.pht-m-card-cume:hover {
      box-shadow: 0 0 0 1px var(--pht-border-strong);
    }
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__media {
    display: block;
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--pht-surface-sunken);
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  @media (hover: hover) {
    .pht-m .pht-m-card-cume.pht-m-card-cume:hover .pht-m-card-cume__img {
      transform: scale(1.04);
    }
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__body {
    display: block;
    padding: 18px 20px 20px;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__cat.pht-m-card-cume__cat {
    display: block;
    margin: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.2;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__title {
    display: block;
    margin: 8px 0 0;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 18px;
    line-height: 1.3;
    font-weight: 650;
    letter-spacing: -0.01em;
    color: var(--pht-text);
    text-wrap: pretty;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__excerpt {
    display: -webkit-box;
    margin: 8px 0 0;
    font-size: 14px;
    line-height: 1.5;
    color: var(--pht-text-2);
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__meta.pht-m-card-cume__meta {
    display: block;
    margin: 10px 0 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.2;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }

  /* Scroll-reveal — só esconde quando o JS (com IntersectionObserver)
     marcou <html> com `pht-reveal-ready`. Sem JS/sem IO → sempre visível.
     Ver initReveal() em altitude-behaviors.js. */
  html.pht-reveal-ready .pht-m .pht-m-reveal {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 560ms cubic-bezier(0.22, 1, 0.36, 1),
      transform 560ms cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
  }
  html.pht-reveal-ready .pht-m .pht-m-reveal.is-revealed {
    opacity: 1;
    transform: none;
  }
  @media (prefers-reduced-motion: reduce) {
    html.pht-reveal-ready .pht-m .pht-m-reveal {
      opacity: 1;
      transform: none;
      transition: none;
    }
  }

  .pht-m .pht-m-card-cume.pht-m-card-cume {
    display: block;
    overflow: hidden;
    border-radius: var(--radius-card, 16px);
    background: var(--pht-surface);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__media {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__media img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__score {
    position: absolute;
    top: 12px;
    right: 12px;
    border-radius: 9999px;
    background: rgb(7 13 24 / 0.8);
    padding: 4px 10px;
    color: #fff;
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    backdrop-filter: blur(4px);
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__body {
    padding: 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__title {
    margin-top: 8px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-card-cume .pht-m-card-cume__excerpt {
    margin-top: 8px;
    font-size: 14px;
    line-height: 22.75px; /* leading-relaxed */
    color: var(--pht-text-2);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .pht-m .pht-m-card-meta.pht-m-card-meta {
    margin-top: 8px;
    color: var(--pht-text-3);
  }

  /* ===== SECTION HEADER ===== */

  .pht-m .pht-m-section-header.pht-m-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 4px;
  }
  .pht-m .pht-m-section-header .pht-m-section-header__title {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-section-header .pht-m-section-header__bar {
    height: 20px;
    width: 6px;
    border-radius: 9999px;
    background: var(--pht-section-color, var(--pht-accent));
    flex-shrink: 0;
  }
  .pht-m .pht-m-section-header .pht-m-section-header__cta {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
    font-size: 14px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-section-color, var(--pht-accent));
    text-decoration: none;
  }
  .pht-m .pht-m-section-header .pht-m-section-header__cta-icon {
    height: 16px;
    width: 16px;
    flex-shrink: 0;
  }

  /* ===== PÁGINAS INSTITUCIONAIS ===== */

  .pht-m .pht-m-inst-breadcrumb.pht-m-inst-breadcrumb {
    padding: 20px 20px 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-breadcrumb.pht-m-inst-breadcrumb a {
    color: inherit;
    text-decoration: none;
  }
  .pht-m .pht-m-inst-breadcrumb.pht-m-inst-breadcrumb a:hover {
    color: var(--pht-text);
  }

  .pht-m .pht-m-inst-hero.pht-m-inst-hero {
    position: relative;
    overflow: hidden;
    padding: 24px 20px 8px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__contour {
    position: absolute;
    top: -32px;
    right: -32px;
    height: 192px;
    width: 192px;
    color: var(--pht-text-3);
    opacity: 0.07;
    pointer-events: none;
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-cat-pink);
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__eyebrow-mark {
    height: 16px;
    width: 16px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__title {
    margin-top: 8px;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 28px;
    line-height: 33.6px;
    font-weight: 750;
    letter-spacing: -0.3px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__intro {
    margin-top: 12px;
    max-width: 58ch;
    font-size: 16px;
    line-height: 26px; /* leading-relaxed */
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-inst-hero .pht-m-inst-hero__rule {
    margin-top: 20px;
    height: 4px;
    width: 40px;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
  }

  .pht-m .pht-m-inst-links.pht-m-inst-links {
    padding: 0 20px 0; /* espaço ANTES deste widget já vem do flex_gap do container — dobrava aqui */
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__eyebrow {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__title {
    margin-top: 6px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__grid {
    margin-top: 16px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__item {
    display: flex;
    align-items: center;
    gap: 14px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 16px;
    text-decoration: none;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__item:active {
    transform: scale(0.98);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    width: 40px;
    flex-shrink: 0;
    border-radius: 12px;
    background: var(--pht-surface-sunken);
    color: var(--pht-accent);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__icon-svg {
    height: 20px;
    width: 20px;
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__name {
    display: block;
    font-size: 15px;
    line-height: 21.75px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__short {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    line-height: 16.5px; /* leading-snug */
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__body {
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-inst-links .pht-m-inst-links__arrow {
    display: block;
    margin-left: auto;
    height: 16px;
    width: 16px;
    flex-shrink: 0;
    color: var(--pht-text-3);
  }

  /* ===== EXPLORADOR DE CATEGORIAS (M5.2.2 — widget pht-category-explorer) =====
     Reaproveita .pht-m-card-trilha/.pht-m-card-cume (já com especificidade
     correta) para as famílias pink/blue/reviews — só as 3 anatomias
     realmente distintas (timeline/guides/tier) ganham classe própria. */

  .pht-m .pht-m-explorer.pht-m-explorer {
    display: block;
    padding: 32px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__eyebrow {
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__title {
    margin-top: 6px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__chips {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 4px;
    margin-top: 16px;
    box-sizing: border-box;
  }
  /* M5.7 — achado real: o Explorador reaproveitava o NOME de classe
     `.pht-m-chip` do trilho do header, mas o CSS de pill vivia só sob o
     ancestral `.pht-m-chips .pht-m-chips__rail`, que o Explorador nunca
     renderiza (ele usa `.pht-m-explorer__chips`) — os botões saíam sem
     estilo nenhum (bug #3, mesmo padrão já visto nos institucionais).
     Regra própria, encadeada pela estrutura REAL deste widget. */
  .pht-m .pht-m-explorer .pht-m-explorer__chips .pht-m-chip {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    height: 38px;
    padding: 8px 16px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: transparent;
    color: var(--pht-text-2);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    white-space: nowrap;
    box-sizing: border-box;
    cursor: pointer;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__chips .pht-m-chip.is-active {
    font-weight: 600;
    background: var(--pht-chip-color, var(--pht-accent));
    border-color: transparent;
    color: #fff;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__panel {
    display: none;
    margin-top: 24px;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__panel.is-active {
    display: block;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__heading-main {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__link {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    font-weight: 700;
    color: var(--pht-explorer-color, var(--pht-accent));
    text-decoration: none;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__link .pht-m-explorer__link-icon {
    height: 16px;
    width: 16px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__radar-label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    color: var(--pht-cat-pink);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__bar {
    height: 20px;
    width: 6px;
    border-radius: 9999px;
    flex-shrink: 0;
    background: var(--pht-explorer-color, var(--pht-accent));
  }
  .pht-m .pht-m-explorer .pht-m-explorer__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 48px 24px;
    border: 1px dashed var(--pht-border-strong);
    border-radius: var(--radius-card, 16px);
    box-sizing: border-box;
  }

  /* radar (pink) — dot pulsante sobre o rótulo, cards vêm de .pht-m-card-cume/trilha */
  .pht-m .pht-m-explorer .pht-m-explorer__radar-dot {
    display: inline-block;
    height: 8px;
    width: 8px;
    border-radius: 9999px;
    background: var(--pht-cat-pink);
    flex-shrink: 0;
  }

  /* timeline (neutral) — manchete + plantão compacto sem imagem */
  .pht-m .pht-m-explorer .pht-m-explorer__timeline-lead {
    display: block;
    text-decoration: none;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__timeline-lead-title {
    margin-top: 8px;
    font-size: 19px;
    line-height: 25px;
    font-weight: 650;
    color: var(--pht-text);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__timeline-item {
    display: block;
    border-left: 2px solid var(--pht-cat-neutral);
    padding: 14px 0 14px 16px;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__timeline-item-title {
    margin-top: 4px;
    font-size: 15px;
    line-height: 20.7px;
    font-weight: 700;
    color: var(--pht-text);
  }

  /* guides (green) — marcador de pico */
  .pht-m .pht-m-explorer .pht-m-explorer__guide-item {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 20px 0;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__guide-marker {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    width: 36px;
    flex-shrink: 0;
    border-radius: 12px;
    background: color-mix(in srgb, var(--pht-cat-green) 12%, transparent);
    box-sizing: border-box;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__guide-title {
    margin-top: 4px;
    font-size: 15px;
    line-height: 20.7px;
    font-weight: 700;
    color: var(--pht-text);
  }

  /* tier (orange) — lista numerada */
  .pht-m .pht-m-explorer .pht-m-explorer__tier-item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 0;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-explorer .pht-m-explorer__tier-rank {
    display: block;
    width: 48px;
    flex-shrink: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 30px;
    line-height: 36px;
    font-weight: 600;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__tier-rank.is-first {
    color: var(--pht-cat-orange);
  }
  .pht-m .pht-m-explorer .pht-m-explorer__tier-title {
    margin-top: 2px;
    font-size: 15px;
    line-height: 20.7px;
    font-weight: 700;
    color: var(--pht-text);
  }

  /* ===== RIDGE (M5.2.2 — widget pht-ridge) ===== */

  .pht-m .pht-m-ridge.pht-m-ridge {
    display: block;
    width: 100%;
    height: 24px;
    color: var(--pht-ridge-color, var(--pht-footer));
  }
  .pht-m .pht-m-ridge.pht-m-ridge.is-flipped {
    transform: scaleY(-1);
  }

  /* ===== PÁGINA DE POST (M5.2.5 — widget peak-altitude-post) =====
     Port de post/[slug]/page.tsx. O bloco `.pht-m-prose` é o coração:
     estiliza o HTML CRU que o editor do WordPress gera (h2/p/blockquote/
     ul/tabela/imagem) por SELETOR DESCENDENTE — o autor escreve normal e
     o texto sai ALTITUDE, sem formatar nada, em todo post. Valores em px
     (regra do Astra); títulos em clamp px+vw (imune ao encolhimento da
     raiz). Escala tipográfica idêntica ao globals.css do V2. */

  /* Altímetro de leitura — barra 3px sunset + marcador de pico na ponta. */
  .pht-m .pht-m-progress.pht-m-progress {
    position: fixed;
    inset-inline: 0;
    top: 0;
    z-index: 50;
    height: 3px;
    pointer-events: none;
  }
  .pht-m .pht-m-progress .pht-m-progress__fill {
    position: absolute;
    inset: 0;
    transform-origin: left;
    transform: scaleX(0);
    background: var(--pht-grad-sunset);
    transition: transform 75ms linear;
  }
  .pht-m .pht-m-progress .pht-m-progress__peak {
    position: absolute;
    top: 3px;
    left: 0;
    height: 8px;
    width: 10px;
    transform: translateX(-50%);
  }

  /* Coluna do artigo — 720px centrados. */
  .pht-m .pht-m-post.pht-m-post {
    display: block;
    margin: 0 auto;
    width: 100%;
    max-width: 720px;
    padding-bottom: 16px;
    box-sizing: border-box;
  }

  .pht-m .pht-m-post .pht-m-post__crumb {
    padding: 20px 20px 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-post__crumb a {
    color: inherit;
    text-decoration: none;
  }
  .pht-m .pht-m-post .pht-m-post__crumb a:hover {
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__crumb-sep {
    margin: 0 6px;
    color: color-mix(in srgb, var(--pht-text-3) 50%, transparent);
  }

  .pht-m .pht-m-post .pht-m-post__head {
    padding: 20px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__badge {
    display: inline-block;
    border-radius: 9999px;
    padding: 6px 12px;
    color: #fff;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
  }
  .pht-m .pht-m-post .pht-m-post__title {
    margin: 16px 0 0;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: clamp(26px, 16px + 2.4vw, 36px);
    line-height: 1.18;
    font-weight: 750;
    letter-spacing: -0.015em; /* .type-h1 do V2 — títulos mais fechados/firmes */
    color: var(--pht-text);
    text-wrap: pretty;
  }
  .pht-m .pht-m-post .pht-m-post__author {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 20px;
  }
  .pht-m .pht-m-post .pht-m-post__avatar {
    display: flex;
    height: 44px;
    width: 44px;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
    padding: 2px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__avatar--lg {
    height: 48px;
    width: 48px;
  }
  .pht-m .pht-m-post .pht-m-post__avatar-in {
    display: flex;
    height: 100%;
    width: 100%;
    align-items: center;
    justify-content: center;
    border-radius: 9999px;
    background: var(--pht-surface);
    font-family: var(--font-display, 'Bricolage Grotesque', sans-serif);
    font-size: 14px;
    font-weight: 700;
    color: var(--pht-text);
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-post__avatar-in {
    background: var(--pht-surface-raised);
  }
  .pht-m .pht-m-post .pht-m-post__author-name {
    margin: 0;
    font-size: 14px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__meta {
    margin: 2px 0 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }

  .pht-m .pht-m-post .pht-m-post__cover {
    padding: 24px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__cover img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 16px;
    box-shadow: 0 4px 16px rgb(2 8 23 / 0.08); /* elev-2 do V2 */
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-post__cover img {
    filter: brightness(0.92);
    box-shadow: 0 0 0 1px var(--pht-border);
  }

  .pht-m .pht-m-post .pht-m-post__body {
    padding: 8px 20px 0;
    box-sizing: border-box;
  }

  /* "O essencial" */
  .pht-m .pht-m-post .pht-m-post__essential {
    margin: 32px 0;
    border: 1px solid var(--pht-border-strong);
    border-radius: 16px;
    background: var(--pht-surface);
    padding: 20px;
    box-sizing: border-box;
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-post__essential {
    background: var(--pht-surface-raised);
  }
  .pht-m .pht-m-post .pht-m-post__essential-label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-post__essential-label svg {
    height: 8px;
    width: 10px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-post .pht-m-post__essential-list {
    list-style: none;
    margin: 14px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .pht-m .pht-m-post .pht-m-post__essential-list li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
  }
  .pht-m .pht-m-post .pht-m-post__essential-list li svg {
    margin-top: 7px;
    height: 8px;
    width: 10px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-post .pht-m-post__essential-list li span {
    font-size: 15px;
    line-height: 24.375px; /* leading-relaxed (1.625) sobre 15px — medido no V2 */
    font-weight: 500;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__essential-text {
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text-2);
  }

  /* Sanfona (M5.2.5.2) — "O essencial" abre/fecha. Animação de altura por
     grid-template-rows 1fr↔0fr (suave, sem medir altura no JS) + chevron
     que gira. Padrão: aberto. */
  .pht-m .pht-m-post .pht-m-post__essential-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    text-align: left;
    cursor: pointer;
  }
  .pht-m .pht-m-post .pht-m-post__essential-chevron {
    height: 18px;
    width: 18px;
    flex-shrink: 0;
    color: var(--pht-text-3);
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-post .pht-m-post__essential.is-collapsed .pht-m-post__essential-chevron {
    transform: rotate(-90deg);
  }
  .pht-m .pht-m-post .pht-m-post__essential-panel {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-post .pht-m-post__essential.is-collapsed .pht-m-post__essential-panel {
    grid-template-rows: 0fr;
  }
  .pht-m .pht-m-post .pht-m-post__essential-panelinner {
    overflow: hidden;
    min-height: 0;
  }

  /* ---- PROSA: o HTML do editor vira ALTITUDE ---- */
  .pht-m .pht-m-post .pht-m-prose {
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-post .pht-m-prose > :first-child {
    margin-top: 0;
  }
  .pht-m .pht-m-post .pht-m-prose h2 {
    margin: 44px 0 16px;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: clamp(22px, 17.6px + 1vw, 26px);
    line-height: 1.25;
    font-weight: 700;
    letter-spacing: -0.01em; /* .type-h2 do V2 */
    color: var(--pht-text);
    scroll-margin-top: 96px;
  }
  .pht-m .pht-m-post .pht-m-prose h3 {
    margin: 32px 0 12px;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 19px;
    line-height: 1.3;
    font-weight: 650;
    color: var(--pht-text);
    scroll-margin-top: 96px;
  }
  .pht-m .pht-m-post .pht-m-prose h4 {
    margin: 28px 0 10px;
    font-family: var(--font-display, 'Bricolage Grotesque', sans-serif);
    font-size: 17px;
    line-height: 1.35;
    font-weight: 650;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-prose p {
    margin: 0 0 20px;
    font-size: 17px;
    line-height: 1.75;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-post .pht-m-prose strong {
    color: var(--pht-text);
    font-weight: 700;
  }
  .pht-m .pht-m-post .pht-m-prose a {
    color: var(--pht-accent);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: color-mix(in srgb, var(--pht-accent) 40%, transparent);
  }
  .pht-m .pht-m-post .pht-m-prose a:hover {
    text-decoration-color: var(--pht-accent);
  }
  .pht-m .pht-m-post .pht-m-prose blockquote {
    position: relative;
    margin: 32px 0;
    padding-left: 20px;
    font-size: 18px;
    line-height: 1.6;
    font-weight: 600;
    font-style: italic;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-prose blockquote::before {
    content: '';
    position: absolute;
    top: 4px;
    bottom: 4px;
    left: 0;
    width: 4px;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
  }
  .pht-m .pht-m-post .pht-m-prose ul,
  .pht-m .pht-m-post .pht-m-prose ol {
    margin: 0 0 20px;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .pht-m .pht-m-post .pht-m-prose ol {
    counter-reset: pht-ol;
  }
  .pht-m .pht-m-post .pht-m-prose li {
    position: relative;
    padding-left: 28px;
    font-size: 16px;
    line-height: 1.6;
    color: var(--pht-text-2);
  }
  /* marcador de pico (montanha) — a assinatura das listas ALTITUDE */
  .pht-m .pht-m-post .pht-m-prose ul > li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 9px;
    height: 8px;
    width: 10px;
    background-color: var(--pht-accent);
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
  }
  .pht-m .pht-m-post .pht-m-prose ol > li {
    counter-increment: pht-ol;
  }
  .pht-m .pht-m-post .pht-m-prose ol > li::before {
    content: counter(pht-ol) '.';
    position: absolute;
    left: 0;
    top: 0;
    width: 22px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--pht-accent);
  }
  .pht-m .pht-m-post .pht-m-prose img {
    display: block;
    max-width: 100%;
    height: auto;
    border-radius: 12px;
  }
  .pht-m .pht-m-post .pht-m-prose figure {
    margin: 32px 0;
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-prose img {
    filter: brightness(0.92);
  }
  .pht-m .pht-m-post .pht-m-prose figcaption {
    margin-top: 10px;
    text-align: center;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.4;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-prose .wp-block-table,
  .pht-m .pht-m-post .pht-m-prose .pht-m-prose__tablewrap {
    margin: 32px 0;
    overflow-x: auto;
    border: 1px solid var(--pht-border);
    border-radius: 12px;
  }
  .pht-m .pht-m-post .pht-m-prose table {
    width: 100%;
    min-width: 520px;
    border-collapse: collapse;
    text-align: left;
    font-size: 14px;
  }
  .pht-m .pht-m-post .pht-m-prose th {
    background: var(--pht-surface-sunken);
    padding: 12px 16px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-prose td {
    padding: 12px 16px;
    border-top: 1px solid var(--pht-border);
    color: var(--pht-text-2);
  }

  /* Tags */
  .pht-m .pht-m-post .pht-m-post__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 36px;
  }
  .pht-m .pht-m-post .pht-m-post__tag {
    border-radius: 9999px;
    background: var(--pht-surface-sunken);
    padding: 8px 14px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 1.2;
    color: var(--pht-text-2);
    text-decoration: none;
  }

  /* Compartilhar (inline) */
  .pht-m .pht-m-post .pht-m-post__share {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 36px;
    border-top: 1px solid var(--pht-border);
    padding-top: 28px;
  }
  .pht-m .pht-m-post .pht-m-post__share-label {
    margin-right: 4px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-post__share-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 44px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 0 20px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    font-weight: 700;
    color: var(--pht-text);
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-post__share-btn {
    background: var(--pht-surface-raised);
  }
  .pht-m .pht-m-post .pht-m-post__share-btn .pht-m-ico {
    height: 16px;
    width: 16px;
  }
  .pht-m .pht-m-post .pht-m-post__share-btn.is-wa .pht-m-ico {
    color: #1faf57;
  }
  .pht-m .pht-m-post .pht-m-post__share-btn.is-copied {
    color: var(--pht-cat-green);
  }

  /* Caixa do autor */
  .pht-m .pht-m-post .pht-m-post__authorbox {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    margin-top: 36px;
    border: 1px solid var(--pht-border);
    border-radius: 16px;
    background: var(--pht-surface);
    padding: 20px;
    box-sizing: border-box;
  }
  html[data-theme='dark'] .pht-m .pht-m-post .pht-m-post__authorbox {
    background: var(--pht-surface-raised);
  }
  .pht-m .pht-m-post .pht-m-post__authorbox-eyebrow {
    margin: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-post .pht-m-post__authorbox-name {
    margin: 2px 0 0;
    font-size: 15px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__authorbox-bio {
    margin: 6px 0 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--pht-text-2);
  }

  /* ===== LEGIBILIDADE NO ESCURO + FUNDO DA PÁGINA (M5.2.6.2) =====
     Achado real (25/07, prints do celular): no escuro o CORPO da prosa saía
     escuro demais (ilegível) — o texto herdava a cor global do Elementor
     (--e-global-color-text: #7A7A7A) porque os tokens ALTITUDE vivem escopados
     em `.pht-m` e a herança do Elementor vencia nos <p> do the_content(). E o
     header de vidro (85%) parecia "apagado"/claro demais porque assentava
     sobre um fundo de body claro, não sobre o canvas escuro do V2.
     Correção à prova de herança (especificidade alta + valor fixo):
     (a) fundo do body escuro no mobile → o header de 85% assenta no escuro;
     (b) corpo do texto legível; títulos/negrito no branco-gelo do V2. */
  html[data-theme='dark'] body {
    background-color: #0b1220;
  }
  /* M5.9.1 — a cor do texto do post TROCA com o tema, e é AJUSTÁVEL.
     O valor do V2 (#a7b4c7) tem contraste 8,8:1 sobre o canvas escuro —
     tecnicamente AAA —, mas na leitura longa em celular ficou apagado.
     Agora o corpo no escuro nasce mais claro (#cbd5e5, ~12:1) e ambos os
     temas passam por custom property, então os controles "Cor do texto"
     do widget de Post mandam sem `!important` e sem disputa. */
  .pht-m .pht-m-post .pht-m-prose,
  .pht-m .pht-m-post .pht-m-prose p,
  .pht-m .pht-m-post .pht-m-prose li,
  .pht-m .pht-m-post .pht-m-prose td,
  .pht-m .pht-m-post .pht-m-prose blockquote {
    color: var(--pht-prose-ink, var(--pht-text-2));
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose,
  html[data-theme='dark'] .pht-m-post .pht-m-prose p,
  html[data-theme='dark'] .pht-m-post .pht-m-prose li,
  html[data-theme='dark'] .pht-m-post .pht-m-prose td,
  html[data-theme='dark'] .pht-m-post .pht-m-prose blockquote {
    color: var(--pht-prose-ink-dark, #cbd5e5);
  }
  .pht-m .pht-m-post .pht-m-prose strong,
  .pht-m .pht-m-post .pht-m-prose h2,
  .pht-m .pht-m-post .pht-m-prose h3,
  .pht-m .pht-m-post .pht-m-prose h4 {
    color: var(--pht-prose-head, var(--pht-text));
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose strong,
  html[data-theme='dark'] .pht-m-post .pht-m-prose h2,
  html[data-theme='dark'] .pht-m-post .pht-m-prose h3,
  html[data-theme='dark'] .pht-m-post .pht-m-prose h4 {
    color: var(--pht-prose-head-dark, #f2f6fb);
  }

  /* M5.9.2 — A CAUSA REAL do texto ilegível no escuro.
     Achado (31/07, HTML ao vivo): os parágrafos dos posts trazem
     `has-black-color has-text-color` — cor PRETA fixada no editor de blocos
     (83 parágrafos só no post do Sonnet 5). O WordPress emite essas classes
     com `!important`, então nenhuma regra por especificidade jamais venceria:
     no tema escuro dava preto sobre fundo quase preto.
     Aqui o `!important` é DEFENSIVO (anula outro `!important`), não um
     travamento de design: o VALOR continua sendo a custom property, então os
     controles "Cor do texto do artigo" do widget seguem mandando.
     `:not(a)` preserva a cor de link. Vale só no escopo `.pht-m-prose` do
     mobile — o conteúdo no desktop continua exatamente como está. */
  .pht-m .pht-m-post .pht-m-prose .has-text-color:not(a) {
    color: var(--pht-prose-ink, var(--pht-text-2)) !important;
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose .has-text-color:not(a) {
    color: var(--pht-prose-ink-dark, #cbd5e5) !important;
  }
  .pht-m .pht-m-post .pht-m-prose h2.has-text-color,
  .pht-m .pht-m-post .pht-m-prose h3.has-text-color,
  .pht-m .pht-m-post .pht-m-prose h4.has-text-color,
  .pht-m .pht-m-post .pht-m-prose .has-text-color strong,
  .pht-m .pht-m-post .pht-m-prose strong.has-text-color {
    color: var(--pht-prose-head, var(--pht-text)) !important;
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose h2.has-text-color,
  html[data-theme='dark'] .pht-m-post .pht-m-prose h3.has-text-color,
  html[data-theme='dark'] .pht-m-post .pht-m-prose h4.has-text-color,
  html[data-theme='dark'] .pht-m-post .pht-m-prose .has-text-color strong,
  html[data-theme='dark'] .pht-m-post .pht-m-prose strong.has-text-color {
    color: var(--pht-prose-head-dark, #f2f6fb) !important;
  }
  /* Fundo fixo do editor também some no mobile — um bloco com fundo branco
     "cravado" ficaria como retângulo claro no tema escuro. */
  html[data-theme='dark'] .pht-m-post .pht-m-prose p.has-background,
  html[data-theme='dark'] .pht-m-post .pht-m-prose li.has-background {
    background-color: transparent !important;
  }

  /* ===== LINKS INTERNOS × EXTERNOS (M5.9.3) =====
     O PHP marca cada link do artigo (`mark_links()`): `--int` para o próprio
     site, `--ext` para fora. Aqui cada um ganha sua cor, automaticamente, sem
     o autor marcar nada ao escrever.
     Interno nasce no rosa da marca (Peak): #d81b60 no claro — tom aprofundado
     para passar em contraste sobre o canvas (≈5:1) — e o rosa claro da família
     no escuro. Externo continua no azul de sempre.
     `!important` aqui é DEFENSIVO, para vencer o `has-text-color`/`has-link-color`
     que o editor de blocos crava com `!important`; o VALOR segue nas custom
     properties, então os controles do widget continuam mandando. */
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--int {
    color: var(--pht-link-int, #d81b60) !important;
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose a.pht-m-link--int {
    color: var(--pht-link-int-dark, var(--pht-cat-pink)) !important;
  }
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--ext {
    color: var(--pht-link-ext, var(--pht-accent)) !important;
  }
  html[data-theme='dark'] .pht-m-post .pht-m-prose a.pht-m-link--ext {
    color: var(--pht-link-ext-dark, var(--pht-accent)) !important;
  }
  /* O sublinhado acompanha a cor do próprio link, seja qual for. */
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--int,
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--ext {
    text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
  }
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--int:hover,
  .pht-m .pht-m-post .pht-m-prose a.pht-m-link--ext:hover {
    text-decoration-color: currentColor;
  }

  /* Relacionados */
  .pht-m .pht-m-post .pht-m-post__related {
    padding: 56px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__related-title {
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: clamp(22px, 17.6px + 1vw, 26px);
    line-height: 1.25;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__related-list {
    margin-top: 6px;
  }
  .pht-m .pht-m-post .pht-m-post__related-list .pht-m-card-trilha {
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-post .pht-m-post__related-list .pht-m-card-trilha:first-child {
    border-top: 0;
  }

  /* =====================================================================
     "MAIS CONTEÚDOS" (M5.12) — trilho horizontal.
     Seção IRMÃ de "Continue a trilha" logo acima, com desenho de propósito
     OPOSTO: lá é lista vertical compacta, tema em profundidade; aqui é capa
     grande em trilho com encaixe, para descoberta do que é novo. Se as duas
     tivessem a mesma forma, o leitor leria como repetição.
     TODO o movimento vive em elementos INTERNOS do cartão. O cartão em si é
     governado pelo sistema de revelação (`html.pht-reveal-ready .pht-m
     .pht-m-reveal`, especificidade 0,3,1 e 0,4,1 no estado revelado), que
     controla `transform` — animar o cartão aqui perderia a disputa e o
     toque simplesmente não responderia. Zoom na imagem contorna isso sem
     !important e sem depender de ordem de declaração.
     ===================================================================== */
  .pht-m .pht-m-post .pht-m-post__more {
    box-sizing: border-box;
    margin: 32px 0 0;
  }
  .pht-m .pht-m-post .pht-m-post__more-head {
    box-sizing: border-box;
    padding: 0 20px;
  }
  .pht-m .pht-m-post .pht-m-post__more-eyebrow {
    margin: 0 0 6px;
    line-height: 1.2;
    color: var(--pht-accent);
  }
  .pht-m .pht-m-post .pht-m-post__more-title {
    margin: 0;
    font-family: 'Bricolage Grotesque', sans-serif;
    font-size: 22px;
    font-weight: 700;
    line-height: 28px;
    letter-spacing: -0.01em;
    color: var(--pht-text);
  }
  .pht-m .pht-m-post .pht-m-post__more-ridge {
    display: block;
    width: 96px;
    height: 14px;
    margin: 10px 0 0;
    color: var(--pht-accent);
    opacity: 0.45;
  }

  /* Trilho.
     `touch-action: pan-x` — o MESMO valor do trilho de chips (linha ~310),
     que já funciona no site. A v0.19.0 saiu com `pan-y pinch-zoom` e o
     arrasto lateral simplesmente não respondia: `pan-y` declara que este
     elemento só lida com gesto VERTICAL, o que proíbe justamente o
     horizontal que o trilho precisa. Foi a regra de carrossel-por-JS
     aplicada a um rolador NATIVO, onde ela faz o oposto do pretendido.
     O gesto vertical continua rolando a página normalmente: direções que
     este elemento não consome sobem para os ancestrais.
     O JS `drag-scroll` não entra nisso — ele ignora ponteiro que não seja
     mouse (`if (e.pointerType !== 'mouse') return`), servindo só ao arrasto
     de desktop; no celular quem rola é o navegador. */
  .pht-m .pht-m-post .pht-m-post__more-rail {
    display: flex;
    gap: 14px;
    box-sizing: border-box;
    margin: 18px 0 0;
    padding: 4px 20px 10px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
  }
  .pht-m .pht-m-post .pht-m-post__more-rail::-webkit-scrollbar {
    display: none;
  }
  /* Respiro no fim do trilho: sem isso o último cartão encosta na borda e
     parece cortado em vez de terminado. */
  .pht-m .pht-m-post .pht-m-post__more-rail::after {
    content: '';
    flex: 0 0 6px;
  }

  .pht-m .pht-m-post .pht-m-post__more-card {
    display: flex;
    flex: 0 0 232px;
    flex-direction: column;
    box-sizing: border-box;
    width: 232px;
    border: 1px solid var(--pht-border);
    border-radius: var(--radius-card, 16px);
    background: var(--pht-surface);
    overflow: hidden;
    scroll-snap-align: start;
    text-decoration: none;
  }
  .pht-m .pht-m-post .pht-m-post__more-cover {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--pht-surface-sunken);
  }
  .pht-m .pht-m-post .pht-m-post__more-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.01);
    transition: transform 620ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-post .pht-m-post__more-card:active .pht-m-post__more-img {
    transform: scale(1.07);
  }
  .pht-m .pht-m-post .pht-m-post__more-scrim {
    position: absolute;
    inset: 0;
    background: var(--pht-scrim);
    pointer-events: none;
  }
  .pht-m .pht-m-post .pht-m-post__more-badge {
    position: absolute;
    left: 10px;
    bottom: 10px;
    display: inline-block;
    padding: 4px 10px;
    border-radius: 9999px;
    background: var(--pht-more-color, var(--pht-accent));
    color: #fff;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    font-weight: 600;
    line-height: 14px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }
  .pht-m .pht-m-post .pht-m-post__more-body {
    display: flex;
    flex-direction: column;
    gap: 6px;
    box-sizing: border-box;
    padding: 12px 14px 14px;
  }
  .pht-m .pht-m-post .pht-m-post__more-name {
    font-family: 'Bricolage Grotesque', sans-serif;
    font-size: 15px;
    font-weight: 650;
    line-height: 20px;
    color: var(--pht-text);
    /* Teto de 3 linhas: num trilho horizontal os cartões precisam de altura
       previsível, senão um título longo desalinha a fileira inteira. */
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-post .pht-m-post__more-meta {
    color: var(--pht-text-3);
    line-height: 1.2;
  }
  @media (prefers-reduced-motion: reduce) {
    .pht-m .pht-m-post .pht-m-post__more-img,
    .pht-m .pht-m-post .pht-m-post__more-card:active .pht-m-post__more-img {
      transform: none;
      transition: none;
    }
  }

  /* A grade antiga (bloco Essential Blocks dentro do TEXTO do post) some no
     mobile junto com o título dela — a seção acima já mostra os mesmos posts,
     e manter as duas seria duplicar. `:has()` alcança o <h3> que vem
     imediatamente antes do bloco, que é como esse par foi escrito no
     Gutenberg. Nada é apagado do conteúdo: o desktop segue exibindo os dois
     exatamente como hoje. Desligável pelo controle "Esconder a grade antiga
     no mobile". */
  .pht-m .pht-m-post.is-hiding-native-grid .wp-block-essential-blocks-post-grid,
  .pht-m .pht-m-post.is-hiding-native-grid .pht-m-prose h3:has(+ .wp-block-essential-blocks-post-grid) {
    display: none;
  }

  /* Barra de compartilhar fixa (rodapé) */
  .pht-m .pht-m-sharebar.pht-m-sharebar {
    position: fixed;
    inset-inline: 0;
    bottom: 0;
    z-index: 30;
    border-top: 1px solid var(--pht-border);
    background: color-mix(in srgb, var(--pht-surface) 95%, transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 10px 16px;
    padding-bottom: max(10px, env(safe-area-inset-bottom));
    box-sizing: border-box;
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1), opacity 200ms;
  }
  /* M5.2.5.2 — some quando o compartilhar do FIM do conteúdo entra na tela
     (não faz sentido ter os dois ao mesmo tempo). Alternado por JS via
     IntersectionObserver sobre `.pht-m-post__share`. */
  .pht-m .pht-m-sharebar.pht-m-sharebar.is-hidden {
    transform: translateY(130%);
    opacity: 0;
    pointer-events: none;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__inner {
    display: flex;
    align-items: center;
    gap: 6px;
    max-width: 480px;
    margin: 0 auto;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 44px;
    flex: 1;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 12px;
    font-weight: 700;
    color: var(--pht-text);
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    /* CAUSA RAIZ dos ícones invisíveis (medida ao vivo em 01/08/2026, depois
       de duas hipóteses erradas: primeiro "SVG de traço não renderiza",
       depois "botão de acessibilidade por cima"). Nenhuma das duas era.
       O Astra estiliza `button` com `padding: 12px 24px`. Os dois botões de
       ÍCONE são <button> (copiar/compartilhar) e herdavam isso; os outros
       dois são <a> e escapavam — daí só metade da barra sumir. Com
       box-sizing:border-box e max-width:46px, 48px de padding horizontal não
       deixavam NENHUM espaço interno: o SVG, item flex com shrink padrão,
       era espremido para 0px de largura. Ficava no DOM, com a cor certa,
       visibility:visible, opacity:1 — e zero pixel. Zerar o padding aqui
       devolve o espaço; o `flex` fixo no ícone abaixo garante que ele nunca
       mais encolha, mesmo se algum tema futuro reintroduzir padding. */
    padding: 0 14px;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn.is-wa {
    background: #1faf57;
    border-color: transparent;
    color: #fff;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn.is-icon {
    flex: 0 0 46px;
    max-width: 46px;
    padding: 0;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn .pht-m-ico {
    height: 16px;
    width: 16px;
    /* Base fixa + shrink 0: o ícone não é negociável no cálculo do flex. */
    flex: 0 0 16px;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn.is-copied {
    color: var(--pht-cat-green);
  }

  /* ===== NEWSLETTER (M5.2.5.2 — "Acampamento Base", fim do post) =====
     Painel gradiente-assinatura com textura topográfica. Medido no V2:
     radius 24, padding 24, elev-3, título Bricolage 22px, subtítulo 14/22.75,
     input e botão 48px pill. O formulário real é do site (MC4WP via
     shortcode) — estilizado aqui pra ficar na cara ALTITUDE. */
  /* M5.6: as mesmas regras valem também dentro do widget `home-newsletter`
     (ancestral `.pht-m-home-newsletter`) — reaproveita o CSS por inteiro,
     sem duplicar classes novas; nada aqui foi renomeado ou removido do
     bloco original do Post. */
  .pht-m .pht-m-post .pht-m-post__newsletter,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter {
    padding: 64px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-panel,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-panel {
    position: relative;
    overflow: hidden;
    border-radius: 24px;
    background: var(--pht-grad-sunset);
    padding: 24px;
    color: #fff;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-contour,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-contour {
    position: absolute;
    top: -40px;
    right: -40px;
    height: 224px;
    width: 224px;
    color: rgb(255 255 255 / 0.1);
    pointer-events: none;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-mark,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-mark {
    position: relative;
    display: block;
    height: 36px;
    width: 36px;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-title,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-title {
    position: relative;
    margin: 16px 0 0;
    font-family: var(--font-display, 'Bricolage Grotesque', 'Inter', sans-serif);
    font-size: clamp(22px, 17.6px + 1vw, 26px);
    line-height: 1.25;
    font-weight: 700;
    color: #fff;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-sub,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-sub {
    position: relative;
    margin: 8px 0 0;
    max-width: 42ch;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 22.75px;
    color: rgb(255 255 255 / 0.85);
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-form,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form {
    position: relative;
    margin-top: 20px;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-form input[type='email'],
  .pht-m .pht-m-post .pht-m-post__newsletter-form input[type='text'],
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form input[type='email'],
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form input[type='text'] {
    height: 48px;
    width: 100%;
    border-radius: 9999px;
    border: 0;
    background: rgb(255 255 255 / 0.95);
    padding: 0 20px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    color: #0f172a;
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-form input::placeholder,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form input::placeholder {
    color: #64748b;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-form input[type='submit'],
  .pht-m .pht-m-post .pht-m-post__newsletter-form button,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form input[type='submit'],
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form button {
    height: 48px;
    width: 100%;
    margin-top: 10px;
    border-radius: 9999px;
    border: 0;
    background: #0b1220;
    padding: 0 28px;
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    font-weight: 700;
    color: #fff;
    cursor: pointer;
    box-sizing: border-box;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-form .mc4wp-response,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-form .mc4wp-response {
    position: relative;
    margin-top: 12px;
    font-size: 13px;
    line-height: 1.5;
    color: #fff;
  }
  .pht-m .pht-m-post .pht-m-post__newsletter-privacy,
  .pht-m .pht-m-home-newsletter .pht-m-post__newsletter-privacy {
    position: relative;
    margin: 16px 0 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: rgb(255 255 255 / 0.7);
  }

  /* ---- Fontes ALTITUDE travadas no escopo (M5.2.5.1) ----
     As variáveis --font-* NÃO existem no site (verificado ao vivo, 24/07);
     só as famílias (Inter/Bricolage/JetBrains) estão carregadas. Definir
     os tokens aqui, no escopo .pht-m, garante que TODO componente use as
     fontes EXATAS do V2 sem depender de fallback. Nomes conferidos no
     @font-face servido pelo próprio site. */
  .pht-m.pht-m.pht-m {
    --font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
    --font-display: 'Bricolage Grotesque', 'Inter', ui-sans-serif, sans-serif;
    --font-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Mono', monospace;
    /* Base = Inter para TODO texto ALTITUDE. Achado real (24/07): o corpo
       da prosa (p, li) não tinha font-family — herdava a fonte do tema, por
       isso "não mudava". Aqui todo texto nasce Inter; títulos sobrescrevem
       para Bricolage. */
    font-family: var(--font-sans);
  }
  .pht-m .pht-m-post .pht-m-prose p,
  .pht-m .pht-m-post .pht-m-prose li,
  .pht-m .pht-m-post .pht-m-prose blockquote {
    font-family: var(--font-sans);
  }
  .pht-m.pht-m.pht-m ::selection {
    background: color-mix(in srgb, var(--pht-accent) 22%, transparent);
  }
  .pht-m.pht-m.pht-m a:focus-visible,
  .pht-m.pht-m.pht-m button:focus-visible {
    outline: 2px solid var(--pht-accent);
    outline-offset: 2px;
    border-radius: 6px;
  }

  /* Cores de marca dos botões de compartilhar (Facebook/Instagram) */
  .pht-m .pht-m-post .pht-m-post__share-btn.is-fb .pht-m-ico {
    color: #1877f2;
  }
  .pht-m .pht-m-post .pht-m-post__share-btn.is-ig .pht-m-ico {
    color: #e1306c;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn.is-fb .pht-m-ico {
    color: #1877f2;
  }
  .pht-m .pht-m-sharebar .pht-m-sharebar__btn.is-ig .pht-m-ico {
    color: #e1306c;
  }

  /* Refino: palavra longa (URL colada no texto) quebra em vez de estourar
     a coluna em telas estreitas. */
  .pht-m .pht-m-post .pht-m-prose p,
  .pht-m .pht-m-post .pht-m-prose li,
  .pht-m .pht-m-post .pht-m-prose h2,
  .pht-m .pht-m-post .pht-m-prose h3 {
    overflow-wrap: break-word;
  }

  /* =========================================================================
     INSTITUCIONAL — BLOCOS NOVOS (M5.5)
     `.pht-m-inst-breadcrumb`/`.pht-m-inst-hero`/`.pht-m-inst-links` já
     existiam prontos desde o M5.2.1 (ver acima) — aqui só o que faltava:
     cabeçalho de seção compartilhado + os widgets novos das 5 páginas.
     Espaçamento ENTRE widgets empilhados fica por conta do `flex_gap` do
     container Elementor da página (não duplicado aqui em margin-top) — só
     o espaçamento INTERNO de cada widget (ex.: título → conteúdo do mesmo
     widget) é margin-top explícito.
     ========================================================================= */

  .pht-m .pht-m-inst-section-head.pht-m-inst-section-head {
    margin-top: 56px; /* pt-14 do V2 — espaço entre blocos DENTRO do mesmo widget (Sobre Nós/Contato); o 1º bloco do widget usa o flex_gap do container, não este. */
  }
  .pht-m .pht-m-inst-section-head.pht-m-inst-section-head:first-child {
    margin-top: 0;
  }
  .pht-m .pht-m-inst-section-head .pht-m-inst-section-head__eyebrow {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-section-head .pht-m-inst-section-head__title {
    margin-top: 6px;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 22px;
    line-height: 27.5px;
    font-weight: 700;
    letter-spacing: -0.2px;
    color: var(--pht-text);
  }

  /* ---- Lista numerada: variante "card" (Padrão editorial, Sobre Nós) ---- */
  .pht-m .pht-m-inst-numlist__card.pht-m-inst-numlist__card {
    margin-top: 20px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px 0;
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__item:first-child {
    border-top: 0;
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__num {
    margin-top: 2px;
    width: 24px;
    flex-shrink: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    color: var(--pht-accent);
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__title {
    font-size: 15px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-numlist__card .pht-m-inst-numlist__text {
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text);
  }

  /* ---- Lista numerada: variante "cards" (Três passos, FAQ) ---- */
  .pht-m .pht-m-inst-steps.pht-m-inst-steps {
    margin-top: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    list-style: none;
    padding: 0;
  }
  .pht-m .pht-m-inst-steps .pht-m-inst-steps__item {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 16px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-steps .pht-m-inst-steps__num {
    width: 32px;
    flex-shrink: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 30px;
    line-height: 36px;
    font-weight: 600;
    color: var(--pht-accent);
  }
  .pht-m .pht-m-inst-steps .pht-m-inst-steps__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .pht-m .pht-m-inst-steps .pht-m-inst-steps__title {
    font-size: 15px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-steps .pht-m-inst-steps__text {
    margin-top: 4px;
    font-size: 14px;
    line-height: 21px;
    color: var(--pht-text-2);
  }

  /* ---- Lista numerada: variante "bare" (9 seções, Termos de Uso) ---- */
  .pht-m .pht-m-inst-sections.pht-m-inst-sections {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__item {
    padding: 24px 0;
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__item:first-child {
    padding-top: 0;
    border-top: 0;
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__head {
    display: flex;
    align-items: baseline;
    gap: 16px;
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__num {
    width: 36px;
    flex-shrink: 0;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 30px;
    line-height: 36px;
    font-weight: 600;
    color: var(--pht-accent);
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__title {
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 17px;
    line-height: 23.8px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-sections .pht-m-inst-sections__text {
    margin-top: 12px;
    padding-left: 52px;
    font-size: 15px;
    line-height: 25.5px; /* leading-[1.7] no V2 */
    color: var(--pht-text-2);
    box-sizing: border-box;
  }

  /* ---- Acordeão institucional (FAQ + Privacidade) — motor JÁ EXISTENTE
     (grid-template-rows 1fr↔0fr, is-collapsed), receita copiada de
     `.pht-m-post__essential-panel` sob prefixo próprio. ---- */
  .pht-m .pht-m-inst-accordion__card.pht-m-inst-accordion__card {
    margin-top: 20px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__item {
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__item:first-child {
    border-top: 0;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
    margin: 0;
    padding: 16px 0;
    border: 0;
    background: transparent;
    text-align: left;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__question {
    font-size: 15px;
    line-height: 20.25px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__chevron {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 28px;
    width: 28px;
    flex-shrink: 0;
    border-radius: 9999px;
    background: var(--pht-surface-sunken);
    color: var(--pht-accent);
    transition: transform 250ms;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__chevron-icon {
    height: 8px;
    width: 12px;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__item.is-collapsed .pht-m-inst-accordion__chevron {
    transform: rotate(-90deg);
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__panel {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 320ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__item.is-collapsed .pht-m-inst-accordion__panel {
    grid-template-rows: 0fr;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__panelinner {
    overflow: hidden;
    min-height: 0;
  }
  .pht-m .pht-m-inst-accordion__card .pht-m-inst-accordion__panelinner .pht-m-inst-prose {
    padding-bottom: 20px;
  }

  /* ---- Prosa institucional (WYSIWYG: intro da Privacidade + respostas
     ricas do acordeão) — ancestral próprio porque `.pht-m-prose` de
     verdade está preso a `.pht-m-post`. ---- */
  .pht-m .pht-m-inst-prose.pht-m-inst-prose {
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose p {
    margin-top: 12px;
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose p:first-child {
    margin-top: 0;
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose strong {
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose a {
    color: var(--pht-accent);
    font-weight: 600;
    text-decoration: underline;
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose ul {
    margin: 8px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    list-style: none;
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose li {
    position: relative;
    padding-left: 18px;
  }
  .pht-m .pht-m-inst-prose.pht-m-inst-prose li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 9px;
    height: 6px;
    width: 6px;
    border-radius: 9999px;
    background: var(--pht-accent);
  }

  /* ---- Callout institucional (Privacidade — contato direto) ---- */
  .pht-m .pht-m-inst-callout.pht-m-inst-callout {
    display: flex;
    align-items: center;
    gap: 12px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 14px 16px;
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    color: var(--pht-text);
    text-decoration: none;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-callout.pht-m-inst-callout:active {
    transform: scale(0.98);
  }
  .pht-m .pht-m-inst-callout .pht-m-inst-callout__icon {
    height: 16px;
    width: 16px;
    flex-shrink: 0;
    color: var(--pht-sunset-orange);
  }

  /* ---- Fundador (Sobre Nós) ---- */
  .pht-m .pht-m-inst-founder.pht-m-inst-founder {
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__head {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__avatar-ring {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 56px;
    width: 56px;
    flex-shrink: 0;
    border-radius: 9999px;
    background: var(--pht-grad-sunset);
    padding: 2px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 100%;
    border-radius: 9999px;
    background: var(--pht-surface);
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__initials {
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 18px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__id {
    display: flex;
    flex-direction: column;
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__role {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__name {
    margin-top: 2px;
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 17px;
    line-height: 20.4px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__bio {
    margin-top: 12px;
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-inst-founder .pht-m-inst-founder__bio:first-of-type {
    margin-top: 16px;
  }

  /* ---- Valores (Sobre Nós) ---- */
  .pht-m .pht-m-inst-values__description.pht-m-inst-values__description {
    margin-top: 12px;
    max-width: 500px; /* aprox. 58ch do V2, em px pra seguir a convenção do arquivo */
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-inst-values__list.pht-m-inst-values__list {
    margin: 20px 0 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  .pht-m .pht-m-inst-values__list .pht-m-inst-values__item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
  }
  .pht-m .pht-m-inst-values__list .pht-m-inst-values__marker {
    margin-top: 6px;
    height: 10px;
    width: 12px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-inst-values__list .pht-m-inst-values__text {
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text);
  }

  /* ---- Trilhas / categorias (Sobre Nós) ---- */
  .pht-m .pht-m-inst-trails__grid.pht-m-inst-trails__grid {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__item {
    display: block;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 16px;
    text-decoration: none;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__item:active {
    transform: scale(0.98);
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__row {
    display: flex;
    align-items: center;
    gap: 10px;
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__dot {
    height: 8px;
    width: 8px;
    flex-shrink: 0;
    border-radius: 9999px;
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__name {
    font-size: 15px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__chevron {
    margin-left: auto;
    height: 16px;
    width: 16px;
    flex-shrink: 0;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-trails__grid .pht-m-inst-trails__desc {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    line-height: 19.5px;
    color: var(--pht-text-2);
  }

  /* ---- Transparência/monetização (Sobre Nós) ---- */
  .pht-m .pht-m-inst-transparency.pht-m-inst-transparency {
    margin-top: 56px; /* pt-14 do V2 — não usa .pht-m-inst-section-head, precisa do próprio espaçador */
    position: relative;
    overflow: hidden;
    border-radius: var(--radius-card, 16px);
    background: var(--pht-surface-sunken);
    padding: 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-transparency.pht-m-inst-transparency:first-child {
    margin-top: 0;
  }
  .pht-m .pht-m-inst-transparency .pht-m-inst-transparency__mark {
    position: absolute;
    top: -12px;
    right: -12px;
    height: 64px;
    width: 64px;
    opacity: 0.08;
    pointer-events: none;
  }
  .pht-m .pht-m-inst-transparency .pht-m-inst-transparency__title {
    position: relative;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-sunset-orange, #ff7a3c);
  }
  .pht-m .pht-m-inst-transparency .pht-m-inst-transparency__text {
    position: relative;
    margin-top: 12px;
    font-size: 15px;
    line-height: 24.375px;
    color: var(--pht-text-2);
  }

  /* ---- Promessas de atendimento (Contato) ---- */
  .pht-m .pht-m-inst-promise.pht-m-inst-promise {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }
  .pht-m .pht-m-inst-promise .pht-m-inst-promise__pill {
    display: flex;
    align-items: center;
    gap: 6px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 6px 14px;
    font-size: 12px;
    line-height: 16px;
    font-weight: 600;
    color: var(--pht-text);
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-promise .pht-m-inst-promise__icon-svg {
    height: 14px;
    width: 14px;
    flex-shrink: 0;
    color: var(--pht-cat-green);
  }

  /* ---- Canais diretos (Contato) ---- */
  .pht-m .pht-m-inst-channels__grid.pht-m-inst-channels__grid {
    margin-top: 12px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__item {
    display: flex;
    align-items: center;
    gap: 12px;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 16px;
    text-decoration: none;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__item:active {
    transform: scale(0.98);
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    width: 40px;
    flex-shrink: 0;
    border-radius: 12px;
    background: var(--pht-surface-sunken);
    color: var(--pht-accent);
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__icon-svg {
    height: 20px;
    width: 20px;
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__body {
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__name {
    display: block;
    font-size: 15px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__handle {
    display: block;
    margin-top: 2px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-channels__grid .pht-m-inst-channels__arrow {
    margin-left: auto;
    height: 16px;
    width: 16px;
    flex-shrink: 0;
    color: var(--pht-text-3);
  }

  /* ---- Guias práticos (FAQ) — lista empilhada, ver docblock do widget
     sobre a simplificação de 3 colunas pra 1. ---- */
  .pht-m .pht-m-inst-guides__list.pht-m-inst-guides__list {
    margin-top: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__item {
    display: block;
    border-radius: var(--radius-card, 16px);
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 16px;
    text-decoration: none;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__item:active {
    transform: scale(0.98);
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__title {
    font-size: 15px;
    line-height: 20px;
    font-weight: 700;
    color: var(--pht-text);
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__chevron {
    height: 16px;
    width: 16px;
    flex-shrink: 0;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-guides__list .pht-m-inst-guides__desc {
    display: block;
    margin-top: 6px;
    font-size: 13px;
    line-height: 19.5px;
    color: var(--pht-text-2);
  }

  /* =========================================================================
     FORMULÁRIO DE CONTATO — WPForms (M5.5)
     Sem widget PHP de envio (decisão do projeto): o formulário nativo já
     publicado no site entra via widget WPForms-para-Elementor dentro do
     container `.pht-m-inst-form` (inserido manualmente, ver passo a passo
     de entrega). Aqui só a reestilização visual pra bater com o ALTITUDE —
     classes do WPForms não são nossas, por isso a especificidade encadeia
     com `.pht-m-inst-form` duplicada quando não há 3º ancestral natural.
     ========================================================================= */
  .pht-m .pht-m-inst-form .wpforms-field-label {
    display: block;
    margin-bottom: 6px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    line-height: 14.4px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.96px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-inst-form .wpforms-field {
    margin-bottom: 14px;
    padding: 0;
  }
  .pht-m .pht-m-inst-form .wpforms-field input[type='text'],
  .pht-m .pht-m-inst-form .wpforms-field input[type='email'],
  .pht-m .pht-m-inst-form .wpforms-field input[type='tel'],
  .pht-m .pht-m-inst-form .wpforms-field select {
    height: 48px;
    width: 100%;
    border-radius: 12px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 0 16px;
    font-size: 15px;
    color: var(--pht-text);
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-form .wpforms-field textarea {
    width: 100%;
    min-height: 120px;
    border-radius: 12px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    padding: 12px 16px;
    font-size: 15px;
    line-height: 22px;
    color: var(--pht-text);
    box-sizing: border-box;
  }
  .pht-m .pht-m-inst-form.pht-m-inst-form .wpforms-submit-container {
    margin-top: 4px;
  }
  .pht-m .pht-m-inst-form.pht-m-inst-form .wpforms-submit {
    height: 48px;
    width: 100%;
    border-radius: 9999px;
    border: 0;
    background: var(--pht-accent);
    color: #fff;
    font-size: 14px;
    font-weight: 700;
    box-sizing: border-box;
    transition: transform 150ms;
  }
  .pht-m .pht-m-inst-form.pht-m-inst-form .wpforms-submit:active {
    transform: scale(0.98);
  }

  /* ---- Título de página do Astra (M5.5.1) — as 5 páginas institucionais
     têm o "Page Title" nativo do Astra habilitado (barra branca crua com
     o nome da página), redundante com o Hero ALTITUDE que já traz título
     estilizado. Escondido só no mobile, só nessas 5 páginas — desktop e
     as demais páginas do site continuam normais. ---- */
  body.page-id-42 .entry-header.entry-header,
  body.page-id-40 .entry-header.entry-header,
  body.page-id-472 .entry-header.entry-header,
  body.page-id-119 .entry-header.entry-header,
  body.page-id-697 .entry-header.entry-header {
    display: none !important;
  }

  /* =========================================================================
     HOME (M5.6) — cada bloco abaixo corresponde a UM widget próprio
     (`includes/widgets/class-widget-home-*.php`), nessa mesma ordem. Espaço
     ENTRE seções vem do flex_gap do container Elementor da página, nunca de
     padding/margin próprio (regra dura — foi o que dobrou o espaçamento na
     v0.10.1). Nenhum seletor aqui depende de :first-child/vizinho entre
     WIDGETS diferentes — só dentro do próprio widget, onde faz sentido.
     ========================================================================= */

  /* Cabeçalho de seção: reaproveita .pht-m-section-header* (já existia,
     usado em class-widget-post.php) — ver PHT_Altitude_Home::section_header().
     Nenhuma classe nova aqui, só o ajuste de padding específico do
     Carrossel logo abaixo. */

  /* ---- Hero (peak-altitude-home-hero) ---- */
  .pht-m .pht-m-home-hero.pht-m-home-hero {
    padding: 24px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
    color: var(--pht-cat-pink);
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__eyebrow-mark {
    height: 20px;
    width: 20px;
    flex-shrink: 0;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__eyebrow-rule {
    height: 1px;
    width: 32px;
    flex-shrink: 0;
    background: var(--pht-cat-pink);
    opacity: 0.6;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__card {
    position: relative;
    display: block;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    border-radius: var(--radius-hero, 24px);
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__img {
    position: absolute;
    inset: 0;
    height: 100%;
    width: 100%;
    object-fit: cover;
  }
  @media (hover: hover) {
    .pht-m .pht-m-home-hero .pht-m-home-hero__img {
      transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .pht-m .pht-m-home-hero .pht-m-home-hero__card:hover .pht-m-home-hero__img {
      transform: scale(1.02);
    }
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__scrim {
    position: absolute;
    inset: 0;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__overlay {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    padding: 20px 20px 28px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__badge {
    display: inline-block;
    border-radius: 9999px;
    padding: 6px 12px;
    color: #fff;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__title {
    margin-top: 12px;
    color: #fff;
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__meta {
    margin-top: 12px;
    color: rgb(255 255 255 / 0.7);
  }
  .pht-m .pht-m-home-hero .pht-m-home-hero__ridge {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    height: 10px;
    width: 100%;
    color: var(--pht-canvas);
  }

  /* ---- Carrossel de populares (peak-altitude-home-carousel) ---- */
  .pht-m .pht-m-home-carousel .pht-m-section-header {
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__viewport {
    position: relative;
    margin-top: 16px;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__track {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    padding: 0 20px;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 20px;
    box-sizing: border-box;
    -ms-overflow-style: none;
    scrollbar-width: none;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__track::-webkit-scrollbar {
    display: none;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__card {
    position: relative;
    display: block;
    flex-shrink: 0;
    width: 82%;
    scroll-snap-align: center;
    overflow: hidden;
    border-radius: 20px;
    text-decoration: none;
  }
  @media (min-width: 640px) {
    .pht-m .pht-m-home-carousel .pht-m-home-carousel__card {
      width: 60%;
    }
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__media img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
  }
  @media (hover: hover) {
    .pht-m .pht-m-home-carousel .pht-m-home-carousel__media img {
      transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .pht-m .pht-m-home-carousel .pht-m-home-carousel__card:hover .pht-m-home-carousel__media img {
      transform: scale(1.03);
    }
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__scrim {
    position: absolute;
    inset: 0;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__overlay {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    padding: 16px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__badge {
    display: inline-block;
    border-radius: 9999px;
    padding: 4px 10px;
    color: #fff;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__title {
    margin-top: 8px;
    color: #fff;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__meta {
    margin-top: 8px;
    color: rgb(255 255 255 / 0.7);
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__dots {
    margin-top: 16px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 6px;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__dot {
    height: 8px;
    width: 8px;
    border-radius: 9999px;
    border: 0;
    padding: 0;
    background: var(--pht-border-strong);
    transition: width 300ms, background-color 300ms;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-carousel .pht-m-home-carousel__dot.is-active {
    width: 20px;
    background: var(--pht-accent);
  }

  /* ---- Feed / Últimos posts (peak-altitude-home-feed) — reaproveita
     .pht-m-card-trilha* (M5.2.6.1) por inteiro, nenhuma classe de card
     nova aqui. ---- */
  .pht-m .pht-m-home-feed.pht-m-home-feed {
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-feed .pht-m-home-feed__list {
    display: flex;
    flex-direction: column;
  }
  .pht-m .pht-m-home-feed .pht-m-home-feed__list > .pht-m-card-trilha {
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-home-feed .pht-m-home-feed__list > .pht-m-card-trilha:first-child {
    border-top: 0;
  }

  /* ---- Anúncio (peak-altitude-home-ad) ---- */
  .pht-m .pht-m-home-ad.pht-m-home-ad {
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-ad .pht-m-home-ad__label {
    margin-bottom: 6px;
    font-size: 10px;
    color: var(--pht-text-3);
    opacity: 0.7;
  }
  .pht-m .pht-m-home-ad .pht-m-home-ad__frame {
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface-sunken);
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-ad.pht-m-home-ad--banner .pht-m-home-ad__frame {
    height: 100px;
    width: 100%;
  }
  .pht-m .pht-m-home-ad.pht-m-home-ad--rect .pht-m-home-ad__frame {
    height: 250px;
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
  }
  .pht-m .pht-m-home-ad .pht-m-home-ad__text {
    opacity: 0.5;
    color: var(--pht-text-3);
  }

  /* ---- Mais lidos (peak-altitude-home-most-read) ---- */
  .pht-m .pht-m-home-most-read.pht-m-home-most-read {
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__list {
    margin: 8px 0 0;
    padding: 0;
    list-style: none;
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__item {
    border-bottom: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__item:last-child {
    border-bottom: 0;
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__link {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 16px 0;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__rank {
    width: 28px;
    flex-shrink: 0;
    font-weight: 600; /* tamanho/família vêm de .mono-data (14px, já no markup) — não sobrescrever */
    color: color-mix(in srgb, var(--pht-text-3) 40%, transparent);
  }
  .pht-m .pht-m-home-most-read .pht-m-home-most-read__title {
    font-size: 15px;
    line-height: 20.625px;
    font-weight: 700;
    color: var(--pht-text);
  }
  @media (hover: hover) {
    .pht-m .pht-m-home-most-read .pht-m-home-most-read__link:hover .pht-m-home-most-read__title {
      color: var(--pht-accent);
    }
  }

  /* ---- Resumo da semana (peak-altitude-home-weekly) — mosaico exclusivo
     ALTITUDE (M5.6, evoluído de placeholder pra funcional): 1 destaque
     16:10 + 4 cards em grade 2×2, cor de família no marcador de pico e na
     categoria, elev-1/2 (anel de luz no escuro, já vem do Kit). Não repete
     .pht-m-card-trilha nem .pht-m-home-carousel__card de propósito. ---- */
  .pht-m .pht-m-home-weekly.pht-m-home-weekly {
    padding: 0 20px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__mosaic {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__feature {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: var(--radius-card, 16px);
    background: var(--pht-surface);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__media img {
    position: absolute;
    inset: 0;
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__scrim {
    position: absolute;
    inset: 0;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__feature .pht-m-home-weekly__marker {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 1;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__marker {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
    border-radius: 10px;
    padding: 5px 8px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__marker-icon {
    height: 10px;
    width: 12px;
    flex-shrink: 0;
    color: #fff;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__marker-num {
    font-size: 12px;
    font-weight: 600;
    color: #fff;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card-body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 14px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__cat {
    display: block;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card-title {
    font-family: var(--font-display, 'Bricolage Grotesque', var(--font-sans, 'Inter'), sans-serif);
    font-size: 16px;
    line-height: 20.8px;
    font-weight: 700;
    color: var(--pht-text);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card-meta {
    display: block;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  @media (max-width: 359px) {
    .pht-m .pht-m-home-weekly .pht-m-home-weekly__grid {
      grid-template-columns: 1fr;
    }
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card {
    display: flex;
    flex-direction: column;
    border-radius: 12px;
    background: var(--pht-surface);
    padding: 14px;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card .pht-m-home-weekly__marker {
    margin-bottom: 10px;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card .pht-m-home-weekly__card-body {
    padding: 0;
    gap: 3px;
  }
  .pht-m .pht-m-home-weekly .pht-m-home-weekly__card .pht-m-home-weekly__card-title {
    font-size: 14px;
    line-height: 18.2px;
  }
  @media (hover: hover) {
    .pht-m .pht-m-home-weekly .pht-m-home-weekly__feature:hover .pht-m-home-weekly__card-title,
    .pht-m .pht-m-home-weekly .pht-m-home-weekly__card:hover .pht-m-home-weekly__card-title {
      color: var(--pht-accent);
    }
  }

  /* ---- Voltar ao topo (peak-altitude-back-to-top) — fixo, fora do fluxo
     das seções (não entra no flex_gap do container). Some/aparece por
     opacity+transform só (nunca layout), JS só alterna .is-visible. ---- */
  .pht-m .pht-m-back-to-top.pht-m-back-to-top {
    position: fixed;
    right: 20px;
    bottom: 24px;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 48px;
    width: 48px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: var(--pht-surface);
    color: var(--pht-accent);
    opacity: 0;
    transform: translateY(8px);
    pointer-events: none;
    transition: opacity 200ms cubic-bezier(0.22, 1, 0.36, 1), transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
    box-sizing: border-box;
  }
  .pht-m .pht-m-back-to-top.pht-m-back-to-top:active {
    transform: scale(0.95);
  }
  .pht-m .pht-m-back-to-top.pht-m-back-to-top.is-visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  .pht-m .pht-m-back-to-top .pht-m-back-to-top__icon {
    height: 20px;
    width: 20px;
    flex-shrink: 0;
  }
  @media (prefers-reduced-motion: reduce) {
    .pht-m .pht-m-back-to-top.pht-m-back-to-top {
      transition: opacity 1ms;
    }
  }

  /* ===== ÍNDICE DE POSTS (M5.7 — widget peak-altitude-posts-index) =====
     Sistema exclusivo de "todos os posts" — trilho de categorias (links
     reais pros arquivos que já existem) + lista densa (.pht-m-card-trilha,
     já existente) + paginação real (get_pagenum_link, sem infinite-scroll
     fingido). Sem equivalente no V2 — design novo, mesma linguagem. */
  .pht-m .pht-m-posts-index.pht-m-posts-index {
    display: block;
    padding: 24px 20px 0;
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__nav {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 4px;
    margin-bottom: 8px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__nav-link {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    height: 38px;
    padding: 8px 16px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border);
    background: transparent;
    color: var(--pht-text-2);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    line-height: 20px;
    font-weight: 500;
    white-space: nowrap;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__nav-link:hover {
    border-color: var(--pht-posts-nav-color, var(--pht-border-strong));
    color: var(--pht-text);
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__nav-link.is-active {
    font-weight: 600;
    background: var(--pht-accent);
    border-color: transparent;
    color: #fff;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__list {
    display: flex;
    flex-direction: column;
    margin-top: 8px;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__list > .pht-m-card-trilha {
    border-top: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__list > .pht-m-card-trilha:first-child {
    border-top: 0;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 48px 24px;
    border: 1px dashed var(--pht-border-strong);
    border-radius: var(--radius-card, 16px);
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 8px;
    padding: 20px 0 32px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__page-link {
    display: inline-flex;
    align-items: center;
    height: 44px;
    padding: 0 20px;
    border-radius: 9999px;
    border: 1px solid var(--pht-border-strong);
    color: var(--pht-text);
    font-family: var(--font-sans, 'Inter', sans-serif);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__page-link.is-disabled {
    opacity: 0.35;
    pointer-events: none;
  }
  .pht-m .pht-m-posts-index .pht-m-posts-index__page-status {
    font-size: 13px;
    color: var(--pht-text-3);
  }

  /* ===== ESPAÇAMENTO ENTRE SEÇÕES DA HOME (M5.6.1) =====
     Achado real: `flex_gap` no container raiz da Home (6e3973d, 48px) NUNCA
     compila em `gap` de verdade. O Elementor só aplica a propriedade CSS
     `gap:var(--row-gap) var(--column-gap)` dentro de `.e-con-inner` — um
     wrapper que ele só gera para containers com `content_width:"boxed"`.
     TODOS os containers da Home são `content_width:"full"` (decisão
     original, mobile edge-to-edge) — então `.e-con-inner` nunca existe pra
     eles (confirmado: 0 ocorrências em todo o CSS compilado da página) e o
     `gap` fica só como custom property inerte, nunca virando espaçamento
     real. Era esse o motivo do Hero "colado" no Carrossel — não overlap de
     z-index, era ausência total de separação entre as seções.
     Correção: margem fixa em px aqui, independente do Elementor e do
     tamanho de tela do aparelho (margin de flex item NUNCA colapsa com o
     container flex — comportamento garantido pela spec, ao contrário de
     gap, que dependia de uma estrutura que o Elementor não gera aqui).
     Nunca mexer em padding pra resolver isso — é a MARGEM entre seções,
     não o respiro interno de cada uma. */
  .pht-m .pht-m-home-carousel.pht-m-home-carousel,
  .pht-m .pht-m-home-feed.pht-m-home-feed,
  .pht-m .pht-m-home-ad.pht-m-home-ad,
  .pht-m .pht-m-explorer.pht-m-explorer,
  .pht-m .pht-m-home-newsletter.pht-m-home-newsletter,
  .pht-m .pht-m-home-most-read.pht-m-home-most-read,
  .pht-m .pht-m-home-weekly.pht-m-home-weekly {
    margin-top: 48px;
  }

  /* ---- Defesa — Home (post_id 499), elementos do desktop cujo
     hide_tablet/hide_mobile o Elementor salva mas não compila ---- */
  /* v0.11.2: achado em 3 elementos "Atomic" (e-flexbox) — `e-XXXXXXX` sem
     regra de media query nenhuma no CSS compilado da página.
     v0.12.1: causa real do bug "Hero/Carrossel sobrepostos" — MAIS 4
     elementos com a MESMA lacuna, agora em containers comuns (`e-con
     e-parent`/`e-con-boxed`, não-Atomic): `a879fdb` é o PRIMEIRO elemento
     da página (logo depois do `<header>` desktop, ANTES do container
     `.pht-m` da Home) — forma decorativa branca (`border-radius:100px
     100px 0 100px`, `margin-left:90px`) que ficava por cima do Hero/
     Carrossel mobile porque nunca era escondida. `be74d69`/`b496c96`/
     `b4c60b0` têm a mesma classe `elementor-hidden-tablet
     elementor-hidden-mobile` no HTML e a mesma ausência total de regra
     de ocultação no CSS compilado (conferido em post-499.css, nenhum dos
     7 tem `display:none` em breakpoint algum — nem no arquivo do post
     nem em base-mobile.css). Escondido aqui por `data-id`, só nesses 7
     elementos específicos desta página — não é um componente
     reutilizável, é defesa pontual pra uma lacuna do Elementor. Se um dia
     o Elementor passar a compilar isso de verdade, esta regra fica
     redundante e inofensiva. */
  [data-id="0e9e8ed"],
  [data-id="9d64ca4"],
  [data-id="ce63923"],
  [data-id="a879fdb"],
  [data-id="be74d69"],
  [data-id="b496c96"],
  [data-id="b4c60b0"] {
    display: none !important;
  }

  /* =====================================================================
     PÁGINAS DE CATEGORIA (M5.8) — porta `category-page.tsx`.
     Seis personalidades: radar · timeline · grid · reviews · guides · tier.
     Medidas conferidas no protótipo em 412px (hero 32/20/8, intro 16/26,
     régua 40×4, cume radius 16, trilha 20/0 gap 16).
     Cor da família entra por `--pht-cat-color` no WRAPPER (definida no PHP),
     então título, régua e selos cascateiam sem `style=` em cada elemento e
     sem disputa de especificidade com os controles do Elementor.
     ===================================================================== */

  /* ---- Apresentação da categoria ---- */
  .pht-m .pht-m-cat-hero.pht-m-cat-hero {
    position: relative;
    overflow: hidden;
    padding: 32px 20px 8px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__artwrap {
    position: absolute;
    top: -24px;
    right: -16px;
    width: var(--pht-cat-hero-art, 168px);
    height: var(--pht-cat-hero-art, 168px);
    color: var(--pht-cat-color, var(--pht-cat-neutral));
    opacity: 0.13;
    pointer-events: none;
    transform: perspective(600px) rotateX(var(--pht-tilt-x, 0deg)) rotateY(var(--pht-tilt-y, 0deg));
    transition: transform 620ms cubic-bezier(0.22, 1, 0.36, 1);
    will-change: transform;
  }
  /* Durante o arrasto a arte acompanha o dedo em tempo real (sem transição);
     ao soltar, a transição volta e faz a volta elástica. A classe fica na
     SEÇÃO, que é quem escuta o gesto. */
  .pht-m .pht-m-cat-hero.is-dragging .pht-m-cat-hero__artwrap,
  .pht-m .pht-m-cat-hero.is-dragging .pht-m-cat-hero__art g {
    transition: none;
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__art {
    display: block;
    height: 100%;
    width: 100%;
  }
  /* Camadas com profundidades diferentes — o parallax que dá vida à arte. */
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__art g {
    transition: transform 620ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__art g[data-l='1'] {
    transform: translate3d(calc(var(--pht-tilt-px, 0) * 2px), calc(var(--pht-tilt-py, 0) * 2px), 0);
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__art g[data-l='2'] {
    transform: translate3d(calc(var(--pht-tilt-px, 0) * 5px), calc(var(--pht-tilt-py, 0) * 5px), 0);
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__art g[data-l='3'] {
    transform: translate3d(calc(var(--pht-tilt-px, 0) * 9px), calc(var(--pht-tilt-py, 0) * 9px), 0);
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    color: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__mark {
    width: 15px;
    height: 12px;
    flex-shrink: 0;
    display: block;
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__title {
    margin: 8px 0 0;
    color: var(--pht-text);
    font-size: var(--pht-cat-hero-title, inherit);
    text-wrap: pretty;
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__intro {
    margin: 12px 0 0;
    max-width: 54ch;
    font-size: 16px;
    line-height: 26px;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__meta {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__rule {
    display: block;
    height: 4px;
    width: 40px;
    flex-shrink: 0;
    border-radius: 9999px;
    background: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-hero .pht-m-cat-hero__count {
    color: var(--pht-text-3);
  }

  /* ---- Feed: espaçamento comum das seis personalidades ---- */
  .pht-m .pht-m-cat-feed.pht-m-cat-feed {
    padding: 24px 20px 0;
    box-sizing: border-box;
  }

  /* ---- RADAR ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-radar__eyebrow {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    color: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-radar__dot {
    display: block;
    height: 8px;
    width: 8px;
    flex-shrink: 0;
    border-radius: 9999px;
    background: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-radar__list {
    margin-top: 4px;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-radar__list .pht-m-card-trilha {
    border-bottom: 1px solid var(--pht-border);
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-radar__list .pht-m-card-trilha:last-child {
    border-bottom: 0;
  }

  /* ---- TIMELINE ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline {
    margin: 32px 0 0 6px;
    padding: 0 0 0 24px;
    list-style: none;
    border-left: 2px solid color-mix(in srgb, var(--pht-cat-color, var(--pht-cat-neutral)) 35%, transparent);
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__item {
    position: relative;
    padding-bottom: 32px;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__item:last-child {
    padding-bottom: 0;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__dot {
    position: absolute;
    top: 4px;
    left: -31px;
    height: 14px;
    width: 14px;
    border-radius: 9999px;
    border: 3px solid var(--pht-canvas);
    background: var(--pht-cat-color, var(--pht-cat-neutral));
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__link {
    display: block;
    text-decoration: none;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__meta {
    margin: 0;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__title {
    margin: 6px 0 0;
    color: var(--pht-text);
    text-wrap: pretty;
    transition: color 180ms ease;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__excerpt {
    display: -webkit-box;
    margin: 8px 0 0;
    font-size: 14px;
    line-height: 22px;
    color: var(--pht-text-2);
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* ---- GRID / REVIEWS ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-grid {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin-top: 20px;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-grid .pht-m-card-cume {
    margin: 0;
  }

  /* ---- GUIDES ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-guides {
    display: flex;
    flex-direction: column;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__item {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 24px 0;
    border-bottom: 1px solid var(--pht-border);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__item:last-child {
    border-bottom: 0;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__badge {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    width: 40px;
    flex-shrink: 0;
    margin-top: 2px;
    border-radius: 12px;
    background: color-mix(in srgb, var(--pht-cat-color, var(--pht-cat-neutral)) 12%, transparent);
    color: var(--pht-cat-color, var(--pht-cat-neutral));
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__mark {
    display: block;
    width: 16px;
    height: 13px;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__label {
    color: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__title {
    margin-top: 4px;
    color: var(--pht-text);
    text-wrap: pretty;
    transition: color 180ms ease;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__excerpt {
    display: -webkit-box;
    margin-top: 6px;
    font-size: 14px;
    line-height: 22px;
    color: var(--pht-text-2);
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__meta {
    margin-top: 8px;
    color: var(--pht-text-3);
  }

  /* ---- TIER ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-tier {
    display: flex;
    flex-direction: column;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 20px 0;
    border-bottom: 1px solid var(--pht-border);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__item:last-child {
    border-bottom: 0;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__rank {
    width: 48px;
    flex-shrink: 0;
    font-size: 36px;
    line-height: 1;
    font-weight: 600;
    color: var(--pht-text-3);
    opacity: 0.45;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__item.is-first .pht-m-cat-tier__rank {
    color: var(--pht-cat-color, var(--pht-cat-neutral));
    opacity: 1;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__label {
    color: var(--pht-cat-color, var(--pht-cat-neutral));
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__title {
    margin-top: 2px;
    color: var(--pht-text);
    text-wrap: pretty;
    transition: color 180ms ease;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__meta {
    margin-top: 6px;
    color: var(--pht-text-3);
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__thumb {
    display: block;
    height: 72px;
    width: 96px;
    flex-shrink: 0;
    border-radius: 12px;
    overflow: hidden;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__thumb img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
    transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  /* Micro-interação comum (só onde há mouse; no toque o feedback é o :active) */
  @media (hover: hover) {
    .pht-m .pht-m-cat-feed .pht-m-cat-timeline__link:hover .pht-m-cat-timeline__title,
    .pht-m .pht-m-cat-feed .pht-m-cat-guides__item:hover .pht-m-cat-guides__title,
    .pht-m .pht-m-cat-feed .pht-m-cat-tier__item:hover .pht-m-cat-tier__title {
      color: var(--pht-accent);
    }
    .pht-m .pht-m-cat-feed .pht-m-cat-tier__item:hover .pht-m-cat-tier__thumb img {
      transform: scale(1.05);
    }
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-timeline__link:active,
  .pht-m .pht-m-cat-feed .pht-m-cat-guides__item:active,
  .pht-m .pht-m-cat-feed .pht-m-cat-tier__item:active {
    opacity: 0.7;
  }

  /* ---- Estado vazio ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 64px 24px;
    border: 1px dashed var(--pht-border-strong);
    border-radius: 16px;
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-empty__art {
    display: block;
    height: 96px;
    width: 96px;
    color: var(--pht-text-3);
    opacity: 0.3;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-empty__title {
    margin: 20px 0 0;
    color: var(--pht-text);
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-empty__text {
    margin: 8px 0 0;
    max-width: 34ch;
    font-size: 15px;
    line-height: 24px;
    color: var(--pht-text-2);
  }

  /* ---- Paginação ---- */
  .pht-m .pht-m-cat-feed .pht-m-cat-pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 40px;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-pagination .page-numbers {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 14px;
    border: 1px solid var(--pht-border);
    border-radius: 9999px;
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 14px;
    line-height: 1;
    font-weight: 500;
    color: var(--pht-text-2);
    text-decoration: none;
    box-sizing: border-box;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-pagination .page-numbers.current {
    background: var(--pht-cat-color, var(--pht-cat-neutral));
    border-color: transparent;
    color: #fff;
  }
  .pht-m .pht-m-cat-feed .pht-m-cat-pagination .page-numbers.dots {
    border-color: transparent;
    min-width: 24px;
    padding: 0;
  }

  /* =====================================================================
     BUSCA e 404 (M5.11).
     Um bloco só porque os dois compartilham forma de campo, lista de
     categorias sugeridas e sub-título — o 404 reaproveita as classes
     `.pht-m-search-page__*` de propósito, para não haver duas verdades
     sobre como um campo de busca se parece neste site.
     Cor de destaque entra por `--pht-search-accent` no WRAPPER (controle do
     Elementor escreve nela), então nada aqui precisa de !important.
     Cartões de resultado são `.pht-m-card-trilha`, já estilizado acima.
     ===================================================================== */

  /* ---- Cabeçalho ---- */
  .pht-m .pht-m-search-page.pht-m-search-page,
  .pht-m .pht-m-404.pht-m-404 {
    box-sizing: border-box;
    padding: 0 0 40px;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__head {
    box-sizing: border-box;
    padding: 32px 20px 8px;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__eyebrow {
    margin: 0 0 8px;
    line-height: 1.2;
    color: var(--pht-search-accent, var(--pht-accent));
  }
  .pht-m .pht-m-search-page .pht-m-search-page__title {
    margin: 0;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__count {
    margin: 8px 0 0;
    line-height: 1.2;
    color: var(--pht-text-2);
  }
  .pht-m .pht-m-search-page .pht-m-search-page__rule {
    display: block;
    width: 40px;
    height: 4px;
    margin: 16px 0 0;
    border-radius: 2px;
    background: var(--pht-search-accent, var(--pht-accent));
  }

  /* ---- Campo de busca (compartilhado por Busca e 404) ---- */
  .pht-m .pht-m-search-page .pht-m-search-page__form,
  .pht-m .pht-m-404 .pht-m-search-page__form {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    box-sizing: border-box;
    margin: 20px 0 0;
    padding: 0 0 0 40px;
    border: 1px solid var(--pht-border);
    border-radius: 14px;
    background: var(--pht-surface);
    transition: border-color 200ms ease;
  }
  .pht-m .pht-m-404 .pht-m-search-page__form {
    margin: 24px 20px 0;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__form:focus-within,
  .pht-m .pht-m-404 .pht-m-search-page__form:focus-within {
    border-color: var(--pht-search-accent, var(--pht-accent));
  }
  .pht-m .pht-m-search-page .pht-m-search-page__icon,
  .pht-m .pht-m-404 .pht-m-search-page__icon {
    position: absolute;
    left: 14px;
    width: 18px;
    height: 18px;
    color: var(--pht-text-2);
    pointer-events: none;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__input,
  .pht-m .pht-m-404 .pht-m-search-page__input {
    flex: 1 1 auto;
    box-sizing: border-box;
    min-width: 0;
    height: 46px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--pht-text);
    font-size: 15px;
    line-height: 46px;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__input:focus,
  .pht-m .pht-m-404 .pht-m-search-page__input:focus {
    outline: none;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__submit,
  .pht-m .pht-m-404 .pht-m-search-page__submit {
    flex: 0 0 auto;
    box-sizing: border-box;
    height: 38px;
    margin: 0 4px 0 0;
    padding: 0 16px;
    border: 0;
    border-radius: 10px;
    background: var(--pht-search-accent, var(--pht-accent));
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    line-height: 38px;
    cursor: pointer;
  }

  /* ---- Lista de resultados ---- */
  .pht-m .pht-m-search-page .pht-m-search-page__list,
  .pht-m .pht-m-404 .pht-m-search-page__list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    box-sizing: border-box;
    padding: 20px;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__excerpt {
    margin: 6px 0 0;
    color: var(--pht-text-2);
    font-size: 14px;
    line-height: 20px;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__subtitle,
  .pht-m .pht-m-404 .pht-m-search-page__subtitle {
    box-sizing: border-box;
    margin: 24px 0 0;
    padding: 0 20px;
    font-size: 17px;
    font-weight: 700;
    line-height: 24px;
    color: var(--pht-text);
  }

  /* ---- Categorias sugeridas ---- */
  .pht-m .pht-m-search-page .pht-m-search-page__cats,
  .pht-m .pht-m-404 .pht-m-search-page__cats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    box-sizing: border-box;
    margin: 20px 0 0;
    padding: 0 20px;
    list-style: none;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__cat,
  .pht-m .pht-m-404 .pht-m-search-page__cat {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    box-sizing: border-box;
    height: 36px;
    padding: 0 14px;
    border: 1px solid var(--pht-border);
    border-radius: 18px;
    background: var(--pht-surface);
    color: var(--pht-text);
    font-size: 13px;
    font-weight: 600;
    line-height: 34px;
    text-decoration: none;
    transition: border-color 200ms ease, transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-search-page .pht-m-search-page__cat:active,
  .pht-m .pht-m-404 .pht-m-search-page__cat:active {
    transform: scale(0.97);
  }
  .pht-m .pht-m-search-page .pht-m-search-page__cat-dot,
  .pht-m .pht-m-404 .pht-m-search-page__cat-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--pht-search-cat, var(--pht-cat-neutral));
  }

  /* ---- Estado vazio: a tela onde mais se perde visita ---- */
  .pht-m .pht-m-search-page .pht-m-search-page__empty {
    box-sizing: border-box;
    padding: 40px 20px 0;
    text-align: center;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__mark {
    display: block;
    width: 22px;
    height: 18px;
    margin: 0 auto 16px;
    color: var(--pht-search-accent, var(--pht-accent));
  }
  .pht-m .pht-m-search-page .pht-m-search-page__empty-title {
    margin: 0;
    font-size: 21px;
    font-weight: 700;
    line-height: 28px;
    color: var(--pht-text);
  }
  .pht-m .pht-m-search-page .pht-m-search-page__empty-text {
    margin: 8px 0 0;
    color: var(--pht-text-2);
    font-size: 15px;
    line-height: 22px;
  }

  /* ---- Paginação (mesma forma da categoria) ---- */
  .pht-m .pht-m-search-page .pht-m-search-page__pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    box-sizing: border-box;
    padding: 8px 20px 0;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-width: 38px;
    height: 38px;
    padding: 0 10px;
    border: 1px solid var(--pht-border);
    border-radius: 10px;
    color: var(--pht-text);
    font-size: 13px;
    line-height: 36px;
    text-decoration: none;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__pagination .page-numbers.current {
    border-color: var(--pht-search-accent, var(--pht-accent));
    color: var(--pht-search-accent, var(--pht-accent));
    font-weight: 700;
  }
  .pht-m .pht-m-search-page .pht-m-search-page__pagination .page-numbers.dots {
    border-color: transparent;
    min-width: 24px;
    padding: 0;
  }

  /* ---- 404 ---- */
  .pht-m .pht-m-404 .pht-m-404__ridge {
    display: block;
    width: 100%;
    height: 56px;
    color: var(--pht-search-accent, var(--pht-accent));
    opacity: 0.35;
  }
  .pht-m .pht-m-404 .pht-m-404__head {
    box-sizing: border-box;
    padding: 24px 20px 0;
  }
  .pht-m .pht-m-404 .pht-m-404__code {
    margin: 0 0 8px;
    line-height: 1.2;
    letter-spacing: 0.14em;
    color: var(--pht-search-accent, var(--pht-accent));
  }
  .pht-m .pht-m-404 .pht-m-404__title {
    margin: 0;
    line-height: 1.15;
  }
  .pht-m .pht-m-404 .pht-m-404__text {
    margin: 12px 0 0;
    color: var(--pht-text-2);
    font-size: 15px;
    line-height: 23px;
  }
  .pht-m .pht-m-404 .pht-m-404__home {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    box-sizing: border-box;
    height: 44px;
    margin: 20px 0 0;
    padding: 0 18px;
    border-radius: 12px;
    background: var(--pht-search-accent, var(--pht-accent));
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    line-height: 44px;
    text-decoration: none;
    transition: transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .pht-m .pht-m-404 .pht-m-404__home:active {
    transform: scale(0.97);
  }
  .pht-m .pht-m-404 .pht-m-404__chevron {
    width: 16px;
    height: 16px;
  }

  /* ---- Arquivo nativo do Astra some no mobile SÓ em categoria, busca e 404 ----
     As versões ALTITUDE são injetadas por código (render_mobile_category,
     render_mobile_search, render_mobile_404), fora do #content — então
     esconder o #content aqui não afeta post nem página, e o desktop continua
     100% Astra, intocado. */
  body.category .pht-m-cat-mount,
  body.search .pht-m-search-mount,
  body.error404 .pht-m-404-mount {
    display: block;
  }
  body.category #content,
  body.category .site-content,
  body.search #content,
  body.search .site-content,
  body.error404 #content,
  body.error404 .site-content {
    display: none !important;
  }
}

/* Fora do @media: os mounts não existem no desktop. */
.pht-m-cat-mount,
.pht-m-search-mount,
.pht-m-404-mount {
  display: none;
}
