{"id":2197,"date":"2025-07-27T06:31:48","date_gmt":"2025-07-27T13:31:48","guid":{"rendered":"https:\/\/firstinmichigan.us\/FLL-Explore\/?page_id=2197"},"modified":"2026-09-04T14:56:42","modified_gmt":"2026-09-04T21:56:42","slug":"events","status":"publish","type":"page","link":"https:\/\/firstinmichigan.us\/FLL-Explore\/events\/","title":{"rendered":"EVENTS"},"content":{"rendered":"\r\n<div class=\"bigcontent explore-events-page\"><style>\r\n.explore-events-page p,\r\n.explore-events-page ul,\r\n.explore-events-page li {\r\n  font-size: 16px !important;\r\n  line-height: 1.6 !important;\r\n}\r\n\r\n.explore-events-page h4 {\r\n  font-size: 24px !important;\r\n  line-height: 1.3 !important;\r\n  margin-top: 26px !important;\r\n  margin-bottom: 14px !important;\r\n}\r\n\r\n.explore-action-row {\r\n  display: grid;\r\n  grid-template-columns: repeat(4, minmax(0, 1fr));\r\n  gap: 10px;\r\n  margin: 22px 0 26px;\r\n}\r\n\r\n.explore-action-button {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  min-height: 48px;\r\n  padding: 9px 12px;\r\n  background-color: #00a651;\r\n  color: #ffffff !important;\r\n  font-size: 15px !important;\r\n  line-height: 1.25 !important;\r\n  font-weight: bold;\r\n  text-align: center;\r\n  text-decoration: none !important;\r\n}\r\n\r\n.explore-action-button:hover,\r\n.explore-action-button:focus {\r\n  background-color: #008c45;\r\n  color: #ffffff !important;\r\n}\r\n\r\n.event-notice {\r\n  margin: 18px 0;\r\n  padding: 16px 20px;\r\n  background-color: #f2f2f2;\r\n  border-left: 5px solid #00a651;\r\n}\r\n\r\n.event-notice p {\r\n  margin: 0 !important;\r\n}\r\n\r\n#event-last-updated {\r\n  margin: 12px 0 8px;\r\n  font-size: 14px !important;\r\n  font-style: italic;\r\n  color: #555555;\r\n}\r\n\r\n.event-table-cue {\r\n  display: none;\r\n  margin: 8px 0 !important;\r\n  font-size: 14px !important;\r\n  font-weight: bold;\r\n  color: #333333;\r\n}\r\n\r\n.event-table-scroll {\r\n  width: 100%;\r\n  overflow-x: auto;\r\n  margin: 8px 0 20px;\r\n  border: 1px solid #d6d6d6;\r\n  -webkit-overflow-scrolling: touch;\r\n}\r\n\r\n.custom-styled-table {\r\n  width: 100%;\r\n  min-width: 760px;\r\n  border-collapse: collapse;\r\n  background-color: #ffffff;\r\n}\r\n.event-table-title {\r\n  padding: 12px;\r\n  background-color: #00a651;\r\n  color: #ffffff;\r\n  font-size: 17px !important;\r\n  line-height: 1.4 !important;\r\n  font-weight: bold;\r\n  text-align: left;\r\n  caption-side: top;\r\n}\r\n.custom-styled-table th,\r\n.custom-styled-table td {\r\n  padding: 10px 12px;\r\n  border: 1px solid #d6d6d6;\r\n  font-size: 14px !important;\r\n  line-height: 1.4 !important;\r\n  text-align: left;\r\n  vertical-align: top;\r\n  white-space: normal;\r\n}\r\n\r\n.custom-styled-table th {\r\n  background-color: #999999;\r\n  color: #ffffff;\r\n  font-weight: bold;\r\n}\r\n\r\n.custom-styled-table tbody tr:nth-child(even) td {\r\n  background-color: #f7f7f7;\r\n}\r\n\r\n.custom-styled-table th:first-child,\r\n.custom-styled-table td:first-child {\r\n  position: sticky;\r\n  left: 0;\r\n  z-index: 1;\r\n}\r\n\r\n.custom-styled-table th:first-child {\r\n  z-index: 2;\r\n  background-color: #999999;\r\n}\r\n\r\n.custom-styled-table tbody tr:nth-child(odd) td:first-child {\r\n  background-color: #ffffff;\r\n}\r\n\r\n.custom-styled-table tbody tr:nth-child(even) td:first-child {\r\n  background-color: #f7f7f7;\r\n}\r\n\r\n.event-loading,\r\n.event-error {\r\n  padding: 18px;\r\n  font-size: 15px !important;\r\n}\r\n\r\n.event-error {\r\n  color: #8a1c1c;\r\n}\r\n\r\n.past-season-archive {\r\n  margin: 22px 0;\r\n  padding: 14px 18px;\r\n  background-color: #f2f2f2;\r\n  border-left: 5px solid #00a651;\r\n}\r\n\r\n.past-season-archive summary {\r\n  cursor: pointer;\r\n  font-size: 18px;\r\n  font-weight: bold;\r\n}\r\n\r\n.past-season-archive ul {\r\n  margin: 14px 0 0 !important;\r\n}\r\n\r\n@media screen and (max-width: 760px) {\r\n  .explore-action-row {\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n  }\r\n\r\n  .event-table-cue {\r\n    display: block;\r\n  }\r\n\r\n  .explore-events-page p,\r\n  .explore-events-page ul,\r\n  .explore-events-page li {\r\n    font-size: 15px !important;\r\n  }\r\n}\r\n\r\n@media screen and (max-width: 420px) {\r\n  .explore-action-row {\r\n    grid-template-columns: 1fr;\r\n  }\r\n}\r\n<\/style>\r\n<h4><strong>2026\u20132027 SEASON \u2014 <span style=\"font-family: arial; font-weight: bolder;\"><em>FIRST<\/em><\/span> <span style=\"color: #00a651;\">LEGO LEAGUE EXPLORE<\/span><\/strong><\/h4>\r\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-2634\" src=\"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-300x101.webp\" alt=\"2026\u20132027 BIOGLOW Founders Edition\" width=\"300\" height=\"101\" srcset=\"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-300x101.webp 300w, https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-1024x346.webp 1024w, https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-768x259.webp 768w, https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-1536x519.webp 1536w, https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1-425x143.webp 425w, https:\/\/firstinmichigan.us\/FLL-Explore\/wp-content\/uploads\/2026\/05\/first_canopy_fll_bioglow_logo_horizontal_founders_edition_rgb_fullcolor-1.webp 1644w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\r\n<nav class=\"explore-action-row\" aria-label=\"Explore event actions\"><a class=\"explore-action-button\" href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/team-list\">Team List<\/a> <a class=\"explore-action-button\" href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/resources\/\">Season Resources<\/a> <a class=\"explore-action-button\" href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/event-registration\/\">Event Registration<\/a> <a class=\"explore-action-button\" href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/fim-fll-e-event-readiness\/\">Event Readiness<\/a><\/nav><hr \/>\r\n<h4><strong>FESTIVALS<\/strong><\/h4>\r\n<p><strong>Fall festivals run November\u2013February; spring festivals run April\u2013May.<\/strong><\/p>\r\n<div class=\"event-notice\">\r\n<p><strong>Michigan event registration is managed through FIRST in Michigan.<\/strong> Your Festival registration and confirmed placement will not appear on the national FIRST Dashboard. Use the Event Registration link above and check the Michigan Team List for placement information.<\/p>\r\n<\/div>\r\n<p id=\"event-last-updated\" aria-live=\"polite\">Last updated: loading from the event data\u2026<\/p>\r\n<p class=\"event-table-cue\" aria-hidden=\"true\">Swipe left or right to see more event information.<\/p>\r\n<div class=\"event-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Michigan FIRST LEGO League Explore Festival table\">\r\n<div id=\"live-sheet-table\">\r\n<p class=\"event-loading\">Loading current Festival information\u2026<\/p>\r\n<\/div>\r\n<\/div>\r\n<script>\r\n(function () {\r\n  const csvUrl = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSsWIn_-vpGmbiPrFTFGvYQXZ2vMx7twePB9kQAQknhNA1GOK46kpkiUHYb-y8bmNAL9JgiaXlbMlCu\/pub?gid=282355044&single=true&output=csv\";\r\n\r\n  function parseCSV(text) {\r\n    const rows = [];\r\n    let row = [];\r\n    let cell = \"\";\r\n    let quoted = false;\r\n\r\n    for (let i = 0; i < text.length; i++) {\r\n      const char = text[i];\r\n      const next = text[i + 1];\r\n\r\n      if (char === '\"') {\r\n        if (quoted) {\r\n          if (next === '\"') {\r\n            cell += '\"';\r\n            i++;\r\n          } else {\r\n            quoted = false;\r\n          }\r\n        } else {\r\n          quoted = true;\r\n        }\r\n      } else if (char === ',') {\r\n        if (quoted) {\r\n          cell += char;\r\n        } else {\r\n          row.push(cell.trim());\r\n          cell = \"\";\r\n        }\r\n      } else if (char === '\\n' || char === '\\r') {\r\n        if (quoted) {\r\n          cell += char;\r\n        } else {\r\n          if (char === '\\r') {\r\n            if (next === '\\n') {\r\n              i++;\r\n            }\r\n          }\r\n\r\n          row.push(cell.trim());\r\n\r\n          if (row.some(function (value) {\r\n            return value !== \"\";\r\n          })) {\r\n            rows.push(row);\r\n          }\r\n\r\n          row = [];\r\n          cell = \"\";\r\n        }\r\n      } else {\r\n        cell += char;\r\n      }\r\n    }\r\n\r\n    row.push(cell.trim());\r\n\r\n    if (row.some(function (value) {\r\n      return value !== \"\";\r\n    })) {\r\n      rows.push(row);\r\n    }\r\n\r\n    return rows;\r\n  }\r\n\r\n  function escapeHTML(value) {\r\n    return String(value)\r\n      .replace(\/&#038;\/g, \"&amp;\")\r\n      .replace(\/<\/g, \"&lt;\")\r\n      .replace(\/>\/g, \"&gt;\")\r\n      .replace(\/\"\/g, \"&quot;\")\r\n      .replace(\/'\/g, \"&#039;\");\r\n  }\r\n\r\n  async function loadSheetTable() {\r\n    const tableTarget = document.getElementById(\"live-sheet-table\");\r\n    const updatedTarget = document.getElementById(\"event-last-updated\");\r\n\r\n    try {\r\n      const response = await fetch(csvUrl, {\r\n        cache: \"no-store\"\r\n      });\r\n\r\n      if (!response.ok) {\r\n        throw new Error(\"Event data could not be loaded.\");\r\n      }\r\n\r\n      const csvText = await response.text();\r\n      const rows = parseCSV(csvText);\r\n\r\n      if (rows.length < 3) {\r\n        throw new Error(\"The event-data format is incomplete.\");\r\n      }\r\n\r\nconst firstRow = rows[0];\r\n\r\nconst updateValue =\r\n  firstRow.find(function (value) {\r\n    return \/^last updated\/i.test(value.trim());\r\n  }) || \"\";\r\n\r\nconst titleValue = firstRow\r\n  .filter(function (value) {\r\n    if (!value.trim()) {\r\n      return false;\r\n    }\r\n\r\n    return !\/^last updated\/i.test(value.trim());\r\n  })\r\n  .join(\" \")\r\n  .trim();\r\n\r\n      if (updateValue) {\r\n        if (\/^last updated\/i.test(updateValue)) {\r\n          updatedTarget.textContent = updateValue;\r\n        } else {\r\n          updatedTarget.textContent = \"Last updated: \" + updateValue;\r\n        }\r\n      } else {\r\n        updatedTarget.textContent =\r\n          \"Last updated: unavailable in the event data\";\r\n      }\r\n\r\n      const headers = rows[1];\r\n\r\n      const body = rows.slice(2).filter(function (row) {\r\n        return row.some(function (value) {\r\n          return value !== \"\";\r\n        });\r\n      });\r\n\r\nlet html = '<table class=\"custom-styled-table\">';\r\n\r\nif (titleValue) {\r\n  html +=\r\n    '<caption class=\"event-table-title\">' +\r\n    escapeHTML(titleValue) +\r\n    '<\/caption>';\r\n}\r\n\r\nhtml += '<thead><tr>';\r\n\r\n      headers.forEach(function (header) {\r\n        html +=\r\n          '<th scope=\"col\">' +\r\n          escapeHTML(header) +\r\n          \"<\/th>\";\r\n      });\r\n\r\n      html += \"<\/tr><\/thead><tbody>\";\r\n\r\n      body.forEach(function (row) {\r\n        html += \"<tr>\";\r\n\r\n        headers.forEach(function (header, index) {\r\n          html +=\r\n            \"<td>\" +\r\n            escapeHTML(row[index] || \"\") +\r\n            \"<\/td>\";\r\n        });\r\n\r\n        html += \"<\/tr>\";\r\n      });\r\n\r\n      html += \"<\/tbody><\/table>\";\r\n      tableTarget.innerHTML = html;\r\n    } catch (error) {\r\n      console.error(\"Festival table error:\", error);\r\n\r\n      tableTarget.innerHTML =\r\n        '<p class=\"event-error\">Current Festival information could not be loaded. Please refresh the page or try again later.<\/p>';\r\n\r\n      updatedTarget.textContent =\r\n        \"Last updated: temporarily unavailable\";\r\n    }\r\n  }\r\n\r\n  loadSheetTable();\r\n  window.setInterval(loadSheetTable, 300000);\r\n})();\r\n<\/script>\r\n<p><strong>All <em>FIRST<\/em> in Michigan events are free and open to the public.<\/strong><\/p>\r\n<details class=\"past-season-archive\">\r\n<summary>Past Seasons<\/summary>\r\n<ul>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events-2025-2026\/\" target=\"_blank\" rel=\"noopener\">2025\u20132026 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events2425\/\">2024\u20132025 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events2324\/\">2023\u20132024 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events2223\/\">2022\u20132023 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events20212022\/\">2021\u20132022 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events2021\/\">2020\u20132021 FIRST in Michigan FLL Explore Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events1920\/\">2019\u20132020 FIRST in Michigan FLL Jr. Events<\/a><\/li>\r\n<li><a href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events-1819\/\">2018\u20132019 FIRST in Michigan FLL Jr. Events<\/a><\/li>\r\n<\/ul>\r\n<\/details><\/div>\r\n\r\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>2026\u20132027 SEASON \u2014 FIRST LEGO LEAGUE EXPLORE Team List Season Resources Event Registration Event Readiness FESTIVALS Fall festivals run November\u2013February; spring festivals run April\u2013May. Michigan event registration is managed through FIRST in Michigan. Your Festival registration and confirmed placement will not appear on the national FIRST Dashboard. Use the Event Registration link above and check the Michigan Team List for placement information. Last updated: loading from the event data\u2026 Swipe left or right to see more event information. Loading current Festival information\u2026 All FIRST in Michigan events are free and open to the public. Past Seasons 2025\u20132026 FIRST in Michigan FLL Explore Events 2024\u20132025 FIRST<a class=\"more-link\" href=\"https:\/\/firstinmichigan.us\/FLL-Explore\/events\/\">Read More &rarr;<\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","footnotes":""},"class_list":["entry","page","publish","author-michiganfllgmail-com","post-2197"],"_links":{"self":[{"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/pages\/2197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/comments?post=2197"}],"version-history":[{"count":7,"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/pages\/2197\/revisions"}],"predecessor-version":[{"id":2790,"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/pages\/2197\/revisions\/2790"}],"wp:attachment":[{"href":"https:\/\/firstinmichigan.us\/FLL-Explore\/wp-json\/wp\/v2\/media?parent=2197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}