/* ==========================================================================
   gss-loc — Localizador de Partners (rediseño 2026)
   Marker raíz: .gss-loc  (aplicado con el_class en las filas WPBakery)
   Re-skin sobre el Portfolio + List Filter nativos de Impreza. El filtrado
   por región/nivel sigue siendo el nativo (server-side); este CSS solo
   cambia la piel. Todo selector va acotado bajo .gss-loc.
   Variables de marca autocontenidas (no depende de tokens.css global).
   ========================================================================== */

.gss-loc {
  --gss-neon-blue:   #5078ff;
  --gss-neon-600:    #4166e6;
  --gss-neon-100:    #eaeefc;
  --gss-neon-50:     #f4f6ff;
  --gss-aqua:        #00ffd7;
  --gss-sky:         #50dcff;
  --gss-ink:         #041438;
  --gss-ink-950:     #020a22;
  --gss-gray:        #787882;
  --gss-ink-200:     #dfe3ea;
  --gss-ink-100:     #eef1f6;
  --gss-ink-50:      #f7f8fb;
  --gss-white:       #ffffff;
  --gss-grad-hero:   linear-gradient(115deg,#041438 0%,#0f2560 42%,#3656b8 72%,#00ffd7 128%);
  --gss-grad-aqua:   linear-gradient(90deg,#5078ff 0%,#00ffd7 100%);
  --gss-shadow-lg:   0 16px 32px rgba(4,20,56,.10),0 4px 8px rgba(4,20,56,.05);
  --gss-shadow-glow: 0 12px 40px rgba(80,120,255,.22);
  --gss-ease:        cubic-bezier(.2,.8,.2,1);
  --gss-font: 'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI','Helvetica Neue',Arial,sans-serif;
  font-family: var(--gss-font);
}
.gss-loc *, .gss-loc *::before, .gss-loc *::after { box-sizing: border-box; }
.gss-loc img { max-width: 100%; }

/* ==========================================================================
   HERO  (.gss-loc-hero — Raw HTML, fila full-width)
   ========================================================================== */
/* Eliminar el hueco blanco entre el menú (header) y el hero: anula el padding/
   margen superior que Impreza mete en la sección/columna de la fila del hero. */
.gss-loc-hero-row { padding-top: 0 !important; margin-top: 0 !important; }
.gss-loc-hero-row > .l-section-h { padding-top: 0 !important; padding-bottom: 0 !important; }
.gss-loc-hero-row .l-section-h > .g-cols > .wpb_column,
.gss-loc-hero-row .wpb_column > .vc_column-inner { padding-top: 0 !important; }

.gss-loc-hero {
  position: relative;
  background: var(--gss-grad-hero);
  color: #fff;
  overflow: hidden;
  padding: 96px 24px 150px;
  text-align: center;
  contain: layout paint;
}
.gss-loc-hero__fx {                 /* canvas de partículas */
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  opacity: .55; pointer-events: none;
}
.gss-loc-hero__in {
  position: relative; z-index: 2;
  max-width: 1000px; margin: 0 auto;
  display: flex; flex-direction: column; align-items: center;
}
.gss-loc-hero__eyebrow {
  font-size: 12px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--gss-aqua) !important; margin: 0 0 16px;
}
.gss-loc-hero__title {
  font-size: clamp(38px,6vw,72px); font-weight: 800;
  line-height: 1.08; letter-spacing: -.015em;
  margin: 0 0 20px; max-width: 18ch; text-wrap: balance;
  color: #fff !important;                 /* Impreza pinta los h1 en azul: forzamos blanco */
}
.gss-loc-hero__title .hl {
  background: var(--gss-grad-aqua);
  -webkit-background-clip: text; background-clip: text;
  color: transparent !important;          /* "experto en GRC" en degradado aqua */
}
.gss-loc-hero__lead {
  font-size: clamp(17px,1.5vw,21px); font-weight: 300;
  line-height: 1.55; color: rgba(255,255,255,.82) !important;
  max-width: 54ch; margin: 0 0 34px;
}
.gss-loc-hero__actions { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }

/* Botones del hero */
.gss-loc__btn {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 15px 28px; border-radius: 999px;
  font-weight: 600; font-size: 15px; line-height: 1;
  text-decoration: none; cursor: pointer; border: 1px solid transparent;
  transition: transform var(--gss-dur,.18s) var(--gss-ease), box-shadow .18s, background .18s;
}
.gss-loc__btn--aqua { background: var(--gss-aqua); color: var(--gss-ink) !important; }
.gss-loc__btn--aqua:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(0,255,215,.35); color: var(--gss-ink) !important; }
.gss-loc__btn--ghost { background: rgba(255,255,255,.08); color: #fff !important; border-color: rgba(255,255,255,.35); }
.gss-loc__btn--ghost:hover { background: rgba(255,255,255,.16); color: #fff !important; }

/* ==========================================================================
   DIRECTORIO  (.gss-loc-directory — el_class en la fila del filtro + grid)
   ========================================================================== */
.gss-loc-directory { background: var(--gss-white); }

/* La fila interna de Impreza pasa de "rail 1/4 + grid 3/4" a bloque vertical:
   toolbar de filtros arriba a lo ancho, grid debajo. */
.gss-loc-directory .w-filter { margin: 0 0 8px; }

/* Anula el padding superior de la sección para que el toolbar pueda morder el hero */
.gss-loc-directory { padding-top: 0 !important; }
.gss-loc-directory > .l-section-h { padding-top: 0 !important; }

/* Toolbar: buscador + filtro nativo en una barra flotante sobre tarjeta blanca */
.gss-loc__toolbar {
  background: #fff;
  border: 1px solid var(--gss-ink-200);
  border-radius: 22px;
  box-shadow: var(--gss-shadow-lg);
  padding: 22px 24px;
  margin: -100px auto 44px;          /* se solapa (muerde) sobre el hero */
  position: relative; z-index: 5;
  max-width: 1200px;
}

/* Buscador (movido por JS dentro de .w-filter-list para ir junto a la región).
   Mismo tamaño que el desplegable de región (ambos flex 1 1 300px en la línea 1). */
.gss-loc__search { position: relative; flex: 1 1 240px; margin: 0; }
.gss-loc__search input {
  width: 100%; padding: 14px 16px 14px 46px;
  border: 1px solid var(--gss-ink-200); border-radius: 12px;
  font-family: inherit; font-size: 15px; color: var(--gss-ink);
  background: var(--gss-ink-50);
  transition: border-color .16s, box-shadow .16s, background .16s;
}
.gss-loc__search input:focus {
  outline: none; border-color: var(--gss-neon-blue); background: #fff;
  box-shadow: 0 0 0 4px var(--gss-neon-100);
}
.gss-loc__search svg {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  width: 19px; height: 19px; stroke: var(--gss-gray); fill: none; stroke-width: 2;
}

/* ── Re-skin del List Filter nativo de Impreza ─────────────────────────────
   Estructura nativa: .w-filter > .w-filter-list > .w-filter-item(s) + panel */
.gss-loc .w-filter-list {
  display: flex !important;
  flex-wrap: wrap; align-items: center; gap: 14px 20px;
}
/* buscador + región en la LÍNEA 1 (mismo tamaño); niveles saltan a la LÍNEA 2 */
.gss-loc .w-filter-item { margin: 0 !important; border: 0 !important; padding: 0 !important; }
.gss-loc .w-filter-item:not(.type_checkbox) { flex: 0 0 220px; }   /* región compacta (como el mockup) */
.gss-loc .w-filter-item.type_checkbox { flex: 1 1 100%; }          /* niveles: línea 2 completa */
.gss-loc .w-filter-item-title {
  font-size: 13px !important; font-weight: 600 !important;
  color: var(--gss-gray) !important; margin: 0 10px 0 0 !important;
  display: inline-block; text-transform: none !important;
}
/* ocultar el título "Categorías de portfolio" (solo el de región) y los "Reiniciar" */
.gss-loc .w-filter-item:not(.type_checkbox) .w-filter-item-title { display: none !important; }
.gss-loc .w-filter-item-reset { display: none !important; }
/* la región ocupa todo el ancho de su celda */
.gss-loc .w-filter-item:not(.type_checkbox) .w-filter-item-content,
.gss-loc .w-filter-item:not(.type_checkbox) .w-filter-item-values { width: 100% !important; }

/* Región: <select> estilizado */
.gss-loc .w-filter-item-value-select {
  appearance: none; -webkit-appearance: none;
  width: 100%;
  padding: 14px 44px 14px 16px;      /* misma altura que el input del buscador */
  border: 1px solid var(--gss-ink-200) !important; border-radius: 12px !important;
  font-family: inherit; font-size: 15px !important; font-weight: 500;
  color: transparent !important;              /* el texto real lo pinta .gss-loc__region-label */
  -webkit-text-fill-color: transparent !important;
  opacity: 1 !important;
  background: var(--gss-ink-50);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23787882' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; background-size: 16px;
  cursor: pointer;
}
.gss-loc .w-filter-item-value-select:focus {
  outline: none; border-color: var(--gss-neon-blue) !important;
  box-shadow: 0 0 0 4px var(--gss-neon-100);
}
.gss-loc .w-filter-item-value-select option { color: #041438; -webkit-text-fill-color: #041438; background: #fff; }

/* Etiqueta superpuesta con la región seleccionada. El <select> nativo sale
   vacío porque Impreza le fija un value que no casa con ninguna <option>
   (selectedIndex = -1). El JS crea esta etiqueta y la sincroniza en 'change'. */
.gss-loc .w-filter-item:not(.type_checkbox) .w-filter-item-values { position: relative; }
.gss-loc__region-label {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  pointer-events: none; font-family: var(--gss-font);
  font-size: 15px; font-weight: 500; color: var(--gss-ink);
  white-space: nowrap; max-width: calc(100% - 56px); overflow: hidden; text-overflow: ellipsis;
}

/* Niveles: checkboxes nativos → chips tipo pill con dot de color */
.gss-loc .w-filter-item.type_checkbox .w-filter-item-values {
  display: flex; flex-wrap: wrap; gap: 9px;
}
.gss-loc .w-filter-item-value { margin: 0 !important; }
.gss-loc .w-filter-item-value label {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px 9px 14px; border-radius: 999px;
  border: 1.5px solid var(--gss-ink-200); background: #fff;
  font-size: 13.5px; font-weight: 600; color: var(--gss-ink);
  cursor: pointer; transition: border-color .15s, background .15s, color .15s;
  margin: 0 !important;
}
.gss-loc .w-filter-item-value label:hover { border-color: var(--gss-neon-blue); }
.gss-loc .w-filter-item-value input { position: absolute; opacity: 0; width: 0; height: 0; }
/* dot de color por nivel (usa el data-value nativo: advanced/leading/smart) */
.gss-loc .w-filter-item-value label::before {
  content: ""; width: 9px; height: 9px; border-radius: 50%;
  background: var(--gss-gray); flex: 0 0 auto;
}
.gss-loc .w-filter-item-value[data-value="leading"]  label::before { background: var(--gss-neon-blue); }
.gss-loc .w-filter-item-value[data-value="advanced"] label::before { background: var(--gss-sky); }
.gss-loc .w-filter-item-value[data-value="smart"]    label::before { background: var(--gss-aqua); }
/* orden de los chips: Todos, Smart, Advanced, Leading */
.gss-loc .w-filter-item.type_checkbox .w-filter-item-values { display: flex; flex-wrap: wrap; gap: 9px; }
.gss-loc .w-filter-item-value[data-value="smart"]    { order: 1; }
.gss-loc .w-filter-item-value[data-value="advanced"] { order: 2; }
.gss-loc .w-filter-item-value[data-value="leading"]  { order: 3; }

/* chip "Todos" (inyectado por JS) — limpia la selección de niveles */
.gss-loc .gss-loc__all {
  order: 0;
  display: inline-flex; align-items: center;
  padding: 9px 16px; border-radius: 999px;
  border: 1.5px solid var(--gss-ink-200); background: #fff;
  font-size: 13.5px; font-weight: 600; color: var(--gss-ink);
  cursor: pointer; font-family: inherit; line-height: 1;
  transition: border-color .15s, background .15s, color .15s;
}
.gss-loc .gss-loc__all:hover { border-color: var(--gss-neon-blue); }
.gss-loc .gss-loc__all.is-active { background: var(--gss-ink); border-color: var(--gss-ink); color: #fff; }
/* chip activo (checkbox marcado) */
.gss-loc .w-filter-item-value input:checked + .w-filter-item-value-label,
.gss-loc .w-filter-item-value.active label {
  color: #fff;
}
.gss-loc .w-filter-item-value input:checked ~ * { }
.gss-loc .w-filter-item-value:has(input:checked) label {
  background: var(--gss-ink); border-color: var(--gss-ink); color: #fff;
}

/* Botón "Aplicar" oculto: el filtro se aplica al instante (JS lo dispara en cada
   cambio de región/nivel), igual que el mockup. Se mantiene en el DOM para clicarlo. */
.gss-loc .w-filter-list-panel { display: none !important; }
.gss-loc .w-filter-opener { display: none !important; }

/* ── MÓVIL: neutralizar el overlay del filtro nativo ──────────────────────────
   Por debajo de 600px Impreza convierte el filtro en un panel position:fixed a
   pantalla completa (con cabecera "Filtros" y botón cerrar) que bloquea toda la
   página. Lo forzamos a estar SIEMPRE inline dentro del toolbar, en cualquier
   resolución. Especificidad alta (.for_list.elm_index_1) para ganar a Impreza. */
.gss-loc .w-filter.for_list.elm_index_1 .w-filter-list {
  display: flex !important;
  position: static !important;
  inset: auto !important;
  transform: none !important;
  width: auto !important; height: auto !important;
  max-width: none !important; max-height: none !important;
  background: transparent !important;
  padding: 0 !important; margin: 0 !important;
  overflow: visible !important;
  visibility: visible !important; opacity: 1 !important;
  z-index: auto !important;
  box-shadow: none !important;
}
.gss-loc .w-filter { position: static !important; }
/* cromo del overlay que sólo tiene sentido en el panel móvil */
.gss-loc .w-filter-list-title,
.gss-loc .w-filter-list-closer { display: none !important; }
/* Impreza bloquea el scroll del body al abrir el overlay: lo revertimos por si acaso */
html.w-filter-opened, body.w-filter-opened { overflow: auto !important; }

/* Fila del toolbar: bloque de filtro (buscador+región / niveles) izq + contador der */
.gss-loc__row { display: flex; align-items: flex-start; gap: 12px 20px; flex-wrap: wrap; }
.gss-loc__filtermount { flex: 1 1 auto; min-width: 0; }
.gss-loc__row .w-filter { margin: 0 !important; }

/* Contador de resultados: abajo a la derecha, junto a la línea de chips */
.gss-loc__count { margin-left: auto; align-self: flex-end; font-size: 14px; color: var(--gss-gray); white-space: nowrap; }
.gss-loc__count b { color: var(--gss-ink); font-weight: 700; }

/* ==========================================================================
   GRID DE TARJETAS  (re-skin de .w-grid-item / us_portfolio)
   Impreza inyecta !important inline en layout_94077 → contra-atacamos con
   !important acotado al marker (patrón §5 de la skill).
   ========================================================================== */
.gss-loc .w-grid.us_post_list { --gap: 22px !important; }
.gss-loc .w-grid-list { gap: 22px !important; }

.gss-loc .w-grid-item {
  background: #fff;
  border: 1px solid var(--gss-ink-200) !important;
  border-radius: 18px !important;
  overflow: hidden;
  transition: transform .2s var(--gss-ease), box-shadow .2s, border-color .2s;
}
.gss-loc .w-grid-item:hover {
  transform: translateY(-4px);
  box-shadow: var(--gss-shadow-glow);
  border-color: transparent !important;
}
.gss-loc .w-grid-item-h { position: relative; height: 100%; }

/* padding interno de la tarjeta (Impreza usa 9% en el vwrapper) */
.gss-loc .w-grid-item .usg_vwrapper_1 { padding: 20px 26px 24px !important; gap: 0 !important; }

/* cabecera de tarjeta: logo (izq) + badge de nivel (der) en fila flex, como el
   .card-top del artifact. El JS mueve logo + .post_taxonomy dentro de este div. */
.gss-loc .w-grid-item .gss-loc__cardtop {
  display: flex !important; align-items: flex-start; justify-content: space-between;
  gap: 12px; padding: 26px 26px 0; margin: 0;
}
/* logo */
.gss-loc .w-grid-item .post_image { margin: 0 !important; }
.gss-loc .w-grid-item .post_image img {
  height: 64px !important; width: auto !important; max-width: 210px;
  object-fit: contain !important; object-position: left center;
}
.gss-loc .w-grid-item .post_image a { display: inline-block; }

/* <hr> separador nativo → oculto */
.gss-loc .w-grid-item .usg_html_1 { display: none !important; }

/* título */
.gss-loc .w-grid-item .post_title {
  font-size: 19px !important; font-weight: 700 !important;
  line-height: 1.25 !important; color: var(--gss-ink) !important;
  margin: 0 0 8px !important;
}

/* badge de nivel: en flujo dentro del cardtop, alineado a la derecha */
.gss-loc .w-grid-item .usg_hwrapper_3:empty { display: none !important; }  /* wrapper original, vacío tras mover el badge */
.gss-loc .w-grid-item .post_taxonomy {
  position: static !important; margin: 0 !important; flex: 0 0 auto;
  color: inherit !important; font-size: 0 !important; line-height: 0 !important;
}
.gss-loc .w-grid-item .post_taxonomy .w-btn {
  display: inline-flex !important; align-items: center; justify-content: center;
  border: 0 !important;
  padding: 7px 13px 6px !important; border-radius: 999px !important;
  background: var(--gss-neon-100) !important;
  line-height: 1 !important;
  pointer-events: none;
}
.gss-loc .w-grid-item .post_taxonomy .w-btn-label {
  font-size: 11px !important; font-weight: 700 !important;
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--gss-neon-600) !important; line-height: 1 !important;
  display: block;
}
/* color del badge según la clase de nivel del artículo */
.gss-loc .w-grid-item.us_portfolio_tag-leading  .post_taxonomy .w-btn { background: var(--gss-neon-100) !important; }
.gss-loc .w-grid-item.us_portfolio_tag-leading  .post_taxonomy .w-btn-label { color: var(--gss-neon-600) !important; }
.gss-loc .w-grid-item.us_portfolio_tag-advanced .post_taxonomy .w-btn { background: #e3f6ff !important; }
.gss-loc .w-grid-item.us_portfolio_tag-advanced .post_taxonomy .w-btn-label { color: #0a83b8 !important; }
.gss-loc .w-grid-item.us_portfolio_tag-smart    .post_taxonomy .w-btn { background: #d9fff7 !important; }
.gss-loc .w-grid-item.us_portfolio_tag-smart    .post_taxonomy .w-btn-label { color: #00806c !important; }
/* refuerzo: colorear también por la clase term-* del propio badge (más directo) */
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-leading             { background: var(--gss-neon-100) !important; }
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-leading .w-btn-label { color: var(--gss-neon-600) !important; }
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-advanced            { background: #e3f6ff !important; }
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-advanced .w-btn-label { color: #0a83b8 !important; }
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-smart               { background: #d9fff7 !important; }
.gss-loc .w-grid-item .post_taxonomy .w-btn.term-smart .w-btn-label   { color: #00806c !important; }

/* descripción */
.gss-loc .w-grid-item .post_content { font-size: 0 !important; }
.gss-loc .w-grid-item .post_content > p {
  font-size: 14px !important; line-height: 1.55 !important;
  color: var(--gss-gray) !important; margin: 0 0 18px !important;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

/* pie de tarjeta: pin de país (JS) + botón Website, agrupados por JS en .gss-loc__foot */
.gss-loc .w-grid-item .gss-loc__foot {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin-top: auto; padding-top: 16px; border-top: 1px solid var(--gss-ink-100);
}
.gss-loc__pin {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 13px; font-weight: 500; color: var(--gss-gray);
}
.gss-loc__pin svg { width: 15px; height: 15px; stroke: var(--gss-gray); fill: none; stroke-width: 2; flex: 0 0 auto; }

/* botón Website → estilo "Visitar web" */
.gss-loc .w-grid-item .w-btn-wrapper { margin: 0 !important; }
.gss-loc .w-grid-item .post_content .w-btn {
  display: inline-flex !important; align-items: center; gap: 6px;
  background: transparent !important; border: 0 !important; padding: 0 !important;
}
.gss-loc .w-grid-item .post_content .w-btn-label {
  font-size: 13.5px !important; font-weight: 600 !important; color: var(--gss-neon-blue) !important;
}
.gss-loc .w-grid-item .post_content .w-btn i {
  color: var(--gss-neon-blue) !important; font-size: 12px !important;
  transition: transform .15s var(--gss-ease);
}
.gss-loc .w-grid-item:hover .post_content .w-btn i { transform: translate(2px,-2px); }

/* item oculto por el buscador de texto (grid plano → sin huecos) */
.gss-loc .w-grid-item.gss-loc--nomatch { display: none !important; }

/* mensaje "sin resultados" del buscador (inyectado por JS) */
.gss-loc__empty {
  display: none; text-align: center; padding: 56px 0; color: var(--gss-gray); font-size: 15px;
}
.gss-loc__empty.is-on { display: block; }

/* ==========================================================================
   CTA FINAL  (.gss-loc-cta — el_class en la fila del banner existente)
   Reescribe el fondo aquamarina por el gradiente Quantum de marca.
   ========================================================================== */
.gss-loc-cta {
  background: var(--gss-grad-hero) !important;
  background-image: var(--gss-grad-hero) !important;
  position: relative; overflow: hidden;
}
.gss-loc-cta::after {                 /* glow aqua decorativo */
  content: ""; position: absolute; width: 520px; height: 520px; border-radius: 50%;
  background: radial-gradient(circle,rgba(0,255,215,.25),transparent 68%);
  right: -120px; top: -160px; z-index: 0; pointer-events: none;
}
.gss-loc-cta > * { position: relative; z-index: 1; }
.gss-loc-cta .w-vwrapper, .gss-loc-cta .vc_custom_heading, .gss-loc-cta .wpb_text_column { color: #fff !important; }
.gss-loc-cta .vc_custom_heading { color: #fff !important; }
.gss-loc-cta .vc_custom_heading * { color: #fff !important; }
.gss-loc-cta .wpb_text_column, .gss-loc-cta .wpb_text_column p { color: rgba(255,255,255,.82) !important; }
/* botón del CTA → aqua */
.gss-loc-cta .w-btn {
  background: var(--gss-aqua) !important; color: var(--gss-ink) !important;
  border: 0 !important; border-radius: 999px !important; font-weight: 600 !important;
  transition: transform .18s var(--gss-ease), box-shadow .18s;
}
.gss-loc-cta .w-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(0,255,215,.35); }
.gss-loc-cta .w-btn-label { color: var(--gss-ink) !important; }

/* ==========================================================================
   REVEAL ON SCROLL — base visible; solo anima si el JS pone .gss-loc--anim
   ========================================================================== */
.gss-loc .gss-loc-reveal { opacity: 1; transform: none; }
.gss-loc.gss-loc--anim .gss-loc-reveal {
  opacity: 0; transform: translateY(24px);
  transition: opacity .6s var(--gss-ease), transform .6s var(--gss-ease);
}
.gss-loc.gss-loc--anim .gss-loc-reveal.is-in { opacity: 1; transform: none; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 720px) {
  .gss-loc__toolbar { margin-top: -56px; border-radius: 18px; padding: 18px; }
  .gss-loc .w-filter-list { gap: 12px 16px; }
  .gss-loc-hero { padding: 72px 20px 120px; }
}

/* Móvil: una sola tarjeta por fila en el grid de partners (no dos) */
@media (max-width: 600px) {
  .gss-loc .w-grid.us_post_list { --columns: 1 !important; }
  .gss-loc .w-grid-list { grid-template-columns: 1fr !important; }
  .gss-loc .w-grid-item { width: 100% !important; max-width: 100% !important; }
}

@media (prefers-reduced-motion: reduce) {
  .gss-loc *, .gss-loc *::before, .gss-loc *::after {
    transition: none !important; animation: none !important;
  }
  .gss-loc.gss-loc--anim .gss-loc-reveal { opacity: 1 !important; transform: none !important; }
}
