:root { --fondo-pagina: #eeede7; --fondo-soluciones: #eeede7; --texto-soluciones: #000000; }
    body.modo-soluciones-oscuro { --texto: #ffffff; --fondo-pagina: #000000; --fondo-soluciones: #000000; --texto-soluciones: #ffffff; }
    *, *::before, *::after { box-sizing: border-box; }
    html, body { margin: 0; padding: 0; }
    body { font-family: Arimo, Arial, sans-serif; background: var(--fondo-pagina); transition: background-color 900ms cubic-bezier(.22,1,.36,1); }
    
    .soluciones { width: 100%; background: var(--fondo-soluciones); color: var(--texto-soluciones); overflow: hidden; transition: background-color 900ms cubic-bezier(.22,1,.36,1), color 900ms cubic-bezier(.22,1,.36,1); }
    .soluciones-interior { width: 100%; max-width: 1831px; margin: 0 auto; padding: 0 0 228px; }
    .soluciones-titulo { font-family: Arimo, Arial, sans-serif; font-size: 83.79px; font-weight: 400; letter-spacing: -3.3516px; line-height: 102.41px; margin: 0 9.45% 98px 0; padding-top: 116px; text-align: right; }
    .soluciones-listado { margin-left: 7.045%; margin-right: 0; border-top: none; }
    .soluciones-bloque { height: 80vh; height: 80svh; min-height: 0; display: flex; align-items: center; justify-content: space-between; gap: 30px; border-bottom: none; padding-top: 0; padding-right: 9.3%; }
    .soluciones-bloque:last-child { border-bottom: none; }

    /* Las divisorias se dibujan de izquierda a derecha al pasar por el scroll. */
    .soluciones-listado { position: relative; }
    .soluciones-listado::before,
    .soluciones-bloque:not(:last-child)::after {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      height: var(--grosor-lineas);
      background: currentColor;
      transform: scaleX(0);
      transform-origin: left center;
      transition: transform 1050ms cubic-bezier(.22,1,.36,1), background-color 900ms cubic-bezier(.22,1,.36,1);
      pointer-events: none;
      z-index: 3;
    }
    .soluciones-listado::before { top: 0; }
    .soluciones-bloque { position: relative; }
    .soluciones-bloque:not(:last-child)::after { bottom: 0; }
    .soluciones-listado.linea-inicial-visible::before,
    .soluciones-bloque.linea-visible::after { transform: scaleX(1); }
    @media (prefers-reduced-motion: reduce) {
      .soluciones-listado::before,
      .soluciones-bloque:not(:last-child)::after { transform: scaleX(1); transition: none; }
    }

    .soluciones-contenido { flex: 0 1 673px; min-width: 0; padding-top: 0; text-align: left; }
    .soluciones-contenido h3 { font-size: 38px; line-height: 1.35; font-weight: 400; letter-spacing: -1.14px; margin: 0 0 48px; }
    .soluciones-contenido p { font-size: 18px; line-height: 28px; opacity: .8; font-weight: 400; margin: 0 0 29px; max-width: 673px; }
    /* Botones homologados con el botón Manifiesto del archivo inicio(2).zip. */
    .soluciones-informes {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      gap: 8px;
      width: auto;
      height: 52px;
      padding-left: 2.2vw;
      padding-right: 2.2vw;
      border: var(--grosor-lineas) solid currentColor;
      color: inherit;
      background: transparent;
      font-family: Arimo, Arial, sans-serif;
      font-size: 1.169vw;
      font-weight: 400;
      line-height: 1;
      letter-spacing: -.01em;
      cursor: pointer;
      position: relative;
      isolation: isolate;
      overflow: hidden;
      transition: color .18s ease-out, border-color 900ms cubic-bezier(.22,1,.36,1);
    }
    .soluciones-informes::before {
      content: '';
      position: absolute;
      top: 50%;
      left: 50%;
      width: 240%;
      aspect-ratio: 1 / 1;
      border-radius: 50%;
      z-index: -1;
      background: var(--texto-soluciones);
      transform: translate(-50%, -50%) scale(0);
      transform-origin: center;
      transition: transform .22s ease-out, background-color 900ms cubic-bezier(.22,1,.36,1);
      pointer-events: none;
    }
    .soluciones-informes:hover::before,
    .soluciones-informes:focus-visible::before {
      transform: translate(-50%, -50%) scale(1);
      transition-duration: .82s;
      transition-timing-function: cubic-bezier(.3,0,.25,1);
    }
    .soluciones-informes:hover,
    .soluciones-informes:focus-visible {
      color: var(--fondo-soluciones);
      transition-duration: .42s;
    }
    .soluciones-informes svg {
      width: 1.42vw;
      height: auto;
      flex: 0 0 auto;
      transition: color .18s ease-out;
    }
    .soluciones-informes:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
    @media (prefers-reduced-motion: reduce) {
      .soluciones-informes,
      .soluciones-informes::before,
      .soluciones-informes svg { transition-duration: .01ms !important; }
    }
    .soluciones-foto { width: 643px; height: 427px; flex: 0 0 643px; margin-top: 0; overflow: hidden; }
    .soluciones-foto img { display: block; width: 100%; height: 100%; object-fit: cover; }
    .soluciones-bloque--2 .soluciones-foto img { object-position: center; }
    .soluciones-bloque--3 .soluciones-foto img { object-position: center; }
    @media (max-width: 1500px) {
      .soluciones-titulo { font-size: 5.45vw; line-height: 1.23; }
      .soluciones-bloque { gap: 4vw; padding-right: 5vw; height: 80vh; height: 80svh; min-height: 0; padding-bottom: 0; }
      .soluciones-contenido { flex: 1 1 45%; }
      .soluciones-foto { width: 42%; flex: 0 0 42%; height: auto; aspect-ratio: 643 / 427; }
      .soluciones-contenido h3 { margin-bottom: 36px; }
      .soluciones-contenido p { font-size: max(15px, 1.2vw); line-height: 1.5; }
    }
    @media (min-width: 701px) and (max-width: 1100px) {
      .soluciones-informes { font-size: 13px; padding-left: 28px; padding-right: 28px; height: 38px; }
      .soluciones-informes svg { width: 18px; }
    }
    @media (max-width: 700px) {
      .soluciones-interior { padding-bottom: 80px; }
      .soluciones-titulo { padding-top: 65px; margin: 0 7% 58px; font-size: 46px; letter-spacing: -1.7px; line-height: 1.18; }
      .soluciones-listado { margin: 0 7%; }
      .soluciones-bloque { height: 80vh; height: 80svh; min-height: 0; padding: 35px 0; display: flex; flex-direction: column-reverse; align-items: stretch; gap: 20px; justify-content: center; }
      .soluciones-foto { width: 100%; flex: none; aspect-ratio: 643 / 427; }
      .soluciones-contenido { width: 100%; flex: none; padding-top: 0; }
      .soluciones-contenido h3 { font-size: 29px; margin-bottom: 20px; letter-spacing: -.7px; }
      .soluciones-contenido p { font-size: 15px; line-height: 1.5; margin-bottom: 25px; }
      .soluciones-informes { font-size: 11px; padding-left: 22px; padding-right: 22px; height: 36px; }
      .soluciones-informes svg { width: 14px; }
    }

    /* Una sola fotografía persistente: el límite de cada servicio atraviesa
       su marco y revela la siguiente imagen solamente debajo del corte. */
    @media (min-width: 701px) {
      .soluciones-listado { position: relative; }
      .soluciones-bloque { position: relative; }
      .soluciones-bloque > .soluciones-foto { visibility: hidden; }
      .soluciones-visual-carril {
        position: absolute;
        top: 128px;
        bottom: 0;
        right: 9.3%;
        width: 643px;
        pointer-events: none;
        z-index: 2;
      }
      .soluciones-visual-sticky {
        width: 100%;
        aspect-ratio: 643 / 427;
        position: absolute;
        top: 0;
        right: 0;
        overflow: hidden;
      }
      .soluciones-visual-sticky img {
        display: block;
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        clip-path: inset(var(--corte-superior, 0px) 0 var(--corte-inferior, 0px) 0);
        will-change: clip-path;
      }
    }
    @media (min-width: 701px) and (max-width: 1500px) {
      .soluciones-visual-carril { width: 42%; right: 5vw; }
      .soluciones-visual-sticky { top: 0; }
    }
    @media (max-width: 700px) {
      .soluciones-visual-carril { display: none; }
    }
    @media (prefers-reduced-motion: reduce) {
      .soluciones-visual-carril { display: none; }
      .soluciones-bloque > .soluciones-foto { visibility: visible; }
    }

    /* Primera fotografía: aparición delicada solo al entrar a Estrategia.
       No altera los recortes que transforman imágenes durante el scroll. */
    .js .soluciones-visual-sticky { opacity: 0; transition: opacity 1100ms cubic-bezier(.22,1,.36,1); }
    .js .soluciones-visual-sticky.foto-inicial-visible { opacity: 1; }
    @media (prefers-reduced-motion: reduce) {
      .js .soluciones-visual-sticky { opacity: 1; transition: none; }
    }

    /* Titular de Soluciones: Masked Text Reveal del encabezado de Proyectos. */
    .js .soluciones-titulo:not(.mascara-lista) { visibility: hidden; }
    .soluciones-titulo .palabra-mascara {
      display: inline-block; overflow: hidden; white-space: nowrap;
      vertical-align: baseline; padding: .22em .14em .30em 0;
      margin-top: -.22em; margin-bottom: -.30em;
    }
    .soluciones-titulo .palabra-contenido {
      display: inline-block; transform: translate3d(0,130%,0);
      transition: transform 1050ms cubic-bezier(.22,1,.36,1);
      will-change: transform;
    }
    .soluciones-titulo.is-visible .palabra-contenido { transform: translate3d(0,0,0); }
    /* Los servicios usan el reveal editorial por renglones de inicio(3).zip. */
    .js .soluciones-contenido.animacion-preparada .soluciones-palabra { opacity: 0; }
    .soluciones-palabra { display: inline; }
    .js .soluciones-contenido.animacion-preparada > p,
    .js .soluciones-contenido.animacion-preparada > .soluciones-informes { opacity: 0; }
    @media (prefers-reduced-motion: reduce) {
      .js .soluciones-titulo:not(.mascara-lista) { visibility: visible !important; }
      .soluciones-titulo .palabra-contenido { transform: none !important; transition: none !important; }
      .js .soluciones-contenido.animacion-preparada .soluciones-palabra,
      .js .soluciones-contenido.animacion-preparada > p,
      .js .soluciones-contenido.animacion-preparada > .soluciones-informes {
        opacity: 1 !important; transition: none !important;
      }
    }

/* El fondo pertenece al documento: las secciones dejan ver la misma transición. */
body { transition: background-color 900ms cubic-bezier(.22,1,.36,1), color 900ms cubic-bezier(.22,1,.36,1); }
.proyectos { color: var(--texto); transition: color 900ms cubic-bezier(.22,1,.36,1); }
body.modo-soluciones-oscuro .proyectos { --texto: #ffffff; }
