/* Eklektos — hoja de estilo del tema.
 *
 * Sistema de diseño tomado del logotipo: verde de la hoja, azul del logotipo
 * y azul marino del descriptivo. Un solo mundo visual, claro. No hay variante
 * oscura: los colores están declarados, no heredados del navegador.
 *
 * Autor: Creative Connections.
 */


/* Página de un solo mundo visual: clara y verde. Sin variante oscura. */
:root{
  color-scheme:light;
  /* Paleta tomada del logotipo: verde de la hoja, azul del logotipo y
     azul marino del descriptivo. El resto son pasos derivados de esos tres. */
  --fondo:#F5F8F0;      /* blanco con el verde del logo */
  --fondo-2:#EBF2E0;    /* interior de las láminas */
  --panel:#FFFFFF;      /* superficies */
  --claro:#E8F1DA;      /* bloques de acento */
  --suave:#D4E6B8;      /* filetes */
  --medio:#B4D77E;      /* verde medio */
  --vivo:#8CC63F;       /* VERDE DE MARCA, el de la hoja */
  --verde:#6FA22E;      /* verde oscurecido, para grafismo */
  --hondo:#4E7320;      /* verde profundo, legible como texto */
  --azul:#1B5FAA;       /* AZUL DE MARCA, el del logotipo: acción */
  --azul-hondo:#134680; /* azul al pasar el cursor */
  --azul-claro:#DCE9F6; /* superficie azul suave */
  --tinta:#1F3B5C;      /* AZUL MARINO DE MARCA, el del descriptivo: texto */
  --tinta-2:#42586F;    /* texto corrido */
  --apagado:#556880;    /* metadatos, 4,9:1 sobre --claro */
  --error:#A33A22;
  --f-tit:"Gabarito","Trebuchet MS",ui-sans-serif,system-ui,sans-serif;
  --f-txt:"Figtree","Helvetica Neue",Arial,sans-serif;
  --f-uni:"DM Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --r-panel:26px;
  --r-tarjeta:18px;
  /* curvas fuertes: las nativas de CSS son demasiado flojas */
  --sale:cubic-bezier(0.23, 1, 0.32, 1);
  /* Sombras teñidas del verde del fondo, nunca negro puro.
     Cuanto mayor la superficie, más gruesa se lee. */
  --sombra-chica:0 1px 2px rgba(31,59,92,.05), 0 8px 18px -12px rgba(31,59,92,.14),
                 inset 0 1px 0 rgba(255,255,255,.9);
  /* Las cifras son cristal verde, no una caja con sombra: el filo de luz
     dibuja el borde y el halo va teñido del mismo verde, nunca gris. */
  --cristal-cifra:inset 0 1px 0 rgba(255,255,255,.62),
                  inset 0 0 0 1px rgba(255,255,255,.24),
                  0 14px 30px -22px rgba(78,115,32,.45);
  --cristal-cifra-alto:inset 0 1px 0 rgba(255,255,255,.78),
                       inset 0 0 0 1px rgba(255,255,255,.34),
                       0 22px 42px -24px rgba(78,115,32,.55);
  --sombra-panel:0 1px 2px rgba(31,59,92,.04), 0 18px 40px -26px rgba(31,59,92,.13);
  --sombra-flotante:0 2px 6px rgba(31,59,92,.07), 0 14px 30px -18px rgba(31,59,92,.18);
  --mueve:cubic-bezier(0.77, 0, 0.175, 1);
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--fondo); color:var(--tinta);
  font-family:var(--f-txt); font-size:1rem; line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
/* El tracking es propio de cada tamaño: cuanto más grande, más cerrado.
   El interlineado va al revés: apretado arriba, holgado en el texto. */
h1,h2,h3,h4{font-family:var(--f-tit);font-weight:600;margin:0;text-wrap:balance;color:var(--tinta)}
h1{letter-spacing:-.036em;line-height:1.02}
h2{letter-spacing:-.028em;line-height:1.06}
h3{letter-spacing:-.02em;line-height:1.15}
h4{letter-spacing:-.004em;line-height:1.3}
p{margin:0}
/* Las listas del tema van sin viñeta; las del contenido editable la recuperan
   más abajo, en «.ek-prosa», para no estropear lo que escriba el cliente. */
ul,ol{margin:0;padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-align:left}
:focus-visible{outline:2px solid var(--azul);outline-offset:3px;border-radius:6px}
img,canvas{max-width:100%;display:block}

.ek-uni{font-family:var(--f-uni);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--hondo)}
.ek-entrada{font-size:clamp(1.03rem,1.2vw,1.16rem);line-height:1.65;color:var(--tinta-2);max-width:58ch}
.ek-caja{width:100%;max-width:1240px;margin-inline:auto;padding-inline:clamp(16px,4vw,44px)}
.ek-rastro{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:30}
.ek-salta{position:absolute;left:-9999px;padding:14px 18px}
.ek-salta:focus{left:12px;top:12px;z-index:60;background:var(--panel);border-radius:10px;
             box-shadow:var(--sombra-flotante)}

/* ── semilla: chip de sección ───────────────────────────────────────── */
.ek-semilla{display:inline-flex;align-items:center;padding:7px 15px;border-radius:999px;
         background:var(--claro);color:var(--hondo);font-family:var(--f-uni);font-size:11px;
         letter-spacing:.12em;text-transform:uppercase}

/* ── botones ────────────────────────────────────────────────────────── */
.ek-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:999px;
     background:var(--azul);color:#FFFFFF;font-family:var(--f-tit);font-size:15px;font-weight:600;
     border:1.5px solid var(--azul);
     transition:background .2s ease,color .2s ease,border-color .2s ease,transform .1s ease}
.ek-btn:hover{background:var(--azul-hondo);border-color:var(--azul-hondo)}
.ek-btn:active{transform:scale(.972)}
.ek-btn .ek-flecha{transition:transform .2s ease}
.ek-btn:hover .ek-flecha{transform:translateX(3px)}
.ek-btn-hueco{background:transparent;color:var(--azul);border-color:var(--suave)}
.ek-btn-hueco:hover{background:var(--azul-claro);color:var(--azul-hondo);border-color:var(--azul)}

/* ── cabecera ───────────────────────────────────────────────────────── */
/* La cabecera flota: isla redondeada sobre el contenido, no una franja
   pegada a los bordes. La sombra la separa; no hace falta filete. */
.ek-cab{position:sticky;top:calc(env(safe-area-inset-top,0px) + 12px);z-index:40;
     padding-inline:clamp(14px,4vw,44px);margin-top:12px}
.ek-cab-in{width:100%;max-width:1240px;margin-inline:auto;
        display:flex;align-items:center;gap:clamp(12px,2.4vw,36px);
        padding:9px 10px 9px 18px;border-radius:999px;
        background:
          linear-gradient(180deg, rgba(255,255,255,.26), rgba(255,255,255,0) 46%),
          linear-gradient(180deg, rgba(78,115,32,0), rgba(78,115,32,.12)),
          color-mix(in srgb,var(--vivo) 64%,transparent);
        backdrop-filter:blur(16px) saturate(210%) contrast(1.06);
        box-shadow:inset 0 1px 0 rgba(255,255,255,.58),
                   inset 0 -1px 0 rgba(78,115,32,.20),
                   0 2px 6px rgba(31,59,92,.08),
                   0 20px 40px -24px rgba(31,59,92,.34)}
.ek-marca{display:flex;align-items:center;gap:11px;margin-right:auto}
.ek-marca .ek-hoja{width:32px;height:32px;border-radius:50% 50% 50% 4px;background:var(--hondo);
             display:grid;place-items:center;flex:none;transform:rotate(-8deg)}
.ek-marca .ek-hoja svg{color:#FFFFFF;transform:rotate(8deg)}
.ek-marca .ek-nom{font-family:var(--f-tit);font-size:19px;font-weight:700;letter-spacing:.02em;line-height:1;display:block}
.ek-marca .ek-des{font-size:11px;color:var(--tinta);line-height:1;margin-top:5px;display:block;white-space:nowrap}
.ek-menu{display:flex;align-items:center;gap:clamp(4px,1vw,10px)}
.ek-menu a{padding:9px 16px;border-radius:999px;font-size:15px;font-weight:500;color:var(--tinta);
             transition:background .18s ease,color .18s ease}
.ek-menu a:hover{background:rgba(255,255,255,.32);color:var(--tinta)}
.ek-menu a{transition:background .18s ease,color .18s ease,transform .1s ease}
.ek-menu a:active{transform:scale(.96)}
.ek-menu .current-menu-item > a,.ek-menu .current_page_item > a,.ek-menu a[aria-current="page"]{background:#FFFFFF;color:var(--azul);
                                  box-shadow:0 1px 2px rgba(31,59,92,.16)}
.ek-cab .ek-tel{font-family:var(--f-uni);font-size:12.5px;color:var(--tinta);padding-right:8px;
          transition:color .18s ease}
.ek-cab .ek-tel:hover{color:var(--azul-hondo)}
@media (max-width:1000px){.ek-cab .ek-tel{display:none}}
@media (max-width:720px){
  .ek-cab-in{flex-wrap:wrap;row-gap:10px;border-radius:26px;padding:12px 12px 10px}
  .ek-marca{padding-left:6px}
  .ek-nav{order:3;width:100%}
  .ek-menu{order:3;width:100%;overflow-x:auto;scrollbar-width:none;gap:3px}
  .ek-menu::-webkit-scrollbar{display:none}
  .ek-menu a{white-space:nowrap;padding:8px 12px;font-size:14.5px}
  .ek-marca .ek-des{display:none}
}

/* ── paneles ────────────────────────────────────────────────────────── */
.ek-panel{background:var(--panel);border-radius:var(--r-panel);padding:clamp(24px,3.4vw,46px);
       box-shadow:var(--sombra-panel)}
.ek-panel-claro{background:var(--claro);box-shadow:none}
.ek-seccion{padding-block:clamp(26px,3.4vw,44px)}
.ek-cabeza{display:flex;flex-direction:column;align-items:flex-start;gap:16px;max-width:44ch;margin-bottom:clamp(22px,3vw,36px)}
.ek-cabeza h2{font-size:clamp(1.7rem,3.4vw,2.625rem);max-width:19ch}
.ek-cabeza .ek-entrada{max-width:46ch}
.ek-cabeza.ek-ancha{max-width:none}
.ek-cabeza.ek-ancha .ek-fila-cab{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px}
.ek-cabeza.ek-ancha h2{max-width:22ch}
.ek-cabeza.ek-ancha .ek-entrada{max-width:40ch}

/* ── portada ────────────────────────────────────────────────────────── */
.ek-portada{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
         gap:clamp(24px,4vw,56px);align-items:center;padding-block:clamp(26px,3.6vw,48px) clamp(20px,2.6vw,34px)}
.ek-portada h1{font-size:clamp(2.25rem,5vw,4rem);letter-spacing:-.04em;line-height:1;max-width:14ch;margin-block:22px 20px}
.ek-portada h1 .ek-res{color:var(--hondo)}
.ek-portada .ek-acciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.ek-arco{position:relative;width:100%;height:clamp(340px,38vw,500px);
      border-radius:999px 999px var(--r-panel) var(--r-panel);overflow:hidden;background:var(--fondo-2)}
.ek-arco canvas{width:100%;height:100%}
.ek-arco .ek-marbete{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);
               background:rgba(255,255,255,.78);backdrop-filter:blur(14px) saturate(180%);
               box-shadow:var(--sombra-flotante), inset 0 1px 0 rgba(255,255,255,.75);
               border-radius:999px;padding:9px 18px;
               font-family:var(--f-uni);font-size:12px;letter-spacing:.02em;
               color:var(--hondo);white-space:nowrap}
@media (max-width:920px){.ek-portada{grid-template-columns:1fr}.ek-arco{height:clamp(260px,55vw,340px)}}

/* ── cifras ─────────────────────────────────────────────────────────── */
/* El cristal solo se ve si hay algo detrás: las cifras van sobre una lámina de
   hojas, y el desenfoque de cada tarjeta la difumina. */
.ek-cifras-caja{position:relative;border-radius:28px;overflow:hidden;
             background:var(--fondo-2);
             padding:clamp(12px,1.6vw,20px);
             margin-inline:calc(-1 * clamp(12px,1.6vw,20px))}
.ek-cifras-caja > canvas{position:absolute;inset:0;width:100%;height:100%}
.ek-cifras{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.5vw,20px)}
.ek-cifra{background:color-mix(in srgb,var(--vivo) 38%,transparent);
       backdrop-filter:blur(16px) saturate(170%);
       border-radius:22px;padding:clamp(22px,2.6vw,30px);
       display:flex;flex-direction:column;gap:9px;
       box-shadow:var(--cristal-cifra);
       transition:transform .24s var(--sale), box-shadow .24s var(--sale)}
.ek-cifra b{font-family:var(--f-tit);font-size:clamp(1.75rem,3.2vw,2.5rem);font-weight:700;letter-spacing:-.038em;
         line-height:1;color:var(--tinta);font-variant-numeric:tabular-nums}
.ek-cifra .ek-et{font-family:var(--f-uni);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
           color:var(--tinta);font-weight:500}
.ek-cifra span{font-size:13.2px;color:var(--tinta);line-height:1.5;margin-top:2px}
@media (max-width:860px){.ek-cifras{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.ek-cifras{grid-template-columns:1fr}}

/* ── frentes: filas dentro de un panel ──────────────────────────────── */
.ek-frente{display:grid;grid-template-columns:52px minmax(0,1fr) minmax(0,280px);
        gap:clamp(14px,2.4vw,36px);padding-block:clamp(20px,2.6vw,30px)}
.ek-frente + .ek-frente{border-top:1px solid var(--claro)}
.ek-frente:first-child{padding-top:0}
.ek-frente:last-child{padding-bottom:0}
.ek-frente .ek-num{font-family:var(--f-uni);font-size:12px;color:var(--medio);padding-top:6px}
.ek-frente h3{font-size:clamp(1.25rem,2.2vw,1.625rem)}
.ek-frente p{font-size:.9375rem;color:var(--tinta-2);margin-top:10px;max-width:50ch}
.ek-frente ul{display:flex;flex-wrap:wrap;gap:7px;align-content:flex-start;padding-top:5px}
.ek-brote{font-family:var(--f-uni);font-size:12px;color:var(--hondo);background:var(--claro);
       padding:5px 12px;border-radius:999px;letter-spacing:.01em}
@media (max-width:880px){.ek-frente{grid-template-columns:38px minmax(0,1fr)}.ek-frente ul{grid-column:2}}

/* ── método ─────────────────────────────────────────────────────────── */
.ek-pasos{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,26px)}
.ek-paso{background:var(--panel);border-radius:var(--r-tarjeta);padding:clamp(20px,2.2vw,28px);
      display:flex;flex-direction:column;gap:11px;box-shadow:var(--sombra-chica)}
.ek-paso .ek-bola{width:34px;height:34px;border-radius:50%;background:var(--claro);color:var(--hondo);
            display:grid;place-items:center;font-family:var(--f-uni);font-size:12px;font-weight:500}
.ek-paso:first-child .ek-bola{background:var(--hondo);color:#FFFFFF}
.ek-paso h3{font-size:1.125rem}
.ek-paso p{font-size:14px;color:var(--tinta-2)}
@media (max-width:860px){.ek-pasos{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.ek-pasos{grid-template-columns:1fr}}

/* ── tabla de marcos ────────────────────────────────────────────────── */
.ek-tabla-caja{overflow-x:auto}
.ek-tabla-caja table{border-collapse:collapse;width:100%;min-width:600px}
.ek-tabla-caja th,.ek-tabla-caja td{text-align:left;padding:15px 20px 15px 0;vertical-align:top}
.ek-tabla-caja thead th{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
         color:var(--apagado);font-weight:500;padding-bottom:11px}
.ek-tabla-caja tbody tr{border-top:1px solid var(--claro)}
.ek-tabla-caja td{font-size:14.8px;color:var(--tinta-2)}
.ek-tabla-caja td.ek-ref{font-family:var(--f-uni);font-size:13px;color:var(--hondo);white-space:nowrap}

/* ── Prisma EHS y panel de clientes ─────────────────────────────────── */
/* Dos lecturas de lo mismo: a la izquierda lo que hace la asesoría con la
   plataforma, a la derecha lo que ve la empresa cuando entra. El panel va
   sobre el verde claro para que se lea como una caja aparte dentro del
   panel blanco, sin necesidad de otra sombra. */
/* El titular y los cuatro puntos van apilados en la primera columna y el
   panel ocupa las dos filas de la segunda: así los dos lados acaban a la
   misma altura y no queda media columna en blanco. */
.ek-prisma-cuerpo{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
                  gap:clamp(20px,3vw,44px);align-items:start}
.ek-prisma-cuerpo > .ek-cabeza{grid-column:1;grid-row:1;margin-bottom:0}
.ek-prisma-trabajo{grid-column:1;grid-row:2;
                   display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
                   gap:clamp(14px,2vw,24px);align-content:start}
.ek-prisma-panel{grid-column:2;grid-row:1 / span 2}
.ek-prisma-punto{padding-left:16px;border-left:2px solid var(--suave)}
.ek-prisma-punto h3{font-size:1.0625rem}
.ek-prisma-punto p{font-size:.9375rem;color:var(--tinta-2);margin-top:8px}
.ek-prisma-panel{background:var(--claro);border-radius:var(--r-tarjeta);
                 padding:clamp(20px,2.4vw,30px);display:flex;flex-direction:column;
                 align-items:flex-start;gap:14px}
.ek-prisma-panel h3{font-size:clamp(1.25rem,2.2vw,1.5rem)}
.ek-prisma-panel > p{font-size:.9375rem;color:var(--tinta-2);max-width:46ch}
/* Dentro del panel la lista va a una sola columna: son cinco líneas cortas y
   a dos columnas quedarían huérfanas. */
.ek-prisma-panel .wp-block-list.is-style-verificado{column-count:1;width:100%}
.ek-prisma-panel .wp-block-list.is-style-verificado li::before{background:var(--panel)}
.ek-prisma-nota{font-size:13.5px;color:var(--apagado);line-height:1.55;max-width:46ch}
.ek-prisma-panel .wp-block-buttons{margin-top:4px}
@media (max-width:980px){
  .ek-prisma-cuerpo{grid-template-columns:1fr}
  .ek-prisma-cuerpo > .ek-cabeza,.ek-prisma-trabajo,.ek-prisma-panel{grid-column:1;grid-row:auto}
}
@media (max-width:520px){.ek-prisma-trabajo{grid-template-columns:1fr}}

/* ── llamada final ──────────────────────────────────────────────────── */
.ek-llamada{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px}
.ek-llamada h2{font-size:clamp(1.5rem,3vw,2.25rem);max-width:19ch}
.ek-llamada p{color:var(--tinta-2);margin-top:12px;max-width:44ch}

/* ── cabecera de página interior ────────────────────────────────────── */
.ek-phead{padding-block:clamp(26px,3.4vw,44px) clamp(18px,2.4vw,30px);display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.ek-phead h1{font-size:clamp(2rem,4.4vw,3.375rem);letter-spacing:-.038em;max-width:16ch}

/* ── huecos de fotografía ──
   Mientras no hay foto, se ve la lámina de hojas con su rótulo. En cuanto se
   pone un <img> dentro, la foto lo tapa: el hueco no hay que desmontarlo. */
.ek-foto{position:relative;margin:0;border-radius:var(--r-tarjeta);overflow:hidden;
      background:var(--fondo-2);box-shadow:var(--sombra-chica)}
.ek-foto > canvas{position:absolute;inset:0;width:100%;height:100%}
.ek-foto > img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;display:block}
.ek-foto-vacia{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
            background:rgba(255,255,255,.88);backdrop-filter:blur(8px) saturate(150%);
            box-shadow:var(--sombra-flotante);border-radius:999px;padding:9px 17px;
            font-family:var(--f-uni);font-size:11px;letter-spacing:.03em;color:var(--hondo);
            white-space:nowrap;text-align:center}
.ek-foto > img ~ .ek-foto-vacia{display:none}

.ek-trabajos{display:grid;grid-template-columns:repeat(3,1fr);
          grid-auto-rows:clamp(180px,21vw,290px);gap:clamp(12px,1.5vw,20px)}
.ek-trabajos .ek-foto:nth-child(1),.ek-trabajos .ek-foto:nth-child(4){grid-column:span 2}
@media (max-width:820px){
  .ek-trabajos{grid-template-columns:1fr;grid-auto-rows:clamp(190px,46vw,260px)}
  .ek-trabajos .ek-foto{grid-column:auto}
}

/* ── lista de servicios con marca de verificación ───────────────────── */
.ek-lista{column-count:2;column-gap:clamp(28px,3.5vw,56px)}
.ek-chk{break-inside:avoid;position:relative;padding:11px 0 11px 32px;
     font-size:.9375rem;color:var(--tinta-2);line-height:1.55}
.ek-chk::before{content:"✓";position:absolute;left:0;top:12px;width:20px;height:20px;
             border-radius:50%;background:var(--claro);color:var(--hondo);
             display:grid;place-items:center;font-size:11px;font-weight:600;line-height:1}
.ek-chk b{font-weight:600;color:var(--tinta)}
@media (max-width:860px){.ek-lista{column-count:1}}

/* ── catálogo por familias ──────────────────────────────────────────── */
.ek-familia + .ek-familia{margin-top:clamp(14px,1.8vw,22px)}
.ek-fam-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:22px}
.ek-fam-cab h2{font-size:clamp(1.31rem,2.4vw,1.75rem)}
.ek-fam-cab .ek-cuenta{font-family:var(--f-uni);font-size:12px;color:var(--apagado);margin-left:auto}
.ek-srv{display:grid;grid-template-columns:78px minmax(0,1fr) minmax(0,270px);
     gap:clamp(12px,2.2vw,32px);padding-block:20px;border-top:1px solid var(--claro)}
.ek-srv .ek-cod{font-family:var(--f-uni);font-size:12px;color:var(--medio);padding-top:4px}
.ek-srv h3{font-size:1.16rem}
.ek-srv p{font-size:.915rem;color:var(--tinta-2);margin-top:8px;max-width:54ch}
.ek-srv .ek-lado{display:flex;flex-direction:column;gap:8px;padding-top:2px}
.ek-srv .ek-lado h4{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
              color:var(--apagado);font-weight:500}
.ek-srv .ek-lado li{font-size:13.5px;color:var(--tinta-2);padding-left:15px;position:relative}
.ek-srv .ek-lado li::before{content:"";position:absolute;left:0;top:.66em;width:6px;height:6px;
                      border-radius:50%;background:var(--medio)}
.ek-brotes{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
@media (max-width:880px){.ek-srv{grid-template-columns:62px minmax(0,1fr)}.ek-srv .ek-lado{grid-column:2}}

/* ── proyectos en zigzag ────────────────────────────────────────────── */
.ek-caso{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);
      gap:clamp(20px,3vw,44px);align-items:center}
.ek-caso + .ek-caso{margin-top:clamp(14px,1.8vw,22px)}
.ek-caso:nth-child(even) .ek-caso-graf{order:2}
.ek-caso-graf{position:relative;width:100%;height:clamp(240px,25vw,340px);
           border-radius:var(--r-tarjeta) var(--r-tarjeta) 999px 999px;
           overflow:hidden;background:var(--fondo-2)}
.ek-caso-graf canvas{width:100%;height:100%}
.ek-caso-graf .ek-sector{position:absolute;top:16px;left:16px;background:rgba(255,255,255,.78);
                   backdrop-filter:blur(14px) saturate(180%);
                   box-shadow:var(--sombra-flotante), inset 0 1px 0 rgba(255,255,255,.75);
                   border-radius:999px;padding:7px 14px;font-family:var(--f-uni);font-size:11px;
                   letter-spacing:.08em;text-transform:uppercase;color:var(--hondo)}
.ek-caso h2{font-size:clamp(1.31rem,2.4vw,1.81rem);margin-block:14px 12px}
.ek-caso p{font-size:.9375rem;color:var(--tinta-2);max-width:52ch}
.ek-medida{margin-top:22px;background:var(--claro);border-radius:var(--r-tarjeta);padding:20px 22px;
        display:flex;flex-direction:column;gap:12px}
.ek-medida h3{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
           color:var(--apagado);font-weight:500}
.ek-barra{display:grid;grid-template-columns:62px 1fr auto;gap:12px;align-items:center}
.ek-barra .ek-rot{font-family:var(--f-uni);font-size:11px;color:var(--apagado)}
.ek-pista{display:block;height:10px;background:transparent;border:1px solid var(--suave);
       border-radius:999px;overflow:hidden}
.ek-llena{display:block;height:100%;background:var(--medio);border-radius:999px;transform-origin:left}
.ek-llena.ek-hoy{background:var(--verde)}
.ek-barra .ek-val{font-family:var(--f-uni);font-size:12.5px;color:var(--hondo);font-variant-numeric:tabular-nums}
.ek-medida .ek-nota{font-size:12.6px;color:var(--apagado);line-height:1.5}
.ek-grande{font-family:var(--f-tit);font-size:2.75rem;font-weight:700;letter-spacing:-.042em;line-height:1;color:var(--hondo)}
@media (max-width:880px){
  .ek-caso{grid-template-columns:1fr}
  .ek-caso:nth-child(even) .ek-caso-graf{order:0}
  .ek-caso-graf{height:clamp(200px,42vw,250px)}
}
/* tercer caso: otra familia de composicion, para no encadenar cuatro zigzags */
.ek-caso-banda{padding:0;overflow:hidden;margin-top:clamp(14px,1.8vw,22px)}
.ek-caso-banda .ek-franja{position:relative;height:clamp(130px,15vw,190px);background:var(--fondo-2)}
.ek-caso-banda .ek-franja canvas{width:100%;height:100%}
.ek-caso-banda .ek-franja .ek-sector{position:absolute;top:16px;left:clamp(20px,3vw,40px);
                            background:rgba(255,255,255,.78);backdrop-filter:blur(14px) saturate(180%);
                            box-shadow:var(--sombra-flotante), inset 0 1px 0 rgba(255,255,255,.75);
                            border-radius:999px;padding:7px 14px;
                            font-family:var(--f-uni);font-size:11px;letter-spacing:.08em;
                            text-transform:uppercase;color:var(--hondo)}
.ek-caso-banda .ek-cuerpo{padding:clamp(24px,3.4vw,46px);display:grid;
                    grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
                    gap:clamp(20px,3vw,44px);align-items:start}
.ek-caso-banda h2{font-size:clamp(1.31rem,2.4vw,1.81rem);margin-block:14px 12px}
.ek-caso-banda .ek-cuerpo p{font-size:.9375rem;color:var(--tinta-2);max-width:52ch}
@media (max-width:880px){.ek-caso-banda .ek-cuerpo{grid-template-columns:1fr}}

/* ── contacto ───────────────────────────────────────────────────────── */
.ek-cont{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(20px,3vw,40px);align-items:start}
.ek-form{display:flex;flex-direction:column;gap:18px}
.ek-campo{display:flex;flex-direction:column;gap:7px}
.ek-campo label{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--apagado)}
.ek-campo input,.ek-campo select,.ek-campo textarea{
  font:inherit;font-size:16px;color:var(--tinta);background:var(--fondo);
  border:1.5px solid transparent;padding:12px 14px;border-radius:12px;transition:border-color .18s ease}
.ek-campo input:hover,.ek-campo select:hover,.ek-campo textarea:hover{border-color:var(--suave)}
.ek-campo input:focus,.ek-campo select:focus,.ek-campo textarea:focus{outline:none;border-color:var(--azul)}
.ek-campo textarea{min-height:104px;resize:vertical}
.ek-campo .ek-err{font-size:12.5px;color:var(--error)}
.ek-campo.ek-mal input,.ek-campo.ek-mal select,.ek-campo.ek-mal textarea{border-color:var(--error)}
.ek-dos{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ek-acepto{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--apagado);line-height:1.5}
.ek-acepto input{margin-top:3px;accent-color:var(--azul)}
.ek-aviso{font-family:var(--f-uni);font-size:12px;color:var(--azul)}
.ek-lado-cont{display:flex;flex-direction:column;gap:12px}
.ek-dblq{background:var(--panel);border-radius:var(--r-tarjeta);padding:22px 24px;
      display:flex;flex-direction:column;gap:9px;box-shadow:var(--sombra-chica)}
.ek-dblq.ek-destacado{background:var(--claro)}
.ek-dblq h2{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
         color:var(--apagado);font-weight:500;line-height:1.3}
.ek-dblq p,.ek-dblq li{font-size:15px;color:var(--tinta-2)}
.ek-dblq strong{font-family:var(--f-tit);font-weight:600;color:var(--tinta);font-size:17px}
.ek-dblq ul{display:flex;flex-direction:column;gap:6px}
.ek-dblq li{padding-left:16px;position:relative}
.ek-dblq li::before{content:"";position:absolute;left:0;top:.66em;width:6px;height:6px;border-radius:50%;background:var(--medio)}
@media (max-width:880px){.ek-cont{grid-template-columns:1fr}.ek-dos{grid-template-columns:1fr}}

/* ── pie ────────────────────────────────────────────────────────────── */
.ek-pie{width:min(1240px, 100% - 2*clamp(14px,4vw,44px));
     margin:clamp(26px,3.4vw,44px) auto max(clamp(14px,2vw,22px), env(safe-area-inset-bottom, 0px));
     background:
       linear-gradient(180deg, rgba(255,255,255,.36), rgba(255,255,255,.16)),
       linear-gradient(180deg, rgba(78,115,32,0), rgba(78,115,32,.06)),
       color-mix(in srgb,var(--vivo) 64%,transparent);
     backdrop-filter:blur(16px) saturate(210%) contrast(1.06);
     border-radius:var(--r-panel);
     box-shadow:inset 0 1px 0 rgba(255,255,255,.58),
                inset 0 -1px 0 rgba(78,115,32,.20),
                0 2px 6px rgba(31,59,92,.08),
                0 20px 40px -26px rgba(31,59,92,.34)}
.ek-pie-in{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);
        gap:clamp(20px,3vw,44px);padding:clamp(28px,3.4vw,44px) clamp(22px,3vw,44px)}
.ek-pie h3{font-family:var(--f-uni);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
        color:var(--tinta);font-weight:600;margin-bottom:13px;line-height:1.3}
.ek-pie p,.ek-pie li{font-size:15px;font-weight:500;color:var(--tinta)}
.ek-pie a{transition:color .18s ease}

.ek-pie ul{display:flex;flex-direction:column;gap:7px}
.ek-pie a:hover{color:var(--azul-hondo)}
.ek-pie-barra{border-top:1px solid rgba(255,255,255,.45);
           padding:16px clamp(22px,3vw,44px);display:flex;flex-wrap:wrap;
           gap:8px 22px;justify-content:space-between;font-size:13px;font-weight:500;
           color:var(--tinta)}
.ek-proto{font-family:var(--f-uni);font-size:12px;letter-spacing:.03em;color:var(--tinta)}
@media (max-width:760px){.ek-pie-in{grid-template-columns:1fr 1fr}}
@media (max-width:440px){.ek-pie-in{grid-template-columns:1fr}}

/* ── movimiento ──────────────────────────────────────────────────────
   Entradas: solo opacidad y transform. Nada bloquea la lectura. */
@keyframes brota{ from{opacity:0;transform:translateY(9px) scale(.988)} to{opacity:1;transform:none} }
@keyframes entra{ from{opacity:0;transform:scale(.994)} to{opacity:1;transform:none} }
@keyframes crece{ from{transform:scaleX(0)} to{transform:scaleX(1)} }

/* Portada: una sola vez, al cargar, en orden de lectura */
.ek-arranque .ek-portada > *{animation:brota .46s var(--sale) backwards}
.ek-arranque .ek-portada > *:nth-child(1){animation-delay:.04s}
.ek-arranque .ek-portada > *:nth-child(2){animation-delay:.12s}
.ek-arranque .ek-portada .ek-semilla{animation:brota .46s var(--sale) backwards;animation-delay:.02s}
.ek-arranque .ek-portada h1{animation:brota .46s var(--sale) backwards;animation-delay:.08s}
.ek-arranque .ek-portada .ek-entrada{animation:brota .46s var(--sale) backwards;animation-delay:.16s}
.ek-arranque .ek-portada .ek-acciones{animation:brota .46s var(--sale) backwards;animation-delay:.24s}

/* Cambio de sección: evita que el contenido aparezca de golpe */
.ek-page.ek-entrando{animation:entra .2s var(--sale) both}

/* Barras de resultado: crecen una vez, cuando se ven por primera vez */
.ek-pista.ek-midiendo .ek-llena{animation:crece .42s var(--sale) both}
.ek-barra:nth-of-type(2) .ek-pista.ek-midiendo .ek-llena{animation-delay:.12s}

/* El hover solo donde hay puntero de verdad */
@media (hover:hover) and (pointer:fine){
  .ek-cifra:hover{transform:translateY(-3px);box-shadow:var(--cristal-cifra-alto)}
  .ek-paso{transition:transform .22s var(--sale)}
  .ek-paso:hover{transform:translateY(-2px)}
  .ek-srv{transition:background-color .2s ease}
  .ek-srv:hover{background:var(--fondo)}
}

/* Menos transparencia: el material se vuelve sólido, sin desenfoque */
@media (prefers-reduced-transparency:reduce){
  .ek-cab-in,.ek-pie{background:#B2D87F;backdrop-filter:none}
  .ek-cifra{background:#C7E1A3;backdrop-filter:none}
  .ek-arco .ek-marbete,.ek-caso-graf .ek-sector,.ek-caso-banda .ek-franja .ek-sector{
    background:#FFFFFF;backdrop-filter:none}
}

/* Más contraste: filete definido en lugar de sombra */
@media (prefers-contrast:more){
  .ek-panel,.ek-paso,.ek-dblq{border:1px solid var(--suave);box-shadow:none}
  .ek-cifra{background:#C7E1A3;backdrop-filter:none;border:1px solid var(--hondo);box-shadow:none}
  .ek-cab-in{background:#B2D87F;backdrop-filter:none;border:1px solid var(--hondo);box-shadow:none}
  .ek-pie{background:#B2D87F;backdrop-filter:none;border:1px solid var(--hondo);box-shadow:none}
  .ek-btn-hueco{border-color:var(--hondo);color:var(--hondo)}
  .ek-campo input,.ek-campo select,.ek-campo textarea{border-color:var(--apagado)}
  .ek-pista{border-color:var(--hondo)}
}

/* ── Pantallas muy estrechas: las cuatro secciones tienen que caber ── */
@media (max-width:380px){
  .ek-cab{padding-inline:10px}
  .ek-cab-in{padding:12px 8px 10px}
  .ek-menu{gap:2px}
  .ek-menu a{padding:12px 9px;font-size:13.5px}
}

@media (max-width:340px){
  .ek-menu a{padding:12px 7px;font-size:13px}
}

/* ── Puntero grueso: el dedo necesita 44 px, el ratón no ──
   Se decide por el tipo de puntero, no por el ancho de pantalla: una tableta
   ancha se toca y un portátil estrecho no. */
@media (pointer:coarse){
  .ek-menu a{padding:12px}
  .ek-marca{min-height:44px}
  /* Todo enlace del pie, en los dos menús, con altura de dedo. */
  .ek-pie a{display:inline-block;padding-block:13px}
  .ek-menu a{padding:12px}
  .ek-cab .ek-tel{padding-block:14px}
  .ek-pie-in ul{gap:0}
  .ek-acepto{min-height:44px;align-items:center}
  .ek-acepto input{width:22px;height:22px}
  .ek-salta:focus{padding:14px 18px}
  /* El resalte azul del toque sobra: ya hay respuesta propia al pulsar */
  button,a,summary,label{-webkit-tap-highlight-color:transparent}
  button{user-select:none;-webkit-user-select:none}
}

/* ── Móvil apaisado: poca altura, la lámina no puede comerse la pantalla ── */
@media (orientation:landscape) and (max-height:520px){
  .ek-arco{height:min(62vh,240px)}
  .ek-caso-graf{height:min(56vh,220px)}
  .ek-caso-banda .ek-franja{height:min(34vh,140px)}
  .ek-portada{padding-block:clamp(18px,3vw,28px) clamp(14px,2vw,22px)}
}

@media (prefers-reduced-motion:reduce){
  /* Menos movimiento, no cero: se quedan color y opacidad, se va el desplazamiento */
  .ek-arranque .ek-portada > *,.ek-arranque .ek-portada .ek-semilla,.ek-arranque .ek-portada h1,
  .ek-arranque .ek-portada .ek-entrada,.ek-arranque .ek-portada .ek-acciones{animation:none}
  .ek-page.ek-entrando{animation:none}
  .ek-pista.ek-midiendo .ek-llena{animation:none}
  .ek-cifra:hover,.ek-paso:hover{transform:none}
  .ek-btn:hover .ek-flecha{transform:none}
  /* La respuesta al pulsar se queda: es realimentación, no desplazamiento */
  .ek-btn:active{transform:scale(.98)}
  .ek-menu a:active{transform:scale(.97)}
}

/* ════════════════════════════════════════════════════════════════════
   WordPress
   Lo anterior es el sistema de diseño tal cual salió del prototipo. Lo que
   sigue es lo que hace falta para que ese sistema funcione dentro de
   WordPress: el editor de bloques, el contenido que escribe el cliente, la
   barra de administración y los huecos de fotografía cuando ya tienen imagen.
   ════════════════════════════════════════════════════════════════════ */

/* ── estructura de la plantilla ─────────────────────────────────────── */
.ek-main{display:block}
.ek-site{min-height:100vh;display:flex;flex-direction:column}
.ek-site > .ek-main{flex:1 0 auto}

/* Con la barra de administración, la cabecera pegajosa tiene que bajar:
   si no, se mete debajo de la barra y el menú queda medio tapado. */
.admin-bar .ek-cab{top:calc(env(safe-area-inset-top,0px) + 12px + 32px)}
@media screen and (max-width:782px){
  .admin-bar .ek-cab{top:calc(env(safe-area-inset-top,0px) + 12px + 46px)}
}

/* ── accesibilidad: texto solo para lectores de pantalla ────────────── */
.screen-reader-text{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0}
.screen-reader-text:focus{
  position:fixed;top:12px;left:12px;z-index:60;width:auto;height:auto;margin:0;
  clip-path:none;padding:14px 18px;background:var(--panel);color:var(--tinta);
  border-radius:10px;box-shadow:var(--sombra-flotante)}

/* ── menú principal: en WordPress son enlaces de un wp_nav_menu ─────── */
.ek-menu{list-style:none;margin:0;padding:0}
.ek-menu li{display:block}
.ek-menu .sub-menu{display:none}
.ek-cab .ek-menu a{display:inline-block}

/* El menú es el del prototipo: píldoras siempre visibles. En pantalla
   estrecha la fila se desplaza en horizontal en lugar de plegarse, que es
   lo que hace la maqueta aprobada y lo que deja los cuatro destinos a la
   vista sin abrir nada. */
.ek-nav{display:flex;align-items:center;min-width:0}

/* ── huecos de fotografía dentro del editor ─────────────────────────
   En el prototipo el hueco llevaba un <img> suelto. En WordPress lleva un
   bloque de imagen, así que la foto viene envuelta en <figure>. */
.ek-foto .wp-block-image{position:relative;z-index:1;margin:0;height:100%}
.ek-foto img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;display:block}
.ek-foto:has(img) .ek-foto-vacia{display:none}
.ek-foto figcaption{position:absolute;left:0;right:0;bottom:0;z-index:2;margin:0;
                    padding:26px 18px 12px;font-size:12.5px;color:#FFFFFF;
                    background:linear-gradient(180deg,rgba(31,59,92,0),rgba(31,59,92,.62))}

/* Rejilla de trabajos montada con columnas del editor, no solo con la del tema. */
.ek-trabajos > .wp-block-group,.ek-trabajos > figure{margin:0}

/* ── contenido editable: «la prosa» ─────────────────────────────────
   Todo lo que escriba el cliente en el editor cae aquí. Recupera lo que el
   reinicio de arriba quita —viñetas, márgenes entre párrafos— sin tocar el
   resto del tema. */
.ek-prosa{max-width:72ch;margin-inline:auto;color:var(--tinta-2);font-size:1.0313rem}
.ek-prosa.alignwide,.ek-prosa.alignfull{max-width:none}
.ek-prosa > * + *{margin-top:1.25em}
.ek-prosa h2{font-size:clamp(1.5rem,3vw,2.125rem);margin-top:2em}
.ek-prosa h3{font-size:clamp(1.19rem,2.2vw,1.5rem);margin-top:1.6em}
.ek-prosa h4{font-size:1.0625rem;margin-top:1.4em}
.ek-prosa ul,.ek-prosa ol{padding-left:1.35em;margin-left:0}
.ek-prosa ul{list-style:disc}
.ek-prosa ol{list-style:decimal}
.ek-prosa li + li{margin-top:.45em}
.ek-prosa li::marker{color:var(--verde)}
.ek-prosa a{color:var(--azul);text-decoration:underline;text-underline-offset:.18em;
            text-decoration-thickness:1px}
.ek-prosa a:hover{color:var(--azul-hondo)}
.ek-prosa strong{color:var(--tinta);font-weight:600}
.ek-prosa blockquote{border-left:3px solid var(--medio);padding-left:20px;color:var(--tinta);
                     font-size:1.125rem}
.ek-prosa code,.ek-prosa kbd{font-family:var(--f-uni);font-size:.875em;background:var(--claro);
                             padding:2px 6px;border-radius:6px;color:var(--hondo)}
.ek-prosa pre{background:var(--claro);border-radius:var(--r-tarjeta);padding:18px 20px;overflow-x:auto}
.ek-prosa hr{border:0;border-top:1px solid var(--suave);margin-block:2.4em}
.ek-prosa img,.ek-prosa figure{border-radius:var(--r-tarjeta)}
.ek-prosa figcaption{font-family:var(--f-uni);font-size:12px;color:var(--apagado);margin-top:10px}
.ek-prosa table{border-collapse:collapse;width:100%}
.ek-prosa th,.ek-prosa td{text-align:left;padding:12px 16px 12px 0;border-top:1px solid var(--claro)}

/* ── bloques del editor ─────────────────────────────────────────────── */
.wp-block-button__link,.wp-element-button{
  display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:999px;
  background:var(--azul);color:#FFFFFF;font-family:var(--f-tit);font-size:15px;font-weight:600;
  border:1.5px solid var(--azul);text-decoration:none;
  transition:background .2s ease,color .2s ease,border-color .2s ease,transform .1s ease}
.wp-block-button__link:hover{background:var(--azul-hondo);border-color:var(--azul-hondo);color:#FFFFFF}
.wp-block-button__link:active{transform:scale(.972)}
.wp-block-button.is-style-hueco .wp-block-button__link{
  background:transparent;color:var(--azul);border-color:var(--suave)}
.wp-block-button.is-style-hueco .wp-block-button__link:hover{
  background:var(--azul-claro);color:var(--azul-hondo);border-color:var(--azul)}
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:12px}

.is-style-antetitulo{
  display:inline-flex;align-items:center;padding:7px 15px;border-radius:999px;
  background:var(--claro);color:var(--hondo);font-family:var(--f-uni);font-size:11px;
  font-weight:400;letter-spacing:.12em;text-transform:uppercase;margin:0}

/* Las secciones del tema van a ancho completo pero centradas: el ancho y el
   aire lateral los pone «.ek-caja», igual que en el prototipo. Poner aquí
   «margin-inline:0» era lo que las dejaba pegadas al borde izquierdo en
   pantallas anchas. */
.ek-main > .alignfull,.ek-pagina > .alignfull{margin-inline:auto}
.wp-block-columns{gap:clamp(20px,3vw,44px)}
.wp-block-separator{border:0;border-top:1px solid var(--suave);opacity:1}
.wp-block-quote{border-left:3px solid var(--medio);padding-left:20px}
.wp-block-image img{border-radius:var(--r-tarjeta)}
.ek-foto .wp-block-image img{border-radius:0}

/* ── paginación y archivo ───────────────────────────────────────────── */
.ek-paginacion{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(24px,3vw,40px)}
.ek-paginacion .page-numbers{display:grid;place-items:center;min-width:44px;min-height:44px;
                             padding:0 14px;border-radius:999px;background:var(--panel);
                             font-family:var(--f-uni);font-size:13px;color:var(--tinta);
                             box-shadow:var(--sombra-chica)}
.ek-paginacion .page-numbers:hover{color:var(--azul)}
.ek-paginacion .page-numbers.current{background:var(--hondo);color:#FFFFFF;box-shadow:none}

.ek-rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
            gap:clamp(14px,2vw,24px)}
.ek-ficha{display:flex;flex-direction:column;gap:10px;background:var(--panel);
          border-radius:var(--r-tarjeta);padding:clamp(20px,2.2vw,28px);
          box-shadow:var(--sombra-chica)}
.ek-ficha h2,.ek-ficha h3{font-size:1.19rem}
.ek-ficha p{font-size:14.5px;color:var(--tinta-2)}
.ek-ficha .ek-uni{color:var(--apagado)}
.ek-ficha .ek-foto{aspect-ratio:16/10;margin-bottom:4px}
@media (hover:hover) and (pointer:fine){
  .ek-ficha{transition:transform .22s var(--sale),box-shadow .22s var(--sale)}
  .ek-ficha:hover{transform:translateY(-2px);box-shadow:var(--sombra-flotante)}
}

/* ── buscador ───────────────────────────────────────────────────────── */
.ek-busca{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ek-busca input[type="search"]{
  font:inherit;font-size:16px;color:var(--tinta);background:var(--fondo);
  border:1.5px solid transparent;padding:12px 16px;border-radius:999px;min-width:min(320px,100%);
  transition:border-color .18s ease}
.ek-busca input[type="search"]:focus{outline:none;border-color:var(--azul)}

/* ── comentarios: el tema no los usa, pero si un plugin los saca, que no
      se vean rotos ─────────────────────────────────────────────────── */
.comment-respond,.comment-list{max-width:72ch;margin-inline:auto}

/* ── el editor de bloques usa esta misma hoja ───────────────────────── */
.editor-styles-wrapper{background:var(--fondo)}
.editor-styles-wrapper .ek-prosa{margin-inline:0}

/* ── láminas de hojas ──
   El lienzo lo inserta assets/js/ui.js dentro de cualquier elemento con la
   clase «ek-lamina». Sin JavaScript queda el fondo liso, que es un estado
   válido: no hay huecos ni saltos. */
.ek-lamina{position:relative}
.ek-lamina > canvas.ek-hojas{position:absolute;inset:0;width:100%;height:100%;z-index:0}
/* El lienzo está posicionado, así que pintaría por encima del contenido en
   flujo: los hermanos suben a su propia capa. Los rótulos, que ya van
   colocados a mano, solo necesitan quedar por encima de ambos. */
.ek-lamina > *:not(canvas):not(.ek-foto-vacia):not(.ek-marbete):not(.ek-sector){position:relative;z-index:1}
.ek-lamina > .ek-foto-vacia,.ek-lamina > .ek-marbete,.ek-lamina > .ek-sector{z-index:2}

/* ════════════════════════════════════════════════════════════════════
   Ajustes para el marcado del editor
   El prototipo usaba <span>, <figcaption> y <li class="…"> sueltos. Los
   bloques del editor emiten <p>, <figure> y listas sin clase por elemento,
   así que lo que cambia es el selector, no el diseño.
   ════════════════════════════════════════════════════════════════════ */

/* Cifras: el rótulo y la descripción son párrafos. */
.ek-cifra p{margin:0}
.ek-cifra > p:last-child{font-size:13.2px;color:var(--tinta);line-height:1.5;margin-top:2px}
.ek-cifra > p:has(b){font-size:inherit;margin-top:0;line-height:1}
.ek-cifra b{display:block}
.ek-cifra .ek-et{line-height:1.5;margin:2px 0 0}

/* Áreas de trabajo: las etiquetas son los elementos de una lista normal. */
/* La lista de etiquetas se comporta como tal esté donde esté: dentro de una
   fila de áreas de trabajo o en la tarjeta de un socio. */
.ek-etiquetas{display:flex;flex-wrap:wrap;gap:7px;align-content:flex-start}
.ek-frente ul li,.ek-etiquetas li,.ek-brotes li{font-family:var(--f-uni);font-size:12px;color:var(--hondo);
                               background:var(--claro);padding:5px 12px;border-radius:999px;
                               letter-spacing:.01em}
.ek-brotes a.ek-brote:hover{background:var(--suave)}

/* Catálogo de servicios: la marca de verificación va sobre cada elemento. */
.ek-lista li{break-inside:avoid;position:relative;padding:11px 0 11px 32px;
             font-size:.9375rem;color:var(--tinta-2);line-height:1.55}
.ek-lista li::before{content:"✓";position:absolute;left:0;top:12px;width:20px;height:20px;
                     border-radius:50%;background:var(--claro);color:var(--hondo);
                     display:grid;place-items:center;font-size:11px;font-weight:600;line-height:1}
.ek-lista li b,.ek-lista li strong{font-weight:600;color:var(--tinta)}

/* Tabla de marcos: la primera columna hace de referencia. */
.ek-tabla-caja tbody td:first-child{font-family:var(--f-uni);font-size:13px;color:var(--hondo);
                                    white-space:nowrap}
/* El CSS de bloques de WordPress le pone un filete de 1 px a cada celda y la
   tabla queda cuadriculada. Aquí la línea la marca la fila, como en el
   prototipo, y la figura del bloque no arrastra márgenes propios. */
.ek-tabla-caja th,.ek-tabla-caja td{border:0}
/* Y un filete negro de 3 px bajo la cabecera, que aquí la separa el propio
   filete claro de la primera fila. */
.ek-tabla-caja thead,.ek-tabla-caja tfoot{border:0}
.ek-tabla-caja{margin:0}

/* Pasos, cabeceras y rótulos que pasaron de <span> a <p>. */
/* Solo el margen vertical del párrafo: el lateral lo usa «.ek-cuenta» para
   empujarse al extremo de la fila. */
.ek-paso .ek-bola,.ek-frente .ek-num,.ek-fam-cab .ek-cuenta,
.ek-arco .ek-marbete,.ek-foto-vacia{margin-block:0}

/* Una sección que ya viene precedida de su cabecera no repite el aire. */
.ek-sin-aire{padding-top:0}

/* Hueco de fotografía todavía sin imagen: el bloque vacío no ocupa. */
.ek-foto .wp-block-image:empty{display:none}

/* Menús del pie: el de secciones va en columna, el legal en línea. */
.ek-pie .ek-menu-legal{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px 20px}
.ek-pie-barra .ek-menu-legal a{color:var(--tinta)}

/* Avisos del formulario. */
.ek-aviso{font-family:var(--f-uni);font-size:12.5px;line-height:1.5;padding:12px 16px;
          border-radius:12px;margin-bottom:6px}
.ek-aviso--bien{background:var(--claro);color:var(--hondo)}
.ek-aviso--mal{background:#F7E7E2;color:var(--error)}

/* El caso de un proyecto: el titular es un enlace, no texto suelto. */
.ek-caso h2 a,.ek-ficha h2 a{color:inherit}
.ek-caso h2 a:hover,.ek-ficha h2 a:hover{color:var(--azul)}
.ek-caso-foto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}

/* Páginas montadas con Elementor: manda su propio ancho. */
.ek-elementor .ek-main{padding-inline:0}

/* La flecha del prototipo, que allí era un SVG dentro del botón. Como es
   decoración, va en el CSS y no en el marcado que edita el cliente. */
.wp-block-button:not(.is-style-hueco) .wp-block-button__link::after,
.ek-btn:not(.ek-btn-hueco)::after{content:"→";font-size:1.05em;line-height:1;
                                  transition:transform .2s ease}
@media (hover:hover) and (pointer:fine){
  .wp-block-button:not(.is-style-hueco) .wp-block-button__link:hover::after,
  .ek-btn:not(.ek-btn-hueco):hover::after{transform:translateX(3px)}
}
@media (prefers-reduced-motion:reduce){
  .wp-block-button .wp-block-button__link:hover::after,
  .ek-btn:hover::after{transform:none}
}

/* Variantes de bloque que registra inc/setup.php. */
.wp-block-group.is-style-panel{background:var(--panel);border-radius:var(--r-panel);
                               padding:clamp(24px,3.4vw,46px);box-shadow:var(--sombra-panel)}
.wp-block-list.is-style-verificado{column-count:2;column-gap:clamp(28px,3.5vw,56px);
                                   padding-left:0;list-style:none}
.wp-block-list.is-style-verificado li{break-inside:avoid;position:relative;
                                      padding:11px 0 11px 32px;font-size:.9375rem;
                                      color:var(--tinta-2);line-height:1.55}
.wp-block-list.is-style-verificado li::before{content:"✓";position:absolute;left:0;top:12px;
                                              width:20px;height:20px;border-radius:50%;
                                              background:var(--claro);color:var(--hondo);
                                              display:grid;place-items:center;font-size:11px;
                                              font-weight:600;line-height:1}
@media (max-width:860px){.wp-block-list.is-style-verificado{column-count:1}}

/* Páginas a ancho completo: el aire lo pone el contenido, no la plantilla. */
.ek-main--ancho{padding-inline:0}
.ek-pagina--ancho > .ek-caja:first-child{padding-top:clamp(20px,2.6vw,34px)}


/* El teléfono va al final de la isla, tras el menú, como en el prototipo.
   En el marcado aparece antes para que sea el primer enlace tras la marca
   cuando se navega con teclado. */
.ek-cab-in .ek-tel{order:3}

/* ════════════════════════════════════════════════════════════════════
   Márgenes de flujo de WordPress
   Al pintar un grupo, WordPress le pone la clase «is-layout-flow» y mete
   1,5 rem entre sus hermanos. Nuestras rejillas y paneles ya llevan su
   propio gap y su propio relleno, así que ese margen se suma y descuadra
   las filas: las cifras, los pasos y los frentes se separaban 24 px de más
   y la portada crecía otro tanto.

   Se quita en todo el armazón del tema. Las reglas propias que sí quieren
   margen —«.ek-frente p», «.ek-familia + .ek-familia», la prosa editable—
   llevan más especificidad y siguen mandando.
   ════════════════════════════════════════════════════════════════════ */
.ek-main :where(.wp-block-group,.wp-block-buttons,.wp-block-columns) > *{margin-block:0}

/* En el contenido que escribe el cliente sí hace falta aire entre bloques. */
.ek-prosa > * + *{margin-top:1.25em}

/* Sin relleno de raíz, una página de texto suelto —sin nuestras secciones—
   necesita su propio ancho y su propio aire: si no, el texto toca el borde. */
.ek-pagina > :not(.ek-caja):not(.alignfull):not(.ek-main){
  width:100%;max-width:820px;margin-inline:auto;
  padding-inline:clamp(16px,4vw,44px)}

/* Dentro de la prosa, ancho completo y ancho extra ocupan la columna de
   lectura: es lo predecible cuando la plantilla no impone una rejilla. */
.ek-prosa .alignwide,.ek-prosa .alignfull{width:auto;max-width:none;margin-inline:0}

/* El reajuste de arriba iguala en especificidad a las reglas propias que sí
   piden margen, y al ir después las anulaba: la cabecera de sección perdía
   sus 36 px contra el panel. Se reponen aquí, ya detrás del reajuste. */
.ek-main .ek-cabeza{margin-bottom:clamp(22px,3vw,36px)}
.ek-main .ek-acciones{margin-top:30px}
.ek-main .ek-brotes{margin-top:12px}
.ek-main .ek-medida{margin-top:22px}
.ek-main .ek-caso-banda{margin-top:clamp(14px,1.8vw,22px)}
.ek-main .ek-familia + .ek-familia,.ek-main .ek-caso + .ek-caso{margin-top:clamp(14px,1.8vw,22px)}

/* ── logotipo del sitio ──
   Cada archivo llega con sus proporciones, así que lo que se fija es el alto
   —ajustable en Personalizar → Identidad del sitio— y el ancho se calcula
   solo. Sin esto, el logotipo entraba a su tamaño original y reventaba la
   isla de la cabecera. */
.ek-marca .custom-logo-link{display:block;line-height:0}
.ek-marca .custom-logo{
  height:var(--logo-alto,40px);width:auto;
  max-width:min(240px,44vw);object-fit:contain;display:block}
.ek-pie .custom-logo{height:var(--logo-alto,40px);width:auto;max-width:200px;
                     object-fit:contain;display:block;margin-bottom:12px}
@media (max-width:720px){
  .ek-marca .custom-logo{height:min(var(--logo-alto,40px),36px);max-width:52vw}
}

/* ── la lámina cede el sitio a la fotografía ──
   Respaldo del script: aunque el lienzo siguiera puesto —imagen insertada en
   caliente, script bloqueado—, en cuanto hay una fotografía dentro las hojas
   dejan de verse. Era lo que tapaba la imagen de la portada. */
.ek-lamina:has(img) > canvas.ek-hojas{display:none}
.ek-arco .wp-block-image{position:absolute;inset:0;margin:0;z-index:1}
.ek-arco img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0}
.ek-arco .wp-block-image:empty{display:none}

/* ════════════════════════════════════════════════════════════════════
   Carrusel de fotografías
   Una tira que se desplaza de lado. El desplazamiento es el nativo del
   navegador con anclaje: se arrastra con el dedo, rueda con el trackpad y
   funciona igual si el script no llega —entonces son flechas menos, pero
   la tira sigue moviéndose—. Las flechas y los puntos los añade ui.js.
   ════════════════════════════════════════════════════════════════════ */
.ek-carrusel{position:relative}

/* La pista es la galería del editor. Se estiliza el bloque nativo en lugar de
   inventar un marcado propio: así las fotografías se añaden, se quitan y se
   reordenan como en cualquier galería de WordPress, que es lo que el cliente
   ya sabe hacer. */
.ek-carrusel .wp-block-gallery,.ek-pista-carrusel{
  display:flex;flex-wrap:nowrap;gap:clamp(12px,1.5vw,20px);
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
  padding-block:2px;margin-inline:-2px;padding-inline:2px}
.ek-carrusel .wp-block-gallery::-webkit-scrollbar,
.ek-pista-carrusel::-webkit-scrollbar{display:none}

/* Todas anclan por la izquierda: así la foto a la vista queda alineada con
   el resto de la página y el salto de una a otra es exacto. */
.ek-carrusel .wp-block-gallery > figure,.ek-diapo{
  flex:0 0 clamp(260px,58%,640px);scroll-snap-align:start;
  height:clamp(200px,26vw,380px);margin:0;
  border-radius:var(--r-tarjeta);overflow:hidden;background:var(--fondo-2);
  box-shadow:var(--sombra-chica)}
.ek-carrusel .wp-block-gallery > figure img{
  width:100%;height:100%;object-fit:cover;display:block;border-radius:0}
.ek-carrusel .wp-block-gallery > figure figcaption{
  position:absolute;left:0;right:0;bottom:0;margin:0;padding:26px 16px 12px;
  font-size:12.5px;color:#FFFFFF;background:none;
  background-image:linear-gradient(180deg,rgba(31,59,92,0),rgba(31,59,92,.62))}

/* Sin fotografías: el aviso que solo ve quien puede subirlas. */
.ek-carrusel--vacio{border:1px dashed var(--suave);border-radius:var(--r-tarjeta);
                    background:var(--fondo-2);padding:clamp(24px,3vw,40px);text-align:center}
.ek-carrusel--vacio p{font-family:var(--f-uni);font-size:12.5px;line-height:1.6;
                      color:var(--hondo);max-width:52ch;margin-inline:auto}

/* Flechas: mismo cristal que los rótulos de las láminas. */
.ek-flecha-carrusel{
  position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:46px;height:46px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.88);backdrop-filter:blur(10px) saturate(160%);
  box-shadow:var(--sombra-flotante), inset 0 1px 0 rgba(255,255,255,.8);
  color:var(--hondo);
  transition:transform .18s var(--sale),opacity .18s ease,background .18s ease}
.ek-flecha-carrusel[hidden]{display:none}
.ek-flecha-carrusel:disabled{opacity:.34;pointer-events:none}
.ek-flecha-carrusel--antes{left:clamp(6px,1vw,14px)}
.ek-flecha-carrusel--luego{right:clamp(6px,1vw,14px)}

/* Puntos: cuántas hay y en cuál se está. */
.ek-puntos-carrusel{
  display:flex;justify-content:center;gap:8px;margin-top:clamp(14px,1.6vw,20px)}
.ek-puntos-carrusel button{
  width:9px;height:9px;border-radius:50%;padding:0;
  background:var(--suave);transition:background .2s ease,transform .2s var(--sale)}
.ek-puntos-carrusel button[aria-current="true"]{background:var(--hondo);transform:scale(1.28)}

@media (hover:hover) and (pointer:fine){
  .ek-flecha-carrusel:hover{background:#FFFFFF;transform:translateY(-50%) scale(1.06)}
  .ek-puntos-carrusel button:hover{background:var(--medio)}
}

/* Con el dedo, el propio arrastre es la forma natural de pasar: las flechas
   estorban más que ayudan y los puntos suben a 44 px de objetivo. */
@media (pointer:coarse){
  .ek-flecha-carrusel{display:none}
  .ek-puntos-carrusel button{width:44px;height:44px;border-radius:999px;background:transparent;
                             display:grid;place-items:center}
  .ek-puntos-carrusel button::before{content:"";width:9px;height:9px;border-radius:50%;
                                     background:var(--suave);transition:background .2s ease}
  .ek-puntos-carrusel button[aria-current="true"]{transform:none;background:transparent}
  .ek-puntos-carrusel button[aria-current="true"]::before{background:var(--hondo);transform:scale(1.28)}
}

@media (max-width:820px){
  .ek-diapo{flex-basis:min(86%,420px);height:clamp(190px,52vw,300px)}
}

@media (prefers-reduced-motion:reduce){
  .ek-pista-carrusel{scroll-behavior:auto}
  .ek-flecha-carrusel:hover{transform:translateY(-50%)}
  .ek-puntos-carrusel button{transition:none}
}

@media (prefers-reduced-transparency:reduce){
  .ek-flecha-carrusel{background:#FFFFFF;backdrop-filter:none}
}

@media (prefers-contrast:more){
  .ek-flecha-carrusel{background:#FFFFFF;backdrop-filter:none;border:1px solid var(--hondo);
                      box-shadow:none}
  .ek-puntos-carrusel button{border:1px solid var(--hondo)}
}

/* ════════════════════════════════════════════════════════════════════
   Formulario: que nada empuje la página a lo ancho
   Un elemento de rejilla o de caja flexible arranca con «min-width:auto»,
   es decir, no puede encogerse por debajo de su contenido. La opción más
   larga del desplegable —«Estudios propios (plantas de tratamiento…)»—
   medía 637 px y arrastraba consigo al formulario entero: en un teléfono
   de 390 px la página se desplazaba de lado.
   ════════════════════════════════════════════════════════════════════ */
.ek-cont > *,.ek-dos > *,.ek-form > *,.ek-campo,.ek-lado-cont > *{min-width:0}
.ek-campo input,.ek-campo select,.ek-campo textarea{width:100%;max-width:100%}
/* El desplegable recorta la opción larga en lugar de estirarse. */
.ek-campo select{text-overflow:ellipsis}
/* El campo trampa está fuera de la vista, pero si algún estilo lo sacara,
   que no provoque el acercamiento de Safari al enfocarlo. */
.screen-reader-text input{font-size:16px}

/* Con el dedo, el correo y el teléfono del panel son destino de toque. */
@media (pointer:coarse){
  .ek-dblq a{display:inline-block;padding-block:12px}
}

/* ── el fondo de hojas, apagable ──
   Personalizar → Eklektos · Datos de contacto → «Dibujar el fondo de hojas».
   Va por clase del documento para que valga igual con el script bloqueado, y
   se asegura aquí que ninguna lámina se pinte encima de una fotografía. */
.ek-sin-hojas canvas.ek-hojas{display:none}
.ek-lamina:has(img) > canvas.ek-hojas{display:none}
.ek-lamina:has(img){background:var(--fondo-2)}

/* ── pie por áreas de bloques ──
   Cada columna del pie es un área de widgets que se edita con bloques. Los
   bloques traen sus propias clases, así que el pie tiene que vestir lo que
   caiga dentro: listas, párrafos, menús de navegación e imágenes. */
.ek-pie-bloque > :first-child{margin-top:0}
.ek-pie .ek-pie-bloque h1,.ek-pie .ek-pie-bloque h2,
.ek-pie .ek-pie-bloque h3,.ek-pie .ek-pie-bloque h4,
.ek-pie .wp-block-heading{
  font-family:var(--f-uni);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--tinta);font-weight:600;margin-bottom:13px;line-height:1.3}
.ek-pie .wp-block-page-list,.ek-pie .wp-block-navigation__container,
.ek-pie .ek-pie-bloque ul{display:flex;flex-direction:column;gap:7px;list-style:none;
                          padding:0;margin:0}
.ek-pie .wp-block-navigation{display:block}
.ek-pie .ek-pie-bloque p{margin-bottom:0}
.ek-pie .ek-pie-bloque p + p{margin-top:8px}
.ek-pie .ek-pie-bloque img{max-width:min(200px,100%);height:auto}

/* ── vista previa de los bloques del tema dentro del editor ──
   El formulario y el panel de datos se pintan en el servidor, así que en el
   editor se ve lo mismo que se publica. Se desactiva el puntero para que al
   pulsar se seleccione el bloque en lugar de escribir en un campo. */
.ek-vista-bloque{pointer-events:none}
.editor-styles-wrapper .ek-vista-bloque .ek-form{margin:0}

/* ════════════════════════════════════════════════════════════════════
   Blog
   ════════════════════════════════════════════════════════════════════ */

/* La tarjeta empieza por la imagen, que es lo que se mira primero. */
.ek-ficha .ek-foto{display:block;aspect-ratio:16/10;margin-bottom:4px;
                   border-radius:var(--r-tarjeta)}
.ek-ficha .ek-foto img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0}
.ek-ficha .ek-seguir{font-family:var(--f-uni);font-size:11px;letter-spacing:.1em;
                     text-transform:uppercase;color:var(--azul);margin-top:auto;padding-top:4px}
.ek-ficha .ek-seguir::after{content:" →"}

/* Imagen de cabecera de la publicación. */
.ek-portada-entrada{aspect-ratio:16/7;margin-bottom:clamp(14px,1.8vw,22px)}
.ek-portada-entrada img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0}

/* Dentro del artículo, la imagen manda: ancha y con su pie. */
.ek-prosa .wp-block-image{margin-block:1.8em}
.ek-prosa .wp-block-image img{width:100%;height:auto}
.ek-prosa .wp-block-image:empty{min-height:clamp(180px,24vw,320px);background:var(--fondo-2);
                                border-radius:var(--r-tarjeta);display:block}

@media (hover:hover) and (pointer:fine){
  .ek-ficha:hover .ek-seguir{text-decoration:underline;text-underline-offset:.2em}
}

/* ════════════════════════════════════════════════════════════════════
   Nosotros
   ════════════════════════════════════════════════════════════════════ */

/* Trayectoria: una columna de años a la izquierda y el relato a la derecha,
   unidos por una línea continua. */
.ek-hitos{display:flex;flex-direction:column}
.ek-hito{display:grid;grid-template-columns:110px minmax(0,1fr);
         gap:clamp(14px,2.4vw,36px);padding-block:clamp(18px,2.2vw,26px);
         position:relative}
.ek-hito + .ek-hito{border-top:1px solid var(--claro)}
.ek-hito .ek-anio{font-family:var(--f-uni);font-size:13px;letter-spacing:.06em;
                  color:var(--hondo);padding-top:4px;position:relative}
.ek-hito .ek-anio::before{content:"";position:absolute;right:-1px;top:0;bottom:calc(-1 * clamp(18px,2.2vw,26px));
                          width:1px;background:var(--suave)}
.ek-hito:last-child .ek-anio::before{display:none}
.ek-hito h3{font-size:1.19rem}
.ek-hito p{font-size:.9375rem;color:var(--tinta-2);margin-top:8px;max-width:58ch}
@media (max-width:640px){
  .ek-hito{grid-template-columns:1fr;gap:6px}
  .ek-hito .ek-anio::before{display:none}
}

/* El consultor: una sola ficha, con el retrato a un lado. Es una persona
   concreta y no una rejilla de caras, así que ocupa el ancho del panel. */
.ek-consultor{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);
              gap:clamp(20px,3vw,44px);align-items:start}
.ek-consultor .ek-retrato{aspect-ratio:1}
.ek-consultor .ek-retrato img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0}
.ek-consultor h3{font-size:clamp(1.31rem,2.4vw,1.75rem)}
.ek-consultor .ek-cargo{font-family:var(--f-uni);font-size:11px;letter-spacing:.12em;
                        text-transform:uppercase;color:var(--hondo);margin:8px 0 0}
.ek-consultor p{font-size:.9375rem;color:var(--tinta-2);margin-top:14px;max-width:58ch}
@media (max-width:720px){.ek-consultor{grid-template-columns:1fr}
  .ek-consultor .ek-retrato{max-width:260px}}

/* Socios comerciales: son empresas, así que mandan el logotipo y lo que
   aportan, no un retrato. */
.ek-socios{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(14px,2vw,22px)}
.ek-socio{display:flex;flex-direction:column;gap:10px;background:var(--panel);
          border-radius:var(--r-tarjeta);padding:clamp(20px,2.2vw,28px);
          box-shadow:var(--sombra-chica)}
/* El hueco del logotipo acepta cualquier proporción sin recortar: un
   logotipo de Canva sale cuadrado —500 × 500 de fábrica— y antes se quedaba
   limitado a 56 px de alto, ridículo al lado de uno apaisado. Ahora la caja
   tiene una altura cómoda y la imagen se ajusta dentro, tocando el alto si es
   cuadrada y el ancho si es alargada.

   El fondo va blanco con un filete: así un PNG con transparencia y un JPG con
   fondo blanco —los dos formatos que exporta Canva— se ven igual de limpios,
   sin el recuadro que dejaría un fondo de color. */
.ek-socio-logo{display:grid;place-items:center;position:relative;
               min-height:clamp(128px,15vw,168px);
               padding:clamp(16px,2vw,24px);
               background:var(--panel);border:1px solid var(--claro);border-radius:12px}
.ek-socio-logo .wp-block-image{margin:0;width:100%;height:100%;display:grid;place-items:center}
.ek-socio-logo .wp-block-image:empty{display:none}
.ek-socio-logo img{max-width:100%;max-height:clamp(96px,11vw,120px);
                   width:auto;height:auto;object-fit:contain;border-radius:0}
.ek-logo-vacio{font-family:var(--f-uni);font-size:11px;letter-spacing:.1em;
               text-transform:uppercase;color:var(--apagado);margin:0}
.ek-socio-logo:has(img) .ek-logo-vacio{display:none}
.ek-socio h3{font-size:1.19rem;margin-top:4px}
.ek-socio > p{font-size:.9375rem;color:var(--tinta-2)}
.ek-socio .ek-etiquetas{margin-top:2px}
@media (max-width:640px){.ek-socios{grid-template-columns:1fr}}

/* Logotipos de clientes y certificaciones: mismo alto, aire alrededor. */
.ek-logos{display:grid;grid-template-columns:repeat(6,1fr);gap:clamp(12px,1.6vw,22px);
          align-items:center}
.ek-logos .wp-block-image{margin:0;display:grid;place-items:center;
                          min-height:clamp(84px,9vw,104px);
                          background:var(--panel);border:1px solid var(--claro);
                          border-radius:12px;padding:14px}
.ek-logos .wp-block-image img{max-width:100%;max-height:clamp(56px,6vw,72px);
                              width:auto;height:auto;object-fit:contain;border-radius:0}
@media (max-width:860px){.ek-logos{grid-template-columns:repeat(3,1fr)}}
@media (max-width:420px){.ek-logos{grid-template-columns:repeat(2,1fr)}}

/* Toda la tarjeta es el enlace: en un teléfono, el título a dos líneas cortas
   se queda en 42 px de alto y eso es poco para el dedo. El enlace del título
   se estira sobre la tarjeta entera; la imagen no lleva enlace propio para
   que no haya dos destinos superpuestos ni dos paradas de teclado. */
.ek-ficha{position:relative}
.ek-ficha h2 a::after{content:"";position:absolute;inset:0;border-radius:var(--r-tarjeta)}
.ek-ficha h2 a:focus-visible::after{outline:2px solid var(--azul);outline-offset:3px}
