/* ============================================================================
   Bolsa de Trabajo CMP — Pantallas previas al acceso
   Portada del portal, inicio de sesión, registro de institución y confirmación.

   Depende de cmp-tokens.css y cmp-tema.css, que deben cargarse antes. Aquí no
   se define ni un color nuevo: todo sale de los tokens, que ya traducen el
   Manual de Identidad Gráfica §1.5 (colores) y §1.14/§1.15 (tipografías).

   La composición es una tarjeta flotando sobre el Degradado Morado (§1.6):
   panel de marca a la izquierda, formulario a la derecha, y entre los dos un
   borde curvo. La curva no es adorno: separa dos zonas de lectura distintas
   —quién te recibe y qué tienes que hacer— sin necesidad de una línea.
   ============================================================================ */

/* ---- Fondo de página -----------------------------------------------------
   Sin relleno ni centrado: la composición ocupa la ventana entera, de borde a
   borde. El degradado se queda en <body> como respaldo del rebote de scroll,
   para que al arrastrar más allá del final no asome el blanco del navegador.
   -------------------------------------------------------------------------- */
.acceso-fondo{
  min-height: 100dvh;
  margin: 0;
  background: var(--grad-purple-round) fixed;
}

/* ---- La composición ------------------------------------------------------
   El morado va aquí y el panel blanco se monta encima: así el borde curvo del
   blanco recorta sobre morado sin tener que dibujar dos formas que encajen.
   overflow:hidden es lo que mantiene las formas decorativas dentro.

   min-height y no height: en el registro el formulario es más alto que la
   ventana y la composición tiene que poder crecer.
   -------------------------------------------------------------------------- */
.acceso{
  width: 100%;
  min-height: 100dvh;
  display: grid;
  grid-template-columns: 1fr 1.08fr;
  background: var(--grad-purple-round);
  overflow: hidden;
}

/* ---- Columna de marca ----------------------------------------------------- */
.acceso__marca{
  position: relative;
  padding: clamp(2.5rem, 5vw, 5rem) clamp(2rem, 4vw, 4.5rem);
  color: #fff;
  display: flex; flex-direction: column;
}

/* A pantalla completa las dos mitades son muy anchas, así que el contenido se
   limita y se centra dentro de la suya. Sin esto, la bajada se estiraría a
   líneas de 90 caracteres en un monitor grande y dejaría de leerse. */
.acceso__marca-fijo{
  position: relative; z-index: 1;      /* sobre las formas, que van en z-index 0 */
  width: 100%; max-width: 460px;
  /* Los cuatro márgenes automáticos reparten el hueco sobrante: centran el
     bloque en horizontal y en vertical, y de paso empujan el pie al fondo. */
  margin: auto;
}
.acceso__pie-marca{
  position: relative; z-index: 1;
  width: 100%; max-width: 460px;
  margin-inline: auto;
  padding-top: 2.5rem;
  font-size: .78rem; line-height: 1.7;
  color: rgba(255,255,255,.62);
}

/* ---- Formas decorativas --------------------------------------------------
   Elementos visuales en colores corporativos (§3.1). Van en <span> vacíos y no
   en pseudoelementos porque son dos y el panel ya usa su ::before para el
   velo. aria-hidden en el marcado: no aportan nada que leer.
   -------------------------------------------------------------------------- */
.acceso__forma{ position: absolute; z-index: 0; pointer-events: none; }

/* Cuarto de círculo dorado anclado a la esquina inferior izquierda. */
.acceso__forma--gota{
  left: 0; bottom: 0;
  width: 275px; height: 275px;
  background: var(--grad-gold);
  border-radius: 0 100% 0 0;
}

/* Esfera morada: el degradado radial le da el volumen. Queda por delante del
   dorado y por detrás del texto. */
.acceso__forma--esfera{
  right: 8%; bottom: 12%;
  width: 300px; height: 300px;
  border-radius: 50%;
  background: radial-gradient(circle at 34% 28%, #8E3A7E 0%, #6B2160 45%, #4A1340 100%);
  box-shadow: 0 30px 60px -25px rgba(0,0,0,.5);
}

/* ---- El isologo ----------------------------------------------------------
   §1.9 «usar la versión con mayor contraste sobre el fondo». El isologo es un
   disco MORADO y el panel también es morado, así que se apoya en un disco
   color crema —#FFF8EB, PANTONE 18-9C, corporativo (§1.5)— que le devuelve el
   contraste sin tocar la marca.

   El relleno de ese disco es el área de protección de §1.7: el manual la
   define como el espacio entre isologo y logotipo, y aquí se reserva como
   espacio propio. Nada puede entrar en él.
   -------------------------------------------------------------------------- */
.acceso__isologo{
  width: 104px; height: 104px;
  border-radius: 50%;
  background: var(--cmp-cream);
  padding: 13px;                      /* área de protección, ~12% del diámetro */
  display: grid; place-items: center;
  box-shadow: 0 14px 34px -14px rgba(0,0,0,.55);
}
/* Las dos medidas y object-fit: §1.10 «no alterar sus proporciones». Si algún
   día el PNG deja de ser cuadrado, la marca se verá entera y no estirada. */
.acceso__isologo img{ width: 100%; height: 100%; object-fit: contain; display: block; }

/* ---- Titulares del panel de marca ---------------------------------------- */
.acceso__titulo{
  font-family: var(--font-display);
  font-weight: 800;                   /* Montserrat ExtraBold (§1.14) */
  letter-spacing: var(--tracking-tight);
  text-transform: uppercase;
  font-size: clamp(2.1rem, 3.4vw, 2.9rem);
  line-height: 1.05;
  color: #fff;
  margin: 2.5rem 0 .6rem;
}
.acceso__lema{
  font-family: var(--font-display);
  font-weight: 700; font-size: .95rem;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--cmp-gold);
  margin: 0 0 1.75rem;
}
.acceso__bajada{
  font-size: .95rem; line-height: 1.7;
  color: rgba(255,255,255,.85);
  margin: 0; max-width: 38ch;
}

/* ---- Columna del formulario ----------------------------------------------
   El margen negativo mete el panel dentro del morado; el radio elíptico dibuja
   la curva. Los dos radios verticales suman 100%, que es lo que hace que los
   dos arcos se encuentren en el centro y formen una curva continua en lugar de
   dos esquinas con un tramo recto en medio.
   -------------------------------------------------------------------------- */
.acceso__panel{
  /* ---- Escala del texto del panel ---------------------------------------
     Todo el texto de esta columna va un 10 % por debajo del resto del sistema:
     la columna de marca sostiene la voz alta y el formulario no necesita
     competir con ella.

     Es una variable y no valores ya multiplicados para que el ajuste se lea
     como lo que es —una decisión, no veinte números sueltos— y se pueda mover
     desde un solo sitio. Cada font-size de esta sección la aplica con calc().

     Hace falta multiplicar en cada regla porque rem SIEMPRE se resuelve contra
     la raíz del documento: poner un font-size en el contenedor no encoge a un
     descendiente medido en rem. Solo escala lo que no declara tamaño propio.
     ---------------------------------------------------------------------- */
  --escala-texto: .9;

  position: relative; z-index: 1;
  margin-left: -7%;
  background: var(--paper);
  border-radius: 13% 0 0 13% / 50% 0 0 50%;
  /* Más relleno a la izquierda que a la derecha: ahí es donde la curva entra
     en el panel, y el contenido no debe acercarse a ella. */
  padding: clamp(2.5rem, 5vw, 5rem) clamp(2rem, 4vw, 4.5rem)
           clamp(2.5rem, 5vw, 5rem) clamp(3.5rem, 8vw, 8rem);
  display: flex; flex-direction: column; justify-content: center;
  overflow: hidden;
}
/* Círculo crema muy tenue en la esquina inferior derecha: acompaña al dorado
   del otro lado y evita que la mitad blanca quede plana. */
.acceso__panel::after{
  content: ""; position: absolute; z-index: 0;
  right: -90px; bottom: -110px;
  width: 320px; height: 320px; border-radius: 50%;
  background: var(--cmp-cream);
  opacity: .7;
}
/* Misma razón que en la columna de marca: el panel llega hasta el borde de la
   pantalla, pero un formulario de 900 px de ancho no se rellena, se sufre. */
.acceso__contenido{
  position: relative; z-index: 1;
  width: 100%; max-width: 460px; margin-inline: auto;
}
/* El registro necesita más sitio: lleva filas de dos columnas. */
.acceso__contenido--ancho{ max-width: 660px; }

/* La barra superior sigue existiendo para las vistas que la usan. Comparte el
   ancho máximo del contenido más ancho para no quedar descuadrada respecto al
   formulario que tiene debajo. */
.acceso__superior{
  position: relative; z-index: 1;
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap;
  width: 100%; max-width: 660px; margin: 0 auto 1.5rem;
  font-size: calc(.82rem * var(--escala-texto, 1));
}
.acceso__volver{ color: var(--ink-mute); }
.acceso__volver:hover{ color: var(--cmp-purple); }

/* ---- Encabezado de cada pantalla ----------------------------------------- */
.acceso__rotulo{
  font-family: var(--font-display);
  font-size: calc(.72rem * var(--escala-texto, 1)); font-weight: 600;
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--cmp-purple);
  margin-bottom: .4rem;
}
.acceso__h1{
  font-size: calc(clamp(1.7rem, 2.6vw, 2.15rem) * var(--escala-texto, 1));
  margin: 0 0 .5rem;
}
.acceso__sub{ font-size: calc(.92rem * var(--escala-texto, 1)); color: var(--ink-soft); margin: 0 0 1.9rem; }

/* Dentro del panel la tarjeta ya no pinta nada: el panel ES la tarjeta. Se
   neutraliza aquí en vez de quitarla del marcado para que las vistas de
   registro y confirmación sigan sirviendo sin tocarlas. */
.acceso__tarjeta{
  background: none; border: 0; box-shadow: none; padding: 0; border-radius: 0;
}

/* ---- Campos con etiqueta flotante ----------------------------------------
   El diseño de referencia pone el rótulo DENTRO del campo. Un placeholder a
   secas desaparece en cuanto se escribe y deja el campo sin identificar, así
   que el rótulo es un <label> de verdad que sube a la cabecera del campo al
   enfocarlo o al haber texto. Se lee igual y no se pierde.

   El truco es placeholder=" " —un espacio— en el marcado: sin placeholder,
   :placeholder-shown nunca casa y la etiqueta no bajaría jamás.
   -------------------------------------------------------------------------- */
.campo{ position: relative; margin-bottom: 1rem; }

.campo__control.form-control{
  height: 68px;
  padding: 1.65rem 1rem .55rem 3.2rem;
  background: var(--cmp-cream);
  border: 1px solid transparent;
  border-radius: 14px;
  font-size: calc(.95rem * var(--escala-texto, 1));
  color: var(--ink);
}
.campo__control.form-control:focus{
  background: var(--paper);
  border-color: var(--purple-soft);
  box-shadow: 0 0 0 .2rem rgba(104,30,91,.12);
}
/* Bootstrap pinta el borde de error; sobre crema no se veía. */
.campo__control.input-validation-error{ border-color: var(--err); }

.campo__icono{
  position: absolute; left: 1.15rem; top: 50%; transform: translateY(-50%);
  color: var(--cmp-purple); opacity: .7;
  display: grid; place-items: center;
  pointer-events: none;
}

.campo__etiqueta{
  position: absolute; left: 3.2rem; top: 50%; transform: translateY(-50%);
  margin: 0; pointer-events: none;
  font-size: calc(.95rem * var(--escala-texto, 1)); font-weight: 400; text-transform: none; letter-spacing: 0;
  color: var(--ink-mute);
  transition: top .13s ease, font-size .13s ease, color .13s ease;
}
.campo__control:focus ~ .campo__etiqueta,
.campo__control:not(:placeholder-shown) ~ .campo__etiqueta{
  top: 1.15rem; transform: none;
  font-size: calc(.68rem * var(--escala-texto, 1)); font-weight: 600;
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--cmp-purple);
}

/* Botón «VER» del campo de contraseña. Lo inyecta acceso.js. */
.campo__ver{
  position: absolute; right: .5rem; top: 50%; transform: translateY(-50%);
  border: 0; background: none;
  padding: .5rem .75rem; border-radius: 9px;
  font-family: var(--font-display); font-weight: 700; font-size: calc(.74rem * var(--escala-texto, 1));
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--cmp-purple);
}
.campo__ver:hover{ background: var(--purple-tint); }

@media (prefers-reduced-motion: reduce){
  .campo__etiqueta{ transition: none; }
}

/* ---- Fila de opciones bajo los campos ------------------------------------ */
.acceso__opciones{
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap;
  margin: .35rem 0 1.6rem;
  font-size: calc(.85rem * var(--escala-texto, 1));
}
.acceso__opciones .form-check{ margin: 0; }
.acceso__opciones .form-check-label{ color: var(--ink-soft); }
.acceso__pista-clave{ color: var(--ink-mute); font-size: calc(.8rem * var(--escala-texto, 1)); }

/* ---- Botones del acceso ---------------------------------------------------
   Modificador, no botón nuevo: el color y el degradado siguen viniendo de
   .btn-cmp y .btn-cmp-outline del tema. Aquí solo cambian talla y caja
   tipográfica, que es lo que distingue a un botón de acceso.
   -------------------------------------------------------------------------- */
.btn-acceso{
  width: 100%;
  min-height: 56px;
  border-radius: 14px;
  font-size: calc(.84rem * var(--escala-texto, 1)); font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
}

/* ---- Separador «o» -------------------------------------------------------- */
.acceso__separador{
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: .9rem;
  margin: 1.4rem 0;
  font-size: calc(.78rem * var(--escala-texto, 1)); color: var(--ink-mute);
}
.acceso__separador::before,
.acceso__separador::after{
  content: ""; height: 1px; background: var(--line-muted);
}

/* ---- Pie de seguridad ----------------------------------------------------- */
.acceso__seguro{
  display: flex; align-items: center; justify-content: center; gap: .45rem;
  margin: 1.6rem 0 0;
  font-size: calc(.78rem * var(--escala-texto, 1)); color: var(--ink-mute);
}
.acceso__seguro svg{ color: var(--ok); flex: 0 0 auto; }

/* ---- Elegir vía en la portada -------------------------------------------- */
.acceso__opcion{
  display: grid; grid-template-columns: 44px 1fr auto;
  align-items: center; gap: 1rem;
  width: 100%; text-align: left;
  padding: 1.15rem 1.25rem;
  background: var(--paper);
  border: 1px solid var(--line-card);
  border-radius: var(--r-lg);
  box-shadow: var(--sh-card);
  color: var(--ink);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.acceso__opcion:hover{
  color: var(--ink);
  border-color: var(--purple-soft);
  box-shadow: var(--sh-panel);
  transform: translateY(-1px);
}
.acceso__opcion + .acceso__opcion{ margin-top: .9rem; }
.acceso__opcion-icono{
  width: 44px; height: 44px; border-radius: var(--r-md);
  display: grid; place-items: center;
  background: var(--purple-tint); color: var(--cmp-purple);
}
.acceso__opcion--alterna .acceso__opcion-icono{
  background: var(--gold-tint); color: var(--gold-deep);
}
.acceso__opcion-titulo{
  font-family: var(--font-display); font-weight: 700; font-size: calc(.98rem * var(--escala-texto, 1));
  color: var(--purple-deep);
}
.acceso__opcion-detalle{ font-size: calc(.82rem * var(--escala-texto, 1)); color: var(--ink-soft); margin-top: .15rem; }
.acceso__opcion-flecha{ color: var(--ink-disabled); }
.acceso__opcion:hover .acceso__opcion-flecha{ color: var(--cmp-purple); }

/* ---- Indicador de pasos del registro -------------------------------------
   Era una fila de círculos unidos por un trazo gris: marcaba en qué paso
   estabas, pero no cuánto faltaba, que es la pregunta real cuando quedan tres
   documentos por subir.
   -------------------------------------------------------------------------- */
.pasos{ margin-bottom: 1.75rem; }
.pasos__barra{
  height: 4px; border-radius: var(--r-pill);
  background: var(--line-muted); overflow: hidden;
}
.pasos__avance{
  height: 100%; width: 33.33%;
  background: var(--grad-purple);
  border-radius: var(--r-pill);
  transition: width .25s ease;
}
.pasos__fila{
  display: flex; justify-content: space-between; gap: .5rem;
  margin-top: .6rem;
  font-size: calc(.74rem * var(--escala-texto, 1)); font-weight: 600;
  color: var(--ink-disabled);
}
.pasos__fila span.activo{ color: var(--cmp-purple); }
.pasos__fila span.hecho{ color: var(--ok); }

/* ---- Secciones del formulario por pasos ---------------------------------- */
.acceso__seccion{
  font-family: var(--font-display); font-weight: 700; font-size: calc(.78rem * var(--escala-texto, 1));
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--cmp-purple);
  margin: 0 0 .9rem;
}
.acceso__regla{
  border: 0; border-top: 1px solid var(--line-divider);
  margin: 1.5rem 0; opacity: 1;
}
.acceso .text-danger{ display: block; font-size: calc(.78rem * var(--escala-texto, 1)); margin-top: .2rem; }

/* ---- Cargadores de documento --------------------------------------------- */
.cargador{
  border: 1px solid var(--line-muted); background: #FCFAFB;
  border-radius: var(--r-md); padding: .85rem 1rem; margin-bottom: .7rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.cargador--lleno{ border-color: #B7DEC6; background: var(--ok-tint); }
.cargador__estado{
  font-size: calc(.78rem * var(--escala-texto, 1)); color: var(--ink-mute);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 260px;
}
.cargador--lleno .cargador__estado{ color: var(--ok-deep); }
.cargador__icono{
  width: 40px; height: 40px; border-radius: 10px;
  display: grid; place-items: center;
  background: var(--purple-tint); color: var(--cmp-purple);
  flex: 0 0 auto;
}
.cargador--lleno .cargador__icono{ background: #DCF0E5; color: var(--ok-deep); }

/* Conmutador de visibilidad para los campos con etiqueta encima (registro),
   que no llevan la caja .campo. */
.campo-clave{ position: relative; }
.campo-clave .form-control{ padding-right: 3rem; }
.campo-clave__ojo{
  position: absolute; top: 0; right: 0;
  width: 2.9rem; height: var(--h-input);
  display: grid; place-items: center;
  border: 0; background: none; color: var(--ink-mute);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
}
.campo-clave__ojo:hover{ color: var(--cmp-purple); }

/* ---- Descarga de la plantilla de autorización -----------------------------
   Va justo debajo de los cargadores y comparte su estructura —icono, texto,
   acción— a propósito: es parte de la misma tarea, conseguir los documentos.
   Se distingue en dorado porque es lo único de ese bloque que da algo en lugar
   de pedirlo.

   Es un <a> entero y no un botón dentro de una caja: el área pulsable pasa a
   ser toda la franja, que en un móvil es la diferencia entre acertar y no.
   -------------------------------------------------------------------------- */
.plantilla{
  display: grid;
  grid-template-columns: 44px 1fr auto;
  align-items: center;
  gap: 1rem;
  padding: .9rem 1rem;
  margin-bottom: .7rem;
  border: 1px solid var(--gold-soft);
  border-radius: var(--r-md);
  background: var(--gold-tint);
  color: var(--ink);
  text-decoration: none;
  transition: border-color .15s, box-shadow .15s;
}
.plantilla:hover{
  color: var(--ink);
  border-color: var(--cmp-amber);
  box-shadow: var(--sh-card);
}
.plantilla:focus-visible{ outline: 2px solid var(--cmp-gold); outline-offset: 2px; }

.plantilla__icono{
  width: 44px; height: 44px; border-radius: 10px;
  display: grid; place-items: center;
  /* Texto oscuro sobre dorado: el negro de marca no contrasta lo suficiente,
     y por eso los tokens traen --gold-ink para este caso. */
  background: var(--grad-gold); color: var(--gold-ink);
}
.plantilla__texto{ min-width: 0; }
.plantilla__titulo{
  display: block;
  font-size: calc(.85rem * var(--escala-texto, 1));
  font-weight: 700; color: var(--gold-ink);
}
.plantilla__detalle{
  display: block;
  font-size: calc(.76rem * var(--escala-texto, 1));
  color: var(--gold-deep);
  margin-top: .1rem;
}
.plantilla__accion{
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .5rem .85rem; border-radius: var(--r-sm);
  background: var(--gold-ink); color: var(--cmp-cream);
  font-family: var(--font-display);
  font-size: calc(.76rem * var(--escala-texto, 1));
  font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
  white-space: nowrap;
}
.plantilla:hover .plantilla__accion{ background: #241600; }

/* En estrecho la acción baja a su propia línea; a tres columnas el rótulo
   «Descargar» comía el ancho del texto y lo partía en cuatro líneas. */
@media (max-width: 575.98px){
  .plantilla{ grid-template-columns: 44px 1fr; row-gap: .75rem; }
  .plantilla__accion{ grid-column: 1 / -1; justify-content: center; }
}

@media (prefers-reduced-motion: reduce){
  .plantilla{ transition: none; }
}

/* ---- La escala alcanza también a lo que viene del tema --------------------
   Estas clases se definen en cmp-tema.css y las usa todo el sistema, así que
   no se pueden encoger allí sin tocar el panel del empleador, el del gestor y
   la ficha del colegiado. Se reescriben acotadas al panel, con la misma
   variable y partiendo del mismo valor que el tema.

   Si algún día cambia el tamaño en cmp-tema.css, hay que traerlo aquí: es el
   precio de escalar solo una zona, y por eso cada regla anota su origen.
   -------------------------------------------------------------------------- */
.acceso__panel .form-label{ font-size: calc(.75rem * var(--escala-texto, 1)); }   /* tema: .75rem */
.acceso__panel .form-control,
.acceso__panel .form-select{ font-size: calc(.9rem * var(--escala-texto, 1)); }   /* tema: .9rem  */
.acceso__panel .cmp-aviso{ font-size: calc(.82rem * var(--escala-texto, 1)); }    /* tema: .82rem */

/* Los botones no declaran tamaño en el tema: heredan el del cuerpo. Los del
   acceso ya lo fijan con .btn-acceso; estos son los pequeños —«Subir» del
   cargador y la plantilla Word—, que toman el de Bootstrap. */
.acceso__panel .btn-sm{ font-size: calc(.875rem * var(--escala-texto, 1)); }

/* Bootstrap no fija tamaño en .form-check-label; se ancla para que la casilla
   de la declaración no quede mayor que el texto que la rodea. */
.acceso__panel .form-check-label{ font-size: calc(.85rem * var(--escala-texto, 1)); }

/* El enlace a los términos dentro de la casilla de aceptación.
   Es un <button> y no un <a> porque abre un diálogo en lugar de navegar, pero
   tiene que leerse como un enlace: es lo que dice al empleador que ahí hay algo
   que puede consultar antes de marcar la casilla. */
.acceso__enlace-terminos{
  padding: 0; border: none; background: none;
  font: inherit; color: var(--cmp-purple); font-weight: 600;
  text-decoration: underline; cursor: pointer;
}
.acceso__enlace-terminos:hover{ color: var(--purple-deep); }
.acceso__enlace-terminos:focus-visible{
  outline: 2px solid var(--cmp-gold); outline-offset: 2px; border-radius: 3px;
}

/* ---- Confirmación del registro ------------------------------------------- */
.acceso__marca-exito{
  width: 64px; height: 64px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--ok-tint); color: var(--ok);
  margin: 0 auto 1.25rem;
}

/* ---- Pantalla intermedia --------------------------------------------------
   Por debajo de 1100 px la curva y el solape dejan de tener sitio: el panel se
   pega al borde y recupera esquinas rectas.
   -------------------------------------------------------------------------- */
@media (max-width: 1099.98px){
  .acceso__panel{
    margin-left: 0;
    border-radius: 0;
    padding: 3rem 2.25rem;
  }
  .acceso__marca{ padding: 3rem 2.25rem; }
  .acceso__forma--esfera{ width: 220px; height: 220px; right: -40px; }
  .acceso__panel::after{ display: none; }
}

/* ---- Pantalla estrecha ---------------------------------------------------
   Una sola columna. El panel de marca se reduce a una banda: apilar la versión
   completa empujaría el formulario media pantalla hacia abajo, que es justo lo
   que no debe pasar en un móvil.
   -------------------------------------------------------------------------- */
@media (max-width: 767.98px){
  .acceso{ grid-template-columns: 1fr; }

  .acceso__marca{
    padding: 1.5rem 1.25rem 1.75rem;
    flex-direction: row; align-items: center; gap: 1rem;
  }
  .acceso__marca-fijo{
    display: flex; align-items: center; gap: 1rem;
    max-width: none; margin: 0;
  }

  /* 56 px es el suelo que se fija para digital. El mínimo de 25 mm de §1.8
     está enunciado para reproducción IMPRESA y no se traslada tal cual a una
     banda de cabecera; por debajo de esto el tumi deja de leerse. */
  .acceso__isologo{ width: 56px; height: 56px; padding: 6px; box-shadow: none; }

  .acceso__titulo{ font-size: 1.15rem; margin: 0; }
  .acceso__lema{ font-size: .7rem; margin: .15rem 0 0; }
  .acceso__bajada,
  .acceso__pie-marca,
  .acceso__forma{ display: none; }

  .acceso__panel{
    padding: 2rem 1.25rem 2.5rem;
    border-radius: 22px 22px 0 0;
    justify-content: flex-start;
  }
  .acceso__panel::after{ display: none; }
}

@media (prefers-reduced-motion: reduce){
  .acceso__opcion, .pasos__avance{ transition: none; }
  .acceso__opcion:hover{ transform: none; }
}
