/* ============================================================
   Casos: índice editorial (rediseño 2026-09-24, ver notas.md; retitulado a
   nivel de sector/rubro el mismo día, ver comentario en index.html)
   Reemplaza las tarjetas con preview genérico por una lista numerada,
   escaneable en segundos: número + título (el área de negocio, "Sistemas
   aplicados a X", nunca el tipo de cliente ni "Caso 1/2") + hook de una
   línea + tags de stack, con un botón real que expande
   El problema / Qué cambia / Resultado.

   Archivo separado (no dentro de styles.css) para no pisar al agente que
   está tocando Proceso en paralelo en el mismo archivo compartido, ver
   notas.md "Concurrencia".

   Progressive enhancement: en el HTML el <div class="case-row__panel-wrap">
   arranca en grid-template-rows:1fr (TODO visible, funciona sin JS ni CSS
   de más). Recién cuando js/cases.js corre agrega ".is-collapsible" al
   <ol#casesIndex>: ahí el default pasa a 0fr y el JS decide qué fila abrir.
   Motion: la transición de grid-template-rows es 100% CSS (funciona con o
   sin GSAP) y hereda el "transition-duration:.01ms" global de
   prefers-reduced-motion de styles.css, así que el colapso queda
   instantáneo solo con la media query, sin lógica extra acá. El stagger de
   contenido (Problema/Qué implementé/Resultado) y el scroll-into-view sí
   son JS (GSAP + Lenis si están disponibles), ver js/cases.js.
   ============================================================ */

.cases-index {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--line);
  --case-indent: calc(3.25rem + var(--space-lg));
}

.case-row { border-bottom: 1px solid var(--line); }

.case-row__head-wrap { margin: 0; font-weight: normal; }

.case-row__head {
  appearance: none;
  background: none;
  border: 0;
  margin: 0;
  width: 100%;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  display: grid;
  grid-template-columns: 3.25rem 1fr auto 1.5rem;
  align-items: center;
  column-gap: var(--space-lg);
  padding-block: var(--space-lg);
}
.cases-index:not(.is-collapsible) .case-row__head { cursor: default; }
.case-row__head:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: -4px; border-radius: var(--radius-sm); }

/* ---- número + ink de mano alzada (hover/foco, js/cases.js dibuja el trazo
   una sola vez con js/hand-drawn.js; el toggle es puro CSS, sin rAF) ---- */
.case-row__num-wrap { position: relative; width: 3.25rem; height: 3.25rem; display: grid; place-items: center; }
.case-row__num {
  position: relative;
  z-index: 1;
  font-family: var(--f-mono);
  font-size: var(--fs-sm);
  /* --ink-soft y no --ink-faint: en estos titulitos --ink-faint daba 4.19:1. */
  color: var(--ink-soft);
  transition: color 0.3s var(--ease-out-quart);
}
.case-row__head:hover .case-row__num,
.case-row__head:focus-visible .case-row__num { color: var(--accent); }
.case-row__num-ink {
  position: absolute;
  inset: -9px;
  width: calc(100% + 18px);
  height: calc(100% + 18px);
  opacity: 0;
  transition: opacity 0.4s var(--ease-out-quart);
  pointer-events: none;
}
.case-row__head:hover .case-row__num-ink,
.case-row__head:focus-visible .case-row__num-ink { opacity: 1; }

/* ---- título (el sector, "Sistemas aplicados a X": pedido explícito de Lean
   de no nombrar el tipo de cliente/proyecto en el título) + hook ---- */
.case-row__main { min-width: 0; display: flex; flex-direction: column; gap: 0.4rem; }
.case-row__title {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(1.3rem, 1.05rem + 1.1vw, 1.9rem);
  line-height: 1.18;
  color: var(--ink);
  transition: transform 0.4s var(--ease-out-quart), color 0.3s var(--ease-out-quart);
}
.case-row__head:hover .case-row__title,
.case-row__head:focus-visible .case-row__title { transform: translateX(0.4rem); color: var(--accent); }
.case-row__rule {
  display: block;
  width: 2.5rem;
  height: 1px;
  background: var(--accent);
  transform-origin: left center;
  transform: scaleX(0);
  transition: transform 0.45s var(--ease-out-quart);
}
.case-row__head:hover .case-row__rule,
.case-row__head:focus-visible .case-row__rule { transform: scaleX(1); }
.case-row__hook {
  font-family: var(--f-body);
  font-size: var(--fs-sm);
  color: var(--ink-soft);
  max-width: 46ch;
}

/* ---- tags de stack (mismo criterio de brevedad que .eyebrow: etiquetas
   cortas, nunca texto corrido en mayúsculas) ---- */
.case-row__tags { display: flex; flex-wrap: wrap; gap: 0.4rem; justify-content: flex-end; max-width: 13rem; }
.case-row__tag {
  font-family: var(--f-mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.02em;
  padding: 0.3rem 0.6rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  color: var(--ink-soft);
  white-space: nowrap;
}

/* ---- "+" que gira a "×" con el estado real del botón (aria-expanded),
   mismo truco que .faq-item__icon ---- */
.case-row__plus { position: relative; width: 1.4rem; height: 1.4rem; justify-self: end; color: var(--ink-faint); transition: color 0.3s var(--ease-out-quart), transform 0.4s var(--ease-out-quart); }
.cases-index:not(.is-collapsible) .case-row__plus { display: none; }
.case-row__plus::before,
.case-row__plus::after { content: ""; position: absolute; background: currentColor; transition: transform 0.3s var(--ease-out-quart); }
.case-row__plus::before { top: 50%; left: 0; width: 100%; height: 1.5px; transform: translateY(-50%); }
.case-row__plus::after { left: 50%; top: 0; height: 100%; width: 1.5px; transform: translateX(-50%); }
.case-row__head:hover .case-row__plus,
.case-row__head:focus-visible .case-row__plus { color: var(--accent); }
.case-row__head[aria-expanded="true"] .case-row__plus { transform: rotate(45deg); color: var(--accent); }

/* ---- panel: colapso vía grid-template-rows (nunca height directo), ver
   nota de arriba sobre progressive enhancement ---- */
.case-row__panel-wrap {
  display: grid;
  grid-template-rows: 1fr;
  transition: grid-template-rows 0.55s var(--ease-out-quart);
}
.cases-index.is-collapsible .case-row__panel-wrap { grid-template-rows: 0fr; }
.cases-index.is-collapsible .case-row.is-open .case-row__panel-wrap { grid-template-rows: 1fr; }
.case-row__panel { overflow: hidden; min-height: 0; }

.case-row__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg);
  padding: var(--space-2xs) 0 var(--space-xl) var(--case-indent);
}
.case-row__block h4 {
  font-family: var(--f-mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 0.5rem;
}
.case-row__block p { color: var(--ink-soft); font-size: var(--fs-sm); line-height: 1.55; }

/* ============ Mobile (mismo corte que el resto del sitio, 56rem) ============ */
@media (max-width: 56rem) {
  .case-row__head {
    grid-template-columns: 2.75rem 1fr 1.5rem;
    grid-template-areas: "num main plus" "tags tags tags";
    row-gap: var(--space-sm);
    column-gap: var(--space-md);
    padding-block: var(--space-md);
  }
  .case-row__num-wrap { grid-area: num; width: 2.75rem; height: 2.75rem; }
  .case-row__main { grid-area: main; }
  .case-row__plus { grid-area: plus; align-self: start; margin-top: 0.2rem; }
  .case-row__tags { grid-area: tags; justify-content: flex-start; max-width: none; }
  .case-row__grid { grid-template-columns: 1fr; gap: var(--space-md); padding-left: 0; }
}

@media (max-width: 30rem) {
  .case-row__title { font-size: 1.2rem; }
}

/* Estado real de una fila, cuando no es un sistema de cliente andando hoy:
   "En camino" (disenado, todavia sin activar) o "Proyecto propio" (el sistema
   es de Lean, no de un cliente). Salio del recorrido de clientes del 28-09:
   mezclarlos sin aclarar ponia en duda los casos que si estan corriendo. */
.case-row__estado {
  display: inline-block;
  /* La fila es un grid: sin esto el chip se estira a todo el ancho de la
     columna en vez de quedar del tamano de su texto. */
  justify-self: start;
  width: fit-content;
  margin-top: 0.35rem;
  font-family: var(--f-mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.2rem 0.5rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  color: var(--ink-faint);
}
