/*
Theme Name:   Hello Pólitan
Theme URI:    https://agathasweb.com
Description:  Tema filho de Hello Elementor para o site da Pólitan. Concentra código
              customizado, fontes locais e otimizações de performance. Idêntico entre
              as instâncias GO e SP — toda divergência regional fica no mu-plugin
              politan-unidade.php.
Author:       Agathas Web
Author URI:   https://agathasweb.com
Template:     hello-elementor
Version:      1.0.0
Text Domain:  hello-politan
*/

/* ==========================================================================
   Animações de entrada acima da dobra
   --------------------------------------------------------------------------
   O Chrome só contabiliza o LCP quando o elemento termina de aparecer. O H1 do
   hero estava dentro de um fadeInDown, e isso sozinho custava 1.508 ms de LCP
   (1.788 ms com animação → 280 ms sem, mesma medição, mesmo elemento).

   Neutralizamos apenas o header e o PRIMEIRO container da página — o que está
   acima da dobra. As animações de scroll do restante do layout continuam
   funcionando normalmente, porque não entram no caminho do LCP.
   ========================================================================== */

.elementor-location-header .elementor-invisible,
.page-content > .elementor > .e-con:first-child .elementor-invisible {
    visibility: visible !important;
    opacity: 1 !important;
}

.elementor-location-header .animated,
.page-content > .elementor > .e-con:first-child .animated {
    animation: none !important;
    opacity: 1 !important;
}

/* Respeita quem pediu menos movimento — acessibilidade (WCAG 2.3.3). */
@media (prefers-reduced-motion: reduce) {
    .elementor-invisible { visibility: visible !important; opacity: 1 !important; }
    .animated { animation: none !important; opacity: 1 !important; }
}

/* ==========================================================================
   Mínimos de mobile — briefing §11.1
   --------------------------------------------------------------------------
   "Fontes mínimas: 16px para texto corrido, 14px para rodapés e legendas —
    nunca abaixo disso em mobile" e "área de toque mínima de 44x44px".

   Auditoria a 375px encontrou: rótulos em 13px, dados de contato e labels de
   formulário em 15px, e links de telefone/e-mail com 29px de altura.

   Escopo restrito ao mobile para não alterar o desenho em desktop.
   ========================================================================== */

@media (max-width: 767px) {

    /* Piso de legenda/rótulo */
    .elementor-widget-text-editor p,
    .elementor-widget-heading .elementor-heading-title { font-size: max(1em, 14px); }

    /* Piso de texto corrido */
    .elementor-widget-text-editor,
    .elementor-widget-text-editor li { font-size: max(1em, 16px); }

    /* Campos de formulário: abaixo de 16px o iOS aplica zoom automático no foco,
       o que desloca o layout e atrapalha o preenchimento. */
    input[type="text"], input[type="email"], input[type="tel"],
    input[type="url"], input[type="number"], input[type="search"],
    textarea, select { font-size: 16px !important; }

    /* Links de contato do rodapé: o alvo tinha 29px de altura. */
    a[href^="tel:"], a[href^="mailto:"], a[href^="https://wa.me"] {
        display: inline-flex; align-items: center; min-height: 44px;
    }
}

/* ==========================================================================
   Fallback com métricas casadas — mitigação de CLS no swap de fonte
   --------------------------------------------------------------------------
   Medido no próprio site, texto do H1 a 100px:
       Inter Tight  largura 3405,33  ascent 97  descent 24
       Arial        largura 3542,14  ascent 91  descent 21

   O Arial é ~4% mais largo. Enquanto a Inter Tight não chega, o texto ocupa mais
   espaço e o container do hero desloca — foi o pico de CLS 0,092 observado em cache
   frio (0,001 nas execuções com cache quente).

   size-adjust    = 3405,33 / 3542,14 = 96,14%
   ascent-override  = 97 / 96,14 = 100,9%
   descent-override = 24 / 96,14 =  24,96%
   ========================================================================== */

@font-face{
    font-family:'Politan Fallback';
    src:local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust:96.14%;
    ascent-override:100.9%;
    descent-override:24.96%;
    line-gap-override:0%;
}

/* O Elementor consome a tipografia por variável global; injetamos o fallback nela,
   antes do genérico Sans-serif que cada declaração já traz no final. */
:root,
.elementor-kit-6{
    --e-global-typography-primary-font-family:"Inter Tight","Politan Fallback";
    --e-global-typography-secondary-font-family:"Inter Tight","Politan Fallback";
    --e-global-typography-text-font-family:"Inter Tight","Politan Fallback";
    --e-global-typography-accent-font-family:"Inter Tight","Politan Fallback";
}

/* ==========================================================================
   Arquivo de produtos (/produtos/, /linha/*, /marca/*)
   --------------------------------------------------------------------------
   Cores herdadas do kit do Elementor para não criar uma segunda fonte de verdade:
   Primário #151D49 · Secundário #184BCE · Texto #232323
   ========================================================================== */

.politan-arquivo{
    --plt-primaria:#151D49;
    --plt-secundaria:#184BCE;
    --plt-texto:#232323;
    --plt-borda:#e6e8f0;
    max-width:1200px; margin:0 auto;
    /* o header do site é flutuante e sobrepõe o conteúdo — reservamos a altura dele */
    padding:184px 20px 72px;
    font-family:'Inter Tight',system-ui,-apple-system,sans-serif; color:var(--plt-texto);
}
@media (min-width:1025px){ .politan-arquivo{ padding-top:152px; } }
@media (max-width:640px){ .politan-arquivo{ padding-top:140px; } }

.politan-arquivo__cabecalho{ margin-bottom:32px; }
.politan-arquivo__sobretitulo{
    margin:0 0 8px; font-size:14px; font-weight:600; letter-spacing:.18em;
    text-transform:uppercase; color:var(--plt-secundaria);
}
.politan-arquivo__titulo{ margin:0 0 12px; font-size:clamp(28px,4vw,44px); font-weight:700; color:var(--plt-primaria); }
.politan-arquivo__subtitulo{ margin:0; max-width:62ch; font-size:17px; line-height:1.6; }

/* Filtros por linha */
.politan-arquivo__filtros{ display:flex; flex-wrap:wrap; gap:10px; margin:0 0 36px; }
.politan-chip{
    display:inline-flex; align-items:center; gap:8px;
    min-height:44px; padding:10px 16px;              /* área de toque do briefing §11.1 */
    border:1px solid var(--plt-borda); border-radius:999px;
    font-size:15px; font-weight:500; text-decoration:none; color:var(--plt-primaria);
    background:#fff; transition:border-color .15s, color .15s;
}
.politan-chip:hover,.politan-chip:focus-visible{ border-color:var(--plt-secundaria); color:var(--plt-secundaria); }
.politan-chip:focus-visible{ outline:3px solid var(--plt-secundaria); outline-offset:2px; }
.politan-chip__n{ font-size:13px; color:#6b7280; }

/* Grade */
.politan-grade{
    display:grid; gap:24px;
    grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
}

.politan-card{
    border:1px solid var(--plt-borda); border-radius:14px; background:#fff; overflow:hidden;
    transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.politan-card:hover{ transform:translateY(-3px); box-shadow:0 10px 24px rgba(21,29,73,.10); border-color:#cdd3e6; }
.politan-card__link{ display:flex; flex-direction:column; height:100%; text-decoration:none; color:inherit; }
.politan-card__link:focus-visible{ outline:3px solid var(--plt-secundaria); outline-offset:-3px; }

/* aspect-ratio reserva o espaço da imagem e evita deslocamento de layout */
.politan-card__midia{
    aspect-ratio:4/3; display:flex; align-items:center; justify-content:center;
    padding:18px; background:linear-gradient(180deg,#f7f8fb 0%,#eef1f7 100%);
}
.politan-card__img{ max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; }

.politan-card__corpo{ display:flex; flex-direction:column; gap:6px; padding:18px 18px 22px; flex:1; }
.politan-card__marca{
    font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:#6b7280;
}
.politan-card__titulo{ margin:0; font-size:17px; line-height:1.35; font-weight:600; color:var(--plt-primaria); }
.politan-card__cta{ margin-top:auto; padding-top:10px; font-size:14px; font-weight:600; color:var(--plt-secundaria); }

.politan-arquivo__vazio{ padding:40px 0; font-size:17px; }

/* Paginação */
.politan-arquivo .pagination{ margin-top:44px; display:flex; gap:8px; flex-wrap:wrap; }
.politan-arquivo .page-numbers{
    display:inline-flex; align-items:center; justify-content:center;
    min-width:44px; min-height:44px; padding:0 12px;
    border:1px solid var(--plt-borda); border-radius:10px;
    text-decoration:none; color:var(--plt-primaria); font-weight:500;
}
.politan-arquivo .page-numbers.current{ background:var(--plt-primaria); border-color:var(--plt-primaria); color:#fff; }
.politan-arquivo .page-numbers:focus-visible{ outline:3px solid var(--plt-secundaria); outline-offset:2px; }

@media (prefers-reduced-motion:reduce){
    .politan-card{ transition:none; }
    .politan-card:hover{ transform:none; }
}
