/* ==========================================================
   EXOBYTE, hoja unica de estilo.
   Sistema visual de la landing: CRM propio + WhatsApp Business API
   instalado y mantenido por Salva Garcia.

   Reglas de la casa:
   . Sin color de acento. Toda la escala es gris pizarra sobre papel.
     Lo unico que sale de la escala es el verde de WhatsApp (#25d366)
     y solo dentro del icono.
   . Movil primero. Todo empieza en una columna y crece con min-width.
   . Un solo fichero para las dos versiones, ES y EN. Aqui no hay
     ni una frase de texto: todo lo que cambia de idioma vive en el HTML.
   . Sin dependencias externas. La tipografia va self-hosted.
   ========================================================== */

/* ---------- Tipografia (Geist, self-hosted) ---------- */
@font-face{font-family:Geist;src:url(../fonts/geist-latin.woff2) format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215}

/* ==========================================================
   1. TOKENS
   ========================================================== */
:root{
  /* Medidas */
  --frame:1280px;
  --wrap:1120px;
  --r:22px;
  --r-sm:14px;
  --r-xs:11px;

  /* Papel y tinta */
  --bg:#f1f2f4;          /* papel */
  --panel:#fff;          /* tarjeta */
  --panel-2:#f7f8f9;     /* tarjeta hundida */
  --line:#e3e5e9;        /* linea fina */
  --line-2:#d3d6dd;      /* linea marcada */

  /* Texto */
  --ink:#23252e;         /* tinta */
  --ink-2:#5a5e6b;       /* texto secundario (AA sobre papel y panel) */
  --ink-3:#666a76;       /* meta, pies de foto (AA sobre papel y panel) */

  /* Gris pizarra del logotipo */
  --slate:#6f7280;       /* uso grafico: iconos, puntos, trazos */
  --slate-tx:#5c5f6c;    /* el mismo gris cuando hace de texto */
  --slate-dk:#4b4e5b;
  --slate-sf:#ecedf1;    /* fondo tenue del gris */

  /* Accion */
  --cta:#23252e;
  --cta-ink:#fff;
  --cta-hover:#0f1116;

  /* WhatsApp, solo dentro del icono */
  --wa:#25d366;

  /* Sombras */
  --sh-sm:0 12px 30px -22px rgba(9,17,40,.45);
  --sh:0 26px 60px -34px rgba(9,17,40,.4);
  --sh-lg:0 40px 90px -44px rgba(9,17,40,.45);

  /* Tipos */
  --f:"Geist","Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --t-hero:clamp(2.35rem,7vw,4.3rem);
  --t-h2:clamp(1.8rem,4.4vw,2.7rem);
  --t-h3:clamp(1.08rem,2.2vw,1.2rem);
  --t-lead:clamp(1.05rem,2.4vw,1.24rem);
  --t-body:1.0625rem;
  --t-sm:1rem;
  --t-xs:.875rem;
  --t-2xs:.78rem;

  /* Ritmo vertical */
  --gap:clamp(1rem,2.5vw,1.5rem);
  --pad-sec:clamp(3.2rem,7vw,5.6rem);
  --pad-card:clamp(1.25rem,3.4vw,1.6rem);

  /* Curvas */
  --ease:cubic-bezier(.2,.7,.3,1);
}

/* ---------- Modo oscuro ---------- */
html[data-theme="dark"]{
  --bg:#0e0f13;
  --panel:#16181e;
  --panel-2:#1b1e25;
  --line:#22242c;
  --line-2:#2e313b;

  --ink:#f2f3f6;
  --ink-2:#a8acb8;
  --ink-3:#8f939f;

  --slate:#9ea2b0;
  --slate-tx:#b3b7c3;
  --slate-dk:#c3c6d0;
  --slate-sf:#1c1f27;

  --cta:#f2f3f6;
  --cta-ink:#14161c;
  --cta-hover:#fff;

  --sh-sm:0 12px 30px -22px rgba(0,0,0,.8);
  --sh:0 26px 60px -34px rgba(0,0,0,.85);
  --sh-lg:0 40px 90px -44px rgba(0,0,0,.9);

  color-scheme:dark;
}

/* ==========================================================
   2. RESET Y BASE
   ========================================================== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
ul,ol{list-style:none}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
[id]{scroll-margin-top:96px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  font-family:var(--f);
  font-size:var(--t-body);
  line-height:1.6;
  color:var(--ink);
  background:#f2f3f6;
  letter-spacing:-.011em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
html[data-theme="dark"] body{background:#070910}

/* Rayado diagonal muy tenue fuera del marco */
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:repeating-linear-gradient(45deg,rgba(10,10,10,.055) 0 1px,transparent 1px 8px);
}
html[data-theme="dark"] body::before{
  background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.045) 0 1px,transparent 1px 8px);
}

img,svg,video{display:block;max-width:100%}
img,video{height:auto}
a{color:inherit;text-decoration:none}
/* El atributo hidden manda por encima de cualquier display de clase */
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}

h1,h2,h3,h4{font-weight:500;letter-spacing:-.05em;line-height:1.08;color:var(--ink);text-wrap:balance}
h1{font-size:var(--t-hero);line-height:1.03}
h2{font-size:var(--t-h2)}
h3{font-size:var(--t-h3);font-weight:600;letter-spacing:-.04em;line-height:1.35}
p{color:var(--ink-2);text-wrap:pretty}
b,strong{font-weight:600;color:var(--ink)}
em{font-style:normal}

/* Foco visible siempre, en los dos temas */
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}
.end :focus-visible,.phone :focus-visible{outline-color:#fff}

/* Salto al contenido */
.skip{
  position:absolute;left:50%;top:-100px;z-index:200;transform:translateX(-50%);
  background:var(--cta);color:var(--cta-ink);padding:.7rem 1.2rem;border-radius:0 0 12px 12px;
  font-size:var(--t-sm);transition:top .18s var(--ease);
}
.skip:focus{top:0}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* ==========================================================
   3. ESQUELETO
   ========================================================== */
.shell{
  position:relative;z-index:1;
  max-width:var(--frame);margin-inline:auto;
  background:var(--bg);border-inline:1px solid var(--line);
}
.wrap{width:min(100% - 2rem,var(--wrap));margin-inline:auto}
@media(min-width:641px){.wrap{width:min(100% - 3rem,var(--wrap))}}

/* Railes de avance pegados al marco */
.rails{position:fixed;inset:0;z-index:2;pointer-events:none;--gut:calc((100vw - var(--frame))/2)}
.rails i{
  position:absolute;top:0;width:2px;height:calc(var(--sp,0)*100%);
  background:linear-gradient(180deg,rgba(111,114,128,.14),var(--ink));
}
.rails i:nth-child(1){left:max(0px,calc(var(--gut) - 1px))}
.rails i:nth-child(2){right:max(0px,calc(var(--gut) - 1px))}

/* Seccion y cabecera de seccion */
.sec{padding:var(--pad-sec) 0;border-top:1px solid var(--line)}
.sec--flush{border-top:0}
.sec--tight{padding-block:clamp(2.4rem,5vw,3.6rem)}
.head{text-align:center;max-width:44rem;margin:0 auto clamp(2rem,4.5vw,3.2rem)}
.head h2{margin-top:1.1rem}
.head p{margin-top:1rem;font-size:var(--t-lead)}

/* Pildora de seccion */
.kick{
  display:inline-flex;align-items:center;gap:.5rem;
  font-size:var(--t-xs);color:var(--ink-2);
  background:var(--panel);border:1px solid var(--line-2);border-radius:999px;
  padding:.35rem .9rem;box-shadow:var(--sh-sm);
}
.kick i{width:7px;height:7px;border-radius:50%;background:var(--slate);flex:none}
.kick svg{width:15px;height:15px;color:var(--slate)}

/* Aparicion al hacer scroll */
.rv{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.rv.in{opacity:1;transform:none}
.rv--d1{transition-delay:.08s}
.rv--d2{transition-delay:.16s}
.rv--d3{transition-delay:.24s}
.rv--d4{transition-delay:.32s}
@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  .rv--d1,.rv--d2,.rv--d3,.rv--d4{transition-delay:0s}
}

/* ==========================================================
   4. MARCA
   El logotipo EXOBYTE es una geometrica finisima con las dos E
   reducidas a tres barras. Se reconstruye con Geist en peso 200 muy
   espaciado y las dos E como SVG: asi no depende de una fuente de pago
   y escala sin perder filo.
   ========================================================== */
.brand{display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap;color:var(--slate-tx)}
.brand svg{flex:none}
.brand .wm__e{width:.62em;height:.735em}
/* El tamano vive en .wm, no en .wm__t: asi las dos E en SVG (height en em)
   escalan a la vez que las letras. */
/* El hueco entre las dos E y las letras tiene que ser EL MISMO que el
   espaciado entre letras, si no el logotipo cojea: la E final se veia
   despegada de la T y la inicial pegada a la X. */
.wm{display:inline-flex;align-items:center;gap:.13em;color:var(--slate-tx);font-size:1.02rem}
.wm__t{font-weight:200;font-size:inherit;letter-spacing:.24em;margin-right:-.24em;line-height:1}
.wm__e{height:.735em;width:.62em;flex:none}   /* alto de mayuscula, no de linea */
.wm__e path{stroke:currentColor;stroke-width:1;fill:none;stroke-linecap:butt;vector-effect:non-scaling-stroke}   /* 1px reales, como el trazo de la Geist 200 */   /* trazo fino, como el peso 200 de las letras */
.brand--big .wm{font-size:1.5rem}
.menu .wm{font-size:1.02rem}

/* ==========================================================
   5. BARRA FLOTANTE EN PILDORA
   ========================================================== */
.nav{
  position:fixed;top:.7rem;left:50%;transform:translateX(-50%);z-index:70;
  width:min(100% - 1.2rem,var(--wrap));
  display:flex;align-items:center;gap:.6rem;
  padding:.45rem .45rem .45rem 1rem;
  border:1px solid var(--line);border-radius:999px;
  background:color-mix(in srgb,var(--panel) 92%,transparent);
  backdrop-filter:blur(14px) saturate(1.6);
  -webkit-backdrop-filter:blur(14px) saturate(1.6);
  transition:background .24s var(--ease),border-color .24s var(--ease),box-shadow .24s var(--ease);
}
.nav.stuck{box-shadow:0 14px 34px -22px rgba(10,10,10,.45)}
.nav .brand{font-weight:600;letter-spacing:-.04em;font-size:1.06rem}
/* La regla vieja forzaba 26x26 a las barras de las dos E, que deben medir
   lo que la altura de mayuscula (12px), no el doble. El tamano lo manda .wm__e. */

.nav__links{display:none}
.nav__go{display:flex;align-items:center;gap:.4rem;margin-left:auto;min-width:0}
/* En movil el CTA de la barra no cabe junto a idioma, tema y hamburguesa.
   Vive dentro del menu y en el boton flotante. */
.nav__go .btn{display:none}

/* Selector de idioma */
.lang{display:flex;align-items:center;gap:.1rem;font-size:var(--t-2xs);color:var(--ink-3)}
.lang a{padding:.28rem .42rem;border-radius:7px;transition:color .16s,background .16s}
.lang a:hover{color:var(--ink);background:var(--slate-sf)}
.lang a.on{color:var(--ink);font-weight:600}
.lang span{opacity:.4;user-select:none}

/* Boton de tema */
.theme{
  width:38px;height:38px;flex:none;display:grid;place-items:center;
  border-radius:999px;cursor:pointer;color:var(--ink-2);
  background:var(--panel);border:1px solid var(--line-2);
  transition:color .16s,border-color .16s;
}
.theme:hover{color:var(--ink);border-color:var(--slate)}
.theme svg{width:17px;height:17px}
.theme .moon{display:none}
html[data-theme="dark"] .theme .moon{display:block}
html[data-theme="dark"] .theme .sun{display:none}

/* Hamburguesa */
.burger{
  display:grid;place-items:center;width:38px;height:38px;flex:none;
  border:0;background:none;color:var(--ink);cursor:pointer;border-radius:999px;
}
.burger svg{width:22px;height:22px}
.burger .x{display:none}
.burger[aria-expanded="true"] .x{display:block}
.burger[aria-expanded="true"] .bars{display:none}

@media(min-width:941px){
  .nav{top:.85rem;padding-left:1.2rem;gap:1rem;background:transparent;border-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
  .nav.stuck{
    background:color-mix(in srgb,var(--panel) 88%,transparent);
    border-color:var(--line);
    backdrop-filter:blur(18px) saturate(1.6);
    -webkit-backdrop-filter:blur(18px) saturate(1.6);
  }
  .nav__links{display:flex;gap:.1rem;margin-inline:auto}
  .nav__links a{
    font-size:.9375rem;color:var(--ink-3);padding:.45rem .8rem;border-radius:999px;
    transition:color .16s,background .16s;
  }
  .nav__links a:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}
  .nav__go{margin-left:0}
  .nav__go .btn{display:inline-flex}
  .burger{display:none}
}

/* ---------- Menu del movil ---------- */
.menu{
  position:fixed;inset:0;z-index:65;
  background:var(--panel);
  padding:6rem 1.5rem 2rem;
  display:none;flex-direction:column;gap:1rem;
  overflow-y:auto;overscroll-behavior:contain;
}
.menu.open{display:flex}
.menu > a{font-size:clamp(1.4rem,7vw,1.8rem);font-weight:500;letter-spacing:-.04em;color:var(--ink)}
.menu hr{border:0;border-top:1px solid var(--line);margin:.4rem 0}
.menu .btn{align-self:flex-start;font-size:var(--t-sm);margin-top:.4rem}
/* Los botones del menu mandan sobre el tamano y el color de .menu > a */
.menu .btn--pri{font-size:var(--t-sm);color:var(--cta-ink)}
.menu .btn--gh{font-size:var(--t-sm);color:var(--ink)}
.menu__foot{margin-top:auto;padding-top:1.4rem;font-size:var(--t-xs);color:var(--ink-3)}
@media(min-width:941px){.menu,.menu.open{display:none}}

/* ==========================================================
   6. BOTONES
   ========================================================== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  font-size:.95rem;font-weight:500;line-height:1.2;
  cursor:pointer;border:0;white-space:nowrap;text-align:center;
  padding:.72rem 1.25rem;border-radius:999px;
  transition:background .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease),transform .18s var(--ease);
}
.btn svg{width:17px;height:17px;flex:none}
.btn:active{transform:translateY(1px)}
.btn--pri{background:var(--cta);color:var(--cta-ink);box-shadow:0 14px 28px -18px rgba(15,17,22,.7)}
.btn--pri:hover{background:var(--cta-hover)}
.btn--gh{background:var(--panel);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn--gh:hover{box-shadow:inset 0 0 0 1px var(--slate);color:var(--slate-tx)}
.btn--lg{padding:.92rem 1.7rem;font-size:1.02rem}
.btn--sm{padding:.5rem .95rem;font-size:var(--t-xs)}
@media(prefers-reduced-motion:reduce){.btn:active{transform:none}}

/* ==========================================================
   7. HERO
   ========================================================== */
.hero{position:relative;padding:6.5rem 0 0;overflow:hidden}
.hero::before{
  content:"";position:absolute;left:50%;top:-14%;transform:translateX(-50%);
  width:110%;height:70%;pointer-events:none;
  background:radial-gradient(50% 50% at 50% 50%,rgba(111,114,128,.16),transparent 70%);
}
.hero__g{position:relative;display:grid;grid-template-columns:1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
.hero h1{margin:1.1rem 0 0}
.hero h1 em{color:var(--slate-tx)}
.hero__sub{font-size:var(--t-lead);margin-top:1.1rem;max-width:36ch}
.hero__cta{display:flex;gap:.7rem;margin-top:1.7rem;flex-wrap:wrap}
.hero__note{font-size:var(--t-xs);color:var(--ink-3);margin-top:.9rem}

/* Tira de garantias cortas bajo el CTA */
.trust{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.5rem}
.trust li{
  font-size:var(--t-xs);color:var(--ink-2);
  background:var(--panel);border:1px solid var(--line);border-radius:999px;
  padding:.32rem .8rem;display:flex;align-items:center;gap:.4rem;
}
.trust li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--slate);flex:none}

@media(min-width:901px){
  /* align-items:start, si no la columna de texto se centra contra el
     stage del movil y deja 150px muertos encima del titular. */
  .hero{padding-top:7rem}
  .hero__g{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start}
}

/* ---------- Maqueta de movil ----------
   El hueco de arriba y de abajo es donde viven las dos tarjetas de
   datos: puestas a los lados no caben y tapan la conversacion. */
.stage{position:relative;display:grid;place-items:center;padding:2rem 0}
.phone{
  width:min(100%,320px);border-radius:34px;padding:9px;
  background:linear-gradient(160deg,#20242c,#0d0f13);
  box-shadow:0 40px 80px -40px rgba(9,17,40,.75);
}
/* 560px, no 520: con el texto del hilo a 13px (lo minimo legible en
   movil) la conversacion entera no cabia y la etiqueta del dia se
   quedaba fuera de vista. */
.phone__scr{
  position:relative;border-radius:26px;overflow:hidden;
  background:#0b141a;height:560px;display:flex;flex-direction:column;
}

/* Cabecera del hilo */
.wa__top{display:flex;align-items:center;gap:.6rem;background:#202c33;padding:.7rem .8rem;color:#e9edef;flex:none}
.wa__ava{width:28px;height:28px;border-radius:50%;background:#3b4a54;display:grid;place-items:center;flex:none}
.wa__ava svg{width:16px;height:16px;color:#aebac1}
.wa__who b{display:block;font-size:.82rem;font-weight:600;letter-spacing:-.02em;color:#e9edef}
.wa__who span{font-size:.68rem;color:#8696a0}

/* Cuerpo del hilo */
/* El hilo se apoya abajo, como en WhatsApp de verdad: asi no queda un
   hueco muerto bajo la cabecera mientras se escribe la conversacion. */
.wa__body{
  flex:1;padding:.75rem;display:flex;flex-direction:column;justify-content:flex-end;gap:.4rem;overflow:hidden;
  background:#0b141a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cg fill='%23131f28'%3E%3Ccircle cx='13' cy='15' r='2'/%3E%3Ccircle cx='47' cy='40' r='2'/%3E%3Ccircle cx='30' cy='55' r='1.6'/%3E%3C/g%3E%3C/svg%3E");
}
/* Lo que aun no ha entrado no ocupa alto: si no, el hilo desborda los
   520px de pantalla y la etiqueta del dia sale cortada bajo la cabecera. */
.msg{
  display:none;
  max-width:84%;padding:.44rem .62rem;border-radius:9px;
  font-size:.8125rem;line-height:1.45;
}
.msg.in{display:block;animation:entra .35s var(--ease) both}
@keyframes entra{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.msg--them{background:#202c33;color:#e9edef;align-self:flex-start;border-top-left-radius:2px}
.msg--me{background:#005c4b;color:#e9edef;align-self:flex-end;border-top-right-radius:2px}
.msg b{color:#fff}
.msg time{display:block;text-align:right;font-size:.75rem;color:rgba(233,237,239,.72);margin-top:.12rem}
.wa__day{
  display:none;align-self:center;font-size:.75rem;color:#a9b7c0;background:#182229;
  padding:.2rem .6rem;border-radius:6px;
}
.wa__day.in{display:block;animation:entra .35s var(--ease) both}
.wa__bar{flex:none;display:flex;align-items:center;gap:.5rem;background:#202c33;padding:.5rem .7rem}
/* El gris de WhatsApp en su barra es #8696a0 y se queda en 3,9:1.
   Se sube a #96a5ae para pasar AA sin perder el parecido. */
.wa__field{flex:1;background:#2a3942;border-radius:999px;padding:.35rem .8rem;font-size:.8125rem;color:#96a5ae}
.wa__send{width:26px;height:26px;border-radius:50%;background:#00a884;display:grid;place-items:center;flex:none}
.wa__send svg{width:13px;height:13px;color:#0b141a}
@media(prefers-reduced-motion:reduce){.msg.in,.wa__day.in{animation:none}}
/* El bisel del movil se funde con el fondo oscuro si no se aclara */
html[data-theme="dark"] .phone{
  background:linear-gradient(160deg,#2c313b,#191c23);
  box-shadow:0 0 0 1px var(--line-2),0 40px 80px -40px #000;
}

/* Tarjetas de datos flotantes */
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:.85rem 1rem;box-shadow:var(--sh);width:100%;margin-top:.8rem;
}
.card b{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);font-weight:600;margin-bottom:.5rem}
.card ul{display:grid;gap:.3rem}
.card li{display:flex;justify-content:space-between;gap:.6rem;font-size:.8rem;color:var(--ink-2)}
.card li span{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.card li.hot span{color:var(--slate-tx)}
.card small{display:block;font-size:.8125rem;color:var(--ink-3)}

/* A partir de 521px las tarjetas se despegan y flotan sobre el movil */
@media(min-width:521px){
  /* El hueco de abajo tiene que dar para el pie "Ejemplo" y ademas para
     la tarjeta flotante, que va pegada al borde inferior del stage. */
  .stage{padding-top:7rem;padding-bottom:4.5rem}
  .card{position:absolute;width:210px;margin-top:0}
  .card--top{top:0;right:0;width:206px}
  .card--bot{bottom:7.2rem;left:0;width:192px;z-index:3}   /* pegada al borde del movil, no colgando debajo */
}
@media(min-width:1081px){
  .stage{padding-top:7.5rem;padding-bottom:5rem}
  .card--top{right:-2%}
  .card--bot{left:-4%}
}

/* ==========================================================
   8. TIRA DE SECTORES
   ========================================================== */
.strip{border-top:1px solid var(--line);text-align:center}
.strip p{font-size:var(--t-xs);color:var(--ink-3);padding:1.3rem 0 0}
.strip__g{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid var(--line);margin-top:1.1rem;
}
.strip__g span{
  display:flex;align-items:center;justify-content:center;gap:.5rem;
  padding:1rem .4rem;font-size:.9rem;color:var(--ink-2);
  border-left:1px solid var(--line);border-top:1px solid var(--line);
}
.strip__g svg{width:18px;height:18px;color:var(--ink-3);flex:none}
@media(min-width:521px){.strip__g{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:861px){
  .strip__g{grid-template-columns:repeat(6,minmax(0,1fr))}
  .strip__g span{border-top:0;font-size:.92rem}
  .strip__g span:first-child{border-left:0}
}

/* ==========================================================
   9. REJILLA DE 4 TARJETAS DE DOLOR
   ========================================================== */
.pain{
  display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--line);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;
}
.pain li{background:var(--panel);padding:var(--pad-card)}
.pain__ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--slate-sf);color:var(--slate-tx);margin-bottom:.8rem}
.pain__ico svg{width:18px;height:18px}
.pain b{display:block;font-size:1.02rem;font-weight:600;letter-spacing:-.03em;margin-bottom:.35rem}
/* OJO: la cajita del icono tambien es un span. Sin el :not, esta regla
   (0,1,1) le ganaba a .pain__ico (0,1,0), le quitaba el display:grid y el
   icono se iba a la esquina de arriba. */
.pain li > span:not(.pain__ico){display:block;font-size:var(--t-sm);color:var(--ink-2)}
.pain__sum{text-align:center;margin-top:1.6rem;font-size:var(--t-lead)}
@media(min-width:761px){.pain{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ==========================================================
   10. REJILLA DE 6 MODULOS
   ========================================================== */
.mods{
  display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--line);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;
}
.mod{background:var(--panel);padding:var(--pad-card)}
.mod__ico{
  width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  background:var(--slate-sf);color:var(--slate-tx);margin-bottom:.9rem;
}
.mod__ico svg{width:20px;height:20px}
.mod h3{font-size:1.05rem}
.mod p{font-size:var(--t-sm);margin-top:.4rem}
/* Ejemplo etiquetado como ejemplo, nunca como cliente real */
.mod__ex{
  display:block;margin-top:.8rem;font-size:.82rem;color:var(--ink-3);
  border-left:2px solid var(--line-2);padding-left:.7rem;font-style:italic;
}
@media(min-width:601px){.mods{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:941px){.mods{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ==========================================================
   11. COMPARATIVA A DOS COLUMNAS
   ========================================================== */
.vs{
  display:grid;grid-template-columns:1fr;
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--panel);
}
.vs__c{padding:clamp(1.4rem,3vw,2.1rem)}
.vs__c--a{background:color-mix(in srgb,var(--ink) 3%,var(--panel))}
.vs__hd{
  display:inline-block;font-size:var(--t-sm);color:var(--ink-2);
  border:1px solid var(--line-2);border-radius:999px;padding:.32rem .8rem;margin-bottom:1.1rem;
}
.vs__c--b .vs__hd{color:var(--slate-tx);border-color:color-mix(in srgb,var(--slate) 40%,transparent);background:var(--slate-sf)}
.vs ul{display:grid;gap:.8rem}
.vs li{position:relative;padding-left:1.8rem;font-size:var(--t-sm);color:var(--ink-2)}
.vs li::before{content:"";position:absolute;left:0;top:.2rem;width:19px;height:19px;border-radius:50%;background:color-mix(in srgb,var(--ink) 7%,transparent)}
/* Columna A: guion (lo que hay hoy) */
.vs__c--a li::after{content:"";position:absolute;left:5.5px;top:.55rem;width:8px;height:2px;border-radius:2px;background:var(--ink-3)}
/* Columna B: check (lo que hace EXOBYTE) */
.vs__c--b li{color:var(--ink)}
.vs__c--b li::before{background:var(--slate-sf)}
.vs__c--b li::after{content:"";position:absolute;left:6px;top:.4rem;width:4px;height:8px;border:solid var(--slate-tx);border-width:0 2px 2px 0;transform:rotate(42deg)}
.vs__mid{
  height:44px;display:grid;place-items:center;color:var(--slate-tx);
  border-block:1px solid var(--line);transform:rotate(90deg);
}
.vs__mid svg{width:20px;height:20px}
@media(min-width:861px){
  .vs{grid-template-columns:1fr auto 1fr}
  .vs__mid{width:52px;height:auto;border-block:0;border-inline:1px solid var(--line);transform:none}
}

/* ==========================================================
   12. ACORDEON DE 4 PASOS CON MOVIL AL LADO
   ========================================================== */
.how{
  display:grid;grid-template-columns:1fr;
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--panel);
}
/* Los cuatro pasos se leen a la vez: el boton solo elige que trozo del
   hilo se ve en el movil de al lado, no abre ni cierra texto. */
.steps{display:flex;flex-direction:column}
.steps__list{display:grid;align-content:start}
.step{border-bottom:1px solid var(--line);transition:background .2s var(--ease)}
.step:last-child{border-bottom:0}
.step.on{background:var(--bg)}
.step__hd{
  display:flex;align-items:center;gap:.75rem;width:100%;text-align:left;
  padding:1.15rem 1.25rem .3rem;cursor:pointer;
  background:none;border:0;
  font-size:1.02rem;font-weight:500;letter-spacing:-.03em;line-height:1.25;color:var(--ink);
}
.step__hd i{
  width:25px;height:25px;border-radius:50%;display:grid;place-items:center;flex:none;
  font-style:normal;font-size:.72rem;background:var(--bg);color:var(--ink-3);
  box-shadow:inset 0 0 0 1px var(--line-2);
}
.step.on .step__hd i{background:var(--cta);color:var(--cta-ink);box-shadow:none}
.step__bd{padding:0 1.25rem 1.1rem 3.6rem}
.step__bd p{font-size:var(--t-sm)}
.step__meta{margin-top:.3rem;font-size:.82rem;color:var(--ink-3)}
/* Barra de avance del paso activo */
.step__bar{height:2px;background:var(--line-2);border-radius:2px;overflow:hidden;display:none;margin:0 1.25rem 1rem 3.6rem}
.step.on .step__bar{display:block}
.step.on .step__bar i{
  display:block;height:100%;width:0;background:var(--ink);
  animation:go 5.4s linear forwards;
}
.steps__foot{margin-top:auto;padding:.9rem 1.25rem;border-top:1px solid var(--line)}
.steps__pause{
  background:none;border:1px solid var(--line-2);border-radius:999px;cursor:pointer;
  padding:.45rem 1rem;font-size:var(--t-xs);color:var(--ink-2);
}
.steps__pause:hover{color:var(--ink);border-color:var(--slate)}
@keyframes go{to{width:100%}}
@media(prefers-reduced-motion:reduce){
  .step.on .step__bar i{animation:none;width:100%}
}
.how__art{
  background:var(--bg);border-top:1px solid var(--line);
  padding:1.5rem;display:grid;place-items:center;
}
.how__art .phone{width:100%;max-width:320px}
.how__art .phone__scr{height:560px}   /* igual que el del hero: a 430px parecia un recorte, no un movil */
@media(min-width:901px){
  .how{grid-template-columns:minmax(0,1fr) 340px}
  .step__hd{padding:1.25rem 1.5rem .3rem}
  .step__bd{padding:0 1.5rem 1.15rem 3.85rem}
  .step__bar{margin:0 1.5rem 1rem 3.85rem}
  .steps__foot{padding:.9rem 1.5rem}
  .how__art{border-top:0;border-left:1px solid var(--line)}
}

/* ==========================================================
   13. REJILLA DE 6 SECTORES
   ========================================================== */
.vert{
  display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--line);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;
}
.vert article{background:var(--panel);padding:var(--pad-card);display:grid;gap:.55rem;align-content:start}
.vert__ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--slate-sf);color:var(--slate-tx)}
.vert__ico svg{width:18px;height:18px}
.vert h3{font-size:1.05rem}
.vert p{font-size:var(--t-sm)}
/* Frase de ejemplo del hilo, en caja hundida y etiquetada como ejemplo */
.vert q{
  display:block;font-size:.86rem;color:var(--ink-2);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-xs);
  padding:.6rem .75rem;quotes:none;
}
.vert q::before,.vert q::after{content:""}
.vert small{font-size:var(--t-2xs);color:var(--ink-3)}
@media(min-width:601px){.vert{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:941px){.vert{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ==========================================================
   14. PIE DE FOTO / ETIQUETA DE EJEMPLO
   ========================================================== */
.demo__cap{
  display:flex;align-items:center;gap:.5rem;justify-content:center;
  font-size:var(--t-xs);color:var(--ink-3);margin-top:.9rem;
}

/* ==========================================================
   15. QUIEN ESTA DETRAS (bloque de autor)
   ========================================================== */
.me{
  display:grid;grid-template-columns:1fr;gap:1.3rem;align-items:center;justify-items:center;text-align:center;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(1.5rem,3vw,2.4rem);
}
.me__av{
  width:120px;height:120px;border-radius:50%;flex:none;
  background:linear-gradient(150deg,#4b4e5b,#8b8f9d);
  display:grid;place-items:center;color:#fff;font-size:2rem;font-weight:600;letter-spacing:-.04em;
  overflow:hidden;
}
.me__av img{width:100%;height:100%;object-fit:cover;display:block}
.me__av picture{display:contents}
.me h3{margin-bottom:.5rem}
.me p + p{margin-top:.7rem}
@media(min-width:641px){
  .me{grid-template-columns:auto minmax(0,1fr);gap:1.6rem;justify-items:start;text-align:left}
}

/* ==========================================================
   16. TRES PASOS DE PROCESO
   ========================================================== */
.plan{
  display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
}
.plan li{background:var(--panel);padding:var(--pad-card);display:grid;gap:.4rem;align-content:start}
.plan b{font-size:1.05rem;font-weight:500;letter-spacing:-.03em;color:var(--ink)}
.plan span{font-size:var(--t-sm);color:var(--ink-2)}
/* Va despues y con dos clases: si no, ".plan span" le gana al numero
   y el 1, 2, 3 sale gris sobre el circulo oscuro. */
.plan .plan__n{
  width:27px;height:27px;border-radius:50%;background:var(--cta);color:var(--cta-ink);
  display:grid;place-items:center;font-size:.8rem;font-weight:600;
}
.plan em{font-size:var(--t-2xs);color:var(--slate-tx);font-weight:600;text-transform:uppercase;letter-spacing:.08em}
@media(min-width:821px){.plan{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ==========================================================
   17. TARJETAS DE GARANTIA
   ========================================================== */
.guar{display:grid;grid-template-columns:1fr;gap:var(--gap)}
.guar article{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:var(--pad-card);display:grid;gap:.5rem;align-content:start;
  box-shadow:var(--sh-sm);
}
.guar__ico{
  width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
  background:var(--slate-sf);color:var(--slate-tx);
}
.guar__ico svg{width:19px;height:19px}
.guar h3{font-size:1.02rem}
.guar p{font-size:var(--t-sm)}
/* Dos columnas siempre: con 3 se quedaban filas huerfanas y un agujero
   de media rejilla. Si el numero de tarjetas es impar, la ultima ocupa
   el ancho entero en vez de dejar hueco. */
@media(min-width:641px){
  .guar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .guar article:last-child:nth-child(odd){grid-column:1 / -1}
}

/* ==========================================================
   18. BANDA DE LLAMADA
   ========================================================== */
.band{
  width:min(100% - 2rem,var(--wrap));margin-inline:auto;
  border:1px solid var(--line);border-radius:18px;background:var(--panel);
}
.band__in{
  display:flex;flex-direction:column;align-items:stretch;text-align:center;
  gap:1.1rem;padding:1.4rem;
}
.band__in b{display:block;font-size:clamp(1.05rem,3.4vw,1.35rem);font-weight:500;letter-spacing:-.04em;color:var(--ink)}
.band__in span{display:block;font-size:var(--t-sm);color:var(--ink-2);margin-top:.25rem}
@media(min-width:641px){.band{width:min(100% - 3rem,var(--wrap))}}
@media(min-width:721px){
  .band__in{flex-direction:row;align-items:center;justify-content:space-between;text-align:left;gap:1.4rem;flex-wrap:wrap;padding:1.5rem}
}

/* ==========================================================
   19. FAQ EN ACORDEON
   ========================================================== */
.faq{
  max-width:46rem;margin-inline:auto;
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--panel);
}
.qa{border-bottom:1px solid var(--line)}
.qa:last-child{border-bottom:0}
.qa summary{
  list-style:none;cursor:pointer;padding:1.05rem 1.2rem;
  font-size:1rem;font-weight:500;color:var(--ink);
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{
  content:"";width:9px;height:9px;flex:none;
  border:solid var(--ink-3);border-width:0 1.6px 1.6px 0;
  transform:rotate(45deg);transition:transform .2s var(--ease);
}
.qa[open] summary::after{transform:rotate(-135deg)}
.qa p{padding:0 1.2rem 1.15rem;font-size:var(--t-sm)}
.qa p + p{padding-top:0;margin-top:-.4rem}
@media(min-width:641px){
  .qa summary{padding:1.1rem 1.4rem}
  .qa p{padding-inline:1.4rem}
}

/* ==========================================================
   20. CIERRE EN BANDA OSCURA
   ========================================================== */
.end{
  position:relative;overflow:hidden;
  background:linear-gradient(140deg,#2f323d,#23252e 55%,#15171d);
  border-radius:var(--r);
  width:min(100% - 2rem,var(--frame));
  margin:clamp(2.6rem,6vw,4.5rem) auto;
  padding:clamp(2.4rem,6vw,4.4rem) 0;
  text-align:center;color:#fff;
}
/* En oscuro la banda casi iguala al fondo: se le pone borde y las
   tarjetas de dentro bajan un tono para que el bloque siga destacando. */
html[data-theme="dark"] .end{background:linear-gradient(140deg,#1b1e26,#16181e 55%,#0f1116);border:1px solid var(--line-2)}
html[data-theme="dark"] .end .plan{background:var(--line-2)}
html[data-theme="dark"] .end .plan li{background:#0d0f14}
.end::after{
  content:"";position:absolute;right:-26%;top:-40%;width:52%;height:190%;
  background:rgba(255,255,255,.06);border-left:1px solid rgba(255,255,255,.16);
  transform:rotate(16deg);pointer-events:none;
}
.end .wrap{position:relative;z-index:1}
.end h2{color:#fff}
.end p{color:rgba(255,255,255,.88);margin-top:1rem;font-size:var(--t-lead)}
.end .hero__cta{justify-content:center}
.end .btn--pri{background:#fff;color:#15171d;box-shadow:0 18px 40px -20px rgba(0,0,0,.5)}
.end .btn--pri:hover{background:#e9eaee}
.end .btn--gh{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}
.end .btn--gh:hover{box-shadow:inset 0 0 0 1px #fff;color:#fff}
.end .kick{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.28);color:#fff;box-shadow:none}
.end .kick i{background:#fff}
/* El cierre centra su cabecera, pero las tarjetas se leen igual que en
   el resto de la pagina: alineadas a la izquierda, con la bolita delante. */
.end .plan li{text-align:left}
.end small{display:block;margin-top:1rem;font-size:var(--t-xs);color:rgba(255,255,255,.85)}
@media(min-width:641px){.end{width:min(100% - 3rem,var(--frame))}}

/* ==========================================================
   21. PIE A 4 COLUMNAS CON MARCA DE AGUA
   ========================================================== */
.foot{border-top:1px solid var(--line);padding:2.6rem 0 0}
.foot__g{
  display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;
  padding-bottom:2rem;border-bottom:1px solid var(--line);
}
.foot__g > div:first-child{grid-column:1 / -1}
.foot p{font-size:.9rem;margin-top:.9rem;max-width:34ch}
.foot__h{font-size:.86rem;font-weight:600;margin-bottom:.8rem;color:var(--ink)}
.foot nav{display:grid;gap:.5rem}
.foot nav a{font-size:.88rem;color:var(--ink-3);transition:color .16s}
.foot nav a:hover{color:var(--ink)}
.foot__end{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem;
  padding:1.2rem 0;font-size:.8rem;color:var(--ink-3);
}
.foot__end nav{display:flex;gap:1rem}
/* Marca de agua: EXOBYTE en hueco, recortado por el marco.
   Mismo peso y mismo espaciado que el logotipo, para que la marca se
   escriba de una sola forma en toda la pagina. */
.mark{
  display:block;text-align:center;overflow:hidden;
  font-size:min(13vw,7rem);line-height:.95;font-weight:200;letter-spacing:.24em;
  color:transparent;-webkit-text-stroke:1px var(--line-2);
  white-space:nowrap;user-select:none;opacity:.6;padding-bottom:1.2rem;
}
@media(min-width:821px){
  .foot__g{grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:2rem;padding-bottom:2.2rem}
  .foot__g > div:first-child{grid-column:auto}
}

/* ==========================================================
   22. BOTON FLOTANTE DE WHATSAPP
   El verde solo aparece dentro del icono, nunca en el fondo.
   ========================================================== */
.wafab{
  position:fixed;right:1rem;bottom:1.4rem;z-index:60;
  display:none;align-items:center;gap:.5rem;
  background:var(--cta);color:var(--cta-ink);
  padding:.85rem;border-radius:999px;font-size:.95rem;font-weight:500;
  /* El anillo lo separa de la banda oscura del cierre, donde el fondo
     del boton y el de la seccion son casi el mismo color. */
  box-shadow:0 16px 34px -16px rgba(15,17,22,.65),inset 0 0 0 1px rgba(255,255,255,.35);
  transition:background .18s var(--ease),transform .18s var(--ease);
}
.wafab.show{display:inline-flex}
.wafab:hover{background:var(--cta-hover)}
.wafab svg{width:19px;height:19px;flex:none}
.wafab span{display:none}
@media(min-width:721px){
  .wafab{right:1.1rem;bottom:1.1rem;padding:.75rem 1.15rem}
  .wafab span{display:inline}
}
@media(prefers-reduced-motion:reduce){.wafab{transition:none}}

/* ==========================================================
   23. ZONAS DE TOQUE EN MOVIL
   Nada por debajo de 44px de alto donde se pulsa con el dedo.
   ========================================================== */
@media(max-width:940px){
  .btn{padding-block:.85rem}
  .btn--lg{padding-block:.95rem}
  .btn--sm{padding-block:.7rem}
  .foot nav a{display:block;padding-block:.55rem}
  .foot__end nav{gap:.4rem 1rem;flex-wrap:wrap}
  .foot__end nav a{display:block;padding-block:.55rem}
  .lang a{padding:.62rem .5rem}
  /* Nada por debajo de 12px donde hay texto que leer */
  .demo__cap{font-size:.8125rem}
  .card b{font-size:.75rem}
  .card li{font-size:.875rem}
  .wa__who b{font-size:.875rem}
  .wa__who span{font-size:.75rem}
  .plan .plan__n{font-size:.8125rem}
  .vert small,.foot__end{font-size:.8125rem}
}

/* ==========================================================
   24. PAGINAS LEGALES
   ========================================================== */
.legal{padding:7.5rem 0 3.5rem}
.legal h1{font-size:clamp(1.9rem,5vw,2.6rem)}
.legal h2{font-size:clamp(1.15rem,2.6vw,1.35rem);margin-top:2.2rem}
.legal p,.legal li{font-size:var(--t-sm);color:var(--ink-2)}
.legal p{margin-top:.8rem}
.legal ul{margin-top:.8rem;display:grid;gap:.45rem}
.legal li{position:relative;padding-left:1.1rem}
.legal li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--slate)}
.legal .wrap{max-width:44rem}
.legal__meta{font-size:var(--t-xs);color:var(--ink-3);margin-top:2.5rem}
.legal__back{display:inline-flex;align-items:center;gap:.4rem;margin-top:2rem;font-size:var(--t-sm);color:var(--slate-tx)}
.legal__back:hover{color:var(--ink)}
/* Dato de identificacion que falta por rellenar. Se ve a la legua a
   proposito: la pagina no se publica con esto dentro. */
.todo{
  background:repeating-linear-gradient(45deg,#ffe9a8 0 6px,#ffdd7a 6px 12px);
  color:#3a2f00;border-radius:5px;padding:.05em .4em;font-weight:600;
}
html[data-theme="dark"] .todo{background:repeating-linear-gradient(45deg,#5a4a12 0 6px,#6b590f 6px 12px);color:#ffe9a8}

/* ==========================================================
   25. IMPRESION
   ========================================================== */
@media print{
  .nav,.menu,.wafab,.rails,body::before{display:none!important}
  .shell{border:0;max-width:none}
  .rv{opacity:1;transform:none}
  .end{background:none;color:#000;border:1px solid #000}
  .end h2,.end p,.end small{color:#000}
}

/* Sectores de segunda fila: los que cubre el sistema sin tarjeta propia.
   En pildoras, no en tarjetas: son doce y en tarjetas serian media pagina. */
.mas{margin-top:1.4rem;text-align:center}
.mas b{display:block;font-size:var(--t-sm);color:var(--ink-2);font-weight:500;margin-bottom:.8rem}
.mas ul{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}
.mas li{
  font-size:var(--t-xs);color:var(--ink-2);background:var(--panel);
  border:1px solid var(--line);border-radius:999px;padding:.3rem .8rem;
}

/* ==========================================================
   FORMULARIO DE CUALIFICACION (demo.html)
   ========================================================== */
.sec--first{padding-top:clamp(7rem,12vw,9rem)}
.form{
  max-width:44rem;margin-inline:auto;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(1.4rem,3vw,2.2rem);display:grid;gap:1.6rem;
}
.form__g{border:0;display:grid;gap:.9rem}
.form__lg{font-size:var(--t-sm);font-weight:600;color:var(--ink);padding:0;margin-bottom:.2rem}
.form__g.mal .form__lg{color:#b42318}
.f{display:grid;gap:.4rem}
.f label{font-size:var(--t-xs);font-weight:500;color:var(--ink)}
.opcional{font-weight:400;color:var(--ink-3)}
.f2{display:grid;gap:.9rem}
@media(min-width:561px){.f2{grid-template-columns:1fr 1fr}}
.form input[type="text"],.form input[type="tel"],.form select{
  width:100%;font:inherit;font-size:1rem;padding:.85rem 1rem;border-radius:12px;
  border:1.5px solid var(--line-2);background:var(--bg);color:var(--ink);
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease;
}
.form input:hover,.form select:hover{border-color:var(--slate-tx)}
.form input:focus,.form select:focus{outline:none;background:var(--panel);border-color:var(--ink);box-shadow:0 0 0 4px rgba(35,37,46,.12)}
.form input::placeholder{color:var(--ink-3)}
.form__g.mal input,.form__g.mal select{border-color:#d92d20}

/* Opciones en pildora: se pulsan con el dedo, no hay que acertar un radio */
.opts{display:flex;flex-wrap:wrap;gap:.5rem}
.opts--col{flex-direction:column}
.opt{position:relative;display:block}
.opt input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.opt span{
  display:block;font-size:var(--t-sm);color:var(--ink-2);cursor:pointer;
  background:var(--bg);border:1.5px solid var(--line-2);border-radius:12px;
  padding:.7rem 1rem;transition:.16s ease;
}
.opt input:hover + span{border-color:var(--slate-tx)}
.opt input:focus-visible + span{outline:2px solid var(--ink);outline-offset:2px}
.opt input:checked + span{background:var(--ink);border-color:var(--ink);color:var(--panel);font-weight:500}
html[data-theme="dark"] .opt input:checked + span{color:#14161c}

.check{display:flex;gap:.7rem;align-items:flex-start;font-size:var(--t-xs);color:var(--ink-2);line-height:1.55;cursor:pointer}
.check input{width:20px;height:20px;flex:none;margin-top:.1rem;accent-color:var(--ink);cursor:pointer}
.check.mal span{color:#b42318}
.check a{text-decoration:underline}
.form__nota{font-size:var(--t-xs);color:var(--ink-3)}
.form__err{font-size:var(--t-xs);color:#b42318;font-weight:500}
.form__trust{display:grid;gap:.5rem;padding-top:1.1rem;border-top:1px solid var(--line)}
.form__trust li{position:relative;padding-left:1.5rem;font-size:var(--t-xs);color:var(--ink-3)}
.form__trust li::before{content:"";position:absolute;left:3px;top:.32rem;width:5px;height:9px;border:solid var(--slate-tx);border-width:0 2px 2px 0;transform:rotate(42deg)}
.form__ok{
  max-width:44rem;margin-inline:auto;text-align:center;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r);padding:clamp(2rem,4vw,3rem);
}
.form__ok h3{font-size:1.5rem;margin-bottom:.6rem}
.form__ok p{margin-bottom:1.4rem}
