/* ──────────────────────────────────────────────────────────────────────────────
   formulario.css — el formulario de solicitud del sitio público.

   Vive aparte de contacto.css porque el formulario ya no es de una página: lo
   incluyen contacto.php e inicio.php desde el mismo parcial
   (formulario_solicitud.php). Dejarlo en contacto.css obligaba a inicio.php a
   cargar los estilos de otra página entera para pintar un formulario.

   OJO: toda página que incluya el parcial TIENE que cargar esta hoja en su
   <head>. Si no, el formulario sale sin estilos y no salta ningún error — hay
   una prueba que lo vigila (tests/test_sitio_solicitudes.php).
   ────────────────────────────────────────────────────────────────────────── */

.ct-form {
  max-width: 820px;
  margin: 0 auto;
}

.ct-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-4);
  margin-bottom: var(--sp-5);
}
.ct-campo-ancho { grid-column: 1 / -1; }

.ct-campo { display: flex; flex-direction: column; gap: var(--sp-2); }
.ct-campo > span {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--ink);
}
/* El asterisco de obligatorio, en el ámbar de la marca y no en rojo: marca un
   campo que falta, no un error que ya ocurrió. */
.ct-campo > span b { color: var(--solar-500); }

.ct-campo input,
.ct-campo select,
.ct-campo textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 0.6rem 0.8rem;
  font: inherit;
  font-size: var(--fs-base);
  color: var(--ink);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.ct-campo textarea { resize: vertical; min-height: 120px; }

.ct-campo input:focus,
.ct-campo select:focus,
.ct-campo textarea:focus {
  outline: none;
  border-color: var(--sky-600);
  box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15);
}

/* EL CAMPO TRAMPA. Se esconde con CSS y NO con type="hidden" a propósito:
   muchos robots saltan los hidden y sí rellenan los visibles. Tampoco
   display:none, que algunos detectan — se saca de la pantalla y se le quita el
   espacio, que es más difícil de distinguir de un campo normal. */
.ct-trampa {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* El aviso del resultado. Verde y ámbar, no verde y rojo: casi todos los
   errores de aquí son «te falta un dato», que es una corrección y no un fallo. */
.ct-aviso {
  max-width: 820px;
  margin: 0 auto var(--sp-5);
  padding: 0.8rem 1rem;
  border-radius: var(--r-sm);
  border: 1px solid;
  font-size: var(--fs-base);
}
.ct-aviso-ok    { background: #dcfce7; border-color: #86efac; color: #166534; }
.ct-aviso-error { background: #fef3c7; border-color: #fde68a; color: #92400e; }

.ct-form-nota {
  margin-top: var(--sp-4);
  font-size: var(--fs-sm);
  color: var(--ink-soft);
}

@media (max-width: 640px) {
  .ct-form-grid { grid-template-columns: minmax(0, 1fr); }
}
