# Línea de tiempo · versión 06

Arrastra la barra para cambiar la fecha de toda la simulación. Al hacerlo, el reloj se queda en pausa: las vistas del espacio y del cielo siguen compartiendo ese mismo instante. Las flechas del teclado avanzan o retroceden un minuto; Inicio y Fin van a los extremos de la barra.

- **24 horas / 7 días / 30 días:** cambia la cantidad de tiempo visible alrededor de la fecha seleccionada. Aquí un día significa 24 horas transcurridas; al cruzar un cambio de horario de verano, la hora local puede variar.
- **← / →:** desplaza la ventana y la fecha seleccionada una ventana completa.
- **Centrar:** centra la barra alrededor de la fecha de la simulación.
- **Ahora:** selecciona la hora actual en pausa. El botón general «Ahora» de los controles del reloj permite volver al seguimiento en tiempo real.
- **Fases y eclipses:** pulsa una etiqueta para ir al instante calculado, con más precisión que los pasos de un minuto de la barra.

Las horas muestran el huso de la ubicación elegida y su desfase UTC. Los eclipses son eventos **globales**: la etiqueta señala su máximo global, no garantiza que sean visibles desde la ciudad del observador. Para explorar las circunstancias locales, utiliza el calendario y la vista del cielo. Las cuatro fases principales son los instantes en que la diferencia de longitud eclíptica Sol–Luna alcanza 0°, 90°, 180° y 270°; no representan cuatro intervalos de duración idéntica.

## Dónde está el código

- `js/linea-tiempo.js`: eventos astronómicos, fechas, caché y controles. Expone `SolarTimeline` como los demás módulos clásicos, sin compilación ni descargas.
- `css/linea-tiempo.css`: colores, marcas y distribución compacta.
- `tests/linea-tiempo.cjs`: comprueba los extremos 1900–2100, eventos reales de 2024/2025, búsquedas reutilizadas, selección exacta de eventos y agrupación de entradas rápidas.

Integración:

```js
const timeline = new SolarTimeline(document.getElementById('timeline-view'), {
  getLocation: () => locationUI.get(),
  onSelectTime(date) {
    clock.setDate(date); // El reloj común pasa a una fecha fija en pausa.
    loop.wake(true);
  },
});
// En la actualización de la interfaz:
timeline.update(clock.now(), locationUI.get());
```

El módulo no tiene un reloj ni un bucle de animación permanente. Agrupa una ráfaga de arrastre en una única llamada por fotograma. La ventana permanece fija mientras se arrastra; una fecha externa que sale de ella la centra de nuevo. Los eventos se guardan en una caché de hasta 24 meses. Cambiar la hora dentro de una ventana existente no vuelve a buscar fases ni eclipses.

Se utilizan `SearchMoonQuarter`, `NextMoonQuarter`, `SearchGlobalSolarEclipse` y `SearchLunarEclipse` del [Astronomy Engine incluido en el proyecto](https://github.com/cosinekitty/astronomy/tree/master/source/js). Los datos se calculan localmente; no se han incorporado imágenes ni recursos con licencias nuevas.
