/* ==========================================================================
   Studio Complex · Caso de éxito
   --------------------------------------------------------------------------
   Estilos del componente de caso. Sirven para los tres casos sin cambios:
   lo único que varía entre uno y otro es el contenido del HTML.

   No toca main.css ni ninguna clase del template. Todas las clases llevan
   el prefijo sc-caso- para que no puedan chocar con nada.

   Hereda del sistema del sitio: tipografía Figtree, naranja #F2801E, cian
   #22D3EE y las variables de superficie --sc-surface-* / --sc-border, así
   que acompaña el tema sin repetir valores. Escrito mobile primero.
   ========================================================================== */

.sc-caso {
  --paso: 22px;
  --radio: 14px;
}

/* El .container de Bootstrap deja solo 15px al costado y en tablet el texto
   quedaba pegado al borde. Estos valores valen solo dentro del caso. */
.sc-caso .container {
  padding-left: 24px;
  padding-right: 24px;
}
@media (min-width: 768px) {
  .sc-caso .container {
    padding-left: 34px;
    padding-right: 34px;
  }
}

/* --- Revelado al entrar en pantalla --------------------------------------
   Las animaciones GSAP del template están desactivadas, así que el revelado
   lo maneja sc-caso.js con un IntersectionObserver. Sin JS el contenido se
   ve igual: el estado inicial solo se aplica cuando el script marca el
   documento, y nunca si el visitante pidió menos movimiento. */
.sc-caso-js .sc-rv {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.2, 0.7, 0.3, 1);
}
.sc-caso-js .sc-rv.is-in {
  opacity: 1;
  transform: none;
}

/* ==========================================================================
   1 · Encabezado del caso
   ========================================================================== */
.sc-caso-hero {
  /* El header del sitio es position:absolute y baja hasta 174px en desktop,
     así que el encabezado necesita ese despeje o le pasa por encima. */
  padding: 150px 0 56px;
  position: relative;
  overflow: hidden;
}
@media (min-width: 992px) {
  .sc-caso-hero { padding-top: 215px; }
}
.sc-caso-hero::before {
  content: "";
  position: absolute;
  inset: -40% -20% auto -20%;
  height: 460px;
  background:
    radial-gradient(52% 60% at 30% 40%,
      color-mix(in oklab, var(--tj-color-theme-primary) 20%, transparent) 0%,
      transparent 70%),
    radial-gradient(46% 56% at 72% 34%,
      color-mix(in oklab, var(--tj-color-theme-secondary) 16%, transparent) 0%,
      transparent 72%);
  pointer-events: none;
  z-index: 0;
}
.sc-caso-hero > .container {
  position: relative;
  z-index: 1;
}
.sc-caso-volver {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--tj-color-text-body-2);
  margin-bottom: 26px;
  transition: color 0.2s ease, gap 0.2s ease;
}
.sc-caso-volver:hover {
  color: var(--sc-ink-accent);
  gap: 12px;
}
.sc-caso-volver i {
  font-size: 13px;
}
.sc-caso-eyebrow {
  display: block;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sc-ink-accent-2);
  margin-bottom: 14px;
}
.sc-caso-titulo {
  font-size: clamp(2.1rem, 7vw, 3.6rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0 0 18px;
  text-wrap: balance;
}
.sc-caso-bajada {
  font-size: clamp(1.02rem, 3.4vw, 1.25rem);
  line-height: 1.55;
  color: var(--tj-color-text-body);
  max-width: 54ch;
  margin: 0 0 28px;
}
.sc-caso-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.sc-caso-tags li {
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1;
  padding: 9px 14px;
  border-radius: 999px;
  color: var(--sc-ink-accent);
  background-color: color-mix(in oklab, var(--tj-color-theme-primary) 12%, transparent);
}
/* Botón al sitio publicado del trabajo, debajo de las etiquetas. */
.sc-caso-vivo {
  margin-top: 28px;
}

/* --- Mockup de la plataforma ---------------------------------------------
   Escritorio y teléfono dibujados con HTML y CSS, sin imagen. Se eligió así
   por dos motivos: no se puede mostrar el nombre del cliente, y una captura
   real habría que taparla a medias. Además pesa cero y se adapta solo.
   Si en algún momento hay una captura aprobada, reemplaza a este bloque. */
.sc-caso-mk {
  position: relative;
  margin-top: 46px;
  padding-bottom: 46px;
}
@media (min-width: 992px) {
  .sc-caso-mk { margin-top: 0; padding-bottom: 54px; }
}

.sc-caso-mk-desk {
  background-color: var(--sc-surface-2);
  border-radius: 12px;
  box-shadow: inset 0 0 0 1px var(--sc-border), 0 26px 60px -30px rgba(0, 0, 0, 0.9);
  overflow: hidden;
}
.sc-caso-mk-barra {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background-color: var(--sc-surface-1);
  border-bottom: 1px solid var(--sc-border);
}
.sc-caso-mk-punto {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--sc-border);
  flex: none;
}
.sc-caso-mk-url {
  flex: 1;
  height: 16px;
  border-radius: 999px;
  background-color: var(--sc-surface-2);
  margin-left: 6px;
}
.sc-caso-mk-pantalla {
  padding: 16px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
.sc-caso-mk-titulo {
  height: 11px;
  width: 42%;
  border-radius: 4px;
  background-color: color-mix(in oklab, var(--tj-color-theme-primary) 70%, transparent);
}
.sc-caso-mk-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.sc-caso-mk-curso {
  background-color: var(--sc-surface-1);
  border-radius: 8px;
  padding: 8px;
  display: grid;
  gap: 7px;
}
.sc-caso-mk-tapa {
  aspect-ratio: 16 / 10;
  border-radius: 5px;
  background: linear-gradient(135deg,
    color-mix(in oklab, var(--tj-color-theme-primary) 55%, transparent),
    color-mix(in oklab, var(--tj-color-theme-secondary) 45%, transparent));
}
.sc-caso-mk-curso i {
  display: block;
  height: 6px;
  border-radius: 3px;
  background-color: var(--sc-border);
}
.sc-caso-mk-curso i:nth-child(3) { width: 62%; }

.sc-caso-mk-tel {
  position: absolute;
  right: 4%;
  bottom: 0;
  width: 27%;
  max-width: 132px;
  background-color: var(--sc-surface-2);
  border-radius: 18px;
  padding: 7px;
  box-shadow: inset 0 0 0 1px var(--sc-border), 0 18px 40px -18px rgba(0, 0, 0, 0.95);
}
.sc-caso-mk-tel-pantalla {
  background-color: var(--sc-surface-1);
  border-radius: 12px;
  padding: 10px 8px;
  display: grid;
  gap: 8px;
}
.sc-caso-mk-notch {
  width: 34%;
  height: 4px;
  border-radius: 999px;
  background-color: var(--sc-border);
  margin: 0 auto 2px;
}
.sc-caso-mk-fila {
  display: flex;
  align-items: center;
  gap: 6px;
}
.sc-caso-mk-fila span {
  width: 20px;
  height: 20px;
  border-radius: 5px;
  flex: none;
  background: linear-gradient(135deg,
    color-mix(in oklab, var(--tj-color-theme-primary) 55%, transparent),
    color-mix(in oklab, var(--tj-color-theme-secondary) 45%, transparent));
}
.sc-caso-mk-fila i {
  display: block;
  height: 5px;
  flex: 1;
  border-radius: 3px;
  background-color: var(--sc-border);
}
.sc-caso-mk-boton {
  height: 16px;
  border-radius: 999px;
  background-color: var(--tj-color-theme-primary);
  margin-top: 2px;
}

/* ==========================================================================
   2 · El desafío
   ========================================================================== */
.sc-caso-desafio {
  padding: 8px 0 56px;
}
.sc-caso-desafio-caja {
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 34px 28px;
  border-left: 3px solid var(--sc-ink-accent);
}
.sc-caso-h2 {
  font-size: clamp(1.55rem, 5.2vw, 2.3rem);
  line-height: 1.15;
  letter-spacing: -0.015em;
  margin: 0 0 16px;
  text-wrap: balance;
}

/* Bajada corta debajo de un h2. Sirve para nombrar el problema del cliente
   antes de que empiecen las tarjetas, en vez de ir directo a la lista. */
.sc-caso-intro {
  font-size: clamp(1rem, 3.2vw, 1.1rem);
  line-height: 1.65;
  color: var(--tj-color-text-body);
  margin: -2px 0 26px;
}
.sc-caso-desafio p {
  font-size: clamp(1rem, 3.2vw, 1.1rem);
  line-height: 1.6;
  color: var(--tj-color-text-body);
  margin: 0;
  max-width: 62ch;
}
.sc-caso-desafio p + p {
  margin-top: 14px;
}

/* ==========================================================================
   3 · El flujo
   Cuatro pasos. En teléfono se apilan en vertical y el recorrido baja; desde
   992px se acuestan en fila y el recorrido avanza hacia la derecha.
   ========================================================================== */
.sc-caso-flujo {
  padding: 56px 0;
}
.sc-caso-flujo-cab {
  margin-bottom: 34px;
}
.sc-caso-flujo-cab p {
  color: var(--tj-color-text-body);
  margin: 0;
  max-width: 58ch;
}

.sc-caso-pasos {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
  position: relative;
}
.sc-caso-paso {
  position: relative;
  padding-left: 62px;
  padding-bottom: 34px;
}
.sc-caso-paso:last-child {
  padding-bottom: 0;
}

/* La vía por donde corre el recorrido */
.sc-caso-paso::before {
  content: "";
  position: absolute;
  left: 21px;
  top: 46px;
  bottom: 0;
  width: 2px;
  background-color: var(--sc-border);
}
.sc-caso-paso:last-child::before {
  display: none;
}
/* El recorrido en sí: crece de arriba hacia abajo cuando el paso se activa */
.sc-caso-paso::after {
  content: "";
  position: absolute;
  left: 21px;
  top: 46px;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, var(--tj-color-theme-primary), var(--tj-color-theme-secondary));
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform 0.65s ease;
}
.sc-caso-paso:last-child::after {
  display: none;
}
.sc-caso-paso.is-on::after {
  transform: scaleY(1);
}

.sc-caso-paso-ico {
  position: absolute;
  left: 0;
  top: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 21px;
  color: var(--tj-color-text-body-2);
  background-color: var(--sc-surface-1);
  box-shadow: inset 0 0 0 1px var(--sc-border);
  transition: color 0.4s ease, box-shadow 0.4s ease, background-color 0.4s ease;
  z-index: 1;
}
.sc-caso-paso.is-on .sc-caso-paso-ico {
  color: var(--tj-color-theme-dark);
  background-color: var(--tj-color-theme-primary);
  box-shadow: inset 0 0 0 1px var(--tj-color-theme-primary),
              0 0 0 6px color-mix(in oklab, var(--tj-color-theme-primary) 14%, transparent);
}
.sc-caso-paso-n {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sc-ink-accent-2);
  margin-bottom: 6px;
}
.sc-caso-paso-t {
  font-size: 1.12rem;
  line-height: 1.25;
  margin: 0 0 6px;
}
.sc-caso-paso-d {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--tj-color-text-body-2);
  margin: 0;
  max-width: 44ch;
}

@media (min-width: 992px) {
  .sc-caso-pasos {
    grid-template-columns: repeat(4, 1fr);
    gap: 26px;
  }
  .sc-caso-paso {
    padding-left: 0;
    padding-bottom: 0;
    padding-top: 62px;
  }
  .sc-caso-paso::before,
  .sc-caso-paso::after {
    left: 56px;
    right: -26px;
    top: 21px;
    bottom: auto;
    width: auto;
    height: 2px;
  }
  .sc-caso-paso::after {
    background: linear-gradient(90deg, var(--tj-color-theme-primary), var(--tj-color-theme-secondary));
    transform: scaleX(0);
    transform-origin: left center;
  }
  .sc-caso-paso.is-on::after {
    transform: scaleX(1);
  }
  .sc-caso-paso-d {
    max-width: none;
  }
}

/* ==========================================================================
   4 · Qué incluye
   ========================================================================== */
.sc-caso-incluye {
  padding: 56px 0;
}
.sc-caso-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-top: 30px;
}
@media (min-width: 576px) {
  .sc-caso-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 992px) {
  .sc-caso-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; }
}
.sc-caso-card {
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 28px 26px;
  transition: transform 0.25s ease, background-color 0.25s ease;
}
.sc-caso-card:hover {
  transform: translateY(-4px);
  background-color: color-mix(in oklab, var(--sc-surface-1) 88%, var(--tj-color-theme-primary));
}
.sc-caso-card-ico {
  width: 46px;
  height: 46px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  color: var(--sc-ink-accent);
  background-color: color-mix(in oklab, var(--tj-color-theme-primary) 12%, transparent);
  margin-bottom: 16px;
}
.sc-caso-card h3 {
  font-size: 1.08rem;
  line-height: 1.3;
  margin: 0 0 8px;
}
.sc-caso-card p {
  font-size: 0.94rem;
  line-height: 1.55;
  color: var(--tj-color-text-body-2);
  margin: 0;
}

/* ==========================================================================
   5 · Resultados
   ========================================================================== */
.sc-caso-cifras {
  padding: 56px 0;
}
.sc-caso-cifras-caja {
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 36px 28px;
}
.sc-caso-cifras-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  margin-top: 26px;
}
@media (min-width: 768px) {
  .sc-caso-cifras-grid {
    /* auto-fit para que sirva igual con 3 o con 4 cifras segun el caso */
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 20px;
  }
}
.sc-caso-cifra {
  text-align: left;
}
@media (min-width: 768px) {
  .sc-caso-cifra + .sc-caso-cifra {
    padding-left: 22px;
    border-left: 1px solid var(--sc-border);
  }
}
.sc-caso-cifra-n {
  display: block;
  font-size: clamp(2.6rem, 11vw, 3.6rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--sc-ink-accent);
  font-variant-numeric: tabular-nums;
  margin-bottom: 10px;
}
.sc-caso-cifra-t {
  font-size: 0.98rem;
  line-height: 1.5;
  color: var(--tj-color-text-body);
  margin: 0;
  max-width: 26ch;
}
.sc-caso-cifras-pie {
  font-size: 0.86rem;
  color: var(--tj-color-text-body-2);
  margin: 24px 0 0;
}

/* ==========================================================================
   6 · Stack
   ========================================================================== */
.sc-caso-stack {
  padding: 56px 0;
}
.sc-caso-stack-lista {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
}
@media (min-width: 576px) {
  .sc-caso-stack-lista { grid-template-columns: repeat(3, 1fr); }
}
.sc-caso-stack-item {
  display: flex;
  align-items: center;
  gap: 14px;
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 20px 22px;
}
.sc-caso-stack-ico {
  width: 40px;
  height: 40px;
  flex: none;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: var(--sc-ink-accent);
  background-color: color-mix(in oklab, var(--tj-color-theme-primary) 14%, transparent);
}
.sc-caso-stack-item img {
  width: 40px;
  height: 40px;
  object-fit: contain;
  flex: none;
}
.sc-caso-stack-item b {
  display: block;
  font-size: 1rem;
  line-height: 1.2;
  margin-bottom: 3px;
}
.sc-caso-stack-item span {
  font-size: 0.86rem;
  line-height: 1.4;
  color: var(--tj-color-text-body-2);
}

/* ==========================================================================
   7 · Cierre
   ========================================================================== */
.sc-caso-cta {
  padding: 56px 0 8px;
}
.sc-caso-cta-caja {
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 44px 28px;
  text-align: center;
}
.sc-caso-cta-caja p {
  color: var(--tj-color-text-body);
  max-width: 48ch;
  margin: 0 auto 26px;
}

/* ==========================================================================
   8 · Navegación entre casos
   ========================================================================== */
.sc-caso-nav {
  padding: 40px 0 88px;
}
.sc-caso-nav-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  border-top: 1px solid var(--sc-border);
  padding-top: 28px;
}
@media (min-width: 768px) {
  .sc-caso-nav-grid { grid-template-columns: 1fr 1fr; }
}
.sc-caso-nav-link {
  display: flex;
  flex-direction: column;
  gap: 5px;
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 20px 22px;
  transition: transform 0.25s ease;
}
.sc-caso-nav-link:hover { transform: translateY(-3px); }
/* Centrados a pedido del 24/9. Antes uno tiraba a la izquierda y el otro a
   la derecha, y con titulos de distinto largo quedaban desparejos. */
.sc-caso-nav-link {
  align-items: center;
  text-align: center;
}
.sc-caso-nav-link small {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--tj-color-text-body-2);
}
.sc-caso-nav-link b {
  font-size: 1.05rem;
  line-height: 1.25;
  color: var(--tj-color-heading-primary);
}
.sc-caso-nav-link:hover b { color: var(--sc-ink-accent); }
.sc-caso-nav-link.is-vacio {
  opacity: 0.45;
  pointer-events: none;
}

/* ==========================================================================
   Card del caso para el índice del portfolio
   ========================================================================== */
.sc-casos-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 768px) { .sc-casos-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1200px) { .sc-casos-grid { grid-template-columns: repeat(3, 1fr); } }

.sc-caso-tarjeta {
  display: flex;
  flex-direction: column;
  height: 100%;
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 28px 24px 24px;
  position: relative;
  overflow: hidden;
  transition: transform 0.28s ease, background-color 0.28s ease;
}
.sc-caso-tarjeta::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, var(--tj-color-theme-primary), var(--tj-color-theme-secondary));
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.35s ease;
}
.sc-caso-tarjeta:hover { transform: translateY(-6px); }
.sc-caso-tarjeta:hover::before { transform: scaleX(1); }
.sc-caso-tarjeta-tipo {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sc-ink-accent-2);
  margin-bottom: 12px;
}
.sc-caso-tarjeta h3 {
  font-size: 1.3rem;
  line-height: 1.2;
  margin: 0 0 10px;
}
.sc-caso-tarjeta h3 a { color: inherit; }
.sc-caso-tarjeta:hover h3 a { color: var(--sc-ink-accent); }
.sc-caso-tarjeta p {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--tj-color-text-body-2);
  margin: 0 0 18px;
}
.sc-caso-tarjeta-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 0 0 20px;
  padding: 0;
}
.sc-caso-tarjeta-tags li {
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  padding: 7px 11px;
  border-radius: 999px;
  color: var(--tj-color-text-body);
  background-color: var(--sc-surface-2);
}
.sc-caso-tarjeta-ver {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--sc-ink-accent);
  transition: gap 0.2s ease;
}
.sc-caso-tarjeta:hover .sc-caso-tarjeta-ver { gap: 13px; }

/* --- Menos movimiento ----------------------------------------------------
   Si el visitante lo pide, todo aparece en su sitio y el recorrido queda
   dibujado entero, sin transiciones. */
@media (prefers-reduced-motion: reduce) {
  .sc-caso-js .sc-rv,
  .sc-caso-js .sc-rv.is-in {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .sc-caso-paso::after {
    transform: none !important;
    transition: none;
  }
  .sc-caso-paso-ico,
  .sc-caso-card,
  .sc-caso-tarjeta,
  .sc-caso-tarjeta::before,
  .sc-caso-nav-link {
    transition: none;
  }
}

/* ==========================================================================
   Ventana de contacto
   --------------------------------------------------------------------------
   Se abre desde cualquier elemento con data-sc-modal y desenfoca el sitio
   de atrás. Los campos son los mismos que pide la landing de scan: nombre,
   email y WhatsApp, más una línea para que cuente qué necesita.
   ========================================================================== */
.sc-modal[hidden] { display: none; }
.sc-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  overflow-y: auto;
  /* Centrar con flex y overflow a la vez recorta la caja por arriba cuando es
     mas alta que la pantalla: el navegador no deja scrollear hacia el margen
     superior. Por eso el contenedor scrollea como bloque y el centrado se
     resuelve adentro, con una envoltura de alto minimo completo. */
  -webkit-overflow-scrolling: touch;
}
.sc-modal-centro {
  min-height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px 18px 40px;
}
@media (min-width: 768px) {
  .sc-modal-centro { padding: 48px 24px; }
}
.sc-modal-fondo {
  position: fixed;
  inset: 0;
  background-color: rgba(4, 6, 9, 0.72);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
  opacity: 0;
  transition: opacity 0.28s ease;
}
.sc-modal.is-abierto .sc-modal-fondo { opacity: 1; }

.sc-modal-caja {
  position: relative;
  width: 100%;
  max-width: 460px;
  background-color: var(--sc-surface-1, #10151c);
  border-radius: 16px;
  box-shadow: inset 0 0 0 1px var(--sc-border, #1e2731), 0 30px 70px -25px rgba(0, 0, 0, 0.9);
  padding: 32px 28px 28px;
  opacity: 0;
  transform: translateY(14px) scale(0.985);
  transition: opacity 0.28s ease, transform 0.28s cubic-bezier(0.2, 0.7, 0.3, 1);
}
.sc-modal.is-abierto .sc-modal-caja {
  opacity: 1;
  transform: none;
}
.sc-modal-cerrar {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background-color: var(--sc-surface-2, #07090c);
  color: var(--tj-color-text-body, #bcbdb9);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  transition: color 0.2s ease, background-color 0.2s ease;
}
.sc-modal-cerrar:hover {
  color: var(--tj-color-theme-dark, #07090c);
  background-color: var(--tj-color-theme-primary, #F2801E);
}
.sc-modal-caja h2 {
  font-size: 1.5rem;
  line-height: 1.2;
  margin: 0 0 8px;
  padding-right: 34px;
}
.sc-modal-intro {
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--tj-color-text-body-2, #999996);
  margin: 0 0 22px;
}
.sc-campo { margin-bottom: 14px; }
.sc-campo label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--tj-color-text-body, #bcbdb9);
  margin-bottom: 6px;
}
.sc-campo input,
.sc-campo textarea {
  width: 100%;
  font: inherit;
  font-size: 15px;
  color: var(--tj-color-heading-primary, #f6f7f7);
  background-color: var(--sc-surface-2, #07090c);
  border: 1px solid var(--sc-border, #1e2731);
  border-radius: 10px;
  padding: 12px 14px;
  transition: border-color 0.2s ease;
}
.sc-campo textarea { resize: vertical; min-height: 82px; }
.sc-campo input:focus,
.sc-campo textarea:focus {
  outline: 2px solid var(--tj-color-theme-primary, #F2801E);
  outline-offset: 1px;
  border-color: var(--tj-color-theme-primary, #F2801E);
}
.sc-campo input::placeholder,
.sc-campo textarea::placeholder { color: #6d6e68; }
.sc-campo.tiene-error input,
.sc-campo.tiene-error textarea { border-color: #e2554d; }
.sc-campo-error {
  display: none;
  font-size: 12.5px;
  color: #ef8a84;
  margin-top: 5px;
}
.sc-campo.tiene-error .sc-campo-error { display: block; }

.sc-modal-enviar {
  width: 100%;
  border: 0;
  border-radius: 999px;
  padding: 14px 20px;
  font: inherit;
  font-size: 16px;
  font-weight: 700;
  color: #07090c;
  background: linear-gradient(120deg, var(--tj-color-theme-primary, #F2801E) 0%, #e2621a 100%);
  cursor: pointer;
  margin-top: 6px;
  transition: filter 0.2s ease, transform 0.2s ease;
}
.sc-modal-enviar:hover { filter: brightness(1.06); transform: translateY(-1px); }
.sc-modal-pie {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--tj-color-text-body-2, #999996);
  text-align: center;
  margin: 14px 0 0;
}

@media (prefers-reduced-motion: reduce) {
  .sc-modal-fondo,
  .sc-modal-caja,
  .sc-modal-enviar { transition: none; }
}

/* ==========================================================================
   Gráfico de barras
   --------------------------------------------------------------------------
   Genérico, sirve para cualquier caso. Cada barra lleva su porcentaje en la
   variable --v y crece sola cuando el bloque entra en pantalla. Sin
   librerías ni imágenes. La modalidad is-bloqueado pinta en gris la barra de
   algo que no está disponible, en vez de dibujar una barra en cero.
   ========================================================================== */
.sc-caso-barras {
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
  display: grid;
  gap: 18px;
}
.sc-caso-barra-cab {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.sc-caso-barra-nom {
  font-size: 0.97rem;
  font-weight: 600;
  line-height: 1.25;
}
.sc-caso-barra-val {
  font-size: 0.86rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--sc-ink-accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sc-caso-barra-via {
  height: 10px;
  border-radius: 999px;
  background-color: var(--sc-surface-2);
  overflow: hidden;
}
.sc-caso-barra-carga {
  display: block;
  height: 100%;
  width: 0;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--tj-color-theme-primary), var(--tj-color-theme-secondary));
  transition: width 0.9s cubic-bezier(0.2, 0.7, 0.3, 1);
}
.sc-caso-barras.is-in .sc-caso-barra-carga { width: var(--v, 0%); }
.sc-caso-barra-pie {
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--tj-color-text-body-2);
  margin: 8px 0 0;
}

.sc-caso-barra.is-bloqueado .sc-caso-barra-val { color: var(--tj-color-text-body-2); }
.sc-caso-barra.is-bloqueado .sc-caso-barra-carga {
  background: repeating-linear-gradient(
    -45deg,
    var(--sc-border) 0 6px,
    transparent 6px 12px);
  width: 100%;
}
.sc-caso-barra.is-bloqueado .sc-caso-barra-nom { color: var(--tj-color-text-body-2); }

/* --- Lista de lo que se gestiona mes a mes ------------------------------- */
.sc-caso-mensual {
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
  display: grid;
  gap: 12px;
}
@media (min-width: 768px) {
  .sc-caso-mensual { grid-template-columns: repeat(2, 1fr); gap: 14px 26px; }
}
.sc-caso-mensual li {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  align-items: start;
  font-size: 0.97rem;
  line-height: 1.5;
  color: var(--tj-color-text-body);
}
.sc-caso-mensual li i {
  color: var(--sc-ink-accent);
  font-size: 15px;
  margin-top: 4px;
}

@media (prefers-reduced-motion: reduce) {
  .sc-caso-barra-carga { transition: none; width: var(--v, 0%); }
}

/* --- Linea explicativa dentro de la barra --------------------------------
   Para que un lector no tecnico entienda que es cada formato de Google sin
   tener que buscarlo. */
.sc-caso-barra-det {
  display: block;
  font-size: 0.83rem;
  font-weight: 400;
  line-height: 1.4;
  color: var(--tj-color-text-body-2);
  margin-top: 3px;
  max-width: 44ch;
}
.sc-caso-barra-cab {
  align-items: flex-start;
}
@media (max-width: 480px) {
  /* En telefono el valor baja debajo del nombre en vez de apretarse al lado */
  .sc-caso-barra-cab { flex-direction: column; gap: 4px; }
  .sc-caso-barra-val { white-space: normal; }
}

/* --- Periodo debajo de cada cifra ---------------------------------------- */
.sc-caso-cifra-per {
  display: block;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--tj-color-text-body-2);
  margin-top: 8px;
  opacity: 0.85;
}

/* ==========================================================================
   Mockup de anuncios en buscador
   --------------------------------------------------------------------------
   Reusa la ventana y el telefono del mockup del caso 1 y les cambia el
   contenido: un resultado de busqueda con su aviso, y un panel chico de
   metricas. Todo HTML y CSS, sin imagen.
   ========================================================================== */
.sc-caso-mk-buscador {
  display: flex;
  align-items: center;
  gap: 9px;
  background-color: var(--sc-surface-1);
  border-radius: 999px;
  padding: 9px 14px;
  margin-bottom: 4px;
}
.sc-caso-mk-buscador i {
  font-size: 13px;
  color: var(--tj-color-text-body-2);
  flex: none;
}
.sc-caso-mk-buscador span {
  display: block;
  height: 7px;
  width: 54%;
  border-radius: 4px;
  background-color: var(--sc-border);
}

.sc-caso-mk-aviso {
  display: grid;
  gap: 6px;
  padding: 11px 0;
}
.sc-caso-mk-aviso + .sc-caso-mk-aviso {
  border-top: 1px solid var(--sc-border);
}
.sc-caso-mk-etiqueta {
  display: inline-block;
  width: max-content;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1;
  padding: 4px 7px;
  border-radius: 4px;
  color: var(--tj-color-theme-dark);
  background-color: var(--tj-color-theme-primary);
}
.sc-caso-mk-titular {
  height: 9px;
  width: 72%;
  border-radius: 4px;
  background-color: color-mix(in oklab, var(--tj-color-theme-secondary) 75%, transparent);
}
.sc-caso-mk-linea {
  height: 6px;
  border-radius: 3px;
  background-color: var(--sc-border);
}
.sc-caso-mk-linea.corta { width: 48%; }

.sc-caso-mk-metricas {
  position: absolute;
  left: 0;
  bottom: 0;
  display: flex;
  gap: 0;
  background-color: var(--sc-surface-1);
  border-radius: 12px;
  padding: 12px 4px;
  box-shadow: inset 0 0 0 1px var(--sc-border), 0 18px 40px -18px rgba(0, 0, 0, 0.95);
}
.sc-caso-mk-metrica {
  padding: 0 13px;
  text-align: center;
}
.sc-caso-mk-metrica + .sc-caso-mk-metrica {
  border-left: 1px solid var(--sc-border);
}
.sc-caso-mk-metrica b {
  display: block;
  font-size: 0.92rem;
  line-height: 1.1;
  color: var(--sc-ink-accent);
  font-variant-numeric: tabular-nums;
}
.sc-caso-mk-metrica span {
  display: block;
  font-size: 0.64rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--tj-color-text-body-2);
  margin-top: 3px;
}
@media (min-width: 576px) {
  .sc-caso-mk-metrica { padding: 0 17px; }
  .sc-caso-mk-metrica b { font-size: 1.05rem; }
}

/* El telefono del caso de ads muestra el mismo aviso, mas angosto */
.sc-caso-mk-tel .sc-caso-mk-aviso { padding: 7px 0; gap: 4px; }
.sc-caso-mk-tel .sc-caso-mk-titular { height: 6px; }
.sc-caso-mk-tel .sc-caso-mk-linea { height: 4px; }
.sc-caso-mk-tel .sc-caso-mk-etiqueta { font-size: 7px; padding: 3px 5px; }

/* ==========================================================================
   Texto justificado en los casos
   --------------------------------------------------------------------------
   Pedido del 24/9: los parrafos van justificados, como el resto del sitio.
   Los titulos y las etiquetas no, que justificar una linea corta deja
   huecos feos entre palabras.
   ========================================================================== */
.sc-caso p,
.sc-caso-card p,
.sc-caso-bajada,
.sc-caso-paso-d,
.sc-caso-mensual li span,
.sc-modal-intro {
  text-align: justify;
  text-justify: inter-word;
  hyphens: auto;
}
/* Estos van alineados a la izquierda: son lineas cortas y justificarlas
   deja huecos entre palabras. Llevan .sc-caso adelante para ganarle en
   especificidad a la regla general de arriba. */
.sc-caso .sc-caso-cifra-t,
.sc-caso .sc-caso-cifra-per,
.sc-caso .sc-caso-barra-det,
.sc-caso .sc-caso-barra-pie,
.sc-caso .sc-caso-stack-item span,
.sc-modal .sc-modal-pie {
  text-align: left;
  hyphens: manual;
}
.sc-caso .sc-caso-cta-caja p { text-align: center; }

/* --- Mockup de ads en pantallas chicas -----------------------------------
   El panel de metricas y el telefono estan los dos anclados abajo. En un
   telefono no entran uno al lado del otro, asi que el panel baja y se pone
   en linea, a lo ancho, y el telefono queda solo sobre la esquina. */
.sc-caso-mk:has(.sc-caso-mk-metricas) { padding-bottom: 76px; }
@media (max-width: 575px) {
  .sc-caso-mk:has(.sc-caso-mk-metricas) { padding-bottom: 0; }
  .sc-caso-mk-metricas {
    position: static;
    margin-top: 14px;
    justify-content: space-between;
    width: 100%;
  }
  .sc-caso-mk-metrica { flex: 1; padding: 0 6px; }
  .sc-caso-mk:has(.sc-caso-mk-metricas) .sc-caso-mk-tel {
    bottom: auto;
    top: 58%;
    width: 30%;
  }
}

/* ==========================================================================
   Mockup con identidad del cliente
   --------------------------------------------------------------------------
   La pagina del caso sigue en la paleta de Studio Complex; el mockup usa los
   colores de la marca del cliente, para que se reconozca la pieza real. El
   color entra por la variable --marca, asi el mismo bloque sirve para
   cualquier otro cliente cambiando una linea.
   ========================================================================== */
.sc-caso-mk.tiene-marca {
  --marca: #FFD200;
  --marca-fondo: #0d0d0d;
  padding-bottom: 0;
}

.sc-caso-mk-landing {
  position: relative;
  max-width: 260px;
  margin: 0 auto;
  background-color: var(--marca-fondo);
  border-radius: 24px;
  padding: 9px;
  box-shadow: inset 0 0 0 1px #2a2a2a, 0 26px 60px -26px rgba(0, 0, 0, 0.95);
}
.sc-caso-mk-landing-pantalla {
  background-color: var(--marca-fondo);
  border-radius: 17px;
  overflow: hidden;
  display: grid;
  gap: 9px;
  padding: 12px 11px 15px;
}
.sc-caso-mk-landing .sc-caso-mk-notch {
  background-color: #333;
  margin-bottom: 4px;
}
.sc-caso-mk-marca {
  height: 9px;
  width: 44%;
  border-radius: 3px;
  background-color: var(--marca);
}
.sc-caso-mk-tit {
  height: 11px;
  border-radius: 4px;
  background-color: #efefef;
}
.sc-caso-mk-tit.corta { width: 66%; }
.sc-caso-mk-parr {
  height: 5px;
  border-radius: 3px;
  background-color: #3a3a3a;
}
.sc-caso-mk-parr.corta { width: 54%; }
.sc-caso-mk-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 30px;
  border-radius: 999px;
  background-color: var(--marca);
  color: #0d0d0d;
  font-size: 11px;
  font-weight: 700;
  margin-top: 3px;
}
.sc-caso-mk-cta i { font-size: 12px; }

/* El reparto: dos asesores que se turnan */
.sc-caso-mk-reparto {
  display: grid;
  gap: 8px;
  margin-top: 16px;
  max-width: 260px;
  margin-left: auto;
  margin-right: auto;
}
@media (min-width: 992px) {
  .sc-caso-mk-reparto {
    position: absolute;
    right: -6px;
    bottom: 28px;
    margin: 0;
    max-width: 176px;
  }
}
.sc-caso-mk-asesor {
  display: flex;
  align-items: center;
  gap: 9px;
  background-color: var(--sc-surface-1);
  border-radius: 10px;
  padding: 9px 12px;
  box-shadow: inset 0 0 0 1px var(--sc-border);
  font-size: 0.8rem;
  color: var(--tj-color-text-body);
}
.sc-caso-mk-asesor i {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  flex: none;
  color: var(--tj-color-theme-dark);
  background-color: var(--sc-border);
}
.sc-caso-mk-asesor.es-turno i {
  background-color: var(--tj-color-theme-primary);
}
.sc-caso-mk-asesor.es-turno {
  color: var(--tj-color-heading-primary);
}
.sc-caso-mk-asesor b {
  font-weight: 600;
}
.sc-caso-mk-asesor small {
  display: block;
  font-size: 0.68rem;
  color: var(--tj-color-text-body-2);
}

/* --- Dos cajas de hallazgos, lado a lado -------------------------------- */
.sc-caso-hallazgos {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-top: 26px;
}
@media (min-width: 992px) {
  .sc-caso-hallazgos { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}
.sc-caso-hallazgos .sc-caso-desafio-caja { height: 100%; }
.sc-caso-hallazgo-tit {
  font-size: 1.12rem;
  line-height: 1.25;
  margin: 0 0 12px;
}

/* --- Ventana de escritorio con la identidad del cliente -------------------
   Misma ventana que los otros casos, pero por dentro va la pagina del
   cliente con sus colores. */
.sc-caso-mk.tiene-marca .sc-caso-mk-desk {
  background-color: var(--marca-fondo);
  box-shadow: inset 0 0 0 1px #2a2a2a, 0 26px 60px -26px rgba(0, 0, 0, 0.95);
}
.sc-caso-mk.tiene-marca .sc-caso-mk-barra {
  background-color: #1a1a1a;
  border-bottom-color: #2a2a2a;
}
.sc-caso-mk.tiene-marca .sc-caso-mk-punto { background-color: #3a3a3a; }
.sc-caso-mk.tiene-marca .sc-caso-mk-url { background-color: #0d0d0d; }
.sc-caso-mk.tiene-marca .sc-caso-mk-pantalla { padding: 18px 16px 20px; gap: 10px; }

.sc-caso-mk.tiene-marca .sc-caso-mk-tel {
  background-color: #1a1a1a;
  box-shadow: inset 0 0 0 1px #2a2a2a, 0 18px 40px -18px rgba(0, 0, 0, 0.95);
}
.sc-caso-mk.tiene-marca .sc-caso-mk-tel-pantalla {
  background-color: var(--marca-fondo);
  gap: 6px;
  padding: 9px 7px 11px;
}
.sc-caso-mk.tiene-marca .sc-caso-mk-notch { background-color: #333; }

/* Dentro del telefono todo va mas chico */
.sc-caso-mk-tel .sc-caso-mk-marca { height: 6px; }
.sc-caso-mk-tel .sc-caso-mk-tit { height: 7px; }
.sc-caso-mk-tel .sc-caso-mk-parr { height: 3px; }
.sc-caso-mk-tel .sc-caso-mk-cta { height: 18px; font-size: 0; gap: 0; }
.sc-caso-mk-tel .sc-caso-mk-cta i { font-size: 9px; }

/* El reparto queda abajo a la izquierda, como el panel de metricas del
   caso de ads, y el telefono a la derecha. */
.sc-caso-mk.tiene-marca { padding-bottom: 60px; position: relative; }
@media (min-width: 992px) {
  .sc-caso-mk.tiene-marca { padding-bottom: 70px; }
}
.sc-caso-mk.tiene-marca .sc-caso-mk-reparto {
  position: absolute;
  left: 0;
  bottom: 0;
  margin: 0;
  max-width: 200px;
  gap: 7px;
}
@media (max-width: 575px) {
  .sc-caso-mk.tiene-marca { padding-bottom: 0; }
  .sc-caso-mk.tiene-marca .sc-caso-mk-reparto {
    position: static;
    max-width: none;
    margin-top: 14px;
  }
  .sc-caso-mk.tiene-marca .sc-caso-mk-tel { top: 46%; bottom: auto; width: 29%; }
}

/* ==========================================================================
   Preguntas frecuentes
   --------------------------------------------------------------------------
   Va como lista de definiciones, no como acordeon: el texto queda visible en
   el HTML sin depender de JavaScript, que es lo que necesitan los buscadores
   y los modelos de lenguaje para poder citarlo. Cada respuesta se escribe
   para que se entienda sola, fuera de contexto.
   ========================================================================== */
.sc-caso-faq {
  margin: 26px 0 0;
  display: grid;
  gap: 18px;
}
@media (min-width: 992px) {
  .sc-caso-faq { grid-template-columns: repeat(2, 1fr); gap: 20px 30px; }
}
.sc-caso-faq > div {
  background-color: var(--sc-surface-1);
  border-radius: var(--radio);
  padding: 24px 24px 22px;
}
.sc-caso-faq dt {
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 9px;
  color: var(--tj-color-heading-primary);
}
.sc-caso-faq dd {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--tj-color-text-body-2);
}

/* ==========================================================================
   Monitor
   --------------------------------------------------------------------------
   La ventana sola se leia como un rectangulo flotante. Con cuello y base se
   reconoce como un monitor y se distingue del telefono de al lado.
   Va envolviendo a .sc-caso-mk-desk, que tiene overflow oculto y por eso no
   puede dibujar la base con un pseudo-elemento propio.
   ========================================================================== */
.sc-caso-mk-monitor {
  position: relative;
  padding-bottom: 26px;
}
.sc-caso-mk-base {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 34%;
  max-width: 150px;
  height: 5px;
  border-radius: 99px;
  background-color: var(--sc-border);
}
.sc-caso-mk-base::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 4px;
  transform: translateX(-50%);
  width: 46px;
  height: 20px;
  background: linear-gradient(180deg, var(--sc-surface-2), var(--sc-border));
  clip-path: polygon(30% 0, 70% 0, 100% 100%, 0 100%);
}
.sc-caso-mk.tiene-marca .sc-caso-mk-base { background-color: #2a2a2a; }
.sc-caso-mk.tiene-marca .sc-caso-mk-base::before {
  background: linear-gradient(180deg, #1a1a1a, #2a2a2a);
}

/* Con el monitor adentro, el telefono y los paneles se anclan al wrapper del
   mockup, no al monitor, asi que se corre la referencia. */
.sc-caso-mk { position: relative; }

/* --- Proporción fija del monitor -----------------------------------------
   Hasta acá la pantalla crecia con su contenido, y cada caso terminaba con un
   monitor de alto distinto: 433px en unos, 225px en otro. Se ve mal puestos
   uno al lado del otro y ademas hace que un caso parezca mas importante que
   los demas.

   Con proporcion fija de 16:10, que es la de un monitor real, los cuatro
   quedan identicos sin importar cuanto contenido tenga cada pantalla. Lo que
   sobra se reparte con space-between en vez de estirar los elementos. */
.sc-caso-mk-desk {
  aspect-ratio: 16 / 10;
  display: flex;
  flex-direction: column;
}
.sc-caso-mk-pantalla {
  flex: 1;
  align-content: start;
  min-height: 0;
  overflow: hidden;
}
.sc-caso-mk.tiene-marca .sc-caso-mk-pantalla {
  align-content: center;
}

/* Con la proporcion fija, el caso de mas contenido (dos filas de productos)
   se pasaba 16px y se recortaba abajo. Se ajustan las medidas internas para
   que entre completo sin cambiar la proporcion del monitor. */
.sc-caso-mk-pantalla { padding: 13px; gap: 9px; }
.sc-caso-mk-grid { gap: 8px; }
.sc-caso-mk-curso { padding: 7px; gap: 5px; }

/* ==========================================================================
   Portfolio en mosaico (project.html)
   Columnas CSS: cada tarjeta cae en la columna que le toca y el alto lo da
   su contenido, así el mosaico queda desparejo como un masonry sin JS.
   ========================================================================== */
.sc-pf { position: relative; }
.sc-pf-cabeza { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 40px; }
.sc-pf-cabeza .sec-title { margin: 0; }
.sc-pf-filtros { display: flex; flex-wrap: wrap; gap: 8px; }
.sc-pf-filtros button {
  border: 0; cursor: pointer;
  padding: 10px 16px; border-radius: 999px;
  font: 600 14px/1 var(--tj-ff-body);
  color: var(--tj-color-text-body);
  background: var(--sc-surface-1);
  box-shadow: inset 0 0 0 1px var(--sc-border);
  transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.sc-pf-filtros button:hover { color: var(--tj-color-heading-primary); box-shadow: inset 0 0 0 1px var(--tj-color-theme-primary); }
.sc-pf-filtros button[aria-pressed="true"] { background: var(--tj-color-theme-primary); color: #07090c; box-shadow: none; }
.sc-pf-filtros button:focus-visible { outline: 2px solid var(--tj-color-theme-secondary); outline-offset: 2px; }

.sc-pf-mosaico { columns: 1; column-gap: 22px; }
@media (min-width: 768px) { .sc-pf-mosaico { columns: 2; } }
@media (min-width: 1200px) { .sc-pf-mosaico { columns: 3; } }
.sc-pf-item { break-inside: avoid; margin-bottom: 22px; transition: opacity 0.3s ease; }
.sc-pf-item[hidden] { display: none; }
.sc-pf-tarjeta {
  display: block; border-radius: 20px; overflow: hidden;
  background: var(--sc-surface-1);
  box-shadow: inset 0 0 0 1px var(--sc-border);
  transition: transform 0.35s cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow 0.35s ease;
}
.sc-pf-tarjeta:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tj-color-theme-secondary) 50%, transparent), 0 30px 60px -30px color-mix(in oklab, var(--tj-color-theme-secondary) 45%, transparent); }
.sc-pf-img { display: block; overflow: hidden; }
.sc-pf-img img { display: block; width: 100%; object-fit: cover; object-position: center 30%; transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.3, 1); }
.sc-pf-tarjeta:hover .sc-pf-img img { transform: scale(1.05); }
/* Tres recortes de portada para que las columnas no queden parejas. */
/* Las portadas miden 900x1200 y el dibujo ocupa la franja de arriba
   (de 130 a 690 px): cada recorte se corre para dejarlo centrado. */
.sc-pf-alto .sc-pf-img img { aspect-ratio: 1 / 1; object-position: center 0%; }
.sc-pf-medio .sc-pf-img img { aspect-ratio: 4 / 3; object-position: center 14%; }
.sc-pf-bajo .sc-pf-img img { aspect-ratio: 16 / 10; object-position: center 9%; }
.sc-pf-cuerpo { display: flex; flex-direction: column; gap: 10px; padding: 22px 24px 24px; }
.sc-pf-tipo { font-size: 13px; font-weight: 700; color: var(--tj-color-theme-primary); }
.sc-pf-titulo { font-size: 22px; line-height: 1.2; font-weight: 700; color: var(--tj-color-heading-primary); text-wrap: balance; }
.sc-pf-bajada { font-size: 15.5px; line-height: 1.6; color: var(--tj-color-text-body); }
.sc-pf-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 0; padding: 0; list-style: none; }
.sc-pf-tags li { font-size: 12.5px; font-weight: 600; padding: 6px 10px; border-radius: 999px; color: var(--tj-color-theme-secondary); background: color-mix(in oklab, var(--tj-color-theme-secondary) 11%, transparent); }
.sc-pf-ver { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-size: 14px; font-weight: 700; color: var(--tj-color-heading-primary); }
.sc-pf-tarjeta:hover .sc-pf-ver { color: var(--tj-color-theme-secondary); }
.sc-pf-vacio { margin: 0; padding: 30px; text-align: center; color: var(--tj-color-text-body-2); }
/* En una sola columna los recortes altos solo alargan la página. */
@media (max-width: 767px) { .sc-pf-item .sc-pf-img img { aspect-ratio: 4 / 3; object-position: center 14%; } }

/* Portfolio: el carrusel de arriba trae el section-gap del home, que abajo
   dejaba un bloque vacío debajo de los puntos. */
.sc-portfolio-carrusel { padding-bottom: 60px; }
.sc-pf-cabeza .sec-heading { margin: 0; }

/* ==========================================================================
   Capa de impacto (28/9)
   Lleva los casos al mismo lenguaje que las páginas de servicio: títulos
   más grandes, más aire entre secciones, halo y cuadrícula en el
   encabezado, tarjetas con brillo al pasar, cifras en degradé y cierre con
   fondo de color. Solo CSS: no cambia el HTML de ningún caso. Para
   volver al diseño anterior alcanza con borrar este bloque.
   ========================================================================== */
.sc-caso { --grad: linear-gradient(100deg, var(--tj-color-theme-primary) 0%, var(--tj-color-theme-primary) 42%, var(--tj-color-theme-secondary) 62%, var(--tj-color-theme-secondary) 100%); }

/* Encabezado */
.sc-caso-hero { padding-bottom: 90px; }
.sc-caso-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: linear-gradient(color-mix(in oklab, #fff 5%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklab, #fff 5%, transparent) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 65% 40%, #000 10%, transparent 75%);
          mask-image: radial-gradient(ellipse 70% 60% at 65% 40%, #000 10%, transparent 75%);
}
.sc-caso-hero::before { height: 640px; }
.sc-caso-titulo { font-size: clamp(2.5rem, 7.6vw, 4.6rem); line-height: 1; letter-spacing: -0.035em; margin-bottom: 22px; }
.sc-caso-bajada { font-size: clamp(1.08rem, 2.6vw, 1.3rem); line-height: 1.6; }
.sc-caso-eyebrow { display: flex; align-items: center; gap: 10px; }
.sc-caso-eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--tj-color-theme-secondary); box-shadow: 0 0 12px var(--tj-color-theme-secondary); }
.sc-caso-tags li { font-size: 14px; padding: 10px 15px; }

/* Títulos de sección y aire */
.sc-caso-h2 { font-size: clamp(2rem, 5.4vw, 3.2rem); line-height: 1.06; letter-spacing: -0.025em; margin-bottom: 20px; }
.sc-caso-desafio, .sc-caso-flujo, .sc-caso-incluye, .sc-caso-cifras, .sc-caso-stack { padding-top: 90px; padding-bottom: 20px; }
@media (min-width: 992px) { .sc-caso-desafio, .sc-caso-flujo, .sc-caso-incluye, .sc-caso-cifras, .sc-caso-stack { padding-top: 120px; } }
.sc-caso-intro, .sc-caso-desafio p { font-size: clamp(1.05rem, 2.4vw, 1.2rem); line-height: 1.65; max-width: 64ch; }

/* El problema: caja con borde en degradé en vez de la línea lateral */
.sc-caso-desafio-caja {
  border-left: 0; border-radius: 24px; padding: clamp(28px, 5vw, 52px);
  background: linear-gradient(var(--sc-surface-1), var(--sc-surface-1)) padding-box, var(--grad) border-box;
  border: 1.5px solid transparent;
  box-shadow: 0 40px 80px -50px color-mix(in oklab, var(--tj-color-theme-primary) 60%, transparent);
}

/* Pasos */
.sc-caso-paso-t { font-size: 1.28rem; }
.sc-caso-paso-d { font-size: 1rem; }
.sc-caso-paso-ico { width: 52px; height: 52px; font-size: 23px; }

/* Qué resolvimos: tarjetas con más cuerpo, brillo al pasar y la primera
   destacada en escritorio (formato bento) */
.sc-caso-card {
  border-radius: 22px !important; padding: 28px !important;
  background: linear-gradient(180deg, color-mix(in oklab, #fff 4%, var(--sc-surface-1)), var(--sc-surface-1)) !important;
  box-shadow: inset 0 0 0 1px var(--sc-border);
  transition: transform .35s cubic-bezier(.2,.7,.3,1), box-shadow .35s ease;
}
.sc-caso-card:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tj-color-theme-secondary) 45%, transparent), 0 30px 60px -30px color-mix(in oklab, var(--tj-color-theme-secondary) 45%, transparent); }
.sc-caso-card h3, .sc-caso-card h4 { font-size: 1.3rem !important; }
.sc-caso-card p { font-size: 1rem !important; line-height: 1.6; }
.sc-caso-card-ico { width: 50px !important; height: 50px !important; font-size: 22px !important; border-radius: 14px !important; }
@media (min-width: 1200px) {
  .sc-caso-grid > .sc-caso-card:first-child:nth-last-child(6) { grid-column: span 2; background: radial-gradient(60% 90% at 90% 0%, color-mix(in oklab, var(--tj-color-theme-primary) 18%, transparent), transparent 70%), linear-gradient(180deg, color-mix(in oklab, #fff 4%, var(--sc-surface-1)), var(--sc-surface-1)) !important; }
  .sc-caso-grid > .sc-caso-card:first-child:nth-last-child(6) h3, .sc-caso-grid > .sc-caso-card:first-child:nth-last-child(6) h4 { font-size: 1.7rem !important; }
  /* Con 6 tarjetas en 3 columnas, la primera y la última ocupan dos: queda 2+1 / 1+1+1 / 3, sin huecos. */
  .sc-caso-grid > .sc-caso-card:last-child:nth-child(6) { grid-column: span 3; }
}

/* Qué cambió: caja con halo y cifras grandes en degradé */
.sc-caso-cifras-caja {
  border-radius: 28px !important; padding: clamp(30px, 5vw, 60px) !important;
  background: radial-gradient(60% 90% at 10% 0%, color-mix(in oklab, var(--tj-color-theme-primary) 22%, transparent), transparent 70%), radial-gradient(60% 90% at 95% 100%, color-mix(in oklab, var(--tj-color-theme-secondary) 16%, transparent), transparent 70%), var(--sc-surface-1) !important;
  box-shadow: inset 0 0 0 1px color-mix(in oklab, #fff 9%, transparent);
}
.sc-caso-cifra-n { font-size: clamp(2.2rem, 3.8vw, 3.6rem); font-weight: 800; white-space: nowrap; background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sc-caso-cifra-t { font-size: 1.02rem; }

/* Tecnologías: fichas más grandes */
.sc-caso-stack-item { padding: 18px 20px !important; border-radius: 18px !important; }
.sc-caso-stack-item img, .sc-caso-stack-ico { width: 48px !important; height: 48px !important; }

/* Cierre con fondo de color, como en las páginas de servicio */
.sc-caso-cta-caja {
  border-radius: 28px !important; padding: clamp(40px, 7vw, 84px) clamp(24px, 6vw, 70px) !important;
  background: radial-gradient(60% 90% at 15% 0%, color-mix(in oklab, var(--tj-color-theme-primary) 38%, transparent), transparent 70%), radial-gradient(60% 90% at 90% 100%, color-mix(in oklab, var(--tj-color-theme-secondary) 30%, transparent), transparent 70%), var(--sc-surface-1) !important;
  box-shadow: inset 0 0 0 1px color-mix(in oklab, #fff 10%, transparent);
}
.sc-caso-cta-caja h2, .sc-caso-cta-caja .sc-caso-h2 { font-size: clamp(2.1rem, 5.6vw, 3.6rem); }
.sc-caso-cta-caja p { font-size: 1.12rem; }

/* Navegación entre casos */
.sc-caso-nav-link { border-radius: 18px !important; padding: 22px !important; transition: box-shadow .25s ease, transform .25s ease; }
.sc-caso-nav-link:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tj-color-theme-primary) 55%, transparent); }

/* ==========================================================================
   "El problema" con ilustración del antes (29/9)
   El texto va a la izquierda y a la derecha una escena chica con tarjetas
   inclinadas (mismo lenguaje que el dashboard del CRM) que muestra cómo
   era antes. Cada caso trae su escena en el HTML, dentro de .sc-prob-vis.
   ========================================================================== */
.sc-caso-desafio-caja.con-vis { display: grid; grid-template-columns: 1fr; gap: 0 60px; align-items: center; }
.sc-caso-desafio-caja.con-vis > * { grid-column: 1; }
.sc-prob-vis { margin-top: 34px; position: relative; display: grid; gap: 10px; justify-items: stretch; }
@media (min-width: 992px) {
  .sc-caso-desafio-caja.con-vis { grid-template-columns: minmax(0, 1fr) 380px; }
  .sc-caso-desafio-caja.con-vis > .sc-prob-vis { grid-column: 2; grid-row: 1 / span 12; margin-top: 0; }
}
.sc-prob-rot { justify-self: start; font-size: 11.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #f87171; display: inline-flex; align-items: center; gap: 8px; }
.sc-prob-rot::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #f87171; box-shadow: 0 0 10px #f87171; }
.sc-prob-t {
  display: flex; align-items: center; gap: 12px; padding: 13px 15px; border-radius: 14px;
  background: var(--sc-surface-2); box-shadow: 0 12px 24px -14px #000, inset 0 0 0 1px var(--sc-border);
  font-size: 14px; color: var(--tj-color-heading-primary);
}
.sc-prob-t:nth-child(odd) { transform: rotate(-1.4deg); } .sc-prob-t:nth-child(even) { transform: rotate(1.2deg) translateX(10px); }
.sc-prob-t i { width: 30px; height: 30px; border-radius: 9px; flex: none; display: flex; align-items: center; justify-content: center; font-style: normal; font-size: 14px; background: color-mix(in oklab, #fff 7%, transparent); color: var(--tj-color-text-body-2); }
.sc-prob-t span { flex: 1; min-width: 0; line-height: 1.3; }
.sc-prob-t small { display: block; font-size: 12px; color: var(--tj-color-text-body-2); }
.sc-prob-t b { font-size: 11.5px; font-weight: 800; padding: 4px 9px; border-radius: 999px; white-space: nowrap; }
.sc-prob-t b.r { background: rgba(248,113,113,.14); color: #f87171; }
.sc-prob-t b.a { background: rgba(251,191,36,.14); color: #fbbf24; }
.sc-prob-t b.g { background: color-mix(in oklab, #fff 8%, transparent); color: var(--tj-color-text-body-2); }
.sc-prob-t.alerta { box-shadow: 0 16px 30px -14px #000, inset 0 0 0 1.5px rgba(248,113,113,.55); }
.sc-prob-t.alerta i { background: rgba(248,113,113,.15); color: #f87171; }
/* Menú de texto larguísimo (tienda) */
.sc-prob-menu { border-radius: 14px; padding: 14px 16px; background: var(--sc-surface-2); box-shadow: inset 0 0 0 1px var(--sc-border); font: 13px/1.75 Arial, sans-serif; color: var(--tj-color-text-body-2); position: relative; max-height: 230px; overflow: hidden; transform: rotate(-1.2deg); }
.sc-prob-menu::after { content: ""; position: absolute; inset: auto 0 0; height: 90px; background: linear-gradient(transparent, var(--sc-surface-2)); }
.sc-prob-menu span { display: block; }
/* Muchos botones a un solo teléfono (reparto) */
.sc-prob-embudo { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; }
.sc-prob-botones { display: grid; gap: 5px; }
.sc-prob-botones span { font-size: 11px; font-weight: 700; padding: 5px 9px; border-radius: 8px; background: rgba(37,211,102,.12); color: #25D366; }
.sc-prob-lineas { height: 150px; border-right: 2px dashed color-mix(in oklab, #fff 20%, transparent); border-radius: 0 60px 60px 0; }
.sc-prob-tel { width: 120px; border-radius: 20px; padding: 12px 10px; background: var(--sc-surface-2); box-shadow: 0 20px 40px -18px #000, inset 0 0 0 1.5px color-mix(in oklab, #fff 14%, transparent); display: grid; gap: 6px; position: relative; }
.sc-prob-tel span { font-size: 10.5px; padding: 6px 8px; border-radius: 10px; background: color-mix(in oklab, #fff 7%, transparent); color: var(--tj-color-heading-primary); }
.sc-prob-tel em { position: absolute; top: -10px; right: -10px; font-style: normal; font-size: 11px; font-weight: 800; padding: 4px 8px; border-radius: 999px; background: #f87171; color: #1a0605; box-shadow: 0 0 0 3px var(--sc-surface-1); }
@media (max-width: 575px) { .sc-prob-t:nth-child(even) { transform: rotate(1.2deg); } }
