/* ===================================================================
   ÍMPETO INVESTIMENTOS — RESET
   Arquivo: reset.css
   Objetivo: Normalizar o comportamento padrão dos navegadores,
   estabelecendo uma base limpa, acessível, performática e
   preparada para mobile antes de qualquer estilo visual.
   Depende de: variables.css (deve ser carregado ANTES deste arquivo
   ou logo em seguida — este reset já referencia Custom Properties).
   =================================================================== */


/* ===================================================================
   1. BOX-SIZING GLOBAL
   Garante que padding e border sejam somados dentro da largura/altura
   definidas, evitando cálculos manuais de layout.
   =================================================================== */

*,
*::before,
*::after {
    box-sizing: border-box;
}


/* ===================================================================
   2. RESET DE MARGENS, PADDINGS E FONTE BASE
   Remove espaçamentos padrão do navegador para que todo espaçamento
   do projeto venha exclusivamente da escala definida em variables.css.
   =================================================================== */

* {
    margin: 0;
    padding: 0;
    font: inherit;
}


/* ===================================================================
   3. HTML — BASE TIPOGRÁFICA E COMPORTAMENTO DE SCROLL
   font-size: 62.5% faz com que 1rem = 10px, simplificando os cálculos
   das variáveis de tipografia/espaçamento (que usam rem).
   =================================================================== */

html {
    font-size: 62.5%;
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

/* Respeita usuários que preferem menos movimento na interface */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}


/* ===================================================================
   4. BODY — FONTE, RENDERIZAÇÃO E HIGHLIGHT MOBILE
   =================================================================== */

body {
    font-family: var(--font-primary);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-base);
    color: var(--color-text-primary);
    background-color: var(--color-white);

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;

    -webkit-tap-highlight-color: transparent;

    min-height: 100vh;
    overflow-x: hidden;
}


/* ===================================================================
   5. MÍDIA — IMAGENS E SVG RESPONSIVOS
   =================================================================== */

img,
svg,
video,
canvas {
    display: block;
    max-width: 100%;
    height: auto;
}


/* ===================================================================
   6. LINKS
   =================================================================== */

a {
    color: inherit;
    text-decoration: none;
}


/* ===================================================================
   7. LISTAS
   =================================================================== */

ul,
ol {
    list-style: none;
}


/* ===================================================================
   8. TABELAS
   =================================================================== */

table {
    border-collapse: collapse;
    border-spacing: 0;
    width: 100%;
}


/* ===================================================================
   9. ELEMENTOS DE FORMULÁRIO
   Herdam a fonte do body, removem estilos nativos inconsistentes
   entre navegadores e mantêm o cursor correto em botões.
   =================================================================== */

button,
input,
textarea,
select {
    font-family: inherit;
    font-size: inherit;
    color: inherit;
    background-color: transparent;
    border: none;
    outline: none;
}

button {
    cursor: pointer;
    background: none;
    appearance: none;
}

/* Botões desabilitados devem sinalizar visualmente a indisponibilidade */
button:disabled {
    cursor: not-allowed;
}

textarea {
    resize: vertical;
}

select {
    appearance: none;
}

/* Remove o "x" nativo de inputs de busca/preenchimento automático em alguns navegadores */
input::-ms-clear,
input::-ms-reveal {
    display: none;
}


/* ===================================================================
   10. ACESSIBILIDADE — FOCO VISÍVEL
   O outline só aparece para navegação via teclado (:focus-visible),
   mantendo a interface limpa para interação via mouse/touch sem
   comprometer a acessibilidade.
   =================================================================== */

:focus {
    outline: none;
}

:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}


/* ===================================================================
   11. SELEÇÃO DE TEXTO PERSONALIZADA
   =================================================================== */

::selection {
    background-color: var(--color-primary);
    color: var(--color-white);
}


/* ===================================================================
   12. ELEMENTOS DIVERSOS
   =================================================================== */

/* Elementos que não recebem estilo devem se comportar como bloco */
picture {
    display: block;
}

/* Corrige herança de fonte em elementos que o navegador trata à parte */
fieldset {
    border: none;
}

/* Garante que elementos "hidden" via atributo nunca sejam exibidos,
   mesmo que outra regra de display tente sobrescrever por engano */
[hidden] {
    display: none !important;
}