/* ==========================================================================
   Contacpedia · hoja única del sitio
   Tokens de _contexto/receta-visual.md (Fase 4). Blanco y grises, negro para
   el texto y un solo acento verde en CTA y momentos clave.
   ========================================================================== */

@font-face {
  font-family: "Schibsted Grotesk";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/schibsted-grotesk-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Respaldo con las métricas de Schibsted (medidas con canvas el 20/10): mientras carga la fuente,
   el texto ocupa lo mismo y el cambio no mueve la página (CLS). */
@font-face { font-family: "Schibsted Respaldo"; src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo"); font-weight: 400 600; size-adjust: 103.3%; ascent-override: 94.9%; descent-override: 25.2%; line-gap-override: 0%; }
@font-face { font-family: "Schibsted Respaldo"; src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("Arimo Bold"); font-weight: 700 800; size-adjust: 103.1%; ascent-override: 95%; descent-override: 25.2%; line-gap-override: 0%; }

:root {
  --blanco: #FFFFFF;
  --gris-50: #F6F7F7;
  --gris-100: #EDEFEF;
  --gris-300: #CBD0D0;
  --gris-500: #5E6666;   /* texto secundario: 5,5:1 sobre gris-50 */
  --gris-400: #6B7373;   /* solo detalles, nunca texto largo */
  --negro: #0B0F0E;
  --verde: #0E9F53;      /* señal y títulos grandes */
  --verde-boton: #0B8645;/* fondo de botón: 4,7:1 con blanco */
  --verde-h: #087A3D;
  --verde-texto: #087A3D; /* texto verde: 5,1:1 sobre gris-50 */
  --verde-50: #E7F6EE;
  --wa: #25D366; --ig: #E1306C; --ms: #0084FF;

  --fuente: "Schibsted Grotesk", "Schibsted Respaldo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --r-chico: 10px; --r-boton: 12px; --r-tarjeta: 16px; --r-foto: 22px;
  --sombra-ui: 0 1px 2px rgba(11,15,14,.08), 0 14px 30px -12px rgba(11,15,14,.30);
  --curva: cubic-bezier(.2,.8,.2,1);
  --ancho: 1240px;
  --gutter: 24px;
  --seccion: 96px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 84px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--blanco); color: var(--negro); font: 400 17px/1.6 var(--fuente); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, p, ul, ol, figure, dl, dd { margin: 0; }
ul, ol { padding: 0; }
a { color: inherit; }
button, input, select { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--verde-boton); outline-offset: 3px; border-radius: 6px; }
.oculto { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.saltar { position: absolute; left: 12px; top: -60px; z-index: 50; background: var(--negro); color: #fff; padding: 10px 14px; border-radius: var(--r-chico); text-decoration: none; font-weight: 600; }
.saltar:focus { top: 12px; }

.marco { max-width: var(--ancho); margin: 0 auto; padding: 0 var(--gutter); }
.seccion { padding: var(--seccion) 0; }
.seccion--gris { background: var(--gris-50); }

/* ---------- tipografía ---------- */
.ante { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; letter-spacing: .02em; color: var(--gris-500); }
.h2 { font-weight: 800; font-size: 40px; font-size: clamp(30px, 4vw, 48px); line-height: 1.06; letter-spacing: -.01em; max-width: 20ch; text-wrap: balance; }
.h3 { font-weight: 700; font-size: 19px; line-height: 1.25; letter-spacing: -.015em; }
.bajada { font-size: 19px; line-height: 1.55; color: var(--gris-500); max-width: 52ch; margin-top: 16px; text-wrap: pretty; }
.cabeza { margin-bottom: 48px; }
.cabeza--centro { text-align: center; }
.cabeza--centro .h2, .cabeza--centro .bajada { margin-left: auto; margin-right: auto; }
.texto { color: var(--gris-500); }
.texto b, .texto strong { color: var(--negro); font-weight: 600; }

/* ---------- botones ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 14px 24px; border-radius: var(--r-boton); font-weight: 600; font-size: 17px; line-height: 1.2; text-decoration: none; border: 1px solid transparent; cursor: pointer; transition: background-color .18s var(--curva), transform .18s var(--curva), border-color .18s var(--curva); }
.btn:active { transform: scale(.98); }
.btn--verde { background: var(--verde-boton); color: #fff; }
.btn--verde:hover { background: var(--verde-h); }
.btn--claro { background: var(--gris-50); color: var(--negro); border-color: var(--gris-100); }
.btn--claro:hover { background: var(--gris-100); }
.btn--negro { background: var(--negro); color: #fff; }
.btn--negro:hover { background: #222a28; }
.btn--bloque { width: 100%; }
.enlace { font-weight: 600; color: var(--verde-texto); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.enlace:hover { color: var(--verde-h); }
.acciones { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.icono-wa { width: 18px; height: 18px; flex: none; }

/* ---------- cabecera ---------- */
.cab { position: sticky; top: 0; z-index: 20; background: rgba(255,255,255,.92); backdrop-filter: saturate(1.4) blur(10px); -webkit-backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid transparent; transition: border-color .2s; }
.cab.con-borde { border-bottom-color: var(--gris-100); }
.cab .marco { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 68px; }
.logo { display: inline-flex; align-items: center; min-height: 44px; gap: 10px; font-weight: 700; font-size: 22px; letter-spacing: -.02em; text-decoration: none; color: var(--negro); }
.logo svg { width: 32px; height: 32px; flex: none; }
.menu { display: flex; align-items: center; gap: 28px; }
.menu a { text-decoration: none; font-size: 15px; font-weight: 600; color: var(--gris-500); padding: 10px 4px; }
.menu a:hover { color: var(--negro); }
.cab-der { display: flex; gap: 8px; align-items: center; }
.cab-cta { min-height: 44px; padding: 10px 18px; font-size: 15px; border-radius: var(--r-chico); }
.boton-menu { display: none; width: 44px; height: 44px; border-radius: var(--r-chico); border: 1px solid var(--gris-100); background: #fff; cursor: pointer; place-items: center; }
.boton-menu span, .boton-menu span::before, .boton-menu span::after { display: block; width: 18px; height: 2px; background: var(--negro); border-radius: 2px; position: relative; transition: transform .2s var(--curva), opacity .2s; }
.boton-menu span::before, .boton-menu span::after { content: ""; position: absolute; left: 0; }
.boton-menu span::before { top: -6px; } .boton-menu span::after { top: 6px; }
.boton-menu[aria-expanded="true"] span { background: transparent; }
.boton-menu[aria-expanded="true"] span::before { transform: translateY(6px) rotate(45deg); }
.boton-menu[aria-expanded="true"] span::after { transform: translateY(-6px) rotate(-45deg); }

/* ---------- hero ---------- */
.hero { padding: 40px 0 72px; }
.hero .marco { display: grid; grid-template-columns: 1fr 1.08fr; gap: 64px; align-items: center; }
.chip-canales { display: inline-flex; gap: 8px; align-items: center; font-size: 13px; font-weight: 600; color: var(--gris-500); border: 1px solid var(--gris-100); border-radius: 999px; padding: 6px 12px 6px 8px; }
.puntos { display: inline-flex; }
.puntos i { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #fff; margin-left: -4px; }
.puntos i:first-child { margin-left: 0; }
.h1 { font-weight: 800; font-size: 56px; font-size: clamp(40px, 5.2vw, 64px); line-height: 1.02; letter-spacing: -.015em; margin: 22px 0 20px; text-wrap: balance; }
.h1 span { color: var(--verde); }
.hero .bajada { margin-top: 0; max-width: 36ch; }
.linea-chica { font-size: 15px; color: var(--gris-500); margin-top: 14px; }
.sellos { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 26px; font-size: 15px; color: var(--gris-500); list-style: none; }
.sellos li, .check { display: inline-flex; gap: 8px; align-items: center; }
.sellos li::before, .check::before { content: ""; flex: none; width: 18px; height: 18px; border-radius: 50%; background: var(--verde-50) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='%230B8645' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }

.escena { position: relative; }
.foto { border-radius: var(--r-foto); overflow: hidden; background: var(--gris-100); }
.foto img { width: 100%; height: 100%; object-fit: cover; }
.escena .foto { aspect-ratio: 4 / 3.6; }
.escena .foto img { object-position: 30% center; }
.ui { position: absolute; background: #fff; border-radius: var(--r-tarjeta); box-shadow: var(--sombra-ui); }
.ui-bandeja { left: -48px; bottom: 30px; width: 300px; padding: 12px; }
.ui-cab { display: flex; justify-content: space-between; font-size: 13px; color: var(--gris-500); font-weight: 600; padding: 4px 6px 10px; }
.item { display: grid; grid-template-columns: 30px minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 8px 6px; border-radius: var(--r-chico); }
.item.act { background: var(--gris-50); }
.av { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; font-weight: 700; color: #fff; background: var(--negro); position: relative; }
.av i { position: absolute; right: -2px; bottom: -2px; width: 11px; height: 11px; border-radius: 50%; border: 2px solid #fff; }
.item b { font-size: 13px; display: block; font-weight: 600; }
.item small { font-size: 13px; color: var(--gris-500); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.item em { font-style: normal; font-size: 13px; font-weight: 700; color: #fff; background: var(--negro); border-radius: 999px; min-width: 18px; height: 18px; display: grid; place-items: center; padding: 0 5px; }
.ui-ia { right: 20px; top: 24px; width: 286px; padding: 14px 14px 12px; }
.ui-etq { font-size: 13px; font-weight: 700; color: var(--verde-texto); display: flex; gap: 6px; align-items: center; text-transform: uppercase; letter-spacing: .05em; }
.ui-ia p { font-size: 15px; margin: 8px 0 10px; line-height: 1.45; }
.ui-botones { display: flex; gap: 6px; }
.ui-botones span { font-size: 13px; font-weight: 600; border-radius: var(--r-chico); padding: 6px 11px; border: 1px solid var(--gris-100); background: #fff; }
.ui-botones span.p { background: var(--negro); color: #fff; border-color: var(--negro); }

/* Entrada del hero: solo opacidad y transform, sin bloquear el LCP (la foto ya está pintada). */
@media (prefers-reduced-motion: no-preference) {
  .ui-ia { animation: entra .6s .35s var(--curva) both; }
  .ui-bandeja { animation: entra .6s .55s var(--curva) both; }
  @keyframes entra { from { opacity: 0; transform: translateY(14px) scale(.98); } }
}

/* ---------- tira de hechos ---------- */
.tira ul { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--gris-100); border-bottom: 1px solid var(--gris-100); }
.tira li { padding: 26px 24px; font-weight: 700; font-size: 19px; letter-spacing: -.01em; border-left: 1px solid var(--gris-100); display: flex; gap: 12px; align-items: center; }
.tira li:first-child { border-left: 0; padding-left: 0; }
.tira svg { width: 22px; height: 22px; flex: none; color: var(--negro); }
.que-es { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; padding-top: 72px; align-items: start; }
.que-es .texto { font-size: 19px; }
.que-es .texto + .texto { margin-top: 16px; }
.sello-meta { margin-top: 20px; font-size: 15px; color: var(--gris-500); display: flex; gap: 10px; align-items: flex-start; }
.sello-meta::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: 2px; border-radius: 50%; background: var(--verde-50) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='%23087A3D' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }

/* ---------- antes y después ---------- */
.versus { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.lado { border-radius: var(--r-tarjeta); padding: 32px; }
.lado--hoy { background: #fff; border: 1px solid var(--gris-100); }
.lado--con { background: var(--negro); color: #fff; }
.lado h3 { font-size: 15px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; margin-bottom: 18px; }
.lado--hoy h3 { color: var(--gris-500); }
.lado--con h3 { color: #7FD8A6; }
.lado ul { list-style: none; display: grid; gap: 14px; }
.lado li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; line-height: 1.5; }
.lado li::before { content: ""; width: 18px; height: 18px; margin-top: 3px; border-radius: 50%; }
.lado--hoy li::before { border: 2px solid var(--gris-300); }
.lado--con li::before { background: var(--verde) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }
.debajo { margin-top: 28px; max-width: 62ch; }

/* ---------- la bandeja funcionando ---------- */
.demo { display: grid; grid-template-columns: 1.25fr 1fr; gap: 48px; align-items: center; }
.app { background: #fff; border-radius: var(--r-foto); box-shadow: var(--sombra-ui); overflow: hidden; display: grid; grid-template-columns: 210px 1fr; min-height: 380px; }
.app-lista { border-right: 1px solid var(--gris-100); padding: 12px 8px; background: #FBFCFC; }
.app-lista .ui-cab { padding: 2px 8px 10px; }
.app-conv { display: flex; flex-direction: column; }
.app-conv-cab { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--gris-100); }
.app-conv-cab b { font-size: 15px; display: block; }
.app-conv-cab small { font-size: 13px; color: var(--gris-500); }
.etapa { margin-left: auto; font-size: 13px; font-weight: 700; padding: 4px 9px; border-radius: 999px; background: var(--gris-100); color: var(--negro); white-space: nowrap; }
.app-msgs { flex: 1; padding: 16px; display: flex; flex-direction: column; gap: 10px; background: var(--gris-50); }
.burbuja { max-width: 84%; padding: 9px 12px; border-radius: var(--r-boton); font-size: 15px; line-height: 1.45; background: #fff; border: 1px solid var(--gris-100); align-self: flex-start; }
.burbuja--sale { align-self: flex-end; background: var(--negro); color: #fff; border-color: var(--negro); }
.burbuja--ia { align-self: stretch; max-width: none; background: var(--verde-50); border: 1px dashed var(--verde); }
.burbuja--ia .ui-etq { margin-bottom: 4px; }
.turno { align-self: center; font-size: 13px; font-weight: 600; background: #fff; border: 1px solid var(--gris-100); border-radius: 999px; padding: 6px 12px; display: inline-flex; gap: 8px; align-items: center; }
.reloj { font-size: 13px; color: var(--gris-500); }
/* Estados de la demo: cada paso suma lo suyo. Sin JS o con movimiento reducido se ve el paso 3 completo. */
.app [data-paso] { transition: opacity .4s var(--curva), transform .4s var(--curva); }
.mv-js .app[data-en="1"] [data-paso="2"], .mv-js .app[data-en="1"] [data-paso="3"],
.mv-js .app[data-en="2"] [data-paso="3"] { opacity: 0; transform: translateY(8px); }
.pasos { list-style: none; display: grid; gap: 10px; counter-reset: paso; }
.paso { display: grid; grid-template-columns: 36px 1fr; gap: 14px; padding: 16px 18px; border-radius: var(--r-tarjeta); border: 1px solid var(--gris-100); background: #fff; transition: border-color .3s, box-shadow .3s; }
.paso::before { counter-increment: paso; content: counter(paso); width: 32px; height: 32px; border-radius: 50%; background: var(--gris-100); display: grid; place-items: center; font-weight: 700; font-size: 15px; transition: background-color .3s, color .3s; }
.paso b { display: block; font-size: 15px; margin-bottom: 2px; }
.paso p { font-size: 15px; color: var(--gris-500); line-height: 1.5; }
.paso.activo { border-color: var(--verde); box-shadow: 0 0 0 3px var(--verde-50); }
.paso.activo::before { background: var(--verde-boton); color: #fff; }
.nota-chica { font-size: 13px; color: var(--gris-500); margin-top: 12px; }

.funciones { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; margin-top: 72px; list-style: none; }
.funcion { padding: 24px; border-radius: var(--r-tarjeta); background: #fff; border: 1px solid var(--gris-100); display: flex; flex-direction: column; gap: 8px; }
.funcion p { color: var(--gris-500); font-size: 15px; line-height: 1.55; }
.plan-chip { margin-top: auto; padding-top: 8px; font-size: 13px; font-weight: 700; color: var(--negro); }
.plan-chip span { background: var(--gris-50); border: 1px solid var(--gris-100); border-radius: 999px; padding: 4px 10px; display: inline-block; }
.plan-chip--mas span { background: var(--verde-50); border-color: #CDEBDB; color: #075F31; }

/* ---------- IA ---------- */
.niveles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; list-style: none; }
.nivel { padding: 28px; border-radius: var(--r-tarjeta); border: 1px solid var(--gris-100); background: #fff; display: flex; flex-direction: column; gap: 10px; }
.nivel p { color: var(--gris-500); font-size: 15px; }
.nivel--fuerte { background: var(--negro); color: #fff; border-color: var(--negro); }
.nivel--fuerte p { color: #C6CCCB; }
.nivel--fuerte .plan-chip { color: #fff; }
.nivel--fuerte .plan-chip span { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.16); color: #fff; }
.ia-abajo { display: grid; grid-template-columns: 1.2fr 1fr; gap: 48px; margin-top: 56px; align-items: start; }
.reglas { list-style: none; display: grid; gap: 12px; margin-top: 18px; }
.reglas li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; color: var(--gris-500); }
.reglas li::before { content: ""; width: 8px; height: 8px; margin: 9px 0 0 6px; border-radius: 50%; background: var(--verde); }
.caja { border-radius: var(--r-tarjeta); padding: 28px; background: var(--gris-50); border: 1px solid var(--gris-100); }
.caja .h3 { margin-bottom: 10px; }
.caja p + p { margin-top: 12px; }
.pie-seccion { margin-top: 16px; font-size: 13px; color: var(--gris-500); max-width: 60ch; }

/* ---------- tu número ---------- */
.dos-col { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.dos-col .foto { aspect-ratio: 4 / 4.4; }
.lista-simple { list-style: none; display: grid; gap: 10px; margin-top: 16px; }
.lista-simple li { display: grid; grid-template-columns: 18px 1fr; gap: 10px; color: var(--gris-500); font-size: 15px; }
.lista-simple li::before { content: "·"; font-weight: 800; color: var(--negro); }
.estado { margin-top: 28px; border: 1px solid var(--gris-100); border-radius: var(--r-tarjeta); overflow: hidden; }
.estado-tit { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--gris-500); padding: 12px 16px; background: var(--gris-50); border-bottom: 1px solid var(--gris-100); }
.estado dl { display: grid; grid-template-columns: auto 1fr; }
.estado dt, .estado dd { padding: 12px 16px; border-bottom: 1px solid var(--gris-100); font-size: 15px; }
.estado dt { font-weight: 700; display: flex; gap: 8px; align-items: center; }
.estado dt i { width: 10px; height: 10px; border-radius: 50%; }
.estado dd { color: var(--gris-500); }
.estado dl > :nth-last-child(-n+2) { border-bottom: 0; }
.estado p { padding: 12px 16px; font-size: 15px; color: var(--gris-500); border-top: 1px solid var(--gris-100); }
.ok { color: var(--verde-texto) !important; font-weight: 600; }

/* ---------- rubros ---------- */
.rubros { display: block; }
.rubros .situaciones { grid-template-columns: 1fr 1fr; }
.rubros .foto { aspect-ratio: 4 / 5; position: sticky; top: 100px; }
.rubros .foto img { object-position: 45% center; }
.situaciones { list-style: none; display: grid; gap: 16px; }
.situacion { padding: 24px 26px; border-radius: var(--r-tarjeta); border: 1px solid var(--gris-100); background: #fff; }
.situacion .rubro { font-size: 15px; font-weight: 700; color: var(--verde-texto); }
.situacion .h3 { margin: 6px 0 8px; }
.situacion p { color: var(--gris-500); font-size: 15px; max-width: 56ch; }

/* ---------- cómo empezás ---------- */
.empezar { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; counter-reset: e; }
.empezar li { padding: 26px; border-radius: var(--r-tarjeta); background: #fff; border: 1px solid var(--gris-100); counter-increment: e; }
.empezar li::before { content: counter(e, decimal-leading-zero); display: block; font-weight: 800; font-size: 32px; letter-spacing: -.03em; color: var(--verde); margin-bottom: 14px; line-height: 1; }
.empezar b { display: block; font-size: 19px; margin-bottom: 6px; }
.empezar p { color: var(--gris-500); font-size: 15px; }

/* ---------- planes ---------- */
.elegidor { border: 1px solid var(--gris-100); border-radius: var(--r-tarjeta); padding: 28px; background: #fff; margin-bottom: 40px; }
.elegidor > summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.elegidor > summary::-webkit-details-marker { display: none; }
.elegidor > summary .h3 { font-size: 22px; }
.elegidor > summary small { display: block; color: var(--gris-500); font-size: 15px; font-weight: 400; margin-top: 2px; }
.mas { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--gris-100); display: grid; place-items: center; flex: none; transition: transform .25s var(--curva); }
.elegidor[open] .mas { transform: rotate(45deg); }
.preguntas { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 24px; }
.preguntas fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.preguntas legend { font-weight: 700; margin-bottom: 10px; font-size: 15px; }
.opcion { display: flex; gap: 10px; align-items: center; padding: 9px 12px; border: 1px solid var(--gris-100); border-radius: var(--r-chico); margin-bottom: 8px; cursor: pointer; font-size: 15px; transition: border-color .15s, background-color .15s; }
.opcion:hover { border-color: var(--gris-300); }
.opcion:has(input:checked) { border-color: var(--verde-boton); background: var(--verde-50); }
.opcion input { width: 18px; height: 18px; accent-color: var(--verde-boton); margin: 0; flex: none; }
.resultado { margin-top: 20px; padding: 20px; border-radius: var(--r-tarjeta); background: var(--gris-50); display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; }
.resultado[hidden] { display: none; }
.resultado p { font-size: 19px; font-weight: 600; flex: 1 1 260px; }

.planes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; list-style: none; }
.plan { position: relative; display: flex; flex-direction: column; padding: 30px 28px 28px; border-radius: var(--r-tarjeta); background: #fff; border: 1px solid var(--gris-100); }
.plan--destacado { border: 2px solid var(--negro); }
.plan-etq { position: absolute; top: -13px; left: 26px; background: var(--negro); color: #fff; font-size: 13px; font-weight: 700; padding: 5px 11px; border-radius: 999px; }
.plan h3 { font-size: 22px; font-weight: 800; letter-spacing: -.02em; }
.plan-para { color: var(--gris-500); font-size: 15px; margin-top: 6px; min-height: 4.5em; }
.aviso-costo { margin-top: 10px; font-size: 13px; line-height: 1.45; color: var(--gris-500); }
.cabeza .aviso-costo { margin-top: 12px; font-size: 15px; color: var(--negro); font-weight: 600; max-width: 60ch; }
.prueba-nota { margin-top: 18px; font-size: 13px; font-weight: 700; color: var(--verde-texto); }
.prueba-nota + .precio { margin-top: 4px; }
.precio { margin-top: 18px; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.precio b { font-size: 36px; font-weight: 800; letter-spacing: -.04em; line-height: 1; }
.precio span { color: var(--gris-500); font-size: 15px; }
.precio-nota { font-size: 13px; color: var(--gris-500); margin-top: 6px; }
.plan .btn { margin-top: 22px; }
.plan-incluye { list-style: none; display: grid; gap: 9px; margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--gris-100); font-size: 15px; }
.plan-incluye li { display: grid; grid-template-columns: 20px 1fr; gap: 8px; }
.plan-incluye li::before { content: ""; width: 16px; height: 16px; margin-top: 3px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.8 2.8 6-6' fill='none' stroke='%230B8645' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }
.plan-incluye .base { font-weight: 600; grid-template-columns: 1fr; }
.plan-incluye .base::before { display: none; }
.nota-planes { margin: 18px auto 0; font-size: 15px; color: var(--gris-500); text-align: center; max-width: 62ch; }

.comparar { margin-top: 64px; }
.comparar-cab { display: flex; justify-content: space-between; align-items: end; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.interruptor { display: inline-flex; gap: 10px; align-items: center; font-size: 15px; font-weight: 600; cursor: pointer; min-height: 44px; }
.interruptor input { width: 20px; height: 20px; accent-color: var(--verde-boton); margin: 0; }
.tabla-envoltura { overflow-x: auto; border: 1px solid var(--gris-100); border-radius: var(--r-tarjeta); -webkit-overflow-scrolling: touch; }
.tabla { width: 100%; border-collapse: collapse; font-size: 15px; min-width: 560px; }
.tabla th, .tabla td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--gris-100); }
.tabla thead th { background: var(--gris-50); font-size: 15px; }
.tabla td { text-align: center; }
.tabla th[scope="row"] { font-weight: 600; }
.tabla tbody tr:last-child > * { border-bottom: 0; }
.tabla .si { color: var(--verde-texto); font-weight: 700; }
.tabla .no { color: var(--gris-400); }
.solo-dif .tabla tr.igual { display: none; }
.tokens { margin-top: 14px; font-size: 15px; color: var(--gris-500); max-width: 60ch; }

.aparte { margin-top: 64px; display: grid; grid-template-columns: 1fr 1.2fr; gap: 40px; align-items: start; }
.aparte .texto + .texto { margin-top: 14px; }
.tabla--meta td { text-align: left; }
.avisos { margin-top: 14px; font-size: 15px; color: var(--gris-500); max-width: 62ch; }

/* ---------- requisitos ---------- */
.requisitos { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.requisitos .caja { background: #fff; }
.requisitos .caja--gris { background: var(--gris-50); }
.lista-check { list-style: none; display: grid; gap: 12px; margin-top: 16px; }
.lista-check li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; color: var(--gris-500); font-size: 15px; }
.lista-check li::before { content: ""; width: 18px; height: 18px; margin-top: 3px; border-radius: 50%; background: var(--verde-50) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='%230B8645' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }
.lista-no li::before { background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5 5l6 6M11 5l-6 6' fill='none' stroke='%235E6666' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/16px no-repeat; border: 1px solid var(--gris-300); }
.lista-check b { color: var(--negro); font-weight: 600; }

/* ---------- condiciones ---------- */
.condiciones { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; list-style: none; }
.condicion { padding: 28px; border-radius: var(--r-tarjeta); border: 1px solid var(--gris-100); background: #fff; }
.condicion .h3 { margin-bottom: 10px; }
.condicion p { color: var(--gris-500); font-size: 15px; }

/* ---------- demo y cierre ---------- */
.banda { background: var(--negro); color: #fff; border-radius: var(--r-foto); padding: 56px; display: grid; grid-template-columns: 1.2fr 1fr; gap: 48px; align-items: center; }
.banda .h2 { color: #fff; }
.banda .bajada, .banda .texto { color: #C6CCCB; }
.banda .texto { font-size: 15px; }
.banda .linea-chica { color: #AEB5B4; }
.banda a.correo { color: #fff; }
.cierre { text-align: center; }
.cierre .h2, .cierre .bajada { margin-left: auto; margin-right: auto; }
.cierre .acciones { justify-content: center; }

/* ---------- pie ---------- */
.pie { border-top: 1px solid var(--gris-100); padding: 56px 0 40px; font-size: 15px; color: var(--gris-500); }
.pie-grilla { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; }
.pie .logo { margin-bottom: 14px; }
.pie h2 { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--negro); margin-bottom: 12px; }
.pie ul { list-style: none; display: grid; gap: 8px; }
.pie a { text-decoration: none; }
.pie p a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.pie ul a { display: inline-block; padding: 6px 0; }
.pie a:hover { color: var(--negro); text-decoration: underline; }
.pie-base { margin-top: 40px; padding-top: 22px; border-top: 1px solid var(--gris-100); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; font-size: 15px; }
.botones-legales { display: flex; flex-wrap: wrap; gap: 8px; }
.arrepentimiento { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 14px; border: 1px solid var(--gris-300); border-radius: var(--r-chico); font-weight: 600; color: var(--negro); }

/* ---------- páginas interiores ---------- */
.interior { padding: 56px 0 96px; }
.interior .marco { max-width: 820px; }
.migas { font-size: 15px; color: var(--gris-500); margin-bottom: 24px; }
.migas ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.migas li + li::before { content: "/"; margin-right: 6px; color: var(--gris-300); }
.migas a { text-decoration: none; }
.migas a:hover { text-decoration: underline; }
.faq { margin-top: 40px; display: grid; gap: 0; }
.faq article { padding: 28px 0; border-top: 1px solid var(--gris-100); }
.faq h2 { font-size: 22px; font-weight: 700; letter-spacing: -.015em; line-height: 1.3; margin-bottom: 10px; }
.faq p { color: var(--gris-500); }
.volver { display: inline-flex; gap: 8px; align-items: center; font-weight: 600; text-decoration: none; margin-top: 8px; }
.volver:hover { text-decoration: underline; }
.interior .banda { margin-top: 56px; grid-template-columns: 1fr; padding: 40px; gap: 20px; }
.prosa p + p { margin-top: 16px; }
.prosa p { color: var(--gris-500); font-size: 19px; }

/* ---------- celular y tablet ---------- */
@media (max-width: 1060px) {
  .hero .marco, .que-es, .demo, .dos-col, .rubros, .ia-abajo, .aparte, .banda { grid-template-columns: 1fr; }
  .hero .marco { gap: 40px; }
  .ui-bandeja { left: 12px; }
  .rubros .foto { position: static; aspect-ratio: 16 / 10; }
  .dos-col .foto { aspect-ratio: 16 / 11; order: -1; }
  .empezar { grid-template-columns: repeat(2, 1fr); }
  .planes { grid-template-columns: 1fr; max-width: 520px; margin: 0 auto; }
  .plan-para { min-height: 0; }
  .preguntas { grid-template-columns: 1fr 1fr; }
  .niveles { grid-template-columns: 1fr; }
  .pie-grilla { grid-template-columns: 1fr 1fr; }
  .pie-grilla > :first-child { grid-column: 1 / -1; }
}
@media (max-width: 860px) {
  .menu { display: none; position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-bottom: 1px solid var(--gris-100); flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--gutter) 16px; box-shadow: 0 16px 24px -16px rgba(11,15,14,.2); }
  .menu.abierto { display: flex; }
  .menu a { padding: 13px 0; font-size: 17px; color: var(--negro); border-bottom: 1px solid var(--gris-100); }
  .menu a:last-child { border-bottom: 0; }
  .boton-menu { display: grid; }
  .cab .marco { position: relative; }
}
@media (max-width: 720px) {
  :root { --gutter: 16px; --seccion: 64px; --r-foto: 18px; }
  body { font-size: 17px; }
  .hero { padding: 24px 0 56px; }
  .bajada { font-size: 17px; }
  .cabeza { margin-bottom: 32px; }
  .escena .foto { aspect-ratio: 4 / 4.4; }
  .ui-ia { right: 10px; top: 10px; width: min(250px, 78%); padding: 12px; }
  .ui-ia p { font-size: 13px; }
  .ui-bandeja { left: 10px; bottom: -36px; width: min(282px, 86%); }
  .escena { margin-bottom: 36px; }
  .acciones .btn { flex: 1 1 100%; }
  .tira ul { grid-template-columns: 1fr 1fr; }
  .tira li { padding: 18px 12px; font-size: 15px; border-left: 0; border-top: 1px solid var(--gris-100); }
  .tira li:nth-child(-n+2) { border-top: 0; }
  .tira li:nth-child(odd) { padding-left: 0; }
  .tira li:nth-child(even) { border-left: 1px solid var(--gris-100); }
  .que-es { padding-top: 48px; gap: 24px; }
  .versus, .requisitos, .condiciones, .empezar, .preguntas { grid-template-columns: 1fr; }
  .lado, .caja, .condicion, .nivel, .banda, .elegidor { padding: 22px; }
  .app { grid-template-columns: 1fr; }
  .app-lista { display: none; }
  .funciones { margin-top: 48px; }
  .banda { border-radius: 18px; }
  .pie-grilla { grid-template-columns: 1fr; }
  .cab-cta { padding: 10px 14px; }
}
@media (max-width: 380px) {
  .h1 { font-size: 35px; }
  .logo { font-size: 17px; gap: 8px; }
  .logo svg { width: 28px; height: 28px; }
  .cab .marco { gap: 8px; }
  .cab-der { gap: 6px; }
  .cab-cta { font-size: 15px; padding: 10px 12px; }
}
@media print {
  .cab, .elegidor, .boton-menu { display: none !important; }
}

/* ---------- utilidades (en lugar de estilos en línea, por la CSP) ---------- */
.c-wa { background: var(--wa); } .c-ig { background: var(--ig); } .c-ms { background: var(--ms); }
.av--g2 { background: #3A4141; } .av--g3 { background: #6B7373; }
.fuerte { color: var(--negro); font-weight: 600; }
.h2--medio { font-size: clamp(26px, 3vw, 36px); }
.sin-max { max-width: none; }
.mt-0 { margin-top: 0; } .mt-8 { margin-top: 8px; } .mt-16 { margin-top: 16px; } .mt-22 { margin-top: 22px; } .mt-24 { margin-top: 24px; } .mt-28 { margin-top: 28px; } .mt-32 { margin-top: 32px; }
#demo { padding-top: 0; }
/* Los hijos de grilla no se estiran por su contenido (la tabla de Meta ensanchaba la página en el celular). */
.aparte > *, .demo > *, .dos-col > *, .ia-abajo > *, .rubros > *, .que-es > *, .hero .marco > * { min-width: 0; }
@media (max-width: 720px) {
  .funciones { gap: 10px; }
  .funcion { padding: 18px 20px; gap: 6px; }
  .funcion .plan-chip { padding-top: 4px; }
  .situacion { padding: 20px; }
  .tira li { font-size: 15px; gap: 10px; }
}
.titulo-interior { font-size: 52px; font-size: clamp(34px, 4.4vw, 52px); margin: 0 0 8px; letter-spacing: -.01em; }


/* Vuelta 2 del loop: grilla de funciones sin hueco, hero de celular sin tarjetas sobre la cara, comparación plegada. */
@media (min-width: 1061px) { .funciones { grid-template-columns: repeat(4, 1fr); } .funciones li:last-child { grid-column: span 2; } }
.comparar > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 22px; border: 1px solid var(--gris-100); border-radius: var(--r-tarjeta); background: #fff; min-height: 44px; }
.comparar > summary::-webkit-details-marker { display: none; }
.comparar[open] > summary { margin-bottom: 16px; }
.comparar[open] .mas { transform: rotate(45deg); }
.comparar .comparar-cab { margin-top: 0; }
@media (max-width: 720px) {
  .ui-ia { display: none; }
  .ui-bandeja { left: 10px; bottom: -24px; width: min(260px, calc(100% - 20px)); }
  .escena .foto img { object-position: 22% center; }
  .rubros .foto { aspect-ratio: 16 / 9; }
  .dos-col .foto { aspect-ratio: 16 / 9; }
}

/* Celular: planes y funciones en tiras deslizables (la página bajaba a casi 30 pantallas). Se ve un pedazo de la tarjeta siguiente. */
.desliza-aviso { display: none; }
@media (max-width: 720px) {
  .planes, .funciones { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 12px; margin-left: calc(var(--gutter) * -1); margin-right: calc(var(--gutter) * -1); padding: 16px var(--gutter) 12px; scroll-padding: 0 var(--gutter); max-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
  .plan { flex: 0 0 86%; scroll-snap-align: center; }
  .funcion { flex: 0 0 78%; scroll-snap-align: start; }
  .funciones { margin-top: 40px; }
  .desliza-aviso { display: block; font-size: 13px; color: var(--gris-500); margin-top: 4px; }
  .chip-canales { font-size: 13px; gap: 8px; padding: 7px 12px 7px 8px; border-radius: var(--r-boton); line-height: 1.35; }
  .puntos i { width: 14px; height: 14px; }
}


/* Celular: la tabla de lo que cobra Meta pasa a tarjetas apiladas (en la vuelta 2 se cortaba la columna Cuánto). */
@media (max-width: 720px) {
  .tabla--meta { min-width: 0; }
  .tabla--meta thead { display: none; }
  .tabla--meta tr { display: block; padding: 14px 16px; border-bottom: 1px solid var(--gris-100); }
  .tabla--meta tbody tr:last-child { border-bottom: 0; }
  .tabla--meta td { display: block; padding: 0; border: 0; }
  .tabla--meta td:first-child { font-weight: 700; color: var(--negro); margin-bottom: 4px; }
  .tabla--meta td:last-child { color: var(--gris-500); }
  .rubros .situaciones { grid-template-columns: 1fr; }
}
/* ==========================================================================
   Biblioteca de movimiento (plantillas-siwol/movimiento/movimiento.css), unida acá
   para ahorrar un pedido que bloquea el render.
   ========================================================================== */
/* ==========================================================================
   Movimiento · biblioteca de componentes de SIWOL (nivel 1)
   Revelado por scroll, revelado por escena, texto que se destapa, caída y
   deriva, contador y marquee. Sin librerías, sin canvas, sin GSAP.
   Solo anima transform, opacity y clip-path: nada dispara layout.

   Contrato general:
     · El contenido es HTML real y visible sin JS. `movimiento.js` agrega
       `mv-js` al <html>; solo con esa clase puesta algo arranca oculto.
       Si el JS no corre, la página se ve completa. Nunca al revés.
     · Con `prefers-reduced-motion: reduce` todo queda quieto y completo.
     · Cada pieza se activa con la clase `mv-visto`, que pone el observer
       cuando el elemento entra en pantalla.

   Parámetros (sobre :root o sobre el componente):
     --mv-dur       duración del revelado           (560ms)
     --mv-dist      distancia del revelado en px    (24px)
     --mv-ease      curva de entrada                (cubic-bezier(.2,.7,.2,1))
     --mv-paso      separación de la cadencia       (70ms)
   ========================================================================== */

:root {
  --mv-dur: 560ms;
  --mv-dist: 24px;
  --mv-ease: cubic-bezier(.2, .7, .2, 1);
  --mv-paso: 70ms;
}

/* --------------------------------------------------------------------------
   1 · Revelado por scroll
   <p data-mv="subir">, data-mv="aparecer" | "escalar" | "izquierda" | "derecha"
   data-mv-orden="3" para la cadencia dentro de un grupo (empieza en 0)
   data-mv-retraso="200" en ms, para un retraso fijo
   -------------------------------------------------------------------------- */
html.mv-js [data-mv] {
  opacity: 0;
  transition:
    opacity var(--mv-dur) var(--mv-ease),
    transform var(--mv-dur) var(--mv-ease);
  transition-delay: calc(var(--mv-orden, 0) * var(--mv-paso) + var(--mv-retraso, 0ms));
  will-change: opacity, transform;
}
html.mv-js [data-mv="subir"]     { transform: translateY(var(--mv-dist)); }
html.mv-js [data-mv="izquierda"] { transform: translateX(calc(var(--mv-dist) * -1)); }
html.mv-js [data-mv="derecha"]   { transform: translateX(var(--mv-dist)); }
html.mv-js [data-mv="escalar"]   { transform: scale(.96); }
html.mv-js [data-mv].mv-visto {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* --------------------------------------------------------------------------
   2 · Revelado por escena
   <section data-mv-escena> … </section>
   La sección entra como un plano nuevo: fondo primero, después sus hijos en
   cadencia. Los hijos directos no necesitan data-mv: los ordena el JS.
   -------------------------------------------------------------------------- */
html.mv-js [data-mv-escena] {
  --mv-dist: 40px;
  clip-path: inset(6% 0 6% 0 round 0);
  transition: clip-path calc(var(--mv-dur) * 1.4) var(--mv-ease);
}
html.mv-js [data-mv-escena].mv-visto {
  clip-path: inset(0 0 0 0 round 0);
}

/* --------------------------------------------------------------------------
   3 · Texto que se oculta y se revela
   <h1 class="mv-tapa"><span>Línea uno</span><span>Línea dos</span></h1>
   Cada span sube desde detrás de una máscara. Una línea por span.
   -------------------------------------------------------------------------- */
.mv-tapa > span {
  display: block;
  overflow: hidden;
  /* el descendente de la tipografía no se corta con la máscara */
  padding-bottom: .08em;
  margin-bottom: -.08em;
}
/* el texto de cada span se envuelve en .mv-tapa__linea desde el JS */
html.mv-js .mv-tapa .mv-tapa__linea {
  display: block;
  transform: translateY(110%);
  transition: transform calc(var(--mv-dur) * 1.2) var(--mv-ease);
  transition-delay: calc(var(--mv-orden, 0) * var(--mv-paso));
}
html.mv-js .mv-tapa.mv-visto .mv-tapa__linea { transform: none; }

/* --------------------------------------------------------------------------
   4 · Caída y deriva (hojas, brasas, motas, pétalos)
   <div class="mv-deriva" data-mv-particulas="14" data-mv-figura="🍂"> o
   data-mv-figura="url(figura.webp)"; data-mv-sube="1" para brasas que suben.
   Va como capa de fondo, decorativa (aria-hidden), nunca sobre el texto
   corrido. Fuera de pantalla se pausa.
   -------------------------------------------------------------------------- */
.mv-deriva {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.mv-deriva__p {
  position: absolute;
  top: -8%;
  left: var(--x, 50%);
  width: var(--t, 18px);
  height: var(--t, 18px);
  background: var(--figura, none) center / contain no-repeat;
  font-size: var(--t, 18px);
  line-height: 1;
  opacity: 0;
  animation: mv-caer var(--dur, 12s) linear infinite;
  animation-delay: var(--delay, 0s);
  animation-play-state: paused;
  will-change: transform, opacity;
}
.mv-deriva[data-mv-sube="1"] .mv-deriva__p {
  top: auto;
  bottom: -8%;
  animation-name: mv-subir;
}
.mv-deriva.mv-visto .mv-deriva__p { animation-play-state: running; }

@keyframes mv-caer {
  0%   { transform: translate3d(0, 0, 0) rotate(0deg);                 opacity: 0; }
  8%   { opacity: var(--op, .8); }
  50%  { transform: translate3d(var(--dx, 40px), 55vh, 0) rotate(160deg); }
  92%  { opacity: var(--op, .8); }
  100% { transform: translate3d(calc(var(--dx, 40px) * -.6), 115vh, 0) rotate(340deg); opacity: 0; }
}
@keyframes mv-subir {
  0%   { transform: translate3d(0, 0, 0) scale(1);        opacity: 0; }
  10%  { opacity: var(--op, .7); }
  100% { transform: translate3d(var(--dx, 30px), -115vh, 0) scale(.4); opacity: 0; }
}

/* --------------------------------------------------------------------------
   5 · Contador
   <span data-mv-contador="1250" data-mv-sufijo="+">1250+</span>
   El número final está en el HTML: sin JS se lee el valor real.
   -------------------------------------------------------------------------- */
[data-mv-contador] { font-variant-numeric: tabular-nums; }

/* --------------------------------------------------------------------------
   6 · Marquee
   <div class="mv-marquee" data-mv-vel="40"><ul>…</ul></div>
   El JS duplica la pista para el loop. --mv-vel en px/s (data-mv-vel).
   Con movimiento reducido no corre: queda una tira desplazable a mano.
   -------------------------------------------------------------------------- */
.mv-marquee {
  overflow: hidden;
  display: flex;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.mv-marquee > * {
  display: flex;
  flex: none;
  gap: var(--mv-marquee-gap, 3rem);
  padding-right: var(--mv-marquee-gap, 3rem);
  margin: 0;
  list-style: none;
  animation: mv-marquee var(--mv-marquee-dur, 30s) linear infinite;
}
.mv-marquee:hover > *,
.mv-marquee:focus-within > * { animation-play-state: paused; }
@keyframes mv-marquee {
  to { transform: translate3d(-100%, 0, 0); }
}

/* --------------------------------------------------------------------------
   Movimiento reducido: todo quieto y completo. Es la promesa del presupuesto
   de movimiento (animacion-escenica.md, sección 6) y no se negocia.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html.mv-js [data-mv],
  html.mv-js [data-mv-escena],
  html.mv-js .mv-tapa .mv-tapa__linea {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }
  .mv-deriva { display: none; }
  .mv-marquee { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
  .mv-marquee > * { animation: none; }
  .mv-marquee > * + * { display: none; }   /* sin loop, no hace falta el duplicado */
}
