/*
Theme Name: OZ Thema 4.0 — Marca cliente
Description: Tema hijo de OZ-Thema-4.0. Aquí vive la personalización de marca de cada instalación (colores, tipografías y overrides visuales). El tema padre queda neutro y reutilizable; este hijo le pone la identidad del cliente.
Author: Ozado
Template: OZ-Thema-4.0
Version: 1.0.0
Requires PHP: 8.0
Text Domain: oz-tema-4-child
*/

/* =========================================================================
   MARCA DEL CLIENTE
   El tema padre expone estas dos variables NEUTRAS. Ponles los colores
   reales del cliente para remarcar header, footer, botón "Categorías",
   títulos del pie y el banner de asesor de una sola vez.

   Alternativa sin código: Personalizar → «Diseño OZ» → «Header y Footer»
   → «Color de marca». (Si defines aquí abajo, esto gana sobre el Customizer.)
   ========================================================================= */
:root {
	--oz-brand-primary: #1f589f;  /* Fondo de header (azul Perubean) */
	--oz-brand-accent:  #9bca46;  /* Acento: botones, títulos de columna del footer, hover de links (verde Perubean) */
}

/* =========================================================================
   FOOTER — fondo con foto real del original (#footer-widgets de ozado),
   no color sólido. Overlay oscuro semitransparente para que el texto blanco
   siga siendo legible sobre la foto, igual que el original.
   ========================================================================= */
/* El padre pinta el fondo en .site-footer-new__main ("BLOQUE NEGRO", ver
   footer.css línea ~219), no en .site-footer-new — es el elemento que
   realmente se ve detrás del contenido, por eso la imagen va aquí. */
.site-footer-new__main {
	background-image:
		linear-gradient(rgba(20, 20, 20, 0.72), rgba(20, 20, 20, 0.72)),
		url('/wp-content/uploads/2019/11/banner-footer-perubean.jpg');
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}

/* "Libro de reclamaciones" no existe en el sitio original ni tiene página
   real acá (link href="#" hardcodeado en el padre, sin condicional) — se
   oculta, el footer real de ozado no lo tenía. */
.site-footer-new__claims-book {
	display: none;
}

/* El footer original de ozado tenía 3 columnas (Nosotros / Menu / Contacto),
   sin columna de Categorías de producto — se oculta para igualar la
   referencia real, y se reparte el ancho entre las 3 restantes. */
.site-footer-new__col--categories {
	display: none;
}

/* Títulos de columna del footer ("Nosotros"/"Páginas"/"Contáctanos") en
   verde de marca — el padre los pone en blanco fijo (footer.css línea 242);
   el original de ozado los tenía en el verde --theme-color-2. */
.site-footer-new__col-title {
	color: var(--oz-brand-accent, #9bca46);
}

/* Íconos sociales del footer (Facebook, correo, Instagram) — círculos
   blancos con hover verde de marca, igual al original de ozado. */
.site-footer-new__social {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: 18px;
}
.site-footer-new__social-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.7);
	color: #ffffff;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.site-footer-new__social-link:hover {
	background-color: var(--oz-brand-accent, #9bca46);
	border-color: var(--oz-brand-accent, #9bca46);
	color: #ffffff;
}

/* Certificación SENASA en el pie (punto 9 del brief). El logo real
   (attachment ID 222, Media Library) trae fondo blanco propio — se envuelve
   en una placa clara para que se lea sobre la foto oscura del footer, igual
   lenguaje visual (borde sutil, radio pequeño) que el resto de bloques
   destacados del pie (p. ej. libro de reclamaciones). */
.site-footer-new__certifications {
	display: inline-flex;
	align-items: center;
	margin-top: 4px;
	padding: 8px 14px;
	background-color: #ffffff;
	border-radius: 6px;
	border: 1px solid rgba(255, 255, 255, 0.7);
}
.site-footer-new__cert-logo {
	display: block;
	width: 140px;
	height: 40px;
	object-fit: contain;
}
.site-footer-new__main-grid {
	grid-template-columns: minmax(0, 1.9fr) minmax(150px, 0.9fr) minmax(220px, 1fr) !important;
}
/* [Fix footer móvil] La regla de arriba (3 columnas, sin @media, con
   !important) no consideraba el rango móvil — ganaba incluso contra el
   @media(max-width:767px){grid-template-columns:1fr} del padre (footer.css),
   que no tiene !important. Resultado real en 390px: la columna "Nosotros"
   colapsaba a 0px de ancho (su fr se resolvía a 0 al no caber el resto de
   columnas fijas en minmax(150px)/minmax(220px) dentro de un contenedor
   angosto) mientras "Páginas" y "Contáctanos" quedaban con ancho fijo
   superpuestas sobre ese espacio colapsado — exactamente el reporte visual
   del usuario (texto cortado palabra por palabra, columnas encimadas). Se
   agrega el mismo breakpoint que ya usa el padre para apilar en 1 columna,
   con !important para ganar contra la regla de 3 columnas de arriba. */
@media (max-width: 767px) {
	.site-footer-new__main-grid {
		grid-template-columns: 1fr !important;
	}
}

/* =========================================================================
   OVERRIDES ADICIONALES DEL CLIENTE
   Añade aquí cualquier ajuste visual específico de esta instalación.
   Esta hoja se carga DESPUÉS del CSS del padre, así que gana sin !important.
   ========================================================================= */

/* Mapa en el footer (reemplaza el texto "Acerca de"). Responsive. */
.site-footer-new__map {
	width: 100%;
	max-width: 420px;
	border-radius: 12px;
	overflow: hidden;
	line-height: 0;
}
.site-footer-new__map iframe {
	display: block;
	width: 100%;
	height: 220px;
	border: 0;
}

/* ===== Drawer lateral de Categorías ===== */
body.oz-cat-lock { overflow: hidden; }

.oz-cat-drawer {
	position: fixed;
	inset: 0;
	z-index: 100000;
	visibility: hidden;
	pointer-events: none;
}
.oz-cat-drawer.is-open { visibility: visible; pointer-events: auto; }

.oz-cat-drawer__overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.5);
	opacity: 0;
	transition: opacity .25s ease;
}
.oz-cat-drawer.is-open .oz-cat-drawer__overlay { opacity: 1; }

.oz-cat-drawer__panel {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	width: min(340px, 86vw);
	background: #ffffff;
	box-shadow: 2px 0 24px rgba(0, 0, 0, .18);
	display: flex;
	flex-direction: column;
	transform: translateX(-100%);
	transition: transform .28s ease;
	overflow-y: auto;
}
.oz-cat-drawer.is-open .oz-cat-drawer__panel { transform: translateX(0); }

.oz-cat-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 18px;
	background: var(--oz-footer-orange, var(--oz-brand-accent, #5b6672));
	color: #fff;
	position: sticky;
	top: 0;
}
.oz-cat-drawer__title { font-size: 17px; font-weight: 700; }
.oz-cat-drawer__close {
	display: inline-flex; align-items: center; justify-content: center;
	width: 34px; height: 34px; padding: 0;
	background: transparent; border: 0; color: #fff; cursor: pointer; border-radius: 8px;
}
.oz-cat-drawer__close:hover { background: rgba(255, 255, 255, .18); }

.oz-cat-drawer__list { list-style: none; margin: 0; padding: 6px 0; }
.oz-cat-item { border-bottom: 1px solid #eee; }
.oz-cat-item__row { display: flex; align-items: stretch; }
.oz-cat-item__link {
	flex: 1 1 auto;
	display: block;
	padding: 13px 18px;
	color: #1f2937;
	text-decoration: none;
	font-size: 15px;
	line-height: 1.3;
}
.oz-cat-item__link:hover { background: #f6f7f8; color: var(--oz-footer-orange, var(--oz-brand-accent, #5b6672)); }
.oz-cat-item__toggle {
	flex: 0 0 46px;
	display: inline-flex; align-items: center; justify-content: center;
	background: transparent; border: 0; border-left: 1px solid #eee; color: #6b7280; cursor: pointer;
}
.oz-cat-item__toggle svg { transition: transform .2s ease; }
.oz-cat-item.is-expanded > .oz-cat-item__row .oz-cat-item__toggle svg { transform: rotate(180deg); }

.oz-cat-item__sub { list-style: none; margin: 0; padding: 0; background: #fafbfc; }
.oz-cat-item__sub a {
	display: block;
	padding: 10px 18px 10px 34px;
	color: #4b5563;
	text-decoration: none;
	font-size: 14px;
}
.oz-cat-item__sub a:hover { background: #eef1f4; color: var(--oz-footer-orange, var(--oz-brand-accent, #5b6672)); }

/* ===== Sidecart (cajón lateral) del cotizador con los colores de la marca =====
   El plugin trae paleta de otra marca (rojo #bc0811 + azul #001E50).
   Acento (rojo) → naranja la marca; estructura (azul) → oscuro la marca. */
body .ozc-sidecart {
	--ozc-sc-accent:      var(--oz-brand-accent, #5b6672);
	--ozc-sc-accent-dark: color-mix(in srgb, var(--oz-brand-accent, #5b6672) 82%, #000);
	--ozc-sc-line:        var(--oz-brand-accent, #5b6672);
	--ozc-sc-yellow:      var(--oz-brand-accent, #5b6672);
	--ozc-sc-yellow-dark: color-mix(in srgb, var(--oz-brand-accent, #5b6672) 82%, #000);
	--ozc-sc-wa:          var(--oz-brand-accent, #5b6672);
	--ozc-sc-wa-dark:     color-mix(in srgb, var(--oz-brand-accent, #5b6672) 82%, #000);
}
.ozc-sidecart .ozc-sidecart__header { background: #111111; }
.ozc-sidecart .ozc-sidecart__btn--cart {
	background: #111111;
	border-color: #111111;
	box-shadow: 0 2px 8px rgba(17, 17, 17, .35);
}
.ozc-sidecart .ozc-sidecart__btn--cart:hover { background: #262626; border-color: #262626; }
.ozc-sidecart .ozc-sidecart__btn--continue { border-color: #111111; color: #111111; }
.ozc-sidecart .ozc-sidecart__btn--continue:hover { border-color: #111111; color: #111111; }
.ozc-sidecart .ozc-sidecart-item__remove { background-color: #111111; }
.ozc-sidecart .ozc-sidecart__btn--quote { box-shadow: 0 2px 8px rgba(0, 0, 0, .2); }

/* ===== Carrito Cotizador (página /cart/) con los colores de la marca =====
   quote-cart.css trae paleta de otra marca (azul #004674 + amarillo #f7d022)
   definida como variables en .ozc-quote-cart. Re-mapeo la marca:
   amarillo (CTA principal) → naranja de marca; azul (estructura: botón correo,
   steppers, bordes) → negro la marca. El verde de WhatsApp se conserva. */
body .ozc-quote-cart {
	--ozc-bg:          #f6f6f6;                  /* fondo neutro, sin tinte azul */
	--ozc-border:      rgba(17, 17, 17, 0.13);
	--ozc-border-soft: rgba(17, 17, 17, 0.07);
	--ozc-accent:      #141414;
	--ozc-accent-dark: #000000;
	--ozc-accent-line: var(--oz-brand-accent, #5b6672);
	--ozc-yellow:      var(--oz-brand-accent, #5b6672);                  /* CTA (badges de paso, botón WhatsApp) */
	--ozc-yellow-dark: color-mix(in srgb, var(--oz-brand-accent, #5b6672) 82%, #000);
	--ozc-shadow:      0 1px 4px rgba(0, 0, 0, 0.07), 0 6px 20px rgba(0, 0, 0, 0.04);
}
/* Los badges de paso (1·2·3) y el CTA sobre naranja necesitan texto blanco */
body .ozc-quote-cart .ozc-step { color: #ffffff; }
body .ozc-quote-cart .ozc-quote-cart__btn--primary,
body .ozc-quote-cart .ozc-quote-cart__btn--primary:hover { color: #ffffff !important; }

/* ===== Cards Misión/Visión/Valores (Nosotros) — .oz-hover-info-card =====
   Componente Icono+Texto del maquetador (clases reales: .oz-pb-icon-text,
   .oz-pb-it__icon, .oz-pb-it__title, .oz-pb-it__desc). Aplica solo a los
   componentes con la clase "oz-hover-info-card" + modificador de color:
     --negro | --naranja | --claro

   ARQUITECTURA (móvil primero):
   · BASE (todos los dispositivos): todo visible y en flujo — icono, título
     y descripción. Ningún hover. Es el comportamiento de móvil/táctil.
   · @media (hover:hover) and (pointer:fine) → SOLO con mouse real (desktop
     y laptop): sistema de 2 estados. Normal = icono+título; hover = SOLO la
     descripción (capa absoluta centrada). En táctil este bloque nunca corre,
     así que un tap/deslizar no puede activar estados raros.
   · Los media por ancho (1440/1024/767) solo ajustan TAMAÑOS. */
.oz-hover-info-card { --hic-bg: #141414; --hic-text: #ffffff; }
.oz-hover-info-card--naranja { --hic-bg: var(--oz-brand-accent, #5b6672); }
.oz-hover-info-card--claro   { --hic-bg: color-mix(in srgb, var(--oz-brand-accent, #5b6672) 70%, #fff); }

/* Fila: columnas pegadas (gap 0 SOLO en este grid) y estiradas → mismas alturas */
.oz-pb-grid:has(.oz-hover-info-card) {
	gap: 0 !important;
	column-gap: 0 !important;
	align-items: stretch;
}
.oz-hover-info-card { height: 100%; }

/* ── BASE: card rectangular, contenido centrado y EN FLUJO (móvil/táctil) ── */
.oz-hover-info-card .oz-pb-icon-text {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	height: 100%;
	min-height: 340px;
	width: 100%;
	max-width: 100%;
	padding: 35px 24px;
	background: var(--hic-bg);
	border-radius: 0;
	text-align: center;
	box-sizing: border-box;
}
.oz-hover-info-card .oz-pb-it__icon {
	width: 112px;
	height: 112px;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #ffffff;
	border-radius: 50%;
	margin: 0 0 18px !important;
}
.oz-hover-info-card .oz-pb-it__icon img,
.oz-hover-info-card .oz-pb-it__icon svg {
	width: 54px !important;
	height: 54px !important;
	object-fit: contain;
}
.oz-hover-info-card .oz-pb-it__text { width: 100%; max-width: 100%; }
.oz-hover-info-card .oz-pb-it__title {
	margin: 0;
	color: var(--hic-text) !important;
	font-weight: 600;
	text-align: center !important;
}
/* Descripción base: visible, en flujo, centrada, sin anchos fijos de desktop */
.oz-hover-info-card .oz-pb-it__desc,
.oz-hover-info-card .oz-pb-it__desc p {
	text-align: center !important; /* nunca justificado */
	text-justify: none;
	overflow-wrap: break-word;
	word-break: normal;
}
.oz-hover-info-card .oz-pb-it__desc {
	position: static;
	width: 100%;
	max-width: 340px;
	margin: 20px auto 0;
	padding: 0;
	box-sizing: border-box;
	color: var(--hic-text);
	font-size: 14px !important; /* el panel pone 15px con más especificidad */
	font-weight: 400;
	line-height: 1.6 !important;
	opacity: 1;
	visibility: visible;
	transform: none;
}
.oz-hover-info-card .oz-pb-it__desc p { margin: 0; }

/* ── DOS ESTADOS: SOLO dispositivos con mouse real (desktop + laptop).
   En táctil (hover:none / pointer:coarse) nada de esto existe. ── */
@media (hover: hover) and (pointer: fine) {
	.oz-hover-info-card .oz-pb-icon-text { overflow: hidden; }

	/* Capa 1: icono + título (visibles en reposo, se desvanecen en hover) */
	.oz-hover-info-card .oz-pb-it__icon,
	.oz-hover-info-card .oz-pb-it__title {
		opacity: 1;
		visibility: visible;
		transform: translateY(0);
		transition: opacity .35s ease, transform .35s ease, visibility 0s;
	}
	.oz-hover-info-card:hover .oz-pb-it__icon,
	.oz-hover-info-card:hover .oz-pb-it__title {
		opacity: 0;
		visibility: hidden;
		transform: translateY(-8px);
		transition: opacity .35s ease, transform .35s ease, visibility 0s linear .35s;
	}

	/* Capa 2: descripción como capa absoluta que ocupa TODA la card,
	   centrada vertical y horizontalmente. Oculta en reposo.
	   El ancho del texto se limita con padding lateral (mín. 24px,
	   y crece para dejar el texto a máx. ~320px) — sin left/translateX. */
	.oz-hover-info-card .oz-pb-it__desc {
		position: absolute;
		inset: 0;
		width: auto;
		max-width: none;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		margin: 0;
		padding-left: max(24px, calc((100% - 320px) / 2));
		padding-right: max(24px, calc((100% - 320px) / 2));
		opacity: 0;
		visibility: hidden;
		transform: translateY(8px);
		transition: opacity .35s ease, transform .35s ease, visibility 0s linear .35s;
	}
	.oz-hover-info-card:hover .oz-pb-it__desc {
		opacity: 1;
		visibility: visible;
		transform: translateY(0);
		transition: opacity .35s ease, transform .35s ease, visibility 0s;
	}
}

/* ── LAPTOP (1025–1440px): solo tamaños; el sistema de 2 estados de arriba
   sigue activo porque la laptop tiene mouse (hover:hover + pointer:fine). ── */
@media (min-width: 1025px) and (max-width: 1440px) {
	.oz-hover-info-card .oz-pb-icon-text { min-height: 320px; padding: 25px 35px; }
	.oz-hover-info-card .oz-pb-it__icon { width: 90px; height: 90px; margin-bottom: 18px !important; }
	.oz-hover-info-card .oz-pb-it__icon img,
	.oz-hover-info-card .oz-pb-it__icon svg { width: 44px !important; height: 44px !important; }
	.oz-hover-info-card .oz-pb-it__title { font-size: 18px !important; }
	.oz-hover-info-card .oz-pb-it__desc { font-size: 13px !important; line-height: 1.5 !important; }
}

/* ── TABLET (768–1024px): solo tamaños. En tablet táctil el bloque de hover
   no corre → todo visible en flujo y la card crece con su contenido. ── */
@media (min-width: 768px) and (max-width: 1024px) {
	.oz-hover-info-card .oz-pb-icon-text { min-height: 300px; height: auto; padding: 30px 24px; }
	.oz-hover-info-card .oz-pb-it__icon { width: 84px; height: 84px; }
	.oz-hover-info-card .oz-pb-it__title { font-size: 17px !important; }
}

/* ── MÓVIL (≤767px): 1 card por fila (el maquetador apila), SIN hover.
   Todo visible: icono + título + descripción. La card crece con el
   contenido (min-height como piso) y nada se corta ni se desplaza. ── */
@media (max-width: 767px) {
	.oz-hover-info-card .oz-pb-icon-text {
		height: auto;
		min-height: 300px;
		padding: 38px 24px;
		overflow: visible;
	}
	.oz-hover-info-card .oz-pb-it__icon { width: 80px; height: 80px; margin-bottom: 18px !important; }
	.oz-hover-info-card .oz-pb-it__icon img,
	.oz-hover-info-card .oz-pb-it__icon svg { width: 40px !important; height: 40px !important; }
	.oz-hover-info-card .oz-pb-it__title { font-size: 16px !important; }
	.oz-hover-info-card .oz-pb-it__desc {
		position: static !important;
		width: 100% !important;
		max-width: 100% !important;
		margin: 18px auto 0 !important;
		padding: 0 !important;
		opacity: 1 !important;
		visibility: visible !important;
		transform: none !important;
		font-size: 14px !important;
		line-height: 1.55 !important;
	}
	/* Blindaje: aunque algo dispare :hover en un táctil, no pasa nada */
	.oz-hover-info-card:hover .oz-pb-it__icon,
	.oz-hover-info-card:hover .oz-pb-it__title,
	.oz-hover-info-card:hover .oz-pb-it__desc {
		opacity: 1 !important;
		visibility: visible !important;
		transform: none !important;
	}
}

/* ===== Breadcrumb del maquetador (.oz-breadcrumbs): enlace en naranja de marca ===== */
.oz-breadcrumbs a { color: var(--oz-brand-accent, #5b6672); text-decoration: none; }
.oz-breadcrumbs a:hover { color: color-mix(in srgb, var(--oz-brand-accent, #5b6672) 82%, #000); }

/* ===== Título de sección con barra naranja (.oz-heading) — reutilizable ===== */
.oz-heading { border-left: 4px solid var(--oz-brand-accent, #5b6672); padding-left: 16px; }
.oz-heading h1, .oz-heading h2, .oz-heading h3 { margin: 0 0 6px; color: #1f2937; line-height: 1.2; }
.oz-heading p { margin: 0; color: #6b7280; font-size: 15px; line-height: 1.5; }

/* ===== Slider de categorías (OZ-Sliders) — diseño la marca: tarjeta horizontal gris + botón =====
   La 3.6.11 dejó la tarjeta vertical/blanca sin botón; aquí la volvemos al look de la
   imagen: imagen a la izquierda, nombre + botón "Ver categoria" a la derecha, fondo gris. */
body .ozs--wc-categories .ozs-wc-cat {
	flex-direction: row;
	align-items: center;
	justify-content: flex-start;
	gap: 22px;
	min-height: 190px;
	padding: 22px 26px;
	background: #f2f2f2;
	border: 0;
	border-radius: 4px;
	text-align: left;
	color: #2f2f2f;
}
/* Columna de imagen (izquierda) */
body .ozs--wc-categories .ozs-wc-cat__icon-wrap {
	flex: 0 0 40%;
	width: 40%;
	height: auto;
	align-self: center;
}
body .ozs--wc-categories .ozs-wc-cat__icon {
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: 150px;
}
body .ozs--wc-categories .ozs-wc-cat__img {
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: 150px;
	object-fit: contain;
}
/* Columna de texto: nombre (arriba) + botón (abajo), alineado a la izquierda */
body .ozs--wc-categories .ozs-wc-cat__name {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	flex: 1 1 auto;
	min-height: 0;
	overflow: visible;
	-webkit-line-clamp: unset;
	text-align: left;
	text-wrap: initial;
	font-size: clamp(1.15rem, 2.2vw, 1.5rem);
	font-weight: 700;
	line-height: 1.15;
	color: #2f2f2f;
}
/* Botón "Ver categoria" (lo añade el CSS; la tarjeta entera ya es un enlace) */
body .ozs--wc-categories .ozs-wc-cat__name::after {
	content: "Ver categoria";
	padding: 9px 18px;
	background: var(--oz-brand-accent, #5b6672);
	color: #ffffff;
	font-size: 0.78rem;
	font-weight: 700;
	line-height: 1;
	border-radius: 4px;
	white-space: nowrap;
}
/* Todas las tarjetas iguales (gris): sin hover, sin oscurecer, sin silueta naranja */
body .ozs--wc-categories .ozs-wc-cat:hover,
body .ozs--wc-categories .ozs-wc-cat:focus-visible,
body .ozs--wc-categories .ozs-wc-cat.is-current {
	background: #f2f2f2;
	color: #2f2f2f;
	transform: none;
	box-shadow: none;
}
body .ozs--wc-categories .ozs-wc-cat:hover .ozs-wc-cat__img,
body .ozs--wc-categories .ozs-wc-cat:focus-visible .ozs-wc-cat__img,
body .ozs--wc-categories .ozs-wc-cat.is-current .ozs-wc-cat__img {
	transform: none;
	filter: none;
}

/* ===== Encabezado de los SLIDERS DE PRODUCTOS (OZ-Sliders wc-products) =====
   Estiliza el header que ya genera cada carrusel (título dinámico del panel +
   flechas prev/next existentes). No toca JS, consultas ni el carrusel. */
.ozs--wc-products { position: relative; }

/* 1. Fila del título (título izquierda; las flechas van absolutas a la derecha) */
.ozs--wc-products .ozs__header {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	width: 100%;
	margin: 0 0 32px;      /* 5. separación con las cards */
	padding: 0 0 12px;     /* deja sitio para la línea inferior */
}
/* 2. Título dinámico (valor del panel, no hardcodeado) */
html body .ozs--wc-products .ozs__title {
	font-family: "Roboto", -apple-system, "Segoe UI", sans-serif !important;
	font-size: 20px !important;
	font-weight: 700 !important;
	line-height: 1.25 !important;
	color: #292929 !important;
	margin: 0 !important;
}
.ozs--wc-products .ozs__title::after { display: none; } /* quita el subrayado corto por defecto */

/* 3. Línea inferior continua: naranja 88px + gris, mismo grosor, full width */
.ozs--wc-products .ozs__header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: linear-gradient(to right, var(--oz-brand-accent, #5b6672) 0, var(--oz-brand-accent, #5b6672) 88px, #e8e8e8 88px, #e8e8e8 100%);
}

/* 4. Flechas: mismas prev/next del slider, movidas al top-right del header */
html body .ozs.ozs--wc-products .ozs__nav {
	position: absolute !important;
	top: 0 !important;
	right: 0 !important;
	left: auto !important;
	width: auto !important;
	height: auto !important;
	display: flex !important;
	align-items: center;
	gap: 4px;
	pointer-events: none;
	z-index: 5;
}
html body .ozs.ozs--wc-products:not(.ozs--banner) .ozs__nav-btn {
	position: relative !important;
	top: auto !important;
	left: auto !important;
	right: auto !important;
	transform: none !important;
	width: 26px !important;
	height: 26px !important;
	min-width: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	border-radius: 5px !important;
	color: #777 !important;
	box-shadow: none !important;
	pointer-events: auto;
	/* El plugin fuerza background-color verde con !important (la transición lo "pega").
	   Lo cubrimos con background-image, que se pinta ENCIMA del color. */
	background-color: #f5f5f5 !important;
	background-image: linear-gradient(#f5f5f5, #f5f5f5) !important;
}
html body .ozs.ozs--wc-products:not(.ozs--banner) .ozs__nav-btn:hover,
html body .ozs.ozs--wc-products:not(.ozs--banner) .ozs__nav-btn:focus-visible {
	background-image: linear-gradient(#e8e8e8, #e8e8e8) !important;
}
html body .ozs.ozs--wc-products:not(.ozs--banner) .ozs__nav-btn::before { border-color: #777 !important; }

/* ============================================================
   BANNER DE LA TIENDA (la marca): imagen de fondo + texto blanco.
   Ruta RELATIVA a propósito: los reescritores de staging solo tocan URLs
   absolutas con dominio → así el archivo se sirve del LOCAL y no se reescribe
   a producción (donde no existe). Scrim oscuro encima para legibilidad del
   texto blanco. Prefijo html body para ganar al shop-archive.css sin depender
   del orden de carga. Aplica a tienda y a archivos de categoría/etiqueta.
   ============================================================ */
html body .oz-shop-page-banner {
	background-color: #1a1a1a !important; /* base neutra mientras carga la imagen */
	/* Imagen real del cliente (attachment ID 495 en Media Library, ya existía
	   localmente — mismo archivo servido en producción). Ruta RELATIVA a
	   propósito (ver comentario de arriba: no se reescribe en staging). */
	background-image:
		linear-gradient(rgba(0, 0, 0, 0.34), rgba(0, 0, 0, 0.34)),
		url('/wp-content/uploads/2019/11/banner-perubean-productos-alberja-granos-cereales-lima-peru.jpg') !important;
	background-size: cover !important;
	background-position: center center !important;
	background-repeat: no-repeat !important;
}
/* Texto en blanco (título + migas) */
html body .oz-shop-page-banner__title,
html body .oz-shop-page-banner__crumbs,
html body .oz-shop-page-banner__crumbs a,
html body .oz-shop-page-banner__crumbs span,
html body .oz-shop-page-banner .woocommerce-breadcrumb,
html body .oz-shop-page-banner .woocommerce-breadcrumb a {
	color: #ffffff !important;
}
html body .oz-shop-page-banner__crumb-sep {
	color: rgba(255, 255, 255, 0.6) !important;
}
html body .oz-shop-page-banner__crumbs a:hover,
html body .oz-shop-page-banner .woocommerce-breadcrumb a:hover {
	color: var(--oz-brand-accent, #5b6672) !important; /* hover naranja de marca */
}
/* Alto del banner: 230px en desktop (≥1440px), escala fluida hacia abajo
   (16vw) con piso de 140px en móvil. El alto vive en el __inner (box-sizing
   border-box, ya centra su contenido con flex), así que min-height = alto
   total de la franja. */
html body .oz-shop-page-banner__inner {
	min-height: clamp(140px, 16vw, 230px) !important;
}
/* Ficha de producto: el padre (single-product.css) capa el banner a 1440px;
   lo soltamos para que sea la MISMA franja full-width que en la tienda. */
html body .site-main--woo-single .oz-shop-page-banner {
	width: 100% !important;
	max-width: none !important;
}

/* ===== Página de Marcas: grilla estática sobre el módulo wc-brands =====
   Uso: [oz_wc_brands class="brands-cards brands-grid" ...] en un bloque Texto
   del maquetador. "brands-cards" (skin del plugin) pone cada logo en tarjeta
   blanca; "brands-grid" (esto) convierte el carrusel en grilla que envuelve:
   el ancho por columna lo sigue dictando --ozs-cols (cols_desktop/laptop/
   tablet/mobile del shortcode), así que 4 columnas × 12 marcas = 3 filas,
   y en tablet/móvil re-fluye solo (3 col → 4 filas, 2 col → 6 filas). */
.ozs--wc-brands.brands-grid .ozs__track {
	flex-wrap: wrap;
	overflow-x: visible;
	scroll-snap-type: none;
}
.ozs--wc-brands.brands-grid .ozs__slide {
	scroll-snap-align: none;
}
/* Sin controles de carrusel: es una grilla fija */
.ozs--wc-brands.brands-grid .ozs__nav,
.ozs--wc-brands.brands-grid .ozs__dots {
	display: none !important;
}
/* oz-sliders.js (readConfig) tiene loop:true hardcodeado e ignora data-loop,
   así que SIEMPRE inyecta slides clonadas para el loop infinito. En una
   grilla estática esas clonadas duplican marcas: fuera. */
.ozs--wc-brands.brands-grid .ozs__slide--clone {
	display: none !important;
}

/* =========================================================================
   FICHA DE PRODUCTO — sección Descripción / Información adicional
   Rediseño visual de .woocommerce-tabs sobre la implementación del padre
   (single-product.css). Solo CSS: los tabs, sus paneles y el contenido
   siguen siendo los nativos de WooCommerce. El prefijo `body` da un punto
   más de especificidad que el padre sin recurrir a !important.
   ========================================================================= */

/* =========================================================================
   FICHA DE PRODUCTO — controles de compra (cantidad, Presupuestar, WhatsApp)
   Solo re-estilizado de los elementos existentes: .quantity con los botones
   .ozc-qty-btn que inyecta oz-cotizador (loops.js), el submit nativo
   .single_add_to_cart_button y el botón .ozc-product-card__wa-btn. La altura
   de la fila ya la unifica el plugin con --ozc-pdp-action-h (52px). Los
   iconos son SVG inline vía mask (currentColor), sin librerías nuevas.
   ========================================================================= */

/* 1. Selector de cantidad: compacto (158px), borde naranja fino, las tres
   zonas equilibradas sin espacio vacío de más. */
body.single-product .oz-single-product .ozc-single-product__cta form.cart .quantity {
	width: 158px !important;
	flex: 0 0 158px !important;
	flex-shrink: 0 !important;
	justify-content: space-between !important;
	background: #ffffff !important;
	border: 1px solid var(--oz-brand-accent, #5b6672) !important;
	border-radius: 9px !important;
}
body.single-product .oz-single-product .ozc-single-product__cta .ozc-qty-btn {
	color: var(--oz-brand-accent, #5b6672) !important;
	background: transparent !important;
	border: 0 !important;
	font-size: 20px;
	font-weight: 600 !important;
}
body.single-product .oz-single-product .ozc-single-product__cta form.cart .quantity input.qty {
	background: #ffffff !important;
	color: #16225a;
	font-size: 16px;
	font-weight: 600;
}

/* 1b. Ancho compacto del selector de cantidad SIN el wrapper
   .ozc-single-product__cta (bug real encontrado: en fichas de producto
   simples, sin ese wrapper, .quantity no tenía ancho limitado — heredaba el
   ancho amplio del input nativo de WooCommerce y dejaba casi sin espacio al
   botón "Presupuestar", que se veía cortado a una sola letra). */
body.single-product .oz-single-product form.cart .quantity {
	width: 110px;
	flex: 0 0 110px !important;
}

/* 2. Presupuestar: CTA principal navy, radio 9px, icono de documento a la
   izquierda. El navy y su hover (#1b2a6b → #16225a) ya vienen del padre. */
body.single-product .oz-single-product form.cart .single_add_to_cart_button,
body.single-product .oz-single-product form.cart .button.alt {
	border-radius: 9px !important;
	font-size: 15.5px;
	font-weight: 600;
	transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease !important;
}
body.single-product .oz-single-product form.cart .single_add_to_cart_button::before {
	content: "";
	width: 17px;
	height: 17px;
	margin-right: 12px;
	flex: 0 0 auto;
	background-color: currentColor;
	-webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm0 2.5L17.5 8H14zM8 13h8v1.5H8zm0 4h8v1.5H8zm0-8h4v1.5H8z"/></svg>') no-repeat center / contain;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm0 2.5L17.5 8H14zM8 13h8v1.5H8zm0 4h8v1.5H8zm0-8h4v1.5H8z"/></svg>') no-repeat center / contain;
}
body.single-product .oz-single-product form.cart .single_add_to_cart_button:hover,
body.single-product .oz-single-product form.cart .button.alt:hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 10px rgba(27, 42, 107, 0.18);
}

/* 4. WhatsApp: blanco con borde y texto naranja, icono de WhatsApp naranja.
   Hover: naranja muy suave, sin cambiar de color. */
body.single-product .oz-single-product .ozc-single-product__wa .ozc-product-card__wa-btn {
	min-height: 45px;
	padding: 0 1rem;
	background: #ffffff;
	border: 1px solid var(--oz-brand-accent, #5b6672);
	border-radius: 9px;
	color: var(--oz-brand-accent, #5b6672);
	font-size: 14px;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	transition: background-color 0.2s ease;
}
/* Secundario: más fino que Presupuestar. Espaciados: 10px con la fila de
   arriba, 16px con la nota informativa de abajo. */
body.single-product .oz-single-product .ozc-single-product__summary .ozc-single-product__wa {
	margin-top: 10px;
}
body.single-product .oz-single-product .ozc-single-product__summary .ozc-single-product__note {
	margin-top: 16px;
}
body.single-product .oz-single-product .ozc-single-product__wa .ozc-product-card__wa-btn::before {
	content: "";
	width: 18px;
	height: 18px;
	flex: 0 0 auto;
	background-color: currentColor;
	-webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.966-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z"/></svg>') no-repeat center / contain;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.966-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z"/></svg>') no-repeat center / contain;
}
body.single-product .oz-single-product .ozc-single-product__wa .ozc-product-card__wa-btn:hover {
	background: #fff4ec;
	border-color: var(--oz-brand-accent, #5b6672);
	color: var(--oz-brand-accent, #5b6672);
}

/* Tablet (481–991px): oz-cotizador (loops.css) apila cantidad y Presupuestar
   en columna desde 991px hacia abajo; aquí los devolvemos a la misma fila
   (cantidad compacta + botón con el resto). El apilado queda solo en móvil. */
@media screen and (min-width: 481px) and (max-width: 991px) {
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form),
	body.single-product .ozc-single-product__cta form.cart.variations_form .woocommerce-variation-add-to-cart,
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form) > div:has(.quantity):has(.single_add_to_cart_button),
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form) > div:has(.quantity):has(button[type='submit'].single_add_to_cart_button) {
		flex-direction: row !important;
		align-items: center !important;
	}
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form) .quantity,
	body.single-product .ozc-single-product__cta form.cart.variations_form .woocommerce-variation-add-to-cart .quantity {
		flex: 0 0 158px !important;
		align-self: center !important;
	}
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form) .single_add_to_cart_button,
	body.single-product .ozc-single-product__cta form.cart:not(.variations_form):not(.grouped_form) button[type='submit'].single_add_to_cart_button,
	body.single-product .ozc-single-product__cta form.cart.variations_form .woocommerce-variation-add-to-cart .single_add_to_cart_button,
	body.single-product .ozc-single-product__cta form.cart.variations_form .woocommerce-variation-add-to-cart button[type='submit'].single_add_to_cart_button {
		width: auto !important;
		flex: 1 1 auto !important;
	}
}

/* 0. Galería: sin el fondo gris azulado del padre (#eef2f7); en su lugar,
   borde fino como el del resto de las cards. */
body .oz-single-product .woocommerce-product-gallery {
	background: #ffffff;
	border: 1px solid #e8e8e8;
}

/* 1. Contenedor único blanco para toda la sección (tabs + panel).
   [Fase 2.6, punto 1] margin-top 2.5rem(40px) + padding-top 28px = 68px de
   los 133px totales medidos entre summary y esta card — verificado con
   Playwright que la altura del sidebar NO influye (grid de una sola fila,
   ambas columnas ya son ítems independientes; forzar el sidebar a 50px de
   alto no movió ni 1px el top de esta card). Se recorta el propio
   margin/padding, sin negativos ni alturas fijas. */
body .oz-single-product .woocommerce-tabs {
	margin: 1.5rem 0 1rem;
	background: #ffffff;
	border: 1px solid #e8e8e8;
	border-radius: 12px;
	box-shadow: none;
	padding: 20px 32px 32px;
	box-sizing: border-box;
	max-width: 100%;
}

/* 2. Tabs planos sobre blanco: sin caja, sin fondo, línea gris de ancho
   completo debajo; el activo lleva texto naranja + subrayado naranja 2px.
   El CSS core de WooCommerce estila estos tabs como botones grises con
   `.woocommerce div.product .woocommerce-tabs ul.tabs li` (0,3,2), que le
   gana al tema; incluimos `div.product` para superarlo sin !important. */
body .oz-single-product div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0 2rem;
	margin: 0;
	padding: 0;
	list-style: none;
	overflow: visible;
	border: 0;
	border-bottom: 1px solid #e3e3e3;
}
body .oz-single-product div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	display: inline-block;
}
/* Woo core dibuja "orejas" decorativas en cada tab con li::before/::after */
body .oz-single-product div.product .woocommerce-tabs ul.tabs li::before,
body .oz-single-product div.product .woocommerce-tabs ul.tabs li::after {
	content: none;
	display: none;
}
body .oz-single-product div.product .woocommerce-tabs ul.tabs li a {
	display: inline-block;
	padding: 0.25rem 0.1rem 0.85rem;
	font-size: 0.92rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #262626;
	background: transparent;
	border: 0;
	border-bottom: 2px solid transparent;
	border-radius: 0;
	margin-bottom: -1px;
	text-decoration: none;
	transition: color 0.2s ease, border-color 0.2s ease;
}
/* Hover/foco del inactivo: solo el texto pasa a naranja (sin subrayado) */
body .oz-single-product div.product .woocommerce-tabs ul.tabs li a:hover,
body .oz-single-product div.product .woocommerce-tabs ul.tabs li a:focus-visible {
	color: var(--oz-brand-accent, #5b6672);
	border-bottom-color: transparent;
}
/* Activo: naranja + línea naranja (va después del hover para conservar el
   subrayado aunque el mouse esté encima) */
body .oz-single-product div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--oz-brand-accent, #5b6672);
	border-bottom-color: var(--oz-brand-accent, #5b6672);
}

/* 3. El panel pierde su card propia (la card ahora es el contenedor) y el
   texto respira: 14px, interlineado alto, gris medio. */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel {
	margin: 1.5rem 0 0;
	padding: 0;
	background: transparent;
	border-radius: 0;
	box-shadow: none;
	color: #606060;
	font-size: 14px;
	line-height: 1.75;
}
/* Encabezado del panel ("Descripción del producto" / "Información adicional") */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel > h2 {
	margin: 0 0 12px;
	font-size: 19px;
	font-weight: 700;
	line-height: 1.3;
	color: #171717;
}
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel p {
	margin: 0 0 14px;
}

/* 4-5. Beneficios: el <ul> que cada producto ya trae en su descripción se
   convierte en la sección de beneficios: divisoria suave arriba, subtítulo,
   y los ítems en grilla de 2 columnas con check naranja en círculo. Todo por
   CSS y 100% dinámico: si el producto trae su propio rótulo justo antes de
   la lista (p. ej. "Beneficios:" o "Aplicaciones principales"), ESE texto se
   estiliza como subtítulo; si la lista no trae rótulo, se inyecta el texto
   genérico "Beneficios principales". Sin lista, nada de esto aparece. */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description ul {
	list-style: none;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 50px;
	row-gap: 18px;
	margin: 24px 0 20px;
	padding: 22px 0 0;
	border-top: 1px solid #eeeeee;
}
/* [Fase 2, punto 4 y 12] El heading de sección ahora es el <h2> nativo del
   template (ver functions.php: filtro woocommerce_product_description_heading
   con prioridad 20, que gana sobre el __return_empty_string del tema padre;
   estilos de color/tamaño/separador del <h2> viven ahí mismo, junto al
   ::after de la hoja, para mantener ambos juntos). Este pseudo-elemento
   genérico queda retirado para no duplicar el heading. :first-child porque
   algunos productos (ej. Frijol de Palo) traen su PROPIO <h2> real dentro
   de la descripción (contenido real, no debe heredar este estilo). */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description > h2:first-child {
	font-size: 19px;
	font-weight: 700;
	line-height: 1.3;
}
/* [Fase 2.6, punto 2] Rótulo propio del producto (párrafo pegado a la
   lista — dato real de post_content, confirmado con SQL: la mayoría de
   productos con checklist traen literalmente "Especificaciones:" antes del
   <ul>, ej. post 663). Redundante visualmente contra el nuevo heading
   "Descripción y especificaciones" ya presente arriba. Se oculta SOLO en
   single product vía CSS — el dato sigue en post_content sin tocar, por si
   se necesita en otro contexto (feed, admin, etc.). No se borra contenido:
   los <li> con los datos reales siguen intactos e inalterados debajo.
   [Corrección — bug real encontrado] Esta regla ocultaba CUALQUIER <p>
   pegado a una <ul>, sin distinguir un rótulo corto ("Especificaciones:")
   de un párrafo con contenido real. Producto real afectado: Frijol
   Canario Peruano en Saco de 25kg (post 358) trae
   "<p><strong><img class="alignright" ...>Beneficios y Propiedades:
   </strong></p>" pegado a su <ul> — la imagen entera desaparecía junto
   con el rótulo. Se excluye explícitamente cualquier <p> que contenga una
   imagen alineada (:has(img.alignleft), :has(img.alignright)): esos SÍ
   deben seguir visibles siempre, es contenido real, no un rótulo vacío. */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description p:has(+ ul):not(:has(img.alignleft)):not(:has(img.alignright)) {
	display: none;
}
/* [Fase 2.6, punto 2] Con el rótulo ahora oculto (arriba), la lista ya NO
   debe perder su propia divisoria/espaciado — antes esta regla los ponía a
   0 asumiendo que el rótulo visible ya aportaba el borde superior. Con el
   rótulo display:none, "p + ul" seguía matcheando igual (display:none no
   saca al elemento del DOM ni de los selectores de hermanos), así que sin
   este ajuste la lista quedaba pegada al heading sin separación. Se deja
   que el <ul> use su borde/spacing propio (regla base de arriba) también
   en este caso. */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description p + ul::before {
	content: none;
}
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description ul li {
	position: relative;
	margin: 0;
	padding-left: 34px;
}
/* El padre separa ítems con li+li margin-top; aquí manda el row-gap */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description ul li + li {
	margin-top: 0;
}
/* [Fase 2, punto 11] Check minimalista: círculo blanco de 22px con borde y
   tilde. Antes usaba var(--oz-brand-accent) = #9bca46 (confirmado en Fase
   1.5, riesgo 5) — discrepancia real de 1 unidad por canal RGB contra el
   verde que Home usa hardcodeado (#9CCB47) en sus cards/separadores. Se
   fija el valor exacto de Home aquí (color LOCAL a esta sección, NO se
   toca la variable --oz-brand-accent global ni :root). */
body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description ul li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 0;
	width: 22px;
	height: 22px;
	box-sizing: border-box;
	border: 1.5px solid #9CCB47;
	border-radius: 50%;
	background: #ffffff;
	color: #9CCB47;
	font-size: 11px;
	font-weight: 700;
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* 6. Responsive: tabs usables, beneficios a 1 columna, menos padding,
   sin desbordes. */
@media (max-width: 767px) {
	body .oz-single-product .woocommerce-tabs {
		padding: 18px 16px 22px;
		border-radius: 10px;
	}
	body .oz-single-product .woocommerce-tabs ul.tabs {
		gap: 0 1.25rem;
	}
	body .oz-single-product .woocommerce-tabs .woocommerce-Tabs-panel--description ul {
		grid-template-columns: 1fr;
		column-gap: 0;
		row-gap: 14px;
	}
}

/* =========================================================================
   SERVICIOS — flujo de 6 etapas (Procesamiento/Distribución sin foto real
   todavía). Slot de imagen reservado: aspect-ratio/tamaño fijos vía CSS,
   sin texto "placeholder"/"pendiente" visible. Reemplazable desde Medios
   por la compañera del cliente sin tocar código. Scoped a la página
   Servicios (is_page(136)) desde el bloque que lo usa. */
.oz-servicios-img-slot {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: 10px;
	background: linear-gradient(135deg, #eef1e8 0%, #e4ebda 100%);
	border: 1px solid #dde3d2;
}

/* Botón CTA de WhatsApp al cierre de las 6 etapas (Punto 7, sección 3C del
   brief) — banda azul institucional, mismo tono que el resto del sitio.
   Botón blanco sobre fondo azul para máximo contraste/legibilidad. */
.oz-servicios-wsp-cta {
	display: inline-block;
	margin-top: 8px;
	padding: 14px 32px;
	background: #ffffff;
	color: #1F589F;
	font-weight: 600;
	border-radius: 999px;
	text-decoration: none;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.oz-servicios-wsp-cta:hover,
.oz-servicios-wsp-cta:focus-visible {
	color: #1F589F;
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
}

/* =========================================================================
   NOSOTROS/COMPAÑÍA — sección "Nuestra Trayectoria" (entre Introducción y
   Misión/Visión). Slot reservado con el mismo mecanismo de Servicios, pero
   look propio (radius mayor, sombra sutil) para que la sección tenga
   personalidad distinta al zigzag de Servicios. */
.oz-compania-trayectoria-slot {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 14px;
	background: linear-gradient(135deg, #eaf0f8 0%, #dde8f5 100%);
	border: 1px solid #cfdcee;
	box-shadow: 0 6px 20px rgba(31, 88, 159, 0.08);
	overflow: hidden;
}
.oz-compania-trayectoria-slot img {
	display: block;
}
@media (max-width: 767px) {
	body.page-id-134 .oz-pb-r-2-c-0,
	body.page-id-134 .oz-pb-r-2-c-1 {
		text-align: center;
	}
}

/* =========================================================================
   BOTÓN FLOTANTE DE WHATSAPP (Punto 7, sección 5-6 del brief) — implementación
   propia, sin plugin externo. Esquina inferior derecha, icono reconocible,
   no cubre contenido (tamaño moderado + margen fijo), visible en
   desktop/mobile, sin animación de rebote/pulso (solo transform sutil en
   hover, respeta prefers-reduced-motion), sin auto-popup. Punto único fijo
   en toda la navegación — no compite con otro elemento fixed conocido en
   este child theme (.oz-cat-drawer es un overlay de pantalla completa que
   solo se activa al abrir el drawer de categorías, no una esquina fija). */
.oz-wsp-float {
	position: fixed;
	right: 20px;
	bottom: 20px;
	z-index: 9000;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: #25D366;
	color: #ffffff;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.oz-wsp-float:hover,
.oz-wsp-float:focus-visible {
	color: #ffffff;
	transform: scale(1.06);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
}
@media (max-width: 480px) {
	.oz-wsp-float {
		right: 14px;
		bottom: 14px;
		width: 50px;
		height: 50px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.oz-wsp-float {
		transition: none;
	}
}

/* Presentaciones/formatos reales en ficha de producto mayorista (Cierre de
   observaciones, Punto 2) — mismo criterio visual que .oz-envasado-meta,
   sin badge de marca (los mayoristas no tienen marca propia). */
.oz-mayorista-meta {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px;
	/* El bloque ahora se imprime DEBAJO del título + separador (hook de
	   woocommerce_single_product_summary en prioridad 7, ver functions.php),
	   así que el aire va arriba y abajo, no solo abajo como cuando iba
	   encima del título. */
	margin: 4px 0 18px;
}
.oz-mayorista-meta__label {
	font-size: 12px;
	font-weight: 700;
	color: #1F589F;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.oz-mayorista-meta__pres {
	font-size: 13.5px;
	color: #6b7280;
}

/* =========================================================================
   NOSOTROS / «NUESTRA COMPAÑÍA» (/compania/, page-id 134) — CAPA VISUAL

   Por qué va aquí y no en el CSS Global del maquetador: desde OZ Maquetador
   Pro V2 la fuente de verdad de «global-classes.css» es wp_options
   (oz_pb_global_classes_css, ver includes/storage.php); el archivo del plugin
   quedó como semilla y ya no se lee. Este style.css sí se encola por archivo
   (y carga DESPUÉS del <style> inline del maquetador), así que es el único
   punto editable desde disco que gana la cascada sin tocar PHP ni JS.

   Selectores: raíz body.page-id-134 (misma convención que ya usa este child
   theme más arriba) + las clases automáticas del maquetador. Las
   .oz-pb-comp-*-p134-* llevan el ID de página, las .oz-pb-r-N-c-M no — por eso
   TODAS van scopeadas con body.page-id-134, si no pisarían otras páginas.
   Si la página se recrea con otro ID, actualizar ese 134.

   !important: el maquetador escribe style="" inline (padding, margin,
   background, color, font-size, border, gap) — sin !important esas
   propiedades no se pueden mover. Donde no hay inline (box-shadow,
   transform, transition, filter) se omite a propósito.
   Ojo: margin-left/right de las secciones --theme salen con !important desde
   el global.css generado (calc(50% - 50vw)) y son los que dan el ancho
   completo — por eso aquí solo se tocan margin-top / margin-bottom, nunca el
   shorthand `margin`.
   ========================================================================= */
body.page-id-134 .oz-pb-root {
	--pb-azul: #0268B3;
	--pb-azul-osc: #0a4b86;
	--pb-verde: var(--oz-brand-accent, #9bca46);
	--pb-texto: #4a5c72;
	--pb-linea: rgba(2, 104, 179, 0.10);
	--pb-sombra: 0 1px 2px rgba(11, 58, 110, 0.04), 0 22px 46px -28px rgba(11, 58, 110, 0.35);
	--pb-sombra-alta: 0 2px 6px rgba(11, 58, 110, 0.06), 0 34px 62px -30px rgba(11, 58, 110, 0.45);
	--pb-curva: cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* -------------------------------------------------------------------------
   1) HERO (.oz-pb-r-0) — la foto de planta iba a 360px fijos y sin ningún
   tratamiento: cortaba raro en pantallas anchas y chocaba de golpe contra el
   blanco de abajo. Ahora escala con el viewport, lleva un velo degradado que
   le da profundidad (y separa la foto del header azul) y un zoom lentísimo
   tipo Ken Burns. La sección conserva su overflow:hidden nativo, que es lo
   que recorta el zoom.
   ------------------------------------------------------------------------- */
/* Alto de la banda: sigue siendo fluido, pero contenido. El tope de 360px es
   el punto de ajuste — subirlo o bajarlo aquí cambia toda la banda. Con la
   tarjeta de introducción montando ~80px encima, quedan unos 280px de foto
   visible en pantalla ancha. */
body.page-id-134 .oz-pb-root .oz-pb-r-0 {
	height: auto !important;
	min-height: clamp(210px, 23vw, 360px) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-r-0 .oz-pb-section__media-bg {
	transform: scale(1.02);
	animation: ozCompaniaHeroZoom 26s ease-in-out infinite alternate;
}
@keyframes ozCompaniaHeroZoom {
	from { transform: scale(1.02); }
	to   { transform: scale(1.10); }
}
/* Velo: oscuro arriba (continúa el header azul), casi limpio al centro
   (se ve la planta) y otra vez oscuro abajo para que la tarjeta blanca de la
   introducción despegue del fondo. z-index 1 = mismo plano que .oz-pb-inner,
   pero como es ::after pinta encima; la fila no tiene contenido, no tapa nada. */
body.page-id-134 .oz-pb-root .oz-pb-r-0::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(
		180deg,
		rgba(6, 32, 64, 0.46) 0%,
		rgba(6, 32, 64, 0.08) 40%,
		rgba(6, 32, 64, 0.34) 100%
	);
}

/* -------------------------------------------------------------------------
   2) INTRODUCCIÓN (.oz-pb-r-1) — pasa de bloque suelto sobre blanco a tarjeta
   blanca elevada que monta sobre el hero. Es el gesto que más cambia la
   percepción de la página y no necesita tocar el layout guardado.
   overflow:visible es obligatorio: .oz-pb-section trae overflow:hidden (y el
   JS de entrada añade .oz-pb-reveal-clip), que recortaría la sombra.
   ------------------------------------------------------------------------- */
body.page-id-134 .oz-pb-root .oz-pb-r-1 {
	position: relative;
	z-index: 3;
	overflow: visible !important;
	margin-top: clamp(-84px, -5.2vw, -48px) !important;
	margin-bottom: clamp(48px, 5vw, 76px) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-r-1 > .oz-pb-inner {
	/* La sección es full-bleed (100vw): sin este width la tarjeta llegaría a
	   canto en cuanto la ventana baja de 1160px y perdería el efecto de placa
	   flotante. Con calc queda siempre un carril de aire a los lados. */
	width: calc(100% - clamp(32px, 5vw, 56px));
	max-width: 1160px;
	margin-left: auto;
	margin-right: auto;
	background: #ffffff;
	border-radius: 26px;
	padding: clamp(36px, 4.4vw, 66px) clamp(22px, 4vw, 70px);
	box-shadow: var(--pb-sombra);
}
/* Título «Nuestra Compañía»: 45px fijos se comían la pantalla en laptop y
   desbordaban en móvil. clamp + tracking negativo = titular actual. */
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r1-b0 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r1-b0 .oz-pb-text h2 {
	font-size: clamp(30px, 3.6vw, 46px) !important;
	line-height: 1.12 !important;
	font-weight: 700 !important;
	letter-spacing: -0.025em;
	margin-bottom: 0 !important;
}
/* Hojita separadora: se achica y se le da aire propio en vez de ir pegada. */
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-h3nrbj57 .oz-pb-image img {
	width: 42px;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-h3nrbj57 {
	margin-top: 10px !important;
	margin-bottom: 18px !important;
}
/* Párrafo: a 1440px de ancho la línea era ilegible. Se limita la medida y se
   abre el interlineado; el negro puro pasa a gris azulado. */
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r1-i2 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r1-i2 .oz-pb-text p {
	font-size: 17px !important;
	line-height: 1.85 !important;
	color: var(--pb-texto) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r1-i2 .oz-pb-text {
	max-width: 780px;
	margin-left: auto;
	margin-right: auto;
}

/* -------------------------------------------------------------------------
   3) MISIÓN / VISIÓN (.oz-pb-r-2) — eran dos cajas con borde gris de 1px
   sobre #fafafa: plano y sin jerarquía. Se convierten en tarjetas elevadas
   con barra de acento (azul → verde de marca) y elevación al hover, sobre un
   fondo con degradado suave en lugar del gris liso.
   ------------------------------------------------------------------------- */
body.page-id-134 .oz-pb-root .oz-pb-r-2 {
	background: linear-gradient(180deg, #ffffff 0%, #f3f8fd 45%, #eaf2fb 100%) !important;
	padding-top: clamp(64px, 7vw, 104px) !important;
	padding-bottom: clamp(64px, 7vw, 104px) !important;
}
/* Manchas de color muy tenues para que el fondo no sea un plano muerto.
   Va en ::before (z-index 0) porque .oz-pb-inner ya está en z-index 1. */
body.page-id-134 .oz-pb-root .oz-pb-r-2::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(680px 340px at 10% 0%, rgba(2, 104, 179, 0.09), transparent 70%),
		radial-gradient(560px 300px at 92% 100%, rgba(155, 202, 70, 0.16), transparent 70%);
}
body.page-id-134 .oz-pb-root .oz-pb-r-2 > .oz-pb-inner > .oz-pb-grid {
	gap: clamp(18px, 2.2vw, 30px) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0,
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1 {
	position: relative;
	overflow: hidden;
	background: #ffffff !important;
	border: 1px solid var(--pb-linea) !important;
	border-radius: 24px !important;
	padding: clamp(34px, 3.6vw, 54px) clamp(24px, 3vw, 46px) !important;
	box-shadow: var(--pb-sombra);
	transition: transform 0.45s var(--pb-curva), box-shadow 0.45s var(--pb-curva);
}
/* Barra de acento superior. Siempre visible (no solo en hover) para que en
   táctil la tarjeta se lea igual de terminada. */
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0::before,
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	background: linear-gradient(90deg, var(--pb-azul) 0%, var(--pb-verde) 100%);
}
/* El hover gana en especificidad al `transform:none` que el sistema de
   entrada (.oz-pb-reveal) deja puesto al terminar la animación. */
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0:hover,
body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1:hover {
	transform: translateY(-6px);
	box-shadow: var(--pb-sombra-alta);
}
/* Títulos de tarjeta: 45px era tamaño de titular de página, no de card. */
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-b0 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-b0 .oz-pb-text h3,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i3 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i3 .oz-pb-text h3 {
	font-size: clamp(26px, 2.6vw, 34px) !important;
	line-height: 1.15 !important;
	font-weight: 700 !important;
	letter-spacing: -0.02em;
	margin-bottom: 0 !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-cvw8p299 .oz-pb-image img,
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-3khpv6jj .oz-pb-image img {
	width: 36px;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-cvw8p299,
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-3khpv6jj {
	margin-top: 8px !important;
	margin-bottom: 16px !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i2 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i2 .oz-pb-text p,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i5 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i5 .oz-pb-text p {
	font-size: 16.5px !important;
	line-height: 1.8 !important;
	color: var(--pb-texto) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i2 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r2-i5 .oz-pb-text {
	max-width: 46ch;
	margin-left: auto;
	margin-right: auto;
}

/* -------------------------------------------------------------------------
   4) CALIDAD (.oz-pb-r-3) — la sección no tenía respiración vertical (padding
   0), la foto iba a canto vivo y el texto centrado dentro de una columna
   angosta al lado de una imagen alta se leía anticuado. Se alinean las dos
   columnas al centro óptico, la foto se redondea con sombra, y el texto pasa
   a alineación izquierda en escritorio (en móvil vuelve al centro, ver más
   abajo, porque apilado el centrado sí funciona).
   ------------------------------------------------------------------------- */
body.page-id-134 .oz-pb-root .oz-pb-r-3 {
	padding-top: clamp(56px, 6vw, 96px) !important;
	padding-bottom: clamp(56px, 6vw, 96px) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-r-3 > .oz-pb-inner > .oz-pb-grid {
	align-items: center;
	gap: clamp(24px, 3vw, 48px) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-r-3-c-0 {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	padding-left: clamp(16px, 2.4vw, 40px) !important;
	padding-right: clamp(16px, 2.4vw, 40px) !important;
}
/* El radio se pone en el WRAPPER del bloque imagen: imagen.css hace que
   .oz-pb-image y el <img> hereden border-radius del bloque, y ese bloque ya
   tiene overflow:hidden, que es lo que recorta el zoom del hover. */
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0 {
	border-radius: 26px !important;
	box-shadow: var(--pb-sombra-alta);
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0 .oz-pb-image img {
	transition: transform 0.7s var(--pb-curva);
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0:hover .oz-pb-image img {
	transform: scale(1.04);
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i2 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i2 .oz-pb-text h3 {
	font-size: clamp(28px, 3vw, 40px) !important;
	line-height: 1.15 !important;
	font-weight: 700 !important;
	letter-spacing: -0.022em;
	margin-bottom: 0 !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i4 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i4 .oz-pb-text p,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i5 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i5 .oz-pb-text p {
	font-size: 16.5px !important;
	line-height: 1.8 !important;
	color: var(--pb-texto) !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i4 .oz-pb-text,
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i5 .oz-pb-text {
	max-width: 58ch;
}
/* Son dos bloques de texto distintos (infraestructura / certificación) y el
   primero venía con margin 0: se leían como un solo párrafo corrido. */
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-r3-i4 {
	margin-bottom: 16px !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-9k6q37gz .oz-pb-image img {
	width: 36px;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-9k6q37gz {
	margin-top: 8px !important;
	margin-bottom: 18px !important;
}
/* Los «puntos» decorativos competían en peso con el texto: se bajan de tono. */
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-i1 .oz-pb-image img,
body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-i6 .oz-pb-image img {
	opacity: 0.45;
}
/* Certificadoras (SENASA, Control Union, CERPER, SGS): el slider de logos iba
   suelto sobre el fondo. Se le da placa propia y los logos entran en gris
   —el ruido de sus fondos blancos y colores desiguales desaparece— y toman
   color al pasar por encima. */
/* Sin placa alrededor: el módulo del slider (images.css, layout "logos") ya
   enmarca cada logo por su cuenta, así que una caja extra era una tarjeta
   dentro de otra — y si la tira tarda en inicializarse, esa caja se queda
   visible y vacía. Solo se le da aire. */
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-ssxndy4q {
	margin-top: 8px !important;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-ssxndy4q .ozs__img {
	filter: grayscale(1);
	opacity: 0.7;
	transition: filter 0.35s ease, opacity 0.35s ease, transform 0.35s ease;
}
body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-ssxndy4q .ozs__slide:hover .ozs__img {
	filter: none;
	opacity: 1;
	transform: translateY(-2px);
}

/* Alineación izquierda del bloque «Calidad» solo cuando hay dos columnas
   reales. Los text-align vienen inline en .oz-pb-text y también en el propio
   <h3>/<p>, por eso hacen falta las tres reglas con !important. */
@media (min-width: 901px) {
	body.page-id-134 .oz-pb-root .oz-pb-r-3-c-1 .oz-pb-text,
	body.page-id-134 .oz-pb-root .oz-pb-r-3-c-1 .oz-pb-text h3,
	body.page-id-134 .oz-pb-root .oz-pb-r-3-c-1 .oz-pb-text p {
		text-align: left !important;
	}
	body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-i1 .oz-pb-image,
	body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-9k6q37gz .oz-pb-image {
		justify-content: flex-start !important;
	}
}

/* -------------------------------------------------------------------------
   5) RESPONSIVE — el apilado automático del maquetador (global.css generado,
   "OZ PB FIX: responsive stacking", grid-column:1/-1 !important) solo entra
   a partir de 768px. Entre 769px y ~900px las dos columnas seguían lado a
   lado y la de texto de Calidad quedaba demasiado angosta para leerse. Se
   adelanta el apilado a 900px para esa franja (tablet en vertical).
   ------------------------------------------------------------------------- */
@media (max-width: 900px) {
	body.page-id-134 .oz-pb-root .oz-pb-r-2 > .oz-pb-inner > .oz-pb-grid,
	body.page-id-134 .oz-pb-root .oz-pb-r-3 > .oz-pb-inner > .oz-pb-grid {
		grid-template-columns: minmax(0, 1fr) !important;
	}
	body.page-id-134 .oz-pb-root .oz-pb-r-3 > .oz-pb-inner > .oz-pb-grid {
		gap: 32px !important;
	}
	body.page-id-134 .oz-pb-root .oz-pb-r-3-c-1 {
		padding-left: clamp(16px, 4vw, 30px) !important;
		padding-right: clamp(16px, 4vw, 30px) !important;
	}
	/* Sin hover real en táctil: la elevación solo aportaría saltos raros. */
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0:hover,
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1:hover {
		transform: none;
		box-shadow: var(--pb-sombra);
	}
}
@media (max-width: 600px) {
	body.page-id-134 .oz-pb-root .oz-pb-r-1 > .oz-pb-inner {
		border-radius: 20px;
	}
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0,
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1 {
		border-radius: 18px !important;
	}
	body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0 {
		border-radius: 18px !important;
	}
}
@media (prefers-reduced-motion: reduce) {
	body.page-id-134 .oz-pb-root .oz-pb-r-0 .oz-pb-section__media-bg {
		animation: none;
		transform: none;
	}
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-0,
	body.page-id-134 .oz-pb-root .oz-pb-r-2-c-1,
	body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0 .oz-pb-image img,
	body.page-id-134 .oz-pb-root .oz-pb-comp-text-p134-ssxndy4q .ozs__img {
		transition: none;
	}
	body.page-id-134 .oz-pb-root .oz-pb-comp-image-p134-r3-b0:hover .oz-pb-image img {
		transform: none;
	}
}

/* =========================================================================
   PORTADA (page-id 15) — CAPA VISUAL

   OJO antes de tocar esto: la Home ya tiene una capa CSS propia y muy
   trabajada en functions.php — <style id="oz-home-round1-scoped">, impreso
   en wp_head bajo is_page(15). Ese <style> se imprime DESPUÉS de este
   archivo (wp_print_styles corre en wp_head prioridad 8; ese add_action va
   en la 10), así que a igualdad de especificidad gana él.

   Por eso todos los selectores de aquí arrancan en body.page-id-15: le sacan
   una clase de ventaja y ganan sin necesidad de !important extra. Y por eso
   esta capa es ADITIVA — forma, profundidad y ritmo. No deshace ninguna de
   las decisiones ya afinadas allá (recorte circular de producto, ojo azul,
   cortina verde de "Cotizar", círculo del ícono de Servicios, hover de las
   cards verdes, separadores de título). Si algo de aquí estorba, se borra
   este bloque entero y la Home vuelve exactamente a como estaba.

   El !important sigue el mismo criterio que el bloque de /compania/: solo
   donde el maquetador emite style="" inline (padding, margin, background,
   color, font-size, border, gap, grid-template-columns).
   ========================================================================= */
body.page-id-15 .oz-pb-root {
	/* Mismos tokens que el bloque de /compania/ (misma paleta de marca),
	   redeclarados aquí para que cada bloque sea autónomo. */
	--pb-azul: #1f589f;
	--pb-verde: var(--oz-brand-accent, #9bca46);
	--pb-texto: #4a5c72;
	--pb-linea: rgba(31, 88, 159, 0.10);
	--pb-sombra: 0 1px 2px rgba(11, 58, 110, 0.04), 0 22px 46px -28px rgba(11, 58, 110, 0.35);
	--pb-sombra-alta: 0 2px 6px rgba(11, 58, 110, 0.06), 0 34px 62px -30px rgba(11, 58, 110, 0.45);
	--pb-curva: cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* -------------------------------------------------------------------------
   1) HERO (slider oz-smart, fila 0)

   El problema real era de legibilidad: texto blanco puro sobre fotos de
   campo con cielo claro, sin ningún velo. Se añade un degradado sobre la
   foto (no sobre el texto) y una sombra suave en el tipo.

   El velo va en ::after de la sección de cada slide: .oz-pb-section__media-bg
   está en z-index 0 y .oz-pb-inner en z-index 1, así que un ::after en
   z-index 0 queda exactamente en medio — encima de la foto, debajo del texto.
   ------------------------------------------------------------------------- */
/* El slide mide más alto que el bloque de contenido (350px de min-height),
   así que el titular quedaba pegado al borde superior con medio hero vacío
   debajo. Se estira la cadena inner → grid → columna al alto del slide y se
   centra: la columna ya es flex en columna, solo le faltaba el eje. */
body.page-id-15 .oz-smart__slide .oz-pb-section > .oz-pb-inner,
body.page-id-15 .oz-smart__slide .oz-pb-section > .oz-pb-inner > .oz-pb-grid,
body.page-id-15 .oz-smart__slide .oz-pb-col {
	height: 100%;
}
body.page-id-15 .oz-smart__slide .oz-pb-col {
	justify-content: center;
}
body.page-id-15 .oz-smart__slide .oz-pb-section--has-media-bg::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background: linear-gradient(
		180deg,
		rgba(6, 26, 52, 0.52) 0%,
		rgba(6, 26, 52, 0.20) 45%,
		rgba(6, 26, 52, 0.62) 100%
	);
}
/* .banner-productos está en DOS elementos (el wrapper del bloque y el div
   interno del contenido). El aire se toca solo en el interno para no sumar
   el padding dos veces. */
body.page-id-15 .oz-smart .oz-pb-text > .banner-productos {
	padding: clamp(36px, 5vw, 76px) 20px;
}
/* line-height 0.5 era un valor imposible: en el slide 3, cuyo titular tiene
   un salto de línea ("PROCESAMIENTO, SELECCIÓN Y / ENVASADO"), las dos
   líneas se montaban una sobre otra. Se pasa a 1.06 y el tamaño se hace
   fluido para que no haya que mantener cuatro breakpoints a mano. */
body.page-id-15 .oz-smart .banner-productos__titulo {
	font-size: clamp(30px, 4.4vw, 60px) !important;
	line-height: 1.06 !important;
	letter-spacing: -0.015em;
	margin: 0 0 16px !important;
	text-shadow: 0 2px 24px rgba(0, 20, 45, 0.45);
}
body.page-id-15 .oz-smart .banner-productos__texto {
	max-width: 640px;
	margin: 0 auto 30px !important;
	font-size: clamp(15px, 1.3vw, 19px) !important;
	line-height: 1.6 !important;
	text-shadow: 0 1px 14px rgba(0, 20, 45, 0.40);
}
/* Botones: mismos colores de marca, forma actual (píldora, algo más
   grandes, con sombra propia para despegarlos de la foto). */
body.page-id-15 .oz-smart .banner-btn {
	min-height: 50px;
	padding: 0 30px;
	font-size: 15px;
	letter-spacing: 0.02em;
	border-radius: 999px;
	box-shadow: 0 14px 28px -14px rgba(0, 0, 0, 0.6);
	transition: transform 0.25s var(--pb-curva), box-shadow 0.25s var(--pb-curva), filter 0.2s ease;
}
body.page-id-15 .oz-smart .banner-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 20px 36px -14px rgba(0, 0, 0, 0.65);
}

/* -------------------------------------------------------------------------
   2) FRANJA "Venta Menestras al por Mayor Lima Perú" (fila 1) — 35px de
   padding y el párrafo pegado al título la dejaban como un pie de foto del
   slider en vez de como la entrada de la página.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-r-1 {
	padding-top: clamp(46px, 4.6vw, 74px) !important;
	padding-bottom: clamp(46px, 4.6vw, 74px) !important;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r1-b0 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r1-b0 .oz-pb-text h2 {
	font-size: clamp(25px, 2.9vw, 38px) !important;
	line-height: 1.16 !important;
	font-weight: 700 !important;
	letter-spacing: -0.02em;
	color: #12325c !important;
	margin-bottom: 14px !important;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r1-i1 .oz-pb-text {
	max-width: 760px;
	margin-left: auto;
	margin-right: auto;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r1-i1 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r1-i1 .oz-pb-text p {
	font-size: 17px !important;
	line-height: 1.8 !important;
	color: var(--pb-texto) !important;
}

/* -------------------------------------------------------------------------
   3) TÍTULOS DE SECCIÓN (filas 2, 4, 6, 8) — 45px fijos desbordaban en
   laptop y móvil. Se hacen fluidos; el color, el margen inferior de 24px y
   los separadores de hojitas son de la capa de functions.php y no se tocan.
   Se apunta a la clase del componente concreto, no a la fila entera: en la
   fila 8 el párrafo es hermano del título y se iría a 44px.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r2-b0 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r2-b0 .oz-pb-text h1,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r4-b0 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r4-b0 .oz-pb-text h1,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r6-b0 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r6-b0 .oz-pb-text h1,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r8-b0 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r8-b0 .oz-pb-text h1 {
	font-size: clamp(28px, 3.3vw, 44px) !important;
	line-height: 1.12 !important;
	font-weight: 700 !important;
	letter-spacing: -0.02em;
}

/* -------------------------------------------------------------------------
   4) CARDS DE "NUESTROS SERVICIOS" (fila 3) — eran rectángulos a canto vivo
   apoyados sobre la textura del fondo. Se les da radio, sombra y elevación
   al hover. TODO el comportamiento interno (círculo blanco→verde, máscara
   del ícono, panel verde→blanco) sigue viviendo en functions.php intacto.

   overflow:hidden es seguro aquí: el círculo del ícono se superpone con
   márgenes de -30px pero siempre dentro del alto de la card, nunca sale por
   los lados; y la sombra del panel verde en hover apunta hacia ARRIBA, o
   sea hacia dentro de la card.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-home-servicio-card-6,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-7,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-8,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-9 {
	background: #ffffff;
	border-radius: 18px !important;
	overflow: hidden;
	box-shadow: var(--pb-sombra);
	transition: transform 0.45s var(--pb-curva), box-shadow 0.45s var(--pb-curva);
}
body.page-id-15 .oz-pb-root .oz-home-servicio-card-6:hover,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-7:hover,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-8:hover,
body.page-id-15 .oz-pb-root .oz-home-servicio-card-9:hover {
	transform: translateY(-6px);
	box-shadow: var(--pb-sombra-alta);
}

/* -------------------------------------------------------------------------
   5) PRODUCTOS DESTACADOS (fila 5) — la ficha (recorte circular, ojo azul,
   botón "Cotizar" con cortina verde) queda tal cual; solo se le añade
   materialidad: sombra bajo el círculo, zoom contenido de la foto al pasar,
   esquinas suaves en los dos botones y el nombre reaccionando al hover.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__media {
	box-shadow: 0 1px 2px rgba(11, 58, 110, 0.05), 0 16px 34px -22px rgba(11, 58, 110, 0.5);
	transition: transform 0.4s var(--pb-curva), box-shadow 0.4s var(--pb-curva);
}
/* La imagen ya está centrada con translate(-50%,-50%) desde functions.php:
   el scale se AÑADE a ese translate, no lo reemplaza, o la foto saltaría
   fuera del círculo. */
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__media img {
	transition: transform 0.6s var(--pb-curva);
}
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__inner:hover .oz-home-fp__media {
	transform: translateY(-4px);
	box-shadow: 0 2px 6px rgba(11, 58, 110, 0.08), 0 26px 46px -22px rgba(11, 58, 110, 0.6);
}
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__inner:hover .oz-home-fp__media img {
	transform: translate(-50%, -50%) scale(1.06);
}
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__title a {
	transition: color 0.25s ease;
}
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__inner:hover .oz-home-fp__title a {
	color: var(--pb-azul);
}
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__actions .yith-wcqv-button,
body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__wsp {
	border-radius: 10px;
}

/* -------------------------------------------------------------------------
   6) PUBLICACIONES (fila 7)

   Arreglo de fondo: los tres bloques de imagen están en modo "Escalar (sin
   recorte)" del maquetador, que emite width:auto + max-height:250px +
   object-fit:contain con !important. Cada foto tomaba su ancho natural, así
   que las tres cards mostraban imágenes de ancho distinto, alineadas a la
   izquierda y con un hueco blanco al lado. Se normalizan a una proporción
   común recortando por el centro.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-r-7 .oz-pb-block--image .oz-pb-image img {
	width: 100% !important;
	height: 100% !important;
	max-height: none !important;
	aspect-ratio: 16 / 10 !important;
	object-fit: cover !important;
	transition: transform 0.6s var(--pb-curva);
}
body.page-id-15 .oz-pb-root .oz-pb-r-7 .oz-pb-block--image {
	overflow: hidden;
}
/* La fila venía con padding-top 0: el separador de hojitas de "Publicaciones"
   quedaba tocando el borde superior de las tarjetas. */
body.page-id-15 .oz-pb-root .oz-pb-r-7 {
	padding-top: clamp(24px, 2.6vw, 40px) !important;
}
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2 {
	border-radius: 18px !important;
	overflow: hidden;
	padding-bottom: 26px !important;
	box-shadow: var(--pb-sombra);
	transition: transform 0.45s var(--pb-curva), box-shadow 0.45s var(--pb-curva);
}
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0:hover,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1:hover,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2:hover {
	transform: translateY(-6px);
	box-shadow: var(--pb-sombra-alta);
}
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0:hover .oz-pb-block--image img,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1:hover .oz-pb-block--image img,
body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2:hover .oz-pb-block--image img {
	transform: scale(1.05);
}
/* Aire interior: los textos salían a ras del borde de la card. */
body.page-id-15 .oz-pb-root .oz-pb-r-7 .oz-pb-block--text {
	padding-left: 22px !important;
	padding-right: 22px !important;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i1,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i4,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i7 {
	margin-top: 20px !important;
	margin-bottom: 10px !important;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i2 .oz-pb-text p,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i5 .oz-pb-text p,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r7-i8 .oz-pb-text p {
	line-height: 1.75 !important;
	color: var(--pb-texto) !important;
}
/* "Leer más": se mantiene el barrido de gradiente gris→verde de
   functions.php (background-position en el hover); aquí solo cambia la
   forma — píldora, algo más de cuerpo y sin el borde gris que lo apagaba. */
body.page-id-15 .oz-pb-root .oz-pb-r-7 .oz-pb-btn {
	padding: 11px 26px;
	border: 0;
	border-radius: 999px;
	font-weight: 700;
	letter-spacing: 0.02em;
	box-shadow: 0 12px 24px -14px rgba(120, 180, 40, 0.9);
}

/* -------------------------------------------------------------------------
   7) CERTIFICACIONES (filas 8 y 9) — los cuatro logos quedaban sueltos y
   diminutos en una franja de 1440px. Se centran en una placa propia, con el
   mismo tratamiento que en /compania/: gris en reposo (los fondos blancos y
   los colores dispares de los JPG dejan de hacer ruido) y color al pasar.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r8-i2 .oz-pb-text {
	max-width: 780px;
	margin-left: auto;
	margin-right: auto;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r8-i2 .oz-pb-text,
body.page-id-15 .oz-pb-root .oz-pb-comp-text-p15-r8-i2 .oz-pb-text p {
	font-size: 16.5px !important;
	line-height: 1.8 !important;
	color: var(--pb-texto) !important;
}
/* Los cuatro logos ya vienen enmarcados por el propio módulo del slider
   (images.css, layout "logos": placa blanca, borde, radio, borde verde al
   pasar). No se les añade una segunda caja alrededor —sería una tarjeta
   dentro de otra— solo se centra la tira, que suelta en 1440px quedaba
   perdida a la izquierda, y se apagan los logos en reposo. */
body.page-id-15 .oz-pb-root .oz-pb-r-9 > .oz-pb-inner {
	max-width: 920px;
}
body.page-id-15 .oz-pb-root .oz-pb-r-9 .ozs__img {
	filter: grayscale(1);
	opacity: 0.72;
	transition: filter 0.35s ease, opacity 0.35s ease;
}
body.page-id-15 .oz-pb-root .oz-pb-r-9 .ozs__slide:hover .ozs__img {
	filter: none;
	opacity: 1;
}

/* -------------------------------------------------------------------------
   8) BANNER SUPREMO (fila 10) — es un enlace a WhatsApp, así que además de
   redondearlo y darle sombra conviene que responda al puntero.
   ------------------------------------------------------------------------- */
body.page-id-15 .oz-pb-root .oz-pb-r-10 {
	padding-top: clamp(30px, 3vw, 48px) !important;
	padding-bottom: clamp(40px, 4vw, 64px) !important;
}
body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0 {
	border-radius: 22px !important;
	overflow: hidden;
	box-shadow: var(--pb-sombra-alta);
}
body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0 img {
	transition: transform 0.7s var(--pb-curva);
}
body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0:hover img {
	transform: scale(1.03);
}

/* -------------------------------------------------------------------------
   9) RESPONSIVE Y MOVIMIENTO
   ------------------------------------------------------------------------- */
@media (max-width: 900px) {
	/* Publicaciones: el apilado nativo del maquetador entra recién en 768px;
	   entre 769 y 900 las tres cards quedaban demasiado angostas. */
	body.page-id-15 .oz-pb-root .oz-pb-r-7 > .oz-pb-inner > .oz-pb-grid {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 24px !important;
	}
	/* Sin hover real en táctil, la elevación solo produce saltos. */
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-6:hover,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-7:hover,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-8:hover,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-9:hover,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0:hover,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1:hover,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2:hover {
		transform: none;
		box-shadow: var(--pb-sombra);
	}
}
@media (max-width: 600px) {
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-6,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-7,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-8,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-9,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2 {
		border-radius: 14px !important;
	}
	body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0 {
		border-radius: 14px !important;
	}
}
@media (prefers-reduced-motion: reduce) {
	body.page-id-15 .oz-smart .banner-btn,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-6,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-7,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-8,
	body.page-id-15 .oz-pb-root .oz-home-servicio-card-9,
	body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__media,
	body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__media img,
	body.page-id-15 .oz-pb-root .oz-pb-r-7 .oz-pb-block--image .oz-pb-image img,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2,
	body.page-id-15 .oz-pb-root .oz-pb-r-9 .ozs__img,
	body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0 img {
		transition: none;
	}
	body.page-id-15 .oz-pb-root .oz-pb-r-5 .oz-home-fp__inner:hover .oz-home-fp__media img {
		transform: translate(-50%, -50%);
	}
	body.page-id-15 .oz-pb-root .oz-pb-comp-image-p15-r10-b0:hover img,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-0:hover .oz-pb-block--image img,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-1:hover .oz-pb-block--image img,
	body.page-id-15 .oz-pb-root .oz-pb-r-7-c-2:hover .oz-pb-block--image img {
		transform: none;
	}
}

