/* ═══════════════════════════════════════════════════════════════════════════
   adelys.app — hoja única del sitio comercial (rediseño 2026-09-03).
   Hereda la identidad del producto: isotipo real (nodo esmeralda #1D9E75 sobre
   tinta #0B241B), Geist autoalojada, verde profundo del riel del CRM. Sin
   frameworks, sin dependencias, sin build. Todo el movimiento es transform/
   opacity y respeta prefers-reduced-motion.
   ═══════════════════════════════════════════════════════════════════════════ */

@font-face {
  font-family: 'Geist';
  src: url('fonts/Geist-Variable.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --esmeralda: #1D9E75;
  --esmeralda-2: #12805D;
  --menta: #2CC48F;
  --menta-clara: #7EE2BC;
  --tinte: #CCFBF1;
  --tinta-marca: #0B241B;
  --fondo: #07110D;
  --fondo-2: #0B1512;
  --superficie-oscura: #0F221B;
  --superficie-oscura-2: #143026;
  --linea-oscura: rgba(204, 251, 241, .12);
  --canvas: #F5F8F6;
  --superficie: #FFFFFF;
  --tinta: #0F1D18;
  --tinta-2: #46605A;
  --tinta-3: #86A099;
  --linea: #E1EAE6;
  --ambar: #F59E0B;
  --rojo: #EF4444;
  --azul-yappy: #0B5FB0;
  --radio: 12px;
  --radio-g: 16px;
  --ancho: 1160px;
  --fuente: 'Geist', Inter, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mov: 180ms;
  --sombra: 0 24px 60px rgba(7, 17, 13, .45);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0; font-family: var(--fuente); color: var(--tinta); background: var(--canvas);
  line-height: 1.6; font-size: 16.5px; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--esmeralda-2); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; }
:focus-visible { outline: 2px solid var(--menta); outline-offset: 3px; border-radius: 6px; }
.contenedor { max-width: var(--ancho); margin: 0 auto; padding: 0 24px; }
.solo-lectores { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ── Cabecera ──────────────────────────────────────────────────────────────── */
.cabecera {
  position: sticky; top: 0; z-index: 50;
  background: rgba(7, 17, 13, .72); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--linea-oscura);
}
.cabecera .contenedor { display: flex; align-items: center; gap: 28px; height: 68px; }
.marca { display: flex; align-items: center; gap: 10px; color: #fff; font-weight: 700; font-size: 21px; letter-spacing: -.02em; }
.marca:hover { text-decoration: none; }
.marca svg { width: 34px; height: 34px; flex: none; }
.marca small { font-weight: 600; font-size: 11px; letter-spacing: .28em; color: var(--menta); margin-left: 2px; margin-top: 3px; }
.nav { display: flex; gap: 6px; margin-left: auto; align-items: center; }
.nav a { color: #B9D6CB; font-size: 14.5px; font-weight: 500; padding: 8px 12px; border-radius: 8px; transition: color var(--mov), background var(--mov); }
.nav a:hover { color: #fff; text-decoration: none; background: rgba(255,255,255,.06); }
.nav a.activo { color: #fff; }
.nav .boton { margin-left: 8px; }
.nav-toggle { display: none; margin-left: auto; background: none; border: 0; color: #fff; font-size: 26px; cursor: pointer; line-height: 1; padding: 6px; }

/* ── Botones ───────────────────────────────────────────────────────────────── */
.boton {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; position: relative; overflow: hidden;
  background: linear-gradient(135deg, var(--esmeralda) 0%, var(--esmeralda-2) 100%); color: #fff !important; font-weight: 700;
  padding: 12px 22px; border-radius: 10px; border: 0; cursor: pointer; font-size: 15px; line-height: 1.2;
  transition: transform var(--mov) ease, box-shadow var(--mov) ease, filter var(--mov) ease; white-space: nowrap;
}
.boton::after { content: ''; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.28) 50%, transparent 70%);
  transform: translateX(-120%); transition: transform .6s ease; }
.boton:hover { text-decoration: none; transform: translateY(-1px); box-shadow: 0 10px 28px rgba(29, 158, 117, .38); filter: saturate(1.08); }
.boton:hover::after { transform: translateX(120%); }
.boton:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }
.boton.grande { font-size: 17px; padding: 15px 30px; border-radius: 12px; }
.boton.fantasma { background: rgba(255,255,255,.04); border: 1px solid var(--linea-oscura); color: #D6EFE6 !important; }
.boton.fantasma:hover { background: rgba(255,255,255,.08); box-shadow: none; }
.boton.fantasma::after { display: none; }
.boton.claro-fantasma { background: transparent; border: 1px solid var(--linea); color: var(--esmeralda-2) !important; }
.boton.claro-fantasma:hover { background: var(--tinte); box-shadow: none; border-color: var(--esmeralda); }
.boton.claro-fantasma::after { display: none; }
.boton svg { width: 18px; height: 18px; }

/* ── Fondos ────────────────────────────────────────────────────────────────── */
.oscuro { background: var(--fondo-2); color: #E7F5EF; position: relative; }
.oscuro h1, .oscuro h2, .oscuro h3 { color: #fff; }
.oscuro a:not(.boton) { color: var(--menta); }
.oscuro .entrada, .oscuro .apagado { color: #9DBFB2; }

.aurora { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.aurora i { position: absolute; border-radius: 50%; filter: blur(70px); opacity: .55; will-change: transform; }
.aurora i:nth-child(1) { width: 640px; height: 640px; left: -160px; top: -240px; background: radial-gradient(circle, rgba(29,158,117,.55), transparent 65%); animation: flotar1 18s ease-in-out infinite; }
.aurora i:nth-child(2) { width: 720px; height: 720px; right: -220px; top: -120px; background: radial-gradient(circle, rgba(44,196,143,.32), transparent 65%); animation: flotar2 22s ease-in-out infinite; }
.aurora i:nth-child(3) { width: 520px; height: 520px; left: 35%; bottom: -320px; background: radial-gradient(circle, rgba(18,55,42,.9), transparent 65%); animation: flotar3 26s ease-in-out infinite; }
@keyframes flotar1 { 0%,100% { transform: translate(0,0) } 50% { transform: translate(60px, 40px) } }
@keyframes flotar2 { 0%,100% { transform: translate(0,0) } 50% { transform: translate(-70px, 50px) } }
@keyframes flotar3 { 0%,100% { transform: translate(0,0) } 50% { transform: translate(40px, -50px) } }
.rejilla-fondo { position: absolute; inset: 0; pointer-events: none;
  background-image: linear-gradient(rgba(204,251,241,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(204,251,241,.05) 1px, transparent 1px);
  background-size: 56px 56px; mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 30%, transparent 75%); -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 30%, transparent 75%); }

/* ── Héroe ─────────────────────────────────────────────────────────────────── */
.heroe { padding: 92px 0 80px; position: relative; }
.heroe .contenedor { position: relative; }
.heroe .cabeza { max-width: 760px; }
.chip { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--linea-oscura); background: rgba(204,251,241,.05);
  border-radius: 999px; padding: 6px 14px 6px 8px; font-size: 13px; color: #B9D6CB; margin-bottom: 22px; }
.chip b { color: var(--menta); font-weight: 700; }
.chip .punto { width: 8px; height: 8px; border-radius: 50%; background: var(--menta); box-shadow: 0 0 0 0 rgba(44,196,143,.6); animation: latido 2.2s infinite; margin-left: 4px; }
@keyframes latido { 0% { box-shadow: 0 0 0 0 rgba(44,196,143,.55) } 70% { box-shadow: 0 0 0 10px rgba(44,196,143,0) } 100% { box-shadow: 0 0 0 0 rgba(44,196,143,0) } }
.heroe h1 { font-size: clamp(38px, 6vw, 68px); line-height: 1.02; letter-spacing: -.035em; font-weight: 800; margin: 0 0 20px; max-width: 15ch; }
.heroe h1 .brillo { background: linear-gradient(90deg, var(--menta-clara), var(--menta) 45%, var(--esmeralda)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.heroe p.sub { font-size: clamp(17px, 2vw, 21px); max-width: 54ch; margin: 0 0 30px; color: #B9D6CB; }
.heroe .acciones { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.confianza { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 22px; color: #86A099; font-size: 13.5px; }
.confianza span::before { content: '✓'; color: var(--menta); font-weight: 800; margin-right: 6px; }
.nota-residencia { margin: 0 0 22px; font-size: 13px; line-height: 1.5; color: #86A099; max-width: 56ch; }
.nota-residencia a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }

/* la ventana del producto (mock vivo) */
.ventana { margin-top: 60px; border: 1px solid var(--linea-oscura); border-radius: var(--radio-g); overflow: hidden;
  background: var(--superficie-oscura); box-shadow: var(--sombra); position: relative; transform-style: preserve-3d; }
.ventana .barra { display: flex; align-items: center; gap: 6px; padding: 11px 16px; border-bottom: 1px solid var(--linea-oscura); background: rgba(0,0,0,.18); }
.ventana .barra i { width: 10px; height: 10px; border-radius: 50%; background: rgba(255,255,255,.16); }
.ventana .barra span { margin-left: 12px; font-size: 12px; color: #86A099; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.ventana .cuerpo { display: grid; grid-template-columns: 200px 1fr; min-height: 380px; }
.riel { background: linear-gradient(180deg, #19583f 0%, #0d3d2b 55%, #062318 100%); padding: 18px 14px; display: flex; flex-direction: column; gap: 4px; }
.riel .cab { display: flex; align-items: center; gap: 8px; color: #fff; font-weight: 700; font-size: 15px; padding: 4px 8px 14px; }
.riel .cab svg { width: 22px; height: 22px; }
.riel a, .riel span.it { display: flex; align-items: center; gap: 9px; color: #B9D6CB; font-size: 12.5px; padding: 7px 10px; border-radius: 8px; }
.riel .it i { width: 6px; height: 6px; border-radius: 50%; background: #5F8B7A; flex: none; }
.riel .it.activo { background: rgba(255,255,255,.1); color: #fff; }
.riel .it.activo i { background: var(--menta); box-shadow: 0 0 10px var(--menta); }
.escena { padding: 22px; position: relative; }
.escena .titulo { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.escena .titulo b { color: #fff; font-size: 15px; }
.escena .titulo span { font-size: 12px; color: #86A099; }
.flujo { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; position: relative; }
.flujo::before { content: ''; position: absolute; left: 12%; right: 12%; top: 26px; height: 2px; background: rgba(204,251,241,.12); }
.flujo .paso { position: relative; background: rgba(0,0,0,.18); border: 1px solid var(--linea-oscura); border-radius: 12px; padding: 40px 14px 14px; transition: border-color .4s, transform .4s, background .4s; }
.flujo .paso .num { position: absolute; top: 14px; left: 14px; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 800;
  background: rgba(204,251,241,.08); color: #9DBFB2; border: 1px solid var(--linea-oscura); transition: all .4s; }
.flujo .paso b { display: block; color: #fff; font-size: 13.5px; margin-bottom: 3px; }
.flujo .paso span { font-size: 12px; color: #86A099; display: block; line-height: 1.4; }
.flujo .paso .estado { display: inline-block; margin-top: 8px; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; background: rgba(204,251,241,.06); color: #86A099; }
.flujo .paso.hecho { border-color: rgba(44,196,143,.45); }
.flujo .paso.hecho .num { background: var(--esmeralda); color: #fff; border-color: var(--esmeralda); }
.flujo .paso.hecho .estado { background: rgba(44,196,143,.14); color: var(--menta-clara); }
.flujo .paso.activo { border-color: var(--menta); transform: translateY(-4px); background: rgba(44,196,143,.06); box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.flujo .paso.activo .num { background: var(--menta); color: var(--tinta-marca); border-color: var(--menta); }
.flujo .paso.activo .estado { background: rgba(44,196,143,.2); color: #fff; }
.tarjetas-mock { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 10px; margin-top: 12px; }
.mock { background: rgba(0,0,0,.18); border: 1px solid var(--linea-oscura); border-radius: 12px; padding: 14px; }
.mock small { display: block; font-size: 11.5px; color: #86A099; margin-bottom: 6px; }
.mock b { color: #fff; font-size: 20px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.mock .linea { display: flex; justify-content: space-between; font-size: 12.5px; color: #B9D6CB; padding: 5px 0; border-top: 1px dashed rgba(204,251,241,.1); }
.mock .linea em { font-style: normal; color: var(--menta); }
.mock svg { display: block; width: 100%; height: 44px; margin-top: 8px; }
.mock .grafica { fill: none; stroke: var(--menta); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 400; stroke-dashoffset: 400; }
html.js .visto .mock .grafica, html.js .heroe .mock .grafica { animation: trazar 1.6s .4s ease forwards; }
@keyframes trazar { to { stroke-dashoffset: 0 } }
.mock .area { fill: url(#areaVerde); opacity: 0; animation: aparecer .8s 1.4s ease forwards; }
@keyframes aparecer { to { opacity: 1 } }
.toast { position: absolute; right: 22px; bottom: 22px; background: #fff; color: var(--tinta); border-radius: 12px; padding: 10px 14px 10px 12px;
  display: flex; align-items: center; gap: 10px; font-size: 13px; box-shadow: 0 16px 40px rgba(0,0,0,.4); opacity: 0; transform: translateY(14px);
  transition: opacity .35s, transform .35s; max-width: 300px; }
.toast.ver { opacity: 1; transform: none; }
.toast .ok { width: 26px; height: 26px; border-radius: 50%; background: var(--esmeralda); color: #fff; display: grid; place-items: center; font-weight: 900; flex: none; }
.toast b { display: block; font-size: 13px; }
.toast span { color: var(--tinta-2); font-size: 12px; }

/* ── Cinta de módulos ──────────────────────────────────────────────────────── */
.cinta { overflow: hidden; border-block: 1px solid var(--linea-oscura); background: var(--fondo); padding: 14px 0;
  mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.cinta ul { display: flex; gap: 40px; list-style: none; margin: 0; padding: 0; width: max-content; animation: desfilar 48s linear infinite; }
.cinta li { color: #86A099; font-size: 13.5px; font-weight: 600; letter-spacing: .02em; white-space: nowrap; display: flex; align-items: center; gap: 10px; }
.cinta li::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--esmeralda); }
@keyframes desfilar { to { transform: translateX(-50%) } }

/* ── Secciones ─────────────────────────────────────────────────────────────── */
.seccion { padding: 96px 0; position: relative; }
.seccion.compacta { padding: 64px 0; }
.seccion h2 { font-size: clamp(28px, 3.8vw, 44px); letter-spacing: -.03em; line-height: 1.1; font-weight: 800; margin: 0 0 14px; max-width: 22ch; }
.seccion .entrada { color: var(--tinta-2); max-width: 60ch; font-size: 17.5px; margin: 0 0 40px; }
.etiqueta { display: inline-flex; align-items: center; gap: 8px; text-transform: uppercase; letter-spacing: .14em; font-size: 12px;
  font-weight: 800; color: var(--esmeralda-2); margin-bottom: 14px; }
.etiqueta::before { content: ''; width: 18px; height: 2px; background: currentColor; border-radius: 2px; }
.oscuro .etiqueta { color: var(--menta); }
.centrado { text-align: center; }
.centrado h2, .centrado .entrada, .centrado .etiqueta { margin-inline: auto; }

/* ── Rejillas y tarjetas ───────────────────────────────────────────────────── */
.rejilla { display: grid; gap: 18px; }
.rejilla.dos { grid-template-columns: repeat(2, 1fr); }
.rejilla.tres { grid-template-columns: repeat(3, 1fr); }
.rejilla.cuatro { grid-template-columns: repeat(4, 1fr); }
.tarjeta { background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio-g); padding: 26px; position: relative;
  transition: transform var(--mov) ease, box-shadow var(--mov) ease, border-color var(--mov) ease; }
.tarjeta:hover { transform: translateY(-4px); box-shadow: 0 20px 44px rgba(15, 29, 24, .09); border-color: #CFE3DB; }
a.tarjeta { color: inherit; display: block; }
a.tarjeta:hover { text-decoration: none; }
.tarjeta h3 { margin: 0 0 8px; font-size: 18px; letter-spacing: -.015em; }
.tarjeta p { margin: 0; color: var(--tinta-2); font-size: 15px; }
.tarjeta .icono { width: 44px; height: 44px; border-radius: 12px; background: var(--tinte); color: var(--esmeralda-2);
  display: grid; place-items: center; margin-bottom: 18px; }
.tarjeta .icono svg { width: 22px; height: 22px; }
.tarjeta .flecha { position: absolute; right: 22px; top: 24px; color: var(--tinta-3); transition: transform var(--mov), color var(--mov); }
.tarjeta:hover .flecha { transform: translate(3px, -3px); color: var(--esmeralda); }
.oscuro .tarjeta { background: var(--superficie-oscura); border-color: var(--linea-oscura); }
.oscuro .tarjeta:hover { border-color: rgba(44,196,143,.4); box-shadow: 0 20px 44px rgba(0,0,0,.35); }
.oscuro .tarjeta h3 { color: #fff; }
.oscuro .tarjeta p { color: #9DBFB2; }
.oscuro .tarjeta .icono { background: rgba(44,196,143,.14); color: var(--menta); }

/* ── El problema: siete lugares → uno ──────────────────────────────────────── */
.convergencia { position: relative; height: 320px; margin: 10px 0 0; }
.convergencia .pieza { position: absolute; left: 50%; top: 50%; background: #fff; border: 1px solid var(--linea); border-radius: 10px;
  padding: 9px 14px; font-size: 13.5px; font-weight: 600; color: var(--tinta-2); box-shadow: 0 8px 20px rgba(15,29,24,.07);
  transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) rotate(var(--r)); transition: transform 1.1s cubic-bezier(.2,.8,.2,1), opacity .8s; white-space: nowrap; }
.convergencia .nucleo { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%) scale(.6); opacity: 0; transition: transform .9s .9s cubic-bezier(.2,.8,.2,1), opacity .6s .9s;
  background: var(--tinta-marca); color: #fff; border-radius: 16px; padding: 18px 26px; display: flex; align-items: center; gap: 12px; font-weight: 700; box-shadow: 0 30px 60px rgba(11,36,27,.3); }
.convergencia .nucleo svg { width: 30px; height: 30px; }
.convergencia .nucleo small { display: block; font-weight: 500; color: #9DBFB2; font-size: 12.5px; }
html.js .convergencia.visto .pieza { transform: translate(-50%, -50%) scale(.7); opacity: 0; }
html.js .convergencia.visto .nucleo, html:not(.js) .convergencia .nucleo { transform: translate(-50%, -50%) scale(1); opacity: 1; }
html:not(.js) .convergencia .pieza { opacity: .35; }

/* ── Suites en pestañas ────────────────────────────────────────────────────── */
.suites { display: grid; grid-template-columns: 300px 1fr; gap: 28px; align-items: start; }
.pestanas { display: grid; gap: 6px; }
.pestanas button { text-align: left; background: transparent; border: 1px solid transparent; color: #9DBFB2; padding: 12px 14px; border-radius: 12px; cursor: pointer;
  display: grid; grid-template-columns: 34px 1fr; gap: 12px; align-items: center; transition: background var(--mov), color var(--mov), border-color var(--mov); }
.pestanas button:hover { background: rgba(255,255,255,.04); color: #fff; }
.pestanas button[aria-selected="true"] { background: rgba(44,196,143,.1); border-color: rgba(44,196,143,.35); color: #fff; }
.pestanas button b { display: block; font-size: 14.5px; }
.pestanas button span { display: block; font-size: 12px; color: #86A099; }
.pestanas .ic { width: 34px; height: 34px; border-radius: 9px; background: rgba(204,251,241,.08); display: grid; place-items: center; color: var(--menta); }
.pestanas .ic svg { width: 18px; height: 18px; }
.panel-suite { display: none; }
.panel-suite[data-activo] { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: center; animation: entrar .45s ease; }
@keyframes entrar { from { opacity: 0; transform: translateY(10px) } to { opacity: 1; transform: none } }
.panel-suite h3 { font-size: 26px; letter-spacing: -.025em; margin: 0 0 10px; }
.panel-suite p { color: #9DBFB2; margin: 0 0 16px; }
.panel-suite ul { list-style: none; padding: 0; margin: 0 0 18px; display: grid; gap: 8px; }
.panel-suite li { padding-left: 26px; position: relative; font-size: 14.5px; color: #D6EFE6; }
.panel-suite li::before { content: '✓'; position: absolute; left: 0; color: var(--menta); font-weight: 800; }
.desde { display: inline-block; background: rgba(44,196,143,.14); color: var(--menta-clara); font-size: 12.5px; font-weight: 700; padding: 5px 12px; border-radius: 999px; }
.mini { background: var(--superficie-oscura); border: 1px solid var(--linea-oscura); border-radius: 14px; padding: 16px; box-shadow: var(--sombra); }
.mini .cab { display: flex; justify-content: space-between; align-items: center; font-size: 12px; color: #86A099; margin-bottom: 12px; }
.mini .cab b { color: #fff; font-size: 13.5px; }
.mini .fila { display: grid; grid-template-columns: 28px 1fr auto; gap: 10px; align-items: center; padding: 9px 10px; border-radius: 9px; background: rgba(0,0,0,.18); margin-bottom: 6px; font-size: 13px; color: #D6EFE6;
  opacity: 0; transform: translateX(-8px); animation: filaEntra .5s ease forwards; }
.mini .fila:nth-child(2) { animation-delay: .1s } .mini .fila:nth-child(3) { animation-delay: .2s } .mini .fila:nth-child(4) { animation-delay: .3s } .mini .fila:nth-child(5) { animation-delay: .4s }
@keyframes filaEntra { to { opacity: 1; transform: none } }
.mini .av { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 800; color: #fff; background: #2F5D4B; }
.mini .fila small { color: #86A099; display: block; font-size: 11.5px; }
.mini .pill { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; background: rgba(204,251,241,.08); color: #B9D6CB; }
.mini .pill.ok { background: rgba(44,196,143,.16); color: var(--menta-clara); }
.mini .pill.warn { background: rgba(245,158,11,.16); color: #FBBF24; }
.mini .barra-p { height: 6px; border-radius: 3px; background: rgba(204,251,241,.1); overflow: hidden; margin-top: 6px; }
.mini .barra-p i { display: block; height: 100%; background: var(--menta); width: 0; animation: llenar 1.2s .3s ease forwards; }
@keyframes llenar { to { width: var(--w, 60%) } }

/* ── Recorrido (4 pasos) ───────────────────────────────────────────────────── */
.recorrido { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; position: relative; counter-reset: paso; }
.recorrido::before { content: ''; position: absolute; top: 34px; left: 8%; right: 8%; height: 2px; background: linear-gradient(90deg, var(--esmeralda), var(--menta)); transform: scaleX(0); transform-origin: left; transition: transform 1.4s ease .2s; }
html.js .recorrido.visto::before, html:not(.js) .recorrido::before { transform: scaleX(1); }
.recorrido .paso { position: relative; padding-top: 12px; }
.recorrido .paso .num { width: 46px; height: 46px; border-radius: 50%; background: #fff; border: 2px solid var(--esmeralda); color: var(--esmeralda-2); font-weight: 800; display: grid; place-items: center; margin-bottom: 16px; position: relative; z-index: 1;
  transform: scale(.6); opacity: 0; transition: transform .5s cubic-bezier(.2,.8,.2,1), opacity .5s; }
html.js .recorrido.visto .paso .num, html:not(.js) .recorrido .paso .num { transform: none; opacity: 1; }
.recorrido .paso:nth-child(2) .num { transition-delay: .3s } .recorrido .paso:nth-child(3) .num { transition-delay: .6s } .recorrido .paso:nth-child(4) .num { transition-delay: .9s }
.recorrido h3 { font-size: 17px; margin: 0 0 6px; letter-spacing: -.01em; }
.recorrido p { margin: 0; color: var(--tinta-2); font-size: 14.5px; }

/* ── Yappy: teléfono ───────────────────────────────────────────────────────── */
.dividido { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
.telefono { width: 280px; margin: 0 auto; background: #0B1A14; border: 6px solid #1B2F27; border-radius: 38px; padding: 22px 16px; box-shadow: var(--sombra); position: relative; }
.telefono::before { content: ''; position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 90px; height: 18px; border-radius: 10px; background: #1B2F27; }
.telefono .doc { background: #fff; color: var(--tinta); border-radius: 14px; padding: 16px; margin-top: 18px; font-size: 12.5px; }
.telefono .doc b { display: block; font-size: 14px; margin-bottom: 4px; }
.telefono .doc .monto { font-size: 26px; font-weight: 800; letter-spacing: -.02em; margin: 10px 0 4px; }
.telefono .doc small { color: var(--tinta-3); }
.telefono .btn-yappy-mock { margin-top: 14px; background: var(--azul-yappy); color: #fff; border-radius: 10px; padding: 12px; text-align: center; font-weight: 800; letter-spacing: .01em; position: relative; overflow: hidden; }
.telefono .btn-yappy-mock::after { content: ''; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.3) 50%, transparent 70%); transform: translateX(-120%); animation: destello 3.6s 1s infinite; }
@keyframes destello { 0% { transform: translateX(-120%) } 40%, 100% { transform: translateX(120%) } }
.telefono .listo { margin-top: 12px; background: rgba(44,196,143,.16); color: var(--menta-clara); border-radius: 10px; padding: 10px; text-align: center; font-size: 12.5px; font-weight: 700;
  opacity: 0; transform: translateY(6px); transition: opacity .5s 1.6s, transform .5s 1.6s; }
html.js .visto .telefono .listo, html:not(.js) .telefono .listo { opacity: 1; transform: none; }
.cifras { display: flex; gap: 44px; flex-wrap: wrap; margin-top: 26px; }
.cifras .dato b { display: block; font-size: 40px; font-weight: 800; letter-spacing: -.03em; color: var(--menta); line-height: 1; font-variant-numeric: tabular-nums; }
.cifras .dato span { color: #9DBFB2; font-size: 14px; display: block; margin-top: 6px; }

/* ── Listas ────────────────────────────────────────────────────────────────── */
.lista-check { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.lista-check li { padding-left: 34px; position: relative; }
.lista-check li::before { content: '✓'; position: absolute; left: 0; top: 1px; width: 22px; height: 22px; border-radius: 50%; background: var(--tinte); color: var(--esmeralda-2); font-weight: 900; font-size: 13px; display: grid; place-items: center; }
.oscuro .lista-check li::before { background: rgba(44,196,143,.16); color: var(--menta); }

/* ── Precios ───────────────────────────────────────────────────────────────── */
.plan { display: flex; flex-direction: column; }
.plan .precio { font-size: 44px; font-weight: 800; letter-spacing: -.035em; margin: 8px 0 2px; line-height: 1; font-variant-numeric: tabular-nums; }
.plan .precio small { font-size: 15px; color: var(--tinta-3); font-weight: 500; letter-spacing: 0; margin-left: 4px; }
.plan .para { color: var(--tinta-3); font-size: 13.5px; margin: 6px 0 0; }
.plan ul { list-style: none; padding: 0; margin: 20px 0 24px; display: grid; gap: 9px; }
.plan li { padding-left: 26px; position: relative; font-size: 14.5px; color: var(--tinta-2); }
.plan li::before { content: '✓'; position: absolute; left: 0; color: var(--esmeralda); font-weight: 800; }
.plan .boton { margin-top: auto; }
.plan.destacado { border-color: var(--esmeralda); box-shadow: 0 24px 56px rgba(29,158,117,.16); }
.plan.destacado::before { content: ''; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, var(--menta), var(--esmeralda-2)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; }
.cinta-plan { position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: linear-gradient(135deg, var(--esmeralda), var(--esmeralda-2)); color: #fff; font-size: 12px; font-weight: 800; padding: 5px 14px; border-radius: 999px; white-space: nowrap; }
.oscuro .plan .precio { color: #fff; }
.oscuro .plan li { color: #B9D6CB; }
.oscuro .plan li::before { color: var(--menta); }

.calculadora { background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio-g); padding: 28px; }
.calculadora .fila { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.calculadora select { font: inherit; padding: 10px 14px; border: 1px solid var(--linea); border-radius: 10px; background: #fff; }
.calculadora .total { font-size: 34px; font-weight: 800; letter-spacing: -.02em; color: var(--esmeralda-2); margin-left: auto; font-variant-numeric: tabular-nums; }
.stepper { display: inline-flex; align-items: center; border: 1px solid var(--linea); border-radius: 10px; overflow: hidden; background: #fff; }
.stepper button { font: inherit; font-weight: 800; width: 40px; height: 42px; border: 0; background: #fff; cursor: pointer; color: var(--esmeralda-2); transition: background var(--mov); }
.stepper button:hover { background: var(--tinte); }
.stepper button:disabled { color: var(--tinta-3); cursor: not-allowed; background: #fff; }
.stepper output { min-width: 44px; text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }

details { border: 1px solid var(--linea); border-radius: 12px; background: #fff; padding: 0; }
details + details { margin-top: 10px; }
summary { cursor: pointer; font-weight: 700; padding: 16px 20px; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
summary::-webkit-details-marker { display: none; }
summary::after { content: '+'; font-weight: 800; color: var(--esmeralda); font-size: 20px; line-height: 1; transition: transform var(--mov); }
details[open] summary::after { transform: rotate(45deg); }
details p { padding: 0 20px 16px; margin: 0; color: var(--tinta-2); }

/* ── Formulario ────────────────────────────────────────────────────────────── */
.formulario { display: grid; gap: 16px; max-width: 560px; }
.formulario label, .campo-f { font-weight: 650; font-size: 14px; display: grid; gap: 6px; }
.formulario label small, .campo-f small { color: var(--tinta-3); font-weight: 400; }
.formulario input, .formulario select, .formulario textarea, .campo-f input, .campo-f select {
  font: inherit; padding: 12px 14px; border: 1px solid var(--linea); border-radius: 10px; background: #fff; width: 100%; transition: border-color var(--mov), box-shadow var(--mov);
}
.formulario input:focus-visible, .formulario select:focus-visible, .formulario textarea:focus-visible, .campo-f input:focus-visible, .campo-f select:focus-visible {
  outline: none; border-color: var(--esmeralda); box-shadow: 0 0 0 4px rgba(29,158,117,.15);
}
.hueco { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.aviso-ok { background: var(--tinte); border: 1px solid var(--esmeralda); color: var(--tinta-marca); padding: 16px 18px; border-radius: 12px; font-weight: 600; }
.aviso-error { background: #FEF2F2; border: 1px solid var(--rojo); color: #7F1D1D; padding: 16px 18px; border-radius: 12px; }
.aviso-info { background: #FFFBEB; border: 1px solid var(--ambar); color: #78350F; padding: 14px 16px; border-radius: 12px; font-size: 14.5px; }

/* ── Asistente de compra (empezar.html) ────────────────────────────────────── */
.asistente { display: grid; grid-template-columns: 1fr 360px; gap: 32px; align-items: start; }
.pasos { display: flex; gap: 10px; margin: 0 0 28px; padding: 0; list-style: none; counter-reset: p; }
.pasos li { flex: 1; display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 600; color: var(--tinta-3); padding-bottom: 10px; border-bottom: 2px solid var(--linea); transition: color var(--mov), border-color var(--mov); }
.pasos li::before { counter-increment: p; content: counter(p); width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--linea); display: grid; place-items: center; font-size: 12px; flex: none; }
.pasos li.activo { color: var(--tinta); border-color: var(--esmeralda); }
.pasos li.activo::before { background: var(--esmeralda); border-color: var(--esmeralda); color: #fff; }
.pasos li.hecho { color: var(--esmeralda-2); border-color: var(--esmeralda); }
.pasos li.hecho::before { content: '✓'; border-color: var(--esmeralda); color: var(--esmeralda-2); }
.paso-panel { display: none; }
.paso-panel[data-activo] { display: block; animation: entrar .4s ease; }
.opciones-plan { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.opcion { position: relative; border: 1.5px solid var(--linea); border-radius: 14px; padding: 18px; background: #fff; cursor: pointer; transition: border-color var(--mov), box-shadow var(--mov), transform var(--mov); }
.opcion:hover { transform: translateY(-2px); border-color: #CFE3DB; }
.opcion input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.opcion.elegida, .opcion:has(input:checked) { border-color: var(--esmeralda); box-shadow: 0 0 0 4px rgba(29,158,117,.14); }
.opcion h3 { margin: 0; font-size: 17px; }
.opcion .precio { font-size: 30px; font-weight: 800; letter-spacing: -.03em; margin: 6px 0 2px; font-variant-numeric: tabular-nums; }
.opcion .precio small { font-size: 13px; color: var(--tinta-3); font-weight: 500; letter-spacing: 0; }
.opcion p { margin: 0; color: var(--tinta-2); font-size: 13.5px; }
.opcion .marca-rec { position: absolute; top: -11px; right: 14px; background: var(--esmeralda); color: #fff; font-size: 11px; font-weight: 800; padding: 3px 10px; border-radius: 999px; }
.modalidades { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.modalidades .opcion h3 { font-size: 16px; }
.modalidades .opcion .precio { font-size: 26px; }
@media (max-width: 680px) { .modalidades { grid-template-columns: 1fr; } }
.asientos { margin-top: 22px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; background: #fff; border: 1px solid var(--linea); border-radius: 14px; padding: 18px 20px; }
.asientos b { font-size: 15px; }
.asientos small { display: block; color: var(--tinta-3); font-size: 13px; }
.resumen { position: sticky; top: 92px; background: var(--tinta-marca); color: #fff; border-radius: var(--radio-g); padding: 24px; box-shadow: var(--sombra); }
.resumen h3 { margin: 0 0 14px; font-size: 15px; color: #9DBFB2; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; }
.resumen .linea { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-top: 1px solid rgba(204,251,241,.12); font-size: 14.5px; color: #D6EFE6; }
.resumen .linea:first-of-type { border-top: 0; }
.resumen .linea span:last-child { font-variant-numeric: tabular-nums; }
.resumen .total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 8px; padding-top: 14px; border-top: 1px solid rgba(204,251,241,.25); }
.resumen .total b { font-size: 34px; letter-spacing: -.03em; color: var(--menta); font-variant-numeric: tabular-nums; }
.resumen .total b small { font-size: 14px; color: #9DBFB2; font-weight: 500; letter-spacing: 0; }
.resumen .nota { color: #86A099; font-size: 12.5px; margin: 14px 0 0; line-height: 1.5; }
.acciones-paso { display: flex; gap: 12px; margin-top: 26px; flex-wrap: wrap; align-items: center; }
.pago-caja { background: #fff; border: 1px solid var(--linea); border-radius: 14px; padding: 22px; }
.pago-caja h3 { margin: 0 0 6px; font-size: 18px; }
.pago-caja p { color: var(--tinta-2); margin: 0 0 16px; font-size: 14.5px; }
.pago-caja [data-yappy] { min-height: 52px; display: grid; place-items: start; }
.pago-caja btn-yappy { display: block; width: 100%; }
.estado-pago { display: none; padding: 20px 22px; border-radius: 14px; margin-top: 14px; align-items: flex-start; gap: 14px; }
.estado-pago[data-ver] { display: flex; animation: entrar .4s ease; }
.estado-pago .spin { width: 24px; height: 24px; border-radius: 50%; border: 3px solid rgba(29,158,117,.25); border-top-color: var(--esmeralda); animation: girar 1s linear infinite; flex: none; margin-top: 2px; }
@keyframes girar { to { transform: rotate(360deg) } }
.estado-pago.espera { background: #F0FDF9; border: 1px solid #99E6CC; }
.estado-pago.listo { background: var(--tinte); border: 1px solid var(--esmeralda); }
.estado-pago.error { background: #FEF2F2; border: 1px solid var(--rojo); }
.estado-pago.info { background: #FFFBEB; border: 1px solid var(--ambar); }
.estado-pago b { display: block; margin-bottom: 4px; }
.estado-pago p { margin: 0; font-size: 14.5px; color: var(--tinta-2); }
.exito { text-align: center; padding: 30px 20px; }
.exito .sello { width: 84px; height: 84px; border-radius: 50%; background: var(--esmeralda); color: #fff; display: grid; place-items: center; margin: 0 auto 18px; font-size: 38px; font-weight: 900; box-shadow: 0 16px 40px rgba(29,158,117,.35); animation: sello .6s cubic-bezier(.2,1.4,.4,1); }
@keyframes sello { from { transform: scale(.3); opacity: 0 } to { transform: none; opacity: 1 } }
.exito h2 { margin: 0 auto 10px; }
.exito p { color: var(--tinta-2); max-width: 52ch; margin: 0 auto; }

/* ── Producto: suites en detalle ───────────────────────────────────────────── */
.suite-det { scroll-margin-top: 90px; display: grid; grid-template-columns: 56px 1fr; gap: 20px; padding: 32px 0; border-top: 1px solid var(--linea); }
.suite-det:last-child { border-bottom: 1px solid var(--linea); }
.suite-det .ic { width: 56px; height: 56px; border-radius: 14px; background: var(--tinte); color: var(--esmeralda-2); display: grid; place-items: center; }
.suite-det .ic svg { width: 26px; height: 26px; }
.suite-det h3 { font-size: 23px; letter-spacing: -.02em; margin: 4px 0 10px; }
.suite-det p { margin: 0 0 10px; color: var(--tinta-2); }
.suite-det .modulos { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.suite-det .modulos span { font-size: 12.5px; background: #fff; border: 1px solid var(--linea); border-radius: 999px; padding: 4px 11px; color: var(--tinta-2); }
.suite-det .desde { background: var(--tinte); color: var(--tinta-marca); }

/* ── Seguridad: bloques numerados ──────────────────────────────────────────── */
.bloque { max-width: 780px; margin-bottom: 40px; display: grid; grid-template-columns: 64px 1fr; gap: 18px; }
.bloque .n { font-size: 40px; font-weight: 800; letter-spacing: -.04em; color: var(--esmeralda); line-height: 1; font-variant-numeric: tabular-nums; opacity: .9; }
.bloque h3 { font-size: 21px; letter-spacing: -.015em; margin: 4px 0 10px; }
.bloque p, .bloque li { color: var(--tinta-2); }

/* ── Documento legal ───────────────────────────────────────────────────────── */
.doc { max-width: 780px; }
.doc h2 { font-size: 24px; margin-top: 44px; }
.doc p, .doc li { color: var(--tinta-2); font-size: 15.5px; }

/* ── CTA final ─────────────────────────────────────────────────────────────── */
.cta-final { position: relative; overflow: hidden; }
.cta-final .constelacion { position: absolute; right: -80px; top: -60px; width: 460px; opacity: .12; pointer-events: none; }
.cta-final .constelacion path, .cta-final .constelacion circle { stroke: var(--menta); fill: none; }
.cta-final .constelacion .nodo { fill: var(--menta); stroke: none; }

/* ── Pie ───────────────────────────────────────────────────────────────────── */
.pie { background: var(--fondo); color: #86A099; padding: 56px 0 36px; border-top: 1px solid var(--linea-oscura); font-size: 14px; }
.pie .columnas { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; margin-bottom: 36px; }
.pie h4 { color: #fff; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; margin: 0 0 12px; }
.pie ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.pie a { color: #B9D6CB; }
.pie a:hover { color: #fff; }
.pie .marca { font-size: 19px; margin-bottom: 12px; }
.pie .marca svg { width: 28px; height: 28px; }
.pie .legal { display: flex; gap: 24px; flex-wrap: wrap; justify-content: space-between; border-top: 1px solid var(--linea-oscura); padding-top: 22px; font-size: 13px; }

/* ── Revelado al hacer scroll ──────────────────────────────────────────────── */
html.js .revelar { opacity: 0; transform: translateY(22px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1); transition-delay: calc(var(--i, 0) * 90ms); }
html.js .revelar.visto { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.js .revelar { opacity: 1; transform: none; transition: none; }
  .tarjeta, .boton, .flujo .paso { transition: none; }
  .aurora i, .cinta ul, .chip .punto, .telefono .btn-yappy-mock::after, .boton::after { animation: none !important; }
  .mock .grafica { stroke-dashoffset: 0; animation: none; } .mock .area { opacity: 1; animation: none; }
  .mini .fila { opacity: 1; transform: none; animation: none; } .mini .barra-p i { width: var(--w, 60%); animation: none; }
  .recorrido::before { transform: none; transition: none; } .recorrido .paso .num { transform: none; opacity: 1; transition: none; }
  .convergencia .pieza, .convergencia .nucleo { transition: none; }
  .telefono .listo { transition: none; }
}

/* ── Responsive ────────────────────────────────────────────────────────────── */
@media (max-width: 980px) {
  .rejilla.cuatro { grid-template-columns: repeat(2, 1fr); }
  .rejilla.tres { grid-template-columns: repeat(2, 1fr); }
  .suites { grid-template-columns: 1fr; }
  .pestanas { grid-template-columns: repeat(2, 1fr); }
  .panel-suite[data-activo] { grid-template-columns: 1fr; }
  .recorrido { grid-template-columns: repeat(2, 1fr); }
  .recorrido::before { display: none; }
  .dividido { grid-template-columns: 1fr; }
  .asistente { grid-template-columns: 1fr; }
  .resumen { position: static; }
  .pie .columnas { grid-template-columns: 1fr 1fr; }
  .opciones-plan { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .rejilla.dos, .rejilla.tres, .rejilla.cuatro { grid-template-columns: 1fr; }
  .nav { display: none; position: absolute; top: 68px; left: 0; right: 0; flex-direction: column;
    background: var(--fondo); border-bottom: 1px solid var(--linea-oscura); padding: 18px 24px 22px; gap: 6px; align-items: stretch; }
  .nav.abierta { display: flex; }
  .nav .boton { margin: 8px 0 0; }
  .nav-toggle { display: block; }
  .heroe { padding: 56px 0 56px; }
  .seccion { padding: 64px 0; }
  .ventana .cuerpo { grid-template-columns: 1fr; }
  .riel { display: none; }
  .flujo { grid-template-columns: 1fr 1fr; }
  .flujo::before { display: none; }
  .tarjetas-mock { grid-template-columns: 1fr; }
  .toast { display: none; }
  .convergencia { height: 260px; }
  .convergencia .pieza { font-size: 12px; padding: 7px 10px; }
  .pestanas { grid-template-columns: 1fr; }
  .recorrido { grid-template-columns: 1fr; }
  .cifras { gap: 24px; }
  .pasos li span { display: none; }
  .pie .columnas { grid-template-columns: 1fr; }
  .bloque { grid-template-columns: 1fr; gap: 6px; }
  .suite-det { grid-template-columns: 1fr; }
  .calculadora .total { margin-left: 0; }
}

/* ── Funciones: reproductor de flujos reales ───────────────────────────────── */
.subnav { position: sticky; top: 68px; z-index: 40; background: rgba(245,248,246,.9); backdrop-filter: blur(10px); border-bottom: 1px solid var(--linea); }
.subnav .contenedor { display: flex; gap: 6px; overflow-x: auto; padding-top: 10px; padding-bottom: 10px; scrollbar-width: none; }
.subnav a { flex: none; font-size: 13.5px; font-weight: 600; color: var(--tinta-2); padding: 7px 14px; border-radius: 999px; border: 1px solid transparent; }
.subnav a:hover { background: #fff; border-color: var(--linea); text-decoration: none; color: var(--tinta); }
.reemplaza { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.reemplaza div { background: var(--superficie); border: 1px solid var(--linea); border-radius: 12px; padding: 14px 16px; font-size: 13.5px; }
.reemplaza s { color: var(--tinta-3); display: block; text-decoration-color: var(--rojo); text-decoration-thickness: 2px; }
.reemplaza b { color: var(--esmeralda-2); display: block; margin-top: 4px; }
.player { position: relative; border-radius: 14px; overflow: hidden; background: #0F221B; border: 1px solid var(--linea-oscura); box-shadow: var(--sombra); }
.player .barra { display: flex; align-items: center; gap: 6px; padding: 9px 14px; background: #0B1A14; border-bottom: 1px solid var(--linea-oscura); }
.player .barra i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,.16); }
.player .barra span { margin-left: 10px; font-size: 11.5px; color: #86A099; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.player .escenario { position: relative; aspect-ratio: 16 / 10; background: #F5F8F6; overflow: hidden; }
.player .cuadro { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .45s ease; }
.player .cuadro.activo { opacity: 1; }
.player .cursor { position: absolute; left: 50%; top: 50%; width: 22px; height: 26px; margin: -2px 0 0 -2px; opacity: 0; transition: left .8s cubic-bezier(.3,.7,.3,1), top .8s cubic-bezier(.3,.7,.3,1), opacity .3s; pointer-events: none; z-index: 3; filter: drop-shadow(0 2px 3px rgba(0,0,0,.35)); }
.player .cursor.ver { opacity: 1; }
.player .anillo { position: absolute; width: 44px; height: 44px; margin: -22px 0 0 -22px; border-radius: 50%; border: 3px solid var(--menta); opacity: 0; pointer-events: none; z-index: 2; }
.player .anillo.pulso { animation: pulso .7s ease-out; }
@keyframes pulso { 0% { transform: scale(.3); opacity: .9 } 100% { transform: scale(1.6); opacity: 0 } }
.player .marco-clic { position: absolute; border: 2px solid var(--menta); border-radius: 6px; box-shadow: 0 0 0 4px rgba(44,196,143,.25); opacity: 0; transition: opacity .3s; pointer-events: none; z-index: 2; }
.player .marco-clic.ver { opacity: 1; }
.player .pie { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; padding: 12px 14px; background: #0B1A14; color: #E7F5EF; font-size: 13.5px; min-height: 58px; }
.player .pie .leyenda { line-height: 1.4; }
.player .pie .leyenda b { color: var(--menta); margin-right: 8px; font-variant-numeric: tabular-nums; }
.player .puntos { display: flex; gap: 6px; align-items: center; }
.player .puntos button { width: 22px; height: 8px; border-radius: 4px; border: 0; background: rgba(204,251,241,.18); cursor: pointer; padding: 0; transition: background var(--mov), width var(--mov); }
.player .puntos button[aria-current="true"] { background: var(--menta); width: 30px; }
.player .puntos button:hover { background: rgba(204,251,241,.45); }
.flujo-fila { display: grid; grid-template-columns: 5fr 7fr; gap: 40px; align-items: center; padding: 44px 0; border-top: 1px solid var(--linea); }
.flujo-fila:first-of-type { border-top: 0; }
.flujo-fila.invertida { grid-template-columns: 7fr 5fr; }
.flujo-fila.invertida .texto { order: 2; }
.flujo-fila h3 { font-size: 26px; letter-spacing: -.025em; margin: 0 0 10px; line-height: 1.15; }
.flujo-fila .texto p { color: var(--tinta-2); margin: 0 0 14px; }
.flujo-fila .reglas { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.flujo-fila .reglas li { font-size: 14px; color: var(--tinta-2); padding-left: 24px; position: relative; }
.flujo-fila .reglas li::before { content: '→'; position: absolute; left: 0; color: var(--esmeralda); font-weight: 800; }
.flujo-fila .modulo { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--esmeralda-2); margin-bottom: 10px; }
.motor { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 14px; align-items: center; }
.motor .nodo { background: var(--superficie-oscura); border: 1px solid var(--linea-oscura); border-radius: 14px; padding: 20px; }
.motor .nodo small { display: block; font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--menta); font-weight: 700; margin-bottom: 6px; }
.motor .nodo b { display: block; color: #fff; font-size: 17px; margin-bottom: 6px; }
.motor .nodo p { margin: 0; color: #9DBFB2; font-size: 13.5px; }
.motor .flecha { color: var(--menta); font-size: 28px; font-weight: 300; }
.eventos { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-top: 26px; }
.eventos div { background: rgba(255,255,255,.04); border: 1px solid var(--linea-oscura); border-radius: 10px; padding: 10px 12px; font-size: 13px; color: #D6EFE6; display: flex; justify-content: space-between; gap: 8px; }
.eventos div b { color: var(--menta); font-variant-numeric: tabular-nums; }
.modulos-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.modulos-grid .grupo { background: var(--superficie); border: 1px solid var(--linea); border-radius: 14px; padding: 20px; }
.modulos-grid .grupo h3 { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--esmeralda-2); margin: 0 0 12px; }
.modulos-grid .grupo ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.modulos-grid .grupo li b { display: block; font-size: 14.5px; }
.modulos-grid .grupo li span { display: block; font-size: 13px; color: var(--tinta-2); line-height: 1.45; }
@media (max-width: 980px) { .reemplaza { grid-template-columns: repeat(2, 1fr); } .flujo-fila, .flujo-fila.invertida { grid-template-columns: 1fr; } .flujo-fila.invertida .texto { order: 0; } .motor { grid-template-columns: 1fr; } .motor .flecha { transform: rotate(90deg); text-align: center; } .eventos { grid-template-columns: repeat(3, 1fr); } .modulos-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 680px) { .reemplaza { grid-template-columns: 1fr; } .eventos { grid-template-columns: repeat(2, 1fr); } .modulos-grid { grid-template-columns: 1fr; } .subnav { top: 68px; } .player .pie { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .player .cuadro { transition: none; } .player .cursor { transition: none; } .player .anillo.pulso { animation: none; } }

/* ── Datos de facturación en el asistente (solo pago directo) ──────────────── */
.facturacion { border: 1px solid var(--linea); border-radius: 14px; padding: 16px 18px 18px; margin: 4px 0 0; background: #fff; }
.facturacion[hidden] { display: none; }
.facturacion legend { font-weight: 700; font-size: 14.5px; padding: 0 6px; }
.facturacion legend small { color: var(--tinta-3); font-weight: 400; }
.facturacion .nota-fiscal { margin: 0 0 12px; color: var(--tinta-2); font-size: 13.5px; }

/* Conmutador de periodo de la página de precios (mensual · semestral · anual). */
.conmutador-periodo {
  display: flex; gap: .5rem; justify-content: center; flex-wrap: wrap; margin: 0 auto 1rem;
}
.conmutador-periodo .boton { padding: .5rem 1rem; font-size: .95rem; }
.conmutador-periodo .boton[aria-pressed="true"] {
  background: var(--esmeralda, #1d9e75); color: #fff; border-color: transparent;
}
.nota-periodo {
  margin: .25rem 0 0; font-size: .85rem; color: var(--esmeralda, #1d9e75); font-weight: 600;
}


/* Búsqueda del RUC en el padrón, dentro del asistente de alta. */
.con-boton { display: flex; gap: .4rem; align-items: stretch; }
.con-boton input { flex: 1 1 auto; min-width: 0; }
.con-boton .boton { flex: 0 0 auto; padding: .55rem .9rem; }
.ancho-doble { grid-column: 1 / -1; }
.estado-ruc { margin: .1rem 0 0; font-size: .85rem; color: var(--tinta-3, #667); }
.estado-ruc[data-ok="1"] { color: var(--esmeralda-2, #12805D); font-weight: 600; }
.estado-ruc[data-ok="0"] { color: #b4232a; }

/* ── Precios: comparativo de módulos por plan (generado por scripts/generar-comparativo-precios.mjs) ── */
.comparativo-cifras { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 18px 0 16px; }
.comparativo-cifras .cifra { background: var(--superficie); border: 1px solid var(--linea); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
.comparativo-cifras .cifra b { font-size: 26px; font-weight: 800; letter-spacing: -.03em; color: var(--esmeralda-2); line-height: 1.1; font-variant-numeric: tabular-nums; }
.comparativo-cifras .cifra span { font-size: 12.5px; font-weight: 700; color: var(--tinta-2); letter-spacing: .04em; text-transform: uppercase; }
.comparativo { overflow-x: auto; border: 1px solid var(--linea); border-radius: 14px; background: var(--superficie); box-shadow: var(--sombra); }
.comparativo:focus-visible { outline: 2px solid var(--esmeralda); outline-offset: 2px; }
.comparativo table { width: 100%; border-collapse: collapse; font-size: 14.5px; min-width: 0; }
.comparativo caption { text-align: left; font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--esmeralda-2); padding: 14px 16px 6px; }
.comparativo thead th { background: var(--superficie); text-align: center; font-size: 13px; font-weight: 800; color: var(--tinta); padding: 10px 8px; border-bottom: 2px solid var(--linea); }
.comparativo thead th:first-child { text-align: left; padding-left: 16px; }
.comparativo thead .corto { display: none; }
.comparativo tbody th { text-align: left; font-weight: 500; color: var(--tinta-2); padding: 9px 16px; border-bottom: 1px solid var(--linea); }
.comparativo tbody td { text-align: center; padding: 9px 8px; border-bottom: 1px solid var(--linea); width: 96px; }
.comparativo tbody tr:last-child th, .comparativo tbody tr:last-child td { border-bottom: 0; }
.comparativo tbody tr:not(.grupo):hover th, .comparativo tbody tr:not(.grupo):hover td { background: rgba(29,158,117,.05); }
.comparativo tr.grupo th { background: var(--canvas); color: var(--tinta); font-weight: 800; font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase; padding: 10px 16px; }
.comparativo tr.grupo th small { font-weight: 600; color: var(--tinta-3); text-transform: none; letter-spacing: 0; margin-left: 8px; font-size: 12px; }
.comparativo .si { color: var(--esmeralda); font-weight: 800; font-size: 16px; }
.comparativo .no { color: var(--tinta-3); }
.comparativo-nota { color: var(--tinta-3); font-size: 13.5px; margin: 14px 0 0; max-width: 72ch; }
@media (max-width: 680px) {
  .comparativo-cifras { grid-template-columns: repeat(2, 1fr); }
  .comparativo table { font-size: 13.5px; }
  .comparativo thead th { padding: 8px 4px; font-size: 12px; }
  .comparativo thead .largo { display: none; }
  .comparativo thead .corto { display: inline; }
  .comparativo tbody th { padding: 8px 10px; }
  .comparativo tbody td { width: 44px; padding: 8px 2px; }
  .comparativo tr.grupo th small { display: block; margin: 2px 0 0; }
}
