/* Clynia — cuestionario multipaso (móvil primero). Prefijo .cq = Clynia Questionnaire */
:root{
  --bg:#f6f4ef; --surface:#fff; --ink:#1c2421; --muted:#586460;
  --green:#437066; --green-d:#365b52; --line:#e6e1d7; --soft:#efece4;
  --red:#b3261e; --radius:16px; --maxw:560px;
  /* Las MISMAS caras y los MISMOS colores que el resto de clynia.es (styles.css). Las cinco paginas
     que cargan este CSS ya piden Fraunces y Hanken Grotesk en su <head>, asi que no se anade ni una
     peticion. Aqui ponia 'Lora' y 'Raleway', que no las carga ninguna de las cinco: los titulares
     caian a Georgia y el cuerpo a la letra del sistema, y el cuestionario parecia de otra empresa
     distinta de la landing de la que acaba de venir el paciente. Raleway ademas esta prohibida. */
  --display:"Fraunces",Georgia,serif;
  --text:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body.cq-body{
  background:var(--bg); color:var(--ink);
  font-family:var(--text);
  -webkit-font-smoothing:antialiased;line-height:1.5;
}
.cq{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}

/* Barra superior con progreso */
.cq__bar{position:sticky;top:0;z-index:5;background:var(--bg);
  display:flex;align-items:center;gap:12px;
  padding:calc(12px + env(safe-area-inset-top)) 16px 12px}
.cq__back{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font-size:20px;line-height:1;
  width:40px;height:40px;border-radius:50%;cursor:pointer;display:grid;place-items:center;flex:none;transition:.15s}
.cq__back:hover{border-color:var(--green);color:var(--green)}
.cq__back:disabled{opacity:.35;cursor:default}
.cq__progress{flex:1;height:6px;background:var(--soft);border-radius:99px;overflow:hidden}
.cq__progress i{display:block;height:100%;width:0;background:var(--green);border-radius:99px;transition:width .35s ease}
.cq__brand{height:20px;width:auto;display:block;flex:none}

/* Escenario */
.cq__stage{flex:1;width:100%;max-width:var(--maxw);margin:0 auto;padding:10px 20px 16px}
.cq__step{animation:cqin .35s ease both}
@keyframes cqin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.cq__eyebrow{color:var(--green);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.07em;margin:6px 0 8px}
.cq__q{font-family:var(--display);font-weight:500;font-size:25px;line-height:1.25;margin:0 0 8px;letter-spacing:-.2px}
.cq__help{color:var(--muted);margin:0 0 18px;font-size:15px}
/* Letra pequena DEBAJO del campo (la pinta el motor si el paso trae `note`). Justificada y con
   guiones, como el resto de textos largos de la casa: en una columna de movil sin partir palabras
   quedan rios de espacio. */
.cq__note{margin:18px 0 0;font-size:12.5px;line-height:1.6;color:var(--muted);
  text-align:justify;hyphens:auto;-webkit-hyphens:auto}
.cq__note strong{color:var(--ink);font-weight:600}
.cq__field{display:flex;flex-direction:column;gap:10px;margin-top:4px}

/* Inputs */
.cq__input{width:100%;font:inherit;font-size:17px;padding:15px 16px;border:1.5px solid var(--line);
  border-radius:14px;background:var(--surface);color:var(--ink);-webkit-appearance:none}
.cq__input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(67,112,102,.12)}
textarea.cq__input{min-height:120px;resize:vertical}
.cq__suffix{display:flex;align-items:center;gap:10px}
.cq__suffix span{color:var(--muted);font-size:15px}

/* Fecha por partes (día / mes / año). El día y el año van centrados; el mes es un select con su
   flecha propia (el reset de .cq__input quita la nativa y sin ella no parece desplegable). */
.cq__date{display:grid;grid-template-columns:minmax(64px,86px) 1fr minmax(88px,110px);gap:10px}
.cq__date label{display:flex;flex-direction:column;gap:6px;min-width:0}
.cq__date label>span{font-size:13px;color:var(--muted)}
.cq__date input.cq__input{padding:15px 10px;text-align:center}
.cq__date select.cq__input{padding:15px 30px 15px 12px;text-overflow:ellipsis;white-space:nowrap;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a756a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;background-size:16px}

/* Opciones (single / multi / yesno) */
.cq__opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;font-size:16px;
  padding:15px 16px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);
  cursor:pointer;transition:border-color .15s,background .15s}
.cq__opt:hover{border-color:#cfcabd}
.cq__opt.is-sel{border-color:var(--green);background:#eef3f1}
.cq__opt .tick{margin-left:auto;width:22px;height:22px;border-radius:50%;border:2px solid var(--line);flex:none;display:grid;place-items:center;transition:.15s}
.cq__opt.multi .tick{border-radius:6px}
.cq__opt.is-sel .tick{border-color:var(--green);background:var(--green)}
.cq__opt.is-sel .tick::after{content:"";width:8px;height:8px;border-radius:inherit;background:#fff}
/* Listas largas (contraindicaciones y cardiometabolicas tienen 16 opciones): se compactan para que
   la ultima ("Ninguna") no quede enterrada al final del scroll. Limites que NO se cruzan: 44px de
   alto minimo (objetivo tactil) y 16px de texto (legibilidad en movil). Solo se recorta el relleno,
   la separacion y el tick, que es de donde sobra. */
.cq__field{gap:7px}
.cq__opt{padding:11px 14px;min-height:44px}
.cq__opt .tick{width:20px;height:20px}
.cq__stage{padding-bottom:26px}

/* Consentimientos */
.cq__consent{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1.5px solid var(--line);
  border-radius:14px;background:var(--surface);font-size:14px;color:var(--ink);cursor:pointer}
.cq__consent input{margin:2px 0 0;width:20px;height:20px;flex:none;accent-color:var(--green)}
.cq__consent a{color:var(--green)}

/* Subida de fichero */
.cq__file{display:flex;flex-direction:column;gap:8px}
.cq__file label{display:flex;align-items:center;justify-content:center;gap:10px;padding:18px;border:1.5px dashed var(--line);
  border-radius:14px;background:var(--surface);color:var(--green);font-weight:600;cursor:pointer}
.cq__file input{position:absolute;width:1px;height:1px;opacity:0}
.cq__file .name{font-size:14px;color:var(--muted)}

/* Planes */
/* Tira de garantias con icono, para el paso de planes: sustituye al parrafo largo de avisos que
   habia antes de las tarjetas. Va toda con <span> y no con <ul>, porque el motor pinta el help
   dentro de un <p> y una lista ahi lo partiria en dos. */
.cq__trust{display:grid;gap:13px;margin:2px 0 4px;text-align:left}
.cq__trust .ti{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;line-height:1.45;color:var(--muted)}
.cq__trust .ti > svg{flex:none;width:20px;height:20px;stroke:var(--green);fill:none;stroke-width:1.9;margin-top:1px}
.cq__trust .ti b{display:block;color:var(--ink);font-weight:600;font-size:14.5px;margin-bottom:1px}

/* Hueco generoso a proposito: la etiqueta de cada tarjeta va en position:absolute con top:-10px,
   o sea que asoma por encima de su borde. Con poco hueco se metia dentro de la tarjeta de arriba.
   Los 24 px dejan 14 px libres por debajo de cada tarjeta, y el padding superior evita que la
   primera etiqueta se pegue al texto de encima. */
.cq__plans{display:flex;flex-direction:column;gap:22px;padding-top:16px}
/* Fila de metodos de pago aceptados, bajo las tarjetas del paso de pago. Cada logo es un SVG
   autocontenido (pastilla blanca + marca), el mismo set que el pie de la web. */
.cq__pay{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:7px;margin:18px 0 2px}
.cq__pay img{height:24px;width:auto;display:block}
/* Separador con etiqueta, para despegar el pago unico de las dos suscripciones. */
.cq__plansep{display:flex;align-items:center;gap:12px;margin:2px 2px 0;color:var(--muted);font-size:13px}
.cq__plansep::before,.cq__plansep::after{content:"";flex:1;height:1px;background:var(--line)}
/* El `color` es OBLIGATORIO aqui: la tarjeta es un <button> y `font:inherit` hereda la tipografia
   pero NO el color, asi que sin esto el boton se queda con el color por defecto del sistema. En
   escritorio eso es negro y no se nota, pero en iOS es el azul de Apple: el nombre del plan y el
   precio salian azules en el movil (la descripcion no, porque tiene color propio). */
.cq__plan{position:relative;text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:var(--surface);
  border:1.5px solid var(--line);border-radius:var(--radius);padding:15px 18px 15px;
  transition:border-color .18s,box-shadow .18s,background .18s}
/* Elegida: aro verde y sombra baja, sin tinte de fondo. El fondo tenido hundia la tarjeta justo
   cuando el paciente acaba de elegirla; el aro la levanta y ademas no ensucia el numero grande. */
.cq__plan.is-sel{border-color:var(--green);box-shadow:0 0 0 1.5px var(--green),0 16px 34px -24px rgba(28,36,33,.6)}
.cq__plan.feat{border-color:rgba(67,112,102,.45)}
.cq__plan .tag{position:absolute;top:-10px;left:18px;background:var(--green);color:#fff;font-size:11px;font-weight:600;
  padding:3px 10px;border-radius:99px;letter-spacing:.02em}
/* Marca de elegido, arriba a la derecha. Se pinta siempre en hueco y solo se rellena en .is-sel:
   elegir plan NO avanza de paso, asi que hace falta una senal inequivoca de que el clic conto. */
.cq__plan .pick{position:absolute;top:16px;right:16px;width:22px;height:22px;border-radius:50%;
  border:1.5px solid var(--line);background:var(--surface);transition:.18s}
.cq__plan.is-sel .pick{border-color:var(--green);background:var(--green)}
.cq__plan.is-sel .pick::after{content:"";position:absolute;left:5px;top:6px;width:9px;height:5px;
  border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg)}
/* Icono del plan. Opcional: solo se pinta si el esquema trae `icono`. Va FLOTADO para que el nombre
   se le ponga al lado en la misma linea: apilado se comia 48 px de alto por tarjeta y en un movil
   pequeno empujaba la segunda opcion por debajo del boton fijo, de modo que solo se veia una.
   En la destacada y en la elegida se invierte (fondo verde, trazo blanco). */
.cq__plan .ico{float:left;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:11px;background:rgba(67,112,102,.10);color:var(--green);margin:0 11px 0 0}
.cq__plan .ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.cq__plan.feat .ico,.cq__plan.is-sel .ico{background:var(--green);color:#fff}
/* display:flex crea contexto propio, asi que el nombre se coloca AL LADO del icono flotado y nunca
   por debajo. El hueco de la derecha deja sitio a la marca de elegido. */
.cq__plan .name{display:flex;align-items:center;min-height:34px;padding-right:28px;
  font-family:var(--display);font-size:18px;font-weight:500;line-height:1.25}
/* El importe manda: en la cara de titulares de la casa, con cifras de ancho fijo para que 89 y
   74,17 caigan en la misma rejilla. clear:left lo baja por debajo del icono flotado. */
.cq__plan .price{clear:left;font-family:var(--display);font-size:36px;font-weight:500;line-height:1.05;
  letter-spacing:-.02em;margin:10px 0 0;font-variant-numeric:tabular-nums}
.cq__plan .price .unit{font-family:var(--text);font-size:15px;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:2px}
/* Precio de referencia tachado, al lado del grande: es lo que hace que el anual se lea como MAS
   barato y no como un importe mayor. */
.cq__plan .price .was{font-family:var(--text);font-size:15px;font-weight:500;color:var(--muted);
  text-decoration:line-through;letter-spacing:0;margin-left:5px}
.cq__plan .price small{display:block;font-family:var(--text);font-size:13px;font-weight:400;color:var(--muted);
  letter-spacing:0;margin-top:7px;line-height:1.5}
.cq__plan .desc{font-size:13.5px;line-height:1.5;color:var(--muted);margin-top:8px}

/* Pantalla de ritmo / IMC (visual comercial) */
.cq__viz{display:flex;flex-direction:column;gap:14px;margin:4px 0 20px}
.cq__card{background:var(--surface);border:1.5px solid var(--line);border-radius:16px;padding:18px}
.cq__imc-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.cq__imc-top{display:flex;align-items:center;justify-content:space-between}
.cq__badge{font-size:12.5px;font-weight:600;padding:4px 11px;border-radius:99px}
.cq__imc-num{font-family:var(--display);font-size:42px;font-weight:500;color:var(--green);line-height:1.05;margin:8px 0 2px}
.cq__gauge{position:relative;height:10px;border-radius:99px;margin:14px 0 7px;background:linear-gradient(90deg,#9cc9b6 0%,#e9d27a 45%,#e0a35e 70%,#d98080 100%)}
.cq__gauge i{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--ink);transform:translate(-50%,-50%);box-shadow:0 2px 6px rgba(0,0,0,.18)}
.cq__gauge-scale{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
.cq__proj{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cq__proj .from,.cq__proj .to{text-align:center}
.cq__proj .kg{font-family:var(--display);font-size:24px;font-weight:500;margin-top:2px}
.cq__proj .kg small{font-size:13px;font-weight:600;color:var(--muted)}
.cq__proj-arrow{flex:1;text-align:center;position:relative}
.cq__proj-arrow span{display:inline-block;font-size:13px;font-weight:600;color:var(--green);background:#eef3f1;padding:3px 11px;border-radius:99px;position:relative;z-index:1}
.cq__proj-arrow::before{content:"";position:absolute;left:4%;right:4%;top:50%;height:2px;background:var(--line);z-index:0}
.cq__weeks{color:var(--muted);font-size:13.5px;text-align:center;line-height:1.55;margin:2px 4px 0}
.cq__weeks strong{color:var(--ink)}
.cq__ratehead{font-weight:600;font-size:16px;margin:14px 0 2px;text-align:center}

/* Pie / botón continuar */
/* El degradado tiene que ser OPACO donde pasa el contenido: con el corte al 72% se transparentaba
   justo encima del boton y el borde de la tarjeta de plan asomaba por debajo, como si estuviera
   cortada. Ahora el tramo opaco llega mas arriba y solo se difumina el ultimo tercio. */
.cq__foot{position:sticky;bottom:0;z-index:5;
  background:linear-gradient(to top,var(--bg) 62%,rgba(246,244,239,.94) 84%,rgba(246,244,239,0));
  padding:14px 20px calc(16px + env(safe-area-inset-bottom))}
.cq__foot .in{max-width:var(--maxw);margin:0 auto}
.cq__next{width:100%;font:inherit;font-weight:600;font-size:17px;padding:16px;border:0;border-radius:14px;
  background:var(--green);color:#fff;cursor:pointer;transition:background .15s,opacity .15s}
.cq__next:hover{background:var(--green-d)}
.cq__next:disabled{opacity:.4;cursor:not-allowed}
.cq__err{color:var(--red);font-size:14px;margin-top:6px}
/* Botones del aviso de dominio mal escrito. El `color` va explicito en los dos: `font:inherit` en
   un <button> NO arrastra el color y se quedarian negros en escritorio y azul Apple en iOS. */
.cq__fix{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.cq__fix button{font:inherit;font-size:14px;font-weight:600;padding:9px 14px;border-radius:10px;cursor:pointer}
.cq__fix #cqFixYes{border:0;background:var(--green);color:#fff}
.cq__fix #cqFixNo{border:1.5px solid var(--line);background:transparent;color:var(--muted)}
.cq__backlow{display:block;width:100%;margin-top:10px;background:transparent;border:0;color:var(--muted);font:inherit;font-size:15px;font-weight:600;cursor:pointer;padding:10px;border-radius:10px}
.cq__backlow:hover{color:var(--green)}

/* Statement / endings */
.cq__center{flex:1;display:flex;flex-direction:column;justify-content:center;text-align:center;
  max-width:var(--maxw);margin:0 auto;padding:24px 24px calc(24px + env(safe-area-inset-bottom))}
.cq__center .ico{width:58px;height:58px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;background:#eef3f1;color:var(--green)}
.cq__center.stop .ico{background:#fbeae8;color:var(--red)}
.cq__center h1{font-family:var(--display);font-weight:500;font-size:27px;line-height:1.25;margin:0 0 12px}
.cq__center p{color:var(--muted);font-size:16px;margin:0 0 14px}
.cq__center .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;
  padding:15px 22px;border-radius:14px;background:var(--green);color:#fff;font-weight:600;text-decoration:none}
.cq__center button.btn{border:0;cursor:pointer;font-family:inherit;font-size:16px}
.cq__endlink{display:inline-block;margin-top:14px;color:var(--muted);font-size:14px;text-decoration:underline;background:none;border:0;cursor:pointer}

/* ---- Pantalla final enriquecida: solo se activa si el schema trae badge/steps/ctaNote.
   Sin estos campos el ending renderiza como siempre (menor de edad, cribado rojo, parte 2...). ---- */
.cq__center .ico--ok{position:relative;width:64px;height:64px;background:#e7f0ec;box-shadow:0 0 0 8px rgba(67,112,102,.05)}
.cq__center .ico--ok::after{content:"";position:absolute;inset:-11px;border-radius:50%;border:1.5px solid rgba(67,112,102,.25);pointer-events:none}
@media (prefers-reduced-motion:no-preference){
  .cq__center .ico--ok{animation:cqpop .45s cubic-bezier(.2,.7,.3,1) both}
  .cq__center .ico--ok::after{animation:cqring 1.7s ease-out .25s both}
}
@keyframes cqpop{from{transform:scale(.82);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes cqring{from{transform:scale(.7);opacity:.6}to{transform:scale(1.3);opacity:0}}
.cq__badge{display:inline-flex;align-items:center;gap:8px;align-self:center;margin:0 0 18px;padding:9px 17px;border-radius:999px;background:#e7f0ec;color:var(--green);font-size:15px;font-weight:600;line-height:1.3}
.cq__badge svg{width:17px;height:17px;flex:none}
/* Marca en la pantalla final. Sin barra ni fondo: la marca respira y debajo lleva un filete corto
   en degradado que se desvanece a los lados, para que se lea como remate y no como header de plantilla. */
/* OJO: se llama cq__logo, NO cq__brand. La clase .cq__brand ya es el logo pequeno de la barra de
   preguntas (linea 26) y reutilizarla le metia margen y centrado en todas las pantallas. */
.cq__logo{margin:0 auto 26px;text-align:center}
.cq__logo img{height:clamp(36px,10vw,44px);width:auto;display:inline-block}
.cq__logo::after{content:"";display:block;width:76px;height:1px;margin:18px auto 0;background:linear-gradient(90deg,transparent,rgba(67,112,102,.38),transparent)}
/* Ending enriquecido: el titular manda (verde y grande), sin marca redonda encima. */
.cq__center--flow h1{color:var(--green);font-size:clamp(28px,6.5vw,34px);line-height:1.2;margin:0 0 16px}
/* OJO: esta lista se llama cq__flow, NO cq__next. La clase .cq__next ya es el boton de siguiente
   del formulario (linea 109). Reutilizarla le pisaba el fondo verde y lo dejaba invisible. */
.cq__flow{list-style:none;margin:20px 0 0;padding:18px 18px 16px;text-align:left;border:1px solid var(--line);border-radius:16px;background:#fbfcfb;box-shadow:0 1px 2px rgba(22,32,28,.04)}
.cq__flow li{position:relative;display:flex;gap:12px;padding-bottom:16px}
.cq__flow li:last-child{padding-bottom:0}
.cq__flow li:not(:last-child)::before{content:"";position:absolute;left:13px;top:31px;bottom:3px;width:1.5px;background:var(--line)}
.cq__flow-dot{position:relative;z-index:1;flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#eef3f1;border:1.5px solid #dce7e2;color:var(--green);font-size:12.5px;font-weight:700}
.cq__flow li.is-done .cq__flow-dot{background:var(--green);border-color:var(--green);color:#fff}
.cq__flow-txt strong{display:block;font-size:15px;font-weight:600;line-height:1.35;color:#16201c}
.cq__flow-txt span{display:block;margin-top:3px;font-size:13.5px;line-height:1.55;color:var(--muted)}
.cq__invite{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.cq__center .cq__invite-note{font-size:14.5px;line-height:1.6;margin:0 0 14px}
.cq__loading{display:flex;gap:8px;justify-content:center;align-items:center;color:var(--muted);font-size:15px}
.cq__spin{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;animation:cqspin .7s linear infinite}
@keyframes cqspin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion:reduce){
  .cq__step{animation:none}.cq__progress i{transition:none}.cq__spin{animation-duration:2s}
}
@media(min-width:600px){ .cq__q{font-size:28px} }
