/* ==========================================================================
   God Save The Coffee — componentes para Elementor
   Colores, tipografías, botones y anchos se definen en el Kit de Elementor
   (Elementor › Ajustes del sitio). Aquí solo hay lo que Elementor gratuito
   no resuelve desde su panel. Las clases se asignan en cada elemento:
   Avanzado › Clases CSS.
   ========================================================================== */

:root {
	--gstc-burdeos: var(--e-global-color-secondary, #ab2a3e);
	--gstc-burdeos-oscuro: #7f1d2d;
	--gstc-cafe: var(--e-global-color-gstccafe, #724832);
	--gstc-oro: var(--e-global-color-gstcoro, #c99331);
	--gstc-oro-claro: var(--e-global-color-gstcoroclaro, #e9cf98);
	--gstc-espresso: var(--e-global-color-primary, #1f1f22);
	--gstc-suave: #66666e;
	--gstc-crema: #f7f7f8;
	--gstc-papel: #ffffff;
	--gstc-lino: var(--e-global-color-gstclino, #ffffff);
	--gstc-piedra: var(--e-global-color-gstcpiedra, #f2f2f4);
	--gstc-linea: rgba(20, 20, 24, .12);
	--gstc-radio: 20px;
	--gstc-radio-grande: 28px;
	--gstc-cabecera-alto: 80px;
	--gstc-transicion: cubic-bezier(.23, 1, .32, 1);
	--gstc-ease-out: cubic-bezier(.23, 1, .32, 1);
	--gstc-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

html {
	scroll-padding-top: calc(var(--gstc-cabecera-alto) + 1rem);
}

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--gstc-burdeos);
	outline-offset: 3px;
}

.gstc-sobre-oscuro :where(a, button, input, select, textarea):focus-visible {
	outline-color: var(--gstc-oro-claro);
}

/* --- Cabecera (Hello) --------------------------------------------------- */

.site-header.dynamic-header {
	position: sticky;
	top: 0;
	z-index: 100;
	max-width: none;
	padding: .5rem clamp(1rem, 4vw, 3rem);
	background: var(--gstc-lino);
	transition: box-shadow .25s ease, background-color .25s ease;
}

.admin-bar .site-header.dynamic-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

.site-header.is-scrolled {
	background: rgba(255, 255, 255, .92);
	-webkit-backdrop-filter: saturate(1.4) blur(10px);
	backdrop-filter: saturate(1.4) blur(10px);
	box-shadow: 0 1px 0 var(--gstc-linea), 0 10px 30px -22px rgba(20, 20, 24, .4);
}

.site-header .header-inner {
	max-width: 1280px;
	margin: 0 auto;
	min-height: calc(var(--gstc-cabecera-alto) - 1rem);
	align-items: center;
}

.site-header .site-logo img,
.site-header .custom-logo {
	max-height: 68px;
	width: auto;
}

.site-header .site-navigation ul.menu {
	gap: .25rem 1.5rem;
	align-items: center;
}

.site-header .site-navigation ul.menu li a {
	padding: .4rem 0;
	color: var(--gstc-espresso);
	font-size: .9375rem;
	font-weight: 500;
	text-decoration: none;
	border-bottom: 2px solid transparent;
	transition: border-color .2s ease, color .2s ease;
}

.site-header .site-navigation ul.menu li a:hover,
.site-header .site-navigation ul.menu li.current-menu-item > a {
	color: var(--gstc-burdeos);
	border-bottom-color: var(--gstc-oro);
}

/* Elemento del menú con la clase «gstc-menu-cta» (Apariencia › Menús › Clases CSS). */
.site-header .site-navigation ul.menu li.gstc-menu-cta > a {
	background: var(--gstc-burdeos);
	color: #fff;
	border: 0;
	border-radius: 12px;
	padding: .75rem 1.25rem;
	font-weight: 600;
	transition: background-color .2s ease, transform .16s var(--gstc-ease-out);
}

.site-header .site-navigation ul.menu li.gstc-menu-cta > a:hover {
	background: var(--gstc-burdeos-oscuro);
	color: #fff;
}

.site-header .site-navigation ul.menu li.gstc-menu-cta > a:active {
	transform: scale(.97);
}

.site-header .site-navigation-dropdown ul.menu li a {
	font-size: 1.125rem;
	padding: 1rem clamp(1rem, 4vw, 3rem);
	color: var(--gstc-espresso);
}

.site-header .site-navigation-toggle {
	width: 44px;
	height: 44px;
	border-radius: 999px;
	border: 1px solid var(--gstc-linea);
	background: #fff;
}

/* --- Tipografía de apoyo --------------------------------------------------- */

/* Antetítulo estilo ruta: «/ Quiénes somos». */
.elementor-widget.gstc-antetitulo .elementor-heading-title {
	display: inline-flex;
	align-items: baseline;
	gap: .4rem;
	font-family: var(--gstc-sans);
	font-size: .8125rem;
	font-weight: 500;
	letter-spacing: .01em;
	line-height: 1.4;
	color: var(--gstc-suave);
}

.gstc-antetitulo .elementor-heading-title::before {
	content: "/";
	color: var(--gstc-burdeos);
	font-weight: 600;
}

.gstc-sobre-oscuro .gstc-antetitulo .elementor-heading-title::before {
	color: var(--gstc-oro-claro);
}

.gstc-sobre-oscuro .gstc-antetitulo .elementor-heading-title {
	color: var(--gstc-oro-claro);
}

.gstc-caligrafia .elementor-heading-title {
	font-family: "ED Lavonia", cursive;
	font-size: clamp(1.5rem, 2.2vw, 1.85rem);
	font-weight: 400;
	line-height: 1.1;
	text-transform: none;
	letter-spacing: 0;
	color: var(--gstc-oro-claro);
}

.gstc-enlace-flecha a {
	font-weight: 600;
	color: inherit;
	text-decoration: none;
	border-bottom: 1.5px solid var(--gstc-oro);
	padding-bottom: 2px;
}

.gstc-enlace-flecha a::after {
	content: " →";
	display: inline-block;
	transition: transform .2s var(--gstc-transicion);
}

.gstc-enlace-flecha a:hover::after {
	transform: translateX(3px);
}

.gstc-nota {
	font-size: .8125rem;
	opacity: .85;
}

/* --- Botones: respuesta al pulsar ----------------------------------------- */

.elementor-button,
.gstc-form button[type="submit"] {
	transition: background-color .2s ease, color .2s ease, box-shadow .2s ease, transform .16s var(--gstc-ease-out);
}

.elementor-button:active,
.gstc-form button[type="submit"]:active {
	transform: scale(.97);
}

/* --- Botones: variantes (Avanzado › Clases CSS del widget Botón) -------- */

.gstc-btn-claro .elementor-button {
	background-color: var(--gstc-papel) !important;
	color: var(--gstc-espresso) !important;
}

.gstc-btn-claro .elementor-button:hover {
	background-color: var(--gstc-oro-claro) !important;
}

.gstc-btn-contorno .elementor-button {
	background-color: transparent !important;
	color: var(--gstc-espresso) !important;
	box-shadow: inset 0 0 0 1.5px currentColor;
}

.gstc-btn-contorno .elementor-button:hover {
	background-color: var(--gstc-espresso) !important;
	color: var(--gstc-papel) !important;
}

.gstc-sobre-oscuro .gstc-btn-contorno .elementor-button {
	color: var(--gstc-papel) !important;
}

.gstc-sobre-oscuro .gstc-btn-contorno .elementor-button:hover {
	background-color: var(--gstc-papel) !important;
	color: var(--gstc-espresso) !important;
}

/* --- Portada ---------------------------------------------------------------- */

.gstc-hero .elementor-heading-title {
	text-wrap: balance;
}

/* Refuerzo de legibilidad sobre la foto (mármol claro). */
.gstc-hero .elementor-heading-title,
.gstc-hero .elementor-widget-text-editor {
	text-shadow: 0 1px 20px rgba(20, 20, 24, .55);
}

/* --- Imágenes ------------------------------------------------------------- */

.gstc-img-redondeada img {
	border-radius: var(--gstc-radio);
}

.gstc-img-producto img {
	width: 100%;
	aspect-ratio: 5 / 4;
	object-fit: cover;
	border-radius: var(--gstc-radio);
}

.gstc-img-vertical img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: var(--gstc-radio);
}

/* --- Carrusel de categorías ---------------------------------------------- */

.e-con.gstc-carrusel {
	flex-wrap: nowrap !important;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	padding-bottom: 1.25rem !important;
	scrollbar-width: thin;
	scrollbar-color: var(--gstc-oro-claro) transparent;
}

.e-con.gstc-carrusel > .e-con {
	flex: 0 0 clamp(230px, 24vw, 290px) !important;
	width: auto !important;
	scroll-snap-align: start;
}

.gstc-tarjeta {
	position: relative;
}

.gstc-tarjeta .elementor-widget-image img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: var(--gstc-radio);
	transition: transform .6s var(--gstc-transicion);
}

.gstc-tarjeta .elementor-widget-image .elementor-widget-container {
	overflow: hidden;
	border-radius: var(--gstc-radio);
}

.gstc-tarjeta .elementor-heading-title a {
	color: inherit;
}

.gstc-tarjeta .elementor-heading-title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.gstc-tarjeta:hover .elementor-widget-image img {
		transform: scale(1.04);
	}
}

.gstc-tarjeta-texto {
	justify-content: flex-end !important;
	border-radius: var(--gstc-radio);
}

.gstc-tarjeta-texto .gstc-caligrafia {
	margin-bottom: auto !important;
}

/* Foto dentro de una tarjeta de color (clase en el widget Imagen). */
.gstc-tarjeta-foto img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	object-position: 55% 50%;
	border-radius: calc(var(--gstc-radio) * .6);
}

.gstc-flechas {
	display: flex;
	gap: .6rem;
	margin-top: 1.25rem;
}

.gstc-flechas[hidden] {
	display: none;
}

.gstc-flecha {
	width: 48px;
	height: 48px;
	padding: 0;
	border-radius: 999px;
	border: 1.5px solid var(--gstc-espresso);
	background: transparent;
	color: var(--gstc-espresso);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Sin tamaño explícito el SVG colapsa a 0 dentro del botón flex. */
.gstc-flecha svg {
	display: block;
	flex: none;
	width: 20px;
	height: 20px;
}

.gstc-flecha--siguiente {
	background: var(--gstc-espresso);
	color: var(--gstc-papel);
}

.gstc-flecha:hover {
	background: var(--gstc-burdeos);
	border-color: var(--gstc-burdeos);
	color: #fff;
}

.gstc-flecha:disabled {
	opacity: .35;
	cursor: default;
	background: transparent;
	color: var(--gstc-espresso);
	border-color: var(--gstc-espresso);
}

/* --- Rejilla de datos y pasos ---------------------------------------------- */

/* Cada dato es una tarjeta blanca; en bandas oscuras, translúcida. */
.e-con.gstc-dato {
	background: var(--gstc-piedra);
	border-radius: var(--gstc-radio);
	padding: 1.5rem !important;
}

.gstc-sobre-oscuro .e-con.gstc-dato {
	background: rgba(255, 255, 255, .07);
}

/* Sobre una banda gris, los datos vuelven a blanco para separarse. */
.gstc-sobre-gris .e-con.gstc-dato,
.gstc-sobre-gris .e-con.gstc-bento__tarjeta:not(.gstc-sobre-oscuro) {
	background: #fff !important;
}

.gstc-sobre-oro .e-con.gstc-dato {
	background: rgba(255, 255, 255, .35);
}

.gstc-paso {
	border-bottom: 1px solid var(--gstc-linea);
	padding-block: 1.25rem !important;
}

.gstc-sobre-oscuro .gstc-paso {
	border-bottom-color: rgba(255, 255, 255, .16);
}

.elementor-widget.gstc-paso__num .elementor-heading-title {
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: #f4e1e4;
	color: var(--gstc-burdeos);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gstc-sans);
	font-size: .9375rem;
	font-weight: 600;
}

.gstc-sobre-oscuro .elementor-widget.gstc-paso__num .elementor-heading-title {
	background: rgba(233, 207, 152, .16);
}

/* --- Títulos de tarjeta (h3/h4) en sans, como pide el estilo ------------- */
/* El widget Título usa por defecto la tipografía global «Titulares»; h3 y h4
   pasan a sans compacta. Una tipografía elegida en el panel sigue mandando. */

.elementor-widget-heading h3.elementor-heading-title,
.elementor-widget-heading h4.elementor-heading-title {
	font-family: var(--gstc-sans);
	font-weight: 600;
	letter-spacing: -.01em;
}

.elementor-widget-heading h3.elementor-heading-title {
	font-size: 1.3125rem;
	line-height: 1.25;
}

.elementor-widget-heading h4.elementor-heading-title {
	font-size: 1.0625rem;
	line-height: 1.35;
}

/* --- Cifras (pastillas bajo la portada) ----------------------------------- */

.e-con.gstc-cifras > .e-con.gstc-cifra {
	flex: 1 1 220px;
	width: auto !important;
}

.e-con.gstc-cifra {
	flex-wrap: nowrap !important;
}

.e-con.gstc-cifra > .elementor-widget.gstc-cifra__valor {
	flex: none;
	width: auto;
}

.e-con.gstc-cifra > .elementor-widget.gstc-cifra__texto {
	flex: 1 1 auto;
	width: auto;
	min-width: 0;
}

.elementor-widget.gstc-cifra__valor .elementor-heading-title {
	font-family: "The Seasons", Georgia, serif;
	font-size: clamp(1.75rem, 2.6vw, 2.25rem);
	line-height: 1;
	white-space: nowrap;
}

.elementor-widget.gstc-cifra__texto {
	border-left: 1px solid rgba(20, 20, 24, .18);
	padding-left: 18px;
	font-size: .8125rem;
	line-height: 1.4;
}

.gstc-cifra__texto p {
	margin: 0;
}

/* --- Cuadrícula bento ------------------------------------------------------ */
/* Tarjeta normal = 1 parte, ancha = 2 partes. En tablet van de dos en dos y en
   móvil a una columna. */

.e-con.gstc-bento > .e-con.gstc-bento__tarjeta {
	flex: 1 1 0;
	width: auto !important;
	min-height: 260px;
	min-width: 0;
}

.e-con.gstc-bento + .e-con.gstc-bento > .e-con.gstc-bento__tarjeta {
	min-height: 200px;
}

.e-con.gstc-bento > .e-con.gstc-bento__tarjeta--ancha {
	flex-grow: 2;
}

.gstc-bento__tarjeta > .elementor-widget-text-editor:last-child,
.gstc-bento__tarjeta .gstc-bento__texto {
	margin-top: auto;
}

.e-con.gstc-bento__cabeza {
	flex-wrap: nowrap !important;
}

.gstc-bento__cabeza > .elementor-widget-heading {
	flex: 1 1 auto;
	width: auto;
	min-width: 0;
	max-width: 15em;
}

.elementor-widget.gstc-bento__texto {
	font-size: .875rem;
	line-height: 1.5;
	max-width: 34em;
}

.gstc-bento__texto p {
	margin: 0;
}

.gstc-bento__img img {
	width: 100%;
	height: 140px;
	object-fit: cover;
	border-radius: 14px;
}

.gstc-bento__tarjeta--ancha .gstc-bento__col {
	flex: 1 1 0;
	width: auto !important;
}

.gstc-bento__tarjeta--ancha .gstc-bento__img img {
	height: 100%;
	min-height: 220px;
	object-fit: contain;
}

@media (max-width: 1024px) {
	.e-con.gstc-bento > .e-con.gstc-bento__tarjeta {
		flex: 1 1 calc(50% - 16px);
	}

	.e-con.gstc-bento > .e-con.gstc-bento__tarjeta--ancha {
		flex-basis: 100%;
	}
}

@media (max-width: 767px) {
	.e-con.gstc-bento > .e-con.gstc-bento__tarjeta {
		flex-basis: 100%;
		min-height: 0;
	}
}

/* Chip de icono (widget Icono con la clase gstc-chip). */
.elementor-widget.gstc-chip {
	flex: none;
	width: auto !important;
}

.elementor-widget.gstc-chip .elementor-icon {
	display: inline-flex;
}

/* --- Banda de ruta --------------------------------------------------------- */

.e-con.gstc-banda-ruta > .gstc-banda-ruta__principal {
	flex: 2 1 0;
	width: auto !important;
}

.e-con.gstc-banda-ruta > .gstc-banda-ruta__lateral {
	flex: 1 1 0;
	width: auto !important;
}

.gstc-ruta {
	min-width: 240px;
	font-weight: 600;
	color: var(--gstc-espresso);
}

.gstc-ruta__linea {
	position: relative;
	display: block;
	height: 10px;
	margin: 0 5px .6rem;
	background: linear-gradient(var(--gstc-burdeos), var(--gstc-burdeos)) center / 100% 1.5px no-repeat;
}

.gstc-ruta__linea::before,
.gstc-ruta__linea::after {
	content: "";
	position: absolute;
	top: 0;
	width: 10px;
	height: 10px;
	border-radius: 999px;
	background: var(--gstc-burdeos);
}

.gstc-ruta__linea::before {
	left: -5px;
}

.gstc-ruta__linea::after {
	right: -5px;
}

.gstc-ruta__lugares {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	font-size: .9375rem;
}

.elementor-widget.gstc-pastilla .elementor-heading-title {
	display: inline-block;
	background: #fff;
	border-radius: 12px;
	padding: .8rem 1.1rem;
	font-family: var(--gstc-sans);
	font-size: .9375rem;
	font-weight: 600;
	line-height: 1.3;
}

.gstc-banda-ruta__lateral .elementor-widget-text-editor {
	font-size: .9375rem;
}

/* --- Tarjetas del carrusel: fondo blanco como el resto de tarjetas ------- */

.e-con.gstc-carrusel > .e-con.gstc-tarjeta:not(.gstc-tarjeta-texto) {
	background: var(--gstc-piedra);
	border-radius: var(--gstc-radio);
	padding: 10px 10px 20px !important;
}

.gstc-carrusel > .gstc-tarjeta:not(.gstc-tarjeta-texto) > .elementor-widget:not(.elementor-widget-image) {
	padding-inline: 8px;
}

.gstc-carrusel .gstc-tarjeta .elementor-widget-image img {
	aspect-ratio: 5 / 4;
	border-radius: 14px;
}

.gstc-carrusel .gstc-tarjeta .elementor-widget-text-editor {
	font-size: .875rem;
}

/* --- Foto con sello circular -------------------------------------------- */

.gstc-foto-sello {
	position: relative;
}

.gstc-sello {
	position: absolute !important;
	top: -2rem;
	right: -1rem;
	width: 9.5rem !important;
	z-index: 2;
}

.elementor-widget.gstc-sello .elementor-heading-title {
	width: 9.5rem;
	height: 9.5rem;
	border-radius: 999px;
	background: var(--gstc-oro);
	color: var(--gstc-espresso);
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 1rem;
	font-family: var(--gstc-sans);
	font-size: .9375rem;
	font-weight: 600;
	line-height: 1.25;
	box-shadow: 0 18px 40px -24px rgba(20, 20, 24, .35);
}

@media (max-width: 767px) {
	.gstc-sello {
		top: 1rem;
		right: 1rem;
		width: 7.5rem !important;
	}

	.elementor-widget.gstc-sello .elementor-heading-title {
		width: 7.5rem;
		height: 7.5rem;
		font-size: .8125rem;
	}
}

/* --- Listas con viñeta de marca (widget Editor de texto) ------------------ */

.gstc-lista ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.gstc-lista li {
	padding: .6rem 0 .6rem 1.75rem;
	border-bottom: 1px solid var(--gstc-linea);
	position: relative;
}

.gstc-lista li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1.15rem;
	width: 10px;
	height: 10px;
	border-radius: 999px;
	background: var(--gstc-oro);
}

.gstc-sobre-oscuro .gstc-lista li {
	border-bottom-color: rgba(255, 255, 255, .2);
}

/* --- Índice de anclas (pastillas) --------------------------------------- */

.gstc-indice p {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0;
}

.gstc-indice a {
	display: inline-block;
	padding: .55rem 1.1rem;
	border-radius: 999px;
	border: 1px solid var(--gstc-linea);
	background: var(--gstc-papel);
	color: var(--gstc-espresso) !important;
	text-decoration: none;
	font-size: .9375rem;
	font-weight: 500;
}

.gstc-indice a:hover {
	border-color: var(--gstc-burdeos);
	color: var(--gstc-burdeos) !important;
}

/* --- Aviso de contenido pendiente ----------------------------------------- */

.gstc-pendiente .elementor-widget-container,
.gstc-pendiente.elementor-widget-text-editor {
	border: 1.5px dashed var(--gstc-oro);
	background: #fdf8ec;
	color: #5b4300;
	border-radius: 10px;
	padding: 1rem 1.25rem;
	font-size: .9375rem;
}

/* --- Sobre fondo oscuro ---------------------------------------------------- */
/* Texto claro por defecto en bandas oscuras. Un color elegido en el panel de
   Elementor para un widget concreto sigue teniendo prioridad. */

.e-con.gstc-sobre-oscuro .elementor-heading-title,
.e-con.gstc-sobre-oscuro .elementor-widget-text-editor,
.e-con.gstc-sobre-oscuro .elementor-widget-shortcode {
	color: var(--gstc-papel);
}

.e-con.gstc-sobre-oscuro .elementor-widget-text-editor p {
	color: inherit;
}

.gstc-sobre-oscuro a:not(.elementor-button) {
	color: var(--gstc-oro-claro);
}

/* Sobre burdeos el oro claro se queda corto de contraste en texto pequeño. */
.gstc-sobre-burdeos a:not(.elementor-button),
.gstc-sobre-burdeos .gstc-antetitulo .elementor-heading-title::before {
	color: var(--gstc-papel);
}

/* --- Sobre fondo oro --------------------------------------------------------- */
/* El blanco sobre oro no llega al contraste mínimo: en bandas oro (clase
   gstc-sobre-oro en el contenedor) el texto pasa a espresso. */

.e-con.gstc-sobre-oro .elementor-heading-title,
.e-con.gstc-sobre-oro .elementor-widget-text-editor,
.e-con.gstc-sobre-oro .elementor-widget-shortcode,
.gstc-sobre-oro .gstc-antetitulo .elementor-heading-title,
.gstc-sobre-oro a:not(.elementor-button) {
	color: var(--gstc-espresso);
}

.e-con.gstc-sobre-oro .elementor-widget-text-editor p {
	color: inherit;
}

.gstc-sobre-oro .gstc-antetitulo .elementor-heading-title::before {
	color: var(--gstc-espresso);
}

/* --- Datos de contacto (shortcode del plugin) -------------------------- */

.gstc-datos-contacto {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: .6rem;
}

.gstc-datos-contacto a {
	color: inherit;
}

.gstc-datos-contacto span {
	display: block;
	font-size: .75rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	opacity: .7;
}

/* --- Formularios (plugin GSTC Core) ------------------------------------ */

.gstc-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.1rem 1.25rem;
}

.gstc-form .gstc-campo--ancho,
.gstc-form .gstc-form__pie,
.gstc-form .gstc-aviso {
	grid-column: 1 / -1;
}

@media (max-width: 640px) {
	.gstc-form {
		grid-template-columns: 1fr;
	}
}

.gstc-campo {
	display: flex;
	flex-direction: column;
	gap: .4rem;
	margin: 0;
	min-width: 0;
	border: 0;
	padding: 0;
}

.gstc-campo label,
.gstc-campo legend {
	font-size: .875rem;
	font-weight: 600;
}

.gstc-campo .gstc-opcional {
	font-weight: 400;
	opacity: .75;
}

.gstc-campo input[type="text"],
.gstc-campo input[type="email"],
.gstc-campo input[type="tel"],
.gstc-campo select,
.gstc-campo textarea {
	width: 100%;
	font: inherit;
	font-size: 1rem;
	color: var(--gstc-espresso);
	background: #fff;
	border: 1px solid #cfcfd6;
	border-radius: 12px;
	padding: .8rem 1rem;
	min-height: 48px;
}

.gstc-campo textarea {
	min-height: 140px;
	resize: vertical;
}

.gstc-campo :is(input, select, textarea):focus {
	border-color: var(--gstc-burdeos);
	box-shadow: 0 0 0 3px rgba(171, 42, 62, .18);
	outline: none;
}

.gstc-campo[data-invalido] :is(input, select, textarea) {
	border-color: var(--gstc-burdeos);
}

.gstc-campo__error {
	color: var(--gstc-burdeos-oscuro);
	font-size: .875rem;
	font-weight: 500;
	margin: 0;
}

.gstc-campo__error:empty {
	display: none;
}

.gstc-opciones {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
}

.gstc-opcion {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .55rem .9rem;
	border: 1px solid #cfcfd6;
	border-radius: 999px;
	font-size: .9375rem;
	cursor: pointer;
	background: #fff;
}

.gstc-opcion input,
.gstc-check input {
	accent-color: var(--gstc-burdeos);
	width: 18px;
	height: 18px;
}

.gstc-check {
	display: flex;
	gap: .65rem;
	align-items: flex-start;
	font-size: .875rem;
	line-height: 1.5;
}

.gstc-form__pie {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.5rem;
	justify-content: space-between;
}

.gstc-form__info {
	font-size: .8125rem;
	opacity: .8;
	max-width: 52ch;
	margin: 0;
}

.gstc-form button[type="submit"] {
	cursor: pointer;
	border: 0;
	border-radius: 12px;
	padding: .9rem 1.5rem;
	font: inherit;
	font-weight: 600;
	background: var(--gstc-burdeos);
	color: #fff;
}

.gstc-form button[type="submit"]:hover {
	background: var(--gstc-burdeos-oscuro);
}

.gstc-hp {
	position: absolute !important;
	left: -10000px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.gstc-aviso {
	border-radius: 12px;
	padding: 1rem 1.25rem;
	font-size: .9375rem;
	margin: 0;
}

.gstc-aviso--ok {
	background: #eef5ea;
	border: 1px solid #9cbf8c;
	color: #24401a;
}

.gstc-aviso--error {
	background: #fbecee;
	border: 1px solid #e3a1ab;
	color: var(--gstc-burdeos-oscuro);
}

.gstc-aviso strong {
	display: block;
	margin-bottom: .2rem;
}

.gstc-sobre-oscuro .gstc-campo :is(input, select, textarea) {
	background: rgba(255, 255, 255, .06);
	border-color: rgba(255, 255, 255, .35);
	color: var(--gstc-papel);
}

.gstc-sobre-oscuro .gstc-campo select option {
	color: var(--gstc-espresso);
}

.gstc-sobre-oscuro .gstc-campo :is(input, select, textarea):focus {
	border-color: var(--gstc-oro-claro);
	box-shadow: 0 0 0 3px rgba(233, 207, 152, .25);
}

.gstc-sobre-oscuro .gstc-campo__error {
	color: var(--gstc-oro-claro);
}

.gstc-sobre-oscuro .gstc-opcion {
	background: transparent;
	border-color: rgba(255, 255, 255, .35);
}

.gstc-sobre-oscuro .gstc-form button[type="submit"]:hover {
	background: #c7354c;
}

/* --- Pie de página ------------------------------------------------------ */

.gstc-pie ul {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: .45rem;
}

.gstc-pie a {
	color: var(--gstc-espresso);
	text-decoration: none;
}

.gstc-pie a:hover {
	color: var(--gstc-burdeos);
	text-decoration: underline;
}

.gstc-pie .elementor-widget-image img {
	max-width: 120px;
	height: auto;
}

.gstc-pie__legal ul {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1.5rem;
}

.gstc-pie__legal p {
	margin: 0;
}

/* --- Menú: enlace complementario a la tienda ---------------------------- */

.site-header .site-navigation ul.menu li.gstc-menu-tienda > a {
	color: var(--gstc-suave);
	font-weight: 500;
}

/* --- Áreas de negocio (tres tarjetas con el mismo peso) ----------------- */

.gstc-area__img img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 14px;
	background: #fff;
}

/* Las fotos de producto sobre blanco no se recortan. */
.gstc-area__img img[src*="cafetera-"] {
	object-fit: contain;
	padding: 12px;
}

.gstc-area .elementor-heading-title a {
	color: inherit;
}

/* --- Fotos con pie (widget Imagen con leyenda) -------------------------- */

.elementor-widget-image.gstc-foto figure {
	margin: 0;
}

.elementor-widget-image.gstc-foto .widget-image-caption {
	margin-top: .6rem;
	font-size: .8125rem;
	line-height: 1.4;
	color: var(--gstc-suave);
	font-style: normal;
	text-align: left;
}

/* --- Ubicaciones (oficinas y nave) -------------------------------------- */

.e-con.gstc-ubicaciones > .e-con.gstc-ubicacion {
	flex: 1 1 0;
	width: auto !important;
	min-width: 0;
}

.gstc-ubicacion .gstc-foto img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	border-radius: 16px;
}

/* Varias fotos de una sede: rejilla de dos en dos. */
.e-con.gstc-ubicacion__fotos > .elementor-widget {
	flex: 1 1 calc(50% - 6px);
	min-width: 0;
}

@media (max-width: 767px) {
	.e-con.gstc-ubicacion__fotos > .elementor-widget {
		flex-basis: 100%;
	}
}

.gstc-ubicacion__fotos .gstc-foto img {
	aspect-ratio: 4 / 3;
}

.gstc-ubicacion .gstc-lista li {
	padding-block: .45rem;
}

/* --- Galería de producto (fotos cuadradas sobre blanco) ----------------- */

/* Cada tarjeta: logo de la marca, foto del equipo y nombre. */
.e-con.gstc-galeria > .e-con.gstc-producto {
	flex: 0 0 calc((100% - 48px) / 4);
	width: auto !important;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.gstc-producto__img img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: contain;
}

.elementor-widget.gstc-producto__nombre {
	font-size: .8125rem;
	line-height: 1.35;
	color: var(--gstc-espresso);
}

.gstc-producto__nombre p {
	margin: 0;
}

@media (hover: hover) and (pointer: fine) {
	.e-con.gstc-producto:hover {
		border-color: rgba(171, 42, 62, .35) !important;
		box-shadow: 0 12px 28px -20px rgba(20, 20, 24, .35);
	}
}

@media (max-width: 1024px) {
	.e-con.gstc-galeria > .e-con.gstc-producto {
		flex-basis: calc((100% - 32px) / 3);
	}
}

@media (max-width: 767px) {
	.e-con.gstc-galeria > .e-con.gstc-producto {
		flex-basis: calc((100% - 16px) / 2);
	}
}

/* --- Logos de marca ---------------------------------------------------------- */
/* Logos recortados al contorno, en negro sobre transparente. El ancho de cada
   uno está en su widget (Estilo › Ancho), calculado para que todos ocupen la
   misma superficie visual; aquí solo se mantiene la proporción. */

.elementor-widget.gstc-logo {
	width: auto;
	max-width: 100%;
}

.elementor-widget.gstc-logo img {
	display: block;
	height: auto;
	max-width: 100%;
}

.e-con.gstc-logos > .elementor-widget.gstc-logo {
	display: flex;
	align-items: center;
	min-height: 52px;
	background: #fff;
	border: 1px solid var(--gstc-linea);
	border-radius: 12px;
	padding: 8px 16px;
}

/* Franja en movimiento: la pista contiene los logos dos veces y se desplaza
   la mitad de su ancho para que el bucle sea continuo. Se pausa al pasar el
   ratón o al enfocar con el teclado. */
.e-con.gstc-logos.is-desplazando {
	display: block !important;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.gstc-logos__pista {
	display: flex;
	align-items: center;
	gap: 12px;
	width: max-content;
	animation: gstc-desplazar var(--gstc-duracion, 30s) linear infinite;
}

.gstc-logos__pista > .elementor-widget.gstc-logo {
	flex: none;
	display: flex;
	align-items: center;
	min-height: 52px;
	background: #fff;
	border: 1px solid var(--gstc-linea);
	border-radius: 12px;
	padding: 8px 16px;
}

.gstc-logos.is-desplazando:hover .gstc-logos__pista,
.gstc-logos.is-desplazando:focus-within .gstc-logos__pista {
	animation-play-state: paused;
}

@keyframes gstc-desplazar {
	to {
		transform: translateX(calc(-50% - 6px));
	}
}

/* Insignias redondas de las marcas del portfolio. */
.elementor-widget.gstc-insignia {
	width: auto;
	flex: none;
}

.elementor-widget.gstc-insignia img {
	display: block;
	height: auto;
	filter: drop-shadow(0 6px 14px rgba(20, 20, 24, .14));
}

.gstc-centrado .e-con.gstc-insignias,
.gstc-centrado .e-con.gstc-logos:not(.is-desplazando) {
	justify-content: center;
}

.gstc-producto__logo {
	min-height: 30px;
	display: flex;
	align-items: center;
}

.gstc-marca__logo {
	min-height: 56px;
	display: flex;
	align-items: center;
}

/* Tarjetas de marca: tres por fila, todas iguales. */
.e-con.gstc-bento > .e-con.gstc-marca--logo {
	flex: 1 1 calc((100% - 32px) / 3);
	min-height: 0;
}

@media (max-width: 767px) {
	.e-con.gstc-bento > .e-con.gstc-marca--logo {
		flex-basis: calc((100% - 16px) / 2);
	}
}

/* --- Secciones centradas (clase gstc-centrado en la sección) ------------ */
/* Encabezado centrado; el contenido de las tarjetas sigue alineado a la
   izquierda para leerse bien. */

.gstc-centrado > .elementor-widget-heading,
.gstc-centrado > .e-con-inner > .elementor-widget-heading,
.gstc-centrado > .elementor-widget-text-editor,
.gstc-centrado > .e-con-inner > .elementor-widget-text-editor {
	text-align: center;
	margin-inline: auto;
	max-width: 46rem;
}

.gstc-centrado > .elementor-widget-heading.gstc-antetitulo,
.gstc-centrado > .e-con-inner > .elementor-widget-heading.gstc-antetitulo {
	display: flex;
	justify-content: center;
}

.gstc-centrado > .e-con:has(> .elementor-widget-button),
.gstc-centrado > .e-con-inner > .e-con:has(> .elementor-widget-button) {
	justify-content: center;
}

/* --- Animación de entrada (clase gstc-revelar) ------------------------- */

@media (prefers-reduced-motion: no-preference) {
	.gstc-js body:not(.elementor-editor-active) .gstc-revelar {
		opacity: 0;
		transform: translateY(18px);
		transition: opacity .8s var(--gstc-transicion), transform .8s var(--gstc-transicion);
	}

	.gstc-js body:not(.elementor-editor-active) .gstc-revelar.is-visible {
		opacity: 1;
		transform: none;
	}

	/* Las tarjetas bento entran escalonadas (60 ms entre una y otra). */
	.gstc-js body:not(.elementor-editor-active) .gstc-revelar .gstc-bento__tarjeta {
		opacity: 0;
		transform: translateY(12px);
		transition: opacity .5s ease-out, transform .5s var(--gstc-ease-out);
	}

	.gstc-js body:not(.elementor-editor-active) .gstc-revelar.is-visible .gstc-bento__tarjeta {
		opacity: 1;
		transform: none;
	}

	.gstc-revelar.is-visible .gstc-bento__tarjeta:nth-child(2) { transition-delay: 60ms; }
	.gstc-revelar.is-visible .gstc-bento__tarjeta:nth-child(3) { transition-delay: 120ms; }
	.gstc-revelar.is-visible .gstc-bento + .gstc-bento .gstc-bento__tarjeta:nth-child(1) { transition-delay: 180ms; }
	.gstc-revelar.is-visible .gstc-bento + .gstc-bento .gstc-bento__tarjeta:nth-child(2) { transition-delay: 240ms; }
	.gstc-revelar.is-visible .gstc-bento + .gstc-bento .gstc-bento__tarjeta:nth-child(3) { transition-delay: 300ms; }
}

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