/*!
 * Taste-Vin BH — estilos principais
 *
 * Framework de layout: CSS nativo (Custom Properties + CSS Grid + Flexbox), mobile-first em
 * comportamento, sem dependência de Bootstrap/Tailwind — assim não há conflito com o grid do Elementor.
 * Breakpoints alinhados aos do Elementor:
 *   celular  ≤ 767px
 *   tablet   768px – 1024px
 *   desktop  ≥ 1025px
 *
 * Tokens extraídos do site original (Squarespace "Bogotá", site.css):
 *   fundo #f7f4ec · texto #494745 · cabeçalho #494745 · rodapé/realce #a19e89 · títulos h3 rgba(28,28,28,.8)
 *   container 1080px, padding 100px 34px · logo 200px · header padding 25px
 */

/* ==========================================================================
   1. Tokens
   ========================================================================== */
:root {
	/* Cores */
	--tv-color-bg: #f7f4ec;
	--tv-color-text: #494745;
	--tv-color-header: #494745;
	--tv-color-muted: #a19e89;
	--tv-color-heading-3: rgba(28, 28, 28, .8);
	--tv-color-ink: #1c1c1c;
	--tv-color-white: #fff;
	--tv-color-nav: rgba(255, 255, 255, .7);
	--tv-color-nav-hover: #fff;
	--tv-color-overlay: rgba(73, 71, 69, .97);
	--tv-color-rule: rgba(161, 158, 137, .35);

	/* Fontes (Adobe Fonts quando o kit estiver configurado; senão, equivalentes do Google) */
	--tv-font-body: "abril-display", "Playfair Display", Georgia, "Times New Roman", serif;
	--tv-font-display: "Abril Fatface", "Playfair Display", Georgia, serif;
	--tv-font-condensed: "din-condensed-web", "Barlow Condensed", "Arial Narrow", sans-serif;
	--tv-font-sans: "Raleway", "Helvetica Neue", Arial, sans-serif;

	/* Escala tipográfica */
	--tv-fs-body: 15px;
	/* Peso do texto: 500 deixa o Playfair Display com a mesma "cor" do abril-display original */
	--tv-fw-body: 500;
	--tv-ls-body: .4px;
	--tv-lh-body: 1.6;
	--tv-fs-h1: 26px;
	--tv-fs-h2: 32px;
	--tv-fs-h3: 22px;
	--tv-fs-nav: 14px;

	/* Layout */
	--tv-container: 1080px;
	--tv-gutter: 34px;
	--tv-page-pad-top: 100px;
	--tv-page-pad-bottom: 100px;
	--tv-header-pad: 25px;
	--tv-logo-w: 200px;
	--tv-col-gap: 34px;
	--tv-transition: 250ms ease-in-out;
	--tv-admin-bar: 0px;
}

@media (max-width: 1024px) {
	:root {
		--tv-page-pad-top: 80px;
		--tv-page-pad-bottom: 80px;
		--tv-col-gap: 28px;
	}
}

@media (max-width: 767px) {
	:root {
		--tv-gutter: 20px;
		--tv-page-pad-top: 56px;
		--tv-page-pad-bottom: 56px;
		--tv-header-pad: 20px;
		--tv-logo-w: 150px;
		--tv-fs-h2: 26px;
		--tv-fs-h3: 20px;
		--tv-col-gap: 24px;
	}
}

.admin-bar { --tv-admin-bar: 32px; }
@media (max-width: 782px) { .admin-bar { --tv-admin-bar: 46px; } }

/* ==========================================================================
   2. Base
   ========================================================================== */
*,
*::before,
*::after { box-sizing: border-box; }

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

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*:not(.tv-slide), *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; }
}

body {
	margin: 0;
	background: var(--tv-color-bg);
	color: var(--tv-color-text);
	font-family: var(--tv-font-body);
	font-size: var(--tv-fs-body);
	font-weight: var(--tv-fw-body);
	font-variant-numeric: lining-nums;
	letter-spacing: var(--tv-ls-body);
	line-height: var(--tv-lh-body);
	-moz-osx-font-smoothing: auto;
	-webkit-font-smoothing: subpixel-antialiased;
	overflow-x: hidden;
}

body.tv-nav-open { overflow: hidden; }

img,
svg,
video,
iframe { max-width: 100%; }

img { height: auto; vertical-align: middle; }

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

a:hover,
a:focus-visible { color: var(--tv-color-muted); }

:focus-visible { outline: 2px solid var(--tv-color-muted); outline-offset: 3px; }

p { margin: 0 0 1em; }
p:empty { display: none; }

strong, b { font-weight: 700; }
em, i { font-style: italic; }

h1, h2, h3, h4, h5, h6 { margin: 0 0 .75em; font-weight: 400; color: var(--tv-color-text); }

h1 {
	font-family: var(--tv-font-condensed);
	font-size: var(--tv-fs-h1);
	line-height: 1.3;
	letter-spacing: .08em;
	text-transform: uppercase;
}

h2 {
	font-family: var(--tv-font-display);
	font-size: var(--tv-fs-h2);
	line-height: 1.5;
	letter-spacing: 2px;
	text-transform: uppercase;
	margin-bottom: 1.1em;
}

h3 {
	font-family: var(--tv-font-condensed);
	font-size: var(--tv-fs-h3);
	line-height: 1.4;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--tv-color-heading-3);
	margin: 1.4em 0 .6em;
}

h3:first-child { margin-top: 0; }

h4, h5, h6 {
	font-family: var(--tv-font-sans);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 2px;
	text-transform: uppercase;
}

blockquote {
	margin: 1.5em 0;
	padding: 0 0 0 1.5em;
	border-left: 2px solid var(--tv-color-muted);
	font-family: var(--tv-font-sans);
	font-size: 22px;
	line-height: 1.35;
}

hr {
	border: 0;
	height: 1px;
	background: var(--tv-color-rule);
	margin: 2em 0;
}

ul, ol { padding-left: 1.25em; margin: 0 0 1em; }

table { width: 100%; border-collapse: collapse; margin: 0 0 1.5em; }
th, td { padding: .6em .8em; border-bottom: 1px solid var(--tv-color-rule); text-align: left; }

figure { margin: 0 0 1.5em; }
figcaption { font-size: 13px; color: var(--tv-color-muted); margin-top: .5em; }

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link:focus {
	clip: auto;
	clip-path: none;
	height: auto;
	width: auto;
	left: 10px;
	top: 10px;
	z-index: 100000;
	padding: 12px 18px;
	background: var(--tv-color-white);
	color: var(--tv-color-text);
}

.tv-content:focus { outline: 0; }

/* ==========================================================================
   3. Layout
   ========================================================================== */
.tv-container {
	width: 100%;
	max-width: var(--tv-container);
	margin-inline: auto;
	padding-inline: var(--tv-gutter);
}

.tv-page__inner {
	padding-top: var(--tv-page-pad-top);
	padding-bottom: var(--tv-page-pad-bottom);
}

.tv-page__header { margin-bottom: .5em; }

/* Colunas para conteúdo sem Elementor (equivalentes às colunas do grid de 12 do original) */
.tv-cols {
	display: grid;
	gap: var(--tv-col-gap);
	grid-template-columns: 1fr;
	align-items: start;
	margin-bottom: 1.5em;
}

@media (min-width: 768px) {
	.tv-cols--7-5 { grid-template-columns: 7fr 5fr; }
	.tv-cols--8-4 { grid-template-columns: 8fr 4fr; }
	.tv-cols--6-6 { grid-template-columns: 1fr 1fr; }
	.tv-cols--8-1-3 { grid-template-columns: 8fr 1fr 3fr; }
	.tv-cols--8-1-3 > .tv-col-spacer { display: block; }
}

.tv-col-spacer { display: none; }

.tv-entry > *:last-child { margin-bottom: 0; }

.tv-entry img,
.tv-entry .wp-block-image img { display: block; }

.tv-media-cover img { width: 100%; height: auto; object-fit: cover; }

.tv-center { text-align: center; }
.tv-center img { margin-inline: auto; }

.tv-spacer { height: 60px; }
@media (max-width: 767px) { .tv-spacer { height: 30px; } }

.tv-wide-image { margin-top: 3em; }

/* Alinhamentos do WordPress */
.alignleft { float: left; margin: .3em 1.5em 1em 0; }
.alignright { float: right; margin: .3em 0 1em 1.5em; }
.aligncenter { display: block; margin-inline: auto; }
.alignwide { margin-inline: calc(var(--tv-gutter) * -1); max-width: none; }
.alignfull { margin-inline: calc(50% - 50vw); max-width: 100vw; width: 100vw; }

@media (max-width: 767px) {
	.alignleft,
	.alignright { float: none; margin: 0 0 1em; }
}

/* ==========================================================================
   4. Cabeçalho
   ========================================================================== */
/*
 * Réplica do cabeçalho do template original (Squarespace "Bogotá"):
 *  - logo de 200px centralizado; menu dividido em duas metades, à esquerda e à direita do logo,
 *    centralizado verticalmente com ele (Home · Restaurante | LOGO | Contato/Horários);
 *  - fundo #494745 nas páginas internas e transparente sobre o slideshow da página inicial;
 *  - links DIN Condensed 14px, espaçamento 3px, branco 70% (ativo/hover 100%);
 *  - submenu com fundo #494745 sólido, padding 16px 0, itens 7px 21px (28px por linha), 8px à esquerda.
 * Os seletores usam .tv-site para vencer o "link color" global do Kit do Elementor.
 */
.tv-header {
	position: relative;
	z-index: 1002;
	width: 100%;
	padding: var(--tv-header-pad);
	background-color: var(--tv-color-header);
	line-height: 1;
	-moz-osx-font-smoothing: grayscale;
	-webkit-font-smoothing: antialiased;
}

.tv-header__bar {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	column-gap: 16px;
}

.tv-logo {
	grid-column: 2;
	margin: 0;
	width: var(--tv-logo-w);
	max-width: 70vw;
	font-size: 0;
	line-height: 0;
}

.tv-logo a { display: block; }
.tv-logo__img { display: block; width: 100%; height: auto; }

/* Cabeçalho transparente sobre o slideshow (página inicial), como no original */
.tv-header-transparent .tv-header {
	position: absolute;
	top: var(--tv-admin-bar);
	left: 0;
	background: transparent;
}

/* --- Navegação --- */
.tv-site .tv-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-site .tv-nav a,
.tv-site .tv-nav a:visited,
.tv-site .tv-nav .tv-nav__folder {
	font-family: var(--tv-font-condensed);
	font-size: var(--tv-fs-nav);
	font-weight: 400;
	letter-spacing: 3px;
	text-transform: uppercase;
	text-decoration: none;
	line-height: 1;
	color: var(--tv-color-nav);
	cursor: pointer;
	transition: color .1s ease-in-out;
}

.tv-site .tv-nav a:hover,
.tv-site .tv-nav a:focus-visible,
.tv-site .tv-nav li:hover > a,
.tv-site .tv-nav .current-menu-item > a,
.tv-site .tv-nav .current_page_item > a { color: var(--tv-color-nav-hover); }

.tv-nav--main .tv-nav__list,
.tv-nav--scroll .tv-nav__list {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: center;
}

/* Metade esquerda encosta no logo pela direita; metade direita, pela esquerda (30px até o logo,
   contando o padding de 14px do link, como no original: margem 130px = 100px do meio do logo + 30px) */
.tv-nav--left { grid-column: 1; justify-self: end; margin-right: 14px; }
.tv-nav--right { grid-column: 3; justify-self: start; margin-left: 14px; }
.tv-nav--left .tv-nav__list { justify-content: flex-end; }
.tv-nav--right .tv-nav__list { justify-content: flex-start; }

.tv-nav--main li,
.tv-nav--scroll li { position: relative; }

.tv-site .tv-nav--main .tv-nav__list > li > a,
.tv-site .tv-nav--scroll .tv-nav__list > li > a {
	display: block;
	padding: 10.5px 14px;
	white-space: nowrap;
}

/* Submenu (dropdown) — .tv-site na frente para vencer ".tv-site .tv-nav ul { padding: 0 }" */
.tv-site .tv-nav--main .sub-menu,
.tv-site .tv-nav--main .children,
.tv-site .tv-nav--scroll .sub-menu,
.tv-site .tv-nav--scroll .children {
	position: absolute;
	top: 100%;
	left: -8px;
	z-index: 1000;
	padding: 16px 0;
	background-color: #494745;
	text-align: left;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	transition: opacity .14s ease-in-out, visibility 0s .14s;
}

.tv-site .tv-nav--main .sub-menu a,
.tv-site .tv-nav--main .children a,
.tv-site .tv-nav--scroll .sub-menu a,
.tv-site .tv-nav--scroll .children a {
	display: block;
	padding: 7px 21px;
	line-height: 1;
	color: var(--tv-color-nav);
}

.tv-site .tv-nav--main .sub-menu a:hover,
.tv-site .tv-nav--main .sub-menu .current-menu-item > a,
.tv-site .tv-nav--scroll .sub-menu a:hover,
.tv-site .tv-nav--scroll .sub-menu .current-menu-item > a { color: var(--tv-color-white); }

.tv-nav--main li:hover > .sub-menu,
.tv-nav--main li:focus-within > .sub-menu,
.tv-nav--main li.is-open > .sub-menu,
.tv-nav--main li:hover > .children,
.tv-nav--main li:focus-within > .children,
.tv-nav--scroll li:hover > .sub-menu,
.tv-nav--scroll li:focus-within > .sub-menu,
.tv-nav--scroll li:hover > .children,
.tv-nav--scroll li:focus-within > .children {
	opacity: 1;
	visibility: visible;
	transition-delay: 0s;
}

/* Botão de submenu: só para leitores de tela/teclado */
.tv-subnav-toggle { display: none; }

/* --- Barra de navegação fixa ao rolar ("show on scroll" do original) --- */
.tv-scrollbar {
	position: fixed;
	top: var(--tv-admin-bar);
	left: 0;
	right: 0;
	z-index: 1003;
	padding: 5px var(--tv-gutter);
	background-color: #494745;
	text-align: center;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .14s ease-in-out, visibility 0s .14s;
	-webkit-font-smoothing: antialiased;
}

.tv-scrolled .tv-scrollbar {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition-delay: 0s;
}

/* --- Botão hambúrguer --- */
.tv-burger {
	/* À direita do logo, centralizado na altura dele (logo 1500 × 581 → altura = largura × 0,3873) */
	--tv-burger-top: calc(var(--tv-header-pad) + min(var(--tv-logo-w), 70vw) * 0.3873 / 2 - 22px);
	display: none;
	position: absolute;
	top: var(--tv-burger-top);
	right: calc(var(--tv-header-pad) - 11px);
	z-index: 1010;
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 11px;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--tv-color-nav);
	cursor: pointer;
	transition: background-color var(--tv-transition), color var(--tv-transition);
}

.tv-burger:hover { color: var(--tv-color-white); }

.tv-burger__bars {
	position: relative;
	display: block;
	width: 22px;
	height: 16px;
}

.tv-burger__bars span {
	position: absolute;
	left: 0;
	width: 100%;
	height: 2px;
	background: currentColor;
	transition: transform .3s ease, opacity .15s linear, top .3s ease;
}

.tv-burger__bars span:nth-child(1) { top: 0; }
.tv-burger__bars span:nth-child(2) { top: 7px; }
.tv-burger__bars span:nth-child(3) { top: 14px; }

.tv-nav-open .tv-burger__bars span:nth-child(1) { top: 7px; transform: rotate(45deg); }
.tv-nav-open .tv-burger__bars span:nth-child(2) { opacity: 0; }
.tv-nav-open .tv-burger__bars span:nth-child(3) { top: 7px; transform: rotate(-45deg); }

/* --- Menu em tela cheia (celular) --- */
.tv-overlay {
	position: fixed;
	inset: 0;
	z-index: 1005;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 100px var(--tv-gutter);
	overflow-y: auto;
	background-color: var(--tv-color-overlay);
	text-align: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity .3s ease, visibility 0s .3s;
	-webkit-font-smoothing: antialiased;
}

.tv-overlay[hidden] { display: flex; }

.tv-nav-open .tv-header { z-index: 1006; background-color: transparent; }

.tv-nav-open .tv-overlay {
	opacity: 1;
	visibility: visible;
	transition-delay: 0s;
}

.tv-nav--overlay { width: 100%; margin: auto 0; }

.tv-nav--overlay li { position: relative; }

.tv-nav--overlay .tv-nav__list > li > a {
	display: inline-block;
	padding: .35em 0;
	font-size: clamp(24px, 7vw, 54px);
	letter-spacing: 3px;
	line-height: 1.1;
}

/* Menu do celular: submenus sempre abertos (acessibilidade — nada fica escondido atrás de um toque).
   O item-pai sem link próprio (ex.: "Restaurante") vira um rótulo do grupo. */
.tv-site .tv-nav--overlay .sub-menu,
.tv-site .tv-nav--overlay .children {
	display: block;
	padding: 0 0 .9em;
}

.tv-site .tv-nav--overlay .tv-nav__list > li > .tv-nav__folder {
	font-size: clamp(24px, 7vw, 54px);
	line-height: 1.1;
	padding: .35em 0 .15em;
	cursor: default;
	color: var(--tv-color-nav);
}

.tv-site .tv-nav--overlay .tv-nav__list > li > .tv-nav__folder::after {
	content: "";
	display: block;
	width: 40px;
	height: 1px;
	margin: .35em auto 0;
	background: currentColor;
	opacity: .5;
}

.tv-nav--overlay .sub-menu a,
.tv-nav--overlay .children a {
	display: inline-block;
	padding: .45em 0;
	font-size: clamp(15px, 4vw, 20px);
}

/* No overlay, o próprio link do item com submenu abre/fecha o grupo (ver main.js). */

/* --- Breakpoint celular --- */
@media (max-width: 767px) {
	.tv-header { padding-bottom: var(--tv-header-pad); }
	.tv-nav--main,
	.tv-scrollbar { display: none; }
	.tv-burger { display: block; }

	/* Hambúrguer fixo ao rolar ("show on scroll mobile" do original) */
	.tv-scrolled .tv-burger,
	.tv-nav-open .tv-burger {
		position: fixed;
		top: calc(var(--tv-admin-bar) + var(--tv-burger-top));
		right: calc(var(--tv-header-pad) - 11px);
		background-color: rgba(73, 71, 69, .9);
		color: var(--tv-color-white);
	}
	.tv-nav-open .tv-burger { background-color: transparent; }
}

/* ==========================================================================
   5. Slideshow (página inicial / widget Elementor)
   Efeitos: .tv-slideshow--fx-fade | -kenburns | -zoom | -slide | -none
   Variáveis: --tv-speed (transição), --tv-interval (tempo de cada foto), --tv-zoom,
              --tv-slide-pos (ponto de foco), --tv-nav-color, --tv-arrow-size, --tv-dot-size
   ========================================================================== */
.tv-slideshow {
	--tv-slideshow-h: 100vh;
	--tv-speed: 1200ms;
	--tv-interval: 6200ms;
	--tv-zoom: 1.12;
	--tv-nav-color: #fff;
	--tv-arrow-size: 22px;
	--tv-dot-size: 9px;
	--tv-cap-btn: #fff;
	position: relative;
	width: 100%;
	height: var(--tv-slideshow-h);
	min-height: 320px;
	overflow: hidden;
	background-color: var(--tv-color-header);
	outline: 0;
	touch-action: pan-y;
}

.tv-slideshow:focus-visible { box-shadow: inset 0 0 0 2px var(--tv-color-muted); }

@supports (height: 100svh) {
	.tv-slideshow--hero { --tv-slideshow-h: 100svh; }
}

.tv-header-transparent .tv-slideshow--hero { margin-top: 0; }
.admin-bar .tv-slideshow--hero { height: calc(var(--tv-slideshow-h) - var(--tv-admin-bar)); }

.tv-slideshow__track {
	position: absolute;
	inset: 0;
	overflow: hidden;
}

.tv-slide {
	position: absolute;
	inset: 0;
	overflow: hidden;
	opacity: 0;
	transition: opacity var(--tv-speed) ease-in-out;
}

.tv-slide.is-active { opacity: 1; z-index: 1; }

/* A foto sempre cobre todo o slide (desktop, tablet e celular), recortando as sobras.
   Seletor reforçado: o Elementor aplica ".elementor img { height: auto }". */
.tv-site .tv-slideshow .tv-slide__img,
.tv-slideshow .tv-slide img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	max-height: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	object-fit: cover;
	object-position: var(--tv-slide-pos, 50% 50%);
	transform-origin: var(--tv-slide-pos, 50% 50%);
}

/* --- Sem transição --- */
.tv-slideshow--fx-none .tv-slide { transition: none; }

/* --- Zoom de entrada: a foto nova chega ampliada e assenta --- */
.tv-slideshow--fx-zoom .tv-slide img {
	transform: scale(var(--tv-zoom));
	transition: transform calc(var(--tv-speed) * 1.6) cubic-bezier(.2, .7, .2, 1);
}
.tv-slideshow--fx-zoom .tv-slide.is-active img { transform: scale(1); }

/* --- Ken Burns: zoom lento durante todo o tempo da foto --- */
@keyframes tv-kenburns {
	from { transform: scale(1); }
	to   { transform: scale(var(--tv-zoom)); }
}
.tv-slideshow--fx-kenburns .tv-slide.is-active img,
.tv-slideshow--fx-kenburns .tv-slide.is-leaving img {
	animation: tv-kenburns var(--tv-interval) linear forwards;
}
.tv-slideshow--fx-kenburns .tv-slide.is-leaving img { animation-play-state: paused; }
.tv-slideshow--fx-kenburns.is-paused .tv-slide.is-active img { animation-play-state: paused; }

/* --- Deslizar --- */
.tv-slideshow--fx-slide .tv-slide {
	opacity: 1;
	transform: translate3d(100%, 0, 0);
	transition: transform var(--tv-speed) cubic-bezier(.65, 0, .35, 1);
}
.tv-slideshow--fx-slide .tv-slide.is-active { transform: translate3d(0, 0, 0); }
.tv-slideshow--fx-slide .tv-slide.is-leaving { z-index: 1; }

/* "Reduzir movimento" no sistema: sem zoom nem deslize; troca por esmaecimento curto */
@media (prefers-reduced-motion: reduce) {
	.tv-slideshow .tv-slide img { transition: none !important; animation: none !important; transform: none !important; }
	.tv-slideshow .tv-slide { transform: none !important; opacity: 0; transition: opacity 400ms linear !important; }
	.tv-slideshow .tv-slide.is-active { opacity: 1; }
}

.tv-slideshow__overlay {
	position: absolute;
	inset: 0;
	z-index: 2;
	background: #000;
	opacity: 0;
	pointer-events: none;
}

/* --- Texto sobre a imagem --- */
.tv-slideshow__caption {
	position: absolute;
	inset: 0;
	z-index: 3;
	display: flex;
	align-items: center;
	padding: 140px 8% 90px;
	color: #fff;
	text-align: center;
	pointer-events: none;
}

.tv-slideshow__caption-inner {
	width: 100%;
	max-width: 720px;
	margin-left: var(--tv-cap-ml, auto);
	margin-right: var(--tv-cap-mr, auto);
	pointer-events: auto;
	text-shadow: 0 1px 12px rgba(0, 0, 0, .35);
}

.tv-slideshow__title {
	margin: 0 0 .4em;
	font-family: var(--tv-font-display);
	font-size: clamp(26px, 4.5vw, 54px);
	line-height: 1.2;
	letter-spacing: 2px;
	text-transform: uppercase;
}

.tv-slideshow__text {
	margin: 0 0 1.4em;
	font-family: var(--tv-font-body);
	font-size: clamp(15px, 1.6vw, 19px);
	line-height: 1.5;
}

.tv-site .tv-slideshow__button,
.tv-site .tv-slideshow__button:visited {
	display: inline-block;
	padding: 13px 26px;
	border: 2px solid var(--tv-cap-btn);
	color: var(--tv-cap-btn);
	font-family: var(--tv-font-sans);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-shadow: none;
	transition: background-color .15s linear, color .15s linear;
}

.tv-site .tv-slideshow__button:hover,
.tv-site .tv-slideshow__button:focus-visible {
	background: var(--tv-cap-btn);
	color: var(--tv-color-text);
}

/* --- Setas --- */
.tv-slideshow__arrow {
	position: absolute;
	top: 50%;
	z-index: 4;
	width: calc(var(--tv-arrow-size) * 2.5);
	height: calc(var(--tv-arrow-size) * 2.5);
	margin-top: calc(var(--tv-arrow-size) * -1.25);
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--tv-nav-color);
	opacity: .8; /* sempre visíveis, como no original */
	cursor: pointer;
	transition: opacity var(--tv-transition);
}

.tv-slideshow:hover .tv-slideshow__arrow,
.tv-slideshow__arrow:focus-visible { opacity: .9; }
.tv-slideshow__arrow:hover { opacity: 1; }

.tv-slideshow__arrow span {
	display: block;
	width: var(--tv-arrow-size);
	height: var(--tv-arrow-size);
	margin: auto;
	border-top: 2px solid currentColor;
	border-left: 2px solid currentColor;
	filter: drop-shadow(0 0 4px rgba(0, 0, 0, .35));
}

.tv-slideshow__arrow--prev { left: 12px; }
.tv-slideshow__arrow--prev span { transform: translateX(25%) rotate(-45deg); }
.tv-slideshow__arrow--next { right: 12px; }
.tv-slideshow__arrow--next span { transform: translateX(-25%) rotate(135deg); }

@media (max-width: 767px) {
	.tv-slideshow--no-arrows-mobile .tv-slideshow__arrow { display: none; }
	.tv-slideshow__arrow--prev { left: 4px; }
	.tv-slideshow__arrow--next { right: 4px; }
}

/* --- Marcadores --- */
.tv-slideshow__dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 24px;
	z-index: 4;
	display: flex;
	justify-content: center;
	gap: calc(var(--tv-dot-size) + 1px);
}

.tv-slideshow__dot {
	width: var(--tv-dot-size);
	height: var(--tv-dot-size);
	padding: 0;
	border: 1px solid var(--tv-nav-color);
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
	opacity: .8;
	transition: background-color .2s ease, transform .2s ease;
}

.tv-slideshow__dot:hover { transform: scale(1.2); }
.tv-slideshow__dot.is-active { background: var(--tv-nav-color); opacity: 1; }

/* --- Seta "role para baixo" --- */
.tv-slideshow__scroll {
	position: absolute;
	left: 50%;
	bottom: 52px;
	z-index: 4;
	width: 44px;
	height: 44px;
	margin-left: -22px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--tv-nav-color);
	cursor: pointer;
	animation: tv-bounce 2.2s ease-in-out infinite;
}

.tv-slideshow__scroll span {
	display: block;
	width: 16px;
	height: 16px;
	margin: 6px auto 0;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	filter: drop-shadow(0 0 4px rgba(0, 0, 0, .35));
}

.tv-slideshow:not(:has(.tv-slideshow__dots)) .tv-slideshow__scroll { bottom: 22px; }

@keyframes tv-bounce {
	0%, 100% { transform: translateY(0); opacity: .75; }
	50%      { transform: translateY(8px); opacity: 1; }
}

/* ==========================================================================
   6. Cardápio
   ========================================================================== */
.tv-menu-flores {
	max-width: 312px;
	margin: 0 auto 2.5em;
}

.tv-menu-flores img { display: block; width: 100%; height: auto; }

.tv-menu-section { margin: 0 0 85px; }
.tv-menu-section:last-child { margin-bottom: 40px; }

.tv-menu-section__title,
.tv-entry .tv-menu-section__title {
	margin: 0 0 45px;
	font-family: var(--tv-font-condensed);
	font-size: var(--tv-fs-h3);
	line-height: 1.4;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-align: center;
	color: var(--tv-color-heading-3);
}

.tv-menu-items {
	display: grid;
	grid-template-columns: 1fr;
	grid-auto-flow: row;
	align-items: start;
	column-gap: var(--tv-col-gap);
}

@media (min-width: 768px) {
	/* Original: colunas de 307px com 45px entre elas */
	.tv-menu-items { column-gap: 45px; }
}

@media (min-width: 768px) {
	.tv-menu-items--cols-2 { grid-template-columns: repeat(2, 1fr); }
	.tv-menu-items--cols-3 { grid-template-columns: repeat(3, 1fr); }
	.tv-menu-items--cols-4 { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1025px) {
	.tv-menu-items--cols-4 { grid-template-columns: repeat(4, 1fr); }
}

.tv-menu-item { margin: 0 0 30px; }
.tv-menu-item--compact { margin-bottom: 12px; }

.tv-menu-item__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1em;
}

.tv-menu-item__title {
	font-family: var(--tv-font-body);
	font-size: 1.1em;
	font-weight: 700;
	line-height: 1.2;
	color: var(--tv-color-text);
}

.tv-menu-item__price {
	flex: 0 0 auto;
	max-width: 45%;
	font-size: 1em;
	line-height: 1.3;
	text-align: right;
}

.tv-menu-item__desc {
	max-width: 85%;
	margin-top: 5px;
	line-height: 1.3;
}

@media (max-width: 767px) {
	.tv-menu-section { margin-bottom: 56px; }
	.tv-menu-section__title { margin-bottom: 28px; }
	.tv-menu-item__desc { max-width: none; }
}

.tv-menu-notes { margin-top: 2em; font-style: italic; }

/* ==========================================================================
   7. Botões e formulários
   ========================================================================== */
.tv-button,
.wp-block-button__link,
.wp-element-button,
input[type="submit"],
button.tv-button {
	display: inline-block;
	padding: 13px 26px;
	border: 2px solid var(--tv-color-muted);
	border-radius: 0;
	background: transparent;
	color: var(--tv-color-muted);
	font-family: var(--tv-font-sans);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 2px;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--tv-transition), color var(--tv-transition), border-color var(--tv-transition);
}

.tv-button:visited { color: var(--tv-color-muted); }

.tv-button:hover,
.tv-button:focus-visible,
.tv-button:active,
.wp-block-button__link:hover,
input[type="submit"]:hover {
	background-color: var(--tv-color-muted);
	color: var(--tv-color-white);
}

.tv-button--solid { background-color: var(--tv-color-muted); color: var(--tv-color-white); }
.tv-button--solid:hover { background-color: var(--tv-color-text); border-color: var(--tv-color-text); }

input[type="text"],
input[type="email"],
input[type="url"],
input[type="tel"],
input[type="search"],
input[type="password"],
input[type="number"],
textarea,
select {
	width: 100%;
	padding: 12px 14px;
	border: 1px solid var(--tv-color-rule);
	border-radius: 0;
	background: #fff;
	color: var(--tv-color-text);
	font: inherit;
	letter-spacing: normal;
}

textarea { min-height: 140px; }

.search-form { display: flex; gap: 8px; max-width: 480px; }

/* ==========================================================================
   8. Rodapé
   ========================================================================== */
.tv-footer {
	padding: 68px 0 131px;
	background-color: var(--tv-color-bg);
	color: var(--tv-color-muted);
}

.tv-site .tv-footer a,
.tv-site .tv-footer a:visited { color: inherit; }
.tv-site .tv-footer a:hover { color: var(--tv-color-text); }

.tv-footer h1,
.tv-footer h2,
.tv-footer h3 { color: var(--tv-color-muted); }

.tv-footer-info { max-width: 489px; }
.tv-footer-info p { margin: 0 0 .65em; }
.tv-footer-info__note { margin-top: 1.65em !important; }

.tv-footer__nav {
	display: flex;
	flex-wrap: wrap;
	gap: .5em 1.5em;
	margin-bottom: 2em;
	font-family: var(--tv-font-display);
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
}

.tv-footer__nav ul { display: flex; flex-wrap: wrap; gap: .5em 1.5em; list-style: none; margin: 0; padding: 0; }
.tv-footer__nav a { color: var(--tv-color-text); }

@media (max-width: 767px) {
	.tv-footer { padding: 48px 0 64px; }
}

/* ==========================================================================
   9. Blog / listagens
   ========================================================================== */
.tv-posts { display: grid; gap: 48px; }

@media (min-width: 768px) {
	.tv-posts { grid-template-columns: repeat(2, 1fr); }
}

.tv-card__media { display: block; margin-bottom: 1em; }
.tv-card__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.tv-card__title { margin-top: 0; }

.tv-meta {
	margin-bottom: .5em;
	font-family: var(--tv-font-sans);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: rgba(28, 28, 28, .5);
}

.tv-single__thumb { margin-bottom: 2em; }

.nav-links {
	display: flex;
	justify-content: space-between;
	gap: 1em;
	margin-top: 3em;
	font-family: var(--tv-font-condensed);
	letter-spacing: 2px;
	text-transform: uppercase;
}

.pagination .nav-links { justify-content: center; }
.page-numbers { padding: .25em .6em; }
.page-numbers.current { color: var(--tv-color-muted); }

.tv-comments { margin-top: 4em; }
.tv-comments__list { list-style: none; padding: 0; }
.tv-comments__list .comment { margin-bottom: 1.5em; }

/* ==========================================================================
   10. Elementor
   ========================================================================== */
/* Páginas do Elementor dentro do container do tema: o Elementor controla o espaçamento interno. */
.tv-elementor-page .tv-page__inner { padding-bottom: 117px; } /* 100px do #page + 17px do bloco, como no original */
@media (max-width: 767px) { .tv-elementor-page .tv-page__inner { padding-bottom: 60px; } }

.tv-entry .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Blocos de texto com o mesmo ritmo vertical do original (Squarespace):
   parágrafos 15px acima/abaixo, H3 33px acima e 6,6px abaixo (as margens colapsam). */
.tv-site .elementor-widget-text-editor,
.tv-site .elementor-widget-text-editor p { font-weight: var(--tv-fw-body); }
.tv-site .elementor-widget-text-editor p { margin: 15px 0; }
.tv-site .elementor-widget-text-editor h3 { margin: 33px 0 6.6px; }
.tv-site .elementor-widget-text-editor .elementor-widget-container > :first-child,
.tv-site .elementor-widget-text-editor > :first-child { margin-top: 0; }
.tv-site .elementor-widget-text-editor .elementor-widget-container > :last-child,
.tv-site .elementor-widget-text-editor > :last-child { margin-bottom: 0; }

/* Títulos de página: H1 (melhor para SEO) com o visual do H2 original */
.tv-site .tv-title .elementor-heading-title,
.tv-site h1.tv-title {
	font-family: var(--tv-font-display);
	font-size: var(--tv-fs-h2);
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--tv-color-text);
}

/* Herda a tipografia do tema quando o kit não define uma */
.elementor-widget-heading h2.elementor-heading-title {
	font-family: var(--tv-font-display);
	letter-spacing: 2px;
	text-transform: uppercase;
	line-height: 1.5;
}

.elementor-widget-heading h3.elementor-heading-title {
	font-family: var(--tv-font-condensed);
	letter-spacing: 2px;
	text-transform: uppercase;
	line-height: 1.4;
}

.elementor-widget-heading h1.elementor-heading-title {
	font-family: var(--tv-font-condensed);
	letter-spacing: .08em;
	text-transform: uppercase;
}

/* Botões do Elementor no estilo do original (botão pequeno "outline" do Squarespace):
   contorno 2px #a29f8a, texto #a29f8a, fundo transparente; no hover/foco o fundo enche de #a29f8a
   e o texto fica branco (transição 0.1s linear). Cobre também :visited/:focus/:active, que o
   Elementor pinta de branco por padrão (o que deixava o texto invisível depois do clique). */
.tv-site .tv-button-outline .elementor-button,
.tv-site .tv-button-outline .elementor-button:link,
.tv-site .tv-button-outline .elementor-button:visited {
	padding: 13px 26px;
	border: 2px solid #a29f8a;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	color: #a29f8a;
	fill: #a29f8a;
	font-family: var(--tv-font-sans);
	font-size: 12px;
	font-weight: 600;
	font-style: normal;
	line-height: 1.2;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color .1s linear, color .1s linear;
}

.tv-site .tv-button-outline .elementor-button:hover,
.tv-site .tv-button-outline .elementor-button:focus-visible,
.tv-site .tv-button-outline .elementor-button:active {
	border-color: #a29f8a;
	background: #a29f8a;
	color: #fff;
	fill: #fff;
}

.tv-site .tv-button-outline .elementor-button:focus:not(:focus-visible) {
	outline: none;
}

.tv-site .tv-button-outline .elementor-button .elementor-button-text { color: inherit; }

/* Cada seção do cardápio é um widget: mantém o espaçamento original (~85px) entre seções */
.elementor-widget-tastevin-menu-section .tv-menu-section,
.elementor-widget-tastevin-menu-section .tv-menu-section:last-child { margin-bottom: 40px; }

@media (max-width: 767px) {
	.elementor-widget-tastevin-menu-section .tv-menu-section,
	.elementor-widget-tastevin-menu-section .tv-menu-section:last-child { margin-bottom: 40px; }
}

/* Imagens recortadas na mesma proporção do original */
.tv-site .tv-crop img { width: 100%; object-fit: cover; object-position: 50% 50%; }
.tv-site .tv-crop--chef img { aspect-ratio: 402 / 778; }
.tv-site .tv-crop--flores img { aspect-ratio: 315 / 105; }

/* Slideshow ocupando a tela na página inicial em Elementor */
.tv-header-transparent .elementor-widget-tastevin-slideshow:first-child .tv-slideshow { margin-top: 0; }

/* ==========================================================================
   11. Impressão
   ========================================================================== */
@media print {
	.tv-header,
	.tv-scrollbar,
	.tv-overlay,
	.tv-burger,
	.tv-slideshow { display: none !important; }
	body { background: #fff; color: #000; }
	.tv-menu-items { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ==========================================================================
   12. Blocos do WordPress
   ========================================================================== */
.tv-entry .wp-block-columns { gap: var(--tv-col-gap); margin-bottom: 1.5em; }
.tv-entry .wp-block-column .wp-block-image img { width: 100%; }
.tv-entry .wp-block-image.aligncenter img { margin-inline: auto; }
.tv-entry .wp-block-heading:first-child { margin-top: 0; }

@media (max-width: 781px) {
	.tv-entry .wp-block-column:empty { display: none; }
}
