.elementor-1459 .elementor-element.elementor-element-4f0a4a5a{--display:flex;--justify-content:flex-start;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-1459 .elementor-element.elementor-element-680c07e6{--display:flex;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:flex-start;--align-items:center;--gap:20px 0px;--row-gap:20px;--column-gap:0px;--padding-top:8vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );font-style:var( --e-global-typography-primary-font-style );letter-spacing:var( --e-global-typography-primary-letter-spacing );color:var( --e-global-color-primary );}.elementor-1459 .elementor-element.elementor-element-6b273786{padding:0vw 0vw 0vw 0vw;text-align:center;}.elementor-1459 .elementor-element.elementor-element-6b273786.elementor-element{--align-self:center;}.elementor-1459 .elementor-element.elementor-element-6b273786 .elementor-heading-title{font-family:"Roboto Slab", Sans-serif;font-size:2.5rem;font-weight:500;font-style:normal;letter-spacing:0em;color:#FFFFFF;}.elementor-1459 .elementor-element.elementor-element-666528f4{--display:flex;--justify-content:center;--padding-top:4vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-7f71098a{padding:0px 0px 0px 0px;}.elementor-1459 .elementor-element.elementor-element-7f71098a.elementor-element{--align-self:center;--flex-grow:0;--flex-shrink:0;}.elementor-1459 .elementor-element.elementor-element-7f71098a .elementor-heading-title{font-family:"Roboto Slab", Sans-serif;font-size:2rem;font-weight:500;font-style:normal;letter-spacing:0em;color:#FFFFFF;}.elementor-1459 .elementor-element.elementor-element-5675c77f{--display:flex;--justify-content:center;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--padding-top:4vw;--padding-bottom:4vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b.elementor-element{--align-self:center;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b .elementor-heading-title{font-family:"Roboto Slab", Sans-serif;font-size:2rem;font-weight:500;font-style:normal;letter-spacing:0em;color:#FFFFFF;}.elementor-1459 .elementor-element.elementor-element-30c3096d{--display:flex;--justify-content:center;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--padding-top:8vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-3b2945a3{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-3b2945a3.elementor-element{--align-self:center;}.elementor-1459 .elementor-element.elementor-element-3b2945a3 .elementor-heading-title{font-family:"Roboto Slab", Sans-serif;font-size:2rem;font-weight:500;font-style:normal;letter-spacing:0em;color:#FFFFFF;}.elementor-1459 .elementor-element.elementor-element-d9be54c{--display:flex;--padding-top:4vw;--padding-bottom:4vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd.elementor-element{--align-self:center;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd .elementor-heading-title{font-family:"Roboto Slab", Sans-serif;font-size:2rem;font-weight:500;font-style:normal;letter-spacing:0em;color:#FFFFFF;}.elementor-1459 .elementor-element.elementor-element-6fd7d001{--display:flex;}body.elementor-page-1459:not(.elementor-motion-effects-element-type-background), body.elementor-page-1459 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:transparent;background-image:linear-gradient(180deg, #000000 0%, #000000 100%);}@media(max-width:1024px){.elementor-1459 .elementor-element.elementor-element-4f0a4a5a{--justify-content:space-around;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-1459 .elementor-element.elementor-element-680c07e6{--justify-content:flex-start;--padding-top:8vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-widget-heading .elementor-heading-title{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-1459 .elementor-element.elementor-element-6b273786{padding:0px 0px 0px 0px;}.elementor-1459 .elementor-element.elementor-element-7f71098a{padding:0px 0px 0px 0px;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b{padding:0px 0px 0px 0px;}.elementor-1459 .elementor-element.elementor-element-3b2945a3{padding:0px 0px 0px 0px;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd{padding:0px 0px 0px 0px;}}@media(min-width:768px){.elementor-1459 .elementor-element.elementor-element-4f0a4a5a{--content-width:100%;}.elementor-1459 .elementor-element.elementor-element-680c07e6{--content-width:60%;}.elementor-1459 .elementor-element.elementor-element-666528f4{--content-width:60%;}.elementor-1459 .elementor-element.elementor-element-5675c77f{--content-width:60%;}.elementor-1459 .elementor-element.elementor-element-30c3096d{--content-width:60%;}.elementor-1459 .elementor-element.elementor-element-d9be54c{--content-width:60%;}}@media(max-width:1024px) and (min-width:768px){.elementor-1459 .elementor-element.elementor-element-4f0a4a5a{--content-width:100vw;}.elementor-1459 .elementor-element.elementor-element-680c07e6{--content-width:90%;}.elementor-1459 .elementor-element.elementor-element-666528f4{--content-width:90%;}.elementor-1459 .elementor-element.elementor-element-5675c77f{--content-width:90%;}.elementor-1459 .elementor-element.elementor-element-30c3096d{--content-width:90%;}.elementor-1459 .elementor-element.elementor-element-d9be54c{--content-width:90%;}}@media(max-width:767px){.elementor-1459 .elementor-element.elementor-element-4f0a4a5a{--content-width:100%;--min-height:0px;--justify-content:space-evenly;--padding-top:0vw;--padding-bottom:2vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-680c07e6{--content-width:90%;--min-height:60dvh;--justify-content:space-evenly;--padding-top:20vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-widget-heading .elementor-heading-title{letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-1459 .elementor-element.elementor-element-6b273786{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-6b273786 .elementor-heading-title{font-size:1.2rem;}.elementor-1459 .elementor-element.elementor-element-666528f4{--content-width:90%;--padding-top:7vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-7f71098a{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-7f71098a .elementor-heading-title{font-size:1rem;}.elementor-1459 .elementor-element.elementor-element-5675c77f{--content-width:90%;--justify-content:flex-start;--padding-top:7vw;--padding-bottom:7vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-10fd5a7b .elementor-heading-title{font-size:1rem;}.elementor-1459 .elementor-element.elementor-element-30c3096d{--content-width:90%;--padding-top:7vw;--padding-bottom:0vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-3b2945a3{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-3b2945a3 .elementor-heading-title{font-size:1rem;}.elementor-1459 .elementor-element.elementor-element-d9be54c{--content-width:90%;--justify-content:flex-start;--padding-top:7vw;--padding-bottom:8vw;--padding-left:0vw;--padding-right:0vw;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd{padding:0px 0px 0px 0px;text-align:center;}.elementor-1459 .elementor-element.elementor-element-24a1ebdd .elementor-heading-title{font-size:1rem;}}/* Start custom CSS for html, class: .elementor-element-6c0d1a48 */(async function() {
  const container = document.getElementById('timelapseContainer');
  const video = document.getElementById('nightlyTimelapse');
  const picker = document.getElementById('calendarPicker');

  if (!container || !video) return;

  // Helper to format picker value to YYYYMMDD
  function dateStrFromPicker(value) {
    return value ? value.replace(/-/g,'') : null;
  }

  // Check if an allsky- file exists in the per-date JSON
  async function checkAndLoadVideo(dateStr) {
    if (!dateStr) {
      container.style.display = 'none';
      return;
    }

    try {
      const res = await fetch(`https://media.fabianwimmer.com/images/${dateStr}/master.json`);
      if (!res.ok) throw new Error('JSON not found');
      const files = await res.json();

      // Search for a file starting with "allsky-"
      const videoFile = files.find(f => f.startsWith('allsky-'));
      if (videoFile) {
        video.src = `https://media.fabianwimmer.com/images/${dateStr}/${videoFile}`;
        video.load();
        container.style.display = 'block';
      } else {
        container.style.display = 'none';
        console.log(`[Nightly Timelapse] No 'allsky-' video for ${dateStr}`);
      }
    } catch (err) {
      container.style.display = 'none';
      console.log(`[Nightly Timelapse] Failed to fetch JSON for ${dateStr}:`, err);
    }
  }

  // Initial check: selected date or today
  let dateStr = dateStrFromPicker(picker?.value);
  if (!dateStr && picker) {
    const today = new Date();
    dateStr = `${today.getFullYear()}${String(today.getMonth()+1).padStart(2,'0')}${String(today.getDate()).padStart(2,'0')}`;
  }

  await checkAndLoadVideo(dateStr);

  // Update on picker change
  if (picker) {
    picker.addEventListener('change', () => {
      const newDateStr = dateStrFromPicker(picker.value);
      checkAndLoadVideo(newDateStr);
    });
  }
})();/* End custom CSS */