﻿/* ============================================
   Atelier Amarte â€” Design refinado Â· ArtÃ­stico Â· Multi-ecrÃ£
   Paleta: rosa, verde, amarelo, azul, preto, branco
   Fontes: Yeseva One (títulos) · Montserrat (texto)

   Layout (padrÃ£o internacional):
   â€¢ Margens fluidas: --page-pad-* crescem acima de --content-max
   â€¢ Miolo limitado: --wrap = min(100%, 1280px)
   â€¢ Breakpoints: 480 / 640 / 768 / 900 / 1024
   ============================================ */

@font-face {
  font-family: "TAN Nimbus";
  src:
    url("../fonts/TAN-Nimbus.woff2") format("woff2"),
    url("../fonts/TAN-Nimbus.woff") format("woff");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

:root {
  --rosa: #e71d68;
  --rosa-escuro: #c91858;
  --rosa-suave: rgba(231, 29, 104, 0.1);
  --verde: #39aa35;
  --verde-suave: rgba(57, 170, 53, 0.12);
  --amarelo: #fdc432;
  --amarelo-suave: rgba(253, 196, 50, 0.15);
  --azul: #54a9df;
  --azul-suave: rgba(84, 169, 223, 0.12);
  --preto: #2b2b2b;
  --branco: #ffffff;
  --font-titulo: "Yeseva One", Georgia, "Times New Roman", serif;
  --font-h1: var(--font-titulo);
  --font-texto: "Montserrat", sans-serif;
  /* EspaÃ§o: escala 4px (mobile-first) */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-7: 1.75rem;
  --space-8: 2rem;
  --u8: var(--space-8);
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-14: 3.5rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --safe-t: env(safe-area-inset-top, 0);
  --safe-b: env(safe-area-inset-bottom, 0);
  --safe-l: env(safe-area-inset-left, 0);
  --safe-r: env(safe-area-inset-right, 0);
  /* Miolo: largura mÃ¡x. + margens laterais que crescem em ecrÃ£s largos */
  --content-max: 1280px;
  --gutter-min: clamp(1.25rem, 4vw, 4rem);
  --page-margin-fluid: max(0px, calc((100vw - var(--content-max)) / 2));
  --page-pad-left: max(var(--gutter-min), var(--safe-l), var(--page-margin-fluid));
  --page-pad-right: max(var(--gutter-min), var(--safe-r), var(--page-margin-fluid));
  --wrap: min(100%, var(--content-max));
  --wrap-narrow: min(640px, 100%);
  /* Ritmo vertical de secÃ§Ãµes */
  --section-y: clamp(var(--space-10), 5vw, var(--space-16));
  --section-y-lg: clamp(calc(var(--space-12) + 0.35rem), calc(8vw + 0.35rem), calc(var(--space-20) + 0.5rem));
  --section-y-home: clamp(calc(var(--space-12) + 1rem), calc(8vw + 1rem), calc(var(--space-20) + 1.25rem));
  --section-y-tight: clamp(var(--space-6), 4vw, var(--space-10));
  /* Larguras editoriais (prosa / colunas) */
  --prose-sm: 28rem;
  --prose-md: 32rem;
  --prose-lg: 36rem;
  --prose-xl: 40rem;
  --prose-2xl: 48rem;
  --prose-display: 54rem;
  --aside-max: 26.25rem;
  --figure-max: 34rem;
  /* Tipografia */
  --title-scale: 1.14;
  --text-kicker: clamp(0.625rem, 1.1vw, 0.75rem);
  --text-kicker-spacing: 0.22em;
  --heading-section: clamp(calc(1.65rem * var(--title-scale)), calc(3.37vw + 0.375rem), calc(2.65rem * var(--title-scale)));
  --heading-page: clamp(calc(1.78rem * var(--title-scale)), calc(4.44vw + 0.59rem), calc(2.7rem * var(--title-scale)));
  --heading-display: clamp(2.5rem, 9vw, 4.75rem);
  --heading-hero: clamp(4rem, 16vw, 7rem);
  --text-lead: clamp(0.9375rem, 1.1vw + 0.35rem, 1.0625rem);
  /* Hero â€” coordenadas de posicionamento (textos/botÃµes) */
  /* Hero — faixa banner (base); home + preview admin × 4/3 */
  --hero-banner-min: 260px;
  --hero-banner-vw: 36;
  --hero-banner-max: 420px;
  --hero-banner-height: clamp(var(--hero-banner-min), calc(var(--hero-banner-vw) * 1vw), var(--hero-banner-max));
  --hero-pos-pad-l: var(--page-pad-left);
  --hero-pos-pad-r: var(--page-pad-right);
  --hero-pos-inset-top: 0;
  --hero-pos-inset-bottom: 0;
  --hero-banner-ui-bottom: calc(var(--space-4) + var(--safe-b));
  --hero-carousel-pad-x: max(var(--page-pad-left), var(--page-pad-right));
  --hero-carousel-text-max: var(--prose-display);
  --hero-carousel-ui-bottom: calc(var(--space-10) + var(--safe-b));
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --header-h: calc(2rem + 38px);
  --touch: 44px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --shadow-sm: 0 1px 3px rgba(43, 43, 43, 0.06);
  --shadow-md: 0 4px 16px rgba(43, 43, 43, 0.08), 0 1px 2px rgba(43, 43, 43, 0.04);
  --shadow-lg: 0 12px 40px rgba(43, 43, 43, 0.1), 0 2px 8px rgba(43, 43, 43, 0.04);
  /* Alturas ecrÃ£-cheio: 100svh (small viewport) Ã© estÃ¡vel; a unidade dinÃ¢mica do viewport mudava com a barra do browser â†’ reflow e saltos ao scroll no mÃ³vel */
}

*, *::before, *::after { box-sizing: border-box; }
img { max-width: 100%; height: auto; display: block; }

html {
  font-size: clamp(15px, 2.2vw, 17px);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* Suave no desktop; em touch/tablet fica auto (evita â€œsaltosâ€ com inÃ©rcia iOS/Android) */
  scroll-behavior: smooth;
  /* Ã‚ncoras e focus: compensar header fixo + safe area (iPhone) */
  scroll-padding-top: calc(var(--header-h) + var(--safe-t) + 0.5rem);
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  /* Evita aparecer/desaparecer barra a estreitar a coluna e a â€œpuxarâ€ o scroll no reload */
  scrollbar-gutter: stable;
  /* Chrome/Edge: sem reajuste automÃ¡tico de scroll quando fontes ou blocos reflowam (sensaÃ§Ã£o de â€œdescerâ€ ao recarregar) */
  overflow-anchor: none;
}

/* AtÃ© tablet largura: sem scroll-behavior smooth (inÃ©rcia + barra de endereÃ§o mÃ³vel) */
@media (max-width: 1024px) {
  html {
    scroll-behavior: auto;
  }
}

body.site-body {
  margin: 0;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  background: var(--branco);
  color: var(--preto);
  font-family: var(--font-texto);
  font-weight: 400;
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-tap-highlight-color: transparent;
  overflow-wrap: break-word;
  word-wrap: break-word;
}

/* Fundo claro na home (hero em faixa, nÃ£o ecrÃ£ completo) */
body.site-body--home,
html.preview-hero-carrossel-slide {
  --hero-banner-height: clamp(
    calc(var(--hero-banner-min) * 4 / 3),
    calc(var(--hero-banner-vw) * 4 / 3 * 1vw),
    calc(var(--hero-banner-max) * 4 / 3)
  );
}

body.site-body--home {
  background: var(--branco);
}

body.site-body > main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0; /* evita overflow horizontal em flex + grids filhos */
  /* Fade-in automÃ¡tico em cada nova pÃ¡gina: animaÃ§Ã£o corre uma vez ao carregar.
     SÃ³ opacity â€” qualquer transform em main faria descendentes position:fixed
     (lightboxes, etc.) serem posicionados em relaÃ§Ã£o a main em vez do viewport. */
  animation: pageEnter 0.45s var(--ease) both;
}

/* Fade-out quando o JS adiciona .is-leaving ao clicar num link interno */
body.site-body.is-leaving > main {
  animation: pageExit 0.32s ease forwards;
}

@keyframes pageEnter {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes pageExit {
  from { opacity: 1; }
  to   { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  body.site-body > main,
  body.site-body.is-leaving > main {
    animation: none;
  }
}

.view-content { flex: 1; min-width: 0; }

/* ---------- Scroll progress ---------- */
/* Sem transition: o JS jÃ¡ actualiza a width em cada rAF; ter transition aqui
   faria a barra "perseguir" o scroll com atraso visÃ­vel. Compositor vs layout:
   width muda a cada frame mas Ã© uma Ãºnica barra fina, custo desprezÃ­vel. */
.scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 3px;
  background: var(--rosa);
  z-index: 999;
  will-change: width;
}

/* ---------- Voltar ao topo ---------- */
.back-to-top {
  position: fixed;
  right: calc(var(--safe-r) + var(--space-4));
  bottom: calc(var(--safe-b) + var(--space-4));
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background: var(--rosa);
  color: var(--branco);
  border: none;
  border-radius: 0;
  text-decoration: none;
  box-shadow: 0 2px 12px rgba(43, 43, 43, 0.15);
  transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, opacity 0.2s ease, visibility 0.2s ease;
  opacity: 0;
  visibility: hidden;
  -webkit-tap-highlight-color: transparent;
}
.back-to-top[hidden] { display: none; }
.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
}
.back-to-top:hover {
  background: var(--rosa-escuro);
  color: var(--branco);
  transform: translateY(-2px);
}
.back-to-top:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
.back-to-top__icon {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ---------- Header ---------- */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 110;
  padding: 1rem 0;
  padding-top: calc(1rem + var(--safe-t));
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  transition: background 0.35s var(--ease), box-shadow 0.35s var(--ease), color 0.2s ease;
}

/* No topo (home): header compacto desde o primeiro paint */
.site-header.scrolled {
  background: rgba(255, 255, 255, 0.98);
  /* Sem backdrop-filter: cria containing block e prende position:fixed do menu mobile ao header */
  box-shadow: var(--shadow-sm);
}

/* TelemÃ³veis/tablet touch: blur no header custa GPU â†’ fundo opaco e transiÃ§Ã£o mais curta (header â€œbrancoâ€ imediato) */
@media (hover: none) and (pointer: coarse) {
  .site-header {
    transition: background 0.2s var(--ease), box-shadow 0.2s var(--ease), color 0.15s ease;
  }
  .site-header.scrolled {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: #ffffff;
    box-shadow: var(--shadow-sm);
  }
}

.site-header__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.site-header__logo {
  flex-shrink: 0;
  position: relative;
  display: inline-block;
  width: 160px;
  height: 38px;
}
.site-header__logo img {
  position: absolute;
  left: 0;
  top: 0;
  width: 160px;
  height: 38px;
  object-fit: contain;
  object-position: left center;
  transition: opacity 0.2s;
}
.site-header__logo:hover img { opacity: 0.85; }
.site-header__logo-img--white {
  display: none;
  /* Igualar tamanho visual ao logo normal (o PNG branco pode ter canvas/proporÃ§Ã£o diferente) */
  transform: scale(0.88);
  transform-origin: left center;
}

.site-header__nav { display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; }

/* Desktop: nav Ã© irmÃ£o do header (fora do fixed) â€” alinhar com a barra do logo.
   Menu hamburger atÃ© 1024px; nav horizontal a partir de 1025px (sem orientaÃ§Ã£o). */
@media (min-width: 1025px) {
  body > #site-nav.site-header__nav {
    position: fixed;
    top: calc(1rem + var(--safe-t));
    left: 50%;
    transform: translateX(-50%);
    width: min(var(--wrap), calc(100% - var(--page-pad-left) - var(--page-pad-right)));
    display: flex !important;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.25rem;
    z-index: 111;
    pointer-events: none;
    background: transparent;
    box-shadow: none;
    margin: 0;
    padding: 0;
    height: 38px;
    min-height: 0;
    max-height: none;
    overflow: visible;
    box-sizing: border-box;
  }
  body > #site-nav.site-header__nav > .site-header__link,
  body > #site-nav.site-header__nav > .site-header__group {
    pointer-events: auto;
  }
  body > #site-nav.site-header__nav > .site-header__group {
    align-self: center;
    height: 38px;
  }
  body > #site-nav.site-header__nav .site-header__link,
  body > #site-nav.site-header__nav .site-header__link--trigger {
    min-height: 38px;
    height: 38px;
    padding-top: 0;
    padding-bottom: 0;
    align-self: center;
  }
}
.site-header__link {
  font-family: var(--font-texto);
  font-size: clamp(0.6875rem, 1.5vw, 0.75rem);
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--preto);
  text-decoration: none;
  padding: var(--space-2) var(--space-3);
  min-height: var(--touch);
  min-width: var(--touch);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  transition: color 0.2s var(--ease), background 0.2s var(--ease);
}
.site-header__link:hover { color: var(--rosa); background: var(--rosa-suave); }
.site-header__link--active { color: var(--rosa); background: var(--rosa-suave); }
.site-header__link--cliente {
  margin-left: var(--space-2);
  color: var(--rosa);
  max-width: 11rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.site-header__link--cart {
  margin-left: var(--space-2);
  color: var(--rosa);
  padding-left: var(--space-2);
  padding-right: var(--space-2);
}
.site-header__cart-icon-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.site-header__cart-svg {
  display: block;
}
.site-header__link--cart .site-header__cart-count {
  position: absolute;
  top: -0.35rem;
  right: -0.55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.125rem;
  height: 1.125rem;
  padding: 0 0.3rem;
  font-size: 0.6rem;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  background: var(--rosa);
  border-radius: 999px;
  box-shadow: 0 0 0 2px var(--branco);
}
.site-header__link:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }

/* Dropdowns do menu principal */
.site-header__group {
  position: relative;
  display: inline-flex;
  align-items: stretch;
  flex-direction: column;
}
/* Mesma tipografia que .site-header__link (evitar font:inherit do <button> a anular clamp/size) */
.site-header__link--trigger {
  font-family: var(--font-texto);
  font-size: clamp(0.6875rem, 1.5vw, 0.75rem);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  border: none;
  background: transparent;
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  padding: var(--space-2) var(--space-3);
  min-height: var(--touch);
  min-width: var(--touch);
  border-radius: var(--radius-sm);
  transition: color 0.2s var(--ease), background 0.2s var(--ease);
}
.site-header__link--trigger::after {
  content: "";
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid currentColor;
  opacity: 0.65;
  margin-top: 2px;
  transition: transform 0.2s ease;
}
.site-header__group--active > .site-header__link--trigger {
  color: var(--rosa);
  background: var(--rosa-suave);
}
.site-header__submenu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 120;
  min-width: 240px;
  padding: 0.4rem 0;
  margin: 0;
  background: var(--branco);
  border-radius: var(--radius-sm);
  box-shadow: 0 10px 40px rgba(15, 23, 42, 0.12);
  border: 1px solid rgba(43, 43, 43, 0.08);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
  pointer-events: none;
}
.site-header__group:hover .site-header__submenu,
.site-header__group:focus-within .site-header__submenu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}
.site-header__sublink {
  display: block;
  padding: 0.55rem 1.1rem;
  font-family: var(--font-texto);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--preto);
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.site-header__sublink:hover {
  background: var(--rosa-suave);
  color: var(--rosa);
}
.site-header__sublink--active {
  background: var(--rosa-suave);
  color: var(--rosa);
}
.site-header__sublink-note {
  font-size: 0.75em;
  font-weight: 400;
  color: #888;
}

@media (min-width: 769px) and (max-width: 1180px) {
  .site-header__link,
  .site-header__link--trigger {
    font-size: 0.625rem;
    padding: var(--space-2) var(--space-2);
    letter-spacing: 0.06em;
    min-height: var(--touch);
  }
  .site-header__nav {
    justify-content: flex-end;
    row-gap: 0.35rem;
    column-gap: 0.2rem;
  }
  .site-header__submenu {
    min-width: 200px;
  }
}

.site-header__burger {
  display: none;
  width: var(--touch);
  min-width: var(--touch);
  height: var(--touch);
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--preto);
  padding: 0;
  border-radius: var(--radius-sm);
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  position: relative;
}
.site-header__burger:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }
.site-header__burger-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.site-header__burger-svg {
  width: 24px;
  height: 24px;
}
/* Um Ãºnico Ã­cone: as trÃªs linhas morfam para o X (origem no centro 12,12 do viewBox) */
.site-header__burger-line {
  transition: transform 0.3s var(--ease), opacity 0.25s var(--ease);
  transform-origin: 12px 12px;
}
.site-header__burger-line--mid {
  transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line--top {
  transform: translate(0, 6px) rotate(45deg);
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line--mid {
  opacity: 0;
  transform: scaleX(0);
}
.site-header__burger[aria-expanded="true"] .site-header__burger-line--bot {
  transform: translate(0, -6px) rotate(-45deg);
}
/* Menu aberto: botÃ£o de fechar sempre visÃ­vel (fundo escuro) */
body.nav-open .site-header__burger { color: var(--preto); }

/* ---------- Hero (duas colunas + fundo artÃ­stico) ---------- */
/* Altura fixa desde o primeiro paint para nÃ£o â€œencolherâ€ enquanto a imagem de fundo carrega */
.hero {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: calc(var(--header-h) + var(--safe-t) + var(--space-8)) 0 var(--space-16);
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  padding-bottom: calc(var(--space-16) + var(--safe-b));
  background-color: var(--preto);
  color: var(--branco);
  position: relative;
  overflow: hidden;
}

/* InÃ­cio â€” hero de margem a margem (safe-area sÃ³ em notch) */
.hero-band {
  padding-top: calc(var(--header-h) + var(--safe-t));
  padding-bottom: clamp(var(--space-6), 4vw, var(--space-10));
  padding-left: var(--safe-l);
  padding-right: var(--safe-r);
  background: var(--branco);
  overflow: hidden;
}

.hero-band > .hero {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

.hero.hero--banner {
  min-height: unset;
  height: var(--hero-banner-height);
  border-radius: 0;
  box-shadow: none;
  padding-top: clamp(var(--space-6), 4vw, var(--space-10));
  padding-bottom: clamp(var(--space-6), 4vw, var(--space-10));
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  justify-content: center;
}

.hero.hero--banner .hero__scroll {
  display: none;
}

/* Sem vinheta escura â€” sÃ³ a fotografia */
.hero.hero--banner.hero--custom-bg::before,
.hero.hero--banner.hero--carousel.hero--custom-bg::before,
.hero.hero--banner.hero--carousel .hero__slide::after {
  display: none;
}

.hero.hero--banner:not(.hero--carousel) .hero__inner {
  gap: clamp(var(--space-4), 3vw, var(--space-8));
}

.hero.hero--banner:not(.hero--carousel) .hero__title {
  font-size: var(--heading-display);
}

.hero.hero--banner:not(.hero--carousel) .hero__visual {
  display: none;
}

.hero.hero--banner.hero--carousel {
  padding-left: 0;
  padding-right: 0;
  padding-top: 0;
  padding-bottom: 0;
  overflow: hidden;
  /* Evita linha preta (1px) na base durante crossfade â€” herda --preto de .hero */
  background-color: var(--branco);
}

.hero.hero--banner.hero--carousel .hero__slide {
  padding: 0;
  justify-content: stretch;
}

/* Bleed inferior: tapa seam subpixel do GPU durante transiÃ§Ã£o entre slides */
.hero.hero--banner.hero--carousel .hero__slides {
  inset: 0 0 -2px 0;
}

.hero.hero--banner.hero--carousel .hero__slide-bg {
  inset: -1px -1px -2px -1px;
}

/* Carrossel: Ã¡rea de posicionamento = faixa entre margens da pÃ¡gina (igual em todos os ecrÃ£s) */
.hero--carousel .hero__textos,
.hero--carousel .hero__botoes {
  top: var(--hero-pos-inset-top);
  bottom: var(--hero-pos-inset-bottom);
  left: var(--hero-pos-pad-l);
  right: var(--hero-pos-pad-r);
}

.hero.hero--banner.hero--carousel .hero__botoes {
  pointer-events: auto;
}

.hero.hero--banner.hero--carousel .hero__slide:not(.is-active) .hero__botoes {
  pointer-events: none;
}

.hero.hero--banner.hero--carousel .hero__carousel-ui {
  bottom: var(--hero-banner-ui-bottom);
}

/* BotÃµes posicionados sobre a imagem do hero */
.hero__botoes {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
}

.hero--carousel .hero__slide.is-active .hero__botoes {
  pointer-events: auto;
}

.hero__botao-pos {
  position: absolute;
  left: var(--hero-pos-left, 50%);
  top: var(--hero-pos-top, 75%);
  transform: translate(-50%, -50%);
  transform-origin: center center;
  pointer-events: auto;
  max-width: min(92%, 20rem);
}

.hero__botao-pos[data-align="left"] {
  transform: translate(0, -50%);
}

.hero__botao-pos[data-align="right"] {
  transform: translate(-100%, -50%);
}

.hero__botao-pos.hero__pos--responsive {
  left: var(--hero-pos-left, 50%);
  top: var(--hero-pos-top, 75%);
}

.hero__texto-pos {
  position: absolute;
  left: var(--hero-pos-left, 50%);
  top: var(--hero-pos-top, 40%);
  transform: translate(-50%, -50%);
  transform-origin: center center;
  pointer-events: none;
  box-sizing: border-box;
  width: max-content;
  max-width: min(92%, var(--hero-carousel-text-max));
}

.hero__texto-pos.hero__pos--responsive {
  left: var(--hero-pos-left, 50%);
  top: var(--hero-pos-top, 40%);
}

.hero__texto-pos[data-align="left"] {
  transform: translate(0, -50%);
}

.hero__texto-pos[data-align="right"] {
  transform: translate(-100%, -50%);
}


.hero__texto.hero__texto--responsive {
  font-size: var(--hero-texto-size, 2.5rem);
}

.hero__texto-pos.hero__texto-pos--max-responsive {
  max-width: var(--hero-texto-max-w, min(92%, var(--hero-carousel-text-max)));
}
/* Mobile (â‰¤767px) â€” posicionamento, tamanho e imagem de fundo especÃ­ficos para telemÃ³vel */
@media (max-width: 767px) {
  .hero__botao-pos.hero__pos--responsive,
  .hero__texto-pos.hero__pos--responsive {
    left: var(--hero-pos-left-m, var(--hero-pos-left));
    top: var(--hero-pos-top-m, var(--hero-pos-top));
  }

  .hero__botao-pos.hero__pos--responsive[data-align-m="left"] {
    transform: translate(0, -50%);
  }

  .hero__botao-pos.hero__pos--responsive[data-align-m="right"] {
    transform: translate(-100%, -50%);
  }

  .hero__botao-pos.hero__pos--responsive[data-align-m="center"],
  .hero__botao-pos.hero__pos--responsive:not([data-align-m]) {
    transform: translate(-50%, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-m="left"] {
    transform: translate(0, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-m="right"] {
    transform: translate(-100%, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-m="center"] {
    transform: translate(-50%, -50%);
  }

  .hero__texto-pos.hero__texto-pos--max-responsive {
    max-width: var(--hero-texto-max-w-m, var(--hero-texto-max-w));
  }

  .hero__texto.hero__texto--responsive {
    font-size: var(--hero-texto-size-m, var(--hero-texto-size));
  }

  .hero--carousel .site-zona-layer.hero__slide-bg-layer--responsive {
    background-position: var(--sz-pos-x-m, var(--sz-pos-x, 50%)) var(--sz-pos-y-m, var(--sz-pos-y, 50%));
  }

}

/* Tablet (768pxâ€“1024px) â€” posicionamento, tamanho e imagem de fundo especÃ­ficos para tablet */
@media (min-width: 768px) and (max-width: 1024px) {
  .hero__botao-pos.hero__pos--responsive,
  .hero__texto-pos.hero__pos--responsive {
    left: var(--hero-pos-left-t, var(--hero-pos-left, 50%));
    top: var(--hero-pos-top-t, var(--hero-pos-top, 50%));
  }

  .hero__botao-pos.hero__pos--responsive[data-align-t="left"] {
    transform: translate(0, -50%);
  }

  .hero__botao-pos.hero__pos--responsive[data-align-t="right"] {
    transform: translate(-100%, -50%);
  }

  .hero__botao-pos.hero__pos--responsive[data-align-t="center"],
  .hero__botao-pos.hero__pos--responsive:not([data-align-t]) {
    transform: translate(-50%, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-t="left"] {
    transform: translate(0, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-t="right"] {
    transform: translate(-100%, -50%);
  }

  .hero__texto-pos.hero__pos--responsive[data-align-t="center"],
  .hero__texto-pos.hero__pos--responsive:not([data-align-t]) {
    transform: translate(-50%, -50%);
  }

  .hero__texto-pos.hero__texto-pos--max-responsive {
    max-width: var(--hero-texto-max-w-t, var(--hero-texto-max-w));
  }

  .hero__texto.hero__texto--responsive {
    font-size: var(--hero-texto-size-t, var(--hero-texto-size));
  }

  .hero--carousel .site-zona-layer.hero__slide-bg-layer--responsive {
    background-position: var(--sz-pos-x-t, var(--sz-pos-x, 50%)) var(--sz-pos-y-t, var(--sz-pos-y, 50%));
  }

}

.hero__botao-pos .btn {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Textos posicionÃ¡veis no hero (carrossel) */
.hero__textos {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
}

.hero__texto {
  margin: 0;
  white-space: normal;
  word-break: break-word;
}

.hero--carousel .hero__slide:not(.is-active) .hero__textos {
  pointer-events: none;
}

@media (max-width: 768px),
       (min-width: 769px) and (max-width: 1024px) and (orientation: portrait) {
  .hero-band .hero.hero--banner:not(.hero--carousel) {
    padding-top: clamp(var(--space-5), 4vw, var(--space-8));
    padding-bottom: clamp(var(--space-5), 4vw, var(--space-8));
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
  }
  .hero-band .hero.hero--banner.hero--carousel {
    padding: 0;
  }
}

/* Carrossel: padding horizontal simÃ©trico (evita miolo deslocado quando safe-l â‰  safe-r) */
.hero.hero--carousel {
  /* Denominador maior â†’ fonte menor quando a linha tem de caber (maiÃºsculas + letter-spacing) */
  --hero-carousel-title-fit: 8.85;
  --hero-flash-duration: 1.3s;
  --hero-flash-fade: 0.6s;
  --hero-flash-delay: 0.5s;
  --hero-flash-peak: 0.75;
  padding-left: var(--hero-carousel-pad-x);
  padding-right: var(--hero-carousel-pad-x);
  /* ForÃ§a o hero na sua prÃ³pria layer GPU desde o inÃ­cio, evitando o seam de 1px
     que aparece na borda inferior durante/apÃ³s transiÃ§Ãµes de slide (compositing artifact) */
  transform: translateZ(0);
  isolation: isolate;
}

/* Com foto do admin: sÃ³ fotografia + vinheta escura (sem a textura antiga de pincel/parede) */
.hero.hero--custom-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  /* Mais escuro em cima (cabeÃ§alho / contraste do menu), mais claro em baixo */
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.78) 0%,
    rgba(0, 0, 0, 0.48) 48%,
    rgba(0, 0, 0, 0.32) 100%
  );
}

/* Textura antiga (pincel): sÃ³ quando NÃƒO hÃ¡ imagem configurada no admin */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  opacity: 0.55;
  background-color: transparent;
  background-image: url("../textura/top-view-paint-brush-corner.jpg");
  background-size: cover;
  background-position: center;
  mix-blend-mode: overlay;
  transform: scaleY(-1);
}
.hero.hero--custom-bg::after {
  display: none;
}

/* Fotografia configurÃ¡vel no admin: moldura + camada (z-index no .hero__site-bg) */
.hero__site-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

/* Carrossel: a vinheta fica *dentro* de cada slide (abaixo do texto), nÃ£o no section â€”
   o ::before do section cobria o .hero__slides inteiro (z-index 0) e escondia o texto. */
.hero--carousel.hero--custom-bg::before {
  display: none;
}

/* Carrossel: slides empilhados, fundo por diapositivo */
.hero--carousel .hero__slides {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.hero--carousel .hero__slide {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  box-sizing: border-box;
  min-width: 0;
  overflow: hidden;
  --hero-carousel-pad-x: max(var(--page-pad-left), var(--page-pad-right));
  padding-top: calc(var(--header-h) + var(--safe-t) + var(--space-8));
  padding-bottom: calc(var(--space-16) + var(--safe-b));
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  visibility: hidden;
}
.hero--carousel .hero__slide.is-active,
.hero--carousel .hero__slide.is-out {
  visibility: visible;
}
/* Fundo + vinheta (::after): sÃ³ crossfade entre fotos (sem deslize horizontal) */
.hero--carousel .hero__slide-bg,
.hero--carousel .hero__slide::after {
  transition: none;
  opacity: 0;
}
.hero--carousel .hero__slide.is-active .hero__slide-bg,
.hero--carousel .hero__slide.is-out .hero__slide-bg,
.hero--carousel .hero__slide.is-active::after,
.hero--carousel .hero__slide.is-out::after {
  transition: opacity 0.75s ease;
}
.hero--carousel .hero__slide.is-active .hero__slide-bg,
.hero--carousel .hero__slide.is-active::after {
  opacity: 1;
}
.hero--carousel .hero__slide.is-out .hero__slide-bg,
.hero--carousel .hero__slide.is-out::after {
  opacity: 0;
}
.hero--carousel .hero__slide.is-active {
  z-index: 3;
}
.hero--carousel .hero__slide.is-out {
  z-index: 2;
}

/* Transição entre slides: flash suave para branco */
.hero--carousel.is-flashing::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 8;
  pointer-events: none;
  background: var(--branco);
  animation: heroWhiteFlash var(--hero-flash-duration) cubic-bezier(0.45, 0.05, 0.25, 1) forwards;
}
@keyframes heroWhiteFlash {
  0% { opacity: 0; }
  38% { opacity: var(--hero-flash-peak); }
  62% { opacity: var(--hero-flash-peak); }
  100% { opacity: 0; }
}
.hero--carousel.is-flashing .hero__slide.is-active .hero__slide-bg,
.hero--carousel.is-flashing .hero__slide.is-out .hero__slide-bg,
.hero--carousel.is-flashing .hero__slide.is-active::after,
.hero--carousel.is-flashing .hero__slide.is-out::after {
  transition-duration: var(--hero-flash-fade);
  transition-timing-function: ease-in-out;
}
.hero--carousel.is-flashing .hero__slide.is-out .hero__slide-bg,
.hero--carousel.is-flashing .hero__slide.is-out::after {
  opacity: 0;
  transition-delay: 0s;
}
.hero--carousel.is-flashing .hero__slide.is-active .hero__slide-bg,
.hero--carousel.is-flashing .hero__slide.is-active::after {
  opacity: 1;
  transition-delay: var(--hero-flash-delay);
}

/* Textos e botões: entram/saem com o flash (mesmo timing do fundo) */
.hero--carousel .hero__textos,
.hero--carousel .hero__botoes {
  opacity: 0;
  transition: none;
}
.hero--carousel .hero__slide.is-active .hero__textos,
.hero--carousel .hero__slide.is-active .hero__botoes,
.hero--carousel .hero__slide.is-out .hero__textos,
.hero--carousel .hero__slide.is-out .hero__botoes {
  transition: opacity 0.75s ease-in-out;
}
.hero--carousel .hero__slide.is-active .hero__textos,
.hero--carousel .hero__slide.is-active .hero__botoes {
  opacity: 1;
}
.hero--carousel .hero__slide.is-out .hero__textos,
.hero--carousel .hero__slide.is-out .hero__botoes {
  opacity: 0;
}
.hero--carousel.is-flashing .hero__slide.is-active .hero__textos,
.hero--carousel.is-flashing .hero__slide.is-active .hero__botoes,
.hero--carousel.is-flashing .hero__slide.is-out .hero__textos,
.hero--carousel.is-flashing .hero__slide.is-out .hero__botoes {
  transition-duration: var(--hero-flash-fade);
  transition-timing-function: ease-in-out;
}
.hero--carousel.is-flashing .hero__slide.is-out .hero__textos,
.hero--carousel.is-flashing .hero__slide.is-out .hero__botoes {
  opacity: 0;
  transition-delay: 0s;
}
.hero--carousel.is-flashing .hero__slide.is-active .hero__textos,
.hero--carousel.is-flashing .hero__slide.is-active .hero__botoes {
  opacity: 1;
  transition-delay: var(--hero-flash-delay);
}

@media (prefers-reduced-motion: reduce) {
  .hero--carousel .hero__slide-bg,
  .hero--carousel .hero__slide::after {
    transition: opacity 0.42s ease;
  }
  .hero--carousel .hero__textos,
  .hero--carousel .hero__botoes {
    transition: none;
  }
  .hero--carousel .hero__slide.is-active .hero__textos,
  .hero--carousel .hero__slide.is-active .hero__botoes {
    opacity: 1;
  }
  .hero--carousel.is-flashing::before {
    animation: none;
    opacity: 0;
  }
}
/* Vinheta por slide: acima da foto, abaixo do texto e dos botÃµes */
.hero--carousel .hero__slide::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.78) 0%,
    rgba(0, 0, 0, 0.48) 48%,
    rgba(0, 0, 0, 0.32) 100%
  );
}
.hero--carousel .hero__slide-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.hero--carousel .hero__carousel-ui {
  position: absolute;
  bottom: var(--hero-carousel-ui-bottom);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 0.65rem;
  pointer-events: none;
}
.hero--carousel .hero__carousel-ui > * {
  pointer-events: auto;
}
.hero--carousel .hero__carousel-dots {
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
.hero--carousel .hero__carousel-dot {
  width: 9px;
  height: 9px;
  padding: 0;
  border: none;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.35);
  cursor: pointer;
  transition: transform 0.2s, background 0.2s;
  -webkit-tap-highlight-color: transparent;
}
.hero--carousel .hero__carousel-dot.is-active {
  background: #fff;
  transform: scale(1.15);
}
.hero--carousel .hero__carousel-dot:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}

/* Setas prev/next — visíveis só com rato sobre o hero (desktop) */
.hero--carousel .hero__carousel-arrow {
  position: absolute;
  top: 50%;
  z-index: 9;
  display: none;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  margin: 0;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.42);
  color: #fff;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-50%) scale(0.94);
  transition:
    opacity 0.35s var(--ease),
    transform 0.35s var(--ease),
    background 0.2s var(--ease),
    border-color 0.2s var(--ease),
    box-shadow 0.2s var(--ease);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
  -webkit-tap-highlight-color: transparent;
}
.hero--carousel .hero__carousel-arrow--prev {
  left: clamp(0.65rem, 2vw, 1.35rem);
}
.hero--carousel .hero__carousel-arrow--next {
  right: clamp(0.65rem, 2vw, 1.35rem);
}
.hero--carousel .hero__carousel-arrow-icon {
  display: block;
  flex-shrink: 0;
}
@media (hover: hover) and (pointer: fine) {
  .hero--carousel .hero__carousel-arrow {
    display: inline-flex;
  }
  .hero--carousel:hover .hero__carousel-arrow,
  .hero--carousel .hero__carousel-arrow:focus-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(-50%) scale(1);
  }
  .hero--carousel .hero__carousel-arrow:hover {
    background: rgba(0, 0, 0, 0.62);
    border-color: rgba(255, 255, 255, 0.42);
    transform: translateY(-50%) scale(1.06);
  }
  .hero--carousel .hero__carousel-arrow:active {
    transform: translateY(-50%) scale(0.98);
  }
}
.hero--carousel .hero__carousel-arrow:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
  .hero--carousel .hero__carousel-arrow {
    transition: opacity 0.2s ease, background 0.2s ease, border-color 0.2s ease;
  }
  .hero--carousel .hero__carousel-arrow:hover,
  .hero--carousel .hero__carousel-arrow:active {
    transform: translateY(-50%);
  }
}

@media (max-width: 768px) {
  .hero--carousel .hero__carousel-arrow {
    display: none !important;
    visibility: hidden;
    pointer-events: none;
  }
  .hero--carousel:not(.hero--banner) .hero__carousel-ui {
    bottom: calc(5rem + var(--safe-b));
    gap: 0.4rem;
  }
  .hero.hero--banner.hero--carousel .hero__carousel-ui {
    bottom: var(--hero-banner-ui-bottom);
  }
  .hero--carousel .hero__carousel-dots {
    gap: 0.28rem;
  }
  .hero--carousel .hero__carousel-dot {
    width: 8px;
    height: 8px;
  }
  .hero--carousel .hero__carousel-dot.is-active {
    transform: scale(1.12);
  }
}

/* Recorte visÃ­vel; a camada interior Ã© ~14% maior â†’ com background-size:cover hÃ¡ folga
   nos dois eixos e o posicionamento H (e V) deixa de ficar â€œpresoâ€ em fotos horizontais no hero largo */
.site-zona-frame {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  border-radius: inherit;
  z-index: 0;
}

.site-zona-frame > .site-zona-layer {
  position: absolute;
  inset: -14%;
  width: auto;
  height: auto;
}

/* Carrossel do hero: zoom no wrapper; pan (H/V) sÃ³ na .site-zona-layer interior.
   Com scale() e background-position no mesmo elemento, o eixo horizontal deixava de atualizar nalguns browsers. */
.hero--carousel .site-zona-frame > .site-zona-scaler {
  position: absolute;
  inset: -14%;
  width: auto;
  height: auto;
  transform-origin: center center;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
/* Zoom desktop (slides sem overrides mobile/tablet) */
.hero--carousel .site-zona-frame > .site-zona-scaler:not(.hero__slide-bg-scaler--responsive) {
  transform: scale(var(--sz-zoom, 1)) translateZ(0);
}
.hero--carousel .site-zona-scaler > .site-zona-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transform: none;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  /* 128% (= inset -14% Ã— 2) em vez de cover: em banners largos com foto horizontal,
     cover prende o eixo H â€” a largura fica exacta e background-position-x nÃ£o desloca nada. */
  background-size: 128%;
}

/* Zoom responsivo do fundo — regras DEPOIS da base do scaler (mesma especificidade
   que .site-zona-frame > .site-zona-scaler; ordem + selector mais longo garante mobile/tablet). */
.hero--carousel .site-zona-frame > .site-zona-scaler.hero__slide-bg-scaler--responsive {
  transform: scale(var(--sz-zoom, 1)) translateZ(0);
}

@media (max-width: 767px) {
  .hero--carousel .site-zona-frame > .site-zona-scaler.hero__slide-bg-scaler--responsive {
    transform: scale(var(--sz-zoom-m, var(--sz-zoom, 1))) translateZ(0);
  }
}

@media (min-width: 768px) and (max-width: 1024px) {
  .hero--carousel .site-zona-frame > .site-zona-scaler.hero__slide-bg-scaler--responsive {
    transform: scale(var(--sz-zoom-t, var(--sz-zoom, 1))) translateZ(0);
  }
}

/* Imagem + posição + zoom (--sz-pos-x / --sz-pos-y separados: melhor suporte em shorthand) */
.site-zona-layer {
  background-image: var(--sz-img, none);
  background-size: cover;
  background-position: var(--sz-pos-x, 50%) var(--sz-pos-y, 50%);
  background-repeat: no-repeat;
  transform: scale(var(--sz-zoom, 1)) translateZ(0);
  transform-origin: center center;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

/* Modo "imagem inteira" â€” mostra a foto completa sem recorte.
   O scaler fica com inset:0 e sem zoom para que o posicionamento (H/V)
   funcione dentro da Ã¡rea visÃ­vel exata do frame. */
.hero__slide-bg--contain > .site-zona-scaler {
  inset: 0;
  transform: none !important;
}
.hero__slide-bg--contain .site-zona-scaler > .site-zona-layer {
  /* zoom integrado no background-size: zoom=1 â†’ imagem preenche a altura (contain); zoom>1 â†’ amplia */
  background-size: auto calc(100% * var(--sz-zoom, 1)) !important;
  background-position: var(--sz-pos-x, 50%) var(--sz-pos-y, 50%) !important;
  background-repeat: no-repeat;
  transform: none !important;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Modo "Ajustar" responsivo â€” estas media queries ficam DEPOIS da regra base para que o
   !important destas ganhe Ã  regra base quando o viewport corresponde ao tamanho certo */
@media (max-width: 767px) {
  .hero__slide-bg--contain .site-zona-scaler > .site-zona-layer {
    background-size: auto calc(100% * var(--sz-zoom-m, var(--sz-zoom, 1))) !important;
    background-position: var(--sz-pos-x-m, var(--sz-pos-x, 50%)) var(--sz-pos-y-m, var(--sz-pos-y, 50%)) !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .hero__slide-bg--contain .site-zona-scaler > .site-zona-layer {
    background-size: auto calc(100% * var(--sz-zoom-t, var(--sz-zoom, 1))) !important;
    background-position: var(--sz-pos-x-t, var(--sz-pos-x, 50%)) var(--sz-pos-y-t, var(--sz-pos-y, 50%)) !important;
  }
}

.hero__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 5vw, 3.5rem);
  align-items: center;
  justify-items: center;
  position: relative;
  z-index: 3; /* acima de ::after (textura, z-2) */
}

/* AnimaÃ§Ã£o de entrada do hero ao abrir a pÃ¡gina (dispara com body.loaded) */
.hero:not(.hero--carousel) .hero__kicker,
.hero:not(.hero--carousel) .hero__title,
.hero:not(.hero--carousel) .hero__subtitle,
.hero:not(.hero--carousel) .hero__tagline,
.hero:not(.hero--carousel) .hero__cta,
.hero:not(.hero--carousel) .hero__visual,
.hero:not(.hero--carousel) .hero__scroll {
  opacity: 0;
  transform: translateY(20px);
}

body.loaded .hero:not(.hero--carousel) .hero__kicker,
body.loaded .hero:not(.hero--carousel) .hero__title,
body.loaded .hero:not(.hero--carousel) .hero__subtitle,
body.loaded .hero:not(.hero--carousel) .hero__tagline,
body.loaded .hero:not(.hero--carousel) .hero__cta,
body.loaded .hero:not(.hero--carousel) .hero__visual {
  animation: heroReveal 1s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
body.loaded .hero:not(.hero--carousel) .hero__scroll {
  animation: heroRevealCenter 1s cubic-bezier(0.22, 1, 0.36, 1) 1.1s forwards;
}
body.loaded .hero:not(.hero--carousel) .hero__kicker   { animation-delay: 0.2s; }
body.loaded .hero:not(.hero--carousel) .hero__title    { animation-delay: 0.38s; }
body.loaded .hero:not(.hero--carousel) .hero__subtitle { animation-delay: 0.54s; }
body.loaded .hero:not(.hero--carousel) .hero__tagline  { animation-delay: 0.68s; }
body.loaded .hero:not(.hero--carousel) .hero__cta      { animation-delay: 0.82s; }
body.loaded .hero:not(.hero--carousel) .hero__visual   { animation-delay: 0.46s; }

body.loaded .hero--carousel .hero__scroll {
  animation: heroRevealCenter 1s cubic-bezier(0.22, 1, 0.36, 1) 1.1s forwards;
}

.hero--carousel .hero__scroll {
  opacity: 0;
  transform: translate(-50%, 20px);
  z-index: 6;
}

@keyframes heroReveal {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes heroRevealCenter {
  from {
    opacity: 0;
    transform: translate(-50%, 20px);
  }
  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

.hero__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: min(100%, var(--prose-2xl));
  width: 100%;
  text-align: center;
  box-sizing: border-box;
}

/* SensaÃ§Ã£o de texto escrito/pintado na parede: sombras suaves que â€œcolamâ€ o tipo Ã  superfÃ­cie */
/* Hero: mesma formataÃ§Ã£o e design que a pÃ¡gina de manutenÃ§Ã£o (sem sombras) */
/* DimensÃµes iguais Ã  pÃ¡gina de manutenÃ§Ã£o: space-xs=0.5rem, space-sm=1rem */
.hero__kicker {
  font-family: var(--font-texto);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 0.6rem;
  width: 100%;
}

.hero__title {
  font-family: var(--font-texto);
  font-size: var(--heading-hero);
  font-weight: 600;
  line-height: 1.05;
  --hero-title-track: 0.1em;
  letter-spacing: var(--hero-title-track);
  text-transform: lowercase;
  margin: 0 0 1.15rem;
  color: var(--branco);
  white-space: nowrap;
  width: max-content;
  max-width: 100%;
  margin-inline: 0;
  text-align: center;
  box-sizing: border-box;
  padding-inline: 0.05em;
}

.hero__subtitle {
  font-family: var(--font-texto);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  margin: 0 0 1.15rem;
  padding-bottom: 1.15rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
  width: 100%;
}

.hero__tagline {
  font-family: var(--font-texto);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.88);
  margin: 0 0 1.15rem;
  width: 100%;
}

.hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
  justify-content: center;
  margin-top: 1.15rem;
  width: 100%;
}

.hero__visual {
  position: relative;
  aspect-ratio: 1;
  max-width: min(320px, 50vw);
  justify-self: center;
}

.hero__shape {
  position: absolute;
  border-radius: 50%;
  transition: transform 20s var(--ease-out);
}
@media (prefers-reduced-motion: no-preference) and (hover: hover) and (pointer: fine) {
  /* Apenas em desktop com pointer fino: blur+animaÃ§Ã£o sÃ£o pesados em mobile */
  .hero__shape--1 { animation: heroFloat1 50s ease-in-out infinite; }
  .hero__shape--2 { animation: heroFloat2 62s ease-in-out infinite 3s; }
  .hero__shape--3 { animation: heroFloat1 44s ease-in-out infinite reverse 2s; }
  .hero__shape--4 { animation: heroFloat2 56s ease-in-out infinite 5s; }
}
/* Em mobile/touch: blur leve sem animaÃ§Ã£o, mantÃ©m a estÃ©tica sem custo de compositing */
@media (pointer: coarse) {
  .hero__shape { filter: blur(4px); }
}
@keyframes heroFloat1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(3%, -4%) scale(1.03); }
  66% { transform: translate(-2%, 2%) scale(0.98); }
}
@keyframes heroFloat2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(-3%, 3%) scale(1.02); }
  66% { transform: translate(2%, -2%) scale(0.99); }
}

.hero__shape--1 {
  width: 56%;
  height: 56%;
  top: -4%;
  right: -4%;
  background: radial-gradient(circle at 40% 40%, var(--rosa), transparent 70%);
  opacity: 0.38;
  filter: blur(8px);
}
.hero__shape--2 {
  width: 44%;
  height: 44%;
  bottom: 8%;
  left: -4%;
  background: radial-gradient(circle at 60% 60%, var(--azul), transparent 70%);
  opacity: 0.28;
  filter: blur(6px);
}
.hero__shape--3 {
  width: 34%;
  height: 34%;
  top: 35%;
  left: 25%;
  background: radial-gradient(circle at 50% 50%, var(--amarelo), transparent 70%);
  opacity: 0.32;
  filter: blur(4px);
}
.hero__shape--4 {
  width: 28%;
  height: 28%;
  bottom: 25%;
  right: 18%;
  background: radial-gradient(circle at 50% 50%, var(--verde), transparent 70%);
  opacity: 0.26;
  filter: blur(4px);
}

.hero__scroll {
  position: absolute;
  bottom: calc(1.75rem + var(--safe-b));
  left: 50%;
  transform: translate(-50%, 20px);
  z-index: 4; /* acima do .hero__inner e da textura */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  color: rgba(255,255,255,0.95);
  text-decoration: none;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  transition: color 0.2s, transform 0.2s;
}
.hero__scroll:hover { color: var(--branco); }
.hero__scroll:hover .hero__scroll-indicator { transform: translateY(2px); }

/* Indicador: dois chevrons em cascata */
.hero__scroll-indicator {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  transition: transform 0.2s ease;
}

.hero__scroll-chevron {
  width: 0;
  height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-top: 6px solid currentColor;
  opacity: 0.9;
  animation: scrollChevron 2.2s ease-in-out infinite;
}
.hero__scroll-chevron:last-child {
  animation-delay: 0.35s;
}

@keyframes scrollChevron {
  0%, 100% {
    transform: translateY(0);
    opacity: 0.85;
  }
  50% {
    transform: translateY(6px);
    opacity: 1;
  }
}

/* ---------- BotÃµes (alinhados Ã  pÃ¡gina de manutenÃ§Ã£o, ligeiramente maiores) ---------- */
.btn {
  font-family: var(--font-texto);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.5rem 0.95rem;
  min-height: 44px;
  border: none;
  border-radius: 0;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease, color 0.2s, border-color 0.2s, transform 0.15s ease;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.btn:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }
@media (hover: none) {
  .btn:hover { transform: none; }
  .btn--primary:hover { transform: none; }
}
.btn:active { transform: scale(0.98); }

.btn--primary {
  background: var(--rosa);
  color: var(--branco);
}
.btn--primary:hover {
  background: #c91858;
  transform: translateY(-1px);
  color: var(--branco);
}

.btn--ghost {
  background: transparent;
  color: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.4);
}
.btn--ghost:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--branco);
  border-color: rgba(255, 255, 255, 0.6);
}

.btn--outline {
  background: transparent;
  color: var(--preto);
  border: 2px solid var(--preto);
}
.btn--outline:hover {
  background: var(--preto);
  color: var(--branco);
  transform: translateY(-2px);
}

.btn.btn--hero-custom {
  background: var(--hero-btn-bg, var(--rosa));
  color: var(--hero-btn-color, var(--branco));
  border: 1px solid var(--hero-btn-border, var(--hero-btn-bg, transparent));
}
.btn.btn--hero-custom:hover {
  filter: brightness(0.94);
  transform: translateY(-1px);
  color: var(--hero-btn-color, var(--branco));
}

.btn--white {
  background: var(--branco);
  color: var(--rosa);
}
.btn--white:hover {
  background: #f5f5f5;
  color: var(--rosa-escuro);
  transform: translateY(-2px);
}

.btn--white-ghost {
  background: transparent;
  color: var(--branco);
  border: 2px solid var(--branco);
}
.btn--white-ghost:hover {
  background: var(--branco);
  color: var(--rosa);
  transform: translateY(-2px);
}

.btn--dark {
  background: var(--preto);
  color: var(--branco);
}
.btn--dark:hover {
  background: #333;
  color: var(--branco);
  transform: translateY(-2px);
}

.btn--outline-dark {
  background: transparent;
  color: var(--preto);
  border: 2px solid var(--preto);
}
.btn--outline-dark:hover {
  background: var(--preto);
  color: var(--branco);
  transform: translateY(-2px);
}

/* ---------- Blocos (secÃ§Ãµes) ---------- */
.block {
  padding: var(--section-y-lg) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
}
.block--light { background: var(--branco); }
.block--alt { background: #f8f7f5; }

/* InÃ­cio: mais espaÃ§o entre secÃ§Ãµes (faixa hero â†’ blocos â†’ citaÃ§Ã£o â†’ CTA) */
body.site-body--home .hero-band {
  padding-bottom: clamp(var(--space-4), 2.5vw, var(--space-6));
}
body.site-body--home #sobre.block {
  padding-top: clamp(var(--space-8), 5vw, var(--space-12));
  padding-bottom: clamp(var(--space-10), 5.5vw, var(--space-16));
  overflow-x: clip;
}
body.site-body--home #sobre + .stats-strip {
  margin-top: clamp(var(--space-6), 3.5vw, var(--space-8));
}
body.site-body--home .hero.hero--banner:not(.hero--carousel) .hero__inner {
  gap: clamp(2.25rem, 5vw, 4rem);
}
body.site-body--home .hero__subtitle {
  margin-bottom: 1.35rem;
  padding-bottom: 1.35rem;
}
body.site-body--home .hero__tagline {
  margin-bottom: 1.5rem;
}
body.site-body--home .hero__cta {
  margin-top: 1.5rem;
  gap: 1rem;
}
body.site-body--home .block {
  padding-top: var(--section-y-home);
  padding-bottom: var(--section-y-home);
}
body.site-body--home .quote {
  padding-top: var(--section-y-home);
  padding-bottom: var(--section-y-home);
}
body.site-body--home .banner {
  padding-top: var(--section-y-home);
  padding-bottom: var(--section-y-home);
}
body.site-body--home .block__head {
  margin-bottom: var(--space-12);
}
body.site-body--home .block__action {
  margin-top: var(--space-10);
}
body.site-body--home .services {
  margin-bottom: var(--space-4);
}
body.site-body--home .events-list {
  gap: 1.5rem;
}
body.site-body--home .events-list--preview-workshops {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 1024px) {
  body.site-body--home .events-list--preview-workshops {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 900px) {
  body.site-body--home .events-list--preview-workshops {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 480px) {
  body.site-body--home .events-list--preview-workshops {
    grid-template-columns: 1fr;
  }
}
body.site-body--home .gallery {
  gap: clamp(var(--space-4), 2.5vw, var(--space-6));
  margin-bottom: var(--space-8);
}
body.site-body--home .block__grid {
  gap: clamp(calc(var(--space-8) + 0.5rem), 5vw, calc(var(--space-12) + 0.5rem));
}

/* Início — desktop: títulos Yeseva ligeiramente mais compactos */
@media (min-width: 901px) {
  body.site-body--home .block__title {
    font-size: clamp(calc(1.475rem * var(--title-scale)), calc(2.94vw + 0.375rem), calc(2.325rem * var(--title-scale)));
  }
  body.site-body--home .newsletter-cta__title {
    font-size: clamp(calc(1.475rem * var(--title-scale)), calc(2.84vw + 0.43rem), calc(2rem * var(--title-scale)));
  }
  body.site-body--home .svc-carousel__title {
    font-size: clamp(calc(1.05rem * var(--title-scale)), calc(1.77vw + 0.27rem), calc(1.25rem * var(--title-scale)));
  }
  body.site-body--home .event-card__title {
    font-size: calc(1.125rem * var(--title-scale));
  }
  body.site-body--home #depoimentos .block__head {
    margin-bottom: clamp(var(--space-6), 3vw, var(--space-8));
  }
}

.wrap,
.section__inner {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
}
.wrap--narrow,
.section__inner--narrow { max-width: var(--wrap-narrow); }

.block__kicker,
.section__kicker,
.page-hero__eyebrow {
  font-family: var(--font-texto);
  font-size: var(--text-kicker);
  font-weight: 600;
  letter-spacing: var(--text-kicker-spacing);
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 var(--space-2);
  display: block;
}

.block__title,
.section__title,
.page-hero__title {
  font-family: var(--font-titulo);
  font-size: var(--heading-section);
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.02em;
  line-height: 1.18;
  margin: 0 0 var(--space-3);
  color: var(--preto);
}

.page-hero__title {
  font-size: var(--heading-page);
}

.block__lead,
.section__lead,
.page-hero__lead {
  font-family: var(--font-texto);
  font-size: var(--text-lead);
  color: #4d4d4d;
  line-height: 1.68;
  margin: 0 0 var(--space-6);
}

.block__head,
.section__head {
  text-align: center;
  max-width: var(--prose-md);
  margin: 0 auto clamp(var(--space-10), 4vw, var(--space-12));
}
.block__head .block__lead,
.section__head .section__lead { margin-bottom: 0; }

.block__action {
  text-align: center;
  margin: clamp(var(--space-8), 3vw, var(--space-10)) 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  justify-content: center;
  align-items: center;
}
.block__action--split {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  justify-content: center;
  align-items: center;
}

.block__grid {
  display: grid;
  gap: clamp(var(--space-8), 5vw, var(--space-12));
  align-items: center;
}
.block__grid--2 { grid-template-columns: 1fr 1fr; }

.block__figure {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16/9;
  border-radius: var(--radius-lg);
  background: linear-gradient(165deg, var(--rosa-suave) 0%, var(--amarelo-suave) 45%, var(--azul-suave) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-md);
}
.block__figure--has-img .block__figure-text {
  display: none;
}
.block__figure-text {
  font-family: var(--font-titulo);
  font-size: clamp(3.5rem, 9vw, 6.5rem);
  font-weight: 600;
  color: var(--rosa);
  opacity: 0.42;
}

/* InÃ­cio â€” Quem somos: imagem dentro do miolo (mesmas margens que .wrap / header) */
#sobre .block__grid--2 {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  align-items: center;
}
#sobre .block__aside {
  min-width: 0;
  max-width: 100%;
}
#sobre .block__figure {
  aspect-ratio: 16 / 10;
  width: min(100%, var(--figure-max));
  max-width: 100%;
  margin-left: auto;
  margin-right: 0;
  box-sizing: border-box;
}
@media (max-width: 900px) {
  /* A especificidade do ID (#sobre) anula o breakpoint genÃ©rico de .block__grid--2 â€”
     repete o seletor aqui para garantir o colapso para 1 coluna em mobile/tablet */
  #sobre .block__grid--2 {
    grid-template-columns: minmax(0, 1fr);
  }
  #sobre .block__kicker,
  #sobre .block__title {
    text-align: center;
  }
  #sobre .block__figure {
    width: 100%;
    max-width: 100%;
    margin: 0 auto;
  }
}

/* Imagem "Sobre nÃ³s" na homepage: mais alta em mobile (16/10 = ~234px â€” pouco) */
@media (max-width: 640px) {
  #sobre .block__figure {
    aspect-ratio: 4 / 3;
  }
}

/* Â«Quem somosÂ»: segunda imagem em dissoluÃ§Ã£o ao passar o rato (sÃ³ aparelhos com hover fino) */
.block__figure--has-hover .block__figure__layer--hover {
  z-index: 1;
  pointer-events: none;
  opacity: 0;
}
@media (hover: hover) {
  .block__figure--has-hover .block__figure__layer--hover {
    transition: opacity 0.45s ease;
  }
  .block__figure--has-hover:hover .block__figure__layer--hover {
    opacity: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  .block__figure--has-hover .block__figure__layer--hover {
    transition: none;
  }
}

/* ---------- Link ---------- */
.link {
  font-family: var(--font-texto);
  font-weight: 500;
  color: var(--rosa);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: color 0.2s ease;
}
.link:hover { color: var(--rosa-escuro); }
.link:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }
.link::after {
  content: "\2192";
  display: inline-block;
  /* transform em vez de gap: animaÃ§Ã£o no compositor, sem reflow do flex */
  transition: transform 0.25s var(--ease);
  will-change: transform;
}
.link:hover::after { transform: translateX(3px); }
/* Voltar Ã  lista (sem seta extra â€” .link acrescenta â†’ por defeito) */
.link--back::after { content: none; }

/* ---------- ServiÃ§os (cards visuais) ---------- */
.services {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: var(--space-6);
  margin-bottom: var(--space-4);
  width: 100%;
}

/* InÃ­cio â€” secÃ§Ã£o Â«ServiÃ§os e ExperiÃªnciasÂ»: cabeÃ§alho e CTA centrados; cartÃµes largura total */
#o-que-fazemos .block__head,
#o-que-fazemos .block__action {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}

#depoimentos .block__head,
#depoimentos .block__action {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}

body.site-body--home #depoimentos .block__head {
  margin-bottom: clamp(var(--space-4), 2.5vw, var(--space-6));
}

.service {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: var(--space-8) var(--space-8) var(--space-6);
  border-radius: var(--radius-lg);
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.07);
  box-shadow: var(--shadow-sm);
  transition: transform 0.6s var(--ease), box-shadow 0.6s var(--ease), border-color 0.6s;
}
.service:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lg);
  border-color: rgba(43, 43, 43, 0.13);
}

/* NÃºmero decorativo de fundo */
.service::before {
  content: counter(service-counter);
  counter-increment: service-counter;
  position: absolute;
  top: -0.1em;
  right: 0.25em;
  font-family: var(--font-titulo);
  font-size: 7rem;
  font-weight: 700;
  line-height: 1;
  color: currentColor;
  opacity: 0.045;
  pointer-events: none;
  user-select: none;
  transition: opacity 0.35s;
}
.service:hover::before { opacity: 0.075; }

.services { counter-reset: service-counter; }

/* Faixa de cor no topo do card */
.service__mark {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

/* Cor de accent conforme a cor do serviÃ§o */
.service--rosa { --svc-color: var(--rosa); --svc-bg: var(--rosa-suave); }
.service--verde { --svc-color: var(--verde); --svc-bg: var(--verde-suave); }
.service--azul  { --svc-color: var(--azul);  --svc-bg: var(--azul-suave); }
.service--amarelo { --svc-color: var(--amarelo); --svc-bg: var(--amarelo-suave); }
.service { color: var(--svc-color, var(--rosa)); }

/* Ponto de cor before */
.service::after {
  content: '';
  position: absolute;
  bottom: -2rem;
  right: -2rem;
  width: 8rem;
  height: 8rem;
  border-radius: 50%;
  background: var(--svc-bg, var(--rosa-suave));
  pointer-events: none;
  transition: transform 0.5s var(--ease);
}
.service:hover::after { transform: scale(1.25); }

.service__body { display: flex; flex-direction: column; flex: 1; }

.service__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.25rem * var(--title-scale)), calc(2.14vw + 0.43rem), calc(1.5rem * var(--title-scale)));
  font-weight: 600;
  margin: var(--space-3) 0 var(--space-3);
  color: var(--preto);
  line-height: 1.2;
}

.service__text {
  font-family: var(--font-texto);
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.65;
  margin: 0 0 var(--space-5);
  flex: 1;
}

/* ---------- Carrossel de Servicos (home) - peek effect ---------- */
.svc-carousel {
  --svc-card-h: clamp(300px, 38vw, 340px);
  position: relative;
  margin-bottom: var(--space-2);
}
.svc-carousel__viewport {
  position: relative;
  overflow-x: clip;
  overflow-y: visible;
  padding: 2.5rem 0 3rem;
}
.svc-carousel__track {
  display: flex;
  gap: 1.25rem;
  transition: transform 0.52s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform;
  counter-reset: svc-counter;
}
.svc-carousel__item {
  flex: 0 0 min(820px, 86%);
  display: grid;
  grid-template-columns: 2fr 3fr;
  grid-template-rows: minmax(0, 1fr);
  height: var(--svc-card-h);
  min-height: var(--svc-card-h);
  max-height: var(--svc-card-h);
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.07);
  border-radius: var(--radius-xl, 1.25rem);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  opacity: 0.35;
  transform: scale(0.96);
  transition: opacity 0.52s ease, transform 0.52s ease, box-shadow 0.52s ease, border-color 0.52s;
}
.svc-carousel__item.is-active {
  opacity: 1;
  transform: scale(1);
  box-shadow: var(--shadow-md);
}
.svc-carousel__item.is-active:hover {
  box-shadow: var(--shadow-lg);
  border-color: rgba(43, 43, 43, 0.13);
}
.svc-carousel__img-wrap {
  position: relative;
  overflow: hidden;
  background: #f0ede8;
  min-height: 0;
  height: 100%;
}
.svc-carousel__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 0.6s ease;
}
.svc-carousel__item.is-active:hover .svc-carousel__img {
  transform: scale(1.04);
}
.svc-carousel__img-wrap--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, color-mix(in srgb, var(--svc-cor, var(--rosa)) 12%, #fff) 0%, color-mix(in srgb, var(--svc-cor, var(--rosa)) 5%, #f8f6f3) 100%);
}
.svc-carousel__placeholder-icon {
  font-family: var(--font-titulo);
  font-size: clamp(3.5rem, 10vw, 6rem);
  font-weight: 700;
  color: var(--svc-cor, var(--rosa));
  opacity: 0.18;
  user-select: none;
  line-height: 1;
}
.svc-carousel__body {
  display: flex;
  flex-direction: column;
  padding: var(--space-6) var(--space-7) var(--space-5);
  position: relative;
  overflow: hidden;
  background: var(--branco);
  color: var(--svc-cor, var(--rosa));
  counter-increment: svc-counter;
  min-height: 0;
  height: 100%;
}
.svc-carousel__body::before {
  content: counter(svc-counter);
  position: absolute;
  top: -0.1em;
  right: 0.25em;
  z-index: 0;
  font-family: var(--font-titulo);
  font-size: 7rem;
  font-weight: 700;
  line-height: 1;
  color: currentColor;
  opacity: 0.045;
  pointer-events: none;
  user-select: none;
  transition: opacity 0.35s;
}
.svc-carousel__item.is-active:hover .svc-carousel__body::before { opacity: 0.075; }
.svc-carousel__body::after {
  content: '';
  position: absolute;
  bottom: -2rem;
  right: -2rem;
  z-index: 0;
  width: 7rem;
  height: 7rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--svc-cor, var(--rosa)) 15%, #fff);
  pointer-events: none;
  transition: transform 0.5s var(--ease, ease);
}
.svc-carousel__item.is-active:hover .svc-carousel__body::after { transform: scale(1.25); }
.svc-carousel__color-bar {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: var(--svc-cor, var(--rosa));
  z-index: 1;
}
.svc-carousel__body > .svc-carousel__title,
.svc-carousel__body > .svc-carousel__subtitle,
.svc-carousel__body > .svc-carousel__text,
.svc-carousel__body > .svc-carousel__cta {
  position: relative;
  z-index: 1;
}
.svc-carousel__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.1rem * var(--title-scale)), calc(1.93vw + 0.32rem), calc(1.375rem * var(--title-scale)));
  font-weight: 600;
  margin: var(--space-3) 0 var(--space-2);
  color: var(--preto);
  line-height: 1.2;
}
.svc-carousel__subtitle {
  font-size: 0.875rem;
  color: var(--svc-cor, var(--rosa));
  font-weight: 500;
  margin: 0 0 var(--space-2);
  line-height: 1.4;
}
.svc-carousel__text {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  color: #555;
  line-height: 1.65;
  margin: 0 0 var(--space-4);
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.svc-carousel__cta {
  color: var(--svc-cor, var(--rosa));
  font-size: 0.875rem;
}
.svc-carousel__fade {
  position: absolute;
  top: 0; bottom: 0;
  width: 65px;
  pointer-events: none;
  z-index: 4;
}
.svc-carousel__fade--left {
  left: 0;
  background: linear-gradient(to right, var(--svc-fade-bg, #f8f7f5) 0%, transparent 100%);
}
.svc-carousel__fade--right {
  right: 0;
  background: linear-gradient(to left, var(--svc-fade-bg, #f8f7f5) 0%, transparent 100%);
}
/* Botões fora do viewport para sombras não serem clipped */
.svc-carousel__btn {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  z-index: 8;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.95);
  box-shadow: 0 2px 10px rgba(0,0,0,0.14);
  color: var(--preto);
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 0.2s, box-shadow 0.2s, transform 0.2s;
}
.svc-carousel__btn svg {
  display: block;
  flex-shrink: 0;
}
.svc-carousel__btn:hover {
  background: #fff;
  box-shadow: 0 4px 18px rgba(0,0,0,0.18);
  transform: translate(0, -50%) scale(1.1);
}
.svc-carousel__btn:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
.svc-carousel__btn--prev { left: 0.75rem; }
.svc-carousel__btn--next { right: 0.75rem; }
.svc-carousel__dots {
  display: flex;
  justify-content: center;
  gap: 0.45rem;
  padding: 0.625rem 0 0.25rem;
}
.svc-carousel__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  border: none;
  padding: 0;
  cursor: pointer;
  background: rgba(43, 43, 43, 0.2);
  transition: background 0.2s, transform 0.2s;
}
.svc-carousel__dot.is-active {
  background: var(--rosa);
  transform: scale(1.3);
}
.svc-carousel__dot:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
@media (max-width: 640px) {
  .svc-carousel:not(.svc-carousel--testimonials) {
    --svc-card-h: clamp(500px, 128vw, 580px);
  }
  .svc-carousel__item {
    flex: 0 0 86%;
    grid-template-columns: 1fr;
    grid-template-rows: 188px minmax(0, 1fr);
  }
  .svc-carousel--testimonials .svc-carousel__item {
    grid-template-rows: unset;
    height: auto;
    min-height: unset;
    max-height: none;
  }
  .svc-carousel__body {
    padding: var(--space-5) var(--space-5) var(--space-4);
  }
  .svc-carousel__text {
    margin-bottom: var(--space-3);
  }
  .svc-carousel__cta {
    flex-shrink: 0;
    margin-top: auto;
  }
  .svc-carousel__btn {
    display: none;
  }
  .svc-carousel__fade { width: 30px; }
}

/* Início — testemunhos: mesmo carrossel que serviços; 1 cartão (mobile) ou 2 (desktop) */
.svc-carousel--testimonials {
  --svc-fade-bg: var(--branco);
  --svc-cor: var(--rosa);
  --svc-testimonial-pair-w: min(920px, 94%);
  --svc-testimonial-card-gap: 1.25rem;
  --svc-testimonial-shadow-space: 1.25rem;
}
.svc-carousel--testimonials .svc-carousel__viewport {
  padding: clamp(0.65rem, 2vw, 1rem) 0 calc(clamp(1rem, 2.5vw, 1.35rem) + var(--svc-testimonial-shadow-space));
  overflow-y: visible;
  transition: height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.svc-carousel--testimonials .svc-carousel__track {
  align-items: stretch;
}
.svc-carousel--testimonials .svc-carousel__dots {
  padding-top: clamp(0.75rem, 2vw, 1rem);
}
.svc-carousel--testimonials .svc-carousel__item--testimonial {
  flex: 0 0 var(--svc-testimonial-pair-w);
  display: flex;
  flex-direction: column;
  height: auto;
  min-height: unset;
  max-height: none;
  grid-template-columns: unset;
  grid-template-rows: unset;
  background: transparent;
  border: none;
  box-shadow: none;
  overflow: visible;
  opacity: 0.35;
  transform: scale(0.96);
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active,
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-pair-peer {
  opacity: 1;
  transform: scale(1);
  filter: drop-shadow(0 4px 16px rgba(43, 43, 43, 0.08)) drop-shadow(0 1px 2px rgba(43, 43, 43, 0.04));
  transition: opacity 0.52s ease, transform 0.52s ease, filter 0.52s ease;
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active {
  box-shadow: none;
  border-color: transparent;
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active:hover,
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-pair-peer:hover {
  box-shadow: none;
  border-color: transparent;
  filter: drop-shadow(0 12px 40px rgba(43, 43, 43, 0.1)) drop-shadow(0 2px 8px rgba(43, 43, 43, 0.04));
}
@media (min-width: 641px) {
  .svc-carousel--testimonials .svc-carousel__item--testimonial {
    flex: 0 0 calc((var(--svc-testimonial-pair-w) - var(--svc-testimonial-card-gap)) / 2);
  }
}
.svc-carousel--testimonials .svc-carousel__testimonial {
  width: 100%;
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  padding: var(--space-6) var(--space-6) var(--space-5);
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.07);
  border-radius: var(--radius-xl, 1.25rem);
  box-shadow: none;
  position: relative;
  overflow: hidden;
  color: var(--rosa);
  transition: border-color 0.52s ease;
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active .svc-carousel__testimonial,
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-pair-peer .svc-carousel__testimonial {
  border-color: rgba(43, 43, 43, 0.07);
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active:hover .svc-carousel__testimonial,
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-pair-peer:hover .svc-carousel__testimonial {
  border-color: rgba(43, 43, 43, 0.13);
}
.svc-carousel--testimonials .svc-carousel__testimonial .svc-carousel__color-bar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--rosa);
  border-radius: var(--radius-xl, 1.25rem) var(--radius-xl, 1.25rem) 0 0;
}
.svc-carousel--testimonials .svc-carousel__testimonial::after {
  content: '';
  position: absolute;
  bottom: -2rem;
  right: -2rem;
  z-index: 0;
  width: 7rem;
  height: 7rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--rosa) 15%, #fff);
  pointer-events: none;
  transition: transform 0.5s var(--ease, ease);
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-active:hover .svc-carousel__testimonial::after {
  transform: scale(1.25);
}
.svc-carousel--testimonials .svc-carousel__item--testimonial.is-pair-peer:hover .svc-carousel__testimonial::after {
  transform: scale(1.25);
}
.svc-carousel--testimonials .svc-carousel__testimonial .testimonial__stars {
  margin: var(--space-3) 0 var(--space-2);
  position: relative;
  z-index: 1;
}
.svc-carousel--testimonials .svc-carousel__testimonial .testimonial__star {
  font-size: 0.875rem;
}
.svc-carousel--testimonials .svc-carousel__testimonial .testimonial__text {
  flex: 1;
  margin: 0 0 var(--space-4);
  font-size: 0.875rem;
  line-height: 1.65;
  color: #555;
  position: relative;
  z-index: 1;
}
.svc-carousel--testimonials .svc-carousel__testimonial .testimonial__cite {
  font-size: 0.8125rem;
  color: var(--preto);
  font-style: normal;
  position: relative;
  z-index: 1;
}
@media (max-width: 640px) {
  .svc-carousel--testimonials .svc-carousel__item--testimonial {
    flex: 0 0 94%;
  }
  .svc-carousel--testimonials .svc-carousel__testimonial {
    min-height: unset;
    padding: var(--space-5) var(--space-5) var(--space-4);
  }
}

/* ---------- Quote ---------- */
.quote {
  padding: clamp(var(--space-12), 6vw, var(--space-20)) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  background: var(--preto);
  color: var(--branco);
  text-align: center;
  position: relative;
}
.quote::before {
  content: "\201C";
  position: absolute;
  top: var(--space-6);
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-titulo);
  font-size: clamp(3rem, 10vw, 5rem);
  font-weight: 600;
  color: var(--rosa);
  opacity: 0.2;
  line-height: 1;
}

.quote__text {
  font-family: var(--font-titulo);
  font-size: clamp(1.75rem, 4.5vw + 0.5rem, 3.25rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.22;
  margin: 0 0 var(--space-2);
  position: relative;
  z-index: 1;
}

.quote__cite {
  font-family: var(--font-texto);
  font-size: clamp(0.75rem, 1vw, 0.8125rem);
  font-style: normal;
  opacity: 0.78;
  letter-spacing: 0.08em;
  position: relative;
  z-index: 1;
}

.quote__content {
  font-family: var(--font-titulo);
  font-size: clamp(1.75rem, 4.5vw + 0.5rem, 3.25rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.22;
  margin: 0;
  position: relative;
  z-index: 1;
}
.quote__content p {
  margin: 0;
}
.quote__content p + p {
  margin-top: 0.55em;
}

/* ---------- Eventos (preview e lista) ---------- */
.events-list { display: grid; gap: 1.25rem; }
.events-list--preview { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.events-list--preview-workshops {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
}

.event-card {
  background: var(--branco);
  padding: var(--space-6);
  border-radius: var(--radius-md);
  border: 1px solid rgba(43, 43, 43, 0.06);
  box-shadow: var(--shadow-sm);
  transition: box-shadow 0.3s var(--ease), border-color 0.3s var(--ease), transform 0.25s var(--ease);
}
.event-card:hover {
  box-shadow: var(--shadow-md);
  border-color: rgba(43, 43, 43, 0.1);
  transform: translateY(-2px);
}

.event-card__meta,
.event-card__date {
  font-family: var(--font-texto);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0;
}

.event-card__schedule {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.15rem;
  margin: 0 0 0.35rem;
}

.event-card__schedule .event-card__date {
  margin: 0;
}

.event-card__time {
  font-family: var(--font-texto);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--preto);
  margin: 0;
}

.event-card__title {
  font-family: var(--font-titulo);
  font-size: calc(1.25rem * var(--title-scale));
  font-weight: 600;
  margin: 0;
  color: var(--preto);
  line-height: 1.3;
}

.event-card__type {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 0.35rem;
  display: block;
}

.event-card__badge {
  display: inline-block;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  padding: 0.15rem 0.45rem;
  border-radius: 999px;
  vertical-align: 0.1em;
  margin-left: 0.35rem;
}

.event-card__badge--muted {
  background: rgba(43, 43, 43, 0.08);
  color: #5c5c5c;
}

.event-card--workshop .event-card__figure {
  position: relative;
}

.event-card__badge--on-cartaz {
  position: static;
  margin-left: 0;
  padding: 0.28rem 0.55rem;
  font-size: 0.65rem;
  color: var(--branco);
  background: rgba(43, 43, 43, 0.78);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  pointer-events: none;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.event-card__badges-cartaz {
  position: absolute;
  top: 0.65rem;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  max-width: calc(50% - 0.85rem);
  pointer-events: none;
}

.event-card__badges-cartaz--status {
  left: 0.65rem;
  right: auto;
  align-items: flex-start;
}

.event-card__badges-cartaz--local {
  left: auto;
  right: 0.65rem;
  align-items: flex-end;
}

.event-card__badge--proximo {
  background: linear-gradient(135deg, #c45c82 0%, #a8486c 100%);
  box-shadow: 0 2px 10px rgba(196, 92, 130, 0.45);
}

.event-card__badge--local {
  background: rgba(43, 43, 43, 0.82);
}

/* PrÃ³ximos: sempre nÃ­tidos (nunca desvanecidos) */
.event-card--proximo,
.event-card--proximo .event-card__figure,
.event-card--proximo .event-card__img,
.event-card--proximo .event-card__figure--placeholder {
  opacity: 1;
  filter: none;
}

/* Passados: desvanecimento uniforme (com ou sem cartaz) */
.event-card--terminado {
  border-color: rgba(43, 43, 43, 0.05);
  box-shadow: none;
}
.event-card--terminado .event-card__figure {
  position: relative;
}
.event-card--terminado .event-card__figure::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.4);
  pointer-events: none;
  z-index: 1;
}
.event-card--terminado .event-card__img,
.event-card--terminado .event-card__figure--placeholder {
  filter: grayscale(0.5) saturate(0.62);
}
.event-card--terminado .event-card__figure--placeholder {
  opacity: 1;
}
.event-card--terminado .event-card__figure--placeholder > span:not(.event-card__badge) {
  opacity: 0.52;
}
.event-card--terminado .event-card__badges-cartaz .event-card__badge--on-cartaz {
  z-index: 2;
  background: rgba(43, 43, 43, 0.62);
  color: rgba(255, 255, 255, 0.9);
  opacity: 0.82;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
.event-card--terminado .event-card__badges-cartaz .event-card__badge--proximo {
  background: linear-gradient(135deg, rgba(196, 92, 130, 0.72) 0%, rgba(168, 72, 108, 0.72) 100%);
}
.event-card--terminado .event-card__type,
.event-card--terminado .event-card__meta,
.event-card--terminado .event-card__date {
  color: rgba(196, 92, 130, 0.62);
}
.event-card--terminado .event-card__time {
  color: #777;
}
.event-card--terminado .event-card__title {
  color: #6a6a6a;
  font-weight: 500;
}
.event-card--terminado .event-card__price {
  color: #777;
}
.event-card--terminado .event-card__desc {
  color: #8a8a8a;
}
.event-card--terminado .link-arrow {
  opacity: 0.72;
}
.event-card--terminado:hover {
  transform: none;
  box-shadow: none;
  border-color: rgba(43, 43, 43, 0.07);
}

.event-card__desc {
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.55;
  margin: 0.5rem 0 0.75rem;
}

.event-card__cta { margin: 0; }

.event-card__desc--preview {
  font-size: 0.875rem;
  margin: 0.35rem 0 0;
}

.events-list--workshops {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
}

.event-card--workshop {
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  height: 100%;
  box-sizing: border-box;
}

/* Mesma altura na grelha: preÃ§o e link encostados ao fundo do cartÃ£o */
.event-card--workshop .event-card__price {
  margin-top: auto;
}
.event-card--workshop .event-card__price + .event-card__cta {
  margin-top: 0.35rem;
}
.event-card--workshop .event-card__body:not(:has(.event-card__price)) .event-card__cta {
  margin-top: auto;
}

.event-card__figure-link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.event-card__figure > .event-card__figure-link {
  height: 100%;
}

.event-card__figure--placeholder > .event-card__figure-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}

.event-card__figure {
  aspect-ratio: 4 / 3;
  background: linear-gradient(145deg, var(--rosa-suave), var(--azul-suave));
  overflow: hidden;
}

.event-card__figure--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--preto);
  opacity: 0.45;
}

.event-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.event-card__body {
  padding: var(--space-6);
  flex: 1;
  display: flex;
  flex-direction: column;
}

.event-card__price {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--preto);
  margin: 0.25rem 0 0;
}

/* ---------- Ficha de workshop ---------- */
.workshop-ficha__breadcrumb {
  margin-bottom: var(--space-5);
}

.workshop-ficha__inner {
  max-width: var(--wrap);
}

.workshop-ficha__grid {
  display: grid;
  gap: var(--space-8);
  align-items: start;
}

@media (min-width: 900px) {
  .workshop-ficha__grid {
    grid-template-columns: minmax(280px, 400px) 1fr;
  }
}

.workshop-ficha__cartaz-frame {
  position: relative;
  display: block;
}

.workshop-ficha__cartaz-frame .workshop-ficha__cartaz {
  width: 100%;
}

.workshop-ficha__cartaz {
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  display: block;
}

.workshop-ficha__cartaz-placeholder {
  min-height: 280px;
  border-radius: var(--radius-md);
  background: linear-gradient(160deg, var(--rosa-suave), var(--amarelo-suave));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--preto);
  opacity: 0.55;
}

.workshop-ficha__title {
  font-size: clamp(calc(1.75rem * var(--title-scale)), calc(3.21vw + 0.535rem), calc(2.5rem * var(--title-scale)));
  margin: 0.25rem 0 var(--space-4);
  line-height: 1.2;
}

.workshop-ficha__meta {
  list-style: none;
  margin: 0 0 var(--space-5);
  padding: 0;
  font-size: 0.9375rem;
  line-height: 1.55;
}

.workshop-ficha__meta li {
  margin-bottom: 0.35rem;
}

.workshop-ficha__meta strong {
  display: inline-block;
  min-width: 5.5rem;
  color: var(--preto);
}

.workshop-ficha__hora {
  font-weight: 600;
  color: #444;
}

.workshop-ficha__preco-nota {
  display: block;
  font-size: 0.8125rem;
  font-weight: 400;
  color: #666;
  margin-top: 0.15rem;
}

.workshop-ficha__body {
  margin-bottom: var(--space-8);
}

.workshop-ficha__memorias {
  margin-bottom: var(--space-8);
  padding-top: var(--space-2);
}
.workshop-ficha__memorias-title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.2rem * var(--title-scale)), calc(2.68vw), calc(1.45rem * var(--title-scale)));
  font-weight: 600;
  margin: 0 0 var(--space-2);
  color: var(--preto);
}
.workshop-ficha__memorias-lead {
  margin: 0 0 var(--space-5);
  font-size: 0.95rem;
  color: #555;
  line-height: 1.5;
}
.workshop-ficha__memorias-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: var(--space-4);
}
.workshop-ficha__memoria-item {
  margin: 0;
}
.workshop-ficha__memoria-link {
  display: block;
  border-radius: var(--radius-md, 10px);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
button.workshop-ficha__memoria-link {
  appearance: none;
  border: none;
  padding: 0;
  margin: 0;
  width: 100%;
  background: transparent;
  cursor: pointer;
  font: inherit;
  color: inherit;
  text-align: left;
}
button.workshop-ficha__memoria-link:focus-visible {
  outline: 2px solid var(--rosa, #c91858);
  outline-offset: 2px;
}
.workshop-ficha__memoria-link:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.workshop-ficha__memoria-link img {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
}
.workshop-ficha__memoria-cap {
  font-size: 0.8125rem;
  line-height: 1.35;
  margin-top: var(--space-2);
  color: #555;
}

.workshop-ficha__outros-fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}
.workshop-ficha__outros-fields label {
  font-weight: 500;
  font-size: 0.9375rem;
}
.workshop-ficha__form-block {
  padding-top: var(--space-4);
  border-top: 1px solid rgba(43, 43, 43, 0.08);
}

.workshop-ficha__inscricao-encerrada {
  margin-top: var(--space-3);
  padding: var(--space-6) var(--space-6) var(--space-5);
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, rgba(196, 92, 130, 0.08), rgba(129, 168, 207, 0.12));
  border: 1px solid rgba(196, 92, 130, 0.2);
  box-shadow: var(--shadow-sm);
}

.workshop-ficha__inscricao-encerrada__kicker {
  font-family: var(--font-titulo);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 var(--space-2);
}

.workshop-ficha__inscricao-encerrada__lead {
  font-family: var(--font-titulo);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--preto);
  margin: 0 0 var(--space-3);
}

.workshop-ficha__inscricao-encerrada__hint {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: #555;
  margin: 0 0 var(--space-5);
  max-width: 36rem;
}

.workshop-ficha__inscricao-encerrada__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin: 0;
}

/* ---------- Galeria (home: grelha uniforme, até 12 obras) ---------- */
#galeria .gallery--home-uniform {
  margin-top: var(--space-2);
  margin-bottom: var(--space-4);
}

.gallery--home-uniform {
  --gallery-home-cols: 4;
  display: grid;
  grid-template-columns: repeat(var(--gallery-home-cols), minmax(0, 1fr));
  gap: clamp(var(--space-3), 1.4vw, var(--space-5));
  width: 100%;
  max-width: none;
  margin-inline: 0;
  margin-bottom: 0;
  grid-auto-flow: row;
}

.gallery--home-uniform--count-1 {
  --gallery-home-cols: 1;
  max-width: min(100%, 300px);
  margin-inline: auto;
}
.gallery--home-uniform--count-2 {
  --gallery-home-cols: 2;
  max-width: min(100%, 620px);
  margin-inline: auto;
}
.gallery--home-uniform--count-3 {
  --gallery-home-cols: 3;
}

.gallery--home-uniform > .gallery__item {
  aspect-ratio: 1;
  min-height: 0;
  min-width: 0;
  align-self: stretch;
  justify-self: stretch;
  border-radius: var(--radius-md);
  background: #f6f5f3;
  border: 1px solid rgba(43, 43, 43, 0.07);
  opacity: 1;
  overflow: hidden;
  box-shadow: 0 2px 14px rgba(43, 43, 43, 0.06);
  transition:
    transform 0.45s var(--ease),
    box-shadow 0.45s var(--ease),
    border-color 0.45s var(--ease);
}

.gallery--home-uniform .gallery__item__frame {
  position: absolute;
  inset: clamp(0.45rem, 1.6vw, 0.75rem);
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--radius-md) - 3px);
  background: #fff;
  box-shadow: inset 0 0 0 1px rgba(43, 43, 43, 0.05);
  overflow: hidden;
}

.gallery--home-uniform .gallery__item__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: clamp(0.3rem, 1vw, 0.5rem);
  box-sizing: border-box;
  display: block;
  transition: transform 0.6s var(--ease);
}

.gallery--home-uniform .gallery__item:hover {
  z-index: 2;
  transform: translateY(-4px);
  border-color: rgba(43, 43, 43, 0.1);
  box-shadow: 0 14px 34px rgba(43, 43, 43, 0.12);
}

.gallery--home-uniform .gallery__item--obra:hover {
  transform: translateY(-4px);
}

.gallery--home-uniform .gallery__item--obra:hover .gallery__item__img {
  transform: scale(1.02);
}

.gallery--home-uniform .gallery__item--obra .gallery__item__label {
  opacity: 0;
  transform: translateY(6px);
  padding: var(--space-4) var(--space-3) var(--space-3);
  font-size: clamp(0.6875rem, 1.4vw, 0.8125rem);
  line-height: 1.35;
  transition: opacity 0.35s var(--ease), transform 0.35s var(--ease);
}

.gallery--home-uniform .gallery__item--obra:hover .gallery__item__label,
.gallery--home-uniform .gallery__item--obra:focus-within .gallery__item__label {
  opacity: 1;
  transform: translateY(0);
}

.gallery--home-uniform .gallery__item__badge-venda {
  top: clamp(0.4rem, 1.2vw, 0.55rem);
  right: clamp(0.4rem, 1.2vw, 0.55rem);
  font-size: clamp(0.5rem, 1.1vw, 0.625rem);
  padding: 0.26rem 0.45rem;
  letter-spacing: 0.05em;
}

.gallery-home-hint {
  margin: 0 0 var(--space-6);
  text-align: center;
  font-size: 0.875rem;
  line-height: 1.5;
  color: #777;
}

/* Legado: mosaico antigo da home */
#galeria .gallery--home-mosaic {
  margin-top: var(--space-2);
  margin-bottom: var(--space-6);
}

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--space-3), 2vw, var(--space-5));
  margin-bottom: var(--space-6);
}

.gallery--home-mosaic {
  --gallery-bento-gap: clamp(0.4rem, 1vw, 0.7rem);
  --gallery-mosaic-row: clamp(120px, 12vw, 164px);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-template-rows: repeat(4, var(--gallery-mosaic-row));
  gap: var(--gallery-bento-gap);
  width: 100%;
  max-width: none;
  margin-inline: 0;
  margin-bottom: 0;
  grid-auto-flow: dense;
  aspect-ratio: unset;
  max-height: none;
  height: auto;
}

.gallery--home-mosaic--count-1 {
  grid-template-rows: clamp(260px, 32vw, 400px);
}

.gallery--home-mosaic--count-2 {
  grid-template-rows: repeat(2, clamp(200px, 21vw, 300px));
}

.gallery--home-mosaic > .gallery__item {
  aspect-ratio: auto;
  min-height: 0;
  min-width: 0;
  align-self: stretch;
  justify-self: stretch;
  border-radius: var(--radius-md);
  opacity: 1;
  overflow: hidden;
  transition:
    opacity 0.45s var(--ease),
    transform 0.45s var(--ease),
    box-shadow 0.45s var(--ease);
}
.gallery--home-mosaic .gallery__item__img {
  object-fit: cover;
  object-position: center;
}
.gallery--home-mosaic > .gallery__item:nth-child(6n+1) { border-radius: calc(var(--radius-md) + 2px); }
.gallery--home-mosaic > .gallery__item:nth-child(3n) { border-radius: var(--radius-sm); }
.gallery--home-mosaic .gallery__item:hover {
  z-index: 2;
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(43, 43, 43, 0.14);
}
.gallery--home-mosaic .gallery__item--obra:hover {
  transform: translateY(-3px);
}
.gallery--home-mosaic .gallery__item--obra .gallery__item__label {
  padding: var(--space-3) var(--space-2) var(--space-2);
  font-size: clamp(0.65rem, 1.5vw, 0.75rem);
}
.gallery--home-mosaic .gallery__item__badge-venda {
  font-size: 0.55rem;
  padding: 0.22rem 0.4rem;
}

/* Compatibilidade: grelha antiga (--home-preview) */
.gallery--home-preview {
  --gallery-bento-gap: clamp(0.45rem, 1.1vw, 0.75rem);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-template-rows: repeat(4, minmax(0, 1fr));
  gap: var(--gallery-bento-gap);
  aspect-ratio: 16 / 10;
  max-height: min(52vh, 520px);
  width: 100%;
  max-width: none;
  margin-inline: 0;
}
.gallery--home-preview > .gallery__item {
  aspect-ratio: auto;
  min-height: 0;
  min-width: 0;
}
.gallery--home-preview .gallery__item:hover {
  z-index: 2;
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(43, 43, 43, 0.14);
}

/* Itens em destaque na galeria da home (layout antigo â€” sÃ³ fora de .gallery--home-preview) */
.gallery__item--a,
.gallery__item--d,
.gallery__item--g {
  grid-column: span 2;
  aspect-ratio: 16/9;
}

.gallery__item {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4/3;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-texto);
  font-size: clamp(0.75rem, 1vw, 0.8125rem);
  font-weight: 500;
  letter-spacing: 0.1em;
  color: var(--preto);
  opacity: 0.88;
  transition: opacity 0.55s var(--ease), transform 0.55s var(--ease), box-shadow 0.55s var(--ease);
  box-shadow: var(--shadow-sm);
}
.gallery__item__label {
  position: relative;
  z-index: 1;
}
.gallery__item--has-img .gallery__item__label {
  color: var(--branco);
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.45);
  font-weight: 600;
}
.gallery__item:hover {
  opacity: 1;
  transform: scale(1.02);
  box-shadow: var(--shadow-md);
}
.gallery__item--obra:hover {
  transform: none;
}

.gallery__item--a { background: linear-gradient(135deg, var(--rosa-suave), #fce4ec); }
.gallery__item--b { background: linear-gradient(145deg, var(--azul-suave), #e3f2fd); }
.gallery__item--c { background: linear-gradient(145deg, var(--amarelo-suave), #fff8e1); }
.gallery__item--d { background: linear-gradient(120deg, var(--verde-suave), var(--azul-suave)); }
.gallery__item--e { background: linear-gradient(145deg, #f5f5f5, var(--rosa-suave)); }
.gallery__item--f { background: linear-gradient(145deg, var(--azul-suave), var(--rosa-suave)); }
.gallery__item--g { background: linear-gradient(135deg, var(--amarelo-suave), var(--rosa-suave)); }
.gallery__item--h { background: linear-gradient(150deg, var(--azul-suave), var(--verde-suave)); }
.gallery__item--i { background: linear-gradient(140deg, #f0f4f8, var(--amarelo-suave)); }

.gallery__item--obra {
  padding: 0;
}
.gallery__item__link {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  text-decoration: none;
  color: inherit;
  border-radius: inherit;
  overflow: hidden;
}
.gallery__item__link:focus-visible {
  outline: 2px solid var(--preto);
  outline-offset: 3px;
}
.gallery__item__badge-venda {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 3;
  padding: 0.28rem 0.5rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #fff;
  background: var(--rosa);
  border-radius: 6px;
  pointer-events: none;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.gallery__item__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s var(--ease);
}
.gallery__item--obra:hover .gallery__item__img {
  transform: scale(1.04);
}
.gallery__item--obra .gallery__item__label {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 2;
  padding: var(--space-4) var(--space-3) var(--space-3);
  margin: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.72) 0%, rgba(0, 0, 0, 0.2) 55%, transparent 100%);
  text-align: left;
  pointer-events: none;
}
.gallery-home-empty {
  margin-bottom: var(--space-6);
}

/* ---------- Depoimentos ---------- */
.testimonials {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.testimonial {
  margin: 0;
  padding: var(--space-6);
  background: var(--branco);
  border-radius: var(--radius-md);
  border-left: 4px solid var(--rosa);
  box-shadow: var(--shadow-sm);
  transition: box-shadow 0.3s var(--ease);
}
.testimonial:hover { box-shadow: var(--shadow-md); }

.testimonial__text {
  font-family: var(--font-texto);
  font-size: 1rem;
  font-style: italic;
  line-height: 1.6;
  color: #444;
  margin: 0 0 0.5rem;
}

.testimonial__cite {
  font-size: 0.8125rem;
  color: #666;
  font-style: normal;
}

.testimonial__stars {
  display: flex;
  gap: 0.15rem;
  margin-bottom: var(--space-3);
}
.testimonial__star {
  font-size: 1rem;
  line-height: 1;
  color: #e0e0e0;
}
.testimonial__star--filled {
  color: var(--amarelo);
}

/* ---------- Banner (CTA rosa) ---------- */
.banner {
  padding: clamp(var(--space-10), 6vw, var(--space-16)) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  text-align: center;
  color: var(--branco);
}

.banner--rosa {
  background: var(--rosa);
  background-image: linear-gradient(135deg, var(--rosa) 0%, var(--rosa-escuro) 100%);
}

.banner__title {
  font-family: var(--font-texto);
  font-size: clamp(calc(1.375rem * var(--title-scale)), calc(3vw + 0.535rem), calc(2.25rem * var(--title-scale)));
  font-weight: 600;
  margin: 0 0 var(--space-2);
  letter-spacing: 0.01em;
}

.banner__text {
  font-family: var(--font-texto);
  font-size: clamp(0.9375rem, 1.1vw + 0.3rem, 1rem);
  opacity: 0.96;
  margin: 0 0 var(--space-6);
  line-height: 1.55;
}

.banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}

/* ---------- CTA newsletter (antes do rodapÃ©) ---------- */
.newsletter-cta {
  position: relative;
  overflow: hidden;
  padding:
    clamp(var(--space-10), 6vw, var(--space-16))
    var(--page-pad-right)
    clamp(var(--space-10), 5vw, var(--space-14))
    var(--page-pad-left);
  background:
    radial-gradient(ellipse 80% 60% at 100% 0%, rgba(231, 29, 104, 0.06) 0%, transparent 55%),
    radial-gradient(ellipse 70% 50% at 0% 100%, rgba(84, 169, 223, 0.07) 0%, transparent 50%),
    linear-gradient(180deg, #faf9f7 0%, #f2f0ec 100%);
  border-top: 1px solid rgba(43, 43, 43, 0.06);
}

.newsletter-cta::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--rosa) 0%, var(--amarelo) 33%, var(--azul) 66%, var(--verde) 100%);
}

.newsletter-cta__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, 0.95fr);
  gap: clamp(var(--space-8), 5vw, var(--space-12));
  align-items: center;
}

.newsletter-cta__kicker {
  font-family: var(--font-texto);
  font-size: var(--text-kicker);
  font-weight: 600;
  letter-spacing: var(--text-kicker-spacing);
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 var(--space-2);
}

.newsletter-cta__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.625rem * var(--title-scale)), calc(3.1vw + 0.43rem), calc(2.25rem * var(--title-scale)));
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--preto);
  margin: 0 0 var(--space-3);
  max-width: 22ch;
}

.newsletter-cta__text {
  font-family: var(--font-texto);
  font-size: var(--text-lead);
  line-height: 1.6;
  color: rgba(43, 43, 43, 0.78);
  margin: 0;
  max-width: var(--prose-md);
}

.newsletter-cta__perks {
  list-style: none;
  margin: var(--space-6) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.newsletter-cta__perk {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-family: var(--font-texto);
  font-size: 0.9375rem;
  line-height: 1.45;
  color: rgba(43, 43, 43, 0.82);
}

.newsletter-cta__perk-icon {
  flex-shrink: 0;
  margin-top: 0.1rem;
  color: var(--verde);
}

.newsletter-cta__card {
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.08);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: clamp(var(--space-6), 4vw, var(--space-8));
}

.newsletter-cta__form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.newsletter-cta__label {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--preto);
}

.newsletter-cta__field-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: stretch;
}

.newsletter-cta__input {
  flex: 1 1 12rem;
  min-width: 0;
  min-height: var(--touch);
  padding: 0.75rem 1rem;
  border: 1px solid rgba(43, 43, 43, 0.16);
  border-radius: var(--radius-sm);
  font-family: var(--font-texto);
  font-size: 1rem;
  color: var(--preto);
  background: var(--branco);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.newsletter-cta__input::placeholder {
  color: rgba(43, 43, 43, 0.42);
}

.newsletter-cta__input:focus {
  outline: none;
  border-color: var(--rosa);
  box-shadow: 0 0 0 3px var(--rosa-suave);
}

.newsletter-cta__btn {
  flex: 0 0 auto;
  min-width: 9.5rem;
  letter-spacing: 0.05em;
}

.newsletter-cta__btn:disabled {
  opacity: 0.72;
  cursor: not-allowed;
}

.newsletter-cta__feedback {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
}

.newsletter-cta__feedback[data-success="true"] {
  color: var(--verde);
}

.newsletter-cta__feedback[data-success="false"] {
  color: var(--rosa);
}

.newsletter-cta__legal {
  margin: var(--space-4) 0 0;
  font-size: 0.75rem;
  line-height: 1.5;
  color: rgba(43, 43, 43, 0.55);
}

.newsletter-cta__legal a {
  color: var(--rosa);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.newsletter-cta__legal a:hover {
  color: var(--rosa-escuro);
}

@media (max-width: 768px) {
  .newsletter-cta__inner {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }

  .newsletter-cta__title {
    max-width: none;
  }

  .newsletter-cta__field-row {
    flex-direction: column;
    align-items: stretch;
  }

  .newsletter-cta__input {
    flex: 0 0 auto;
    width: 100%;
    height: 2.75rem;
    min-height: 0;
    padding: 0.5rem 0.85rem;
    line-height: 1.25;
  }

  .newsletter-cta__btn {
    width: 100%;
    min-width: 0;
  }
}

/* ---------- Barra de cores ---------- */
.color-bar {
  height: clamp(8px, 1.2vw, 10px);
  padding-bottom: var(--safe-b);
  display: flex;
  flex-shrink: 0;
}

.color-bar__line { flex: 1; }
.color-bar__line--rosa { background: var(--rosa); }
.color-bar__line--amarelo { background: var(--amarelo); }
.color-bar__line--azul { background: var(--azul); }
.color-bar__line--verde { background: var(--verde); }

body:not(.loaded) .color-bar__line { transform: scaleX(0); transform-origin: left; transition: transform 0.5s var(--ease); }
body.loaded .color-bar__line { transform: scaleX(1); }
body.loaded .color-bar__line:nth-child(1) { transition: transform 0.5s var(--ease) 0.05s; }
body.loaded .color-bar__line:nth-child(2) { transition: transform 0.5s var(--ease) 0.1s; }
body.loaded .color-bar__line:nth-child(3) { transition: transform 0.5s var(--ease) 0.15s; }
body.loaded .color-bar__line:nth-child(4) { transition: transform 0.5s var(--ease) 0.2s; }

/* ---------- Footer ---------- */
.site-footer {
  background: var(--preto);
  color: var(--branco);
  padding: var(--space-12) 0 calc(var(--space-8) + var(--safe-b));
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
}

.site-footer__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
}

.site-footer__row {
  width: 100%;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--space-4);
}

.site-footer__logo-wrap {
  grid-column: 2;
  justify-self: center;
  margin: 0;
}

.site-footer__logo {
  display: inline-block;
  transition: opacity 0.2s var(--ease);
}
.site-footer__logo:hover { opacity: 0.88; }
.site-footer__logo:focus-visible { outline: 2px solid var(--rosa); outline-offset: 4px; border-radius: 2px; }

.site-footer__logo-img {
  display: block;
  width: 140px;
  height: auto;
  max-height: 42px;
  object-fit: contain;
  object-position: center;
}


.site-footer__name {
  font-family: var(--font-titulo);
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0;
}
.site-footer__name--sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.site-footer__nav {
  display: flex;
  gap: 0.35rem;
  justify-content: flex-start;
  align-items: center;
  justify-self: start;
  grid-column: 1;
  margin: 0;
  flex-shrink: 0;
}

.site-footer__row-end {
  grid-column: 3;
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
  margin: 0;
}
.site-footer__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--touch);
  min-width: var(--touch);
  height: var(--touch);
  color: var(--branco);
  opacity: 0.78;
  text-decoration: none;
  border-radius: 50%;
  transition: opacity 0.2s var(--ease), color 0.2s var(--ease), background 0.2s var(--ease);
}
.site-footer__link svg {
  display: block;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}
.site-footer__link:hover { opacity: 1; color: var(--rosa); background: rgba(255,255,255,0.08); }
.site-footer__link--location:hover { color: var(--amarelo); }
.site-footer__link:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }

.site-footer__links {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem 1.25rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,0.1);
}
.site-footer__links a {
  font-size: 0.8125rem;
  color: inherit;
  opacity: 0.8;
  text-decoration: none;
  transition: opacity 0.2s, color 0.2s;
}
.site-footer__links a:hover { opacity: 1; color: var(--rosa); }
.site-footer__links a:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }

.site-footer__cookie-subtle {
  width: 100%;
  margin: 0;
  padding: 0.3rem 0 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0 0.35rem;
  text-align: center;
  font-size: 0.625rem;
  line-height: 1.2;
  opacity: 0.38;
}
.site-footer__cookie-subtle-link {
  color: inherit;
  text-decoration: none;
}
.site-footer__cookie-subtle-link:hover {
  color: var(--rosa);
  opacity: 1;
}
.site-footer__cookie-subtle-link:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
  border-radius: 2px;
}
.site-footer__cookie-subtle-sep {
  opacity: 0.55;
  user-select: none;
}

.site-footer__legal {
  width: 100%;
  max-width: 100%;
  text-align: center;
  font-size: 0.6875rem;
  opacity: 0.5;
  margin-top: 0.5rem;
  padding-top: 0.65rem;
  border-top: 1px solid rgba(255,255,255,0.08);
  overflow-wrap: break-word;
  word-wrap: break-word;
  hyphens: auto;
}
.site-footer__legal a { color: inherit; text-decoration: none; }
.site-footer__legal a:hover { color: var(--rosa); opacity: 1; }

@media (max-width: 768px) {
  .site-footer {
    padding: var(--space-8) 0 0;
  }

  .site-footer__inner {
    gap: var(--space-5);
  }

  .site-footer__links {
    gap: 0.35rem 1.25rem;
    margin-top: 0.35rem;
    padding-top: 0.65rem;
  }

  .site-footer__links a {
    line-height: 1.35;
  }

  .site-footer__cookie-subtle {
    margin-top: -0.5rem;
    padding-top: 0.1rem;
  }

  .site-footer__legal {
    margin-top: -0.35rem;
    line-height: 1.45;
    padding: 0.65rem 0 calc(0.65rem + var(--safe-b));
  }
}

/* ---------- Reveal ---------- */
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.95s var(--ease), transform 0.95s var(--ease);
}
.reveal.in-view { opacity: 1; transform: translateY(0); }

.reveal--from-left {
  transform: translateX(-42px);
}
.reveal--from-left.in-view { transform: translateX(0); }

.reveal--from-right {
  transform: translateX(42px);
}
.reveal--from-right.in-view { transform: translateX(0); }

.reveal--scale {
  transform: scale(0.93) translateY(18px);
}
.reveal--scale.in-view { transform: scale(1) translateY(0); }

.reveal--delay-1  { transition-delay: 0.10s; }
.reveal--delay-2  { transition-delay: 0.20s; }
.reveal--delay-3  { transition-delay: 0.32s; }
.reveal--delay-4  { transition-delay: 0.44s; }
.reveal--delay-5  { transition-delay: 0.56s; }
.reveal--delay-6  { transition-delay: 0.68s; }

/* ---------- Stats strip (nÃºmeros animados) ---------- */
.stats-strip {
  background: var(--preto);
  padding: clamp(var(--space-10), 5vw, var(--space-16)) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  overflow: hidden;
  position: relative;
}
.stats-strip::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 100% at 10% 50%, rgba(231,29,104,0.12) 0%, transparent 60%),
    radial-gradient(ellipse 50% 80% at 90% 50%, rgba(84,169,223,0.09) 0%, transparent 55%);
  pointer-events: none;
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: clamp(var(--space-6), 4vw, var(--space-12));
  max-width: var(--wrap);
  margin: 0 auto;
  position: relative;
}
.stat-item {
  text-align: center;
  color: var(--branco);
}
.stat-item__value {
  font-family: var(--font-texto);
  font-size: clamp(2.5rem, 5vw + 0.5rem, 4rem);
  font-weight: 700;
  line-height: 1;
  color: var(--rosa);
  display: block;
  margin-bottom: var(--space-2);
  letter-spacing: -0.02em;
}
/* NÃºmero e sufixo sÃ£o inline dentro do value */
.stat-item__number,
.stat-item__sufixo {
  display: inline;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}
.stat-item__number { transition: color 0.3s; }
.stat-item__label {
  font-family: var(--font-texto);
  font-size: clamp(0.75rem, 1vw, 0.8rem);
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.6);
  display: block;
  line-height: 1.4;
}

/* Separador decorativo entre blocos */
.section-deco {
  position: relative;
  height: 0;
  overflow: visible;
  pointer-events: none;
  z-index: 2;
}
.section-deco__blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(60px);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.8s ease;
}
.section-deco__blob.in-view { opacity: 1; }
.section-deco__blob--rosa {
  background: rgba(231,29,104,0.12);
  width: clamp(200px, 30vw, 420px);
  height: clamp(200px, 30vw, 420px);
}
.section-deco__blob--azul {
  background: rgba(84,169,223,0.1);
  width: clamp(160px, 22vw, 320px);
  height: clamp(160px, 22vw, 320px);
}
.section-deco__blob--amarelo {
  background: rgba(253,196,50,0.1);
  width: clamp(120px, 18vw, 260px);
  height: clamp(120px, 18vw, 260px);
}

/* ---------- PÃ¡ginas interiores (sobre, contacto, etc.) ---------- */
.page-wrap {
  padding-top: calc(var(--header-h) + var(--safe-t));
  min-height: 100vh;
  min-height: 100svh;
}

.page-hero {
  padding: var(--section-y) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  text-align: center;
  background: #f8f7f5;
}

.page-hero__lead {
  max-width: var(--prose-sm);
  margin-inline: auto;
  line-height: 1.62;
}

.page-hero__title {
  margin-bottom: var(--space-2);
}

/* Sobre nÃ³s â€” cabeÃ§alho com fotografia (admin â†’ Imagens â†’ Sobre) */
.page-hero.page-hero--custom-bg {
  position: relative;
  overflow: hidden;
  background: #2a2826;
  color: var(--branco);
}
.page-hero.page-hero--custom-bg .page-hero__title {
  color: var(--branco);
}
.page-hero.page-hero--custom-bg .page-hero__lead {
  color: rgba(255, 255, 255, 0.9);
}
.page-hero.page-hero--custom-bg .page-hero__lead a {
  color: rgba(255, 255, 255, 0.95);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}
.page-hero.page-hero--custom-bg .page-hero__lead a:hover {
  color: var(--branco);
}
.page-hero.page-hero--custom-bg .page-hero__lead strong {
  color: var(--branco);
}
.page-hero.page-hero--custom-bg .page-hero__eyebrow {
  color: rgba(255, 255, 255, 0.82);
}
.page-hero--shop.page-hero--custom-bg {
  background: #2a2826;
  border-bottom: none;
}
.page-hero--shop-list.page-hero--custom-bg .btn--on-hero {
  border-color: rgba(255, 255, 255, 0.55);
  color: var(--branco);
}
.page-hero--shop-list.page-hero--custom-bg .btn--on-hero:hover {
  border-color: var(--branco);
  color: var(--branco);
  background: rgba(255, 255, 255, 0.12);
}
.page-hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.page-hero.page-hero--custom-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.74) 0%,
    rgba(0, 0, 0, 0.48) 45%,
    rgba(0, 0, 0, 0.42) 100%
  );
}
.page-hero__content {
  position: relative;
  z-index: 2;
}

/* ========== PÃ¡gina Sobre (composiÃ§Ã£o texto + imagem + valores) ========== */
.page-body--about {
  --page-about-text-max: var(--figure-max);
}

.page-about-main {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 42%);
  grid-template-rows: auto auto;
  column-gap: clamp(2rem, 5vw, 3.5rem);
  row-gap: clamp(0.85rem, 2vw, 1.25rem);
  align-items: stretch;
  margin-bottom: clamp(2.5rem, 6vw, 4rem);
}

.page-about-main > .page-about-block:first-child {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  max-width: var(--page-about-text-max);
}

.page-about-block--equipa {
  grid-column: 1;
  grid-row: 2;
  min-width: 0;
  max-width: var(--page-about-text-max);
  margin-top: clamp(0.65rem, 1.5vw, 1rem);
  padding-top: clamp(0.85rem, 2vw, 1.25rem);
  border-top: 1px solid rgba(43, 43, 43, 0.09);
}

.page-about-block__title {
  font-size: clamp(calc(1.2rem * var(--title-scale)), calc(2.25vw), calc(1.55rem * var(--title-scale)));
  margin: 0 0 0.9rem;
  color: var(--preto);
  line-height: 1.25;
}

.page-about-block__body p {
  margin: 0 0 0.95rem;
  font-size: 1.02rem;
  line-height: 1.72;
  color: #454545;
}

.page-about-block__body p:last-child {
  margin-bottom: 0;
}

/* Imagem entre História e Equipa — só mobile */
.page-about-main__visual--between {
  display: none;
}

/* Lateral (desktop) + por baixo de Equipa (mobile) */
.page-about-main__visual--below-equipa {
  grid-column: 2;
  grid-row: 1 / -1;
  min-width: 0;
  min-height: 0;
}

@media (min-width: 901px) {
  .page-about-main__visual--below-equipa {
    display: flex;
    flex-direction: column;
    align-self: stretch;
    position: sticky;
    top: calc(var(--header-h) + var(--safe-t) + 1.25rem);
  }

  /* Do topo de História ao fim de Equipa — altura segue a coluna de texto */
  .page-about-main__visual--below-equipa .page-about-figure {
    flex: 1 1 auto;
    height: 100%;
    aspect-ratio: auto;
    min-height: 0;
  }
}

/* Moldura da fotografia; sombra suave */
.page-about-figure {
  margin: 0;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  min-height: 320px;
  border-radius: var(--radius-lg);
  box-shadow:
    0 20px 50px -18px rgba(43, 43, 43, 0.22),
    0 4px 14px -4px rgba(43, 43, 43, 0.08);
}

.page-about-figure .block__figure__media {
  border-radius: inherit;
}

.page-about-values {
  margin-top: clamp(1.85rem, 4vw, 2.65rem);
  margin-bottom: clamp(1.5rem, 4vw, 2.5rem);
  padding-top: clamp(1.85rem, 4vw, 2.65rem);
  border-top: 1px solid rgba(43, 43, 43, 0.09);
}

.page-about-values__inner {
  width: 100%;
  text-align: center;
}

.page-about-values__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.2rem * var(--title-scale)), calc(2.25vw), calc(1.55rem * var(--title-scale)));
  font-weight: 600;
  margin: 0 0 clamp(1.65rem, 3.5vw, 2.35rem);
  color: var(--preto);
  letter-spacing: -0.02em;
  text-align: center;
}

.page-body .page-about-values__grid {
  padding-left: 0;
  margin-bottom: 0;
}

.page-about-values__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(1.75rem, 3.5vw, 2.5rem) clamp(2rem, 5vw, 3.5rem);
}

.page-about-values__item {
  margin: 0;
  padding: 0;
  flex: 0 1 12.5rem;
  max-width: 16rem;
  text-align: center;
}

.page-about-values__item strong {
  display: block;
  font-family: var(--font-titulo);
  font-size: clamp(1.02rem, 1.5vw, 1.14rem);
  font-weight: 600;
  color: var(--rosa);
  letter-spacing: -0.015em;
  margin-bottom: 0.45rem;
}

.page-about-values__desc {
  display: block;
  font-size: 0.98rem;
  line-height: 1.72;
  color: #484848;
}

@media (max-width: 640px) {
  .page-about-values__item {
    flex: 1 1 100%;
    max-width: 20rem;
  }
}

@media (max-width: 900px) {
  .page-about-main {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
    align-items: stretch;
  }

  .page-about-main > .page-about-block:first-child {
    grid-column: 1;
    grid-row: 1;
    max-width: none;
  }

  .page-about-main__visual--between {
    display: block;
    grid-column: 1;
    grid-row: 2;
    width: 100%;
    max-width: min(100%, var(--prose-md));
    margin-left: auto;
    margin-right: auto;
    position: static;
  }

  .page-about-block--equipa {
    grid-column: 1;
    grid-row: 3;
    max-width: none;
  }

  .page-about-main__visual--below-equipa {
    display: block;
    grid-column: 1;
    grid-row: 4;
    width: 100%;
    max-width: min(100%, var(--prose-md));
    margin-left: auto;
    margin-right: auto;
    position: static;
  }

  .page-about-figure {
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: none;
    aspect-ratio: 4 / 3;
    min-height: 0;
  }
}

@media (max-width: 480px) {
  .page-about-main__visual--between,
  .page-about-main__visual--below-equipa {
    max-width: 100%;
  }

  .page-about-figure {
    height: auto;
    aspect-ratio: 3 / 2;
    min-height: 220px;
  }
}

/* Faixa de testemunhos (Sobre): deslize Ã  largura Ãºtil da pÃ¡gina; cartÃµes limitados ao miolo (--wrap) */
.page-about-testimonials {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-top: clamp(1.5rem, 4vw, 2.75rem);
  padding: clamp(1.75rem, 4vw, 2.75rem) var(--page-pad-right) clamp(1.25rem, 3vw, 2rem)
    var(--page-pad-left);
  box-sizing: border-box;
  background: var(--branco);
  border-top: 1px solid rgba(43, 43, 43, 0.07);
}

.page-about-testimonials__inner {
  max-width: var(--wrap);
  margin: 0 auto;
}

.page-about-testimonials__head {
  text-align: center;
  margin: 0 auto clamp(var(--space-4), 2.5vw, var(--space-6));
}

.page-about-testimonials__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.15rem * var(--title-scale)), calc(2.14vw), calc(1.45rem * var(--title-scale)));
  font-weight: 600;
  margin: 0;
  color: var(--preto);
  letter-spacing: -0.02em;
}

.page-hero__eyebrow {
  margin-bottom: var(--space-3);
}

.page-hero--shop {
  background: linear-gradient(165deg, #fdf8fa 0%, #f5f3f0 45%, #f0ebe8 100%);
  border-bottom: 1px solid rgba(43, 43, 43, 0.06);
}
.page-hero--shop .page-hero__lead {
  max-width: var(--prose-lg);
}
.shop-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  align-items: center;
  margin-top: var(--space-6);
}
.shop-hero__actions .btn--shop {
  margin: 0;
}

.section {
  padding: var(--section-y) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
}

/* Páginas com link «voltar» / breadcrumb — espaço compacto entre o menu e a navegação */
.page-wrap > .section:has(.link--back, .workshop-ficha__breadcrumb, .shop-breadcrumb) {
  padding-top: clamp(var(--space-4), 2.5vw, var(--space-6));
}

.page-wrap--pdp > .shop-breadcrumb--pdp {
  padding-top: clamp(var(--space-4), 2.5vw, var(--space-6));
  margin-bottom: var(--space-5);
}

/* EspaÃ§o entre o cabeÃ§alho da pÃ¡gina (hero) e o conteÃºdo em baixo */
.page-wrap .page-hero + .section {
  padding-top: clamp(var(--space-8), 4.5vw, var(--space-12));
}
/* Galeria: só o espaço branco entre a caixa do hero e os filtros (= espaço filtros → grelha) */
.page-wrap--galeria {
  --galeria-filtros-gap: clamp(var(--space-5), 3vw, var(--space-8));
}
.page-wrap--galeria .page-hero {
  padding-bottom: clamp(var(--space-6), 4vw, var(--space-10));
}
.page-wrap--galeria .page-hero + .section {
  padding-top: var(--galeria-filtros-gap);
}

/* Workshops: hero com fundo creme; conteúdo em branco (como galeria) */
.page-wrap--workshops .page-hero {
  padding-bottom: clamp(var(--space-6), 4vw, var(--space-10));
}
.page-wrap--workshops .page-hero + .section {
  padding-top: clamp(var(--space-5), 3vw, var(--space-8));
  background: var(--branco);
}
.page-wrap--workshops .section--workshops {
  background: var(--branco);
}
.page-wrap--workshops .events-list--workshops {
  /* 4 cartÃµes por linha em desktop â€” colunas fixas; com poucos eventos nÃ£o esticam pela largura toda */
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1.25rem, 3vw, 1.75rem);
}
@media (max-width: 1024px) {
  .page-wrap--workshops .events-list--workshops {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 768px) {
  .page-wrap--workshops .events-list--workshops {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 480px) {
  .page-wrap--workshops .events-list--workshops {
    grid-template-columns: 1fr;
  }
}
.page-wrap--workshops .section--workshops .section__lead {
  margin-bottom: clamp(1.25rem, 3vw, 1.75rem);
  max-width: var(--prose-lg);
}

.section--cream { background: #f8f7f5; }

.section__title {
  margin: var(--space-6) 0 var(--space-2);
}
.section__title:first-child { margin-top: 0; }

.section__lead {
  color: #555;
  line-height: 1.65;
  margin: 0 0 var(--space-4);
}

.section__head {
  margin-bottom: var(--space-6);
}

.section__cta { margin: var(--space-6) 0 0; }

.page-content { max-width: var(--wrap-narrow); margin: 0 auto; padding: 0; }
.page-content--top { padding-top: 1rem; }

.page-body {
  font-family: var(--font-texto);
  font-size: 1rem;
  line-height: 1.7;
  color: #444;
}
.page-body p { margin: 0 0 1rem; }
.page-body ul { margin: 0 0 1rem; padding-left: 1.25rem; }
.page-body a { color: var(--rosa); text-decoration: none; }
.page-body a:hover { text-decoration: underline; }

.page-content__actions { margin-top: 1.5rem; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }

.page-content__actions--about {
  margin-top: clamp(3.25rem, 6vw, 4.75rem);
  margin-bottom: 0;
}

/* Aulas presenciais: layout texto (esq.) + imagem (dir.) */
.page-aulas-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 38%);
  gap: clamp(2rem, 5vw, 3.5rem);
  align-items: center;
}

.page-aulas-split__text {
  min-width: 0;
}

.page-aulas-split__visual {
  min-width: 0;
}

@media (min-width: 901px) {
  .page-aulas-split__visual {
    position: sticky;
    top: calc(var(--header-h) + var(--safe-t) + 1.25rem);
    align-self: start;
  }
}

.page-aulas-figure {
  margin: 0;
  width: 100%;
  aspect-ratio: 5 / 5;
  max-height: min(44vh, 380px);
  border-radius: var(--radius-lg);
  box-shadow:
    0 20px 50px -18px rgba(43, 43, 43, 0.22),
    0 4px 14px -4px rgba(43, 43, 43, 0.08);
}

.page-aulas-figure .block__figure__media {
  border-radius: inherit;
}

/* Espelhado: imagem à esquerda, texto à direita */
.page-aulas-split--reverse {
  grid-template-columns: minmax(260px, 38%) minmax(0, 1fr);
}
.page-aulas-split--reverse .page-aulas-split__visual { order: 1; }
.page-aulas-split--reverse .page-aulas-split__text   { order: 2; }

/* Separador visual entre os dois blocos de aulas */
.page-aulas-divider {
  border: none;
  border-top: 1px solid rgba(43, 43, 43, 0.1);
  margin: 0;
}

.page-content__actions--aulas {
  margin-top: 0;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-3);
}

.section--aulas-actions {
  padding-top: clamp(1.5rem, 3vw, 2.5rem);
  padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

@media (max-width: 900px) {
  .page-aulas-split {
    grid-template-columns: 1fr;
  }

  .page-aulas-split__visual {
    max-width: min(100%, var(--prose-md));
    margin-inline: auto;
  }

  .page-aulas-figure {
    aspect-ratio: 4 / 3;
    max-height: none;
  }
}

@media (max-width: 480px) {
  .page-aulas-split__visual {
    max-width: 100%;
  }
}

/* Sobre: faixa de testemunhos encostada ao rodapÃ© (sem franja da .section em baixo) */
.section--about-strip-foot {
  padding-bottom: 0;
}

.section--about-strip-foot .page-about-testimonials {
  margin-top: clamp(2rem, 5vw, 3.25rem);
  margin-bottom: 0;
}

.section--workshops .page-content { text-align: left; margin-left: 0; margin-right: auto; }
.section--workshops .page-content__actions { justify-content: flex-start; }

.contact__link { color: var(--rosa); text-decoration: none; font-weight: 500; }
.contact__link:hover { text-decoration: underline; }
.contact__link:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }
.contact__note { margin-top: 1rem; font-size: 0.9375rem; color: #555; }

.btn-inline {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--rosa);
  text-decoration: underline;
  cursor: pointer;
}
.btn-inline:hover { color: var(--rosa-escuro); }
.btn-inline:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }

.text-center { text-align: center; }

/* ---------- Contacto: grid formulÃ¡rio ---------- */
.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-10);
  align-items: start;
}

.contact-whatsapp-block {
  margin: 1rem 0 1.25rem;
}
.btn--whatsapp {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.5rem;
  padding: 0.65rem 1.15rem;
  background: #25d366;
  color: #fff !important;
  border: none;
  border-radius: var(--radius-sm);
  font-weight: 600;
  font-size: 0.9375rem;
  text-decoration: none;
  transition: filter 0.2s, transform 0.15s;
}
.btn--whatsapp:hover {
  filter: brightness(1.06);
  color: #fff !important;
}
.btn--whatsapp:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 3px;
}
.contact-social {
  margin-top: 1.25rem;
}
.contact-social__list {
  list-style: none;
  padding: 0;
  margin: 0.5rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.contact-social__link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 500;
  color: var(--preto);
  text-decoration: none;
}
.contact-social__link:hover {
  color: var(--rosa);
}
.contact-social__icon {
  display: flex;
  color: var(--rosa);
}

.form label {
  display: block;
  font-size: 0.875rem;
  font-weight: 500;
  margin-bottom: 0.25rem;
  color: var(--preto);
}
.form input,
.form textarea {
  width: 100%;
  font-family: var(--font-texto);
  font-size: 1rem;
  padding: var(--space-3) var(--space-4);
  border: 1px solid rgba(43, 43, 43, 0.12);
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-4);
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.form input { min-height: var(--touch); }
.form input:focus,
.form textarea:focus {
  outline: none;
  border-color: var(--rosa);
  box-shadow: 0 0 0 3px var(--rosa-suave);
}
.form textarea { resize: vertical; min-height: 120px; }
.form__feedback { font-size: 0.875rem; margin-bottom: 0.75rem; padding: 0.5rem; border-radius: 6px; }
.form__feedback[data-success="true"] { background: var(--verde-suave); color: var(--verde); }
.form__feedback[data-success="false"] { background: var(--rosa-suave); color: var(--rosa-escuro); }
.form .btn { margin-top: 0.25rem; }

.form__fieldset {
  border: 1px solid rgba(43, 43, 43, 0.1);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  margin: 0 0 var(--space-5);
  background: rgba(255, 255, 255, 0.72);
}
.form__legend {
  display: block;
  font-family: var(--font-titulo);
  font-size: 1rem;
  font-weight: 600;
  color: var(--preto);
  padding: 0;
  margin: 0 0 var(--space-3);
  line-height: 1.35;
}
.form__required {
  color: var(--rosa);
  font-weight: 700;
}
.form__fieldset-hint {
  margin-top: calc(var(--space-2) * -1);
  margin-bottom: var(--space-3);
  font-size: 0.8125rem;
  line-height: 1.45;
  color: #666;
}
.form__choices {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.form__choice {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  cursor: pointer;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--preto);
}
.form__choice input[type="radio"],
.form__choice input[type="checkbox"] {
  width: 1.125rem;
  height: 1.125rem;
  min-height: 0;
  margin: 0.15rem 0 0;
  flex-shrink: 0;
  accent-color: var(--rosa);
  cursor: pointer;
}
.form__choice-label {
  flex: 1;
  font-weight: 400;
}
.form__choice-outro {
  margin: calc(var(--space-1) * -1) 0 var(--space-2) calc(1.125rem + var(--space-3));
}
.form__choice-outro input {
  margin-bottom: 0;
}

.workshop-inscricao-questionario {
  border: 1px solid rgba(43, 43, 43, 0.1);
  border-radius: var(--radius-md);
  margin: 0 0 var(--space-5);
  background: rgba(255, 255, 255, 0.72);
  overflow: hidden;
}
.workshop-inscricao-questionario__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.workshop-inscricao-questionario__summary::-webkit-details-marker { display: none; }
.workshop-inscricao-questionario__heading {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}
.workshop-inscricao-questionario__title {
  font-family: var(--font-titulo);
  font-size: calc(1rem * var(--title-scale));
  font-weight: 600;
  color: var(--preto);
  line-height: 1.35;
}
.workshop-inscricao-questionario__hint {
  font-size: 0.8125rem;
  line-height: 1.45;
  color: #666;
}
.workshop-inscricao-questionario__toggle {
  flex-shrink: 0;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--rosa);
}
.workshop-inscricao-questionario__summary:hover .workshop-inscricao-questionario__toggle,
.workshop-inscricao-questionario[open] .workshop-inscricao-questionario__summary .workshop-inscricao-questionario__toggle {
  color: var(--rosa-escuro);
}
.workshop-inscricao-questionario[open] .workshop-inscricao-questionario__toggle::before {
  content: 'Fechar';
}
.workshop-inscricao-questionario:not([open]) .workshop-inscricao-questionario__toggle::before {
  content: 'Abrir';
}
.workshop-inscricao-questionario__toggle {
  font-size: 0;
}
.workshop-inscricao-questionario__toggle::before {
  font-size: 0.8125rem;
}
.workshop-inscricao-questionario__body {
  padding: 0 var(--space-5) var(--space-5);
  border-top: 1px solid rgba(43, 43, 43, 0.08);
}
.form__fieldset--nested {
  margin-bottom: var(--space-4);
  background: transparent;
}
.form__fieldset--nested.form__fieldset--last {
  margin-bottom: 0;
}

.form--workshop-inscricao > .form__feedback {
  margin-top: var(--space-4);
}
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__fieldset--nested > label,
.form--workshop-inscricao .workshop-inscricao-questionario__body .workshop-ficha__outros-fields label {
  font-size: 0.875rem;
  font-weight: 500;
  margin-bottom: 0.25rem;
}
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__fieldset--nested input:not([type="checkbox"]):not([type="radio"]),
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__fieldset--nested textarea {
  margin-bottom: var(--space-3);
}
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__fieldset--nested input:not([type="checkbox"]):not([type="radio"]):last-of-type,
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__fieldset--nested textarea:last-of-type {
  margin-bottom: 0;
}
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__choice {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin-bottom: 0;
  font-size: 0.9375rem;
  font-weight: 400;
  cursor: pointer;
}
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__choice input[type="checkbox"],
.form--workshop-inscricao .workshop-inscricao-questionario__body .form__choice input[type="radio"] {
  width: 1.125rem;
  height: 1.125rem;
  min-height: 0;
  margin: 0.15rem 0 0;
  padding: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
  flex-shrink: 0;
  accent-color: var(--rosa);
  cursor: pointer;
}
.form--workshop-inscricao .workshop-ficha__total-line {
  margin-top: 0;
  margin-bottom: var(--space-3);
  font-size: 0.9375rem;
  line-height: 1.5;
}
.form--workshop-inscricao .workshop-ficha__outros-fields label {
  margin-top: var(--space-2);
}

/* ---------- FAQ ---------- */
.faq-group { margin-bottom: 2rem; }
.faq-group__title {
  font-family: var(--font-titulo);
  font-size: calc(1.375rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 1rem;
  color: var(--preto);
}
.faq-list { list-style: none; padding: 0; margin: 0; }
.faq-item { border-bottom: 1px solid rgba(43, 43, 43, 0.1); }
.faq-item__question {
  font-family: var(--font-texto);
  font-weight: 500;
  font-size: 1rem;
  padding: 1rem 0;
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.faq-item__question::-webkit-details-marker { display: none; }
.faq-item__question::after { content: "+"; font-size: 1.25rem; color: var(--rosa); flex-shrink: 0; }
.faq-item[open] .faq-item__question::after { content: "\2212"; }
.faq-item__answer { padding: 0 0 1rem; }
.faq-item__answer p { margin: 0; font-size: 0.9375rem; line-height: 1.6; color: #555; }

/* FAQ â€” pÃ¡gina dedicada */
.page-faq .faq-group { margin-bottom: var(--space-6); }
.page-faq .faq-group:last-of-type { margin-bottom: 0; }
.page-faq .faq-group__title {
  font-size: calc(1rem * var(--title-scale));
  margin: 0 0 var(--space-3);
  opacity: .7;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.page-faq__action { margin-top: var(--space-8); }

/* ---------- Galeria pÃ¡gina: filtros + grid uniforme ---------- */
.gallery-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
}
.page-wrap--galeria .gallery-filters {
  margin-top: 0;
  margin-bottom: var(--galeria-filtros-gap);
}
.gallery-filter {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  font-weight: 500;
  padding: var(--space-2) var(--space-4);
  min-height: var(--touch);
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(43, 43, 43, 0.18);
  background: var(--branco);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.2s var(--ease), border-color 0.2s var(--ease), color 0.2s var(--ease);
}
.gallery-filter:hover,
.gallery-filter.is-active {
  border-color: var(--rosa);
  background: var(--rosa-suave);
  color: var(--rosa);
}

.gallery-editorial {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(var(--space-3), 2vw, var(--space-5));
}
.gallery-editorial.gallery-page {
  /* PÃ¡gina galeria.php: 5 miniaturas por linha em desktop (colunas fixas â€” nÃ£o esticam com poucas obras) */
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(var(--space-2), 1.35vw, var(--space-4));
}

.gallery-editorial__item {
  aspect-ratio: 1;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-texto);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: var(--preto);
  opacity: 0.88;
  transition: opacity 0.25s var(--ease), transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  box-shadow: var(--shadow-sm);
}
.gallery-editorial__item:hover {
  opacity: 1;
  transform: scale(1.02);
  box-shadow: var(--shadow-md);
}
/* Cores por categoria (data-cat) â€” grid uniforme, sem nth-child */
.gallery-editorial__item[data-cat="espaco"] { background: linear-gradient(135deg, var(--rosa-suave), #fce4ec); }
.gallery-editorial__item[data-cat="aulas"] { background: linear-gradient(145deg, var(--azul-suave), #e3f2fd); }
.gallery-editorial__item[data-cat="workshops"] { background: linear-gradient(145deg, var(--azul-suave), #e3f2fd); }
.gallery-editorial__item[data-cat="obras_alunos"] { background: linear-gradient(145deg, var(--amarelo-suave), #fff8e1); }
.gallery-editorial__item[data-cat="obras_professora"] { background: linear-gradient(160deg, var(--verde-suave), var(--amarelo-suave)); }
.gallery-editorial__item[data-cat="outros"] { background: linear-gradient(120deg, #f5f5f5, #e8e8e8); }
.gallery-editorial__item.is-hidden { display: none !important; }

/* ProteÃ§Ã£o de imagens da galeria: marca de Ã¡gua discreta */
.gallery-editorial__item:has(img)::after {
  content: 'Â© Atelier Amarte';
  position: absolute;
  bottom: 7px;
  right: 9px;
  z-index: 4;
  font-family: var(--font-texto);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.72);
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.65);
  pointer-events: none;
  user-select: none;
  line-height: 1;
}
/* PÃ¡gina galeria.php: uma sÃ³ Ã¡rea de conteÃºdo â€” Â© jÃ¡ existe no rodapÃ©; evita repetir em cada miniatura. */
.gallery-editorial.gallery-page .gallery-editorial__item:has(img)::after {
  content: none;
}
.gallery-editorial__item img {
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
}

/* Miniatura: link para ficha da obra (galeria-obra.php) */
.gallery-editorial__thumb-btn {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: inherit;
  cursor: zoom-in;
  background: transparent;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}
.gallery-editorial__thumb-btn:focus-visible {
  box-shadow: inset 0 0 0 3px var(--amarelo);
}

/* Legado: links antigos na grelha */
.gallery-editorial__media-link {
  position: absolute;
  inset: 0;
  display: block;
  border-radius: inherit;
  outline: none;
  cursor: pointer;
}
.gallery-editorial__media-link:focus-visible {
  box-shadow: inset 0 0 0 3px var(--amarelo);
}
.gallery-editorial__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
  display: block;
}
.gallery-editorial__item:has(img) {
  padding: 0;
  overflow: hidden;
  position: relative;
}
.gallery-editorial__badge-venda {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 2;
  padding: 0.28rem 0.5rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #fff;
  background: var(--rosa);
  border-radius: 6px;
  pointer-events: none;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.gallery-editorial__caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 0.5rem 0.75rem;
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 500;
  pointer-events: none;
}

/* Lightbox galeria (galeria.php) */
.gallery-lightbox {
  position: fixed;
  inset: 0;
  /* Cobre sempre o ecrÃ£ visÃ­vel (fallback 100vh; dvh evita saltos com barras mobile) */
  width: 100%;
  min-height: 100vh;
  min-height: 100dvh;
  /* Acima do header (110), newsletter (200) e preferÃªncias de cookies (210) â€” overlay de ecrÃ£ inteiro */
  z-index: 45000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
  padding-top: max(var(--space-4), var(--safe-t));
  padding-bottom: max(var(--space-4), var(--safe-b));
  box-sizing: border-box;
  overflow: hidden;
}
.gallery-lightbox[hidden] {
  display: none !important;
}
.gallery-lightbox__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 15, 15, 0.92);
  cursor: pointer;
}
.gallery-lightbox__inner {
  position: relative;
  z-index: 1;
  max-width: min(96vw, 1200px);
  max-height: min(92vh, 92dvh);
  width: fit-content;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

/* Palco em grelha: colunas fixas para as setas (fora da imagem) + coluna central para a foto */
.gallery-lightbox__stage {
  position: relative;
  display: grid;
  grid-template-columns: minmax(var(--touch), max-content) minmax(0, 1fr) minmax(var(--touch), max-content);
  grid-template-rows: auto;
  align-items: center;
  gap: clamp(0.35rem, 1.75vw, 1.125rem);
  width: 100%;
  max-width: 100%;
  max-height: min(92vh, 92dvh);
}

.gallery-lightbox__figure {
  grid-column: 2;
  grid-row: 1;
  justify-self: center;
  margin: 0;
  width: max-content;
  max-width: 100%;
  max-height: min(92vh, 92dvh);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  justify-content: safe center;
  gap: 0.75rem;
  min-height: 0;
}

/* Uma Ãºnica foto: sem setas visÃ­veis â€” figurino ocupa toda a largura do palco */
.gallery-lightbox__stage:has(.gallery-lightbox__nav--prev[hidden]):has(.gallery-lightbox__nav--next[hidden]) .gallery-lightbox__figure {
  grid-column: 1 / -1;
}
.gallery-lightbox__img {
  max-width: 100%;
  max-height: min(78vh, 78dvh, 900px);
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--radius-sm);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
}
.gallery-lightbox__caption {
  margin: 0;
  max-width: 42rem;
  text-align: center;
  font-family: var(--font-texto);
  font-size: 0.9375rem;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.92);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
}
.gallery-lightbox__caption[hidden] {
  display: none !important;
}
.gallery-lightbox__title {
  display: block;
  font-size: calc(1.0625rem * var(--title-scale));
  font-weight: 600;
  letter-spacing: 0.02em;
}
.gallery-lightbox__title[hidden] {
  display: none !important;
}
.gallery-lightbox__legenda {
  display: block;
  font-weight: 400;
  opacity: 0.88;
}
.gallery-lightbox__legenda[hidden] {
  display: none !important;
}
.gallery-lightbox__legenda--sub {
  font-size: 0.875rem;
}
.gallery-lightbox__meta {
  display: block;
  font-size: 0.8125rem;
  opacity: 0.78;
  letter-spacing: 0.03em;
}
.gallery-lightbox__meta[hidden] {
  display: none !important;
}
.gallery-lightbox__desc {
  margin: 0.25rem 0 0;
  max-width: 36rem;
  text-align: left;
  font-size: 0.875rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.82);
}
.gallery-lightbox__desc[hidden] {
  display: none !important;
}
.gallery-lightbox__desc-p {
  margin: 0 0 0.5rem;
}
.gallery-lightbox__desc-p:last-child {
  margin-bottom: 0;
}
.gallery-lightbox__actions {
  margin-top: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
}
.gallery-lightbox__actions[hidden] {
  display: none !important;
}
.gallery-lightbox__btn {
  margin: 0;
}
.gallery-lightbox__close {
  position: absolute;
  top: 0.4rem;
  right: 0.4rem;
  z-index: 4;
  width: 2.35rem;
  height: 2.35rem;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 1.45rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s var(--ease), border-color 0.2s var(--ease);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
  pointer-events: auto;
}
.gallery-lightbox__close:hover {
  background: rgba(0, 0, 0, 0.72);
  border-color: rgba(255, 255, 255, 0.45);
}
.gallery-lightbox__nav {
  position: static;
  grid-row: 1;
  z-index: 3;
  width: var(--touch);
  height: var(--touch);
  min-width: var(--touch);
  min-height: var(--touch);
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(0, 0, 0, 0.52);
  color: #fff;
  font-size: 1.65rem;
  font-weight: 300;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.2s var(--ease), border-color 0.2s var(--ease), transform 0.15s var(--ease), box-shadow 0.2s var(--ease);
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.4);
  -webkit-tap-highlight-color: transparent;
}
.gallery-lightbox__nav:hover {
  background: rgba(0, 0, 0, 0.75);
  border-color: rgba(255, 255, 255, 0.42);
  transform: scale(1.04);
}
.gallery-lightbox__nav:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 3px;
}
.gallery-lightbox__nav:active {
  transform: scale(0.98);
}
.gallery-lightbox__nav--prev {
  grid-column: 1;
  justify-self: center;
}
.gallery-lightbox__nav--next {
  grid-column: 3;
  justify-self: center;
}

@media (prefers-reduced-motion: reduce) {
  .gallery-lightbox__nav {
    transition: background 0.2s var(--ease), border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
  }
  .gallery-lightbox__nav:hover,
  .gallery-lightbox__nav:active {
    transform: none;
  }
}

kbd {
  font-family: ui-monospace, monospace;
  font-size: 0.85em;
  padding: 0.12em 0.4em;
  border: 1px solid rgba(43, 43, 43, 0.2);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.04);
}

.gallery-empty {
  max-width: var(--wrap-narrow);
  margin: 0 auto;
  padding: var(--space-8) var(--space-4);
  text-align: center;
  border: 1px dashed rgba(43, 43, 43, 0.15);
  background: var(--rosa-suave);
}
.gallery-empty__text {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.65;
}
.gallery-empty__text a {
  color: var(--rosa);
  font-weight: 500;
  text-decoration: none;
}
.gallery-empty__text a:hover {
  text-decoration: underline;
}

/* Ficha pÃºblica â€” obra da galeria (checkout) */
.galeria-obra-layout {
  display: grid;
  gap: var(--space-8);
  align-items: start;
}
@media (min-width: 900px) {
  .galeria-obra-layout {
    /* Imagem com largura máxima contida; texto ocupa o resto */
    grid-template-columns: minmax(0, 500px) minmax(280px, 1fr);
    gap: var(--space-10);
  }
}
.galeria-obra-layout__media {
  max-width: 100%;
  justify-self: start;
}
@media (min-width: 900px) {
  .galeria-obra-layout__media {
    max-width: 500px;
  }
}
.galeria-obra-layout__img-wrap {
  position: relative;
  border-radius: var(--radius-lg);
}

/* â€”â€” Lupa (zoom ao passar o rato) na ficha da obra â€” apenas desktop fine pointer via JS (.galeria-obra-zoom--loupe-ready) */
.galeria-obra-zoom {
  --galeria-obra-zoom-level: 2.25;
}
.galeria-obra-zoom__pane {
  position: relative;
  display: block;
}
@media (hover: hover) and (pointer: fine) {
  .galeria-obra-zoom--loupe-ready .galeria-obra-zoom__pane {
    cursor: crosshair;
  }
}
.galeria-obra-zoom__loupe {
  position: absolute;
  box-sizing: border-box;
  width: 140px;
  height: 140px;
  margin: 0;
  padding: 0;
  pointer-events: none;
  border-radius: 50%;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.95),
    0 14px 28px rgba(0, 0, 0, 0.3);
  z-index: 5;
  overflow: hidden;
  background: rgba(20, 20, 20, 0.2);
}
.galeria-obra-zoom__loupe-inner {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background-repeat: no-repeat;
}
.galeria-obra-zoom__loupe-inner::after {
  content: 'Â© Atelier Amarte';
  position: absolute;
  bottom: 10px;
  right: 10px;
  z-index: 2;
  font-family: var(--font-texto);
  font-size: 0.45rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.65);
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.65);
  pointer-events: none;
  user-select: none;
}
.galeria-obra-zoom__hint {
  display: none;
  margin: 0.65rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.35;
  color: #777;
}
.galeria-obra-zoom--loupe-ready .galeria-obra-zoom__hint {
  display: block;
}

/* Carrossel de fotos na ficha da obra */
.galeria-obra-slider {
  position: relative;
}
.galeria-obra-slider:not(.galeria-obra-slider--single) .galeria-obra-zoom__pane.galeria-obra-slider__viewport {
  position: relative;
}
.galeria-obra-slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  opacity: 0;
  transition: opacity 0.38s ease;
  pointer-events: none;
  z-index: 0;
}
.galeria-obra-slide.is-active {
  position: relative;
  opacity: 1;
  pointer-events: auto;
  z-index: 1;
}
.galeria-obra-slider--single .galeria-obra-slide {
  opacity: 1 !important;
  pointer-events: auto !important;
}
.galeria-obra-slider__btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 8;
  width: 42px;
  height: 42px;
  min-width: var(--touch);
  min-height: var(--touch);
  border: none;
  border-radius: 50%;
  background: rgba(43, 43, 43, 0.45);
  color: #fff;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.2s ease, transform 0.2s ease;
}
.galeria-obra-slider__btn:hover {
  background: rgba(43, 43, 43, 0.65);
}
.galeria-obra-slider__btn:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
.galeria-obra-slider__btn--prev {
  left: 0.5rem;
}
.galeria-obra-slider__btn--next {
  right: 0.5rem;
}
@media (max-width: 599px) {
  .galeria-obra-slider__btn {
    width: 38px;
    height: 38px;
    font-size: 1.25rem;
  }
}
.galeria-obra-slider__dots {
  display: flex;
  justify-content: center;
  gap: 0.45rem;
  margin-top: 0.65rem;
  flex-wrap: wrap;
}
.galeria-obra-slider__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  border: none;
  padding: 0;
  cursor: pointer;
  background: rgba(43, 43, 43, 0.22);
  transition: transform 0.2s ease, background 0.2s ease;
}
.galeria-obra-slider__dot.is-active {
  background: var(--rosa);
  transform: scale(1.25);
}
.galeria-obra-slider__dot:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}

.galeria-obra-layout__badge-venda {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 2;
}
.galeria-obra-layout__img-link {
  display: block;
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid rgba(43, 43, 43, 0.08);
}
.galeria-obra-layout__img-link::after {
  content: 'Â© Atelier Amarte';
  position: absolute;
  bottom: 10px;
  right: 12px;
  z-index: 4;
  font-family: var(--font-texto);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.68);
  text-shadow: 0 1px 5px rgba(0, 0, 0, 0.7);
  pointer-events: none;
  user-select: none;
  line-height: 1;
}
.galeria-obra-layout__img {
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
}
.galeria-obra-layout__caption--muted {
  opacity: 0.88;
  font-size: 0.9rem;
}
.galeria-obra-ficha__preco-note {
  font-weight: 400;
  color: #666;
  font-size: 0.95rem;
}
.galeria-obra-ficha__desc {
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
  text-align: left;
}
.galeria-obra-ficha__actions {
  flex-wrap: wrap;
  gap: var(--space-3);
}
.galeria-obra-layout__img {
  width: 100%;
  height: auto;
  display: block;
}
.galeria-obra-layout__img-hint {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 1.75rem 0.75rem 0.5rem;
  font-size: 0.75rem;
  color: #fff;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.72));
  pointer-events: none;
}
.galeria-obra-layout__caption {
  margin: 0.75rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: #444;
}
.galeria-obra-layout__ref {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  color: #888;
}
.galeria-obra-layout__ref code {
  font-size: 0.75rem;
}

.link-arrow {
  font-family: var(--font-texto);
  font-weight: 500;
  color: var(--rosa);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: color 0.2s, gap 0.2s;
}
.link-arrow:hover { color: var(--rosa-escuro); gap: 0.5rem; }
.link-arrow:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }
.link-arrow::after { content: "\2192"; }

/* Loja â€” hub */
.loja-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin-bottom: 1rem;
}
.loja-card {
  display: flex;
  flex-direction: column;
  padding: 1.75rem;
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.08);
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.25s, border-color 0.25s, transform 0.2s;
}
.loja-card:hover {
  box-shadow: 0 12px 32px rgba(43, 43, 43, 0.1);
  border-color: rgba(201, 24, 88, 0.2);
  transform: translateY(-2px);
}
.loja-card:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 3px;
}
.loja-card__kicker {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rosa);
  margin-bottom: 0.35rem;
}
.loja-card__title {
  font-family: var(--font-titulo);
  font-size: calc(1.35rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 0.5rem;
  color: var(--preto);
}
.loja-card__text {
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.55;
  margin: 0 0 1rem;
  flex: 1;
}
.loja-card__cta {
  margin-top: auto;
}

/* ---------- Loja online â€” kits e materiais ---------- */
.section--shop {
  background: linear-gradient(180deg, #faf9f7 0%, var(--branco) 18%, var(--branco) 100%);
}
.shop-toolbar {
  margin-bottom: var(--space-6);
  padding: var(--space-5) var(--space-5);
  border-radius: var(--radius-md);
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.08);
  box-shadow: 0 8px 30px rgba(43, 43, 43, 0.04);
}
.shop-toolbar__hint {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: #555;
  margin: 0 0 var(--space-4);
  max-width: 52rem;
}
.shop-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.shop-filters--dual {
  align-items: center;
  gap: clamp(0.75rem, 2vw, 1.25rem);
}
.shop-filters__group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.shop-filters__label {
  font-family: var(--font-texto);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #777;
  margin-right: 0.15rem;
  flex: 0 0 auto;
}
.shop-filters__sep {
  flex: 0 0 auto;
  align-self: stretch;
  width: 1px;
  min-height: 2rem;
  background: rgba(43, 43, 43, 0.14);
  margin: 0 0.15rem;
}
@media (max-width: 640px) {
  .shop-toolbar {
    padding: var(--space-4);
    margin-bottom: var(--space-5);
  }
  .shop-toolbar__hint {
    font-size: 0.875rem;
    margin-bottom: var(--space-3);
  }
  .shop-filters--dual {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-3);
  }
  .shop-filters__group {
    align-items: flex-start;
    gap: 0.35rem 0.4rem;
  }
  .shop-filters__label {
    flex: 0 0 100%;
    width: 100%;
    margin-right: 0;
    font-size: 0.6875rem;
    letter-spacing: 0.07em;
  }
  .shop-filters__sep {
    width: 100%;
    height: 1px;
    min-height: 0;
    margin: 0;
  }
}
.shop-filter {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  font-weight: 500;
  padding: var(--space-2) var(--space-4);
  min-height: var(--touch);
  border: 1px solid rgba(43, 43, 43, 0.15);
  border-radius: 999px;
  background: var(--branco);
  color: var(--preto);
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s, color 0.2s;
}
.shop-filter:hover {
  border-color: var(--rosa);
  color: var(--rosa);
}
.shop-filter.is-active {
  background: var(--preto);
  color: var(--branco);
  border-color: var(--preto);
}
@media (max-width: 640px) {
  .shop-filter {
    font-size: 0.8125rem;
    padding: 0.35rem 0.7rem;
    min-height: 2rem;
    line-height: 1.25;
  }
  .shop-filter--cat {
    font-size: 0.75rem;
    padding: 0.3rem 0.62rem;
  }
}
.shop-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--space-5);
  margin-bottom: var(--space-8);
}
.shop-card {
  display: flex;
  flex-direction: column;
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.08);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: box-shadow 0.25s, border-color 0.25s, transform 0.2s;
}
.shop-card:hover {
  box-shadow: 0 16px 40px rgba(43, 43, 43, 0.08);
  border-color: rgba(201, 24, 88, 0.2);
}
.shop-card.is-hidden {
  display: none !important;
}
.shop-card__visual {
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.shop-card__visual--kit {
  background: linear-gradient(135deg, rgba(231, 29, 104, 0.12) 0%, rgba(253, 196, 50, 0.15) 100%);
}
.shop-card__visual--material {
  background: linear-gradient(135deg, rgba(84, 169, 223, 0.12) 0%, rgba(57, 170, 53, 0.1) 100%);
}
.shop-card__visual-icon {
  font-size: 2.5rem;
  opacity: 0.35;
  color: var(--preto);
}
.shop-card__visual--photo {
  overflow: hidden;
  padding: 0;
}
.shop-card__photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.shop-card__stock-banner {
  margin: 0;
  padding: 0.4rem 0.65rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  position: relative;
  z-index: 4;
  pointer-events: none;
}
.shop-card__stock-banner--out {
  background: #fef2f2;
  color: #991b1b;
  border-bottom: 1px solid rgba(185, 28, 28, 0.2);
}
.shop-card__stock-banner--low {
  background: #fff7ed;
  color: #9a3412;
  border-bottom: 1px solid rgba(194, 65, 12, 0.2);
}
.shop-card__body {
  padding: var(--space-4) var(--space-5);
  display: flex;
  flex-direction: column;
  flex: 1;
}
.shop-card__badge {
  display: inline-block;
  align-self: flex-start;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
  background: var(--amarelo-suave);
  color: #7a5a00;
  margin-bottom: var(--space-2);
}
.shop-card__ref {
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
  color: #888;
  margin: 0 0 0.25rem;
}
.shop-card__title {
  font-family: var(--font-titulo);
  font-size: calc(1.125rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 var(--space-2);
  color: var(--preto);
  line-height: 1.3;
}
.shop-card__desc {
  font-size: 0.875rem;
  color: #555;
  line-height: 1.55;
  margin: 0 0 var(--space-4);
  flex: 1;
}
.shop-card__footer {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding-top: var(--space-2);
  border-top: 1px solid rgba(43, 43, 43, 0.06);
}
.shop-card__price {
  font-family: var(--font-titulo);
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--rosa-escuro);
}
.shop-card__price--muted {
  font-size: 0.9375rem;
  font-weight: 500;
  color: #666;
}
.shop-card__price--eur {
  font-size: 1.125rem;
  letter-spacing: -0.02em;
}
.shop-card__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.btn--sm {
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  min-height: 42px;
}
.btn--shop {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.shop-footnote {
  font-size: 0.875rem;
  line-height: 1.6;
  color: #666;
  max-width: 48rem;
  padding: var(--space-4);
  background: #f8f7f5;
  border-radius: var(--radius-sm);
  border: 1px solid rgba(43, 43, 43, 0.06);
}
.shop-recom-cta {
  margin-top: var(--space-6);
  padding: var(--space-6);
  background: #faf9f7;
  border-radius: var(--radius-md);
  border: 1px solid rgba(43, 43, 43, 0.08);
  max-width: 48rem;
}
.shop-recom-cta__title {
  font-family: var(--font-titulo);
  font-size: calc(1.25rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 var(--space-3);
  color: var(--preto);
}
.shop-recom-cta__text {
  margin: 0 0 var(--space-5);
  font-size: 0.9375rem;
  line-height: 1.6;
  color: #444;
}
.shop-recom-cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}
/* Breadcrumb loja */
.shop-breadcrumb {
  margin-bottom: var(--space-5);
}
.shop-breadcrumb__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  font-size: 0.8125rem;
  color: #666;
}
.shop-breadcrumb__list li {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.shop-breadcrumb__list li:not(:last-child)::after {
  content: "/";
  color: #bbb;
  font-weight: 400;
  margin-left: 0.15rem;
}
.shop-breadcrumb__list a {
  color: var(--rosa);
  text-decoration: none;
  font-weight: 500;
}
.shop-breadcrumb__list a:hover {
  text-decoration: underline;
}
.shop-breadcrumb__list [aria-current="page"] {
  color: var(--preto);
  font-weight: 500;
  max-width: 100%;
}

/* Um Ãºnico link de regresso (ex.: ficha da obra na galeria) */
.shop-breadcrumb__solo-link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--rosa);
  text-decoration: none;
}
.shop-breadcrumb__solo-link:hover {
  text-decoration: underline;
}

.shop-breadcrumb--pdp {
  max-width: var(--wrap);
  margin-left: auto;
  margin-right: auto;
}

/* CatÃ¡logo: cartÃ£o clicÃ¡vel */
.shop-card--catalog {
  position: relative;
  overflow: hidden;
}
.shop-card__open {
  position: absolute;
  inset: 0;
  z-index: 3;
  border-radius: inherit;
}
.shop-card__open:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}
.shop-card--catalog .shop-card__visual,
.shop-card--catalog .shop-card__body {
  position: relative;
  z-index: 1;
}
.shop-card--catalog:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 48px rgba(43, 43, 43, 0.12);
}
.shop-card__cta-text {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--rosa);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.shop-card__cta-text::after {
  content: "\2192";
  transition: transform 0.2s;
}
.shop-card--catalog:hover .shop-card__cta-text::after {
  transform: translateX(4px);
}
.shop-grid--catalog {
  margin-top: var(--space-2);
}

.page-hero--shop-list {
  padding-bottom: clamp(var(--space-6), 3vw, var(--space-10));
}
.page-hero--shop-list .btn--on-hero {
  border-color: rgba(43, 43, 43, 0.35);
  color: var(--preto);
}
.page-hero--shop-list .btn--on-hero:hover {
  border-color: var(--rosa);
  color: var(--rosa);
  background: rgba(255, 255, 255, 0.6);
}

/* PÃ¡gina de produto (PDP) â€” gutter no .page-wrap como no .site-header; miolo = max-width sem padding duplo */
.page-wrap--pdp {
  padding-top: calc(var(--header-h) + var(--safe-t));
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
}
.shop-pdp {
  max-width: var(--wrap);
  margin: 0 auto;
  padding-bottom: var(--space-16);
}
.shop-pdp__layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: start;
  margin-bottom: clamp(2rem, 5vw, 3.5rem);
}
.shop-pdp__col {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
  min-width: 0;
}
.shop-pdp__col--main {
  gap: var(--space-8);
}
.shop-pdp__col--aside {
  gap: var(--space-10);
}
.shop-pdp__media {
  position: relative;
}
.shop-pdp__figure {
  border-radius: var(--radius-lg);
  min-height: 280px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(43, 43, 43, 0.06);
}
.shop-pdp__figure--kit,
.shop-pdp__figure--material {
  aspect-ratio: 3 / 2;
  min-height: unset;
  width: 100%;
}
.shop-pdp__figure--kit {
  background: linear-gradient(145deg, rgba(231, 29, 104, 0.14) 0%, rgba(253, 196, 50, 0.18) 50%, #faf8f9 100%);
}
.shop-pdp__figure--material {
  background: linear-gradient(145deg, rgba(84, 169, 223, 0.14) 0%, rgba(57, 170, 53, 0.12) 50%, #f8faf9 100%);
}
.shop-pdp__figure-ref {
  font-family: var(--font-titulo);
  font-size: clamp(2rem, 5vw, 3rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: rgba(43, 43, 43, 0.12);
  user-select: none;
}
.shop-pdp__figure-label {
  margin-top: var(--space-3);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rosa-escuro);
  padding: 0.35rem 0.75rem;
  background: rgba(255, 255, 255, 0.85);
  border-radius: 999px;
}
.shop-pdp__figure--has-photo {
  padding: 0;
  min-height: unset;
  align-items: stretch;
  display: block;
}
.shop-pdp__figure--kit.shop-pdp__figure--has-photo,
.shop-pdp__figure--material.shop-pdp__figure--has-photo {
  min-height: unset;
}
.shop-pdp__photo {
  width: 100%;
  aspect-ratio: 3 / 2;
  height: auto;
  object-fit: cover;
  display: block;
}
.shop-pdp__figure-label--overlay {
  position: absolute;
  bottom: var(--space-4);
  left: 50%;
  transform: translateX(-50%);
  margin-top: 0;
  z-index: 1;
  box-shadow: 0 4px 20px rgba(43, 43, 43, 0.08);
}
.shop-pdp__stock-line {
  font-size: 0.9rem;
  margin: 0.35rem 0 0;
  line-height: 1.45;
}
.shop-pdp__stock-line--ok {
  color: #166534;
}
.shop-pdp__stock-line--low {
  color: #9a3412;
}
.shop-pdp__stock-line--out {
  color: #b91c1c;
}
.shop-pdp__badge-floating {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.35rem 0.65rem;
  border-radius: 6px;
  background: var(--amarelo);
  color: #5c4500;
  z-index: 2;
}
.shop-pdp__intro {
  padding-top: var(--space-2);
}
.shop-pdp__ref {
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  color: #888;
  margin: 0 0 var(--space-2);
}
.shop-pdp__title {
  font-size: clamp(calc(1.5rem * var(--title-scale)), calc(3.21vw), calc(2.125rem * var(--title-scale)));
  margin: 0 0 var(--space-3);
  line-height: 1.2;
  color: var(--preto);
}
.shop-pdp__title--solo {
  margin-top: var(--space-4);
}
.shop-pdp__lead {
  font-size: 1.0625rem;
  line-height: 1.6;
  color: #444;
  margin: 0 0 var(--space-5);
}
.shop-pdp__price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-5);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, rgba(231, 29, 104, 0.06) 0%, rgba(255, 255, 255, 0.9) 55%);
  border: 1px solid rgba(201, 24, 88, 0.12);
}
.shop-pdp__price-row--ecommerce {
  background: linear-gradient(135deg, rgba(231, 29, 104, 0.09) 0%, rgba(255, 255, 255, 0.95) 50%);
  border-color: rgba(201, 24, 88, 0.18);
}
.shop-pdp__price {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--rosa-escuro);
}
.shop-pdp__price-note {
  font-size: 0.8125rem;
  color: #777;
}
.shop-pdp__price--muted {
  font-size: 1.125rem;
  font-weight: 600;
  color: #666;
}
.shop-pdp__trust {
  list-style: none;
  margin: 0;
  padding: var(--space-4) 0 0;
  border-top: 1px solid rgba(43, 43, 43, 0.08);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: #555;
}
.shop-pdp__trust li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}
.shop-pdp__trust-icon {
  color: var(--verde);
  font-weight: 700;
  flex-shrink: 0;
}
.shop-pdp__aluno-note {
  margin: var(--space-3) 0 0;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: #888;
}
.shop-pdp__aluno-note a {
  color: #777;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.shop-pdp__aluno-note a:hover {
  color: var(--rosa);
}
.shop-pdp__skip {
  margin: var(--space-5) 0 0;
}
.shop-pdp__skip-btn {
  width: 100%;
  max-width: 20rem;
  justify-content: center;
  min-height: var(--touch);
}

#pedido {
  scroll-margin-top: calc(var(--header-h) + var(--space-4));
}

.shop-pdp__detail {
  min-width: 0;
}
.shop-pdp__aside {
  min-width: 0;
}
.shop-pdp__h2 {
  font-family: var(--font-titulo);
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0 0 var(--space-4);
  color: var(--preto);
}
.shop-pdp__h3 {
  font-size: 1rem;
  font-weight: 600;
  margin: var(--space-6) 0 var(--space-3);
  color: var(--preto);
}
.shop-pdp__prose p {
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #444;
  margin: 0 0 var(--space-4);
}
.shop-pdp__specs {
  margin: 0;
  padding-left: 1.15rem;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: #444;
}
.shop-pdp__specs li {
  margin-bottom: 0.35rem;
}

.shop-order-card {
  position: sticky;
  top: calc(var(--header-h) + var(--space-4));
  background: var(--branco);
  border: 1px solid rgba(43, 43, 43, 0.1);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: 0 12px 40px rgba(43, 43, 43, 0.08);
  border-top: 3px solid rgba(201, 24, 88, 0.65);
}
.shop-order-card__title {
  font-family: var(--font-titulo);
  font-size: calc(1.125rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 var(--space-2);
  color: var(--preto);
}
.shop-order-card__title--secondary {
  margin-top: var(--space-5);
  font-size: calc(1rem * var(--title-scale));
}
.shop-order-card__lead {
  font-size: 0.875rem;
  color: #666;
  line-height: 1.55;
  margin: 0 0 var(--space-5);
}
.shop-order-card__stock-low {
  margin: calc(var(--space-5) * -1) 0 var(--space-4);
  padding: 0.55rem 0.75rem;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.4;
  color: #9a3412;
  background: #fff7ed;
  border: 1px solid rgba(194, 65, 12, 0.2);
  border-radius: var(--radius-sm);
}
.form--shop-order label {
  font-size: 0.8125rem;
}
.form--shop-order input[type="number"] {
  max-width: 8rem;
}
.label-optional {
  font-weight: 400;
  color: #888;
  font-size: 0.8em;
}
.shop-order-card__alt {
  margin: var(--space-8) 0 0;
  padding-top: var(--space-5);
  border-top: 1px solid rgba(43, 43, 43, 0.08);
  font-size: 0.875rem;
  color: #555;
  line-height: 1.5;
}
.btn--shop-submit {
  width: 100%;
  min-height: var(--touch);
  justify-content: center;
  margin-top: var(--space-5);
}

.shop-pdp__footer-nav {
  margin-top: var(--space-10);
  padding-top: var(--space-6);
  border-top: 1px solid rgba(43, 43, 43, 0.08);
}
.shop-pdp__back {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 600;
  font-size: 0.9375rem;
  color: var(--rosa);
  text-decoration: none;
}
.shop-pdp__back::before {
  content: "\2190";
  font-size: 1.1em;
}
.shop-pdp__back:hover {
  text-decoration: underline;
}

@media (max-width: 900px) {
  .shop-pdp__layout {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
  }
  .shop-pdp__col--main,
  .shop-pdp__col--aside {
    display: contents;
  }
  .shop-pdp__media {
    order: 1;
    width: 100%;
    min-width: 0;
  }
  .shop-pdp__intro {
    order: 2;
  }
  .shop-pdp__detail {
    order: 3;
  }
  .shop-pdp__aside {
    order: 4;
  }
  .shop-order-card {
    position: static;
  }
}

/* Checkout loja (MB WAY / Multibanco) â€” largura via .section__inner / .checkout-shell--wide (= var(--wrap)) */
.checkout-hero {
  margin-bottom: var(--space-8);
}
.checkout-hero__kicker {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 var(--space-2);
}
.checkout-hero__title {
  font-size: clamp(calc(1.5rem * var(--title-scale)), calc(4.28vw), calc(1.85rem * var(--title-scale)));
  margin: 0 0 var(--space-3);
  color: var(--preto);
}
.checkout-hero__lead {
  margin: 0;
  font-size: 1rem;
  color: #444;
  line-height: 1.55;
}
.checkout-hero__total {
  color: var(--preto);
  font-size: 1.125rem;
}
.checkout-summary {
  background: #fafafa;
  border: 1px solid rgba(43, 43, 43, 0.08);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  margin-bottom: var(--space-8);
}
.checkout-summary__h {
  font-size: 0.8125rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #666;
  margin: 0 0 var(--space-4);
}
.checkout-summary__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.checkout-summary__list li {
  display: flex;
  justify-content: space-between;
  gap: var(--space-4);
  font-size: 0.9375rem;
}
.checkout-summary__label {
  color: #666;
}
.checkout-summary__val {
  font-weight: 600;
  text-align: right;
  color: var(--preto);
}
.checkout-panels {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.checkout-panel {
  padding: var(--space-6);
  border-radius: var(--radius-md);
  border: 1px solid rgba(43, 43, 43, 0.1);
  background: var(--branco);
  box-shadow: var(--shadow-sm);
}
.checkout-panel__title {
  font-family: var(--font-titulo);
  font-size: calc(1.05rem * var(--title-scale));
  margin: 0 0 var(--space-2);
}
.checkout-panel__text {
  font-size: 0.875rem;
  color: #555;
  line-height: 1.55;
  margin: 0 0 var(--space-5);
}
.checkout-form label {
  display: block;
  font-size: 0.8125rem;
  font-weight: 600;
  margin-bottom: var(--space-2);
}
.checkout-form input[type="tel"] {
  width: 100%;
  max-width: 16rem;
  margin-bottom: var(--space-4);
}
.checkout-footnote {
  margin-top: var(--space-10);
  font-size: 0.875rem;
  color: #666;
  line-height: 1.55;
}
.checkout-alert {
  padding: var(--space-4);
  border-radius: var(--radius-sm);
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  color: #166534;
  font-size: 0.9375rem;
  margin-bottom: var(--space-6);
}
.checkout-alert--error {
  background: #fef2f2;
  border-color: #fecaca;
  color: #991b1b;
}
.checkout-mb-box {
  padding: var(--space-6);
  border-radius: var(--radius-md);
  background: linear-gradient(145deg, #faf8f9 0%, #fff 100%);
  border: 1px solid rgba(201, 24, 88, 0.2);
  margin-bottom: var(--space-6);
}
.checkout-mb-box__title {
  font-family: var(--font-titulo);
  font-size: calc(1.125rem * var(--title-scale));
  margin: 0 0 var(--space-4);
}
.checkout-mb-dl {
  margin: 0;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-2) var(--space-6);
  font-size: 0.9375rem;
}
.checkout-mb-dl dt {
  margin: 0;
  color: #666;
  font-weight: 500;
}
.checkout-mb-dl dd {
  margin: 0;
  font-weight: 700;
  color: var(--preto);
}
.checkout-mb-dl__ref {
  font-size: 1.25rem;
  letter-spacing: 0.06em;
}
.checkout-mb-note {
  margin: var(--space-5) 0 0;
  font-size: 0.8125rem;
  color: #777;
  line-height: 1.5;
}
.shop-pdp__price-row--ecommerce .shop-pdp__price-note {
  color: var(--rosa);
  font-weight: 600;
}

.site-header__cart-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.125rem;
  height: 1.125rem;
  padding: 0 0.35rem;
  margin-left: 0.25rem;
  font-size: 0.65rem;
  font-weight: 700;
  color: #fff;
  background: var(--rosa);
  border-radius: 999px;
  vertical-align: middle;
}

.shop-pdp__cart-block {
  margin-top: 0.5rem;
}
.shop-pdp__cart-qty {
  width: 100%;
  max-width: 6rem;
  margin-top: 0.35rem;
  padding: 0.5rem 0.65rem;
  border: 1px solid rgba(43, 43, 43, 0.15);
  border-radius: 6px;
}
.shop-pdp__cart-btns {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: 0.85rem;
}
.shop-pdp__cart-links {
  font-size: 0.875rem;
  margin-top: 0.85rem;
}
.shop-pdp__cart-links a {
  color: var(--rosa);
  font-weight: 600;
}
.shop-order-card__fine {
  font-size: 0.8125rem;
  color: #666;
  margin-top: 1rem;
  line-height: 1.5;
}

.shop-cart-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1rem 0;
  font-size: 0.9375rem;
}
.shop-cart-table th,
.shop-cart-table td {
  padding: 0.65rem 0.5rem;
  border-bottom: 1px solid rgba(43, 43, 43, 0.08);
  text-align: left;
  vertical-align: middle;
}
.shop-cart-table__sub {
  font-size: 0.8125rem;
  color: #666;
}
.shop-cart-table__cell-artigo {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}
.shop-cart-table__thumb {
  width: 56px;
  height: 56px;
  object-fit: cover;
  border-radius: 8px;
  flex-shrink: 0;
  border: 1px solid rgba(43, 43, 43, 0.08);
}
.shop-cart-table__stock-note {
  font-size: 0.75rem;
  color: #9a3412;
  margin: 0.3rem 0 0;
  line-height: 1.35;
}
.shop-cart-table__qty {
  width: 4.5rem;
  padding: 0.35rem 0.5rem;
  border: 1px solid rgba(43, 43, 43, 0.15);
  border-radius: 6px;
}
.shop-cart-table__remove {
  background: none;
  border: none;
  color: var(--rosa);
  cursor: pointer;
  font-size: 0.8125rem;
  text-decoration: underline;
  padding: 0;
  font-family: inherit;
}
.shop-cart-actions {
  margin-top: 0.75rem;
}
.shop-cart-total {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 2px solid var(--preto);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
}
.shop-cart-total__label {
  margin: 0;
  font-size: 0.9375rem;
  color: #555;
}
.shop-cart-total__val {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 700;
}

.checkout-shell--wide {
  max-width: var(--wrap);
}
.checkout-steps {
  display: flex;
  gap: 1rem;
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
  font-size: 0.8125rem;
  color: #666;
  flex-wrap: wrap;
}
.checkout-steps__item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
}
.checkout-steps__item > span:first-of-type {
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: #eee;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 0.75rem;
}
.checkout-steps__item--done > span:first-of-type {
  background: #166534;
  color: #fff;
}
.checkout-steps__item--current > span:first-of-type {
  background: var(--preto);
  color: #fff;
}
.checkout-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 900px) {
  .checkout-layout {
    grid-template-columns: 1fr 320px;
    align-items: start;
  }
  .checkout-layout__aside .checkout-summary {
    position: sticky;
    top: 1rem;
  }
}
.checkout-fieldset {
  border: none;
  padding: 0;
  margin: 0 0 1.5rem;
}
.checkout-fieldset__legend {
  font-weight: 600;
  margin-bottom: 0.75rem;
  padding: 0;
  font-size: 1rem;
}
.checkout-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
@media (max-width: 500px) {
  .checkout-grid-2 {
    grid-template-columns: 1fr;
  }
}
.form--checkout-dados .label-optional {
  font-weight: 400;
  color: #777;
}
.checkout-summary__list--lines li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: baseline;
}
.checkout-summary__total-row {
  display: flex;
  justify-content: space-between;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(43, 43, 43, 0.1);
  font-size: 1rem;
}
.checkout-summary__fineprint {
  font-size: 0.75rem;
  color: #777;
  margin: 0.5rem 0 0;
  line-height: 1.4;
}

/* Atelier Digital â€” brevemente */
.coming-soon {
  text-align: center;
  padding: 2rem 1.5rem;
  background: linear-gradient(135deg, #f8f6f8 0%, #fff 100%);
  border: 1px dashed rgba(201, 24, 88, 0.25);
  border-radius: var(--radius-sm);
}
.coming-soon__badge {
  display: inline-block;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rosa);
  margin-bottom: 1rem;
}

.page-list {
  margin: 0 0 1rem;
  padding-left: 1.25rem;
  line-height: 1.7;
  color: #444;
}
.page-note {
  font-size: 0.875rem;
  color: #666;
  margin-top: 1rem;
}

.testimonials--page {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  margin-bottom: 2rem;
}

/* Cards (pÃ¡gina ServiÃ§os e compatibilidade) */
.cards-editorial {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}
.card-editorial {
  display: flex;
  flex-direction: column;
  background: var(--branco);
  border-radius: 8px;
  padding: 1.5rem;
  border: 1px solid rgba(43, 43, 43, 0.06);
  position: relative;
  overflow: hidden;
  transition: box-shadow 0.25s, border-color 0.25s;
}
.card-editorial:hover { box-shadow: 0 8px 24px rgba(43, 43, 43, 0.08); border-color: rgba(43, 43, 43, 0.1); }
.card-editorial::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
}
.card-editorial--rosa::before { background: var(--rosa); }
.card-editorial--verde::before { background: var(--verde); }
.card-editorial--azul::before { background: var(--azul); }
.card-editorial--personalizado::before { background: var(--servico-cor); }
.card-editorial__icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-titulo);
  font-size: 1.25rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
}
.card-editorial--rosa .card-editorial__icon { background: var(--rosa-suave); color: var(--rosa); }
.card-editorial--verde .card-editorial__icon { background: var(--verde-suave); color: var(--verde); }
.card-editorial--azul .card-editorial__icon { background: var(--azul-suave); color: var(--azul); }
.card-editorial--personalizado .card-editorial__icon { background: var(--servico-cor-suave); color: var(--servico-cor); }
.card-editorial--personalizado .link-arrow { color: var(--servico-cor); }
.card-editorial--personalizado .link-arrow:hover { color: var(--servico-cor); filter: brightness(0.85); }
.card-editorial__title {
  font-family: var(--font-titulo);
  font-size: calc(1.25rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 0.25rem;
  color: var(--preto);
}
.card-editorial__subtitle {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  color: #666;
  margin: 0 0 0.5rem;
  font-weight: 400;
}
.card-editorial__text {
  font-family: var(--font-texto);
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.6;
  margin: 0 0 0.75rem;
  flex: 1;
}
.card-editorial__cta { margin: 0; margin-top: auto; padding-top: 0.25rem; }

.card-editorial--espaco {
  padding: 0;
  overflow: hidden;
}
.card-editorial__media-link--espaco {
  display: block;
  text-decoration: none;
  color: inherit;
  line-height: 0;
}
.card-editorial__media-link--espaco:hover .card-editorial__media-img {
  transform: scale(1.03);
}
.card-editorial__media--espaco {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: linear-gradient(145deg, var(--rosa-suave), var(--azul-suave));
}
.card-editorial--espaco .card-editorial__media-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s var(--ease);
}
.card-editorial__body--espaco {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

.card-editorial__cta--espaco {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
}

.card-editorial__cta--espaco .card-editorial__btn-mapa {
  margin-bottom: 0;
}

/* ---------- Modal newsletter ---------- */
.modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  padding-top: max(1rem, var(--safe-t));
  padding-bottom: max(1rem, var(--safe-b));
  padding-left: max(1rem, var(--safe-l));
  padding-right: max(1rem, var(--safe-r));
  visibility: hidden;
  opacity: 0;
  transition: visibility 0.3s, opacity 0.3s;
  overflow-y: auto;
}

.modal[aria-hidden="false"] { visibility: visible; opacity: 1; }

.modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(43, 43, 43, 0.6);
  backdrop-filter: blur(6px);
  cursor: pointer;
  transition: opacity 0.3s;
}

.modal__box {
  position: relative;
  width: 100%;
  max-width: 420px;
  max-height: min(90vh, calc(100svh - 2rem));
  background: var(--branco);
  border-radius: 12px;
  padding: 2rem;
  box-shadow: 0 24px 48px rgba(43, 43, 43, 0.2);
  transform: scale(0.95);
  opacity: 0;
  transition: transform 0.35s var(--ease), opacity 0.35s;
  margin: auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

.modal[aria-hidden="false"] .modal__box {
  transform: scale(1);
  opacity: 1;
}

.modal__close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: none;
  color: var(--preto);
  font-size: 1.5rem;
  cursor: pointer;
  border-radius: 50%;
  transition: background 0.2s;
}
.modal__close:hover { background: #f0f0f0; }
.modal__close:focus-visible { outline: 2px solid var(--rosa); outline-offset: 2px; }

.newsletter__title {
  font-family: var(--font-titulo);
  font-size: calc(1.5rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 0.25rem;
}
.newsletter__text {
  font-size: 0.9375rem;
  color: #555;
  margin: 0 0 1rem;
  line-height: 1.5;
}
.newsletter__form { display: flex; flex-direction: column; gap: 0.75rem; }
.newsletter__input {
  font-family: var(--font-texto);
  font-size: 1rem;
  padding: 0.75rem 1rem;
  border: 2px solid rgba(43, 43, 43, 0.1);
  border-radius: 8px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.newsletter__input:focus {
  outline: none;
  border-color: var(--rosa);
  box-shadow: 0 0 0 4px var(--rosa-suave);
}
.newsletter__btn {
  font-family: var(--font-texto);
  font-size: 1rem;
  font-weight: 600;
  padding: 0.75rem 1rem;
  min-height: var(--touch);
  min-width: min(100%, 10rem);
  border: none;
  border-radius: 0;
  background: var(--rosa);
  color: var(--branco);
  cursor: pointer;
  transition: background 0.2s;
}
.newsletter__btn:hover { background: var(--rosa-escuro); }
.newsletter__btn:disabled { opacity: 0.7; cursor: not-allowed; }
.newsletter__feedback { font-size: 0.9rem; margin-top: 0.25rem; }
.newsletter__feedback[data-success="true"] { color: var(--verde); }
.newsletter__feedback[data-success="false"] { color: var(--rosa); }

html.modal-open,
body.modal-open {
  overflow: hidden;
}
html.modal-open {
  overscroll-behavior: none;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

/* ---------- Legal ---------- */
.legal-body h2 {
  font-family: var(--font-titulo);
  font-size: 1.25rem;
  font-weight: 600;
  margin: 2rem 0 0.5rem;
  color: var(--preto);
}
.legal-body h2:first-child { margin-top: 0; }
.legal-body h3 {
  font-family: var(--font-titulo);
  font-size: 1.05rem;
  font-weight: 600;
  margin: 1.25rem 0 0.4rem;
  color: var(--preto);
}
.legal-body p { margin: 0 0 0.75rem; font-size: 0.9375rem; line-height: 1.65; color: #444; }
.legal-body__lead {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--preto);
  margin-bottom: 1.25rem;
}
.legal-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
  margin: 1rem 0 1.5rem;
}
.legal-table th,
.legal-table td {
  border: 1px solid rgba(43, 43, 43, 0.12);
  padding: 0.65rem 0.75rem;
  text-align: left;
  vertical-align: top;
}
.legal-table th {
  background: rgba(43, 43, 43, 0.04);
  font-weight: 600;
  color: var(--preto);
}
.legal-table code {
  font-size: 0.8125rem;
  word-break: break-word;
}

/* ---------- Responsivo: tablet ---------- */
@media (max-width: 900px) {
  .hero__inner { grid-template-columns: 1fr; gap: var(--space-8); text-align: center; }
  .hero__content { max-width: 100%; }
  .hero__cta { justify-content: center; }
  .hero__visual { max-width: min(280px, 70vw); justify-self: center; }
  .block__grid--2 { grid-template-columns: 1fr; }
  .block__figure:not(.page-about-figure) {
    order: -1;
    width: min(100%, 28rem);
    max-width: min(100%, 28rem);
    margin: 0 auto;
  }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .gallery--home-uniform {
    --gallery-home-cols: 3;
    gap: var(--space-3);
  }
  .gallery--home-uniform--count-1,
  .gallery--home-uniform--count-2 {
    max-width: none;
  }
  .gallery--home-uniform--count-1 {
    --gallery-home-cols: 1;
    max-width: min(100%, 320px);
    margin-inline: auto;
  }
  .gallery--home-uniform--count-2 {
    --gallery-home-cols: 2;
  }
  .gallery--home-mosaic[class*="--count-"],
  .gallery--home-preview[class*="--count-"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: none;
    grid-auto-rows: auto;
    grid-auto-flow: row;
    gap: var(--space-3);
    aspect-ratio: unset;
    max-height: none;
  }
  .gallery--home-mosaic[class*="--count-"] > .gallery__item,
  .gallery--home-preview[class*="--count-"] > .gallery__item:nth-child(n) {
    grid-column: auto !important;
    grid-row: auto !important;
    aspect-ratio: 1 / 1;
    min-height: 0;
  }
  .gallery--home-mosaic--count-1 > .gallery__item:nth-child(1),
  .gallery--home-preview--count-1 > .gallery__item:nth-child(1) {
    grid-column: 1 / -1 !important;
    aspect-ratio: 16 / 10;
    min-height: min(44vw, 340px);
  }
  .gallery--home-mosaic--count-2,
  .gallery--home-preview--count-2 {
    grid-template-columns: 1fr;
  }
  .gallery--home-mosaic--count-2 > .gallery__item,
  .gallery--home-preview--count-2 > .gallery__item {
    aspect-ratio: 16 / 10;
    min-height: min(38vw, 280px);
  }
  .gallery--home-mosaic--count-3 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-4 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-5 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-6 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-7 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-8 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-9 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-10 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-11 > .gallery__item:nth-child(1),
  .gallery--home-mosaic--count-12 > .gallery__item:nth-child(1),
  .gallery--home-preview--count-3 > .gallery__item:nth-child(1),
  .gallery--home-preview--count-4 > .gallery__item:nth-child(1),
  .gallery--home-preview--count-5 > .gallery__item:nth-child(1),
  .gallery--home-preview--count-6 > .gallery__item:nth-child(1) {
    grid-column: 1 / -1 !important;
    aspect-ratio: 16 / 10;
    min-height: min(42vw, 320px);
  }
  .gallery--home-mosaic--count-4 > .gallery__item:last-child,
  .gallery--home-mosaic--count-6 > .gallery__item:last-child,
  .gallery--home-mosaic--count-8 > .gallery__item:last-child,
  .gallery--home-mosaic--count-10 > .gallery__item:last-child,
  .gallery--home-mosaic--count-12 > .gallery__item:last-child {
    grid-column: 1 / -1 !important;
    aspect-ratio: 16 / 9;
    max-height: 240px;
  }
  .gallery-editorial { grid-template-columns: repeat(2, 1fr); }
  .gallery-editorial.gallery-page { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .events-list--preview { grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
  .loja-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
  .shop-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
  .contact-grid { grid-template-columns: 1fr; }
  .page-hero { padding-top: clamp(var(--space-8), 5vw, var(--space-12)); padding-bottom: clamp(var(--space-8), 5vw, var(--space-12)); }
}

/* ---------- Tablet: paisagem â€œestreitaâ€ (769â€“900px) ----------
   O breakpoint acima empilha tudo â‰¤900px; em paisagem hÃ¡ largura Ãºtil para 2 colunas. */
@media (min-width: 769px) and (max-width: 900px) and (orientation: landscape) {
  .block__grid--2 {
    grid-template-columns: 1fr 1fr;
    gap: clamp(var(--space-6), 4vw, var(--space-10));
    align-items: center;
  }
  .block__figure {
    order: 0;
    max-width: none;
    margin: 0;
  }
  .contact-grid {
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.25rem, 3vw, 2rem);
    align-items: start;
  }
  .hero__inner {
    grid-template-columns: 1fr 1fr;
    text-align: left;
    align-items: center;
    gap: var(--space-8);
  }
  .hero__content {
    max-width: none;
    text-align: left;
    align-items: flex-start;
  }
  .hero__title {
    margin-inline: 0;
  }
  .hero__cta {
    justify-content: flex-start;
  }
  .hero__visual {
    justify-self: end;
    max-width: min(280px, 42vw);
  }
  .hero--carousel .hero__content {
    align-items: center;
    text-align: center;
  }
  .hero--carousel .hero__kicker,
  .hero--carousel .hero__subtitle,
  .hero--carousel .hero__tagline {
    text-align: center;
  }
  .hero--carousel .hero__title {
    margin-inline: 0;
  }
  .hero--carousel .hero__cta {
    justify-content: center;
  }
  .hero--carousel .hero__visual {
    justify-self: center;
  }
}

/* ---------- Tablet: retrato (769â€“1024px) ----------
   Acima de 900px as regras â€œâ‰¤900â€ nÃ£o aplicam; aqui refinamos grelhas, tipo e imagens. */
@media (min-width: 769px) and (max-width: 1024px) and (orientation: portrait) {
  .hero__inner {
    gap: clamp(1.75rem, 4vw, 2.75rem);
  }
  .hero__title {
    font-size: clamp(3.25rem, 11vw, 5rem);
  }
  .hero__visual {
    max-width: min(300px, 62vw);
  }
  /* Sobre: coluna Ãºnica + imagem Ã  largura Ãºtil */
  .page-about-main {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .page-about-main__visual--between,
  .page-about-main__visual--below-equipa {
    position: static;
    width: 100%;
    max-width: min(100%, 36rem);
    margin-inline: auto;
  }
  .page-about-figure {
    width: 100%;
    max-width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    max-height: none;
    min-height: 0;
  }
  .page-hero.page-hero--custom-bg,
  .espaco-local-hero--custom-bg {
    min-height: clamp(240px, 36vw, 340px);
  }
  /* â‰¤900px jÃ¡ forÃ§a 2 colunas; entre 901â€“1024 o base ainda Ã© 3 â€” 2 colunas leem melhor */
  .gallery-editorial,
  .gallery-editorial.gallery-page {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .testimonials {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-4);
  }
  .cards-editorial {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-5);
  }
  .events-list--preview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .loja-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .shop-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  }
  .quote__text,
  .quote__content {
    font-size: clamp(1.5rem, 4.2vw, 2.65rem);
  }
}

/* ---------- Tablet: paisagem com pouca altura â€” hero mantÃ©m ecrÃ£ completo e seta visÃ­vel ---------- */
@media (min-width: 769px) and (max-height: 700px) and (orientation: landscape) {
  .hero {
    min-height: 100vh;
    min-height: 100svh;
    padding-top: calc(var(--header-h) + var(--safe-t) + var(--space-5));
    padding-bottom: calc(var(--space-12) + var(--safe-b));
  }
  .hero__visual {
    max-width: min(260px, 32vw);
  }
  .page-hero {
    padding-top: clamp(var(--space-6), 3vw, var(--space-10));
    padding-bottom: clamp(var(--space-6), 3vw, var(--space-10));
  }
  .banner {
    padding-top: var(--space-8);
    padding-bottom: var(--space-8);
  }
  .block {
    padding-top: clamp(var(--space-8), 5vw, var(--space-12));
    padding-bottom: clamp(var(--space-8), 5vw, var(--space-12));
  }
  .section {
    padding-top: clamp(var(--space-8), 4vw, var(--space-12));
    padding-bottom: clamp(var(--space-8), 4vw, var(--space-12));
  }
}

/* Contacto em tablet largo paisagem: duas colunas (reverte empilhamento sÃ³ â‰¤900 em largura) */
@media (min-width: 901px) and (max-width: 1200px) and (orientation: landscape) {
  .contact-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-8);
    align-items: start;
  }
}

/* Tablet em paisagem: hero em ecrÃ£ completo + seta visÃ­vel (z-index no .hero__scroll base) */
@media (min-width: 769px) and (max-width: 1024px) and (orientation: landscape) {
  .hero {
    min-height: 100vh;
    min-height: 100svh;
  }
}

/* ---------- Responsivo: telemÃ³vel + tablet (menu hamburger atÃ© 1024px) ---------- */
@media (max-width: 1024px) {
  :root { --header-h: calc(2rem + var(--touch)); }
  /* Sem barra de scroll visÃ­vel (gestos mantÃªm-se) */
  html {
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .scroll-progress {
    transition: none;
  }
  html::-webkit-scrollbar { display: none; }
  body { scrollbar-width: none; -ms-overflow-style: none; }
  body::-webkit-scrollbar { display: none; }
  .site-header {
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
    /* TransiÃ§Ã£o mais rÃ¡pida em mobile: o header volta ao normal em sincronia com o fecho do menu (0.25s) */
    transition: background 0.25s var(--ease), box-shadow 0.2s var(--ease), color 0.15s ease;
  }
  .site-header__inner { position: relative; }

  /* Desfoque do conteÃºdo por trÃ¡s do menu:
     Aplicar filter:blur ao conteÃºdo (mais fiÃ¡vel que backdrop-filter no overlay)
     O overlay usa fundo semi-transparente para o blur ser visÃ­vel */
  #main-content,
  .site-footer {
    transition: filter 0.3s ease;
  }
  body.nav-open #main-content,
  body.nav-open .site-footer {
    filter: blur(5px);
  }
  /* Logo nÃ£o invade o burger; altura fixa porque as imgs sÃ£o absolute */
  .site-header__logo {
    position: relative;
    z-index: 60;
    width: min(160px, calc(100vw - var(--touch) - var(--page-pad-left) - var(--page-pad-right) - 1rem));
    height: 40px;
    min-height: 40px;
  }
  .site-header__logo img {
    width: min(160px, calc(100vw - var(--touch) - var(--page-pad-left) - var(--page-pad-right) - 1rem));
    height: 38px;
    max-height: 38px;
    object-fit: contain;
    object-position: left center;
  }
  .site-header__burger { display: flex; min-width: var(--touch); min-height: var(--touch); position: relative; z-index: 60; }
  body > #site-nav.site-header__nav:not(.open),
  .site-header__nav:not(.open) { display: none !important; }
  body.nav-open > #site-nav.open,
  body.nav-open > #site-nav-portal > #site-nav.open,
  body.nav-open > .site-header__nav.open,
  #site-nav.open,
  .site-header__nav.open {
    display: flex !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    inset: 0 !important;
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    height: 100dvh !important;
    min-height: 100dvh !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    z-index: 100;
    margin: 0;
    background: rgba(20, 20, 20, 0.95);
    /* backdrop-filter removido: causava fundo transparente em Chrome / Safari em certos contextos.
       O desfoque Ã© feito com filter:blur no conteÃºdo por trÃ¡s (ver body.nav-open #main-content). */
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    gap: 0;
    padding: calc(var(--header-h) + var(--safe-t) + var(--space-6)) 0 var(--space-8);
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
    padding-bottom: max(var(--space-8), var(--safe-b));
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    touch-action: pan-y;
    scrollbar-width: none;
    -ms-overflow-style: none;
    /* Sem animaÃ§Ã£o no container: o fundo escuro aparece imediatamente.
       Apenas os links animam (stagger abaixo). Evita opacity:0 persistente em Chrome. */
  }
  .site-header__nav.open::-webkit-scrollbar { display: none; }
  .site-header__nav.open.closing {
    animation: menuOverlayOut 0.25s cubic-bezier(0.32, 0, 0.22, 1) forwards;
  }
  .site-header__nav.open > .site-header__link,
  .site-header__nav.open > .site-header__group {
    opacity: 0;
    animation: menuLinkIn 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  }
  .site-header__nav.open > *:nth-child(1) { animation-delay: 0.06s; }
  .site-header__nav.open > *:nth-child(2) { animation-delay: 0.1s; }
  .site-header__nav.open > *:nth-child(3) { animation-delay: 0.14s; }
  .site-header__nav.open > *:nth-child(4) { animation-delay: 0.18s; }
  .site-header__nav.open > *:nth-child(5) { animation-delay: 0.22s; }
  .site-header__nav.open > *:nth-child(6) { animation-delay: 0.26s; }
  .site-header__nav.open > *:nth-child(7) { animation-delay: 0.3s; }
  .site-header__nav.open > *:nth-child(8) { animation-delay: 0.34s; }
  .site-header__nav.open > *:nth-child(9) { animation-delay: 0.38s; }
  /* SaÃ­da: fade Ãºnico, sem stagger (overlay + links juntos) */
  .site-header__nav.open.closing > .site-header__link,
  .site-header__nav.open.closing > .site-header__group {
    animation: menuLinkOut 0.25s cubic-bezier(0.32, 0, 0.22, 1) forwards;
    animation-delay: 0s;
  }
  /* Submenus no mobile: acordeÃ£o */
  .site-header__group {
    width: 100%;
    flex-direction: column;
    align-items: stretch;
  }
  .site-header__link--trigger {
    width: 100%;
    min-height: var(--touch);
    justify-content: space-between;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .site-header__link--trigger::after {
    border-top-color: rgba(255, 255, 255, 0.85);
  }
  .site-header__group.is-open .site-header__link--trigger::after {
    transform: rotate(180deg);
    margin-top: 0;
  }
  /* Submenu acordeÃ£o: sem borda/sombra quando fechado (max-height:0) â€” evita â€œtraÃ§osâ€ horizontais */
  .site-header__submenu {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    pointer-events: auto;
    max-height: 0;
    overflow: hidden;
    padding: 0;
    margin: 0;
    border: none;
    box-shadow: none;
    background: rgba(255, 248, 251, 0.96);
    border-radius: var(--radius-sm);
    transition: max-height 0.35s ease;
  }
  .site-header__group.is-open .site-header__submenu {
    max-height: min(75vh, 720px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 0.35rem 0;
    margin-top: 0.25rem;
    border: 1px solid rgba(231, 29, 104, 0.12);
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
  }
  .site-header__group:hover .site-header__submenu,
  .site-header__group:focus-within .site-header__submenu {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  .site-header__sublink {
    color: var(--preto);
    padding: 0.65rem 1rem 0.65rem 1.5rem;
    font-size: 0.9375rem;
  }
  .site-header__sublink:hover,
  .site-header__sublink--active {
    background: var(--rosa-suave);
    color: var(--rosa);
  }
  .site-header__sublink-note {
    color: #666;
  }
  @keyframes menuOverlayIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  @keyframes menuOverlayOut {
    from { opacity: 1; }
    to { opacity: 0; }
  }
  @keyframes menuLinkIn {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes menuLinkOut {
    from { opacity: 1; transform: translateY(0); }
    to { opacity: 0; transform: translateY(8px); }
  }
  /* Bloquear scroll da pÃ¡gina (overflow â€” evitar body position:fixed que prende position:fixed do menu) */
  body.nav-open { overflow: hidden; touch-action: manipulation; }
  html.nav-open {
    overflow: hidden;
    overscroll-behavior: none;
  }
  /* Barra do header com menu aberto: fundo escuro para o botÃ£o de fechar (X) branco aparecer */
  body.nav-open .site-header {
    background: rgba(20, 20, 20, 0.95) !important;
    box-shadow: none;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    filter: none !important;
    transform: none !important;
    contain: none !important;
  }
  body.nav-open .site-header .site-header__logo-img--default { display: none !important; }
  body.nav-open .site-header .site-header__logo-img--white { display: block !important; }
  /* BotÃ£o de fechar: X branco sempre visÃ­vel no header escuro (transiÃ§Ã£o animada no base) */
  body.nav-open .site-header__burger { color: var(--branco) !important; }
  /* Links do menu: texto claro no fundo escuro transparente */
  body.nav-open .site-header__nav.open .site-header__link {
    font-size: 1.0625rem;
    padding: var(--space-4) var(--space-4);
    min-height: var(--touch);
    justify-content: flex-start;
    border-radius: var(--radius-sm);
    color: rgba(255, 255, 255, 0.95) !important;
  }
  body.nav-open .site-header__nav.open .site-header__link:hover { background: rgba(255, 255, 255, 0.1); color: var(--branco) !important; }
  body.nav-open .site-header__nav.open .site-header__link--active { color: var(--amarelo) !important; background: rgba(255, 255, 255, 0.08); }
  body.nav-open .site-header__nav.open .site-header__link--cliente {
    color: var(--amarelo) !important;
    /* Desktop: max-width 11rem + ellipsis; no overlay isso cortava â€œÃrea do alunoâ€ (maiÃºsculas + letter-spacing). */
    max-width: none;
    width: 100%;
    box-sizing: border-box;
    overflow: visible;
    text-overflow: unset;
    white-space: normal;
    overflow-wrap: break-word;
  }
  body.nav-open .site-header__nav.open .site-header__link--cliente:hover { background: rgba(255, 255, 255, 0.1); color: var(--amarelo) !important; }
  /* margin-left do desktop empurra o Ãºltimo link no overlay mobile â€” alinhar aos restantes */
  body.nav-open .site-header__nav.open .site-header__link--cliente,
  body.nav-open .site-header__nav.open .site-header__link--cart {
    margin-left: 0;
  }
  body.nav-open .site-header__nav.open .site-header__link--cart { color: var(--amarelo) !important; }
  body.nav-open .site-header__nav.open .site-header__link--cart:hover { background: rgba(255, 255, 255, 0.1); color: var(--amarelo) !important; }
  body.nav-open .site-header__nav.open .site-header__link--cart .site-header__cart-count { box-shadow: 0 0 0 2px rgba(43, 43, 43, 0.98); }
  /* Garantir separadores nenhuns entre itens principais */
  body.nav-open .site-header__nav.open > .site-header__group,
  body.nav-open .site-header__nav.open > .site-header__link {
    border: 0;
    border-bottom: none;
    box-shadow: none;
  }
  .hero {
    padding-top: calc(var(--header-h) + var(--safe-t) + var(--space-6));
    padding-bottom: calc(var(--space-12) + var(--safe-b));
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
  }
  .hero__title {
    font-size: clamp(2.75rem, 14vw, 5rem);
    --hero-title-track: 0.08em;
    letter-spacing: var(--hero-title-track);
  }
  .block {
    padding: var(--space-10) 0;
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
  }
  .service { padding: var(--space-6); }
  .services { grid-template-columns: 1fr; gap: var(--space-4); }
  .gallery-editorial.gallery-page { grid-template-columns: repeat(2, 1fr); gap: var(--space-3); }
  .events-list--preview { grid-template-columns: 1fr; }
  .testimonials { grid-template-columns: 1fr; }
  .page-hero { padding-left: var(--page-pad-left); padding-right: var(--page-pad-right); }
  .page-content { padding-left: 0; padding-right: 0; }
  .site-footer { padding-left: var(--page-pad-left); padding-right: var(--page-pad-right); }
  .modal__box {
    margin: auto;
    max-height: min(calc(100svh - 2rem), calc(100vh - 2rem));
    overflow-y: auto;
  }
}

/* Tablet/retrato largo: menu overlay com mais margem e acordeÃ£o mais baixo */
@media (min-width: 540px) and (max-width: 1024px) and (orientation: portrait) {
  .site-header__nav.open {
    padding-left: var(--page-pad-left);
    padding-right: var(--page-pad-right);
  }
  body.nav-open .site-header__nav.open .site-header__link {
    font-size: 1.125rem;
  }
  .site-header__group.is-open .site-header__submenu {
    max-height: min(52vh, 480px);
  }
}

@media (max-width: 768px) and (max-height: 500px) {
  .site-header__nav.open { justify-content: flex-start; padding-top: calc(var(--header-h) + var(--space-4)); }
}

/* TelemÃ³vel em landscape (largura tÃ­pica de telemÃ³vel): hero compacto */
@media (max-width: 768px) and (max-height: 520px) and (orientation: landscape) {
  .hero {
    min-height: unset;
    padding-top: calc(var(--header-h) + var(--safe-t) + var(--space-4));
    padding-bottom: var(--space-10);
  }
  .hero__visual { max-width: min(200px, 38vw); }
  .hero__scroll { display: none; }
}

/* Footer: linha superior compacta em ecrÃ£s estreitos */
@media (max-width: 640px) {
  .site-footer__row {
    gap: var(--space-3);
  }

  .site-footer__logo-img {
    width: 120px;
    max-height: 36px;
  }
}

/* ---------- Responsivo: mobile pequeno ---------- */
@media (max-width: 480px) {
  .hero__cta { flex-direction: column; gap: var(--space-3); }
  .hero__cta .btn { width: 100%; min-height: var(--touch); justify-content: center; }
  .banner__actions { flex-direction: column; gap: var(--space-3); }
  .banner__actions .btn { width: 100%; min-height: var(--touch); justify-content: center; }
  .block__action {
    flex-direction: column;
    gap: var(--space-3);
    align-items: stretch;
  }
  .block__action .btn { width: 100%; min-height: var(--touch); justify-content: center; }
  .block__title { font-size: clamp(calc(1.475rem * var(--title-scale)), calc(6.15vw), calc(1.875rem * var(--title-scale))); }
  .gallery { grid-template-columns: 1fr; }
  .gallery--home-uniform {
    --gallery-home-cols: 2;
    gap: var(--space-2);
  }
  .gallery--home-uniform--count-1 {
    --gallery-home-cols: 1;
    max-width: min(100%, 280px);
  }
  #galeria .gallery--home-uniform .gallery__item--obra .gallery__item__label {
    padding: var(--space-2) var(--space-2) var(--space-1);
    font-size: 0.625rem;
    line-height: 1.25;
  }
  #galeria .gallery--home-uniform .gallery__item__badge-venda {
    font-size: 0.5rem;
    padding: 0.18rem 0.32rem;
    letter-spacing: 0.04em;
  }
  .gallery-home-hint {
    font-size: 0.8125rem;
    margin-bottom: var(--space-5);
  }
  #galeria .gallery--home-mosaic[class*="--count-"] {
    gap: var(--space-2);
  }
  #galeria .gallery--home-mosaic > .gallery__item {
    aspect-ratio: 1 / 1;
  }
  #galeria .gallery--home-mosaic--count-1 > .gallery__item:nth-child(1),
  #galeria .gallery--home-mosaic[class*="--count-"]:not(.gallery--home-mosaic--count-1):not(.gallery--home-mosaic--count-2) > .gallery__item:first-child {
    min-height: min(52vw, 280px);
  }
  #galeria .gallery--home-mosaic--count-4 > .gallery__item:last-child,
  #galeria .gallery--home-mosaic--count-6 > .gallery__item:last-child,
  #galeria .gallery--home-mosaic--count-8 > .gallery__item:last-child,
  #galeria .gallery--home-mosaic--count-10 > .gallery__item:last-child,
  #galeria .gallery--home-mosaic--count-12 > .gallery__item:last-child {
    max-height: 200px;
  }
  #galeria .gallery--home-mosaic .gallery__item--obra .gallery__item__label {
    padding: var(--space-2) var(--space-2) var(--space-1);
    font-size: 0.625rem;
    line-height: 1.25;
  }
  #galeria .gallery--home-mosaic .gallery__item__badge-venda {
    font-size: 0.5rem;
    padding: 0.18rem 0.32rem;
    top: 0.35rem;
    right: 0.35rem;
    letter-spacing: 0.04em;
  }
  .gallery-editorial { grid-template-columns: 1fr; }
  .gallery-editorial.gallery-page { grid-template-columns: 1fr; gap: var(--space-3); }
  .gallery-filters { gap: var(--space-2); }
  .gallery-filter { min-height: var(--touch); padding: var(--space-2) var(--space-4); }
  .cards-editorial { grid-template-columns: 1fr; gap: var(--space-4); }
  .form input, .form textarea { padding: var(--space-3) var(--space-4); min-height: var(--touch); font-size: 16px; }
  .form .btn { width: 100%; min-height: var(--touch); justify-content: center; }
  .faq-item__question { min-height: var(--touch); padding: var(--space-4) 0; align-items: center; }
  .quote { padding-left: var(--page-pad-left); padding-right: var(--page-pad-right); }
  .modal__box {
    padding: var(--space-6);
    margin: var(--space-4);
    max-width: calc(100% - var(--space-8));
    max-height: min(calc(100svh - var(--space-8)), calc(100vh - var(--space-8)));
  }
  .site-footer__links { row-gap: 0.25rem; column-gap: 0.9rem; }
  .site-footer__links a {
    padding: 0.25rem 0.25rem;
    min-height: 0;
    display: inline-flex;
    align-items: center;
  }
  .shop-hero__actions {
    flex-direction: column;
    width: 100%;
    max-width: 20rem;
    margin-left: auto;
    margin-right: auto;
  }
  .shop-hero__actions .btn {
    width: 100%;
    justify-content: center;
  }
  .shop-grid {
    grid-template-columns: 1fr;
  }
}

/* ---------- EcrÃ£s muito pequenos (320â€“400px) ---------- */
@media (max-width: 400px) {
  html { font-size: 15px; }
  .hero__title {
    font-size: clamp(1.9rem, 10vw, 3.5rem);
    --hero-title-track: 0.06em;
    letter-spacing: var(--hero-title-track);
  }
  .hero__kicker, .hero__subtitle { font-size: 0.75rem; }
  .hero__tagline { font-size: 0.9375rem; }
  .site-header__logo { width: 140px; height: 34px; }
  .site-header__logo img { width: 140px; height: 34px; }
  .site-footer__inner { gap: var(--space-4); }
  .block__head { margin-bottom: var(--space-6); }
  .page-hero__title { font-size: clamp(calc(1.625rem * var(--title-scale)), calc(6.69vw), calc(2.125rem * var(--title-scale))); }
  .back-to-top { width: 44px; height: 44px; }
}

/* ---------- EcrÃ£s grandes: limitar largura do conteÃºdo ---------- */
@media (min-width: 1400px) {
  .hero__inner { max-width: var(--wrap); }
}

/* ---------- EspaÃ§o fÃ­sico â€” pÃ¡gina por local + mapa ---------- */
.page-wrap--espaco {
  padding-top: calc(var(--header-h) + var(--safe-t));
  min-height: 100vh;
  min-height: 100svh;
}

.espaco-local-back {
  margin: 0 0 var(--space-5);
  text-align: left;
}
.espaco-local-back__link {
  font-family: var(--font-texto);
  font-size: 0.9375rem;
  color: #555;
  text-decoration: underline;
  text-underline-offset: 0.2em;
  text-decoration-color: rgba(43, 43, 43, 0.22);
}
.espaco-local-back__link:hover {
  color: var(--rosa);
  text-decoration-color: var(--rosa);
}

.espaco-local-hero {
  position: relative;
  overflow: hidden;
  /* Igual ao .page-hero (Sobre): sÃ³ o cabeÃ§alho em creme; o conteÃºdo abaixo fica branco */
  background: #f8f7f5;
  padding: clamp(var(--space-10), 6vw, var(--space-16)) 0;
  padding-left: var(--page-pad-left);
  padding-right: var(--page-pad-right);
  text-align: center;
}
.espaco-local-hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.espaco-local-hero__content {
  position: relative;
  z-index: 2;
}
/* Fundo fotogrÃ¡fico (Admin â†’ Imagens â†’ EspaÃ§os fÃ­sicos â†’ cada local) */
.espaco-local-hero--custom-bg {
  background: #2a2826;
  color: var(--branco);
}
.espaco-local-hero--custom-bg .espaco-local-hero__title {
  color: var(--branco);
}
.espaco-local-hero--custom-bg .espaco-local-hero__lead {
  color: rgba(255, 255, 255, 0.92);
}
.espaco-local-hero--custom-bg .espaco-local-hero__kicker {
  color: var(--rosa);
}
.espaco-local-hero--custom-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  /* Sem Â«caixaÂ» nem blur: sÃ³ escurecimento suave, um pouco mais forte Ã  volta do centro (texto) */
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.42) 0%,
    rgba(0, 0, 0, 0.72) 38%,
    rgba(0, 0, 0, 0.68) 55%,
    rgba(0, 0, 0, 0.58) 100%
  );
}
.espaco-local-hero__inner { text-align: center; max-width: 40rem; margin: 0 auto; }
.espaco-local-hero__kicker {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--rosa);
  margin: 0 0 var(--space-3);
}
.espaco-local-hero__title {
  font-size: clamp(calc(1.75rem * var(--title-scale)), calc(4.28vw), calc(2.25rem * var(--title-scale)));
  margin: 0 0 var(--space-4);
  color: var(--preto);
  line-height: 1.15;
}
.espaco-local-hero__lead {
  font-family: var(--font-texto);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: #444;
  margin: 0;
}

.section--espaco-local {
  background: var(--branco);
  padding-top: clamp(var(--space-8), 4.5vw, var(--space-12));
  padding-bottom: var(--space-16);
}

.espaco-local-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: clamp(2rem, 5vw, 3.5rem);
  max-width: var(--wrap);
  margin: 0 auto;
}

.espaco-local-info {
  flex: 1 1 340px;
  min-width: 0;
}

.espaco-local-aside {
  flex: 0 1 420px;
  width: min(100%, 420px);
  position: sticky;
  top: calc(var(--header-h) + var(--space-4));
  align-self: flex-start;
}

.espaco-card {
  background: #fff;
  border: 1px solid rgba(43, 43, 43, 0.08);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  margin-bottom: var(--space-5);
  box-shadow: 0 1px 0 rgba(43, 43, 43, 0.04);
}
.espaco-card__h {
  font-family: var(--font-titulo);
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 var(--space-4);
  color: var(--preto);
}
.espaco-address {
  font-style: normal;
  font-family: var(--font-texto);
  font-size: 1rem;
  line-height: 1.65;
  color: #333;
  margin: 0 0 var(--space-3);
}
.espaco-card__tel { margin: 0 0 var(--space-2); }
.espaco-card__tel-link {
  font-weight: 600;
  color: var(--preto);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.espaco-card__tel-link:hover { color: var(--rosa); }
.espaco-card__maplink { margin: 0; font-size: 0.9375rem; }

.espaco-hours__intro {
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.6;
  margin: 0 0 var(--space-3);
}
.espaco-hours__list {
  margin: 0;
  padding-left: 1.25rem;
  font-family: var(--font-texto);
  color: #333;
  line-height: 1.7;
}

.espaco-prose {
  font-family: var(--font-texto);
  font-size: 1rem;
  line-height: 1.75;
  color: #444;
}
.espaco-prose p { margin: 0 0 var(--space-4); }
.espaco-prose p:last-child { margin-bottom: 0; }
.espaco-prose strong { color: var(--preto); font-weight: 600; }

.espaco-local-cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin: var(--space-6) 0 0;
  padding-top: var(--space-2);
}

.espaco-local-map-wrap {
  position: static;
}
/* Alinha o tÃ­tulo Â«MapaÂ» com o tÃ­tulo Â«MoradaÂ» dentro do cartÃ£o (mesmo padding superior que .espaco-card). */
@media (min-width: 901px) {
  .espaco-local-aside > .espaco-local-map-wrap:first-child {
    padding-top: var(--space-6);
  }
}
.espaco-map__title {
  font-family: var(--font-titulo);
  font-size: calc(1.125rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 var(--space-2);
  color: var(--preto);
}
.espaco-map__note {
  font-size: 0.8125rem;
  color: #666;
  line-height: 1.5;
  margin: 0 0 var(--space-4);
}

.espaco-map-frame {
  position: relative;
  width: 100%;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid rgba(43, 43, 43, 0.1);
  background: #e8e6e3;
  aspect-ratio: 16 / 10;
  min-height: 220px;
}
.espaco-map-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.espaco-local-gallery-wrap {
  margin-top: var(--space-6);
  padding-top: var(--space-5);
  border-top: 1px solid rgba(43, 43, 43, 0.08);
}
.espaco-local-gallery-wrap__title {
  font-family: var(--font-titulo);
  font-size: calc(1.25rem * var(--title-scale));
  font-weight: 600;
  margin: 0 0 var(--space-5);
  color: var(--preto);
}
.espaco-local-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: var(--space-4);
}
.espaco-local-gallery__tile {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 1px solid rgba(43, 43, 43, 0.1);
  background: #f5f3f0;
  text-align: left;
  color: inherit;
  cursor: zoom-in;
  font: inherit;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.espaco-local-gallery__tile:hover {
  box-shadow: 0 8px 24px rgba(43, 43, 43, 0.12);
  transform: translateY(-2px);
}
.espaco-local-gallery__tile:focus-visible {
  outline: 2px solid var(--preto);
  outline-offset: 2px;
}
.espaco-local-gallery__img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.espaco-local-gallery__cap {
  display: block;
  font-size: 0.8125rem;
  line-height: 1.4;
  padding: var(--space-3);
  color: #444;
}

.espaco-local-workshops {
  margin-top: var(--space-12);
  padding-top: var(--space-10);
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}
.espaco-local-workshops__title {
  font-family: var(--font-titulo);
  font-size: clamp(calc(1.35rem * var(--title-scale)), calc(2.68vw), calc(1.75rem * var(--title-scale)));
  font-weight: 600;
  text-align: center;
  margin: 0 0 var(--space-3);
}
.espaco-local-workshops__lead {
  text-align: center;
  color: #555;
  margin: 0 auto var(--space-8);
  max-width: 36rem;
  font-size: 0.95rem;
}
.events-list--espaco-local {
  margin-top: var(--space-6);
}
.espaco-local-workshops__all {
  text-align: center;
  margin: var(--space-8) 0 0;
}

.espaco-local-footerlink {
  margin: var(--space-10) auto 0;
  max-width: var(--wrap);
  text-align: center;
}

@media (max-width: 900px) {
  .espaco-local-aside {
    position: static;
    flex: 1 1 100%;
    width: 100%;
  }
}

/* EspaÃ§os fÃ­sicos â€” pÃ¡gina do local + cartÃµes em Â«Aulas presenciaisÂ» (mobile) */
@media (max-width: 768px) {
  .section--espaco-local {
    padding-top: var(--space-7);
    padding-bottom: var(--space-12);
  }

  .espaco-local-grid {
    gap: var(--space-6);
  }

  .espaco-card {
    padding: var(--space-5);
    margin-bottom: var(--space-4);
  }

  .espaco-card__h {
    font-size: 1.0625rem;
    margin-bottom: var(--space-3);
  }

  .espaco-address {
    font-size: 0.9375rem;
  }

  .espaco-hours__intro {
    font-size: 0.875rem;
  }

  .espaco-prose {
    font-size: 0.9375rem;
  }

  .espaco-local-cta {
    flex-direction: column;
    align-items: stretch;
    margin-top: var(--space-5);
    gap: var(--space-2);
  }

  .espaco-local-cta .btn {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .espaco-map-frame {
    min-height: 200px;
  }

  .espaco-map__title {
    font-size: calc(1.0625rem * var(--title-scale));
  }

  .espaco-local-gallery {
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: var(--space-3);
  }

  .espaco-local-gallery-wrap__title {
    font-size: calc(1.125rem * var(--title-scale));
    margin-bottom: var(--space-4);
  }

  .espaco-local-gallery__cap {
    padding: var(--space-2);
    font-size: 0.78125rem;
  }

  .espaco-local-workshops {
    margin-top: var(--space-10);
    padding-top: var(--space-8);
  }

  .espaco-local-workshops__lead {
    margin-bottom: var(--space-6);
    font-size: 0.875rem;
  }

  .events-list--espaco-local {
    margin-top: var(--space-5);
  }

  .cards-editorial--espacos {
    gap: var(--space-4);
  }

  .card-editorial__body--espaco {
    padding: var(--space-5);
  }
}

@media (max-width: 600px) {
  .espaco-local-hero {
    padding-top: clamp(var(--space-8), 5vw, var(--space-12));
    padding-bottom: clamp(var(--space-8), 5vw, var(--space-12));
    padding-left: max(var(--page-pad-left), env(safe-area-inset-left, 0px));
    padding-right: max(var(--page-pad-right), env(safe-area-inset-right, 0px));
  }

  .espaco-local-hero__title {
    font-size: clamp(calc(1.4rem * var(--title-scale)), calc(5.89vw), calc(1.75rem * var(--title-scale)));
  }

  .espaco-local-hero__lead {
    font-size: 0.9375rem;
    line-height: 1.55;
  }

  .espaco-card {
    padding: var(--space-4);
  }

  .espaco-local-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-2);
  }

  .espaco-local-workshops__title {
    font-size: calc(1.2rem * var(--title-scale));
  }

  .events-list--espaco-local.events-list--workshops {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  .events-list--espaco-local .event-card__body {
    padding: var(--space-5);
  }

  .espaco-local-workshops__all .btn {
    width: 100%;
    max-width: 22rem;
    margin-left: auto;
    margin-right: auto;
    justify-content: center;
  }

  .cards-editorial--espacos {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  .card-editorial__body--espaco {
    padding: var(--space-4);
  }

  .card-editorial__cta--espaco .btn.card-editorial__btn-mapa {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
}

.espaco-local-lightbox__caption .espaco-local-lightbox__legenda {
  font-size: 1rem;
  font-weight: 500;
}

/* ---------- PreferÃªncia: menos animaÃ§Ã£o ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.05s !important;
  }
  .reveal { opacity: 1; transform: none; transition: none; }
  .reveal.in-view { opacity: 1; transform: none; }
  .hero__kicker, .hero__title, .hero__subtitle, .hero__tagline,
  .hero__cta, .hero__visual {
    opacity: 1;
    transform: none;
  }
  .hero__scroll {
    opacity: 1;
    transform: translate(-50%, 0);
  }
  .hero__scroll-icon { animation: none; }
  .hero__shape { animation: none !important; }
  body:not(.loaded) .color-bar__line,
  body.loaded .color-bar__line { transition-delay: 0s; }
  /* Menu full-screen: sem animaÃ§Ãµes de entrada/saÃ­da */
  body.nav-open > #site-nav-portal > #site-nav.open,
  body.nav-open > .site-header__nav.open,
  #site-nav.open,
  .site-header__nav.open,
  body.nav-open > #site-nav-portal > #site-nav.open > .site-header__link,
  body.nav-open > #site-nav-portal > #site-nav.open > .site-header__group,
  body.nav-open > .site-header__nav.open > .site-header__link,
  body.nav-open > .site-header__nav.open > .site-header__group,
  #site-nav.open > .site-header__link,
  #site-nav.open > .site-header__group,
  .site-header__nav.open > .site-header__link,
  .site-header__nav.open > .site-header__group {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  .cc-banner {
    transition-duration: 0.05s;
  }
}

/* ---------- Consentimento de cookies (RGPD) ---------- */
.cc-root {
  font-family: var(--font-texto);
}

.cc-root--blocking {
  /* EspaÃ§o extra no fundo para o banner nÃ£o tapar CTAs fixos */
  --cc-banner-h: 0px;
}

body.cc-banner-open {
  padding-bottom: var(--cc-banner-h, 0);
}

.cc-banner {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 200;
  padding: var(--space-4) var(--page-pad-left) calc(var(--space-4) + var(--safe-b)) var(--page-pad-right);
  background: var(--branco);
  border-top: 1px solid rgba(43, 43, 43, 0.12);
  box-shadow: 0 -8px 32px rgba(43, 43, 43, 0.12);
  transform: translateY(110%);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.35s var(--ease-out), opacity 0.3s ease, visibility 0.3s ease;
}

.cc-banner.cc-banner--visible {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}

.cc-banner__inner {
  max-width: var(--wrap);
  margin: 0 auto;
}

.cc-banner__text {
  margin: 0 0 var(--space-3);
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--preto);
}

.cc-banner__text a {
  color: var(--rosa);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cc-banner__text a:hover {
  color: var(--rosa-escuro);
}

.cc-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}

.cc-btn {
  font-family: var(--font-texto);
  font-size: 0.875rem;
  font-weight: 500;
  padding: 0.65rem 1.1rem;
  min-height: var(--touch);
  border-radius: var(--radius-sm);
  cursor: pointer;
  border: 1px solid transparent;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}

.cc-btn--primary {
  background: var(--rosa);
  color: var(--branco);
  border-color: var(--rosa);
}

.cc-btn--primary:hover {
  background: var(--rosa-escuro);
  border-color: var(--rosa-escuro);
}

.cc-btn--ghost {
  background: transparent;
  color: var(--preto);
  border-color: rgba(43, 43, 43, 0.25);
}

.cc-btn--ghost:hover {
  border-color: var(--preto);
  background: rgba(43, 43, 43, 0.04);
}

.cc-btn:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}

.cc-banner__links {
  margin: 0;
  font-size: 0.8125rem;
}

.cc-banner__links a {
  color: var(--preto);
  opacity: 0.75;
  margin-right: var(--space-4);
}

.cc-banner__links a:hover {
  opacity: 1;
  color: var(--rosa);
}

.cc-modal {
  position: fixed;
  inset: 0;
  z-index: 210;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.cc-modal:not([hidden]) {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}

.cc-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(43, 43, 43, 0.45);
}

.cc-modal__box {
  position: relative;
  z-index: 1;
  width: min(420px, 100%);
  max-height: min(92vh, 560px);
  overflow: auto;
  background: var(--branco);
  padding: var(--space-5) var(--space-4);
  box-shadow: var(--shadow-lg);
  border-radius: var(--radius-md);
}

.cc-modal__title {
  margin: 0 0 var(--space-3);
  padding-right: 2rem;
  font-family: var(--font-titulo);
  font-size: calc(1.125rem * var(--title-scale));
  font-weight: 600;
  color: var(--preto);
}

.cc-modal__intro {
  margin: 0 0 var(--space-4);
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--preto);
}

.cc-modal__intro a {
  color: var(--rosa);
}

.cc-cookie-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  border-bottom: 1px solid rgba(43, 43, 43, 0.08);
}

.cc-cookie-row:first-of-type {
  border-top: 1px solid rgba(43, 43, 43, 0.08);
}

.cc-cookie-row__text {
  flex: 1;
  min-width: 0;
}

.cc-cookie-row__text strong {
  display: block;
  font-size: 0.875rem;
  margin-bottom: 0.2rem;
}

.cc-cookie-row__text p {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.4;
  color: rgba(43, 43, 43, 0.78);
}

.cc-cookie-row__note {
  margin: 0.35rem 0 0;
  font-size: 0.6875rem;
  line-height: 1.35;
  color: var(--rosa);
  font-weight: 500;
}

.cc-switch {
  position: relative;
  width: 48px;
  height: 28px;
  flex-shrink: 0;
}

.cc-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.cc-switch__ui {
  position: absolute;
  inset: 0;
  background: rgba(43, 43, 43, 0.2);
  border-radius: 14px;
  cursor: pointer;
  transition: background 0.2s ease;
}

.cc-switch__ui::after {
  content: "";
  position: absolute;
  width: 22px;
  height: 22px;
  left: 3px;
  top: 3px;
  background: var(--branco);
  border-radius: 50%;
  transition: transform 0.2s var(--ease-out);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}

.cc-switch input:checked + .cc-switch__ui {
  background: var(--rosa);
}

.cc-switch input:checked + .cc-switch__ui::after {
  transform: translateX(20px);
}

.cc-switch input:focus-visible + .cc-switch__ui {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}

.cc-switch input:disabled + .cc-switch__ui {
  opacity: 0.45;
  cursor: not-allowed;
}

.cc-modal__footer {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: flex-end;
  margin-top: var(--space-3);
  padding-top: var(--space-3);
}

.cc-modal__close {
  position: absolute;
  top: var(--space-3);
  right: var(--space-3);
  width: 40px;
  height: 40px;
  border: none;
  background: transparent;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  color: var(--preto);
  border-radius: var(--radius-sm);
}

.cc-modal__close:hover {
  background: rgba(43, 43, 43, 0.06);
}

.cc-modal__close:focus-visible {
  outline: 2px solid var(--rosa);
  outline-offset: 2px;
}

@media (max-width: 520px) {
  .cc-banner__actions {
    flex-direction: column;
  }

  .cc-banner__actions .cc-btn {
    width: 100%;
    text-align: center;
  }
}

/* ==========================================================================
   MOBILE AUDIT â€” melhorias de responsividade (site pÃºblico)
   ========================================================================== */

/* ---------- Wrapper de scroll horizontal para tabelas largas ---------- */
.table-scroll-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  width: 100%;
  /* Indicador visual subtil de que Ã© possÃ­vel fazer scroll */
  overscroll-behavior-x: contain;
}
/* Sombra lateral suave quando o conteÃºdo extravasa (scroll indicator) */
@supports (background: linear-gradient(white 0 0) local) {
  .table-scroll-wrap {
    background:
      linear-gradient(to right, white 30%, rgba(255,255,255,0)) left center / 30px 100% no-repeat,
      linear-gradient(to left,  white 30%, rgba(255,255,255,0)) right center / 30px 100% no-repeat,
      radial-gradient(farthest-side at 0% 50%, rgba(0,0,0,.08), transparent) left center / 8px 100% no-repeat,
      radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,.08), transparent) right center / 8px 100% no-repeat;
    background-attachment: local, local, scroll, scroll;
  }
}

/* ---------- Hero compacto â€” cabeÃ§alho de pÃ¡ginas legais ---------- */
.page-hero--compact {
  padding-top: clamp(var(--space-8), 4vw, var(--space-10));
  padding-bottom: clamp(var(--space-8), 4vw, var(--space-10));
}

/* ---------- Carrossel: tÃ­tulo sem nowrap em ecrÃ£s muito estreitos ----------
   O clamp garante reduÃ§Ã£o de fonte mas nÃ£o evita overflow se o admin usar
   um tÃ­tulo longo (ex.: "WORKSHOPS DE PINTURA"). SÃ³ o carrossel Ã© afetado â€”
   o hero clÃ¡ssico usa sempre um tÃ­tulo curto ("ARTE"). */
@media (max-width: 480px) {
  .hero--carousel .hero__title {
    white-space: normal;
    overflow-wrap: break-word;
    word-break: break-word;
  }
}

/* ---------- Carrinho â€” tabela responsiva (5 colunas â†’ cards em mobile) ------- */
@media (max-width: 600px) {
  /* Esconder cabeÃ§alhos: as etiquetas vÃªm via data-label nos <td> */
  .shop-cart-table thead {
    display: none;
  }
  .shop-cart-table,
  .shop-cart-table tbody,
  .shop-cart-table tr,
  .shop-cart-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  /* Separador entre artigos */
  .shop-cart-table tr {
    padding: var(--space-4) 0;
    border-bottom: 1px solid rgba(43, 43, 43, 0.1);
  }
  .shop-cart-table tbody tr:first-child {
    padding-top: 0;
  }
  /* CÃ©lulas: flex label + valor */
  .shop-cart-table td {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.3rem 0;
    border-bottom: none;
    gap: var(--space-3);
    min-height: unset;
    font-size: 0.9375rem;
  }
  /* Etiqueta gerada pelo data-label */
  .shop-cart-table td[data-label]::before {
    content: attr(data-label);
    font-size: 0.75rem;
    font-weight: 700;
    color: #888;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    flex-shrink: 0;
    min-width: 4.5rem;
  }
  /* Coluna Artigo: sem label, ocupa toda a largura em coluna */
  .shop-cart-table td:first-child {
    flex-direction: column;
    align-items: flex-start;
    padding-bottom: var(--space-3);
  }
  .shop-cart-table td:first-child::before {
    display: none;
  }
  /* Remover: alinhado Ã  esquerda (sem coluna de valor do lado direito) */
  .shop-cart-table td:last-child {
    justify-content: flex-start;
    padding-top: var(--space-2);
  }
  /* Input de quantidade: full width legÃ­vel */
  .shop-cart-table__qty {
    max-width: 6rem;
    min-height: var(--touch);
    font-size: 1rem;
  }
  /* Total do carrinho: empilhar em mobile */
  .shop-cart-total {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2);
  }
  .shop-cart-total__val {
    font-size: 1.5rem;
  }
}

/* ---------- Ficha de workshop â€” metadados no mobile ---------- */
@media (max-width: 480px) {
  .workshop-ficha__meta strong {
    min-width: 4.5rem;
    font-size: 0.9rem;
  }
  .workshop-ficha__inscricao-encerrada__actions {
    flex-direction: column;
  }
  .workshop-ficha__inscricao-encerrada__actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ---------- Galeria da obra (PDP) â€” aÃ§Ãµes em mobile ---------- */
@media (max-width: 480px) {
  .galeria-obra-ficha__actions {
    flex-direction: column;
  }
  .galeria-obra-ficha__actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ---------- Loja: carrinho de compras â€” aÃ§Ãµes em mobile ---------- */
@media (max-width: 480px) {
  .shop-cart-actions .btn {
    width: 100%;
    justify-content: center;
  }
  .page-content__actions {
    flex-direction: column;
    align-items: stretch;
  }
  .page-content__actions .btn {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
}

/* ---------- Stats strip â€” forÃ§ar 2x2 em mobile (auto-fit colapsava para 1 col em <320px) ---------- */
@media (max-width: 600px) {
  .stats-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-6) var(--space-4);
  }
  .stat-item__value {
    font-size: clamp(2rem, 10vw, 3rem);
  }
  .stat-item__label {
    font-size: clamp(0.6rem, 2.5vw, 0.75rem);
  }
}

/* ---------- PÃ¡gina de espaÃ§o local â€” ajustes visuais em ecrÃ£s estreitos ---------- */
@media (max-width: 480px) {
  .espaco-local-hero__kicker {
    font-size: 0.625rem;
    letter-spacing: 0.14em;
  }

  .espaco-map-frame {
    min-height: 180px;
  }

  .cards-editorial--espacos {
    gap: var(--space-3);
  }
}

/* ---------- Checkout â€” passos mais compactos em mobile ---------- */
@media (max-width: 400px) {
  .checkout-steps {
    font-size: 0.75rem;
    gap: 0.5rem;
  }
  .checkout-steps__item > span:first-of-type {
    width: 1.25rem;
    height: 1.25rem;
    font-size: 0.7rem;
  }
}

/* ---------- PolÃ­tica de cookies â€” tabela scroll ---------- */
/* A tabela .legal-table deve estar envolvida em .table-scroll-wrap no HTML */
.table-scroll-wrap .legal-table {
  min-width: 420px;
}

/* Títulos do site — Yeseva One, minúsculas, peso médio (cards, workshops, loja, modais, etc.) */
body.site-body :is(
  h1:not(.visually-hidden):not(.ca-aluno-nome),
  .service__title,
  [class*="__title"]:not(.hero__title)
):not(.hero-band *):not(.hero--carousel *) {
  font-family: var(--font-titulo);
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.02em;
}

/* Hero carrossel — tipografia exclusivamente do admin (style="" inline em cada .hero__texto) */
body.site-body .hero--carousel .hero__texto {
  text-transform: none;
}

/* ---------- Melhorias gerais de touch targets em mobile ---------- */
@media (max-width: 600px) {
  /* Filtros da galeria: touch targets mÃ­nimos */
  .gallery-filter {
    min-height: var(--touch);
    padding: var(--space-2) var(--space-4);
    font-size: 0.9375rem;
  }
  /* Pontos do carrossel do hero: compactos em mobile (swipe cobre navegação) */
  .hero--carousel .hero__carousel-dot {
    width: 8px;
    height: 8px;
  }
  /* Link de voltar ao topo: garantir 44px de toque */
  .back-to-top {
    width: 44px;
    height: 44px;
  }
}

