/* ==========================================================================
   Camada da loja, carregada depois de site.css.
   Nenhuma cor literal: tudo sai das variáveis que o painel injeta no <head>,
   senão mudar a marca em Aparência deixaria de valer para metade das telas.
   Mobile-first: o padrão é a tela pequena, os breakpoints só ampliam.
   ========================================================================== */

:root {
  --sombra-suave: 0 1px 2px rgba(16, 24, 40, .05), 0 8px 24px -16px rgba(16, 24, 40, .25);
  --sombra-media: 0 12px 32px -18px rgba(16, 24, 40, .4);
  --borda: 1px solid rgba(16, 24, 40, .1);
  --topo-altura: 64px;            /* altura mínima da faixa principal */
  /* --topo-real: medida pelo JS com o cabeçalho inteiro (aviso + faixas).
     É o que os blocos grudados usam para não ficar por baixo do topo. */
}

.icone { flex: none; vertical-align: -.15em; }
.estrelas { display: flex; gap: .1rem; align-items: center; }

/* ==========================================================================
   GRADES QUE NÃO ESTOURAM  (precisa vir ANTES de tudo)
   Coluna de grade nasce com min-width:auto: uma foto de 900px de largura
   natural obriga a coluna a ter 900px, e o celular ganha rolagem lateral.
   minmax(0,1fr) nas grades e min-width:0 nos filhos resolvem de uma vez.

   A posição no arquivo importa: se estas linhas ficarem depois das media
   queries que montam as colunas do desktop, elas vencem por ordem de cascata
   e o layout de duas colunas simplesmente não acontece.
   ========================================================================== */
.produto, .produto__detalhes, .carrinho, .checkout, .conta, .conta-acesso, .orcamento, .catalogo, .acesso {
  grid-template-columns: minmax(0, 1fr);
}
.produto > *, .produto__detalhes > *, .carrinho > *, .checkout > *,
.conta > *, .conta-acesso > *, .orcamento > *, .catalogo > *, .acesso > *,
.produtos-grade > *, .categorias > *, .passos > * { min-width: 0; }

/* ------------------------------------------------------------ barra de aviso */
.barra-aviso {
  background: var(--cor-secundaria);
  color: #fff;
  font-size: .84rem;
  text-align: center;
  padding: .5rem 0;
}
.barra-aviso .container { display: flex; align-items: center; justify-content: center; gap: .5rem; }

/* ==========================================================================
   CABEÇALHO
   Duas faixas: (1) marca + busca + ações, (2) navegação.
   Menu de loja tem item com nome comprido ("Peças personalizadas"); disputando
   a mesma linha com a busca ele quebraria em duas linhas em qualquer tela
   média. Em faixa própria, o menu tem a largura inteira e nunca quebra.
   ========================================================================== */
.topo {
  position: sticky; top: 0; z-index: 60;
  background: var(--cor-secundaria);
  color: #fff;
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}

/* ---------------------------------------------------- faixa 1: marca/busca */
.topo__inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-template-areas:
    "menu  logo  acoes"
    "busca busca busca";
  align-items: center;
  column-gap: .5rem;
  row-gap: .6rem;
  min-height: var(--topo-altura);
  padding-top: .5rem;
  padding-bottom: .75rem;
}

.topo__menu-btn { grid-area: menu; display: inline-flex; margin-left: -10px; }
.topo__menu-btn span { background: #fff; }

.topo__logo {
  grid-area: logo; justify-self: center;
  display: inline-flex; align-items: center; min-height: 44px; color: #fff;
}
.topo__logo img { max-height: 32px; width: auto; }
.topo__logo span { font-size: 1.1rem; }

.topo__acoes { grid-area: acoes; display: flex; align-items: center; gap: .15rem; margin-right: -.35rem; }

.topo__busca {
  grid-area: busca;
  display: flex; align-items: center; gap: .35rem;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 999px;
  padding: 3px 3px 3px 1rem;
}
.topo__busca input {
  flex: 1; min-width: 0;
  background: none; border: 0; color: #fff;
  font: inherit; font-size: .92rem; padding: .55rem 0;
}
.topo__busca input::placeholder { color: rgba(255, 255, 255, .5); }
.topo__busca input:focus { outline: none; }
.topo__busca input::-webkit-search-cancel-button { filter: invert(1); opacity: .5; }
.topo__busca button {
  display: grid; place-items: center;
  width: 40px; height: 40px; flex: none;
  background: var(--cor-acento); color: #06222e;
  border: 0; border-radius: 999px; cursor: pointer;
  transition: filter .15s ease;
}
.topo__busca button:hover { filter: brightness(1.12); }
.topo__busca:focus-within { border-color: var(--cor-acento); background: rgba(255, 255, 255, .12); }

.topo__conta, .topo__carrinho {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  min-width: 56px; min-height: 48px; padding: .25rem .4rem;
  color: rgba(255, 255, 255, .9); font-size: .68rem; font-weight: 600; line-height: 1;
  border-radius: 10px;
}
.topo__conta:hover, .topo__carrinho:hover { background: rgba(255, 255, 255, .1); text-decoration: none; color: #fff; }
.topo__conta span, .topo__carrinho span { max-width: 9ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topo__badge {
  position: absolute; top: 1px; right: 4px;
  min-width: 18px; height: 18px; padding: 0 5px;
  display: grid; place-items: center;
  background: var(--cor-acento); color: #06222e;
  font-size: .66rem; font-weight: 800; font-style: normal;
  border-radius: 999px;
}

/* ------------------------------------------------------ faixa 2: navegação */
/* No celular a faixa não ocupa espaço: o menu é uma gaveta lateral fechada. */
.topo__barra > .container { padding: 0; }

.topo__nav {
  position: fixed; inset: 0 auto 0 0;
  width: min(330px, 86vw);
  display: none; flex-direction: column;
  padding: 1.25rem;
  background: var(--cor-secundaria);
  border-right: 1px solid rgba(255, 255, 255, .12);
  box-shadow: 0 0 60px rgba(0, 0, 0, .55);
  max-height: 100dvh; overflow-y: auto;
  z-index: 70;
}
.topo__nav.aberto { display: flex; }
.topo__nav ul { list-style: none; margin: 0; padding: 0; }
.topo__nav-titulo {
  margin: 0 0 .5rem; font-size: .7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .12em; color: rgba(255, 255, 255, .45);
}
.topo__nav > ul > li > a {
  display: flex; align-items: center; justify-content: space-between; gap: .4rem;
  padding: .85rem .25rem; min-height: 48px;
  color: #fff; font-weight: 600;
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}
.topo__nav .submenu { padding-left: .9rem; }
.topo__nav .submenu a { display: block; padding: .6rem .25rem; min-height: 44px; color: rgba(255, 255, 255, .78); }
.topo__atalho {
  display: flex; align-items: center; gap: .5rem;
  margin-top: 1rem; padding: .75rem 1rem; min-height: 48px;
  background: rgba(255, 255, 255, .08); border-radius: 10px;
  color: #fff; font-weight: 600; font-size: .92rem;
}
.topo__atalho:hover { background: rgba(255, 255, 255, .14); text-decoration: none; }
.topo__nav-conta {
  display: flex; flex-direction: column; gap: .25rem;
  margin-top: 1rem; padding-top: 1rem;
  border-top: 1px solid rgba(255, 255, 255, .12);
}
.topo__nav-conta a {
  display: flex; align-items: center; gap: .5rem;
  padding: .7rem .25rem; min-height: 48px;
  color: rgba(255, 255, 255, .85); font-weight: 600; font-size: .95rem;
}

/* Fundo escurecido atrás da gaveta, para o toque fora fechar o menu. */
.topo__fundo {
  position: fixed; inset: 0; z-index: 65;
  background: rgba(0, 0, 0, .55);
  border: 0; padding: 0; cursor: pointer;
}
.topo__fundo[hidden] { display: none; }

/* --------------------------------------------------- tablet (uma linha só) */
@media (min-width: 640px) and (max-width: 899.98px) {
  .topo__inner {
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    grid-template-areas: "menu logo busca acoes";
    column-gap: 1rem;
    padding-top: 0; padding-bottom: 0;
  }
  .topo__logo { justify-self: start; }
  .topo__busca { max-width: 400px; justify-self: end; }
}

/* --------------------------------------------------------------- desktop */
@media (min-width: 900px) {
  :root { --topo-altura: 76px; }

  .topo__inner {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas: "logo busca acoes";
    column-gap: 2rem; row-gap: 0;
    padding-top: 0; padding-bottom: 0;
  }
  .topo__menu-btn { display: none; }
  .topo__logo { justify-self: start; }
  .topo__logo img { max-height: 40px; }
  .topo__busca { max-width: 520px; justify-self: center; width: 100%; }
  .topo__acoes { gap: .35rem; }

  .topo__barra {
    border-top: 1px solid rgba(255, 255, 255, .09);
    background: rgba(255, 255, 255, .03);
  }
  .topo__barra > .container { padding: 0 clamp(1rem, 4vw, 2rem); }

  .topo__nav {
    position: static; width: auto; max-height: none; overflow: visible;
    display: flex; flex-direction: row; align-items: center; gap: 0;
    padding: 0; background: none; border: 0; box-shadow: none;
  }
  .topo__nav-titulo, .topo__nav-conta { display: none; }
  .topo__nav > ul { display: flex; flex-wrap: wrap; align-items: center; }
  .topo__nav > ul > li { position: relative; }
  .topo__nav > ul > li > a {
    padding: .85rem 1rem; min-height: 46px;
    border: 0; border-bottom: 2px solid transparent;
    font-size: .93rem; font-weight: 600; white-space: nowrap;
    color: rgba(255, 255, 255, .86);
  }
  .topo__nav > ul > li > a:hover {
    color: #fff; border-bottom-color: var(--cor-acento); text-decoration: none;
  }
  .topo__nav > ul > li:first-child > a { padding-left: 0; }

  .topo__atalho {
    margin: 0 0 0 auto; padding: .4rem .9rem; min-height: 38px;
    background: none; font-size: .88rem; color: rgba(255, 255, 255, .8);
  }
  .topo__atalho:hover { background: none; color: var(--cor-acento); }

  .submenu {
    position: absolute; top: 100%; left: 0; min-width: 230px;
    display: none; flex-direction: column; padding: .4rem;
    background: #1c1c1c; border: 1px solid rgba(255, 255, 255, .14);
    border-radius: calc(var(--raio) * .6);
    box-shadow: 0 18px 40px -18px rgba(0, 0, 0, .8);
    z-index: 5;
  }
  .tem-filhos:hover .submenu, .tem-filhos:focus-within .submenu { display: flex; }
  .topo__nav .submenu a { padding: .6rem .75rem; border-radius: 6px; min-height: 40px; }
  .topo__nav .submenu a:hover { background: rgba(255, 255, 255, .08); color: #fff; text-decoration: none; }

  .topo__fundo { display: none !important; }
}

/* Telas muito largas: a busca não precisa esticar sem limite. */
@media (min-width: 1200px) {
  .topo__busca { max-width: 460px; }
}

/* --------------------------------------------------------------- avisos */
.flashes { padding-top: 1rem; }
.aviso { display: flex; align-items: flex-start; gap: .7rem; }
.aviso p { margin: .2rem 0 0; font-size: .92rem; }
.aviso--atencao { background: #fff8e6; color: #6b4a05; border: 1px solid #f3dfa8; }
.aviso .icone { flex: none; margin-top: .1rem; }

/* O título de uma seção pode sair como h1 (quando é o primeiro da página) ou
   h2. Os dois precisam do mesmo tratamento visual dentro da seção. */
.secao__cabecalho h1, .secao__cabecalho h2 { margin-bottom: .35em; }
.secao__cabecalho h1 { font-size: clamp(1.8rem, 1.3rem + 2.2vw, 2.8rem); }
.vitrine__topo h1 { font-size: clamp(1.6rem, 1.2rem + 1.8vw, 2.4rem); margin-bottom: .2em; }

/* --------------------------------------------------------- títulos gerais */
.titulo-pagina { display: flex; align-items: center; gap: .6rem; font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.2rem); margin-bottom: 1.5rem; }
.titulo-pagina .icone { color: var(--cor-primaria); }

.caixa {
  background: var(--cor-fundo);
  border: var(--borda);
  border-radius: var(--raio);
  padding: clamp(1.1rem, 3vw, 1.75rem);
  box-shadow: var(--sombra-suave);
  margin-bottom: 1.25rem;
}
.caixa h2 { font-size: 1.2rem; display: flex; align-items: center; gap: .5rem; margin-bottom: .9rem; }
.caixa h2 .icone { color: var(--cor-primaria); }
.caixa__titulo { font-size: 1.15rem; }
.caixa__linha { margin-bottom: .9rem; display: flex; align-items: flex-start; gap: .5rem; }
.caixa--destaque { border-color: var(--cor-primaria); border-width: 2px; }
.caixa--form { max-width: 520px; margin-inline: auto; }
.caixa--secundaria { background: var(--cor-fundo-alt); box-shadow: none; }
.passo-num {
  display: inline-grid; place-items: center;
  width: 28px; height: 28px; flex: none;
  background: var(--cor-primaria); color: #fff;
  border-radius: 999px; font-size: .85rem; font-weight: 700;
}

.vazio-caixa {
  text-align: center; padding: clamp(2.5rem, 8vw, 4.5rem) 1.5rem;
  background: var(--cor-fundo-alt); border-radius: var(--raio);
}
.vazio-caixa .icone { color: var(--cor-primaria); opacity: .55; margin-bottom: .75rem; }
.vazio-caixa h1, .vazio-caixa h2 { font-size: 1.4rem; margin-bottom: .5rem; }
.vazio-caixa p { max-width: 46ch; margin-inline: auto; opacity: .8; }

.link-seta {
  display: inline-flex; align-items: center; gap: .35rem;
  min-height: 44px; padding: .4rem 0;   /* alvo de toque no celular */
  font-weight: 600; white-space: nowrap;
}
.link-seta:hover { text-decoration: none; gap: .6rem; transition: gap .15s ease; }

/* Telefone e e-mail no bloco de contato são links que se toca com o dedo. */
.contato__dados .lista-contato a { display: inline-flex; align-items: center; min-height: 44px; }

.lista-check { list-style: none; padding: 0; margin: 1rem 0; }
.lista-check li { display: flex; align-items: flex-start; gap: .55rem; padding: .3rem 0; }
.lista-check .icone { color: var(--cor-primaria); margin-top: .2rem; }

/* ----------------------------------------------------------- vantagens */
.vantagens { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: 1fr 1fr; }
.vantagem { display: flex; align-items: center; gap: .7rem; }
.vantagem__icone {
  display: grid; place-items: center; flex: none;
  width: 44px; height: 44px; border-radius: 12px;
  color: var(--cor-primaria);
  background: color-mix(in srgb, var(--cor-primaria) 12%, transparent);
}
.fundo-escuro .vantagem__icone, .fundo-primaria .vantagem__icone { color: var(--cor-acento); background: rgba(255, 255, 255, .1); }
.vantagem__texto { display: flex; flex-direction: column; min-width: 0; }
.vantagem__texto strong { font-size: .92rem; line-height: 1.25; }
.vantagem__texto small { font-size: .8rem; opacity: .72; }
@media (min-width: 900px) {
  .vantagens { grid-template-columns: repeat(4, 1fr); }
  .vantagens--linha { gap: 1.75rem; }
}

/* ---------------------------------------------------------- categorias */
.categorias { display: grid; gap: .85rem; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 720px) { .categorias { grid-template-columns: repeat(4, 1fr); } }
.categoria {
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
  padding: 1.25rem 1rem; text-align: center; color: inherit;
  background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.categoria:hover { transform: translateY(-3px); border-color: var(--cor-primaria); box-shadow: var(--sombra-media); text-decoration: none; }
.categoria img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: calc(var(--raio) * .6); }
.categoria__icone {
  display: grid; place-items: center; width: 56px; height: 56px; border-radius: 16px;
  color: var(--cor-primaria); background: color-mix(in srgb, var(--cor-primaria) 10%, transparent);
}
.categoria__nome { font-weight: 700; font-size: .98rem; }
.categoria__desc { opacity: .7; font-size: .82rem; }
.categorias--simples .categoria { padding: .9rem .75rem; }

/* --------------------------------------------------------------- passos */
.passos { list-style: none; counter-reset: passo; padding: 0; margin: 0; display: grid; gap: 1.25rem; }
@media (min-width: 800px) { .passos { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } }
.passo {
  position: relative; padding: 1.5rem 1.25rem 1.25rem;
  background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio);
}
.fundo-alt .passo { background: #fff; }
.passo__numero {
  position: absolute; top: -14px; left: 1.25rem;
  display: grid; place-items: center; width: 30px; height: 30px;
  background: var(--cor-primaria); color: #fff;
  border-radius: 999px; font-weight: 800; font-size: .9rem;
}
.passo__icone { display: block; color: var(--cor-primaria); margin-bottom: .6rem; }
.passo__titulo { font-size: 1.05rem; margin-bottom: .35rem; }
.passo p { margin: 0; opacity: .8; font-size: .95rem; }

/* ------------------------------------------------------------- vitrine */
.vitrine__topo { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.vitrine__topo h2 { margin-bottom: .2em; }
.vitrine__topo .secao__sub { margin: 0; }

.produtos-grade { display: grid; gap: clamp(.7rem, 2vw, 1.25rem); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 700px) { .produtos-grade--3, .produtos-grade--4 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1040px) {
  .produtos-grade--2 { grid-template-columns: repeat(2, 1fr); }
  .produtos-grade--4 { grid-template-columns: repeat(4, 1fr); }
}

.produto-card {
  display: flex; flex-direction: column;
  background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio);
  overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.produto-card:hover { transform: translateY(-4px); box-shadow: var(--sombra-media); border-color: color-mix(in srgb, var(--cor-primaria) 45%, transparent); }
.produto-card__link { display: flex; flex-direction: column; flex: 1; color: inherit; }
.produto-card__link:hover { text-decoration: none; }
.produto-card__foto { position: relative; background: var(--cor-fundo-alt); }
.produto-card__foto img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.produto-card--esgotado .produto-card__foto img { filter: grayscale(.85); opacity: .65; }
.produto-card__selos { position: absolute; top: .5rem; left: .5rem; display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; }
.produto-card__corpo { display: flex; flex-direction: column; gap: .2rem; padding: .8rem .85rem 0; flex: 1; }
.produto-card__cat { font-size: .7rem; text-transform: uppercase; letter-spacing: .07em; opacity: .6; font-weight: 700; }
.produto-card__nome {
  font-size: .93rem; line-height: 1.35; margin: 0 0 .4rem; font-weight: 600;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.produto-card__preco { display: flex; align-items: baseline; flex-wrap: wrap; gap: .4rem; margin-top: auto; }
.produto-card__parcela { font-size: .76rem; opacity: .7; }
.produto-card__acao { padding: .75rem .85rem .85rem; }

.preco-de { font-size: .82rem; text-decoration: line-through; opacity: .55; }
.preco-por { font-family: var(--fonte-titulo); font-size: 1.18rem; font-weight: 800; letter-spacing: -.02em; }

.selo {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: .2rem .5rem; border-radius: 6px;
  font-size: .68rem; font-weight: 800; letter-spacing: .02em;
  background: var(--cor-secundaria); color: #fff;
}
.selo--desconto { background: #d92d20; }
.selo--tipo { background: var(--cor-primaria); }
.selo--esgotado { background: #475467; }
.selo--flutuante { position: absolute; top: 1rem; left: 1rem; font-size: .8rem; padding: .35rem .7rem; }

.botao--bloco { width: 100%; }
.botao--pequeno { min-height: 38px; padding: .45rem .9rem; font-size: .85rem; }
.botao--grande { min-height: 54px; font-size: 1.02rem; }
.botao[aria-disabled="true"] { opacity: .55; pointer-events: none; }

/* ------------------------------------------------------------- catálogo */
.catalogo-topo h1 { font-size: clamp(1.7rem, 1.3rem + 1.6vw, 2.4rem); margin-bottom: .3em; }
.catalogo-topo__sub { margin: 0; opacity: .78; }
.migalhas { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; font-size: .82rem; opacity: .75; margin-bottom: .75rem; }
.migalhas a { color: inherit; }

/* A faixa de título do catálogo encosta na listagem: espaço grande entre as
   duas só empurra os produtos para baixo da dobra. */
.secao--catalogo { padding-top: clamp(1.5rem, 3vw, 2.25rem); }

.catalogo { display: grid; gap: 1.25rem; }
.catalogo__abrir-filtros { width: 100%; justify-content: center; }
.catalogo__filtros { display: none; }
.catalogo__filtros.aberto { display: block; }

.filtros {
  background: var(--cor-fundo);
  border: var(--borda);
  border-radius: var(--raio);
  padding: 1.1rem 1.25rem;
}
.filtros__grupo { border: 0; padding: 0; margin: 0 0 1.35rem; }
.filtros__grupo:last-of-type { margin-bottom: .5rem; }
.filtros__grupo legend {
  padding: 0; margin-bottom: .5rem;
  font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .09em;
  color: var(--cor-texto); opacity: .55;
}
.filtros__grupo ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
.filtros__grupo a {
  display: flex; align-items: center; gap: .5rem;
  padding: .5rem .65rem; min-height: 40px;
  border-radius: 8px; color: inherit; font-size: .92rem;
  transition: background .15s ease, color .15s ease;
}
.filtros__grupo a:hover { background: var(--cor-fundo-alt); text-decoration: none; }
.filtros__grupo a .icone { opacity: .55; }
.filtros__grupo a.ativo {
  /* Texto no tom escuro da marca: o azul normal sobre o próprio azul
     clareado dá 3,9:1, abaixo do mínimo legível. */
  background: rgba(10, 114, 184, .12);
  background: color-mix(in srgb, var(--cor-primaria) 12%, transparent);
  color: var(--cor-primaria-escura);
  font-weight: 700;
}
.filtros__grupo a.ativo .icone { opacity: 1; }
.filtros .botao--texto { margin-top: .25rem; }

@media (min-width: 980px) {
  .catalogo { grid-template-columns: 260px minmax(0, 1fr); align-items: start; gap: 2rem; }
  .catalogo__abrir-filtros { display: none; }
  .catalogo__filtros {
    display: block;
    position: sticky; top: calc(var(--topo-real, var(--topo-altura)) + 1rem);
    max-height: calc(100dvh - var(--topo-real, var(--topo-altura)) - 2rem);
    overflow-y: auto;
  }
}

.catalogo__barra {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: .5rem 1rem; margin-bottom: 1.1rem;
  padding-bottom: .85rem; border-bottom: var(--borda);
  font-size: .9rem;
}
.catalogo__barra > span { opacity: .7; }
.catalogo__ordem { display: flex; align-items: center; gap: .5rem; margin-left: auto; }
.catalogo__ordem > span { opacity: .7; white-space: nowrap; }
.catalogo__ordem select {
  padding: .5rem 2rem .5rem .7rem; font: inherit; font-size: .9rem;
  border: var(--borda); border-radius: 8px; background: var(--cor-fundo); color: inherit;
  min-height: 44px; max-width: 100%;
}

.paginacao { display: flex; align-items: center; justify-content: center; gap: .75rem; margin-top: 2.5rem; flex-wrap: wrap; }
.paginacao a {
  display: inline-flex; align-items: center; gap: .35rem;
  font-weight: 600; padding: .7rem 1.1rem; min-height: 46px;
  border: var(--borda); border-radius: 999px; color: inherit;
}
.paginacao a:hover { text-decoration: none; border-color: var(--cor-primaria); color: var(--cor-primaria-escura); }
.paginacao span { font-size: .9rem; opacity: .7; padding: 0 .5rem; }

/* -------------------------------------------------------------- produto */
.produto { display: grid; gap: 2rem; }
@media (min-width: 900px) { .produto { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 3rem; align-items: start; } }

.produto__foto-principal { position: relative; border-radius: var(--raio); overflow: hidden; background: var(--cor-fundo-alt); border: var(--borda); }
.produto__foto-principal img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.produto__miniaturas { display: flex; gap: .5rem; margin-top: .6rem; overflow-x: auto; padding-bottom: .25rem; }
.produto__mini { flex: none; width: 72px; height: 72px; padding: 0; border: 2px solid transparent; border-radius: 10px; overflow: hidden; background: none; cursor: pointer; }
.produto__mini img { width: 100%; height: 100%; object-fit: cover; }
.produto__mini.ativo { border-color: var(--cor-primaria); }

@media (min-width: 900px) { .produto__midia { position: sticky; top: calc(var(--topo-real, var(--topo-altura)) + 1rem); } }

.produto__tipo {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .3rem .65rem; margin-bottom: .8rem;
  background: rgba(10, 114, 184, .12);
  background: color-mix(in srgb, var(--cor-primaria) 12%, transparent);
  color: var(--cor-primaria-escura); border-radius: 999px;
  font-size: .78rem; font-weight: 700;
}
.produto__compra h1 { font-size: clamp(1.4rem, 1.1rem + 1.4vw, 1.95rem); margin-bottom: .4em; }
.produto__resumo { opacity: .82; }

.produto__precos { display: flex; flex-direction: column; gap: .15rem; padding: 1.1rem 0; margin: .5rem 0 1.25rem; border-top: var(--borda); border-bottom: var(--borda); }
.produto__precos .preco-por { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.4rem); }
.produto__parcela { font-size: .95rem; opacity: .78; }
.produto__pix { display: inline-flex; align-items: center; gap: .4rem; margin-top: .35rem; font-size: .9rem; font-weight: 600; color: var(--cor-primaria); }

.personalizacao {
  border: 2px dashed color-mix(in srgb, var(--cor-primaria) 35%, transparent);
  border-radius: var(--raio); padding: 1.1rem; margin-bottom: 1.25rem;
  background: rgba(10, 114, 184, .04);
  background: color-mix(in srgb, var(--cor-primaria) 4%, transparent);
}
.personalizacao legend { display: flex; align-items: center; gap: .4rem; font-weight: 700; padding: 0 .4rem; color: var(--cor-primaria-escura); }

.produto__acoes { display: flex; flex-wrap: wrap; gap: .75rem; align-items: stretch; }
.produto__acoes .botao { flex: 1; min-width: 200px; }

.quantidade { display: inline-flex; align-items: center; border: var(--borda); border-radius: calc(var(--raio) * .7); overflow: hidden; }
.quantidade button {
  display: grid; place-items: center; width: 46px; min-height: 52px;
  background: var(--cor-fundo-alt); border: 0; cursor: pointer; color: inherit;
}
.quantidade button:hover { background: color-mix(in srgb, var(--cor-primaria) 12%, transparent); }
.quantidade input {
  width: 52px; min-height: 52px; text-align: center;
  border: 0; border-inline: var(--borda); font: inherit; font-weight: 700;
  background: var(--cor-fundo); color: inherit;
  -moz-appearance: textfield;
}
.quantidade input::-webkit-outer-spin-button, .quantidade input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.produto__entrega { margin-top: 1.5rem; padding: 1.1rem; background: var(--cor-fundo-alt); border-radius: var(--raio); }
.produto__entrega p { margin: 0 0 .5rem; display: flex; align-items: flex-start; gap: .5rem; font-size: .93rem; }
.produto__entrega p:last-child { margin-bottom: 0; }
.produto__entrega .icone { color: var(--cor-primaria); flex: none; margin-top: .1rem; }
.produto__entrega-titulo { font-weight: 700; }
.produto__prazo-producao { margin-top: .75rem !important; padding-top: .75rem; border-top: var(--borda); opacity: .85; }

.frete-form { display: flex; gap: .5rem; margin-bottom: .5rem; }
.frete-form input {
  flex: 1; min-width: 0; min-height: 48px; padding: .7rem .9rem;
  border: var(--borda); border-radius: calc(var(--raio) * .55);
  font: inherit; background: var(--cor-fundo); color: inherit;
}
.frete-form .botao { flex: none; min-height: 48px; }
.frete-resultado:empty { display: none; }
.frete-resultado ul { list-style: none; padding: 0; margin: .5rem 0 0; display: flex; flex-direction: column; gap: .35rem; }
.frete-resultado li {
  display: flex; justify-content: space-between; gap: .75rem; align-items: baseline;
  padding: .55rem .75rem; background: var(--cor-fundo); border-radius: 8px; font-size: .9rem;
}
.frete-resultado strong { white-space: nowrap; }
.frete-resultado small { display: block; opacity: .65; font-size: .78rem; }

.produto__garantias { list-style: none; padding: 0; margin: 1.25rem 0 0; display: grid; gap: .5rem; }
.produto__garantias li { display: flex; align-items: center; gap: .5rem; font-size: .88rem; opacity: .85; }
.produto__garantias .icone { color: var(--cor-primaria); }

.produto__detalhes { display: grid; gap: 2rem; }
@media (min-width: 900px) { .produto__detalhes { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); gap: 3rem; align-items: start; } }
.produto__ficha { background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio); padding: 1.25rem; }
.produto__ficha dl { display: grid; grid-template-columns: auto 1fr; gap: .5rem 1rem; margin: 0; font-size: .9rem; }
.produto__ficha dt { font-weight: 700; opacity: .7; }
.produto__ficha dd { margin: 0; text-align: right; }

/* ------------------------------------------------------------- carrinho */
.carrinho { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 900px) { .carrinho { grid-template-columns: minmax(0, 1fr) 350px; gap: 2rem; } }

.item-carrinho {
  display: grid; gap: .5rem 1rem; align-items: center;
  grid-template-columns: 84px 1fr auto;
  grid-template-areas: "foto info remover" "foto qtd total";
  padding: 1rem 0; border-bottom: var(--borda);
}
.item-carrinho__foto { grid-area: foto; }
.item-carrinho__foto img { width: 84px; height: 84px; object-fit: cover; border-radius: 10px; background: var(--cor-fundo-alt); }
.item-carrinho__info { grid-area: info; display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.item-carrinho__nome { color: inherit; font-weight: 600; font-size: .95rem; line-height: 1.3; }
.item-carrinho__tipo { display: inline-flex; align-items: center; gap: .3rem; font-size: .75rem; opacity: .65; }
.item-carrinho__pers { list-style: none; padding: 0; margin: .25rem 0 0; font-size: .78rem; opacity: .8; }
.item-carrinho__unitario { font-size: .8rem; opacity: .7; }
.item-carrinho__qtd { grid-area: qtd; }
.item-carrinho__qtd input {
  width: 76px; min-height: 44px; text-align: center; font: inherit;
  border: var(--borda); border-radius: 8px; background: var(--cor-fundo); color: inherit;
}
.item-carrinho__total { grid-area: total; text-align: right; font-size: 1.05rem; }
.item-carrinho__remover {
  grid-area: remover; justify-self: end;
  display: grid; place-items: center; width: 44px; height: 44px;
  background: none; border: 0; color: inherit; opacity: .5; cursor: pointer; border-radius: 8px;
}
.item-carrinho__remover:hover { opacity: 1; color: #d92d20; background: rgba(217, 45, 32, .08); }

.carrinho__acoes { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; align-items: center; padding-top: 1.25rem; }

.carrinho__resumo, .checkout__resumo .caixa {
  background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio);
  padding: 1.25rem; box-shadow: var(--sombra-suave);
}
@media (min-width: 900px) {
  .carrinho__resumo, .caixa--sticky { position: sticky; top: calc(var(--topo-real, var(--topo-altura)) + 1rem); }
}
.resumo__linhas { margin: 1rem 0; display: flex; flex-direction: column; gap: .5rem; }
.resumo__linhas > div { display: flex; justify-content: space-between; gap: 1rem; font-size: .92rem; }
.resumo__linhas dt { opacity: .75; }
.resumo__linhas dd { margin: 0; font-weight: 600; }
.resumo__total {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding-top: .9rem; margin-bottom: .35rem; border-top: var(--borda);
}
.resumo__total strong { font-family: var(--fonte-titulo); font-size: 1.5rem; font-weight: 800; }
.resumo__parcela { font-size: .85rem; opacity: .72; margin-bottom: 1rem; }
.resumo__selos { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: .4rem; font-size: .8rem; opacity: .8; }
.resumo__selos li { display: flex; align-items: center; gap: .45rem; }
.resumo__selos .icone { color: var(--cor-primaria); }
.resumo__gratis {
  display: flex; align-items: center; gap: .5rem; font-size: .85rem;
  padding: .65rem .8rem; border-radius: 8px; margin-bottom: 1rem;
  background: color-mix(in srgb, var(--cor-primaria) 10%, transparent);
}
.resumo__gratis--ok { background: #e7f6ec; color: #145c2e; }

.resumo__itens { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; flex-direction: column; gap: .75rem; max-height: 320px; overflow-y: auto; }
.resumo__itens li { display: grid; grid-template-columns: 48px 1fr auto; gap: .6rem; align-items: center; font-size: .85rem; }
.resumo__itens img { border-radius: 8px; object-fit: cover; background: var(--cor-fundo-alt); }
.resumo__itens span { display: flex; flex-direction: column; min-width: 0; }
.resumo__itens strong { font-weight: 600; font-size: .85rem; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.resumo__itens small { opacity: .7; font-size: .76rem; }
.resumo__pers { font-style: italic; }

/* ------------------------------------------------------------- checkout */
.checkout { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 960px) { .checkout { grid-template-columns: minmax(0, 1fr) 360px; gap: 2rem; } }

.opcoes-lista { display: flex; flex-direction: column; gap: .6rem; margin-bottom: 1rem; }
.opcao { display: flex; align-items: flex-start; gap: .75rem; padding: .9rem 1rem; border: var(--borda); border-radius: calc(var(--raio) * .7); cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.opcao:hover { border-color: color-mix(in srgb, var(--cor-primaria) 50%, transparent); }
.opcao input { margin-top: .2rem; width: 20px; height: 20px; accent-color: var(--cor-primaria); flex: none; }
.opcao:has(input:checked) { border-color: var(--cor-primaria); background: color-mix(in srgb, var(--cor-primaria) 6%, transparent); }
.opcao__corpo { display: flex; flex-direction: column; gap: .15rem; min-width: 0; flex: 1; }
.opcao__corpo strong { display: flex; align-items: center; gap: .45rem; font-size: .95rem; }
.opcao__corpo small { opacity: .72; font-size: .84rem; }
.opcao__valor { font-weight: 700; white-space: nowrap; }

.novo-endereco { border: var(--borda); border-radius: calc(var(--raio) * .7); padding: .85rem 1rem; margin-bottom: 1rem; }
.novo-endereco summary { display: flex; align-items: center; gap: .4rem; cursor: pointer; font-weight: 600; font-size: .92rem; list-style: none; }
.novo-endereco summary::-webkit-details-marker { display: none; }
.novo-endereco__campos, .novo-endereco form { padding-top: 1rem; }

.frete-checkout { margin-top: 1.25rem; padding-top: 1.25rem; border-top: var(--borda); }
.frete-checkout h3 { display: flex; align-items: center; gap: .45rem; font-size: 1rem; margin-bottom: .75rem; }
.frete-checkout .icone { color: var(--cor-primaria); }

.cartao-campos { margin-top: 1rem; padding-top: 1rem; border-top: var(--borda); }
.form__linha { display: grid; gap: 1rem; grid-template-columns: 1fr; }
@media (min-width: 600px) {
  .form__linha { grid-template-columns: 1fr 1fr; }
  .form__linha--3 { grid-template-columns: repeat(3, 1fr); }
  .form__campo--2 { grid-column: span 2; }
}
.form__nota { display: flex; align-items: flex-start; gap: .4rem; font-size: .8rem; opacity: .72; margin: .75rem 0 0; }
.form__nota .icone { flex: none; margin-top: .15rem; }
.form .checkbox { display: flex; align-items: flex-start; gap: .6rem; margin-bottom: 1rem; font-size: .9rem; cursor: pointer; }
.form .checkbox input { width: 20px; height: 20px; flex: none; accent-color: var(--cor-primaria); margin-top: .1rem; }
.form input[type=password], .form input[type=number], .form input[type=search], .form input[type=file] {
  width: 100%; padding: .8rem 1rem; font: inherit; color: inherit;
  background: var(--cor-fundo); border: 1px solid rgba(0, 0, 0, .18);
  border-radius: calc(var(--raio) * .55); min-height: 48px;
}
.form input:disabled { background: var(--cor-fundo-alt); opacity: .7; }
.ajuda { display: block; font-size: .8rem; opacity: .7; margin-top: .3rem; }

/* --------------------------------------------------------------- pedido */
.pedido__cabecalho { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.pedido__rotulo { text-transform: uppercase; letter-spacing: .1em; font-size: .72rem; font-weight: 700; opacity: .6; }
.pedido__cabecalho h1 { font-size: clamp(1.7rem, 1.3rem + 1.5vw, 2.3rem); margin: 0; }
.pedido__data { margin: .2rem 0 0; font-size: .88rem; opacity: .7; }

.etiqueta { display: inline-flex; align-items: center; padding: .35rem .8rem; border-radius: 999px; font-size: .8rem; font-weight: 700; font-style: normal; }
.etiqueta--ok { background: #e7f6ec; color: #145c2e; }
.etiqueta--espera { background: #fff4e0; color: #7a4b06; }
.etiqueta--info { background: #e6f1fb; color: #10406b; }
.etiqueta--erro { background: #fdecec; color: #8c1c1c; }

.linha-tempo { list-style: none; display: flex; padding: 0; margin: 0 0 1.75rem; overflow-x: auto; gap: .25rem; }
.linha-tempo__item { flex: 1; min-width: 88px; text-align: center; position: relative; opacity: .45; }
.linha-tempo__item.feito { opacity: 1; }
.linha-tempo__item::before {
  content: ""; position: absolute; top: 18px; left: -50%; width: 100%; height: 2px;
  background: rgba(16, 24, 40, .15);
}
.linha-tempo__item:first-child::before { display: none; }
.linha-tempo__item.feito::before { background: var(--cor-primaria); }
.linha-tempo__ponto {
  position: relative; display: grid; place-items: center;
  width: 38px; height: 38px; margin: 0 auto .4rem;
  border-radius: 999px; background: var(--cor-fundo-alt); color: inherit;
  border: 2px solid rgba(16, 24, 40, .12);
}
.linha-tempo__item.feito .linha-tempo__ponto { background: var(--cor-primaria); border-color: var(--cor-primaria); color: #fff; }
.linha-tempo__item.atual .linha-tempo__ponto { box-shadow: 0 0 0 5px color-mix(in srgb, var(--cor-primaria) 18%, transparent); }
.linha-tempo__rotulo { font-size: .74rem; font-weight: 600; }

.pix-qr { display: block; margin: 1rem auto; border-radius: 12px; border: var(--borda); padding: .5rem; background: #fff; }
.pix-codigo { display: flex; gap: .5rem; margin: 1rem 0; }
.pix-codigo input {
  flex: 1; min-width: 0; min-height: 48px; padding: .7rem .9rem;
  font-family: ui-monospace, monospace; font-size: .8rem;
  border: var(--borda); border-radius: calc(var(--raio) * .55); background: var(--cor-fundo-alt); color: inherit;
}
.pedido__conferir { margin-top: 1rem; }
.rastreio { font-family: ui-monospace, monospace; background: var(--cor-fundo-alt); padding: .2em .5em; border-radius: 6px; }

.pedido__itens { list-style: none; padding: 0; margin: 0 0 1rem; }
.pedido__itens li { display: grid; grid-template-columns: auto 1fr auto; gap: .75rem; padding: .7rem 0; border-bottom: var(--borda); align-items: start; }
.pedido__item-qtd { font-weight: 700; opacity: .6; }
.pedido__item-nome { display: flex; flex-direction: column; gap: .1rem; font-size: .93rem; }
.pedido__item-nome small { display: flex; align-items: center; gap: .3rem; font-size: .76rem; opacity: .65; }
.pedido__item-pers { font-style: italic; }
.pedido__item-valor { font-weight: 700; white-space: nowrap; }

.lista-downloads { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .6rem; }
.lista-downloads li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: .8rem 1rem; background: var(--cor-fundo-alt); border-radius: 10px; }
.lista-downloads li > span { display: flex; flex-direction: column; gap: .1rem; font-weight: 600; font-size: .92rem; }
.lista-downloads small { font-weight: 400; opacity: .7; font-size: .78rem; }

.lista-solicitacoes { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; flex-direction: column; gap: .6rem; }
.lista-solicitacoes li { padding: .8rem 1rem; background: var(--cor-fundo-alt); border-radius: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.lista-solicitacoes__resposta { flex-basis: 100%; margin: .35rem 0 0; font-size: .9rem; }

/* ----------------------------------------------------------- minha conta */
.conta { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 900px) { .conta { grid-template-columns: 230px minmax(0, 1fr); gap: 2rem; } }
.conta__menu { display: flex; gap: .3rem; overflow-x: auto; padding-bottom: .35rem; }
@media (min-width: 900px) {
  .conta__menu { flex-direction: column; position: sticky; top: calc(var(--topo-real, var(--topo-altura)) + 1rem); overflow: visible; }
}
.conta__menu a {
  display: flex; align-items: center; gap: .5rem; white-space: nowrap;
  padding: .7rem .9rem; border-radius: 10px; color: inherit; font-weight: 600; font-size: .92rem;
}
.conta__menu a:hover { background: var(--cor-fundo-alt); text-decoration: none; }
.conta__menu a.ativo { background: var(--cor-primaria); color: #fff; }

/* ==========================================================================
   TELAS DE ACESSO (entrar, cadastrar, recuperar e nova senha)
   Formulário à esquerda com peso visual, motivo para criar conta à direita.
   ========================================================================== */
.acesso {
  display: grid; gap: 1.25rem; align-items: start;
  max-width: 1020px; margin-inline: auto;
}
@media (min-width: 900px) {
  .acesso { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: 1.75rem; }
  .acesso--sozinho { grid-template-columns: minmax(0, 1fr); max-width: 520px; }
}

.acesso__principal, .acesso__lateral {
  background: var(--cor-fundo);
  border: var(--borda);
  border-radius: var(--raio);
  padding: clamp(1.5rem, 4vw, 2.5rem);
}
.acesso__principal { box-shadow: var(--sombra-media); }
.acesso__lateral { background: transparent; border-style: dashed; }

.acesso__marca { margin-bottom: 1.1rem; }
.acesso__badge {
  display: grid; place-items: center; width: 52px; height: 52px;
  border-radius: 16px; color: var(--cor-primaria-escura);
  background: rgba(10, 114, 184, .1);
  background: color-mix(in srgb, var(--cor-primaria) 10%, transparent);
}

/* Tamanho próprio: o h1 global chega a 3,4rem e engoliria o cartão. */
.acesso__titulo {
  font-size: clamp(1.45rem, 1.25rem + .9vw, 1.85rem);
  line-height: 1.2; margin-bottom: .35rem;
}
.acesso__sub { margin: 0 0 1.5rem; opacity: .75; font-size: .95rem; }

.acesso__form { margin-bottom: 1.25rem; }
.acesso__form .form__campo { margin-bottom: 1.1rem; }
.acesso__form .botao--grande { margin-top: .35rem; }

.acesso__seguro {
  display: flex; align-items: flex-start; gap: .45rem;
  margin: 0; padding-top: 1rem; border-top: var(--borda);
  font-size: .82rem; opacity: .7;
}
.acesso__seguro .icone { flex: none; margin-top: .15rem; color: var(--cor-primaria); }

.acesso__troca { margin: .5rem 0 0; text-align: center; font-size: .95rem; }
/* Links soltos (não os que estão no meio de um parágrafo) ganham área de
   toque, porque no celular são ações principais e não texto corrido. */
.acesso__troca a,
.form__rotulo-link {
  display: inline-flex; align-items: center;
  min-height: 44px; padding: 0 .35rem;
  font-weight: 700;
}
.form__rotulo-link { font-weight: 600; }

.acesso__lateral h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.15rem; margin-bottom: .6rem; }
.acesso__lateral h2 .icone { color: var(--cor-primaria); }
.acesso__lateral > p { font-size: .93rem; opacity: .8; }

.acesso__lista { list-style: none; padding: 0; margin: 1.25rem 0; display: grid; gap: .9rem; }
.acesso__lista li { display: flex; align-items: flex-start; gap: .7rem; }
.acesso__lista span span { display: block; }
.acesso__lista strong { display: block; font-size: .93rem; }
.acesso__lista small { display: block; font-size: .82rem; opacity: .7; line-height: 1.4; }
.acesso__check {
  display: grid; place-items: center; flex: none; width: 34px; height: 34px;
  border-radius: 10px; color: var(--cor-primaria-escura);
  background: rgba(10, 114, 184, .1);
  background: color-mix(in srgb, var(--cor-primaria) 10%, transparent);
}

.acesso__nota { margin: .85rem 0 0; font-size: .8rem; opacity: .65; text-align: center; }
.acesso__selos { display: grid; gap: .4rem; margin-top: 1.25rem; padding-top: 1rem; border-top: var(--borda); font-size: .84rem; opacity: .8; }
.acesso__selos span { display: flex; align-items: center; gap: .45rem; }
.acesso__selos .icone { color: var(--cor-primaria); }

/* --------------------------------------------------- rótulo com link ao lado */
.form__rotulo { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.form__rotulo label { margin-bottom: .35rem; }
.form__rotulo-link { font-size: .84rem; font-weight: 600; white-space: nowrap; }

/* ------------------------------------------------------- campo de senha */
.campo-senha { position: relative; display: flex; }
.campo-senha input { width: 100%; }
.campo-senha--com-botao input { padding-right: 3.25rem; }
.campo-senha__olho {
  position: absolute; top: 50%; right: 6px; transform: translateY(-50%);
  display: grid; place-items: center; width: 40px; height: 40px;
  background: none; border: 0; border-radius: 8px; cursor: pointer;
  color: var(--cor-texto); opacity: .55;
}
.campo-senha__olho:hover { opacity: 1; background: var(--cor-fundo-alt); }
.campo-senha__olho[aria-pressed="true"] { opacity: 1; color: var(--cor-primaria-escura); }

/* O preenchimento automático do navegador pinta o campo de azul e quebra a
   aparência do formulário. Isto devolve o fundo e a cor do texto. */
.form input:-webkit-autofill,
.form input:-webkit-autofill:hover,
.form input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--cor-texto);
  -webkit-box-shadow: 0 0 0 40px var(--cor-fundo) inset;
  box-shadow: 0 0 0 40px var(--cor-fundo) inset;
  caret-color: var(--cor-texto);
}

.conta-acesso { display: grid; gap: 1.5rem; }
@media (min-width: 860px) { .conta-acesso { grid-template-columns: 1fr 1fr; align-items: start; max-width: 940px; margin-inline: auto; } }
.conta-acesso .caixa--form { max-width: none; }

.lista-pedidos, .lista-enderecos { list-style: none; padding: 0; margin: 0; }
.lista-pedidos li { border-bottom: var(--borda); }
.lista-pedidos a {
  display: grid; grid-template-columns: auto 1fr auto; gap: .5rem 1rem;
  align-items: center; padding: .9rem .25rem; color: inherit;
}
.lista-pedidos a:hover { text-decoration: none; background: var(--cor-fundo-alt); }
.lista-pedidos__num { font-weight: 800; }
.lista-pedidos__data { font-size: .82rem; opacity: .65; }
.lista-pedidos__total { font-weight: 700; }
@media (max-width: 600px) {
  .lista-pedidos a { grid-template-columns: auto 1fr; }
  .lista-pedidos a > .icone { display: none; }
}
.lista-enderecos li { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding: .9rem 0; border-bottom: var(--borda); }
.lista-enderecos p { margin: .25rem 0 0; font-size: .88rem; opacity: .8; }

/* ------------------------------------------------------------ orçamento */
.orcamento { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 900px) { .orcamento { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 3rem; } }
.orcamento__form { background: var(--cor-fundo); border: var(--borda); border-radius: var(--raio); padding: clamp(1.1rem, 3vw, 1.75rem); box-shadow: var(--sombra-suave); }
.fundo-escuro .orcamento__form, .fundo-primaria .orcamento__form, .fundo-imagem .orcamento__form { color: var(--cor-texto); }
.fundo-escuro .orcamento__form a, .fundo-primaria .orcamento__form a { color: var(--cor-primaria); }

/* ==========================================================================
   COMPONENTES DENTRO DE SEÇÕES ESCURAS
   Seção escura pinta o texto de branco. Cartões que trazem fundo claro próprio
   herdavam esse branco e ficavam com texto branco sobre fundo branco e some
   tudo. Duas saídas, aplicadas por tipo de componente:

     1) Cartões só de conteúdo viram "vidro" (fundo translúcido) e mantêm o
        texto branco. É o mesmo tratamento que o .card já tinha.
     2) Cartões com formulário ou tabela mantêm o fundo claro e recuperam a
        cor normal do texto, porque campo de formulário precisa de fundo claro.

   Os seletores estão escritos por extenso de propósito: com :is(), um navegador
   antigo que não entendesse a função descartaria a regra inteira e traria o
   problema de volta.
   ========================================================================== */

/* 1) vidro ---------------------------------------------------------------- */
.fundo-escuro .passo,
.fundo-primaria .passo,
.fundo-imagem .passo,
.fundo-escuro .produto-card,
.fundo-primaria .produto-card,
.fundo-imagem .produto-card,
.fundo-escuro .categoria,
.fundo-primaria .categoria,
.fundo-imagem .categoria,
.fundo-escuro .faq__item,
.fundo-primaria .faq__item,
.fundo-imagem .faq__item,
.fundo-escuro .depoimento,
.fundo-primaria .depoimento,
.fundo-imagem .depoimento,
.fundo-escuro .plano,
.fundo-primaria .plano,
.fundo-imagem .plano {
  background: rgba(255, 255, 255, .07);
  border-color: rgba(255, 255, 255, .18);
  color: #fff;
}

/* Ícones em azul escuro somem no preto: dentro da seção escura eles usam o
   ciano da marca, que tem contraste de sobra sobre #121212. */
.fundo-escuro .passo__icone,
.fundo-primaria .passo__icone,
.fundo-imagem .passo__icone,
.fundo-escuro .categoria__icone,
.fundo-primaria .categoria__icone,
.fundo-imagem .categoria__icone,
.fundo-escuro .lista-check .icone,
.fundo-primaria .lista-check .icone,
.fundo-imagem .lista-check .icone,
.fundo-escuro .card__icone,
.fundo-primaria .card__icone,
.fundo-imagem .card__icone,
.fundo-escuro .secao__cabecalho .icone,
.fundo-primaria .secao__cabecalho .icone {
  color: var(--cor-acento);
}
.fundo-escuro .categoria__icone,
.fundo-primaria .categoria__icone,
.fundo-imagem .categoria__icone,
.fundo-escuro .card__icone,
.fundo-primaria .card__icone {
  background: rgba(255, 255, 255, .1);
}

/* Detalhes que ficariam escuros demais sobre o vidro. */
.fundo-escuro .categoria__desc,
.fundo-primaria .categoria__desc,
.fundo-imagem .categoria__desc,
.fundo-escuro .produto-card__cat,
.fundo-primaria .produto-card__cat,
.fundo-imagem .produto-card__cat,
.fundo-escuro .produto-card__parcela,
.fundo-primaria .produto-card__parcela,
.fundo-imagem .produto-card__parcela,
.fundo-escuro .passo p,
.fundo-primaria .passo p,
.fundo-imagem .passo p {
  color: rgba(255, 255, 255, .78);
  opacity: 1;
}
.fundo-escuro .produto-card__foto,
.fundo-primaria .produto-card__foto,
.fundo-imagem .produto-card__foto { background: rgba(255, 255, 255, .06); }

.fundo-escuro .faq__item summary,
.fundo-primaria .faq__item summary,
.fundo-imagem .faq__item summary { color: #fff; }
.fundo-escuro .faq__item summary::after,
.fundo-primaria .faq__item summary::after { color: var(--cor-acento); }

/* O nome do produto é um link; a seção escura sublinharia todos os links. */
.fundo-escuro .produto-card__link,
.fundo-primaria .produto-card__link,
.fundo-imagem .produto-card__link,
.fundo-escuro .categoria,
.fundo-primaria .categoria,
.fundo-imagem .categoria { color: #fff; text-decoration: none; }

/* 2) fundo claro mantido, texto de volta ao normal ------------------------ */
.fundo-escuro .caixa,
.fundo-primaria .caixa,
.fundo-imagem .caixa,
.fundo-escuro .produto__ficha,
.fundo-primaria .produto__ficha,
.fundo-imagem .produto__ficha {
  color: var(--cor-texto);
}
.fundo-escuro .caixa a:not(.botao),
.fundo-primaria .caixa a:not(.botao) { color: var(--cor-primaria); }

/* --------------------------------------------------------------- rodapé */
.rodape__inner { grid-template-columns: 1fr; }
@media (min-width: 700px) { .rodape__inner { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .rodape__inner { grid-template-columns: 1.5fr 1fr 1fr 1.2fr; } }
.rodape__col--marca p { font-size: .9rem; opacity: .8; }
.rodape .redes a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: rgba(255, 255, 255, .08); }
.rodape .redes a:hover { background: var(--cor-primaria); color: #fff; }
.rodape .lista-contato li { gap: .55rem; font-size: .9rem; }
.rodape .lista-contato .icone { flex: none; margin-top: .2rem; opacity: .7; }

.rodape__selos {
  display: grid; gap: 1.25rem; padding-top: 1.5rem; padding-bottom: 1.5rem;
  border-top: 1px solid rgba(255, 255, 255, .12);
}
@media (min-width: 760px) { .rodape__selos { grid-template-columns: 1fr 1fr; } }
.selos-grupo__titulo { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; opacity: .55; margin-bottom: .6rem; }
.selos-grupo ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .5rem .9rem; }
.selos-grupo li { display: flex; align-items: center; gap: .4rem; font-size: .84rem; opacity: .9; }
.selos-grupo .icone { color: var(--cor-acento); }

/* ------------------------------------------------------------ impressão */
@media print {
  .topo, .rodape, .zap, .barra-aviso, .pedido__conferir, .novo-endereco { display: none !important; }
  .caixa { break-inside: avoid; box-shadow: none; }
}
