/* =========================================================================
   PlusMetal Theme — main.css
   Reescritura semántica de la maqueta (sin Tailwind). Tokens de marca.
   ========================================================================= */

:root {
	--plus-dark: #1a1c1f;
	--plus-red: #d60a12;
	--plus-red-dark: #b50910;
	--plus-blue: #1a4f88;
	--plus-blue-dark: #153d6b;
	--plus-white: #ffffff;
	--plus-gray-light: #f9fafb;
	--plus-gray: #d1d5db;
	--plus-gray-text: #6b7280;
	--plus-gradient: linear-gradient(180deg, #df0917 0%, #000000 49.7298%, #0c65a9 100%);
	--plus-gradient-h: linear-gradient(90deg, #df0917 0%, #000000 49%, #0c65a9 100%);
	--plus-container: 1280px;
	--plus-header-h: 96px;
	--plus-header-h-scrolled: 64px;
}

/* ----- Base ----- */
*,
*::before,
*::after { box-sizing: border-box; }

body {
	margin: 0;
	font-family: "Raleway", sans-serif;
	font-size: 1.125rem;
	line-height: 1.6;
	color: var(--plus-dark);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
	font-family: "Raleway", sans-serif;
	color: var(--plus-dark);
	font-weight: 700;
	margin: 0 0 0.5em;
	line-height: 1.15;
}

p { margin: 0 0 10px; }

a {
	color: var(--plus-dark);
	font-weight: 700;
	text-decoration: none;
	transition: color 0.3s ease;
}
a:hover { color: var(--plus-blue); }

img { max-width: 100%; height: auto; display: block; }

/* ----- Layout helpers ----- */
.plus-container {
	width: 100%;
	max-width: var(--plus-container);
	margin-inline: auto;
	padding-inline: 1.25rem;
}

.plus-section { padding-block: 2.5rem; }
.plus-section-sm { padding-block: 1.5rem; }

@media (min-width: 1024px) {
	.plus-section { padding-block: 5rem; }
	.plus-section-sm { padding-block: 2.5rem; }
}

.plus-bg-gray { background: var(--plus-gray-light); }
.plus-bg-blue { background: var(--plus-blue); color: #fff; }

.plus-section-title {
	font-size: clamp(1.5rem, 3vw, 3rem);
	margin-bottom: 1.5rem;
}

/* Barra degradada vertical */
.gradient-bar {
	width: 4px;
	min-height: 70px;
	background: var(--plus-gradient);
	display: block;
	border-radius: 2px;
	flex-shrink: 0;
}

/* Título gigante (ex .text-biggest) */
.plus-giant {
	font-size: max(12vw, 7rem);
	line-height: 1;
}

/* ----- Botones ----- */
.plus-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	padding: 0.75rem 1.75rem;
	font-size: 0.95rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
	border: 2px solid transparent;
	transition: all 0.3s ease;
	color: #fff;
}
.plus-btn-primary { background: var(--plus-red); border-color: var(--plus-red); color: #fff; }
.plus-btn-primary:hover { background: var(--plus-red-dark); border-color: var(--plus-red-dark); color: #fff; }

.plus-btn-outline { background: transparent; border-color: var(--plus-blue); color: var(--plus-blue); }
.plus-btn-outline:hover { background: var(--plus-blue); color: #fff; }

.plus-btn-outline-white { background: transparent; border-color: #fff; color: #fff; }
.plus-btn-outline-white:hover { background: var(--plus-red); border-color: var(--plus-red); color: #fff; }

.plus-btn-dark { background: var(--plus-dark); border-color: var(--plus-dark); color: #fff; }
.plus-btn-dark:hover { background: var(--plus-blue); border-color: var(--plus-blue); color: #fff; }

/* CTA con flecha */
.link-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	font-weight: 600;
	color: var(--plus-blue);
}
.link-cta svg { transition: transform 0.3s ease; flex-shrink: 0; }
.link-cta:hover { color: var(--plus-red); }
.link-cta:hover svg { transform: translateX(5px); }

/* =========================================================================
   HEADER
   ========================================================================= */
.plus-header {
	width: 100%;
	height: var(--plus-header-h);
	background: #fff;
	z-index: 50;
	transition: height 0.3s ease, box-shadow 0.3s ease;
}
.plus-header.is-scrolled {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: var(--plus-header-h-scrolled);
	box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
/* placeholder para evitar salto cuando el header pasa a fixed */
.plus-header-spacer { display: none; }
.plus-header.is-scrolled + .plus-header-spacer { display: block; height: var(--plus-header-h); }

.plus-nav {
	position: relative;
	display: flex;
	justify-content: space-between;
	align-items: center;
	height: 100%;
	padding-inline: 1rem;
	max-width: 1536px;
	margin-inline: auto;
}
.plus-logo-img,
.plus-header .custom-logo {
	height: auto;
	max-height: 64px;
	width: auto;
	transition: max-height 0.3s ease;
}
.plus-header.is-scrolled .plus-logo-img,
.plus-header.is-scrolled .custom-logo { max-height: 44px; }

/* menú */
.plus-menu-toggle { display: none; }
.plus-menu-label { display: none; cursor: pointer; padding: 0.5rem; }

.plus-menu {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 2rem;
	font-size: 1.125rem;
}
.plus-menu ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: row;
	gap: 2rem;
}
.plus-menu a { font-weight: 700; }

.plus-social {
	display: flex;
	align-items: center;
	gap: 1rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.plus-social-item { margin: 0; }
.plus-social a { display: inline-flex; color: var(--plus-dark); }
.plus-social a:hover { color: var(--plus-red); }
.plus-social svg { width: 22px; height: 22px; }

@media (max-width: 1023px) {
	.plus-menu-label { display: block; }
	.plus-menu {
		position: absolute;
		top: 100%;
		left: 0;
		width: 100%;
		background: #fff;
		flex-direction: column;
		align-items: flex-start;
		gap: 1rem;
		padding: 1rem;
		box-shadow: 0 8px 12px -4px rgba(0, 0, 0, 0.1);
		display: none;
		z-index: 40;
	}
	.plus-menu ul { flex-direction: column; gap: 1rem; }
	.plus-menu ul.plus-social { flex-direction: row; }
	.plus-menu-toggle:checked ~ .plus-menu { display: flex; }
}

/* =========================================================================
   HERO SLIDER
   ========================================================================= */
.plus-hero { width: 100%; height: 100vh; }
.plus-hero .swiper-slide {
	position: relative;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}
.plus-hero-overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.55);
}
.plus-hero-inner {
	position: relative;
	height: 100%;
	display: flex;
	align-items: center;
	padding-inline: 1.5rem;
}
@media (min-width: 1024px) { .plus-hero-inner { padding-inline: 5rem; } }
.plus-hero-content {
	display: flex;
	gap: 1.5rem;
	align-items: stretch;
	max-width: 42rem;
}
.plus-hero-text { display: flex; flex-direction: column; justify-content: center; gap: 1rem; }
.plus-hero-text h2 {
	color: #fff;
	font-size: clamp(2.25rem, 5vw, 3.75rem);
	line-height: 1.1;
	font-weight: 300;
	margin: 0;
}
.plus-hero-text h2 strong { font-weight: 800; }
.plus-hero-text p {
	color: rgba(255, 255, 255, 0.8);
	font-weight: 300;
	font-size: 1.125rem;
	margin: 0;
}

/* =========================================================================
   ABOUT (home)
   ========================================================================= */
.plus-about { background: var(--plus-gray-light); padding-block: 2.75rem; }
.plus-about-inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}
.plus-about-giant {
	font-size: clamp(3rem, 12vw, 8rem);
	margin: 0;
}
.plus-about-text {
	font-size: 1.25rem;
	font-weight: 300;
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}
@media (min-width: 1024px) {
	.plus-about { padding-block: 6rem; }
	.plus-about-inner { grid-template-columns: 2fr 1fr; align-items: center; }
}

/* =========================================================================
   TEXTO EN COLUMNAS
   ========================================================================= */
.plus-textcols-inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem 2.5rem;
}
.plus-textcols-title {
	font-size: 1.875rem;
	text-transform: uppercase;
	font-weight: 700;
	margin-bottom: 0.75rem;
}
.plus-textcols-body p { margin-bottom: 1rem; }
@media (min-width: 1024px) {
	.plus-textcols-inner { grid-template-columns: 1fr 2fr; }
	.plus-textcols-body { column-count: 2; column-gap: 2.5rem; }
}

/* =========================================================================
   MEDIA + TEXTO (imagen + texto alternando, con lightbox)
   ========================================================================= */
.plus-mediatext { padding-block: 2.5rem; }
.plus-mediatext-inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: 2.5rem;
	align-items: center;
}
.plus-mediatext-media { display: block; overflow: hidden; }
.plus-mediatext-img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: 0.5rem;
	box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.plus-mediatext-media a { cursor: zoom-in; display: block; }
.plus-mediatext-title {
	font-size: 1.25rem;
	font-weight: 700;
	margin-bottom: 1rem;
}
.plus-mediatext-body p { margin-bottom: 0.75rem; }

@media (min-width: 1024px) {
	.plus-mediatext { padding-block: 4rem; }
	.plus-mediatext-inner { grid-template-columns: 1fr 1fr; gap: 4rem; }
	.plus-mediatext-title { font-size: 1.5rem; margin-bottom: 1.5rem; }
	/* imagen a la derecha: el texto (DOM: media primero) se ubica antes */
	.is-img-derecha .plus-mediatext-media { order: 2; }
}

/* =========================================================================
   SOLUCIONES GRID
   ========================================================================= */
/* Soluciones (grid): a todo el ancho (como la maqueta, max-w-9xl + px-5) */
.plus-solutions.is-grid > .plus-container { max-width: none; }
.plus-solutions-head { margin-bottom: 1rem; }
.plus-solutions-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem 2.75rem;
}
@media (min-width: 1024px) { .plus-solutions-grid { grid-template-columns: repeat(3, 1fr); } }

.link-sol { display: flex; flex-direction: column; }
.link-sol .plus-sol-imgwrap { overflow: hidden; }
.link-sol img { width: 100%; object-fit: cover; transition: transform 0.3s ease; }
.link-sol:hover img { transform: scale(1.05); }
.link-sol-label {
	display: flex;
	align-items: center;
	justify-content: space-between;
	text-transform: uppercase;
	font-weight: 700;
	font-size: 1.125rem;
	padding-block: 1.25rem;
	color: var(--plus-dark);
	transition: color 0.3s ease;
}
@media (min-width: 1024px) { .link-sol-label { font-size: 1.5rem; } }
.link-sol-label svg { transition: transform 0.3s ease; flex-shrink: 0; }
.link-sol:hover .link-sol-label { color: var(--plus-blue); }
.link-sol:hover .link-sol-label svg { transform: translateX(5px); }

/* ----- Soluciones: layouts "filas" y "2 columnas" (tarjeta media+texto) ----- */
.plus-solutions-list { display: flex; flex-direction: column; gap: 2.5rem; }

.plus-sol-card { display: flex; flex-direction: column; gap: 1.25rem; }
.plus-sol-card-media { display: block; overflow: hidden; }
.plus-sol-card-img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.plus-sol-card-media:hover .plus-sol-card-img { transform: scale(1.05); }
.plus-sol-card-body { display: flex; flex-direction: column; align-items: flex-start; }
.plus-sol-card-title {
	font-size: 1.25rem;
	text-transform: uppercase;
	font-weight: 700;
	margin: 0.75rem 0;
}
.plus-sol-card-desc { margin: 0 0 1.25rem; }
.plus-sol-actions { display: flex; flex-direction: column-reverse; gap: 0.75rem; width: 100%; }
.plus-sol-actions .plus-btn { justify-content: flex-start; }

@media (min-width: 1024px) {
	.plus-sol-card-title { font-size: 1.875rem; }
	.plus-sol-actions { flex-direction: row; width: auto; }

	/* Filas alternadas: imagen y texto lado a lado, alternando de lado */
	.is-filas .plus-solutions-list { gap: 4rem; }
	.is-filas .plus-sol-card { flex-direction: row; align-items: center; gap: 2.5rem; }
	.is-filas .plus-sol-card > * { flex: 1 1 0; min-width: 0; }
	.is-filas .plus-sol-card:nth-child(even) { flex-direction: row-reverse; }
	.is-filas .plus-sol-card-media { aspect-ratio: 16 / 9; }

	/* 2 columnas: tarjetas verticales en grilla */
	.is-dos-col .plus-solutions-list {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		gap: 3rem 2.5rem;
	}
	.is-dos-col .plus-sol-card-media { aspect-ratio: 16 / 9; }
}

/* =========================================================================
   EXPERIENCIA
   ========================================================================= */
.plus-experience { background: var(--plus-blue); color: #fff; padding-block: 1.25rem; }
@media (min-width: 1024px) { .plus-experience { padding-block: 5rem; } }
.plus-experience-inner {
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: 1.5rem;
}
@media (min-width: 1024px) { .plus-experience-inner { grid-template-columns: 1fr 2fr; } }
.plus-exp-stat { text-align: center; color: #fff; font-weight: 700; line-height: 1; }
.plus-exp-number { font-size: max(12vw, 7rem); line-height: 1; }
.plus-exp-label { font-size: 1.5rem; margin-top: 1.5rem; }
.plus-exp-desc { color: rgba(255, 255, 255, 0.9); text-align: justify; }

/* =========================================================================
   OBRAS SLIDER (big works)
   ========================================================================= */
.plus-bigworks-inner {
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: 1.5rem;
}
.plus-bigworks-inner > * { min-width: 0; }
@media (min-width: 1024px) { .plus-bigworks-inner { grid-template-columns: 1fr 1fr; } }
.plus-bigworks-head {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	justify-content: center;
	align-items: center;
	text-align: center;
	padding-inline: 2.5rem;
	margin-bottom: 2.5rem;
}
.plus-bigworks-head h2 { font-size: clamp(1.875rem, 4vw, 3rem); font-weight: 600; }
.plus-obras-slider { overflow: hidden; }
.plus-obras-slider .swiper-slide { height: auto; }
.plus-obra-slide { position: relative; overflow: hidden; aspect-ratio: 4 / 3; }
.plus-obra-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
.plus-obra-grad {
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(0,0,0,0.8), rgba(0,0,0,0.2) 50%, transparent);
}
.plus-obra-caption {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 1.25rem;
	display: flex;
	align-items: flex-end;
	gap: 0.75rem;
}
.plus-obra-caption p {
	color: #fff;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	font-size: 1.125rem;
	line-height: 1.2;
	margin: 0;
}
.plus-obra-caption span.sub {
	font-weight: 300;
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.875rem;
	letter-spacing: 0.1em;
}

/* =========================================================================
   MARCAS
   ========================================================================= */
.plus-brands { background: var(--plus-gray-light); }
.plus-brands h3 {
	text-align: center;
	font-size: 1.5rem;
	font-weight: 700;
	margin-bottom: 2.5rem;
	text-transform: uppercase;
}
.swiper-brands .swiper-slide { display: flex; align-items: center; justify-content: center; }
.swiper-brands img { max-height: 90px; width: auto; object-fit: contain; }

/* =========================================================================
   PAGE HERO (páginas internas)
   ========================================================================= */
.plus-page-hero { padding-top: 2.5rem; }
.plus-page-hero .plus-container { padding-top: 1rem; }
.plus-page-hero h1 {
	font-size: clamp(2.25rem, 8vw, 6rem);
	text-transform: uppercase;
	font-weight: 700;
}
@media (min-width: 1024px) { .plus-page-hero h1 { font-weight: 600; } }
.plus-page-hero-sub {
	font-size: 1.25rem;
	text-transform: uppercase;
	font-weight: 600;
	margin-top: 0.75rem;
}

/* variante con imagen de fondo */
.plus-page-hero--image {
	position: relative;
	min-height: calc(60vh - 64px);
	display: flex;
	align-items: center;
	justify-content: center;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	padding-top: 0;
	text-align: center;
}
.plus-page-hero--image::before { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,0.4); }
.plus-page-hero--image .plus-page-hero-content { position: relative; z-index: 1; max-width: 64rem; margin-inline: auto; color: #fff; }
.plus-page-hero--image h1 { color: #fff; font-size: clamp(2rem, 5vw, 3rem); }
.plus-page-hero--image .plus-page-hero-sub { color: #fff; font-size: 1.125rem; letter-spacing: 0.03em; }

/* =========================================================================
   BANNER CTA (sección destacada con imagen de fondo)
   ========================================================================= */
.plus-cta-banner {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 360px;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}
.plus-cta-banner::before { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,0.45); }
.plus-cta-banner .plus-container { position: relative; z-index: 1; }
.plus-cta-banner-content { max-width: 34rem; color: #fff; }
.plus-cta-banner-title {
	color: #fff;
	font-size: clamp(1.75rem, 4vw, 2.75rem);
	font-weight: 700;
	text-transform: uppercase;
	line-height: 1.1;
	margin-bottom: 0.75rem;
}
.plus-cta-banner-sub { color: #fff; font-size: 1.125rem; margin-bottom: 1.5rem; }
@media (max-width: 767px) {
	.plus-cta-banner { min-height: 280px; text-align: center; }
	.plus-cta-banner-content { margin-inline: auto; }
}

/* =========================================================================
   HIGHLIGHTS (badges / estadísticas)
   ========================================================================= */
.plus-highlights { padding: 3.5rem 0; }
.plus-highlights .plus-hl-heading {
	text-align: center;
	font-size: clamp(1.5rem, 3vw, 2.25rem);
	font-weight: 700;
	text-transform: uppercase;
	margin-bottom: 2.5rem;
}
.plus-hl-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.5rem;
}
@media (max-width: 767px) { .plus-hl-grid { grid-template-columns: 1fr; gap: 1.25rem; } }
.plus-hl-item { text-align: center; }
.plus-hl-item-title { font-size: 1.15rem; font-weight: 700; text-transform: uppercase; margin: 0 0 0.25rem; }
.plus-hl-item-sub { color: var(--plus-gray-text); margin: 0; }

/* Badges: acento superior con degradado (igual que el footer) */
.plus-highlights.is-badges .plus-hl-item {
	position: relative;
	padding-top: 1.5rem;
}
.plus-highlights.is-badges .plus-hl-item::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 3px;
	background: var(--plus-gradient-h);
	border-radius: 2px;
}

/* Stats: fondo oscuro, número grande en rojo */
.plus-highlights.is-stats { background: var(--plus-dark); color: #fff; }
.plus-highlights.is-stats .plus-hl-heading { color: #fff; }
.plus-highlights.is-stats .plus-hl-value {
	display: block;
	font-size: clamp(2.5rem, 6vw, 4rem);
	font-weight: 800;
	line-height: 1;
	color: var(--plus-red);
}
.plus-highlights.is-stats .plus-hl-item-title { color: #fff; font-weight: 600; font-size: 1rem; text-transform: uppercase; margin-top: 0.75rem; }
.plus-highlights.is-stats .plus-hl-item-sub { color: rgba(255,255,255,0.7); }

/* =========================================================================
   BANDA CTA (color sólido con texto + botón)
   ========================================================================= */
.plus-ctaband { padding: 2.5rem 0; }
.plus-ctaband.is-blue { background: var(--plus-blue); color: #fff; }
.plus-ctaband.is-red  { background: var(--plus-red);  color: #fff; }
.plus-ctaband.is-dark { background: var(--plus-dark); color: #fff; }
.plus-ctaband-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	flex-wrap: wrap;
}
.plus-ctaband-text { font-size: clamp(1.25rem, 2.5vw, 1.75rem); font-weight: 600; margin: 0; }
@media (max-width: 767px) {
	.plus-ctaband-inner { flex-direction: column; text-align: center; }
}

/* =========================================================================
   GALERÍA
   ========================================================================= */
.plus-gallery-tag {
	display: inline-block;
	background: var(--plus-blue);
	color: #fff;
	text-transform: uppercase;
	padding: 0.25rem 0.75rem;
	font-size: 0.75rem;
	letter-spacing: 0.1em;
	font-weight: 600;
	margin-bottom: 0.75rem;
}
.plus-gallery-grid { display: grid; grid-template-columns: 1fr; gap: 0.75rem; }
@media (min-width: 1024px) {
	.plus-gallery-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
	.plus-gallery-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
	.plus-gallery-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
}
.plus-gallery-item { aspect-ratio: 3 / 2; overflow: hidden; cursor: pointer; }
.plus-gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.plus-gallery-item:hover img { transform: scale(1.05); }

/* galería en modo slider */
.plus-gallery-slider { overflow: hidden; }
.plus-gallery-slider .swiper-slide { height: auto; }
.plus-gallery-slider img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }

/* =========================================================================
   CONTACTO
   ========================================================================= */
.plus-contact-inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: 2rem;
}
@media (min-width: 1024px) { .plus-contact-inner { grid-template-columns: 1fr 1fr; gap: 4rem; } }
.plus-contact-form input:not([type="submit"]):not([type="button"]),
.plus-contact-form textarea,
.plus-contact-form .wpcf7-form-control:not(.wpcf7-submit):not(button) {
	width: 100%;
	border: 1px solid var(--plus-gray);
	padding: 0.65rem;
	margin-bottom: 1rem;
	background: #fff;
	font-family: inherit;
	font-size: 1rem;
}
.plus-contact-form label { display: block; margin-bottom: 0.5rem; font-weight: 600; }
/* Botón de envío (button[type=submit] o input submit CF7) con look outline */
.plus-contact-form .plus-contact-submit,
.plus-contact-form button[type="submit"],
.plus-contact-form input[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	width: auto;
	margin-top: 0.5rem;
	padding: 0.75rem 1.75rem;
	background: transparent;
	border: 2px solid var(--plus-blue);
	color: var(--plus-blue);
	font-family: inherit;
	font-size: 0.95rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
	transition: all 0.3s ease;
}
.plus-contact-form .plus-contact-submit:hover,
.plus-contact-form button[type="submit"]:hover,
.plus-contact-form input[type="submit"]:hover {
	background: var(--plus-blue);
	color: #fff;
}
.plus-contact-form .plus-contact-submit svg { flex-shrink: 0; }
.plus-contact-data { display: flex; flex-direction: column; gap: 0.75rem; }
.plus-contact-data-item { display: flex; gap: 0.75rem; align-items: flex-start; }
.plus-contact-data-item svg { color: var(--plus-blue); flex-shrink: 0; margin-top: 4px; }
.plus-contact-data-item strong { display: block; }
.plus-contact-data-item a { font-weight: 400; }

/* =========================================================================
   SINGLE SOLUCIÓN / detalle
   ========================================================================= */
.plus-sol-features { list-style: none; margin: 1.5rem 0; padding: 0; }
.plus-sol-features li {
	position: relative;
	padding-left: 1.75rem;
	margin-bottom: 0.5rem;
}
.plus-sol-features li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 10px;
	height: 10px;
	background: var(--plus-red);
	border-radius: 2px;
}

/* =========================================================================
   FOOTER
   ========================================================================= */
.plus-footer a { color: var(--plus-dark); font-weight: 400; }
.plus-footer a:hover { color: var(--plus-red); }

.plus-footer-newsletter { background: var(--plus-gray-light); padding-block: 2.5rem; }
.plus-footer-newsletter .inner {
	max-width: var(--plus-container);
	margin-inline: auto;
	padding-inline: 1.25rem;
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: 1.25rem;
}
@media (min-width: 1024px) { .plus-footer-newsletter .inner { grid-template-columns: 1fr 1fr; } }
.plus-footer-newsletter h3 { font-size: 1.5rem; font-weight: 700; }
.plus-footer-newsletter form { display: flex; border: 1px solid var(--plus-blue); }
.plus-footer-newsletter input { flex: 1; padding: 0.5rem; border: 0; background: #fff; }
.plus-footer-newsletter button {
	background: var(--plus-blue);
	color: #fff;
	border: 0;
	padding: 0.5rem 1.25rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-size: 0.85rem;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.3s ease;
}
.plus-footer-newsletter button:hover { background: var(--plus-blue-dark); }

.plus-footer-main { position: relative; background: #fff; padding-block: 3.75rem 2.5rem; }
.plus-footer-main::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: var(--plus-gradient-h);
}
.plus-footer-cols {
	max-width: var(--plus-container);
	margin-inline: auto;
	padding-inline: 1.25rem;
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}
@media (min-width: 1024px) { .plus-footer-cols { grid-template-columns: repeat(3, 1fr); } }
.plus-footer-col h3 {
	font-weight: 700;
	font-size: 1.25rem;
	text-transform: uppercase;
	margin-bottom: 1.25rem;
}
.plus-footer-col h3::after {
	content: "";
	display: block;
	margin-top: 8px;
	width: 68px;
	height: 3px;
	background: var(--plus-gradient-h);
	border-radius: 2px;
}
.plus-footer-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.875rem; }
.plus-footer-about { font-size: 0.875rem; line-height: 1.25rem; }
.plus-footer-contact { display: flex; flex-direction: column; gap: 0.75rem; padding-block: 1.25rem; font-size: 0.875rem; }
.plus-footer-contact a { display: flex; gap: 0.75rem; align-items: center; }
.plus-footer-social { margin-top: 0.5rem; }
.plus-footer-social .plus-social { flex-direction: row; gap: 1rem; }
.plus-footer-social .plus-social a { color: var(--plus-dark); }
.plus-footer-social .plus-social a:hover { color: var(--plus-red); }

.plus-footer-bottom { background: #fff; padding-block: 1.25rem; }
.plus-footer-bottom .inner { display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.footer-sep {
	display: block;
	width: 220px;
	height: 2px;
	background: var(--plus-gradient-h);
	border-radius: 2px;
}
.plus-footer-bottom p { font-size: 0.875rem; color: var(--plus-gray-text); margin: 0; }

/* =========================================================================
   SWIPER overrides (flechas / bullets de marca)
   ========================================================================= */
/* Evita que una imagen con dimensiones enormes expanda el slider/columna */
.swiper { min-width: 0; max-width: 100%; }
.swiper-slide { min-width: 0; }
.swiper-slide img { max-width: 100%; }

.swiper-button-next,
.swiper-button-prev {
	color: var(--plus-red) !important;
	transform: translateX(20px);
	opacity: 0;
	transition: all 0.3s ease;
}
.swiper-button-prev { transform: translateX(-20px); }
.swiper:hover .swiper-button-next,
.swiper:hover .swiper-button-prev { transform: translateX(0); opacity: 1; }
.swiper-pagination-bullet-active { background-color: var(--plus-red) !important; }

/* hero: flechas siempre visibles y blancas */
.plus-hero .swiper-button-next,
.plus-hero .swiper-button-prev {
	opacity: 1 !important;
	transform: translateX(0) !important;
	color: #fff !important;
}

/* =========================================================================
   Utilidades / contenido editorial (the_content)
   ========================================================================= */
.plus-prose { max-width: var(--plus-container); margin-inline: auto; }
.plus-prose img { border-radius: 0.5rem; }
hr.plus-sep { border: 0; border-top: 1px solid var(--plus-gray); margin-block: 2.5rem; }

/* =========================================================================
   Flujo de contenido del template de página (the_content)
   - Bloques normales: centrados al ancho del contenedor.
   - Secciones full-width (bloques ACF) y .alignfull: escapan a todo el ancho.
   ========================================================================= */
.plus-flow > * {
	max-width: var(--plus-container);
	margin-inline: auto;
	padding-inline: 1.25rem;
}
.plus-flow > .alignwide { max-width: var(--plus-container); }
.plus-flow > .alignfull { max-width: none; padding-inline: 0; }
/* Secciones del theme (bloques ACF) ocupan todo el ancho, sean section o div */
.plus-flow > section,
.plus-flow > [class^="plus-"],
.plus-flow > [class*=" plus-"] { max-width: none; padding-inline: 0; }
/* Espaciado vertical general del contenido de una página común */
.plus-flow { padding-block: 2.5rem; }
.plus-flow > section:first-child,
.plus-flow > [class^="plus-"]:first-child,
.plus-flow > [class*=" plus-"]:first-child { margin-top: -2.5rem; }
.plus-flow > section:last-child,
.plus-flow > [class^="plus-"]:last-child,
.plus-flow > [class*=" plus-"]:last-child { margin-bottom: -2.5rem; }
