/* Identidad: azul corporativo del logo (#004890) sobre letra blanca.
   Escala tipográfica, espaciado y áreas táctiles pensadas para el celular. */
:root {
  --azul: #004890;
  --azul-osc: #00305F;
  --azul-claro: #1266C4;
  --azul-suave: #E8F0FA;
  --blanco: #FFFFFF;
  --texto: #16202C;
  --texto-suave: #5B6B7C;
  --borde: #D8E1EC;
  --fondo: #F4F7FB;
  --ok: #0E8A4F;
  --alerta: #C2410C;
  --error: #C22B2B;

  --radio: 16px;
  --radio-chico: 12px;
  --sombra: 0 1px 2px rgba(0, 48, 95, .06), 0 8px 24px -12px rgba(0, 48, 95, .18);
  --sombra-alta: 0 2px 6px rgba(0, 48, 95, .08), 0 24px 48px -16px rgba(0, 48, 95, .28);

  /* Espaciado en em: si la persona agranda la letra del sistema, el diseño crece con ella. */
  --sp-1: .375rem;
  --sp-2: .75rem;
  --sp-3: 1rem;
  --sp-4: 1.375rem;

  --toque: 48px;              /* alto mínimo cómodo para el dedo */
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
  --safe-l: env(safe-area-inset-left, 0px);
  --safe-r: env(safe-area-inset-right, 0px);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html {
  /* Base en % para respetar el tamaño de letra que la persona configuró en su equipo. */
  font: 100%/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  -webkit-text-size-adjust: 100%;
  font-optical-sizing: auto;
}

body {
  margin: 0;
  background: var(--fondo);
  color: var(--texto);
  overscroll-behavior-y: contain;   /* evita el rebote de la página al arrastrar dentro */
  text-rendering: optimizeLegibility;
}

/* El texto grande se lee mejor con las letras algo más juntas y las líneas más ceñidas;
   el texto pequeño necesita justo lo contrario. */
h1, h2, .saludo, .exito .hora { letter-spacing: -.015em; line-height: 1.15; }
.ayuda, .pie, .check, .campo label { letter-spacing: .005em; }

/* Elementos táctiles: sin retardo de 300 ms y sin selección accidental al mantener pulsado. */
button, .btn, a, label, select, summary {
  touch-action: manipulation;
  -webkit-user-select: none; user-select: none;
}
input, textarea { -webkit-user-select: text; user-select: text; }

:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--azul) 55%, transparent);
  outline-offset: 2px;
  border-radius: 6px;
}

/* ---------- Encabezado ---------- */
.cabecera {
  background: var(--azul);          /* el mismo azul del logo y de los botones */
  color: var(--blanco);
  padding: calc(var(--sp-4) + var(--safe-t)) var(--sp-3) calc(var(--sp-4) + 26px);
  text-align: center;
  border-radius: 0 0 24px 24px;
}
.cabecera img { width: min(78%, 320px); height: auto; display: block; margin: 0 auto; }
.cabecera h1 { font-size: clamp(1rem, 4.2vw, 1.15rem); font-weight: 600; margin: var(--sp-2) 0 0; }
.cabecera p { margin: 4px 0 0; font-size: .85rem; line-height: 1.35; opacity: .88; }

.contenido {
  max-width: 560px;
  margin: -22px auto 0;
  padding: 0 max(var(--sp-3), var(--safe-l)) calc(var(--sp-4) + var(--safe-b)) max(var(--sp-3), var(--safe-r));
}

/* ---------- Tarjetas y pantallas ---------- */
.tarjeta {
  background: var(--blanco); border: 1px solid var(--borde);
  border-radius: var(--radio); box-shadow: var(--sombra);
  padding: var(--sp-4) var(--sp-3);
  margin-bottom: var(--sp-3);
}
.tarjeta h2 { margin: 0 0 4px; font-size: 1.2rem; color: var(--azul-osc); }
.tarjeta .ayuda { margin: 0 0 var(--sp-4); color: var(--texto-suave); font-size: .92rem; line-height: 1.45; }

/* Las pantallas del formulario se animan con resortes desde app.js.
   #pila es el marco cuya altura acompaña el cambio de una pantalla a otra. */
#pila { position: relative; }
.pantalla { will-change: transform, opacity; backface-visibility: hidden; }
.pantalla.saliendo { position: absolute; top: 0; left: 0; width: 100%; pointer-events: none; }

/* ---------- Formularios ---------- */
.campo { margin-bottom: var(--sp-3); }
.campo label { display: block; font-size: .85rem; font-weight: 600; color: var(--azul-osc); margin-bottom: 6px; }
.campo .opcional { font-weight: 400; color: var(--texto-suave); }

input:not([type="checkbox"]):not([type="radio"]), select, textarea {
  width: 100%;
  font-size: 1rem;              /* nunca menos de 16px: evita el zoom automático en iOS */
  font-family: inherit; color: var(--texto); background: var(--blanco);
  border: 1.5px solid var(--borde); border-radius: var(--radio-chico);
  padding: 13px 14px; min-height: var(--toque); appearance: none;
  transition: border-color 120ms ease-out, box-shadow 120ms ease-out, background-color 120ms ease-out;
}
select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23004890' stroke-width='2.5'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 18px; padding-right: 40px;
}
input:not([type="checkbox"]):not([type="radio"]):focus, select:focus, textarea:focus {
  outline: none; border-color: var(--azul); box-shadow: 0 0 0 4px rgba(0, 72, 144, .14);
}
input.invalido, select.invalido { border-color: var(--error); box-shadow: 0 0 0 4px rgba(194, 43, 43, .12); }
.fila { display: grid; grid-template-columns: minmax(96px, 30%) 1fr; gap: 10px; }

.subtitulo {
  margin: var(--sp-4) 0 var(--sp-2); padding-top: var(--sp-2); border-top: 1px solid var(--borde);
  font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
  color: var(--azul);
}

.check {
  display: flex; gap: 12px; align-items: flex-start;
  font-size: .85rem; line-height: 1.4; color: var(--texto-suave);
  padding: 12px 14px; border-radius: var(--radio-chico);
  background: #FAFCFE; box-shadow: inset 0 0 0 1.5px var(--borde);
  cursor: pointer;
  transition: background-color 160ms ease-out, box-shadow 160ms ease-out, color 160ms ease-out;
}
/* Marcada: la fila entera cambia, no solo el cuadrito. */
.check.marcado { background: var(--azul-suave); box-shadow: inset 0 0 0 1.5px var(--azul); color: var(--azul-osc); }
.check.invalido { background: #FDECEC; box-shadow: inset 0 0 0 1.5px var(--error); color: var(--error); }
.check:active { background: var(--azul-suave); }

/* Casilla nativa: conserva su marca de verificación y toma el azul de la empresa. */
.check input[type="checkbox"] {
  appearance: auto; -webkit-appearance: checkbox;
  accent-color: var(--azul);
  width: 26px; height: 26px; flex: 0 0 26px;
  min-height: 0; margin: 0; padding: 0; border: 0; border-radius: 0; background: none;
  cursor: pointer;
}
.check label { padding: 3px 0; cursor: pointer; }

/* ---------- Botones ---------- */
.btn {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; min-height: 54px; padding: 14px 18px;
  font-size: 1.02rem; font-weight: 600; font-family: inherit; letter-spacing: -.005em;
  border: none; border-radius: var(--radio); cursor: pointer;
  background: var(--azul); color: var(--blanco);
  /* La respuesta al dedo es inmediata; el regreso, un poco más suave. */
  transition: transform 220ms cubic-bezier(.22, 1, .36, 1), filter 160ms ease-out, opacity 160ms ease-out;
}
.btn:active { transform: scale(.97); filter: brightness(.94); transition-duration: 60ms; }
.btn:disabled { opacity: .55; cursor: progress; transform: none; }
.btn.secundario { background: var(--blanco); color: var(--azul); box-shadow: inset 0 0 0 1.5px var(--azul); }
.btn.fantasma { background: transparent; color: var(--azul); min-height: var(--toque); }
.btn.peligro { background: var(--error); }
.btn.chico { min-height: 38px; font-size: .85rem; padding: 8px 14px; width: auto; border-radius: 10px; }
.btn + .btn { margin-top: 10px; }

/* ---------- Resumen de datos ---------- */
.resumen { background: var(--azul-suave); border-radius: var(--radio-chico); padding: var(--sp-2) var(--sp-3); margin-bottom: var(--sp-3); }
.resumen dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; font-size: .9rem; }
.resumen dt { color: var(--texto-suave); }
.resumen dd { margin: 0; font-weight: 600; word-break: break-word; }

.saludo { font-size: clamp(1.3rem, 6vw, 1.5rem); font-weight: 700; color: var(--azul-osc); margin: 0 0 2px; }

/* ---------- Etiquetas ---------- */
.etiqueta {
  display: inline-block; padding: 3px 10px; border-radius: 999px;
  font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
}
.etiqueta.colaborador { background: var(--azul); color: var(--blanco); }
.etiqueta.visitante { background: var(--azul-suave); color: var(--azul-osc); }
.etiqueta.inactivo { background: #F3D9D9; color: var(--error); }

/* ---------- Confirmación ---------- */
.exito { text-align: center; }
.exito .marca {
  width: 84px; height: 84px; margin: 4px auto var(--sp-3); border-radius: 50%;
  background: var(--ok); color: var(--blanco); display: grid; place-items: center;
  font-size: 2.6rem; line-height: 1;
}
.exito .marca.aviso { background: var(--alerta); }
.exito h2 { font-size: clamp(1.3rem, 5.5vw, 1.5rem); }
.exito .hora { font-size: clamp(2rem, 9vw, 2.4rem); font-weight: 700; color: var(--azul); letter-spacing: -.01em; margin: var(--sp-3) 0 var(--sp-1); }
.exito h2 + .hora { margin-top: var(--sp-2); }
.exito .fecha { color: var(--texto-suave); font-size: .9rem; margin-bottom: var(--sp-3); }

.mensaje { border-radius: var(--radio-chico); padding: 12px 14px; font-size: .9rem; line-height: 1.4; margin-bottom: var(--sp-3); display: none; }
.mensaje.error { display: block; background: #FDECEC; color: var(--error); box-shadow: inset 0 0 0 1px #F3C9C9; }
.mensaje.info { display: block; background: var(--azul-suave); color: var(--azul-osc); }

.oculto { display: none !important; }
.pie { text-align: center; font-size: .75rem; color: var(--texto-suave); padding: var(--sp-1) 0 0; }
.pie a { color: var(--azul); text-decoration: none; }

/* ---------- Preferencias del sistema ---------- */

/* Movimiento reducido: se conserva la información, se quita el desplazamiento. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .btn:active { transform: none; filter: brightness(.94); }
}

/* Más contraste: bordes definidos y colores más sólidos. */
@media (prefers-contrast: more) {
  :root { --borde: #7C8CA0; --texto-suave: #3C4A5A; }
  .tarjeta { border-color: var(--borde); }
  input, select, textarea { border-width: 2px; }
  .btn.secundario { box-shadow: inset 0 0 0 2px var(--azul); }
}

/* Pantallas grandes: la tarjeta no necesita ocupar todo el ancho. */
@media (min-width: 700px) {
  .cabecera { padding-bottom: calc(var(--sp-4) + 34px); }
  .contenido { margin-top: -28px; }
  .tarjeta { padding: var(--sp-4) calc(var(--sp-4) + 4px); }
}

/* Celular acostado: el encabezado se encoge para no comerse la pantalla. */
@media (max-height: 460px) and (orientation: landscape) {
  .cabecera { padding-top: var(--sp-2); padding-bottom: calc(var(--sp-2) + 26px); }
  .cabecera img { width: min(50%, 220px); }
  .cabecera h1 { font-size: .95rem; }
  .cabecera p { display: none; }
}
