/* Reset básico: remove margens e paddings padrão de todos os elementos */
*,
*::before,
*::after {
    margin: 0;
    /* Zera margem padrão do navegador */
    padding: 0;
    /* Zera padding padrão do navegador */
    box-sizing: border-box;
    /* Faz padding e borda entrarem no cálculo da largura total */
}

/* Variáveis de cor para o tema escuro (padrão inicial) */
:root[data-theme="dark"] {
    --color-bg: #0d0d0d;
    /* Cor de fundo principal escura */
    --color-bg-secondary: #151515;
    /* Cor de fundo secundária para seções alternadas */
    --color-bg-card: #1a1a1a;
    /* Cor de fundo dos cards */
    --color-text: #f5f5f5;
    /* Cor do texto principal em fundo escuro */
    --color-text-muted: #a8a8a8;
    /* Cor de texto secundário/esmaecido */
    --color-accent: #ff4d6d;
    /* Cor de destaque principal (rosa vibrante) */
    --color-accent-hover: #ff2e55;
    /* Cor de destaque ao passar o mouse */
    --color-gold: #ffd60a;
    /* Cor dourada usada em detalhes premium */
    --color-border: #2a2a2a;
    /* Cor de bordas sutis */
}

/* Variáveis de cor para o tema claro */
:root[data-theme="light"] {
    --color-bg: #ffffff;
    /* Cor de fundo principal clara */
    --color-bg-secondary: #f7f7f7;
    /* Cor de fundo secundária clara */
    --color-bg-card: #ffffff;
    /* Cor de fundo dos cards no tema claro */
    --color-text: #0d0d0d;
    /* Cor do texto principal em fundo claro */
    --color-text-muted: #5a5a5a;
    /* Cor de texto secundário no tema claro */
    --color-accent: #ff4d6d;
    /* Mantém a mesma cor de destaque para identidade visual */
    --color-accent-hover: #e6355a;
    /* Cor de destaque ao passar o mouse no tema claro */
    --color-gold: #c9960c;
    /* Dourado ajustado para contraste em fundo claro */
    --color-border: #e5e5e5;
    /* Cor de bordas sutis no tema claro */
}

/* Define fonte, cor e transições suaves globais no html */
html {
    scroll-behavior: smooth;
    /* Habilita rolagem suave para links âncora */
}

/* Estilo base do body aplicando as variáveis de tema */
body {
    font-family: 'Segoe UI', Roboto, Arial, sans-serif;
    /* Pilha de fontes com fallback seguro */
    background-color: var(--color-bg);
    /* Aplica cor de fundo conforme o tema ativo */
    color: var(--color-text);
    /* Aplica cor de texto conforme o tema ativo */
    line-height: 1.6;
    /* Espaçamento entre linhas para melhor leitura */
    transition: background-color 0.3s ease, color 0.3s ease;
    /* Suaviza a troca entre temas */
    overflow-x: hidden;
    /* Evita rolagem horizontal indesejada */
}

/* Link de pulo de acessibilidade, escondido até receber foco */
.skip-link {
    position: absolute;
    /* Retira do fluxo normal do documento */
    top: -40px;
    /* Posiciona fora da tela por padrão */
    left: 0;
    /* Alinha à esquerda */
    background: var(--color-accent);
    /* Fundo de destaque para visibilidade */
    color: #fff;
    /* Texto branco para contraste */
    padding: 0.75rem 1rem;
    /* Espaçamento interno confortável */
    z-index: 1000;
    /* Garante que fique acima de outros elementos */
}

/* Exibe o link de pulo quando ele recebe foco via teclado */
.skip-link:focus {
    top: 0;
    /* Move o link para dentro da área visível */
}

/* Classe utilitária para esconder elementos visualmente, mas mantê-los acessíveis */
.visually-hidden {
    position: absolute;
    /* Retira do fluxo visual */
    width: 1px;
    height: 1px;
    /* Reduz a dimensões mínimas */
    overflow: hidden;
    /* Esconde qualquer conteúdo excedente */
    clip: rect(0, 0, 0, 0);
    /* Recorta totalmente o conteúdo visível */
}

/* Estilo padrão de foco visível para acessibilidade via teclado */
a:focus-visible,
button:focus-visible,
input:focus-visible {
    outline: 2px solid var(--color-accent);
    /* Contorno visível de foco */
    outline-offset: 2px;
    /* Espaço entre o elemento e o contorno */
}

/* Container padrão reutilizado em várias seções para limitar largura */
.section-title {
    font-size: 1.5rem;
    /* Tamanho de fonte para títulos de seção em mobile */
    text-align: center;
    /* Centraliza o título */
    margin-bottom: 2rem;
    /* Espaço abaixo do título */
    padding: 0 1rem;
    /* Respiro lateral em telas pequenas */
}

/* ===================== HEADER ===================== */

/* Cabeçalho fixo no topo com fundo e sombra sutil */
.header {
    position: sticky;
    /* Mantém o header fixo ao rolar a página */
    top: 0;
    /* Cola no topo da viewport */
    z-index: 100;
    /* Garante que fique acima do conteúdo */
    background-color: var(--color-bg);
    /* Fundo conforme o tema ativo */
    border-bottom: 1px solid var(--color-border);
    /* Linha sutil de separação */
}

/* Container interno do header que organiza os elementos horizontalmente */
.header__container {
    display: flex;
    /* Layout flexível em linha */
    align-items: center;
    /* Centraliza verticalmente os itens */
    justify-content: space-between;
    /* Distribui logo, nav e ações nas pontas */
    padding: 1rem;
    /* Espaçamento interno do header */
    max-width: 1280px;
    /* Largura máxima do conteúdo */
    margin: 0 auto;
    /* Centraliza o container na página */
}

/* Estilo do logotipo textual da marca */
.header__logo {
    font-size: 1.5rem;
    /* Tamanho de destaque do logo */
    font-weight: 700;
    /* Peso em negrito para reforçar a marca */
    color: var(--color-text);
    /* Cor conforme o tema */
    text-decoration: none;
    /* Remove sublinhado padrão de link */
    letter-spacing: 0.5px;
    /* Leve espaçamento entre letras para sofisticação */
}

/* Navegação principal escondida por padrão em telas mobile */
.header__nav {
    display: none;
    /* Oculta o menu horizontal em telas pequenas */
}

/* Lista de itens do menu principal sem marcadores */
.header__nav-list {
    display: flex;
    /* Organiza os itens em linha */
    gap: 2rem;
    /* Espaçamento entre os itens do menu */
    list-style: none;
    /* Remove marcadores de lista */
}

/* Estilo dos links do menu principal */
.header__nav-link {
    color: var(--color-text);
    /* Cor do texto conforme o tema */
    text-decoration: none;
    /* Remove sublinhado padrão */
    font-weight: 500;
    /* Peso médio para boa legibilidade */
    transition: color 0.2s ease;
    /* Transição suave na cor ao interagir */
}

/* Efeito hover e foco nos links do menu principal */
.header__nav-link:hover,
.header__nav-link:focus-visible {
    color: var(--color-accent);
    /* Muda para a cor de destaque */
}

/* Grupo de ações do header (tema, conta, carrinho, hambúrguer) */
.header__actions {
    display: flex;
    /* Organiza os ícones em linha */
    align-items: center;
    /* Centraliza verticalmente os ícones */
    gap: 0.5rem;
    /* Espaçamento entre os botões de ação */
}

/* Estilo base dos botões/links de ícone no header */
.header__icon-btn {
    display: inline-flex;
    /* Permite centralizar o ícone interno */
    align-items: center;
    /* Centraliza verticalmente o ícone */
    justify-content: center;
    /* Centraliza horizontalmente o ícone */
    width: 40px;
    height: 40px;
    /* Área de toque confortável */
    background: none;
    /* Remove fundo padrão de botão */
    border: none;
    /* Remove borda padrão de botão */
    color: var(--color-text);
    /* Cor do ícone conforme o tema */
    cursor: pointer;
    /* Indica que o elemento é clicável */
    position: relative;
    /* Necessário para posicionar o contador do carrinho */
    border-radius: 50%;
    /* Formato circular para o botão */
    transition: background-color 0.2s ease;
    /* Transição suave no hover */
}

/* Efeito hover nos botões de ícone do header */
.header__icon-btn:hover {
    background-color: var(--color-bg-secondary);
    /* Fundo sutil ao passar o mouse */
}

/* Contador numérico de itens do carrinho posicionado sobre o ícone */
.header__cart-count {
    position: absolute;
    /* Posiciona sobre o ícone de carrinho */
    top: 0;
    right: 0;
    /* Fixa no canto superior direito do ícone */
    background: var(--color-accent);
    /* Fundo de destaque para visibilidade */
    color: #fff;
    /* Texto branco para contraste */
    font-size: 0.65rem;
    /* Fonte pequena por ser um badge */
    width: 16px;
    height: 16px;
    /* Dimensão fixa do badge */
    border-radius: 50%;
    /* Formato circular do badge */
    display: flex;
    align-items: center;
    justify-content: center;
    /* Centraliza o número */
}

/* Ícones de sol/lua alternam visibilidade conforme o tema ativo */
:root[data-theme="dark"] .icon--moon {
    display: none;
}

/* Esconde lua no tema escuro */
:root[data-theme="light"] .icon--sun {
    display: none;
}

/* Esconde sol no tema claro */

/* Botão hambúrguer visível apenas em telas mobile */
.header__hamburger {
    display: inline-flex;
    /* Exibe o botão em telas pequenas */
    align-items: center;
    justify-content: center;
    /* Centraliza o ícone interno */
    width: 40px;
    height: 40px;
    /* Área de toque adequada */
    background: none;
    border: none;
    /* Remove estilos padrão de botão */
    color: var(--color-text);
    /* Cor do ícone conforme o tema */
    cursor: pointer;
    /* Indica interatividade */
}

/* ===================== MENU MOBILE ===================== */

/* Camada de sobreposição escura atrás do menu mobile */
.overlay {
    position: fixed;
    /* Fixa na tela independente do scroll */
    inset: 0;
    /* Ocupa toda a viewport (top/right/bottom/left = 0) */
    background: rgba(0, 0, 0, 0.6);
    /* Fundo escurecido semitransparente */
    opacity: 0;
    /* Invisível por padrão */
    visibility: hidden;
    /* Removido da árvore de interação por padrão */
    transition: opacity 0.3s ease;
    /* Transição suave ao aparecer/desaparecer */
    z-index: 150;
    /* Fica abaixo do menu, mas acima do conteúdo */
}

/* Classe aplicada via JS para exibir a sobreposição */
.overlay.is-visible {
    opacity: 1;
    /* Torna a camada visível */
    visibility: visible;
    /* Permite interação de clique */
}

/* Menu lateral mobile, escondido fora da tela por padrão */
.mobile-menu {
    position: fixed;
    /* Fixa na tela para funcionar como painel lateral */
    top: 0;
    right: 0;
    /* Fixa no canto superior direito */
    height: 100vh;
    /* Ocupa toda a altura da viewport */
    width: min(80vw, 320px);
    /* Largura responsiva com limite máximo */
    background: var(--color-bg);
    /* Fundo conforme o tema ativo */
    transform: translateX(100%);
    /* Esconde o menu fora da tela à direita */
    transition: transform 0.3s ease;
    /* Anima a entrada/saída do menu */
    z-index: 200;
    /* Fica acima da sobreposição */
    padding: 1.5rem;
    /* Espaçamento interno do painel */
    box-shadow: -4px 0 20px rgba(0, 0, 0, 0.3);
    /* Sombra lateral para profundidade */
}

/* Classe aplicada via JS para exibir o menu mobile */
.mobile-menu.is-open {
    transform: translateX(0);
    /* Move o menu para dentro da tela visível */
}

/* Botão de fechar dentro do menu mobile */
.mobile-menu__close {
    background: none;
    border: none;
    /* Remove estilos padrão */
    color: var(--color-text);
    /* Cor conforme o tema */
    cursor: pointer;
    /* Indica interatividade */
    margin-bottom: 2rem;
    /* Espaço abaixo do botão */
}

/* Lista de links dentro do menu mobile */
.mobile-menu__list {
    list-style: none;
    /* Remove marcadores padrão */
    display: flex;
    flex-direction: column;
    /* Organiza os itens em coluna */
    gap: 1.5rem;
    /* Espaçamento entre os itens */
}

/* Estilo dos links dentro do menu mobile */
.mobile-menu__link {
    color: var(--color-text);
    /* Cor conforme o tema */
    text-decoration: none;
    /* Remove sublinhado */
    font-size: 1.1rem;
    /* Fonte um pouco maior para facilitar o toque */
}

/* ===================== BOTÕES ===================== */

/* Estilo base compartilhado por todos os botões do site */
.btn {
    display: inline-block;
    /* Permite aplicar padding corretamente */
    padding: 0.85rem 1.75rem;
    /* Espaçamento interno confortável para toque */
    border-radius: 999px;
    /* Formato de pílula para visual premium */
    font-weight: 600;
    /* Peso em negrito para destaque */
    text-decoration: none;
    /* Remove sublinhado padrão de link */
    cursor: pointer;
    /* Indica interatividade */
    border: 2px solid transparent;
    /* Base para variação com borda */
    transition: all 0.25s ease;
    /* Transição suave em todas as interações */
    font-size: 0.95rem;
    /* Tamanho de fonte confortável */
}

/* Variação de botão primário com fundo de destaque */
.btn--primary {
    background-color: var(--color-accent);
    /* Fundo na cor de destaque */
    color: #fff;
    /* Texto branco para contraste */
}

/* Efeito hover do botão primário */
.btn--primary:hover {
    background-color: var(--color-accent-hover);
    /* Escurece levemente no hover */
    transform: translateY(-2px);
    /* Leve elevação para efeito premium */
}

/* Variação de botão com apenas contorno */
.btn--outline {
    background: transparent;
    /* Fundo transparente */
    border-color: var(--color-border);
    /* Borda sutil conforme o tema */
    color: var(--color-text);
    /* Texto conforme o tema */
}

/* Efeito hover do botão outline */
.btn--outline:hover {
    border-color: var(--color-accent);
    /* Borda destaca na cor de acento */
    color: var(--color-accent);
    /* Texto também muda de cor */
}

/* Modificador que faz o botão ocupar toda a largura disponível */
.btn--full {
    width: 100%;
    /* Ocupa 100% do container pai */
    margin-top: 0.75rem;
    /* Espaço acima do botão */
}

/* ===================== HERO ===================== */

/* Seção hero com espaçamento generoso */
.hero {
    padding: 2rem 1rem;
    /* Espaçamento interno confortável em mobile */
    background-color: var(--color-bg-secondary);
    /* Fundo levemente diferenciado */
}

/* Container do hero organizado em coluna no mobile */
.hero__container {
    display: flex;
    /* Layout flexível */
    flex-direction: column;
    /* Empilha texto e imagem em telas pequenas */
    gap: 2rem;
    /* Espaçamento entre os blocos */
    max-width: 1280px;
    /* Largura máxima do conteúdo */
    margin: 0 auto;
    /* Centraliza o container */
    align-items: center;
    /* Centraliza os itens horizontalmente */
}

/* Bloco de texto do hero centralizado em mobile */
.hero__content {
    text-align: center;
    /* Centraliza o texto em telas pequenas */
}

/* Título principal do hero com tipografia impactante */
.hero__title {
    font-size: 2rem;
    /* Tamanho grande para impacto em mobile */
    font-weight: 800;
    /* Peso extra negrito */
    margin-bottom: 1rem;
    /* Espaço abaixo do título */
    line-height: 1.2;
    /* Linhas mais próximas para títulos grandes */
}

/* Subtítulo explicativo abaixo do título do hero */
.hero__subtitle {
    color: var(--color-text-muted);
    /* Cor esmaecida para hierarquia visual */
    margin-bottom: 1.5rem;
    /* Espaço abaixo do parágrafo */
    font-size: 1rem;
    /* Tamanho confortável de leitura */
}

/* Container da imagem do hero */
.hero__media {
    width: 100%;
    /* Ocupa toda a largura disponível */
}

/* Imagem de destaque do hero totalmente responsiva */
.hero__image {
    width: 100%;
    /* Ocupa toda a largura do container */
    height: auto;
    /* Mantém a proporção original */
    border-radius: 16px;
    /* Bordas arredondadas para visual premium */
    display: block;
    /* Remove espaço extra abaixo da imagem */
}

/* ===================== CATEGORIAS ===================== */

/* Seção de categorias com espaçamento vertical */
.categories {
    padding: 3rem 1rem;
    /* Espaçamento interno da seção */
}

/* Grid responsivo de categorias, 2 colunas em mobile */
.categories__grid {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: repeat(2, 1fr);
    /* Duas colunas iguais em mobile */
    gap: 1rem;
    /* Espaçamento entre os cards */
    max-width: 1280px;
    /* Largura máxima do grid */
    margin: 0 auto;
    /* Centraliza o grid */
}

/* Card individual de categoria */
.category-card {
    position: relative;
    /* Necessário para posicionar o label sobre a imagem */
    display: block;
    /* Ocupa a célula do grid como bloco */
    border-radius: 12px;
    /* Bordas arredondadas do card */
    overflow: hidden;
    /* Esconde partes da imagem que excedem o card */
    text-decoration: none;
    /* Remove sublinhado de link */
}

/* Imagem dentro do card de categoria */
.category-card__image {
    width: 100%;
    height: 100%;
    /* Preenche totalmente o card */
    object-fit: cover;
    /* Recorta a imagem mantendo proporção */
    aspect-ratio: 4/5;
    /* Proporção fixa para consistência visual */
    transition: transform 0.4s ease;
    /* Suaviza o efeito de zoom no hover */
}

/* Efeito de leve zoom na imagem ao passar o mouse sobre o card */
.category-card:hover .category-card__image {
    transform: scale(1.05);
    /* Aumenta levemente a imagem */
}

/* Rótulo textual sobreposto na parte inferior do card de categoria */
.category-card__label {
    position: absolute;
    /* Sobrepõe a imagem */
    bottom: 0;
    left: 0;
    right: 0;
    /* Ocupa toda a largura na parte inferior */
    padding: 0.75rem;
    /* Espaçamento interno do rótulo */
    background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
    /* Gradiente para legibilidade */
    color: #fff;
    /* Texto branco para contraste sobre a imagem */
    font-weight: 600;
    /* Destaque no peso da fonte */
    text-align: center;
    /* Centraliza o texto do rótulo */
}

/* ===================== PRODUTOS ===================== */

/* Seção de produtos em destaque */
.featured {
    padding: 3rem 1rem;
    /* Espaçamento interno da seção */
    background-color: var(--color-bg-secondary);
    /* Fundo levemente diferenciado */
}

/* Grid responsivo de produtos, uma coluna em telas muito pequenas */
.products-grid {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: repeat(2, 1fr);
    /* Duas colunas em mobile */
    gap: 1.25rem;
    /* Espaçamento entre os cards de produto */
    max-width: 1280px;
    /* Largura máxima do grid */
    margin: 0 auto;
    /* Centraliza o grid na página */
}

/* Card individual de produto */
.product-card {
    background-color: var(--color-bg-card);
    /* Fundo do card conforme o tema */
    border-radius: 12px;
    /* Bordas arredondadas */
    padding: 0.75rem;
    /* Espaçamento interno do card */
    border: 1px solid var(--color-border);
    /* Borda sutil de separação */
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    /* Transição suave no hover */
}

/* Efeito hover elevando levemente o card de produto */
.product-card:hover {
    transform: translateY(-4px);
    /* Eleva o card sutilmente */
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    /* Sombra suave para profundidade */
}

/* Link interno do card que agrupa imagem, nome e preço */
.product-card__link {
    text-decoration: none;
    /* Remove sublinhado padrão */
    color: inherit;
    /* Herda a cor do texto do tema */
    display: block;
    /* Ocupa toda a largura do card */
}

/* Imagem do produto dentro do card */
.product-card__image {
    width: 100%;
    /* Ocupa toda a largura do card */
    aspect-ratio: 4/5;
    /* Proporção consistente entre os cards */
    object-fit: cover;
    /* Recorta mantendo proporção */
    border-radius: 8px;
    /* Bordas levemente arredondadas */
    margin-bottom: 0.75rem;
    /* Espaço abaixo da imagem */
}

/* Nome do produto exibido no card */
.product-card__name {
    font-size: 0.95rem;
    /* Tamanho de fonte confortável em mobile */
    font-weight: 600;
    /* Peso semi-negrito para destaque */
    margin-bottom: 0.25rem;
    /* Pequeno espaço abaixo do nome */
}

/* Preço do produto exibido no card */
.product-card__price {
    color: var(--color-accent);
    /* Cor de destaque para o preço */
    font-weight: 700;
    /* Peso negrito para reforçar o valor */
}

/* ===================== BENEFÍCIOS ===================== */

/* Seção de benefícios/diferenciais da marca */
.benefits {
    padding: 3rem 1rem;
    /* Espaçamento interno da seção */
}

/* Grid responsivo dos cards de benefício */
.benefits__grid {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: 1fr;
    /* Uma coluna em mobile */
    gap: 1.5rem;
    /* Espaçamento entre os cards */
    max-width: 1280px;
    /* Largura máxima do grid */
    margin: 0 auto;
    /* Centraliza o grid */
}

/* Card individual de benefício com visual sofisticado */
.benefit-card {
    background: var(--color-bg-card);
    /* Fundo do card conforme o tema */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    border-radius: 16px;
    /* Bordas bem arredondadas para elegância */
    padding: 1.5rem;
    /* Espaçamento interno generoso */
    text-align: center;
    /* Centraliza o conteúdo do card */
}

/* Ícone decorativo no topo do card de benefício */
.benefit-card__icon {
    display: inline-block;
    /* Permite espaçamento controlado */
    font-size: 1.5rem;
    /* Tamanho de destaque do símbolo */
    color: var(--color-gold);
    /* Cor dourada para reforçar o caráter premium */
    margin-bottom: 0.75rem;
    /* Espaço abaixo do ícone */
}

/* Título do card de benefício */
.benefit-card__title {
    font-size: 1.1rem;
    /* Tamanho de destaque do título */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do título */
}

/* Texto explicativo do card de benefício */
.benefit-card__text {
    color: var(--color-text-muted);
    /* Cor esmaecida para o corpo do texto */
    font-size: 0.9rem;
    /* Tamanho confortável de leitura */
}

/* ===================== DEPOIMENTOS ===================== */

/* Seção de depoimentos de clientes */
.testimonials {
    padding: 3rem 1rem;
    /* Espaçamento interno da seção */
    background-color: var(--color-bg-secondary);
    /* Fundo levemente diferenciado */
}

/* Grid responsivo dos cards de depoimento */
.testimonials__grid {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: 1fr;
    /* Uma coluna em mobile */
    gap: 1.5rem;
    /* Espaçamento entre os depoimentos */
    max-width: 1280px;
    /* Largura máxima do grid */
    margin: 0 auto;
    /* Centraliza o grid */
}

/* Card individual de depoimento em estilo premium */
.testimonial-card {
    background: var(--color-bg-card);
    /* Fundo do card conforme o tema */
    border: 1px solid var(--color-border);
    /* Borda sutil de separação */
    border-radius: 16px;
    /* Bordas arredondadas elegantes */
    padding: 1.5rem;
    /* Espaçamento interno generoso */
}

/* Ícone de aspas decorativo no topo do depoimento */
.testimonial-card__quote {
    font-size: 2rem;
    /* Tamanho grande para destaque visual */
    color: var(--color-accent);
    /* Cor de destaque para o ícone */
    line-height: 1;
    /* Remove espaçamento extra de linha */
}

/* Texto do depoimento em si */
.testimonial-card__text {
    margin: 0.75rem 0 1rem;
    /* Espaçamento vertical ao redor do texto */
    color: var(--color-text-muted);
    /* Cor esmaecida para o corpo do depoimento */
}

/* Rodapé do card contendo avatar e nome do cliente */
.testimonial-card__author {
    display: flex;
    /* Organiza avatar e nome lado a lado */
    align-items: center;
    /* Centraliza verticalmente */
    gap: 0.75rem;
    /* Espaço entre avatar e nome */
    font-weight: 600;
    /* Peso semi-negrito no nome */
}

/* Imagem de avatar do cliente no depoimento */
.testimonial-card__avatar {
    width: 40px;
    height: 40px;
    /* Tamanho fixo do avatar */
    border-radius: 50%;
    /* Formato circular */
    object-fit: cover;
    /* Garante recorte proporcional da imagem */
}

/* ===================== NEWSLETTER ===================== */

/* Seção de captura de email com destaque visual */
.newsletter {
    padding: 3rem 1rem;
    /* Espaçamento interno da seção */
    background: linear-gradient(135deg, var(--color-bg-card), var(--color-bg-secondary));
    /* Gradiente sutil premium */
    text-align: center;
    /* Centraliza todo o conteúdo */
}

/* Container que limita a largura do conteúdo da newsletter */
.newsletter__container {
    max-width: 600px;
    /* Largura máxima confortável para leitura */
    margin: 0 auto;
    /* Centraliza o container */
}

/* Título da seção de newsletter */
.newsletter__title {
    font-size: 1.5rem;
    /* Tamanho de destaque do título */
    margin-bottom: 0.75rem;
    /* Espaço abaixo do título */
}

/* Texto explicativo da newsletter */
.newsletter__text {
    color: var(--color-text-muted);
    /* Cor esmaecida para o texto */
    margin-bottom: 1.5rem;
    /* Espaço abaixo do parágrafo */
}

/* Formulário de newsletter organizado em coluna no mobile */
.newsletter__form {
    display: flex;
    /* Ativa layout flexível */
    flex-direction: column;
    /* Empilha input e botão em mobile */
    gap: 0.75rem;
    /* Espaçamento entre os campos */
}

/* Campo de input de email da newsletter */
.newsletter__input {
    padding: 0.85rem 1rem;
    /* Espaçamento interno confortável */
    border-radius: 999px;
    /* Formato de pílula consistente com os botões */
    border: 1px solid var(--color-border);
    /* Borda sutil conforme o tema */
    background: var(--color-bg);
    /* Fundo conforme o tema ativo */
    color: var(--color-text);
    /* Cor do texto digitado */
    font-size: 1rem;
    /* Tamanho confortável de leitura */
}

/* Mensagem de feedback do formulário de newsletter */
.newsletter-feedback {
    margin-top: 0.75rem;
    /* Espaço acima da mensagem */
    font-size: 0.9rem;
    /* Tamanho discreto da mensagem */
    min-height: 1.2em;
    /* Reserva espaço para evitar salto de layout */
}

/* Variação de cor para mensagem de sucesso */
.newsletter-feedback--success {
    color: #4caf50;
}

/* Variação de cor para mensagem de erro */
.newsletter-feedback--error {
    color: #ff5252;
}

/* ===================== FOOTER ===================== */

/* Rodapé principal do site */
.footer {
    background-color: var(--color-bg-card);
    /* Fundo do rodapé conforme o tema */
    border-top: 1px solid var(--color-border);
    /* Linha de separação superior */
    padding: 3rem 1rem 1.5rem;
    /* Espaçamento interno do rodapé */
}

/* Container do rodapé organizado em coluna no mobile */
.footer__container {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: 1fr;
    /* Uma coluna em telas pequenas */
    gap: 2rem;
    /* Espaçamento entre as colunas */
    max-width: 1280px;
    /* Largura máxima do conteúdo */
    margin: 0 auto 2rem;
    /* Centraliza e espaça da linha de copyright */
}

/* Logotipo textual dentro do rodapé */
.footer__logo {
    font-size: 1.3rem;
    /* Tamanho de destaque do logo */
    font-weight: 700;
    /* Peso negrito */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do logo */
}

/* Texto descritivo genérico dentro do rodapé */
.footer__text {
    color: var(--color-text-muted);
    /* Cor esmaecida para textos secundários */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
}

/* Título de cada coluna do rodapé */
.footer__heading {
    font-size: 1rem;
    /* Tamanho de destaque do subtítulo */
    margin-bottom: 0.75rem;
    /* Espaço abaixo do título da coluna */
}

/* Modificador para adicionar espaço extra acima de um heading repetido */
.footer__heading--spaced {
    margin-top: 1.5rem;
    /* Espaço adicional para separar blocos na mesma coluna */
}

/* Lista de links dentro do rodapé sem marcadores */
.footer__list {
    list-style: none;
    /* Remove marcadores padrão */
    display: flex;
    flex-direction: column;
    /* Organiza os links em coluna */
    gap: 0.5rem;
    /* Espaçamento entre os links */
}

/* Estilo padrão dos links do rodapé */
.footer__link {
    color: var(--color-text-muted);
    /* Cor esmaecida por padrão */
    text-decoration: none;
    /* Remove sublinhado padrão */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
    transition: color 0.2s ease;
    /* Transição suave na cor ao interagir */
}

/* Efeito hover/foco nos links do rodapé */
.footer__link:hover,
.footer__link:focus-visible {
    color: var(--color-accent);
    /* Destaca a cor de acento no hover */
}

/* Bloco de endereço de contato no rodapé */
.footer__address {
    font-style: normal;
    /* Remove itálico padrão da tag address */
    color: var(--color-text-muted);
    /* Cor esmaecida do texto de contato */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
}

/* Grupo de links de redes sociais no rodapé */
.footer__social {
    display: flex;
    flex-direction: column;
    /* Organiza os links em coluna */
    gap: 0.5rem;
    /* Espaçamento entre os links sociais */
}

/* Linha final de copyright do rodapé */
.footer__copyright {
    text-align: center;
    /* Centraliza o texto de copyright */
    color: var(--color-text-muted);
    /* Cor esmaecida */
    font-size: 0.8rem;
    /* Tamanho discreto */
    border-top: 1px solid var(--color-border);
    /* Linha de separação acima */
    padding-top: 1.5rem;
    /* Espaço acima do texto */
    max-width: 1280px;
    /* Largura máxima alinhada ao restante do rodapé */
    margin: 0 auto;
    /* Centraliza o bloco */
}

.footer__copyright a {
    color: var(--color-accent);
    /* Link de destaque para o autor */
    text-decoration: none;
    /* Remove sublinhado padrão */
    transition: opacity 0.3s ease;
}

.footer__copyright a:hover,
.footer__copyright a:focus-visible {
    text-decoration: underline;
    /* Sublinha o link no hover/foco */
    opacity: 0.8;
}

/* ===================== BOTÕES FLUTUANTES ===================== */

/* Botão flutuante fixo do WhatsApp */
.whatsapp-float {
    position: fixed;
    /* Fixa na tela independente do scroll */
    bottom: 5.5rem;
    right: 1.25rem;
    /* Posiciona no canto inferior direito, acima do scroll-top */
    background-color: #25d366;
    /* Verde característico do WhatsApp */
    color: #fff;
    /* Ícone branco para contraste */
    width: 56px;
    height: 56px;
    /* Tamanho confortável de toque */
    border-radius: 50%;
    /* Formato circular */
    display: flex;
    align-items: center;
    justify-content: center;
    /* Centraliza o ícone interno */
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
    /* Sombra para efeito flutuante */
    z-index: 90;
    /* Mantém acima do conteúdo, abaixo do menu mobile */
    transition: transform 0.2s ease;
    /* Suaviza o efeito hover */
}

/* Efeito hover no botão do WhatsApp */
.whatsapp-float:hover {
    transform: scale(1.08);
    /* Leve aumento ao passar o mouse */
}

/* Botão flutuante de voltar ao topo, escondido por padrão */
.scroll-top {
    position: fixed;
    /* Fixa na tela */
    bottom: 1.25rem;
    right: 1.25rem;
    /* Posiciona no canto inferior direito */
    background-color: var(--color-bg-card);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do ícone conforme o tema */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    width: 48px;
    height: 48px;
    /* Tamanho confortável de toque */
    border-radius: 50%;
    /* Formato circular */
    display: flex;
    align-items: center;
    justify-content: center;
    /* Centraliza o ícone */
    cursor: pointer;
    /* Indica interatividade */
    opacity: 0;
    visibility: hidden;
    /* Escondido por padrão */
    transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.2s ease;
    /* Transições suaves */
    z-index: 90;
    /* Mesmo nível do botão do WhatsApp */
}

/* Classe aplicada via JS quando o usuário rola a página */
.scroll-top.is-visible {
    opacity: 1;
    visibility: visible;
    /* Torna o botão visível */
}

/* Efeito hover no botão de voltar ao topo */
.scroll-top:hover {
    transform: translateY(-3px);
    /* Leve elevação ao passar o mouse */
}

/* ===================== PÁGINAS SECUNDÁRIAS (compartilhado) ===================== */

/* Título de página usado em catálogo, blog, carrinho e checkout */
.page-header {
    padding: 2rem 1rem;
    /* Espaçamento interno do cabeçalho de página */
    text-align: center;
    /* Centraliza o título */
    background-color: var(--color-bg-secondary);
    /* Fundo levemente diferenciado */
}

/* Título principal das páginas internas */
.page-header__title {
    font-size: 1.75rem;
    /* Tamanho de destaque do título da página */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do título */
}

/* Trilha de navegação (breadcrumb) simples */
.page-header__breadcrumb {
    color: var(--color-text-muted);
    /* Cor esmaecida para a trilha */
    font-size: 0.85rem;
    /* Tamanho discreto */
}

/* Link dentro da trilha de navegação */
.page-header__breadcrumb a {
    color: var(--color-text-muted);
    /* Mesma cor esmaecida do texto */
    text-decoration: none;
    /* Remove sublinhado padrão */
}

/* Barra de filtros usada na página de catálogo */
.filter-bar {
    display: flex;
    /* Organiza os botões em linha */
    flex-wrap: wrap;
    /* Permite quebra de linha em telas pequenas */
    gap: 0.5rem;
    /* Espaçamento entre os botões de filtro */
    justify-content: center;
    /* Centraliza os botões */
    padding: 1.5rem 1rem;
    /* Espaçamento interno da barra */
}

/* Botão individual de filtro de categoria */
.filter-bar__btn {
    padding: 0.5rem 1.25rem;
    /* Espaçamento interno do botão de filtro */
    border-radius: 999px;
    /* Formato de pílula */
    border: 1px solid var(--color-border);
    /* Borda sutil conforme o tema */
    background: var(--color-bg-card);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do texto conforme o tema */
    cursor: pointer;
    /* Indica interatividade */
    font-size: 0.85rem;
    /* Tamanho discreto do texto */
    transition: all 0.2s ease;
    /* Transição suave nas interações */
}

/* Estado ativo do botão de filtro selecionado */
.filter-bar__btn.is-active {
    background: var(--color-accent);
    /* Fundo de destaque quando ativo */
    color: #fff;
    /* Texto branco sobre o fundo de destaque */
    border-color: var(--color-accent);
    /* Borda combinando com o fundo */
}

/* ===================== PÁGINA DE PRODUTO ===================== */

/* Container principal da página de detalhes do produto */
.product-detail {
    display: flex;
    /* Layout flexível */
    flex-direction: column;
    /* Empilha galeria e informações em mobile */
    gap: 1.5rem;
    /* Espaçamento entre os blocos */
    padding: 1.5rem 1rem;
    /* Espaçamento interno da seção */
    max-width: 1100px;
    /* Largura máxima do conteúdo */
    margin: 0 auto;
    /* Centraliza o conteúdo */
}

/* Imagem principal do produto na página de detalhes */
.product-detail__image {
    width: 100%;
    /* Ocupa toda a largura disponível */
    border-radius: 16px;
    /* Bordas arredondadas premium */
    aspect-ratio: 4/5;
    /* Proporção consistente com os cards */
    object-fit: cover;
    /* Recorte proporcional da imagem */
}

/* Nome do produto na página de detalhes */
.product-detail__name {
    font-size: 1.5rem;
    /* Tamanho de destaque do nome */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do nome */
}

/* Preço do produto na página de detalhes */
.product-detail__price {
    color: var(--color-accent);
    /* Cor de destaque para o preço */
    font-size: 1.4rem;
    /* Tamanho grande para reforçar o valor */
    font-weight: 700;
    /* Peso negrito */
    margin-bottom: 1rem;
    /* Espaço abaixo do preço */
}

/* Descrição textual do produto */
.product-detail__description {
    color: var(--color-text-muted);
    /* Cor esmaecida para o corpo do texto */
    margin-bottom: 1.5rem;
    /* Espaço abaixo da descrição */
}

/* Grupo de seleção de tamanho do produto */
.size-selector {
    display: flex;
    /* Organiza os tamanhos em linha */
    gap: 0.5rem;
    /* Espaçamento entre as opções */
    margin-bottom: 1.5rem;
    /* Espaço abaixo do seletor */
    flex-wrap: wrap;
    /* Permite quebra em telas pequenas */
}

/* Botão individual de seleção de tamanho */
.size-selector__option {
    width: 44px;
    height: 44px;
    /* Área de toque adequada */
    border-radius: 8px;
    /* Bordas levemente arredondadas */
    border: 1px solid var(--color-border);
    /* Borda sutil conforme o tema */
    background: var(--color-bg-card);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do texto conforme o tema */
    cursor: pointer;
    /* Indica interatividade */
}

/* Estado selecionado do tamanho escolhido */
.size-selector__option.is-selected {
    border-color: var(--color-accent);
    /* Borda destacada quando selecionado */
    color: var(--color-accent);
    /* Texto na cor de destaque */
}

/* ===================== PÁGINA DE CARRINHO ===================== */

/* Lista de itens do carrinho de compras */
.cart-list {
    list-style: none;
    /* Remove marcadores padrão */
    display: flex;
    flex-direction: column;
    /* Organiza os itens em coluna */
    gap: 1rem;
    /* Espaçamento entre os itens */
    padding: 1.5rem 1rem;
    /* Espaçamento interno da lista */
    max-width: 900px;
    /* Largura máxima do conteúdo */
    margin: 0 auto;
    /* Centraliza a lista */
}

/* Item individual do carrinho */
.cart-item {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: 80px 1fr;
    /* Imagem pequena e informações ao lado */
    gap: 1rem;
    /* Espaçamento entre imagem e informações */
    background: var(--color-bg-card);
    /* Fundo conforme o tema */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    border-radius: 12px;
    /* Bordas arredondadas */
    padding: 1rem;
    /* Espaçamento interno do item */
}

/* Imagem em miniatura do produto no carrinho */
.cart-item__image {
    width: 80px;
    height: 80px;
    /* Tamanho fixo da miniatura */
    object-fit: cover;
    /* Recorte proporcional */
    border-radius: 8px;
    /* Bordas levemente arredondadas */
}

/* Controles de quantidade dentro do item do carrinho */
.qty-control {
    display: flex;
    align-items: center;
    /* Alinha os botões e o input */
    gap: 0.5rem;
    /* Espaçamento entre os elementos */
    margin: 0.5rem 0;
    /* Espaço vertical ao redor do controle */
}

/* Botão de incremento/decremento de quantidade */
.qty-btn {
    width: 28px;
    height: 28px;
    /* Tamanho compacto do botão */
    border-radius: 6px;
    /* Bordas levemente arredondadas */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    background: var(--color-bg);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do texto conforme o tema */
    cursor: pointer;
    /* Indica interatividade */
}

/* Campo numérico de quantidade no carrinho */
.qty-input {
    width: 40px;
    /* Largura compacta do input */
    text-align: center;
    /* Centraliza o número digitado */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    border-radius: 6px;
    /* Bordas levemente arredondadas */
    background: var(--color-bg);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do texto conforme o tema */
    padding: 0.25rem;
    /* Espaçamento interno pequeno */
}

/* Botão de remover item do carrinho */
.cart-item__remove {
    background: none;
    border: none;
    /* Remove estilos padrão */
    color: var(--color-accent);
    /* Cor de destaque para chamar atenção */
    cursor: pointer;
    /* Indica interatividade */
    font-size: 0.85rem;
    /* Tamanho discreto do texto */
    text-decoration: underline;
    /* Sublinhado para parecer link de ação */
}

/* Resumo total do carrinho exibido ao final da lista */
.cart-summary {
    max-width: 900px;
    /* Alinha com a largura da lista de itens */
    margin: 0 auto 3rem;
    /* Centraliza e espaça do rodapé */
    padding: 1.5rem;
    /* Espaçamento interno do resumo */
    background: var(--color-bg-card);
    /* Fundo conforme o tema */
    border-radius: 12px;
    /* Bordas arredondadas */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    display: flex;
    justify-content: space-between;
    align-items: center;
    /* Distribui total e botão */
    flex-wrap: wrap;
    gap: 1rem;
    /* Permite quebra em telas pequenas */
}

/* ===================== PÁGINA DE CHECKOUT ===================== */

/* Formulário de checkout com espaçamento entre campos */
.checkout-form {
    display: flex;
    flex-direction: column;
    /* Organiza os campos em coluna */
    gap: 1rem;
    /* Espaçamento entre os campos */
    max-width: 600px;
    /* Largura máxima confortável do formulário */
    margin: 0 auto;
    /* Centraliza o formulário */
    padding: 1.5rem 1rem 3rem;
    /* Espaçamento interno da seção */
}

/* Rótulo de cada campo do formulário de checkout */
.form-label {
    display: block;
    /* Ocupa linha própria acima do input */
    margin-bottom: 0.3rem;
    /* Pequeno espaço abaixo do rótulo */
    font-size: 0.9rem;
    /* Tamanho discreto do rótulo */
}

/* Campo de entrada padrão do formulário de checkout */
.form-input {
    width: 100%;
    /* Ocupa toda a largura disponível */
    padding: 0.75rem;
    /* Espaçamento interno confortável */
    border-radius: 8px;
    /* Bordas levemente arredondadas */
    border: 1px solid var(--color-border);
    /* Borda sutil conforme o tema */
    background: var(--color-bg);
    /* Fundo conforme o tema */
    color: var(--color-text);
    /* Cor do texto digitado */
}

/* ===================== PÁGINA DE BLOG ===================== */

/* Grid responsivo de posts do blog */
.blog-grid {
    display: grid;
    /* Ativa layout em grade */
    grid-template-columns: 1fr;
    /* Uma coluna em mobile */
    gap: 1.5rem;
    /* Espaçamento entre os posts */
    padding: 1.5rem 1rem 3rem;
    /* Espaçamento interno da seção */
    max-width: 1280px;
    /* Largura máxima do grid */
    margin: 0 auto;
    /* Centraliza o grid */
}

/* Card individual de post do blog */
.blog-card {
    background: var(--color-bg-card);
    /* Fundo conforme o tema */
    border: 1px solid var(--color-border);
    /* Borda sutil */
    border-radius: 12px;
    /* Bordas arredondadas */
    overflow: hidden;
    /* Esconde excesso da imagem */
    text-decoration: none;
    /* Remove sublinhado do link */
    color: inherit;
    /* Herda a cor do texto do tema */
    display: block;
    /* Ocupa a célula do grid */
}

/* Imagem de capa do post do blog */
.blog-card__image {
    width: 100%;
    /* Ocupa toda a largura do card */
    aspect-ratio: 16/9;
    /* Proporção widescreen para capas de blog */
    object-fit: cover;
    /* Recorte proporcional da imagem */
}

/* Conteúdo textual do card de blog */
.blog-card__body {
    padding: 1rem;
    /* Espaçamento interno do corpo do card */
}

/* Título do post exibido no card */
.blog-card__title {
    font-size: 1.05rem;
    /* Tamanho de destaque do título */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do título */
}

/* Trecho de resumo do post exibido no card */
.blog-card__excerpt {
    color: var(--color-text-muted);
    /* Cor esmaecida do resumo */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
}

/* ===================== PÁGINA DE AUTENTICAÇÃO (CADASTRO/LOGIN) ===================== */

/* Seção que centraliza o card de autenticação na tela */
.auth-section {
    display: flex;
    /* Ativa layout flexível para centralizar o card */
    justify-content: center;
    /* Centraliza horizontalmente o card */
    padding: 2.5rem 1rem;
    /* Espaçamento interno da seção em mobile */
}

/* Card que contém o formulário de cadastro ou login */
.auth-card {
    width: 100%;
    /* Ocupa toda a largura disponível em mobile */
    max-width: 440px;
    /* Limita a largura máxima em telas maiores */
    background: var(--color-bg-card);
    /* Fundo do card conforme o tema ativo */
    border: 1px solid var(--color-border);
    /* Borda sutil de separação */
    border-radius: 16px;
    /* Bordas arredondadas para visual premium */
    padding: 2rem 1.5rem;
    /* Espaçamento interno generoso do card */
}

/* Título principal dentro do card de autenticação */
.auth-card__title {
    font-size: 1.5rem;
    /* Tamanho de destaque do título */
    text-align: center;
    /* Centraliza o título dentro do card */
    margin-bottom: 0.5rem;
    /* Espaço abaixo do título */
}

/* Subtítulo explicativo abaixo do título do card */
.auth-card__subtitle {
    color: var(--color-text-muted);
    /* Cor esmaecida para hierarquia visual */
    text-align: center;
    /* Centraliza o subtítulo */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
    margin-bottom: 1.75rem;
    /* Espaço abaixo do subtítulo, antes do formulário */
}

/* Formulário de autenticação organizado em coluna */
.auth-form {
    display: flex;
    /* Ativa layout flexível */
    flex-direction: column;
    /* Empilha os campos verticalmente */
    gap: 1.1rem;
    /* Espaçamento entre os grupos de campos */
}

/* Grupo que agrupa rótulo, input e mensagem de erro de cada campo */
.form-group {
    display: flex;
    /* Ativa layout flexível */
    flex-direction: column;
    /* Empilha rótulo, input e erro */
    gap: 0.3rem;
    /* Espaçamento pequeno entre os elementos internos */
}

/* Wrapper que agrupa o input de senha e o botão de mostrar/ocultar */
.input-wrapper {
    position: relative;
    /* Necessário para posicionar o botão sobre o input */
    display: flex;
    /* Alinha input e botão na mesma linha */
    align-items: center;
    /* Centraliza verticalmente o botão em relação ao input */
}

/* Ajusta o padding direito do input dentro do wrapper para não sobrepor o botão */
.input-wrapper .form-input {
    padding-right: 2.75rem;
    /* Espaço reservado para o botão de visibilidade */
}

/* Botão que alterna a visibilidade da senha digitada */
.input-wrapper__toggle {
    position: absolute;
    /* Posiciona o botão sobre o campo de senha */
    right: 0.75rem;
    /* Distância da borda direita do input */
    background: none;
    /* Remove fundo padrão de botão */
    border: none;
    /* Remove borda padrão de botão */
    color: var(--color-text-muted);
    /* Cor esmaecida do ícone por padrão */
    cursor: pointer;
    /* Indica que o elemento é clicável */
    display: flex;
    /* Centraliza o ícone interno */
    align-items: center;
    /* Alinha verticalmente o ícone */
}

/* Efeito hover/foco no botão de visibilidade da senha */
.input-wrapper__toggle:hover {
    color: var(--color-accent);
    /* Destaca o ícone na cor de acento */
}

/* Texto de apoio abaixo de um campo, como requisitos de senha */
.form-hint {
    font-size: 0.78rem;
    /* Tamanho bem discreto do texto de apoio */
    color: var(--color-text-muted);
    /* Cor esmaecida para não competir com o conteúdo principal */
}

/* Mensagem de erro exibida abaixo de um campo inválido */
.form-error {
    font-size: 0.8rem;
    /* Tamanho discreto da mensagem de erro */
    color: #ff5252;
    /* Cor vermelha padrão para indicar erro */
    min-height: 1em;
    /* Reserva espaço fixo para evitar salto de layout */
}

/* Aplica borda vermelha no input quando ele está marcado como inválido via JS */
.form-input.is-invalid {
    border-color: #ff5252;
    /* Borda vermelha indicando erro de validação */
}

/* Grupo que organiza o checkbox de termos ao lado do texto */
.form-checkbox-group {
    display: flex;
    /* Alinha checkbox e texto lado a lado */
    align-items: flex-start;
    /* Alinha ao topo para textos com múltiplas linhas */
    gap: 0.6rem;
    /* Espaçamento entre o checkbox e o texto */
    font-size: 0.85rem;
    /* Tamanho discreto do texto dos termos */
    color: var(--color-text-muted);
    /* Cor esmaecida do texto padrão */
}

/* Ajusta o checkbox para não encolher e manter alinhamento com o texto */
.form-checkbox-group input[type="checkbox"] {
    margin-top: 0.2rem;
    /* Pequeno ajuste vertical para alinhar com a primeira linha do texto */
    flex-shrink: 0;
    /* Impede que o checkbox seja espremido pelo texto longo */
}

/* Texto de rodapé do card com o link para login ou cadastro */
.auth-card__footer {
    text-align: center;
    /* Centraliza o texto de rodapé do card */
    margin-top: 1.5rem;
    /* Espaço acima do texto, separando do formulário */
    font-size: 0.9rem;
    /* Tamanho discreto de leitura */
    color: var(--color-text-muted);
    /* Cor esmaecida do texto padrão */
}

/* ===================== RESPONSIVIDADE (TABLET) ===================== */

/* A partir de 768px assume-se layout de tablet */
@media (min-width: 768px) {

    /* Exibe a navegação horizontal padrão em telas médias e grandes */
    .header__nav {
        display: block;
    }

    /* Esconde o botão hambúrguer quando a navegação horizontal está visível */
    .header__hamburger {
        display: none;
    }

    /* Aumenta o título das seções em telas maiores */
    .section-title {
        font-size: 2rem;
    }

    /* Layout do hero em linha, texto e imagem lado a lado */
    .hero__container {
        flex-direction: row;
        text-align: left;
    }

    /* Texto do hero alinhado à esquerda em telas maiores */
    .hero__content {
        text-align: left;
        flex: 1;
    }

    /* Imagem do hero ocupando metade do espaço disponível */
    .hero__media {
        flex: 1;
    }

    /* Aumenta o tamanho do título do hero em telas maiores */
    .hero__title {
        font-size: 3rem;
    }

    /* Categorias em 4 colunas a partir do tablet */
    .categories__grid {
        grid-template-columns: repeat(4, 1fr);
    }

    /* Produtos em 3 colunas a partir do tablet */
    .products-grid {
        grid-template-columns: repeat(3, 1fr);
    }

    /* Benefícios em 2 colunas a partir do tablet */
    .benefits__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Depoimentos em 3 colunas a partir do tablet */
    .testimonials__grid {
        grid-template-columns: repeat(3, 1fr);
    }

    /* Formulário de newsletter em linha a partir do tablet */
    .newsletter__form {
        flex-direction: row;
    }

    /* Campo de email ocupa o espaço restante ao lado do botão */
    .newsletter__input {
        flex: 1;
    }

    /* Rodapé em 4 colunas a partir do tablet */
    .footer__container {
        grid-template-columns: repeat(4, 1fr);
    }

    /* Página de produto em linha, galeria e info lado a lado */
    .product-detail {
        flex-direction: row;
    }

    /* Galeria e informações do produto dividem o espaço igualmente */
    .product-detail__gallery,
    .product-detail__info {
        flex: 1;
    }

    /* Blog em 2 colunas a partir do tablet */
    .blog-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ===================== RESPONSIVIDADE (DESKTOP) ===================== */

/* A partir de 1024px assume-se layout de desktop completo */
@media (min-width: 1024px) {

    /* Produtos em 4 colunas em telas grandes */
    .products-grid {
        grid-template-columns: repeat(4, 1fr);
    }

    /* Benefícios em 4 colunas em telas grandes */
    .benefits__grid {
        grid-template-columns: repeat(4, 1fr);
    }

    /* Blog em 3 colunas em telas grandes */
    .blog-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}