/* Nostro Ristorante Enoteca, prévia v2.
   Conceito: abertura com logo e mosaico de pratos correndo; na carta, uma taça 3D fica
   ao lado dos pratos e troca de forma e de vinho conforme o prato na tela. */

:root {
  --noite: #170b0a;
  --noite-2: #1f0f0d;
  --vinho: #4d0612;
  --bordo: #8a1f24;
  --bordo-claro: #b3343c;
  --rosa: #e7b3a8;
  --creme: #f4ead9;
  --papel: #f4ede3;
  --papel-2: #ebe1d3;
  --chumbo: #3f3e40;
  --madeira: #5a3826;
  --claro: #efe3d3;
  --claro-apoio: #cdbba9;
  --escuro: #2b1f19;
  --escuro-apoio: #5b4c41;
  --fio-claro: rgba(239, 227, 211, .16);
  --fio-escuro: rgba(43, 31, 25, .16);

  /* gama A: Gloock + Hanken Grotesk */
  --f-dest: 'Gloock', Georgia, serif;
  --f-dest-peso: 400;
  --f-dest-esp: -.012em;
  --f-apoio: 'Hanken Grotesk', system-ui, sans-serif;
  --f-leit: 'Hanken Grotesk', system-ui, sans-serif;
  --f-leit-peso: 450;

  --largura: 1280px;
  --lado: clamp(16px, 4vw, 56px);
  --miolo: max(var(--lado), calc((100vw - var(--largura)) / 2 + var(--lado)));
}
[data-tipo="b"] { --f-dest: 'Schibsted Grotesk', system-ui, sans-serif; --f-dest-peso: 800; --f-dest-esp: -.035em; --f-apoio: 'Schibsted Grotesk', system-ui, sans-serif; --f-leit: 'Literata', Georgia, serif; --f-leit-peso: 420; }
[data-tipo="c"] { --f-dest: 'Bitter', Georgia, serif; --f-dest-peso: 800; --f-dest-esp: -.02em; --f-apoio: 'Public Sans', system-ui, sans-serif; --f-leit: 'Public Sans', system-ui, sans-serif; --f-leit-peso: 420; }

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; scroll-padding-top: 72px; -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--noite); color: var(--claro);
  font-family: var(--f-leit); font-weight: var(--f-leit-peso); font-size: 18px; line-height: 1.6;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
p { margin: 0; text-wrap: pretty; }
figure { margin: 0; }
h1, h2, h3 {
  margin: 0; font-family: var(--f-dest); font-weight: var(--f-dest-peso); letter-spacing: var(--f-dest-esp);
  line-height: 1.06; text-wrap: balance;
}
h2 { font-size: clamp(38px, 5vw, 68px); }

/* taça: canvas fixo por cima dos fundos, sem pegar clique */
.taca-canvas { position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 6; pointer-events: none; }
.topo, .fixo-reservar { z-index: 20; }

/* ---------- botões e links ---------- */
.botao {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 54px; padding: 0 28px; border: 0; border-radius: 999px;
  background: var(--bordo); color: #fff6ee;
  font: 650 17px/1 var(--f-apoio); text-decoration: none; cursor: pointer;
  transition: background .2s, transform .2s;
}
.botao:hover { background: var(--bordo-claro); }
.botao:active { transform: scale(.98); }
.link-seta { font: 600 17px/1.3 var(--f-apoio); text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1.5px; }
.link-seta::after { content: ' →'; }
:focus-visible { outline: 3px solid var(--rosa); outline-offset: 3px; }

/* ---------- topo ---------- */
.topo {
  position: fixed; top: 0; left: 0; right: 0;
  display: flex; align-items: center; gap: 32px; padding: 14px var(--miolo);
  transition: background .35s, border-color .35s, color .35s;
  border-bottom: 1px solid transparent;
}
.topo.cheio { background: rgba(23, 11, 10, .9); backdrop-filter: blur(10px); border-color: var(--fio-claro); }
.topo.claro { background: rgba(244, 237, 227, .92); color: var(--escuro); border-color: var(--fio-escuro); }
.marca { font: var(--f-dest-peso) 32px/1 var(--f-dest); letter-spacing: var(--f-dest-esp); text-decoration: none; transition: opacity .35s; }
.topo:not(.cheio):not(.claro) .marca { opacity: 0; pointer-events: none; }
.menu { display: flex; gap: 28px; margin-left: auto; }
.menu a { font: 550 17px/1 var(--f-apoio); text-decoration: none; opacity: .86; }
.menu a:hover { opacity: 1; }
.menu a { position: relative; padding: 6px 0; }
.menu a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .35s ease; }
.menu a.atual { opacity: 1; }
.menu a.atual::after, .menu a:hover::after { transform: scaleX(1); }
.botao-topo { min-height: 44px; padding: 0 20px; font-size: 16px; }

/* ---------- 1. abertura: logo grande + mosaico de pratos ---------- */
.abertura {
  position: relative; min-height: 100svh; overflow: hidden; isolation: isolate;
  display: flex; align-items: center;
  padding: 110px var(--miolo) 72px;
  background: radial-gradient(60% 70% at 18% 60%, rgba(138, 31, 36, .3), transparent 70%), var(--noite);
}
/* véu: o texto fica sobre a noite, as fotos se dissolvem pro lado e pras pontas */
.abertura::before {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(90deg, var(--noite) 0%, rgba(23, 11, 10, .94) 30%, rgba(23, 11, 10, .45) 52%, rgba(23, 11, 10, 0) 72%),
    linear-gradient(180deg, var(--noite) 0%, rgba(23, 11, 10, .55) 11%, rgba(23, 11, 10, 0) 24%, rgba(23, 11, 10, 0) 80%, var(--noite) 100%);
}
.abertura > *, .carta-cabeca > *, .carta-corpo > * { min-width: 0; }
.abertura-texto { position: relative; z-index: 2; max-width: 620px; }
.lead { margin-top: 30px; font-size: clamp(19px, 1.5vw, 22px); color: var(--claro); max-width: 36ch; }
.acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 30px; margin-top: 36px; }
.abertura-nota { margin-top: 28px; font: 500 16px/1.4 var(--f-apoio); color: var(--claro-apoio); }

.mosaico { position: absolute; z-index: 0; top: -14%; bottom: -14%; right: -6%; width: 74%; perspective: 1800px; pointer-events: none; }
.mosaico-plano {
  height: 100%; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 20px);
  transform: translate3d(var(--px, 0px), var(--py, 0px), 0) rotateX(12deg) rotateY(-18deg) rotateZ(5deg);
  transform-origin: 40% 50%;
}
.mosaico-col { overflow: visible; }
.mosaico-faixa { display: flex; flex-direction: column; gap: clamp(12px, 1.4vw, 20px); will-change: transform; animation: mosaico-sobe 78s linear infinite; }
.mosaico-col-2 .mosaico-faixa { animation-name: mosaico-desce; animation-duration: 92s; }
.mosaico-col-3 .mosaico-faixa { animation-duration: 66s; animation-delay: -20s; }
.mosaico-col-4 .mosaico-faixa { animation-name: mosaico-desce; animation-duration: 74s; animation-delay: -34s; }
@keyframes mosaico-sobe { from { transform: translateY(0); } to { transform: translateY(calc(-50% - clamp(6px, .7vw, 10px))); } }
@keyframes mosaico-desce { from { transform: translateY(calc(-50% - clamp(6px, .7vw, 10px))); } to { transform: translateY(0); } }
.mosaico-foto { margin: 0; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 14px; background: #2a1613; }
.mosaico-foto img { width: 100%; height: 100%; object-fit: cover; filter: saturate(1.05) brightness(.94); animation: mosaico-respira 16s ease-in-out infinite alternate; }
.mosaico-foto:nth-child(2n) img { animation-delay: -8s; }
@keyframes mosaico-respira { from { transform: scale(1.02); } to { transform: scale(1.1); } }

/* seletor de vinho: a taça desenhada, sem caixa. A escolhida enche com a cor do vinho. */
.copo-botoes, .filtro { display: flex; align-items: flex-end; gap: 6px clamp(10px, 1.6vw, 22px); }
.taca-op {
  display: flex; flex-direction: column; align-items: center; gap: 12px; flex: none;
  padding: 6px 4px 4px; border: 0; background: none; cursor: pointer;
  color: var(--claro); opacity: .5; transition: opacity .3s;
}
.taca-op:hover { opacity: .85; }
.taca-op[aria-checked="true"] { opacity: 1; }
.silhueta { display: block; height: 58px; width: auto; overflow: visible; }
.s-vidro { fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.s-vinho { fill: var(--c); opacity: 0; transform-origin: 50% 100%; transform: scaleY(.2); transition: opacity .35s, transform .6s cubic-bezier(.2, .7, .2, 1); }
.taca-op:hover .s-vinho { opacity: .35; transform: scaleY(.7); }
.taca-op[aria-checked="true"] .s-vinho { opacity: 1; transform: none; }
.taca-nome { position: relative; padding-bottom: 6px; font: 600 15.5px/1.2 var(--f-apoio); white-space: nowrap; }
.taca-nome::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: currentColor; transform: scaleX(0); transition: transform .35s ease; }
.taca-op[aria-checked="true"] .taca-nome::after { transform: scaleX(1); }
.taca-todos-grupo { display: flex; align-items: flex-end; gap: 1px; height: 58px; }
.taca-todos-grupo .silhueta { height: 34px; }
.taca-todos .s-vinho { opacity: 0 !important; }
.filtro { margin-top: 26px; }

/* vinho do prato: texto, sem botão desenhado */
.vinho-txt {
  border: 0; background: none; padding: 6px 0; cursor: pointer;
  font: 600 17px/1.3 var(--f-apoio); color: var(--claro-apoio);
  text-decoration: underline; text-decoration-color: rgba(239, 227, 211, .35); text-underline-offset: 6px; text-decoration-thickness: 1px;
  transition: color .25s, text-decoration-color .25s;
}
.vinho-txt:hover { color: var(--claro); }
.vinho-txt[aria-pressed="true"] { color: #fff4ea; text-decoration-color: var(--c); text-decoration-thickness: 2.5px; }
.vinho-txt + .vinho-txt::before { content: 'ou'; display: inline-block; margin-right: 12px; font-weight: 450; color: var(--claro-apoio); text-decoration: none; }
[data-v="espumante"] { --c: #f2dc8c; }
[data-v="branco"] { --c: #e3c55a; }
[data-v="tinto-leve"] { --c: #b4223a; }
[data-v="tinto-encorpado"] { --c: #6a0b1a; }

/* ---------- 2. carta ---------- */
.carta { position: relative; background: var(--noite-2); padding: clamp(80px, 9vw, 140px) var(--miolo) clamp(64px, 7vw, 110px); }
.carta-cabeca { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 22px 64px; align-items: end; }
.carta-cabeca h2 { color: #fff4ea; }
.carta-cabeca p { max-width: 34ch; font-size: clamp(19px, 1.6vw, 23px); color: var(--claro); justify-self: end; text-align: right; }

/* índice: cartões com foto de cada prato, no mesmo clima da abertura */
.indice { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: clamp(10px, 1.2vw, 16px); margin-top: 48px; }
.indice-card {
  position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; border-radius: 14px;
  color: #fff4ea; text-decoration: none; background: #2a1613;
  transition: transform .5s cubic-bezier(.2, .7, .2, 1), opacity .4s, box-shadow .3s, filter .4s;
}
.indice-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(1.04); filter: brightness(.86); transition: transform 1.2s cubic-bezier(.2, .7, .2, 1), filter .4s; }
.indice-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(14, 6, 5, .94) 0%, rgba(14, 6, 5, .45) 42%, rgba(14, 6, 5, 0) 70%); }
.indice-txt { position: absolute; z-index: 1; left: 14px; right: 14px; bottom: 14px; display: grid; gap: 6px; }
.indice-nome { font: var(--f-dest-peso) clamp(18px, 1.45vw, 22px)/1.12 var(--f-dest); letter-spacing: var(--f-dest-esp); text-wrap: balance; }
.indice-vinho { font: 600 15px/1.2 var(--f-apoio); color: var(--rosa); }
.indice-vinho::before { content: 'com '; font-weight: 450; color: var(--claro-apoio); }
.indice-card:hover { transform: translateY(-6px); }
.indice-card:hover img { transform: scale(1.1); filter: brightness(1); }
.indice-card.ativo { box-shadow: 0 0 0 2px var(--rosa); }
.indice-card.ativo img { filter: brightness(1); }
.indice-card.apagado { opacity: .26; filter: grayscale(.7); }
.indice-card.apagado:hover { transform: none; }
.anima .indice.visto .indice-card { animation: card-entra .9s cubic-bezier(.2, .7, .2, 1) backwards; animation-delay: calc(var(--i, 0) * 80ms + 120ms); }
@keyframes card-entra { from { opacity: 0; transform: translateY(34px) scale(.97); } }

.filtro-linha { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 14px 36px; margin-top: 36px; padding-top: 26px; border-top: 1px solid var(--fio-claro); }
.filtro-t { margin-bottom: 30px; font: 600 17px/1.3 var(--f-apoio); color: var(--claro-apoio); }
.filtro { margin-top: 0; }

.carta-corpo { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(24px, 4vw, 72px); margin-top: 56px; }
.lado-fixo { position: sticky; top: 84px; height: calc(100vh - 120px); display: flex; flex-direction: column; justify-content: center; }
.lado-taca { height: 62%; width: 100%; }
.lado-texto { text-align: center; max-width: 360px; margin: 10px auto 0; min-height: 9em; }
.lado-estilo { font: var(--f-dest-peso) 34px/1.1 var(--f-dest); letter-spacing: var(--f-dest-esp); color: #fff4ea; }
.lado-prato { margin-top: 6px; font: 600 16px/1.35 var(--f-apoio); color: var(--claro-apoio); }
.lado-taca-nome { margin-top: 4px; font: 600 16px/1.3 var(--f-apoio); color: var(--rosa); }
.lado-porque { margin-top: 12px; color: var(--claro); }
.troca { animation: troca .5s ease both; }
@keyframes troca { from { opacity: 0; transform: translateY(8px); } }

.pratos { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(56px, 8vw, 120px); }
.prato { min-height: 70vh; display: flex; flex-direction: column; justify-content: center; }
.prato-foto { position: relative; overflow: hidden; border-radius: 8px; aspect-ratio: 4 / 3; background: #2a1613; }
.prato-foto img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 1.4s cubic-bezier(.2, .7, .2, 1); }
.prato.ativo .prato-foto img { transform: scale(1); }
.prato h3 { margin-top: 26px; font-size: clamp(30px, 3vw, 44px); color: #fff4ea; }
.prato-desc { margin-top: 10px; max-width: 52ch; }
.prato-nota { margin-top: 10px; font: 600 16px/1.5 var(--f-apoio); color: var(--rosa); }
.prato-vinhos { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-top: 20px; }
.prato-vinhos-t { font: 600 16px/1 var(--f-apoio); color: var(--claro-apoio); margin-right: 4px; }
.prato-quero {
  margin-top: 18px; align-self: flex-start; background: none; border: 0; padding: 6px 0; cursor: pointer;
  font: 600 16px/1.3 var(--f-apoio); color: var(--claro); text-decoration: underline; text-underline-offset: 5px;
}
.prato-quero[aria-pressed="true"] { color: var(--rosa); text-decoration: none; }
.prato-quero[aria-pressed="true"]::before { content: '✓ '; }

.carta-pe { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 40px; margin-top: 80px; padding-top: 32px; border-top: 1px solid var(--fio-claro); }
.carta-pe p { max-width: 60ch; color: var(--claro-apoio); }

/* ---------- 3. adega ---------- */
.adega { position: relative; background: var(--papel); color: var(--escuro); display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; gap: clamp(28px, 5vw, 80px); padding: clamp(80px, 9vw, 140px) var(--miolo); overflow: hidden; }
.adega-foto { overflow: hidden; border-radius: 8px; aspect-ratio: 5 / 4; }
.adega-foto img { width: 100%; height: 118%; object-fit: cover; object-position: 25% 50%; will-change: transform; }
.adega h2 { color: var(--escuro); }
.adega-texto > p { margin-top: 18px; }
.citacao { margin: 36px 0 0; padding: 0; }
.citacao p { font: var(--f-dest-peso) clamp(24px, 2.2vw, 31px)/1.3 var(--f-dest); letter-spacing: var(--f-dest-esp); }
.citacao p { text-indent: -.42em; }
.citacao p::before { content: '“'; } .citacao p::after { content: '”'; }
.citacao cite { display: block; margin-top: 12px; font: 500 16px/1.4 var(--f-apoio); font-style: normal; color: var(--escuro-apoio); }

/* ---------- 4. casa ---------- */
.casa { background: var(--noite); padding: clamp(80px, 9vw, 140px) var(--miolo); }
.casa-topo { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 80px); align-items: end; }
.casa-fachada { overflow: hidden; border-radius: 8px; aspect-ratio: 16 / 10; }
.casa-fachada img { width: 100%; height: 100%; object-fit: cover; }
.casa h2 { color: #fff4ea; }
.casa-texto p { margin-top: 18px; }
.casa-frase { font: var(--f-dest-peso) 28px/1.3 var(--f-dest); color: var(--rosa); }

.ambientes { display: flex; gap: 8px; height: 440px; margin-top: clamp(48px, 6vw, 88px); }
.amb {
  position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; cursor: pointer;
  border: 0; border-radius: 8px; padding: 26px 22px; text-align: left;
  display: flex; flex-direction: column; justify-content: flex-end;
  font: inherit; color: var(--tc); background: var(--bc);
  transition: flex-grow .7s cubic-bezier(.2, .7, .2, 1);
}
.amb.aberto { flex-grow: 3.4; }
@media (min-width: 981px) {
  .amb:not(.aberto) { justify-content: flex-start; align-items: flex-start; }
  .amb:not(.aberto) .amb-nome { writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; margin-top: auto; }
  .amb:not(.aberto) .amb-linha { display: none; }
}
.amb-nome { font: var(--f-dest-peso) clamp(24px, 2.2vw, 34px)/1.08 var(--f-dest); letter-spacing: var(--f-dest-esp); }
.amb-linha { margin-top: 12px; max-width: 30ch; opacity: 0; transform: translateY(10px); transition: opacity .35s, transform .45s; font-size: 17px; }
.amb.aberto .amb-linha { opacity: 1; transform: none; transition-delay: .25s; }
.amb[data-cor="creme"] { --bc: #efe3cf; --tc: #2b1f19; }
.amb[data-cor="chumbo"] { --bc: #3f3e40; --tc: #f4ead9; }
.amb[data-cor="rosa"] { --bc: #d9a49a; --tc: #2b1612; }
.amb[data-cor="preto"] { --bc: #0d0706; --tc: #f4ead9; box-shadow: inset 0 0 0 1px var(--fio-claro); }
.amb[data-cor="bordo"] { --bc: #8a1f24; --tc: #fff4ea; }
.amb[data-cor="madeira"] { --bc: #5a3826; --tc: #f4ead9; }

.casa-baixo { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr); gap: clamp(16px, 2vw, 28px); margin-top: 8px; align-items: start; padding-top: 0; }
.casa-terraco, .casa-salao { overflow: hidden; border-radius: 8px; margin-top: 8px; }
.casa-terraco { aspect-ratio: 4 / 3; }
.casa-salao { aspect-ratio: 4 / 3.6; margin-top: 64px; }
.casa-baixo img { width: 100%; height: 100%; object-fit: cover; }
.casa-citacao { align-self: end; margin-top: 0; }
.casa-citacao p { color: #fff4ea; font-size: clamp(22px, 1.8vw, 27px); }
.casa-citacao cite { color: var(--claro-apoio); }

/* ---------- 5. empresas ---------- */
.empresas { background: var(--papel); color: var(--escuro); display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px clamp(28px, 6vw, 96px); padding: clamp(80px, 9vw, 130px) var(--miolo); }
.empresas h2 { color: var(--escuro); font-size: clamp(36px, 4vw, 58px); overflow-wrap: break-word; }
.empresas-texto p { margin-top: 18px; max-width: 40ch; }
.empresas-form { display: grid; gap: 22px; }
.grupo-pessoas { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 6px 16px; }
.grupo-pessoas label { font: 600 17px/1.3 var(--f-apoio); }
.grupo-pessoas output { font: var(--f-dest-peso) 56px/1 var(--f-dest); color: var(--bordo); }
.grupo-pessoas input { grid-column: 1 / -1; width: 100%; accent-color: var(--bordo); height: 30px; }
.mesa-desenho { display: flex; flex-wrap: wrap; gap: 14px 18px; min-height: 92px; align-content: flex-start; }
.mesa { position: relative; display: grid; grid-template-columns: repeat(4, 12px); gap: 6px 8px; padding: 0 6px; animation: entra-mesa .35s ease both; }
.mesa::before { content: ''; grid-column: 1 / -1; grid-row: 2; height: 16px; border-radius: 4px; background: var(--madeira); }
.lugar { width: 12px; height: 12px; border-radius: 50%; background: rgba(43, 31, 25, .14); transition: background .2s; }
.lugar.ocupado { background: var(--bordo); }
.mesa .cima { grid-row: 1; } .mesa .baixo { grid-row: 3; }
@keyframes entra-mesa { from { opacity: 0; transform: scale(.9); } }
.mesa-legenda { color: var(--escuro-apoio); min-height: 1.6em; }

.linha { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
label { display: grid; gap: 8px; font: 600 16px/1.3 var(--f-apoio); }
input:not([type="range"]), select {
  width: 100%; min-height: 54px; padding: 0 16px; border-radius: 10px;
  border: 1.5px solid rgba(43, 31, 25, .28); background: #fffaf4; color: var(--escuro);
  font: 450 17px/1.2 var(--f-leit);
}
input:focus { outline: none; border-color: var(--bordo); box-shadow: 0 0 0 3px rgba(138, 31, 36, .18); }
.empresas .botao, .reservar .botao { justify-self: start; }

/* ---------- 6. reserva ---------- */
.reservar { background: var(--papel-2); color: var(--escuro); display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); grid-template-areas: "cabeca cabeca" "form rotulo"; gap: 48px clamp(28px, 6vw, 96px); padding: clamp(80px, 9vw, 130px) var(--miolo) clamp(90px, 10vw, 150px); }
.reservar-cabeca { grid-area: cabeca; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 20px clamp(28px, 6vw, 96px); align-items: end; }
.reservar h2 { color: var(--escuro); }
.reserva-form { grid-area: form; display: grid; gap: 28px; }
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
legend { padding: 0; margin-bottom: 12px; font: 600 16px/1.3 var(--f-apoio); }
.opcoes { display: flex; flex-wrap: wrap; gap: 8px; }
.opcao {
  min-height: 48px; padding: 0 16px; border-radius: 10px; cursor: pointer;
  border: 1.5px solid rgba(43, 31, 25, .22); background: #fffaf4; color: var(--escuro);
  font: 600 16px/1.15 var(--f-apoio); transition: background .2s, color .2s, border-color .2s;
}
.opcao small { display: block; font-weight: 500; font-size: 15px; color: var(--escuro-apoio); }
.opcao:hover { border-color: var(--bordo); }
.opcao[aria-checked="true"] { background: var(--bordo); border-color: var(--bordo); color: #fff6ee; }
.opcao[aria-checked="true"] small { color: #f6d9d2; }
.dias .opcao { min-width: 92px; padding: 8px 14px; }
.contador { display: inline-flex; align-items: center; border: 1.5px solid rgba(43, 31, 25, .22); border-radius: 10px; background: #fffaf4; }
.contador button { width: 52px; height: 50px; border: 0; background: none; font: 600 24px/1 var(--f-apoio); color: var(--bordo); cursor: pointer; }
.contador output { min-width: 44px; text-align: center; font: 700 20px/1 var(--f-apoio); }
.campo-nome { max-width: 420px; }

.rotulo-lugar { grid-area: rotulo; position: sticky; top: 100px; align-self: start; }
.rotulo {
  background: var(--creme); color: var(--escuro);
  border-radius: 6px; padding: 38px 34px 30px; text-align: center;
  outline: 1.5px solid var(--bordo); outline-offset: -12px;
  transform: rotate(-1.2deg);
  box-shadow: 0 30px 60px -30px rgba(43, 31, 25, .45);
}
.rotulo.carimbo { animation: carimbo .45s ease; }
@keyframes carimbo { 40% { transform: rotate(-1.2deg) scale(1.015); } }
.rotulo-casa { font: var(--f-dest-peso) 56px/1 var(--f-dest); letter-spacing: var(--f-dest-esp); color: var(--bordo); }
.rotulo-sub { margin-top: 8px; font: 600 16px/1.3 var(--f-apoio); color: var(--escuro-apoio); }
.rotulo-dia { margin-top: 26px; font: var(--f-dest-peso) 32px/1.12 var(--f-dest); }
.rotulo-hora { margin-top: 4px; font: 600 18px/1.3 var(--f-apoio); }
.rotulo-ficha { margin: 24px 0 0; padding: 0; border-top: 1px solid var(--fio-escuro); text-align: left; }
.rotulo-ficha div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--fio-escuro); }
.rotulo-ficha dt { color: var(--escuro-apoio); }
.rotulo-ficha dd { margin: 0; font-weight: 650; text-align: right; }
.rotulo-olho { margin-top: 18px; text-align: left; }
.rotulo-olho-t { font: 600 16px/1.3 var(--f-apoio); color: var(--bordo); }
.rotulo-olho ul { margin: 6px 0 0; padding-left: 20px; }
.rotulo-safra { margin-top: 22px; font: var(--f-dest-peso) 20px/1 var(--f-dest); color: var(--bordo); }
.reserva-citacao { margin-top: 48px; }

/* ---------- rodapé ---------- */
.rodape { background: var(--noite); color: var(--claro); padding: clamp(72px, 8vw, 120px) var(--miolo) 40px; font-size: 17px; }
.rodape-chamada { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 36px; padding-bottom: 48px; border-bottom: 1px solid var(--fio-claro); }
.rodape-marca { font: var(--f-dest-peso) clamp(64px, 8vw, 112px)/.9 var(--f-dest); letter-spacing: var(--f-dest-esp); color: #fff4ea; }
.rodape-frase { font: var(--f-dest-peso) clamp(22px, 2vw, 28px)/1.2 var(--f-dest); color: var(--rosa); margin-right: auto; }
.rodape-colunas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; padding: 44px 0; }
.rodape h3 { font: 650 16px/1.3 var(--f-apoio); letter-spacing: 0; color: var(--rosa); margin-bottom: 12px; }
.rodape-colunas p + p { margin-top: 8px; }
.rodape-colunas .link-seta { display: inline-block; margin-top: 12px; font-size: 16px; }
.rodape nav { display: flex; flex-direction: column; gap: 8px; }
.rodape nav a, .rodape-colunas p a { text-decoration: none; }
.rodape nav a:hover, .rodape-colunas p a:hover { text-decoration: underline; text-underline-offset: 4px; }
.rodape-base { padding-top: 24px; border-top: 1px solid var(--fio-claro); font: 500 15px/1.4 var(--f-apoio); color: var(--claro-apoio); }
.fixo-reservar { display: none; }

/* ---------- entrada suave ---------- */
.anima .surge { opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform 1s cubic-bezier(.2, .7, .2, 1); }
.anima .surge.visto { opacity: 1; transform: none; }

/* ---------- tablet e celular ---------- */
@media (max-width: 980px) {
  .menu { display: none; }
  .botao-topo { margin-left: auto; }
  .abertura { align-items: flex-end; padding: 96px var(--lado) 56px; }
  .abertura::before {
    background: linear-gradient(180deg, var(--noite) 0%, rgba(23, 11, 10, .2) 14%, rgba(23, 11, 10, .25) 34%, rgba(23, 11, 10, .9) 60%, var(--noite) 78%);
  }
  .mosaico { top: -6%; bottom: 22%; left: -20%; right: -20%; width: auto; }
  .mosaico-plano { transform: rotateX(8deg) rotateY(-8deg) rotateZ(8deg); }
  .carta-cabeca { grid-template-columns: 1fr; }
  .carta-corpo { grid-template-columns: 1fr; margin-top: 28px; }
  .carta-cabeca p { justify-self: start; text-align: left; }
  .indice { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(150px, 40%); overflow-x: auto; scroll-snap-type: x mandatory; margin-inline: calc(var(--lado) * -1); padding: 4px var(--lado) 8px; scrollbar-width: none; margin-top: 32px; }
  .indice::-webkit-scrollbar { display: none; }
  .indice-card { scroll-snap-align: start; }
  .filtro-linha { flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 12px; }
  .filtro-linha > * { min-width: 0; }
  .filtro-t { margin: 0; }
  /* cápsula flutuante: taça pequena + vinho + prato */
  .carta-lado { position: sticky; top: 78px; z-index: 4; }
  .lado-fixo {
    position: static; height: auto; flex-direction: row; align-items: center; gap: 12px;
    padding: 6px 18px 6px 6px; border-radius: 20px;
    background: rgba(31, 15, 13, .74); backdrop-filter: blur(16px) saturate(1.2); -webkit-backdrop-filter: blur(16px) saturate(1.2);
    border: 1px solid rgba(239, 227, 211, .12); box-shadow: 0 14px 34px rgba(0, 0, 0, .38);
  }
  .lado-taca { width: 54px; height: 86px; flex: none; }
  .lado-texto { text-align: left; margin: 0; min-height: 0; min-width: 0; }
  .lado-estilo { font-size: 21px; }
  .lado-prato { margin-top: 2px; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .lado-taca-nome, .lado-porque { display: none; }
  .prato { min-height: 0; }
  .adega, .casa-topo, .empresas { grid-template-columns: 1fr; }
  .ambientes { flex-direction: column; height: auto; }
  .amb { flex: none; min-height: 76px; padding: 20px; justify-content: center; transition: min-height .5s; }
  .amb.aberto { min-height: 170px; justify-content: flex-end; }
  .casa-baixo { grid-template-columns: 1fr 1fr; }
  .casa-salao { margin-top: 8px; }
  .casa-citacao { grid-column: 1 / -1; margin-top: 20px; }
  .reservar { grid-template-columns: 1fr; grid-template-areas: "cabeca" "rotulo" "form"; }
  .reservar-cabeca { grid-template-columns: 1fr; }
  .rotulo { position: static; max-width: 440px; margin: 0 auto; }
  .rodape-colunas { grid-template-columns: 1fr 1fr; }
  .rotulo-lugar { position: static; }
}
@media (max-width: 560px) {
  body { font-size: 17px; }
  .botao-topo { display: none; }
  .copo-botoes, .filtro { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--lado) * -1); padding: 2px var(--lado) 6px; scrollbar-width: none; }
  .copo-botoes::-webkit-scrollbar, .filtro::-webkit-scrollbar { display: none; }
  .linha { grid-template-columns: 1fr; }
  .rodape-colunas { grid-template-columns: 1fr; gap: 28px; }
  .rodape-chamada .botao { width: 100%; }
  .rodape { padding-bottom: 96px; }
  .reservar .botao, .empresas .botao { width: 100%; }
  .rotulo { padding: 32px 24px 26px; }
  .rotulo-casa { font-size: 46px; }
  .fixo-reservar {
    display: flex; position: fixed; right: 16px; bottom: 16px; min-height: 50px; padding: 0 22px; align-items: center;
    background: var(--bordo); color: #fff6ee; border-radius: 999px; font: 650 16px/1 var(--f-apoio); text-decoration: none;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .3); transition: opacity .25s, transform .25s;
  }
  .fixo-reservar.some { opacity: 0; transform: translateY(14px); pointer-events: none; }
}

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

/* ---------- logo de verdade (img/logo-*, img/assinatura-*) ---------- */
.marca { display: block; line-height: 0; }
.marca img { height: 42px; width: auto; }
.marca-bordo { display: none; }
.topo.claro .marca-clara { display: none; }
.topo.claro .marca-bordo { display: block; }
.logo-abertura { line-height: 0; margin-left: -1.5%; }
.logo-abertura img { width: min(100%, 600px); height: auto; }
.rotulo-casa { line-height: 0; }
.rotulo-casa img { width: 190px; height: auto; margin: 0 auto; }
.rodape-marca { line-height: 0; }
.rodape-marca img { width: clamp(220px, 26vw, 340px); height: auto; }
@media (max-width: 980px) { .logo-abertura img { width: min(90%, 460px); } }
@media (max-width: 560px) { .marca img { height: 36px; } .rotulo-casa img { width: 160px; } }

/* ---------- card de avaliações do Google (abertura) ---------- */
.nota-google {
  display: inline-flex; align-items: center; gap: 14px; margin-top: 34px;
  padding: 10px 22px 10px 10px; border-radius: 18px; text-decoration: none; color: #fff4ea;
  background: rgba(255, 244, 234, .07); border: 1px solid rgba(239, 227, 211, .16);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  transition: background .25s, border-color .25s, transform .25s;
}
.nota-google:hover { background: rgba(255, 244, 234, .12); border-color: rgba(239, 227, 211, .3); transform: translateY(-2px); }
.g-logo { display: grid; place-items: center; width: 48px; height: 48px; flex: none; border-radius: 12px; background: #fff; }
.g-logo svg { width: 28px; height: 28px; }
.g-txt { display: grid; gap: 4px; }
.g-linha { display: flex; align-items: center; gap: 10px; }
.g-linha strong { font: 700 22px/1 var(--f-apoio); }
.estrelas { position: relative; display: inline-block; font-size: 18px; line-height: 1; letter-spacing: 2px; color: rgba(255, 244, 234, .22); }
.estrelas::before { content: '★★★★★'; }
.estrelas::after { content: '★★★★★'; position: absolute; left: 0; top: 0; width: calc(var(--n) / 5 * 100%); overflow: hidden; white-space: nowrap; color: #fbbc04; }
.g-sub { font: 500 15px/1.2 var(--f-apoio); color: var(--claro-apoio); }
