/*
 * reset.css - Um arquivo de reset CSS completo
 *
 * Baseado em princípios de Eric Meyer's Reset, Normalize.css e estilos modernos.
 *
 * Objetivo: Fornecer uma base limpa e consistente entre navegadores
 * para começar a estilizar seu projeto.
 *
 * Como usar: Inclua este arquivo CSS antes de qualquer outro arquivo CSS do seu projeto.
 * Exemplo no HTML: <link rel="stylesheet" href="caminho/para/reset.css">
 *
 * Lembre-se: Este é um ponto de partida. Adapte e adicione estilos
 * conforme as necessidades específicas do seu design.
 */

/* 1. Box-sizing universal
 * Garante que padding e border sejam incluídos na largura/altura de um elemento,
 * simplificando o cálculo de layouts.

 Desesenvolvido por Alana Barbosa
 */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 2. Reset básico para elementos comuns
 * Remove margens e preenchimentos padrão que variam entre navegadores.
 */
html,
body,
div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit; /* Garante que fontes sejam herdadas, não resetadas completamente */
  vertical-align: baseline;
}

/* 3. HTML5 display-role reset para navegadores mais antigos
 * Garante que os novos elementos HTML5 se comportem como blocos.
 */
article, aside, details, figcaption, figure,
footer, header, hgroup, main, menu, nav, section {
  display: block;
}

/* 4. Configurações base para o corpo do documento e HTML
 * - `line-height` para melhor legibilidade.
 * - `-webkit-text-size-adjust` previne o ajuste de tamanho de fonte em dispositivos móveis.
 * - `scroll-behavior: smooth` para rolagem suave (pode ser removido se não desejar).
 * - `font-family` uma stack de fontes modernas e seguras.
 */
html {
  line-height: 1.15; /* Consistente com Normalize.css */
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth; /* Adiciona rolagem suave em links internos */
}

body {
  margin: 0;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
  -webkit-font-smoothing: antialiased; /* Suaviza a renderização da fonte no WebKit */
  -moz-osx-font-smoothing: grayscale; /* Suaviza a renderização da fonte no Firefox (Mac) */
}

/* 5. Listas
 * Remove marcadores padrão e paddings/margins.
 */
ol, ul {
  list-style: none;
}

/* 6. Links
 * Remove sublinhado padrão e faz com que a cor seja herdada.
 */
a {
  text-decoration: none;
  color: inherit;
}

/* 7. Imagens e Mídia
 * - `display: block` para evitar espaços indesejados abaixo de imagens.
 * - `max-width: 100%` e `height: auto` para responsividade.
 */
img,
video,
audio,
iframe {
  display: block;
  max-width: 100%;
  height: auto; /* Mantém a proporção da imagem */
}

/* 8. Tabelas
 * Colapsa bordas e reseta padding/text-align.
 */
table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%; /* Útil para tabelas responsivas por padrão */
}

th,
td {
  padding: 0;
  text-align: left; /* Garante alinhamento à esquerda por padrão */
  vertical-align: top; /* Evita alinhamento vertical padrão */
}

/* 9. Elementos de Formulário
 * Esses são os mais complexos devido às inconsistências do navegador.
 * Este reset tenta normalizar o máximo possível.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* Herda a fonte do corpo do documento */
  font-size: 100%; /* Reseta o tamanho da fonte */
  line-height: 1.15; /* Garante altura de linha consistente */
  margin: 0; /* Remove margens padrão */
  padding: 0; /* Remove padding padrão */
}

/* 9.1 Botões específicos (reset mais agressivo) */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; /* Normaliza a aparência do botão em Webkit */
  background-color: transparent; /* Remove o background padrão */
  border: none; /* Remove a borda padrão */
  cursor: pointer; /* Indica que é clicável */
}

/* 9.2 Remove o "foco" interno do botão em Firefox */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/* 9.3 Corrige overflow em IE/Edge para inputs */
input {
  overflow: visible;
}

/* 9.4 Textarea
 * Corrige overflow e permite redimensionamento vertical.
 */
textarea {
  overflow: auto;
  resize: vertical; /* Permite redimensionar apenas verticalmente */
}

/* 9.5 Checkbox e Radio buttons
 * Corrige box-sizing e remove padding em Firefox.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}

/* 9.6 Number inputs
 * Remove os botões de incremento/decremento padrão em Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/* 9.7 Search inputs
 * Corrige a aparência em Chrome/Safari e remove decorações.
 */
[type="search"] {
  -webkit-appearance: textfield;
  outline-offset: -2px; /* Corrige o estilo do outline em Safari */
}
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/* 9.8 File upload buttons
 * Corrige a estilização em iOS/Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  font: inherit;
}

/* 9.9 Fieldset e Legend
 * Remove bordas e paddings padrão.
 */
fieldset {
  margin: 0;
  padding: 0;
  border: 0;
}

legend {
  box-sizing: border-box; /* Corrige quebras de texto e cores em Edge/IE */
  color: inherit;
  display: table; /* Corrige display em Edge/IE */
  max-width: 100%; /* Corrige incapacidade de centralizar em Firefox */
  padding: 0;
  white-space: normal;
}

/* 10. Outros Elementos
 * - `hr`: Reseta bordas e background.
 * - `abbr`: Remove underline padrão.
 * - `details`, `summary`: Normaliza display.
 * - `progress`: Normaliza alinhamento.
 * - `[hidden]`: Garante que não é exibido.
 */
hr {
  box-sizing: content-box; /* Corrige box-sizing em Edge/IE */
  height: 0; /* Corrige altura em Edge/IE */
  overflow: visible; /* Mostra overflow em Edge/IE */
  border: 0; /* Remove bordas padrão */
  border-top: 1px solid #ccc; /* Define uma borda padrão mais neutra */
  margin: 1em 0; /* Adiciona alguma margem para que seja visível */
}

abbr[title] {
  text-decoration: underline; /* Mantém o sublinhado padrão */
  text-decoration: underline dotted; /* Mais acessível */
  cursor: help; /* Indica que tem informação adicional */
  border-bottom: none; /* Remove borda em IE 10+ */
}

details {
  display: block; /* Garante que `details` seja um bloco */
}

summary {
  display: list-item; /* Garante que `summary` se comporte como um item de lista */
}

progress {
  vertical-align: baseline; /* Corrige alinhamento em Chrome/Firefox/Opera */
}

[hidden] {
  display: none; /* Garante que elementos com atributo hidden não sejam exibidos */
}

/* 11. Elementos de Texto com Estilos Padrão
 * Estes são geralmente mantidos para semântica.
 */
b,
strong {
  font-weight: bolder; /* Mantém o negrito, mas com uma regra mais explícita */
}

small {
  font-size: 80%; /* Mantém o tamanho menor */
}

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* 12. Elementos de Código
 * Define uma fonte monoespaçada padrão.
 */
code,
kbd,
samp,
pre {
  font-family: monospace, monospace;
  font-size: 1em;
}

pre {
  overflow: auto; /* Permite rolagem para linhas longas */
}

/* 13. Citações */
blockquote, q {
  quotes: none; /* Remove as aspas padrão */
}
blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}