/* =========================================================================
   Local by Góis, Faro
   Folha única. Os tokens vêm do design system da marca (azul azulejo,
   madeira clara, linho e branco) e estão redeclarados aqui para o site
   funcionar sem dependências.
   ========================================================================= */

:root{
  /* Azul, azulejo aclarado */
  --azul-50:#F2F7FB; --azul-100:#E3EEF7; --azul-200:#C6DCEC; --azul-300:#9FC4DD;
  --azul-400:#74A7C9; --azul-500:#4E89B2; --azul-600:#3B6E93; --azul-700:#2E5474;
  --azul-800:#23405A; --azul-900:#1A2F42;

  /* Madeira, carvalho claro e cana */
  --madeira-50:#FBF7F1; --madeira-100:#F4EBDE; --madeira-200:#E9D9C3;
  --madeira-300:#DBC3A2; --madeira-400:#C9A87F; --madeira-500:#B48F63;
  --madeira-600:#94714B; --madeira-700:#6F5437;

  /* Neutros */
  --branco:#FFFFFF; --linho-50:#FDFCFA; --linho-100:#FAF7F2; --linho-200:#F1ECE4;
  --pedra-300:#E2DCD3; --pedra-400:#C7BFB4; --pedra-500:#9C948A;
  --pedra-600:#6F6A63; --pedra-700:#4A4641; --carvao:#2B2E31;

  --ambar-500:#C98A2E;

  /* Papéis semânticos */
  --superficie-pagina:var(--linho-100);
  --superficie-cartao:var(--branco);
  --superficie-tinta:var(--azul-50);
  --superficie-madeira:var(--madeira-100);
  --superficie-inversa:var(--azul-800);

  --texto-corpo:var(--pedra-700);
  --texto-titulo:var(--azul-800);
  --texto-suave:var(--pedra-600);
  --texto-tenue:var(--pedra-500);

  --linha-fina:var(--pedra-300);
  --linha-suave:var(--linho-200);
  --linha-inversa:rgba(255,255,255,.28);
  --anel-foco:var(--azul-400);

  /* Tipos */
  --tipo-display:"Playfair Display", Georgia, serif;
  --tipo-serif:"Libre Baskerville", Georgia, serif;
  --tipo-ui:"Jost", "Helvetica Neue", Helvetica, sans-serif;

  --t-hero:clamp(40px, 5.4vw, 72px);
  --t-d2:clamp(30px, 3.6vw, 42px);
  --t-lg:17px; --t-md:16px; --t-sm:14px; --t-xs:13px; --t-2xs:11px;

  --ls-display:-0.015em; --ls-eyebrow:0.18em; --ls-caps:0.12em;

  /* Espaço */
  --e1:4px; --e2:8px; --e3:12px; --e4:16px; --e5:20px; --e6:24px; --e7:32px;
  --e8:40px; --e9:56px; --e10:72px; --e11:96px; --e12:128px;
  --pad-pagina:clamp(20px, 5vw, 72px);
  --tela-pad:clamp(76px, 10vh, 124px);
  --seccao-y:clamp(72px, 9vw, 124px);
  --envelope-md:960px; --envelope-lg:1180px; --envelope-xl:1360px;

  /* Cantos */
  --r-xs:2px; --r-sm:4px; --r-md:6px; --r-lg:10px; --r-pill:999px;

  /* Elevação, sempre azul frio e discreta */
  --sombra-1:0 1px 2px rgba(35,64,90,.06);
  --sombra-2:0 2px 6px rgba(35,64,90,.07), 0 1px 2px rgba(35,64,90,.05);
  --sombra-3:0 8px 20px -6px rgba(35,64,90,.13), 0 2px 6px rgba(35,64,90,.06);
  --sombra-4:0 20px 44px -12px rgba(26,47,66,.20), 0 4px 10px rgba(26,47,66,.07);

  /* Movimento */
  --d-rapida:120ms; --d-base:200ms; --d-lenta:320ms; --d-cena:600ms;
  --curva:cubic-bezier(.32,.72,.32,1);
  --curva-saida:cubic-bezier(.23,1,.32,1);

  --lavagem-foto:linear-gradient(180deg, rgba(26,47,66,0) 34%, rgba(26,47,66,.64) 100%);
}

/* ── Base ───────────────────────────────────────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--superficie-pagina);
  color:var(--texto-corpo);
  font-family:var(--tipo-ui);
  font-size:var(--t-md);
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

body.sem-scroll{ overflow:hidden; }
body.sem-scroll .cabecalho{ opacity:0; pointer-events:none; }

h1,h2,h3{
  font-family:var(--tipo-display);
  color:var(--texto-titulo);
  font-weight:400;
  letter-spacing:var(--ls-display);
  line-height:1.16;
  margin:0;
}

p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
img{ max-width:100%; display:block; }

a{
  color:var(--azul-600);
  text-decoration:none;
  border-bottom:1px solid var(--azul-300);
  transition:color var(--d-rapida) var(--curva), border-color var(--d-rapida) var(--curva);
}
a:hover{ color:var(--azul-800); border-color:currentColor; }

button{ font:inherit; color:inherit; }

:focus-visible{ outline:2px solid var(--anel-foco); outline-offset:2px; }
::selection{ background:var(--azul-200); color:var(--azul-900); }

.salta-conteudo{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--azul-800); color:#fff; padding:12px 20px; border:0;
}
.salta-conteudo:focus{ left:12px; top:12px; }

/* ── Peças partilhadas ──────────────────────────────────────────────── */
.envelope{ width:100%; margin-inline:auto; padding-inline:var(--pad-pagina); }
.envelope--md{ max-width:calc(var(--envelope-md) + var(--pad-pagina) * 2); }
.envelope--lg{ max-width:calc(var(--envelope-lg) + var(--pad-pagina) * 2); }

/* Cada secção ocupa um ecrã e o conteúdo fica centrado sem cortar nada */
.tela{
  min-height:100svh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  justify-content:safe center;
  padding-block:var(--tela-pad);
}

.eyebrow{
  font-family:var(--tipo-ui);
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  color:var(--texto-tenue);
  font-weight:500;
  margin:0;
}

.titulo-seccao{ font-size:var(--t-d2); margin-top:var(--e3); }

.regua{
  display:block; width:48px; height:1px;
  background:var(--madeira-400);
  margin:var(--e3) 0;
}

.lede{
  font-size:var(--t-lg);
  font-weight:300;
  color:var(--texto-suave);
  max-width:52ch;
}

.nota{
  font-size:var(--t-xs);
  color:var(--texto-tenue);
  max-width:44ch;
}

.cabeca-seccao{ margin-bottom:var(--e9); }
.cabeca-seccao--centro{ text-align:center; }
.cabeca-seccao--centro .regua{ margin-inline:auto; }
.cabeca-seccao--centro .lede{ margin-inline:auto; }

/* Botões */
.botao{
  display:inline-flex; align-items:center; justify-content:center;
  gap:var(--e2);
  min-height:44px;
  padding:0 var(--e6);
  border-radius:var(--r-sm);
  border:1px solid transparent;
  font-family:var(--tipo-ui);
  font-size:var(--t-xs);
  font-weight:500;
  letter-spacing:var(--ls-caps);
  text-transform:uppercase;
  cursor:pointer;
  text-align:center;
  transition:background-color var(--d-base) var(--curva),
             color var(--d-base) var(--curva),
             border-color var(--d-base) var(--curva),
             box-shadow var(--d-base) var(--curva),
             transform var(--d-rapida) var(--curva);
}
.botao--cheio{
  background:var(--azul-500); color:#fff; border-color:var(--azul-500);
  box-shadow:var(--sombra-1);
}
.botao--linha{
  background:transparent; color:var(--azul-700); border-color:var(--azul-300);
}
.botao--claro{ color:#fff; border-color:rgba(255,255,255,.5); }

@media (hover:hover) and (pointer:fine){
  .botao--cheio:hover{ background:var(--azul-600); border-color:var(--azul-600); box-shadow:var(--sombra-2); }
  .botao--linha:hover{ background:var(--azul-50); border-color:var(--azul-400); }
  .botao--claro:hover{ background:rgba(255,255,255,.14); border-color:#fff; }
}
.botao:active{ transform:scale(.985); }

/* Revelação suave dos blocos de texto */
.reveal{
  opacity:0;
  transform:translate3d(0, 14px, 0);
  transition:opacity var(--d-cena) var(--curva-saida),
             transform var(--d-cena) var(--curva-saida);
}
.reveal.visivel{ opacity:1; transform:none; }

/* Números grandes, usados na secção do espaço */
.factos{
  display:flex; flex-wrap:wrap; gap:var(--e8);
  margin-top:var(--e8);
  padding-top:var(--e6);
  border-top:1px solid var(--madeira-300);
}
.factos li{ display:flex; flex-direction:column; gap:2px; }
.factos strong{
  font-family:var(--tipo-display);
  font-size:clamp(28px, 3vw, 38px);
  font-weight:400;
  color:var(--azul-800);
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.factos span{
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  color:var(--texto-tenue);
}

/* =========================================================================
   CABEÇALHO
   ========================================================================= */
.cabecalho{
  position:fixed; inset:0 0 auto 0; z-index:90;
  transform:translate3d(0,0,0);
  transition:transform var(--d-lenta) var(--curva),
             background-color var(--d-lenta) var(--curva),
             box-shadow var(--d-lenta) var(--curva),
             opacity var(--d-base) var(--curva),
             border-color var(--d-lenta) var(--curva);
  border-bottom:1px solid transparent;
}
.cabecalho[data-estado="topo"]{ background:transparent; }

/* Sobre a fotografia, um véu que desce para lá da barra, para o branco
   fino do logótipo se ler sem uma aresta dura por baixo do cabeçalho. */
.cabecalho::before{
  content:"";
  position:absolute; inset:0 0 auto 0;
  height:160px;
  z-index:-1;
  pointer-events:none;
  background:linear-gradient(180deg,
    rgba(14,27,40,.74) 0%,
    rgba(14,27,40,.52) 32%,
    rgba(14,27,40,.24) 62%,
    rgba(14,27,40,0) 100%);
  opacity:0;
  transition:opacity var(--d-lenta) var(--curva);
}
.cabecalho[data-estado="topo"]::before{ opacity:1; }
.cabecalho[data-estado="preso"]{
  background:rgba(250,247,242,.96);
  -webkit-backdrop-filter:saturate(1.5) blur(12px);
  backdrop-filter:saturate(1.5) blur(12px);
  border-bottom-color:var(--pedra-300);
  box-shadow:var(--sombra-2);
}
.cabecalho[data-estado="escondido"]{
  transform:translate3d(0,-102%,0);
  background:rgba(250,247,242,.94);
  -webkit-backdrop-filter:saturate(1.4) blur(10px);
  backdrop-filter:saturate(1.4) blur(10px);
  border-bottom-color:var(--linha-suave);
}

.cabecalho__interior{
  width:100%; max-width:calc(var(--envelope-xl) + var(--pad-pagina) * 2);
  margin-inline:auto;
  padding:var(--e3) var(--pad-pagina);
  display:flex; align-items:center; gap:var(--e6);
}

.cabecalho__marca{ border:0; flex:0 0 auto; line-height:0; }
.cabecalho__marca img{
  width:118px; height:auto;
  transition:filter var(--d-lenta) var(--curva);
}
.cabecalho[data-estado="topo"] .cabecalho__marca img{
  filter:brightness(0) invert(1) drop-shadow(0 1px 5px rgba(10,20,32,.6));
}

.cabecalho__nav{ margin-left:auto; display:flex; gap:var(--e7); }
.cabecalho__nav a{
  border:0;
  font-size:var(--t-xs);
  letter-spacing:var(--ls-caps);
  text-transform:uppercase;
  font-weight:500;
  color:var(--texto-suave);
  position:relative;
  padding-bottom:2px;
}
.cabecalho[data-estado="topo"] .cabecalho__nav a{
  color:#fff;
  text-shadow:0 1px 4px rgba(12,24,36,.45);
}
.cabecalho__nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor;
  transform:scaleX(0); transform-origin:left;
  transition:transform var(--d-base) var(--curva-saida);
}
@media (hover:hover) and (pointer:fine){
  .cabecalho__nav a:hover{ color:var(--azul-700); }
  .cabecalho[data-estado="topo"] .cabecalho__nav a:hover{ color:#fff; }
  .cabecalho__nav a:hover::after{ transform:scaleX(1); }
}

/* Troca de língua */
.lingua{
  flex:0 0 auto;
  display:inline-flex; align-items:center; gap:var(--e2);
  padding:5px var(--e3) 5px 6px;
  border:1px solid var(--linha-fina);
  border-radius:var(--r-pill);
  background:transparent;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-caps);
  text-transform:uppercase;
  font-weight:500;
  color:var(--texto-suave);
  transition:background-color var(--d-base) var(--curva),
             border-color var(--d-base) var(--curva),
             color var(--d-base) var(--curva);
}
.lingua__bandeira{
  display:block;
  width:20px; height:14px;
  border-radius:2px;
  overflow:hidden;
  box-shadow:0 0 0 1px rgba(35,64,90,.14);
}
.lingua__bandeira svg{ display:block; width:100%; height:100%; }
.lingua__codigo{ line-height:1; }

.cabecalho[data-estado="topo"] .lingua{
  color:#fff;
  border-color:rgba(255,255,255,.55);
  text-shadow:0 1px 3px rgba(12,24,36,.4);
}
.cabecalho[data-estado="topo"] .lingua__bandeira{ box-shadow:0 0 0 1px rgba(255,255,255,.4); }

@media (hover:hover) and (pointer:fine){
  .lingua:hover{ border-color:var(--azul-400); color:var(--azul-700); }
  .cabecalho[data-estado="topo"] .lingua:hover{
    border-color:#fff; background:rgba(255,255,255,.14); color:#fff;
  }
}

.cabecalho__acao{ flex:0 0 auto; min-height:38px; padding:0 var(--e5); }
.cabecalho[data-estado="topo"] .cabecalho__acao{
  background:rgba(255,255,255,.10);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
  border-color:rgba(255,255,255,.72);
  color:#fff;
  box-shadow:none;
  text-shadow:0 1px 3px rgba(12,24,36,.4);
}

.cabecalho__menu{
  display:none;
  margin-left:auto;
  width:42px; height:42px;
  background:none; border:0; cursor:pointer;
  padding:0;
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
}
.cabecalho__menu span{
  display:block; width:22px; height:1.5px; background:var(--azul-800);
  transition:transform 300ms var(--curva-saida), width 300ms var(--curva-saida);
}
.cabecalho__menu[aria-expanded="true"] span{ width:20px; }
.cabecalho[data-estado="topo"] .cabecalho__menu span{
  background:#fff;
  box-shadow:0 1px 3px rgba(12,24,36,.45);
}
.cabecalho__menu[aria-expanded="true"] span:first-child{ transform:translateY(3.25px) rotate(45deg); }
.cabecalho__menu[aria-expanded="true"] span:last-child{ transform:translateY(-3.25px) rotate(-45deg); }

/* O painel abre a crescer de cima para baixo. A altura é animada com
   grid-template-rows, que dispensa medir a caixa em JavaScript, e os links
   entram escalonados. A saída é mais curta do que a entrada, de propósito. */
.menu-movel[hidden]{ display:none; }
.menu-movel{
  display:grid;
  grid-template-rows:0fr;
  opacity:0;
  background:rgba(250,247,242,.98);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-bottom:1px solid transparent;
  transition:grid-template-rows 300ms var(--curva),
             opacity 200ms var(--curva),
             border-color 200ms var(--curva);
}
.menu-movel[data-aberto="sim"]{
  grid-template-rows:1fr;
  opacity:1;
  border-bottom-color:var(--linha-suave);
  transition:grid-template-rows 460ms var(--curva-saida),
             opacity 280ms var(--curva-saida),
             border-color 280ms var(--curva);
}

.menu-movel__interior{
  min-height:0;
  overflow:hidden;
  display:flex; flex-direction:column;
  padding:var(--e2) var(--pad-pagina) var(--e7);
}

.menu-movel a{
  border:0;
  padding:var(--e4) 0;
  border-bottom:1px solid var(--linha-suave);
  font-size:var(--t-sm);
  letter-spacing:var(--ls-caps);
  text-transform:uppercase;
  color:var(--azul-800);
  opacity:0;
  transform:translate3d(0,-10px,0);
  transition:opacity 200ms var(--curva), transform 200ms var(--curva);
}
.menu-movel[data-aberto="sim"] a{
  opacity:1;
  transform:none;
  transition:opacity 340ms var(--curva-saida), transform 340ms var(--curva-saida);
}
.menu-movel[data-aberto="sim"] a:nth-child(1){ transition-delay:90ms; }
.menu-movel[data-aberto="sim"] a:nth-child(2){ transition-delay:135ms; }
.menu-movel[data-aberto="sim"] a:nth-child(3){ transition-delay:180ms; }
.menu-movel[data-aberto="sim"] a:nth-child(4){ transition-delay:225ms; }
.menu-movel[data-aberto="sim"] a:nth-child(5){ transition-delay:270ms; }
.menu-movel[data-aberto="sim"] a:nth-child(6){ transition-delay:315ms; }

.menu-movel__acao{
  margin-top:var(--e5);
  border:1px solid var(--azul-500) !important;
  background:var(--azul-500);
  color:#fff !important;
  text-align:center;
  border-radius:var(--r-sm);
}

@media (max-width:1000px){
  .cabecalho__nav, .cabecalho__acao{ display:none; }
  .cabecalho__menu{ display:flex; margin-left:var(--e3); }
  .lingua{ margin-left:auto; }
  .cabecalho__marca img{ width:104px; }
}

/* =========================================================================
   HERO
   ========================================================================= */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; align-items:center;
  padding:calc(var(--tela-pad) + 12px) var(--pad-pagina) var(--tela-pad);
  overflow:hidden;
  isolation:isolate;
}
.hero__foto{ position:absolute; inset:0; z-index:-2; overflow:hidden; background:#101d29; }
.hero__slide{
  position:absolute; inset:0;
  opacity:0;
  transition:opacity 1.8s var(--curva);
}
.hero__slide--ativa{ opacity:1; z-index:1; }

.hero__slide-img{
  width:100%; height:100%; object-fit:cover; object-position:50% 56%;
  display:block;
}

/* Fotos do interior e da comida: mostradas inteiras, sem recorte agressivo,
   com uma versão desfocada da mesma foto a preencher o resto da moldura. */
.hero__slide--moldura .hero__slide-fundo{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; object-position:50% 56%;
  filter:blur(50px) brightness(.6) saturate(1.1);
  transform:scale(1.2);
}
.hero__slide--moldura .hero__slide-img{
  position:relative;
  object-fit:contain;
  object-position:50% 50%;
}

.hero::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:var(--lavagem-foto),
             linear-gradient(102deg, rgba(26,47,66,.62) 0%, rgba(26,47,66,.30) 42%, rgba(26,47,66,0) 70%),
             linear-gradient(180deg, rgba(26,47,66,.40) 0%, rgba(26,47,66,0) 28%);
}

.hero__conteudo{ position:relative; max-width:620px; color:#fff; }
.hero__logo{
  width:clamp(160px, 20vw, 236px);
  height:auto;
  margin-bottom:var(--e5);
  opacity:.96;
}
.hero__eyebrow{ color:rgba(255,255,255,.78); }
.hero__titulo{
  color:#fff;
  font-size:var(--t-hero);
  margin-top:var(--e3);
  text-wrap:balance;
}
.hero__lede{
  font-size:var(--t-lg); font-weight:300;
  color:rgba(255,255,255,.9);
  margin-top:var(--e4);
  max-width:44ch;
}
.hero__acoes{ display:flex; flex-wrap:wrap; gap:var(--e3); margin-top:var(--e7); }

.hero__descer{
  position:absolute; left:50%; bottom:var(--e6);
  transform:translateX(-50%);
  border:0; width:24px; height:48px;
  display:grid; place-items:center;
}
.hero__descer-linha{
  display:block; width:1px; height:38px;
  background:linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,.85));
  transform-origin:top;
  animation:descer 2.8s var(--curva) infinite;
}
@keyframes descer{
  0%{ transform:scaleY(0); opacity:0; }
  35%{ transform:scaleY(1); opacity:1; }
  100%{ transform:scaleY(1) translateY(38px); opacity:0; }
}

@media (max-width:640px){
  .hero__descer{ display:none; }
  .hero__acoes .botao{ flex:1 1 46%; }
}

/* =========================================================================
   O ESPAÇO
   Fundo de madeira clara. O movimento é lento e discreto: as fotografias
   flutuam, respiram e deslizam com o scroll. Nada de efeitos duros.
   ========================================================================= */
.espaco{
  background:var(--superficie-madeira);
  overflow:hidden;
}

.espaco__interior{
  width:100%; max-width:calc(var(--envelope-lg) + var(--pad-pagina) * 2);
  margin-inline:auto;
  padding-inline:var(--pad-pagina);
  display:grid;
  grid-template-columns:0.95fr 1.05fr;
  gap:clamp(28px, 5vw, 72px);
  align-items:center;
}

.palco{
  position:relative;
  height:min(68svh, 610px);
}

.placa{
  position:absolute;
  margin:0;
  will-change:transform;
}
.placa--a{ width:44%; left:0;   top:13%; z-index:2; }
.placa--b{ width:40%; right:0;  top:0;   z-index:1; }
.placa--c{ width:35%; left:36%; bottom:0; z-index:3; }

/* flutuação contínua, lenta, desfasada entre as três */
.placa__flutua{
  display:block;
  animation:flutua 13s ease-in-out infinite;
}
.placa--b .placa__flutua{ animation-duration:16s; animation-delay:-4s; }
.placa--c .placa__flutua{ animation-duration:11s; animation-delay:-7s; }
@keyframes flutua{
  0%,100%{ transform:translate3d(0,-5px,0); }
  50%    { transform:translate3d(0, 5px,0); }
}

/* Cada fotografia é um botão que abre o visor */
.placa__botao{
  position:relative;
  display:block;
  width:100%;
  padding:0;
  border:0;
  background:none;
  cursor:pointer;
  transition:transform var(--d-base) var(--curva);
}
.placa__botao:active{ transform:scale(.99); }

.placa__moldura{
  display:block;
  position:relative;
  overflow:hidden;
  border-radius:var(--r-sm);
  background:var(--madeira-200);
  box-shadow:var(--sombra-3);
  outline:1px solid rgba(255,255,255,.7);
  outline-offset:-1px;
}
.placa__moldura img{
  width:100%; height:100%; object-fit:cover;
  aspect-ratio:3/4;
  transform:scale(1.03);
  animation:respira-foto 22s ease-in-out infinite alternate;
  transition:transform var(--d-cena) var(--curva-saida);
}
.placa--b .placa__moldura img{ animation-duration:26s; animation-delay:-9s; }
.placa--c .placa__moldura img{ animation-duration:19s; animation-delay:-14s; }
@keyframes respira-foto{
  from{ transform:scale(1.03); }
  to  { transform:scale(1.09); }
}


@media (hover:hover) and (pointer:fine){
  .placa:hover .placa__moldura{ box-shadow:var(--sombra-4); }
  .placa:hover .placa__moldura img{ transform:scale(1.1); }
  .placa__botao:hover .galeria__lupa{ opacity:1; transform:none; }
}

@media (max-width:900px){
  .espaco__interior{ grid-template-columns:1fr; gap:var(--e9); }
  .palco{
    height:auto;
    display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; align-items:start;
  }
  .placa, .placa--a, .placa--b, .placa--c{
    position:static; width:auto; left:auto; right:auto; top:auto; bottom:auto;
    transform:none !important;
  }
  .placa--b{ margin-top:22px; }
  .placa--c{ margin-top:44px; }
  .factos{ gap:var(--e6); margin-top:var(--e7); }
}

/* No telemóvel as três fotografias do espaço ficavam pequenas de mais:
   a grelha sai da margem da página e o intervalo aperta, para ganharem largura. */
@media (max-width:600px){
  .palco{
    margin-inline:calc(4px - var(--pad-pagina));
    gap:6px;
  }
  .placa--b{ margin-top:16px; }
  .placa--c{ margin-top:32px; }
}

/* =========================================================================
   FAIXA DE PARTILHA
   ========================================================================= */
.faixa{
  position:relative;
  min-height:100svh;
  display:grid; place-items:center;
  padding:var(--tela-pad) var(--pad-pagina);
  overflow:hidden;
  isolation:isolate;
}
.faixa__foto{ position:absolute; inset:0; z-index:-2; }
.faixa__foto img{
  width:100%; height:100%; object-fit:cover; object-position:50% 50%;
  transform:scale(1.04);
  animation:faixa-respira 34s var(--curva) infinite alternate;
}
@keyframes faixa-respira{
  from{ transform:scale(1.04) translate3d(0,0,0); }
  to  { transform:scale(1.12) translate3d(-1%,0,0); }
}
.faixa::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:rgba(26,47,66,.52);
}

.faixa__citacao{
  margin:0;
  max-width:min(680px, 86vw);
  text-align:center;
  color:#fff;
}
.faixa__citacao p{
  font-family:var(--tipo-serif);
  font-style:italic;
  font-size:clamp(22px, 3.2vw, 38px);
  line-height:1.42;
  text-wrap:balance;
  max-width:none;
}
.faixa__citacao cite{
  display:block;
  margin-top:var(--e7);
  font-family:var(--tipo-ui);
  font-style:normal;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  color:rgba(255,255,255,.72);
}
.faixa__citacao cite::before{
  content:""; display:block;
  width:48px; height:1px; background:var(--madeira-400);
  margin:0 auto var(--e5);
}

/* =========================================================================
   COZINHA
   ========================================================================= */
.cozinha{ background:var(--superficie-pagina); padding:var(--seccao-y) 0; }

.cozinha__rodape{
  margin-top:var(--e9);
  display:flex; flex-wrap:wrap; justify-content:center; gap:var(--e3);
}

.galeria{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:clamp(8px, 1.2vw, 16px);
}
.galeria__celula{ min-width:0; }

.galeria__botao{
  position:relative;
  display:block; width:100%; padding:0;
  border:0; background:var(--linho-200); cursor:pointer;
  overflow:hidden;
  border-radius:var(--r-sm);
  aspect-ratio:1/1;
  box-shadow:var(--sombra-1);
  transition:box-shadow var(--d-base) var(--curva), transform var(--d-base) var(--curva);
}
.galeria__botao img{
  width:100%; height:100%; object-fit:cover;
  transition:transform var(--d-cena) var(--curva-saida);
}
.galeria__lupa{
  position:absolute; inset:auto var(--e2) var(--e2) auto;
  width:30px; height:30px; border-radius:50%;
  background:rgba(255,255,255,.92);
  display:grid; place-items:center;
  opacity:0; transform:translate3d(0,6px,0);
  transition:opacity var(--d-base) var(--curva), transform var(--d-base) var(--curva-saida);
}
.galeria__lupa::before,
.galeria__lupa::after{ content:""; position:absolute; background:var(--azul-700); }
.galeria__lupa::before{ width:10px; height:1.5px; }
.galeria__lupa::after{ width:1.5px; height:10px; }

@media (hover:hover) and (pointer:fine){
  .galeria__botao:hover{ box-shadow:var(--sombra-3); }
  .galeria__botao:hover img{ transform:scale(1.06); }
  .galeria__botao:hover .galeria__lupa{ opacity:1; transform:none; }
}
.galeria__botao:active{ transform:scale(.985); }

@media (max-width:560px){
  .galeria{ gap:6px; }
  .cozinha__rodape{ margin-top:var(--e7); }
  .cozinha__rodape .botao{ flex:1 1 46%; }
}

/* =========================================================================
   AVALIAÇÕES
   Dois corredores de cartões que deslizam devagar em sentidos contrários.
   Param quando o rato entra, e o cartão sob o rato inclina.
   ========================================================================= */
.avaliacoes{
  background:var(--superficie-tinta);
  border-top:1px solid var(--linha-suave);
  border-bottom:1px solid var(--linha-suave);
  padding:var(--seccao-y) 0;
}

.nota-geral{
  display:flex; flex-wrap:wrap; align-items:center; gap:clamp(20px, 4vw, 52px);
  padding-bottom:var(--e7);
  margin-bottom:var(--e8);
  border-bottom:1px solid var(--azul-200);
}
.nota-geral__numero{ display:flex; flex-direction:column; gap:var(--e1); }
.nota-geral__valor{
  font-family:var(--tipo-display);
  font-size:clamp(56px, 7.5vw, 88px);
  line-height:.9;
  color:var(--azul-800);
  letter-spacing:var(--ls-display);
}
.nota-geral__estrelas{
  color:var(--ambar-500);
  font-size:clamp(17px, 2vw, 22px);
  letter-spacing:.16em;
}
.nota-geral__texto{ max-width:46ch; display:flex; flex-direction:column; gap:var(--e2); }
.nota-geral__contagem{ font-size:var(--t-lg); font-weight:300; color:var(--texto-suave); }
.nota-geral__contagem strong{
  font-family:var(--tipo-display); font-weight:400;
  font-size:1.3em; color:var(--azul-800);
}
.nota-geral__link{
  align-self:flex-start;
  font-size:var(--t-xs); letter-spacing:var(--ls-caps); text-transform:uppercase;
  font-weight:500; margin-top:var(--e1);
}

.cartoes{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:clamp(14px, 1.8vw, 24px);
}

.cartao{ perspective:900px; min-width:0; }

.cartao__link{
  position:relative;
  overflow:hidden;
  display:flex; flex-direction:column; gap:var(--e3);
  height:100%;
  padding:var(--e7);
  background:var(--superficie-cartao);
  border:1px solid var(--linha-suave);
  border-radius:var(--r-md);
  box-shadow:var(--sombra-1);
  color:inherit;
  transform-style:preserve-3d;
  transition:box-shadow var(--d-lenta) var(--curva),
             border-color var(--d-lenta) var(--curva),
             transform 420ms var(--curva-saida);
}
.cartao__link:hover{ color:inherit; }

.cartao__topo{ display:flex; align-items:center; justify-content:space-between; gap:var(--e3); }
.cartao__estrelas{ color:var(--ambar-500); font-size:var(--t-sm); letter-spacing:.12em; }
.cartao__g{ width:20px; height:20px; flex:0 0 auto; opacity:.9; }
.cartao__texto{
  font-family:var(--tipo-serif);
  font-size:var(--t-sm);
  line-height:1.72;
  color:var(--texto-corpo);
}
.cartao__pe{
  margin-top:auto; padding-top:var(--e3);
  border-top:1px solid var(--linha-suave);
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--e3);
}
.cartao__nome{ font-size:var(--t-sm); font-weight:500; color:var(--azul-800); }
.cartao__quando{ font-size:var(--t-2xs); letter-spacing:.06em; color:var(--texto-tenue); text-transform:uppercase; }

.cartao__brilho{
  position:absolute; inset:0; border-radius:var(--r-md); pointer-events:none;
  background:radial-gradient(300px 300px at var(--bx,50%) var(--by,50%), rgba(116,167,201,.16), transparent 70%);
  opacity:0; transition:opacity var(--d-lenta) var(--curva);
}

@media (hover:hover) and (pointer:fine){
  .cartao__link:hover{ box-shadow:var(--sombra-3); border-color:var(--azul-200); }
  .cartao__link:hover .cartao__brilho{ opacity:1; }
}

@media (max-width:900px){
  .cartoes{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width:600px){
  .cartoes{ grid-template-columns:1fr; }
  .cartao__link{ padding:var(--e6); }
  .nota-geral{ padding-bottom:var(--e6); margin-bottom:var(--e6); }
  /* No telemóvel a coluna única ficava demasiado longa: mostram-se só as 5 primeiras. */
  .cartoes .cartao:nth-child(n+6){ display:none; }
}

/* =========================================================================
   ONDE ESTAMOS
   ========================================================================= */
.onde{ background:var(--superficie-pagina); }

.onde__grelha{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:clamp(28px, 4vw, 60px);
  align-items:center;
}

.mapa{ display:flex; flex-direction:column; align-items:flex-start; }
.mapa__moldura{
  position:relative;
  align-self:stretch;
  margin-top:var(--e5);
  padding:var(--e3);
  background:var(--superficie-cartao);
  border:1px solid var(--madeira-200);
  border-radius:var(--r-lg);
  box-shadow:var(--sombra-3);
}
.mapa__moldura::after{
  content:""; position:absolute; inset:var(--e3);
  border:1px solid var(--madeira-300);
  border-radius:var(--r-sm);
  pointer-events:none;
}
.mapa__moldura iframe{
  display:block; width:100%; height:clamp(380px, 54svh, 560px);
  border:0; border-radius:var(--r-sm);
  filter:saturate(.86) contrast(1.02);
}
.mapa__acao{ margin-top:var(--e5); }

.contactos{ display:flex; flex-direction:column; }

.contacto{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"rotulo rotulo" "valor botao";
  align-items:center;
  gap:2px var(--e4);
  padding:var(--e4) 0;
  border-bottom:1px solid var(--linha-fina);
}
.contacto__rotulo{
  grid-area:rotulo;
  font-size:var(--t-2xs); letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase; color:var(--texto-tenue); font-weight:500;
}
.contacto__valor{ grid-area:valor; font-size:var(--t-sm); color:var(--azul-800); }
.contacto__valor a{ border-bottom-color:var(--azul-200); }

.copiar{
  grid-area:botao;
  display:inline-flex; align-items:center; gap:var(--e2);
  min-height:32px; padding:0 var(--e3);
  background:transparent;
  border:1px solid var(--linha-fina);
  border-radius:var(--r-sm);
  cursor:pointer;
  font-size:var(--t-2xs); letter-spacing:var(--ls-caps); text-transform:uppercase;
  color:var(--texto-suave);
  transition:background-color var(--d-base) var(--curva),
             border-color var(--d-base) var(--curva),
             color var(--d-base) var(--curva);
}
.copiar__icone{
  position:relative; width:12px; height:12px; flex:0 0 auto;
  border:1.5px solid currentColor; border-radius:2px;
}
.copiar__icone::before{
  content:""; position:absolute; left:2.5px; top:-4.5px;
  width:10px; height:10px;
  border:1.5px solid currentColor; border-radius:2px;
  border-bottom:0; border-left:0;
}
@media (hover:hover) and (pointer:fine){
  .copiar:hover{ background:var(--azul-50); border-color:var(--azul-300); color:var(--azul-700); }
}
.copiar[data-copiado="sim"]{ background:var(--azul-500); border-color:var(--azul-500); color:#fff; }

/* Segunda via de reserva: mensagem no Instagram. Fica por baixo do número,
   com peso claramente menor, para o telefone continuar a ser a acção principal. */
.contacto--reservas{
  grid-template-areas:"rotulo rotulo" "valor botao" "alternativa alternativa";
}
.contacto__alternativa{
  grid-area:alternativa;
  margin-top:var(--e3);
  display:inline-flex;
  align-items:center;
  gap:var(--e2);
  justify-self:start;
  font-size:var(--t-xs);
  color:var(--texto-tenue);
  border-bottom:0;
}
.contacto__alternativa__icone{
  flex:none;
  display:block;
  width:15px; height:15px;
  color:var(--madeira-500);
  transition:color var(--d-rapida) var(--curva);
}
.contacto__alternativa__icone svg{ width:100%; height:100%; display:block; }
.contacto__alternativa__texto{
  border-bottom:1px solid transparent;
  transition:color var(--d-rapida) var(--curva), border-color var(--d-rapida) var(--curva);
}
.contacto__alternativa:hover{ color:var(--texto-tenue); }
.contacto__alternativa:hover .contacto__alternativa__icone{ color:var(--madeira-700); }
.contacto__alternativa:hover .contacto__alternativa__texto{
  color:var(--azul-800);
  border-bottom-color:var(--azul-200);
}

/* Círculo desenhado à volta do número, só quando se carrega em "Reservar mesa" */
.alvo-reserva{ position:relative; display:inline-block; }
/* O SVG tem proporção própria, por isso a altura é dada à mão e o círculo
   é centrado no número com translate, senão fica sempre a puxar para cima. */
.circulo{
  position:absolute;
  left:50%; top:50%;
  width:calc(100% + 46px);
  height:calc(100% + 26px);
  transform:translate(-50%, -50%);
  overflow:visible;
  pointer-events:none;
  z-index:1;
}
.circulo path{
  fill:none;
  stroke:var(--madeira-500);
  stroke-width:2.6;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:820;
  stroke-dashoffset:820;
  opacity:0;
  transition:opacity 480ms var(--curva);
}
.contacto--reservas[data-marcado="sim"] .circulo path{
  opacity:1;
  animation:desenha-circulo 1300ms cubic-bezier(.32,.72,.32,1) forwards;
}
@keyframes desenha-circulo{
  from{ stroke-dashoffset:820; }
  to  { stroke-dashoffset:0; }
}
/* Apaga-se pouco depois de estar desenhado */
.contacto--reservas[data-marcado="fim"] .circulo path{
  stroke-dashoffset:0;
  opacity:0;
}
.contacto--reservas[data-marcado] .contacto__valor a{
  color:var(--madeira-700);
  border-color:transparent;
}

.horario{ padding-top:var(--e6); display:flex; flex-direction:column; gap:var(--e3); }
.horario__lista{ margin:0; display:flex; flex-direction:column; }
.horario__lista > div{
  display:flex; justify-content:space-between; gap:var(--e4);
  padding:var(--e2) 0;
  border-bottom:1px solid var(--linha-suave);
}
.horario__lista dt{ font-size:var(--t-xs); color:var(--texto-suave); }
.horario__lista dd{ margin:0; font-size:var(--t-xs); color:var(--azul-800); text-align:right; }
.horario__fechado dd{ color:var(--texto-tenue); }

@media (max-width:900px){
  .onde__grelha{ grid-template-columns:1fr; gap:var(--e8); }
  .mapa{ align-items:stretch; }
  .mapa__acao{ align-self:flex-start; }
}

/* =========================================================================
   RODAPÉ
   ========================================================================= */
.rodape{ background:var(--superficie-inversa); color:rgba(255,255,255,.76); padding-top:var(--e10); }
.rodape__interior{
  display:grid; grid-template-columns:1fr 1.1fr; gap:var(--e9);
  padding-bottom:var(--e9);
}
.rodape__marca img{ width:150px; height:auto; opacity:.94; }
.rodape__marca p{ margin-top:var(--e4); max-width:34ch; font-weight:300; font-size:var(--t-sm); }
.rodape__colunas{ display:grid; grid-template-columns:repeat(3, 1fr); gap:var(--e6); }
.rodape__cabeca{
  font-size:var(--t-2xs); letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase; color:var(--azul-300); margin-bottom:var(--e3);
}
.rodape p{ font-size:var(--t-sm); line-height:1.9; }
.rodape a{ color:rgba(255,255,255,.9); border-bottom-color:var(--linha-inversa); }
.rodape a:hover{ color:#fff; }

/* Fila legal: privacidade, litígios e livro de reclamações */
.rodape__legal{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--e3) var(--e5);
}
.rodape__legal a{
  font-family:var(--tipo-ui);
  font-size:var(--t-2xs);
  letter-spacing:.06em;
  text-transform:uppercase;
  color:rgba(255,255,255,.72);
  border-bottom:0;
}
.rodape__legal a:hover{ color:#fff; }

.rodape__base{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--e3);
  padding-top:var(--e5); padding-bottom:var(--e7);
  border-top:1px solid var(--linha-inversa);
}
.rodape__base p{ font-size:var(--t-2xs); letter-spacing:.06em; color:rgba(255,255,255,.6); }

@media (max-width:800px){
  .rodape__interior{ grid-template-columns:1fr; gap:var(--e8); }
  .rodape__colunas{ grid-template-columns:1fr 1fr; }
}

@media (max-width:640px){
  .rodape__legal{ gap:var(--e2) var(--e4); }
}

/* =========================================================================
   VISOR DE FOTOGRAFIA
   ========================================================================= */
.visor{
  position:fixed; inset:0; z-index:120;
  display:grid; place-items:center;
  padding:clamp(12px, 3vw, 40px);
}
.visor[hidden]{ display:none; }

.visor__fundo{
  position:absolute; inset:0;
  background:rgba(26,47,66,.62);
  -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
  opacity:0;
  transition:opacity var(--d-lenta) var(--curva);
}
.visor[data-aberto="sim"] .visor__fundo{ opacity:1; }

.visor__quadro{
  position:relative;
  margin:0;
  min-width:min(430px, 92vw);
  display:flex; flex-direction:column;
  max-width:min(1080px, 100%);
  max-height:100%;
  background:var(--linho-50);
  border:1px solid var(--madeira-200);
  border-radius:var(--r-lg);
  box-shadow:var(--sombra-4);
  padding:clamp(10px, 1.4vw, 18px);
  opacity:0;
  transform:translate3d(0, 10px, 0) scale(.97);
  transition:opacity var(--d-lenta) var(--curva-saida),
             transform var(--d-lenta) var(--curva-saida);
}
.visor[data-aberto="sim"] .visor__quadro{ opacity:1; transform:none; }

.visor__palco{
  position:relative;
  flex:0 1 auto;
  min-height:0;
  display:grid; place-items:center;
  border:1px solid var(--madeira-300);
  border-radius:var(--r-sm);
  overflow:hidden;
  background:var(--linho-200);
}
.visor__palco img{
  width:auto; height:auto;
  max-width:min(1040px, calc(100vw - 120px));
  max-height:calc(100svh - 280px);
  object-fit:contain;
  background:var(--linho-100);
  transition:opacity 260ms var(--curva);
}
.visor__palco[data-a-trocar="sim"] img{ opacity:0; }

.visor__pe{
  flex:0 0 auto;
  width:0; min-width:100%;
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"prato preco" "nota contador" "selo selo";
  align-items:center;
  gap:var(--e2) var(--e5);
  padding:var(--e4) var(--e3) var(--e2);
}
/* Moldura sem legenda: só a assinatura ao centro e o contador */
.visor__pe[data-simples="sim"]{
  grid-template-columns:1fr auto 1fr;
  grid-template-areas:"vazio selo contador";
  padding-top:var(--e4);
}
.visor__pe[data-simples="sim"] .visor__prato,
.visor__pe[data-simples="sim"] .visor__preco,
.visor__pe[data-simples="sim"] .visor__nota{ display:none; }
.visor__pe[data-simples="sim"] .visor__selo{ margin-top:0; }

.visor__prato{
  grid-area:prato; min-width:0;
  font-family:var(--tipo-serif);
  font-size:var(--t-sm);
  color:var(--azul-800);
  line-height:1.4;
}
.visor__preco{
  grid-area:preco; justify-self:end; padding-right:6px;
  font-family:var(--tipo-display);
  font-size:var(--t-lg);
  color:var(--madeira-600);
  font-variant-numeric:tabular-nums;
}
.visor__nota{
  grid-area:nota;
  font-size:var(--t-2xs);
  letter-spacing:.06em;
  color:var(--texto-tenue);
  text-transform:uppercase;
}
.visor__nota:empty, .visor__preco:empty{ display:none; }
.visor__selo{ grid-area:selo; width:96px; height:auto; justify-self:center; opacity:.9; margin-top:var(--e3); }
.visor__contador{
  grid-area:contador; justify-self:end;
  font-size:var(--t-2xs); letter-spacing:var(--ls-caps);
  color:var(--texto-tenue); font-variant-numeric:tabular-nums;
}

.visor__fechar,
.visor__seta{
  position:absolute; z-index:2;
  width:46px; height:46px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.34);
  background:rgba(26,47,66,.42);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  cursor:pointer;
  display:grid; place-items:center;
  transition:background-color var(--d-base) var(--curva),
             border-color var(--d-base) var(--curva),
             transform var(--d-rapida) var(--curva);
}
@media (hover:hover) and (pointer:fine){
  .visor__fechar:hover, .visor__seta:hover{ background:rgba(26,47,66,.72); border-color:rgba(255,255,255,.6); }
}
.visor__fechar:active, .visor__seta:active{ transform:scale(.94); }

.visor__fechar{ top:clamp(10px, 2vw, 24px); right:clamp(10px, 2vw, 24px); }
.visor__fechar span{ position:absolute; width:15px; height:1.5px; background:#fff; }
.visor__fechar span:first-child{ transform:rotate(45deg); }
.visor__fechar span:last-child{ transform:rotate(-45deg); }

.visor__seta::before{
  content:""; width:11px; height:11px;
  border-top:1.5px solid #fff; border-right:1.5px solid #fff;
}
.visor__seta--esq{ left:clamp(6px, 2vw, 28px); top:50%; margin-top:-23px; }
.visor__seta--esq::before{ transform:rotate(-135deg); margin-left:3px; }
.visor__seta--dir{ right:clamp(6px, 2vw, 28px); top:50%; margin-top:-23px; }
.visor__seta--dir::before{ transform:rotate(45deg); margin-right:3px; }

@media (max-width:700px){
  .visor__selo{ width:82px; }
  .visor__palco img{ max-height:calc(100svh - 310px); }
}

/* =========================================================================
   BALÕES SOCIAIS
   ========================================================================= */
.balao{
  position:fixed; z-index:100;
  bottom:clamp(16px, 4vw, 34px);
  width:min(310px, calc(100vw - 32px));
  background:var(--superficie-cartao);
  border:1px solid var(--linha-suave);
  border-radius:var(--r-md);
  box-shadow:var(--sombra-4);
  opacity:0;
  transition:opacity 380ms var(--curva-saida), transform 380ms var(--curva-saida);
}
.balao[hidden]{ display:none; }
.balao--instagram{ right:clamp(16px, 4vw, 34px); transform:translate3d(28px, 8px, 0) scale(.97); }
.balao--facebook { left:clamp(16px, 4vw, 34px);  transform:translate3d(-28px, 8px, 0) scale(.97); }
.balao[data-visivel="sim"]{ opacity:1; transform:translate3d(0,0,0) scale(1); }

.balao__corpo{
  display:flex; align-items:center; gap:var(--e4);
  padding:var(--e4) var(--e5);
  border:0;
  color:inherit;
}
.balao__corpo:hover{ color:inherit; }

.balao__icone{
  flex:0 0 auto;
  width:42px; height:42px;
  display:grid; place-items:center;
  border-radius:var(--r-sm);
  color:#fff;
}
.balao__icone svg{ width:22px; height:22px; }
.balao__icone--instagram{ background:linear-gradient(140deg, #7C4DA8, #C0417A 52%, #E5893B); }
.balao__icone--facebook { background:#1877F2; }
.balao__icone--facebook svg{ width:24px; height:24px; }

.balao__texto{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.balao__titulo{ font-size:var(--t-sm); font-weight:500; color:var(--azul-800); line-height:1.35; }
.balao__linha{ font-size:var(--t-2xs); letter-spacing:.06em; color:var(--texto-tenue); }

.balao__seta{
  margin-left:auto; flex:0 0 auto;
  width:9px; height:9px;
  border-top:1.5px solid var(--azul-400);
  border-right:1.5px solid var(--azul-400);
  transform:rotate(45deg);
  transition:transform var(--d-base) var(--curva-saida);
}
@media (hover:hover) and (pointer:fine){
  .balao__corpo:hover .balao__seta{ transform:rotate(45deg) translate3d(3px,-3px,0); }
}

.balao__fechar{
  position:absolute; top:-9px; right:-9px;
  width:24px; height:24px; border-radius:50%;
  background:var(--branco);
  border:1px solid var(--linha-fina);
  box-shadow:var(--sombra-2);
  cursor:pointer;
  display:grid; place-items:center;
  transition:background-color var(--d-base) var(--curva), border-color var(--d-base) var(--curva);
}
.balao__fechar span{ position:absolute; width:9px; height:1.4px; background:var(--texto-suave); }
.balao__fechar span:first-child{ transform:rotate(45deg); }
.balao__fechar span:last-child{ transform:rotate(-45deg); }
@media (hover:hover) and (pointer:fine){
  .balao__fechar:hover{ background:var(--linho-100); border-color:var(--pedra-400); }
}

@media (max-width:560px){
  .balao{ width:calc(100vw - 32px); }
  .balao--instagram, .balao--facebook{ left:16px; right:16px; }
}

/* Aviso de "copiado" */
.aviso{
  position:fixed; z-index:130;
  left:50%; bottom:calc(env(safe-area-inset-bottom, 0px) + 26px);
  transform:translate3d(-50%, 14px, 0);
  padding:var(--e3) var(--e6);
  background:var(--azul-800); color:#fff;
  border-radius:var(--r-pill);
  font-size:var(--t-xs); letter-spacing:.04em;
  box-shadow:var(--sombra-4);
  opacity:0; pointer-events:none;
  transition:opacity var(--d-base) var(--curva), transform var(--d-base) var(--curva-saida);
}
.aviso[data-visivel="sim"]{ opacity:1; transform:translate3d(-50%, 0, 0); }

/* =========================================================================
   PÁGINA DA EMENTA
   ========================================================================= */
.ementa-topo{
  background:var(--superficie-madeira);
  padding:calc(var(--tela-pad) + var(--e9)) var(--pad-pagina) var(--e10);
  text-align:center;
}
.ementa-topo__marca{ width:clamp(150px, 20vw, 210px); height:auto; margin:0 auto var(--e7); }
.ementa-topo h1{ font-size:clamp(24px, 2.6vw, 32px); }
.ementa-topo .regua{ margin-inline:auto; }
.ementa-topo__lede{
  font-family:var(--tipo-serif);
  font-style:italic;
  font-size:var(--t-lg);
  line-height:1.6;
  color:var(--texto-suave);
  max-width:52ch;
  margin:0 auto;
}
.ementa-topo__titulo{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:center;
  gap:var(--e3) var(--e5);
}
.ementa-topo__ig{
  display:inline-flex; align-items:center; gap:var(--e2);
  font-family:var(--tipo-ui);
  font-size:var(--t-2xs);
  font-weight:500;
  letter-spacing:var(--ls-caps);
  text-transform:uppercase;
  color:var(--azul-700);
  text-decoration:none;
  border-bottom:1px solid var(--azul-300);
  padding-bottom:2px;
  transition:color var(--d-base) var(--curva), border-color var(--d-base) var(--curva);
}
.ementa-topo__ig svg{ flex:none; }
@media (hover:hover) and (pointer:fine){
  .ementa-topo__ig:hover{ color:var(--azul-500); border-color:var(--azul-500); }
}
.ementa-topo__diarios{
  margin:var(--e3) auto 0;
  max-width:56ch;
  font-size:var(--t-xs);
  line-height:1.7;
  color:var(--texto-suave);
}
.ementa-topo__meta{
  margin-top:var(--e7);
  display:flex; flex-wrap:wrap; justify-content:center; gap:var(--e3) var(--e6);
}
.ementa-topo__meta span{
  font-size:var(--t-2xs); letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase; color:var(--madeira-700);
}

.ementa-corpo{
  padding:var(--e11) 0 var(--e10);
}
.ementa-colunas{
  max-width:700px;
  margin-inline:auto;
}
.bloco{ margin-bottom:var(--e10); }
.bloco:last-child{ margin-bottom:0; }
.bloco__cabeca{ margin-bottom:var(--e5); text-align:center; }
.bloco__cabeca .regua{ margin-inline:auto; }
.bloco__cabeca h2{ font-size:clamp(24px, 3vw, 30px); }
.bloco__cabeca .eyebrow{ color:var(--madeira-600); }

.prato{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:baseline;
  gap:var(--e2) var(--e4);
  padding:var(--e4) 0;
  border-bottom:1px solid var(--linha-suave);
}
.prato:last-child{ border-bottom:0; }
.prato__nome{
  font-family:var(--tipo-serif);
  font-size:var(--t-sm);
  color:var(--azul-800);
  line-height:1.45;
}
.prato__preco{
  padding-right:6px;
  font-family:var(--tipo-display);
  font-size:var(--t-lg);
  color:var(--madeira-600);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.prato__desc{
  grid-column:1 / -1;
  font-size:var(--t-xs);
  color:var(--texto-tenue);
}
.prato__desc em{ font-style:normal; color:var(--madeira-600); }

.sugestoes{
  display:block;
  max-width:700px;
  margin:var(--e9) auto 0;
  padding-top:var(--e8);
  border-top:1px solid var(--linha-suave);
  text-align:center;
}
.sugestoes .regua{ margin:0 auto var(--e5); }
.sugestoes__texto{
  font-family:var(--tipo-serif);
  font-style:italic;
  font-size:var(--t-sm);
  line-height:1.75;
  color:var(--texto-tenue);
  max-width:46ch;
  margin:0 auto;
}

.ementa-legal{
  margin:var(--e7) auto 0;
  max-width:58ch;
  font-size:var(--t-2xs);
  line-height:1.7;
  color:var(--pedra-400);
}

.ementa-fim{
  margin-top:var(--e9);
  text-align:center;
  padding-bottom:var(--e10);
  display:flex; flex-direction:column; align-items:center; gap:var(--e5);
}

@media (max-width:800px){
  .bloco{ margin-bottom:var(--e9); }
}

/* =========================================================================
   MOVIMENTO REDUZIDO
   Fica a mudança de opacidade e de cor. Sai tudo o que desloca.
   ========================================================================= */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }

  .hero__descer-linha{ animation:none; opacity:.7; }
  .faixa__foto img{ animation:none; transform:scale(1.02); }

  .placa__flutua{ animation:none; }
  .placa__moldura img{ animation:none; transform:scale(1.03); }
  .placa{ transform:none !important; }

  .reveal{ opacity:1; transform:none; transition:none; }

  .contacto--reservas[data-marcado="sim"] .circulo path{
    animation:none; stroke-dashoffset:0; opacity:1;
  }

  .menu-movel,
  .menu-movel[data-aberto="sim"]{
    transition:opacity 160ms linear;
  }
  .menu-movel a,
  .menu-movel[data-aberto="sim"] a{
    transform:none;
    transition:opacity 160ms linear;
    transition-delay:0ms;
  }

  .cartao__link{ transform:none !important; }

  .visor__quadro{ transform:none; transition:opacity var(--d-base) linear; }
  .balao{ transition:opacity var(--d-base) linear; }
  .balao--instagram, .balao--facebook{ transform:none; }

  .galeria__botao:hover img{ transform:none; }
}

/* =========================================================================
   ENCAIXE NO ECRÃ DO TELEMÓVEL
   Ecrãs baixos e estreitos: aperta o ar para cada secção continuar a caber
   num ecrã, sem cortar nada.
   ========================================================================= */
@media (max-width:640px){
  :root{ --tela-pad:56px; }

  .titulo-seccao{ font-size:clamp(28px, 8.4vw, 36px); }
  .lede{ font-size:var(--t-md); }

  .factos{ margin-top:var(--e6); padding-top:var(--e5); gap:var(--e5); }
  .factos strong{ font-size:28px; }

  .cartao__link{ padding:var(--e5); }
  .nota-geral{ padding-bottom:var(--e5); margin-bottom:var(--e5); gap:var(--e4); }
  .nota-geral__valor{ font-size:60px; }
  .nota-geral__contagem{ font-size:var(--t-sm); }

  .cozinha__acoes{ margin-top:var(--e5); }
  .onde{ padding-block:var(--e8); }

  /* Onde estamos: o mapa continua alto, e a secção cresce um pouco por isso */
  .mapa__moldura{ margin-top:var(--e4); padding:var(--e2); }
  .mapa__moldura::after{ inset:var(--e2); }
  .mapa__moldura iframe{ height:clamp(270px, 36svh, 330px); }
  .mapa__acao{ margin-top:var(--e4); }

  .contacto{ padding:var(--e3) 0; }
  .contacto__valor{ font-size:var(--t-sm); }
  .copiar{ min-height:28px; padding:0 var(--e2); }
  .copiar__texto{ display:none; }

  .horario{ padding-top:var(--e4); gap:var(--e2); }
  .horario__lista > div{ padding:6px 0; }
  .horario__lista dt, .horario__lista dd{ font-size:var(--t-2xs); }
  .horario .nota{ font-size:var(--t-2xs); }
}

/* =========================================================================
   PÁGINAS LEGAIS
   Privacidade e resolução de litígios. Texto corrido, coluna estreita,
   com as mesmas peças da ementa no topo e no corpo.
   ========================================================================= */
.legal{ padding:var(--e11) 0 var(--e10); }
.legal__interior{ max-width:680px; margin-inline:auto; }

.legal__aviso{
  background:var(--superficie-madeira);
  border:1px solid var(--linha-suave);
  padding:var(--e5) var(--e6);
  margin-bottom:var(--e9);
}
.legal__aviso p{ font-size:var(--t-sm); color:var(--texto-suave); }

.legal__bloco{ margin-bottom:var(--e9); }
.legal__bloco:last-child{ margin-bottom:0; }
.legal__bloco h2{ font-size:clamp(22px, 2.6vw, 27px); }
.legal__bloco h3{
  font-family:var(--tipo-serif);
  font-size:var(--t-md);
  color:var(--azul-800);
  margin-top:var(--e6);
}
.legal__bloco .regua{ margin-bottom:var(--e5); }
.legal__bloco p{ font-size:var(--t-sm); line-height:1.85; color:var(--texto-suave); }
.legal__bloco p + p{ margin-top:var(--e4); }
.legal__bloco h3 + p{ margin-top:var(--e3); }

.legal__lista{ margin-top:var(--e4); display:flex; flex-direction:column; gap:var(--e3); }
.legal__lista li{
  position:relative; padding-left:var(--e5);
  font-size:var(--t-sm); line-height:1.85; color:var(--texto-suave);
}
.legal__lista li::before{
  content:""; position:absolute; left:0; top:.85em;
  width:10px; height:1px; background:var(--madeira-400);
}

.legal__ficha{
  margin-top:var(--e5);
  background:var(--superficie-madeira);
  border:1px solid var(--linha-suave);
  padding:var(--e6);
}
.legal__ficha dl{ margin:0; display:flex; flex-direction:column; gap:var(--e3); }
.legal__ficha div{
  display:grid; grid-template-columns:150px 1fr; gap:var(--e2) var(--e4);
  padding-bottom:var(--e3); border-bottom:1px solid var(--linha-suave);
}
.legal__ficha div:last-child{ padding-bottom:0; border-bottom:0; }
.legal__ficha dt{
  font-family:var(--tipo-ui); font-size:var(--t-2xs);
  letter-spacing:var(--ls-eyebrow); text-transform:uppercase;
  color:var(--madeira-700);
}
.legal__ficha dd{ margin:0; font-size:var(--t-sm); line-height:1.7; color:var(--texto-suave); }

.legal__fim{
  margin-top:var(--e10); padding-top:var(--e7);
  border-top:1px solid var(--linha-suave);
  text-align:center;
}
.legal__fim .eyebrow{ margin-bottom:var(--e5); }
.legal__botoes{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; }

@media (max-width:640px){
  .legal{ padding:var(--e9) 0 var(--e8); }
  .legal__ficha{ padding:var(--e5); }
  .legal__ficha div{ grid-template-columns:1fr; gap:var(--e1); }
}
