/* ================== Variables de tema (no chocan con tu header) ================== */
:root{
--lh-primary:#0e2144;      /* azul oscuro */
--lh-accent:#2b67b6;       /* azul acento */
--lh-surface:#f4f6f9;      /* fondo suave */
--lh-ink:#0e2144;          /* texto principal */
--lh-muted:#667489;        /* texto secundario */
}

.partners-intro{
position: relative;
padding: clamp(36px, 4.5vw, 72px) 0 28px;
background: var(--lh-surface);
color: var(--lh-ink);            /* forzamos color oscuro */
overflow: clip;
isolation: isolate;
}
.partners-intro .container{
position: relative;
z-index: 1;                      /* contenido arriba de decoraciones */
max-width: 1160px;
margin-inline: auto;
padding-inline: clamp(16px, 4vw, 32px);
}
/* “manchas” decorativas */
.partners-intro::before{
content:"";
position:absolute; inset: -30% -10% auto -10%;
height: clamp(420px, 48vw, 640px);
background:
    radial-gradient(50% 60% at 20% 30%, rgba(43,103,182,.22), transparent 60%),
    radial-gradient(40% 50% at 70% 50%, rgba(14,33,68,.18), transparent 60%);
filter: blur(30px);
opacity:.75;
z-index:0;
transform: translateY(0);
animation: floaty 14s ease-in-out infinite alternate;
}
/* barra superior finita con degradado */
.partners-intro::after{
content:"";
position:absolute; inset: 0 0 auto 0; height: 3px;
background: linear-gradient(90deg, var(--lh-primary), var(--lh-accent));
opacity:.55;
z-index:0;
}

/* Kicker */
.partners-kicker{
margin: 0 0 10px 0;
font-weight: 800;
letter-spacing: .1em;
text-transform: uppercase;
color: var(--lh-accent) !important;
font-size: clamp(.7rem, .75vw, .85rem);
}

/* Título compacto y legible */
.partners-title{
margin: 0;
max-width: 40ch;                                 /* columna más ancha */
font-weight: 800;                                 /* menos grueso que 900 */
color: var(--lh-ink) !important;                  /* evita herencia de blanco */
line-height: 1.18;
font-size: clamp(1.15rem, 2.4vw, 1.7rem);
letter-spacing: .1px;
text-wrap: balance;
}

/* Subrayado fluido para palabras clave (opcional en el HTML con <span class="hl">) */
.partners-title .hl{
background: linear-gradient(transparent 70%, rgba(43,103,182,.18) 0) no-repeat;
background-size: 100% 0%;
border-radius: 4px;
padding: 0 .06em;
transition: background-size .6s cubic-bezier(.2,.8,.2,1);
}
.partners-title .hl:hover{ background-size: 100% 100%; }

/* Subtítulo breve */
.partners-sub{
margin: 12px 0 0 0;
color: var(--lh-muted) !important;
font-size: clamp(.95rem, 1.2vw, 1.05rem);
max-width: 60ch;
}

/* Animación suave del fondo */
@keyframes floaty{ to{ transform: translateY(12px); opacity:.85; } }

/* Accesibilidad: reduced motion */
@media (prefers-reduced-motion: reduce){
.partners-intro::before{ animation:none; }
.partners-title .hl{ transition: none; }
}

/* Ajuste extra en móviles pequeños */
@media (max-width: 420px){
.partners-title{ font-size: 1.05rem; line-height: 1.22; }
.partners-sub{ font-size: .95rem; }
}

/* ========================================================================== */
/* ====================  BLOQUE: GRID DE EMPRESAS (brands)  ================= */
/* ========================================================================== */
:root{
--brand-radius: 22px;
--brand-shadow: 0 12px 34px rgba(10, 34, 66, .08);
--brand-shadow-hover: 0 18px 46px rgba(10, 34, 66, .14);
--brand-border: 1px solid rgba(10, 34, 66, .06);
--brand-bg: #ffffff;
--brand-text: var(--lh-ink);
--brand-muted: #6a788b;
}

.brands-section{
padding: clamp(56px,6vw,96px) 0;
background: #f4f6f9;
}
.brands-section .container{
max-width: 1160px;                        /* evita que se peguen a bordes */
margin-inline: auto;
padding-inline: clamp(16px, 4vw, 32px);
}

.brands-title{
margin: 0 0 clamp(26px,3vw,38px) 0;
font-size: clamp(1.4rem,3.2vw,2.1rem);
color: var(--brand-text);
font-weight: 800;
letter-spacing: .3px;
}

/* Grid auto-ajustable con gap amplio */
.brands-grid{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); /* ajusta 260-320 según tu gusto */
gap: clamp(18px, 2.4vw, 32px);
padding: 0;
margin: 0;
}

/* Tarjetas */
.brand-card{
list-style: none;
opacity: 0;                                   /* reveal */
transform: translateY(14px) scale(.98);
animation: brand-reveal .8s cubic-bezier(.2,.8,.2,1) forwards;
background: var(--brand-bg);
border: var(--brand-border);
border-radius: var(--brand-radius);
box-shadow: var(--brand-shadow);
overflow: clip;
position: relative;
isolation: isolate;
transition: transform .35s ease, box-shadow .35s ease;
}
.brand-card:nth-child(1){ animation-delay: .05s; }
.brand-card:nth-child(2){ animation-delay: .12s; }
.brand-card:nth-child(3){ animation-delay: .19s; }
.brand-card:nth-child(4){ animation-delay: .26s; }
.brand-card:nth-child(5){ animation-delay: .33s; }

.brand-card figure{ 
margin: 0; 
display: grid; 
grid-template-rows: auto 1fr; 
height: 100%;
}

.brand-card img{
width: 100%;
aspect-ratio: 16 / 10;
height: auto;
object-fit: cover;
display: block;
filter: saturate(.96) contrast(1.02);
transition: transform .7s cubic-bezier(.2,.8,.2,1);
}

.brand-card figcaption{
padding: clamp(18px, 2.2vw, 22px) clamp(18px, 2.2vw, 22px) clamp(20px, 2.4vw, 26px);
}

.brand-card h3{
margin: 0 0 8px 0;
font-size: clamp(1.02rem, 1.7vw, 1.15rem);
font-weight: 800;
color: var(--brand-text);
}

.brand-card p{
margin: 0;
font-size: clamp(.95rem, 1.4vw, 1rem);
line-height: 1.35;
color: var(--brand-muted);
max-width: 46ch;                              /* limita líneas largas */
}

/* Hover: elevación + sutil zoom */
.brand-card:hover{ transform: translateY(-3px); box-shadow: var(--brand-shadow-hover); }
.brand-card:hover img{ transform: scale(1.04); }

/* Brillo diagonal sutil */
.brand-card::after{
content:"";
position:absolute; inset:0;
background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.25) 48%, rgba(255,255,255,0) 66%);
transform: translateX(-120%);
transition: transform .9s cubic-bezier(.2,.8,.2,1);
pointer-events: none;
mix-blend-mode: screen;
}
.brand-card:hover::after{ transform: translateX(120%); }

/* Animación de revelado */
@keyframes brand-reveal{ to{ opacity:1; transform: translateY(0) scale(1); } }

/* Accesibilidad: reduced motion */
@media (prefers-reduced-motion: reduce){
.brand-card, .brand-card:hover, .brand-card img, .brand-card::after{
    animation: none !important;
    transition: none !important;
    transform: none !important;
}
.brand-card{ opacity:1; }
}

/* Responsive fino */
@media (max-width: 768px){
.brands-grid{ gap: 18px; }
.brands-section{ padding: 44px 0 64px; }
}
