/* ==========================================================================
   Metal Collection — mc-ui.css
   Padronizacao de UI e acessibilidade. Arquivo ADITIVO.

   Nao altera nenhum CSS do Elementor, nem mc-polimento.css/.js, nem
   nenhum .php. Ver NOTAS-UI.md na raiz do site.

   COMO ESTE ARQUIVO ESTA ORGANIZADO
   ---------------------------------
   PARTE 1 — ATIVO. So entra aqui o que deu para provar SEM navegador:
     mudanca de COR, com o contraste calculado pela formula da WCAG a
     partir dos valores que eu medi na pagina, e um alinhamento de texto.
     Nenhuma regra da Parte 1 muda a caixa de nenhum elemento: nada de
     largura, altura, padding, margin, font-size ou quebra de linha. A
     altura das paginas e identica antes e depois, por construcao.

   PARTE 2 — PROPOSTAS, TODAS COMENTADAS. Sao as correcoes de geometria
     (alvo de toque, escala de botao, ritmo vertical, veu sobre foto).
     Cada uma traz a medida do problema e a conta do resultado, mas
     NENHUMA foi vista renderizada — o trabalho no navegador foi
     interrompido no meio. Descomentar so depois de olhar na tela.

   ORDEM DE CARGA / ESPECIFICIDADE
   -------------------------------
   Desde a mudanca do mc-perf (os bundles -2.css viraram stub e o CSS
   inteiro subiu para o <head>), o mc-polimento.css e este arquivo sao os
   ULTIMOS folhas de estilo do documento. Mesmo assim, toda regra ativa
   aqui vence por especificidade e nao por ordem, para continuar
   funcionando se o empacotamento mudar de novo. A especificidade que
   cada bloco precisa vencer esta anotada nele.

   Nenhuma regra ativa usa !important.
   ========================================================================== */


/* ==========================================================================
   PARTE 1 — ATIVO
   ========================================================================== */

/* --------------------------------------------------------------------------
   1.1 AZUL DOS BOTOES: #297DDD -> #2470C9
   --------------------------------------------------------------------------
   MEDIDO no site: rotulo branco sobre #297DDD = 4,14:1.
   A WCAG 2.1 AA pede 4,5:1 para texto normal. Reprova em todos os botoes
   de texto pequeno, que sao a maioria dos botoes do site:

     rodape   "Converse pelo WhatsApp"  14px/700   4,14:1  reprova
     cards    "Saiba mais"              16px/500   4,14:1  reprova
     /contato "Enviar agora"            16px/500   4,14:1  reprova
     /projetos"Falar no WhatsApp"       16px/600   4,14:1  reprova
     home     "Ver o projeto"           16px/600   4,14:1  reprova

   #2470C9 da 4,96:1 com branco: aprova AA em qualquer tamanho. E um
   escurecimento de ~5%, no mesmo matiz — lado a lado quase nao se ve.

   POR QUE NAO TROQUEI O TOKEN GLOBAL --e-global-color-accent no <body>:
   ele tambem pinta TEXTO azul sobre os fundos escuros do site, e ali o
   escurecimento PIORARIA o contraste (#297DDD sobre #17262F = 3,74:1;
   #2470C9 = 3,13:1). Entao a cor nova vale so dentro do botao.

   COMO: em vez de brigar por especificidade com as dezenas de regras que
   escrevem `background-color: var(--e-global-color-accent)`, eu
   redefino a VARIAVEL no proprio botao. Uma declaracao no elemento
   sempre vence a herdada do <body>, entao isto funciona sem !important
   e sem depender de ordem. Efeitos colaterais, todos desejados:
     . o border-color do botao (que le a mesma variavel) acompanha;
     . o hover amarelo le outra variavel (--e-global-color-2996d54) e
       continua exatamente como esta;
     . o botao vazado do topo da home le --e-global-color-e6d2c6c
       (transparente) e NAO e afetado — continua vazado com borda branca;
     . os dois botoes de WhatsApp do cabecalho tem o verde cravado no
       header.php e estao excluidos pelo :not() de qualquer forma.
   -------------------------------------------------------------------------- */

/* Regra separada de proposito: usa :not() com seletor composto, que
   navegador muito antigo descarta. Se ele descartar ESTA regra, a de
   baixo continua valendo e o pior caso e ficar como esta hoje. */
.elementor-button:not(.elementor-location-header *) {
  --e-global-color-accent: #2470C9;
}

/* Os cards de servico nunca estao no cabecalho, entao aqui nao precisa
   do :not(). Cobre "Saiba mais" nas 7 chamadas de Nossos Servicos. */
.elementor-cta__button {
  --e-global-color-accent: #2470C9;
}

/* Botoes escritos a mao (a chamada do YachtHouse na home e a /projetos/):
   estes tem #297DDD cravado, nao leem a variavel.
   Especificidade (0,1,1) — vence o base .mc-btn / .mc-yh__btn (0,1,0) e
   PERDE para .mc-btn:hover / .mc-yh__btn:hover (0,2,0), que e o que se
   quer: o hover amarelo continua igual. */
body .mc-btn,
body .mc-yh__btn {
  background: #2470C9;
}


/* --------------------------------------------------------------------------
   1.2 VERDE DO WHATSAPP NO CABECALHO: #128C7E -> #108073
   --------------------------------------------------------------------------
   MEDIDO: "Fale conosco agora", branco 16px/500 sobre #128C7E = 4,14:1.
   Mesma reprovacao do azul (pede 4,5:1). O comentario dentro do
   header.php ja estimava "~4:1" — a conta fecha; so que 4:1 nao passa.

   #108073 da 4,82:1. Continua o verde escuro da marca WhatsApp, dois
   pontos mais fechado. O hover desce junto para manter o mesmo degrau
   visual: #0B6459 = 7,04:1 (hoje o hover e #0E7266 = 5,81:1).

   Isto sobrescreve o <style id="mc-header-topo"> de dentro do
   includes/header.php, que nao e meu arquivo. La a especificidade e
   (0,4,0) no estado normal e (0,5,0) no hover; somando "body" aqui fica
   (0,4,1) e (0,5,1). Sem !important.
   >>> Se preferir, leve as duas cores para dentro do header.php e apague
       este bloco. O trecho pronto esta no NOTAS-UI.md.
   -------------------------------------------------------------------------- */
body .elementor-197 .elementor-element.elementor-element-2df224a3 .elementor-button,
body .elementor-197 .elementor-element.elementor-element-24c37f0 .elementor-button {
  background-color: #108073;
}

body .elementor-197 .elementor-element.elementor-element-2df224a3 .elementor-button:hover,
body .elementor-197 .elementor-element.elementor-element-2df224a3 .elementor-button:focus-visible,
body .elementor-197 .elementor-element.elementor-element-24c37f0 .elementor-button:hover,
body .elementor-197 .elementor-element.elementor-element-24c37f0 .elementor-button:focus-visible {
  background-color: #0B6459;
}


/* --------------------------------------------------------------------------
   1.3 LINKS DA /projetos/ SOBRE FUNDO CLARO: #297DDD -> #1F63B4
   --------------------------------------------------------------------------
   A /projetos/ e a unica pagina de fundo claro do site. MEDIDO ali:

     "portfolio" e "fale com a gente"  (.mc-pj-mais, fundo #E1E6E9)
        #297DDD sobre #E1E6E9 = 3,29:1   reprova (pede 4,5:1)
     links no corpo do case            (.mc-case__texto, fundo branco)
        #297DDD sobre #FFFFFF = 4,14:1   reprova

   #1F63B4 da 4,77:1 sobre #E1E6E9 e 6,00:1 sobre branco. Aprova nos dois.

   Especificidade (0,1,2), vence tanto .mc-case__texto a (0,1,1) quanto
   .elementor-kit-135 a (0,1,1).
   -------------------------------------------------------------------------- */
body .mc-case__texto a,
body .mc-pj-mais a {
  color: #1F63B4;
}


/* --------------------------------------------------------------------------
   1.4 BORDA DOS CAMPOS DO FORMULARIO: #9A9A9A -> #8A8A8A
   --------------------------------------------------------------------------
   MEDIDO em /contato/, nos 4 campos: borda 1px #9A9A9A sobre campo
   branco = 2,81:1. A WCAG 1.4.11 (contraste de elemento nao textual)
   pede 3:1 para a borda que define onde o campo comeca e acaba — e sem
   rotulo visivel (o formulario so tem placeholder) essa borda e a unica
   coisa que desenha o campo.

   #8A8A8A da 3,45:1. Continua um cinza discreto; muda so o tom, a
   espessura segue 1px — nenhuma caixa se move.

   Especificidade (0,4,1). Precisa disso porque a regra do kit
   (.elementor-kit-135 input:not([type=button]):not([type=submit])) e (0,3,1).
   -------------------------------------------------------------------------- */
body.elementor-kit-135 .elementor-form .elementor-field-group .elementor-field-textual {
  border-color: #8A8A8A;
}


/* --------------------------------------------------------------------------
   1.5 "SOBRE NOS": TEXTO JUSTIFICADO -> ALINHADO A ESQUERDA
   --------------------------------------------------------------------------
   O bloco "Sobre Nos" (template 423, widget f7ab382) aparece em 10 das
   12 paginas e e o unico texto longo do site com text-align:justify.
   No celular ele cai numa coluna de ~350px e a justificacao abre buracos
   entre as palavras (rios) em quase toda linha — da para ver no
   screenshot antes/home-390.png, terco do meio, e em qualquer pagina de
   produto em 390px.

   POR QUE ESTA NA PARTE ATIVA mesmo sem eu ter visto renderizado:
   tirar o justify NAO reflui o texto. A justificacao do CSS nao decide
   onde a linha quebra (nao ha hifenizacao ligada); ela so distribui o
   espaco que sobrou dentro de uma linha ja formada. Numero de linhas,
   altura do bloco e altura da pagina ficam identicos. O unico efeito
   visivel e a margem direita virar irregular, que e o comportamento
   normal de texto na web.

   Vence .elementor-423 .elementor-element.elementor-element-f7ab382 (0,3,0).
   -------------------------------------------------------------------------- */
body .elementor-423 .elementor-element.elementor-element-f7ab382 {
  text-align: left;
}



/* ==========================================================================
   PARTE 2 — PROPOSTAS. TUDO COMENTADO. NAO CONFERIDO NA TELA.
   --------------------------------------------------------------------------
   Cada bloco traz: o que foi medido, por que e problema, e o que a regra
   faz. Descomente um de cada vez e olhe a pagina antes de seguir para o
   proximo. O que mexe em altura esta marcado com >>> MEXE NA ALTURA.
   ========================================================================== */

/* --------------------------------------------------------------------------
   P1. ALVOS DE TOQUE NO CELULAR (WCAG 2.5.5; Apple 44pt; Google 48dp)
   --------------------------------------------------------------------------
   MEDIDO em 390px de largura, nas 12 paginas:

     hamburguer (.elementor-menu-toggle)      30 x 34 px   <-- o pior
     icones sociais do rodape                 40 x 40 px
     "Converse pelo WhatsApp" (rodape, x3)   239 x 38 px
     "Enviar agora" (/contato/)              290 x 40 px
     "Saiba mais" (cards)                    125 x 40 px
     telefone e e-mail do rodape (sao links) 112 x 24  e  229 x 24 px

   O hamburguer e o caso grave: e o unico acesso ao menu no celular — que
   e a maioria do trafego — e tem 30px de largura.

   >>> MEXE NA ALTURA. O hamburguer cresce dentro de uma barra que hoje
   tem ~66px no celular; 44px devem caber sem esticar a barra, mas isso
   PRECISA ser visto. Os botoes indo de 38 para 44 somam ~6px cada; no
   rodape sao 3 empilhados no celular, ~18px na pagina.

   -------------------------------------------------------------------------- */

.elementor-menu-toggle {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

@media (max-width: 767px) {
  body.elementor-kit-135 .elementor-button:not(.elementor-location-header *),
  body .mc-btn,
  body .mc-yh__btn {
    min-height: 44px;
  }

  .elementor-160 .elementor-social-icon {
    width: 44px;
    height: 44px;
  }

  .elementor-160 .elementor-icon-list-text a {
    display: inline-block;
    padding: 10px 0;
  }
}


/* --------------------------------------------------------------------------
   P2. UMA ESCALA SO DE BOTAO
   --------------------------------------------------------------------------
   Isto e o coracao do "site sem padrao". MEDI todos os botoes visiveis
   das 12 paginas, nos dois tamanhos. Existem SEIS tratamentos:

     onde                     classe        fonte  peso  altura  raio
     rodape (x3)              size-sm        14px   700    38px  100px
     cabecalho                size-md        16px   500    47px  100px
     cards "Saiba mais"       size-xs        16px   500    40px  100px
     /contato/ "Enviar agora" size-sm        16px   500    40px  100px
     home "Ver o projeto"     mc-yh__btn     16px   600    54px  100px
     /projetos/ "Falar no..." mc-btn         16px   600    54px  100px

   Quatro alturas, tres pesos, tres tamanhos de fonte. O raio (100px,
   pilula) e a UNICA coisa igual em todos.

   (Havia um setimo — o "Fale conosco" vazado do topo da home, size-xl
   25px/500, 77px. Foi removido do index.php as 11h52 por outra pessoa,
   depois da minha medicao. Ele ainda aparece nos screenshots de antes.)

   A proposta conservadora mexe so no que nao muda a largura do rotulo:
   peso unico 600 e tres alturas em vez de cinco. NAO mexo em font-size,
   porque isso muda a largura do rotulo e o /en/ e o /es/ ja sao
   apertados (ver NOTAS-UI.md, secao de idiomas).

   >>> MEXE NA ALTURA.

   -------------------------------------------------------------------------- */

body.elementor-kit-135 .elementor-button:not(.elementor-location-header *),
body .mc-btn,
body .mc-yh__btn {
  font-weight: 600;
}

body.elementor-kit-135 .elementor-button.elementor-size-sm:not(.elementor-location-header *),
body.elementor-kit-135 .elementor-button.elementor-size-xs:not(.elementor-location-header *) {
  min-height: 44px;
  padding-block: 11px;
}

body .mc-btn,
body .mc-yh__btn {
  min-height: 48px;
}


/* --------------------------------------------------------------------------
   P3. O HOVER DOS CARDS DE SERVICO APAGA O VEU E O TITULO SOME
   --------------------------------------------------------------------------
   Achado no CSS, com a conta fechada.

   Os 7 cards de "Nossos Servicos" sao widgets call-to-action com foto de
   fundo. O veu escuro so existe quando o mouse NAO esta em cima:

     .elementor-429 ... .elementor-cta:not(:hover) .elementor-cta__bg-overlay
       { background-color:#0000008A }        alfa 138/255 = 0,541

   Parado:   preto a 0,541 sobre a foto mais clara possivel (branco puro)
             da o cinza rgb(117,117,117); titulo branco 25px = 4,61:1  OK
   No hover: o veu some por completo
             titulo branco sobre foto branca = 1,00:1        ILEGIVEL

   Nas fotos de "Escadas Curvas" (escada branca), "Estruturas e Pecas"
   (madeira clara) e "Ferragens para Vidraceiros" (piscina clara) isso
   acontece de verdade — as fotos estao em antes/home-1440.png.

   Conta do piso: o titulo tem 25px, entao e "texto grande" e o minimo e
   3:1; para isso o fundo composto precisa ficar em cinza <= 149. Com
   foto branca: 255*(1-alfa) <= 149  =>  alfa >= 0,416  =>  0x6B.
   Uso 0x6E (0,431), que da cinza 145 e 3,13:1 no pior caso, e ainda
   clareia visivelmente em relacao ao 0x8A do estado parado.

   Nao mexe em geometria (o veu e um div absoluto), mas muda um efeito de
   hover que alguem desenhou de proposito. Por isso: proposta.

   -------------------------------------------------------------------------- */

.elementor-429 .elementor-cta:hover .elementor-cta__bg-overlay {
  background-color: #0000006E;
}


/* --------------------------------------------------------------------------
   P4. TOPO DA HOME: TEXTO BRANCO SOBRE VIDEO, SEM NENHUM VEU
   --------------------------------------------------------------------------
   Conferido no HTML: a secao 5685047b tem <video> e NAO tem
   .elementor-background-overlay. As paginas de produto TEM (veu #121C22
   a 70%, que da 6,40:1 no pior caso — essas estao certas). So a home,
   que e a primeira tela de todo visitante, esta sem.

   Hoje o unico escurecimento e o degrade do cabecalho, que cobre os
   ~200px de cima e some ao rolar. O subtitulo, a pilula "Atendemos todo
   o Brasil" e os dois contadores ficam sobre o video cru. O video e um
   plano aereo de Balneario Camboriu com ceu claro: no quadro mais claro
   o contraste vai a 1:1.

   Proposta: um degrade fixo por cima do video, forte embaixo (onde ficam
   o subtitulo e os numeros) e fraco em cima (onde o cabecalho ja
   escurece). E um ::after absoluto com pointer-events:none — nao empurra
   nada e nao intercepta clique.

   -------------------------------------------------------------------------- */

body.home .elementor-element-5685047b > .elementor-background-video-container::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(to bottom,
      rgba(18, 28, 34, 0.15) 0%,
      rgba(18, 28, 34, 0.42) 55%,
      rgba(18, 28, 34, 0.62) 100%);
}


/* --------------------------------------------------------------------------
   P5. OS CONTADORES "+15" E "+10mil" SAO LETRA VAZADA E SOMEM
   --------------------------------------------------------------------------
   Achado no CSS:

     .elementor-417 ... .elementor-counter-number-wrapper {
       color: var(--e-global-color-e6d2c6c);      -> #02010100, alfa ZERO
       -webkit-text-stroke-width: 1px;
       -webkit-text-stroke-color: var(--e-global-color-c8d0052);  -> #E1E6E9
     }

   Ou seja: preenchimento transparente e um contorno de 1px, 60px no
   desktop e 36px no celular. Sobre video em movimento, um fio de 1px
   praticamente desaparece — da para ver em antes/home-1440.png e
   antes/home-390.png, onde "+15" e "+10mil" sao fantasmas. E o par de
   numeros que sustenta a credibilidade da empresa na primeira tela.

   Nao existe criterio da WCAG para letra vazada (a formula mede
   preenchimento, nao contorno), entao a medida honesta aqui e a
   observacao do screenshot, nao um numero.

   Proposta conservadora: manter a ideia do vazado, mas por um
   preenchimento translucido atras do contorno — continua com cara de
   numero vazado e le em qualquer quadro do video.
   Versao ousada (nao escrevi): numero solido branco e rotulo em
   caixa-alta pequena. Vira um dado, nao um enfeite.

   -------------------------------------------------------------------------- */

.elementor-417 .elementor-counter-number-wrapper {
  color: rgba(255, 255, 255, 0.30);
  -webkit-text-stroke-color: #FFFFFF;
}


/* --------------------------------------------------------------------------
   P6. FORMULARIO DE /contato/
   --------------------------------------------------------------------------
   MEDIDO: os 4 campos tem 40px de altura e font-size 15px, igual no
   desktop e no celular.

   Dois problemas concretos:
   a) 15px < 16px. O Safari do iPhone da zoom automatico no campo quando
      a fonte e menor que 16px. O visitante toca em "Nome completo", a
      pagina salta e ele perde o contexto. E o formulario principal do
      site.
   b) 40px de altura e alvo de toque abaixo dos 44px.

   >>> MEXE NA ALTURA (campo 40 -> 48, quatro vezes, ~32px no celular).

   -------------------------------------------------------------------------- */

@media (max-width: 767px) {
  body.elementor-kit-135 .elementor-form .elementor-field-group .elementor-field-textual {
    font-size: 16px;
    min-height: 48px;
  }
  body.elementor-kit-135 .elementor-form .elementor-field-group textarea.elementor-field-textual {
    min-height: 112px;
  }
}


/* --------------------------------------------------------------------------
   P7. RITMO VERTICAL ENTRE SECOES
   --------------------------------------------------------------------------
   MEDIDO o respiro de cada secao (borda da secao ate o primeiro e o
   ultimo conteudo dentro dela), no desktop, nas 12 paginas:

     rodape "Solicite um Orcamento"      64 / 30    igual nas 12   OK
     "Sobre Nos", "4 Motivos", FAQ       90 / 90    igual nas 10   OK
     faixa dos contadores                30 / 30
     galeria das paginas de produto       0 / 78
     hero de /contato/                  210 / 58
     hero de /escadas-curvas/           210 / 90
     hero de /projetos/                 180 / 90
     hero das outras 6 de produto       150 / 48

   O CORPO das paginas ja e coerente: 90/90 e 64/30 se repetem em todas.
   O que nao bate e o TOPO — cada pagina comeca numa altura diferente.
   Quem navega de "Visor de Piscinas" para "Escadas Curvas" ve o titulo
   pular 60px. E o tipo de coisa que o dono sente como "sem padrao" sem
   conseguir nomear.

   Nao escrevi a regra: padronizar o topo mexe em margin-top negativo, no
   espacador do sticky do cabecalho e no 100svh do hero da home — e
   exatamente o tipo de mudanca que precisa de olho na tela. Fica
   descrito com os numeros no NOTAS-UI.md.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   P8. A SEGUNDA FONTE DO SITE
   --------------------------------------------------------------------------
   O site inteiro e Open Sans. Os 7 cards de "Nossos Servicos" — e so
   eles — usam Manrope:

     .elementor-429 ... .elementor-cta__description
       { font-family:"Manrope", Sans-serif; font-size:25px; font-weight:600 }

   Uma familia inteira baixada para 7 titulos. Trocar por Open Sans
   uniformiza a tipografia e ainda tira uma fonte do carregamento.

   >>> MEXE NA LARGURA DO ROTULO. Manrope e Open Sans tem metricas
   diferentes; "Corrimaos e Guarda-Corpos Area Residencial e Comercial"
   ja ocupa 3 linhas no card. Pode virar 4 e empurrar o botao. Tem que
   ser visto, e nos tres idiomas.

   -------------------------------------------------------------------------- */

.elementor-429 .elementor-cta__description {
  font-family: "Open Sans", sans-serif;
}
