/* Visita diaria — se carga detrás de estilos.css. Aquí la página sí
   desplaza (el visor 3D bloquea el scroll para el lienzo) y los campos van
   a 16px para que el iPhone no amplíe al tocarlos. */

.pagina-visita,
.pagina-visita body {
  height: auto;
  min-height: 100%;
  overflow: auto;
  overscroll-behavior: auto;
  touch-action: auto;
}

.barra-solida {
  position: sticky;
  background: rgba(var(--velo-rgb), .97);
  border-bottom: 1px solid var(--borde);
}

.contenido {
  max-width: 44rem;
  margin: 0 auto;
  padding: .8rem .9rem calc(var(--seguro-abajo) + 2rem);
}

.contenido[hidden] { display: none; }

.contenido .campo { font-size: 16px; }

.contenido label {
  display: block;
  font-size: .8rem;
  color: var(--texto-tenue);
}

.contenido label .campo { margin-top: .2rem; }

textarea.campo { resize: vertical; min-height: 2.8rem; line-height: 1.4; }

.dos { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }

.fila-botones { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .4rem; }

.boton-peligro { color: var(--peligro-texto); border-color: #6b2b2b; background: transparent; }

/* ---------- lista ---------- */

.tarjetas { display: flex; flex-direction: column; gap: .6rem; }

.tarjeta {
  display: block;
  padding: .75rem .85rem;
  border: 1px solid var(--borde);
  border-radius: .7rem;
  background: var(--fondo-2);
  color: var(--texto);
  text-decoration: none;
}

.tarjeta:active { background: var(--fondo-3); }
.tarjeta-fecha { font-size: .78rem; color: var(--acento); }
.tarjeta-obra { font-weight: 600; margin: .1rem 0 .2rem; }

.tarjeta-texto {
  color: var(--texto-tenue);
  font-size: .86rem;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  white-space: pre-line;
}

.tarjeta-datos {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem .8rem;
  margin-top: .4rem;
  font-size: .76rem;
  color: var(--texto-tenue);
}

.pendientes { color: var(--acento); }
.pendientes.grave { color: var(--peligro-texto); font-weight: 600; }

.copia { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--borde); }

/* ---------- ficha ---------- */

.ficha-barra {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: .6rem;
}

.ficha-barra .enlace { font-size: .95rem; text-decoration: none; }

#ficha .grupo {
  padding: .8rem .85rem;
  border: 1px solid var(--borde);
  border-radius: .7rem;
  background: var(--fondo-2);
}

#ficha .grupo h2 + .campo,
#ficha .grupo .campo + h2 { margin-top: .3rem; }

.chips { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-bottom: .7rem; }
.chips-etiqueta { margin: 0 .2rem 0 0; }

.chip {
  appearance: none;
  border: 1px solid var(--borde);
  background: var(--fondo);
  color: var(--texto);
  font: inherit;
  font-size: .85rem;
  padding: .45rem .8rem;
  min-height: 2.3rem;
  border-radius: 1.2rem;
  cursor: pointer;
}

.chip.activo { background: var(--acento); border-color: var(--acento-oscuro); color: var(--texto-sobre-acento); font-weight: 600; }

.filas-edicion { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .5rem; }

.fila-personal {
  display: grid;
  grid-template-columns: 1fr 1fr 3.6rem 2.4rem;
  gap: .35rem;
  align-items: start;
}

.fila-personal .campo { margin: 0; padding: .55rem .5rem; }

.quitar { padding: 0; min-width: 2.4rem; color: var(--texto-tenue); }

.incidencia {
  border-left: 4px solid var(--texto-tenue);
  padding-left: .55rem;
}

.incidencia.media { border-left-color: var(--acento); }
.incidencia.grave { border-left-color: #ff6b5e; }
.incidencia.cerrada { opacity: .55; }
.incidencia.cerrada textarea { text-decoration: line-through; }
.incidencia .campo { margin-bottom: .35rem; }

.incidencia-pie { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.incidencia-pie select { width: auto; margin: 0; padding: .45rem .5rem; }
.incidencia-pie .quitar { margin-left: auto; }
.incidencia-pie .pie { margin: 0; }

.casilla { display: inline-flex !important; align-items: center; gap: .35rem; color: var(--texto) !important; font-size: .88rem !important; }
.casilla input { width: 1.2rem; height: 1.2rem; accent-color: var(--acento); }

.fotos {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
  gap: .6rem;
  margin-bottom: .3rem;
}

.foto { position: relative; margin: 0; }

.foto img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: .5rem;
  background: var(--fondo);
  cursor: zoom-in;
}

.foto .campo { margin: .3rem 0 0; padding: .4rem .5rem; font-size: 14px; }

.foto .quitar {
  position: absolute;
  top: .3rem; right: .3rem;
  min-height: 2rem; min-width: 2rem;
  background: rgba(var(--velo-rgb), .8);
}

.firma {
  display: block;
  width: 100%;
  height: 9rem;
  border-radius: .5rem;
  background: var(--color-light-bg);
  touch-action: none;
}

.firma-caja { position: relative; }
.firma-caja:not(.bloqueada) .firma { outline: 3px solid var(--acento); outline-offset: 2px; }
/* Bloqueada, el dedo desplaza la página en vez de dibujar. */
.firma-caja.bloqueada .firma { touch-action: auto; opacity: .92; }
.firma-firmar {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 4px 14px rgba(0,0,0,.35);
}
.firma-firmar[hidden] { display: none; }
/* Con la firma hecha, el botón se aparta para que se vea. */
.firma-caja.con-firma .firma-firmar { left: auto; top: auto; right: .5rem; bottom: .5rem; transform: none; }

.acciones-ficha { display: flex; flex-direction: column; gap: .6rem; background: none !important; border: 0 !important; padding: 0 !important; }
.acciones-ficha .boton { margin: 0; }

.foto-grande {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.92);
  cursor: zoom-out;
}

.foto-grande[hidden] { display: none; }
.foto-grande img { max-width: 100%; max-height: 100%; object-fit: contain; }

.pagina-visita .aviso { bottom: calc(var(--seguro-abajo) + 1.2rem); }

/* ---------- punch list ---------- */

:root {
  --repaso-pendiente: #ff6b5e;
  --repaso-corregido: #f0b43c;
  --repaso-cerrado: #3fbf86;
}

.repasos { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .4rem; }

.repaso {
  border: 1px solid var(--borde);
  border-left: 4px solid var(--repaso-pendiente);
  border-radius: .55rem;
  background: var(--fondo);
}

.repaso.estado-corregido { border-left-color: var(--repaso-corregido); }
.repaso.estado-cerrado { border-left-color: var(--repaso-cerrado); }
.repaso.estado-cerrado .repaso-resumen { opacity: .6; }

.repaso-resumen {
  appearance: none;
  display: flex;
  align-items: center;
  gap: .55rem;
  width: 100%;
  padding: .5rem .55rem;
  border: 0;
  background: none;
  color: var(--texto);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.repaso-num {
  flex: 0 0 auto;
  min-width: 2rem;
  height: 2rem;
  padding: 0 .35rem;
  border-radius: 1rem;
  background: var(--fondo-3);
  font-weight: 700;
  font-size: .85rem;
  line-height: 2rem;
  text-align: center;
}

.prioridad-alta .repaso-num { background: var(--repaso-pendiente); color: #fff; }

.repaso-textos { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.repaso-textos strong { font-size: .86rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.repaso-textos span { font-size: .82rem; color: var(--texto-tenue); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.repaso-mini {
  flex: 0 0 auto;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: .35rem;
  object-fit: cover;
  background: var(--fondo-2);
}

.repaso-mini.vacia { border: 1px dashed var(--borde); }
.repaso-mini.despues { outline: 2px solid var(--repaso-cerrado); outline-offset: -2px; }
.repaso-mini.despues.vacia { outline: 0; }

.repaso-estado {
  flex: 0 0 auto;
  font-size: .72rem;
  font-weight: 700;
  color: var(--repaso-pendiente);
}

.estado-corregido .repaso-estado { color: var(--repaso-corregido); }
.estado-cerrado .repaso-estado { color: var(--repaso-cerrado); }

.repaso-editor { padding: .2rem .6rem .7rem; border-top: 1px solid var(--borde); }
.repaso-editor > * { margin-top: .5rem; }
.repaso-editor .campo { margin-bottom: 0; }
.repaso-estados { margin-bottom: 0; }
.repaso-estados .chip.activo.estado-pendiente { background: var(--repaso-pendiente); border-color: var(--repaso-pendiente); color: #fff; }
.repaso-estados .chip.activo.estado-corregido { background: var(--repaso-corregido); border-color: var(--repaso-corregido); color: #1b1300; }
.repaso-estados .chip.activo.estado-cerrado { background: var(--repaso-cerrado); border-color: var(--repaso-cerrado); color: #04170e; }

.repaso-fotos-cabecera { display: flex; align-items: center; gap: .6rem; }
.repaso-fotos-cabecera h3 { flex: 1; margin: 0; font-size: .72rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--texto-tenue); }
.repaso-fotos-cabecera .boton { min-height: 2.2rem; padding: .3rem .7rem; }

.repaso-pie { display: flex; align-items: center; justify-content: space-between; gap: .6rem; flex-wrap: wrap; }
.repaso-pie .pie { margin: 0; }
.boton-peligro-texto { color: var(--peligro-texto) !important; }

/* ---------- planos en la ficha ---------- */

.planos { display: grid; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); gap: .6rem; margin-bottom: .4rem; }

.plano-ficha { position: relative; }

.plano-abrir {
  appearance: none;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  width: 100%;
  padding: 0 0 .4rem;
  border: 1px solid var(--borde);
  border-radius: .55rem;
  background: var(--fondo);
  color: var(--texto);
  font: inherit;
  text-align: left;
  overflow: hidden;
  cursor: pointer;
}

.plano-abrir img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #fff; }
.plano-abrir .plano-titulo { padding: 0 .55rem; font-size: .86rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.plano-abrir .pie { padding: 0 .55rem; margin: 0; }

.plano-ficha .quitar {
  position: absolute;
  top: .3rem; right: .3rem;
  min-height: 2rem; min-width: 2rem;
  background: rgba(var(--velo-rgb), .8);
}

.foto-nota {
  position: absolute;
  top: .3rem; left: .3rem;
  appearance: none;
  border: 2px solid #fff;
  border-radius: 1rem;
  padding: .15rem .55rem;
  font: 700 .74rem "Inter", system-ui, sans-serif;
  color: #fff;
  background: var(--nota-observacion);
  cursor: pointer;
}

/* colores de los tipos de nota (los mismos que pinta el informe) */
:root {
  --nota-observacion: #3d7cc4;
  --nota-incidencia: #d64545;
  --nota-avance: #2f9e6a;
}

.tipo-observacion { background: var(--nota-observacion) !important; }
.tipo-incidencia { background: var(--nota-incidencia) !important; }
.tipo-avance { background: var(--nota-avance) !important; }

/* ---------- plano a pantalla completa ---------- */

.con-plano, .con-plano body { overflow: hidden; }

.plano-capa {
  position: fixed;
  inset: 0;
  z-index: 65;
  display: flex;
  flex-direction: column;
  background: var(--fondo);
}

.plano-capa[hidden] { display: none; }

.plano-barra {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: calc(var(--seguro-arriba) + .4rem) .6rem .4rem;
  background: var(--fondo-2);
  border-bottom: 1px solid var(--borde);
}

.plano-nombre { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.plano-ayuda {
  margin: 0;
  padding: .35rem .8rem;
  font-size: .8rem;
  color: var(--texto-tenue);
  background: var(--fondo-2);
}

.anadiendo .plano-ayuda { background: var(--acento); color: var(--texto-sobre-acento); font-weight: 600; }
.anadiendo .plano-marco { cursor: crosshair; }

.plano-marco {
  position: relative;
  flex: 1;
  overflow: hidden;
  touch-action: none;
  background: #5b6577;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

.plano-lienzo {
  position: absolute;
  top: 0; left: 0;
  transform-origin: 0 0;
  --inversa: 1;
}

.plano-lienzo img {
  display: block;
  width: 100%;
  height: 100%;
  user-select: none;
  -webkit-user-drag: none;
  pointer-events: none;
  box-shadow: 0 0 0 1px rgba(0,0,0,.2), 0 10px 40px rgba(0,0,0,.4);
}

.plano-pines { position: absolute; inset: 0; }

/* El pin no crece con el zoom: se compensa con la escala inversa. */
.pin {
  position: absolute;
  min-width: 2rem;
  height: 2rem;
  padding: 0 .45rem;
  border: 2px solid #fff;
  border-radius: 1rem;
  color: #fff;
  font: 700 .85rem/1.75rem "Inter", system-ui, sans-serif;
  text-align: center;
  transform: translate(-50%, -50%) scale(var(--inversa));
  box-shadow: 0 2px 8px rgba(0,0,0,.45);
  cursor: pointer;
  background: var(--nota-observacion);
}

.pin.activo { outline: 3px solid var(--texto); outline-offset: 2px; z-index: 2; }
.pin-fijo { position: static; transform: none; display: inline-block; flex: 0 0 auto; }

.nota-hoja {
  max-height: 55%;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: .7rem .8rem calc(var(--seguro-abajo) + .8rem);
  background: var(--fondo-2);
  border-top: 1px solid var(--borde);
  box-shadow: 0 -8px 30px rgba(0,0,0,.45);
}

.nota-hoja[hidden] { display: none; }
.nota-hoja .campo { font-size: 16px; }

.nota-cabecera { display: flex; align-items: center; gap: .55rem; margin-bottom: .6rem; }
.nota-cabecera .quitar { margin-left: auto; }

.nota-fotos { display: flex; gap: .45rem; overflow-x: auto; margin: .2rem 0 .3rem; }
.nota-fotos figure { position: relative; margin: 0; flex: 0 0 auto; }
.nota-fotos img { display: block; width: 6.5rem; height: 4.9rem; object-fit: cover; border-radius: .45rem; cursor: zoom-in; }
.nota-fotos .quitar { position: absolute; top: .2rem; right: .2rem; min-height: 1.8rem; min-width: 1.8rem; background: rgba(var(--velo-rgb), .8); }

.vincular { display: flex; gap: .4rem; flex-wrap: wrap; margin: .5rem 0; }
.vincular[hidden] { display: none; }

.vincular-foto {
  position: relative;
  appearance: none;
  padding: 0;
  border: 2px solid var(--borde);
  border-radius: .45rem;
  background: none;
  overflow: hidden;
  cursor: pointer;
}

.vincular-foto img { display: block; width: 4.6rem; height: 3.5rem; object-fit: cover; }
.vincular-foto span { position: absolute; bottom: .1rem; right: .2rem; font-size: .68rem; font-weight: 700; color: #fff; text-shadow: 0 1px 2px #000; }

.nota-acciones { justify-content: space-between; margin-top: .8rem; }

/* ---------- dibujo a mano alzada ---------- */

.plano-trazos {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.plano-trazos polyline { fill: none; stroke-linecap: round; stroke-linejoin: round; }

.dibujando .plano-marco { cursor: crosshair; }
.dibujando .plano-ayuda { background: var(--color-accent-800); color: var(--texto); }
/* Mientras se dibuja, los números no deben robar el trazo. */
.dibujando .pin { pointer-events: none; opacity: .75; }

.plano-herramientas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem .7rem;
  padding: .45rem .7rem;
  background: var(--fondo-2);
  border-bottom: 1px solid var(--borde);
}

.plano-herramientas[hidden] { display: none; }
.plano-herramientas .boton { min-height: 2.2rem; padding: .35rem .6rem; }
.plano-herramientas .boton.activo { background: var(--acento); border-color: var(--acento-oscuro); color: var(--texto-sobre-acento); font-weight: 600; }

.colores, .grosores { display: flex; gap: .35rem; }

.color {
  appearance: none;
  width: 2.1rem;
  height: 2.1rem;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,.25);
  cursor: pointer;
}

.color.activo { border-color: #fff; box-shadow: 0 0 0 2px var(--acento); }

.grosor {
  appearance: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.3rem;
  height: 2.1rem;
  border: 1px solid var(--borde);
  border-radius: .45rem;
  background: var(--fondo);
  cursor: pointer;
}

.grosor.activo { border-color: var(--acento); background: var(--fondo-3); }
.raya { display: block; width: 1.3rem; border-radius: 2px; background: var(--texto); }
.raya-fino { height: 2px; }
.raya-medio { height: 4px; }
.raya-grueso { height: 8px; }

/* ---------- detalles de la nota ---------- */

.nota-detalle { margin-top: .7rem; padding-top: .55rem; border-top: 1px solid var(--borde); }
.nota-detalle h3 { margin: 0 0 .35rem; font-size: .72rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--texto-tenue); }

.fila-pintura, .fila-enlace { display: grid; gap: .35rem; align-items: center; margin-bottom: .45rem; }
.fila-pintura { grid-template-columns: 2.6rem 1fr 1fr 2.4rem; }
.fila-pintura select { grid-column: 2 / 4; }
.fila-enlace { grid-template-columns: 1fr auto 2.4rem; }
.fila-enlace input[type=url] { grid-column: 1 / 2; grid-row: 2; }
.fila-enlace .abrir-enlace { grid-column: 2; grid-row: 1 / 3; }
.fila-enlace .quitar { grid-column: 3; grid-row: 1 / 3; }
.fila-pintura .campo, .fila-enlace .campo { margin: 0; padding: .5rem .55rem; }
.abrir-enlace[hidden] { display: none; }

.muestra-color {
  width: 2.6rem;
  height: 2.6rem;
  padding: 0;
  border: 1px solid var(--borde);
  border-radius: .45rem;
  background: none;
  cursor: pointer;
  grid-row: 1 / 3;
}

/* ---------- cuentas y diálogos ---------- */

.cuentas { display: flex; flex-direction: column; gap: .5rem; margin-top: .5rem; }

.cuenta {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .65rem .75rem;
  border: 1px solid var(--borde);
  border-radius: .6rem;
  background: var(--fondo-2);
}

.cuenta.vinculada { border-color: var(--color-accent-700); }
.cuenta-datos { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cuenta-datos .pie { margin: 0; }
.cuenta-estado { font-size: .82rem; color: var(--texto-tenue); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cuenta.vinculada .cuenta-estado { color: var(--color-accent-300); }
.cuentas > .enlace { align-self: flex-start; }

.dialogo {
  width: min(34rem, calc(100vw - 1.5rem));
  max-height: calc(100vh - 2rem);
  padding: 0;
  border: 1px solid var(--borde);
  border-radius: .8rem;
  background: var(--fondo-2);
  color: var(--texto);
  box-shadow: 0 20px 60px rgba(0,0,0,.6);
}

.dialogo::backdrop { background: rgba(8,12,20,.7); }

.dialogo-cabecera {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .6rem .8rem;
  border-bottom: 1px solid var(--borde);
}

.dialogo-cabecera h2 { margin: 0; font-size: 1rem; }
.dialogo-cuerpo { padding: .8rem; overflow-y: auto; }
.dialogo-cuerpo > * + * { margin-top: .6rem; }
.dialogo label { display: block; font-size: .8rem; color: var(--texto-tenue); }
.dialogo label .campo { margin-top: .2rem; font-size: 16px; }
.dialogo .casilla { color: var(--texto); }
.dialogo-formulario > * + * { margin-top: .5rem; }
.dialogo .opcion { display: flex; align-items: center; gap: .4rem; font-size: .9rem; color: var(--texto); }
.dialogo .error { color: var(--peligro-texto); }
.dialogo a.boton { margin-top: .4rem; }

.copias { display: flex; flex-direction: column; gap: .4rem; }
.copia-fila { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .45rem 0; border-bottom: 1px solid var(--borde); font-size: .86rem; overflow-wrap: anywhere; }

.legal-pie { margin-top: 2rem; text-align: center; }
.legal-pie a { color: var(--seleccion); }

.pagina-visita .aviso { z-index: 80; }

/* ---------- cuenta y equipo ---------- */

.equipo { margin-bottom: 1rem; padding: .8rem .85rem; border: 1px solid var(--borde); border-radius: .7rem; background: var(--fondo-2); }
.equipo > h2 { margin-top: 0; }
.equipo .fila-botones { margin-top: .5rem; }

.inicial {
  flex: 0 0 auto;
  width: 2.3rem;
  height: 2.3rem;
  border-radius: 50%;
  background: var(--acento);
  color: var(--texto-sobre-acento);
  font-weight: 700;
  line-height: 2.3rem;
  text-align: center;
}

.estado-sinc { margin: .4rem 0 0; }
.estado-sinc.fase-error, .estado-sinc.fase-sin-red { color: var(--aviso-texto); }

.aviso-verificar, .invitacion, .aviso-invitacion {
  margin-top: .6rem;
  padding: .55rem .7rem;
  border-radius: .55rem;
  background: var(--fondo-3);
  border-left: 3px solid var(--acento);
  font-size: .86rem;
}
.aviso-verificar p, .invitacion p, .aviso-invitacion p { margin: 0 0 .3rem; }

.equipo-sub, .dialogo-sub { margin: 1rem 0 .4rem; font-size: .72rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--texto-tenue); }

.obras-compartidas { display: flex; flex-direction: column; gap: .4rem; }
.obra-compartida {
  appearance: none;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: .55rem .7rem;
  border: 1px solid var(--borde);
  border-radius: .55rem;
  background: var(--fondo);
  color: var(--texto);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.obra-nombre { font-weight: 600; }
.obra-compartida .pie { margin: 0; }

.cuenta-pie { justify-content: space-between; }

.miembro { display: flex; align-items: center; gap: .5rem; padding: .45rem 0; border-bottom: 1px solid var(--borde); }
.miembro-datos { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.miembro-datos strong, .miembro-datos .pie { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0; }
.miembro-rol { font-size: .8rem; color: var(--texto-tenue); }
.dialogo .selector-rol { width: auto; margin: 0; padding: .4rem .45rem; font-size: 14px; }
.opciones-obra { display: flex; flex-wrap: wrap; gap: .35rem; }
.acciones-obra { margin-top: 1rem; }

.compartida { color: var(--color-accent-300); }

.equipos-obra { margin-top: .4rem; }
.vincular-equipo { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; align-items: end; margin-top: .4rem; }
.vincular-equipo .campo { margin: 0; }
.vincular-equipo .boton { grid-column: 1 / -1; justify-self: start; }
.obras-equipo { margin: 0; padding-left: 1.1rem; font-size: .9rem; }
.repaso-asignado { color: var(--color-accent-300) !important; }

.mi-repaso { padding: .55rem .65rem; }
.mi-repaso-cabecera { display: flex; align-items: center; gap: .55rem; }
.mi-repaso-texto { margin: .45rem 0 .2rem; }
.mi-repaso-sub { margin: .5rem 0 .2rem; font-size: .7rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--texto-tenue); }
.mi-repaso .prioridad { color: var(--peligro-texto); }

.aviso-lectura {
  margin: 0 0 .6rem;
  padding: .5rem .7rem;
  border-radius: .55rem;
  background: rgba(240,180,60,.12);
  border: 1px solid rgba(240,180,60,.45);
  font-size: .84rem;
}
.aviso-lectura[hidden] { display: none; }

/* ---------- informe impreso ---------- */

.informe { display: none; }

@media print {
  @page { size: A4; margin: 14mm 13mm; }

  .pagina-visita,
  .pagina-visita body { background: #fff; color: #111; font-size: 10.5pt; }

  .pagina-visita body > *:not(.informe) { display: none !important; }

  /* Línea de impresos de la marca: fondo #eef1f6, acento #3d7cc4,
     bandas #1b3560. Los fondos se fuerzan para que salgan en el PDF. */
  .informe {
    display: block;
    font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    color: #121826;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .informe-banda {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0 0 5mm;
    padding: 3.5mm 5mm;
    background: #1b3560;
    color: #fff;
  }

  .informe-banda .marca { color: #fff; font-size: 13pt; }
  .informe-tipo { font-size: 8pt; letter-spacing: .16em; text-transform: uppercase; color: #bcd6f3; }

  .informe h1 { margin: 0; font-size: 17pt; font-weight: 600; color: #1b3560; }
  .informe-obra { margin: .1rem 0 .6rem; font-size: 13pt; font-weight: 600; color: #3d7cc4; }

  .informe h2 {
    margin: 1.1rem 0 .35rem;
    padding-bottom: .15rem;
    font-size: 9pt;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #1b3560;
    border-bottom: 1.5pt solid #3d7cc4;
  }

  .informe section { break-inside: avoid-page; }
  .informe .parrafo { margin: 0; white-space: pre-wrap; }

  .informe table { width: 100%; border-collapse: collapse; }
  .informe th, .informe td { text-align: left; vertical-align: top; padding: .25rem .4rem; border-bottom: .5pt solid #ccc; }
  .informe thead th { font-size: 8.5pt; color: #1b3560; background: #eef1f6; }
  .informe-datos th { width: 28%; color: #555; font-weight: 500; }
  .informe-datos td { text-transform: none; }
  .informe .num { text-align: right; width: 3rem; }
  .informe-nota { color: #777; font-size: 8.5pt; }

  .informe-fotos { display: grid; grid-template-columns: 1fr 1fr; gap: 5mm; }
  .informe-fotos figure { margin: 0; break-inside: avoid; }
  .informe-fotos img { width: 100%; max-height: 80mm; object-fit: contain; border: .5pt solid #ddd; }
  .informe-fotos figcaption { font-size: 8.5pt; color: #444; margin-top: 1mm; }

  .informe-detalles { margin-top: 1.5mm; font-size: 8.5pt; color: #333; }
  .informe-detalles > div { margin-top: .6mm; }
  .informe-detalles a { color: #3d7cc4; }
  .informe .muestra { display: inline-block; width: 9pt; height: 9pt; margin-right: 3pt; vertical-align: -1pt; border: .5pt solid #888; border-radius: 1.5pt; }

  .informe-plano > img { display: block; width: 100%; max-height: 170mm; object-fit: contain; border: .5pt solid #ccc; margin-bottom: 3mm; }
  .informe section.informe-plano { break-inside: auto; }

  .informe-repasos { break-inside: auto !important; }
  .informe-repasos tr { break-inside: avoid; }
  .informe-repasos td { font-size: 9pt; }
  .informe-mini { width: 25mm; }
  .informe-mini img { display: block; width: 24mm; height: 18mm; object-fit: cover; border: .5pt solid #ccc; }
  .informe-repasos tr.estado-pendiente td:first-child { border-left: 2.5pt solid #d64545; }
  .informe-repasos tr.estado-corregido td:first-child { border-left: 2.5pt solid #e0a526; }
  .informe-repasos tr.estado-cerrado td:first-child { border-left: 2.5pt solid #2f9e6a; }
  .informe-alta { margin-top: .6mm; font-size: 8pt; font-weight: 600; color: #c0392b; }

  .informe-firma img, .informe-hueco { display: block; height: 28mm; max-width: 80mm; object-fit: contain; }
  .informe-hueco { border-bottom: .5pt solid #999; width: 80mm; }
  .informe-firma p { margin: .2rem 0 0; }

  .informe-pie {
    display: flex;
    justify-content: space-between;
    gap: 4mm;
    margin-top: 8mm;
    padding: 2.5mm 4mm;
    background: #eef1f6;
    border-top: 1.5pt solid #1b3560;
    font-size: 7.5pt;
    color: #22436f;
  }
}

/* ---------- dictado por voz (js/dictado.js) ---------- */

.con-dictado { position: relative; display: block; }
.con-dictado > textarea.campo { width: 100%; padding-right: 2.9rem; }
.boton-dictado {
  position: absolute; right: .35rem; bottom: .4rem;
  width: 2.2rem; height: 2.2rem; padding: 0;
  display: grid; place-items: center;
  border: 1px solid var(--borde); border-radius: 50%;
  background: var(--fondo-2); color: var(--acento);
  cursor: pointer;
}
.boton-dictado svg { width: 1.15rem; height: 1.15rem; fill: currentColor; }
.boton-dictado.escuchando {
  background: #c62828; border-color: #c62828; color: #fff;
  animation: dictado-pulso 1.2s ease-in-out infinite;
}
@keyframes dictado-pulso {
  0%, 100% { box-shadow: 0 0 0 0 rgba(198,40,40,.55); }
  50% { box-shadow: 0 0 0 .45rem rgba(198,40,40,0); }
}
@media (prefers-reduced-motion: reduce) { .boton-dictado.escuchando { animation: none; } }

/* ---------- temperatura del lugar (js/clima.js) ---------- */

.temperatura-fila { display: flex; align-items: flex-end; gap: .5rem; }
.temperatura-fila label { flex: 1; }
.temperatura-fila .boton { white-space: nowrap; margin-bottom: .05rem; }

/* ---------- texto predictivo (js/predictivo.js) ---------- */

.sugerencias {
  display: flex; flex-wrap: wrap; gap: .35rem;
  margin: .35rem 0 .2rem;
}
.sugerencias[hidden] { display: none; }
.sugerencia {
  max-width: 100%;
  padding: .4rem .7rem;
  border: 1px solid var(--color-accent-800);
  border-radius: 1rem;
  background: var(--color-accent-900);
  color: var(--color-accent-300);
  font: inherit; font-size: .85rem; text-align: left;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  cursor: pointer;
}
.sugerencia:active { background: var(--color-accent-800); }

/* ---------- horas de incidencias en el informe ---------- */
.informe-hora { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ---------- informe impreso · diseño profesional (v21) ---------- */
@media print {
  @page {
    size: A4;
    margin: 14mm 13mm 16mm;
    @bottom-left { content: "COORDINATE · Parte de visita de obra"; font: 7pt "Inter", sans-serif; color: #6b7a90; }
    @bottom-right { content: "Página " counter(page) " de " counter(pages); font: 7pt "Inter", sans-serif; color: #6b7a90; }
  }

  .informe { font-size: 9.5pt; line-height: 1.45; }

  .informe-banda { margin: 0 0 4mm; padding: 4mm 5mm; border-radius: 1.5mm; background: linear-gradient(90deg, #121826, #1b3560); }
  .informe-banda-doc { display: flex; flex-direction: column; align-items: flex-end; gap: .4mm; }
  .informe-banda-doc strong { font-size: 10pt; letter-spacing: .06em; color: #fff; font-variant-numeric: tabular-nums; }

  .informe-cabecera { display: flex; justify-content: space-between; align-items: flex-end; gap: 6mm; padding-bottom: 3mm; border-bottom: .6pt solid #c9d3e2; }
  .informe-cabecera h1 { font-size: 19pt; font-weight: 700; letter-spacing: -.01em; }
  .informe-obra { margin: .5mm 0 0; font-size: 12pt; }
  .informe-sello { display: flex; flex-direction: column; align-items: flex-end; font-size: 7.5pt; color: #6b7a90; text-transform: uppercase; letter-spacing: .08em; }
  .informe-sello strong { font-size: 10pt; color: #121826; letter-spacing: 0; text-transform: none; }

  .informe-ficha { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin: 4mm 0 3mm; border: .6pt solid #c9d3e2; border-radius: 1.5mm; overflow: hidden; }
  .informe-dato { display: flex; flex-direction: column; gap: .5mm; padding: 2.2mm 3mm; border-right: .6pt solid #e1e7ef; border-bottom: .6pt solid #e1e7ef; background: #fff; }
  .informe-dato:nth-child(3n) { border-right: 0; }
  .informe-dato span { font-size: 6.8pt; text-transform: uppercase; letter-spacing: .1em; color: #6b7a90; }
  .informe-dato strong { font-size: 9.5pt; font-weight: 600; color: #121826; }

  .informe-cifras { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2.5mm; margin: 0 0 5mm; }
  .informe-cifra { display: flex; align-items: baseline; gap: 2mm; padding: 2.5mm 3mm; border-radius: 1.5mm; background: #eef1f6; border-left: 2pt solid #3d7cc4; }
  .informe-cifra strong { font-size: 15pt; font-weight: 700; color: #1b3560; font-variant-numeric: tabular-nums; }
  .informe-cifra span { font-size: 7.5pt; color: #3b4a60; line-height: 1.25; }
  .informe-cifra.alerta { border-left-color: #c0392b; }
  .informe-cifra.alerta strong { color: #c0392b; }
  .informe-cifra.aviso { border-left-color: #d08a12; }

  .informe h2.informe-h2 {
    display: flex; align-items: center; gap: 2.5mm;
    margin: 6mm 0 2.5mm; padding: 0 0 1.5mm;
    font-size: 9.5pt; letter-spacing: .06em; text-transform: uppercase; color: #1b3560;
    border-bottom: .6pt solid #c9d3e2;
    break-after: avoid;
  }
  .informe-h2-n { display: inline-grid; place-items: center; min-width: 6.5mm; height: 6.5mm; border-radius: 1mm; background: #1b3560; color: #fff; font-size: 7.5pt; letter-spacing: 0; }
  .informe-h2-extra { margin-left: auto; font-size: 7.5pt; letter-spacing: .02em; text-transform: none; color: #6b7a90; font-weight: 500; }
  .informe h3 { margin: 0 0 1mm; font-size: 7.5pt; text-transform: uppercase; letter-spacing: .08em; color: #3d7cc4; }

  .informe table.informe-tabla { border: .6pt solid #c9d3e2; border-radius: 1.5mm; border-collapse: separate; border-spacing: 0; overflow: hidden; }
  .informe .informe-tabla thead th { padding: 1.8mm 2.5mm; font-size: 7.2pt; text-transform: uppercase; letter-spacing: .07em; color: #fff; background: #1b3560; border: 0; }
  .informe .informe-tabla td { padding: 1.8mm 2.5mm; border-bottom: .5pt solid #e1e7ef; }
  .informe .informe-tabla tbody tr:nth-child(even) td { background: #f6f8fb; }
  .informe .informe-tabla tbody tr:last-child td { border-bottom: 0; }
  .informe .informe-tabla tr { break-inside: avoid; }

  .informe-tiempo .informe-hora { width: 16mm; }
  .informe-reloj { display: inline-block; padding: .4mm 1.6mm; border-radius: 1mm; background: #e6eef9; color: #1b3560; font-weight: 600; font-variant-numeric: tabular-nums; }
  .informe-hora { white-space: nowrap; font-variant-numeric: tabular-nums; }

  .informe-dos { display: grid; grid-template-columns: 1fr 1fr; gap: 3mm; }
  .informe-dos > div { padding: 2.5mm 3mm; border: .6pt solid #c9d3e2; border-radius: 1.5mm; }

  .informe .parrafo { padding: 0 .5mm; }

  .informe-etiqueta { display: inline-block; padding: .4mm 2mm; border-radius: 3mm; font-size: 7.5pt; font-weight: 600; white-space: nowrap; }
  .informe-etiqueta.grav-leve { background: #e6f4ec; color: #1e7a4c; }
  .informe-etiqueta.grav-media { background: #fdf1dc; color: #9a6206; }
  .informe-etiqueta.grav-grave { background: #fbe3e1; color: #b0302a; }
  .informe-etiqueta.abierta { background: #fbe3e1; color: #b0302a; }
  .informe-etiqueta.ok { background: #e6f4ec; color: #1e7a4c; }

  .informe-fotos { gap: 4mm; }
  .informe-fotos figure { padding: 1.5mm; border: .6pt solid #c9d3e2; border-radius: 1.5mm; }
  .informe-fotos img { border: 0; border-radius: 1mm; background: #f6f8fb; }
  .informe-fotos figcaption { padding: 1mm .5mm 0; font-size: 7.5pt; }

  .informe-firma { break-inside: avoid; }
  .informe-firmas { display: grid; grid-template-columns: 1fr 1fr; gap: 8mm; margin-top: 2mm; }
  .informe-firma-caja { display: flex; flex-direction: column; gap: .8mm; padding-top: 1mm; }
  .informe-firma-caja img, .informe-firma-caja .informe-hueco { height: 24mm; width: 100%; max-width: none; object-fit: contain; object-position: left bottom; border-bottom: .8pt solid #121826; }
  .informe-firma-caja strong { margin-top: 1mm; font-size: 9pt; }
  .informe-firma-caja span { font-size: 7.5pt; color: #6b7a90; text-transform: uppercase; letter-spacing: .06em; }

  .informe-legal { margin: 6mm 0 0; font-size: 7pt; color: #6b7a90; line-height: 1.4; }
  .informe-pie { margin-top: 3mm; border-radius: 1.5mm; }
}

/* ---------- firma adjunta / mi firma ---------- */
.firma-opciones { align-items: center; }
.firma-opciones .enlace { margin-left: auto; }

/* ---------- dictado: vista previa y estado «oyendo» ---------- */
.dictado-vista { margin: .3rem 0 0; padding: .35rem .6rem; border-radius: .5rem; background: rgba(198,40,40,.12); color: var(--texto); font-size: .9rem; font-style: italic; }
.boton-dictado.escuchando:not(.oyendo) { background: #8e2a2a; animation: none; opacity: .85; }
textarea.campo.dictando { caret-color: transparent; }

/* ---------- botón de tema (js/tema.js) ---------- */

/* ---------- medir sobre el plano (js/medir-plano.js) ---------- */

.plano-medidas { z-index: 1; }
.plano-medidas .medida { fill: none; stroke: #ff6b2c; stroke-linecap: round; stroke-linejoin: round; }
.plano-medidas .medida-area { fill: rgba(255, 107, 44, .14); }
.plano-medidas .medida.en-curso { stroke: #ff3d00; }
.plano-medidas .medida-punto { fill: #ff6b2c; stroke: #fff; stroke-width: 1; }
.plano-medidas .medida-punto.en-curso { fill: #ff3d00; }

.plano-etiquetas { position: absolute; inset: 0; pointer-events: none; z-index: 2; }
.medida-etiqueta {
  position: absolute;
  pointer-events: auto;
  padding: .15rem .5rem;
  border: 2px solid #ff6b2c;
  border-radius: .5rem;
  background: #fff;
  color: #121826;
  font: 700 .82rem/1.2 "Inter", system-ui, sans-serif;
  white-space: nowrap;
  transform: translate(-50%, -50%) scale(var(--inversa));
  box-shadow: 0 2px 6px rgba(0, 0, 0, .3);
  cursor: pointer;
}
.medida-etiqueta.en-curso { border-color: #ff3d00; cursor: default; }

.midiendo .plano-marco { cursor: crosshair; }
.midiendo .plano-ayuda { background: #ff6b2c; color: #fff; font-weight: 600; }
.midiendo .pin { pointer-events: none; opacity: .6; }
.escala-plano { display: flex; align-items: center; gap: .35rem; font-size: .8rem; color: var(--texto-tenue); }
.escala-plano .campo { width: auto; min-height: 2.2rem; padding: .25rem .4rem; font-size: .9rem; }

/* fotos y planos que están en la nube de otra persona (sin Storage) */
.foto-remota {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem;
  min-height: 7rem; padding: .5rem; border: 1px dashed var(--borde); border-radius: .5rem;
  color: var(--texto-tenue); font-size: .8rem; text-align: center; text-decoration: none;
}
a.foto-remota { color: var(--acento); }
.foto-remota-icono { font-size: 1.6rem; }
.plano-remoto { display: flex; flex-direction: column; gap: .25rem; padding: .7rem 0; text-decoration: none; color: var(--texto); }
.plano-remoto-icono { font-size: 2rem; text-align: center; }
.firma-remota a { color: var(--seleccion); }

/* ---------- inicio limpio: cuentas y copia viven en su propia vista ----------
   (menú → Datos; visita.html#/cuentas y #/copia) */
.datos-barra, .grupo-datos { display: none; }
.modo-datos > * { display: none !important; }
.modo-datos > .datos-barra { display: flex !important; }
.modo-datos > .grupo-datos.activo { display: block !important; }

/* avisos de calidad en el inicio: roturas de probetas y protocolos abiertos */
.avisos-calidad { display: flex; flex-direction: column; gap: .45rem; margin-bottom: .8rem; }
.avisos-calidad[hidden] { display: none; }
.aviso-calidad {
  display: flex; align-items: center; gap: .6rem;
  padding: .6rem .75rem;
  border: 1px solid var(--borde); border-left: 3px solid var(--aviso-texto);
  border-radius: .7rem;
  background: var(--fondo-2); color: var(--texto); text-decoration: none;
}
.aviso-calidad.urgente { border-left-color: var(--peligro-texto); }
.aviso-calidad strong { display: block; font-size: .92rem; }
.aviso-calidad .pie { margin: 0; }
.aviso-calidad > span:first-child { font-size: 1.3rem; }

/* día afectado (jornada parcial o sin actividad): causa, horas y detalle */
.afectacion { margin: -.2rem 0 .4rem; padding: .55rem .6rem .2rem; border-left: 3px solid var(--aviso-texto); border-radius: .5rem; background: var(--fondo); }
.afectacion[hidden] { display: none; }
.afectacion .chips { margin-bottom: .45rem; }
.afectacion-datos { display: grid; grid-template-columns: 7rem 1fr; gap: .5rem; }
.afectacion-datos .campo { margin-top: .2rem; }

/* repasos del punch list sobre el plano: cuadrados «R3» por estado */
.pin-repaso { border-radius: .35rem; background: #c0392b; }
.pin-repaso.estado-corregido { background: #c0601a; }
.pin-repaso.estado-cerrado { background: #2e7d4f; }
.repaso-ubicacion { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .8rem; margin: .2rem 0 .6rem; }
.repaso-ubicacion .pie { margin: 0; }

/* exportar a Excel (visita.html#/exportar) */
.exportar-lista { display: flex; flex-direction: column; gap: .35rem; margin: .7rem 0; }
.exportar-fila { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .45rem .6rem; border: 1px solid var(--borde); border-radius: .6rem; background: var(--fondo); }
.exportar-fila > span { display: flex; flex-direction: column; }
.exportar-fila .pie { margin: 0; }

/* seleccionar varias visitas para borrarlas */
.barra-seleccion { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .4rem .7rem; margin: -.2rem 0 .5rem; min-height: 1.4rem; }
.barra-seleccion strong { margin-right: auto; font-size: .9rem; }
.seleccionando .tarjeta { position: relative; padding-left: 2.9rem; }
.tarjeta-casilla {
  position: absolute; left: .8rem; top: 50%; transform: translateY(-50%);
  display: grid; place-items: center; width: 1.4rem; height: 1.4rem;
  border: 2px solid var(--borde); border-radius: .35rem;
  color: var(--texto-sobre-acento); font-weight: 700; font-size: .9rem;
}
.tarjeta.elegida { border-color: var(--acento); background: var(--fondo-3); }
.tarjeta.elegida .tarjeta-casilla { background: var(--acento); border-color: var(--acento); }

/* ---------- Firmas en el teléfono (minutas y control: js/firmas.js) ---------- */
.firmas-tarjetas { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: .75rem; }
.firma-tarjeta { display: flex; flex-direction: column; gap: .45rem; padding: .7rem; border: 1px solid var(--borde); border-radius: .6rem; background: var(--fondo); }
.firma-tarjeta.con-firma { border-color: var(--acento-oscuro); }
.firma-tarjeta-titulo { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.firma-tarjeta-nombre { font-size: .9rem; color: var(--texto-tenue); }
.firma-tarjeta .fila-botones { margin: 0; flex-wrap: wrap; }
.firma-vista {
  height: 5.5rem; border-radius: .45rem; background: var(--color-light-bg) center / contain no-repeat;
  display: flex; align-items: center; justify-content: center; text-align: center; padding: .3rem;
}
.firma-vista .pie, .firma-vista .enlace { color: #4a5870; }
.firmas-asistentes { display: flex; flex-direction: column; }
.firma-asistente { display: grid; grid-template-columns: 1fr 5.5rem auto; align-items: center; gap: .6rem; padding: .45rem 0; border-bottom: 1px solid var(--borde); }
.firma-asistente:last-child { border-bottom: 0; }
.firma-mini { height: 2.4rem; border-radius: .35rem; background: var(--color-light-bg) center / contain no-repeat; color: #2e7d32; display: flex; align-items: center; justify-content: center; }

/* Hoja a pantalla completa para firmar */
.hoja-firma {
  position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center;
  padding: max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));
  background: rgba(var(--velo-rgb), .88);
}
.hoja-firma-caja {
  width: min(44rem, 100%); display: flex; flex-direction: column; gap: .6rem; padding: 1rem;
  border: 1px solid var(--borde); border-radius: .8rem; background: var(--fondo-2); box-shadow: 0 12px 40px rgba(0,0,0,.4);
}
.hoja-firma-cabecera { display: flex; justify-content: space-between; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
.hoja-firma-lienzo {
  display: block; width: 100%; height: min(18rem, 48vh); border-radius: .5rem; touch-action: none;
  background: #fff; outline: 3px solid var(--acento); outline-offset: 2px;
}
.hoja-firma .fila-botones { justify-content: flex-end; margin: 0; }
@media print { .hoja-firma { display: none !important; } }
