/* ==========================================================================
   Bilbao — Base: fontes, reset, tipografia global, utilitários de layout
   ========================================================================== */

/* --- Fontes self-hosted ---
   Coloque os arquivos .woff2 em assets/fonts/.
   Montserrat: OFL (livre). Contralto Small: fonte comercial (fornecida pelo cliente). */

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/Montserrat-Regular.woff2") format("woff2");
}
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/Montserrat-Medium.woff2") format("woff2");
}
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/Montserrat-SemiBold.woff2") format("woff2");
}
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/Montserrat-Bold.woff2") format("woff2");
}
@font-face {
  font-family: "Contralto Small";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/ContraltoSmall-DemiBold.woff2") format("woff2");
}

/* --- Reset enxuto --- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html { -webkit-text-size-adjust: 100%; }

body {
  font: var(--t-body-md);
  color: var(--c-text);
  background: var(--c-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img, picture, svg, video { display: block; max-width: 100%; }

a { color: inherit; text-decoration: none; transition: color var(--ease), opacity var(--ease); }
a:hover { opacity: 0.7; }

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  cursor: pointer;
}

input, textarea, select { font: inherit; color: inherit; }

ul, ol { list-style: none; padding: 0; }

h1, h2, h3, h4, h5, h6 { font-weight: inherit; line-height: 1.2; }

:focus-visible { outline: 2px solid var(--c-accent); outline-offset: 2px; }

/* --- Utilitários de layout --- */
.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.container--wide {
  max-width: calc(var(--container-wide) + var(--gutter) * 2);
}
.container--full { max-width: none; }

/* Acessibilidade */
.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}
.skip-link {
  position: absolute; left: -9999px; top: 0;
  background: var(--c-brand-900); color: #fff;
  padding: 12px 20px; z-index: 1000;
}
.skip-link:focus { left: 0; }

/* --- Tipografia utilitária (espelha os estilos do Figma) --- */
.t-title-lg { font: var(--t-title-lg); }
.t-title-sm { font: var(--t-title-sm); letter-spacing: 1px; }
.t-body-lg  { font: var(--t-body-lg); }
.t-body-sm  { font: var(--t-body-sm); }
.t-label    { font: var(--t-label-md); letter-spacing: var(--ls-label); }
.t-label-bold { font: var(--t-label-md-bold); letter-spacing: var(--ls-label); }
.t-display {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: var(--ls-display);
  text-transform: uppercase;
}

/* --- Transições de entrada (reveal on scroll) --- */
.js .reveal { opacity: 0; transform: translateY(26px); transition: opacity 0.7s ease, transform 0.7s ease; }
.js .reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1; transform: none; transition: none; }
}

/* --- Splide (tema on-brand: setas circulares + dots) ---
   Uso o splide-core (mínimo), então preciso posicionar as setas/dots aqui. */
.splide { position: relative; }
.splide__arrows { line-height: 0; }
.splide__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  background: #fff;
  border: 1px solid var(--c-neutral-100);
  border-radius: 50%;
  opacity: 1;
  cursor: pointer;
  transition: background var(--ease), border-color var(--ease);
}
.splide__arrow--prev { left: 12px; }
.splide__arrow--next { right: 12px; }
.splide__arrow svg { width: 16px; height: 16px; fill: var(--c-neutral-900); transition: fill var(--ease); }
.splide__arrow:hover:not(:disabled) { background: var(--c-brand-900); border-color: var(--c-brand-900); }
.splide__arrow:hover:not(:disabled) svg { fill: #fff; }
.splide__arrow:disabled { opacity: 0.3; }
.splide__pagination { position: static; margin-top: 28px; padding: 0; gap: 8px; }
.splide__pagination__page {
  width: 8px; height: 8px; margin: 0;
  background: var(--c-neutral-100); opacity: 1; transition: transform var(--ease), background var(--ease);
}
.splide__pagination__page.is-active { background: var(--c-brand-900); transform: scale(1.4); }

/* --- Botões (ref. Figma 2144:8) --- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 24px;
  border: 1px solid transparent;
  border-radius: 8px;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 14px;
  line-height: 1;
  letter-spacing: var(--ls-label);
  transition: background var(--ease), color var(--ease), border-color var(--ease);
  cursor: pointer;
}
/* Sobre fundo escuro: contorno taupe + texto branco (variante do Figma). */
.btn--light { border-color: var(--c-brand-100); color: #fff; }
.btn--light:hover { background: #fff; color: var(--c-neutral-900); border-color: #fff; opacity: 1; }
/* Sobre fundo claro: contorno escuro + texto escuro. */
.btn--dark { border-color: var(--c-brand-100); color: var(--c-neutral-900); }
.btn--dark:hover { background: var(--c-brand-900); color: #fff; border-color: var(--c-brand-900); opacity: 1; }
/* Preenchido (Adicionar / Fechar Pedido). */
.btn--solid { background: var(--c-brand-900); color: #fff; }
.btn--solid:hover { background: #3f2016; opacity: 1; }

/* --- Placeholder de imagem (enquanto o conteúdo não vem do ACF) --- */
.ph {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 120px;
  background:
    linear-gradient(135deg, rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.08)),
    var(--c-neutral-0);
}
.ph--dark {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.06), rgba(0, 0, 0, 0.25)),
    #3a3a3a;
}

/* --- Card de produto (home + loja) --- */
.product-card { margin: 0; }
.product-card__media {
  display: block;
  position: relative;
  aspect-ratio: 636 / 810;
  overflow: hidden;
  background: var(--c-neutral-0);
}
.product-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.product-card:hover .product-card__media img { transform: scale(1.04); }
.product-card__badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  background: var(--c-brand-900);
  color: #fff;
  font: var(--t-label-sm-bold);
  letter-spacing: 1px;
  padding: 4px 8px;
  border-radius: 3px;
}
.product-card__info { padding-top: 16px; }
.product-card__brand {
  display: block;
  font: var(--t-label-sm-bold);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--c-neutral-500);
  margin-bottom: 8px;
}
.product-card__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.product-card__name { font: var(--t-body-sm); color: var(--c-neutral-900); font-weight: 400; }
.product-card__price { font: var(--t-label-lg-bold); letter-spacing: 0; color: var(--c-neutral-900); white-space: nowrap; text-align: right; }
.product-card__price .price-from { display: block; font-family: var(--font-sans); font-weight: 400; font-size: 10px; line-height: 1.2; letter-spacing: 0; color: var(--c-neutral-500); text-transform: none; margin-bottom: 1px; }
.product-card__price del { color: var(--c-neutral-500); font-weight: 400; font-size: 12px; margin-right: 6px; }
.product-card__price ins { text-decoration: none; }
