/* shared/css/calculadora.css
 *
 * O visual comum a QUALQUER calculadora, em qualquer locale.
 *
 * POR QUE ESTE ARQUIVO EXISTE
 *
 * A primeira página do /mx foi montada sem estilo nenhum: `.calc-form`,
 * `.calc-resultado` e `.money-input` não existiam em lugar algum. Inputs crus,
 * botão sem forma, o valor colado no rótulo — "$841.64por día".
 *
 * No /br cada calculadora carrega um CSS próprio, com nomes próprios. São 151
 * arquivos que dizem quase a mesma coisa. Repetir isso no México seriam mais
 * quinze, e a dívida nasceria já multiplicada.
 *
 * Então as classes aqui são GENÉRICAS por desenho: `calc-form`,
 * `calc-resultado`, `calc-destaque`. Uma calculadora só precisa de CSS próprio
 * quando tiver algo que nenhuma outra tem.
 *
 * NADA DE ALIAS COM O NOME DA CALCULADORA
 *
 * Este arquivo chegou a ter uma fileira de aliases — `.calc-valor, .sdi-valor`
 * e assim por diante. Pareciam inofensivos e eram o começo do mesmo problema:
 * a segunda calculadora pediria `.finiquito-valor`, a décima quinta pediria a
 * dela, e o arquivo viraria justamente o que foi escrito para evitar.
 *
 * A saída é renomear no consumidor, não acomodar aqui.
 *
 * NADA DE COR CRAVADA FORA DAS VARIÁVEIS
 *
 * Os tokens ficam no topo. Trocar a identidade visual é editar seis linhas, e
 * não caçar hexadecimal em 151 arquivos — que é a versão em CSS do mesmo
 * problema que o arquivo central de valores resolve para os números.
 */

:root {
  --calc-borda: #d8dee6;
  --calc-fundo-campo: #fff;
  --calc-texto: #2c3e50;
  --calc-texto-suave: #5a6b7c;
  --calc-acento: #2e7d32;
  --calc-acento-escuro: #1b5e20;
  --calc-erro-fundo: #fdecea;
  --calc-erro-borda: #e57373;
  --calc-erro-texto: #a32019;
  --calc-destaque-fundo: #f1f8f2;
  --calc-raio: 10px;
}

/* ===================================
   CARTÃO DO FORMULÁRIO — sem ele, o formulário fica exposto direto sobre o
   degradê roxo do <body> (ver `body` em base.css). No /br cada calculadora
   tem CSS próprio com um card assim, um por arquivo; aqui é UM, porque
   `.calc-section` é a classe que TODAS as calculadoras deste motor usam —
   o mesmo raciocínio de "genérico por desenho" do resto do arquivo,
   aplicado ao fundo, não só aos campos.

   O bloco educativo (`.calc-contenido`) NÃO ganha cartão aqui: ele já leva
   a classe `conteudo-container`, de shared/css/paginas-conteudo.css — a
   mesma que os hubs e guias usam para título, `<h2>`/`<p>` e cartão branco.
   Duplicar essas regras aqui é o problema que este arquivo existe para
   evitar (ver a nota "NADA DE ALIAS COM O NOME DA CALCULADORA" no topo).
   =================================== */

.calc-section {
  background: #fff;
  border-radius: 16px;
  padding: 2rem;
  margin: 0 0 2rem;
  box-shadow: 0 6px 25px rgba(0, 0, 0, .08);
  border: 1px solid rgba(0, 0, 0, .04);
}

/* ===================================
   FORMULÁRIO
   =================================== */

.calc-form {
  display: grid;
  gap: 1.1rem;
  max-width: 560px;
  margin: 1.5rem 0 0;
}

.calc-form .input-group {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}

.calc-form label {
  font-weight: 600;
  color: var(--calc-texto);
  font-size: .95rem;
}

/* `date` estava fora desta lista, e por isso os dez campos de data do /mx
   saíam com o desenho cru do navegador — borda fina, altura menor, fonte
   diferente — ao lado de campos de texto que obedeciam ao tema. Numa mesma
   coluna de formulário a diferença salta: foi o que se viu no finiquito, que
   tem os dois tipos um embaixo do outro. */
.calc-form input[type="text"],
.calc-form input[type="number"],
.calc-form input[type="date"],
.calc-form select {
  padding: .75rem .9rem;
  border: 1px solid var(--calc-borda);
  border-radius: var(--calc-raio);
  background: var(--calc-fundo-campo);
  font-size: 1.05rem;
  color: var(--calc-texto);
  width: 100%;
  box-sizing: border-box;
}

/* O SELECT PRECISA DESLIGAR O DESENHO DO SISTEMA, NÃO SÓ GANHAR BORDA.

   Os campos já tinham padding, borda e raio — e mesmo assim os selects saíam
   com cara de formulário de 2003. O motivo é que `appearance` continuava no
   padrão: o Windows desenha a caixa e a seta dele POR CIMA do que o CSS pede,
   e o resultado é um campo com metade do estilo do site e metade do estilo do
   sistema operacional, lado a lado com inputs de texto que obedecem.

   Com `appearance: none` a seta nativa some — e aí ela precisa voltar, senão
   o campo deixa de parecer um menu. Ela volta como SVG embutido em `data:`,
   não como arquivo: um ícone que é parte do controle não deve depender de uma
   segunda requisição para o campo ficar legível.

   O `padding-right` maior reserva o espaço da seta; sem ele o texto de uma
   opção longa passa por baixo dela. */
.calc-form select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  padding-right: 2.6rem;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%235a6b7c' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .9rem center;
  background-size: 1rem;
  cursor: pointer;
  /* O Firefox pinta o texto da opção com a cor do sistema ao focar; fixar a
     cor aqui evita o texto branco no fundo branco. */
  color: var(--calc-texto);
}

/* O IE/Edge legado desenhava uma segunda seta ao lado da nossa. */
.calc-form select::-ms-expand {
  display: none;
}

/* Campo de data: o ícone de calendário é do navegador e não se substitui, mas
   dá para alinhá-lo ao campo — sem isto ele fica colado na borda, com a área
   de clique menor do que o dedo alcança no celular. A altura do campo já vem
   da regra acima, agora que `date` entrou nela. */
.calc-form input[type="date"] {
  cursor: pointer;
  /* O iOS encolhe o campo de data para o tamanho do conteúdo e ignora o
     width:100%; isto devolve o comportamento dos outros campos. */
  -webkit-appearance: none;
  appearance: none;
  min-height: 3rem;
}

.calc-form input[type="date"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
  opacity: .55;
  padding: .2rem;
  margin-right: -.2rem;
}

.calc-form input[type="date"]::-webkit-calendar-picker-indicator:hover {
  opacity: 1;
}

.calc-form input:focus,
.calc-form select:focus {
  outline: 2px solid var(--calc-acento);
  outline-offset: 1px;
  border-color: var(--calc-acento);
}

/* A lista aberta é desenhada pelo sistema e quase não aceita estilo; o que dá
   para garantir é que as opções não herdem um fundo transparente e sumam. */
.calc-form select option {
  background: #fff;
  color: var(--calc-texto);
}

/* Campo de dinheiro: o símbolo fica colado ao campo, e não dentro dele — o
   visitante precisa poder selecionar o número sem levar o símbolo junto. */
.money-input {
  display: flex;
  align-items: stretch;
  border: 1px solid var(--calc-borda);
  border-radius: var(--calc-raio);
  overflow: hidden;
  background: var(--calc-fundo-campo);
}

.money-input > span {
  display: flex;
  align-items: center;
  padding: 0 .8rem;
  background: #f4f6f8;
  color: var(--calc-texto-suave);
  font-weight: 600;
  border-right: 1px solid var(--calc-borda);
}

.money-input > input {
  border: 0 !important;
  border-radius: 0 !important;
  flex: 1;
}

/* ===================================
   EXEMPLOS CLICÁVEIS
   ===================================
   O container começa VAZIO no HTML — `calc-base.js` (`renderEjemplos`) o
   preenche em runtime, a partir do `ejemplos` que o contrato de cada
   calculadora declara. Ver o comentário em shared/js/calc-base.js sobre
   por que isto é motor, e não HTML escrito à mão por calculadora. */
.calc-ejemplos-label {
  font-weight: 600;
  color: var(--calc-texto);
  margin: 0 0 .6rem;
}

/* Some antes do JS rodar (`renderEjemplos` ainda não preencheu o container) e
   some de novo se a calculadora não declarar `ejemplos` — o rótulo nunca fica
   sozinho, sem botão nenhum embaixo. `:has()` é suporte amplo o bastante hoje
   pra valer a pena; sem ele, o pior caso é o rótulo aparecer sem botões por um
   instante, não um erro. */
.calc-ejemplos-label:has(+ .calc-ejemplos:empty) {
  display: none;
}

.calc-ejemplos {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  margin: 0 0 1.5rem;
}

.calc-ejemplos:empty {
  display: none;
}

.calc-ejemplo-btn {
  padding: .5rem 1rem;
  border: 1px solid var(--calc-borda);
  border-radius: 999px;
  background: #f4f6f8;
  color: var(--calc-texto);
  font-size: .9rem;
  font-weight: 600;
  cursor: pointer;
}

.calc-ejemplo-btn:hover {
  background: var(--calc-destaque-fundo);
  border-color: var(--calc-acento);
}

/* ===================================
   BOTÃO
   =================================== */

/* `.calc-btn` e o nome canonico, e e o que as calculadoras novas usam.
   Os seletores por sufixo continuam porque as 151 do /br chamam os botoes de
   `<algo>-calculate-btn` — sao legado, nao padrao a seguir.

   O nome do botao e contrato entre o CSS e o teste: o smoke procura
   `calculate|calcular|calc-btn` na classe. */
.calc-btn,
[class$="-calculate-btn"],
[class$="-btn-calcular"] {
  padding: .85rem 1.6rem;
  border: 0;
  border-radius: var(--calc-raio);
  background: var(--calc-acento);
  color: #fff;
  font-size: 1.05rem;
  font-weight: 700;
  cursor: pointer;
  justify-self: start;
}

.calc-btn:hover,
[class$="-calculate-btn"]:hover,
[class$="-btn-calcular"]:hover {
  background: var(--calc-acento-escuro);
}

/* ===================================
   RESULTADO
   =================================== */

.calc-resultado {
  border: 1px solid var(--calc-borda);
  border-left: 4px solid var(--calc-acento);
  border-radius: var(--calc-raio);
  padding: 1.4rem 1.5rem;
  background: var(--calc-destaque-fundo);
  margin: 1.5rem 0;
}

.calc-resultado h3 { margin-top: 0; }
.calc-resultado h4 { margin: 1.4rem 0 .5rem; font-size: 1.02rem; }

/* O número principal. O `display: block` no valor existe porque sem ele o
   rótulo colava no número — foi assim que a primeira página saiu:
   "$841.64por día". */
.calc-destaque {
  display: flex;
  align-items: baseline;
  gap: .5rem;
  flex-wrap: wrap;
  margin: .8rem 0 1rem;
}

.calc-valor {
  font-size: 2.4rem;
  font-weight: 800;
  color: var(--calc-acento-escuro);
  line-height: 1.1;
}

.calc-rotulo {
  font-size: 1rem;
  color: var(--calc-texto-suave);
}

.calc-secundario {
  color: var(--calc-texto-suave);
  font-size: .95rem;
}

.calc-passos {
  margin: .6rem 0 0 1.1rem;
  padding: 0;
}

.calc-passos li { margin: .35rem 0; }

.calc-aviso {
  border-left: 3px solid #f0ad4e;
  background: #fff8e8;
  padding: .7rem .9rem;
  border-radius: 6px;
  margin: .9rem 0;
}

.calc-cotizacion {
  font-size: 1.05rem;
  margin-top: 1rem;
}

/* ===================================
   ERRO DE VALIDAÇÃO
   =================================== */

/* A calculadora explica o que há de errado com a entrada em vez de só recusar.
   Por isso o bloco tem espaço para uma lista, não só uma linha. */
.calc-error {
  border: 1px solid var(--calc-erro-borda);
  background: var(--calc-erro-fundo);
  color: var(--calc-erro-texto);
  border-radius: var(--calc-raio);
  padding: .9rem 1.1rem;
  margin: 1rem 0;
}

.calc-error ul { margin: .5rem 0 0 1.1rem; padding: 0; }
.calc-error li { margin: .3rem 0; }

/* ===================================
   TABELA DE REFERÊNCIA — deliberadamente ausente
   ===================================

   `.tabela-referencia` e `.tabela-wrap` moram em `paginas-conteudo.css`, que
   é o dono delas desde as páginas de conteúdo do /br. Escrevi uma segunda
   definição aqui e a apaguei: duas folhas definindo a mesma classe é o mesmo
   problema que o arquivo central de valores existe para impedir, só que em
   CSS — muda uma, a outra continua dizendo o contrário, e quem vence depende
   da ordem dos `<link>`.

   Calculadora com tabela carrega os dois arquivos.

   =================================== */

/* ===================================
   FAQ
   =================================== */

.faq-lista { margin: 1rem 0; }

.faq-lista details {
  border: 1px solid var(--calc-borda);
  border-radius: var(--calc-raio);
  padding: .7rem .9rem;
  margin: .5rem 0;
  background: #fff;
}

.faq-lista summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--calc-texto);
}

.faq-lista details[open] summary { margin-bottom: .5rem; }
.faq-lista p { margin: 0; color: var(--calc-texto-suave); }

/* ===================================
   FÓRMULA E NOTAS
   =================================== */

.formula {
  background: #f4f6f8;
  border-left: 3px solid var(--calc-acento);
  padding: .7rem .9rem;
  border-radius: 6px;
  font-size: 1.05rem;
  overflow-x: auto;
}

.nota,
.proximas {
  color: var(--calc-texto-suave);
  font-size: .95rem;
  border-left: 3px solid var(--calc-borda);
  padding-left: .8rem;
}

/* ===================================
   TELA PEQUENA
   =================================== */

@media (max-width: 600px) {
  .calc-valor { font-size: 1.9rem; }

  .calc-form { max-width: 100%; }

  /* Alvo de toque com pelo menos 44px — abaixo disso o teste de interface
     acusa, e com razão: dedo não é ponteiro. */
  .calc-btn,
  [class$="-calculate-btn"],
  [class$="-btn-calcular"] { width: 100%; padding: 1rem; }
}

/* O logo-como-texto e a lista "Próximamente" do rodapé se mudaram pra
   shared/css/base.css: essas regras precisam alcançar TODA página do
   locale (hub, páginas legais), não só as que carregam este arquivo. Ver o
   comentário lá — é a mesma marca em português que o achado 6.26 já
   corrigiu uma vez, encontrada de novo por outro motivo. */
