/* =============================================================
   Formação Literária — estilos
   Paleta "papel e tinta": fundo creme, texto grafite, acento
   terracota. Tema escuro incluído (botão ◐ no cabeçalho).
   ============================================================= */

/* ---------- Variáveis de cor ---------- */
:root {
  --fundo:        #faf7f2;
  --fundo-2:      #ffffff;
  --fundo-3:      #f2ede4;
  --borda:        #e3dcd0;
  --texto:        #23201c;
  --texto-2:      #6b6357;
  --acento:       #a8412a;
  --acento-texto: #ffffff;
  --acento-suave: #f6e8e3;
  --sombra:       0 1px 2px rgba(35,32,28,.05), 0 8px 24px rgba(35,32,28,.06);
  --sombra-alta:  0 2px 4px rgba(35,32,28,.06), 0 16px 40px rgba(35,32,28,.12);
  --raio:         14px;
  --serif:        Georgia, 'Iowan Old Style', 'Times New Roman', serif;
  --sans:         system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}

[data-tema="escuro"] {
  --fundo:        #171513;
  --fundo-2:      #201d1a;
  --fundo-3:      #2a2622;
  --borda:        #37322c;
  --texto:        #f0ebe3;
  --texto-2:      #a89f92;
  --acento:       #e5825f;
  --acento-texto: #201d1a;   /* contraste no tema escuro */
  --acento-suave: #33231d;
  --sombra:       0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.25);
  --sombra-alta:  0 2px 4px rgba(0,0,0,.35), 0 16px 40px rgba(0,0,0,.45);
}

/* ---------- Base ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--sans);
  background: var(--fundo);
  color: var(--texto);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  transition: background .25s ease, color .25s ease;
}

img { display: block; max-width: 100%; }

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

.container {
  width: min(1140px, 100% - 2.5rem);
  margin-inline: auto;
}

/* Esconde visualmente, mas mantém para leitores de tela */
.oculto {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* ---------- Botões ---------- */
.botao {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .7rem 1.15rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font: inherit; font-size: .9rem; font-weight: 600;
  cursor: pointer;
  transition: transform .15s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.botao:active { transform: translateY(1px); }

.botao--principal {
  background: var(--acento);
  color: var(--acento-texto);
  width: 100%;
}
.botao--principal:hover { filter: brightness(1.07); box-shadow: var(--sombra); }

.botao--fantasma {
  background: transparent;
  border-color: var(--borda);
  color: var(--texto);
}
.botao--fantasma:hover { background: var(--fundo-3); border-color: var(--texto-2); }

/* ---------- Cabeçalho ---------- */
.cabecalho {
  position: sticky; top: 0; z-index: 20;
  background: color-mix(in srgb, var(--fundo) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--borda);
}
.cabecalho__interno {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; padding: .85rem 0;
}
.marca { display: flex; align-items: center; gap: .65rem; }
.marca__icone { font-size: 1.5rem; }
.marca__texto { display: flex; flex-direction: column; line-height: 1.15; }
.marca__texto strong { font-family: var(--serif); font-size: 1.1rem; letter-spacing: -.01em; }
.marca__texto small { font-size: .74rem; color: var(--texto-2); }

.cabecalho__acoes { display: flex; align-items: center; gap: .6rem; }

.tema {
  display: grid; place-items: center;
  width: 40px; height: 40px;
  background: transparent;
  border: 1px solid var(--borda);
  border-radius: 50%;
  color: var(--texto);
  font-size: 1.05rem;
  cursor: pointer;
  transition: background .2s ease, transform .3s ease;
}
.tema:hover { background: var(--fundo-3); }
[data-tema="escuro"] .tema__icone { display: inline-block; transform: rotate(180deg); }

/* ---------- Hero ---------- */
.hero { padding: clamp(3rem, 8vw, 5.5rem) 0 clamp(2rem, 4vw, 3rem); }
.hero__olho {
  font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--acento); margin-bottom: .9rem;
}
.hero__titulo {
  font-family: var(--serif);
  font-size: clamp(2rem, 5.5vw, 3.4rem);
  font-weight: 400; line-height: 1.12; letter-spacing: -.02em;
  margin-bottom: 1.1rem;
}
.hero__texto {
  max-width: 52ch; font-size: 1.05rem; color: var(--texto-2);
}
.hero__aviso {
  margin-top: 1.5rem; padding: .7rem 1rem;
  display: inline-block;
  background: var(--acento-suave);
  border-radius: 10px;
  font-size: .82rem; color: var(--texto-2);
}

/* ---------- Seções ---------- */
/* scroll-margin: o cabeçalho é fixo, sem isso o título fica escondido
   atrás dele quando se chega pelos atalhos */
.secao { padding: clamp(2rem, 5vw, 3.5rem) 0; scroll-margin-top: 4.75rem; }
.secao__titulo {
  display: flex; align-items: center; gap: .75rem;
  font-family: var(--serif); font-size: 1.4rem; font-weight: 400;
  margin-bottom: 1.6rem;
}
.secao__linha { flex: 1; height: 1px; background: var(--borda); margin-left: .35rem; }

/* Quantidade de livros da seção, ao lado do título */
.secao__conta {
  flex: 0 0 auto;
  padding: .05rem .5rem;
  border: 1px solid var(--borda);
  border-radius: 999px;
  font-family: var(--sans); font-size: .72rem; font-weight: 700;
  color: var(--texto-2);
}

/* Linha de apresentação da seção */
.secao__titulo:has(+ .secao__texto) { margin-bottom: .55rem; }
.secao__texto {
  max-width: 64ch; margin-bottom: 1.6rem;
  font-size: .92rem; color: var(--texto-2);
}

/* Botão que abre o resto dos livros da seção */
.secao__mais { display: flex; margin: 1.5rem auto 0; }

/* ---------- Atalhos para as seções ---------- */
.atalhos {
  display: flex; flex-wrap: wrap; gap: .5rem;
  padding-bottom: .5rem;
}
.atalho {
  padding: .45rem 1rem;
  background: var(--fundo-2);
  border: 1px solid var(--borda);
  border-radius: 999px;
  font-size: .84rem; font-weight: 500;
  color: var(--texto-2);
  transition: border-color .18s ease, color .18s ease, transform .18s ease;
}
.atalho:hover {
  border-color: var(--acento); color: var(--texto); transform: translateY(-1px);
}
.atalho--todos { background: transparent; border-style: dashed; }

/* ---------- Controles (busca + ordenação) ---------- */
.controles {
  display: flex; flex-wrap: wrap; gap: .75rem;
  margin-bottom: 1rem;
}
.campo-busca { position: relative; flex: 1 1 260px; }
.campo-busca__icone {
  position: absolute; left: .95rem; top: 50%; transform: translateY(-50%);
  color: var(--texto-2); font-size: 1.1rem; pointer-events: none;
}
.campo-busca input,
.campo-ordem select {
  width: 100%;
  padding: .75rem 1rem;
  background: var(--fundo-2);
  border: 1px solid var(--borda);
  border-radius: 10px;
  font: inherit; font-size: .92rem;
  color: var(--texto);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.campo-busca input { padding-left: 2.6rem; }
.campo-busca input::placeholder { color: var(--texto-2); }
.campo-busca input:focus,
.campo-ordem select:focus {
  outline: none;
  border-color: var(--acento);
  box-shadow: 0 0 0 3px var(--acento-suave);
}
.campo-ordem { flex: 0 1 220px; }
.campo-ordem select { cursor: pointer; }

/* ---------- Filtros de categoria ---------- */
.filtros { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: 1.25rem; }
.filtro {
  padding: .42rem .95rem;
  background: transparent;
  border: 1px solid var(--borda);
  border-radius: 999px;
  font: inherit; font-size: .84rem; font-weight: 500;
  color: var(--texto-2);
  cursor: pointer;
  transition: all .18s ease;
}
.filtro:hover { border-color: var(--texto-2); color: var(--texto); }
.filtro[aria-pressed="true"] {
  background: var(--acento); border-color: var(--acento); color: var(--acento-texto);
}

.contador { font-size: .84rem; color: var(--texto-2); margin-bottom: 1.25rem; }

/* ---------- Grade de cards ---------- */
.grade {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 1.35rem;
}

/* ---------- Card do livro ---------- */
.card {
  display: flex; flex-direction: column;
  background: var(--fundo-2);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  overflow: hidden;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sombra-alta);
  border-color: color-mix(in srgb, var(--acento) 35%, var(--borda));
}

.card__capa {
  position: relative;
  aspect-ratio: 2 / 3;
  background: var(--fundo-3);
  overflow: hidden;
}
.card__capa img { width: 100%; height: 100%; object-fit: cover; }

/* Capa gerada automaticamente quando não há imagem */
.capa-gerada {
  width: 100%; height: 100%;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: 1.4rem 1.2rem;
  color: #fff;
  text-align: left;
}
/* Quando o card tem selo "Recomendado", o titulo desce para nao colidir */
.capa-gerada--com-selo { padding-top: 3.4rem; }

.capa-gerada__titulo {
  font-family: var(--serif); font-size: 1.05rem; line-height: 1.25;
  text-shadow: 0 1px 3px rgba(0,0,0,.25);
}
.capa-gerada__autor {
  font-size: .72rem; letter-spacing: .06em; text-transform: uppercase;
  opacity: .85;
}

.card__selo {
  position: absolute; top: .7rem; left: .7rem;
  padding: .25rem .6rem;
  background: rgba(0,0,0,.62);
  backdrop-filter: blur(4px);
  border-radius: 999px;
  color: #fff; font-size: .68rem; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase;
}

.card__corpo {
  display: flex; flex-direction: column; flex: 1;
  gap: .5rem; padding: 1.1rem;
}
.card__categoria {
  font-size: .7rem; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; color: var(--acento);
}
.card__titulo {
  font-family: var(--serif); font-size: 1.05rem; font-weight: 400;
  line-height: 1.3; letter-spacing: -.01em;
}
.card__autor { font-size: .85rem; color: var(--texto-2); }
.card__resenha {
  font-size: .85rem; color: var(--texto-2); line-height: 1.55;
  flex: 1;
}
.card__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .8rem;
  padding-top: .3rem;
  font-size: .78rem; color: var(--texto-2);
}
.card__nota { color: var(--texto); font-weight: 600; }
.card__preco {
  font-family: var(--serif); font-size: 1.15rem; color: var(--texto);
}
.card__rodape { margin-top: .35rem; }

/* ---------- Estado vazio ---------- */
.vazio { text-align: center; padding: 3.5rem 1rem; }
.vazio__icone { font-size: 2rem; display: block; margin-bottom: .8rem; opacity: .6; }
.vazio__titulo { font-family: var(--serif); font-size: 1.2rem; margin-bottom: .3rem; }
.vazio__texto { color: var(--texto-2); font-size: .9rem; margin-bottom: 1.2rem; }

/* ---------- Bloco "em breve" ---------- */
.embreve {
  padding: clamp(2rem, 5vw, 3rem);
  background: var(--fundo-3);
  border: 1px dashed var(--borda);
  border-radius: var(--raio);
  text-align: center;
}
.embreve__selo {
  display: inline-block; margin-bottom: .8rem;
  padding: .25rem .75rem;
  background: var(--acento); border-radius: 999px;
  color: var(--acento-texto); font-size: .68rem; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase;
}
.embreve__titulo { font-family: var(--serif); font-size: 1.6rem; font-weight: 400; margin-bottom: .5rem; }
.embreve__texto { color: var(--texto-2); max-width: 46ch; margin-inline: auto; font-size: .95rem; }

/* ---------- Rodapé ---------- */
.rodape {
  margin-top: 2rem;
  padding: 2.5rem 0;
  border-top: 1px solid var(--borda);
  background: var(--fundo-2);
}
.rodape__interno { text-align: center; display: grid; gap: .7rem; }
.rodape__marca { font-family: var(--serif); font-size: 1.05rem; }
.rodape__aviso {
  font-size: .78rem; color: var(--texto-2);
  max-width: 60ch; margin-inline: auto; line-height: 1.6;
}
.rodape__creditos { font-size: .78rem; color: var(--texto-2); }

/* ---------- Responsivo ---------- */

/* Tablet: sem esta regra caberiam so 2 cards por linha, ficando enormes */
@media (min-width: 641px) and (max-width: 900px) {
  .grade { grid-template-columns: repeat(auto-fill, minmax(195px, 1fr)); }
}

@media (max-width: 640px) {
  .grade { grid-template-columns: repeat(auto-fill, minmax(155px, 1fr)); gap: 1rem; }
  .card__corpo { padding: .85rem; gap: .4rem; }
  .card__resenha { display: none; }        /* card mais enxuto no celular */
  .card__titulo { font-size: .95rem; }
  .campo-ordem { flex: 1 1 100%; }
  .cabecalho__acoes .botao { display: none; }

  /* Atalhos: uma linha só, rolando de lado até a borda da tela */
  .atalhos {
    flex-wrap: nowrap; overflow-x: auto;
    scrollbar-width: none;
    margin-inline: -1.25rem; padding-inline: 1.25rem;
  }
  .atalhos::-webkit-scrollbar { display: none; }
  .atalho { flex: 0 0 auto; }

  .secao__texto { font-size: .88rem; }
}

/* ---------- Acessibilidade ---------- */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}

:focus-visible { outline: 2px solid var(--acento); outline-offset: 3px; }
