/* ==========================================================================
   Sagrada Expansão — folha de estilos
   Abordagem mobile-first: os estilos base são para celular e as
   media queries (min-width) acrescentam a composição de tablet e desktop.

   Índice
    1. Tokens (cores, tipografia, espaçamentos)
    2. Base e reset
    3. Tipografia
    4. Layout e temas de seção
    5. Botões e links
    6. Cabeçalho e menu
    7. Fotografias e espaços reservados
    8. Página inicial
    9. Páginas de produto
   10. Rodapé
   11. Avisos (toast e configuração pendente)
   12. Movimento
   ========================================================================== */


/* 1. TOKENS
   ========================================================================== */

:root {
  /* Paleta oficial */
  --terra: #740C03;          /* vermelho-terra */
  --terracota: #C03605;
  --dourado: #FFD27B;        /* dourado suave */
  --verde: #17421F;          /* verde profundo */
  --salvia: #BBBF88;         /* verde-sálvia */

  /* Neutros e variações derivados da paleta */
  --linho: #F8F0E5;          /* fundo principal */
  --areia: #EFE2D0;          /* fundo secundário */
  --salvia-clara: #E7E6CF;   /* fundo de apoio */
  --vinho: #9C3D43;          /* subtom do vermelho-terra, tirado das artes da marca */
  --terra-profunda: #4F0802;
  --verde-profundo: #0F2E16;
  --tinta: #2D130D;          /* texto principal */
  --tinta-suave: #634238;    /* texto secundário */

  /* Tipografia — alternativas locais caso o Google Fonts não carregue */
  --f-serif: "Cormorant Garamond", "Cormorant", "EB Garamond", Garamond, "Times New Roman", serif;
  --f-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --f-script: "Allura", "Snell Roundhand", "Segoe Script", "Apple Chancery", cursive;

  --t-small: 0.875rem;
  --t-base: 1.0625rem;
  --t-lead: clamp(1.125rem, 1.04rem + 0.35vw, 1.3rem);
  --t-h3: clamp(1.75rem, 1.5rem + 1vw, 2.35rem);
  --t-h2: clamp(2.3rem, 1.65rem + 2.6vw, 3.9rem);
  --t-display: clamp(2.6rem, 1.45rem + 4.3vw, 5.4rem);

  /* Espaçamentos */
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --space-section: clamp(4.5rem, 3rem + 6vw, 8.5rem);
  --space-block: clamp(2.5rem, 2rem + 2.5vw, 4.5rem);
  --max: 1240px;
  --measure: 36rem;
  --header-h: 4.5rem;

  --arch: 999px 999px 0 0;
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);

  /* Grão sutil usado nos espaços reservados para fotografia */
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");

  /* Estrela de quatro pontas, inspirada na logo */
  --star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12.7 7.2 16.8 11.3 24 12C16.8 12.7 12.7 16.8 12 24C11.3 16.8 7.2 12.7 0 12C7.2 11.3 11.3 7.2 12 0Z'/%3E%3C/svg%3E");
}


/* 2. BASE E RESET
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
}

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

body {
  min-height: 100vh;
  background-color: var(--linho);
  color: var(--tinta);
  font-family: var(--f-sans);
  font-size: var(--t-base);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

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

a {
  color: inherit;
}

button {
  font: inherit;
  color: inherit;
}

ul[role="list"],
ol[role="list"] {
  list-style: none;
  padding: 0;
}

[id] {
  scroll-margin-top: calc(var(--header-h) + 1.5rem);
}

::selection {
  background: var(--dourado);
  color: var(--terra-profunda);
}

:focus-visible {
  outline: 2px solid var(--focus, var(--terracota));
  outline-offset: 3px;
  border-radius: 2px;
}

.sr-only {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.icon {
  width: 1.25em;
  height: 1.25em;
  flex: none;
}

.skip-link {
  position: fixed;
  top: 0.75rem;
  left: 0.75rem;
  z-index: 100;
  padding: 0.75rem 1.25rem;
  border-radius: 999px;
  background: var(--terra);
  color: var(--linho);
  font-weight: 500;
  text-decoration: none;
  transform: translateY(-200%);
}

.skip-link:focus {
  transform: none;
  --focus: var(--dourado);
}


/* 3. TIPOGRAFIA
   ========================================================================== */

h1,
h2,
h3,
h4 {
  font-family: var(--f-serif);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--heading, var(--terra));
  text-wrap: balance;
}

p {
  text-wrap: pretty;
}

.h-display {
  font-size: var(--t-display);
  line-height: 0.98;
}

.h-section {
  font-size: var(--t-h2);
}

/* Título de bloco, menor que o de seção (ex.: duas colunas lado a lado) */
.h-block {
  font-size: var(--t-h3);
}

.lead {
  font-size: var(--t-lead);
  line-height: 1.6;
}

/* Cursiva: detalhe de personalidade, usado com moderação */
.script {
  font-family: var(--f-script);
  font-weight: 400;
  font-style: normal;
  font-size: 1.3em;
  line-height: 0.7;
  letter-spacing: 0;
  color: var(--script-color, var(--accent, var(--terracota)));
}

/* Categoria / formato de uma experiência */
.meta {
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.03em;
  color: var(--label, var(--accent));
}

.muted {
  color: var(--fg-soft);
}

.flow > * + * {
  margin-top: var(--flow, 1.1em);
}

.measure {
  max-width: var(--measure);
}


/* 4. LAYOUT E TEMAS DE SECÇÃO
   ========================================================================== */

.container {
  width: min(100% - 2 * var(--gutter), var(--max));
  margin-inline: auto;
}

.container--narrow {
  max-width: 54rem;
}

.section {
  padding-block: var(--space-section);
}

/* Seção de apoio, com menos respiro (ex.: carrossel de avaliações) */
.section--compact {
  padding-block: clamp(3rem, 2rem + 3vw, 5rem);
}

.section-head {
  max-width: 40rem;
  margin-bottom: var(--space-block);
}

.section-head > * + * {
  margin-top: 1.25rem;
}

/* Cada tema define fundo, texto e acentos — os componentes herdam-nos */
.theme-linho,
.theme-areia,
.theme-salvia,
.theme-terra,
.theme-verde,
.theme-vinho {
  background-color: var(--bg);
  color: var(--fg);
}

.theme-linho {
  --bg: var(--linho);
  --fg: var(--tinta);
  --fg-soft: var(--tinta-suave);
  --heading: var(--terra);
  --accent: var(--terracota);
  --label: var(--terracota);
  --line: rgba(116, 12, 3, 0.16);
  --focus: var(--terracota);
  --btn-bg: var(--terracota);
  --btn-fg: #FFF8EF;
  --btn-bg-hover: var(--terra);
}

.theme-areia {
  --bg: var(--areia);
  --fg: var(--tinta);
  --fg-soft: var(--tinta-suave);
  --heading: var(--terra);
  --accent: var(--terracota);
  --label: var(--terra);
  --line: rgba(116, 12, 3, 0.18);
  --focus: var(--terra);
  --btn-bg: var(--terracota);
  --btn-fg: #FFF8EF;
  --btn-bg-hover: var(--terra);
}

.theme-salvia {
  --bg: var(--salvia-clara);
  --fg: var(--tinta);
  --fg-soft: #4E3D33;
  --heading: var(--verde);
  --accent: var(--verde);
  --label: var(--verde);
  --script-color: var(--verde);
  --line: rgba(23, 66, 31, 0.2);
  --focus: var(--verde);
  --btn-bg: var(--verde);
  --btn-fg: var(--linho);
  --btn-bg-hover: var(--verde-profundo);
}

.theme-terra {
  --bg: var(--terra);
  --fg: var(--linho);
  --fg-soft: rgba(248, 240, 229, 0.8);
  --heading: var(--linho);
  --accent: var(--dourado);
  --label: var(--dourado);
  --line: rgba(255, 210, 123, 0.24);
  --focus: var(--dourado);
  --btn-bg: var(--dourado);
  --btn-fg: var(--terra-profunda);
  --btn-bg-hover: #FFE3AA;
}

.theme-verde {
  --bg: var(--verde);
  --fg: var(--linho);
  --fg-soft: rgba(248, 240, 229, 0.8);
  --heading: var(--linho);
  --accent: var(--dourado);
  --label: var(--salvia);
  --line: rgba(187, 191, 136, 0.3);
  --focus: var(--dourado);
  --btn-bg: var(--dourado);
  --btn-fg: var(--verde-profundo);
  --btn-bg-hover: #FFE3AA;
}

.theme-vinho {
  --bg: var(--vinho);
  --fg: var(--linho);
  --fg-soft: rgba(248, 240, 229, 0.86);
  --heading: var(--dourado);
  --accent: var(--dourado);
  --label: var(--dourado);
  --line: rgba(255, 210, 123, 0.28);
  --focus: var(--dourado);
  --btn-bg: var(--dourado);
  --btn-fg: var(--terra-profunda);
  --btn-bg-hover: #FFE3AA;
}

/* Divisão editorial: título fixo à esquerda, conteúdo à direita (desktop) */
.split {
  display: grid;
  gap: var(--space-block);
}

.split > .section-head {
  margin-bottom: 0;
}

@media (min-width: 960px) {
  .split {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.4fr);
    gap: clamp(3rem, 7vw, 7rem);
    align-items: start;
  }

  .split__aside {
    position: sticky;
    top: calc(var(--header-h) + 2.5rem);
  }

  .split .section-head {
    margin-bottom: 0;
  }
}

/* Dois blocos lado a lado (desktop), cada um com o seu título */
.duo {
  display: grid;
  gap: var(--space-block);
}

.duo__col > * + * {
  margin-top: 1.25rem;
}

@media (min-width: 960px) {
  .duo {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(3rem, 7vw, 7rem);
    align-items: start;
  }
}


/* 5. BOTÕES E LINKS
   ========================================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  min-height: 3.25rem;
  padding: 0.75rem 1.75rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font-family: var(--f-sans);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
}

.btn--solid {
  background-color: var(--btn-bg, var(--terracota));
  color: var(--btn-fg, #FFF8EF);
}

.btn--solid:hover {
  background-color: var(--btn-bg-hover, var(--terra));
}

.btn--line {
  border-color: currentColor;
  color: var(--fg, var(--tinta));
  background-color: transparent;
}

.btn--line:hover {
  background-color: var(--fg, var(--tinta));
  border-color: var(--fg, var(--tinta));
  color: var(--bg, var(--linho));
}

.btn--small {
  min-height: 2.75rem;
  padding: 0.55rem 1.25rem;
  font-size: 0.875rem;
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
}

@media (max-width: 479.98px) {
  .actions .btn {
    flex: 1 1 100%;
  }
}

/* Link de texto com sublinhado que cresce */
.text-link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  font-weight: 500;
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 calc(100% - 0.55rem) / 100% 1px no-repeat;
  transition: background-size 0.3s var(--ease), color 0.3s var(--ease);
}

.text-link:hover {
  color: var(--accent);
}

/* Lista de redes sociais com ícone */
.social {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.75rem;
  padding: 0;
  list-style: none;
}

.social a {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-height: 2.75rem;
  text-decoration: none;
  transition: color 0.3s var(--ease);
}

.social a:hover {
  color: var(--accent);
}

.social .icon {
  width: 1.4rem;
  height: 1.4rem;
}


/* 6. CABEÇALHO E MENU
   ========================================================================== */

.site-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 50;
  height: var(--header-h);
  color: var(--tinta);
  --focus: var(--terracota);
  transition: color 0.35s var(--ease);
}

.site-header::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(248, 240, 229, 0.94);
  border-bottom: 1px solid rgba(116, 12, 3, 0.1);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  transition: opacity 0.35s var(--ease);
}

.site-header__inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  height: 100%;
}

/* Sobre hero escuro: cabeçalho transparente até começar o scroll */
.has-dark-hero:not(.menu-open) .site-header:not(.is-scrolled) {
  color: var(--linho);
  --focus: var(--dourado);
}

.has-dark-hero:not(.menu-open) .site-header:not(.is-scrolled)::before {
  opacity: 0;
}

.brand {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  text-decoration: none;
}

/* Monograma no cabeçalho: versão vermelha sobre fundos claros,
   versão creme sobre os heros escuros (até começar a rolagem) */
.brand__logo {
  width: auto;
  height: 3.4rem;
  object-fit: contain;
}

.brand__logo--clara {
  display: none;
}

.has-dark-hero:not(.menu-open) .site-header:not(.is-scrolled) .brand__logo--escura {
  display: none;
}

.has-dark-hero:not(.menu-open) .site-header:not(.is-scrolled) .brand__logo--clara {
  display: block;
}

.brand__text {
  display: none;
  font-family: var(--f-serif);
  font-size: 1.45rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.01em;
}

/* Se a imagem da logo não carregar, mostra o nome da marca em texto
   (!important para vencer a troca de versão clara/escura acima) */
.brand--text .brand__logo {
  display: none !important;
}

.brand--text .brand__text {
  display: inline;
}

.site-header__actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.header-cta {
  min-height: 2.75rem;
  padding: 0.5rem;
  width: 2.75rem;
  border-color: currentColor;
  background: transparent;
  color: inherit;
}

.header-cta:hover {
  background-color: var(--terracota);
  border-color: var(--terracota);
  color: #FFF8EF;
}

.header-cta__text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

@media (min-width: 600px) {
  .header-cta {
    width: auto;
    padding: 0.5rem 1.25rem;
  }

  .header-cta__text {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
  }
}

.nav-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}

.nav-toggle__bar {
  position: absolute;
  left: 0.7rem;
  right: 0.7rem;
  height: 1.5px;
  background: currentColor;
  transition: transform 0.35s var(--ease);
}

.nav-toggle__bar:first-child {
  transform: translateY(-4px);
}

.nav-toggle__bar:last-child {
  transform: translateY(4px);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:first-child {
  transform: rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:last-child {
  transform: rotate(-45deg);
}

/* Menu: painel em tela cheia no celular */
.site-nav {
  position: fixed;
  inset: var(--header-h) 0 0 0;
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
  padding: clamp(2rem, 6vh, 3.5rem) var(--gutter) 2.5rem;
  overflow-y: auto;
  background: var(--linho);
  color: var(--tinta);
  visibility: hidden;
  opacity: 0;
  transform: translateY(-0.75rem);
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease), visibility 0s linear 0.3s;
}

.menu-open {
  overflow: hidden;
}

.menu-open .site-nav {
  visibility: visible;
  opacity: 1;
  transform: none;
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease), visibility 0s;
}

.site-nav__list {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0;
  list-style: none;
}

.site-nav__list a {
  display: inline-block;
  padding-block: 0.2rem;
  font-family: var(--f-serif);
  font-size: clamp(2.25rem, 9vw, 3rem);
  font-weight: 500;
  line-height: 1.2;
  color: var(--terra);
  text-decoration: none;
}

.site-nav__extra {
  display: grid;
  gap: 1.5rem;
  margin-top: auto;
  padding-top: 2rem;
  border-top: 1px solid rgba(116, 12, 3, 0.14);
}

.site-nav__extra .btn {
  justify-self: start;
}

@media (min-width: 960px) {
  .site-header__inner {
    gap: 2rem;
  }

  .site-nav {
    position: static;
    flex-direction: row;
    align-items: center;
    gap: 0;
    margin-left: auto;
    padding: 0;
    overflow: visible;
    background: none;
    color: inherit;
    visibility: visible;
    opacity: 1;
    transform: none;
    transition: none;
  }

  .site-nav__list {
    flex-direction: row;
    gap: clamp(1.25rem, 2.4vw, 2.5rem);
  }

  .site-nav__list a {
    padding-block: 0.4rem;
    font-family: var(--f-sans);
    font-size: 0.9375rem;
    font-weight: 400;
    color: inherit;
    background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
    transition: background-size 0.3s var(--ease);
  }

  .site-nav__list a:hover,
  .site-nav__list a[aria-current] {
    background-size: 100% 1px;
  }

  .site-nav__extra,
  .nav-toggle {
    display: none;
  }
}


/* 7. FOTOGRAFIAS E ESPAÇOS RESERVADOS
   --------------------------------------------------------------------------
   Estrutura reutilizável:
     <figure class="photo photo--portrait tone-terra">
       <img src="..." alt="..." width="..." height="...">   ← fotografia real
       <div class="photo__placeholder">...</div>              ← espaço reservado
     </figure>
   Proporções: --portrait (4:5) --tall (3:4) --square (1:1)
               --landscape (3:2) --wide (16:9) --fill (ocupa o contentor)
   Forma:      --arch (topo em arco)
   Tons do espaço reservado: tone-terra, tone-terracota, tone-verde,
                             tone-salvia, tone-areia
   ========================================================================== */

.photo {
  position: relative;
  aspect-ratio: var(--ratio, 4 / 5);
  margin: 0;
  overflow: hidden;
  isolation: isolate;
  background-color: var(--ph-bottom, var(--areia));
}

.photo--portrait { --ratio: 4 / 5; }
.photo--tall { --ratio: 3 / 4; }
.photo--square { --ratio: 1 / 1; }
.photo--landscape { --ratio: 3 / 2; }
.photo--wide { --ratio: 16 / 9; }

.photo--fill {
  aspect-ratio: auto;
  width: 100%;
  height: 100%;
}

.photo--arch {
  border-radius: var(--arch);
}

.photo > img,
.photo__placeholder {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.photo > img {
  object-fit: cover;
  object-position: var(--focus-point, 50% 50%);
  transition: transform 1.2s var(--ease);
}

/* Espaço reservado: luz e cor da marca, com grão de película */
.photo__placeholder {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  gap: 0.45rem;
  padding: clamp(1rem, 3vw, 1.5rem);
  color: var(--ph-ink, rgba(255, 246, 235, 0.92));
  background:
    radial-gradient(ellipse 75% 55% at 68% 26%, var(--ph-light) 0%, transparent 70%),
    radial-gradient(ellipse 85% 60% at 18% 88%, var(--ph-mid) 0%, transparent 72%),
    linear-gradient(165deg, var(--ph-top) 0%, var(--ph-bottom) 100%);
  transition: transform 1.2s var(--ease);
}

.photo__placeholder::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--grain);
  opacity: 0.32;
  mix-blend-mode: soft-light;
  pointer-events: none;
}

.photo__placeholder::after {
  content: "";
  position: absolute;
  inset: 0.65rem;
  border: 1px solid var(--ph-frame, rgba(255, 246, 235, 0.22));
  border-radius: inherit;
  pointer-events: none;
}

.photo--arch .photo__placeholder {
  border-radius: var(--arch);
}

/* Sem moldura interior na fotografia do hero, que se funde com o fundo */
.hero__media .photo__placeholder::after {
  display: none;
}

/* Etiqueta no topo, quando a base da imagem fica coberta por outro elemento */
.photo__placeholder--top {
  justify-content: flex-start;
}

.photo__label {
  position: relative;
  padding: 0.5rem 0.9rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-family: var(--f-sans);
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.08);
}

.photo__hint {
  position: relative;
  max-width: 28ch;
  padding-left: 0.95rem;
  font-size: 0.75rem;
  line-height: 1.4;
  opacity: 0.85;
}

/* Tons */
.tone-terra {
  --ph-top: #9A2108;
  --ph-bottom: #4F0802;
  --ph-light: rgba(255, 210, 123, 0.5);
  --ph-mid: rgba(192, 54, 5, 0.65);
}

.tone-terracota {
  --ph-top: #D2591E;
  --ph-bottom: #7E1404;
  --ph-light: rgba(255, 210, 123, 0.62);
  --ph-mid: rgba(116, 12, 3, 0.5);
}

.tone-verde {
  --ph-top: #2B5A33;
  --ph-bottom: #0F2E16;
  --ph-light: rgba(255, 210, 123, 0.32);
  --ph-mid: rgba(187, 191, 136, 0.42);
}

.tone-salvia {
  --ph-top: #D9DAB4;
  --ph-bottom: #9CA16B;
  --ph-light: rgba(255, 243, 220, 0.85);
  --ph-mid: rgba(23, 66, 31, 0.22);
  --ph-ink: var(--verde-profundo);
  --ph-frame: rgba(23, 66, 31, 0.2);
}

.tone-areia {
  --ph-top: #F5E7D3;
  --ph-bottom: #D8B796;
  --ph-light: rgba(255, 210, 123, 0.6);
  --ph-mid: rgba(192, 54, 5, 0.22);
  --ph-ink: var(--terra);
  --ph-frame: rgba(116, 12, 3, 0.18);
}

/* Moldura em arco (portal) desenhada à volta de uma fotografia */
.arch-frame {
  position: relative;
  padding: 0.85rem 0.85rem 0;
}

.arch-frame::before {
  content: "";
  position: absolute;
  inset: 0 0 0 0;
  border: 1px solid var(--accent);
  border-bottom: 0;
  border-radius: var(--arch);
  opacity: 0.55;
  pointer-events: none;
}


/* Tratamentos das fotos reais ---------------------------------------------- */

/* Grão de filme sutil, para a foto não parecer "chapada" */
.photo--grain::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: var(--grain);
  opacity: 0.22;
  mix-blend-mode: soft-light;
  pointer-events: none;
}

/* Luz dourada no topo e sombra suave na base (fotos em arco) */
.photo--glow::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(95% 55% at 50% 0%, rgba(255, 210, 123, 0.26), transparent 70%),
    linear-gradient(to top, rgba(45, 19, 13, 0.38) 0%, transparent 38%);
  pointer-events: none;
}

/* Estrela da logo no topo da moldura em arco */
.arch-star {
  position: absolute;
  z-index: 2;
  top: -0.6rem;
  left: 50%;
  width: 1.2rem;
  height: 1.2rem;
  transform: translateX(-50%);
  background-color: var(--accent);
  -webkit-mask: var(--star) center / contain no-repeat;
  mask: var(--star) center / contain no-repeat;
}


/* 8. PÁGINA INICIAL
   ========================================================================== */

/* 8.1 Hero ------------------------------------------------------------------ */

.hero {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 100vh;
  min-height: 100svh;
  padding-top: calc(var(--header-h) + 1rem);
  padding-bottom: clamp(3rem, 8vw, 6rem);
  overflow: hidden;
}

/* Brilho quente por trás do texto */
.hero::before {
  content: "";
  position: absolute;
  z-index: 3;
  inset: auto -20% -25% -30%;
  height: 75%;
  background: radial-gradient(closest-side, rgba(192, 54, 5, 0.5), transparent);
  pointer-events: none;
}

.hero__media {
  position: absolute;
  inset: 0 0 auto 0;
  height: 70%;
}

/* Sobreposição de cor que unifica a fotografia com o vermelho-terra */
.hero__media .photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(192, 54, 5, 0.14);
  mix-blend-mode: multiply;
  pointer-events: none;
}

/* Foco de luz dourada sobre a fotografia */
.hero__media::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: radial-gradient(45% 40% at 70% 22%, rgba(255, 210, 123, 0.22), transparent 70%);
  mix-blend-mode: screen;
  pointer-events: none;
}

/* Transição suave entre a fotografia e o fundo */
.hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    linear-gradient(to bottom, rgba(79, 8, 2, 0.55) 0%, rgba(116, 12, 3, 0) 24%),
    linear-gradient(to top, var(--terra) 0%, rgba(116, 12, 3, 0.85) 18%, rgba(116, 12, 3, 0) 60%);
  pointer-events: none;
}

.hero__media .photo__placeholder {
  justify-content: flex-start;
  align-items: flex-end;
  padding-top: calc(var(--header-h) + 1rem);
}

.hero__content {
  position: relative;
  z-index: 4;
}

.hero__title {
  font-size: var(--t-display);
  line-height: 0.98;
}

.hero__line {
  display: block;
}

.hero__intro {
  max-width: 34rem;
  margin-top: 1.75rem;
}

.hero__intro .actions {
  margin-top: 2rem;
}

@media (min-width: 600px) {
  .hero__line--indent {
    padding-left: 0.9em;
  }
}

@media (min-width: 960px) {
  .hero {
    justify-content: center;
    min-height: min(100svh, 62rem);
    padding-top: calc(var(--header-h) + 3rem);
  }

  .hero::before {
    inset: 10% auto -20% -15%;
    width: 65%;
    height: auto;
  }

  .hero__media {
    inset: 0 0 0 auto;
    width: 52%;
    height: auto;
  }

  .hero__media::after {
    background:
      linear-gradient(to right, var(--terra) 0%, rgba(116, 12, 3, 0.78) 14%, rgba(116, 12, 3, 0.18) 40%, rgba(116, 12, 3, 0) 62%),
      linear-gradient(to top, var(--terra) 0%, rgba(116, 12, 3, 0) 24%),
      linear-gradient(to bottom, rgba(79, 8, 2, 0.5) 0%, rgba(116, 12, 3, 0) 20%);
  }

  .hero__media .photo__placeholder {
    align-items: flex-end;
    justify-content: flex-end;
    padding: 2rem 2.5rem 3rem;
  }
}

@media (min-width: 1200px) {
  .hero__media {
    width: 58%;
  }
}

/* 8.2 Experiências: cartões horizontais ------------------------------------- */

.exp-intro {
  max-width: 40rem;
  margin-bottom: clamp(2rem, 4vw, 3rem);
}

.exp-cards {
  display: grid;
  gap: clamp(1rem, 2vw, 1.5rem);
  padding: 0;
  list-style: none;
}

/* Cada cartão tem a sua cor; o texto é sempre claro */
.exp-card {
  --fg: var(--linho);
  --fg-soft: rgba(248, 240, 229, 0.86);
  --heading: var(--linho);
  --focus: var(--dourado);
  position: relative;
  isolation: isolate;
  display: grid;
  overflow: hidden;
  border-radius: clamp(1rem, 2vw, 1.5rem);
  background-color: var(--card-bg);
  color: var(--fg);
}

.exp-card--terra {
  --card-bg: var(--terra);
  --card-meta: var(--dourado);
}

.exp-card--terracota {
  --card-bg: var(--terracota);
  --card-meta: var(--linho);
  --fg-soft: var(--linho);
}

.exp-card--vinho {
  --card-bg: var(--vinho);
  --card-meta: var(--dourado);
}

/* Celular: fotografia em cima, se dissolvendo na cor do cartão */
.exp-card__media {
  position: relative;
  aspect-ratio: 16 / 10;
}

.exp-card__media .photo {
  position: absolute;
  inset: 0;
  aspect-ratio: auto;
}

/* A foto ganha o tom da cor do card */
.exp-card__media .photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-color: var(--card-bg);
  mix-blend-mode: soft-light;
  opacity: 0.55;
  pointer-events: none;
}

.exp-card__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent 35%, var(--card-bg) 100%);
  pointer-events: none;
}

.exp-card .photo__placeholder {
  justify-content: flex-start;
  align-items: flex-end;
}

.exp-card .photo__placeholder::after {
  display: none;
}

.exp-card__body {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.55rem;
  margin-top: -2.5rem;
  padding: 0 1.5rem 1.75rem;
}

.exp-card__meta {
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.03em;
  color: var(--card-meta);
}

.exp-card__title {
  font-size: clamp(1.9rem, 1.35rem + 2vw, 3rem);
  font-style: italic;
  line-height: 1.02;
}

/* O link do nome cobre o cartão inteiro (um só ponto de foco) */
.exp-card__link {
  text-decoration: none;
}

.exp-card__link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
}

.exp-card__link:focus-visible {
  outline: none;
}

.exp-card:has(.exp-card__link:focus-visible) {
  outline: 2px solid var(--terra);
  outline-offset: 4px;
}

.exp-card__text {
  max-width: 28rem;
  color: var(--fg-soft);
}

.exp-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-height: 2.9rem;
  margin-top: 0.85rem;
  padding: 0.6rem 1.4rem;
  border-radius: 999px;
  background-color: var(--linho);
  color: var(--card-bg);
  font-size: 0.9375rem;
  font-weight: 600;
  transition: background-color 0.3s var(--ease);
}

.exp-card__cta .icon {
  transition: transform 0.3s var(--ease);
}

.exp-card:hover .exp-card__cta {
  background-color: var(--dourado);
}

.exp-card:hover .exp-card__cta .icon {
  transform: translateX(3px);
}

.exp-card:hover .photo > img,
.exp-card:hover .photo__placeholder {
  transform: scale(1.04);
}

/* Tablet e desktop: texto à esquerda, fotografia à direita.
   A faixa da foto é estreita para a imagem não ficar ampliada demais. */
@media (min-width: 768px) {
  .exp-card {
    min-height: clamp(14rem, 19vw, 16rem);
  }

  .exp-card__media {
    position: absolute;
    inset: 0 0 0 auto;
    width: 44%;
    aspect-ratio: auto;
  }

  .exp-card__media::after {
    background: linear-gradient(to right, var(--card-bg) 0%, var(--card-bg) 3%, transparent 40%);
  }

  .exp-card .photo__placeholder {
    justify-content: flex-end;
    padding: 1.5rem 1.75rem;
  }

  .exp-card__body {
    justify-content: center;
    width: 56%;
    margin-top: 0;
    padding: clamp(1.75rem, 3vw, 2.75rem);
  }

  .exp-card__title {
    font-size: clamp(1.9rem, 1rem + 1.6vw, 2.5rem);
  }
}

/* Linha de redes logo abaixo dos cards, na largura deles: YouTube e
   Instagram nas pontas, a comunidade no centro e em destaque.
   No celular, a comunidade vem primeiro, numa linha só dela. */
.social-row {
  margin-top: clamp(2rem, 4vw, 3rem);
}

.social-row__label {
  margin-bottom: 1rem;
  font-size: var(--t-small);
  text-align: center;
  color: var(--fg-soft);
}

.social-row ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: center;
  gap: 1.1rem 0.75rem;
}

.social-row .btn {
  width: 100%;
}

.social-row__destaque {
  grid-column: 1 / -1;
  order: -1;
}

/* Destaque: vermelho-terra, um pouco maior, com anel dourado */
.social-row .btn--destaque {
  --btn-bg: var(--terra);
  --btn-bg-hover: var(--terracota);
  min-height: 3.6rem;
  padding-inline: 2.25rem;
  font-size: 1rem;
  box-shadow: 0 0 0 3px var(--bg), 0 0 0 5px var(--dourado);
}

@media (min-width: 600px) {
  .social-row ul {
    grid-template-columns: 1fr auto 1fr;
  }

  .social-row .btn {
    width: auto;
  }

  .social-row__destaque {
    grid-column: auto;
    order: 0;
  }

  .social-row li:first-child {
    justify-self: start;
  }

  .social-row li:last-child {
    justify-self: end;
  }
}

/* 8.3 Sobre ------------------------------------------------------------------ */

.about {
  display: grid;
  gap: var(--space-block);
}

.about__media {
  width: min(100%, 24rem);
}

.about__text > * + * {
  margin-top: 1.25rem;
}

.about__quote {
  margin-block: 2rem;
  padding-left: 1.25rem;
  border-left: 1px solid var(--accent);
  font-family: var(--f-serif);
  font-size: clamp(1.4rem, 1.2rem + 0.9vw, 1.85rem);
  font-style: italic;
  line-height: 1.3;
  color: var(--heading);
}

.signature {
  display: block;
  font-family: var(--f-script);
  font-size: 3.25rem;
  line-height: 1;
  color: var(--script-color, var(--accent));
}

.about .actions {
  align-items: center;
  margin-top: 2rem;
}

@media (min-width: 960px) {
  .about {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: clamp(3rem, 8vw, 8rem);
    align-items: center;
  }

  .about__media {
    order: 2;
    width: 100%;
    max-width: 27rem;
    justify-self: end;
  }
}


/* 9. PÁGINAS DE PRODUTO
   ========================================================================== */

/* 9.1 Hero de produto -------------------------------------------------------- */

.page-hero {
  position: relative;
  overflow: hidden;
  padding-top: calc(var(--header-h) + clamp(2rem, 5vw, 3.5rem));
  padding-bottom: var(--space-section);
}

.page-hero__grid {
  display: grid;
  gap: 3rem;
  align-items: center;
}

.page-hero__text > * + * {
  margin-top: 1.5rem;
}

.page-hero__text .actions {
  margin-top: 2.25rem;
}

.page-hero__media {
  position: relative;
  isolation: isolate;
  width: min(100%, 24rem);
  justify-self: center;
}

/* Luz difusa atrás do arco */
.page-hero__media::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -18% -30% -10%;
  background: radial-gradient(closest-side, var(--glow, rgba(255, 210, 123, 0.22)), transparent);
  pointer-events: none;
}

.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.6rem;
  padding: 0;
  list-style: none;
  font-size: var(--t-small);
  color: var(--fg-soft);
}

.breadcrumb li + li::before {
  content: "/";
  margin-right: 0.6rem;
  opacity: 0.6;
}

.breadcrumb a {
  text-decoration: none;
}

.breadcrumb a:hover {
  text-decoration: underline;
}

.hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 2rem;
  padding: 1.5rem 0 0;
  border-top: 1px solid var(--line);
  list-style: none;
  font-size: var(--t-small);
  color: var(--fg-soft);
}

.hero-facts strong {
  display: block;
  font-family: var(--f-serif);
  font-variant-numeric: lining-nums;
  font-size: 1.35rem;
  font-weight: 500;
  color: var(--fg);
}

@media (min-width: 960px) {
  .page-hero {
    padding-top: calc(var(--header-h) + clamp(3rem, 6vw, 5rem));
  }

  .page-hero__grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: clamp(3rem, 7vw, 7rem);
  }

  .page-hero__media {
    width: 100%;
    max-width: 28rem;
    justify-self: end;
  }
}

/* 9.2 Listas com marcador em arco ------------------------------------------- */

.arch-list {
  display: grid;
  gap: 1.35rem;
  padding: 0;
  list-style: none;
}

.arch-list li {
  position: relative;
  padding-left: 2.1rem;
}

.arch-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 0.95rem;
  height: 0.6rem;
  border: 1px solid var(--accent);
  border-bottom: 0;
  border-radius: var(--arch);
}

.arch-list--large li {
  font-family: var(--f-serif);
  font-size: clamp(1.35rem, 1.15rem + 0.8vw, 1.75rem);
  line-height: 1.3;
  color: var(--heading);
}

.arch-list--large li::before {
  top: 0.45em;
}

.arch-list strong {
  font-weight: 600;
}

/* 9.3 Portais do Ventre (sequência da jornada) ------------------------------ */

.portals {
  padding: 0;
  list-style: none;
  counter-reset: portal;
}

.portals__item {
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr);
  gap: 0.35rem 1.25rem;
  padding-block: 1.75rem;
  border-top: 1px solid var(--line);
  counter-increment: portal;
}

.portals__item:last-child {
  border-bottom: 1px solid var(--line);
}

.portals__item::before {
  content: counter(portal, upper-roman);
  grid-row: span 2;
  padding-top: 0.15rem;
  font-family: var(--f-serif);
  font-size: 1.6rem;
  font-style: italic;
  line-height: 1;
  color: var(--accent);
}

.portals__name {
  font-size: clamp(1.5rem, 1.3rem + 0.8vw, 1.95rem);
}

.portals__name span {
  margin-left: 0.4rem;
  font-family: var(--f-sans);
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0;
  color: var(--fg-soft);
}

.portals__text {
  color: var(--fg-soft);
}

/* 9.4 Bônus ------------------------------------------------------------------ */

.bonus {
  margin-top: 2rem;
  padding: 1.5rem 1.6rem;
  background: rgba(255, 210, 123, 0.22);
  border-radius: 2px;
}

.bonus > * + * {
  margin-top: 0.6rem;
}

/* 9.5 21 dias (Arquétipo da Cigana) ---------------------------------------- */

.days-block {
  display: grid;
  gap: 2.5rem;
  align-items: center;
}

.days-block__count {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  font-family: var(--f-serif);
  font-variant-numeric: lining-nums;
  color: var(--heading);
}

.days-block__count strong {
  font-size: clamp(5rem, 3rem + 9vw, 9rem);
  font-weight: 500;
  line-height: 0.85;
}

.days-block__count span {
  font-size: 1.6rem;
  font-style: italic;
}

.days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: clamp(0.55rem, 1.6vw, 0.85rem);
  max-width: 15rem;
  margin-top: 1.75rem;
}

.days span {
  aspect-ratio: 1;
  border: 1px solid var(--accent);
  border-radius: 50%;
  background-color: var(--accent);
  transition: background-color 0.5s var(--ease);
  transition-delay: calc(var(--i, 0) * 55ms);
}

@media (min-width: 960px) {
  .days-block {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: clamp(3rem, 8vw, 8rem);
  }
}

/* 9.6 Nota de cuidado ------------------------------------------------------- */

.notice {
  margin-top: 2rem;
  padding: 1.4rem 1.6rem;
  border-left: 2px solid var(--salvia);
  background: rgba(187, 191, 136, 0.2);
  font-size: var(--t-small);
}

.notice > * + * {
  margin-top: 0.4rem;
}

.section-cta {
  margin-top: 2.25rem;
}

.notice strong {
  color: var(--verde);
}

/* 9.7 Avaliações (carrossel) ------------------------------------------------ */

/* Cabeçalho enxuto: título e linha de apoio à esquerda, setas à direita */
.carousel__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem 2rem;
  margin-bottom: 1.5rem;
}

.carousel__intro > * + * {
  margin-top: 0.4rem;
}

.carousel__intro p {
  font-size: var(--t-small);
}

/* Faixa rolável na horizontal; sem JavaScript continua utilizável
   (toque, trackpad ou barra de rolagem). O seletor duplo vence o
   reset de ul[role="list"], que zera o padding. */
.carousel .carousel__track {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  margin: 0;
  padding: 0.25rem 0;
  list-style: none;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
}

.js .carousel__track {
  scrollbar-width: none;
}

.js .carousel__track::-webkit-scrollbar {
  display: none;
}

.carousel__track:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 4px;
}

/* Relato: o print do WhatsApp, na altura natural, com cantos arredondados */
.testimonial {
  flex: 0 0 min(84%, 21rem);
  scroll-snap-align: start;
}

.testimonial img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 1rem;
}

.carousel__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 2rem;
  margin-top: 1.5rem;
}

.carousel__note {
  max-width: 34rem;
  font-size: 0.8125rem;
  color: var(--fg-soft);
}

/* Botões anterior/seguinte: só aparecem quando o JavaScript os liga */
.carousel__nav {
  display: none;
  gap: 0.5rem;
}

.js .carousel__nav {
  display: flex;
}

.carousel__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  background-color: transparent;
  color: var(--heading);
  cursor: pointer;
  transition: background-color 0.3s var(--ease), color 0.3s var(--ease), opacity 0.3s var(--ease);
}

.carousel__btn:hover:not(:disabled) {
  background-color: var(--heading);
  color: var(--bg);
}

.carousel__btn:disabled {
  opacity: 0.3;
  cursor: default;
}

.carousel__btn--prev .icon {
  transform: scaleX(-1);
}

/* Celular e tablet: a faixa vai até a borda da tela e mostra a ponta do
   próximo relato, indicando que há mais para ver */
@media (max-width: 959.98px) {
  .carousel .carousel__track {
    margin-inline: calc(-1 * var(--gutter));
    padding-inline: var(--gutter);
    scroll-padding-inline: var(--gutter);
  }
}

@media (min-width: 640px) {
  .testimonial {
    flex-basis: calc((100% - 1rem) / 2);
  }
}

@media (min-width: 960px) {
  .testimonial {
    flex-basis: calc((100% - 3 * 1rem) / 4);
  }
}


/* 9.8 Páginas legais ------------------------------------------------------- */

.legal-hero {
  padding-bottom: var(--space-block);
}

.legal-hero .page-hero__text {
  max-width: 46rem;
}

.legal {
  max-width: 42rem;
  --flow: 1rem;
}

.legal h2 {
  margin-top: 2.75rem;
  font-size: var(--t-h3);
}

.legal > h2:first-child {
  margin-top: 0;
}

.legal ul {
  display: grid;
  gap: 0.6rem;
  padding-left: 1.25rem;
  list-style: disc;
}

.legal li::marker {
  color: var(--accent);
}

.legal strong {
  font-weight: 600;
}

.legal a {
  color: var(--accent);
  text-underline-offset: 0.2em;
}


/* 10. RODAPÉ
   ========================================================================== */

.site-footer {
  padding-top: clamp(3.5rem, 6vw, 5.5rem);
  padding-bottom: 2rem;
  font-size: 0.9375rem;
}

.site-footer__grid {
  display: grid;
  gap: 2.75rem;
}

/* Logo completa no rodapé */
.site-footer .brand__logo {
  height: clamp(6.5rem, 5rem + 3vw, 8rem);
}

.site-footer__tagline {
  max-width: 22rem;
  margin-top: 1rem;
  color: var(--fg-soft);
}

.site-footer h2 {
  margin-bottom: 1rem;
  font-family: var(--f-sans);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--label);
}

.footer-list {
  display: grid;
  gap: 0.15rem;
  padding: 0;
  list-style: none;
}

.footer-list a {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-height: 2.5rem;
  text-decoration: none;
}

.footer-list a:hover {
  color: var(--terracota);
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

.footer-list .icon {
  width: 1.2rem;
  height: 1.2rem;
}

.site-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 2rem;
  margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: 1.5rem;
  border-top: 1px solid var(--line);
  font-size: var(--t-small);
  color: var(--fg-soft);
}

.legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.5rem;
  padding: 0;
  list-style: none;
}

.legal-links a {
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
}

.site-credit a {
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
  font-weight: 500;
  color: var(--fg);
  text-underline-offset: 0.25em;
}

.site-credit a:hover {
  color: var(--terracota);
}

@media (min-width: 600px) {
  .site-footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 960px) {
  .site-footer__grid {
    grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr));
    gap: 3rem;
  }
}


/* 11. AVISOS
   ========================================================================== */

[data-pending] {
  cursor: pointer;
}

.toast {
  position: fixed;
  left: 50%;
  bottom: 1.25rem;
  z-index: 90;
  width: min(100% - 2.5rem, 28rem);
  padding: 1rem 1.25rem;
  border-radius: 0.75rem;
  background: var(--verde-profundo);
  color: var(--linho);
  font-size: 0.9375rem;
  line-height: 1.5;
  box-shadow: 0 1rem 2.5rem rgba(15, 46, 22, 0.25);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, 1rem);
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease), visibility 0s linear 0.3s;
}

.toast.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease), visibility 0s;
}

/* Visível apenas em ambiente local (ver main.js) */
.config-badge {
  position: fixed;
  left: 0.75rem;
  bottom: 0.75rem;
  z-index: 80;
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  max-width: min(100% - 1.5rem, 22rem);
  padding: 0.75rem 0.75rem 0.75rem 1rem;
  border: 1px dashed var(--terracota);
  border-radius: 0.5rem;
  background: #FFF8EF;
  color: var(--tinta);
  font-size: 0.75rem;
  line-height: 1.45;
  box-shadow: 0 0.5rem 1.5rem rgba(45, 19, 13, 0.12);
}

.config-badge strong {
  display: block;
  color: var(--terracota);
}

.config-badge button {
  flex: none;
  width: 1.75rem;
  height: 1.75rem;
  border: 0;
  border-radius: 50%;
  background: transparent;
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
}


/* 12. MOVIMENTO
   Animações apenas quando o sistema não pede movimento reduzido.
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }

  /* Entrada do hero: um único momento coreografado */
  .hero__media {
    animation: hero-soften 1.8s var(--ease) both;
  }

  .hero__line,
  .hero__intro {
    animation: hero-rise 1s var(--ease) both;
  }

  .hero__line:nth-child(1) { animation-delay: 0.2s; }
  .hero__line:nth-child(2) { animation-delay: 0.34s; }
  .hero__line:nth-child(3) { animation-delay: 0.48s; }
  .hero__intro { animation-delay: 0.7s; }

  /* Fotografias se revelam como uma cortina ao entrar na tela */
  .js .reveal {
    clip-path: inset(14% 0 0 0);
    opacity: 0;
    transition: clip-path 1.3s var(--ease), opacity 1s var(--ease);
  }

  .js .reveal.is-visible {
    clip-path: inset(0 0 0 0);
    opacity: 1;
  }

  /* Os 21 dias se acendem um a um */
  .js .days:not(.is-visible) span {
    background-color: transparent;
  }
}

@keyframes hero-rise {
  from {
    opacity: 0;
    transform: translateY(0.6rem);
  }
}

@keyframes hero-soften {
  from {
    opacity: 0;
    transform: scale(1.04);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0s !important;
    scroll-behavior: auto !important;
  }
}
