/* Base de uso no celular, comum a todas as telas.
 *
 * Existe como arquivo separado, importado no topo dos CSS de cada área, porque
 * o que está aqui não é estilo de uma tela: é o mínimo para o site ser usável
 * com o polegar. Espalhar essas regras pelos seis arquivos de estilo garantiria
 * que a próxima tela nascesse sem elas.
 *
 * As correções vieram de uma medição, e não de palpite. Num viewport de 390px,
 * antes deste arquivo: 61 alvos de toque abaixo de 40px no /feed, 34 na home e
 * 20 no /ranking (onde o @ de cada posição tinha 17px de altura), 161 textos
 * abaixo de 12px na home, e todo campo de formulário entre 14px e 15px.
 *
 * O que NÃO está aqui, de propósito: nada que mude o desktop. As regras vivem
 * dentro da media query, porque o site já funciona bem na tela grande e o
 * objetivo é o polegar, não uma reforma.
 */

@media (max-width: 640px) {
  /* ---------- 1. campos de formulário: 16px ---------- */

  /* Abaixo de 16px o iOS DÁ ZOOM sozinho ao focar o campo, e a página inteira
     salta de escala no meio do preenchimento — o formulário de login e o
     cadastro da landing faziam isso em todo iPhone. Não é preferência de
     tamanho: 16px é o limiar do sistema. */
  /* `body` na frente para ganhar de um `input { font-size: 14px }` escrito no
     <style> da propria pagina — o /entrar fazia isso, e os campos continuavam
     em 14px mesmo com este arquivo carregado. O link tambem passou a ser o
     ultimo do <head> pelo mesmo motivo; as duas coisas juntas cobrem tanto o
     empate de especificidade quanto o de ordem. */
  body input, body select, body textarea {
    /* `!important` aqui, e em nenhum outro lugar deste arquivo.
       Isto não é preferência de tamanho: abaixo de 16px o iOS dá zoom sozinho
       ao focar, e a página salta de escala no meio do preenchimento. A regra
       precisa vencer estilos de origens que não controlo — o `<style>` inline
       de quatro páginas e o CSS que dois scripts injetam no `<head>` em runtime
       (o wizard de cadastro da home e a vitrine de profissionais), que sempre
       chegam depois deste arquivo. Sem isto, os campos ficavam em 14,5px
       justamente nos dois formulários mais longos da plataforma. */
    font-size: 16px !important;
  }

  /* Altura de dedo nos campos, sem mexer no visual: 44px é o mínimo da Apple e
     48dp o do Android. */
  body input:not([type="checkbox"]):not([type="radio"]),
  body select,
  body button,
  .btn,
  .cta,
  .filtro {
    min-height: 44px;
  }

  /* Caixa de seleção e rádio crescem junto: em 13px eles eram alvo de unha, e
     ficam ao lado de um texto que também é clicável pelo `label`. */
  body input[type="checkbox"], body input[type="radio"] {
    width: 20px; height: 20px;
  }

  /* ---------- 2. alvos de toque na navegação ---------- */

  /* Links de topo e de rodapé viravam faixas de 21px a 30px de altura. O
     padding resolve sem mexer no tamanho da letra, e o `inline-flex` faz a
     altura valer para o link inteiro, e não só para o texto. */
  .topo a,
  .voltar,
  .cr-voltar,
  .fc-voltar,
  .pwa-chamada,
  nav a,
  footer a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding-top: 4px;
    padding-bottom: 4px;
  }

  /* O @ de cada posição do ranking tinha 17px: era o alvo mais difícil do site
     inteiro, numa lista feita para ser tocada. */
  .arroba,
  a.arroba {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* As barras de âncoras — a da home, a do painel e a das páginas internas —
     nasceram com 34px de alvo. A regra mira `nav a` (e não só `.menu-ancoras a`)
     de propósito: ela precisa vencer por especificidade o estilo que cada uma
     injeta no próprio `<head>`, sem que eu tenha de editar três arquivos, um
     deles de outra pessoa. */
  .menu-ancoras nav a,
  .menu-painel nav a {
    min-height: 44px;
    padding-top: 10px;
    padding-bottom: 10px;
  }

  /* Botões pequenos deixam de ser pequenos no celular. `.btn-sm` existe para
     caber em linha no desktop, e essa economia não vale num toque. */
  .btn-sm {
    min-height: 44px;
    padding-left: 14px;
    padding-right: 14px;
  }

  /* ---------- 3. tipografia mínima ---------- */

  /* Nada abaixo de 12px. Os 9.5px da legenda do ranking no cartão e os 11px dos
     temas da esteira liam-se mal em qualquer celular, e ainda por cima em
     cinza sobre fundo escuro. */
  .meta,
  .lead,
  small,
  figcaption,
  .fc-perfil-aviso,
  .section-label {
    font-size: max(12px, 1em);
  }

  /* ---------- 4. barras que rolam de lado ---------- */

  /* Onde a rolagem horizontal é intencional (menus de âncoras, filtros,
     carrosséis), ela precisa de inércia no iOS e não pode "vazar" o gesto para
     a página atrás — sem `contain`, arrastar até o fim da barra começa a
     arrastar o histórico do navegador. */
  .menu-ancoras nav,
  .menu-painel nav,
  .filtros,
  .abas,
  .trilho {
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }

  /* ---------- 5. tabelas ---------- */

  /* Tabela larga não empurra a página: ela rola dentro do próprio quadro. A da
     /destaque tem 660px num viewport de 390. */
  table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* ---------- 6. imagens e mídia ---------- */

  img, video, canvas, svg {
    max-width: 100%;
  }
}
